From 579c0c5b89560b07610326ed7f34eedcfdc869a8 Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Mon, 27 Nov 2023 08:46:22 -0300 Subject: [PATCH 01/11] pint --- src/Concerns/CanFilter.php | 2 +- src/Widgets/ApexChartWidget.php | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Concerns/CanFilter.php b/src/Concerns/CanFilter.php index 4fecf19..56d88c0 100644 --- a/src/Concerns/CanFilter.php +++ b/src/Concerns/CanFilter.php @@ -91,7 +91,7 @@ public function getIndicatorsCount(): int if ($this->getFilterFormAccessible()) { return count( Arr::where($this->filterFormData, function ($value) { - return null !== $value; + return $value !== null; }) ); } diff --git a/src/Widgets/ApexChartWidget.php b/src/Widgets/ApexChartWidget.php index f20a2d8..92f5cbe 100644 --- a/src/Widgets/ApexChartWidget.php +++ b/src/Widgets/ApexChartWidget.php @@ -17,14 +17,14 @@ class ApexChartWidget extends Widget implements HasForms { - use CanPoll; use CanDeferLoading; use CanFilter; - use HasHeader; + use CanPoll; + use HasContentHeight; + use HasDarkMode; use HasFooter; + use HasHeader; use HasLoadingIndicator; - use HasDarkMode; - use HasContentHeight; protected static string $chartId = 'apexChart'; From 87e1fd8a2de45753b665f4ee03f4a28c5aa5afac Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Mon, 27 Nov 2023 08:50:56 -0300 Subject: [PATCH 02/11] update version --- apexcharts.js | 50 ++ bin/build.js | 50 ++ dist/apexcharts.js | 66 ++- package-lock.json | 510 ++++++++++++++++++ package.json | 22 + .../views/widgets/components/chart.blade.php | 31 +- src/FilamentApexChartsServiceProvider.php | 6 +- 7 files changed, 693 insertions(+), 42 deletions(-) create mode 100644 apexcharts.js create mode 100644 bin/build.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/apexcharts.js b/apexcharts.js new file mode 100644 index 0000000..ef6287c --- /dev/null +++ b/apexcharts.js @@ -0,0 +1,50 @@ +import ApexCharts from 'apexcharts' + +export default function apexcharts({ + options, + chartId, + theme +}) { + return { + chart: null, + options, + chartId, + theme, + init: function () { + + this.$wire.$on('updateOptions', ({ options }) => { + this.updateChart(options) + }) + + Alpine.effect(() => { + + const theme = Alpine.store('theme') + + this.$nextTick(() => { + + if (this.chart === null) { + this.initChart() + } else { + this.updateChart({ + theme: { mode: theme }, + chart: { + background: 'inherit' + } + }) + } + }) + }) + }, + initChart: function () { + + this.options.theme = { mode: this.theme } + this.options.chart.background = 'inherit' + + this.chart = new ApexCharts(document.querySelector(this.chartId), this.options) + this.chart.render() + }, + updateChart: function (options) { + this.chart.updateOptions(options, false, true, true) + } + } +} \ No newline at end of file diff --git a/bin/build.js b/bin/build.js new file mode 100644 index 0000000..f7b4a12 --- /dev/null +++ b/bin/build.js @@ -0,0 +1,50 @@ +import * as esbuild from 'esbuild' + +const isDev = process.argv.includes('--dev') + +async function compile(options) { + const context = await esbuild.context(options) + + if (isDev) { + await context.watch() + } else { + await context.rebuild() + await context.dispose() + } +} + +const defaultOptions = { + define: { + 'process.env.NODE_ENV': isDev ? `'development'` : `'production'`, + }, + bundle: true, + mainFields: ['module', 'main'], + platform: 'neutral', + sourcemap: isDev ? 'inline' : false, + sourcesContent: isDev, + treeShaking: true, + target: ['es2020'], + minify: !isDev, + plugins: [{ + name: 'watchPlugin', + setup: function (build) { + build.onStart(() => { + console.log(`Build started at ${new Date(Date.now()).toLocaleTimeString()}: ${build.initialOptions.outfile}`) + }) + + build.onEnd((result) => { + if (result.errors.length > 0) { + console.log(`Build failed at ${new Date(Date.now()).toLocaleTimeString()}: ${build.initialOptions.outfile}`, result.errors) + } else { + console.log(`Build finished at ${new Date(Date.now()).toLocaleTimeString()}: ${build.initialOptions.outfile}`) + } + }) + } + }], +} + +compile({ + ...defaultOptions, + entryPoints: ['./apexcharts.js'], + outfile: './dist/apexcharts.js', +}) \ No newline at end of file diff --git a/dist/apexcharts.js b/dist/apexcharts.js index a1b997b..a126d06 100644 --- a/dist/apexcharts.js +++ b/dist/apexcharts.js @@ -1,17 +1,13 @@ -var Xe={exports:{}};/*! - * ApexCharts v3.36.2 - * (c) 2018-2022 ApexCharts - * Released under the MIT License. - */(function(ze,Ke){function Ee(v,e){var t=Object.keys(v);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(v);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(v,a).enumerable})),t.push.apply(t,i)}return t}function F(v){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var t,i=ge(v);if(e){var a=ge(this).constructor;t=Reflect.construct(i,arguments,a)}else t=i.apply(this,arguments);return et(this,t)}}function tt(v,e){return function(t){if(Array.isArray(t))return t}(v)||function(t,i){var a=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(a!=null){var s,n,r=[],o=!0,h=!1;try{for(a=a.call(t);!(o=(s=a.next()).done)&&(r.push(s.value),!i||r.length!==i);o=!0);}catch(c){h=!0,n=c}finally{try{o||a.return==null||a.return()}finally{if(h)throw n}}return r}}(v,e)||Fe(v,e)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function q(v){return function(e){if(Array.isArray(e))return ve(e)}(v)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(v)||Fe(v)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Fe(v,e){if(v){if(typeof v=="string")return ve(v,e);var t=Object.prototype.toString.call(v).slice(8,-1);return t==="Object"&&v.constructor&&(t=v.constructor.name),t==="Map"||t==="Set"?Array.from(v):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?ve(v,e):void 0}}function ve(v,e){(e==null||e>v.length)&&(e=v.length);for(var t=0,i=new Array(e);t>16,r=i>>8&255,o=255&i;return"#"+(16777216+65536*(Math.round((a-n)*s)+n)+256*(Math.round((a-r)*s)+r)+(Math.round((a-o)*s)+o)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,t){return v.isColorHex(t)?this.shadeHexColor(e,t):this.shadeRGBColor(e,t)}}],[{key:"bind",value:function(e,t){return function(){return e.apply(t,arguments)}}},{key:"isObject",value:function(e){return e&&W(e)==="object"&&!Array.isArray(e)&&e!=null}},{key:"is",value:function(e,t){return Object.prototype.toString.call(t)==="[object "+e+"]"}},{key:"listToArray",value:function(e){var t,i=[];for(t=0;ts.length?a:s})),t.length>i.length?t:i},0)}},{key:"hexToRgba",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"#999999",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.6;e.substring(0,1)!=="#"&&(e="#999999");var i=e.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&arguments[1]!==void 0?arguments[1]:"x",i=e.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,t)}},{key:"negToZero",value:function(e){return e<0?0:e}},{key:"moveIndexInArray",value:function(e,t,i){if(i>=e.length)for(var a=i-e.length+1;a--;)e.push(void 0);return e.splice(i,0,e.splice(t,1)[0]),e}},{key:"extractNumber",value:function(e){return parseFloat(e.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e}},{key:"setELstyles",value:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e.style.key=t[i])}},{key:"isNumber",value:function(e){return!isNaN(e)&&parseFloat(Number(e))===e&&!isNaN(parseInt(e,10))}},{key:"isFloat",value:function(e){return Number(e)===e&&e%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(window.navigator.userAgent.indexOf("MSIE")!==-1||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){var i=e.indexOf("rv:");return parseInt(e.substring(i+3,e.indexOf(".",i)),10)}var a=e.indexOf("Edge/");return a>0&&parseInt(e.substring(a+5,e.indexOf(".",a)),10)}}]),v}(),te=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return Y(v,[{key:"setEasingFunctions",value:function(){var e;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case"linear":e="-";break;case"easein":e="<";break;case"easeout":e=">";break;case"easeinout":default:e="<>";break;case"swing":e=function(t){var i=1.70158;return(t-=1)*t*((i+1)*t+i)+1};break;case"bounce":e=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":e=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=e}}},{key:"animateLine",value:function(e,t,i,a){e.attr(t).animate(a).attr(i)}},{key:"animateMarker",value:function(e,t,i,a,s,n){t||(t=0),e.attr({r:t,width:t,height:t}).animate(a,s).attr({r:i,width:i.width,height:i.height}).afterAll(function(){n()})}},{key:"animateCircle",value:function(e,t,i,a,s){e.attr({r:t.r,cx:t.cx,cy:t.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(e,t,i,a,s){e.attr(t).animate(a).attr(i).afterAll(function(){return s()})}},{key:"animatePathsGradually",value:function(e){var t=e.el,i=e.realIndex,a=e.j,s=e.fill,n=e.pathFrom,r=e.pathTo,o=e.speed,h=e.delay,c=this.w,d=0;c.config.chart.animations.animateGradually.enabled&&(d=c.config.chart.animations.animateGradually.delay),c.config.chart.animations.dynamicAnimation.enabled&&c.globals.dataChanged&&c.config.chart.type!=="bar"&&(d=0),this.morphSVG(t,i,a,c.config.chart.type!=="line"||c.globals.comboCharts?s:"stroke",n,r,o,h*d)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach(function(e){e.el.classList.remove("apexcharts-element-hidden")})}},{key:"animationCompleted",value:function(e){var t=this.w;t.globals.animationEnded||(t.globals.animationEnded=!0,this.showDelayedElements(),typeof t.config.chart.events.animationEnd=="function"&&t.config.chart.events.animationEnd(this.ctx,{el:e,w:t}))}},{key:"morphSVG",value:function(e,t,i,a,s,n,r,o){var h=this,c=this.w;s||(s=e.attr("pathFrom")),n||(n=e.attr("pathTo"));var d=function(g){return c.config.chart.type==="radar"&&(r=1),"M 0 ".concat(c.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=d()),(!n||n.indexOf("undefined")>-1||n.indexOf("NaN")>-1)&&(n=d()),c.globals.shouldAnimate||(r=1),e.plot(s).animate(1,c.globals.easing,o).plot(s).animate(r,c.globals.easing,o).plot(n).afterAll(function(){P.isNumber(i)?i===c.globals.series[c.globals.maxValsInArrayIndex].length-2&&c.globals.shouldAnimate&&h.animationCompleted(e):a!=="none"&&c.globals.shouldAnimate&&(!c.globals.comboCharts&&t===c.globals.series.length-1||c.globals.comboCharts)&&h.animationCompleted(e),h.showDelayedElements()})}}]),v}(),B=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"getDefaultFilter",value:function(e,t){var i=this.w;e.unfilter(!0),new window.SVG.Filter().size("120%","180%","-5%","-40%"),i.config.states.normal.filter!=="none"?this.applyFilter(e,t,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(e,i.config.chart.dropShadow,t)}},{key:"addNormalFilter",value:function(e,t){var i=this.w;i.config.chart.dropShadow.enabled&&!e.node.classList.contains("apexcharts-marker")&&this.dropShadow(e,i.config.chart.dropShadow,t)}},{key:"addLightenFilter",value:function(e,t,i){var a=this,s=this.w,n=i.intensity;e.unfilter(!0),new window.SVG.Filter,e.filter(function(r){var o=s.config.chart.dropShadow;(o.enabled?a.addShadow(r,t,o):r).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:n}})}),e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)}},{key:"addDarkenFilter",value:function(e,t,i){var a=this,s=this.w,n=i.intensity;e.unfilter(!0),new window.SVG.Filter,e.filter(function(r){var o=s.config.chart.dropShadow;(o.enabled?a.addShadow(r,t,o):r).componentTransfer({rgb:{type:"linear",slope:n}})}),e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)}},{key:"applyFilter",value:function(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(e,t);break;case"lighten":this.addLightenFilter(e,t,{intensity:a});break;case"darken":this.addDarkenFilter(e,t,{intensity:a})}}},{key:"addShadow",value:function(e,t,i){var a=i.blur,s=i.top,n=i.left,r=i.color,o=i.opacity,h=e.flood(Array.isArray(r)?r[t]:r,o).composite(e.sourceAlpha,"in").offset(n,s).gaussianBlur(a).merge(e.source);return e.blend(e.source,h)}},{key:"dropShadow",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=t.top,s=t.left,n=t.blur,r=t.color,o=t.opacity,h=t.noUserSpaceOnUse,c=this.w;return e.unfilter(!0),P.isIE()&&c.config.chart.type==="radialBar"||(r=Array.isArray(r)?r[i]:r,e.filter(function(d){var g=null;g=P.isSafari()||P.isFirefox()||P.isIE()?d.flood(r,o).composite(d.sourceAlpha,"in").offset(s,a).gaussianBlur(n):d.flood(r,o).composite(d.sourceAlpha,"in").offset(s,a).gaussianBlur(n).merge(d.source),d.blend(d.source,g)}),h||e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)),e}},{key:"setSelectionFilter",value:function(e,t,i){var a=this.w;if(a.globals.selectedDataPoints[t]!==void 0&&a.globals.selectedDataPoints[t].indexOf(i)>-1){e.node.setAttribute("selected",!0);var s=a.config.states.active.filter;s!=="none"&&this.applyFilter(e,t,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(e){(function(t){for(var i in t)t.hasOwnProperty(i)&&e.setAttribute(i,t[i])})({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}]),v}(),M=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"roundPathCorners",value:function(e,t){function i(A,L,C){var T=L.x-A.x,I=L.y-A.y,X=Math.sqrt(T*T+I*I);return a(A,L,Math.min(1,C/X))}function a(A,L,C){return{x:A.x+(L.x-A.x)*C,y:A.y+(L.y-A.y)*C}}function s(A,L){A.length>2&&(A[A.length-2]=L.x,A[A.length-1]=L.y)}function n(A){return{x:parseFloat(A[A.length-2]),y:parseFloat(A[A.length-1])}}var r=e.split(/[,\s]/).reduce(function(A,L){var C=L.match("([a-zA-Z])(.+)");return C?(A.push(C[1]),A.push(C[2])):A.push(L),A},[]).reduce(function(A,L){return parseFloat(L)==L&&A.length?A[A.length-1].push(L):A.push([L]),A},[]),o=[];if(r.length>1){var h=n(r[0]),c=null;r[r.length-1][0]=="Z"&&r[0].length>2&&(c=["L",h.x,h.y],r[r.length-1]=c),o.push(r[0]);for(var d=1;d2&&p[0]=="L"&&x.length>2&&x[0]=="L"){var f,y,w=n(g),S=n(p),k=n(x);f=i(S,w,t),y=i(S,k,t),s(p,f),p.origPoint=S,o.push(p);var l=a(f,S,.5),u=a(S,y,.5),b=["C",l.x,l.y,u.x,u.y,y.x,y.y];b.origPoint=S,o.push(b)}else o.push(p)}if(c){var m=n(o[o.length-1]);o.push(["Z"]),s(o[0],m)}}else o=r;return o.reduce(function(A,L){return A+L.join(" ")+" "},"")}},{key:"drawLine",value:function(e,t,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"#a8a8a8",n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,r=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null,o=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"butt",h=this.w,c=h.globals.dom.Paper.line().attr({x1:e,y1:t,x2:i,y2:a,stroke:s,"stroke-dasharray":n,"stroke-width":r,"stroke-linecap":o});return c}},{key:"drawRect",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"#fefefe",r=arguments.length>6&&arguments[6]!==void 0?arguments[6]:1,o=arguments.length>7&&arguments[7]!==void 0?arguments[7]:null,h=arguments.length>8&&arguments[8]!==void 0?arguments[8]:null,c=arguments.length>9&&arguments[9]!==void 0?arguments[9]:0,d=this.w,g=d.globals.dom.Paper.rect();return g.attr({x:e,y:t,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:r,"stroke-width":o!==null?o:0,stroke:h!==null?h:"none","stroke-dasharray":c}),g.node.setAttribute("fill",n),g}},{key:"drawPolygon",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"#e1e1e1",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"none",s=this.w,n=s.globals.dom.Paper.polygon(e).attr({fill:a,stroke:t,"stroke-width":i});return n}},{key:"drawCircle",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=this.w;e<0&&(e=0);var a=i.globals.dom.Paper.circle(2*e);return t!==null&&a.attr(t),a}},{key:"drawPath",value:function(e){var t=e.d,i=t===void 0?"":t,a=e.stroke,s=a===void 0?"#a8a8a8":a,n=e.strokeWidth,r=n===void 0?1:n,o=e.fill,h=e.fillOpacity,c=h===void 0?1:h,d=e.strokeOpacity,g=d===void 0?1:d,p=e.classes,x=e.strokeLinecap,f=x===void 0?null:x,y=e.strokeDashArray,w=y===void 0?0:y,S=this.w;return f===null&&(f=S.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(S.globals.gridHeight)),S.globals.dom.Paper.path(i).attr({fill:o,"fill-opacity":c,stroke:s,"stroke-opacity":g,"stroke-linecap":f,"stroke-width":r,"stroke-dasharray":w,class:p})}},{key:"group",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=this.w,i=t.globals.dom.Paper.group();return e!==null&&i.attr(e),i}},{key:"move",value:function(e,t){var i=["M",e,t].join(" ");return i}},{key:"line",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=null;return i===null?a=[" L",e,t].join(" "):i==="H"?a=[" H",e].join(" "):i==="V"&&(a=[" V",t].join(" ")),a}},{key:"curve",value:function(e,t,i,a,s,n){var r=["C",e,t,i,a,s,n].join(" ");return r}},{key:"quadraticCurve",value:function(e,t,i,a){return["Q",e,t,i,a].join(" ")}},{key:"arc",value:function(e,t,i,a,s,n,r){var o=arguments.length>7&&arguments[7]!==void 0&&arguments[7],h="A";o&&(h="a");var c=[h,e,t,i,a,s,n,r].join(" ");return c}},{key:"renderPaths",value:function(e){var t,i=e.j,a=e.realIndex,s=e.pathFrom,n=e.pathTo,r=e.stroke,o=e.strokeWidth,h=e.strokeLinecap,c=e.fill,d=e.animationDelay,g=e.initialSpeed,p=e.dataChangeSpeed,x=e.className,f=e.shouldClipToGrid,y=f===void 0||f,w=e.bindEventsOnPaths,S=w===void 0||w,k=e.drawShadow,l=k===void 0||k,u=this.w,b=new B(this.ctx),m=new te(this.ctx),A=this.w.config.chart.animations.enabled,L=A&&this.w.config.chart.animations.dynamicAnimation.enabled,C=!!(A&&!u.globals.resized||L&&u.globals.dataChanged&&u.globals.shouldAnimate);C?t=s:(t=n,u.globals.animationEnded=!0);var T=u.config.stroke.dashArray,I=0;I=Array.isArray(T)?T[a]:u.config.stroke.dashArray;var X=this.drawPath({d:t,stroke:r,strokeWidth:o,fill:c,fillOpacity:1,classes:x,strokeLinecap:h,strokeDashArray:I});if(X.attr("index",a),y&&X.attr({"clip-path":"url(#gridRectMask".concat(u.globals.cuid,")")}),u.config.states.normal.filter.type!=="none")b.getDefaultFilter(X,a);else if(u.config.chart.dropShadow.enabled&&l&&(!u.config.chart.dropShadow.enabledOnSeries||u.config.chart.dropShadow.enabledOnSeries&&u.config.chart.dropShadow.enabledOnSeries.indexOf(a)!==-1)){var z=u.config.chart.dropShadow;b.dropShadow(X,z,a)}S&&(X.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,X)),X.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,X)),X.node.addEventListener("mousedown",this.pathMouseDown.bind(this,X))),X.attr({pathTo:n,pathFrom:s});var D={el:X,j:i,realIndex:a,pathFrom:s,pathTo:n,fill:c,strokeWidth:o,delay:d};return!A||u.globals.resized||u.globals.dataChanged?!u.globals.resized&&u.globals.dataChanged||m.showDelayedElements():m.animatePathsGradually(F(F({},D),{},{speed:g})),u.globals.dataChanged&&L&&C&&m.animatePathsGradually(F(F({},D),{},{speed:p})),X}},{key:"drawPattern",value:function(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"#a8a8a8",s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,n=this.w,r=n.globals.dom.Paper.pattern(t,i,function(o){e==="horizontalLines"?o.line(0,0,i,0).stroke({color:a,width:s+1}):e==="verticalLines"?o.line(0,0,0,t).stroke({color:a,width:s+1}):e==="slantedLines"?o.line(0,0,t,i).stroke({color:a,width:s}):e==="squares"?o.rect(t,i).fill("none").stroke({color:a,width:s}):e==="circles"&&o.circle(t).fill("none").stroke({color:a,width:s})});return r}},{key:"drawGradient",value:function(e,t,i,a,s){var n,r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:null,o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null,h=arguments.length>7&&arguments[7]!==void 0?arguments[7]:null,c=arguments.length>8&&arguments[8]!==void 0?arguments[8]:0,d=this.w;t.length<9&&t.indexOf("#")===0&&(t=P.hexToRgba(t,a)),i.length<9&&i.indexOf("#")===0&&(i=P.hexToRgba(i,s));var g=0,p=1,x=1,f=null;o!==null&&(g=o[0]!==void 0?o[0]/100:0,p=o[1]!==void 0?o[1]/100:1,x=o[2]!==void 0?o[2]/100:1,f=o[3]!==void 0?o[3]/100:null);var y=!(d.config.chart.type!=="donut"&&d.config.chart.type!=="pie"&&d.config.chart.type!=="polarArea"&&d.config.chart.type!=="bubble");if(n=h===null||h.length===0?d.globals.dom.Paper.gradient(y?"radial":"linear",function(k){k.at(g,t,a),k.at(p,i,s),k.at(x,i,s),f!==null&&k.at(f,t,a)}):d.globals.dom.Paper.gradient(y?"radial":"linear",function(k){(Array.isArray(h[c])?h[c]:h).forEach(function(l){k.at(l.offset/100,l.color,l.opacity)})}),y){var w=d.globals.gridWidth/2,S=d.globals.gridHeight/2;d.config.chart.type!=="bubble"?n.attr({gradientUnits:"userSpaceOnUse",cx:w,cy:S,r}):n.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else e==="vertical"?n.from(0,0).to(0,1):e==="diagonal"?n.from(0,0).to(1,1):e==="horizontal"?n.from(0,1).to(1,1):e==="diagonal2"&&n.from(1,0).to(0,1);return n}},{key:"getTextBasedOnMaxWidth",value:function(e){var t=e.text,i=e.maxWidth,a=e.fontSize,s=e.fontFamily,n=this.getTextRects(t,a,s),r=n.width/t.length,o=Math.floor(i/r);return i-1){var o=i.globals.selectedDataPoints[s].indexOf(n);i.globals.selectedDataPoints[s].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var h=i.globals.dom.Paper.select(".apexcharts-series path").members,c=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,d=function(x){Array.prototype.forEach.call(x,function(f){f.node.setAttribute("selected","false"),a.getDefaultFilter(f,s)})};d(h),d(c)}e.node.setAttribute("selected","true"),r="true",i.globals.selectedDataPoints[s]===void 0&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(n)}if(r==="true"){var g=i.config.states.active.filter;if(g!=="none")a.applyFilter(e,s,g.type,g.value);else if(i.config.states.hover.filter!=="none"&&!i.globals.isTouchDevice){var p=i.config.states.hover.filter;a.applyFilter(e,s,p.type,p.value)}}else i.config.states.active.filter.type!=="none"&&(i.config.states.hover.filter.type==="none"||i.globals.isTouchDevice?a.getDefaultFilter(e,s):(p=i.config.states.hover.filter,a.applyFilter(e,s,p.type,p.value)));typeof i.config.chart.events.dataPointSelection=="function"&&i.config.chart.events.dataPointSelection(t,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:n,w:i}),t&&this.ctx.events.fireEvent("dataPointSelection",[t,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:n,w:i}])}},{key:"rotateAroundCenter",value:function(e){var t={};return e&&typeof e.getBBox=="function"&&(t=e.getBBox()),{x:t.x+t.width/2,y:t.y+t.height/2}}},{key:"getTextRects",value:function(e,t,i,a){var s=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],n=this.w,r=this.drawText({x:-200,y:-200,text:e,textAnchor:"start",fontSize:t,fontFamily:i,foreColor:"#fff",opacity:0});a&&r.attr("transform",a),n.globals.dom.Paper.add(r);var o=r.bbox();return s||(o=r.node.getBoundingClientRect()),r.remove(),{width:o.width,height:o.height}}},{key:"placeTextWithEllipsis",value:function(e,t,i){if(typeof e.getComputedTextLength=="function"&&(e.textContent=t,t.length>0&&e.getComputedTextLength()>=i/1.1)){for(var a=t.length-3;a>0;a-=3)if(e.getSubStringLength(0,a)<=i/1.1)return void(e.textContent=t.substring(0,a)+"...");e.textContent="."}}}],[{key:"setAttrs",value:function(e,t){for(var i in t)t.hasOwnProperty(i)&&e.setAttribute(i,t[i])}}]),v}(),N=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"getStackedSeriesTotals",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=this.w,i=[];if(t.globals.series.length===0)return i;for(var a=0;a0&&arguments[0]!==void 0?arguments[0]:null;return e===null?this.w.config.series.reduce(function(t,i){return t+i},0):this.w.globals.series[e].reduce(function(t,i){return t+i},0)}},{key:"isSeriesNull",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return(e===null?this.w.config.series.filter(function(t){return t!==null}):this.w.config.series[e].data.filter(function(t){return t!==null})).length===0}},{key:"seriesHaveSameValues",value:function(e){return this.w.globals.series[e].every(function(t,i,a){return t===a[0]})}},{key:"getCategoryLabels",value:function(e){var t=this.w,i=e.slice();return t.config.xaxis.convertedCatToNumeric&&(i=e.map(function(a,s){return t.config.xaxis.labels.formatter(a-t.globals.minX+1)})),i}},{key:"getLargestSeries",value:function(){var e=this.w;e.globals.maxValsInArrayIndex=e.globals.series.map(function(t){return t.length}).indexOf(Math.max.apply(Math,e.globals.series.map(function(t){return t.length})))}},{key:"getLargestMarkerSize",value:function(){var e=this.w,t=0;return e.globals.markers.size.forEach(function(i){t=Math.max(t,i)}),e.config.markers.discrete&&e.config.markers.discrete.length&&e.config.markers.discrete.forEach(function(i){t=Math.max(t,i.size)}),t>0&&(t+=e.config.markers.hover.sizeOffset+1),e.globals.markers.largestSize=t,t}},{key:"getSeriesTotals",value:function(){var e=this.w;e.globals.seriesTotals=e.globals.series.map(function(t,i){var a=0;if(Array.isArray(t))for(var s=0;se&&i.globals.seriesX[s][r]0&&(t=!0),{comboBarCount:i,comboCharts:t}}},{key:"extendArrayProps",value:function(e,t,i){return t.yaxis&&(t=e.extendYAxis(t,i)),t.annotations&&(t.annotations.yaxis&&(t=e.extendYAxisAnnotations(t)),t.annotations.xaxis&&(t=e.extendXAxisAnnotations(t)),t.annotations.points&&(t=e.extendPointAnnotations(t))),t}}]),v}(),ue=function(){function v(e){E(this,v),this.w=e.w,this.annoCtx=e}return Y(v,[{key:"setOrientations",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=this.w;if(e.label.orientation==="vertical"){var a=t!==null?t:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(s!==null){var n=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-n.height+4),e.label.position==="top"?s.setAttribute("y",parseFloat(s.getAttribute("y"))+n.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-n.width);var r=this.annoCtx.graphics.rotateAroundCenter(s),o=r.x,h=r.y;s.setAttribute("transform","rotate(-90 ".concat(o," ").concat(h,")"))}}}},{key:"addBackgroundToAnno",value:function(e,t){var i=this.w;if(!e||t.label.text===void 0||t.label.text!==void 0&&!String(t.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=e.getBoundingClientRect(),n=t.label.style.padding.left,r=t.label.style.padding.right,o=t.label.style.padding.top,h=t.label.style.padding.bottom;t.label.orientation==="vertical"&&(o=t.label.style.padding.left,h=t.label.style.padding.right,n=t.label.style.padding.top,r=t.label.style.padding.bottom);var c=s.left-a.left-n,d=s.top-a.top-o,g=this.annoCtx.graphics.drawRect(c-i.globals.barPadForNumericAxis,d,s.width+n+r,s.height+o+h,t.label.borderRadius,t.label.style.background,1,t.label.borderWidth,t.label.borderColor,0);return t.id&&g.node.classList.add(t.id),g}},{key:"annotationsBackground",value:function(){var e=this,t=this.w,i=function(a,s,n){var r=t.globals.dom.baseEl.querySelector(".apexcharts-".concat(n,"-annotations .apexcharts-").concat(n,"-annotation-label[rel='").concat(s,"']"));if(r){var o=r.parentNode,h=e.addBackgroundToAnno(r,a);h&&(o.insertBefore(h.node,r),a.label.mouseEnter&&h.node.addEventListener("mouseenter",a.label.mouseEnter.bind(e,a)),a.label.mouseLeave&&h.node.addEventListener("mouseleave",a.label.mouseLeave.bind(e,a)),a.label.click&&h.node.addEventListener("click",a.label.click.bind(e,a)))}};t.config.annotations.xaxis.map(function(a,s){i(a,s,"xaxis")}),t.config.annotations.yaxis.map(function(a,s){i(a,s,"yaxis")}),t.config.annotations.points.map(function(a,s){i(a,s,"point")})}},{key:"getY1Y2",value:function(e,t){var i,a=e==="y1"?t.y:t.y2,s=this.w;if(this.annoCtx.invertAxis){var n=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(n=s.globals.categoryLabels.indexOf(a));var r=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(n+1)+")");r&&(i=parseFloat(r.getAttribute("y")))}else{var o;s.config.yaxis[t.yAxisIndex].logarithmic?o=(a=new N(this.annoCtx.ctx).getLogVal(a,t.yAxisIndex))/s.globals.yLogRatio[t.yAxisIndex]:o=(a-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight),i=s.globals.gridHeight-o,!t.marker||t.y!==void 0&&t.y!==null||(i=0),s.config.yaxis[t.yAxisIndex]&&s.config.yaxis[t.yAxisIndex].reversed&&(i=o)}return typeof a=="string"&&a.indexOf("px")>-1&&(i=parseFloat(a)),i}},{key:"getX1X2",value:function(e,t){var i=this.w,a=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,s=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,n=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,r=(t.x-a)/(n/i.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(r=(s-t.x)/(n/i.globals.gridWidth)),i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(r=this.getStringX(t.x));var o=(t.x2-a)/(n/i.globals.gridWidth);return this.annoCtx.inversedReversedAxis&&(o=(s-t.x2)/(n/i.globals.gridWidth)),i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(o=this.getStringX(t.x2)),t.x!==void 0&&t.x!==null||!t.marker||(r=i.globals.gridWidth),e==="x1"&&typeof t.x=="string"&&t.x.indexOf("px")>-1&&(r=parseFloat(t.x)),e==="x2"&&typeof t.x2=="string"&&t.x2.indexOf("px")>-1&&(o=parseFloat(t.x2)),e==="x1"?r:o}},{key:"getStringX",value:function(e){var t=this.w,i=e;t.config.xaxis.convertedCatToNumeric&&t.globals.categoryLabels.length&&(e=t.globals.categoryLabels.indexOf(e)+1);var a=t.globals.labels.indexOf(e),s=t.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),v}(),it=function(){function v(e){E(this,v),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new ue(this.annoCtx)}return Y(v,[{key:"addXaxisAnnotation",value:function(e,t,i){var a,s=this.w,n=this.helpers.getX1X2("x1",e),r=e.label.text,o=e.strokeDashArray;if(P.isNumber(n)){if(e.x2===null||e.x2===void 0){var h=this.annoCtx.graphics.drawLine(n+e.offsetX,0+e.offsetY,n+e.offsetX,s.globals.gridHeight+e.offsetY,e.borderColor,o,e.borderWidth);t.appendChild(h.node),e.id&&h.node.classList.add(e.id)}else{if((a=this.helpers.getX1X2("x2",e))r){var c=r;r=a,a=c}var d=this.annoCtx.graphics.drawRect(0+e.offsetX,a+e.offsetY,this._getYAxisAnnotationWidth(e),r-a,0,e.fillColor,e.opacity,1,e.borderColor,n);d.node.classList.add("apexcharts-annotation-rect"),d.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),t.appendChild(d.node),e.id&&d.node.classList.add(e.id)}var g=e.label.position==="right"?s.globals.gridWidth:e.label.position==="center"?s.globals.gridWidth/2:0,p=this.annoCtx.graphics.drawText({x:g+e.label.offsetX,y:(a!=null?a:r)+e.label.offsetY-3,text:o,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(e.label.style.cssClass," ").concat(e.id?e.id:"")});p.attr({rel:i}),t.appendChild(p.node)}},{key:"_getYAxisAnnotationWidth",value:function(e){var t=this.w;return t.globals.gridWidth,(e.width.indexOf("%")>-1?t.globals.gridWidth*parseInt(e.width,10)/100:parseInt(e.width,10))+e.offsetX}},{key:"drawYAxisAnnotations",value:function(){var e=this,t=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return t.config.annotations.yaxis.map(function(a,s){e.addYaxisAnnotation(a,i.node,s)}),i}}]),v}(),st=function(){function v(e){E(this,v),this.w=e.w,this.annoCtx=e,this.helpers=new ue(this.annoCtx)}return Y(v,[{key:"addPointAnnotation",value:function(e,t,i){this.w;var a=this.helpers.getX1X2("x1",e),s=this.helpers.getY1Y2("y1",e);if(P.isNumber(a)){var n={pSize:e.marker.size,pointStrokeWidth:e.marker.strokeWidth,pointFillColor:e.marker.fillColor,pointStrokeColor:e.marker.strokeColor,shape:e.marker.shape,pRadius:e.marker.radius,class:"apexcharts-point-annotation-marker ".concat(e.marker.cssClass," ").concat(e.id?e.id:"")},r=this.annoCtx.graphics.drawMarker(a+e.marker.offsetX,s+e.marker.offsetY,n);t.appendChild(r.node);var o=e.label.text?e.label.text:"",h=this.annoCtx.graphics.drawText({x:a+e.label.offsetX,y:s+e.label.offsetY-e.marker.size-parseFloat(e.label.style.fontSize)/1.6,text:o,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(e.label.style.cssClass," ").concat(e.id?e.id:"")});if(h.attr({rel:i}),t.appendChild(h.node),e.customSVG.SVG){var c=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+e.customSVG.cssClass});c.attr({transform:"translate(".concat(a+e.customSVG.offsetX,", ").concat(s+e.customSVG.offsetY,")")}),c.node.innerHTML=e.customSVG.SVG,t.appendChild(c.node)}if(e.image.path){var d=e.image.width?e.image.width:20,g=e.image.height?e.image.height:20;r=this.annoCtx.addImage({x:a+e.image.offsetX-d/2,y:s+e.image.offsetY-g/2,width:d,height:g,path:e.image.path,appendTo:".apexcharts-point-annotations"})}e.mouseEnter&&r.node.addEventListener("mouseenter",e.mouseEnter.bind(this,e)),e.mouseLeave&&r.node.addEventListener("mouseleave",e.mouseLeave.bind(this,e)),e.click&&r.node.addEventListener("click",e.click.bind(this,e))}}},{key:"drawPointAnnotations",value:function(){var e=this,t=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return t.config.annotations.points.map(function(a,s){e.addPointAnnotation(a,i.node,s)}),i}}]),v}(),Re={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},Q=function(){function v(){E(this,v),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return Y(v,[{key:"init",value:function(){return{annotations:{position:"front",yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[Re],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0},stacked:!1,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",dateFormatter:function(e){return new Date(e).toDateString()}},png:{filename:void 0},svg:{filename:void 0}},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(e){return e}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(e){return e+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(e){return e.globals.seriesTotals.reduce(function(t,i){return t+i},0)/e.globals.series.length+"%"}}}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(e){return e}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(e){return e}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(e){return e.globals.seriesTotals.reduce(function(t,i){return t+i},0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(e){return e!==null?e:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:2},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",width:8,height:8,radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.5}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(e){return e?e+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),v}(),rt=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.graphics=new M(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new ue(this),this.xAxisAnnotations=new it(this),this.yAxisAnnotations=new at(this),this.pointsAnnotations=new st(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return Y(v,[{key:"drawAxesAnnotations",value:function(){var e=this.w;if(e.globals.axisCharts){for(var t=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=e.config.chart.animations.enabled,n=[t,i,a],r=[i.node,t.node,a.node],o=0;o<3;o++)e.globals.dom.elGraphical.add(n[o]),!s||e.globals.resized||e.globals.dataChanged||e.config.chart.type!=="scatter"&&e.config.chart.type!=="bubble"&&e.globals.dataPoints>1&&r[o].classList.add("apexcharts-element-hidden"),e.globals.delayedElements.push({el:r[o],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var e=this;this.w.config.annotations.images.map(function(t,i){e.addImage(t,i)})}},{key:"drawTextAnnos",value:function(){var e=this;this.w.config.annotations.texts.map(function(t,i){e.addText(t,i)})}},{key:"addXaxisAnnotation",value:function(e,t,i){this.xAxisAnnotations.addXaxisAnnotation(e,t,i)}},{key:"addYaxisAnnotation",value:function(e,t,i){this.yAxisAnnotations.addYaxisAnnotation(e,t,i)}},{key:"addPointAnnotation",value:function(e,t,i){this.pointsAnnotations.addPointAnnotation(e,t,i)}},{key:"addText",value:function(e,t){var i=e.x,a=e.y,s=e.text,n=e.textAnchor,r=e.foreColor,o=e.fontSize,h=e.fontFamily,c=e.fontWeight,d=e.cssClass,g=e.backgroundColor,p=e.borderWidth,x=e.strokeDashArray,f=e.borderRadius,y=e.borderColor,w=e.appendTo,S=w===void 0?".apexcharts-annotations":w,k=e.paddingLeft,l=k===void 0?4:k,u=e.paddingRight,b=u===void 0?4:u,m=e.paddingBottom,A=m===void 0?2:m,L=e.paddingTop,C=L===void 0?2:L,T=this.w,I=this.graphics.drawText({x:i,y:a,text:s,textAnchor:n||"start",fontSize:o||"12px",fontWeight:c||"regular",fontFamily:h||T.config.chart.fontFamily,foreColor:r||T.config.chart.foreColor,cssClass:d}),X=T.globals.dom.baseEl.querySelector(S);X&&X.appendChild(I.node);var z=I.bbox();if(s){var D=this.graphics.drawRect(z.x-l,z.y-C,z.width+l+b,z.height+A+C,f,g||"transparent",1,p,y,x);X.insertBefore(D.node,I.node)}}},{key:"addImage",value:function(e,t){var i=this.w,a=e.path,s=e.x,n=s===void 0?0:s,r=e.y,o=r===void 0?0:r,h=e.width,c=h===void 0?20:h,d=e.height,g=d===void 0?20:d,p=e.appendTo,x=p===void 0?".apexcharts-annotations":p,f=i.globals.dom.Paper.image(a);f.size(c,g).move(n,o);var y=i.globals.dom.baseEl.querySelector(x);return y&&y.appendChild(f.node),f}},{key:"addXaxisAnnotationExternal",value:function(e,t,i){return this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(e,t,i){return this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(e,t,i){return this.invertAxis===void 0&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(e){var t=e.params,i=e.pushToMemory,a=e.context,s=e.type,n=e.contextMethod,r=a,o=r.w,h=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),c=h.childNodes.length+1,d=new Q,g=Object.assign({},s==="xaxis"?d.xAxisAnnotation:s==="yaxis"?d.yAxisAnnotation:d.pointAnnotation),p=P.extend(g,t);switch(s){case"xaxis":this.addXaxisAnnotation(p,h,c);break;case"yaxis":this.addYaxisAnnotation(p,h,c);break;case"point":this.addPointAnnotation(p,h,c)}var x=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(c,"']")),f=this.helpers.addBackgroundToAnno(x,p);return f&&h.insertBefore(f.node,x),i&&o.globals.memory.methodsToExec.push({context:r,id:p.id?p.id:P.randomId(),method:n,label:"addAnnotation",params:t}),a}},{key:"clearAnnotations",value:function(e){var t=e.w,i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");t.globals.memory.methodsToExec.map(function(a,s){a.label!=="addText"&&a.label!=="addAnnotation"||t.globals.memory.methodsToExec.splice(s,1)}),i=P.listToArray(i),Array.prototype.forEach.call(i,function(a){for(;a.firstChild;)a.removeChild(a.firstChild)})}},{key:"removeAnnotation",value:function(e,t){var i=e.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(t));a&&(i.globals.memory.methodsToExec.map(function(s,n){s.id===t&&i.globals.memory.methodsToExec.splice(n,1)}),Array.prototype.forEach.call(a,function(s){s.parentElement.removeChild(s)}))}}]),v}(),G=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return Y(v,[{key:"isValidDate",value:function(e){return!isNaN(this.parseDate(e))}},{key:"getTimeStamp",value:function(e){return Date.parse(e)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(e).toISOString().substr(0,25)).getTime():new Date(e).getTime():e}},{key:"getDate",value:function(e){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(e).toUTCString()):new Date(e)}},{key:"parseDate",value:function(e){var t=Date.parse(e);if(!isNaN(t))return this.getTimeStamp(e);var i=Date.parse(e.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getTimeStamp(i)}},{key:"parseDateWithTimezone",value:function(e){return Date.parse(e.replace(/-/g,"/").replace(/[a-z]+/gi," "))}},{key:"formatDate",value:function(e,t){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=["\0"].concat(q(i.months)),n=[""].concat(q(i.shortMonths)),r=[""].concat(q(i.days)),o=[""].concat(q(i.shortDays));function h(A,L){var C=A+"";for(L=L||2;C.length12?p-12:p===0?12:p;t=(t=(t=(t=t.replace(/(^|[^\\])HH+/g,"$1"+h(p))).replace(/(^|[^\\])H/g,"$1"+p)).replace(/(^|[^\\])hh+/g,"$1"+h(x))).replace(/(^|[^\\])h/g,"$1"+x);var f=a?e.getUTCMinutes():e.getMinutes();t=(t=t.replace(/(^|[^\\])mm+/g,"$1"+h(f))).replace(/(^|[^\\])m/g,"$1"+f);var y=a?e.getUTCSeconds():e.getSeconds();t=(t=t.replace(/(^|[^\\])ss+/g,"$1"+h(y))).replace(/(^|[^\\])s/g,"$1"+y);var w=a?e.getUTCMilliseconds():e.getMilliseconds();t=t.replace(/(^|[^\\])fff+/g,"$1"+h(w,3)),w=Math.round(w/10),t=t.replace(/(^|[^\\])ff/g,"$1"+h(w)),w=Math.round(w/10);var S=p<12?"AM":"PM";t=(t=(t=t.replace(/(^|[^\\])f/g,"$1"+w)).replace(/(^|[^\\])TT+/g,"$1"+S)).replace(/(^|[^\\])T/g,"$1"+S.charAt(0));var k=S.toLowerCase();t=(t=t.replace(/(^|[^\\])tt+/g,"$1"+k)).replace(/(^|[^\\])t/g,"$1"+k.charAt(0));var l=-e.getTimezoneOffset(),u=a||!l?"Z":l>0?"+":"-";if(!a){var b=(l=Math.abs(l))%60;u+=h(Math.floor(l/60))+":"+h(b)}t=t.replace(/(^|[^\\])K/g,"$1"+u);var m=(a?e.getUTCDay():e.getDay())+1;return t=(t=(t=(t=(t=t.replace(new RegExp(r[0],"g"),r[m])).replace(new RegExp(o[0],"g"),o[m])).replace(new RegExp(s[0],"g"),s[d])).replace(new RegExp(n[0],"g"),n[d])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(e,t,i){var a=this.w;a.config.xaxis.min!==void 0&&(e=a.config.xaxis.min),a.config.xaxis.max!==void 0&&(t=a.config.xaxis.max);var s=this.getDate(e),n=this.getDate(t),r=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),o=this.formatDate(n,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(r[6],10),maxMillisecond:parseInt(o[6],10),minSecond:parseInt(r[5],10),maxSecond:parseInt(o[5],10),minMinute:parseInt(r[4],10),maxMinute:parseInt(o[4],10),minHour:parseInt(r[3],10),maxHour:parseInt(o[3],10),minDate:parseInt(r[2],10),maxDate:parseInt(o[2],10),minMonth:parseInt(r[1],10)-1,maxMonth:parseInt(o[1],10)-1,minYear:parseInt(r[0],10),maxYear:parseInt(o[0],10)}}},{key:"isLeapYear",value:function(e){return e%4==0&&e%100!=0||e%400==0}},{key:"calculcateLastDaysOfMonth",value:function(e,t,i){return this.determineDaysOfMonths(e,t)-i}},{key:"determineDaysOfYear",value:function(e){var t=365;return this.isLeapYear(e)&&(t=366),t}},{key:"determineRemainingDaysOfYear",value:function(e,t,i){var a=this.daysCntOfYear[t]+i;return t>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(e,t){var i=30;switch(e=P.monthMod(e),!0){case this.months30.indexOf(e)>-1:e===2&&(i=this.isLeapYear(t)?29:28);break;case this.months31.indexOf(e)>-1:default:i=31}return i}}]),v}(),ye=function(v){var e,t=v.ctx,i=v.seriesIndex,a=v.dataPointIndex,s=v.y1,n=v.y2,r=v.w,o=r.globals.seriesRangeStart[i][a],h=r.globals.seriesRangeEnd[i][a],c=r.globals.labels[a],d=r.config.series[i].name?r.config.series[i].name:"",g=r.config.tooltip.y.formatter,p=r.config.tooltip.y.title.formatter,x={w:r,seriesIndex:i,dataPointIndex:a,start:o,end:h};typeof p=="function"&&(d=p(d,x)),(e=r.config.series[i].data[a])!==null&&e!==void 0&&e.x&&(c=r.config.series[i].data[a].x+":"),typeof g=="function"&&(c=g(c,x)),Number.isFinite(s)&&Number.isFinite(n)&&(o=s,h=n);var f="",y="",w=r.globals.colors[i];if(r.config.tooltip.x.formatter===void 0)if(r.config.xaxis.type==="datetime"){var S=new G(t);f=S.formatDate(S.getDate(o),r.config.tooltip.x.format),y=S.formatDate(S.getDate(h),r.config.tooltip.x.format)}else f=o,y=h;else f=r.config.tooltip.x.formatter(o),y=r.config.tooltip.x.formatter(h);return{start:o,end:h,startVal:f,endVal:y,ylabel:c,color:w,seriesName:d}},we=function(v){var e=v.color,t=v.seriesName,i=v.ylabel,a=v.start,s=v.end,n=v.seriesIndex,r=v.dataPointIndex,o=v.ctx.tooltip.tooltipLabels.getFormatters(n);a=o.yLbFormatter(a),s=o.yLbFormatter(s);var h=o.yLbFormatter(v.w.globals.series[n][r]),c=` +var ot=Object.create;var He=Object.defineProperty;var lt=Object.getOwnPropertyDescriptor;var ht=Object.getOwnPropertyNames;var ct=Object.getPrototypeOf,dt=Object.prototype.hasOwnProperty;var gt=(m,e)=>()=>(e||m((e={exports:{}}).exports,e),e.exports);var ut=(m,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ht(e))!dt.call(m,a)&&a!==t&&He(m,a,{get:()=>e[a],enumerable:!(i=lt(e,a))||i.enumerable});return m};var pt=(m,e,t)=>(t=m!=null?ot(ct(m)):{},ut(e||!m||!m.__esModule?He(t,"default",{value:m,enumerable:!0}):t,m));var rt=gt((Ye,ve)=>{"use strict";function De(m,e){var t=Object.keys(m);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(m);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(m,a).enumerable})),t.push.apply(t,i)}return t}function E(m){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var t,i=xe(m);if(e){var a=xe(this).constructor;t=Reflect.construct(i,arguments,a)}else t=i.apply(this,arguments);return ft(this,t)}}function je(m,e){return function(t){if(Array.isArray(t))return t}(m)||function(t,i){var a=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(a!=null){var s,r,n=[],o=!0,h=!1;try{for(a=a.call(t);!(o=(s=a.next()).done)&&(n.push(s.value),!i||n.length!==i);o=!0);}catch(c){h=!0,r=c}finally{try{o||a.return==null||a.return()}finally{if(h)throw r}}return n}}(m,e)||_e(m,e)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Z(m){return function(e){if(Array.isArray(e))return ze(e)}(m)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(m)||_e(m)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function _e(m,e){if(m){if(typeof m=="string")return ze(m,e);var t=Object.prototype.toString.call(m).slice(8,-1);return t==="Object"&&m.constructor&&(t=m.constructor.name),t==="Map"||t==="Set"?Array.from(m):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?ze(m,e):void 0}}function ze(m,e){(e==null||e>m.length)&&(e=m.length);for(var t=0,i=new Array(e);t>16,n=i>>8&255,o=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-n)*s)+n)+(Math.round((a-o)*s)+o)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,t){return m.isColorHex(t)?this.shadeHexColor(e,t):this.shadeRGBColor(e,t)}}],[{key:"bind",value:function(e,t){return function(){return e.apply(t,arguments)}}},{key:"isObject",value:function(e){return e&&V(e)==="object"&&!Array.isArray(e)&&e!=null}},{key:"is",value:function(e,t){return Object.prototype.toString.call(t)==="[object "+e+"]"}},{key:"listToArray",value:function(e){var t,i=[];for(t=0;t1&&arguments[1]!==void 0?arguments[1]:2;return Number.isInteger(e)?e:parseFloat(e.toPrecision(t))}},{key:"randomId",value:function(){return(Math.random()+1).toString(36).substring(4)}},{key:"noExponents",value:function(e){var t=String(e).split(/[eE]/);if(t.length===1)return t[0];var i="",a=e<0?"-":"",s=t[0].replace(".",""),r=Number(t[1])+1;if(r<0){for(i=a+"0.";r++;)i+="0";return i+s.replace(/^-/,"")}for(r-=s.length;r--;)i+="0";return s+i}},{key:"getDimensions",value:function(e){var t=getComputedStyle(e,null),i=e.clientHeight,a=e.clientWidth;return i-=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom),[a-=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),i]}},{key:"getBoundingClientRect",value:function(e){var t=e.getBoundingClientRect();return{top:t.top,right:t.right,bottom:t.bottom,left:t.left,width:e.clientWidth,height:e.clientHeight,x:t.left,y:t.top}}},{key:"getLargestStringFromArr",value:function(e){return e.reduce(function(t,i){return Array.isArray(i)&&(i=i.reduce(function(a,s){return a.length>s.length?a:s})),t.length>i.length?t:i},0)}},{key:"hexToRgba",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"#999999",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.6;e.substring(0,1)!=="#"&&(e="#999999");var i=e.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&arguments[1]!==void 0?arguments[1]:"x",i=e.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,t)}},{key:"negToZero",value:function(e){return e<0?0:e}},{key:"moveIndexInArray",value:function(e,t,i){if(i>=e.length)for(var a=i-e.length+1;a--;)e.push(void 0);return e.splice(i,0,e.splice(t,1)[0]),e}},{key:"extractNumber",value:function(e){return parseFloat(e.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e}},{key:"setELstyles",value:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e.style.key=t[i])}},{key:"isNumber",value:function(e){return!isNaN(e)&&parseFloat(Number(e))===e&&!isNaN(parseInt(e,10))}},{key:"isFloat",value:function(e){return Number(e)===e&&e%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(window.navigator.userAgent.indexOf("MSIE")!==-1||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){var i=e.indexOf("rv:");return parseInt(e.substring(i+3,e.indexOf(".",i)),10)}var a=e.indexOf("Edge/");return a>0&&parseInt(e.substring(a+5,e.indexOf(".",a)),10)}}]),m}(),oe=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return R(m,[{key:"setEasingFunctions",value:function(){var e;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case"linear":e="-";break;case"easein":e="<";break;case"easeout":e=">";break;case"easeinout":default:e="<>";break;case"swing":e=function(t){var i=1.70158;return(t-=1)*t*((i+1)*t+i)+1};break;case"bounce":e=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":e=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=e}}},{key:"animateLine",value:function(e,t,i,a){e.attr(t).animate(a).attr(i)}},{key:"animateMarker",value:function(e,t,i,a,s,r){t||(t=0),e.attr({r:t,width:t,height:t}).animate(a,s).attr({r:i,width:i.width,height:i.height}).afterAll(function(){r()})}},{key:"animateCircle",value:function(e,t,i,a,s){e.attr({r:t.r,cx:t.cx,cy:t.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(e,t,i,a,s){e.attr(t).animate(a).attr(i).afterAll(function(){return s()})}},{key:"animatePathsGradually",value:function(e){var t=e.el,i=e.realIndex,a=e.j,s=e.fill,r=e.pathFrom,n=e.pathTo,o=e.speed,h=e.delay,c=this.w,d=0;c.config.chart.animations.animateGradually.enabled&&(d=c.config.chart.animations.animateGradually.delay),c.config.chart.animations.dynamicAnimation.enabled&&c.globals.dataChanged&&c.config.chart.type!=="bar"&&(d=0),this.morphSVG(t,i,a,c.config.chart.type!=="line"||c.globals.comboCharts?s:"stroke",r,n,o,h*d)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach(function(e){var t=e.el;t.classList.remove("apexcharts-element-hidden"),t.classList.add("apexcharts-hidden-element-shown")})}},{key:"animationCompleted",value:function(e){var t=this.w;t.globals.animationEnded||(t.globals.animationEnded=!0,this.showDelayedElements(),typeof t.config.chart.events.animationEnd=="function"&&t.config.chart.events.animationEnd(this.ctx,{el:e,w:t}))}},{key:"morphSVG",value:function(e,t,i,a,s,r,n,o){var h=this,c=this.w;s||(s=e.attr("pathFrom")),r||(r=e.attr("pathTo"));var d=function(u){return c.config.chart.type==="radar"&&(n=1),"M 0 ".concat(c.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=d()),(!r||r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=d()),c.globals.shouldAnimate||(n=1),e.plot(s).animate(1,c.globals.easing,o).plot(s).animate(n,c.globals.easing,o).plot(r).afterAll(function(){P.isNumber(i)?i===c.globals.series[c.globals.maxValsInArrayIndex].length-2&&c.globals.shouldAnimate&&h.animationCompleted(e):a!=="none"&&c.globals.shouldAnimate&&(!c.globals.comboCharts&&t===c.globals.series.length-1||c.globals.comboCharts)&&h.animationCompleted(e),h.showDelayedElements()})}}]),m}(),U=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"getDefaultFilter",value:function(e,t){var i=this.w;e.unfilter(!0),new window.SVG.Filter().size("120%","180%","-5%","-40%"),i.config.states.normal.filter!=="none"?this.applyFilter(e,t,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(e,i.config.chart.dropShadow,t)}},{key:"addNormalFilter",value:function(e,t){var i=this.w;i.config.chart.dropShadow.enabled&&!e.node.classList.contains("apexcharts-marker")&&this.dropShadow(e,i.config.chart.dropShadow,t)}},{key:"addLightenFilter",value:function(e,t,i){var a=this,s=this.w,r=i.intensity;e.unfilter(!0),new window.SVG.Filter,e.filter(function(n){var o=s.config.chart.dropShadow;(o.enabled?a.addShadow(n,t,o):n).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:r}})}),e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)}},{key:"addDarkenFilter",value:function(e,t,i){var a=this,s=this.w,r=i.intensity;e.unfilter(!0),new window.SVG.Filter,e.filter(function(n){var o=s.config.chart.dropShadow;(o.enabled?a.addShadow(n,t,o):n).componentTransfer({rgb:{type:"linear",slope:r}})}),e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)}},{key:"applyFilter",value:function(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(e,t);break;case"lighten":this.addLightenFilter(e,t,{intensity:a});break;case"darken":this.addDarkenFilter(e,t,{intensity:a})}}},{key:"addShadow",value:function(e,t,i){var a=i.blur,s=i.top,r=i.left,n=i.color,o=i.opacity,h=e.flood(Array.isArray(n)?n[t]:n,o).composite(e.sourceAlpha,"in").offset(r,s).gaussianBlur(a).merge(e.source);return e.blend(e.source,h)}},{key:"dropShadow",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=t.top,s=t.left,r=t.blur,n=t.color,o=t.opacity,h=t.noUserSpaceOnUse,c=this.w;return e.unfilter(!0),P.isIE()&&c.config.chart.type==="radialBar"||(n=Array.isArray(n)?n[i]:n,e.filter(function(d){var u=null;u=P.isSafari()||P.isFirefox()||P.isIE()?d.flood(n,o).composite(d.sourceAlpha,"in").offset(s,a).gaussianBlur(r):d.flood(n,o).composite(d.sourceAlpha,"in").offset(s,a).gaussianBlur(r).merge(d.source),d.blend(d.source,u)}),h||e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)),e}},{key:"setSelectionFilter",value:function(e,t,i){var a=this.w;if(a.globals.selectedDataPoints[t]!==void 0&&a.globals.selectedDataPoints[t].indexOf(i)>-1){e.node.setAttribute("selected",!0);var s=a.config.states.active.filter;s!=="none"&&this.applyFilter(e,t,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(e){(function(t){for(var i in t)t.hasOwnProperty(i)&&e.setAttribute(i,t[i])})({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}]),m}(),z=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"roundPathCorners",value:function(e,t){function i(S,L,C){var M=L.x-S.x,T=L.y-S.y,I=Math.sqrt(M*M+T*T);return a(S,L,Math.min(1,C/I))}function a(S,L,C){return{x:S.x+(L.x-S.x)*C,y:S.y+(L.y-S.y)*C}}function s(S,L){S.length>2&&(S[S.length-2]=L.x,S[S.length-1]=L.y)}function r(S){return{x:parseFloat(S[S.length-2]),y:parseFloat(S[S.length-1])}}e.indexOf("NaN")>-1&&(e="");var n=e.split(/[,\s]/).reduce(function(S,L){var C=L.match("([a-zA-Z])(.+)");return C?(S.push(C[1]),S.push(C[2])):S.push(L),S},[]).reduce(function(S,L){return parseFloat(L)==L&&S.length?S[S.length-1].push(L):S.push([L]),S},[]),o=[];if(n.length>1){var h=r(n[0]),c=null;n[n.length-1][0]=="Z"&&n[0].length>2&&(c=["L",h.x,h.y],n[n.length-1]=c),o.push(n[0]);for(var d=1;d2&&p[0]=="L"&&f.length>2&&f[0]=="L"){var b,v,w=r(u),k=r(p),l=r(f);b=i(k,w,t),v=i(k,l,t),s(p,b),p.origPoint=k,o.push(p);var g=a(b,k,.5),x=a(k,v,.5),y=["C",g.x,g.y,x.x,x.y,v.x,v.y];y.origPoint=k,o.push(y)}else o.push(p)}if(c){var A=r(o[o.length-1]);o.push(["Z"]),s(o[0],A)}}else o=n;return o.reduce(function(S,L){return S+L.join(" ")+" "},"")}},{key:"drawLine",value:function(e,t,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"#a8a8a8",r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,n=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null,o=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"butt";return this.w.globals.dom.Paper.line().attr({x1:e,y1:t,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":n,"stroke-linecap":o})}},{key:"drawRect",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"#fefefe",n=arguments.length>6&&arguments[6]!==void 0?arguments[6]:1,o=arguments.length>7&&arguments[7]!==void 0?arguments[7]:null,h=arguments.length>8&&arguments[8]!==void 0?arguments[8]:null,c=arguments.length>9&&arguments[9]!==void 0?arguments[9]:0,d=this.w.globals.dom.Paper.rect();return d.attr({x:e,y:t,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:n,"stroke-width":o!==null?o:0,stroke:h!==null?h:"none","stroke-dasharray":c}),d.node.setAttribute("fill",r),d}},{key:"drawPolygon",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"#e1e1e1",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"none";return this.w.globals.dom.Paper.polygon(e).attr({fill:a,stroke:t,"stroke-width":i})}},{key:"drawCircle",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;e<0&&(e=0);var i=this.w.globals.dom.Paper.circle(2*e);return t!==null&&i.attr(t),i}},{key:"drawPath",value:function(e){var t=e.d,i=t===void 0?"":t,a=e.stroke,s=a===void 0?"#a8a8a8":a,r=e.strokeWidth,n=r===void 0?1:r,o=e.fill,h=e.fillOpacity,c=h===void 0?1:h,d=e.strokeOpacity,u=d===void 0?1:d,p=e.classes,f=e.strokeLinecap,b=f===void 0?null:f,v=e.strokeDashArray,w=v===void 0?0:v,k=this.w;return b===null&&(b=k.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(k.globals.gridHeight)),k.globals.dom.Paper.path(i).attr({fill:o,"fill-opacity":c,stroke:s,"stroke-opacity":u,"stroke-linecap":b,"stroke-width":n,"stroke-dasharray":w,class:p})}},{key:"group",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=this.w.globals.dom.Paper.group();return e!==null&&t.attr(e),t}},{key:"move",value:function(e,t){var i=["M",e,t].join(" ");return i}},{key:"line",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=null;return i===null?a=[" L",e,t].join(" "):i==="H"?a=[" H",e].join(" "):i==="V"&&(a=[" V",t].join(" ")),a}},{key:"curve",value:function(e,t,i,a,s,r){var n=["C",e,t,i,a,s,r].join(" ");return n}},{key:"quadraticCurve",value:function(e,t,i,a){return["Q",e,t,i,a].join(" ")}},{key:"arc",value:function(e,t,i,a,s,r,n){var o="A";arguments.length>7&&arguments[7]!==void 0&&arguments[7]&&(o="a");var h=[o,e,t,i,a,s,r,n].join(" ");return h}},{key:"renderPaths",value:function(e){var t,i=e.j,a=e.realIndex,s=e.pathFrom,r=e.pathTo,n=e.stroke,o=e.strokeWidth,h=e.strokeLinecap,c=e.fill,d=e.animationDelay,u=e.initialSpeed,p=e.dataChangeSpeed,f=e.className,b=e.shouldClipToGrid,v=b===void 0||b,w=e.bindEventsOnPaths,k=w===void 0||w,l=e.drawShadow,g=l===void 0||l,x=this.w,y=new U(this.ctx),A=new oe(this.ctx),S=this.w.config.chart.animations.enabled,L=S&&this.w.config.chart.animations.dynamicAnimation.enabled,C=!!(S&&!x.globals.resized||L&&x.globals.dataChanged&&x.globals.shouldAnimate);C?t=s:(t=r,x.globals.animationEnded=!0);var M=x.config.stroke.dashArray,T=0;T=Array.isArray(M)?M[a]:x.config.stroke.dashArray;var I=this.drawPath({d:t,stroke:n,strokeWidth:o,fill:c,fillOpacity:1,classes:f,strokeLinecap:h,strokeDashArray:T});if(I.attr("index",a),v&&I.attr({"clip-path":"url(#gridRectMask".concat(x.globals.cuid,")")}),x.config.states.normal.filter.type!=="none")y.getDefaultFilter(I,a);else if(x.config.chart.dropShadow.enabled&&g&&(!x.config.chart.dropShadow.enabledOnSeries||x.config.chart.dropShadow.enabledOnSeries&&x.config.chart.dropShadow.enabledOnSeries.indexOf(a)!==-1)){var X=x.config.chart.dropShadow;y.dropShadow(I,X,a)}k&&(I.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,I)),I.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,I)),I.node.addEventListener("mousedown",this.pathMouseDown.bind(this,I))),I.attr({pathTo:r,pathFrom:s});var Y={el:I,j:i,realIndex:a,pathFrom:s,pathTo:r,fill:c,strokeWidth:o,delay:d};return!S||x.globals.resized||x.globals.dataChanged?!x.globals.resized&&x.globals.dataChanged||A.showDelayedElements():A.animatePathsGradually(E(E({},Y),{},{speed:u})),x.globals.dataChanged&&L&&C&&A.animatePathsGradually(E(E({},Y),{},{speed:p})),I}},{key:"drawPattern",value:function(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"#a8a8a8",s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;return this.w.globals.dom.Paper.pattern(t,i,function(r){e==="horizontalLines"?r.line(0,0,i,0).stroke({color:a,width:s+1}):e==="verticalLines"?r.line(0,0,0,t).stroke({color:a,width:s+1}):e==="slantedLines"?r.line(0,0,t,i).stroke({color:a,width:s}):e==="squares"?r.rect(t,i).fill("none").stroke({color:a,width:s}):e==="circles"&&r.circle(t).fill("none").stroke({color:a,width:s})})}},{key:"drawGradient",value:function(e,t,i,a,s){var r,n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:null,o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null,h=arguments.length>7&&arguments[7]!==void 0?arguments[7]:null,c=arguments.length>8&&arguments[8]!==void 0?arguments[8]:0,d=this.w;t.length<9&&t.indexOf("#")===0&&(t=P.hexToRgba(t,a)),i.length<9&&i.indexOf("#")===0&&(i=P.hexToRgba(i,s));var u=0,p=1,f=1,b=null;o!==null&&(u=o[0]!==void 0?o[0]/100:0,p=o[1]!==void 0?o[1]/100:1,f=o[2]!==void 0?o[2]/100:1,b=o[3]!==void 0?o[3]/100:null);var v=!(d.config.chart.type!=="donut"&&d.config.chart.type!=="pie"&&d.config.chart.type!=="polarArea"&&d.config.chart.type!=="bubble");if(r=h===null||h.length===0?d.globals.dom.Paper.gradient(v?"radial":"linear",function(l){l.at(u,t,a),l.at(p,i,s),l.at(f,i,s),b!==null&&l.at(b,t,a)}):d.globals.dom.Paper.gradient(v?"radial":"linear",function(l){(Array.isArray(h[c])?h[c]:h).forEach(function(g){l.at(g.offset/100,g.color,g.opacity)})}),v){var w=d.globals.gridWidth/2,k=d.globals.gridHeight/2;d.config.chart.type!=="bubble"?r.attr({gradientUnits:"userSpaceOnUse",cx:w,cy:k,r:n}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else e==="vertical"?r.from(0,0).to(0,1):e==="diagonal"?r.from(0,0).to(1,1):e==="horizontal"?r.from(0,1).to(1,1):e==="diagonal2"&&r.from(1,0).to(0,1);return r}},{key:"getTextBasedOnMaxWidth",value:function(e){var t=e.text,i=e.maxWidth,a=e.fontSize,s=e.fontFamily,r=this.getTextRects(t,a,s),n=r.width/t.length,o=Math.floor(i/n);return i-1){var o=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var h=i.globals.dom.Paper.select(".apexcharts-series path").members,c=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,d=function(f){Array.prototype.forEach.call(f,function(b){b.node.setAttribute("selected","false"),a.getDefaultFilter(b,s)})};d(h),d(c)}e.node.setAttribute("selected","true"),n="true",i.globals.selectedDataPoints[s]===void 0&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if(n==="true"){var u=i.config.states.active.filter;if(u!=="none")a.applyFilter(e,s,u.type,u.value);else if(i.config.states.hover.filter!=="none"&&!i.globals.isTouchDevice){var p=i.config.states.hover.filter;a.applyFilter(e,s,p.type,p.value)}}else i.config.states.active.filter.type!=="none"&&(i.config.states.hover.filter.type==="none"||i.globals.isTouchDevice?a.getDefaultFilter(e,s):(p=i.config.states.hover.filter,a.applyFilter(e,s,p.type,p.value)));typeof i.config.chart.events.dataPointSelection=="function"&&i.config.chart.events.dataPointSelection(t,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),t&&this.ctx.events.fireEvent("dataPointSelection",[t,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(e){var t={};return e&&typeof e.getBBox=="function"&&(t=e.getBBox()),{x:t.x+t.width/2,y:t.y+t.height/2}}},{key:"getTextRects",value:function(e,t,i,a){var s=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],r=this.w,n=this.drawText({x:-200,y:-200,text:e,textAnchor:"start",fontSize:t,fontFamily:i,foreColor:"#fff",opacity:0});a&&n.attr("transform",a),r.globals.dom.Paper.add(n);var o=n.bbox();return s||(o=n.node.getBoundingClientRect()),n.remove(),{width:o.width,height:o.height}}},{key:"placeTextWithEllipsis",value:function(e,t,i){if(typeof e.getComputedTextLength=="function"&&(e.textContent=t,t.length>0&&e.getComputedTextLength()>=i/1.1)){for(var a=t.length-3;a>0;a-=3)if(e.getSubStringLength(0,a)<=i/1.1)return void(e.textContent=t.substring(0,a)+"...");e.textContent="."}}}],[{key:"setAttrs",value:function(e,t){for(var i in t)t.hasOwnProperty(i)&&e.setAttribute(i,t[i])}}]),m}(),G=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"getStackedSeriesTotals",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=this.w,i=[];if(t.globals.series.length===0)return i;for(var a=0;a0&&arguments[0]!==void 0?arguments[0]:null;return e===null?this.w.config.series.reduce(function(t,i){return t+i},0):this.w.globals.series[e].reduce(function(t,i){return t+i},0)}},{key:"isSeriesNull",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return(e===null?this.w.config.series.filter(function(t){return t!==null}):this.w.config.series[e].data.filter(function(t){return t!==null})).length===0}},{key:"seriesHaveSameValues",value:function(e){return this.w.globals.series[e].every(function(t,i,a){return t===a[0]})}},{key:"getCategoryLabels",value:function(e){var t=this.w,i=e.slice();return t.config.xaxis.convertedCatToNumeric&&(i=e.map(function(a,s){return t.config.xaxis.labels.formatter(a-t.globals.minX+1)})),i}},{key:"getLargestSeries",value:function(){var e=this.w;e.globals.maxValsInArrayIndex=e.globals.series.map(function(t){return t.length}).indexOf(Math.max.apply(Math,e.globals.series.map(function(t){return t.length})))}},{key:"getLargestMarkerSize",value:function(){var e=this.w,t=0;return e.globals.markers.size.forEach(function(i){t=Math.max(t,i)}),e.config.markers.discrete&&e.config.markers.discrete.length&&e.config.markers.discrete.forEach(function(i){t=Math.max(t,i.size)}),t>0&&(t+=e.config.markers.hover.sizeOffset+1),e.globals.markers.largestSize=t,t}},{key:"getSeriesTotals",value:function(){var e=this.w;e.globals.seriesTotals=e.globals.series.map(function(t,i){var a=0;if(Array.isArray(t))for(var s=0;se&&i.globals.seriesX[s][n]0&&(t=!0),{comboBarCount:i,comboCharts:t}}},{key:"extendArrayProps",value:function(e,t,i){return t.yaxis&&(t=e.extendYAxis(t,i)),t.annotations&&(t.annotations.yaxis&&(t=e.extendYAxisAnnotations(t)),t.annotations.xaxis&&(t=e.extendXAxisAnnotations(t)),t.annotations.points&&(t=e.extendPointAnnotations(t))),t}}]),m}(),ye=function(){function m(e){F(this,m),this.w=e.w,this.annoCtx=e}return R(m,[{key:"setOrientations",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=this.w;if(e.label.orientation==="vertical"){var a=t!==null?t:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(s!==null){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4),e.label.position==="top"?s.setAttribute("y",parseFloat(s.getAttribute("y"))+r.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-r.width);var n=this.annoCtx.graphics.rotateAroundCenter(s),o=n.x,h=n.y;s.setAttribute("transform","rotate(-90 ".concat(o," ").concat(h,")"))}}}},{key:"addBackgroundToAnno",value:function(e,t){var i=this.w;if(!e||t.label.text===void 0||t.label.text!==void 0&&!String(t.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=e.getBoundingClientRect(),r=t.label.style.padding.left,n=t.label.style.padding.right,o=t.label.style.padding.top,h=t.label.style.padding.bottom;t.label.orientation==="vertical"&&(o=t.label.style.padding.left,h=t.label.style.padding.right,r=t.label.style.padding.top,n=t.label.style.padding.bottom);var c=s.left-a.left-r,d=s.top-a.top-o,u=this.annoCtx.graphics.drawRect(c-i.globals.barPadForNumericAxis,d,s.width+r+n,s.height+o+h,t.label.borderRadius,t.label.style.background,1,t.label.borderWidth,t.label.borderColor,0);return t.id&&u.node.classList.add(t.id),u}},{key:"annotationsBackground",value:function(){var e=this,t=this.w,i=function(a,s,r){var n=t.globals.dom.baseEl.querySelector(".apexcharts-".concat(r,"-annotations .apexcharts-").concat(r,"-annotation-label[rel='").concat(s,"']"));if(n){var o=n.parentNode,h=e.addBackgroundToAnno(n,a);h&&(o.insertBefore(h.node,n),a.label.mouseEnter&&h.node.addEventListener("mouseenter",a.label.mouseEnter.bind(e,a)),a.label.mouseLeave&&h.node.addEventListener("mouseleave",a.label.mouseLeave.bind(e,a)),a.label.click&&h.node.addEventListener("click",a.label.click.bind(e,a)))}};t.config.annotations.xaxis.map(function(a,s){i(a,s,"xaxis")}),t.config.annotations.yaxis.map(function(a,s){i(a,s,"yaxis")}),t.config.annotations.points.map(function(a,s){i(a,s,"point")})}},{key:"getY1Y2",value:function(e,t){var i,a=e==="y1"?t.y:t.y2,s=this.w;if(this.annoCtx.invertAxis){var r=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(r=s.globals.categoryLabels.indexOf(a));var n=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(r+1)+")");n&&(i=parseFloat(n.getAttribute("y")))}else{var o;s.config.yaxis[t.yAxisIndex].logarithmic?o=(a=new G(this.annoCtx.ctx).getLogVal(a,t.yAxisIndex))/s.globals.yLogRatio[t.yAxisIndex]:o=(a-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight),i=s.globals.gridHeight-o,!t.marker||t.y!==void 0&&t.y!==null||(i=0),s.config.yaxis[t.yAxisIndex]&&s.config.yaxis[t.yAxisIndex].reversed&&(i=o)}return typeof a=="string"&&a.indexOf("px")>-1&&(i=parseFloat(a)),i}},{key:"getX1X2",value:function(e,t){var i=this.w,a=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,s=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,r=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,n=(t.x-a)/(r/i.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(n=(s-t.x)/(r/i.globals.gridWidth)),i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(n=this.getStringX(t.x));var o=(t.x2-a)/(r/i.globals.gridWidth);return this.annoCtx.inversedReversedAxis&&(o=(s-t.x2)/(r/i.globals.gridWidth)),i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(o=this.getStringX(t.x2)),t.x!==void 0&&t.x!==null||!t.marker||(n=i.globals.gridWidth),e==="x1"&&typeof t.x=="string"&&t.x.indexOf("px")>-1&&(n=parseFloat(t.x)),e==="x2"&&typeof t.x2=="string"&&t.x2.indexOf("px")>-1&&(o=parseFloat(t.x2)),e==="x1"?n:o}},{key:"getStringX",value:function(e){var t=this.w,i=e;t.config.xaxis.convertedCatToNumeric&&t.globals.categoryLabels.length&&(e=t.globals.categoryLabels.indexOf(e)+1);var a=t.globals.labels.indexOf(e),s=t.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),m}(),xt=function(){function m(e){F(this,m),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new ye(this.annoCtx)}return R(m,[{key:"addXaxisAnnotation",value:function(e,t,i){var a,s=this.w,r=this.helpers.getX1X2("x1",e),n=e.label.text,o=e.strokeDashArray;if(P.isNumber(r)){if(e.x2===null||e.x2===void 0){var h=this.annoCtx.graphics.drawLine(r+e.offsetX,0+e.offsetY,r+e.offsetX,s.globals.gridHeight+e.offsetY,e.borderColor,o,e.borderWidth);t.appendChild(h.node),e.id&&h.node.classList.add(e.id)}else{if((a=this.helpers.getX1X2("x2",e))n){var c=n;n=a,a=c}var d=this.annoCtx.graphics.drawRect(0+e.offsetX,a+e.offsetY,this._getYAxisAnnotationWidth(e),n-a,0,e.fillColor,e.opacity,1,e.borderColor,r);d.node.classList.add("apexcharts-annotation-rect"),d.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),t.appendChild(d.node),e.id&&d.node.classList.add(e.id)}var u=e.label.position==="right"?s.globals.gridWidth:e.label.position==="center"?s.globals.gridWidth/2:0,p=this.annoCtx.graphics.drawText({x:u+e.label.offsetX,y:(a??n)+e.label.offsetY-3,text:o,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(e.label.style.cssClass," ").concat(e.id?e.id:"")});p.attr({rel:i}),t.appendChild(p.node)}},{key:"_getYAxisAnnotationWidth",value:function(e){var t=this.w;return t.globals.gridWidth,(e.width.indexOf("%")>-1?t.globals.gridWidth*parseInt(e.width,10)/100:parseInt(e.width,10))+e.offsetX}},{key:"drawYAxisAnnotations",value:function(){var e=this,t=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return t.config.annotations.yaxis.map(function(a,s){e.addYaxisAnnotation(a,i.node,s)}),i}}]),m}(),mt=function(){function m(e){F(this,m),this.w=e.w,this.annoCtx=e,this.helpers=new ye(this.annoCtx)}return R(m,[{key:"addPointAnnotation",value:function(e,t,i){this.w;var a=this.helpers.getX1X2("x1",e),s=this.helpers.getY1Y2("y1",e);if(P.isNumber(a)){var r={pSize:e.marker.size,pointStrokeWidth:e.marker.strokeWidth,pointFillColor:e.marker.fillColor,pointStrokeColor:e.marker.strokeColor,shape:e.marker.shape,pRadius:e.marker.radius,class:"apexcharts-point-annotation-marker ".concat(e.marker.cssClass," ").concat(e.id?e.id:"")},n=this.annoCtx.graphics.drawMarker(a+e.marker.offsetX,s+e.marker.offsetY,r);t.appendChild(n.node);var o=e.label.text?e.label.text:"",h=this.annoCtx.graphics.drawText({x:a+e.label.offsetX,y:s+e.label.offsetY-e.marker.size-parseFloat(e.label.style.fontSize)/1.6,text:o,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(e.label.style.cssClass," ").concat(e.id?e.id:"")});if(h.attr({rel:i}),t.appendChild(h.node),e.customSVG.SVG){var c=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+e.customSVG.cssClass});c.attr({transform:"translate(".concat(a+e.customSVG.offsetX,", ").concat(s+e.customSVG.offsetY,")")}),c.node.innerHTML=e.customSVG.SVG,t.appendChild(c.node)}if(e.image.path){var d=e.image.width?e.image.width:20,u=e.image.height?e.image.height:20;n=this.annoCtx.addImage({x:a+e.image.offsetX-d/2,y:s+e.image.offsetY-u/2,width:d,height:u,path:e.image.path,appendTo:".apexcharts-point-annotations"})}e.mouseEnter&&n.node.addEventListener("mouseenter",e.mouseEnter.bind(this,e)),e.mouseLeave&&n.node.addEventListener("mouseleave",e.mouseLeave.bind(this,e)),e.click&&n.node.addEventListener("click",e.click.bind(this,e))}}},{key:"drawPointAnnotations",value:function(){var e=this,t=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return t.config.annotations.points.map(function(a,s){e.addPointAnnotation(a,i.node,s)}),i}}]),m}(),Ue={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},ie=function(){function m(){F(this,m),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return R(m,[{key:"init",value:function(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[Ue],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",dateFormatter:function(e){return new Date(e).toDateString()}},png:{filename:void 0},svg:{filename:void 0}},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,dataLabels:{format:"scale"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(e){return e}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(e){return e+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(e){return e.globals.seriesTotals.reduce(function(t,i){return t+i},0)/e.globals.series.length+"%"}}}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(e){return e}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(e){return e}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(e){return e.globals.seriesTotals.reduce(function(t,i){return t+i},0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(e){return e!==null?e:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:2},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",width:8,height:8,radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.5}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(e){return e?e+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),m}(),vt=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.graphics=new z(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new ye(this),this.xAxisAnnotations=new xt(this),this.yAxisAnnotations=new bt(this),this.pointsAnnotations=new mt(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return R(m,[{key:"drawAxesAnnotations",value:function(){var e=this.w;if(e.globals.axisCharts){for(var t=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=e.config.chart.animations.enabled,r=[t,i,a],n=[i.node,t.node,a.node],o=0;o<3;o++)e.globals.dom.elGraphical.add(r[o]),!s||e.globals.resized||e.globals.dataChanged||e.config.chart.type!=="scatter"&&e.config.chart.type!=="bubble"&&e.globals.dataPoints>1&&n[o].classList.add("apexcharts-element-hidden"),e.globals.delayedElements.push({el:n[o],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var e=this;this.w.config.annotations.images.map(function(t,i){e.addImage(t,i)})}},{key:"drawTextAnnos",value:function(){var e=this;this.w.config.annotations.texts.map(function(t,i){e.addText(t,i)})}},{key:"addXaxisAnnotation",value:function(e,t,i){this.xAxisAnnotations.addXaxisAnnotation(e,t,i)}},{key:"addYaxisAnnotation",value:function(e,t,i){this.yAxisAnnotations.addYaxisAnnotation(e,t,i)}},{key:"addPointAnnotation",value:function(e,t,i){this.pointsAnnotations.addPointAnnotation(e,t,i)}},{key:"addText",value:function(e,t){var i=e.x,a=e.y,s=e.text,r=e.textAnchor,n=e.foreColor,o=e.fontSize,h=e.fontFamily,c=e.fontWeight,d=e.cssClass,u=e.backgroundColor,p=e.borderWidth,f=e.strokeDashArray,b=e.borderRadius,v=e.borderColor,w=e.appendTo,k=w===void 0?".apexcharts-annotations":w,l=e.paddingLeft,g=l===void 0?4:l,x=e.paddingRight,y=x===void 0?4:x,A=e.paddingBottom,S=A===void 0?2:A,L=e.paddingTop,C=L===void 0?2:L,M=this.w,T=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:o||"12px",fontWeight:c||"regular",fontFamily:h||M.config.chart.fontFamily,foreColor:n||M.config.chart.foreColor,cssClass:d}),I=M.globals.dom.baseEl.querySelector(k);I&&I.appendChild(T.node);var X=T.bbox();if(s){var Y=this.graphics.drawRect(X.x-g,X.y-C,X.width+g+y,X.height+S+C,b,u||"transparent",1,p,v,f);I.insertBefore(Y.node,T.node)}}},{key:"addImage",value:function(e,t){var i=this.w,a=e.path,s=e.x,r=s===void 0?0:s,n=e.y,o=n===void 0?0:n,h=e.width,c=h===void 0?20:h,d=e.height,u=d===void 0?20:d,p=e.appendTo,f=p===void 0?".apexcharts-annotations":p,b=i.globals.dom.Paper.image(a);b.size(c,u).move(r,o);var v=i.globals.dom.baseEl.querySelector(f);return v&&v.appendChild(b.node),b}},{key:"addXaxisAnnotationExternal",value:function(e,t,i){return this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(e,t,i){return this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(e,t,i){return this.invertAxis===void 0&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(e){var t=e.params,i=e.pushToMemory,a=e.context,s=e.type,r=e.contextMethod,n=a,o=n.w,h=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),c=h.childNodes.length+1,d=new ie,u=Object.assign({},s==="xaxis"?d.xAxisAnnotation:s==="yaxis"?d.yAxisAnnotation:d.pointAnnotation),p=P.extend(u,t);switch(s){case"xaxis":this.addXaxisAnnotation(p,h,c);break;case"yaxis":this.addYaxisAnnotation(p,h,c);break;case"point":this.addPointAnnotation(p,h,c)}var f=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(c,"']")),b=this.helpers.addBackgroundToAnno(f,p);return b&&h.insertBefore(b.node,f),i&&o.globals.memory.methodsToExec.push({context:n,id:p.id?p.id:P.randomId(),method:r,label:"addAnnotation",params:t}),a}},{key:"clearAnnotations",value:function(e){var t=e.w,i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");t.globals.memory.methodsToExec.map(function(a,s){a.label!=="addText"&&a.label!=="addAnnotation"||t.globals.memory.methodsToExec.splice(s,1)}),i=P.listToArray(i),Array.prototype.forEach.call(i,function(a){for(;a.firstChild;)a.removeChild(a.firstChild)})}},{key:"removeAnnotation",value:function(e,t){var i=e.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(t));a&&(i.globals.memory.methodsToExec.map(function(s,r){s.id===t&&i.globals.memory.methodsToExec.splice(r,1)}),Array.prototype.forEach.call(a,function(s){s.parentElement.removeChild(s)}))}}]),m}(),j=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return R(m,[{key:"isValidDate",value:function(e){return!isNaN(this.parseDate(e))}},{key:"getTimeStamp",value:function(e){return Date.parse(e)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(e).toISOString().substr(0,25)).getTime():new Date(e).getTime():e}},{key:"getDate",value:function(e){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(e).toUTCString()):new Date(e)}},{key:"parseDate",value:function(e){var t=Date.parse(e);if(!isNaN(t))return this.getTimeStamp(e);var i=Date.parse(e.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getTimeStamp(i)}},{key:"parseDateWithTimezone",value:function(e){return Date.parse(e.replace(/-/g,"/").replace(/[a-z]+/gi," "))}},{key:"formatDate",value:function(e,t){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=["\0"].concat(Z(i.months)),r=[""].concat(Z(i.shortMonths)),n=[""].concat(Z(i.days)),o=[""].concat(Z(i.shortDays));function h(S,L){var C=S+"";for(L=L||2;C.length12?p-12:p===0?12:p;t=(t=(t=(t=t.replace(/(^|[^\\])HH+/g,"$1"+h(p))).replace(/(^|[^\\])H/g,"$1"+p)).replace(/(^|[^\\])hh+/g,"$1"+h(f))).replace(/(^|[^\\])h/g,"$1"+f);var b=a?e.getUTCMinutes():e.getMinutes();t=(t=t.replace(/(^|[^\\])mm+/g,"$1"+h(b))).replace(/(^|[^\\])m/g,"$1"+b);var v=a?e.getUTCSeconds():e.getSeconds();t=(t=t.replace(/(^|[^\\])ss+/g,"$1"+h(v))).replace(/(^|[^\\])s/g,"$1"+v);var w=a?e.getUTCMilliseconds():e.getMilliseconds();t=t.replace(/(^|[^\\])fff+/g,"$1"+h(w,3)),w=Math.round(w/10),t=t.replace(/(^|[^\\])ff/g,"$1"+h(w)),w=Math.round(w/10);var k=p<12?"AM":"PM";t=(t=(t=t.replace(/(^|[^\\])f/g,"$1"+w)).replace(/(^|[^\\])TT+/g,"$1"+k)).replace(/(^|[^\\])T/g,"$1"+k.charAt(0));var l=k.toLowerCase();t=(t=t.replace(/(^|[^\\])tt+/g,"$1"+l)).replace(/(^|[^\\])t/g,"$1"+l.charAt(0));var g=-e.getTimezoneOffset(),x=a||!g?"Z":g>0?"+":"-";if(!a){var y=(g=Math.abs(g))%60;x+=h(Math.floor(g/60))+":"+h(y)}t=t.replace(/(^|[^\\])K/g,"$1"+x);var A=(a?e.getUTCDay():e.getDay())+1;return t=(t=(t=(t=(t=t.replace(new RegExp(n[0],"g"),n[A])).replace(new RegExp(o[0],"g"),o[A])).replace(new RegExp(s[0],"g"),s[d])).replace(new RegExp(r[0],"g"),r[d])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(e,t,i){var a=this.w;a.config.xaxis.min!==void 0&&(e=a.config.xaxis.min),a.config.xaxis.max!==void 0&&(t=a.config.xaxis.max);var s=this.getDate(e),r=this.getDate(t),n=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),o=this.formatDate(r,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(n[6],10),maxMillisecond:parseInt(o[6],10),minSecond:parseInt(n[5],10),maxSecond:parseInt(o[5],10),minMinute:parseInt(n[4],10),maxMinute:parseInt(o[4],10),minHour:parseInt(n[3],10),maxHour:parseInt(o[3],10),minDate:parseInt(n[2],10),maxDate:parseInt(o[2],10),minMonth:parseInt(n[1],10)-1,maxMonth:parseInt(o[1],10)-1,minYear:parseInt(n[0],10),maxYear:parseInt(o[0],10)}}},{key:"isLeapYear",value:function(e){return e%4==0&&e%100!=0||e%400==0}},{key:"calculcateLastDaysOfMonth",value:function(e,t,i){return this.determineDaysOfMonths(e,t)-i}},{key:"determineDaysOfYear",value:function(e){var t=365;return this.isLeapYear(e)&&(t=366),t}},{key:"determineRemainingDaysOfYear",value:function(e,t,i){var a=this.daysCntOfYear[t]+i;return t>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(e,t){var i=30;switch(e=P.monthMod(e),!0){case this.months30.indexOf(e)>-1:e===2&&(i=this.isLeapYear(t)?29:28);break;case this.months31.indexOf(e)>-1:default:i=31}return i}}]),m}(),pe=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.tooltipKeyFormat="dd MMM"}return R(m,[{key:"xLabelFormat",value:function(e,t,i,a){var s=this.w;if(s.config.xaxis.type==="datetime"&&s.config.xaxis.labels.formatter===void 0&&s.config.tooltip.x.formatter===void 0){var r=new j(this.ctx);return r.formatDate(r.getDate(t),s.config.tooltip.x.format)}return e(t,i,a)}},{key:"defaultGeneralFormatter",value:function(e){return Array.isArray(e)?e.map(function(t){return t}):e}},{key:"defaultYFormatter",value:function(e,t,i){var a=this.w;return P.isNumber(e)&&(e=a.globals.yValueDecimal!==0?e.toFixed(t.decimalsInFloat!==void 0?t.decimalsInFloat:a.globals.yValueDecimal):a.globals.maxYArr[i]-a.globals.minYArr[i]<5?e.toFixed(1):e.toFixed(0)),e}},{key:"setLabelFormatters",value:function(){var e=this,t=this.w;return t.globals.xaxisTooltipFormatter=function(i){return e.defaultGeneralFormatter(i)},t.globals.ttKeyFormatter=function(i){return e.defaultGeneralFormatter(i)},t.globals.ttZFormatter=function(i){return i},t.globals.legendFormatter=function(i){return e.defaultGeneralFormatter(i)},t.config.xaxis.labels.formatter!==void 0?t.globals.xLabelFormatter=t.config.xaxis.labels.formatter:t.globals.xLabelFormatter=function(i){if(P.isNumber(i)){if(!t.config.xaxis.convertedCatToNumeric&&t.config.xaxis.type==="numeric"){if(P.isNumber(t.config.xaxis.decimalsInFloat))return i.toFixed(t.config.xaxis.decimalsInFloat);var a=t.globals.maxX-t.globals.minX;return a>0&&a<100?i.toFixed(1):i.toFixed(0)}return t.globals.isBarHorizontal&&t.globals.maxY-t.globals.minYArr<4?i.toFixed(1):i.toFixed(0)}return i},typeof t.config.tooltip.x.formatter=="function"?t.globals.ttKeyFormatter=t.config.tooltip.x.formatter:t.globals.ttKeyFormatter=t.globals.xLabelFormatter,typeof t.config.xaxis.tooltip.formatter=="function"&&(t.globals.xaxisTooltipFormatter=t.config.xaxis.tooltip.formatter),(Array.isArray(t.config.tooltip.y)||t.config.tooltip.y.formatter!==void 0)&&(t.globals.ttVal=t.config.tooltip.y),t.config.tooltip.z.formatter!==void 0&&(t.globals.ttZFormatter=t.config.tooltip.z.formatter),t.config.legend.formatter!==void 0&&(t.globals.legendFormatter=t.config.legend.formatter),t.config.yaxis.forEach(function(i,a){i.labels.formatter!==void 0?t.globals.yLabelFormatters[a]=i.labels.formatter:t.globals.yLabelFormatters[a]=function(s){return t.globals.xyCharts?Array.isArray(s)?s.map(function(r){return e.defaultYFormatter(r,i,a)}):e.defaultYFormatter(s,i,a):s}}),t.globals}},{key:"heatmapLabelFormatters",value:function(){var e=this.w;if(e.config.chart.type==="heatmap"){e.globals.yAxisScale[0].result=e.globals.seriesNames.slice();var t=e.globals.seriesNames.reduce(function(i,a){return i.length>a.length?i:a},0);e.globals.yAxisScale[0].niceMax=t,e.globals.yAxisScale[0].niceMin=t}}}]),m}(),Ae=function(m){var e,t=m.isTimeline,i=m.ctx,a=m.seriesIndex,s=m.dataPointIndex,r=m.y1,n=m.y2,o=m.w,h=o.globals.seriesRangeStart[a][s],c=o.globals.seriesRangeEnd[a][s],d=o.globals.labels[s],u=o.config.series[a].name?o.config.series[a].name:"",p=o.globals.ttKeyFormatter,f=o.config.tooltip.y.title.formatter,b={w:o,seriesIndex:a,dataPointIndex:s,start:h,end:c};typeof f=="function"&&(u=f(u,b)),(e=o.config.series[a].data[s])!==null&&e!==void 0&&e.x&&(d=o.config.series[a].data[s].x),t||o.config.xaxis.type==="datetime"&&(d=new pe(i).xLabelFormat(o.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new j(i).formatDate,w:o})),typeof p=="function"&&(d=p(d,b)),Number.isFinite(r)&&Number.isFinite(n)&&(h=r,c=n);var v="",w="",k=o.globals.colors[a];if(o.config.tooltip.x.formatter===void 0)if(o.config.xaxis.type==="datetime"){var l=new j(i);v=l.formatDate(l.getDate(h),o.config.tooltip.x.format),w=l.formatDate(l.getDate(c),o.config.tooltip.x.format)}else v=h,w=c;else v=o.config.tooltip.x.formatter(h),w=o.config.tooltip.x.formatter(c);return{start:h,end:c,startVal:v,endVal:w,ylabel:d,color:k,seriesName:u}},Se=function(m){var e=m.color,t=m.seriesName,i=m.ylabel,a=m.start,s=m.end,r=m.seriesIndex,n=m.dataPointIndex,o=m.ctx.tooltip.tooltipLabels.getFormatters(r);a=o.yLbFormatter(a),s=o.yLbFormatter(s);var h=o.yLbFormatter(m.w.globals.series[r][n]),c=` `.concat(a,` - `).concat(s,` - `);return'
'+(t||"")+'
'+i+" "+(v.w.globals.comboCharts?v.w.config.series[n].type==="rangeArea"||v.w.config.series[n].type==="rangeBar"?c:"".concat(h,""):c)+"
"},oe=function(){function v(e){E(this,v),this.opts=e}return Y(v,[{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(e){return this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0,P.extend(e,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"round"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"candlestick",value:function(){var e=this;return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var i=t.seriesIndex,a=t.dataPointIndex,s=t.w;return e._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var e=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var i=t.seriesIndex,a=t.dataPointIndex,s=t.w;return e._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:5,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(e,t){t.ctx;var i=t.seriesIndex,a=t.dataPointIndex,s=t.w,n=function(){var r=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-r};return s.globals.comboCharts?s.config.series[i].type==="rangeBar"||s.config.series[i].type==="rangeArea"?n():e:n()},background:{enabled:!1},style:{colors:["#fff"]}},tooltip:{shared:!1,followCursor:!0,custom:function(e){return e.w.config.plotOptions&&e.w.config.plotOptions.bar&&e.w.config.plotOptions.bar.horizontal?function(t){var i=ye(t),a=i.color,s=i.seriesName,n=i.ylabel,r=i.startVal,o=i.endVal;return we(F(F({},t),{},{color:a,seriesName:s,ylabel:n,start:r,end:o}))}(e):function(t){var i=ye(t),a=i.color,s=i.seriesName,n=i.ylabel,r=i.start,o=i.end;return we(F(F({},t),{},{color:a,seriesName:s,ylabel:n,start:r,end:o}))}(e)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(e){return function(t){var i=ye(t),a=i.color,s=i.seriesName,n=i.ylabel,r=i.start,o=i.end;return we(F(F({},t),{},{color:a,seriesName:s,ylabel:n,start:r,end:o}))}(e)}}}}},{key:"brush",value:function(e){return P.extend(e,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(e){e.dataLabels=e.dataLabels||{},e.dataLabels.formatter=e.dataLabels.formatter||void 0;var t=e.dataLabels.formatter;return e.yaxis.forEach(function(i,a){e.yaxis[a].min=0,e.yaxis[a].max=100}),e.chart.type==="bar"&&(e.dataLabels.formatter=t||function(i){return typeof i=="number"&&i?i.toFixed(0)+"%":i}),e}},{key:"convertCatToNumeric",value:function(e){return e.xaxis.convertedCatToNumeric=!0,e}},{key:"convertCatToNumericXaxis",value:function(e,t,i){e.xaxis.type="numeric",e.xaxis.labels=e.xaxis.labels||{},e.xaxis.labels.formatter=e.xaxis.labels.formatter||function(n){return P.isNumber(n)?Math.floor(n):n};var a=e.xaxis.labels.formatter,s=e.xaxis.categories&&e.xaxis.categories.length?e.xaxis.categories:e.labels;return i&&i.length&&(s=i.map(function(n){return Array.isArray(n)?n:String(n)})),s&&s.length&&(e.xaxis.labels.formatter=function(n){return P.isNumber(n)?a(s[Math.floor(n)-1]):a(n)}),e.xaxis.categories=[],e.labels=[],e.xaxis.tickAmount=e.xaxis.tickAmount||"dataPoints",e}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return this.opts.yaxis[0].tickAmount=this.opts.yaxis[0].tickAmount?this.opts.yaxis[0].tickAmount:6,{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(e){return e},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:"_getBoxTooltip",value:function(e,t,i,a,s){var n=e.globals.seriesCandleO[t][i],r=e.globals.seriesCandleH[t][i],o=e.globals.seriesCandleM[t][i],h=e.globals.seriesCandleL[t][i],c=e.globals.seriesCandleC[t][i];return e.config.series[t].type&&e.config.series[t].type!==s?`
+ `);return'
'+(t||"")+'
'+i+": "+(m.w.globals.comboCharts?m.w.config.series[r].type==="rangeArea"||m.w.config.series[r].type==="rangeBar"?c:"".concat(h,""):c)+"
"},he=function(){function m(e){F(this,m),this.opts=e}return R(m,[{key:"hideYAxis",value:function(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}},{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(e){return this.hideYAxis(),P.extend(e,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"round"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"funnel",value:function(){return this.hideYAxis(),E(E({},this.bar()),{},{chart:{animations:{easing:"linear",speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:"around",borderRadius:0,dataLabels:{position:"center"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}},{key:"candlestick",value:function(){var e=this;return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var i=t.seriesIndex,a=t.dataPointIndex,s=t.w;return e._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var e=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var i=t.seriesIndex,a=t.dataPointIndex,s=t.w;return e._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:5,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(e,t){t.ctx;var i=t.seriesIndex,a=t.dataPointIndex,s=t.w,r=function(){var n=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-n};return s.globals.comboCharts?s.config.series[i].type==="rangeBar"||s.config.series[i].type==="rangeArea"?r():e:r()},background:{enabled:!1},style:{colors:["#fff"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom:function(e){return e.w.config.plotOptions&&e.w.config.plotOptions.bar&&e.w.config.plotOptions.bar.horizontal?function(t){var i=Ae(E(E({},t),{},{isTimeline:!0})),a=i.color,s=i.seriesName,r=i.ylabel,n=i.startVal,o=i.endVal;return Se(E(E({},t),{},{color:a,seriesName:s,ylabel:r,start:n,end:o}))}(e):function(t){var i=Ae(t),a=i.color,s=i.seriesName,r=i.ylabel,n=i.start,o=i.end;return Se(E(E({},t),{},{color:a,seriesName:s,ylabel:r,start:n,end:o}))}(e)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"dumbbell",value:function(e){var t,i;return(t=e.plotOptions.bar)!==null&&t!==void 0&&t.barHeight||(e.plotOptions.bar.barHeight=2),(i=e.plotOptions.bar)!==null&&i!==void 0&&i.columnWidth||(e.plotOptions.bar.columnWidth=2),e}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(e){return function(t){var i=Ae(t),a=i.color,s=i.seriesName,r=i.ylabel,n=i.start,o=i.end;return Se(E(E({},t),{},{color:a,seriesName:s,ylabel:r,start:n,end:o}))}(e)}}}}},{key:"brush",value:function(e){return P.extend(e,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(e){e.dataLabels=e.dataLabels||{},e.dataLabels.formatter=e.dataLabels.formatter||void 0;var t=e.dataLabels.formatter;return e.yaxis.forEach(function(i,a){e.yaxis[a].min=0,e.yaxis[a].max=100}),e.chart.type==="bar"&&(e.dataLabels.formatter=t||function(i){return typeof i=="number"&&i?i.toFixed(0)+"%":i}),e}},{key:"stackedBars",value:function(){var e=this.bar();return E(E({},e),{},{plotOptions:E(E({},e.plotOptions),{},{bar:E(E({},e.plotOptions.bar),{},{borderRadiusApplication:"end",borderRadiusWhenStacked:"last"})})})}},{key:"convertCatToNumeric",value:function(e){return e.xaxis.convertedCatToNumeric=!0,e}},{key:"convertCatToNumericXaxis",value:function(e,t,i){e.xaxis.type="numeric",e.xaxis.labels=e.xaxis.labels||{},e.xaxis.labels.formatter=e.xaxis.labels.formatter||function(r){return P.isNumber(r)?Math.floor(r):r};var a=e.xaxis.labels.formatter,s=e.xaxis.categories&&e.xaxis.categories.length?e.xaxis.categories:e.labels;return i&&i.length&&(s=i.map(function(r){return Array.isArray(r)?r:String(r)})),s&&s.length&&(e.xaxis.labels.formatter=function(r){return P.isNumber(r)?a(s[Math.floor(r)-1]):a(r)}),e.xaxis.categories=[],e.labels=[],e.xaxis.tickAmount=e.xaxis.tickAmount||"dataPoints",e}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return this.opts.yaxis[0].tickAmount=this.opts.yaxis[0].tickAmount?this.opts.yaxis[0].tickAmount:6,{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(e){return e},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:"_getBoxTooltip",value:function(e,t,i,a,s){var r=e.globals.seriesCandleO[t][i],n=e.globals.seriesCandleH[t][i],o=e.globals.seriesCandleM[t][i],h=e.globals.seriesCandleL[t][i],c=e.globals.seriesCandleC[t][i];return e.config.series[t].type&&e.config.series[t].type!==s?`
`.concat(e.config.series[t].name?e.config.series[t].name:"series-"+(t+1),": ").concat(e.globals.series[t][i],` -
`):'
')+"
".concat(a[0],': ')+n+"
"+"
".concat(a[1],': ')+r+"
"+(o?"
".concat(a[2],': ')+o+"
":"")+"
".concat(a[3],': ')+h+"
"+"
".concat(a[4],': ')+c+"
"}}]),v}(),le=function(){function v(e){E(this,v),this.opts=e}return Y(v,[{key:"init",value:function(e){var t=e.responsiveOverride,i=this.opts,a=new Q,s=new oe(i);this.chartType=i.chart.type,this.chartType==="histogram"&&(i.chart.type="bar",i=P.extend({plotOptions:{bar:{columnWidth:"99.99%"}}},i)),i=this.extendYAxis(i),i=this.extendAnnotations(i);var n=a.init(),r={};if(i&&W(i)==="object"){var o={};o=["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","histogram","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(i.chart.type)!==-1?s[i.chart.type]():s.line(),i.chart.brush&&i.chart.brush.enabled&&(o=s.brush(o)),i.chart.stacked&&i.chart.stackType==="100%"&&(i=s.stacked100(i)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(i),i.xaxis=i.xaxis||window.Apex.xaxis||{},t||(i.xaxis.convertedCatToNumeric=!1),((i=this.checkForCatToNumericXAxis(this.chartType,o,i)).chart.sparkline&&i.chart.sparkline.enabled||window.Apex.chart&&window.Apex.chart.sparkline&&window.Apex.chart.sparkline.enabled)&&(o=s.sparkline(o)),r=P.extend(n,o)}var h=P.extend(r,window.Apex);return n=P.extend(h,i),n=this.handleUserInputErrors(n)}},{key:"checkForCatToNumericXAxis",value:function(e,t,i){var a=new oe(i),s=(e==="bar"||e==="boxPlot")&&i.plotOptions&&i.plotOptions.bar&&i.plotOptions.bar.horizontal,n=e==="pie"||e==="polarArea"||e==="donut"||e==="radar"||e==="radialBar"||e==="heatmap",r=i.xaxis.type!=="datetime"&&i.xaxis.type!=="numeric",o=i.xaxis.tickPlacement?i.xaxis.tickPlacement:t.xaxis&&t.xaxis.tickPlacement;return s||n||!r||o==="between"||(i=a.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(e,t){var i=new Q;(e.yaxis===void 0||!e.yaxis||Array.isArray(e.yaxis)&&e.yaxis.length===0)&&(e.yaxis={}),e.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(e.yaxis=P.extend(e.yaxis,window.Apex.yaxis)),e.yaxis.constructor!==Array?e.yaxis=[P.extend(i.yAxis,e.yaxis)]:e.yaxis=P.extendArray(e.yaxis,i.yAxis);var a=!1;e.yaxis.forEach(function(n){n.logarithmic&&(a=!0)});var s=e.series;return t&&!s&&(s=t.config.series),a&&s.length!==e.yaxis.length&&s.length&&(e.yaxis=s.map(function(n,r){if(n.name||(s[r].name="series-".concat(r+1)),e.yaxis[r])return e.yaxis[r].seriesName=s[r].name,e.yaxis[r];var o=P.extend(i.yAxis,e.yaxis[0]);return o.show=!1,o})),a&&s.length>1&&s.length!==e.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both."),e}},{key:"extendAnnotations",value:function(e){return e.annotations===void 0&&(e.annotations={},e.annotations.yaxis=[],e.annotations.xaxis=[],e.annotations.points=[]),e=this.extendYAxisAnnotations(e),e=this.extendXAxisAnnotations(e),e=this.extendPointAnnotations(e)}},{key:"extendYAxisAnnotations",value:function(e){var t=new Q;return e.annotations.yaxis=P.extendArray(e.annotations.yaxis!==void 0?e.annotations.yaxis:[],t.yAxisAnnotation),e}},{key:"extendXAxisAnnotations",value:function(e){var t=new Q;return e.annotations.xaxis=P.extendArray(e.annotations.xaxis!==void 0?e.annotations.xaxis:[],t.xAxisAnnotation),e}},{key:"extendPointAnnotations",value:function(e){var t=new Q;return e.annotations.points=P.extendArray(e.annotations.points!==void 0?e.annotations.points:[],t.pointAnnotation),e}},{key:"checkForDarkTheme",value:function(e){e.theme&&e.theme.mode==="dark"&&(e.tooltip||(e.tooltip={}),e.tooltip.theme!=="light"&&(e.tooltip.theme="dark"),e.chart.foreColor||(e.chart.foreColor="#f6f7f8"),e.chart.background||(e.chart.background="#424242"),e.theme.palette||(e.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(e){var t=e;if(t.tooltip.shared&&t.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if(t.chart.type==="bar"&&t.plotOptions.bar.horizontal){if(t.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");t.yaxis[0].reversed&&(t.yaxis[0].opposite=!0),t.xaxis.tooltip.enabled=!1,t.yaxis[0].tooltip.enabled=!1,t.chart.zoom.enabled=!1}return t.chart.type!=="bar"&&t.chart.type!=="rangeBar"||t.tooltip.shared&&t.xaxis.crosshairs.width==="barWidth"&&t.series.length>1&&(t.xaxis.crosshairs.width="tickWidth"),t.chart.type!=="candlestick"&&t.chart.type!=="boxPlot"||t.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(t.chart.type," chart is not supported.")),t.yaxis[0].reversed=!1),t}}]),v}(),De=function(){function v(){E(this,v)}return Y(v,[{key:"initGlobalVars",value:function(e){e.series=[],e.seriesCandleO=[],e.seriesCandleH=[],e.seriesCandleM=[],e.seriesCandleL=[],e.seriesCandleC=[],e.seriesRangeStart=[],e.seriesRangeEnd=[],e.seriesRange=[],e.seriesPercent=[],e.seriesGoals=[],e.seriesX=[],e.seriesZ=[],e.seriesNames=[],e.seriesTotals=[],e.seriesLog=[],e.seriesColors=[],e.stackedSeriesTotals=[],e.seriesXvalues=[],e.seriesYvalues=[],e.labels=[],e.hasGroups=!1,e.groups=[],e.categoryLabels=[],e.timescaleLabels=[],e.noLabelsProvided=!1,e.resizeTimer=null,e.selectionResizeTimer=null,e.delayedElements=[],e.pointsArray=[],e.dataLabelsRects=[],e.isXNumeric=!1,e.xaxisLabelsCount=0,e.skipLastTimelinelabel=!1,e.skipFirstTimelinelabel=!1,e.isDataXYZ=!1,e.isMultiLineX=!1,e.isMultipleYAxis=!1,e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE,e.minYArr=[],e.maxYArr=[],e.maxX=-Number.MAX_VALUE,e.minX=Number.MAX_VALUE,e.initialMaxX=-Number.MAX_VALUE,e.initialMinX=Number.MAX_VALUE,e.maxDate=0,e.minDate=Number.MAX_VALUE,e.minZ=Number.MAX_VALUE,e.maxZ=-Number.MAX_VALUE,e.minXDiff=Number.MAX_VALUE,e.yAxisScale=[],e.xAxisScale=null,e.xAxisTicksPositions=[],e.yLabelsCoords=[],e.yTitleCoords=[],e.barPadForNumericAxis=0,e.padHorizontal=0,e.xRange=0,e.yRange=[],e.zRange=0,e.dataPoints=0,e.xTickAmount=0}},{key:"globalVars",value:function(e){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:e.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:e.chart.toolbar.autoSelected==="zoom"&&e.chart.toolbar.tools.zoom&&e.chart.zoom.enabled,panEnabled:e.chart.toolbar.autoSelected==="pan"&&e.chart.toolbar.tools.pan,selectionEnabled:e.chart.toolbar.autoSelected==="selection"&&e.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null}}},{key:"init",value:function(e){var t=this.globalVars(e);return this.initGlobalVars(t),t.initialConfig=P.extend({},e),t.initialSeries=P.clone(e.series),t.lastXAxis=P.clone(t.initialConfig.xaxis),t.lastYAxis=P.clone(t.initialConfig.yaxis),t}}]),v}(),nt=function(){function v(e){E(this,v),this.opts=e}return Y(v,[{key:"init",value:function(){var e=new le(this.opts).init({responsiveOverride:!1});return{config:e,globals:new De().init(e)}}}]),v}(),$=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return Y(v,[{key:"clippedImgArea",value:function(e){var t=this.w,i=t.config,a=parseInt(t.globals.gridWidth,10),s=parseInt(t.globals.gridHeight,10),n=a>s?a:s,r=e.image,o=0,h=0;e.width===void 0&&e.height===void 0?i.fill.image.width!==void 0&&i.fill.image.height!==void 0?(o=i.fill.image.width+1,h=i.fill.image.height):(o=n+1,h=n):(o=e.width,h=e.height);var c=document.createElementNS(t.globals.SVGNS,"pattern");M.setAttrs(c,{id:e.patternID,patternUnits:e.patternUnits?e.patternUnits:"userSpaceOnUse",width:o+"px",height:h+"px"});var d=document.createElementNS(t.globals.SVGNS,"image");c.appendChild(d),d.setAttributeNS(window.SVG.xlink,"href",r),M.setAttrs(d,{x:0,y:0,preserveAspectRatio:"none",width:o+"px",height:h+"px"}),d.style.opacity=e.opacity,t.globals.dom.elDefs.node.appendChild(c)}},{key:"getSeriesIndex",value:function(e){var t=this.w;return(t.config.chart.type==="bar"||t.config.chart.type==="rangeBar")&&t.config.plotOptions.bar.distributed||t.config.chart.type==="heatmap"||t.config.chart.type==="treemap"?this.seriesIndex=e.seriesNumber:this.seriesIndex=e.seriesNumber%t.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(e){var t=this.w;this.opts=e;var i,a,s,n=this.w.config;this.seriesIndex=this.getSeriesIndex(e);var r=this.getFillColors()[this.seriesIndex];t.globals.seriesColors[this.seriesIndex]!==void 0&&(r=t.globals.seriesColors[this.seriesIndex]),typeof r=="function"&&(r=r({seriesIndex:this.seriesIndex,dataPointIndex:e.dataPointIndex,value:e.value,w:t}));var o=e.fillType?e.fillType:this.getFillType(this.seriesIndex),h=Array.isArray(n.fill.opacity)?n.fill.opacity[this.seriesIndex]:n.fill.opacity;e.color&&(r=e.color);var c=r;if(r.indexOf("rgb")===-1?r.length<9&&(c=P.hexToRgba(r,h)):r.indexOf("rgba")>-1&&(h=P.getOpacityFromRGBA(r)),e.opacity&&(h=e.opacity),o==="pattern"&&(a=this.handlePatternFill({fillConfig:e.fillConfig,patternFill:a,fillColor:r,fillOpacity:h,defaultColor:c})),o==="gradient"&&(s=this.handleGradientFill({fillConfig:e.fillConfig,fillColor:r,fillOpacity:h,i:this.seriesIndex})),o==="image"){var d=n.fill.image.src,g=e.patternID?e.patternID:"";this.clippedImgArea({opacity:h,image:Array.isArray(d)?e.seriesNumber-1&&(p=P.getOpacityFromRGBA(g));var x=n.gradient.opacityTo===void 0?i:Array.isArray(n.gradient.opacityTo)?n.gradient.opacityTo[s]:n.gradient.opacityTo;if(n.gradient.gradientToColors===void 0||n.gradient.gradientToColors.length===0)r=n.gradient.shade==="dark"?c.shadeColor(-1*parseFloat(n.gradient.shadeIntensity),t.indexOf("rgb")>-1?P.rgb2hex(t):t):c.shadeColor(parseFloat(n.gradient.shadeIntensity),t.indexOf("rgb")>-1?P.rgb2hex(t):t);else if(n.gradient.gradientToColors[o.seriesNumber]){var f=n.gradient.gradientToColors[o.seriesNumber];r=f,f.indexOf("rgba")>-1&&(x=P.getOpacityFromRGBA(f))}else r=t;if(n.gradient.gradientFrom&&(g=n.gradient.gradientFrom),n.gradient.gradientTo&&(r=n.gradient.gradientTo),n.gradient.inverseColors){var y=g;g=r,r=y}return g.indexOf("rgb")>-1&&(g=P.rgb2hex(g)),r.indexOf("rgb")>-1&&(r=P.rgb2hex(r)),h.drawGradient(d,g,r,p,x,o.size,n.gradient.stops,n.gradient.colorStops,s)}}]),v}(),he=function(){function v(e,t){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"setGlobalMarkerSize",value:function(){var e=this.w;if(e.globals.markers.size=Array.isArray(e.config.markers.size)?e.config.markers.size:[e.config.markers.size],e.globals.markers.size.length>0){if(e.globals.markers.size.length4&&arguments[4]!==void 0&&arguments[4],r=this.w,o=t,h=e,c=null,d=new M(this.ctx),g=r.config.markers.discrete&&r.config.markers.discrete.length;if((r.globals.markers.size[t]>0||n||g)&&(c=d.group({class:n||g?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(r.globals.cuid,")")),Array.isArray(h.x))for(var p=0;p0:r.config.markers.size>0;if(y||n||g){P.isNumber(h.y[p])?f+=" w".concat(P.randomId()):f="apexcharts-nullpoint";var w=this.getMarkerConfig({cssClass:f,seriesIndex:t,dataPointIndex:x});r.config.series[o].data[x]&&(r.config.series[o].data[x].fillColor&&(w.pointFillColor=r.config.series[o].data[x].fillColor),r.config.series[o].data[x].strokeColor&&(w.pointStrokeColor=r.config.series[o].data[x].strokeColor)),a&&(w.pSize=a),(s=d.drawMarker(h.x[p],h.y[p],w)).attr("rel",x),s.attr("j",x),s.attr("index",t),s.node.setAttribute("default-marker-size",w.pSize);var S=new B(this.ctx);S.setSelectionFilter(s,t,x),this.addEvents(s),c&&c.add(s)}else r.globals.pointsArray[t]===void 0&&(r.globals.pointsArray[t]=[]),r.globals.pointsArray[t].push([h.x[p],h.y[p]])}return c}},{key:"getMarkerConfig",value:function(e){var t=e.cssClass,i=e.seriesIndex,a=e.dataPointIndex,s=a===void 0?null:a,n=e.finishRadius,r=n===void 0?null:n,o=this.w,h=this.getMarkerStyle(i),c=o.globals.markers.size[i],d=o.config.markers;return s!==null&&d.discrete.length&&d.discrete.map(function(g){g.seriesIndex===i&&g.dataPointIndex===s&&(h.pointStrokeColor=g.strokeColor,h.pointFillColor=g.fillColor,c=g.size,h.pointShape=g.shape)}),{pSize:r===null?c:r,pRadius:d.radius,width:Array.isArray(d.width)?d.width[i]:d.width,height:Array.isArray(d.height)?d.height[i]:d.height,pointStrokeWidth:Array.isArray(d.strokeWidth)?d.strokeWidth[i]:d.strokeWidth,pointStrokeColor:h.pointStrokeColor,pointFillColor:h.pointFillColor,shape:h.pointShape||(Array.isArray(d.shape)?d.shape[i]:d.shape),class:t,pointStrokeOpacity:Array.isArray(d.strokeOpacity)?d.strokeOpacity[i]:d.strokeOpacity,pointStrokeDashArray:Array.isArray(d.strokeDashArray)?d.strokeDashArray[i]:d.strokeDashArray,pointFillOpacity:Array.isArray(d.fillOpacity)?d.fillOpacity[i]:d.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(e){var t=this.w,i=new M(this.ctx);e.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,e)),e.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,e)),e.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,e)),e.node.addEventListener("click",t.config.markers.onClick),e.node.addEventListener("dblclick",t.config.markers.onDblClick),e.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,e),{passive:!0})}},{key:"getMarkerStyle",value:function(e){var t=this.w,i=t.globals.markers.colors,a=t.config.markers.strokeColor||t.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[e]:a,pointFillColor:Array.isArray(i)?i[e]:i}}}]),v}(),He=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return Y(v,[{key:"draw",value:function(e,t,i){var a=this.w,s=new M(this.ctx),n=i.realIndex,r=i.pointsPos,o=i.zRatio,h=i.elParent,c=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(c.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),Array.isArray(r.x))for(var d=0;dy.maxBubbleRadius&&(f=y.maxBubbleRadius)}a.config.chart.animations.enabled||(x=f);var w=r.x[d],S=r.y[d];if(x=x||0,S!==null&&a.globals.series[n][g]!==void 0||(p=!1),p){var k=this.drawPoint(w,S,x,f,n,g,t);c.add(k)}h.add(c)}}},{key:"drawPoint",value:function(e,t,i,a,s,n,r){var o=this.w,h=s,c=new te(this.ctx),d=new B(this.ctx),g=new $(this.ctx),p=new he(this.ctx),x=new M(this.ctx),f=p.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:h,dataPointIndex:n,finishRadius:o.config.chart.type==="bubble"||o.globals.comboCharts&&o.config.series[s]&&o.config.series[s].type==="bubble"?a:null});a=f.pSize;var y,w=g.fillPath({seriesNumber:s,dataPointIndex:n,color:f.pointFillColor,patternUnits:"objectBoundingBox",value:o.globals.series[s][r]});if(f.shape==="circle"?y=x.drawCircle(i):f.shape!=="square"&&f.shape!=="rect"||(y=x.drawRect(0,0,f.width-f.pointStrokeWidth/2,f.height-f.pointStrokeWidth/2,f.pRadius)),o.config.series[h].data[n]&&o.config.series[h].data[n].fillColor&&(w=o.config.series[h].data[n].fillColor),y.attr({x:e-f.width/2-f.pointStrokeWidth/2,y:t-f.height/2-f.pointStrokeWidth/2,cx:e,cy:t,fill:w,"fill-opacity":f.pointFillOpacity,stroke:f.pointStrokeColor,r:a,"stroke-width":f.pointStrokeWidth,"stroke-dasharray":f.pointStrokeDashArray,"stroke-opacity":f.pointStrokeOpacity}),o.config.chart.dropShadow.enabled){var S=o.config.chart.dropShadow;d.dropShadow(y,S,s)}if(!this.initialAnim||o.globals.dataChanged||o.globals.resized)o.globals.animationEnded=!0;else{var k=o.config.chart.animations.speed;c.animateMarker(y,0,f.shape==="circle"?a:{width:f.width,height:f.height},k,o.globals.easing,function(){window.setTimeout(function(){c.animationCompleted(y)},100)})}if(o.globals.dataChanged&&f.shape==="circle")if(this.dynamicAnim){var l,u,b,m,A=o.config.chart.animations.dynamicAnimation.speed;(m=o.globals.previousPaths[s]&&o.globals.previousPaths[s][r])!=null&&(l=m.x,u=m.y,b=m.r!==void 0?m.r:a);for(var L=0;Lo.globals.gridHeight+g&&(t=o.globals.gridHeight+g/2),o.globals.dataLabelsRects[a]===void 0&&(o.globals.dataLabelsRects[a]=[]),o.globals.dataLabelsRects[a].push({x:e,y:t,width:d,height:g});var p=o.globals.dataLabelsRects[a].length-2,x=o.globals.lastDrawnDataLabelsIndexes[a]!==void 0?o.globals.lastDrawnDataLabelsIndexes[a][o.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(o.globals.dataLabelsRects[a][p]!==void 0){var f=o.globals.dataLabelsRects[a][x];(e>f.x+f.width+2||t>f.y+f.height+2||e+dt.globals.gridWidth+y.textRects.width+10)&&(o="");var w=t.globals.dataLabels.style.colors[n];((t.config.chart.type==="bar"||t.config.chart.type==="rangeBar")&&t.config.plotOptions.bar.distributed||t.config.dataLabels.distributed)&&(w=t.globals.dataLabels.style.colors[r]),typeof w=="function"&&(w=w({series:t.globals.series,seriesIndex:n,dataPointIndex:r,w:t})),p&&(w=p);var S=g.offsetX,k=g.offsetY;if(t.config.chart.type!=="bar"&&t.config.chart.type!=="rangeBar"||(S=0,k=0),y.drawnextLabel){var l=i.drawText({width:100,height:parseInt(g.style.fontSize,10),x:a+S,y:s+k,foreColor:w,textAnchor:h||g.textAnchor,text:o,fontSize:c||g.style.fontSize,fontFamily:g.style.fontFamily,fontWeight:g.style.fontWeight||"normal"});if(l.attr({class:"apexcharts-datalabel",cx:a,cy:s}),g.dropShadow.enabled){var u=g.dropShadow;new B(this.ctx).dropShadow(l,u)}d.add(l),t.globals.lastDrawnDataLabelsIndexes[n]===void 0&&(t.globals.lastDrawnDataLabelsIndexes[n]=[]),t.globals.lastDrawnDataLabelsIndexes[n].push(r)}}}},{key:"addBackgroundToDataLabel",value:function(e,t){var i=this.w,a=i.config.dataLabels.background,s=a.padding,n=a.padding/2,r=t.width,o=t.height,h=new M(this.ctx).drawRect(t.x-s,t.y-n/2,r+2*s,o+n,a.borderRadius,i.config.chart.background==="transparent"?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);return a.dropShadow.enabled&&new B(this.ctx).dropShadow(h,a.dropShadow),h}},{key:"dataLabelsBackground",value:function(){var e=this.w;if(e.config.chart.type!=="bubble")for(var t=e.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&arguments[0]!==void 0)||arguments[0],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],a=this.w,s=P.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,e&&(t&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(e){for(var t=this.w,i=0;i-1&&(e[i].data=[]);return e}},{key:"toggleSeriesOnHover",value:function(e,t){var i=this.w;t||(t=e.target);var a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if(e.type==="mousemove"){var s=parseInt(t.getAttribute("rel"),10)-1,n=null,r=null;i.globals.axisCharts||i.config.chart.type==="radialBar"?i.globals.axisCharts?(n=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):n=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):n=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var o=0;o=o.from&&c<=o.to&&s[h].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[r])}else e.type==="mouseout"&&n("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"asc",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1){for(var s=i.config.series.map(function(r,o){return r.data&&r.data.length>0&&i.globals.collapsedSeriesIndices.indexOf(o)===-1&&(!i.globals.comboCharts||t.length===0||t.length&&t.indexOf(i.config.series[o].type)>-1)?o:-1}),n=e==="asc"?0:s.length-1;e==="asc"?n=0;e==="asc"?n++:n--)if(s[n]!==-1){a=s[n];break}}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map(function(e,t){return e.type==="bar"||e.type==="column"?t:-1}).filter(function(e){return e!==-1}):this.w.config.series.map(function(e,t){return t})}},{key:"getPreviousPaths",value:function(){var e=this.w;function t(n,r,o){for(var h=n[r].childNodes,c={type:o,paths:[],realIndex:n[r].getAttribute("data:realIndex")},d=0;d0)for(var a=function(n){for(var r=e.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(e.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(n,"'] rect")),o=[],h=function(d){var g=function(x){return r[d].getAttribute(x)},p={x:parseFloat(g("x")),y:parseFloat(g("y")),width:parseFloat(g("width")),height:parseFloat(g("height"))};o.push({rect:p,color:r[d].getAttribute("color")})},c=0;c0)for(var a=0;a0?t:[]});return e}}]),v}(),Oe=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new N(this.ctx)}return Y(v,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var e=this.w.config.series.slice(),t=new Z(this.ctx);if(this.activeSeriesIndex=t.getActiveConfigSeriesIndex(),e[this.activeSeriesIndex].data!==void 0&&e[this.activeSeriesIndex].data.length>0&&e[this.activeSeriesIndex].data[0]!==null&&e[this.activeSeriesIndex].data[0].x!==void 0&&e[this.activeSeriesIndex].data[0]!==null)return!0}},{key:"isFormat2DArray",value:function(){var e=this.w.config.series.slice(),t=new Z(this.ctx);if(this.activeSeriesIndex=t.getActiveConfigSeriesIndex(),e[this.activeSeriesIndex].data!==void 0&&e[this.activeSeriesIndex].data.length>0&&e[this.activeSeriesIndex].data[0]!==void 0&&e[this.activeSeriesIndex].data[0]!==null&&e[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(e,t){for(var i=this.w.config,a=this.w.globals,s=i.chart.type==="boxPlot"||i.series[t].type==="boxPlot",n=0;n=5?this.twoDSeries.push(P.parseNumber(e[t].data[n][4])):this.twoDSeries.push(P.parseNumber(e[t].data[n][1])),a.dataFormatXNumeric=!0),i.xaxis.type==="datetime"){var r=new Date(e[t].data[n][0]);r=new Date(r).getTime(),this.twoDSeriesX.push(r)}else this.twoDSeriesX.push(e[t].data[n][0]);for(var o=0;o-1&&(n=this.activeSeriesIndex);for(var r=0;r1&&arguments[1]!==void 0?arguments[1]:this.ctx,a=this.w.config,s=this.w.globals,n=new G(i),r=a.labels.length>0?a.labels.slice():a.xaxis.categories.slice();s.isRangeBar=a.chart.type==="rangeBar"&&s.isBarHorizontal,s.hasGroups=a.xaxis.type==="category"&&a.xaxis.group.groups.length>0,s.hasGroups&&(s.groups=a.xaxis.group.groups);for(var o=function(){for(var d=0;d0&&(this.twoDSeriesX=r,s.seriesX.push(this.twoDSeriesX))),s.labels.push(this.twoDSeriesX);var c=e[h].data.map(function(d){return P.parseNumber(d)});s.series.push(c)}s.seriesZ.push(this.threeDSeries),e[h].name!==void 0?s.seriesNames.push(e[h].name):s.seriesNames.push("series-"+parseInt(h+1,10)),e[h].color!==void 0?s.seriesColors.push(e[h].color):s.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(e){var t=this.w.globals,i=this.w.config;t.series=e.slice(),t.seriesNames=i.labels.slice();for(var a=0;a0?i.labels=t.xaxis.categories:t.labels.length>0?i.labels=t.labels.slice():this.fallbackToCategory?(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map(function(a){a.forEach(function(s){i.labels.indexOf(s.x)<0&&s.x&&i.labels.push(s.x)})}),i.labels=i.labels.filter(function(a,s,n){return n.indexOf(a)===s})),t.xaxis.convertedCatToNumeric&&(new oe(t).convertCatToNumericXaxis(t,this.ctx,i.seriesX[0]),this._generateExternalLabels(e))):this._generateExternalLabels(e)}},{key:"_generateExternalLabels",value:function(e){var t=this.w.globals,i=this.w.config,a=[];if(t.axisCharts){if(t.series.length>0)if(this.isFormatXY())for(var s=i.series.map(function(d,g){return d.data.filter(function(p,x,f){return f.findIndex(function(y){return y.x===p.x})===x})}),n=s.reduce(function(d,g,p,x){return x[d].length>g.length?d:p},0),r=0;r0&&a<100?i.toFixed(1):i.toFixed(0)}return t.globals.isBarHorizontal&&t.globals.maxY-t.globals.minYArr<4?i.toFixed(1):i.toFixed(0)}return i},typeof t.config.tooltip.x.formatter=="function"?t.globals.ttKeyFormatter=t.config.tooltip.x.formatter:t.globals.ttKeyFormatter=t.globals.xLabelFormatter,typeof t.config.xaxis.tooltip.formatter=="function"&&(t.globals.xaxisTooltipFormatter=t.config.xaxis.tooltip.formatter),(Array.isArray(t.config.tooltip.y)||t.config.tooltip.y.formatter!==void 0)&&(t.globals.ttVal=t.config.tooltip.y),t.config.tooltip.z.formatter!==void 0&&(t.globals.ttZFormatter=t.config.tooltip.z.formatter),t.config.legend.formatter!==void 0&&(t.globals.legendFormatter=t.config.legend.formatter),t.config.yaxis.forEach(function(i,a){i.labels.formatter!==void 0?t.globals.yLabelFormatters[a]=i.labels.formatter:t.globals.yLabelFormatters[a]=function(s){return t.globals.xyCharts?Array.isArray(s)?s.map(function(n){return e.defaultYFormatter(n,i,a)}):e.defaultYFormatter(s,i,a):s}}),t.globals}},{key:"heatmapLabelFormatters",value:function(){var e=this.w;if(e.config.chart.type==="heatmap"){e.globals.yAxisScale[0].result=e.globals.seriesNames.slice();var t=e.globals.seriesNames.reduce(function(i,a){return i.length>a.length?i:a},0);e.globals.yAxisScale[0].niceMax=t,e.globals.yAxisScale[0].niceMin=t}}}]),v}(),K=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"getLabel",value:function(e,t,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:[],n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"12px",r=!(arguments.length>6&&arguments[6]!==void 0)||arguments[6],o=this.w,h=e[a]===void 0?"":e[a],c=h,d=o.globals.xLabelFormatter,g=o.config.xaxis.labels.formatter,p=!1,x=new pe(this.ctx),f=h;r&&(c=x.xLabelFormat(d,h,f,{i:a,dateFormatter:new G(this.ctx).formatDate,w:o}),g!==void 0&&(c=g(h,e[a],{i:a,dateFormatter:new G(this.ctx).formatDate,w:o})));var y=function(l){var u=null;return t.forEach(function(b){b.unit==="month"?u="year":b.unit==="day"?u="month":b.unit==="hour"?u="day":b.unit==="minute"&&(u="hour")}),u===l};t.length>0?(p=y(t[a].unit),i=t[a].position,c=t[a].value):o.config.xaxis.type==="datetime"&&g===void 0&&(c=""),c===void 0&&(c=""),c=Array.isArray(c)?c:c.toString();var w=new M(this.ctx),S={};S=o.globals.rotateXLabels&&r?w.getTextRects(c,parseInt(n,10),null,"rotate(".concat(o.config.xaxis.labels.rotate," 0 0)"),!1):w.getTextRects(c,parseInt(n,10));var k=!o.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(c)&&(c.indexOf("NaN")===0||c.toLowerCase().indexOf("invalid")===0||c.toLowerCase().indexOf("infinity")>=0||s.indexOf(c)>=0&&k)&&(c=""),{x:i,text:c,textRect:S,isBold:p}}},{key:"checkLabelBasedOnTickamount",value:function(e,t,i){var a=this.w,s=a.config.xaxis.tickAmount;return s==="dataPoints"&&(s=Math.round(a.globals.gridWidth/120)),s>i||e%Math.round(i/(s+1))==0||(t.text=""),t}},{key:"checkForOverflowingLabels",value:function(e,t,i,a,s){var n=this.w;if(e===0&&n.globals.skipFirstTimelinelabel&&(t.text=""),e===i-1&&n.globals.skipLastTimelinelabel&&(t.text=""),n.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var r=s[s.length-1];t.x0){o.config.yaxis[s].opposite===!0&&(e+=a.width);for(var d=t;d>=0;d--){var g=c+t/10+o.config.yaxis[s].labels.offsetY-1;o.globals.isBarHorizontal&&(g=n*d),o.config.chart.type==="heatmap"&&(g+=n/2);var p=h.drawLine(e+i.offsetX-a.width+a.offsetX,g+a.offsetY,e+i.offsetX+a.offsetX,g+a.offsetY,a.color);r.add(p),c+=n}}}}]),v}(),fe=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"scaleSvgNode",value:function(e,t){var i=parseFloat(e.getAttributeNS(null,"width")),a=parseFloat(e.getAttributeNS(null,"height"));e.setAttributeNS(null,"width",i*t),e.setAttributeNS(null,"height",a*t),e.setAttributeNS(null,"viewBox","0 0 "+i+" "+a)}},{key:"fixSvgStringForIe11",value:function(e){if(!P.isIE11())return e.replace(/ /g," ");var t=0,i=e.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g,function(a){return++t===2?'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"':a});return i=(i=i.replace(/xmlns:NS\d+=""/g,"")).replace(/NS\d+:(\w+:\w+=")/g,"$1")}},{key:"getSvgString",value:function(e){e==null&&(e=1);var t=this.w.globals.dom.Paper.svg();if(e!==1){var i=this.w.globals.dom.Paper.node.cloneNode(!0);this.scaleSvgNode(i,e),t=new XMLSerializer().serializeToString(i)}return this.fixSvgStringForIe11(t)}},{key:"cleanup",value:function(){var e=this.w,t=e.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"),i=e.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"),a=e.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");Array.prototype.forEach.call(a,function(s){s.setAttribute("width",0)}),t&&t[0]&&(t[0].setAttribute("x",-500),t[0].setAttribute("x1",-500),t[0].setAttribute("x2",-500)),i&&i[0]&&(i[0].setAttribute("y",-100),i[0].setAttribute("y1",-100),i[0].setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var e=this.getSvgString(),t=new Blob([e],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(t)}},{key:"dataURI",value:function(e){var t=this;return new Promise(function(i){var a=t.w,s=e?e.scale||e.width/a.globals.svgWidth:1;t.cleanup();var n=document.createElement("canvas");n.width=a.globals.svgWidth*s,n.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var r=a.config.chart.background==="transparent"?"#fff":a.config.chart.background,o=n.getContext("2d");o.fillStyle=r,o.fillRect(0,0,n.width*s,n.height*s);var h=t.getSvgString(s);if(window.canvg&&P.isIE11()){var c=window.canvg.Canvg.fromString(o,h,{ignoreClear:!0,ignoreDimensions:!0});c.start();var d=n.msToBlob();c.stop(),i({blob:d})}else{var g="data:image/svg+xml,"+encodeURIComponent(h),p=new Image;p.crossOrigin="anonymous",p.onload=function(){if(o.drawImage(p,0,0),n.msToBlob){var x=n.msToBlob();i({blob:x})}else{var f=n.toDataURL("image/png");i({imgURI:f})}},p.src=g}})}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),this.w.config.chart.toolbar.export.svg.filename,".svg")}},{key:"exportToPng",value:function(){var e=this;this.dataURI().then(function(t){var i=t.imgURI,a=t.blob;a?navigator.msSaveOrOpenBlob(a,e.w.globals.chartID+".png"):e.triggerDownload(i,e.w.config.chart.toolbar.export.png.filename,".png")})}},{key:"exportToCSV",value:function(e){var t=this,i=e.series,a=e.fileName,s=e.columnDelimiter,n=s===void 0?",":s,r=e.lineDelimiter,o=r===void 0?` -`:r,h=this.w;i||(i=h.config.series);var c=[],d=[],g="",p=h.globals.series.map(function(k,l){return h.globals.collapsedSeriesIndices.indexOf(l)===-1?k:[]}),x=Math.max.apply(Math,q(i.map(function(k){return k.data?k.data.length:0}))),f=new Oe(this.ctx),y=new K(this.ctx),w=function(k){var l="";if(h.globals.axisCharts){if(h.config.xaxis.type==="category"||h.config.xaxis.convertedCatToNumeric)if(h.globals.isBarHorizontal){var u=h.globals.yLabelFormatters[0],b=new Z(t.ctx).getActiveConfigSeriesIndex();l=u(h.globals.labels[k],{seriesIndex:b,dataPointIndex:k,w:h})}else l=y.getLabel(h.globals.labels,h.globals.timescaleLabels,0,k).text;h.config.xaxis.type==="datetime"&&(h.config.xaxis.categories.length?l=h.config.xaxis.categories[k]:h.config.labels.length&&(l=h.config.labels[k]))}else l=h.config.labels[k];return Array.isArray(l)&&(l=l.join(" ")),P.isNumber(l)?l:l.split(n).join("")},S=function(k,l){if(c.length&&l===0&&d.push(c.join(n)),k.data){k.data=k.data.length&&k.data||q(Array(x)).map(function(){return""});for(var u=0;u=10?h.config.chart.toolbar.export.csv.dateFormatter(b):P.isNumber(b)?b:b.split(n).join("")));for(var m=0;m0&&!i.globals.isBarHorizontal&&(this.xaxisLabels=i.globals.timescaleLabels.slice()),i.config.xaxis.overwriteCategories&&(this.xaxisLabels=i.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],i.config.xaxis.position==="top"?this.offY=0:this.offY=i.globals.gridHeight+1,this.offY=this.offY+i.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal=i.config.chart.type==="bar"&&i.config.plotOptions.bar.horizontal,this.xaxisFontSize=i.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=i.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=i.config.xaxis.labels.style.colors,this.xaxisBorderWidth=i.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=i.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=i.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=i.config.xaxis.axisBorder.height,this.yaxis=i.config.yaxis[0]}return Y(v,[{key:"drawXaxis",value:function(){var e=this.w,t=new M(this.ctx),i=t.group({class:"apexcharts-xaxis",transform:"translate(".concat(e.config.xaxis.offsetX,", ").concat(e.config.xaxis.offsetY,")")}),a=t.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});i.add(a);for(var s=[],n=0;n6&&arguments[6]!==void 0?arguments[6]:{},c=[],d=[],g=this.w,p=h.xaxisFontSize||this.xaxisFontSize,x=h.xaxisFontFamily||this.xaxisFontFamily,f=h.xaxisForeColors||this.xaxisForeColors,y=h.fontWeight||g.config.xaxis.labels.style.fontWeight,w=h.cssClass||g.config.xaxis.labels.style.cssClass,S=g.globals.padHorizontal,k=a.length,l=g.config.xaxis.type==="category"?g.globals.dataPoints:k;if(l===0&&k>l&&(l=k),s){var u=l>1?l-1:l;r=g.globals.gridWidth/u,S=S+n(0,r)/2+g.config.xaxis.labels.offsetX}else r=g.globals.gridWidth/l,S=S+n(0,r)+g.config.xaxis.labels.offsetX;for(var b=function(A){var L=S-n(A,r)/2+g.config.xaxis.labels.offsetX;A===0&&k===1&&r/2===S&&l===1&&(L=g.globals.gridWidth/2);var C=o.axesUtils.getLabel(a,g.globals.timescaleLabels,L,A,c,p,e),T=28;if(g.globals.rotateXLabels&&e&&(T=22),g.config.xaxis.title.text&&g.config.xaxis.position==="top"&&(T+=parseFloat(g.config.xaxis.title.style.fontSize)+2),e||(T=T+parseFloat(p)+(g.globals.xAxisLabelsHeight-g.globals.xAxisGroupLabelsHeight)+(g.globals.rotateXLabels?10:0)),C=g.config.xaxis.tickAmount!==void 0&&g.config.xaxis.tickAmount!=="dataPoints"&&g.config.xaxis.type!=="datetime"?o.axesUtils.checkLabelBasedOnTickamount(A,C,k):o.axesUtils.checkForOverflowingLabels(A,C,k,c,d),e&&C.text&&g.globals.xaxisLabelsCount++,g.config.xaxis.labels.show){var I=t.drawText({x:C.x,y:o.offY+g.config.xaxis.labels.offsetY+T-(g.config.xaxis.position==="top"?g.globals.xAxisHeight+g.config.xaxis.axisTicks.height-2:0),text:C.text,textAnchor:"middle",fontWeight:C.isBold?600:y,fontSize:p,fontFamily:x,foreColor:Array.isArray(f)?e&&g.config.xaxis.convertedCatToNumeric?f[g.globals.minX+A-1]:f[A]:f,isPlainText:!1,cssClass:(e?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+w});if(i.add(I),I.on("click",function(z){if(typeof g.config.chart.events.xAxisLabelClick=="function"){var D=Object.assign({},g,{labelIndex:A});g.config.chart.events.xAxisLabelClick(z,o.ctx,D)}}),e){var X=document.createElementNS(g.globals.SVGNS,"title");X.textContent=Array.isArray(C.text)?C.text.join(" "):C.text,I.node.appendChild(X),C.text!==""&&(c.push(C.text),d.push(C))}}Aa.globals.gridWidth)){var n=this.offY+a.config.xaxis.axisTicks.offsetY;if(t=t+n+a.config.xaxis.axisTicks.height,a.config.xaxis.position==="top"&&(t=n-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var r=new M(this.ctx).drawLine(e+a.config.xaxis.axisTicks.offsetX,n+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,t+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(r),r.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var e=this.w,t=[],i=this.xaxisLabels.length,a=e.globals.padHorizontal;if(e.globals.timescaleLabels.length>0)for(var s=0;s0){var c=s[s.length-1].getBBox(),d=s[0].getBBox();c.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),d.x+d.width>e.globals.gridWidth&&!e.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var g=0;g0&&(this.xaxisLabels=t.globals.timescaleLabels.slice())}return Y(v,[{key:"drawGridArea",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=this.w,i=new M(this.ctx);e===null&&(e=i.group({class:"apexcharts-grid"}));var a=i.drawLine(t.globals.padHorizontal,1,t.globals.padHorizontal,t.globals.gridHeight,"transparent"),s=i.drawLine(t.globals.padHorizontal,t.globals.gridHeight,t.globals.gridWidth,t.globals.gridHeight,"transparent");return e.add(s),e.add(a),e}},{key:"drawGrid",value:function(){var e=null;return this.w.globals.axisCharts&&(e=this.renderGrid(),this.drawGridArea(e.el)),e}},{key:"createGridMask",value:function(){var e=this.w,t=e.globals,i=new M(this.ctx),a=Array.isArray(e.config.stroke.width)?0:e.config.stroke.width;if(Array.isArray(e.config.stroke.width)){var s=0;e.config.stroke.width.forEach(function(d){s=Math.max(s,d)}),a=s}t.dom.elGridRectMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(t.cuid)),t.dom.elGridRectMarkerMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(t.cuid)),t.dom.elForecastMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elForecastMask.setAttribute("id","forecastMask".concat(t.cuid)),t.dom.elNonForecastMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elNonForecastMask.setAttribute("id","nonForecastMask".concat(t.cuid));var n=e.config.chart.type,r=0,o=0;(n==="bar"||n==="rangeBar"||n==="candlestick"||n==="boxPlot"||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&(r=e.config.grid.padding.left,o=e.config.grid.padding.right,t.barPadForNumericAxis>r&&(r=t.barPadForNumericAxis,o=t.barPadForNumericAxis)),t.dom.elGridRect=i.drawRect(-a/2-r-2,-a/2,t.gridWidth+a+o+r+4,t.gridHeight+a,0,"#fff");var h=e.globals.markers.largestSize+1;t.dom.elGridRectMarker=i.drawRect(2*-h,2*-h,t.gridWidth+4*h,t.gridHeight+4*h,0,"#fff"),t.dom.elGridRectMask.appendChild(t.dom.elGridRect.node),t.dom.elGridRectMarkerMask.appendChild(t.dom.elGridRectMarker.node);var c=t.dom.baseEl.querySelector("defs");c.appendChild(t.dom.elGridRectMask),c.appendChild(t.dom.elForecastMask),c.appendChild(t.dom.elNonForecastMask),c.appendChild(t.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(e){var t=e.i,i=e.x1,a=e.y1,s=e.x2,n=e.y2,r=e.xCount,o=e.parent,h=this.w;if(!(t===0&&h.globals.skipFirstTimelinelabel||t===r-1&&h.globals.skipLastTimelinelabel&&!h.config.xaxis.labels.formatter||h.config.chart.type==="radar")){h.config.grid.xaxis.lines.show&&this._drawGridLine({i:t,x1:i,y1:a,x2:s,y2:n,xCount:r,parent:o});var c=0;if(h.globals.hasGroups&&h.config.xaxis.tickPlacement==="between"){var d=h.globals.groups;if(d){for(var g=0,p=0;g2));s++);return!e.globals.isBarHorizontal||this.isRangeBar?(i=this.xaxisLabels.length,this.isRangeBar&&(a=e.globals.labels.length,e.config.xaxis.tickAmount&&e.config.xaxis.labels.formatter&&(i=e.config.xaxis.tickAmount)),this._drawXYLines({xCount:i,tickAmount:a})):(i=a,a=e.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a})),this.drawGridBands(i,a),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:e.globals.gridWidth/i}}},{key:"drawGridBands",value:function(e,t){var i=this.w;if(i.config.grid.row.colors!==void 0&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/t,n=i.globals.gridWidth,r=0,o=0;r=i.config.grid.row.colors.length&&(o=0),this._drawGridBandRect({c:o,x1:0,y1:a,x2:n,y2:s,type:"row"}),a+=i.globals.gridHeight/t;if(i.config.grid.column.colors!==void 0&&i.config.grid.column.colors.length>0)for(var h=i.globals.isBarHorizontal||i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric?e:e-1,c=i.globals.padHorizontal,d=i.globals.padHorizontal+i.globals.gridWidth/h,g=i.globals.gridHeight,p=0,x=0;p=i.config.grid.column.colors.length&&(x=0),this._drawGridBandRect({c:x,x1:c,y1:0,x2:d,y2:g,type:"column"}),c+=i.globals.gridWidth/h}}]),v}(),ae=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"niceScale",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=arguments.length>4?arguments[4]:void 0,n=this.w,r=Math.abs(t-e);if((i=this._adjustTicksForSmallRange(i,a,r))==="dataPoints"&&(i=n.globals.dataPoints-1),e===Number.MIN_VALUE&&t===0||!P.isNumber(e)&&!P.isNumber(t)||e===Number.MIN_VALUE&&t===-Number.MAX_VALUE){e=0,t=i;var o=this.linearScale(e,t,i);return o}e>t?(console.warn("axis.min cannot be greater than axis.max"),t=e+.1):e===t&&(e=e===0?0:e-.5,t=t===0?2:t+.5);var h=[];r<1&&s&&(n.config.chart.type==="candlestick"||n.config.series[a].type==="candlestick"||n.config.chart.type==="boxPlot"||n.config.series[a].type==="boxPlot"||n.globals.isRangeData)&&(t*=1.01);var c=i+1;c<2?c=2:c>2&&(c-=2);var d=r/c,g=Math.floor(P.log10(d)),p=Math.pow(10,g),x=Math.round(d/p);x<1&&(x=1);var f=x*p,y=f*Math.floor(e/f),w=f*Math.ceil(t/f),S=y;if(s&&r>2){for(;h.push(S),!((S+=f)>w););return{result:h,niceMin:h[0],niceMax:h[h.length-1]}}var k=e;(h=[]).push(k);for(var l=Math.abs(t-e)/i,u=0;u<=i;u++)k+=l,h.push(k);return h[h.length-2]>=t&&h.pop(),{result:h,niceMin:h[0],niceMax:h[h.length-1]}}},{key:"linearScale",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,a=arguments.length>3?arguments[3]:void 0,s=Math.abs(t-e);(i=this._adjustTicksForSmallRange(i,a,s))==="dataPoints"&&(i=this.w.globals.dataPoints-1);var n=s/i;i===Number.MAX_VALUE&&(i=10,n=1);for(var r=[],o=e;i>=0;)r.push(o),o+=n,i-=1;return{result:r,niceMin:r[0],niceMax:r[r.length-1]}}},{key:"logarithmicScaleNice",value:function(e,t,i){t<=0&&(t=Math.max(e,i)),e<=0&&(e=Math.min(t,i));for(var a=[],s=Math.ceil(Math.log(t)/Math.log(i)+1),n=Math.floor(Math.log(e)/Math.log(i));n5)a.allSeriesCollapsed=!1,a.yAxisScale[e]=this.logarithmicScale(t,i,n.logBase),a.yAxisScale[e]=n.forceNiceScale?this.logarithmicScaleNice(t,i,n.logBase):this.logarithmicScale(t,i,n.logBase);else if(i!==-Number.MAX_VALUE&&P.isNumber(i))if(a.allSeriesCollapsed=!1,n.min===void 0&&n.max===void 0||n.forceNiceScale){var o=s.yaxis[e].max===void 0&&s.yaxis[e].min===void 0||s.yaxis[e].forceNiceScale;a.yAxisScale[e]=this.niceScale(t,i,n.tickAmount?n.tickAmount:r<5&&r>1?r+1:5,e,o)}else a.yAxisScale[e]=this.linearScale(t,i,n.tickAmount,e);else a.yAxisScale[e]=this.linearScale(0,5,5)}},{key:"setXScale",value:function(e,t){var i=this.w,a=i.globals,s=i.config.xaxis,n=Math.abs(t-e);return t!==-Number.MAX_VALUE&&P.isNumber(t)?a.xAxisScale=this.linearScale(e,t,s.tickAmount?s.tickAmount:n<5&&n>1?n+1:5,0):a.xAxisScale=this.linearScale(0,5,5),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var e=this,t=this.w.globals,i=this.w.config,a=t.minYArr.concat([]),s=t.maxYArr.concat([]),n=[];i.yaxis.forEach(function(r,o){var h=o;i.series.forEach(function(g,p){g.name===r.seriesName&&(h=p,o!==p?n.push({index:p,similarIndex:o,alreadyExists:!0}):n.push({index:p}))});var c=a[h],d=s[h];e.setYScaleForIndex(o,c,d)}),this.sameScaleInMultipleAxes(a,s,n)}},{key:"sameScaleInMultipleAxes",value:function(e,t,i){var a=this,s=this.w.config,n=this.w.globals,r=[];i.forEach(function(f){f.alreadyExists&&(r[f.index]===void 0&&(r[f.index]=[]),r[f.index].push(f.index),r[f.index].push(f.similarIndex))}),n.yAxisSameScaleIndices=r,r.forEach(function(f,y){r.forEach(function(w,S){var k,l;y!==S&&(k=f,l=w,k.filter(function(u){return l.indexOf(u)!==-1})).length>0&&(r[y]=r[y].concat(r[S]))})});var o=r.map(function(f){return f.filter(function(y,w){return f.indexOf(y)===w})}).map(function(f){return f.sort()});r=r.filter(function(f){return!!f});var h=o.slice(),c=h.map(function(f){return JSON.stringify(f)});h=h.filter(function(f,y){return c.indexOf(JSON.stringify(f))===y});var d=[],g=[];e.forEach(function(f,y){h.forEach(function(w,S){w.indexOf(y)>-1&&(d[S]===void 0&&(d[S]=[],g[S]=[]),d[S].push({key:y,value:f}),g[S].push({key:y,value:t[y]}))})});var p=Array.apply(null,Array(h.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),x=Array.apply(null,Array(h.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);d.forEach(function(f,y){f.forEach(function(w,S){p[y]=Math.min(w.value,p[y])})}),g.forEach(function(f,y){f.forEach(function(w,S){x[y]=Math.max(w.value,x[y])})}),e.forEach(function(f,y){g.forEach(function(w,S){var k=p[S],l=x[S];s.chart.stacked&&(l=0,w.forEach(function(u,b){u.value!==-Number.MAX_VALUE&&(l+=u.value),k!==Number.MIN_VALUE&&(k+=d[S][b].value)})),w.forEach(function(u,b){w[b].key===y&&(s.yaxis[y].min!==void 0&&(k=typeof s.yaxis[y].min=="function"?s.yaxis[y].min(n.minY):s.yaxis[y].min),s.yaxis[y].max!==void 0&&(l=typeof s.yaxis[y].max=="function"?s.yaxis[y].max(n.maxY):s.yaxis[y].max),a.setYScaleForIndex(y,k,l))})})})}},{key:"autoScaleY",value:function(e,t,i){e||(e=this);var a=e.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis is not supported in a multi-yaxis chart."),t;var s=a.globals.seriesX[0],n=a.config.chart.stacked;return t.forEach(function(r,o){for(var h=0,c=0;c=i.xaxis.min){h=c;break}var d,g,p=a.globals.minYArr[o],x=a.globals.maxYArr[o],f=a.globals.stackedSeriesTotals;a.globals.series.forEach(function(y,w){var S=y[h];n?(S=f[h],d=g=S,f.forEach(function(k,l){s[l]<=i.xaxis.max&&s[l]>=i.xaxis.min&&(k>g&&k!==null&&(g=k),y[l]=i.xaxis.min){var u=k,b=k;a.globals.series.forEach(function(m,A){k!==null&&(u=Math.min(m[l],u),b=Math.max(m[l],b))}),b>g&&b!==null&&(g=b),up&&(d=p),t.length>1?(t[w].min=r.min===void 0?d:r.min,t[w].max=r.max===void 0?g:r.max):(t[0].min=r.min===void 0?d:r.min,t[0].max=r.max===void 0?g:r.max)})}),t}}]),v}(),ke=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.scales=new ae(e)}return Y(v,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=this.w.config,n=this.w.globals,r=-Number.MAX_VALUE,o=Number.MIN_VALUE;a===null&&(a=e+1);var h=n.series,c=h,d=h;s.chart.type==="candlestick"?(c=n.seriesCandleL,d=n.seriesCandleH):s.chart.type==="boxPlot"?(c=n.seriesCandleO,d=n.seriesCandleC):n.isRangeData&&(c=n.seriesRangeStart,d=n.seriesRangeEnd);for(var g=e;gc[g][p]&&c[g][p]<0&&(o=c[g][p])):n.hasNullValues=!0}}return s.chart.type==="rangeBar"&&n.seriesRangeStart.length&&n.isBarHorizontal&&(o=t),s.chart.type==="bar"&&(o<0&&r<0&&(r=0),o===Number.MIN_VALUE&&(o=0)),{minY:o,maxY:r,lowestY:t,highestY:i}}},{key:"setYRange",value:function(){var e=this.w.globals,t=this.w.config;e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(e.isMultipleYAxis)for(var a=0;a=0&&i<=10||t.yaxis[0].min!==void 0||t.yaxis[0].max!==void 0)&&(r=0),e.minY=i-5*r/100,i>0&&e.minY<0&&(e.minY=0),e.maxY=e.maxY+5*r/100}return t.yaxis.forEach(function(o,h){o.max!==void 0&&(typeof o.max=="number"?e.maxYArr[h]=o.max:typeof o.max=="function"&&(e.maxYArr[h]=o.max(e.isMultipleYAxis?e.maxYArr[h]:e.maxY)),e.maxY=e.maxYArr[h]),o.min!==void 0&&(typeof o.min=="number"?e.minYArr[h]=o.min:typeof o.min=="function"&&(e.minYArr[h]=o.min(e.isMultipleYAxis?e.minYArr[h]===Number.MIN_VALUE?0:e.minYArr[h]:e.minY)),e.minY=e.minYArr[h])}),e.isBarHorizontal&&["min","max"].forEach(function(o){t.xaxis[o]!==void 0&&typeof t.xaxis[o]=="number"&&(o==="min"?e.minY=t.xaxis[o]:e.maxY=t.xaxis[o])}),e.isMultipleYAxis?(this.scales.setMultipleYScales(),e.minY=i,e.yAxisScale.forEach(function(o,h){e.minYArr[h]=o.niceMin,e.maxYArr[h]=o.niceMax})):(this.scales.setYScaleForIndex(0,e.minY,e.maxY),e.minY=e.yAxisScale[0].niceMin,e.maxY=e.yAxisScale[0].niceMax,e.minYArr[0]=e.yAxisScale[0].niceMin,e.maxYArr[0]=e.yAxisScale[0].niceMax),{minY:e.minY,maxY:e.maxY,minYArr:e.minYArr,maxYArr:e.maxYArr,yAxisScale:e.yAxisScale}}},{key:"setXRange",value:function(){var e=this.w.globals,t=this.w.config,i=t.xaxis.type==="numeric"||t.xaxis.type==="datetime"||t.xaxis.type==="category"&&!e.noLabelsProvided||e.noLabelsProvided||e.isXNumeric;if(e.isXNumeric&&function(){for(var r=0;re.dataPoints&&e.dataPoints!==0&&(a=e.dataPoints-1)):t.xaxis.tickAmount==="dataPoints"?(e.series.length>1&&(a=e.series[e.maxValsInArrayIndex].length-1),e.isXNumeric&&(a=e.maxX-e.minX-1)):a=t.xaxis.tickAmount,e.xTickAmount=a,t.xaxis.max!==void 0&&typeof t.xaxis.max=="number"&&(e.maxX=t.xaxis.max),t.xaxis.min!==void 0&&typeof t.xaxis.min=="number"&&(e.minX=t.xaxis.min),t.xaxis.range!==void 0&&(e.minX=e.maxX-t.xaxis.range),e.minX!==Number.MAX_VALUE&&e.maxX!==-Number.MAX_VALUE)if(t.xaxis.convertedCatToNumeric&&!e.dataFormatXNumeric){for(var s=[],n=e.minX-1;n0&&(e.xAxisScale=this.scales.linearScale(1,e.labels.length,a-1),e.seriesX=e.labels.slice());i&&(e.labels=e.xAxisScale.result.slice())}return e.isBarHorizontal&&e.labels.length&&(e.xTickAmount=e.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:e.minX,maxX:e.maxX}}},{key:"setZRange",value:function(){var e=this.w.globals;if(e.isDataXYZ){for(var t=0;t0){var r=s-a[n-1];r>0&&(e.minXDiff=Math.min(r,e.minXDiff))}}),e.dataPoints!==1&&e.minXDiff!==Number.MAX_VALUE||(e.minXDiff=.5)})}},{key:"_setStackedMinMax",value:function(){var e=this.w.globals,t=[],i=[];if(e.series.length)for(var a=0;a0?s=s+parseFloat(e.series[r][a])+1e-4:n+=parseFloat(e.series[r][a])),r===e.series.length-1&&(t.push(s),i.push(n));for(var o=0;o=0;S--)w(S);if(i.config.yaxis[e].title.text!==void 0){var k=a.group({class:"apexcharts-yaxis-title"}),l=0;i.config.yaxis[e].opposite&&(l=i.globals.translateYAxisX[e]);var u=a.drawText({x:l,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[e].title.offsetY,text:i.config.yaxis[e].title.text,textAnchor:"end",foreColor:i.config.yaxis[e].title.style.color,fontSize:i.config.yaxis[e].title.style.fontSize,fontWeight:i.config.yaxis[e].title.style.fontWeight,fontFamily:i.config.yaxis[e].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+i.config.yaxis[e].title.style.cssClass});k.add(u),h.add(k)}var b=i.config.yaxis[e].axisBorder,m=31+b.offsetX;if(i.config.yaxis[e].opposite&&(m=-31-b.offsetX),b.show){var A=a.drawLine(m,i.globals.translateY+b.offsetY-2,m,i.globals.gridHeight+i.globals.translateY+b.offsetY+2,b.color,0,b.width);h.add(A)}return i.config.yaxis[e].axisTicks.show&&this.axesUtils.drawYAxisTicks(m,d,b,i.config.yaxis[e].axisTicks,e,g,h),h}},{key:"drawYaxisInversed",value:function(e){var t=this.w,i=new M(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});a.add(s);var n=t.globals.yAxisScale[e].result.length-1,r=t.globals.gridWidth/n+.1,o=r+t.config.xaxis.labels.offsetX,h=t.globals.xLabelFormatter,c=t.globals.yAxisScale[e].result.slice(),d=t.globals.timescaleLabels;d.length>0&&(this.xaxisLabels=d.slice(),n=(c=d.slice()).length),c=this.axesUtils.checkForReversedLabels(e,c);var g=d.length;if(t.config.xaxis.labels.show)for(var p=g?0:n;g?p=0;g?p++:p--){var x=c[p];x=h(x,p,t);var f=t.globals.gridWidth+t.globals.padHorizontal-(o-r+t.config.xaxis.labels.offsetX);if(d.length){var y=this.axesUtils.getLabel(c,d,f,p,this.drawnLabels,this.xaxisFontSize);f=y.x,x=y.text,this.drawnLabels.push(y.text),p===0&&t.globals.skipFirstTimelinelabel&&(x=""),p===c.length-1&&t.globals.skipLastTimelinelabel&&(x="")}var w=i.drawText({x:f,y:this.xAxisoffX+t.config.xaxis.labels.offsetY+30-(t.config.xaxis.position==="top"?t.globals.xAxisHeight+t.config.xaxis.axisTicks.height-2:0),text:x,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[e]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:t.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+t.config.xaxis.labels.style.cssClass});s.add(w),w.tspan(x);var S=document.createElementNS(t.globals.SVGNS,"title");S.textContent=x,w.node.appendChild(S),o+=r}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(e){var t=this.w,i=new M(this.ctx),a=t.config.xaxis.axisBorder;if(a.show){var s=0;t.config.chart.type==="bar"&&t.globals.isXNumeric&&(s-=15);var n=i.drawLine(t.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,t.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders?this.elgrid.elGridBorders.add(n):e.add(n)}}},{key:"inversedYAxisTitleText",value:function(e){var t=this.w,i=new M(this.ctx);if(t.config.xaxis.title.text!==void 0){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:t.globals.gridWidth/2+t.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(t.config.xaxis.title.style.fontSize)+t.config.xaxis.title.offsetY+20,text:t.config.xaxis.title.text,textAnchor:"middle",fontSize:t.config.xaxis.title.style.fontSize,fontFamily:t.config.xaxis.title.style.fontFamily,fontWeight:t.config.xaxis.title.style.fontWeight,foreColor:t.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+t.config.xaxis.title.style.cssClass});a.add(s),e.add(a)}}},{key:"yAxisTitleRotate",value:function(e,t){var i=this.w,a=new M(this.ctx),s={width:0,height:0},n={width:0,height:0},r=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(e,"'] .apexcharts-yaxis-texts-g"));r!==null&&(s=r.getBoundingClientRect());var o=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(e,"'] .apexcharts-yaxis-title text"));if(o!==null&&(n=o.getBoundingClientRect()),o!==null){var h=this.xPaddingForYAxisTitle(e,s,n,t);o.setAttribute("x",h.xPos-(t?10:0))}if(o!==null){var c=a.rotateAroundCenter(o);o.setAttribute("transform","rotate(".concat(t?-1*i.config.yaxis[e].title.rotate:i.config.yaxis[e].title.rotate," ").concat(c.x," ").concat(c.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(e,t,i,a){var s=this.w,n=0,r=0,o=10;return s.config.yaxis[e].title.text===void 0||e<0?{xPos:r,padd:0}:(a?(r=t.width+s.config.yaxis[e].title.offsetX+i.width/2+o/2,(n+=1)===0&&(r-=o/2)):(r=-1*t.width+s.config.yaxis[e].title.offsetX+o/2+i.width/2,s.globals.isBarHorizontal&&(o=25,r=-1*t.width-s.config.yaxis[e].title.offsetX-o)),{xPos:r,padd:o})}},{key:"setYAxisXPosition",value:function(e,t){var i=this.w,a=0,s=0,n=18,r=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map(function(o,h){var c=i.globals.ignoreYAxisIndexes.indexOf(h)>-1||!o.show||o.floating||e[h].width===0,d=e[h].width+t[h].width;o.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[h]=s-o.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+r,c||(r=r+d+20),i.globals.translateYAxisX[h]=s-o.labels.offsetX+20):(a=i.globals.translateX-n,c||(n=n+d+20),i.globals.translateYAxisX[h]=a+o.labels.offsetX)})}},{key:"setYAxisTextAlignments",value:function(){var e=this.w,t=e.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(t=P.listToArray(t)).forEach(function(i,a){var s=e.config.yaxis[a];if(s&&s.labels.align!==void 0){var n=e.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(a,"'] .apexcharts-yaxis-texts-g")),r=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(a,"'] .apexcharts-yaxis-label"));r=P.listToArray(r);var o=n.getBoundingClientRect();s.labels.align==="left"?(r.forEach(function(h,c){h.setAttribute("text-anchor","start")}),s.opposite||n.setAttribute("transform","translate(-".concat(o.width,", 0)"))):s.labels.align==="center"?(r.forEach(function(h,c){h.setAttribute("text-anchor","middle")}),n.setAttribute("transform","translate(".concat(o.width/2*(s.opposite?1:-1),", 0)"))):s.labels.align==="right"&&(r.forEach(function(h,c){h.setAttribute("text-anchor","end")}),s.opposite&&n.setAttribute("transform","translate(".concat(o.width,", 0)")))}})}}]),v}(),ot=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.documentEvent=P.bind(this.documentEvent,this)}return Y(v,[{key:"addEventListener",value:function(e,t){var i=this.w;i.globals.events.hasOwnProperty(e)?i.globals.events[e].push(t):i.globals.events[e]=[t]}},{key:"removeEventListener",value:function(e,t){var i=this.w;if(i.globals.events.hasOwnProperty(e)){var a=i.globals.events[e].indexOf(t);a!==-1&&i.globals.events[e].splice(a,1)}}},{key:"fireEvent",value:function(e,t){var i=this.w;if(i.globals.events.hasOwnProperty(e)){t&&t.length||(t=[]);for(var a=i.globals.events[e],s=a.length,n=0;n0&&(t=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=t.filter(function(s){return s.name===e})[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=P.extend(Re,i);this.w.globals.locale=a.options}}]),v}(),ht=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"drawAxis",value:function(e,t){var i,a,s=this.w.globals,n=this.w.config,r=new ce(this.ctx,t),o=new Ae(this.ctx,t);s.axisCharts&&e!=="radar"&&(s.isBarHorizontal?(a=o.drawYaxisInversed(0),i=r.drawXaxisInversed(0),s.dom.elGraphical.add(i),s.dom.elGraphical.add(a)):(i=r.drawXaxis(),s.dom.elGraphical.add(i),n.yaxis.map(function(h,c){s.ignoreYAxisIndexes.indexOf(c)===-1&&(a=o.drawYaxis(c),s.dom.Paper.add(a))})))}}]),v}(),Se=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"drawXCrosshairs",value:function(){var e=this.w,t=new M(this.ctx),i=new B(this.ctx),a=e.config.xaxis.crosshairs.fill.gradient,s=e.config.xaxis.crosshairs.dropShadow,n=e.config.xaxis.crosshairs.fill.type,r=a.colorFrom,o=a.colorTo,h=a.opacityFrom,c=a.opacityTo,d=a.stops,g=s.enabled,p=s.left,x=s.top,f=s.blur,y=s.color,w=s.opacity,S=e.config.xaxis.crosshairs.fill.color;if(e.config.xaxis.crosshairs.show){n==="gradient"&&(S=t.drawGradient("vertical",r,o,h,c,null,d,null));var k=t.drawRect();e.config.xaxis.crosshairs.width===1&&(k=t.drawLine());var l=e.globals.gridHeight;(!P.isNumber(l)||l<0)&&(l=0);var u=e.config.xaxis.crosshairs.width;(!P.isNumber(u)||u<0)&&(u=0),k.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:l,width:u,height:l,fill:S,filter:"none","fill-opacity":e.config.xaxis.crosshairs.opacity,stroke:e.config.xaxis.crosshairs.stroke.color,"stroke-width":e.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":e.config.xaxis.crosshairs.stroke.dashArray}),g&&(k=i.dropShadow(k,{left:p,top:x,blur:f,color:y,opacity:w})),e.globals.dom.elGraphical.add(k)}}},{key:"drawYCrosshairs",value:function(){var e=this.w,t=new M(this.ctx),i=e.config.yaxis[0].crosshairs,a=e.globals.barPadForNumericAxis;if(e.config.yaxis[0].crosshairs.show){var s=t.drawLine(-a,0,e.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),e.globals.dom.elGraphical.add(s)}var n=t.drawLine(-a,0,e.globals.gridWidth+a,0,i.stroke.color,0,0);n.attr({class:"apexcharts-ycrosshairs-hidden"}),e.globals.dom.elGraphical.add(n)}}]),v}(),ct=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"checkResponsiveConfig",value:function(e){var t=this,i=this.w,a=i.config;if(a.responsive.length!==0){var s=a.responsive.slice();s.sort(function(h,c){return h.breakpoint>c.breakpoint?1:c.breakpoint>h.breakpoint?-1:0}).reverse();var n=new le({}),r=function(){var h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},c=s[0].breakpoint,d=window.innerWidth>0?window.innerWidth:screen.width;if(d>c){var g=N.extendArrayProps(n,i.globals.initialConfig,i);h=P.extend(g,h),h=P.extend(i.config,h),t.overrideResponsiveOptions(h)}else for(var p=0;p0&&typeof t.config.colors[0]=="function"&&(t.globals.colors=t.config.series.map(function(p,x){var f=t.config.colors[x];return f||(f=t.config.colors[0]),typeof f=="function"?(e.isColorFn=!0,f({value:t.globals.axisCharts?t.globals.series[x][0]?t.globals.series[x][0]:0:t.globals.series[x],seriesIndex:x,dataPointIndex:x,w:t})):f}))),t.globals.seriesColors.map(function(p,x){p&&(t.globals.colors[x]=p)}),t.config.theme.monochrome.enabled){var a=[],s=t.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(s=t.globals.series[0].length*t.globals.series.length);for(var n=t.config.theme.monochrome.color,r=1/(s/t.config.theme.monochrome.shadeIntensity),o=t.config.theme.monochrome.shadeTo,h=0,c=0;c2&&arguments[2]!==void 0?arguments[2]:null,a=this.w,s=t||a.globals.series.length;if(i===null&&(i=this.isBarDistributed||this.isHeatmapDistributed||a.config.chart.type==="heatmap"&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),e.lengthe.globals.svgWidth&&(this.dCtx.lgRect.width=e.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(e,t){var i=e;if(this.w.globals.isMultiLineX){var a=t.map(function(n,r){return Array.isArray(n)?n.length:1}),s=Math.max.apply(Math,q(a));i=t[a.indexOf(s)]}return i}}]),v}(),pt=function(){function v(e){E(this,v),this.w=e.w,this.dCtx=e}return Y(v,[{key:"getxAxisLabelsCoords",value:function(){var e,t=this.w,i=t.globals.labels.slice();if(t.config.xaxis.convertedCatToNumeric&&i.length===0&&(i=t.globals.categoryLabels),t.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();e={width:a.width,height:a.height},t.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends=t.config.legend.position!=="left"&&t.config.legend.position!=="right"||t.config.legend.floating?0:this.dCtx.lgRect.width;var s=t.globals.xLabelFormatter,n=P.getLargestStringFromArr(i),r=this.dCtx.dimHelpers.getLargestStringFromMultiArr(n,i);t.globals.isBarHorizontal&&(r=n=t.globals.yAxisScale[0].result.reduce(function(x,f){return x.length>f.length?x:f},0));var o=new pe(this.dCtx.ctx),h=n;n=o.xLabelFormat(s,n,h,{i:void 0,dateFormatter:new G(this.dCtx.ctx).formatDate,w:t}),r=o.xLabelFormat(s,r,h,{i:void 0,dateFormatter:new G(this.dCtx.ctx).formatDate,w:t}),(t.config.xaxis.convertedCatToNumeric&&n===void 0||String(n).trim()==="")&&(r=n="1");var c=new M(this.dCtx.ctx),d=c.getTextRects(n,t.config.xaxis.labels.style.fontSize),g=d;if(n!==r&&(g=c.getTextRects(r,t.config.xaxis.labels.style.fontSize)),(e={width:d.width>=g.width?d.width:g.width,height:d.height>=g.height?d.height:g.height}).width*i.length>t.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&t.config.xaxis.labels.rotate!==0||t.config.xaxis.labels.rotateAlways){if(!t.globals.isBarHorizontal){t.globals.rotateXLabels=!0;var p=function(x){return c.getTextRects(x,t.config.xaxis.labels.style.fontSize,t.config.xaxis.labels.style.fontFamily,"rotate(".concat(t.config.xaxis.labels.rotate," 0 0)"),!1)};d=p(n),n!==r&&(g=p(r)),e.height=(d.height>g.height?d.height:g.height)/1.5,e.width=d.width>g.width?d.width:g.width}}else t.globals.rotateXLabels=!1}return t.config.xaxis.labels.show||(e={width:0,height:0}),{width:e.width,height:e.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var e,t=this.w;if(!t.globals.hasGroups)return{width:0,height:0};var i,a=((e=t.config.xaxis.group.style)===null||e===void 0?void 0:e.fontSize)||t.config.xaxis.labels.style.fontSize,s=t.globals.groups.map(function(d){return d.title}),n=P.getLargestStringFromArr(s),r=this.dCtx.dimHelpers.getLargestStringFromMultiArr(n,s),o=new M(this.dCtx.ctx),h=o.getTextRects(n,a),c=h;return n!==r&&(c=o.getTextRects(r,a)),i={width:h.width>=c.width?h.width:c.width,height:h.height>=c.height?h.height:c.height},t.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var e=this.w,t=0,i=0;if(e.config.xaxis.title.text!==void 0){var a=new M(this.dCtx.ctx).getTextRects(e.config.xaxis.title.text,e.config.xaxis.title.style.fontSize);t=a.width,i=a.height}return{width:t,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var e,t=this.w;this.dCtx.timescaleLabels=t.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map(function(s){return s.value}),a=i.reduce(function(s,n){return s===void 0?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):s.length>n.length?s:n},0);return 1.05*(e=new M(this.dCtx.ctx).getTextRects(a,t.config.xaxis.labels.style.fontSize)).width*i.length>t.globals.gridWidth&&t.config.xaxis.labels.rotate!==0&&(t.globals.overlappingXLabels=!0),e}},{key:"additionalPaddingXLabels",value:function(e){var t=this,i=this.w,a=i.globals,s=i.config,n=s.xaxis.type,r=e.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var o=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,h=function(c,d){(function(g){return a.collapsedSeriesIndices.indexOf(g)!==-1})(d)||function(g){if(t.dCtx.timescaleLabels&&t.dCtx.timescaleLabels.length){var p=t.dCtx.timescaleLabels[0],x=t.dCtx.timescaleLabels[t.dCtx.timescaleLabels.length-1].position+r/1.75-t.dCtx.yAxisWidthRight,f=p.position-r/1.75+t.dCtx.yAxisWidthLeft,y=i.config.legend.position==="right"&&t.dCtx.lgRect.width>0?t.dCtx.lgRect.width:0;x>a.svgWidth-a.translateX-y&&(a.skipLastTimelinelabel=!0),f<-(g.show&&!g.floating||s.chart.type!=="bar"&&s.chart.type!=="candlestick"&&s.chart.type!=="rangeBar"&&s.chart.type!=="boxPlot"?10:r/1.75)&&(a.skipFirstTimelinelabel=!0)}else n==="datetime"?t.dCtx.gridPad.rightString(o.niceMax).length?d:o.niceMax,p=c(g,{seriesIndex:r,dataPointIndex:-1,w:t}),x=p;if(p!==void 0&&p.length!==0||(p=g),t.globals.isBarHorizontal){a=0;var f=t.globals.labels.slice();p=c(p=P.getLargestStringFromArr(f),{seriesIndex:r,dataPointIndex:-1,w:t}),x=e.dCtx.dimHelpers.getLargestStringFromMultiArr(p,f)}var y=new M(e.dCtx.ctx),w="rotate(".concat(n.labels.rotate," 0 0)"),S=y.getTextRects(p,n.labels.style.fontSize,n.labels.style.fontFamily,w,!1),k=S;p!==x&&(k=y.getTextRects(x,n.labels.style.fontSize,n.labels.style.fontFamily,w,!1)),i.push({width:(h>k.width||h>S.width?h:k.width>S.width?k.width:S.width)+a,height:k.height>S.height?k.height:S.height})}else i.push({width:0,height:0})}),i}},{key:"getyAxisTitleCoords",value:function(){var e=this,t=this.w,i=[];return t.config.yaxis.map(function(a,s){if(a.show&&a.title.text!==void 0){var n=new M(e.dCtx.ctx),r="rotate(".concat(a.title.rotate," 0 0)"),o=n.getTextRects(a.title.text,a.title.style.fontSize,a.title.style.fontFamily,r,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})}),i}},{key:"getTotalYAxisWidth",value:function(){var e=this.w,t=0,i=0,a=0,s=e.globals.yAxisScale.length>1?10:0,n=new K(this.dCtx.ctx),r=function(o,h){var c=e.config.yaxis[h].floating,d=0;o.width>0&&!c?(d=o.width+s,function(g){return e.globals.ignoreYAxisIndexes.indexOf(g)>-1}(h)&&(d=d-o.width-s)):d=c||n.isYAxisHidden(h)?0:5,e.config.yaxis[h].opposite?a+=d:i+=d,t+=d};return e.globals.yLabelsCoords.map(function(o,h){r(o,h)}),e.globals.yTitleCoords.map(function(o,h){r(o,h)}),e.globals.isBarHorizontal&&!e.config.yaxis[0].floating&&(t=e.globals.yLabelsCoords[0].width+e.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,t}}]),v}(),xt=function(){function v(e){E(this,v),this.w=e.w,this.dCtx=e}return Y(v,[{key:"gridPadForColumnsInNumericAxis",value:function(e){var t=this.w;if(t.globals.noData||t.globals.allSeriesCollapsed)return 0;var i=function(c){return c==="bar"||c==="rangeBar"||c==="candlestick"||c==="boxPlot"},a=t.config.chart.type,s=0,n=i(a)?t.config.series.length:1;if(t.globals.comboBarCount>0&&(n=t.globals.comboBarCount),t.globals.collapsedSeries.forEach(function(c){i(c.type)&&(n-=1)}),t.config.chart.stacked&&(n=1),(i(a)||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&n>0){var r,o,h=Math.abs(t.globals.initialMaxX-t.globals.initialMinX);h<=3&&(h=t.globals.dataPoints),r=h/e,t.globals.minXDiff&&t.globals.minXDiff/r>0&&(o=t.globals.minXDiff/r),o>e/2&&(o/=2),(s=o/n*parseInt(t.config.plotOptions.bar.columnWidth,10)/100)<1&&(s=1),s=s/(n>1?1:1.5)+5,t.globals.barPadForNumericAxis=s}return s}},{key:"gridPadFortitleSubtitle",value:function(){var e=this,t=this.w,i=t.globals,a=this.dCtx.isSparkline||!t.globals.axisCharts?0:10;["title","subtitle"].forEach(function(r){t.config[r].text!==void 0?a+=t.config[r].margin:a+=e.dCtx.isSparkline||!t.globals.axisCharts?0:5}),!t.config.legend.show||t.config.legend.position!=="bottom"||t.config.legend.floating||t.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),n=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-s.height-n.height-a,i.translateY=i.translateY+s.height+n.height+a}},{key:"setGridXPosForDualYAxis",value:function(e,t){var i=this.w,a=new K(this.dCtx.ctx);i.config.yaxis.map(function(s,n){i.globals.ignoreYAxisIndexes.indexOf(n)!==-1||s.floating||a.isYAxisHidden(n)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(t[n].width+e[n].width)-parseInt(i.config.yaxis[n].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))})}}]),v}(),xe=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new ut(this),this.dimYAxis=new ft(this),this.dimXAxis=new pt(this),this.dimGrid=new xt(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return Y(v,[{key:"plotCoords",value:function(){var e=this,t=this.w,i=t.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.isSparkline&&(t.config.markers.discrete.length>0||t.config.markers.size>0)&&Object.entries(this.gridPad).forEach(function(s){var n=tt(s,2),r=n[0],o=n[1];e.gridPad[r]=Math.max(o,e.w.globals.markers.largestSize/1.5)}),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var e=this,t=this.w,i=t.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();t.globals.yLabelsCoords=[],t.globals.yTitleCoords=[],t.config.yaxis.map(function(p,x){t.globals.yLabelsCoords.push({width:a[x].width,index:x}),t.globals.yTitleCoords.push({width:s[x].width,index:x})}),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var n=this.dimXAxis.getxAxisLabelsCoords(),r=this.dimXAxis.getxAxisGroupLabelsCoords(),o=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(n,o,r),i.translateXAxisY=t.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=t.globals.rotateXLabels&&t.globals.isXNumeric&&t.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,t.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(t.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+t.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+t.config.xaxis.labels.offsetX;var h=this.yAxisWidth,c=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-o.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-n.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var d=10;(t.config.chart.type==="radar"||this.isSparkline)&&(h=0,c=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||t.config.chart.type==="treemap")&&(h=0,c=0,d=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(n);var g=function(){i.translateX=h,i.gridHeight=i.svgHeight-e.lgRect.height-c-(e.isSparkline||t.config.chart.type==="treemap"?0:t.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-h};switch(t.config.xaxis.position==="top"&&(d=i.xAxisHeight-t.config.xaxis.axisTicks.height-5),t.config.legend.position){case"bottom":i.translateY=d,g();break;case"top":i.translateY=this.lgRect.height+d,g();break;case"left":i.translateY=d,i.translateX=this.lgRect.width+h,i.gridHeight=i.svgHeight-c-12,i.gridWidth=i.svgWidth-this.lgRect.width-h;break;case"right":i.translateY=d,i.translateX=h,i.gridHeight=i.svgHeight-c-12,i.gridWidth=i.svgWidth-this.lgRect.width-h-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new Ae(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var e=this.w,t=e.globals,i=e.config,a=0;e.config.legend.show&&!e.config.legend.floating&&(a=20);var s=i.chart.type==="pie"||i.chart.type==="polarArea"||i.chart.type==="donut"?"pie":"radialBar",n=i.plotOptions[s].offsetY,r=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return t.gridHeight=t.svgHeight-i.grid.padding.left+i.grid.padding.right,t.gridWidth=t.gridHeight,t.translateY=n,void(t.translateX=r+(t.svgWidth-t.gridWidth)/2);switch(i.legend.position){case"bottom":t.gridHeight=t.svgHeight-this.lgRect.height-t.goldenPadding,t.gridWidth=t.svgWidth,t.translateY=n-10,t.translateX=r+(t.svgWidth-t.gridWidth)/2;break;case"top":t.gridHeight=t.svgHeight-this.lgRect.height-t.goldenPadding,t.gridWidth=t.svgWidth,t.translateY=this.lgRect.height+n+10,t.translateX=r+(t.svgWidth-t.gridWidth)/2;break;case"left":t.gridWidth=t.svgWidth-this.lgRect.width-a,t.gridHeight=i.chart.height!=="auto"?t.svgHeight:t.gridWidth,t.translateY=n,t.translateX=r+this.lgRect.width+a;break;case"right":t.gridWidth=t.svgWidth-this.lgRect.width-a-5,t.gridHeight=i.chart.height!=="auto"?t.svgHeight:t.gridWidth,t.translateY=n,t.translateX=r+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(e,t,i){var a=this.w,s=a.globals.hasGroups?2:1,n=i.height+e.height+t.height,r=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,o=a.globals.rotateXLabels?22:10,h=a.globals.rotateXLabels&&a.config.legend.position==="bottom"?10:0;this.xAxisHeight=n*r+s*o+h,this.xAxisWidth=e.width,this.xAxisHeight-t.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightd&&(this.yAxisWidth=d)}}]),v}(),bt=function(){function v(e){E(this,v),this.w=e.w,this.lgCtx=e}return Y(v,[{key:"getLegendStyles",value:function(){var e=document.createElement("style");e.setAttribute("type","text/css");var t=document.createTextNode(` +
`):'
')+"
".concat(a[0],': ')+r+"
"+"
".concat(a[1],': ')+n+"
"+(o?"
".concat(a[2],': ')+o+"
":"")+"
".concat(a[3],': ')+h+"
"+"
".concat(a[4],': ')+c+"
"}}]),m}(),ce=function(){function m(e){F(this,m),this.opts=e}return R(m,[{key:"init",value:function(e){var t=e.responsiveOverride,i=this.opts,a=new ie,s=new he(i);this.chartType=i.chart.type,i=this.extendYAxis(i),i=this.extendAnnotations(i);var r=a.init(),n={};if(i&&V(i)==="object"){var o,h,c,d,u,p,f,b,v,w,k={};k=["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(i.chart.type)!==-1?s[i.chart.type]():s.line(),(o=i.plotOptions)!==null&&o!==void 0&&(h=o.bar)!==null&&h!==void 0&&h.isFunnel&&(k=s.funnel()),i.chart.stacked&&i.chart.type==="bar"&&(k=s.stackedBars()),(c=i.chart.brush)!==null&&c!==void 0&&c.enabled&&(k=s.brush(k)),i.chart.stacked&&i.chart.stackType==="100%"&&(i=s.stacked100(i)),(d=i.plotOptions)!==null&&d!==void 0&&(u=d.bar)!==null&&u!==void 0&&u.isDumbbell&&(i=s.dumbbell(i)),((p=i)===null||p===void 0||(f=p.stroke)===null||f===void 0?void 0:f.curve)==="monotoneCubic"&&(i.stroke.curve="smooth"),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(i),i.xaxis=i.xaxis||window.Apex.xaxis||{},t||(i.xaxis.convertedCatToNumeric=!1),((b=(i=this.checkForCatToNumericXAxis(this.chartType,k,i)).chart.sparkline)!==null&&b!==void 0&&b.enabled||(v=window.Apex.chart)!==null&&v!==void 0&&(w=v.sparkline)!==null&&w!==void 0&&w.enabled)&&(k=s.sparkline(k)),n=P.extend(r,k)}var l=P.extend(n,window.Apex);return r=P.extend(l,i),r=this.handleUserInputErrors(r)}},{key:"checkForCatToNumericXAxis",value:function(e,t,i){var a,s,r=new he(i),n=(e==="bar"||e==="boxPlot")&&((a=i.plotOptions)===null||a===void 0||(s=a.bar)===null||s===void 0?void 0:s.horizontal),o=e==="pie"||e==="polarArea"||e==="donut"||e==="radar"||e==="radialBar"||e==="heatmap",h=i.xaxis.type!=="datetime"&&i.xaxis.type!=="numeric",c=i.xaxis.tickPlacement?i.xaxis.tickPlacement:t.xaxis&&t.xaxis.tickPlacement;return n||o||!h||c==="between"||(i=r.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(e,t){var i=new ie;(e.yaxis===void 0||!e.yaxis||Array.isArray(e.yaxis)&&e.yaxis.length===0)&&(e.yaxis={}),e.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(e.yaxis=P.extend(e.yaxis,window.Apex.yaxis)),e.yaxis.constructor!==Array?e.yaxis=[P.extend(i.yAxis,e.yaxis)]:e.yaxis=P.extendArray(e.yaxis,i.yAxis);var a=!1;e.yaxis.forEach(function(r){r.logarithmic&&(a=!0)});var s=e.series;return t&&!s&&(s=t.config.series),a&&s.length!==e.yaxis.length&&s.length&&(e.yaxis=s.map(function(r,n){if(r.name||(s[n].name="series-".concat(n+1)),e.yaxis[n])return e.yaxis[n].seriesName=s[n].name,e.yaxis[n];var o=P.extend(i.yAxis,e.yaxis[0]);return o.show=!1,o})),a&&s.length>1&&s.length!==e.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes"),e}},{key:"extendAnnotations",value:function(e){return e.annotations===void 0&&(e.annotations={},e.annotations.yaxis=[],e.annotations.xaxis=[],e.annotations.points=[]),e=this.extendYAxisAnnotations(e),e=this.extendXAxisAnnotations(e),e=this.extendPointAnnotations(e)}},{key:"extendYAxisAnnotations",value:function(e){var t=new ie;return e.annotations.yaxis=P.extendArray(e.annotations.yaxis!==void 0?e.annotations.yaxis:[],t.yAxisAnnotation),e}},{key:"extendXAxisAnnotations",value:function(e){var t=new ie;return e.annotations.xaxis=P.extendArray(e.annotations.xaxis!==void 0?e.annotations.xaxis:[],t.xAxisAnnotation),e}},{key:"extendPointAnnotations",value:function(e){var t=new ie;return e.annotations.points=P.extendArray(e.annotations.points!==void 0?e.annotations.points:[],t.pointAnnotation),e}},{key:"checkForDarkTheme",value:function(e){e.theme&&e.theme.mode==="dark"&&(e.tooltip||(e.tooltip={}),e.tooltip.theme!=="light"&&(e.tooltip.theme="dark"),e.chart.foreColor||(e.chart.foreColor="#f6f7f8"),e.chart.background||(e.chart.background="#424242"),e.theme.palette||(e.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(e){var t=e;if(t.tooltip.shared&&t.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if(t.chart.type==="bar"&&t.plotOptions.bar.horizontal){if(t.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");t.yaxis[0].reversed&&(t.yaxis[0].opposite=!0),t.xaxis.tooltip.enabled=!1,t.yaxis[0].tooltip.enabled=!1,t.chart.zoom.enabled=!1}return t.chart.type!=="bar"&&t.chart.type!=="rangeBar"||t.tooltip.shared&&t.xaxis.crosshairs.width==="barWidth"&&t.series.length>1&&(t.xaxis.crosshairs.width="tickWidth"),t.chart.type!=="candlestick"&&t.chart.type!=="boxPlot"||t.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(t.chart.type," chart is not supported.")),t.yaxis[0].reversed=!1),t}}]),m}(),qe=function(){function m(){F(this,m)}return R(m,[{key:"initGlobalVars",value:function(e){e.series=[],e.seriesCandleO=[],e.seriesCandleH=[],e.seriesCandleM=[],e.seriesCandleL=[],e.seriesCandleC=[],e.seriesRangeStart=[],e.seriesRangeEnd=[],e.seriesRange=[],e.seriesPercent=[],e.seriesGoals=[],e.seriesX=[],e.seriesZ=[],e.seriesNames=[],e.seriesTotals=[],e.seriesLog=[],e.seriesColors=[],e.stackedSeriesTotals=[],e.seriesXvalues=[],e.seriesYvalues=[],e.labels=[],e.hasXaxisGroups=!1,e.groups=[],e.hasSeriesGroups=!1,e.seriesGroups=[],e.categoryLabels=[],e.timescaleLabels=[],e.noLabelsProvided=!1,e.resizeTimer=null,e.selectionResizeTimer=null,e.delayedElements=[],e.pointsArray=[],e.dataLabelsRects=[],e.isXNumeric=!1,e.skipLastTimelinelabel=!1,e.skipFirstTimelinelabel=!1,e.isDataXYZ=!1,e.isMultiLineX=!1,e.isMultipleYAxis=!1,e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE,e.minYArr=[],e.maxYArr=[],e.maxX=-Number.MAX_VALUE,e.minX=Number.MAX_VALUE,e.initialMaxX=-Number.MAX_VALUE,e.initialMinX=Number.MAX_VALUE,e.maxDate=0,e.minDate=Number.MAX_VALUE,e.minZ=Number.MAX_VALUE,e.maxZ=-Number.MAX_VALUE,e.minXDiff=Number.MAX_VALUE,e.yAxisScale=[],e.xAxisScale=null,e.xAxisTicksPositions=[],e.yLabelsCoords=[],e.yTitleCoords=[],e.barPadForNumericAxis=0,e.padHorizontal=0,e.xRange=0,e.yRange=[],e.zRange=0,e.dataPoints=0,e.xTickAmount=0}},{key:"globalVars",value:function(e){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:e.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:e.chart.toolbar.autoSelected==="zoom"&&e.chart.toolbar.tools.zoom&&e.chart.zoom.enabled,panEnabled:e.chart.toolbar.autoSelected==="pan"&&e.chart.toolbar.tools.pan,selectionEnabled:e.chart.toolbar.autoSelected==="selection"&&e.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null}}},{key:"init",value:function(e){var t=this.globalVars(e);return this.initGlobalVars(t),t.initialConfig=P.extend({},e),t.initialSeries=P.clone(e.series),t.lastXAxis=P.clone(t.initialConfig.xaxis),t.lastYAxis=P.clone(t.initialConfig.yaxis),t}}]),m}(),yt=function(){function m(e){F(this,m),this.opts=e}return R(m,[{key:"init",value:function(){var e=new ce(this.opts).init({responsiveOverride:!1});return{config:e,globals:new qe().init(e)}}}]),m}(),Q=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return R(m,[{key:"clippedImgArea",value:function(e){var t=this.w,i=t.config,a=parseInt(t.globals.gridWidth,10),s=parseInt(t.globals.gridHeight,10),r=a>s?a:s,n=e.image,o=0,h=0;e.width===void 0&&e.height===void 0?i.fill.image.width!==void 0&&i.fill.image.height!==void 0?(o=i.fill.image.width+1,h=i.fill.image.height):(o=r+1,h=r):(o=e.width,h=e.height);var c=document.createElementNS(t.globals.SVGNS,"pattern");z.setAttrs(c,{id:e.patternID,patternUnits:e.patternUnits?e.patternUnits:"userSpaceOnUse",width:o+"px",height:h+"px"});var d=document.createElementNS(t.globals.SVGNS,"image");c.appendChild(d),d.setAttributeNS(window.SVG.xlink,"href",n),z.setAttrs(d,{x:0,y:0,preserveAspectRatio:"none",width:o+"px",height:h+"px"}),d.style.opacity=e.opacity,t.globals.dom.elDefs.node.appendChild(c)}},{key:"getSeriesIndex",value:function(e){var t=this.w,i=t.config.chart.type;return(i==="bar"||i==="rangeBar")&&t.config.plotOptions.bar.distributed||i==="heatmap"||i==="treemap"?this.seriesIndex=e.seriesNumber:this.seriesIndex=e.seriesNumber%t.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(e){var t=this.w;this.opts=e;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(e);var n=this.getFillColors()[this.seriesIndex];t.globals.seriesColors[this.seriesIndex]!==void 0&&(n=t.globals.seriesColors[this.seriesIndex]),typeof n=="function"&&(n=n({seriesIndex:this.seriesIndex,dataPointIndex:e.dataPointIndex,value:e.value,w:t}));var o=e.fillType?e.fillType:this.getFillType(this.seriesIndex),h=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;e.color&&(n=e.color),n||(n="#fff",console.warn("undefined color - ApexCharts"));var c=n;if(n.indexOf("rgb")===-1?n.length<9&&(c=P.hexToRgba(n,h)):n.indexOf("rgba")>-1&&(h=P.getOpacityFromRGBA(n)),e.opacity&&(h=e.opacity),o==="pattern"&&(a=this.handlePatternFill({fillConfig:e.fillConfig,patternFill:a,fillColor:n,fillOpacity:h,defaultColor:c})),o==="gradient"&&(s=this.handleGradientFill({fillConfig:e.fillConfig,fillColor:n,fillOpacity:h,i:this.seriesIndex})),o==="image"){var d=r.fill.image.src,u=e.patternID?e.patternID:"";this.clippedImgArea({opacity:h,image:Array.isArray(d)?e.seriesNumber-1&&(p=P.getOpacityFromRGBA(u));var f=r.gradient.opacityTo===void 0?i:Array.isArray(r.gradient.opacityTo)?r.gradient.opacityTo[s]:r.gradient.opacityTo;if(r.gradient.gradientToColors===void 0||r.gradient.gradientToColors.length===0)n=r.gradient.shade==="dark"?c.shadeColor(-1*parseFloat(r.gradient.shadeIntensity),t.indexOf("rgb")>-1?P.rgb2hex(t):t):c.shadeColor(parseFloat(r.gradient.shadeIntensity),t.indexOf("rgb")>-1?P.rgb2hex(t):t);else if(r.gradient.gradientToColors[o.seriesNumber]){var b=r.gradient.gradientToColors[o.seriesNumber];n=b,b.indexOf("rgba")>-1&&(f=P.getOpacityFromRGBA(b))}else n=t;if(r.gradient.gradientFrom&&(u=r.gradient.gradientFrom),r.gradient.gradientTo&&(n=r.gradient.gradientTo),r.gradient.inverseColors){var v=u;u=n,n=v}return u.indexOf("rgb")>-1&&(u=P.rgb2hex(u)),n.indexOf("rgb")>-1&&(n=P.rgb2hex(n)),h.drawGradient(d,u,n,p,f,o.size,r.gradient.stops,r.gradient.colorStops,s)}}]),m}(),fe=function(){function m(e,t){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"setGlobalMarkerSize",value:function(){var e=this.w;if(e.globals.markers.size=Array.isArray(e.config.markers.size)?e.config.markers.size:[e.config.markers.size],e.globals.markers.size.length>0){if(e.globals.markers.size.length4&&arguments[4]!==void 0&&arguments[4],n=this.w,o=t,h=e,c=null,d=new z(this.ctx),u=n.config.markers.discrete&&n.config.markers.discrete.length;if((n.globals.markers.size[t]>0||r||u)&&(c=d.group({class:r||u?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(n.globals.cuid,")")),Array.isArray(h.x))for(var p=0;p0:n.config.markers.size>0)||r||u){P.isNumber(h.y[p])?b+=" w".concat(P.randomId()):b="apexcharts-nullpoint";var v=this.getMarkerConfig({cssClass:b,seriesIndex:t,dataPointIndex:f});n.config.series[o].data[f]&&(n.config.series[o].data[f].fillColor&&(v.pointFillColor=n.config.series[o].data[f].fillColor),n.config.series[o].data[f].strokeColor&&(v.pointStrokeColor=n.config.series[o].data[f].strokeColor)),a&&(v.pSize=a),(h.x[p]<0||h.x[p]>n.globals.gridWidth||h.y[p]<-n.globals.markers.largestSize||h.y[p]>n.globals.gridHeight+n.globals.markers.largestSize)&&(v.pSize=0),(s=d.drawMarker(h.x[p],h.y[p],v)).attr("rel",f),s.attr("j",f),s.attr("index",t),s.node.setAttribute("default-marker-size",v.pSize),new U(this.ctx).setSelectionFilter(s,t,f),this.addEvents(s),c&&c.add(s)}else n.globals.pointsArray[t]===void 0&&(n.globals.pointsArray[t]=[]),n.globals.pointsArray[t].push([h.x[p],h.y[p]])}return c}},{key:"getMarkerConfig",value:function(e){var t=e.cssClass,i=e.seriesIndex,a=e.dataPointIndex,s=a===void 0?null:a,r=e.finishRadius,n=r===void 0?null:r,o=this.w,h=this.getMarkerStyle(i),c=o.globals.markers.size[i],d=o.config.markers;return s!==null&&d.discrete.length&&d.discrete.map(function(u){u.seriesIndex===i&&u.dataPointIndex===s&&(h.pointStrokeColor=u.strokeColor,h.pointFillColor=u.fillColor,c=u.size,h.pointShape=u.shape)}),{pSize:n===null?c:n,pRadius:d.radius,width:Array.isArray(d.width)?d.width[i]:d.width,height:Array.isArray(d.height)?d.height[i]:d.height,pointStrokeWidth:Array.isArray(d.strokeWidth)?d.strokeWidth[i]:d.strokeWidth,pointStrokeColor:h.pointStrokeColor,pointFillColor:h.pointFillColor,shape:h.pointShape||(Array.isArray(d.shape)?d.shape[i]:d.shape),class:t,pointStrokeOpacity:Array.isArray(d.strokeOpacity)?d.strokeOpacity[i]:d.strokeOpacity,pointStrokeDashArray:Array.isArray(d.strokeDashArray)?d.strokeDashArray[i]:d.strokeDashArray,pointFillOpacity:Array.isArray(d.fillOpacity)?d.fillOpacity[i]:d.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(e){var t=this.w,i=new z(this.ctx);e.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,e)),e.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,e)),e.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,e)),e.node.addEventListener("click",t.config.markers.onClick),e.node.addEventListener("dblclick",t.config.markers.onDblClick),e.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,e),{passive:!0})}},{key:"getMarkerStyle",value:function(e){var t=this.w,i=t.globals.markers.colors,a=t.config.markers.strokeColor||t.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[e]:a,pointFillColor:Array.isArray(i)?i[e]:i}}}]),m}(),Ze=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return R(m,[{key:"draw",value:function(e,t,i){var a=this.w,s=new z(this.ctx),r=i.realIndex,n=i.pointsPos,o=i.zRatio,h=i.elParent,c=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(c.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),Array.isArray(n.x))for(var d=0;dv.maxBubbleRadius&&(b=v.maxBubbleRadius)}a.config.chart.animations.enabled||(f=b);var w=n.x[d],k=n.y[d];if(f=f||0,k!==null&&a.globals.series[r][u]!==void 0||(p=!1),p){var l=this.drawPoint(w,k,f,b,r,u,t);c.add(l)}h.add(c)}}},{key:"drawPoint",value:function(e,t,i,a,s,r,n){var o=this.w,h=s,c=new oe(this.ctx),d=new U(this.ctx),u=new Q(this.ctx),p=new fe(this.ctx),f=new z(this.ctx),b=p.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:h,dataPointIndex:r,finishRadius:o.config.chart.type==="bubble"||o.globals.comboCharts&&o.config.series[s]&&o.config.series[s].type==="bubble"?a:null});a=b.pSize;var v,w=u.fillPath({seriesNumber:s,dataPointIndex:r,color:b.pointFillColor,patternUnits:"objectBoundingBox",value:o.globals.series[s][n]});if(b.shape==="circle"?v=f.drawCircle(i):b.shape!=="square"&&b.shape!=="rect"||(v=f.drawRect(0,0,b.width-b.pointStrokeWidth/2,b.height-b.pointStrokeWidth/2,b.pRadius)),o.config.series[h].data[r]&&o.config.series[h].data[r].fillColor&&(w=o.config.series[h].data[r].fillColor),v.attr({x:e-b.width/2-b.pointStrokeWidth/2,y:t-b.height/2-b.pointStrokeWidth/2,cx:e,cy:t,fill:w,"fill-opacity":b.pointFillOpacity,stroke:b.pointStrokeColor,r:a,"stroke-width":b.pointStrokeWidth,"stroke-dasharray":b.pointStrokeDashArray,"stroke-opacity":b.pointStrokeOpacity}),o.config.chart.dropShadow.enabled){var k=o.config.chart.dropShadow;d.dropShadow(v,k,s)}if(!this.initialAnim||o.globals.dataChanged||o.globals.resized)o.globals.animationEnded=!0;else{var l=o.config.chart.animations.speed;c.animateMarker(v,0,b.shape==="circle"?a:{width:b.width,height:b.height},l,o.globals.easing,function(){window.setTimeout(function(){c.animationCompleted(v)},100)})}if(o.globals.dataChanged&&b.shape==="circle")if(this.dynamicAnim){var g,x,y,A,S=o.config.chart.animations.dynamicAnimation.speed;(A=o.globals.previousPaths[s]&&o.globals.previousPaths[s][n])!=null&&(g=A.x,x=A.y,y=A.r!==void 0?A.r:a);for(var L=0;Lo.globals.gridHeight+u&&(t=o.globals.gridHeight+u/2),o.globals.dataLabelsRects[a]===void 0&&(o.globals.dataLabelsRects[a]=[]),o.globals.dataLabelsRects[a].push({x:e,y:t,width:d,height:u});var p=o.globals.dataLabelsRects[a].length-2,f=o.globals.lastDrawnDataLabelsIndexes[a]!==void 0?o.globals.lastDrawnDataLabelsIndexes[a][o.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(o.globals.dataLabelsRects[a][p]!==void 0){var b=o.globals.dataLabelsRects[a][f];(e>b.x+b.width||t>b.y+b.height||t+ut.globals.gridWidth+v.textRects.width+10)&&(o="");var w=t.globals.dataLabels.style.colors[r];((t.config.chart.type==="bar"||t.config.chart.type==="rangeBar")&&t.config.plotOptions.bar.distributed||t.config.dataLabels.distributed)&&(w=t.globals.dataLabels.style.colors[n]),typeof w=="function"&&(w=w({series:t.globals.series,seriesIndex:r,dataPointIndex:n,w:t})),p&&(w=p);var k=u.offsetX,l=u.offsetY;if(t.config.chart.type!=="bar"&&t.config.chart.type!=="rangeBar"||(k=0,l=0),v.drawnextLabel){var g=i.drawText({width:100,height:parseInt(u.style.fontSize,10),x:a+k,y:s+l,foreColor:w,textAnchor:h||u.textAnchor,text:o,fontSize:c||u.style.fontSize,fontFamily:u.style.fontFamily,fontWeight:u.style.fontWeight||"normal"});if(g.attr({class:"apexcharts-datalabel",cx:a,cy:s}),u.dropShadow.enabled){var x=u.dropShadow;new U(this.ctx).dropShadow(g,x)}d.add(g),t.globals.lastDrawnDataLabelsIndexes[r]===void 0&&(t.globals.lastDrawnDataLabelsIndexes[r]=[]),t.globals.lastDrawnDataLabelsIndexes[r].push(n)}}}},{key:"addBackgroundToDataLabel",value:function(e,t){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,n=t.width,o=t.height,h=new z(this.ctx).drawRect(t.x-s,t.y-r/2,n+2*s,o+r,a.borderRadius,i.config.chart.background==="transparent"?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);return a.dropShadow.enabled&&new U(this.ctx).dropShadow(h,a.dropShadow),h}},{key:"dataLabelsBackground",value:function(){var e=this.w;if(e.config.chart.type!=="bubble")for(var t=e.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&arguments[0]!==void 0)||arguments[0],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],a=this.w,s=P.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,e&&(t&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(e){for(var t=this.w,i=0;i-1&&(e[i].data=[]);return e}},{key:"toggleSeriesOnHover",value:function(e,t){var i=this.w;t||(t=e.target);var a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if(e.type==="mousemove"){var s=parseInt(t.getAttribute("rel"),10)-1,r=null,n=null;i.globals.axisCharts||i.config.chart.type==="radialBar"?i.globals.axisCharts?(r=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),n=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var o=0;o=o.from&&c<=o.to&&s[h].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[n])}else e.type==="mouseout"&&r("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"asc",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1){for(var s=i.config.series.map(function(n,o){return n.data&&n.data.length>0&&i.globals.collapsedSeriesIndices.indexOf(o)===-1&&(!i.globals.comboCharts||t.length===0||t.length&&t.indexOf(i.config.series[o].type)>-1)?o:-1}),r=e==="asc"?0:s.length-1;e==="asc"?r=0;e==="asc"?r++:r--)if(s[r]!==-1){a=s[r];break}}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map(function(e,t){return e.type==="bar"||e.type==="column"?t:-1}).filter(function(e){return e!==-1}):this.w.config.series.map(function(e,t){return t})}},{key:"getPreviousPaths",value:function(){var e=this.w;function t(r,n,o){for(var h=r[n].childNodes,c={type:o,paths:[],realIndex:r[n].getAttribute("data:realIndex")},d=0;d0)for(var a=function(r){for(var n=e.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(e.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(r,"'] rect")),o=[],h=function(d){var u=function(f){return n[d].getAttribute(f)},p={x:parseFloat(u("x")),y:parseFloat(u("y")),width:parseFloat(u("width")),height:parseFloat(u("height"))};o.push({rect:p,color:n[d].getAttribute("color")})},c=0;c0)for(var a=0;a0?t:[]});return e}}]),m}(),$e=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new G(this.ctx)}return R(m,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var e=this.w.config.series.slice(),t=new $(this.ctx);if(this.activeSeriesIndex=t.getActiveConfigSeriesIndex(),e[this.activeSeriesIndex].data!==void 0&&e[this.activeSeriesIndex].data.length>0&&e[this.activeSeriesIndex].data[0]!==null&&e[this.activeSeriesIndex].data[0].x!==void 0&&e[this.activeSeriesIndex].data[0]!==null)return!0}},{key:"isFormat2DArray",value:function(){var e=this.w.config.series.slice(),t=new $(this.ctx);if(this.activeSeriesIndex=t.getActiveConfigSeriesIndex(),e[this.activeSeriesIndex].data!==void 0&&e[this.activeSeriesIndex].data.length>0&&e[this.activeSeriesIndex].data[0]!==void 0&&e[this.activeSeriesIndex].data[0]!==null&&e[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(e,t){for(var i=this.w.config,a=this.w.globals,s=i.chart.type==="boxPlot"||i.series[t].type==="boxPlot",r=0;r=5?this.twoDSeries.push(P.parseNumber(e[t].data[r][4])):this.twoDSeries.push(P.parseNumber(e[t].data[r][1])),a.dataFormatXNumeric=!0),i.xaxis.type==="datetime"){var n=new Date(e[t].data[r][0]);n=new Date(n).getTime(),this.twoDSeriesX.push(n)}else this.twoDSeriesX.push(e[t].data[r][0]);for(var o=0;o-1&&(r=this.activeSeriesIndex);for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:this.ctx,s=this.w.config,r=this.w.globals,n=new j(a),o=s.labels.length>0?s.labels.slice():s.xaxis.categories.slice();if(r.isRangeBar=s.chart.type==="rangeBar"&&r.isBarHorizontal,r.hasXaxisGroups=s.xaxis.type==="category"&&s.xaxis.group.groups.length>0,r.hasXaxisGroups&&(r.groups=s.xaxis.group.groups),r.hasSeriesGroups=(t=e[0])===null||t===void 0?void 0:t.group,r.hasSeriesGroups){var h=[],c=Z(new Set(e.map(function(f){return f.group})));e.forEach(function(f,b){var v=c.indexOf(f.group);h[v]||(h[v]=[]),h[v].push(f.name)}),r.seriesGroups=h}for(var d=function(){for(var f=0;f0&&(this.twoDSeriesX=o,r.seriesX.push(this.twoDSeriesX))),r.labels.push(this.twoDSeriesX);var p=e[u].data.map(function(f){return P.parseNumber(f)});r.series.push(p)}r.seriesZ.push(this.threeDSeries),e[u].name!==void 0?r.seriesNames.push(e[u].name):r.seriesNames.push("series-"+parseInt(u+1,10)),e[u].color!==void 0?r.seriesColors.push(e[u].color):r.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(e){var t=this.w.globals,i=this.w.config;t.series=e.slice(),t.seriesNames=i.labels.slice();for(var a=0;a0?i.labels=t.xaxis.categories:t.labels.length>0?i.labels=t.labels.slice():this.fallbackToCategory?(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map(function(a){a.forEach(function(s){i.labels.indexOf(s.x)<0&&s.x&&i.labels.push(s.x)})}),i.labels=Array.from(new Set(i.labels.map(JSON.stringify)),JSON.parse)),t.xaxis.convertedCatToNumeric&&(new he(t).convertCatToNumericXaxis(t,this.ctx,i.seriesX[0]),this._generateExternalLabels(e))):this._generateExternalLabels(e)}},{key:"_generateExternalLabels",value:function(e){var t=this.w.globals,i=this.w.config,a=[];if(t.axisCharts){if(t.series.length>0)if(this.isFormatXY())for(var s=i.series.map(function(d,u){return d.data.filter(function(p,f,b){return b.findIndex(function(v){return v.x===p.x})===f})}),r=s.reduce(function(d,u,p,f){return f[d].length>u.length?d:p},0),n=0;n4&&arguments[4]!==void 0?arguments[4]:[],r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"12px",n=!(arguments.length>6&&arguments[6]!==void 0)||arguments[6],o=this.w,h=e[a]===void 0?"":e[a],c=h,d=o.globals.xLabelFormatter,u=o.config.xaxis.labels.formatter,p=!1,f=new pe(this.ctx),b=h;n&&(c=f.xLabelFormat(d,h,b,{i:a,dateFormatter:new j(this.ctx).formatDate,w:o}),u!==void 0&&(c=u(h,e[a],{i:a,dateFormatter:new j(this.ctx).formatDate,w:o})));var v,w;t.length>0?(v=t[a].unit,w=null,t.forEach(function(x){x.unit==="month"?w="year":x.unit==="day"?w="month":x.unit==="hour"?w="day":x.unit==="minute"&&(w="hour")}),p=w===v,i=t[a].position,c=t[a].value):o.config.xaxis.type==="datetime"&&u===void 0&&(c=""),c===void 0&&(c=""),c=Array.isArray(c)?c:c.toString();var k=new z(this.ctx),l={};l=o.globals.rotateXLabels&&n?k.getTextRects(c,parseInt(r,10),null,"rotate(".concat(o.config.xaxis.labels.rotate," 0 0)"),!1):k.getTextRects(c,parseInt(r,10));var g=!o.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(c)&&(c.indexOf("NaN")===0||c.toLowerCase().indexOf("invalid")===0||c.toLowerCase().indexOf("infinity")>=0||s.indexOf(c)>=0&&g)&&(c=""),{x:i,text:c,textRect:l,isBold:p}}},{key:"checkLabelBasedOnTickamount",value:function(e,t,i){var a=this.w,s=a.config.xaxis.tickAmount;return s==="dataPoints"&&(s=Math.round(a.globals.gridWidth/120)),s>i||e%Math.round(i/(s+1))==0||(t.text=""),t}},{key:"checkForOverflowingLabels",value:function(e,t,i,a,s){var r=this.w;if(e===0&&r.globals.skipFirstTimelinelabel&&(t.text=""),e===i-1&&r.globals.skipLastTimelinelabel&&(t.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var n=s[s.length-1];t.x0){o.config.yaxis[s].opposite===!0&&(e+=a.width);for(var d=t;d>=0;d--){var u=c+t/10+o.config.yaxis[s].labels.offsetY-1;o.globals.isBarHorizontal&&(u=r*d),o.config.chart.type==="heatmap"&&(u+=r/2);var p=h.drawLine(e+i.offsetX-a.width+a.offsetX,u+a.offsetY,e+i.offsetX+a.offsetX,u+a.offsetY,a.color);n.add(p),c+=r}}}}]),m}(),be=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"scaleSvgNode",value:function(e,t){var i=parseFloat(e.getAttributeNS(null,"width")),a=parseFloat(e.getAttributeNS(null,"height"));e.setAttributeNS(null,"width",i*t),e.setAttributeNS(null,"height",a*t),e.setAttributeNS(null,"viewBox","0 0 "+i+" "+a)}},{key:"fixSvgStringForIe11",value:function(e){if(!P.isIE11())return e.replace(/ /g," ");var t=0,i=e.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g,function(a){return++t===2?'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"':a});return i=(i=i.replace(/xmlns:NS\d+=""/g,"")).replace(/NS\d+:(\w+:\w+=")/g,"$1")}},{key:"getSvgString",value:function(e){e==null&&(e=1);var t=this.w.globals.dom.Paper.svg();if(e!==1){var i=this.w.globals.dom.Paper.node.cloneNode(!0);this.scaleSvgNode(i,e),t=new XMLSerializer().serializeToString(i)}return this.fixSvgStringForIe11(t)}},{key:"cleanup",value:function(){var e=this.w,t=e.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"),i=e.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"),a=e.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");Array.prototype.forEach.call(a,function(s){s.setAttribute("width",0)}),t&&t[0]&&(t[0].setAttribute("x",-500),t[0].setAttribute("x1",-500),t[0].setAttribute("x2",-500)),i&&i[0]&&(i[0].setAttribute("y",-100),i[0].setAttribute("y1",-100),i[0].setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var e=this.getSvgString(),t=new Blob([e],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(t)}},{key:"dataURI",value:function(e){var t=this;return new Promise(function(i){var a=t.w,s=e?e.scale||e.width/a.globals.svgWidth:1;t.cleanup();var r=document.createElement("canvas");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var n=a.config.chart.background==="transparent"?"#fff":a.config.chart.background,o=r.getContext("2d");o.fillStyle=n,o.fillRect(0,0,r.width*s,r.height*s);var h=t.getSvgString(s);if(window.canvg&&P.isIE11()){var c=window.canvg.Canvg.fromString(o,h,{ignoreClear:!0,ignoreDimensions:!0});c.start();var d=r.msToBlob();c.stop(),i({blob:d})}else{var u="data:image/svg+xml,"+encodeURIComponent(h),p=new Image;p.crossOrigin="anonymous",p.onload=function(){if(o.drawImage(p,0,0),r.msToBlob){var f=r.msToBlob();i({blob:f})}else{var b=r.toDataURL("image/png");i({imgURI:b})}},p.src=u}})}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),this.w.config.chart.toolbar.export.svg.filename,".svg")}},{key:"exportToPng",value:function(){var e=this;this.dataURI().then(function(t){var i=t.imgURI,a=t.blob;a?navigator.msSaveOrOpenBlob(a,e.w.globals.chartID+".png"):e.triggerDownload(i,e.w.config.chart.toolbar.export.png.filename,".png")})}},{key:"exportToCSV",value:function(e){var t=this,i=e.series,a=e.fileName,s=e.columnDelimiter,r=s===void 0?",":s,n=e.lineDelimiter,o=n===void 0?` +`:n,h=this.w;i||(i=h.config.series);var c=[],d=[],u="",p=h.globals.series.map(function(l,g){return h.globals.collapsedSeriesIndices.indexOf(g)===-1?l:[]}),f=Math.max.apply(Math,Z(i.map(function(l){return l.data?l.data.length:0}))),b=new $e(this.ctx),v=new ae(this.ctx),w=function(l){var g="";if(h.globals.axisCharts){if(h.config.xaxis.type==="category"||h.config.xaxis.convertedCatToNumeric)if(h.globals.isBarHorizontal){var x=h.globals.yLabelFormatters[0],y=new $(t.ctx).getActiveConfigSeriesIndex();g=x(h.globals.labels[l],{seriesIndex:y,dataPointIndex:l,w:h})}else g=v.getLabel(h.globals.labels,h.globals.timescaleLabels,0,l).text;h.config.xaxis.type==="datetime"&&(h.config.xaxis.categories.length?g=h.config.xaxis.categories[l]:h.config.labels.length&&(g=h.config.labels[l]))}else g=h.config.labels[l];return Array.isArray(g)&&(g=g.join(" ")),P.isNumber(g)?g:g.split(r).join("")},k=function(l,g){if(c.length&&g===0&&d.push(c.join(r)),l.data){l.data=l.data.length&&l.data||Z(Array(f)).map(function(){return""});for(var x=0;x=10?h.config.chart.toolbar.export.csv.dateFormatter(y):P.isNumber(y)?y:y.split(r).join("")));for(var A=0;A0&&!i.globals.isBarHorizontal&&(this.xaxisLabels=i.globals.timescaleLabels.slice()),i.config.xaxis.overwriteCategories&&(this.xaxisLabels=i.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],i.config.xaxis.position==="top"?this.offY=0:this.offY=i.globals.gridHeight+1,this.offY=this.offY+i.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal=i.config.chart.type==="bar"&&i.config.plotOptions.bar.horizontal,this.xaxisFontSize=i.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=i.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=i.config.xaxis.labels.style.colors,this.xaxisBorderWidth=i.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=i.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=i.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=i.config.xaxis.axisBorder.height,this.yaxis=i.config.yaxis[0]}return R(m,[{key:"drawXaxis",value:function(){var e=this.w,t=new z(this.ctx),i=t.group({class:"apexcharts-xaxis",transform:"translate(".concat(e.config.xaxis.offsetX,", ").concat(e.config.xaxis.offsetY,")")}),a=t.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});i.add(a);for(var s=[],r=0;r6&&arguments[6]!==void 0?arguments[6]:{},c=[],d=[],u=this.w,p=h.xaxisFontSize||this.xaxisFontSize,f=h.xaxisFontFamily||this.xaxisFontFamily,b=h.xaxisForeColors||this.xaxisForeColors,v=h.fontWeight||u.config.xaxis.labels.style.fontWeight,w=h.cssClass||u.config.xaxis.labels.style.cssClass,k=u.globals.padHorizontal,l=a.length,g=u.config.xaxis.type==="category"?u.globals.dataPoints:l;if(g===0&&l>g&&(g=l),s){var x=g>1?g-1:g;n=u.globals.gridWidth/Math.min(x,l-1),k=k+r(0,n)/2+u.config.xaxis.labels.offsetX}else n=u.globals.gridWidth/g,k=k+r(0,n)+u.config.xaxis.labels.offsetX;for(var y=function(S){var L=k-r(S,n)/2+u.config.xaxis.labels.offsetX;S===0&&l===1&&n/2===k&&g===1&&(L=u.globals.gridWidth/2);var C=o.axesUtils.getLabel(a,u.globals.timescaleLabels,L,S,c,p,e),M=28;if(u.globals.rotateXLabels&&e&&(M=22),u.config.xaxis.title.text&&u.config.xaxis.position==="top"&&(M+=parseFloat(u.config.xaxis.title.style.fontSize)+2),e||(M=M+parseFloat(p)+(u.globals.xAxisLabelsHeight-u.globals.xAxisGroupLabelsHeight)+(u.globals.rotateXLabels?10:0)),C=u.config.xaxis.tickAmount!==void 0&&u.config.xaxis.tickAmount!=="dataPoints"&&u.config.xaxis.type!=="datetime"?o.axesUtils.checkLabelBasedOnTickamount(S,C,l):o.axesUtils.checkForOverflowingLabels(S,C,l,c,d),u.config.xaxis.labels.show){var T=t.drawText({x:C.x,y:o.offY+u.config.xaxis.labels.offsetY+M-(u.config.xaxis.position==="top"?u.globals.xAxisHeight+u.config.xaxis.axisTicks.height-2:0),text:C.text,textAnchor:"middle",fontWeight:C.isBold?600:v,fontSize:p,fontFamily:f,foreColor:Array.isArray(b)?e&&u.config.xaxis.convertedCatToNumeric?b[u.globals.minX+S-1]:b[S]:b,isPlainText:!1,cssClass:(e?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+w});if(i.add(T),T.on("click",function(X){if(typeof u.config.chart.events.xAxisLabelClick=="function"){var Y=Object.assign({},u,{labelIndex:S});u.config.chart.events.xAxisLabelClick(X,o.ctx,Y)}}),e){var I=document.createElementNS(u.globals.SVGNS,"title");I.textContent=Array.isArray(C.text)?C.text.join(" "):C.text,T.node.appendChild(I),C.text!==""&&(c.push(C.text),d.push(C))}}Sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(t=t+r+a.config.xaxis.axisTicks.height,a.config.xaxis.position==="top"&&(t=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var n=new z(this.ctx).drawLine(e+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,t+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(n),n.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var e=this.w,t=[],i=this.xaxisLabels.length,a=e.globals.padHorizontal;if(e.globals.timescaleLabels.length>0)for(var s=0;s0){var c=s[s.length-1].getBBox(),d=s[0].getBBox();c.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),d.x+d.width>e.globals.gridWidth&&!e.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var u=0;u0&&(this.xaxisLabels=t.globals.timescaleLabels.slice())}return R(m,[{key:"drawGridArea",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=this.w,i=new z(this.ctx);e===null&&(e=i.group({class:"apexcharts-grid"}));var a=i.drawLine(t.globals.padHorizontal,1,t.globals.padHorizontal,t.globals.gridHeight,"transparent"),s=i.drawLine(t.globals.padHorizontal,t.globals.gridHeight,t.globals.gridWidth,t.globals.gridHeight,"transparent");return e.add(s),e.add(a),e}},{key:"drawGrid",value:function(){var e=null;return this.w.globals.axisCharts&&(e=this.renderGrid(),this.drawGridArea(e.el)),e}},{key:"createGridMask",value:function(){var e=this.w,t=e.globals,i=new z(this.ctx),a=Array.isArray(e.config.stroke.width)?0:e.config.stroke.width;if(Array.isArray(e.config.stroke.width)){var s=0;e.config.stroke.width.forEach(function(d){s=Math.max(s,d)}),a=s}t.dom.elGridRectMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(t.cuid)),t.dom.elGridRectMarkerMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(t.cuid)),t.dom.elForecastMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elForecastMask.setAttribute("id","forecastMask".concat(t.cuid)),t.dom.elNonForecastMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elNonForecastMask.setAttribute("id","nonForecastMask".concat(t.cuid));var r=e.config.chart.type,n=0,o=0;(r==="bar"||r==="rangeBar"||r==="candlestick"||r==="boxPlot"||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&(n=e.config.grid.padding.left,o=e.config.grid.padding.right,t.barPadForNumericAxis>n&&(n=t.barPadForNumericAxis,o=t.barPadForNumericAxis)),t.dom.elGridRect=i.drawRect(-a-n-2,2*-a-2,t.gridWidth+a+o+n+4,t.gridHeight+4*a+4,0,"#fff");var h=e.globals.markers.largestSize+1;t.dom.elGridRectMarker=i.drawRect(2*-h,2*-h,t.gridWidth+4*h,t.gridHeight+4*h,0,"#fff"),t.dom.elGridRectMask.appendChild(t.dom.elGridRect.node),t.dom.elGridRectMarkerMask.appendChild(t.dom.elGridRectMarker.node);var c=t.dom.baseEl.querySelector("defs");c.appendChild(t.dom.elGridRectMask),c.appendChild(t.dom.elForecastMask),c.appendChild(t.dom.elNonForecastMask),c.appendChild(t.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(e){var t=e.i,i=e.x1,a=e.y1,s=e.x2,r=e.y2,n=e.xCount,o=e.parent,h=this.w;if(!(t===0&&h.globals.skipFirstTimelinelabel||t===n-1&&h.globals.skipLastTimelinelabel&&!h.config.xaxis.labels.formatter||h.config.chart.type==="radar")){h.config.grid.xaxis.lines.show&&this._drawGridLine({i:t,x1:i,y1:a,x2:s,y2:r,xCount:n,parent:o});var c=0;if(h.globals.hasXaxisGroups&&h.config.xaxis.tickPlacement==="between"){var d=h.globals.groups;if(d){for(var u=0,p=0;u2));s++);return!e.globals.isBarHorizontal||this.isRangeBar?(i=this.xaxisLabels.length,this.isRangeBar&&(i--,a=e.globals.labels.length,e.config.xaxis.tickAmount&&e.config.xaxis.labels.formatter&&(i=e.config.xaxis.tickAmount)),this._drawXYLines({xCount:i,tickAmount:a})):(i=a,a=e.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a})),this.drawGridBands(i,a),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:e.globals.gridWidth/i}}},{key:"drawGridBands",value:function(e,t){var i=this.w;if(i.config.grid.row.colors!==void 0&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/t,r=i.globals.gridWidth,n=0,o=0;n=i.config.grid.row.colors.length&&(o=0),this._drawGridBandRect({c:o,x1:0,y1:a,x2:r,y2:s,type:"row"}),a+=i.globals.gridHeight/t;if(i.config.grid.column.colors!==void 0&&i.config.grid.column.colors.length>0)for(var h=i.globals.isBarHorizontal||i.config.xaxis.tickPlacement!=="on"||i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric?e:e-1,c=i.globals.padHorizontal,d=i.globals.padHorizontal+i.globals.gridWidth/h,u=i.globals.gridHeight,p=0,f=0;p=i.config.grid.column.colors.length&&(f=0),this._drawGridBandRect({c:f,x1:c,y1:0,x2:d,y2:u,type:"column"}),c+=i.globals.gridWidth/h}}]),m}(),re=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"niceScale",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=arguments.length>4?arguments[4]:void 0,r=this.w,n=Math.abs(t-e);if((i=this._adjustTicksForSmallRange(i,a,n))==="dataPoints"&&(i=r.globals.dataPoints-1),e===Number.MIN_VALUE&&t===0||!P.isNumber(e)&&!P.isNumber(t)||e===Number.MIN_VALUE&&t===-Number.MAX_VALUE)return e=0,t=i,this.linearScale(e,t,i);e>t?(console.warn("axis.min cannot be greater than axis.max"),t=e+.1):e===t&&(e=e===0?0:e-.5,t=t===0?2:t+.5);var o=[];n<1&&s&&(r.config.chart.type==="candlestick"||r.config.series[a].type==="candlestick"||r.config.chart.type==="boxPlot"||r.config.series[a].type==="boxPlot"||r.globals.isRangeData)&&(t*=1.01);var h=i+1;h<2?h=2:h>2&&(h-=2);var c=n/h,d=Math.floor(P.log10(c)),u=Math.pow(10,d),p=Math.round(c/u);p<1&&(p=1);var f=p*u,b=f*Math.floor(e/f),v=f*Math.ceil(t/f),w=b;if(s&&n>2){for(;o.push(P.stripNumber(w,7)),!((w+=f)>v););return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}var k=e;(o=[]).push(P.stripNumber(k,7));for(var l=Math.abs(t-e)/i,g=0;g<=i;g++)k+=l,o.push(k);return o[o.length-2]>=t&&o.pop(),{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"linearScale",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,a=arguments.length>3?arguments[3]:void 0,s=Math.abs(t-e);(i=this._adjustTicksForSmallRange(i,a,s))==="dataPoints"&&(i=this.w.globals.dataPoints-1);var r=s/i;i===Number.MAX_VALUE&&(i=10,r=1);for(var n=[],o=e;i>=0;)n.push(o),o+=r,i-=1;return{result:n,niceMin:n[0],niceMax:n[n.length-1]}}},{key:"logarithmicScaleNice",value:function(e,t,i){t<=0&&(t=Math.max(e,i)),e<=0&&(e=Math.min(t,i));for(var a=[],s=Math.ceil(Math.log(t)/Math.log(i)+1),r=Math.floor(Math.log(e)/Math.log(i));r5)a.allSeriesCollapsed=!1,a.yAxisScale[e]=this.logarithmicScale(t,i,r.logBase),a.yAxisScale[e]=r.forceNiceScale?this.logarithmicScaleNice(t,i,r.logBase):this.logarithmicScale(t,i,r.logBase);else if(i!==-Number.MAX_VALUE&&P.isNumber(i))if(a.allSeriesCollapsed=!1,r.min===void 0&&r.max===void 0||r.forceNiceScale){var o=s.yaxis[e].max===void 0&&s.yaxis[e].min===void 0||s.yaxis[e].forceNiceScale;a.yAxisScale[e]=this.niceScale(t,i,r.tickAmount?r.tickAmount:n<5&&n>1?n+1:5,e,o)}else a.yAxisScale[e]=this.linearScale(t,i,r.tickAmount,e);else a.yAxisScale[e]=this.linearScale(0,5,5)}},{key:"setXScale",value:function(e,t){var i=this.w,a=i.globals,s=i.config.xaxis,r=Math.abs(t-e);return t!==-Number.MAX_VALUE&&P.isNumber(t)?a.xAxisScale=this.linearScale(e,t,s.tickAmount?s.tickAmount:r<5&&r>1?r+1:5,0):a.xAxisScale=this.linearScale(0,5,5),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var e=this,t=this.w.globals,i=this.w.config,a=t.minYArr.concat([]),s=t.maxYArr.concat([]),r=[];i.yaxis.forEach(function(n,o){var h=o;i.series.forEach(function(u,p){u.name===n.seriesName&&(h=p,o!==p?r.push({index:p,similarIndex:o,alreadyExists:!0}):r.push({index:p}))});var c=a[h],d=s[h];e.setYScaleForIndex(o,c,d)}),this.sameScaleInMultipleAxes(a,s,r)}},{key:"sameScaleInMultipleAxes",value:function(e,t,i){var a=this,s=this.w.config,r=this.w.globals,n=[];i.forEach(function(b){b.alreadyExists&&(n[b.index]===void 0&&(n[b.index]=[]),n[b.index].push(b.index),n[b.index].push(b.similarIndex))}),r.yAxisSameScaleIndices=n,n.forEach(function(b,v){n.forEach(function(w,k){var l,g;v!==k&&(l=b,g=w,l.filter(function(x){return g.indexOf(x)!==-1})).length>0&&(n[v]=n[v].concat(n[k]))})});var o=n.map(function(b){return b.filter(function(v,w){return b.indexOf(v)===w})}).map(function(b){return b.sort()});n=n.filter(function(b){return!!b});var h=o.slice(),c=h.map(function(b){return JSON.stringify(b)});h=h.filter(function(b,v){return c.indexOf(JSON.stringify(b))===v});var d=[],u=[];e.forEach(function(b,v){h.forEach(function(w,k){w.indexOf(v)>-1&&(d[k]===void 0&&(d[k]=[],u[k]=[]),d[k].push({key:v,value:b}),u[k].push({key:v,value:t[v]}))})});var p=Array.apply(null,Array(h.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),f=Array.apply(null,Array(h.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);d.forEach(function(b,v){b.forEach(function(w,k){p[v]=Math.min(w.value,p[v])})}),u.forEach(function(b,v){b.forEach(function(w,k){f[v]=Math.max(w.value,f[v])})}),e.forEach(function(b,v){u.forEach(function(w,k){var l=p[k],g=f[k];s.chart.stacked&&(g=0,w.forEach(function(x,y){x.value!==-Number.MAX_VALUE&&(g+=x.value),l!==Number.MIN_VALUE&&(l+=d[k][y].value)})),w.forEach(function(x,y){w[y].key===v&&(s.yaxis[v].min!==void 0&&(l=typeof s.yaxis[v].min=="function"?s.yaxis[v].min(r.minY):s.yaxis[v].min),s.yaxis[v].max!==void 0&&(g=typeof s.yaxis[v].max=="function"?s.yaxis[v].max(r.maxY):s.yaxis[v].max),a.setYScaleForIndex(v,l,g))})})})}},{key:"autoScaleY",value:function(e,t,i){e||(e=this);var a=e.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis not supported in a multi-yaxis chart."),t;var s=a.globals.seriesX[0],r=a.config.chart.stacked;return t.forEach(function(n,o){for(var h=0,c=0;c=i.xaxis.min){h=c;break}var d,u,p=a.globals.minYArr[o],f=a.globals.maxYArr[o],b=a.globals.stackedSeriesTotals;a.globals.series.forEach(function(v,w){var k=v[h];r?(k=b[h],d=u=k,b.forEach(function(l,g){s[g]<=i.xaxis.max&&s[g]>=i.xaxis.min&&(l>u&&l!==null&&(u=l),v[g]=i.xaxis.min){var x=l,y=l;a.globals.series.forEach(function(A,S){l!==null&&(x=Math.min(A[g],x),y=Math.max(A[g],y))}),y>u&&y!==null&&(u=y),xp&&(d=p),t.length>1?(t[w].min=n.min===void 0?d:n.min,t[w].max=n.max===void 0?u:n.max):(t[0].min=n.min===void 0?d:n.min,t[0].max=n.max===void 0?u:n.max)})}),t}}]),m}(),Xe=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.scales=new re(e)}return R(m,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=this.w.config,r=this.w.globals,n=-Number.MAX_VALUE,o=Number.MIN_VALUE;a===null&&(a=e+1);var h=r.series,c=h,d=h;s.chart.type==="candlestick"?(c=r.seriesCandleL,d=r.seriesCandleH):s.chart.type==="boxPlot"?(c=r.seriesCandleO,d=r.seriesCandleC):r.isRangeData&&(c=r.seriesRangeStart,d=r.seriesRangeEnd);for(var u=e;uc[u][p]&&c[u][p]<0&&(o=c[u][p])):r.hasNullValues=!0}}return s.chart.type==="rangeBar"&&r.seriesRangeStart.length&&r.isBarHorizontal&&(o=t),s.chart.type==="bar"&&(o<0&&n<0&&(n=0),o===Number.MIN_VALUE&&(o=0)),{minY:o,maxY:n,lowestY:t,highestY:i}}},{key:"setYRange",value:function(){var e=this.w.globals,t=this.w.config;e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(e.isMultipleYAxis)for(var a=0;a=0&&i<=10||t.yaxis[0].min!==void 0||t.yaxis[0].max!==void 0)&&(n=0),e.minY=i-5*n/100,i>0&&e.minY<0&&(e.minY=0),e.maxY=e.maxY+5*n/100}return t.yaxis.forEach(function(o,h){o.max!==void 0&&(typeof o.max=="number"?e.maxYArr[h]=o.max:typeof o.max=="function"&&(e.maxYArr[h]=o.max(e.isMultipleYAxis?e.maxYArr[h]:e.maxY)),e.maxY=e.maxYArr[h]),o.min!==void 0&&(typeof o.min=="number"?e.minYArr[h]=o.min:typeof o.min=="function"&&(e.minYArr[h]=o.min(e.isMultipleYAxis?e.minYArr[h]===Number.MIN_VALUE?0:e.minYArr[h]:e.minY)),e.minY=e.minYArr[h])}),e.isBarHorizontal&&["min","max"].forEach(function(o){t.xaxis[o]!==void 0&&typeof t.xaxis[o]=="number"&&(o==="min"?e.minY=t.xaxis[o]:e.maxY=t.xaxis[o])}),e.isMultipleYAxis?(this.scales.setMultipleYScales(),e.minY=i,e.yAxisScale.forEach(function(o,h){e.minYArr[h]=o.niceMin,e.maxYArr[h]=o.niceMax})):(this.scales.setYScaleForIndex(0,e.minY,e.maxY),e.minY=e.yAxisScale[0].niceMin,e.maxY=e.yAxisScale[0].niceMax,e.minYArr[0]=e.yAxisScale[0].niceMin,e.maxYArr[0]=e.yAxisScale[0].niceMax),{minY:e.minY,maxY:e.maxY,minYArr:e.minYArr,maxYArr:e.maxYArr,yAxisScale:e.yAxisScale}}},{key:"setXRange",value:function(){var e=this.w.globals,t=this.w.config,i=t.xaxis.type==="numeric"||t.xaxis.type==="datetime"||t.xaxis.type==="category"&&!e.noLabelsProvided||e.noLabelsProvided||e.isXNumeric;if(e.isXNumeric&&function(){for(var n=0;ne.dataPoints&&e.dataPoints!==0&&(a=e.dataPoints-1)):t.xaxis.tickAmount==="dataPoints"?(e.series.length>1&&(a=e.series[e.maxValsInArrayIndex].length-1),e.isXNumeric&&(a=e.maxX-e.minX-1)):a=t.xaxis.tickAmount,e.xTickAmount=a,t.xaxis.max!==void 0&&typeof t.xaxis.max=="number"&&(e.maxX=t.xaxis.max),t.xaxis.min!==void 0&&typeof t.xaxis.min=="number"&&(e.minX=t.xaxis.min),t.xaxis.range!==void 0&&(e.minX=e.maxX-t.xaxis.range),e.minX!==Number.MAX_VALUE&&e.maxX!==-Number.MAX_VALUE)if(t.xaxis.convertedCatToNumeric&&!e.dataFormatXNumeric){for(var s=[],r=e.minX-1;r0&&(e.xAxisScale=this.scales.linearScale(1,e.labels.length,a-1),e.seriesX=e.labels.slice());i&&(e.labels=e.xAxisScale.result.slice())}return e.isBarHorizontal&&e.labels.length&&(e.xTickAmount=e.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:e.minX,maxX:e.maxX}}},{key:"setZRange",value:function(){var e=this.w.globals;if(e.isDataXYZ){for(var t=0;t0){var n=s-a[r-1];n>0&&(e.minXDiff=Math.min(n,e.minXDiff))}}),e.dataPoints!==1&&e.minXDiff!==Number.MAX_VALUE||(e.minXDiff=.5)})}},{key:"_setStackedMinMax",value:function(){var e=this,t=this.w.globals;if(t.series.length){var i=t.seriesGroups;i.length||(i=[this.w.config.series.map(function(r){return r.name})]);var a={},s={};i.forEach(function(r){a[r]=[],s[r]=[],e.w.config.series.map(function(n,o){return r.indexOf(n.name)>-1?o:null}).filter(function(n){return n!==null}).forEach(function(n){for(var o=0;o0?a[r][o]+=parseFloat(t.series[n][o])+1e-4:s[r][o]+=parseFloat(t.series[n][o]))})}),Object.entries(a).forEach(function(r){var n=je(r,1)[0];a[n].forEach(function(o,h){t.maxY=Math.max(t.maxY,a[n][h]),t.minY=Math.min(t.minY,s[n][h])})})}}}]),m}(),Fe=function(){function m(e,t){F(this,m),this.ctx=e,this.elgrid=t,this.w=e.w;var i=this.w;this.xaxisFontSize=i.config.xaxis.labels.style.fontSize,this.axisFontFamily=i.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=i.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal=i.config.chart.type==="bar"&&i.config.plotOptions.bar.horizontal,this.xAxisoffX=0,i.config.xaxis.position==="bottom"&&(this.xAxisoffX=i.globals.gridHeight),this.drawnLabels=[],this.axesUtils=new ae(e)}return R(m,[{key:"drawYaxis",value:function(e){var t=this,i=this.w,a=new z(this.ctx),s=i.config.yaxis[e].labels.style,r=s.fontSize,n=s.fontFamily,o=s.fontWeight,h=a.group({class:"apexcharts-yaxis",rel:e,transform:"translate("+i.globals.translateYAxisX[e]+", 0)"});if(this.axesUtils.isYAxisHidden(e))return h;var c=a.group({class:"apexcharts-yaxis-texts-g"});h.add(c);var d=i.globals.yAxisScale[e].result.length-1,u=i.globals.gridHeight/d,p=i.globals.translateY,f=i.globals.yLabelFormatters[e],b=i.globals.yAxisScale[e].result.slice();b=this.axesUtils.checkForReversedLabels(e,b);var v="";if(i.config.yaxis[e].labels.show)for(var w=function(L){var C=b[L];C=f(C,L,i);var M=i.config.yaxis[e].labels.padding;i.config.yaxis[e].opposite&&i.config.yaxis.length!==0&&(M*=-1);var T="end";i.config.yaxis[e].opposite&&(T="start"),i.config.yaxis[e].labels.align==="left"?T="start":i.config.yaxis[e].labels.align==="center"?T="middle":i.config.yaxis[e].labels.align==="right"&&(T="end");var I=t.axesUtils.getYAxisForeColor(s.colors,e),X=i.config.yaxis[e].labels.offsetY;i.config.chart.type==="heatmap"&&(X-=(i.globals.gridHeight/i.globals.series.length-1)/2);var Y=a.drawText({x:M,y:p+d/10+X+1,text:C,textAnchor:T,fontSize:r,fontFamily:n,fontWeight:o,maxWidth:i.config.yaxis[e].labels.maxWidth,foreColor:Array.isArray(I)?I[L]:I,isPlainText:!1,cssClass:"apexcharts-yaxis-label "+s.cssClass});L===d&&(v=Y),c.add(Y);var H=document.createElementNS(i.globals.SVGNS,"title");if(H.textContent=Array.isArray(C)?C.join(" "):C,Y.node.appendChild(H),i.config.yaxis[e].labels.rotate!==0){var D=a.rotateAroundCenter(v.node),O=a.rotateAroundCenter(Y.node);Y.node.setAttribute("transform","rotate(".concat(i.config.yaxis[e].labels.rotate," ").concat(D.x," ").concat(O.y,")"))}p+=u},k=d;k>=0;k--)w(k);if(i.config.yaxis[e].title.text!==void 0){var l=a.group({class:"apexcharts-yaxis-title"}),g=0;i.config.yaxis[e].opposite&&(g=i.globals.translateYAxisX[e]);var x=a.drawText({x:g,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[e].title.offsetY,text:i.config.yaxis[e].title.text,textAnchor:"end",foreColor:i.config.yaxis[e].title.style.color,fontSize:i.config.yaxis[e].title.style.fontSize,fontWeight:i.config.yaxis[e].title.style.fontWeight,fontFamily:i.config.yaxis[e].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+i.config.yaxis[e].title.style.cssClass});l.add(x),h.add(l)}var y=i.config.yaxis[e].axisBorder,A=31+y.offsetX;if(i.config.yaxis[e].opposite&&(A=-31-y.offsetX),y.show){var S=a.drawLine(A,i.globals.translateY+y.offsetY-2,A,i.globals.gridHeight+i.globals.translateY+y.offsetY+2,y.color,0,y.width);h.add(S)}return i.config.yaxis[e].axisTicks.show&&this.axesUtils.drawYAxisTicks(A,d,y,i.config.yaxis[e].axisTicks,e,u,h),h}},{key:"drawYaxisInversed",value:function(e){var t=this.w,i=new z(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});a.add(s);var r=t.globals.yAxisScale[e].result.length-1,n=t.globals.gridWidth/r+.1,o=n+t.config.xaxis.labels.offsetX,h=t.globals.xLabelFormatter,c=t.globals.yAxisScale[e].result.slice(),d=t.globals.timescaleLabels;d.length>0&&(this.xaxisLabels=d.slice(),r=(c=d.slice()).length),c=this.axesUtils.checkForReversedLabels(e,c);var u=d.length;if(t.config.xaxis.labels.show)for(var p=u?0:r;u?p=0;u?p++:p--){var f=c[p];f=h(f,p,t);var b=t.globals.gridWidth+t.globals.padHorizontal-(o-n+t.config.xaxis.labels.offsetX);if(d.length){var v=this.axesUtils.getLabel(c,d,b,p,this.drawnLabels,this.xaxisFontSize);b=v.x,f=v.text,this.drawnLabels.push(v.text),p===0&&t.globals.skipFirstTimelinelabel&&(f=""),p===c.length-1&&t.globals.skipLastTimelinelabel&&(f="")}var w=i.drawText({x:b,y:this.xAxisoffX+t.config.xaxis.labels.offsetY+30-(t.config.xaxis.position==="top"?t.globals.xAxisHeight+t.config.xaxis.axisTicks.height-2:0),text:f,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[e]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:t.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+t.config.xaxis.labels.style.cssClass});s.add(w),w.tspan(f);var k=document.createElementNS(t.globals.SVGNS,"title");k.textContent=f,w.node.appendChild(k),o+=n}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(e){var t=this.w,i=new z(this.ctx),a=t.config.xaxis.axisBorder;if(a.show){var s=0;t.config.chart.type==="bar"&&t.globals.isXNumeric&&(s-=15);var r=i.drawLine(t.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,t.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders&&t.config.grid.show?this.elgrid.elGridBorders.add(r):e.add(r)}}},{key:"inversedYAxisTitleText",value:function(e){var t=this.w,i=new z(this.ctx);if(t.config.xaxis.title.text!==void 0){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:t.globals.gridWidth/2+t.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(t.config.xaxis.title.style.fontSize)+t.config.xaxis.title.offsetY+20,text:t.config.xaxis.title.text,textAnchor:"middle",fontSize:t.config.xaxis.title.style.fontSize,fontFamily:t.config.xaxis.title.style.fontFamily,fontWeight:t.config.xaxis.title.style.fontWeight,foreColor:t.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+t.config.xaxis.title.style.cssClass});a.add(s),e.add(a)}}},{key:"yAxisTitleRotate",value:function(e,t){var i=this.w,a=new z(this.ctx),s={width:0,height:0},r={width:0,height:0},n=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(e,"'] .apexcharts-yaxis-texts-g"));n!==null&&(s=n.getBoundingClientRect());var o=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(e,"'] .apexcharts-yaxis-title text"));if(o!==null&&(r=o.getBoundingClientRect()),o!==null){var h=this.xPaddingForYAxisTitle(e,s,r,t);o.setAttribute("x",h.xPos-(t?10:0))}if(o!==null){var c=a.rotateAroundCenter(o);o.setAttribute("transform","rotate(".concat(t?-1*i.config.yaxis[e].title.rotate:i.config.yaxis[e].title.rotate," ").concat(c.x," ").concat(c.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(e,t,i,a){var s=this.w,r=0,n=0,o=10;return s.config.yaxis[e].title.text===void 0||e<0?{xPos:n,padd:0}:(a?(n=t.width+s.config.yaxis[e].title.offsetX+i.width/2+o/2,(r+=1)===0&&(n-=o/2)):(n=-1*t.width+s.config.yaxis[e].title.offsetX+o/2+i.width/2,s.globals.isBarHorizontal&&(o=25,n=-1*t.width-s.config.yaxis[e].title.offsetX-o)),{xPos:n,padd:o})}},{key:"setYAxisXPosition",value:function(e,t){var i=this.w,a=0,s=0,r=18,n=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map(function(o,h){var c=i.globals.ignoreYAxisIndexes.indexOf(h)>-1||!o.show||o.floating||e[h].width===0,d=e[h].width+t[h].width;o.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[h]=s-o.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+n,c||(n=n+d+20),i.globals.translateYAxisX[h]=s-o.labels.offsetX+20):(a=i.globals.translateX-r,c||(r=r+d+20),i.globals.translateYAxisX[h]=a+o.labels.offsetX)})}},{key:"setYAxisTextAlignments",value:function(){var e=this.w,t=e.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(t=P.listToArray(t)).forEach(function(i,a){var s=e.config.yaxis[a];if(s&&!s.floating&&s.labels.align!==void 0){var r=e.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(a,"'] .apexcharts-yaxis-texts-g")),n=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(a,"'] .apexcharts-yaxis-label"));n=P.listToArray(n);var o=r.getBoundingClientRect();s.labels.align==="left"?(n.forEach(function(h,c){h.setAttribute("text-anchor","start")}),s.opposite||r.setAttribute("transform","translate(-".concat(o.width,", 0)"))):s.labels.align==="center"?(n.forEach(function(h,c){h.setAttribute("text-anchor","middle")}),r.setAttribute("transform","translate(".concat(o.width/2*(s.opposite?1:-1),", 0)"))):s.labels.align==="right"&&(n.forEach(function(h,c){h.setAttribute("text-anchor","end")}),s.opposite&&r.setAttribute("transform","translate(".concat(o.width,", 0)")))}})}}]),m}(),wt=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.documentEvent=P.bind(this.documentEvent,this)}return R(m,[{key:"addEventListener",value:function(e,t){var i=this.w;i.globals.events.hasOwnProperty(e)?i.globals.events[e].push(t):i.globals.events[e]=[t]}},{key:"removeEventListener",value:function(e,t){var i=this.w;if(i.globals.events.hasOwnProperty(e)){var a=i.globals.events[e].indexOf(t);a!==-1&&i.globals.events[e].splice(a,1)}}},{key:"fireEvent",value:function(e,t){var i=this.w;if(i.globals.events.hasOwnProperty(e)){t&&t.length||(t=[]);for(var a=i.globals.events[e],s=a.length,r=0;r0&&(t=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=t.filter(function(s){return s.name===e})[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=P.extend(Ue,i);this.w.globals.locale=a.options}}]),m}(),At=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"drawAxis",value:function(e,t){var i,a,s=this,r=this.w.globals,n=this.w.config,o=new de(this.ctx,t),h=new Fe(this.ctx,t);r.axisCharts&&e!=="radar"&&(r.isBarHorizontal?(a=h.drawYaxisInversed(0),i=o.drawXaxisInversed(0),r.dom.elGraphical.add(i),r.dom.elGraphical.add(a)):(i=o.drawXaxis(),r.dom.elGraphical.add(i),n.yaxis.map(function(c,d){if(r.ignoreYAxisIndexes.indexOf(d)===-1&&(a=h.drawYaxis(d),r.dom.Paper.add(a),s.w.config.grid.position==="back")){var u=r.dom.Paper.children()[1];u.remove(),r.dom.Paper.add(u)}})))}}]),m}(),Ee=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"drawXCrosshairs",value:function(){var e=this.w,t=new z(this.ctx),i=new U(this.ctx),a=e.config.xaxis.crosshairs.fill.gradient,s=e.config.xaxis.crosshairs.dropShadow,r=e.config.xaxis.crosshairs.fill.type,n=a.colorFrom,o=a.colorTo,h=a.opacityFrom,c=a.opacityTo,d=a.stops,u=s.enabled,p=s.left,f=s.top,b=s.blur,v=s.color,w=s.opacity,k=e.config.xaxis.crosshairs.fill.color;if(e.config.xaxis.crosshairs.show){r==="gradient"&&(k=t.drawGradient("vertical",n,o,h,c,null,d,null));var l=t.drawRect();e.config.xaxis.crosshairs.width===1&&(l=t.drawLine());var g=e.globals.gridHeight;(!P.isNumber(g)||g<0)&&(g=0);var x=e.config.xaxis.crosshairs.width;(!P.isNumber(x)||x<0)&&(x=0),l.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:g,width:x,height:g,fill:k,filter:"none","fill-opacity":e.config.xaxis.crosshairs.opacity,stroke:e.config.xaxis.crosshairs.stroke.color,"stroke-width":e.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":e.config.xaxis.crosshairs.stroke.dashArray}),u&&(l=i.dropShadow(l,{left:p,top:f,blur:b,color:v,opacity:w})),e.globals.dom.elGraphical.add(l)}}},{key:"drawYCrosshairs",value:function(){var e=this.w,t=new z(this.ctx),i=e.config.yaxis[0].crosshairs,a=e.globals.barPadForNumericAxis;if(e.config.yaxis[0].crosshairs.show){var s=t.drawLine(-a,0,e.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),e.globals.dom.elGraphical.add(s)}var r=t.drawLine(-a,0,e.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:"apexcharts-ycrosshairs-hidden"}),e.globals.dom.elGraphical.add(r)}}]),m}(),St=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"checkResponsiveConfig",value:function(e){var t=this,i=this.w,a=i.config;if(a.responsive.length!==0){var s=a.responsive.slice();s.sort(function(h,c){return h.breakpoint>c.breakpoint?1:c.breakpoint>h.breakpoint?-1:0}).reverse();var r=new ce({}),n=function(){var h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},c=s[0].breakpoint,d=window.innerWidth>0?window.innerWidth:screen.width;if(d>c){var u=G.extendArrayProps(r,i.globals.initialConfig,i);h=P.extend(u,h),h=P.extend(i.config,h),t.overrideResponsiveOptions(h)}else for(var p=0;p0&&typeof i.config.colors[0]=="function"&&(i.globals.colors=i.config.series.map(function(f,b){var v=i.config.colors[b];return v||(v=i.config.colors[0]),typeof v=="function"?(t.isColorFn=!0,v({value:i.globals.axisCharts?i.globals.series[b][0]?i.globals.series[b][0]:0:i.globals.series[b],seriesIndex:b,dataPointIndex:b,w:i})):v}))),i.globals.seriesColors.map(function(f,b){f&&(i.globals.colors[b]=f)}),i.config.theme.monochrome.enabled){var s=[],r=i.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(r=i.globals.series[0].length*i.globals.series.length);for(var n=i.config.theme.monochrome.color,o=1/(r/i.config.theme.monochrome.shadeIntensity),h=i.config.theme.monochrome.shadeTo,c=0,d=0;d2&&arguments[2]!==void 0?arguments[2]:null,a=this.w,s=t||a.globals.series.length;if(i===null&&(i=this.isBarDistributed||this.isHeatmapDistributed||a.config.chart.type==="heatmap"&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),e.lengthe.globals.svgWidth&&(this.dCtx.lgRect.width=e.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(e,t){var i=e;if(this.w.globals.isMultiLineX){var a=t.map(function(r,n){return Array.isArray(r)?r.length:1}),s=Math.max.apply(Math,Z(a));i=t[a.indexOf(s)]}return i}}]),m}(),Mt=function(){function m(e){F(this,m),this.w=e.w,this.dCtx=e}return R(m,[{key:"getxAxisLabelsCoords",value:function(){var e,t=this.w,i=t.globals.labels.slice();if(t.config.xaxis.convertedCatToNumeric&&i.length===0&&(i=t.globals.categoryLabels),t.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();e={width:a.width,height:a.height},t.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends=t.config.legend.position!=="left"&&t.config.legend.position!=="right"||t.config.legend.floating?0:this.dCtx.lgRect.width;var s=t.globals.xLabelFormatter,r=P.getLargestStringFromArr(i),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);t.globals.isBarHorizontal&&(n=r=t.globals.yAxisScale[0].result.reduce(function(f,b){return f.length>b.length?f:b},0));var o=new pe(this.dCtx.ctx),h=r;r=o.xLabelFormat(s,r,h,{i:void 0,dateFormatter:new j(this.dCtx.ctx).formatDate,w:t}),n=o.xLabelFormat(s,n,h,{i:void 0,dateFormatter:new j(this.dCtx.ctx).formatDate,w:t}),(t.config.xaxis.convertedCatToNumeric&&r===void 0||String(r).trim()==="")&&(n=r="1");var c=new z(this.dCtx.ctx),d=c.getTextRects(r,t.config.xaxis.labels.style.fontSize),u=d;if(r!==n&&(u=c.getTextRects(n,t.config.xaxis.labels.style.fontSize)),(e={width:d.width>=u.width?d.width:u.width,height:d.height>=u.height?d.height:u.height}).width*i.length>t.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&t.config.xaxis.labels.rotate!==0||t.config.xaxis.labels.rotateAlways){if(!t.globals.isBarHorizontal){t.globals.rotateXLabels=!0;var p=function(f){return c.getTextRects(f,t.config.xaxis.labels.style.fontSize,t.config.xaxis.labels.style.fontFamily,"rotate(".concat(t.config.xaxis.labels.rotate," 0 0)"),!1)};d=p(r),r!==n&&(u=p(n)),e.height=(d.height>u.height?d.height:u.height)/1.5,e.width=d.width>u.width?d.width:u.width}}else t.globals.rotateXLabels=!1}return t.config.xaxis.labels.show||(e={width:0,height:0}),{width:e.width,height:e.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var e,t=this.w;if(!t.globals.hasXaxisGroups)return{width:0,height:0};var i,a=((e=t.config.xaxis.group.style)===null||e===void 0?void 0:e.fontSize)||t.config.xaxis.labels.style.fontSize,s=t.globals.groups.map(function(d){return d.title}),r=P.getLargestStringFromArr(s),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),o=new z(this.dCtx.ctx),h=o.getTextRects(r,a),c=h;return r!==n&&(c=o.getTextRects(n,a)),i={width:h.width>=c.width?h.width:c.width,height:h.height>=c.height?h.height:c.height},t.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var e=this.w,t=0,i=0;if(e.config.xaxis.title.text!==void 0){var a=new z(this.dCtx.ctx).getTextRects(e.config.xaxis.title.text,e.config.xaxis.title.style.fontSize);t=a.width,i=a.height}return{width:t,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var e,t=this.w;this.dCtx.timescaleLabels=t.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map(function(s){return s.value}),a=i.reduce(function(s,r){return s===void 0?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):s.length>r.length?s:r},0);return 1.05*(e=new z(this.dCtx.ctx).getTextRects(a,t.config.xaxis.labels.style.fontSize)).width*i.length>t.globals.gridWidth&&t.config.xaxis.labels.rotate!==0&&(t.globals.overlappingXLabels=!0),e}},{key:"additionalPaddingXLabels",value:function(e){var t=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,n=e.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var o=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,h=function(c,d){s.yaxis.length>1&&function(u){return a.collapsedSeriesIndices.indexOf(u)!==-1}(d)||function(u){if(t.dCtx.timescaleLabels&&t.dCtx.timescaleLabels.length){var p=t.dCtx.timescaleLabels[0],f=t.dCtx.timescaleLabels[t.dCtx.timescaleLabels.length-1].position+n/1.75-t.dCtx.yAxisWidthRight,b=p.position-n/1.75+t.dCtx.yAxisWidthLeft,v=i.config.legend.position==="right"&&t.dCtx.lgRect.width>0?t.dCtx.lgRect.width:0;f>a.svgWidth-a.translateX-v&&(a.skipLastTimelinelabel=!0),b<-(u.show&&!u.floating||s.chart.type!=="bar"&&s.chart.type!=="candlestick"&&s.chart.type!=="rangeBar"&&s.chart.type!=="boxPlot"?10:n/1.75)&&(a.skipFirstTimelinelabel=!0)}else r==="datetime"?t.dCtx.gridPad.right((A=String(d(x,o)))===null||A===void 0?void 0:A.length)?g:x},u),f=p=d(p,o);if(p!==void 0&&p.length!==0||(p=h.niceMax),t.globals.isBarHorizontal){a=0;var b=t.globals.labels.slice();p=P.getLargestStringFromArr(b),p=d(p,{seriesIndex:n,dataPointIndex:-1,w:t}),f=e.dCtx.dimHelpers.getLargestStringFromMultiArr(p,b)}var v=new z(e.dCtx.ctx),w="rotate(".concat(r.labels.rotate," 0 0)"),k=v.getTextRects(p,r.labels.style.fontSize,r.labels.style.fontFamily,w,!1),l=k;p!==f&&(l=v.getTextRects(f,r.labels.style.fontSize,r.labels.style.fontFamily,w,!1)),i.push({width:(c>l.width||c>k.width?c:l.width>k.width?l.width:k.width)+a,height:l.height>k.height?l.height:k.height})}else i.push({width:0,height:0})}),i}},{key:"getyAxisTitleCoords",value:function(){var e=this,t=this.w,i=[];return t.config.yaxis.map(function(a,s){if(a.show&&a.title.text!==void 0){var r=new z(e.dCtx.ctx),n="rotate(".concat(a.title.rotate," 0 0)"),o=r.getTextRects(a.title.text,a.title.style.fontSize,a.title.style.fontFamily,n,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})}),i}},{key:"getTotalYAxisWidth",value:function(){var e=this.w,t=0,i=0,a=0,s=e.globals.yAxisScale.length>1?10:0,r=new ae(this.dCtx.ctx),n=function(o,h){var c=e.config.yaxis[h].floating,d=0;o.width>0&&!c?(d=o.width+s,function(u){return e.globals.ignoreYAxisIndexes.indexOf(u)>-1}(h)&&(d=d-o.width-s)):d=c||r.isYAxisHidden(h)?0:5,e.config.yaxis[h].opposite?a+=d:i+=d,t+=d};return e.globals.yLabelsCoords.map(function(o,h){n(o,h)}),e.globals.yTitleCoords.map(function(o,h){n(o,h)}),e.globals.isBarHorizontal&&!e.config.yaxis[0].floating&&(t=e.globals.yLabelsCoords[0].width+e.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,t}}]),m}(),Tt=function(){function m(e){F(this,m),this.w=e.w,this.dCtx=e}return R(m,[{key:"gridPadForColumnsInNumericAxis",value:function(e){var t=this.w;if(t.globals.noData||t.globals.allSeriesCollapsed)return 0;var i=function(c){return c==="bar"||c==="rangeBar"||c==="candlestick"||c==="boxPlot"},a=t.config.chart.type,s=0,r=i(a)?t.config.series.length:1;if(t.globals.comboBarCount>0&&(r=t.globals.comboBarCount),t.globals.collapsedSeries.forEach(function(c){i(c.type)&&(r-=1)}),t.config.chart.stacked&&(r=1),(i(a)||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&r>0){var n,o,h=Math.abs(t.globals.initialMaxX-t.globals.initialMinX);h<=3&&(h=t.globals.dataPoints),n=h/e,t.globals.minXDiff&&t.globals.minXDiff/n>0&&(o=t.globals.minXDiff/n),o>e/2&&(o/=2),(s=o/r*parseInt(t.config.plotOptions.bar.columnWidth,10)/100)<1&&(s=1),s=s/(r>1?1:1.5)+5,t.globals.barPadForNumericAxis=s}return s}},{key:"gridPadFortitleSubtitle",value:function(){var e=this,t=this.w,i=t.globals,a=this.dCtx.isSparkline||!t.globals.axisCharts?0:10;["title","subtitle"].forEach(function(n){t.config[n].text!==void 0?a+=t.config[n].margin:a+=e.dCtx.isSparkline||!t.globals.axisCharts?0:5}),!t.config.legend.show||t.config.legend.position!=="bottom"||t.config.legend.floating||t.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-s.height-r.height-a,i.translateY=i.translateY+s.height+r.height+a}},{key:"setGridXPosForDualYAxis",value:function(e,t){var i=this.w,a=new ae(this.dCtx.ctx);i.config.yaxis.map(function(s,r){i.globals.ignoreYAxisIndexes.indexOf(r)!==-1||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(t[r].width+e[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))})}}]),m}(),me=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new Pt(this),this.dimYAxis=new It(this),this.dimXAxis=new Mt(this),this.dimGrid=new Tt(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return R(m,[{key:"plotCoords",value:function(){var e=this,t=this.w,i=t.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.isSparkline&&((t.config.markers.discrete.length>0||t.config.markers.size>0)&&Object.entries(this.gridPad).forEach(function(s){var r=je(s,2),n=r[0],o=r[1];e.gridPad[n]=Math.max(o,e.w.globals.markers.largestSize/1.5)}),this.gridPad.top=Math.max(t.config.stroke.width/2,this.gridPad.top),this.gridPad.bottom=Math.max(t.config.stroke.width/2,this.gridPad.bottom)),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var e=this,t=this.w,i=t.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();t.globals.yLabelsCoords=[],t.globals.yTitleCoords=[],t.config.yaxis.map(function(p,f){t.globals.yLabelsCoords.push({width:a[f].width,index:f}),t.globals.yTitleCoords.push({width:s[f].width,index:f})}),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),n=this.dimXAxis.getxAxisGroupLabelsCoords(),o=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,o,n),i.translateXAxisY=t.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=t.globals.rotateXLabels&&t.globals.isXNumeric&&t.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,t.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(t.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+t.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+t.config.xaxis.labels.offsetX;var h=this.yAxisWidth,c=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-o.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var d=10;(t.config.chart.type==="radar"||this.isSparkline)&&(h=0,c=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||t.config.chart.type==="treemap")&&(h=0,c=0,d=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(r);var u=function(){i.translateX=h,i.gridHeight=i.svgHeight-e.lgRect.height-c-(e.isSparkline||t.config.chart.type==="treemap"?0:t.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-h};switch(t.config.xaxis.position==="top"&&(d=i.xAxisHeight-t.config.xaxis.axisTicks.height-5),t.config.legend.position){case"bottom":i.translateY=d,u();break;case"top":i.translateY=this.lgRect.height+d,u();break;case"left":i.translateY=d,i.translateX=this.lgRect.width+h,i.gridHeight=i.svgHeight-c-12,i.gridWidth=i.svgWidth-this.lgRect.width-h;break;case"right":i.translateY=d,i.translateX=h,i.gridHeight=i.svgHeight-c-12,i.gridWidth=i.svgWidth-this.lgRect.width-h-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new Fe(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var e=this.w,t=e.globals,i=e.config,a=0;e.config.legend.show&&!e.config.legend.floating&&(a=20);var s=i.chart.type==="pie"||i.chart.type==="polarArea"||i.chart.type==="donut"?"pie":"radialBar",r=i.plotOptions[s].offsetY,n=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return t.gridHeight=t.svgHeight-i.grid.padding.left+i.grid.padding.right,t.gridWidth=t.gridHeight,t.translateY=r,void(t.translateX=n+(t.svgWidth-t.gridWidth)/2);switch(i.legend.position){case"bottom":t.gridHeight=t.svgHeight-this.lgRect.height-t.goldenPadding,t.gridWidth=t.svgWidth,t.translateY=r-10,t.translateX=n+(t.svgWidth-t.gridWidth)/2;break;case"top":t.gridHeight=t.svgHeight-this.lgRect.height-t.goldenPadding,t.gridWidth=t.svgWidth,t.translateY=this.lgRect.height+r+10,t.translateX=n+(t.svgWidth-t.gridWidth)/2;break;case"left":t.gridWidth=t.svgWidth-this.lgRect.width-a,t.gridHeight=i.chart.height!=="auto"?t.svgHeight:t.gridWidth,t.translateY=r,t.translateX=n+this.lgRect.width+a;break;case"right":t.gridWidth=t.svgWidth-this.lgRect.width-a-5,t.gridHeight=i.chart.height!=="auto"?t.svgHeight:t.gridWidth,t.translateY=r,t.translateX=n+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(e,t,i){var a=this.w,s=a.globals.hasXaxisGroups?2:1,r=i.height+e.height+t.height,n=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,o=a.globals.rotateXLabels?22:10,h=a.globals.rotateXLabels&&a.config.legend.position==="bottom"?10:0;this.xAxisHeight=r*n+s*o+h,this.xAxisWidth=e.width,this.xAxisHeight-t.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightd&&(this.yAxisWidth=d)}}]),m}(),zt=function(){function m(e){F(this,m),this.w=e.w,this.lgCtx=e}return R(m,[{key:"getLegendStyles",value:function(){var e=document.createElement("style");e.setAttribute("type","text/css");var t=document.createTextNode(` .apexcharts-legend { display: flex; @@ -68,22 +64,22 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho } .apexcharts-inactive-legend { opacity: 0.45; - }`);return e.appendChild(t),e}},{key:"getLegendBBox",value:function(){var e=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),t=e.width;return{clwh:e.height,clww:t}}},{key:"appendToForeignObject",value:function(){var e=this.w.globals;e.dom.elLegendForeign=document.createElementNS(e.SVGNS,"foreignObject");var t=e.dom.elLegendForeign;t.setAttribute("x",0),t.setAttribute("y",0),t.setAttribute("width",e.svgWidth),t.setAttribute("height",e.svgHeight),e.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),t.appendChild(e.dom.elLegendWrap),t.appendChild(this.getLegendStyles()),e.dom.Paper.node.insertBefore(t,e.dom.elGraphical.node)}},{key:"toggleDataSeries",value:function(e,t){var i=this,a=this.w;if(a.globals.axisCharts||a.config.chart.type==="radialBar"){a.globals.resized=!0;var s=null,n=null;a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(e,"']")),n=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(e+1,"']")),n=parseInt(s.getAttribute("rel"),10)-1),t?[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach(function(c){i.riseCollapsedSeries(c.cs,c.csi,n)}):this.hideSeries({seriesEl:s,realIndex:n})}else{var r=a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(e+1,"'] path")),o=a.config.chart.type;if(o==="pie"||o==="polarArea"||o==="donut"){var h=a.config.plotOptions.pie.donut.labels;new M(this.lgCtx.ctx).pathMouseDown(r.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(r.members[0].node,h)}r.fire("click")}}},{key:"hideSeries",value:function(e){var t=e.seriesEl,i=e.realIndex,a=this.w,s=P.clone(a.config.series);if(a.globals.axisCharts){var n=!1;if(a.config.yaxis[i]&&a.config.yaxis[i].show&&a.config.yaxis[i].showAlways&&(n=!0,a.globals.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(a.globals.ancillaryCollapsedSeries.push({index:i,data:s[i].data.slice(),type:t.parentNode.className.baseVal.split("-")[1]}),a.globals.ancillaryCollapsedSeriesIndices.push(i))),!n){a.globals.collapsedSeries.push({index:i,data:s[i].data.slice(),type:t.parentNode.className.baseVal.split("-")[1]}),a.globals.collapsedSeriesIndices.push(i);var r=a.globals.risingSeries.indexOf(i);a.globals.risingSeries.splice(r,1)}}else a.globals.collapsedSeries.push({index:i,data:s[i]}),a.globals.collapsedSeriesIndices.push(i);for(var o=t.childNodes,h=0;h0){for(var n=0;n-1&&(e[a].data=[])}):e.forEach(function(i,a){t.globals.collapsedSeriesIndices.indexOf(a)>-1&&(e[a]=0)}),e}}]),v}(),We=function(){function v(e,t){E(this,v),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed=this.w.config.chart.type==="bar"&&this.w.config.plotOptions.bar.distributed&&this.w.config.series.length===1,this.legendHelpers=new bt(this)}return Y(v,[{key:"init",value:function(){var e=this.w,t=e.globals,i=e.config;if((i.legend.showForSingleSeries&&t.series.length===1||this.isBarsDistributed||t.series.length>1||!t.axisCharts)&&i.legend.show){for(;t.dom.elLegendWrap.firstChild;)t.dom.elLegendWrap.removeChild(t.dom.elLegendWrap.firstChild);this.drawLegends(),P.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),i.legend.position==="bottom"||i.legend.position==="top"?this.legendAlignHorizontal():i.legend.position!=="right"&&i.legend.position!=="left"||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var e=this,t=this.w,i=t.config.legend.fontFamily,a=t.globals.seriesNames,s=t.globals.colors.slice();if(t.config.chart.type==="heatmap"){var n=t.config.plotOptions.heatmap.colorScale.ranges;a=n.map(function(I){return I.name?I.name:I.from+" - "+I.to}),s=n.map(function(I){return I.color})}else this.isBarsDistributed&&(a=t.globals.labels.slice());t.config.legend.customLegendItems.length&&(a=t.config.legend.customLegendItems);for(var r=t.globals.legendFormatter,o=t.config.legend.inverseOrder,h=o?a.length-1:0;o?h>=0:h<=a.length-1;o?h--:h++){var c=r(a[h],{seriesIndex:h,w:t}),d=!1,g=!1;if(t.globals.collapsedSeries.length>0)for(var p=0;p0)for(var x=0;x0?h-10:0)+(c>0?c-10:0)}a.style.position="absolute",n=n+e+i.config.legend.offsetX,r=r+t+i.config.legend.offsetY,a.style.left=n+"px",a.style.top=r+"px",i.config.legend.position==="bottom"?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):i.config.legend.position==="right"&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px"),["width","height"].forEach(function(d){a.style[d]&&(a.style[d]=parseInt(i.config.legend[d],10)+"px")})}},{key:"legendAlignHorizontal",value:function(){var e=this.w;e.globals.dom.baseEl.querySelector(".apexcharts-legend").style.right=0;var t=this.legendHelpers.getLegendBBox(),i=new xe(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),n=0;e.config.legend.position==="bottom"?n=-t.clwh/1.8:e.config.legend.position==="top"&&(n=a.height+s.height+e.config.title.margin+e.config.subtitle.margin-10),this.setLegendWrapXY(20,n)}},{key:"legendAlignVertical",value:function(){var e=this.w,t=this.legendHelpers.getLegendBBox(),i=0;e.config.legend.position==="left"&&(i=20),e.config.legend.position==="right"&&(i=e.globals.svgWidth-t.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(e){var t=this.w,i=e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker");if(t.config.chart.type==="heatmap"||this.isBarsDistributed){if(i){var a=parseInt(e.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new Z(this.ctx).highlightRangeInSeries(e,e.target)}}else!e.target.classList.contains("apexcharts-inactive-legend")&&i&&new Z(this.ctx).toggleSeriesOnHover(e,e.target)}},{key:"onLegendClick",value:function(e){var t=this.w;if(!t.config.legend.customLegendItems.length&&(e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(e.target.getAttribute("rel"),10)-1,a=e.target.getAttribute("data:collapsed")==="true",s=this.w.config.chart.events.legendClick;typeof s=="function"&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var n=this.w.config.legend.markers.onClick;typeof n=="function"&&e.target.classList.contains("apexcharts-legend-marker")&&(n(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),t.config.chart.type!=="treemap"&&t.config.chart.type!=="heatmap"&&!this.isBarsDistributed&&t.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),v}(),Be=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w;var t=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=t.globals.minX,this.maxX=t.globals.maxX}return Y(v,[{key:"createToolbar",value:function(){var e=this,t=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=t.config.chart.toolbar.offsetY+"px",a.style.right=3-t.config.chart.toolbar.offsetX+"px",t.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=t.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s + }`);return e.appendChild(t),e}},{key:"getLegendBBox",value:function(){var e=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),t=e.width;return{clwh:e.height,clww:t}}},{key:"appendToForeignObject",value:function(){this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles())}},{key:"toggleDataSeries",value:function(e,t){var i=this,a=this.w;if(a.globals.axisCharts||a.config.chart.type==="radialBar"){a.globals.resized=!0;var s=null,r=null;a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(e,"']")),r=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(e+1,"']")),r=parseInt(s.getAttribute("rel"),10)-1),t?[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach(function(c){i.riseCollapsedSeries(c.cs,c.csi,r)}):this.hideSeries({seriesEl:s,realIndex:r})}else{var n=a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(e+1,"'] path")),o=a.config.chart.type;if(o==="pie"||o==="polarArea"||o==="donut"){var h=a.config.plotOptions.pie.donut.labels;new z(this.lgCtx.ctx).pathMouseDown(n.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(n.members[0].node,h)}n.fire("click")}}},{key:"hideSeries",value:function(e){var t=e.seriesEl,i=e.realIndex,a=this.w,s=P.clone(a.config.series);if(a.globals.axisCharts){var r=!1;if(a.config.yaxis[i]&&a.config.yaxis[i].show&&a.config.yaxis[i].showAlways&&(r=!0,a.globals.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(a.globals.ancillaryCollapsedSeries.push({index:i,data:s[i].data.slice(),type:t.parentNode.className.baseVal.split("-")[1]}),a.globals.ancillaryCollapsedSeriesIndices.push(i))),!r){a.globals.collapsedSeries.push({index:i,data:s[i].data.slice(),type:t.parentNode.className.baseVal.split("-")[1]}),a.globals.collapsedSeriesIndices.push(i);var n=a.globals.risingSeries.indexOf(i);a.globals.risingSeries.splice(n,1)}}else a.globals.collapsedSeries.push({index:i,data:s[i]}),a.globals.collapsedSeriesIndices.push(i);for(var o=t.childNodes,h=0;h0){for(var r=0;r-1&&(e[a].data=[])}):e.forEach(function(i,a){t.globals.collapsedSeriesIndices.indexOf(a)>-1&&(e[a]=0)}),e}}]),m}(),Qe=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed=this.w.config.chart.type==="bar"&&this.w.config.plotOptions.bar.distributed&&this.w.config.series.length===1,this.legendHelpers=new zt(this)}return R(m,[{key:"init",value:function(){var e=this.w,t=e.globals,i=e.config;if((i.legend.showForSingleSeries&&t.series.length===1||this.isBarsDistributed||t.series.length>1||!t.axisCharts)&&i.legend.show){for(;t.dom.elLegendWrap.firstChild;)t.dom.elLegendWrap.removeChild(t.dom.elLegendWrap.firstChild);this.drawLegends(),P.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),i.legend.position==="bottom"||i.legend.position==="top"?this.legendAlignHorizontal():i.legend.position!=="right"&&i.legend.position!=="left"||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var e=this,t=this.w,i=t.config.legend.fontFamily,a=t.globals.seriesNames,s=t.globals.colors.slice();if(t.config.chart.type==="heatmap"){var r=t.config.plotOptions.heatmap.colorScale.ranges;a=r.map(function(I){return I.name?I.name:I.from+" - "+I.to}),s=r.map(function(I){return I.color})}else this.isBarsDistributed&&(a=t.globals.labels.slice());t.config.legend.customLegendItems.length&&(a=t.config.legend.customLegendItems);for(var n=t.globals.legendFormatter,o=t.config.legend.inverseOrder,h=o?a.length-1:0;o?h>=0:h<=a.length-1;o?h--:h++){var c,d=n(a[h],{seriesIndex:h,w:t}),u=!1,p=!1;if(t.globals.collapsedSeries.length>0)for(var f=0;f0)for(var b=0;b0?h-10:0)+(c>0?c-10:0)}a.style.position="absolute",r=r+e+i.config.legend.offsetX,n=n+t+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=n+"px",i.config.legend.position==="bottom"?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):i.config.legend.position==="right"&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px"),["width","height"].forEach(function(d){a.style[d]&&(a.style[d]=parseInt(i.config.legend[d],10)+"px")})}},{key:"legendAlignHorizontal",value:function(){var e=this.w;e.globals.dom.elLegendWrap.style.right=0;var t=this.legendHelpers.getLegendBBox(),i=new me(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),r=0;e.config.legend.position==="bottom"?r=-t.clwh/1.8:e.config.legend.position==="top"&&(r=a.height+s.height+e.config.title.margin+e.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:"legendAlignVertical",value:function(){var e=this.w,t=this.legendHelpers.getLegendBBox(),i=0;e.config.legend.position==="left"&&(i=20),e.config.legend.position==="right"&&(i=e.globals.svgWidth-t.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(e){var t=this.w,i=e.target.classList.contains("apexcharts-legend-series")||e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker");if(t.config.chart.type==="heatmap"||this.isBarsDistributed){if(i){var a=parseInt(e.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new $(this.ctx).highlightRangeInSeries(e,e.target)}}else!e.target.classList.contains("apexcharts-inactive-legend")&&i&&new $(this.ctx).toggleSeriesOnHover(e,e.target)}},{key:"onLegendClick",value:function(e){var t=this.w;if(!t.config.legend.customLegendItems.length&&(e.target.classList.contains("apexcharts-legend-series")||e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(e.target.getAttribute("rel"),10)-1,a=e.target.getAttribute("data:collapsed")==="true",s=this.w.config.chart.events.legendClick;typeof s=="function"&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;typeof r=="function"&&e.target.classList.contains("apexcharts-legend-marker")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),t.config.chart.type!=="treemap"&&t.config.chart.type!=="heatmap"&&!this.isBarsDistributed&&t.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),m}(),Ke=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w;var t=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=t.globals.minX,this.maxX=t.globals.maxX}return R(m,[{key:"createToolbar",value:function(){var e=this,t=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=t.config.chart.toolbar.offsetY+"px",a.style.right=3-t.config.chart.toolbar.offsetX+"px",t.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=t.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s -`),r("zoomOut",this.elZoomOut,` +`),n("zoomOut",this.elZoomOut,` -`);var o=function(d){e.t[d]&&t.config.chart[d].enabled&&n.push({el:d==="zoom"?e.elZoom:e.elSelection,icon:typeof e.t[d]=="string"?e.t[d]:d==="zoom"?` +`);var o=function(d){e.t[d]&&t.config.chart[d].enabled&&r.push({el:d==="zoom"?e.elZoom:e.elSelection,icon:typeof e.t[d]=="string"?e.t[d]:d==="zoom"?` `:` -`,title:e.localeValues[d==="zoom"?"selectionZoom":"selection"],class:t.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-".concat(d,"-icon")})};o("zoom"),o("selection"),this.t.pan&&t.config.chart.zoom.enabled&&n.push({el:this.elPan,icon:typeof this.t.pan=="string"?this.t.pan:` +`,title:e.localeValues[d==="zoom"?"selectionZoom":"selection"],class:t.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-".concat(d,"-icon")})};o("zoom"),o("selection"),this.t.pan&&t.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:typeof this.t.pan=="string"?this.t.pan:` @@ -91,14 +87,17 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho -`,title:this.localeValues.pan,class:t.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-pan-icon"}),r("reset",this.elZoomReset,` +`,title:this.localeValues.pan,class:t.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-pan-icon"}),n("reset",this.elZoomReset,` -`),this.t.download&&n.push({el:this.elMenuIcon,icon:typeof this.t.download=="string"?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var h=0;h0&&a.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:i.globals.gridWidth,maxY:i.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var i=this.w,a=this.xyRatios;if(!i.globals.zoomEnabled){if(i.globals.selection!==void 0&&i.globals.selection!==null)this.drawSelectionRect(i.globals.selection);else if(i.config.chart.selection.xaxis.min!==void 0&&i.config.chart.selection.xaxis.max!==void 0){var s=(i.config.chart.selection.xaxis.min-i.globals.minX)/a.xRatio,n={x:s,y:0,width:i.globals.gridWidth-(i.globals.maxX-i.config.chart.selection.xaxis.max)/a.xRatio-s,height:i.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(n),this.makeSelectionRectDraggable(),typeof i.config.chart.events.selection=="function"&&i.config.chart.events.selection(this.ctx,{xaxis:{min:i.config.chart.selection.xaxis.min,max:i.config.chart.selection.xaxis.max},yaxis:{}})}}}},{key:"drawSelectionRect",value:function(i){var a=i.x,s=i.y,n=i.width,r=i.height,o=i.translateX,h=o===void 0?0:o,c=i.translateY,d=c===void 0?0:c,g=this.w,p=this.zoomRect,x=this.selectionRect;if(this.dragged||g.globals.selection!==null){var f={transform:"translate("+h+", "+d+")"};g.globals.zoomEnabled&&this.dragged&&(n<0&&(n=1),p.attr({x:a,y:s,width:n,height:r,fill:g.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":g.config.chart.zoom.zoomedArea.fill.opacity,stroke:g.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":g.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":g.config.chart.zoom.zoomedArea.stroke.opacity}),M.setAttrs(p.node,f)),g.globals.selectionEnabled&&(x.attr({x:a,y:s,width:n>0?n:0,height:r>0?r:0,fill:g.config.chart.selection.fill.color,"fill-opacity":g.config.chart.selection.fill.opacity,stroke:g.config.chart.selection.stroke.color,"stroke-width":g.config.chart.selection.stroke.width,"stroke-dasharray":g.config.chart.selection.stroke.dashArray,"stroke-opacity":g.config.chart.selection.stroke.opacity}),M.setAttrs(x.node,f))}}},{key:"hideSelectionRect",value:function(i){i&&i.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(i){var a=i.context,s=i.zoomtype,n=this.w,r=a,o=this.gridRect.getBoundingClientRect(),h=r.startX-1,c=r.startY,d=!1,g=!1,p=r.clientX-o.left-h,x=r.clientY-o.top-c,f={};return Math.abs(p+h)>n.globals.gridWidth?p=n.globals.gridWidth-h:r.clientX-o.left<0&&(p=h),h>r.clientX-o.left&&(d=!0,p=Math.abs(p)),c>r.clientY-o.top&&(g=!0,x=Math.abs(x)),f=s==="x"?{x:d?h-p:h,y:0,width:p,height:n.globals.gridHeight}:s==="y"?{x:0,y:g?c-x:c,width:n.globals.gridWidth,height:x}:{x:d?h-p:h,y:g?c-x:c,width:p,height:x},r.drawSelectionRect(f),r.selectionDragging("resizing"),f}},{key:"selectionDragging",value:function(i,a){var s=this,n=this.w,r=this.xyRatios,o=this.selectionRect,h=0;i==="resizing"&&(h=30);var c=function(g){return parseFloat(o.node.getAttribute(g))},d={x:c("x"),y:c("y"),width:c("width"),height:c("height")};n.globals.selection=d,typeof n.config.chart.events.selection=="function"&&n.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout(function(){var g=s.gridRect.getBoundingClientRect(),p=o.node.getBoundingClientRect(),x={xaxis:{min:n.globals.xAxisScale.niceMin+(p.left-g.left)*r.xRatio,max:n.globals.xAxisScale.niceMin+(p.right-g.left)*r.xRatio},yaxis:{min:n.globals.yAxisScale[0].niceMin+(g.bottom-p.bottom)*r.yRatio[0],max:n.globals.yAxisScale[0].niceMax-(p.top-g.top)*r.yRatio[0]}};n.config.chart.events.selection(s.ctx,x),n.config.chart.brush.enabled&&n.config.chart.events.brushScrolled!==void 0&&n.config.chart.events.brushScrolled(s.ctx,x)},h))}},{key:"selectionDrawn",value:function(i){var a=i.context,s=i.zoomtype,n=this.w,r=a,o=this.xyRatios,h=this.ctx.toolbar;if(r.startX>r.endX){var c=r.startX;r.startX=r.endX,r.endX=c}if(r.startY>r.endY){var d=r.startY;r.startY=r.endY,r.endY=d}var g=void 0,p=void 0;n.globals.isRangeBar?(g=n.globals.yAxisScale[0].niceMin+r.startX*o.invertedYRatio,p=n.globals.yAxisScale[0].niceMin+r.endX*o.invertedYRatio):(g=n.globals.xAxisScale.niceMin+r.startX*o.xRatio,p=n.globals.xAxisScale.niceMin+r.endX*o.xRatio);var x=[],f=[];if(n.config.yaxis.forEach(function(m,A){x.push(n.globals.yAxisScale[A].niceMax-o.yRatio[A]*r.startY),f.push(n.globals.yAxisScale[A].niceMax-o.yRatio[A]*r.endY)}),r.dragged&&(r.dragX>10||r.dragY>10)&&g!==p){if(n.globals.zoomEnabled){var y=P.clone(n.globals.initialConfig.yaxis),w=P.clone(n.globals.initialConfig.xaxis);if(n.globals.zoomed=!0,n.config.xaxis.convertedCatToNumeric&&(g=Math.floor(g),p=Math.floor(p),g<1&&(g=1,p=n.globals.dataPoints),p-g<2&&(p=g+1)),s!=="xy"&&s!=="x"||(w={min:g,max:p}),s!=="xy"&&s!=="y"||y.forEach(function(m,A){y[A].min=f[A],y[A].max=x[A]}),n.config.chart.zoom.autoScaleYaxis){var S=new ae(r.ctx);y=S.autoScaleY(r.ctx,y,{xaxis:w})}if(h){var k=h.getBeforeZoomRange(w,y);k&&(w=k.xaxis?k.xaxis:w,y=k.yaxis?k.yaxis:y)}var l={xaxis:w};n.config.chart.group||(l.yaxis=y),r.ctx.updateHelpers._updateOptions(l,!1,r.w.config.chart.animations.dynamicAnimation.enabled),typeof n.config.chart.events.zoomed=="function"&&h.zoomCallback(w,y)}else if(n.globals.selectionEnabled){var u,b=null;u={min:g,max:p},s!=="xy"&&s!=="y"||(b=P.clone(n.config.yaxis)).forEach(function(m,A){b[A].min=f[A],b[A].max=x[A]}),n.globals.selection=r.selection,typeof n.config.chart.events.selection=="function"&&n.config.chart.events.selection(r.ctx,{xaxis:u,yaxis:b})}}}},{key:"panDragging",value:function(i){var a=i.context,s=this.w,n=a;if(s.globals.lastClientPosition.x!==void 0){var r=s.globals.lastClientPosition.x-n.clientX,o=s.globals.lastClientPosition.y-n.clientY;Math.abs(r)>Math.abs(o)&&r>0?this.moveDirection="left":Math.abs(r)>Math.abs(o)&&r<0?this.moveDirection="right":Math.abs(o)>Math.abs(r)&&o>0?this.moveDirection="up":Math.abs(o)>Math.abs(r)&&o<0&&(this.moveDirection="down")}s.globals.lastClientPosition={x:n.clientX,y:n.clientY};var h=s.globals.isRangeBar?s.globals.minY:s.globals.minX,c=s.globals.isRangeBar?s.globals.maxY:s.globals.maxX;s.config.xaxis.convertedCatToNumeric||n.panScrolled(h,c)}},{key:"delayedPanScrolled",value:function(){var i=this.w,a=i.globals.minX,s=i.globals.maxX,n=(i.globals.maxX-i.globals.minX)/2;this.moveDirection==="left"?(a=i.globals.minX+n,s=i.globals.maxX+n):this.moveDirection==="right"&&(a=i.globals.minX-n,s=i.globals.maxX-n),a=Math.floor(a),s=Math.floor(s),this.updateScrolledChart({xaxis:{min:a,max:s}},a,s)}},{key:"panScrolled",value:function(i,a){var s=this.w,n=this.xyRatios,r=P.clone(s.globals.initialConfig.yaxis),o=n.xRatio,h=s.globals.minX,c=s.globals.maxX;s.globals.isRangeBar&&(o=n.invertedYRatio,h=s.globals.minY,c=s.globals.maxY),this.moveDirection==="left"?(i=h+s.globals.gridWidth/15*o,a=c+s.globals.gridWidth/15*o):this.moveDirection==="right"&&(i=h-s.globals.gridWidth/15*o,a=c-s.globals.gridWidth/15*o),s.globals.isRangeBar||(is.globals.initialMaxX)&&(i=h,a=c);var d={min:i,max:a};s.config.chart.zoom.autoScaleYaxis&&(r=new ae(this.ctx).autoScaleY(this.ctx,r,{xaxis:d}));var g={xaxis:{min:i,max:a}};s.config.chart.group||(g.yaxis=r),this.updateScrolledChart(g,i,a)}},{key:"updateScrolledChart",value:function(i,a,s){var n=this.w;this.ctx.updateHelpers._updateOptions(i,!1,!1),typeof n.config.chart.events.scrolled=="function"&&n.config.chart.events.scrolled(this.ctx,{xaxis:{min:a,max:s}})}}]),t}(),Ge=function(){function v(e){E(this,v),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return Y(v,[{key:"getNearestValues",value:function(e){var t=e.hoverArea,i=e.elGrid,a=e.clientX,s=e.clientY,n=this.w,r=i.getBoundingClientRect(),o=r.width,h=r.height,c=o/(n.globals.dataPoints-1),d=h/n.globals.dataPoints,g=this.hasBars();!n.globals.comboCharts&&!g||n.config.xaxis.convertedCatToNumeric||(c=o/n.globals.dataPoints);var p=a-r.left-n.globals.barPadForNumericAxis,x=s-r.top;p<0||x<0||p>o||x>h?(t.classList.remove("hovering-zoom"),t.classList.remove("hovering-pan")):n.globals.zoomEnabled?(t.classList.remove("hovering-pan"),t.classList.add("hovering-zoom")):n.globals.panEnabled&&(t.classList.remove("hovering-zoom"),t.classList.add("hovering-pan"));var f=Math.round(p/c),y=Math.floor(x/d);g&&!n.config.xaxis.convertedCatToNumeric&&(f=Math.ceil(p/c),f-=1);var w=null,S=null,k=[],l=[];if(n.globals.seriesXvalues.forEach(function(A){k.push([A[0]+1e-6].concat(A))}),n.globals.seriesYvalues.forEach(function(A){l.push([A[0]+1e-6].concat(A))}),k=k.map(function(A){return A.filter(function(L){return P.isNumber(L)})}),l=l.map(function(A){return A.filter(function(L){return P.isNumber(L)})}),n.globals.isXNumeric){var u=this.ttCtx.getElGrid().getBoundingClientRect(),b=p*(u.width/o),m=x*(u.height/h);w=(S=this.closestInMultiArray(b,m,k,l)).index,f=S.j,w!==null&&(k=n.globals.seriesXvalues[w],f=(S=this.closestInArray(b,k)).index)}return n.globals.capturedSeriesIndex=w===null?-1:w,(!f||f<1)&&(f=0),n.globals.isBarHorizontal?n.globals.capturedDataPointIndex=y:n.globals.capturedDataPointIndex=f,{capturedSeries:w,j:n.globals.isBarHorizontal?y:f,hoverX:p,hoverY:x}}},{key:"closestInMultiArray",value:function(e,t,i,a){var s=this.w,n=0,r=null,o=-1;s.globals.series.length>1?n=this.getFirstActiveXArray(i):r=0;var h=i[n][0],c=Math.abs(e-h);if(i.forEach(function(p){p.forEach(function(x,f){var y=Math.abs(e-x);y0?r:-1}),s=0;s0)for(var a=0;as?-1:0});var t=[];return e.forEach(function(i){t.push(i.querySelector(".apexcharts-marker"))}),t}},{key:"hasMarkers",value:function(){return this.getElMarkers().length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(e){var t=this.w,i=t.config.markers.hover.size;return i===void 0&&(i=t.globals.markers.size[e]+t.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(e){var t=this.w,i=this.ttCtx;i.allTooltipSeriesGroups.length===0&&(i.allTooltipSeriesGroups=t.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s
').concat(A.attrs.name,""),m+="
".concat(A.val,"
")}),k.innerHTML=b+"",l.innerHTML=m+""};r?h.globals.seriesGoals[t][i]&&Array.isArray(h.globals.seriesGoals[t][i])?u():(k.innerHTML="",l.innerHTML=""):u()}else k.innerHTML="",l.innerHTML="";f!==null&&(a[t].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=h.config.tooltip.z.title,a[t].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=f!==void 0?f:""),r&&y[0]&&(d==null||h.globals.ancillaryCollapsedSeriesIndices.indexOf(t)>-1||h.globals.collapsedSeriesIndices.indexOf(t)>-1?y[0].parentNode.style.display="none":y[0].parentNode.style.display=h.config.tooltip.items.display)}},{key:"toggleActiveInactiveSeries",value:function(e){var t=this.w;if(e)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=t.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=t.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(e){var t=e.i,i=e.j,a=this.w,s=this.ctx.series.filteredSeriesX(),n="",r="",o=null,h=null,c={series:a.globals.series,seriesIndex:t,dataPointIndex:i,w:a},d=a.globals.ttZFormatter;i===null?h=a.globals.series[t]:a.globals.isXNumeric&&a.config.chart.type!=="treemap"?(n=s[t][i],s[t].length===0&&(n=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):n=a.globals.labels[i]!==void 0?a.globals.labels[i]:"";var g=n;return a.globals.isXNumeric&&a.config.xaxis.type==="datetime"?n=new pe(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,g,g,{i:void 0,dateFormatter:new G(this.ctx).formatDate,w:this.w}):n=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](g,c):a.globals.xLabelFormatter(g,c),a.config.tooltip.x.formatter!==void 0&&(n=a.globals.ttKeyFormatter(g,c)),a.globals.seriesZ.length>0&&a.globals.seriesZ[t].length>0&&(o=d(a.globals.seriesZ[t][i],a)),r=typeof a.config.xaxis.tooltip.formatter=="function"?a.globals.xaxisTooltipFormatter(g,c):n,{val:Array.isArray(h)?h.join(" "):h,xVal:Array.isArray(n)?n.join(" "):n,xAxisTTVal:Array.isArray(r)?r.join(" "):r,zVal:o}}},{key:"handleCustomTooltip",value:function(e){var t=e.i,i=e.j,a=e.y1,s=e.y2,n=e.w,r=this.ttCtx.getElTooltip(),o=n.config.tooltip.custom;Array.isArray(o)&&o[t]&&(o=o[t]),r.innerHTML=o({ctx:this.ctx,series:n.globals.series,seriesIndex:t,dataPointIndex:i,y1:a,y2:s,w:n})}}]),v}(),Ve=function(){function v(e){E(this,v),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return Y(v,[{key:"moveXCrosshairs",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),n=e-i.xcrosshairsWidth/2,r=a.globals.labels.slice().length;if(t!==null&&(n=a.globals.gridWidth/r*t),s===null||a.globals.isBarHorizontal||(s.setAttribute("x",n),s.setAttribute("x1",n),s.setAttribute("x2",n),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),n<0&&(n=0),n>a.globals.gridWidth&&(n=a.globals.gridWidth),i.isXAxisTooltipEnabled){var o=n;a.config.xaxis.crosshairs.width!=="tickWidth"&&a.config.xaxis.crosshairs.width!=="barWidth"||(o=n+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:"moveYCrosshairs",value:function(e){var t=this.ttCtx;t.ycrosshairs!==null&&M.setAttrs(t.ycrosshairs,{y1:e,y2:e}),t.ycrosshairsHidden!==null&&M.setAttrs(t.ycrosshairsHidden,{y1:e,y2:e})}},{key:"moveXAxisTooltip",value:function(e){var t=this.w,i=this.ttCtx;if(i.xaxisTooltip!==null&&i.xcrosshairsWidth!==0){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+t.config.xaxis.tooltip.offsetY+t.globals.translateY+1+t.config.xaxis.offsetY;if(e-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(e)){e+=t.globals.translateX;var s;s=new M(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=e+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(e){var t=this.w,i=this.ttCtx;i.yaxisTTEls===null&&(i.yaxisTTEls=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=t.globals.translateY+a,n=i.yaxisTTEls[e].getBoundingClientRect().height,r=t.globals.translateYAxisX[e]-2;t.config.yaxis[e].opposite&&(r-=26),s-=n/2,t.globals.ignoreYAxisIndexes.indexOf(e)===-1?(i.yaxisTTEls[e].classList.add("apexcharts-active"),i.yaxisTTEls[e].style.top=s+"px",i.yaxisTTEls[e].style.left=r+t.config.yaxis[e].tooltip.offsetX+"px"):i.yaxisTTEls[e].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=this.w,s=this.ttCtx,n=s.getElTooltip(),r=s.tooltipRect,o=i!==null?parseFloat(i):1,h=parseFloat(e)+o+5,c=parseFloat(t)+o/2;if(h>a.globals.gridWidth/2&&(h=h-r.ttWidth-o-10),h>a.globals.gridWidth-r.ttWidth-10&&(h=a.globals.gridWidth-r.ttWidth),h<-20&&(h=-20),a.config.tooltip.followCursor){var d=s.getElGrid(),g=d.getBoundingClientRect();c=s.e.clientY+a.globals.translateY-g.top-r.ttHeight/2}else a.globals.isBarHorizontal||(r.ttHeight/2+c>a.globals.gridHeight&&(c=a.globals.gridHeight-r.ttHeight+a.globals.translateY),c<0&&(c=0));isNaN(h)||(h+=a.globals.translateX,n.style.left=h+"px",n.style.top=c+"px")}},{key:"moveMarkers",value:function(e,t){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[e]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(e,"'] .apexcharts-marker")),n=0;n0&&(c.setAttribute("r",o),c.setAttribute("cx",i),c.setAttribute("cy",a)),this.moveXCrosshairs(i),n.fixedTooltip||this.moveTooltip(i,a,o)}}},{key:"moveDynamicPointsOnHover",value:function(e){var t,i=this.ttCtx,a=i.w,s=0,n=0,r=a.globals.pointsArray;t=new Z(this.ctx).getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var o=i.tooltipUtil.getHoverMarkerSize(t);r[t]&&(s=r[t][e][0],n=r[t][e][1]);var h=i.tooltipUtil.getAllMarkers();if(h!==null)for(var c=0;c0?(h[c]&&h[c].setAttribute("r",o),h[c]&&h[c].setAttribute("cy",g)):h[c]&&h[c].setAttribute("r",0)}}if(this.moveXCrosshairs(s),!i.fixedTooltip){var f=n||a.globals.gridHeight;this.moveTooltip(s,f,o)}}},{key:"moveStickyTooltipOverBars",value:function(e){var t=this.w,i=this.ttCtx,a=t.globals.columnSeries?t.globals.columnSeries.length:t.globals.series.length,s=a>=2&&a%2==0?Math.floor(a/2):Math.floor(a/2)+1;t.globals.isBarHorizontal&&(s=new Z(this.ctx).getActiveConfigSeriesIndex("desc")+1);var n=t.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(s,"'] path[j='").concat(e,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(e,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(e,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(e,"']")),r=n?parseFloat(n.getAttribute("cx")):0,o=n?parseFloat(n.getAttribute("cy")):0,h=n?parseFloat(n.getAttribute("barWidth")):0,c=n?parseFloat(n.getAttribute("barHeight")):0,d=i.getElGrid().getBoundingClientRect(),g=n.classList.contains("apexcharts-candlestick-area")||n.classList.contains("apexcharts-boxPlot-area");if(t.globals.isXNumeric?(n&&!g&&(r-=a%2!=0?h/2:0),n&&g&&t.globals.comboCharts&&(r-=h/2)):t.globals.isBarHorizontal||(r=i.xAxisTicksPositions[e-1]+i.dataPointsDividedWidth/2,isNaN(r)&&(r=i.xAxisTicksPositions[e]-i.dataPointsDividedWidth/2)),t.globals.isBarHorizontal?(o>t.globals.gridHeight/2&&(o-=i.tooltipRect.ttHeight),(o=o+t.config.grid.padding.top+c/3)+c>t.globals.gridHeight&&(o=t.globals.gridHeight-c)):t.config.tooltip.followCursor?o=i.e.clientY-d.top-i.tooltipRect.ttHeight/2:o+i.tooltipRect.ttHeight+15>t.globals.gridHeight&&(o=t.globals.gridHeight),o<-10&&(o=-10),t.globals.isBarHorizontal||this.moveXCrosshairs(r),!i.fixedTooltip){var p=o||t.globals.gridHeight;this.moveTooltip(r,p)}}}]),v}(),yt=function(){function v(e){E(this,v),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new Ve(e)}return Y(v,[{key:"drawDynamicPoints",value:function(){var e=this.w,t=new M(this.ctx),i=new he(this.ctx),a=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series");a=q(a),e.config.chart.stacked&&a.sort(function(d,g){return parseFloat(d.getAttribute("data:realIndex"))-parseFloat(g.getAttribute("data:realIndex"))});for(var s=0;s2&&arguments[2]!==void 0?arguments[2]:null,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=this.w;s.config.chart.type!=="bubble"&&this.newPointSize(e,t);var n=t.getAttribute("cx"),r=t.getAttribute("cy");if(i!==null&&a!==null&&(n=i,r=a),this.tooltipPosition.moveXCrosshairs(n),!this.fixedTooltip){if(s.config.chart.type==="radar"){var o=this.ttCtx.getElGrid(),h=o.getBoundingClientRect();n=this.ttCtx.e.clientX-h.left}this.tooltipPosition.moveTooltip(n,r,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(e){for(var t=this.w,i=this,a=this.ttCtx,s=e,n=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),r=t.config.markers.hover.size,o=0;o=0?e[t].setAttribute("r",i):e[t].setAttribute("r",0)}}}]),v}(),wt=function(){function v(e){E(this,v),this.w=e.w,this.ttCtx=e}return Y(v,[{key:"getAttr",value:function(e,t){return parseFloat(e.target.getAttribute(t))}},{key:"handleHeatTreeTooltip",value:function(e){var t=e.e,i=e.opt,a=e.x,s=e.y,n=e.type,r=this.ttCtx,o=this.w;if(t.target.classList.contains("apexcharts-".concat(n,"-rect"))){var h=this.getAttr(t,"i"),c=this.getAttr(t,"j"),d=this.getAttr(t,"cx"),g=this.getAttr(t,"cy"),p=this.getAttr(t,"width"),x=this.getAttr(t,"height");if(r.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:h,j:c,shared:!1,e:t}),o.globals.capturedSeriesIndex=h,o.globals.capturedDataPointIndex=c,a=d+r.tooltipRect.ttWidth/2+p,s=g+r.tooltipRect.ttHeight/2-x/2,r.tooltipPosition.moveXCrosshairs(d+p/2),a>o.globals.gridWidth/2&&(a=d-r.tooltipRect.ttWidth/2+p),r.w.config.tooltip.followCursor){var f=o.globals.dom.elWrap.getBoundingClientRect();a=o.globals.clientX-f.left-(a>o.globals.gridWidth/2?r.tooltipRect.ttWidth:0),s=o.globals.clientY-f.top-(s>o.globals.gridHeight/2?r.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(e){var t,i,a=e.e,s=e.opt,n=e.x,r=e.y,o=this.w,h=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var c=parseInt(s.paths.getAttribute("cx"),10),d=parseInt(s.paths.getAttribute("cy"),10),g=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),t=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,h.intersect){var p=P.findAncestor(s.paths,"apexcharts-series");p&&(t=parseInt(p.getAttribute("data:realIndex"),10))}if(h.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:t,j:i,shared:!h.showOnIntersect&&o.config.tooltip.shared,e:a}),a.type==="mouseup"&&h.markerClick(a,t,i),o.globals.capturedSeriesIndex=t,o.globals.capturedDataPointIndex=i,n=c,r=d+o.globals.translateY-1.4*h.tooltipRect.ttHeight,h.w.config.tooltip.followCursor){var x=h.getElGrid().getBoundingClientRect();r=h.e.clientY+o.globals.translateY-x.top}g<0&&(r=d),h.marker.enlargeCurrentPoint(i,s.paths,n,r)}return{x:n,y:r}}},{key:"handleBarTooltip",value:function(e){var t,i,a=e.e,s=e.opt,n=this.w,r=this.ttCtx,o=r.getElTooltip(),h=0,c=0,d=0,g=this.getBarTooltipXY({e:a,opt:s});t=g.i;var p=g.barHeight,x=g.j;n.globals.capturedSeriesIndex=t,n.globals.capturedDataPointIndex=x,n.globals.isBarHorizontal&&r.tooltipUtil.hasBars()||!n.config.tooltip.shared?(c=g.x,d=g.y,i=Array.isArray(n.config.stroke.width)?n.config.stroke.width[t]:n.config.stroke.width,h=c):n.globals.comboCharts||n.config.tooltip.shared||(h/=2),isNaN(d)?d=n.globals.svgHeight-r.tooltipRect.ttHeight:d<0&&(d=0);var f=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),y=n.globals.isMultipleYAxis?n.config.yaxis[f]&&n.config.yaxis[f].reversed:n.config.yaxis[0].reversed;if(c+r.tooltipRect.ttWidth>n.globals.gridWidth&&!y?c-=r.tooltipRect.ttWidth:c<0&&(c=0),r.w.config.tooltip.followCursor){var w=r.getElGrid().getBoundingClientRect();d=r.e.clientY-w.top}r.tooltip===null&&(r.tooltip=n.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),n.config.tooltip.shared||(n.globals.comboBarCount>0?r.tooltipPosition.moveXCrosshairs(h+i/2):r.tooltipPosition.moveXCrosshairs(h)),!r.fixedTooltip&&(!n.config.tooltip.shared||n.globals.isBarHorizontal&&r.tooltipUtil.hasBars())&&(y&&(c-=r.tooltipRect.ttWidth)<0&&(c=0),!y||n.globals.isBarHorizontal&&r.tooltipUtil.hasBars()||(d=d+p-2*(n.globals.series[t][x]<0?p:0)),r.tooltipRect.ttHeight+d>n.globals.gridHeight?d=n.globals.gridHeight-r.tooltipRect.ttHeight+n.globals.translateY:(d=d+n.globals.translateY-r.tooltipRect.ttHeight/2)<0&&(d=0),o.style.left=c+n.globals.translateX+"px",o.style.top=d+"px")}},{key:"getBarTooltipXY",value:function(e){var t=e.e,i=e.opt,a=this.w,s=null,n=this.ttCtx,r=0,o=0,h=0,c=0,d=0,g=t.target.classList;if(g.contains("apexcharts-bar-area")||g.contains("apexcharts-candlestick-area")||g.contains("apexcharts-boxPlot-area")||g.contains("apexcharts-rangebar-area")){var p=t.target,x=p.getBoundingClientRect(),f=i.elGrid.getBoundingClientRect(),y=x.height;d=x.height;var w=x.width,S=parseInt(p.getAttribute("cx"),10),k=parseInt(p.getAttribute("cy"),10);c=parseFloat(p.getAttribute("barWidth"));var l=t.type==="touchmove"?t.touches[0].clientX:t.clientX;s=parseInt(p.getAttribute("j"),10),r=parseInt(p.parentNode.getAttribute("rel"),10)-1;var u=p.getAttribute("data-range-y1"),b=p.getAttribute("data-range-y2");a.globals.comboCharts&&(r=parseInt(p.parentNode.getAttribute("data:realIndex"),10)),n.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:r,j:s,y1:u?parseInt(u,10):null,y2:b?parseInt(b,10):null,shared:!n.showOnIntersect&&a.config.tooltip.shared,e:t}),a.config.tooltip.followCursor?a.globals.isBarHorizontal?(o=l-f.left+15,h=k-n.dataPointsDividedHeight+y/2-n.tooltipRect.ttHeight/2):(o=a.globals.isXNumeric?S-w/2:S-n.dataPointsDividedWidth+w/2,h=t.clientY-f.top-n.tooltipRect.ttHeight/2-15):a.globals.isBarHorizontal?((o=S)0&&i.setAttribute("width",t.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var e=this.w,t=this.ttCtx;t.ycrosshairs=e.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),t.ycrosshairsHidden=e.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(e,t,i){var a=this.ttCtx,s=this.w,n=s.globals.yLabelFormatters[e];if(a.yaxisTooltips[e]){var r=a.getElGrid().getBoundingClientRect(),o=(t-r.top)*i.yRatio[e],h=s.globals.maxYArr[e]-s.globals.minYArr[e],c=s.globals.minYArr[e]+(h-o);a.tooltipPosition.moveYCrosshairs(t-r.top),a.yaxisTooltipText[e].innerHTML=n(c),a.tooltipPosition.moveYAxisTooltip(e)}}}]),v}(),je=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w;var t=this.w;this.tConfig=t.config.tooltip,this.tooltipUtil=new Ge(this),this.tooltipLabels=new vt(this),this.tooltipPosition=new Ve(this),this.marker=new yt(this),this.intersect=new wt(this),this.axesTooltip=new kt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!t.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return Y(v,[{key:"getElTooltip",value:function(e){return e||(e=this),e.w.globals.dom.baseEl?e.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(e){var t=this.w;this.xyRatios=e,this.isXAxisTooltipEnabled=t.config.xaxis.tooltip.enabled&&t.globals.axisCharts,this.yaxisTooltips=t.config.yaxis.map(function(n,r){return!!(n.show&&n.tooltip.enabled&&t.globals.axisCharts)}),this.allTooltipSeriesGroups=[],t.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),t.config.tooltip.cssClass&&i.classList.add(t.config.tooltip.cssClass),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),t.globals.dom.elWrap.appendChild(i),t.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new ce(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!t.globals.comboCharts&&!this.tConfig.intersect&&t.config.chart.type!=="rangeBar"||this.tConfig.shared||(this.showOnIntersect=!0),t.config.markers.size!==0&&t.globals.markers.largestSize!==0||this.marker.drawDynamicPoints(this),t.globals.collapsedSeries.length!==t.globals.series.length){this.dataPointsDividedHeight=t.globals.gridHeight/t.globals.dataPoints,this.dataPointsDividedWidth=t.globals.gridWidth/t.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||t.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=t.globals.series.length;(t.globals.xyCharts||t.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:t.globals.series.length),this.legendLabels=t.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(e){for(var t=this,i=this.w,a=[],s=this.getElTooltip(),n=function(o){var h=document.createElement("div");h.classList.add("apexcharts-tooltip-series-group"),h.style.order=i.config.tooltip.inverseOrder?e-o:o+1,t.tConfig.shared&&t.tConfig.enabledOnSeries&&Array.isArray(t.tConfig.enabledOnSeries)&&t.tConfig.enabledOnSeries.indexOf(o)<0&&h.classList.add("apexcharts-tooltip-series-group-hidden");var c=document.createElement("span");c.classList.add("apexcharts-tooltip-marker"),c.style.backgroundColor=i.globals.colors[o],h.appendChild(c);var d=document.createElement("div");d.classList.add("apexcharts-tooltip-text"),d.style.fontFamily=t.tConfig.style.fontFamily||i.config.chart.fontFamily,d.style.fontSize=t.tConfig.style.fontSize,["y","goals","z"].forEach(function(g){var p=document.createElement("div");p.classList.add("apexcharts-tooltip-".concat(g,"-group"));var x=document.createElement("span");x.classList.add("apexcharts-tooltip-text-".concat(g,"-label")),p.appendChild(x);var f=document.createElement("span");f.classList.add("apexcharts-tooltip-text-".concat(g,"-value")),p.appendChild(f),d.appendChild(p)}),h.appendChild(d),s.appendChild(h),a.push(h)},r=0;r0&&this.addPathsEventListeners(x,d),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(d)}}},{key:"drawFixedTooltipRect",value:function(){var e=this.w,t=this.getElTooltip(),i=t.getBoundingClientRect(),a=i.width+10,s=i.height+10,n=this.tConfig.fixed.offsetX,r=this.tConfig.fixed.offsetY,o=this.tConfig.fixed.position.toLowerCase();return o.indexOf("right")>-1&&(n=n+e.globals.svgWidth-a+10),o.indexOf("bottom")>-1&&(r=r+e.globals.svgHeight-s-10),t.style.left=n+"px",t.style.top=r+"px",{x:n,y:r,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(e){var t=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(t,e)}},{key:"addPathsEventListeners",value:function(e,t){for(var i=this,a=function(n){var r={paths:e[n],tooltipEl:t.tooltipEl,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:t.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map(function(o){return e[n].addEventListener(o,i.onSeriesHover.bind(i,r),{capture:!1,passive:!0})})},s=0;s=100?this.seriesHover(e,t):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout(function(){i.seriesHover(e,t)},100-a))}},{key:"seriesHover",value:function(e,t){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||s.globals.dataPoints===0)||(a.length?a.forEach(function(n){var r=i.getElTooltip(n),o={paths:e.paths,tooltipEl:r,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:n.w.globals.tooltip.ttItems};n.w.globals.minX===i.w.globals.minX&&n.w.globals.maxX===i.w.globals.maxX&&n.w.globals.tooltip.seriesHoverByContext({chartCtx:n,ttCtx:n.w.globals.tooltip,opt:o,e:t})}):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:e,e:t}))}},{key:"seriesHoverByContext",value:function(e){var t=e.chartCtx,i=e.ttCtx,a=e.opt,s=e.e,n=t.w,r=this.getElTooltip();r&&(i.tooltipRect={x:0,y:0,ttWidth:r.getBoundingClientRect().width,ttHeight:r.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!n.globals.comboCharts&&!i.isBarShared&&this.tConfig.onDatasetHover.highlightDataSeries&&new Z(t).toggleSeriesOnHover(s,s.target.parentNode),i.fixedTooltip&&i.drawFixedTooltipRect(),n.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}))}},{key:"axisChartsTooltips",value:function(e){var t,i,a=e.e,s=e.opt,n=this.w,r=s.elGrid.getBoundingClientRect(),o=a.type==="touchmove"?a.touches[0].clientX:a.clientX,h=a.type==="touchmove"?a.touches[0].clientY:a.clientY;if(this.clientY=h,this.clientX=o,n.globals.capturedSeriesIndex=-1,n.globals.capturedDataPointIndex=-1,hr.top+r.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!n.config.tooltip.shared){var c=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(c)<0)return void this.handleMouseOut(s)}var d=this.getElTooltip(),g=this.getElXCrosshairs(),p=n.globals.xyCharts||n.config.chart.type==="bar"&&!n.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||n.globals.comboCharts&&this.tooltipUtil.hasBars();if(a.type==="mousemove"||a.type==="touchmove"||a.type==="mouseup"){if(n.globals.collapsedSeries.length+n.globals.ancillaryCollapsedSeries.length===n.globals.series.length)return;g!==null&&g.classList.add("apexcharts-active");var x=this.yaxisTooltips.filter(function(w){return w===!0});if(this.ycrosshairs!==null&&x.length&&this.ycrosshairs.classList.add("apexcharts-active"),p&&!this.showOnIntersect)this.handleStickyTooltip(a,o,h,s);else if(n.config.chart.type==="heatmap"||n.config.chart.type==="treemap"){var f=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:t,y:i,type:n.config.chart.type});t=f.x,i=f.y,d.style.left=t+"px",d.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:t,y:i});if(this.yaxisTooltips.length)for(var y=0;yh.width?this.handleMouseOut(a):o!==null?this.handleStickyCapturedSeries(e,o,a,r):(this.tooltipUtil.isXoverlap(r)||s.globals.isBarHorizontal)&&this.create(e,this,0,r,a.ttItems)}},{key:"handleStickyCapturedSeries",value:function(e,t,i,a){var s=this.w;if(!this.tConfig.shared&&s.globals.series[t][a]===null)return void this.handleMouseOut(i);s.globals.series[t][a]!==void 0?this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(e,this,t,a,i.ttItems):this.create(e,this,t,a,i.ttItems,!1):this.tooltipUtil.isXoverlap(a)&&this.create(e,this,0,a,i.ttItems)}},{key:"deactivateHoverFilter",value:function(){for(var e=this.w,t=new M(this.ctx),i=e.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&arguments[5]!==void 0?arguments[5]:null,r=this.w,o=t;e.type==="mouseup"&&this.markerClick(e,i,a),n===null&&(n=this.tConfig.shared);var h=this.tooltipUtil.hasMarkers(),c=this.tooltipUtil.getElBars();if(r.config.legend.tooltipHoverFormatter){var d=r.config.legend.tooltipHoverFormatter,g=Array.from(this.legendLabels);g.forEach(function(u){var b=u.getAttribute("data:default-text");u.innerHTML=decodeURIComponent(b)});for(var p=0;p0?o.marker.enlargePoints(a):o.tooltipPosition.moveDynamicPointsOnHover(a)),this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(c),this.barSeriesHeight>0)){var S=new M(this.ctx),k=r.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(a,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a);for(var l=0;ls.globals.gridHeight&&(x=s.globals.gridHeight-S)),{bcx:c,bcy:h,dataLabelsX:t,dataLabelsY:x,totalDataLabelsX:a,totalDataLabelsY:i,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(e){var t=this.w,i=e.x,a=e.i,s=e.j,n=e.realIndex,r=e.bcy,o=e.barHeight,h=e.barWidth,c=e.textRects,d=e.dataLabelsX,g=e.strokeWidth,p=e.dataLabelsConfig,x=e.barDataLabelsConfig,f=e.barTotalDataLabelsConfig,y=e.offX,w=e.offY,S=t.globals.gridHeight/t.globals.dataPoints;h=Math.abs(h);var k,l,u=r-(this.barCtx.isRangeBar?0:S)+o/2+c.height/2+w-3,b="start",m=this.barCtx.series[a][s]<0,A=i;switch(this.barCtx.isReversed&&(A=i+h-(m?2*h:0),i=t.globals.gridWidth-h),x.position){case"center":d=m?A+h/2-y:Math.max(c.width/2,A-h/2)+y;break;case"bottom":d=m?A+h-g-Math.round(c.width/2)-y:A-h+g+Math.round(c.width/2)+y;break;case"top":d=m?A-g+Math.round(c.width/2)-y:A-g-Math.round(c.width/2)+y}if(this.barCtx.lastActiveBarSerieIndex===n&&f.enabled){var L=new M(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:n,j:s}),p.fontSize);m?(k=A-g+Math.round(L.width/2)-y-f.offsetX-15,b="end"):k=A-g-Math.round(L.width/2)+y+f.offsetX+15,l=u+f.offsetY}return t.config.chart.stacked||(d<0?d=d+c.width+g:d+c.width/2>t.globals.gridWidth&&(d=t.globals.gridWidth-c.width-g)),{bcx:i,bcy:r,dataLabelsX:d,dataLabelsY:u,totalDataLabelsX:k,totalDataLabelsY:l,totalDataLabelsAnchor:b}}},{key:"drawCalculatedDataLabels",value:function(e){var t=e.x,i=e.y,a=e.val,s=e.i,n=e.j,r=e.textRects,o=e.barHeight,h=e.barWidth,c=e.dataLabelsConfig,d=this.w,g="rotate(0)";d.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(g="rotate(-90, ".concat(t,", ").concat(i,")"));var p=new ie(this.barCtx.ctx),x=new M(this.barCtx.ctx),f=c.formatter,y=null,w=d.globals.collapsedSeriesIndices.indexOf(s)>-1;if(c.enabled&&!w){y=x.group({class:"apexcharts-data-labels",transform:g});var S="";a!==void 0&&(S=f(a,F(F({},d),{},{seriesIndex:s,dataPointIndex:n,w:d})));var k=d.globals.series[s][n]<0,l=d.config.plotOptions.bar.dataLabels.position;d.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(l==="top"&&(c.textAnchor=k?"end":"start"),l==="center"&&(c.textAnchor="middle"),l==="bottom"&&(c.textAnchor=k?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels&&hMath.abs(h)&&(S=""):r.height/1.6>Math.abs(o)&&(S=""));var u=F({},c);this.barCtx.isHorizontal&&a<0&&(c.textAnchor==="start"?u.textAnchor="end":c.textAnchor==="end"&&(u.textAnchor="start")),p.plotDataLabelsText({x:t,y:i,text:S,i:s,j:n,parent:y,dataLabelsConfig:u,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return y}},{key:"drawTotalDataLabels",value:function(e){var t,i=e.x,a=e.y,s=e.val,n=e.realIndex,r=e.textAnchor,o=e.barTotalDataLabelsConfig,h=new M(this.barCtx.ctx);return o.enabled&&i!==void 0&&a!==void 0&&this.barCtx.lastActiveBarSerieIndex===n&&(t=h.drawText({x:i,y:a,foreColor:o.style.color,text:s,textAnchor:r,fontFamily:o.style.fontFamily,fontSize:o.style.fontSize,fontWeight:o.style.fontWeight})),t}}]),v}(),St=function(){function v(e){E(this,v),this.w=e.w,this.barCtx=e}return Y(v,[{key:"initVariables",value:function(e){var t=this.w;this.barCtx.series=e,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=e[i].length),t.globals.isXNumeric)for(var a=0;at.globals.minX&&t.globals.seriesX[i][a]0&&(a=h.globals.minXDiff/g),(n=a/this.barCtx.seriesLen*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(n=1)}r=h.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?h.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),e=h.globals.padHorizontal+(a-n*this.barCtx.seriesLen)/2}return{x:e,y:t,yDivision:i,xDivision:a,barHeight:s,barWidth:n,zeroH:r,zeroW:o}}},{key:"getPathFillColor",value:function(e,t,i,a){var s,n,r,o,h=this.w,c=new $(this.barCtx.ctx),d=null,g=this.barCtx.barOptions.distributed?i:t;return this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map(function(p){e[t][i]>=p.from&&e[t][i]<=p.to&&(d=p.color)}),h.config.series[t].data[i]&&h.config.series[t].data[i].fillColor&&(d=h.config.series[t].data[i].fillColor),c.fillPath({seriesNumber:this.barCtx.barOptions.distributed?g:a,dataPointIndex:i,color:d,value:e[t][i],fillConfig:(s=h.config.series[t].data[i])===null||s===void 0?void 0:s.fill,fillType:(n=h.config.series[t].data[i])!==null&&n!==void 0&&(r=n.fill)!==null&&r!==void 0&&r.type?(o=h.config.series[t].data[i])===null||o===void 0?void 0:o.fill.type:h.config.fill.type})}},{key:"getStrokeWidth",value:function(e,t,i){var a=0,s=this.w;return this.barCtx.series[e][t]===void 0||this.barCtx.series[e][t]===null?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"shouldApplyRadius",value:function(e){var t=this.w,i=!1;return t.config.plotOptions.bar.borderRadius>0&&(t.config.chart.stacked&&t.config.plotOptions.bar.borderRadiusWhenStacked==="last"?this.barCtx.lastActiveBarSerieIndex===e&&(i=!0):i=!0),i}},{key:"barBackground",value:function(e){var t=e.j,i=e.i,a=e.x1,s=e.x2,n=e.y1,r=e.y2,o=e.elSeries,h=this.w,c=new M(this.barCtx.ctx),d=new Z(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&d===i){t>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(t%=this.barCtx.barOptions.colors.backgroundBarColors.length);var g=this.barCtx.barOptions.colors.backgroundBarColors[t],p=c.drawRect(a!==void 0?a:0,n!==void 0?n:0,s!==void 0?s:h.globals.gridWidth,r!==void 0?r:h.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,g,this.barCtx.barOptions.colors.backgroundBarOpacity);o.add(p),p.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(e){var t,i=e.barWidth,a=e.barXPosition,s=e.y1,n=e.y2,r=e.strokeWidth,o=e.realIndex,h=e.i,c=e.j,d=e.w,g=new M(this.barCtx.ctx);(r=Array.isArray(r)?r[o]:r)||(r=0);var p=i,x=a;(t=d.config.series[o].data[c])!==null&&t!==void 0&&t.columnWidthOffset&&(x=a-d.config.series[o].data[c].columnWidthOffset/2,p=i+d.config.series[o].data[c].columnWidthOffset);var f=x,y=x+p;s+=.001,n+=.001;var w=g.move(f,s),S=g.move(f,s),k=g.line(y-r,s);return d.globals.previousPaths.length>0&&(S=this.barCtx.getPreviousPath(o,c,!1)),w=w+g.line(f,n)+g.line(y-r,n)+g.line(y-r,s)+(d.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),S=S+g.line(f,s)+k+k+k+k+k+g.line(f,s)+(d.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),this.shouldApplyRadius(o)&&(w=g.roundPathCorners(w,d.config.plotOptions.bar.borderRadius)),d.config.chart.stacked&&(this.barCtx.yArrj.push(n),this.barCtx.yArrjF.push(Math.abs(s-n)),this.barCtx.yArrjVal.push(this.barCtx.series[h][c])),{pathTo:w,pathFrom:S}}},{key:"getBarpaths",value:function(e){var t,i=e.barYPosition,a=e.barHeight,s=e.x1,n=e.x2,r=e.strokeWidth,o=e.realIndex,h=e.i,c=e.j,d=e.w,g=new M(this.barCtx.ctx);(r=Array.isArray(r)?r[o]:r)||(r=0);var p=i,x=a;(t=d.config.series[o].data[c])!==null&&t!==void 0&&t.barHeightOffset&&(p=i-d.config.series[o].data[c].barHeightOffset/2,x=a+d.config.series[o].data[c].barHeightOffset);var f=p,y=p+x;s+=.001,n+=.001;var w=g.move(s,f),S=g.move(s,f);d.globals.previousPaths.length>0&&(S=this.barCtx.getPreviousPath(o,c,!1));var k=g.line(s,y-r);return w=w+g.line(n,f)+g.line(n,y-r)+k+(d.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),S=S+g.line(s,f)+k+k+k+k+k+g.line(s,f)+(d.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),this.shouldApplyRadius(o)&&(w=g.roundPathCorners(w,d.config.plotOptions.bar.borderRadius)),d.config.chart.stacked&&(this.barCtx.xArrj.push(n),this.barCtx.xArrjF.push(Math.abs(s-n)),this.barCtx.xArrjVal.push(this.barCtx.series[h][c])),{pathTo:w,pathFrom:S}}},{key:"checkZeroSeries",value:function(e){for(var t=e.series,i=this.w,a=0;a=0;r--)this.barCtx.zeroSerieses.indexOf(r)>-1&&r===this.radiusOnSeriesNumber&&(this.barCtx.radiusOnSeriesNumber-=1);for(var o=t.length-1;o>=0;o--)i.globals.collapsedSeriesIndices.indexOf(this.barCtx.radiusOnSeriesNumber)>-1&&(this.barCtx.radiusOnSeriesNumber-=1)}},{key:"getXForValue",value:function(e,t){var i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],a=i?t:null;return e!=null&&(a=t+e/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?e/this.barCtx.invertedYRatio:0)),a}},{key:"getYForValue",value:function(e,t){var i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],a=i?t:null;return e!=null&&(a=t-e/this.barCtx.yRatio[this.barCtx.yaxisIndex]+2*(this.barCtx.isReversed?e/this.barCtx.yRatio[this.barCtx.yaxisIndex]:0)),a}},{key:"getGoalValues",value:function(e,t,i,a,s){var n=this,r=this.w,o=[];return r.globals.seriesGoals[a]&&r.globals.seriesGoals[a][s]&&Array.isArray(r.globals.seriesGoals[a][s])&&r.globals.seriesGoals[a][s].forEach(function(h){var c;o.push((de(c={},e,e==="x"?n.getXForValue(h.value,t,!1):n.getYForValue(h.value,i,!1)),de(c,"attrs",h),c))}),o}},{key:"drawGoalLine",value:function(e){var t=e.barXPosition,i=e.barYPosition,a=e.goalX,s=e.goalY,n=e.barWidth,r=e.barHeight,o=new M(this.barCtx.ctx),h=o.group({className:"apexcharts-bar-goals-groups"}),c=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach(function(d){var g=d.attrs.strokeHeight!==void 0?d.attrs.strokeHeight:r/2,p=i+g+r/2;c=o.drawLine(d.x,p-2*g,d.x,p,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeWidth?d.attrs.strokeWidth:2,d.attrs.strokeLineCap),h.add(c)}):Array.isArray(s)&&s.forEach(function(d){var g=d.attrs.strokeWidth!==void 0?d.attrs.strokeWidth:n/2,p=t+g+n/2;c=o.drawLine(p-2*g,d.y,p,d.y,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeHeight?d.attrs.strokeHeight:2,d.attrs.strokeLineCap),h.add(c)}),h}}]),v}(),se=function(){function v(e,t){E(this,v),this.ctx=e,this.w=e.w;var i=this.w;this.barOptions=i.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=i.config.stroke.width,this.isNullValue=!1,this.isRangeBar=i.globals.seriesRange.length&&this.isHorizontal,this.xyRatios=t,this.xyRatios!==null&&(this.xRatio=t.xRatio,this.initialXRatio=t.initialXRatio,this.yRatio=t.yRatio,this.invertedXRatio=t.invertedXRatio,this.invertedYRatio=t.invertedYRatio,this.baseLineY=t.baseLineY,this.baseLineInvertedY=t.baseLineInvertedY),this.yaxisIndex=0,this.seriesLen=0;var a=new Z(this.ctx);this.lastActiveBarSerieIndex=a.getActiveConfigSeriesIndex("desc",["bar","column"]);var s=a.getBarSeriesIndices(),n=new N(this.ctx);this.stackedSeriesTotals=n.getStackedSeriesTotals(this.w.config.series.map(function(r,o){return s.indexOf(o)===-1?o:-1}).filter(function(r){return r!==-1})),this.barHelpers=new St(this)}return Y(v,[{key:"draw",value:function(e,t){var i=this.w,a=new M(this.ctx),s=new N(this.ctx,i);e=s.getLogSeries(e),this.series=e,this.yRatio=s.getLogYRatios(this.yRatio),this.barHelpers.initVariables(e);var n=a.group({class:"apexcharts-bar-series apexcharts-plot-series"});i.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.");for(var r=0,o=0;r0&&(this.visibleI=this.visibleI+1);var k=0,l=0;this.yRatio.length>1&&(this.yaxisIndex=w),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var u=this.barHelpers.initialPositions();x=u.y,k=u.barHeight,c=u.yDivision,g=u.zeroW,p=u.x,l=u.barWidth,h=u.xDivision,d=u.zeroH,this.horizontal||y.push(p+l/2);for(var b=a.group({class:"apexcharts-datalabels","data:realIndex":w}),m=a.group({class:"apexcharts-bar-goals-markers",style:"pointer-events: none"}),A=0;A0&&y.push(p+l/2),f.push(x);var X=this.barHelpers.getPathFillColor(e,r,A,w);this.renderSeries({realIndex:w,pathFill:X,j:A,i:r,pathFrom:C.pathFrom,pathTo:C.pathTo,strokeWidth:L,elSeries:S,x:p,y:x,series:e,barHeight:k,barWidth:l,elDataLabelsWrap:b,elGoalsMarkers:m,visibleSeries:this.visibleI,type:"bar"})}i.globals.seriesXvalues[w]=y,i.globals.seriesYvalues[w]=f,n.add(S)}return n}},{key:"renderSeries",value:function(e){var t=e.realIndex,i=e.pathFill,a=e.lineFill,s=e.j,n=e.i,r=e.pathFrom,o=e.pathTo,h=e.strokeWidth,c=e.elSeries,d=e.x,g=e.y,p=e.y1,x=e.y2,f=e.series,y=e.barHeight,w=e.barWidth,S=e.barYPosition,k=e.elDataLabelsWrap,l=e.elGoalsMarkers,u=e.visibleSeries,b=e.type,m=this.w,A=new M(this.ctx);a||(a=this.barOptions.distributed?m.globals.stroke.colors[s]:m.globals.stroke.colors[t]),m.config.series[n].data[s]&&m.config.series[n].data[s].strokeColor&&(a=m.config.series[n].data[s].strokeColor),this.isNullValue&&(i="none");var L=s/m.config.chart.animations.animateGradually.delay*(m.config.chart.animations.speed/m.globals.dataPoints)/2.4,C=A.renderPaths({i:n,j:s,realIndex:t,pathFrom:r,pathTo:o,stroke:a,strokeWidth:h,strokeLineCap:m.config.stroke.lineCap,fill:i,animationDelay:L,initialSpeed:m.config.chart.animations.speed,dataChangeSpeed:m.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(b,"-area")});C.attr("clip-path","url(#gridRectMask".concat(m.globals.cuid,")"));var T=m.config.forecastDataPoints;T.count>0&&s>=m.globals.dataPoints-T.count&&(C.node.setAttribute("stroke-dasharray",T.dashArray),C.node.setAttribute("stroke-width",T.strokeWidth),C.node.setAttribute("fill-opacity",T.fillOpacity)),p!==void 0&&x!==void 0&&(C.attr("data-range-y1",p),C.attr("data-range-y2",x)),new B(this.ctx).setSelectionFilter(C,t,s),c.add(C);var I=new At(this).handleBarDataLabels({x:d,y:g,y1:p,y2:x,i:n,j:s,series:f,realIndex:t,barHeight:y,barWidth:w,barYPosition:S,renderedPath:C,visibleSeries:u});return I.dataLabels!==null&&k.add(I.dataLabels),I.totalDataLabels&&k.add(I.totalDataLabels),c.add(k),l&&c.add(l),c}},{key:"drawBarPaths",value:function(e){var t=e.indexes,i=e.barHeight,a=e.strokeWidth,s=e.zeroW,n=e.x,r=e.y,o=e.yDivision,h=e.elSeries,c=this.w,d=t.i,g=t.j;c.globals.isXNumeric&&(r=(c.globals.seriesX[d][g]-c.globals.minX)/this.invertedXRatio-i);var p=r+i*this.visibleI;n=this.barHelpers.getXForValue(this.series[d][g],s);var x=this.barHelpers.getBarpaths({barYPosition:p,barHeight:i,x1:s,x2:n,strokeWidth:a,series:this.series,realIndex:t.realIndex,i:d,j:g,w:c});return c.globals.isXNumeric||(r+=o),this.barHelpers.barBackground({j:g,i:d,y1:p-i*this.visibleI,y2:i*this.seriesLen,elSeries:h}),{pathTo:x.pathTo,pathFrom:x.pathFrom,x:n,y:r,goalX:this.barHelpers.getGoalValues("x",s,null,d,g),barYPosition:p}}},{key:"drawColumnPaths",value:function(e){var t=e.indexes,i=e.x,a=e.y,s=e.xDivision,n=e.barWidth,r=e.zeroH,o=e.strokeWidth,h=e.elSeries,c=this.w,d=t.realIndex,g=t.i,p=t.j,x=t.bc;if(c.globals.isXNumeric){var f=d;c.globals.seriesX[d].length||(f=c.globals.maxValsInArrayIndex),i=(c.globals.seriesX[f][p]-c.globals.minX)/this.xRatio-n*this.seriesLen/2}var y=i+n*this.visibleI;a=this.barHelpers.getYForValue(this.series[g][p],r);var w=this.barHelpers.getColumnPaths({barXPosition:y,barWidth:n,y1:r,y2:a,strokeWidth:o,series:this.series,realIndex:t.realIndex,i:g,j:p,w:c});return c.globals.isXNumeric||(i+=s),this.barHelpers.barBackground({bc:x,j:p,i:g,x1:y-o/2-n*this.visibleI,x2:n*this.seriesLen+o/2,elSeries:h}),{pathTo:w.pathTo,pathFrom:w.pathFrom,x:i,y:a,goalY:this.barHelpers.getGoalValues("y",null,r,g,p),barXPosition:y}}},{key:"getPreviousPath",value:function(e,t){for(var i,a=this.w,s=0;s0&&parseInt(n.realIndex,10)===parseInt(e,10)&&a.globals.previousPaths[s].paths[t]!==void 0&&(i=a.globals.previousPaths[s].paths[t].d)}return i}}]),v}(),_e=function(v){re(t,se);var e=ne(t);function t(){return E(this,t),e.apply(this,arguments)}return Y(t,[{key:"draw",value:function(i,a){var s=this,n=this.w;this.graphics=new M(this.ctx),this.bar=new se(this.ctx,this.xyRatios);var r=new N(this.ctx,n);i=r.getLogSeries(i),this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(i),n.config.chart.stackType==="100%"&&(i=n.globals.seriesPercent.slice()),this.series=i,this.totalItems=0,this.prevY=[],this.prevX=[],this.prevYF=[],this.prevXF=[],this.prevYVal=[],this.prevXVal=[],this.xArrj=[],this.xArrjF=[],this.xArrjVal=[],this.yArrj=[],this.yArrjF=[],this.yArrjVal=[];for(var o=0;o0&&(this.totalItems+=i[o].length);for(var h=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),c=0,d=0,g=function(f,y){var w=void 0,S=void 0,k=void 0,l=void 0,u=[],b=[],m=n.globals.comboCharts?a[f]:f;s.yRatio.length>1&&(s.yaxisIndex=m),s.isReversed=n.config.yaxis[s.yaxisIndex]&&n.config.yaxis[s.yaxisIndex].reversed;var A=s.graphics.group({class:"apexcharts-series",seriesName:P.escapeString(n.globals.seriesNames[m]),rel:f+1,"data:realIndex":m});s.ctx.series.addCollapsedClassToSeries(A,m);var L=s.graphics.group({class:"apexcharts-datalabels","data:realIndex":m}),C=s.graphics.group({class:"apexcharts-bar-goals-markers",style:"pointer-events: none"}),T=0,I=0,X=s.initialPositions(c,d,w,S,k,l);d=X.y,T=X.barHeight,S=X.yDivision,l=X.zeroW,c=X.x,I=X.barWidth,w=X.xDivision,k=X.zeroH,s.yArrj=[],s.yArrjF=[],s.yArrjVal=[],s.xArrj=[],s.xArrjF=[],s.xArrjVal=[],s.prevY.length===1&&s.prevY[0].every(function(j){return isNaN(j)})&&(s.prevY[0]=s.prevY[0].map(function(j){return k}),s.prevYF[0]=s.prevYF[0].map(function(j){return 0}));for(var z=0;z1?(s=d.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:c*parseInt(d.config.plotOptions.bar.columnWidth,10)/100,r=d.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?d.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),i=d.globals.padHorizontal+(s-c)/2),{x:i,y:a,yDivision:n,xDivision:s,barHeight:h,barWidth:c,zeroH:r,zeroW:o}}},{key:"drawStackedBarPaths",value:function(i){for(var a,s=i.indexes,n=i.barHeight,r=i.strokeWidth,o=i.zeroW,h=i.x,c=i.y,d=i.yDivision,g=i.elSeries,p=this.w,x=c,f=s.i,y=s.j,w=0,S=0;S0){var k=o;this.prevXVal[f-1][y]<0?k=this.series[f][y]>=0?this.prevX[f-1][y]+w-2*(this.isReversed?w:0):this.prevX[f-1][y]:this.prevXVal[f-1][y]>=0&&(k=this.series[f][y]>=0?this.prevX[f-1][y]:this.prevX[f-1][y]-w+2*(this.isReversed?w:0)),a=k}else a=o;h=this.series[f][y]===null?a:a+this.series[f][y]/this.invertedYRatio-2*(this.isReversed?this.series[f][y]/this.invertedYRatio:0);var l=this.barHelpers.getBarpaths({barYPosition:x,barHeight:n,x1:a,x2:h,strokeWidth:r,series:this.series,realIndex:s.realIndex,i:f,j:y,w:p});return this.barHelpers.barBackground({j:y,i:f,y1:x,y2:n,elSeries:g}),c+=d,{pathTo:l.pathTo,pathFrom:l.pathFrom,goalX:this.barHelpers.getGoalValues("x",o,null,f,y),barYPosition:x,x:h,y:c}}},{key:"drawStackedColumnPaths",value:function(i){var a=i.indexes,s=i.x,n=i.y,r=i.xDivision,o=i.barWidth,h=i.zeroH;i.strokeWidth;var c=i.elSeries,d=this.w,g=a.i,p=a.j,x=a.bc;if(d.globals.isXNumeric){var f=d.globals.seriesX[g][p];f||(f=0),s=(f-d.globals.minX)/this.xRatio-o/2}for(var y,w=s,S=0,k=0;k0&&!d.globals.isXNumeric||g>0&&d.globals.isXNumeric&&d.globals.seriesX[g-1][p]===d.globals.seriesX[g][p]){var l,u,b=Math.min(this.yRatio.length+1,g+1);if(this.prevY[g-1]!==void 0){for(var m=1;m=0?u-S+2*(this.isReversed?S:0):u;break}if(this.prevYVal[g-A][p]>=0){l=this.series[g][p]>=0?u:u+S-2*(this.isReversed?S:0);break}}l===void 0&&(l=d.globals.gridHeight),y=this.prevYF[0].every(function(C){return C===0})&&this.prevYF.slice(1,g).every(function(C){return C.every(function(T){return isNaN(T)})})?h:l}else y=h;n=y-this.series[g][p]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[g][p]/this.yRatio[this.yaxisIndex]:0);var L=this.barHelpers.getColumnPaths({barXPosition:w,barWidth:o,y1:y,y2:n,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,realIndex:a.realIndex,i:g,j:p,w:d});return this.barHelpers.barBackground({bc:x,j:p,i:g,x1:w,x2:o,elSeries:c}),s+=r,{pathTo:L.pathTo,pathFrom:L.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,h,g,p),barXPosition:w,x:d.globals.isXNumeric?s-r:s,y:n}}}]),t}(),Ce=function(v){re(t,se);var e=ne(t);function t(){return E(this,t),e.apply(this,arguments)}return Y(t,[{key:"draw",value:function(i,a){var s=this,n=this.w,r=new M(this.ctx),o=new $(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=n.config.plotOptions.bar.horizontal;var h=new N(this.ctx,n);i=h.getLogSeries(i),this.series=i,this.yRatio=h.getLogYRatios(this.yRatio),this.barHelpers.initVariables(i);for(var c=r.group({class:"apexcharts-".concat(n.config.chart.type,"-series apexcharts-plot-series")}),d=function(p){s.isBoxPlot=n.config.chart.type==="boxPlot"||n.config.series[p].type==="boxPlot";var x,f,y,w,S=void 0,k=void 0,l=[],u=[],b=n.globals.comboCharts?a[p]:p,m=r.group({class:"apexcharts-series",seriesName:P.escapeString(n.globals.seriesNames[b]),rel:p+1,"data:realIndex":b});s.ctx.series.addCollapsedClassToSeries(m,b),i[p].length>0&&(s.visibleI=s.visibleI+1);var A,L;s.yRatio.length>1&&(s.yaxisIndex=b);var C=s.barHelpers.initialPositions();k=C.y,A=C.barHeight,f=C.yDivision,w=C.zeroW,S=C.x,L=C.barWidth,x=C.xDivision,y=C.zeroH,u.push(S+L/2);for(var T=r.group({class:"apexcharts-datalabels","data:realIndex":b}),I=function(z){var D=s.barHelpers.getStrokeWidth(p,z,b),R=null,H={indexes:{i:p,j:z,realIndex:b},x:S,y:k,strokeWidth:D,elSeries:m};R=s.isHorizontal?s.drawHorizontalBoxPaths(F(F({},H),{},{yDivision:f,barHeight:A,zeroW:w})):s.drawVerticalBoxPaths(F(F({},H),{},{xDivision:x,barWidth:L,zeroH:y})),k=R.y,S=R.x,z>0&&u.push(S+L/2),l.push(k),R.pathTo.forEach(function(O,V){var j=!s.isBoxPlot&&s.candlestickOptions.wick.useFillColor?R.color[V]:n.globals.stroke.colors[p],J=o.fillPath({seriesNumber:b,dataPointIndex:z,color:R.color[V],value:i[p][z]});s.renderSeries({realIndex:b,pathFill:J,lineFill:j,j:z,i:p,pathFrom:R.pathFrom,pathTo:O,strokeWidth:D,elSeries:m,x:S,y:k,series:i,barHeight:A,barWidth:L,elDataLabelsWrap:T,visibleSeries:s.visibleI,type:n.config.chart.type})})},X=0;Xl.c&&(x=!1);var m=Math.min(l.o,l.c),A=Math.max(l.o,l.c),L=l.m;c.globals.isXNumeric&&(s=(c.globals.seriesX[k][p]-c.globals.minX)/this.xRatio-r/2);var C=s+r*this.visibleI;this.series[g][p]===void 0||this.series[g][p]===null?(m=o,A=o):(m=o-m/S,A=o-A/S,u=o-l.h/S,b=o-l.l/S,L=o-l.m/S);var T=d.move(C,o),I=d.move(C+r/2,m);return c.globals.previousPaths.length>0&&(I=this.getPreviousPath(k,p,!0)),T=this.isBoxPlot?[d.move(C,m)+d.line(C+r/2,m)+d.line(C+r/2,u)+d.line(C+r/4,u)+d.line(C+r-r/4,u)+d.line(C+r/2,u)+d.line(C+r/2,m)+d.line(C+r,m)+d.line(C+r,L)+d.line(C,L)+d.line(C,m+h/2),d.move(C,L)+d.line(C+r,L)+d.line(C+r,A)+d.line(C+r/2,A)+d.line(C+r/2,b)+d.line(C+r-r/4,b)+d.line(C+r/4,b)+d.line(C+r/2,b)+d.line(C+r/2,A)+d.line(C,A)+d.line(C,L)+"z"]:[d.move(C,A)+d.line(C+r/2,A)+d.line(C+r/2,u)+d.line(C+r/2,A)+d.line(C+r,A)+d.line(C+r,m)+d.line(C+r/2,m)+d.line(C+r/2,b)+d.line(C+r/2,m)+d.line(C,m)+d.line(C,A-h/2)],I+=d.move(C,m),c.globals.isXNumeric||(s+=n),{pathTo:T,pathFrom:I,x:s,y:A,barXPosition:C,color:this.isBoxPlot?w:x?[f]:[y]}}},{key:"drawHorizontalBoxPaths",value:function(i){var a=i.indexes;i.x;var s=i.y,n=i.yDivision,r=i.barHeight,o=i.zeroW,h=i.strokeWidth,c=this.w,d=new M(this.ctx),g=a.i,p=a.j,x=this.boxOptions.colors.lower;this.isBoxPlot&&(x=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var f=this.invertedYRatio,y=a.realIndex,w=this.getOHLCValue(y,p),S=o,k=o,l=Math.min(w.o,w.c),u=Math.max(w.o,w.c),b=w.m;c.globals.isXNumeric&&(s=(c.globals.seriesX[y][p]-c.globals.minX)/this.invertedXRatio-r/2);var m=s+r*this.visibleI;this.series[g][p]===void 0||this.series[g][p]===null?(l=o,u=o):(l=o+l/f,u=o+u/f,S=o+w.h/f,k=o+w.l/f,b=o+w.m/f);var A=d.move(o,m),L=d.move(l,m+r/2);return c.globals.previousPaths.length>0&&(L=this.getPreviousPath(y,p,!0)),A=[d.move(l,m)+d.line(l,m+r/2)+d.line(S,m+r/2)+d.line(S,m+r/2-r/4)+d.line(S,m+r/2+r/4)+d.line(S,m+r/2)+d.line(l,m+r/2)+d.line(l,m+r)+d.line(b,m+r)+d.line(b,m)+d.line(l+h/2,m),d.move(b,m)+d.line(b,m+r)+d.line(u,m+r)+d.line(u,m+r/2)+d.line(k,m+r/2)+d.line(k,m+r-r/4)+d.line(k,m+r/4)+d.line(k,m+r/2)+d.line(u,m+r/2)+d.line(u,m)+d.line(b,m)+"z"],L+=d.move(l,m),c.globals.isXNumeric||(s+=n),{pathTo:A,pathFrom:L,x:u,y:s,barYPosition:m,color:x}}},{key:"getOHLCValue",value:function(i,a){var s=this.w;return{o:this.isBoxPlot?s.globals.seriesCandleH[i][a]:s.globals.seriesCandleO[i][a],h:this.isBoxPlot?s.globals.seriesCandleO[i][a]:s.globals.seriesCandleH[i][a],m:s.globals.seriesCandleM[i][a],l:this.isBoxPlot?s.globals.seriesCandleC[i][a]:s.globals.seriesCandleL[i][a],c:this.isBoxPlot?s.globals.seriesCandleL[i][a]:s.globals.seriesCandleC[i][a]}}}]),t}(),Ue=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"checkColorRange",value:function(){var e=this.w,t=!1,i=e.config.plotOptions[e.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map(function(a,s){a.from<=0&&(t=!0)}),t}},{key:"getShadeColor",value:function(e,t,i,a){var s=this.w,n=1,r=s.config.plotOptions[e].shadeIntensity,o=this.determineColor(e,t,i);s.globals.hasNegs||a?n=s.config.plotOptions[e].reverseNegativeShade?o.percent<0?o.percent/100*(1.25*r):(1-o.percent/100)*(1.25*r):o.percent<=0?1-(1+o.percent/100)*r:(1-o.percent/100)*r:(n=1-o.percent/100,e==="treemap"&&(n=(1-o.percent/100)*(1.25*r)));var h=o.color,c=new P;return s.config.plotOptions[e].enableShades&&(h=this.w.config.theme.mode==="dark"?P.hexToRgba(c.shadeColor(-1*n,o.color),s.config.fill.opacity):P.hexToRgba(c.shadeColor(n,o.color),s.config.fill.opacity)),{color:h,colorProps:o}}},{key:"determineColor",value:function(e,t,i){var a=this.w,s=a.globals.series[t][i],n=a.config.plotOptions[e],r=n.colorScale.inverse?i:t;n.distributed&&a.config.chart.type==="treemap"&&(r=i);var o=a.globals.colors[r],h=null,c=Math.min.apply(Math,q(a.globals.series[t])),d=Math.max.apply(Math,q(a.globals.series[t]));n.distributed||e!=="heatmap"||(c=a.globals.minY,d=a.globals.maxY),n.colorScale.min!==void 0&&(c=n.colorScale.mina.globals.maxY?n.colorScale.max:a.globals.maxY);var g=Math.abs(d)+Math.abs(c),p=100*s/(g===0?g-1e-6:g);return n.colorScale.ranges.length>0&&n.colorScale.ranges.map(function(x,f){if(s>=x.from&&s<=x.to){o=x.color,h=x.foreColor?x.foreColor:null,c=x.from,d=x.to;var y=Math.abs(d)+Math.abs(c);p=100*s/(y===0?y-1e-6:y)}}),{color:o,foreColor:h,percent:p}}},{key:"calculateDataLabels",value:function(e){var t=e.text,i=e.x,a=e.y,s=e.i,n=e.j,r=e.colorProps,o=e.fontSize,h=this.w.config.dataLabels,c=new M(this.ctx),d=new ie(this.ctx),g=null;if(h.enabled){g=c.group({class:"apexcharts-data-labels"});var p=h.offsetX,x=h.offsetY,f=i+p,y=a+parseFloat(h.style.fontSize)/3+x;d.plotDataLabelsText({x:f,y,text:t,i:s,j:n,color:r.foreColor,parent:g,fontSize:o,dataLabelsConfig:h})}return g}},{key:"addListeners",value:function(e){var t=new M(this.ctx);e.node.addEventListener("mouseenter",t.pathMouseEnter.bind(this,e)),e.node.addEventListener("mouseleave",t.pathMouseLeave.bind(this,e)),e.node.addEventListener("mousedown",t.pathMouseDown.bind(this,e))}}]),v}(),Ct=function(){function v(e,t){E(this,v),this.ctx=e,this.w=e.w,this.xRatio=t.xRatio,this.yRatio=t.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new Ue(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return Y(v,[{key:"draw",value:function(e){var t=this.w,i=new M(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(t.globals.cuid,")"));var s=t.globals.gridWidth/t.globals.dataPoints,n=t.globals.gridHeight/t.globals.series.length,r=0,o=!1;this.negRange=this.helpers.checkColorRange();var h=e.slice();t.config.yaxis[0].reversed&&(o=!0,h.reverse());for(var c=o?0:h.length-1;o?c=0;o?c++:c--){var d=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:P.escapeString(t.globals.seriesNames[c]),rel:c+1,"data:realIndex":c});if(this.ctx.series.addCollapsedClassToSeries(d,c),t.config.chart.dropShadow.enabled){var g=t.config.chart.dropShadow;new B(this.ctx).dropShadow(d,g,c)}for(var p=0,x=t.config.plotOptions.heatmap.shadeIntensity,f=0;f-1&&this.pieClicked(g),i.config.dataLabels.enabled){var u=k.x,b=k.y,m=100*x/this.fullAngle+"%";if(x!==0&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?t.endAngle=t.endAngle-(a+r):a+r=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(o=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(o)>this.fullAngle&&(o-=this.fullAngle);var h=Math.PI*(o-90)/180,c=t.centerX+s*Math.cos(r),d=t.centerY+s*Math.sin(r),g=t.centerX+s*Math.cos(h),p=t.centerY+s*Math.sin(h),x=P.polarToCartesian(t.centerX,t.centerY,t.donutSize,o),f=P.polarToCartesian(t.centerX,t.centerY,t.donutSize,n),y=a>180?1:0,w=["M",c,d,"A",s,s,0,y,1,g,p];return t.chartType==="donut"?[].concat(w,["L",x.x,x.y,"A",t.donutSize,t.donutSize,0,y,0,f.x,f.y,"L",c,d,"z"]).join(" "):t.chartType==="pie"||t.chartType==="polarArea"?[].concat(w,["L",t.centerX,t.centerY,"L",c,d]).join(" "):[].concat(w).join(" ")}},{key:"drawPolarElements",value:function(e){var t=this.w,i=new ae(this.ctx),a=new M(this.ctx),s=new qe(this.ctx),n=a.group(),r=a.group(),o=i.niceScale(0,Math.ceil(this.maxY),t.config.yaxis[0].tickAmount,0,!0),h=o.result.reverse(),c=o.result.length;this.maxY=o.niceMax;for(var d=t.globals.radialSize,g=d/(c-1),p=0;p1&&e.total.show&&(s=e.total.color);var r=n.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),o=n.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,e.value.formatter)(i,n),a||typeof e.total.formatter!="function"||(i=e.total.formatter(n));var h=t===e.total.label;t=e.name.formatter(t,h,n),r!==null&&(r.textContent=t),o!==null&&(o.textContent=i),r!==null&&(r.style.fill=s)}},{key:"printDataLabelsInner",value:function(e,t){var i=this.w,a=e.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(e.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(t,s,a,e);var n=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");n!==null&&(n.style.opacity=1)}},{key:"drawSpokes",value:function(e){var t=this,i=this.w,a=new M(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(s.strokeWidth!==0){for(var n=[],r=360/i.globals.series.length,o=0;o1)r&&!t.total.showAlways?h({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(t,t.total.label,t.total.formatter(s));else if(h({makeSliceOut:!1,printLabel:!0}),!r)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var c=s.globals.selectedDataPoints[0],d=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(c));this.printDataLabelsInner(d,t)}else n&&s.globals.selectedDataPoints.length&&s.globals.selectedDataPoints[0].length===0&&(n.style.opacity=0);else n&&s.globals.series.length>1&&(n.style.opacity=0)}}]),v}(),Lt=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var t=this.w;this.graphics=new M(this.ctx),this.lineColorArr=t.globals.stroke.colors!==void 0?t.globals.stroke.colors:t.globals.colors,this.defaultSize=t.globals.svgHeight0&&(b=t.getPreviousPath(w));for(var m=0;m=10?e.x>0?(i="start",a+=10):e.x<0&&(i="end",a-=10):i="middle",Math.abs(e.y)>=t-10&&(e.y<0?s-=10:e.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(e){for(var t=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(e,10)&&t.globals.previousPaths[a].paths[0]!==void 0&&(i=t.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.dataPointsLen;e=e||[],t=t||[];for(var a=[],s=0;s=360&&(f=360-Math.abs(this.startAngle)-.1);var y=s.drawPath({d:"",stroke:p,strokeWidth:h*parseInt(g.strokeWidth,10)/100,fill:"none",strokeOpacity:g.opacity,classes:"apexcharts-radialbar-area"});if(g.dropShadow.enabled){var w=g.dropShadow;r.dropShadow(y,w)}d.add(y),y.attr("id","apexcharts-radialbarTrack-"+c),this.animatePaths(y,{centerX:i.centerX,centerY:i.centerY,endAngle:f,startAngle:x,size:i.size,i:c,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:a.globals.easing})}return n}},{key:"drawArcs",value:function(i){var a=this.w,s=new M(this.ctx),n=new $(this.ctx),r=new B(this.ctx),o=s.group(),h=this.getStrokeWidth(i);i.size=i.size-h/2;var c=a.config.plotOptions.radialBar.hollow.background,d=i.size-h*i.series.length-this.margin*i.series.length-h*parseInt(a.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,g=d-a.config.plotOptions.radialBar.hollow.margin;a.config.plotOptions.radialBar.hollow.image!==void 0&&(c=this.drawHollowImage(i,o,d,c));var p=this.drawHollow({size:g,centerX:i.centerX,centerY:i.centerY,fill:c||"transparent"});if(a.config.plotOptions.radialBar.hollow.dropShadow.enabled){var x=a.config.plotOptions.radialBar.hollow.dropShadow;r.dropShadow(p,x)}var f=1;!this.radialDataLabels.total.show&&a.globals.series.length>1&&(f=0);var y=null;this.radialDataLabels.show&&(y=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:d,centerX:i.centerX,centerY:i.centerY,opacity:f})),a.config.plotOptions.radialBar.hollow.position==="back"&&(o.add(p),y&&o.add(y));var w=!1;a.config.plotOptions.radialBar.inverseOrder&&(w=!0);for(var S=w?i.series.length-1:0;w?S>=0:S100?100:i.series[S])/100,A=Math.round(this.totalAngle*m)+this.startAngle,L=void 0;a.globals.dataChanged&&(b=this.startAngle,L=Math.round(this.totalAngle*P.negToZero(a.globals.previousPaths[S])/100)+b),Math.abs(A)+Math.abs(u)>=360&&(A-=.01),Math.abs(L)+Math.abs(b)>=360&&(L-=.01);var C=A-u,T=Array.isArray(a.config.stroke.dashArray)?a.config.stroke.dashArray[S]:a.config.stroke.dashArray,I=s.drawPath({d:"",stroke:l,strokeWidth:h,fill:"none",fillOpacity:a.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+S,strokeDashArray:T});if(M.setAttrs(I.node,{"data:angle":C,"data:value":i.series[S]}),a.config.chart.dropShadow.enabled){var X=a.config.chart.dropShadow;r.dropShadow(I,X,S)}r.setSelectionFilter(I,0,S),this.addListeners(I,this.radialDataLabels),k.add(I),I.attr({index:0,j:S});var z=0;!this.initialAnim||a.globals.resized||a.globals.dataChanged||(z=a.config.chart.animations.speed),a.globals.dataChanged&&(z=a.config.chart.animations.dynamicAnimation.speed),this.animDur=z/(1.2*i.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(I,{centerX:i.centerX,centerY:i.centerY,endAngle:A,startAngle:u,prevEndAngle:L,prevStartAngle:b,size:i.size,i:S,totalItems:2,animBeginArr:this.animBeginArr,dur:z,shouldSetPrevPaths:!0,easing:a.globals.easing})}return{g:o,elHollow:p,dataLabels:y}}},{key:"drawHollow",value:function(i){var a=new M(this.ctx).drawCircle(2*i.size);return a.attr({class:"apexcharts-radialbar-hollow",cx:i.centerX,cy:i.centerY,r:i.size,fill:i.fill}),a}},{key:"drawHollowImage",value:function(i,a,s,n){var r=this.w,o=new $(this.ctx),h=P.randomId(),c=r.config.plotOptions.radialBar.hollow.image;if(r.config.plotOptions.radialBar.hollow.imageClipped)o.clippedImgArea({width:s,height:s,image:c,patternID:"pattern".concat(r.globals.cuid).concat(h)}),n="url(#pattern".concat(r.globals.cuid).concat(h,")");else{var d=r.config.plotOptions.radialBar.hollow.imageWidth,g=r.config.plotOptions.radialBar.hollow.imageHeight;if(d===void 0&&g===void 0){var p=r.globals.dom.Paper.image(c).loaded(function(f){this.move(i.centerX-f.width/2+r.config.plotOptions.radialBar.hollow.imageOffsetX,i.centerY-f.height/2+r.config.plotOptions.radialBar.hollow.imageOffsetY)});a.add(p)}else{var x=r.globals.dom.Paper.image(c).loaded(function(f){this.move(i.centerX-d/2+r.config.plotOptions.radialBar.hollow.imageOffsetX,i.centerY-g/2+r.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(d,g)});a.add(x)}}return n}},{key:"getStrokeWidth",value:function(i){var a=this.w;return i.size*(100-parseInt(a.config.plotOptions.radialBar.hollow.size,10))/100/(i.series.length+1)-this.margin}}]),t}(),Tt=function(v){re(t,se);var e=ne(t);function t(){return E(this,t),e.apply(this,arguments)}return Y(t,[{key:"draw",value:function(i,a){var s=this.w,n=new M(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=i,this.seriesRangeStart=s.globals.seriesRangeStart,this.seriesRangeEnd=s.globals.seriesRangeEnd,this.barHelpers.initVariables(i);for(var r=n.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),o=0;o0&&(this.visibleI=this.visibleI+1);var w=0,S=0;this.yRatio.length>1&&(this.yaxisIndex=f);var k=this.barHelpers.initialPositions();p=k.y,d=k.zeroW,g=k.x,S=k.barWidth,h=k.xDivision,c=k.zeroH;for(var l=n.group({class:"apexcharts-datalabels","data:realIndex":f}),u=n.group({class:"apexcharts-rangebar-goals-markers",style:"pointer-events: none"}),b=0;b0});return n=d.config.plotOptions.bar.rangeBarGroupRows?r+h*f:r+o*this.visibleI+h*f,y>-1&&!d.config.plotOptions.bar.rangeBarOverlap&&(g=d.globals.seriesRange[a][y].overlaps).indexOf(p)>-1&&(n=(o=c.barHeight/g.length)*this.visibleI+h*(100-parseInt(this.barOptions.barHeight,10))/100/2+o*(this.visibleI+g.indexOf(p))+h*f),{barYPosition:n,barHeight:o}}},{key:"drawRangeColumnPaths",value:function(i){var a=i.indexes,s=i.x;i.strokeWidth;var n=i.xDivision,r=i.barWidth,o=i.zeroH,h=this.w,c=a.i,d=a.j,g=this.yRatio[this.yaxisIndex],p=a.realIndex,x=this.getRangeValue(p,d),f=Math.min(x.start,x.end),y=Math.max(x.start,x.end);h.globals.isXNumeric&&(s=(h.globals.seriesX[c][d]-h.globals.minX)/this.xRatio-r/2);var w=s+r*this.visibleI;this.series[c][d]===void 0||this.series[c][d]===null?f=o:(f=o-f/g,y=o-y/g);var S=Math.abs(y-f),k=this.barHelpers.getColumnPaths({barXPosition:w,barWidth:r,y1:f,y2:y,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:a.realIndex,i:p,j:d,w:h});return h.globals.isXNumeric||(s+=n),{pathTo:k.pathTo,pathFrom:k.pathFrom,barHeight:S,x:s,y,goalY:this.barHelpers.getGoalValues("y",null,o,c,d),barXPosition:w}}},{key:"drawRangeBarPaths",value:function(i){var a=i.indexes,s=i.y,n=i.y1,r=i.y2,o=i.yDivision,h=i.barHeight,c=i.barYPosition,d=i.zeroW,g=this.w,p=d+n/this.invertedYRatio,x=d+r/this.invertedYRatio,f=Math.abs(x-p),y=this.barHelpers.getBarpaths({barYPosition:c,barHeight:h,x1:p,x2:x,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:a.realIndex,realIndex:a.realIndex,j:a.j,w:g});return g.globals.isXNumeric||(s+=o),{pathTo:y.pathTo,pathFrom:y.pathFrom,barWidth:f,x,goalX:this.barHelpers.getGoalValues("x",d,null,a.realIndex,a.j),y:s}}},{key:"getRangeValue",value:function(i,a){var s=this.w;return{start:s.globals.seriesRangeStart[i][a],end:s.globals.seriesRangeEnd[i][a]}}}]),t}(),It=function(){function v(e){E(this,v),this.w=e.w,this.lineCtx=e}return Y(v,[{key:"sameValueSeriesFix",value:function(e,t){var i=this.w;if((i.config.fill.type==="gradient"||i.config.fill.type[e]==="gradient")&&new N(this.lineCtx.ctx,i).seriesHaveSameValues(e)){var a=t[e].slice();a[a.length-1]=a[a.length-1]+1e-6,t[e]=a}return t}},{key:"calculatePoints",value:function(e){var t=e.series,i=e.realIndex,a=e.x,s=e.y,n=e.i,r=e.j,o=e.prevY,h=this.w,c=[],d=[];if(r===0){var g=this.lineCtx.categoryAxisCorrection+h.config.markers.offsetX;h.globals.isXNumeric&&(g=(h.globals.seriesX[i][0]-h.globals.minX)/this.lineCtx.xRatio+h.config.markers.offsetX),c.push(g),d.push(P.isNumber(t[n][0])?o+h.config.markers.offsetY:null),c.push(a+h.config.markers.offsetX),d.push(P.isNumber(t[n][r+1])?s+h.config.markers.offsetY:null)}else c.push(a+h.config.markers.offsetX),d.push(P.isNumber(t[n][r+1])?s+h.config.markers.offsetY:null);return{x:c,y:d}}},{key:"checkPreviousPaths",value:function(e){for(var t=e.pathFromLine,i=e.pathFromArea,a=e.realIndex,s=this.w,n=0;n0&&parseInt(r.realIndex,10)===parseInt(a,10)&&(r.type==="line"?(this.lineCtx.appendPathFrom=!1,t=s.globals.previousPaths[n].paths[0].d):r.type==="area"&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[n].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[n].paths[1]&&(t=s.globals.previousPaths[n].paths[1].d)))}return{pathFromLine:t,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(e){var t,i=e.i,a=e.series,s=e.prevY,n=e.lineYPosition,r=this.w;if(((t=a[i])===null||t===void 0?void 0:t[0])!==void 0)s=(n=r.config.chart.stacked&&i>0?this.lineCtx.prevSeriesY[i-1][0]:this.lineCtx.zeroY)-a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(r.config.chart.stacked&&i>0&&a[i][0]===void 0){for(var o=i-1;o>=0;o--)if(a[o][0]!==null&&a[o][0]!==void 0){s=n=this.lineCtx.prevSeriesY[o][0];break}}return{prevY:s,lineYPosition:n}}}]),v}(),Le=function(){function v(e,t,i){E(this,v),this.ctx=e,this.w=e.w,this.xyRatios=t,this.pointsChart=!(this.w.config.chart.type!=="bubble"&&this.w.config.chart.type!=="scatter")||i,this.scatter=new He(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.lineHelpers=new It(this),this.markers=new he(this.ctx),this.prevSeriesY=[],this.categoryAxisCorrection=0,this.yaxisIndex=0}return Y(v,[{key:"draw",value:function(e,t,i,a){var s=this.w,n=new M(this.ctx),r=s.globals.comboCharts?t:s.config.chart.type,o=n.group({class:"apexcharts-".concat(r,"-series apexcharts-plot-series")}),h=new N(this.ctx,s);this.yRatio=this.xyRatios.yRatio,this.zRatio=this.xyRatios.zRatio,this.xRatio=this.xyRatios.xRatio,this.baseLineY=this.xyRatios.baseLineY,e=h.getLogSeries(e),this.yRatio=h.getLogYRatios(this.yRatio);for(var c=[],d=0;d0&&(f=(s.globals.seriesX[g][0]-s.globals.minX)/this.xRatio),x.push(f);var y,w=f,S=void 0,k=w,l=this.zeroY,u=this.zeroY;l=this.lineHelpers.determineFirstPrevY({i:d,series:e,prevY:l,lineYPosition:0}).prevY,p.push(l),y=l,r==="rangeArea"&&(S=u=this.lineHelpers.determineFirstPrevY({i:d,series:a,prevY:u,lineYPosition:0}).prevY);var b={type:r,series:e,realIndex:g,i:d,x:f,y:1,pX:w,pY:y,pathsFrom:this._calculatePathsFrom({type:r,series:e,i:d,realIndex:g,prevX:k,prevY:l,prevY2:u}),linePaths:[],areaPaths:[],seriesIndex:i,lineYPosition:0,xArrj:x,yArrj:p,seriesRangeEnd:a},m=this._iterateOverDataPoints(F(F({},b),{},{iterations:r==="rangeArea"?e[d].length-1:void 0,isRangeStart:!0}));if(r==="rangeArea"){var A=this._calculatePathsFrom({series:a,i:d,realIndex:g,prevX:k,prevY:u}),L=this._iterateOverDataPoints(F(F({},b),{},{series:a,pY:S,pathsFrom:A,iterations:a[d].length-1,isRangeStart:!1}));m.linePaths[0]=L.linePath+m.linePath,m.pathFromLine=L.pathFromLine+m.pathFromLine}this._handlePaths({type:r,realIndex:g,i:d,paths:m}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),c.push(this.elSeries)}if(s.config.chart.stacked)for(var C=c.length;C>0;C--)o.add(c[C-1]);else for(var T=0;T1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||a.config.plotOptions.area.fillTo==="end")&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",seriesName:P.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var n=e[t].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":n,rel:t+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(e){var t,i,a,s,n=e.type,r=e.series,o=e.i,h=e.realIndex,c=e.prevX,d=e.prevY,g=e.prevY2,p=this.w,x=new M(this.ctx);if(r[o][0]===null){for(var f=0;f0){var y=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:h});a=y.pathFromLine,s=y.pathFromArea}return{prevX:c,prevY:d,linePath:t,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(e){var t=e.type,i=e.realIndex,a=e.i,s=e.paths,n=this.w,r=new M(this.ctx),o=new $(this.ctx);this.prevSeriesY.push(s.yArrj),n.globals.seriesXvalues[i]=s.xArrj,n.globals.seriesYvalues[i]=s.yArrj;var h=n.config.forecastDataPoints;if(h.count>0&&t!=="rangeArea"){var c=n.globals.seriesXvalues[i][n.globals.seriesXvalues[i].length-h.count-1],d=r.drawRect(c,0,n.globals.gridWidth,n.globals.gridHeight,0);n.globals.dom.elForecastMask.appendChild(d.node);var g=r.drawRect(0,0,c,n.globals.gridHeight,0);n.globals.dom.elNonForecastMask.appendChild(g.node)}this.pointsChart||n.globals.delayedElements.push({el:this.elPointsMain.node,index:i});var p={i:a,realIndex:i,animationDelay:a,initialSpeed:n.config.chart.animations.speed,dataChangeSpeed:n.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(t)};if(t==="area")for(var x=o.fillPath({seriesNumber:i}),f=0;f0&&t!=="rangeArea"){var m=r.renderPaths(u);m.node.setAttribute("stroke-dasharray",h.dashArray),h.strokeWidth&&m.node.setAttribute("stroke-width",h.strokeWidth),this.elSeries.add(m),m.attr("clip-path","url(#forecastMask".concat(n.globals.cuid,")")),b.attr("clip-path","url(#nonForecastMask".concat(n.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(e){var t=e.type,i=e.series,a=e.iterations,s=e.realIndex,n=e.i,r=e.x,o=e.y,h=e.pX,c=e.pY,d=e.pathsFrom,g=e.linePaths,p=e.areaPaths,x=e.seriesIndex,f=e.lineYPosition,y=e.xArrj,w=e.yArrj,S=e.isRangeStart,k=e.seriesRangeEnd,l=this.w,u=new M(this.ctx),b=this.yRatio,m=d.prevY,A=d.linePath,L=d.areaPath,C=d.pathFromLine,T=d.pathFromArea,I=P.isNumber(l.globals.minYArr[s])?l.globals.minYArr[s]:l.globals.minY;a||(a=l.globals.dataPoints>1?l.globals.dataPoints-1:l.globals.dataPoints);for(var X=o,z=0;z0&&l.globals.collapsedSeries.length-1){j--;break}return j>=0?j:0}(n-1)][z+1]:f=this.zeroY:f=this.zeroY,D?o=f-I/b[this.yaxisIndex]+2*(this.isReversed?I/b[this.yaxisIndex]:0):(o=f-i[n][z+1]/b[this.yaxisIndex]+2*(this.isReversed?i[n][z+1]/b[this.yaxisIndex]:0),t==="rangeArea"&&(X=f-k[n][z+1]/b[this.yaxisIndex]+2*(this.isReversed?k[n][z+1]/b[this.yaxisIndex]:0))),y.push(r),w.push(o);var H=this.lineHelpers.calculatePoints({series:i,x:r,y:o,realIndex:s,i:n,j:z,prevY:m}),O=this._createPaths({type:t,series:i,i:n,realIndex:s,j:z,x:r,y:o,y2:X,pX:h,pY:c,linePath:A,areaPath:L,linePaths:g,areaPaths:p,seriesIndex:x,isRangeStart:S});p=O.areaPaths,g=O.linePaths,h=O.pX,c=O.pY,L=O.areaPath,A=O.linePath,this.appendPathFrom&&(C+=u.line(r,this.zeroY),T+=u.line(r,this.zeroY)),this.handleNullDataPoints(i,H,n,z,s),this._handleMarkersAndLabels({type:t,pointsPos:H,i:n,j:z,realIndex:s,isRangeStart:S})}return{yArrj:w,xArrj:y,pathFromArea:T,areaPaths:p,pathFromLine:C,linePaths:g,linePath:A,areaPath:L}}},{key:"_handleMarkersAndLabels",value:function(e){var t=e.type,i=e.pointsPos,a=e.isRangeStart,s=e.i,n=e.j,r=e.realIndex,o=this.w,h=new ie(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,n,{realIndex:r,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{o.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var c=this.markers.plotChartMarkers(i,r,n+1);c!==null&&this.elPointsMain.add(c)}var d=h.drawDataLabel({type:t,isRangeStart:a,pos:i,i:r,j:n+1});d!==null&&this.elDataLabelsWrap.add(d)}},{key:"_createPaths",value:function(e){var t=e.type,i=e.series,a=e.i,s=e.realIndex,n=e.j,r=e.x,o=e.y,h=e.y2,c=e.pX,d=e.pY,g=e.linePath,p=e.areaPath,x=e.linePaths,f=e.areaPaths,y=e.seriesIndex,w=e.isRangeStart,S=this.w,k=new M(this.ctx),l=S.config.stroke.curve,u=this.areaBottomY;if(Array.isArray(S.config.stroke.curve)&&(l=Array.isArray(y)?S.config.stroke.curve[y[a]]:S.config.stroke.curve[a]),l==="smooth"){var b=.35*(r-c);S.globals.hasNullValues?(i[a][n]!==null&&(i[a][n+1]!==null?(g=k.move(c,d)+k.curve(c+b,d,r-b,o,r+1,o),p=k.move(c+1,d)+k.curve(c+b,d,r-b,o,r+1,o)+k.line(r,u)+k.line(c,u)+"z"):(g=k.move(c,d),p=k.move(c,d)+"z")),x.push(g),f.push(p)):(g+=k.curve(c+b,d,r-b,o,r,o),p+=k.curve(c+b,d,r-b,o,r,o)),c=r,d=o,n===i[a].length-2&&(p=p+k.curve(c,d,r,o,r,u)+k.move(r,o)+"z",t==="rangeArea"&&w?g=g+k.curve(c,d,r,o,r,h)+k.move(r,h)+"z":S.globals.hasNullValues||(x.push(g),f.push(p)))}else{if(i[a][n+1]===null){g+=k.move(r,o);var m=S.globals.isXNumeric?(S.globals.seriesX[s][n]-S.globals.minX)/this.xRatio:r-this.xDivision;p=p+k.line(m,u)+k.move(r,o)+"z"}i[a][n]===null&&(g+=k.move(r,o),p+=k.move(r,u)),l==="stepline"?(g=g+k.line(r,null,"H")+k.line(null,o,"V"),p=p+k.line(r,null,"H")+k.line(null,o,"V")):l==="straight"&&(g+=k.line(r,o),p+=k.line(r,o)),n===i[a].length-2&&(p=p+k.line(r,u)+k.move(r,o)+"z",t==="rangeArea"&&w?g=g+k.line(r,h)+k.move(r,h)+"z":(x.push(g),f.push(p)))}return{linePaths:x,areaPaths:f,pX:c,pY:d,linePath:g,areaPath:p}}},{key:"handleNullDataPoints",value:function(e,t,i,a,s){var n=this.w;if(e[i][a]===null&&n.config.markers.showNullDataPoints||e[i].length===1){var r=this.markers.plotChartMarkers(t,s,a+1,this.strokeWidth-n.config.markers.strokeWidth/2,!0);r!==null&&this.elPointsMain.add(r)}}}]),v}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function v(r,o,h,c){this.xoffset=r,this.yoffset=o,this.height=c,this.width=h,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(d){var g,p=[],x=this.xoffset,f=this.yoffset,y=s(d)/this.height,w=s(d)/this.width;if(this.width>=this.height)for(g=0;g=this.height){var p=d/this.height,x=this.width-p;g=new v(this.xoffset+p,this.yoffset,x,this.height)}else{var f=d/this.width,y=this.height-f;g=new v(this.xoffset,this.yoffset+f,this.width,y)}return g}}function e(r,o,h,c,d){c=c===void 0?0:c,d=d===void 0?0:d;var g=t(function(p,x){var f,y=[],w=x/s(p);for(f=0;f=k}(o,g=r[0],d)?(o.push(g),t(r.slice(1),o,h,c)):(p=h.cutArea(s(o),c),c.push(h.getCoordinates(o)),t(r,[],p,c)),c;c.push(h.getCoordinates(o))}function i(r,o){var h=Math.min.apply(Math,r),c=Math.max.apply(Math,r),d=s(r);return Math.max(Math.pow(o,2)*c/Math.pow(d,2),Math.pow(d,2)/(Math.pow(o,2)*h))}function a(r){return r&&r.constructor===Array}function s(r){var o,h=0;for(o=0;on-a&&h.width<=r-s){var c=o.rotateAroundCenter(e.node);e.node.setAttribute("transform","rotate(-90 ".concat(c.x," ").concat(c.y,")"))}}},{key:"animateTreemap",value:function(e,t,i,a){var s=new te(this.ctx);s.animateRect(e,{x:t.x,y:t.y,width:t.width,height:t.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,function(){s.animationCompleted(e)})}}]),v}(),Xt=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return Y(v,[{key:"calculateTimeScaleTicks",value:function(e,t){var i=this,a=this.w;if(a.globals.allSeriesCollapsed)return a.globals.labels=[],a.globals.timescaleLabels=[],[];var s=new G(this.ctx),n=(t-e)/864e5;this.determineInterval(n),a.globals.disableZoomIn=!1,a.globals.disableZoomOut=!1,n<.00011574074074074075?a.globals.disableZoomIn=!0:n>5e4&&(a.globals.disableZoomOut=!0);var r=s.getTimeUnitsfromTimestamp(e,t,this.utc),o=a.globals.gridWidth/n,h=o/24,c=h/60,d=c/60,g=Math.floor(24*n),p=Math.floor(1440*n),x=Math.floor(86400*n),f=Math.floor(n),y=Math.floor(n/30),w=Math.floor(n/365),S={minMillisecond:r.minMillisecond,minSecond:r.minSecond,minMinute:r.minMinute,minHour:r.minHour,minDate:r.minDate,minMonth:r.minMonth,minYear:r.minYear},k={firstVal:S,currentMillisecond:S.minMillisecond,currentSecond:S.minSecond,currentMinute:S.minMinute,currentHour:S.minHour,currentMonthDate:S.minDate,currentDate:S.minDate,currentMonth:S.minMonth,currentYear:S.minYear,daysWidthOnXAxis:o,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,secondsWidthOnXAxis:d,numberOfSeconds:x,numberOfMinutes:p,numberOfHours:g,numberOfDays:f,numberOfMonths:y,numberOfYears:w};switch(this.tickInterval){case"years":this.generateYearScale(k);break;case"months":case"half_year":this.generateMonthScale(k);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(k);break;case"hours":this.generateHourScale(k);break;case"minutes_fives":case"minutes":this.generateMinuteScale(k);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(k)}var l=this.timeScaleArray.map(function(u){var b={position:u.position,unit:u.unit,year:u.year,day:u.day?u.day:1,hour:u.hour?u.hour:0,month:u.month+1};return u.unit==="month"?F(F({},b),{},{day:1,value:u.value+1}):u.unit==="day"||u.unit==="hour"?F(F({},b),{},{value:u.value}):u.unit==="minute"?F(F({},b),{},{value:u.value,minute:u.value}):u.unit==="second"?F(F({},b),{},{value:u.value,minute:u.minute,second:u.second}):u});return l.filter(function(u){var b=1,m=Math.ceil(a.globals.gridWidth/120),A=u.value;a.config.xaxis.tickAmount!==void 0&&(m=a.config.xaxis.tickAmount),l.length>m&&(b=Math.floor(l.length/m));var L=!1,C=!1;switch(i.tickInterval){case"years":u.unit==="year"&&(L=!0);break;case"half_year":b=7,u.unit==="year"&&(L=!0);break;case"months":b=1,u.unit==="year"&&(L=!0);break;case"months_fortnight":b=15,u.unit!=="year"&&u.unit!=="month"||(L=!0),A===30&&(C=!0);break;case"months_days":b=10,u.unit==="month"&&(L=!0),A===30&&(C=!0);break;case"week_days":b=8,u.unit==="month"&&(L=!0);break;case"days":b=1,u.unit==="month"&&(L=!0);break;case"hours":u.unit==="day"&&(L=!0);break;case"minutes_fives":case"seconds_fives":A%5!=0&&(C=!0);break;case"seconds_tens":A%10!=0&&(C=!0)}if(i.tickInterval==="hours"||i.tickInterval==="minutes_fives"||i.tickInterval==="seconds_tens"||i.tickInterval==="seconds_fives"){if(!C)return!0}else if((A%b==0||L)&&!C)return!0})}},{key:"recalcDimensionsBasedOnFormat",value:function(e,t){var i=this.w,a=this.formatDates(e),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new xe(this.ctx).plotCoords()}},{key:"determineInterval",value:function(e){var t=24*e,i=60*t;switch(!0){case e/365>5:this.tickInterval="years";break;case e>800:this.tickInterval="half_year";break;case e>180:this.tickInterval="months";break;case e>90:this.tickInterval="months_fortnight";break;case e>60:this.tickInterval="months_days";break;case e>30:this.tickInterval="week_days";break;case e>2:this.tickInterval="days";break;case t>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(e){var t=e.firstVal,i=e.currentMonth,a=e.currentYear,s=e.daysWidthOnXAxis,n=e.numberOfYears,r=t.minYear,o=0,h=new G(this.ctx),c="year";if(t.minDate>1||t.minMonth>0){var d=h.determineRemainingDaysOfYear(t.minYear,t.minMonth,t.minDate);o=(h.determineDaysOfYear(t.minYear)-d+1)*s,r=t.minYear+1,this.timeScaleArray.push({position:o,value:r,unit:c,year:r,month:P.monthMod(i+1)})}else t.minDate===1&&t.minMonth===0&&this.timeScaleArray.push({position:o,value:r,unit:c,year:a,month:P.monthMod(i+1)});for(var g=r,p=o,x=0;x1){h=(c.determineDaysOfMonths(a+1,t.minYear)-i+1)*n,o=P.monthMod(a+1);var p=s+g,x=P.monthMod(o),f=o;o===0&&(d="year",f=p,x=1,p+=g+=1),this.timeScaleArray.push({position:h,value:f,unit:d,year:p,month:x})}else this.timeScaleArray.push({position:h,value:o,unit:d,year:s,month:P.monthMod(a)});for(var y=o+1,w=h,S=0,k=1;Sr.determineDaysOfMonths(l+1,u)&&(c=1,o="month",p=l+=1),l},g=(24-t.minHour)*s,p=h,x=d(c,i,a);t.minHour===0&&t.minDate===1?(g=0,p=P.monthMod(t.minMonth),o="month",c=t.minDate,n++):t.minDate!==1&&t.minHour===0&&t.minMinute===0&&(g=0,h=t.minDate,p=h,x=d(c=h,i,a)),this.timeScaleArray.push({position:g,value:p,unit:o,year:this._getYear(a,x,0),month:P.monthMod(x),day:c});for(var f=g,y=0;yo.determineDaysOfMonths(m+1,s)&&(y=1,m+=1),{month:m,date:y}},d=function(b,m){return b>o.determineDaysOfMonths(m+1,s)?m+=1:m},g=60-(t.minMinute+t.minSecond/60),p=g*n,x=t.minHour+1,f=x+1;g===60&&(p=0,f=(x=t.minHour)+1);var y=i,w=d(y,a);this.timeScaleArray.push({position:p,value:x,unit:h,day:y,hour:f,year:s,month:P.monthMod(w)});for(var S=p,k=0;k=24&&(f=0,h="day",w=c(y+=1,w).month,w=d(y,w));var l=this._getYear(s,w,0);S=f===0&&k===0?g*n:60*n+S;var u=f===0?y:f;this.timeScaleArray.push({position:S,value:u,unit:h,hour:f,day:y,year:l,month:P.monthMod(w)}),f++}}},{key:"generateMinuteScale",value:function(e){for(var t=e.currentMillisecond,i=e.currentSecond,a=e.currentMinute,s=e.currentHour,n=e.currentDate,r=e.currentMonth,o=e.currentYear,h=e.minutesWidthOnXAxis,c=e.secondsWidthOnXAxis,d=e.numberOfMinutes,g=a+1,p=n,x=r,f=o,y=s,w=(60-i-t/1e3)*c,S=0;S=60&&(g=0,(y+=1)===24&&(y=0)),this.timeScaleArray.push({position:w,value:g,unit:"minute",hour:y,minute:g,day:p,year:this._getYear(f,x,0),month:P.monthMod(x)}),w+=h,g++}},{key:"generateSecondScale",value:function(e){for(var t=e.currentMillisecond,i=e.currentSecond,a=e.currentMinute,s=e.currentHour,n=e.currentDate,r=e.currentMonth,o=e.currentYear,h=e.secondsWidthOnXAxis,c=e.numberOfSeconds,d=i+1,g=a,p=n,x=r,f=o,y=s,w=(1e3-t)/1e3*h,S=0;S=60&&(d=0,++g>=60&&(g=0,++y===24&&(y=0))),this.timeScaleArray.push({position:w,value:d,unit:"second",hour:y,minute:g,second:d,day:p,year:this._getYear(f,x,0),month:P.monthMod(x)}),w+=h,d++}},{key:"createRawDateString",value:function(e,t){var i=e.year;return e.month===0&&(e.month=1),i+="-"+("0"+e.month.toString()).slice(-2),e.unit==="day"?i+=e.unit==="day"?"-"+("0"+t).slice(-2):"-01":i+="-"+("0"+(e.day?e.day:"1")).slice(-2),e.unit==="hour"?i+=e.unit==="hour"?"T"+("0"+t).slice(-2):"T00":i+="T"+("0"+(e.hour?e.hour:"0")).slice(-2),e.unit==="minute"?i+=":"+("0"+t).slice(-2):i+=":"+(e.minute?("0"+e.minute).slice(-2):"00"),e.unit==="second"?i+=":"+("0"+t).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(e){var t=this,i=this.w;return e.map(function(a){var s=a.value.toString(),n=new G(t.ctx),r=t.createRawDateString(a,s),o=n.getDate(n.parseDate(r));if(t.utc||(o=n.getDate(n.parseDateWithTimezone(r))),i.config.xaxis.labels.format===void 0){var h="dd MMM",c=i.config.xaxis.labels.datetimeFormatter;a.unit==="year"&&(h=c.year),a.unit==="month"&&(h=c.month),a.unit==="day"&&(h=c.day),a.unit==="hour"&&(h=c.hour),a.unit==="minute"&&(h=c.minute),a.unit==="second"&&(h=c.second),s=n.formatDate(o,h)}else s=n.formatDate(o,i.config.xaxis.labels.format);return{dateString:r,position:a.position,value:s,unit:a.unit,year:a.year,month:a.month}})}},{key:"removeOverlappingTS",value:function(e){var t,i=this,a=new M(this.ctx),s=!1;e.length>0&&e[0].value&&e.every(function(o){return o.value.length===e[0].value.length})&&(s=!0,t=a.getTextRects(e[0].value).width);var n=0,r=e.map(function(o,h){if(h>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var c=s?t:a.getTextRects(e[n].value).width,d=e[n].position;return o.position>d+c+10?(n=h,o):null}return o});return r=r.filter(function(o){return o!==null})}},{key:"_getYear",value:function(e,t,i){return e+Math.floor(t/12)+i}}]),v}(),zt=function(){function v(e,t){E(this,v),this.ctx=t,this.w=t.w,this.el=e}return Y(v,[{key:"setupElements",value:function(){var e=this.w.globals,t=this.w.config,i=t.chart.type;e.axisCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"].indexOf(i)>-1,e.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].indexOf(i)>-1,e.isBarHorizontal=(t.chart.type==="bar"||t.chart.type==="rangeBar"||t.chart.type==="boxPlot")&&t.plotOptions.bar.horizontal,e.chartClass=".apexcharts"+e.chartID,e.dom.baseEl=this.el,e.dom.elWrap=document.createElement("div"),M.setAttrs(e.dom.elWrap,{id:e.chartClass.substring(1),class:"apexcharts-canvas "+e.chartClass.substring(1)}),this.el.appendChild(e.dom.elWrap),e.dom.Paper=new window.SVG.Doc(e.dom.elWrap),e.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(t.chart.offsetX,", ").concat(t.chart.offsetY,")")}),e.dom.Paper.node.style.background=t.chart.background,this.setSVGDimensions(),e.dom.elGraphical=e.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),e.dom.elAnnotations=e.dom.Paper.group().attr({class:"apexcharts-annotations"}),e.dom.elDefs=e.dom.Paper.defs(),e.dom.elLegendWrap=document.createElement("div"),e.dom.elLegendWrap.classList.add("apexcharts-legend"),e.dom.elWrap.appendChild(e.dom.elLegendWrap),e.dom.Paper.add(e.dom.elGraphical),e.dom.elGraphical.add(e.dom.elDefs)}},{key:"plotChartType",value:function(e,t){var i=this.w,a=i.config,s=i.globals,n={series:[],i:[]},r={series:[],i:[]},o={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]},d={series:[],i:[]},g={series:[],i:[]},p={series:[],i:[]},x={series:[],seriesRangeEnd:[],i:[]};s.series.map(function(m,A){var L=0;e[A].type!==void 0?(e[A].type==="column"||e[A].type==="bar"?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),c.series.push(m),c.i.push(A),L++,i.globals.columnSeries=c.series):e[A].type==="area"?(r.series.push(m),r.i.push(A),L++):e[A].type==="line"?(n.series.push(m),n.i.push(A),L++):e[A].type==="scatter"?(o.series.push(m),o.i.push(A)):e[A].type==="bubble"?(h.series.push(m),h.i.push(A),L++):e[A].type==="candlestick"?(d.series.push(m),d.i.push(A),L++):e[A].type==="boxPlot"?(g.series.push(m),g.i.push(A),L++):e[A].type==="rangeBar"?(p.series.push(m),p.i.push(A),L++):e[A].type==="rangeArea"?(x.series.push(s.seriesRangeStart[A]),x.seriesRangeEnd.push(s.seriesRangeEnd[A]),x.i.push(A),L++):console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble"),L>1&&(s.comboCharts=!0)):(n.series.push(m),n.i.push(A))});var f=new Le(this.ctx,t),y=new Ce(this.ctx,t);this.ctx.pie=new Ze(this.ctx);var w=new Pt(this.ctx);this.ctx.rangeBar=new Tt(this.ctx,t);var S=new Lt(this.ctx),k=[];if(s.comboCharts){if(r.series.length>0&&k.push(f.draw(r.series,"area",r.i)),c.series.length>0)if(i.config.chart.stacked){var l=new _e(this.ctx,t);k.push(l.draw(c.series,c.i))}else this.ctx.bar=new se(this.ctx,t),k.push(this.ctx.bar.draw(c.series,c.i));if(x.series.length>0&&k.push(f.draw(x.series,"rangeArea",x.i,x.seriesRangeEnd)),n.series.length>0&&k.push(f.draw(n.series,"line",n.i)),d.series.length>0&&k.push(y.draw(d.series,d.i)),g.series.length>0&&k.push(y.draw(g.series,g.i)),p.series.length>0&&k.push(this.ctx.rangeBar.draw(p.series,p.i)),o.series.length>0){var u=new Le(this.ctx,t,!0);k.push(u.draw(o.series,"scatter",o.i))}if(h.series.length>0){var b=new Le(this.ctx,t,!0);k.push(b.draw(h.series,"bubble",h.i))}}else switch(a.chart.type){case"line":k=f.draw(s.series,"line");break;case"area":k=f.draw(s.series,"area");break;case"bar":a.chart.stacked?k=new _e(this.ctx,t).draw(s.series):(this.ctx.bar=new se(this.ctx,t),k=this.ctx.bar.draw(s.series));break;case"candlestick":k=new Ce(this.ctx,t).draw(s.series);break;case"boxPlot":k=new Ce(this.ctx,t).draw(s.series);break;case"rangeBar":k=this.ctx.rangeBar.draw(s.series);break;case"rangeArea":k=f.draw(s.seriesRangeStart,"rangeArea",void 0,s.seriesRangeEnd);break;case"heatmap":k=new Ct(this.ctx,t).draw(s.series);break;case"treemap":k=new Mt(this.ctx,t).draw(s.series);break;case"pie":case"donut":case"polarArea":k=this.ctx.pie.draw(s.series);break;case"radialBar":k=w.draw(s.series);break;case"radar":k=S.draw(s.series);break;default:k=f.draw(s.series)}return k}},{key:"setSVGDimensions",value:function(){var e=this.w.globals,t=this.w.config;e.svgWidth=t.chart.width,e.svgHeight=t.chart.height;var i=P.getDimensions(this.el),a=t.chart.width.toString().split(/[0-9]+/g).pop();a==="%"?P.isNumber(i[0])&&(i[0].width===0&&(i=P.getDimensions(this.el.parentNode)),e.svgWidth=i[0]*parseInt(t.chart.width,10)/100):a!=="px"&&a!==""||(e.svgWidth=parseInt(t.chart.width,10));var s=t.chart.height.toString().split(/[0-9]+/g).pop();if(e.svgHeight!=="auto"&&e.svgHeight!=="")if(s==="%"){var n=P.getDimensions(this.el.parentNode);e.svgHeight=n[1]*parseInt(t.chart.height,10)/100}else e.svgHeight=parseInt(t.chart.height,10);else e.axisCharts?e.svgHeight=e.svgWidth/1.61:e.svgHeight=e.svgWidth/1.2;if(e.svgWidth<0&&(e.svgWidth=0),e.svgHeight<0&&(e.svgHeight=0),M.setAttrs(e.dom.Paper.node,{width:e.svgWidth,height:e.svgHeight}),s!=="%"){var r=t.chart.sparkline.enabled?0:e.axisCharts?t.chart.parentHeightOffset:0;e.dom.Paper.node.parentNode.parentNode.style.minHeight=e.svgHeight+r+"px"}e.dom.elWrap.style.width=e.svgWidth+"px",e.dom.elWrap.style.height=e.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var e=this.w.globals,t=e.translateY,i={transform:"translate("+e.translateX+", "+t+")"};M.setAttrs(e.dom.elGraphical.node,i)}},{key:"resizeNonAxisCharts",value:function(){var e=this.w,t=e.globals,i=0,a=e.config.chart.sparkline.enabled?1:15;a+=e.config.grid.padding.bottom,e.config.legend.position!=="top"&&e.config.legend.position!=="bottom"||!e.config.legend.show||e.config.legend.floating||(i=new We(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=e.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),n=2.05*e.globals.radialSize;if(s&&!e.config.chart.sparkline.enabled&&e.config.plotOptions.radialBar.startAngle!==0){var r=P.getBoundingClientRect(s);n=r.bottom;var o=r.bottom-r.top;n=Math.max(2.05*e.globals.radialSize,o)}var h=n+t.translateY+i+a;t.dom.elLegendForeign&&t.dom.elLegendForeign.setAttribute("height",h),e.config.chart.height&&String(e.config.chart.height).indexOf("%")>0||(t.dom.elWrap.style.height=h+"px",M.setAttrs(t.dom.Paper.node,{height:h}),t.dom.Paper.node.parentNode.parentNode.style.minHeight=h+"px")}},{key:"coreCalculations",value:function(){new ke(this.ctx).init()}},{key:"resetGlobals",value:function(){var e=this,t=function(){return e.w.config.series.map(function(s){return[]})},i=new De,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=t(),a.seriesYvalues=t()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var e=null,t=this.w;if(t.globals.axisCharts){if(t.config.xaxis.crosshairs.position==="back"&&new Se(this.ctx).drawXCrosshairs(),t.config.yaxis[0].crosshairs.position==="back"&&new Se(this.ctx).drawYCrosshairs(),t.config.xaxis.type==="datetime"&&t.config.xaxis.labels.formatter===void 0){this.ctx.timeScale=new Xt(this.ctx);var i=[];isFinite(t.globals.minX)&&isFinite(t.globals.maxX)&&!t.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minX,t.globals.maxX):t.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minY,t.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}e=new N(this.ctx).getCalculatedRatios()}return e}},{key:"updateSourceChart",value:function(e){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:e.w.globals.minX,max:e.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var e=this,t=this.w;if(t.config.chart.brush.enabled&&typeof t.config.chart.events.selection!="function"){var i=t.config.chart.brush.targets||[t.config.chart.brush.target];i.forEach(function(a){var s=ApexCharts.getChartByID(a);s.w.globals.brushSource=e.ctx,typeof s.w.config.chart.events.zoomed!="function"&&(s.w.config.chart.events.zoomed=function(){e.updateSourceChart(s)}),typeof s.w.config.chart.events.scrolled!="function"&&(s.w.config.chart.events.scrolled=function(){e.updateSourceChart(s)})}),t.config.chart.events.selection=function(a,s){i.forEach(function(n){var r=ApexCharts.getChartByID(n),o=P.clone(t.config.yaxis);if(t.config.chart.brush.autoScaleYaxis&&r.w.globals.series.length===1){var h=new ae(r);o=h.autoScaleY(r,o,s)}var c=r.w.config.yaxis.reduce(function(d,g,p){return[].concat(q(d),[F(F({},r.w.config.yaxis[p]),{},{min:o[0].min,max:o[0].max})])},[]);r.ctx.updateHelpers._updateOptions({xaxis:{min:s.xaxis.min,max:s.xaxis.max},yaxis:c},!1,!1,!1,!1)})}}}}]),v}(),Et=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"_updateOptions",value:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0&&arguments[1],a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],s=!(arguments.length>3&&arguments[3]!==void 0)||arguments[3],n=arguments.length>4&&arguments[4]!==void 0&&arguments[4];return new Promise(function(r){var o=[t.ctx];s&&(o=t.ctx.getSyncedCharts()),t.ctx.w.globals.isExecCalled&&(o=[t.ctx],t.ctx.w.globals.isExecCalled=!1),o.forEach(function(h,c){var d=h.w;if(d.globals.shouldAnimate=a,i||(d.globals.resized=!0,d.globals.dataChanged=!0,a&&h.series.getPreviousPaths()),e&&W(e)==="object"&&(h.config=new le(e),e=N.extendArrayProps(h.config,e,d),h.w.globals.chartID!==t.ctx.w.globals.chartID&&delete e.series,d.config=P.extend(d.config,e),n&&(d.globals.lastXAxis=e.xaxis?P.clone(e.xaxis):[],d.globals.lastYAxis=e.yaxis?P.clone(e.yaxis):[],d.globals.initialConfig=P.extend({},d.config),d.globals.initialSeries=P.clone(d.config.series),e.series))){for(var g=0;g2&&arguments[2]!==void 0&&arguments[2];return new Promise(function(s){var n,r=i.w;return r.globals.shouldAnimate=t,r.globals.dataChanged=!0,t&&i.ctx.series.getPreviousPaths(),r.globals.axisCharts?((n=e.map(function(o,h){return i._extendSeries(o,h)})).length===0&&(n=[{data:[]}]),r.config.series=n):r.config.series=e.slice(),a&&(r.globals.initialConfig.series=P.clone(r.config.series),r.globals.initialSeries=P.clone(r.config.series)),i.ctx.update().then(function(){s(i.ctx)})})}},{key:"_extendSeries",value:function(e,t){var i=this.w,a=i.config.series[t];return F(F({},i.config.series[t]),{},{name:e.name?e.name:a&&a.name,color:e.color?e.color:a&&a.color,type:e.type?e.type:a&&a.type,data:e.data?e.data:a&&a.data})}},{key:"toggleDataPointSelection",value:function(e,t){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(e,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"'], ").concat(s," circle[j='").concat(t,"'], ").concat(s," rect[j='").concat(t,"']")).members[0]:t===void 0&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"']")).members[0],i.config.chart.type!=="pie"&&i.config.chart.type!=="polarArea"&&i.config.chart.type!=="donut"||this.ctx.pie.pieClicked(e)),a?(new M(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(e){var t=this.w;if(["min","max"].forEach(function(a){e.xaxis[a]!==void 0&&(t.config.xaxis[a]=e.xaxis[a],t.globals.lastXAxis[a]=e.xaxis[a])}),e.xaxis.categories&&e.xaxis.categories.length&&(t.config.xaxis.categories=e.xaxis.categories),t.config.xaxis.convertedCatToNumeric){var i=new oe(e);e=i.convertCatToNumericXaxis(e,this.ctx)}return e}},{key:"forceYAxisUpdate",value:function(e){return e.chart&&e.chart.stacked&&e.chart.stackType==="100%"&&(Array.isArray(e.yaxis)?e.yaxis.forEach(function(t,i){e.yaxis[i].min=0,e.yaxis[i].max=100}):(e.yaxis.min=0,e.yaxis.max=100)),e}},{key:"revertDefaultAxisMinMax",value:function(e){var t=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;e&&e.xaxis&&(a=e.xaxis),e&&e.yaxis&&(s=e.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var n=function(r){s[r]!==void 0&&(i.config.yaxis[r].min=s[r].min,i.config.yaxis[r].max=s[r].max)};i.config.yaxis.map(function(r,o){i.globals.zoomed||s[o]!==void 0?n(o):t.ctx.opts.yaxis[o]!==void 0&&(r.min=t.ctx.opts.yaxis[o].min,r.max=t.ctx.opts.yaxis[o].max)})}}]),v}();ee=typeof window<"u"?window:void 0,be=function(v,e){var t=(this!==void 0?this:v).SVG=function(l){if(t.supported)return l=new t.Doc(l),t.parser.draw||t.prepare(),l};if(t.ns="http://www.w3.org/2000/svg",t.xmlns="http://www.w3.org/2000/xmlns/",t.xlink="http://www.w3.org/1999/xlink",t.svgjs="http://svgjs.dev",t.supported=!0,!t.supported)return!1;t.did=1e3,t.eid=function(l){return"Svgjs"+c(l)+t.did++},t.create=function(l){var u=e.createElementNS(this.ns,l);return u.setAttribute("id",this.eid(l)),u},t.extend=function(){var l,u;u=(l=[].slice.call(arguments)).pop();for(var b=l.length-1;b>=0;b--)if(l[b])for(var m in u)l[b].prototype[m]=u[m];t.Set&&t.Set.inherit&&t.Set.inherit()},t.invent=function(l){var u=typeof l.create=="function"?l.create:function(){this.constructor.call(this,t.create(l.create))};return l.inherit&&(u.prototype=new l.inherit),l.extend&&t.extend(u,l.extend),l.construct&&t.extend(l.parent||t.Container,l.construct),u},t.adopt=function(l){return l?l.instance?l.instance:((u=l.nodeName=="svg"?l.parentNode instanceof v.SVGElement?new t.Nested:new t.Doc:l.nodeName=="linearGradient"?new t.Gradient("linear"):l.nodeName=="radialGradient"?new t.Gradient("radial"):t[c(l.nodeName)]?new t[c(l.nodeName)]:new t.Element(l)).type=l.nodeName,u.node=l,l.instance=u,u instanceof t.Doc&&u.namespace().defs(),u.setData(JSON.parse(l.getAttribute("svgjs:data"))||{}),u):null;var u},t.prepare=function(){var l=e.getElementsByTagName("body")[0],u=(l?new t.Doc(l):t.adopt(e.documentElement).nested()).size(2,0);t.parser={body:l||e.documentElement,draw:u.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:u.polyline().node,path:u.path().node,native:t.create("svg")}},t.parser={native:t.create("svg")},e.addEventListener("DOMContentLoaded",function(){t.parser.draw||t.prepare()},!1),t.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},t.utils={map:function(l,u){for(var b=l.length,m=[],A=0;A1?1:l,new t.Color({r:~~(this.r+(this.destination.r-this.r)*l),g:~~(this.g+(this.destination.g-this.g)*l),b:~~(this.b+(this.destination.b-this.b)*l)})):this}}),t.Color.test=function(l){return l+="",t.regex.isHex.test(l)||t.regex.isRgb.test(l)},t.Color.isRgb=function(l){return l&&typeof l.r=="number"&&typeof l.g=="number"&&typeof l.b=="number"},t.Color.isColor=function(l){return t.Color.isRgb(l)||t.Color.test(l)},t.Array=function(l,u){(l=(l||[]).valueOf()).length==0&&u&&(l=u.valueOf()),this.value=this.parse(l)},t.extend(t.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(l){return l=l.valueOf(),Array.isArray(l)?l:this.split(l)}}),t.PointArray=function(l,u){t.Array.call(this,l,u||[[0,0]])},t.PointArray.prototype=new t.Array,t.PointArray.prototype.constructor=t.PointArray;for(var i={M:function(l,u,b){return u.x=b.x=l[0],u.y=b.y=l[1],["M",u.x,u.y]},L:function(l,u){return u.x=l[0],u.y=l[1],["L",l[0],l[1]]},H:function(l,u){return u.x=l[0],["H",l[0]]},V:function(l,u){return u.y=l[0],["V",l[0]]},C:function(l,u){return u.x=l[4],u.y=l[5],["C",l[0],l[1],l[2],l[3],l[4],l[5]]},Q:function(l,u){return u.x=l[2],u.y=l[3],["Q",l[0],l[1],l[2],l[3]]},Z:function(l,u,b){return u.x=b.x,u.y=b.y,["Z"]}},a="mlhvqtcsaz".split(""),s=0,n=a.length;sC);return m},bbox:function(){return t.parser.draw||t.prepare(),t.parser.path.setAttribute("d",this.toString()),t.parser.path.getBBox()}}),t.Number=t.invent({create:function(l,u){this.value=0,this.unit=u||"",typeof l=="number"?this.value=isNaN(l)?0:isFinite(l)?l:l<0?-34e37:34e37:typeof l=="string"?(u=l.match(t.regex.numberAndUnit))&&(this.value=parseFloat(u[1]),u[5]=="%"?this.value/=100:u[5]=="s"&&(this.value*=1e3),this.unit=u[5]):l instanceof t.Number&&(this.value=l.valueOf(),this.unit=l.unit)},extend:{toString:function(){return(this.unit=="%"?~~(1e8*this.value)/1e6:this.unit=="s"?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(l){return l=new t.Number(l),new t.Number(this+l,this.unit||l.unit)},minus:function(l){return l=new t.Number(l),new t.Number(this-l,this.unit||l.unit)},times:function(l){return l=new t.Number(l),new t.Number(this*l,this.unit||l.unit)},divide:function(l){return l=new t.Number(l),new t.Number(this/l,this.unit||l.unit)},to:function(l){var u=new t.Number(this);return typeof l=="string"&&(u.unit=l),u},morph:function(l){return this.destination=new t.Number(l),l.relative&&(this.destination.value+=this.value),this},at:function(l){return this.destination?new t.Number(this.destination).minus(this).times(l).plus(this):this}}}),t.Element=t.invent({create:function(l){this._stroke=t.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=l)&&(this.type=l.nodeName,this.node.instance=this,this._stroke=l.getAttribute("stroke")||this._stroke)},extend:{x:function(l){return this.attr("x",l)},y:function(l){return this.attr("y",l)},cx:function(l){return l==null?this.x()+this.width()/2:this.x(l-this.width()/2)},cy:function(l){return l==null?this.y()+this.height()/2:this.y(l-this.height()/2)},move:function(l,u){return this.x(l).y(u)},center:function(l,u){return this.cx(l).cy(u)},width:function(l){return this.attr("width",l)},height:function(l){return this.attr("height",l)},size:function(l,u){var b=g(this,l,u);return this.width(new t.Number(b.width)).height(new t.Number(b.height))},clone:function(l){this.writeDataToDom();var u=f(this.node.cloneNode(!0));return l?l.add(u):this.after(u),u},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(l){return this.after(l).remove(),l},addTo:function(l){return l.put(this)},putIn:function(l){return l.add(this)},id:function(l){return this.attr("id",l)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return this.style("display")!="none"},toString:function(){return this.attr("id")},classes:function(){var l=this.attr("class");return l==null?[]:l.trim().split(t.regex.delimiter)},hasClass:function(l){return this.classes().indexOf(l)!=-1},addClass:function(l){if(!this.hasClass(l)){var u=this.classes();u.push(l),this.attr("class",u.join(" "))}return this},removeClass:function(l){return this.hasClass(l)&&this.attr("class",this.classes().filter(function(u){return u!=l}).join(" ")),this},toggleClass:function(l){return this.hasClass(l)?this.removeClass(l):this.addClass(l)},reference:function(l){return t.get(this.attr(l))},parent:function(l){var u=this;if(!u.node.parentNode)return null;if(u=t.adopt(u.node.parentNode),!l)return u;for(;u&&u.node instanceof v.SVGElement;){if(typeof l=="string"?u.matches(l):u instanceof l)return u;if(!u.node.parentNode||u.node.parentNode.nodeName=="#document")return null;u=t.adopt(u.node.parentNode)}},doc:function(){return this instanceof t.Doc?this:this.parent(t.Doc)},parents:function(l){var u=[],b=this;do{if(!(b=b.parent(l))||!b.node)break;u.push(b)}while(b.parent);return u},matches:function(l){return function(u,b){return(u.matches||u.matchesSelector||u.msMatchesSelector||u.mozMatchesSelector||u.webkitMatchesSelector||u.oMatchesSelector).call(u,b)}(this.node,l)},native:function(){return this.node},svg:function(l){var u=e.createElement("svg");if(!(l&&this instanceof t.Parent))return u.appendChild(l=e.createElement("svg")),this.writeDataToDom(),l.appendChild(this.node.cloneNode(!0)),u.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");u.innerHTML=""+l.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var b=0,m=u.firstChild.childNodes.length;b":function(l){return-Math.cos(l*Math.PI)/2+.5},">":function(l){return Math.sin(l*Math.PI/2)},"<":function(l){return 1-Math.cos(l*Math.PI/2)}},t.morph=function(l){return function(u,b){return new t.MorphObj(u,b).at(l)}},t.Situation=t.invent({create:function(l){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new t.Number(l.duration).valueOf(),this.delay=new t.Number(l.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=l.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),t.FX=t.invent({create:function(l){this._target=l,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(l,u,b){W(l)==="object"&&(u=l.ease,b=l.delay,l=l.duration);var m=new t.Situation({duration:l||1e3,delay:b||0,ease:t.easing[u||"-"]||u});return this.queue(m),this},target:function(l){return l&&l instanceof t.Element?(this._target=l,this):this._target},timeToAbsPos:function(l){return(l-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(l){return this.situation.duration/this._speed*l+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=v.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){v.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(l){return(typeof l=="function"||l instanceof t.Situation)&&this.situations.push(l),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof t.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var l,u=this.situation;if(u.init)return this;for(var b in u.animations){l=this.target()[b](),Array.isArray(l)||(l=[l]),Array.isArray(u.animations[b])||(u.animations[b]=[u.animations[b]]);for(var m=l.length;m--;)u.animations[b][m]instanceof t.Number&&(l[m]=new t.Number(l[m])),u.animations[b][m]=l[m].morph(u.animations[b][m])}for(var b in u.attrs)u.attrs[b]=new t.MorphObj(this.target().attr(b),u.attrs[b]);for(var b in u.styles)u.styles[b]=new t.MorphObj(this.target().style(b),u.styles[b]);return u.initialTransformation=this.target().matrixify(),u.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(l,u){var b=this.active;return this.active=!1,u&&this.clearQueue(),l&&this.situation&&(!b&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(l){var u=this.last();return this.target().on("finished.fx",function b(m){m.detail.situation==u&&(l.call(this,u),this.off("finished.fx",b))}),this._callStart()},during:function(l){var u=this.last(),b=function(m){m.detail.situation==u&&l.call(this,m.detail.pos,t.morph(m.detail.pos),m.detail.eased,u)};return this.target().off("during.fx",b).on("during.fx",b),this.after(function(){this.off("during.fx",b)}),this._callStart()},afterAll:function(l){var u=function b(m){l.call(this),this.off("allfinished.fx",b)};return this.target().off("allfinished.fx",u).on("allfinished.fx",u),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(l,u,b){return this.last()[b||"animations"][l]=u,this._callStart()},step:function(l){var u,b,m;l||(this.absPos=this.timeToAbsPos(+new Date)),this.situation.loops!==!1?(u=Math.max(this.absPos,0),b=Math.floor(u),this.situation.loops===!0||bthis.lastPos&&L<=A&&(this.situation.once[L].call(this.target(),this.pos,A),delete this.situation.once[L]);return this.active&&this.target().fire("during",{pos:this.pos,eased:A,fx:this,situation:this.situation}),this.situation?(this.eachAt(),this.pos==1&&!this.situation.reversed||this.situation.reversed&&this.pos==0?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=A,this):this},eachAt:function(){var l,u=this,b=this.target(),m=this.situation;for(var A in m.animations)l=[].concat(m.animations[A]).map(function(T){return typeof T!="string"&&T.at?T.at(m.ease(u.pos),u.pos):T}),b[A].apply(b,l);for(var A in m.attrs)l=[A].concat(m.attrs[A]).map(function(I){return typeof I!="string"&&I.at?I.at(m.ease(u.pos),u.pos):I}),b.attr.apply(b,l);for(var A in m.styles)l=[A].concat(m.styles[A]).map(function(I){return typeof I!="string"&&I.at?I.at(m.ease(u.pos),u.pos):I}),b.style.apply(b,l);if(m.transforms.length){l=m.initialTransformation,A=0;for(var L=m.transforms.length;A=0;--b)this[S[b]]=l[S[b]]!=null?l[S[b]]:u[S[b]]},extend:{extract:function(){var l=p(this,0,1);p(this,1,0);var u=180/Math.PI*Math.atan2(l.y,l.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(u*Math.PI/180)+this.f*Math.sin(u*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(u*Math.PI/180)+this.e*Math.sin(-u*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:u,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new t.Matrix(this)}},clone:function(){return new t.Matrix(this)},morph:function(l){return this.destination=new t.Matrix(l),this},multiply:function(l){return new t.Matrix(this.native().multiply(function(u){return u instanceof t.Matrix||(u=new t.Matrix(u)),u}(l).native()))},inverse:function(){return new t.Matrix(this.native().inverse())},translate:function(l,u){return new t.Matrix(this.native().translate(l||0,u||0))},native:function(){for(var l=t.parser.native.createSVGMatrix(),u=S.length-1;u>=0;u--)l[S[u]]=this[S[u]];return l},toString:function(){return"matrix("+w(this.a)+","+w(this.b)+","+w(this.c)+","+w(this.d)+","+w(this.e)+","+w(this.f)+")"}},parent:t.Element,construct:{ctm:function(){return new t.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof t.Nested){var l=this.rect(1,1),u=l.node.getScreenCTM();return l.remove(),new t.Matrix(u)}return new t.Matrix(this.node.getScreenCTM())}}}),t.Point=t.invent({create:function(l,u){var b;b=Array.isArray(l)?{x:l[0],y:l[1]}:W(l)==="object"?{x:l.x,y:l.y}:l!=null?{x:l,y:u!=null?u:l}:{x:0,y:0},this.x=b.x,this.y=b.y},extend:{clone:function(){return new t.Point(this)},morph:function(l,u){return this.destination=new t.Point(l,u),this}}}),t.extend(t.Element,{point:function(l,u){return new t.Point(l,u).transform(this.screenCTM().inverse())}}),t.extend(t.Element,{attr:function(l,u,b){if(l==null){for(l={},b=(u=this.node.attributes).length-1;b>=0;b--)l[u[b].nodeName]=t.regex.isNumber.test(u[b].nodeValue)?parseFloat(u[b].nodeValue):u[b].nodeValue;return l}if(W(l)==="object")for(var m in l)this.attr(m,l[m]);else if(u===null)this.node.removeAttribute(l);else{if(u==null)return(u=this.node.getAttribute(l))==null?t.defaults.attrs[l]:t.regex.isNumber.test(u)?parseFloat(u):u;l=="stroke-width"?this.attr("stroke",parseFloat(u)>0?this._stroke:null):l=="stroke"&&(this._stroke=u),l!="fill"&&l!="stroke"||(t.regex.isImage.test(u)&&(u=this.doc().defs().image(u,0,0)),u instanceof t.Image&&(u=this.doc().defs().pattern(0,0,function(){this.add(u)}))),typeof u=="number"?u=new t.Number(u):t.Color.isColor(u)?u=new t.Color(u):Array.isArray(u)&&(u=new t.Array(u)),l=="leading"?this.leading&&this.leading(u):typeof b=="string"?this.node.setAttributeNS(b,l,u.toString()):this.node.setAttribute(l,u.toString()),!this.rebuild||l!="font-size"&&l!="x"||this.rebuild(l,u)}return this}}),t.extend(t.Element,{transform:function(l,u){var b;return W(l)!=="object"?(b=new t.Matrix(this).extract(),typeof l=="string"?b[l]:b):(b=new t.Matrix(this),u=!!u||!!l.relative,l.a!=null&&(b=u?b.multiply(new t.Matrix(l)):new t.Matrix(l)),this.attr("transform",b))}}),t.extend(t.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(t.regex.transforms).slice(0,-1).map(function(l){var u=l.trim().split("(");return[u[0],u[1].split(t.regex.delimiter).map(function(b){return parseFloat(b)})]}).reduce(function(l,u){return u[0]=="matrix"?l.multiply(x(u[1])):l[u[0]].apply(l,u[1])},new t.Matrix)},toParent:function(l){if(this==l)return this;var u=this.screenCTM(),b=l.screenCTM().inverse();return this.addTo(l).untransform().transform(b.multiply(u)),this},toDoc:function(){return this.toParent(this.doc())}}),t.Transformation=t.invent({create:function(l,u){if(arguments.length>1&&typeof u!="boolean")return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(l))for(var b=0,m=this.arguments.length;b=0},index:function(l){return[].slice.call(this.node.childNodes).indexOf(l.node)},get:function(l){return t.adopt(this.node.childNodes[l])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(l,u){for(var b=this.children(),m=0,A=b.length;m=0;u--)l.childNodes[u]instanceof v.SVGElement&&f(l.childNodes[u]);return t.adopt(l).id(t.eid(l.nodeName))}function y(l){return l.x==null&&(l.x=0,l.y=0,l.width=0,l.height=0),l.w=l.width,l.h=l.height,l.x2=l.x+l.width,l.y2=l.y+l.height,l.cx=l.x+l.width/2,l.cy=l.y+l.height/2,l}function w(l){return Math.abs(l)>1e-37?l:0}["fill","stroke"].forEach(function(l){var u={};u[l]=function(b){if(b===void 0)return this;if(typeof b=="string"||t.Color.isRgb(b)||b&&typeof b.fill=="function")this.attr(l,b);else for(var m=r[l].length-1;m>=0;m--)b[r[l][m]]!=null&&this.attr(r.prefix(l,r[l][m]),b[r[l][m]]);return this},t.extend(t.Element,t.FX,u)}),t.extend(t.Element,t.FX,{translate:function(l,u){return this.transform({x:l,y:u})},matrix:function(l){return this.attr("transform",new t.Matrix(arguments.length==6?[].slice.call(arguments):l))},opacity:function(l){return this.attr("opacity",l)},dx:function(l){return this.x(new t.Number(l).plus(this instanceof t.FX?0:this.x()),!0)},dy:function(l){return this.y(new t.Number(l).plus(this instanceof t.FX?0:this.y()),!0)}}),t.extend(t.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(l){return this.node.getPointAtLength(l)}}),t.Set=t.invent({create:function(l){Array.isArray(l)?this.members=l:this.clear()},extend:{add:function(){for(var l=[].slice.call(arguments),u=0,b=l.length;u-1&&this.members.splice(u,1),this},each:function(l){for(var u=0,b=this.members.length;u=0},index:function(l){return this.members.indexOf(l)},get:function(l){return this.members[l]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(l){return new t.Set(l)}}}),t.FX.Set=t.invent({create:function(l){this.set=l}}),t.Set.inherit=function(){var l=[];for(var u in t.Shape.prototype)typeof t.Shape.prototype[u]=="function"&&typeof t.Set.prototype[u]!="function"&&l.push(u);for(var u in l.forEach(function(m){t.Set.prototype[m]=function(){for(var A=0,L=this.members.length;A=0;l--)delete this.memory()[arguments[l]];return this},memory:function(){return this._memory||(this._memory={})}}),t.get=function(l){var u=e.getElementById(function(b){var m=(b||"").toString().match(t.regex.reference);if(m)return m[1]}(l)||l);return t.adopt(u)},t.select=function(l,u){return new t.Set(t.utils.map((u||e).querySelectorAll(l),function(b){return t.adopt(b)}))},t.extend(t.Parent,{select:function(l){return t.select(l,this.node)}});var S="abcdef".split("");if(typeof v.CustomEvent!="function"){var k=function(l,u){u=u||{bubbles:!1,cancelable:!1,detail:void 0};var b=e.createEvent("CustomEvent");return b.initCustomEvent(l,u.bubbles,u.cancelable,u.detail),b};k.prototype=v.Event.prototype,t.CustomEvent=k}else t.CustomEvent=v.CustomEvent;return t},W(Ke)==="object"?ze.exports=ee.document?be(ee,ee.document):function(v){return be(v,v.document)}:ee.SVG=be(ee,ee.document),function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(r,o){return this.add(r,o),!r.attr("in")&&this.autoSetIn&&r.attr("in",this.source),r.attr("result")||r.attr("result",r),r},blend:function(r,o,h){return this.put(new SVG.BlendEffect(r,o,h))},colorMatrix:function(r,o){return this.put(new SVG.ColorMatrixEffect(r,o))},convolveMatrix:function(r){return this.put(new SVG.ConvolveMatrixEffect(r))},componentTransfer:function(r){return this.put(new SVG.ComponentTransferEffect(r))},composite:function(r,o,h){return this.put(new SVG.CompositeEffect(r,o,h))},flood:function(r,o){return this.put(new SVG.FloodEffect(r,o))},offset:function(r,o){return this.put(new SVG.OffsetEffect(r,o))},image:function(r){return this.put(new SVG.ImageEffect(r))},merge:function(){var r=[void 0];for(var o in arguments)r.push(arguments[o]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,r)))},gaussianBlur:function(r,o){return this.put(new SVG.GaussianBlurEffect(r,o))},morphology:function(r,o){return this.put(new SVG.MorphologyEffect(r,o))},diffuseLighting:function(r,o,h){return this.put(new SVG.DiffuseLightingEffect(r,o,h))},displacementMap:function(r,o,h,c,d){return this.put(new SVG.DisplacementMapEffect(r,o,h,c,d))},specularLighting:function(r,o,h,c){return this.put(new SVG.SpecularLightingEffect(r,o,h,c))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(r,o,h,c,d){return this.put(new SVG.TurbulenceEffect(r,o,h,c,d))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(r){var o=this.put(new SVG.Filter);return typeof r=="function"&&r.call(o,o),o}}),SVG.extend(SVG.Container,{filter:function(r){return this.defs().filter(r)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(r){return this.filterer=r instanceof SVG.Element?r:this.doc().filter(r),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(r){return this.filterer&&r===!0&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(r){return r==null?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",r)},result:function(r){return r==null?this.attr("result"):this.attr("result",r)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(r){return r==null?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",r)},result:function(r){return r==null?this.attr("result"):this.attr("result",r)},toString:function(){return this.result()}}});var v={blend:function(r,o){return this.parent()&&this.parent().blend(this,r,o)},colorMatrix:function(r,o){return this.parent()&&this.parent().colorMatrix(r,o).in(this)},convolveMatrix:function(r){return this.parent()&&this.parent().convolveMatrix(r).in(this)},componentTransfer:function(r){return this.parent()&&this.parent().componentTransfer(r).in(this)},composite:function(r,o){return this.parent()&&this.parent().composite(this,r,o)},flood:function(r,o){return this.parent()&&this.parent().flood(r,o)},offset:function(r,o){return this.parent()&&this.parent().offset(r,o).in(this)},image:function(r){return this.parent()&&this.parent().image(r)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(r,o){return this.parent()&&this.parent().gaussianBlur(r,o).in(this)},morphology:function(r,o){return this.parent()&&this.parent().morphology(r,o).in(this)},diffuseLighting:function(r,o,h){return this.parent()&&this.parent().diffuseLighting(r,o,h).in(this)},displacementMap:function(r,o,h,c){return this.parent()&&this.parent().displacementMap(this,r,o,h,c)},specularLighting:function(r,o,h,c){return this.parent()&&this.parent().specularLighting(r,o,h,c).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(r,o,h,c,d){return this.parent()&&this.parent().turbulence(r,o,h,c,d).in(this)}};SVG.extend(SVG.Effect,v),SVG.extend(SVG.ParentEffect,v),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(r){this.attr("in",r)}}});var e={blend:function(r,o,h){this.attr({in:r,in2:o,mode:h||"normal"})},colorMatrix:function(r,o){r=="matrix"&&(o=a(o)),this.attr({type:r,values:o===void 0?null:o})},convolveMatrix:function(r){r=a(r),this.attr({order:Math.sqrt(r.split(" ").length),kernelMatrix:r})},composite:function(r,o,h){this.attr({in:r,in2:o,operator:h})},flood:function(r,o){this.attr("flood-color",r),o!=null&&this.attr("flood-opacity",o)},offset:function(r,o){this.attr({dx:r,dy:o})},image:function(r){this.attr("href",r,SVG.xlink)},displacementMap:function(r,o,h,c,d){this.attr({in:r,in2:o,scale:h,xChannelSelector:c,yChannelSelector:d})},gaussianBlur:function(r,o){r!=null||o!=null?this.attr("stdDeviation",s(Array.prototype.slice.call(arguments))):this.attr("stdDeviation","0 0")},morphology:function(r,o){this.attr({operator:r,radius:o})},tile:function(){},turbulence:function(r,o,h,c,d){this.attr({numOctaves:o,seed:h,stitchTiles:c,baseFrequency:r,type:d})}},t={merge:function(){var r;if(arguments[0]instanceof SVG.Set){var o=this;arguments[0].each(function(c){this instanceof SVG.MergeNode?o.put(this):(this instanceof SVG.Effect||this instanceof SVG.ParentEffect)&&o.put(new SVG.MergeNode(this))})}else{r=Array.isArray(arguments[0])?arguments[0]:arguments;for(var h=0;h1&&(V*=c=Math.sqrt(c),j*=c),d=new SVG.Matrix().rotate(J).scale(1/V,1/j).rotate(-J),U=U.transform(d),_=_.transform(d),g=[_.x-U.x,_.y-U.y],x=g[0]*g[0]+g[1]*g[1],p=Math.sqrt(x),g[0]/=p,g[1]/=p,f=x<4?Math.sqrt(1-x/4):0,Ft===Te&&(f*=-1),y=new SVG.Point((_.x+U.x)/2+f*-g[1],(_.y+U.y)/2+f*g[0]),w=new SVG.Point(U.x-y.x,U.y-y.y),S=new SVG.Point(_.x-y.x,_.y-y.y),k=Math.acos(w.x/Math.sqrt(w.x*w.x+w.y*w.y)),w.y<0&&(k*=-1),l=Math.acos(S.x/Math.sqrt(S.x*S.x+S.y*S.y)),S.y<0&&(l*=-1),Te&&k>l&&(l+=2*Math.PI),!Te&&kn.maxX-t.width&&(r=(a=n.maxX-t.width)-this.startPoints.box.x),n.minY!=null&&sn.maxY-t.height&&(o=(s=n.maxY-t.height)-this.startPoints.box.y),n.snapToGrid!=null&&(a-=a%n.snapToGrid,s-=s%n.snapToGrid,r-=r%n.snapToGrid,o-=o%n.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:r,y:o},!0):this.el.move(a,s));return i},v.prototype.end=function(e){var t=this.drag(e);this.el.fire("dragend",{event:e,p:t,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,t){typeof e!="function"&&typeof e!="object"||(t=e,e=!0);var i=this.remember("_draggable")||new v(this);return(e=e===void 0||e)?i.init(t||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function v(e){this.el=e,e.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,i,a){var s=typeof t!="string"?t:i[t];return a?s/2:s},this.pointCoords=function(t,i){var a=this.pointsList[t];return{x:this.pointCoord(a[0],i,t==="t"||t==="b"),y:this.pointCoord(a[1],i,t==="r"||t==="l")}}}v.prototype.init=function(e,t){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],t[s]!==void 0&&(this.options[s]=t[s]);var n=["points","pointsExclude"];for(var s in n){var r=this.options[n[s]];typeof r=="string"?r=r.length>0?r.split(/\s*,\s*/i):[]:typeof r=="boolean"&&n[s]==="points"&&(r=r?a:[]),this.options[n[s]]=r}this.options.points=[a,this.options.points].reduce(function(o,h){return o.filter(function(c){return h.indexOf(c)>-1})}),this.options.points=[this.options.points,this.options.pointsExclude].reduce(function(o,h){return o.filter(function(c){return h.indexOf(c)<0})}),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&["line","polyline","polygon"].indexOf(this.el.type)!==-1?this.selectPoints(e):this.selectRect(e),this.observe(),this.cleanup()},v.prototype.selectPoints=function(e){return this.pointSelection.isSelected=e,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},v.prototype.getPointArray=function(){var e=this.el.bbox();return this.el.array().valueOf().map(function(t){return[t[0]-e.x,t[1]-e.y]})},v.prototype.drawPoints=function(){for(var e=this,t=this.getPointArray(),i=0,a=t.length;i0&&this.parameters.box.height-r[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x+r[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-r[0]);r=this.checkAspectRatio(r),this.el.move(this.parameters.box.x+r[0],this.parameters.box.y+r[1]).size(this.parameters.box.width-r[0],this.parameters.box.height-r[1])}};break;case"rt":this.calc=function(s,n){var r=this.snapToGrid(s,n,2);if(this.parameters.box.width+r[0]>0&&this.parameters.box.height-r[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x-r[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+r[0]);r=this.checkAspectRatio(r,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+r[1]).size(this.parameters.box.width+r[0],this.parameters.box.height-r[1])}};break;case"rb":this.calc=function(s,n){var r=this.snapToGrid(s,n,0);if(this.parameters.box.width+r[0]>0&&this.parameters.box.height+r[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x-r[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+r[0]);r=this.checkAspectRatio(r),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+r[0],this.parameters.box.height+r[1])}};break;case"lb":this.calc=function(s,n){var r=this.snapToGrid(s,n,1);if(this.parameters.box.width-r[0]>0&&this.parameters.box.height+r[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x+r[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-r[0]);r=this.checkAspectRatio(r,!0),this.el.move(this.parameters.box.x+r[0],this.parameters.box.y).size(this.parameters.box.width-r[0],this.parameters.box.height+r[1])}};break;case"t":this.calc=function(s,n){var r=this.snapToGrid(s,n,2);if(this.parameters.box.height-r[1]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y+r[1]).height(this.parameters.box.height-r[1])}};break;case"r":this.calc=function(s,n){var r=this.snapToGrid(s,n,0);if(this.parameters.box.width+r[0]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+r[0])}};break;case"b":this.calc=function(s,n){var r=this.snapToGrid(s,n,0);if(this.parameters.box.height+r[1]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+r[1])}};break;case"l":this.calc=function(s,n){var r=this.snapToGrid(s,n,1);if(this.parameters.box.width-r[0]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x+r[0],this.parameters.box.y).width(this.parameters.box.width-r[0])}};break;case"rot":this.calc=function(s,n){var r=s+this.parameters.p.x,o=n+this.parameters.p.y,h=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),c=Math.atan2(o-this.parameters.box.y-this.parameters.box.height/2,r-this.parameters.box.x-this.parameters.box.width/2),d=this.parameters.rotation+180*(c-h)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(d-d%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(s,n){var r=this.snapToGrid(s,n,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),o=this.el.array().valueOf();o[this.parameters.i][0]=this.parameters.pointCoords[0]+r[0],o[this.parameters.i][1]=this.parameters.pointCoords[1]+r[1],this.el.plot(o)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:e}),SVG.on(window,"touchmove.resize",function(s){t.update(s||window.event)}),SVG.on(window,"touchend.resize",function(){t.done()}),SVG.on(window,"mousemove.resize",function(s){t.update(s||window.event)}),SVG.on(window,"mouseup.resize",function(){t.done()})},v.prototype.update=function(e){if(e){var t=this._extractPosition(e),i=this.transformPoint(t.x,t.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:e})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},v.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},v.prototype.snapToGrid=function(e,t,i,a){var s;return a!==void 0?s=[(i+e)%this.options.snapToGrid,(a+t)%this.options.snapToGrid]:(i=i==null?3:i,s=[(this.parameters.box.x+e+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+t+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),e<0&&(s[0]-=this.options.snapToGrid),t<0&&(s[1]-=this.options.snapToGrid),e-=Math.abs(s[0])r.maxX&&(e=r.maxX-s),r.minY!==void 0&&n+tr.maxY&&(t=r.maxY-n),[e,t]},v.prototype.checkAspectRatio=function(e,t){if(!this.options.saveAspectRatio)return e;var i=e.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+e[0],n=this.parameters.box.height-e[1],r=s/n;return ra&&(i[0]=this.parameters.box.width-n*a,t&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new v(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),window.Apex===void 0&&(window.Apex={});var $e=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"initModules",value:function(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","exportToCSV","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","mouseleave","touchstart","touchmove","touchleave","mouseup","touchend"],this.ctx.animations=new te(this.ctx),this.ctx.axes=new ht(this.ctx),this.ctx.core=new zt(this.ctx.el,this.ctx),this.ctx.config=new le({}),this.ctx.data=new Oe(this.ctx),this.ctx.grid=new Ne(this.ctx),this.ctx.graphics=new M(this.ctx),this.ctx.coreUtils=new N(this.ctx),this.ctx.crosshairs=new Se(this.ctx),this.ctx.events=new ot(this.ctx),this.ctx.exports=new fe(this.ctx),this.ctx.localization=new lt(this.ctx),this.ctx.options=new Q,this.ctx.responsive=new ct(this.ctx),this.ctx.series=new Z(this.ctx),this.ctx.theme=new dt(this.ctx),this.ctx.formatters=new pe(this.ctx),this.ctx.titleSubtitle=new gt(this.ctx),this.ctx.legend=new We(this.ctx),this.ctx.toolbar=new Be(this.ctx),this.ctx.tooltip=new je(this.ctx),this.ctx.dimensions=new xe(this.ctx),this.ctx.updateHelpers=new Et(this.ctx),this.ctx.zoomPanSelection=new mt(this.ctx),this.ctx.w.globals.tooltip=new je(this.ctx)}}]),v}(),Je=function(){function v(e){E(this,v),this.ctx=e,this.w=e.w}return Y(v,[{key:"clear",value:function(e){var t=e.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:t})}},{key:"killSVG",value:function(e){e.each(function(t,i){this.removeClass("*"),this.off(),this.stop()},!0),e.ungroup(),e.clear()}},{key:"clearDomElements",value:function(e){var t=this,i=e.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight="unset");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach(function(r){s.removeEventListener(r,t.ctx.events.documentEvent)});var n=this.w.globals.dom;if(this.ctx.el!==null)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(n.Paper),n.Paper.remove(),n.elWrap=null,n.elGraphical=null,n.elAnnotations=null,n.elLegendWrap=null,n.baseEl=null,n.elGridRect=null,n.elGridRectMask=null,n.elGridRectMarkerMask=null,n.elForecastMask=null,n.elNonForecastMask=null,n.elDefs=null}}]),v}(),Pe=new WeakMap,Yt=function(){function v(e,t){E(this,v),this.opts=t,this.ctx=this,this.w=new nt(t).init(),this.el=e,this.w.globals.cuid=P.randomId(),this.w.globals.chartID=this.w.config.chart.id?P.escapeString(this.w.config.chart.id):this.w.globals.cuid,new $e(this).initModules(),this.create=P.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return Y(v,[{key:"render",value:function(){var e=this;return new Promise(function(t,i){if(e.el!==null){Apex._chartInstances===void 0&&(Apex._chartInstances=[]),e.w.config.chart.id&&Apex._chartInstances.push({id:e.w.globals.chartID,group:e.w.config.chart.group,chart:e}),e.setLocale(e.w.config.chart.defaultLocale);var a=e.w.config.chart.events.beforeMount;if(typeof a=="function"&&a(e,e.w),e.events.fireEvent("beforeMount",[e,e.w]),window.addEventListener("resize",e.windowResizeHandler),function(c,d){var g=!1;if(c.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var p=c.getBoundingClientRect();c.style.display!=="none"&&p.width!==0||(g=!0)}var x=new ResizeObserver(function(f){g&&d.call(c,f),g=!0});c.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(c.children).forEach(function(f){return x.observe(f)}):x.observe(c),Pe.set(d,x)}(e.el.parentNode,e.parentResizeHandler),!e.css){var s=e.el.getRootNode&&e.el.getRootNode(),n=P.is("ShadowRoot",s),r=e.el.ownerDocument,o=r.getElementById("apexcharts-css");!n&&o||(e.css=document.createElement("style"),e.css.id="apexcharts-css",e.css.textContent=`@keyframes opaque { +`),this.t.download&&r.push({el:this.elMenuIcon,icon:typeof this.t.download=="string"?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var h=0;h0&&a.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:i.globals.gridWidth,maxY:i.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var i=this.w,a=this.xyRatios;if(!i.globals.zoomEnabled){if(i.globals.selection!==void 0&&i.globals.selection!==null)this.drawSelectionRect(i.globals.selection);else if(i.config.chart.selection.xaxis.min!==void 0&&i.config.chart.selection.xaxis.max!==void 0){var s=(i.config.chart.selection.xaxis.min-i.globals.minX)/a.xRatio,r={x:s,y:0,width:i.globals.gridWidth-(i.globals.maxX-i.config.chart.selection.xaxis.max)/a.xRatio-s,height:i.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(r),this.makeSelectionRectDraggable(),typeof i.config.chart.events.selection=="function"&&i.config.chart.events.selection(this.ctx,{xaxis:{min:i.config.chart.selection.xaxis.min,max:i.config.chart.selection.xaxis.max},yaxis:{}})}}}},{key:"drawSelectionRect",value:function(i){var a=i.x,s=i.y,r=i.width,n=i.height,o=i.translateX,h=o===void 0?0:o,c=i.translateY,d=c===void 0?0:c,u=this.w,p=this.zoomRect,f=this.selectionRect;if(this.dragged||u.globals.selection!==null){var b={transform:"translate("+h+", "+d+")"};u.globals.zoomEnabled&&this.dragged&&(r<0&&(r=1),p.attr({x:a,y:s,width:r,height:n,fill:u.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":u.config.chart.zoom.zoomedArea.fill.opacity,stroke:u.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":u.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":u.config.chart.zoom.zoomedArea.stroke.opacity}),z.setAttrs(p.node,b)),u.globals.selectionEnabled&&(f.attr({x:a,y:s,width:r>0?r:0,height:n>0?n:0,fill:u.config.chart.selection.fill.color,"fill-opacity":u.config.chart.selection.fill.opacity,stroke:u.config.chart.selection.stroke.color,"stroke-width":u.config.chart.selection.stroke.width,"stroke-dasharray":u.config.chart.selection.stroke.dashArray,"stroke-opacity":u.config.chart.selection.stroke.opacity}),z.setAttrs(f.node,b))}}},{key:"hideSelectionRect",value:function(i){i&&i.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(i){var a=i.context,s=i.zoomtype,r=this.w,n=a,o=this.gridRect.getBoundingClientRect(),h=n.startX-1,c=n.startY,d=!1,u=!1,p=n.clientX-o.left-h,f=n.clientY-o.top-c,b={};return Math.abs(p+h)>r.globals.gridWidth?p=r.globals.gridWidth-h:n.clientX-o.left<0&&(p=h),h>n.clientX-o.left&&(d=!0,p=Math.abs(p)),c>n.clientY-o.top&&(u=!0,f=Math.abs(f)),b=s==="x"?{x:d?h-p:h,y:0,width:p,height:r.globals.gridHeight}:s==="y"?{x:0,y:u?c-f:c,width:r.globals.gridWidth,height:f}:{x:d?h-p:h,y:u?c-f:c,width:p,height:f},n.drawSelectionRect(b),n.selectionDragging("resizing"),b}},{key:"selectionDragging",value:function(i,a){var s=this,r=this.w,n=this.xyRatios,o=this.selectionRect,h=0;i==="resizing"&&(h=30);var c=function(u){return parseFloat(o.node.getAttribute(u))},d={x:c("x"),y:c("y"),width:c("width"),height:c("height")};r.globals.selection=d,typeof r.config.chart.events.selection=="function"&&r.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout(function(){var u=s.gridRect.getBoundingClientRect(),p=o.node.getBoundingClientRect(),f={xaxis:{min:r.globals.xAxisScale.niceMin+(p.left-u.left)*n.xRatio,max:r.globals.xAxisScale.niceMin+(p.right-u.left)*n.xRatio},yaxis:{min:r.globals.yAxisScale[0].niceMin+(u.bottom-p.bottom)*n.yRatio[0],max:r.globals.yAxisScale[0].niceMax-(p.top-u.top)*n.yRatio[0]}};r.config.chart.events.selection(s.ctx,f),r.config.chart.brush.enabled&&r.config.chart.events.brushScrolled!==void 0&&r.config.chart.events.brushScrolled(s.ctx,f)},h))}},{key:"selectionDrawn",value:function(i){var a=i.context,s=i.zoomtype,r=this.w,n=a,o=this.xyRatios,h=this.ctx.toolbar;if(n.startX>n.endX){var c=n.startX;n.startX=n.endX,n.endX=c}if(n.startY>n.endY){var d=n.startY;n.startY=n.endY,n.endY=d}var u=void 0,p=void 0;r.globals.isRangeBar?(u=r.globals.yAxisScale[0].niceMin+n.startX*o.invertedYRatio,p=r.globals.yAxisScale[0].niceMin+n.endX*o.invertedYRatio):(u=r.globals.xAxisScale.niceMin+n.startX*o.xRatio,p=r.globals.xAxisScale.niceMin+n.endX*o.xRatio);var f=[],b=[];if(r.config.yaxis.forEach(function(A,S){f.push(r.globals.yAxisScale[S].niceMax-o.yRatio[S]*n.startY),b.push(r.globals.yAxisScale[S].niceMax-o.yRatio[S]*n.endY)}),n.dragged&&(n.dragX>10||n.dragY>10)&&u!==p){if(r.globals.zoomEnabled){var v=P.clone(r.globals.initialConfig.yaxis),w=P.clone(r.globals.initialConfig.xaxis);if(r.globals.zoomed=!0,r.config.xaxis.convertedCatToNumeric&&(u=Math.floor(u),p=Math.floor(p),u<1&&(u=1,p=r.globals.dataPoints),p-u<2&&(p=u+1)),s!=="xy"&&s!=="x"||(w={min:u,max:p}),s!=="xy"&&s!=="y"||v.forEach(function(A,S){v[S].min=b[S],v[S].max=f[S]}),r.config.chart.zoom.autoScaleYaxis){var k=new re(n.ctx);v=k.autoScaleY(n.ctx,v,{xaxis:w})}if(h){var l=h.getBeforeZoomRange(w,v);l&&(w=l.xaxis?l.xaxis:w,v=l.yaxis?l.yaxis:v)}var g={xaxis:w};r.config.chart.group||(g.yaxis=v),n.ctx.updateHelpers._updateOptions(g,!1,n.w.config.chart.animations.dynamicAnimation.enabled),typeof r.config.chart.events.zoomed=="function"&&h.zoomCallback(w,v)}else if(r.globals.selectionEnabled){var x,y=null;x={min:u,max:p},s!=="xy"&&s!=="y"||(y=P.clone(r.config.yaxis)).forEach(function(A,S){y[S].min=b[S],y[S].max=f[S]}),r.globals.selection=n.selection,typeof r.config.chart.events.selection=="function"&&r.config.chart.events.selection(n.ctx,{xaxis:x,yaxis:y})}}}},{key:"panDragging",value:function(i){var a=i.context,s=this.w,r=a;if(s.globals.lastClientPosition.x!==void 0){var n=s.globals.lastClientPosition.x-r.clientX,o=s.globals.lastClientPosition.y-r.clientY;Math.abs(n)>Math.abs(o)&&n>0?this.moveDirection="left":Math.abs(n)>Math.abs(o)&&n<0?this.moveDirection="right":Math.abs(o)>Math.abs(n)&&o>0?this.moveDirection="up":Math.abs(o)>Math.abs(n)&&o<0&&(this.moveDirection="down")}s.globals.lastClientPosition={x:r.clientX,y:r.clientY};var h=s.globals.isRangeBar?s.globals.minY:s.globals.minX,c=s.globals.isRangeBar?s.globals.maxY:s.globals.maxX;s.config.xaxis.convertedCatToNumeric||r.panScrolled(h,c)}},{key:"delayedPanScrolled",value:function(){var i=this.w,a=i.globals.minX,s=i.globals.maxX,r=(i.globals.maxX-i.globals.minX)/2;this.moveDirection==="left"?(a=i.globals.minX+r,s=i.globals.maxX+r):this.moveDirection==="right"&&(a=i.globals.minX-r,s=i.globals.maxX-r),a=Math.floor(a),s=Math.floor(s),this.updateScrolledChart({xaxis:{min:a,max:s}},a,s)}},{key:"panScrolled",value:function(i,a){var s=this.w,r=this.xyRatios,n=P.clone(s.globals.initialConfig.yaxis),o=r.xRatio,h=s.globals.minX,c=s.globals.maxX;s.globals.isRangeBar&&(o=r.invertedYRatio,h=s.globals.minY,c=s.globals.maxY),this.moveDirection==="left"?(i=h+s.globals.gridWidth/15*o,a=c+s.globals.gridWidth/15*o):this.moveDirection==="right"&&(i=h-s.globals.gridWidth/15*o,a=c-s.globals.gridWidth/15*o),s.globals.isRangeBar||(is.globals.initialMaxX)&&(i=h,a=c);var d={min:i,max:a};s.config.chart.zoom.autoScaleYaxis&&(n=new re(this.ctx).autoScaleY(this.ctx,n,{xaxis:d}));var u={xaxis:{min:i,max:a}};s.config.chart.group||(u.yaxis=n),this.updateScrolledChart(u,i,a)}},{key:"updateScrolledChart",value:function(i,a,s){var r=this.w;this.ctx.updateHelpers._updateOptions(i,!1,!1),typeof r.config.chart.events.scrolled=="function"&&r.config.chart.events.scrolled(this.ctx,{xaxis:{min:a,max:s}})}}]),t}(),et=function(){function m(e){F(this,m),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return R(m,[{key:"getNearestValues",value:function(e){var t=e.hoverArea,i=e.elGrid,a=e.clientX,s=e.clientY,r=this.w,n=i.getBoundingClientRect(),o=n.width,h=n.height,c=o/(r.globals.dataPoints-1),d=h/r.globals.dataPoints,u=this.hasBars();!r.globals.comboCharts&&!u||r.config.xaxis.convertedCatToNumeric||(c=o/r.globals.dataPoints);var p=a-n.left-r.globals.barPadForNumericAxis,f=s-n.top;p<0||f<0||p>o||f>h?(t.classList.remove("hovering-zoom"),t.classList.remove("hovering-pan")):r.globals.zoomEnabled?(t.classList.remove("hovering-pan"),t.classList.add("hovering-zoom")):r.globals.panEnabled&&(t.classList.remove("hovering-zoom"),t.classList.add("hovering-pan"));var b=Math.round(p/c),v=Math.floor(f/d);u&&!r.config.xaxis.convertedCatToNumeric&&(b=Math.ceil(p/c),b-=1);var w=null,k=null,l=r.globals.seriesXvalues.map(function(S){return S.filter(function(L){return P.isNumber(L)})}),g=r.globals.seriesYvalues.map(function(S){return S.filter(function(L){return P.isNumber(L)})});if(r.globals.isXNumeric){var x=this.ttCtx.getElGrid().getBoundingClientRect(),y=p*(x.width/o),A=f*(x.height/h);w=(k=this.closestInMultiArray(y,A,l,g)).index,b=k.j,w!==null&&(l=r.globals.seriesXvalues[w],b=(k=this.closestInArray(y,l)).index)}return r.globals.capturedSeriesIndex=w===null?-1:w,(!b||b<1)&&(b=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=v:r.globals.capturedDataPointIndex=b,{capturedSeries:w,j:r.globals.isBarHorizontal?v:b,hoverX:p,hoverY:f}}},{key:"closestInMultiArray",value:function(e,t,i,a){var s=this.w,r=0,n=null,o=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):n=0;var h=i[r][0],c=Math.abs(e-h);if(i.forEach(function(p){p.forEach(function(f,b){var v=Math.abs(e-f);v<=c&&(c=v,o=b)})}),o!==-1){var d=a[r][o],u=Math.abs(t-d);n=r,a.forEach(function(p,f){var b=Math.abs(t-p[o]);b<=u&&(u=b,n=f)})}return{index:n,j:o}}},{key:"getFirstActiveXArray",value:function(e){for(var t=this.w,i=0,a=e.map(function(r,n){return r.length>0?n:-1}),s=0;s0)for(var a=0;a *")):this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap > *")}},{key:"getAllMarkers",value:function(){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap");(e=Z(e)).sort(function(i,a){var s=Number(i.getAttribute("data:realIndex")),r=Number(a.getAttribute("data:realIndex"));return rs?-1:0});var t=[];return e.forEach(function(i){t.push(i.querySelector(".apexcharts-marker"))}),t}},{key:"hasMarkers",value:function(e){return this.getElMarkers(e).length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(e){var t=this.w,i=t.config.markers.hover.size;return i===void 0&&(i=t.globals.markers.size[e]+t.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(e){var t=this.w,i=this.ttCtx;i.allTooltipSeriesGroups.length===0&&(i.allTooltipSeriesGroups=t.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s ').concat(S.attrs.name,""),A+="
".concat(S.val,"
")}),l.innerHTML=y+"",g.innerHTML=A+""};n?h.globals.seriesGoals[t][i]&&Array.isArray(h.globals.seriesGoals[t][i])?x():(l.innerHTML="",g.innerHTML=""):x()}else l.innerHTML="",g.innerHTML="";b!==null&&(a[t].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=h.config.tooltip.z.title,a[t].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=b!==void 0?b:""),n&&v[0]&&(d==null||h.globals.ancillaryCollapsedSeriesIndices.indexOf(t)>-1||h.globals.collapsedSeriesIndices.indexOf(t)>-1?v[0].parentNode.style.display="none":v[0].parentNode.style.display=h.config.tooltip.items.display)}},{key:"toggleActiveInactiveSeries",value:function(e){var t=this.w;if(e)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=t.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=t.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(e){var t=e.i,i=e.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",n="",o=null,h=null,c={series:a.globals.series,seriesIndex:t,dataPointIndex:i,w:a},d=a.globals.ttZFormatter;i===null?h=a.globals.series[t]:a.globals.isXNumeric&&a.config.chart.type!=="treemap"?(r=s[t][i],s[t].length===0&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=a.globals.labels[i]!==void 0?a.globals.labels[i]:"";var u=r;return a.globals.isXNumeric&&a.config.xaxis.type==="datetime"?r=new pe(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,u,u,{i:void 0,dateFormatter:new j(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](u,c):a.globals.xLabelFormatter(u,c),a.config.tooltip.x.formatter!==void 0&&(r=a.globals.ttKeyFormatter(u,c)),a.globals.seriesZ.length>0&&a.globals.seriesZ[t].length>0&&(o=d(a.globals.seriesZ[t][i],a)),n=typeof a.config.xaxis.tooltip.formatter=="function"?a.globals.xaxisTooltipFormatter(u,c):r,{val:Array.isArray(h)?h.join(" "):h,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(n)?n.join(" "):n,zVal:o}}},{key:"handleCustomTooltip",value:function(e){var t=e.i,i=e.j,a=e.y1,s=e.y2,r=e.w,n=this.ttCtx.getElTooltip(),o=r.config.tooltip.custom;Array.isArray(o)&&o[t]&&(o=o[t]),n.innerHTML=o({ctx:this.ctx,series:r.globals.series,seriesIndex:t,dataPointIndex:i,y1:a,y2:s,w:r})}}]),m}(),tt=function(){function m(e){F(this,m),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return R(m,[{key:"moveXCrosshairs",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=e-i.xcrosshairsWidth/2,n=a.globals.labels.slice().length;if(t!==null&&(r=a.globals.gridWidth/n*t),s===null||a.globals.isBarHorizontal||(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var o=r;a.config.xaxis.crosshairs.width!=="tickWidth"&&a.config.xaxis.crosshairs.width!=="barWidth"||(o=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:"moveYCrosshairs",value:function(e){var t=this.ttCtx;t.ycrosshairs!==null&&z.setAttrs(t.ycrosshairs,{y1:e,y2:e}),t.ycrosshairsHidden!==null&&z.setAttrs(t.ycrosshairsHidden,{y1:e,y2:e})}},{key:"moveXAxisTooltip",value:function(e){var t=this.w,i=this.ttCtx;if(i.xaxisTooltip!==null&&i.xcrosshairsWidth!==0){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+t.config.xaxis.tooltip.offsetY+t.globals.translateY+1+t.config.xaxis.offsetY;if(e-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(e)){e+=t.globals.translateX;var s;s=new z(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=e+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(e){var t=this.w,i=this.ttCtx;i.yaxisTTEls===null&&(i.yaxisTTEls=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=t.globals.translateY+a,r=i.yaxisTTEls[e].getBoundingClientRect().height,n=t.globals.translateYAxisX[e]-2;t.config.yaxis[e].opposite&&(n-=26),s-=r/2,t.globals.ignoreYAxisIndexes.indexOf(e)===-1?(i.yaxisTTEls[e].classList.add("apexcharts-active"),i.yaxisTTEls[e].style.top=s+"px",i.yaxisTTEls[e].style.left=n+t.config.yaxis[e].tooltip.offsetX+"px"):i.yaxisTTEls[e].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),n=s.tooltipRect,o=i!==null?parseFloat(i):1,h=parseFloat(e)+o+5,c=parseFloat(t)+o/2;if(h>a.globals.gridWidth/2&&(h=h-n.ttWidth-o-10),h>a.globals.gridWidth-n.ttWidth-10&&(h=a.globals.gridWidth-n.ttWidth),h<-20&&(h=-20),a.config.tooltip.followCursor){var d=s.getElGrid().getBoundingClientRect();(h=s.e.clientX-d.left)>a.globals.gridWidth/2&&(h-=s.tooltipRect.ttWidth),(c=s.e.clientY+a.globals.translateY-d.top)>a.globals.gridHeight/2&&(c-=s.tooltipRect.ttHeight)}else a.globals.isBarHorizontal||n.ttHeight/2+c>a.globals.gridHeight&&(c=a.globals.gridHeight-n.ttHeight+a.globals.translateY);isNaN(h)||(h+=a.globals.translateX,r.style.left=h+"px",r.style.top=c+"px")}},{key:"moveMarkers",value:function(e,t){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[e]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(e,"'] .apexcharts-marker")),r=0;r0&&(c.setAttribute("r",o),c.setAttribute("cx",i),c.setAttribute("cy",a)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,a,o)}}},{key:"moveDynamicPointsOnHover",value:function(e){var t,i=this.ttCtx,a=i.w,s=0,r=0,n=a.globals.pointsArray;t=new $(this.ctx).getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var o=i.tooltipUtil.getHoverMarkerSize(t);n[t]&&(s=n[t][e][0],r=n[t][e][1]);var h=i.tooltipUtil.getAllMarkers();if(h!==null)for(var c=0;c0?(h[c]&&h[c].setAttribute("r",o),h[c]&&h[c].setAttribute("cy",u)):h[c]&&h[c].setAttribute("r",0)}}this.moveXCrosshairs(s),i.fixedTooltip||this.moveTooltip(s,r||a.globals.gridHeight,o)}},{key:"moveStickyTooltipOverBars",value:function(e,t){var i=this.w,a=this.ttCtx,s=i.globals.columnSeries?i.globals.columnSeries.length:i.globals.series.length,r=s>=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1;i.globals.isBarHorizontal&&(r=new $(this.ctx).getActiveConfigSeriesIndex("desc")+1);var n=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(r,"'] path[j='").concat(e,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(e,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(e,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(e,"']"));n||typeof t!="number"||(n=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[data\\:realIndex='".concat(t,"'] path[j='").concat(e,`'], + .apexcharts-candlestick-series .apexcharts-series[data\\:realIndex='`).concat(t,"'] path[j='").concat(e,`'], + .apexcharts-boxPlot-series .apexcharts-series[data\\:realIndex='`).concat(t,"'] path[j='").concat(e,`'], + .apexcharts-rangebar-series .apexcharts-series[data\\:realIndex='`).concat(t,"'] path[j='").concat(e,"']")));var o=n?parseFloat(n.getAttribute("cx")):0,h=n?parseFloat(n.getAttribute("cy")):0,c=n?parseFloat(n.getAttribute("barWidth")):0,d=a.getElGrid().getBoundingClientRect(),u=n&&(n.classList.contains("apexcharts-candlestick-area")||n.classList.contains("apexcharts-boxPlot-area"));i.globals.isXNumeric?(n&&!u&&(o-=s%2!=0?c/2:0),n&&u&&i.globals.comboCharts&&(o-=c/2)):i.globals.isBarHorizontal||(o=a.xAxisTicksPositions[e-1]+a.dataPointsDividedWidth/2,isNaN(o)&&(o=a.xAxisTicksPositions[e]-a.dataPointsDividedWidth/2)),i.globals.isBarHorizontal?h-=a.tooltipRect.ttHeight:i.config.tooltip.followCursor?h=a.e.clientY-d.top-a.tooltipRect.ttHeight/2:h+a.tooltipRect.ttHeight+15>i.globals.gridHeight&&(h=i.globals.gridHeight),i.globals.isBarHorizontal||this.moveXCrosshairs(o),a.fixedTooltip||this.moveTooltip(o,h||i.globals.gridHeight)}}]),m}(),Yt=function(){function m(e){F(this,m),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new tt(e)}return R(m,[{key:"drawDynamicPoints",value:function(){var e=this.w,t=new z(this.ctx),i=new fe(this.ctx),a=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series");a=Z(a),e.config.chart.stacked&&a.sort(function(d,u){return parseFloat(d.getAttribute("data:realIndex"))-parseFloat(u.getAttribute("data:realIndex"))});for(var s=0;s2&&arguments[2]!==void 0?arguments[2]:null,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=this.w;s.config.chart.type!=="bubble"&&this.newPointSize(e,t);var r=t.getAttribute("cx"),n=t.getAttribute("cy");if(i!==null&&a!==null&&(r=i,n=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if(s.config.chart.type==="radar"){var o=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-o.left}this.tooltipPosition.moveTooltip(r,n,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(e){for(var t=this.w,i=this,a=this.ttCtx,s=e,r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),n=t.config.markers.hover.size,o=0;o=0?e[t].setAttribute("r",i):e[t].setAttribute("r",0)}}}]),m}(),Ft=function(){function m(e){F(this,m),this.w=e.w;var t=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!t.globals.isBarHorizontal&&t.config.chart.type==="rangeBar"&&t.config.plotOptions.bar.rangeBarGroupRows}return R(m,[{key:"getAttr",value:function(e,t){return parseFloat(e.target.getAttribute(t))}},{key:"handleHeatTreeTooltip",value:function(e){var t=e.e,i=e.opt,a=e.x,s=e.y,r=e.type,n=this.ttCtx,o=this.w;if(t.target.classList.contains("apexcharts-".concat(r,"-rect"))){var h=this.getAttr(t,"i"),c=this.getAttr(t,"j"),d=this.getAttr(t,"cx"),u=this.getAttr(t,"cy"),p=this.getAttr(t,"width"),f=this.getAttr(t,"height");if(n.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:h,j:c,shared:!1,e:t}),o.globals.capturedSeriesIndex=h,o.globals.capturedDataPointIndex=c,a=d+n.tooltipRect.ttWidth/2+p,s=u+n.tooltipRect.ttHeight/2-f/2,n.tooltipPosition.moveXCrosshairs(d+p/2),a>o.globals.gridWidth/2&&(a=d-n.tooltipRect.ttWidth/2+p),n.w.config.tooltip.followCursor){var b=o.globals.dom.elWrap.getBoundingClientRect();a=o.globals.clientX-b.left-(a>o.globals.gridWidth/2?n.tooltipRect.ttWidth:0),s=o.globals.clientY-b.top-(s>o.globals.gridHeight/2?n.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(e){var t,i,a=e.e,s=e.opt,r=e.x,n=e.y,o=this.w,h=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var c=parseInt(s.paths.getAttribute("cx"),10),d=parseInt(s.paths.getAttribute("cy"),10),u=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),t=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,h.intersect){var p=P.findAncestor(s.paths,"apexcharts-series");p&&(t=parseInt(p.getAttribute("data:realIndex"),10))}if(h.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:t,j:i,shared:!h.showOnIntersect&&o.config.tooltip.shared,e:a}),a.type==="mouseup"&&h.markerClick(a,t,i),o.globals.capturedSeriesIndex=t,o.globals.capturedDataPointIndex=i,r=c,n=d+o.globals.translateY-1.4*h.tooltipRect.ttHeight,h.w.config.tooltip.followCursor){var f=h.getElGrid().getBoundingClientRect();n=h.e.clientY+o.globals.translateY-f.top}u<0&&(n=d),h.marker.enlargeCurrentPoint(i,s.paths,r,n)}return{x:r,y:n}}},{key:"handleBarTooltip",value:function(e){var t,i,a=e.e,s=e.opt,r=this.w,n=this.ttCtx,o=n.getElTooltip(),h=0,c=0,d=0,u=this.getBarTooltipXY({e:a,opt:s});t=u.i;var p=u.barHeight,f=u.j;r.globals.capturedSeriesIndex=t,r.globals.capturedDataPointIndex=f,r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||!r.config.tooltip.shared?(c=u.x,d=u.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[t]:r.config.stroke.width,h=c):r.globals.comboCharts||r.config.tooltip.shared||(h/=2),isNaN(d)&&(d=r.globals.svgHeight-n.tooltipRect.ttHeight);var b=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),v=r.globals.isMultipleYAxis?r.config.yaxis[b]&&r.config.yaxis[b].reversed:r.config.yaxis[0].reversed;if(c+n.tooltipRect.ttWidth>r.globals.gridWidth&&!v?c-=n.tooltipRect.ttWidth:c<0&&(c=0),n.w.config.tooltip.followCursor){var w=n.getElGrid().getBoundingClientRect();d=n.e.clientY-w.top}n.tooltip===null&&(n.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?n.tooltipPosition.moveXCrosshairs(h+i/2):n.tooltipPosition.moveXCrosshairs(h)),!n.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars())&&(v&&(c-=n.tooltipRect.ttWidth)<0&&(c=0),!v||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||(d=d+p-2*(r.globals.series[t][f]<0?p:0)),d=d+r.globals.translateY-n.tooltipRect.ttHeight/2,o.style.left=c+r.globals.translateX+"px",o.style.top=d+"px")}},{key:"getBarTooltipXY",value:function(e){var t=this,i=e.e,a=e.opt,s=this.w,r=null,n=this.ttCtx,o=0,h=0,c=0,d=0,u=0,p=i.target.classList;if(p.contains("apexcharts-bar-area")||p.contains("apexcharts-candlestick-area")||p.contains("apexcharts-boxPlot-area")||p.contains("apexcharts-rangebar-area")){var f=i.target,b=f.getBoundingClientRect(),v=a.elGrid.getBoundingClientRect(),w=b.height;u=b.height;var k=b.width,l=parseInt(f.getAttribute("cx"),10),g=parseInt(f.getAttribute("cy"),10);d=parseFloat(f.getAttribute("barWidth"));var x=i.type==="touchmove"?i.touches[0].clientX:i.clientX;r=parseInt(f.getAttribute("j"),10),o=parseInt(f.parentNode.getAttribute("rel"),10)-1;var y=f.getAttribute("data-range-y1"),A=f.getAttribute("data-range-y2");s.globals.comboCharts&&(o=parseInt(f.parentNode.getAttribute("data:realIndex"),10));var S=function(C){return s.globals.isXNumeric?l-k/2:t.isVerticalGroupedRangeBar?l+k/2:l-n.dataPointsDividedWidth+k/2},L=function(){return g-n.dataPointsDividedHeight+w/2-n.tooltipRect.ttHeight/2};n.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:o,j:r,y1:y?parseInt(y,10):null,y2:A?parseInt(A,10):null,shared:!n.showOnIntersect&&s.config.tooltip.shared,e:i}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(h=x-v.left+15,c=L()):(h=S(),c=i.clientY-v.top-n.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((h=l)0&&i.setAttribute("width",t.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var e=this.w,t=this.ttCtx;t.ycrosshairs=e.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),t.ycrosshairsHidden=e.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(e,t,i){var a=this.ttCtx,s=this.w,r=s.globals.yLabelFormatters[e];if(a.yaxisTooltips[e]){var n=a.getElGrid().getBoundingClientRect(),o=(t-n.top)*i.yRatio[e],h=s.globals.maxYArr[e]-s.globals.minYArr[e],c=s.globals.minYArr[e]+(h-o);a.tooltipPosition.moveYCrosshairs(t-n.top),a.yaxisTooltipText[e].innerHTML=r(c),a.tooltipPosition.moveYAxisTooltip(e)}}}]),m}(),Ne=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w;var t=this.w;this.tConfig=t.config.tooltip,this.tooltipUtil=new et(this),this.tooltipLabels=new Et(this),this.tooltipPosition=new tt(this),this.marker=new Yt(this),this.intersect=new Ft(this),this.axesTooltip=new Rt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!t.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return R(m,[{key:"getElTooltip",value:function(e){return e||(e=this),e.w.globals.dom.baseEl?e.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(e){var t=this.w;this.xyRatios=e,this.isXAxisTooltipEnabled=t.config.xaxis.tooltip.enabled&&t.globals.axisCharts,this.yaxisTooltips=t.config.yaxis.map(function(r,n){return!!(r.show&&r.tooltip.enabled&&t.globals.axisCharts)}),this.allTooltipSeriesGroups=[],t.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),t.config.tooltip.cssClass&&i.classList.add(t.config.tooltip.cssClass),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),t.globals.dom.elWrap.appendChild(i),t.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new de(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!t.globals.comboCharts&&!this.tConfig.intersect&&t.config.chart.type!=="rangeBar"||this.tConfig.shared||(this.showOnIntersect=!0),t.config.markers.size!==0&&t.globals.markers.largestSize!==0||this.marker.drawDynamicPoints(this),t.globals.collapsedSeries.length!==t.globals.series.length){this.dataPointsDividedHeight=t.globals.gridHeight/t.globals.dataPoints,this.dataPointsDividedWidth=t.globals.gridWidth/t.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||t.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=t.globals.series.length;(t.globals.xyCharts||t.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:t.globals.series.length),this.legendLabels=t.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(e){for(var t=this,i=this.w,a=[],s=this.getElTooltip(),r=function(o){var h=document.createElement("div");h.classList.add("apexcharts-tooltip-series-group"),h.style.order=i.config.tooltip.inverseOrder?e-o:o+1,t.tConfig.shared&&t.tConfig.enabledOnSeries&&Array.isArray(t.tConfig.enabledOnSeries)&&t.tConfig.enabledOnSeries.indexOf(o)<0&&h.classList.add("apexcharts-tooltip-series-group-hidden");var c=document.createElement("span");c.classList.add("apexcharts-tooltip-marker"),c.style.backgroundColor=i.globals.colors[o],h.appendChild(c);var d=document.createElement("div");d.classList.add("apexcharts-tooltip-text"),d.style.fontFamily=t.tConfig.style.fontFamily||i.config.chart.fontFamily,d.style.fontSize=t.tConfig.style.fontSize,["y","goals","z"].forEach(function(u){var p=document.createElement("div");p.classList.add("apexcharts-tooltip-".concat(u,"-group"));var f=document.createElement("span");f.classList.add("apexcharts-tooltip-text-".concat(u,"-label")),p.appendChild(f);var b=document.createElement("span");b.classList.add("apexcharts-tooltip-text-".concat(u,"-value")),p.appendChild(b),d.appendChild(p)}),h.appendChild(d),s.appendChild(h),a.push(h)},n=0;n0&&this.addPathsEventListeners(f,d),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(d)}}},{key:"drawFixedTooltipRect",value:function(){var e=this.w,t=this.getElTooltip(),i=t.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,n=this.tConfig.fixed.offsetY,o=this.tConfig.fixed.position.toLowerCase();return o.indexOf("right")>-1&&(r=r+e.globals.svgWidth-a+10),o.indexOf("bottom")>-1&&(n=n+e.globals.svgHeight-s-10),t.style.left=r+"px",t.style.top=n+"px",{x:r,y:n,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(e){var t=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(t,e)}},{key:"addPathsEventListeners",value:function(e,t){for(var i=this,a=function(r){var n={paths:e[r],tooltipEl:t.tooltipEl,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:t.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map(function(o){return e[r].addEventListener(o,i.onSeriesHover.bind(i,n),{capture:!1,passive:!0})})},s=0;s=100?this.seriesHover(e,t):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout(function(){i.seriesHover(e,t)},100-a))}},{key:"seriesHover",value:function(e,t){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||s.globals.dataPoints===0)||(a.length?a.forEach(function(r){var n=i.getElTooltip(r),o={paths:e.paths,tooltipEl:n,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:r.w.globals.tooltip.ttItems};r.w.globals.minX===i.w.globals.minX&&r.w.globals.maxX===i.w.globals.maxX&&r.w.globals.tooltip.seriesHoverByContext({chartCtx:r,ttCtx:r.w.globals.tooltip,opt:o,e:t})}):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:e,e:t}))}},{key:"seriesHoverByContext",value:function(e){var t=e.chartCtx,i=e.ttCtx,a=e.opt,s=e.e,r=t.w,n=this.getElTooltip();n&&(i.tooltipRect={x:0,y:0,ttWidth:n.getBoundingClientRect().width,ttHeight:n.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared&&this.tConfig.onDatasetHover.highlightDataSeries&&new $(t).toggleSeriesOnHover(s,s.target.parentNode),i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}))}},{key:"axisChartsTooltips",value:function(e){var t,i,a=e.e,s=e.opt,r=this.w,n=s.elGrid.getBoundingClientRect(),o=a.type==="touchmove"?a.touches[0].clientX:a.clientX,h=a.type==="touchmove"?a.touches[0].clientY:a.clientY;if(this.clientY=h,this.clientX=o,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,hn.top+n.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var c=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(c)<0)return void this.handleMouseOut(s)}var d=this.getElTooltip(),u=this.getElXCrosshairs(),p=r.globals.xyCharts||r.config.chart.type==="bar"&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if(a.type==="mousemove"||a.type==="touchmove"||a.type==="mouseup"){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;u!==null&&u.classList.add("apexcharts-active");var f=this.yaxisTooltips.filter(function(w){return w===!0});if(this.ycrosshairs!==null&&f.length&&this.ycrosshairs.classList.add("apexcharts-active"),p&&!this.showOnIntersect)this.handleStickyTooltip(a,o,h,s);else if(r.config.chart.type==="heatmap"||r.config.chart.type==="treemap"){var b=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:t,y:i,type:r.config.chart.type});t=b.x,i=b.y,d.style.left=t+"px",d.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:t,y:i});if(this.yaxisTooltips.length)for(var v=0;vh.width)this.handleMouseOut(a);else if(o!==null)this.handleStickyCapturedSeries(e,o,a,n);else if(this.tooltipUtil.isXoverlap(n)||s.globals.isBarHorizontal){var c=s.globals.series.findIndex(function(d,u){return!s.globals.collapsedSeriesIndices.includes(u)});this.create(e,this,c,n,a.ttItems)}}},{key:"handleStickyCapturedSeries",value:function(e,t,i,a){var s=this.w;if(!this.tConfig.shared&&s.globals.series[t][a]===null)return void this.handleMouseOut(i);if(s.globals.series[t][a]!==void 0)this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(e,this,t,a,i.ttItems):this.create(e,this,t,a,i.ttItems,!1);else if(this.tooltipUtil.isXoverlap(a)){var r=s.globals.series.findIndex(function(n,o){return!s.globals.collapsedSeriesIndices.includes(o)});this.create(e,this,r,a,i.ttItems)}}},{key:"deactivateHoverFilter",value:function(){for(var e=this.w,t=new z(this.ctx),i=e.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&arguments[5]!==void 0?arguments[5]:null,A=this.w,S=t;e.type==="mouseup"&&this.markerClick(e,i,a),y===null&&(y=this.tConfig.shared);var L=this.tooltipUtil.hasMarkers(i),C=this.tooltipUtil.getElBars();if(A.config.legend.tooltipHoverFormatter){var M=A.config.legend.tooltipHoverFormatter,T=Array.from(this.legendLabels);T.forEach(function(J){var te=J.getAttribute("data:default-text");J.innerHTML=decodeURIComponent(te)});for(var I=0;I0?S.marker.enlargePoints(a):S.tooltipPosition.moveDynamicPointsOnHover(a);else if(this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(C),this.barSeriesHeight>0)){var W=new z(this.ctx),N=A.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(a,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a,i);for(var B=0;B0&&a.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(f-=d*A)),y&&(f=f+p.height/2-l/2-2);var L=this.barCtx.series[s][r]<0,C=h;switch(this.barCtx.isReversed&&(C=h-u+(L?2*u:0),h-=u),w.position){case"center":b=y?L?C-u/2+x:C+u/2-x:L?C-u/2+p.height/2+x:C+u/2+p.height/2-x;break;case"bottom":b=y?L?C-u+x:C+u-x:L?C-u+p.height+l+x:C+u-p.height/2+l-x;break;case"top":b=y?L?C+x:C-x:L?C-p.height/2-x:C+p.height+x}if(this.barCtx.lastActiveBarSerieIndex===n&&k.enabled){var M=new z(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:n,j:r}),v.fontSize);t=L?C-M.height/2-x-k.offsetY+18:C+M.height+x+k.offsetY-18,i=f+k.offsetX}return a.config.chart.stacked||(b<0?b=0+l:b+p.height/3>a.globals.gridHeight&&(b=a.globals.gridHeight-l)),{bcx:c,bcy:h,dataLabelsX:f,dataLabelsY:b,totalDataLabelsX:i,totalDataLabelsY:t,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(e){var t=this.w,i=e.x,a=e.i,s=e.j,r=e.realIndex,n=e.groupIndex,o=e.bcy,h=e.barHeight,c=e.barWidth,d=e.textRects,u=e.dataLabelsX,p=e.strokeWidth,f=e.dataLabelsConfig,b=e.barDataLabelsConfig,v=e.barTotalDataLabelsConfig,w=e.offX,k=e.offY,l=t.globals.gridHeight/t.globals.dataPoints;c=Math.abs(c);var g,x,y=(o+=n!==-1?n*h:0)-(this.barCtx.isRangeBar?0:l)+h/2+d.height/2+k-3,A="start",S=this.barCtx.series[a][s]<0,L=i;switch(this.barCtx.isReversed&&(L=i+c-(S?2*c:0),i=t.globals.gridWidth-c),b.position){case"center":u=S?L+c/2-w:Math.max(d.width/2,L-c/2)+w;break;case"bottom":u=S?L+c-p-Math.round(d.width/2)-w:L-c+p+Math.round(d.width/2)+w;break;case"top":u=S?L-p+Math.round(d.width/2)-w:L-p-Math.round(d.width/2)+w}if(this.barCtx.lastActiveBarSerieIndex===r&&v.enabled){var C=new z(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),f.fontSize);S?(g=L-p+Math.round(C.width/2)-w-v.offsetX-15,A="end"):g=L-p-Math.round(C.width/2)+w+v.offsetX+15,x=y+v.offsetY}return t.config.chart.stacked||(u<0?u=u+d.width+p:u+d.width/2>t.globals.gridWidth&&(u=t.globals.gridWidth-d.width-p)),{bcx:i,bcy:o,dataLabelsX:u,dataLabelsY:y,totalDataLabelsX:g,totalDataLabelsY:x,totalDataLabelsAnchor:A}}},{key:"drawCalculatedDataLabels",value:function(e){var t=e.x,i=e.y,a=e.val,s=e.i,r=e.j,n=e.textRects,o=e.barHeight,h=e.barWidth,c=e.dataLabelsConfig,d=this.w,u="rotate(0)";d.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(u="rotate(-90, ".concat(t,", ").concat(i,")"));var p=new se(this.barCtx.ctx),f=new z(this.barCtx.ctx),b=c.formatter,v=null,w=d.globals.collapsedSeriesIndices.indexOf(s)>-1;if(c.enabled&&!w){v=f.group({class:"apexcharts-data-labels",transform:u});var k="";a!==void 0&&(k=b(a,E(E({},d),{},{seriesIndex:s,dataPointIndex:r,w:d}))),!a&&d.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(k="");var l=d.globals.series[s][r]<0,g=d.config.plotOptions.bar.dataLabels.position;d.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(g==="top"&&(c.textAnchor=l?"end":"start"),g==="center"&&(c.textAnchor="middle"),g==="bottom"&&(c.textAnchor=l?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels&&hMath.abs(h)&&(k=""):n.height/1.6>Math.abs(o)&&(k=""));var x=E({},c);this.barCtx.isHorizontal&&a<0&&(c.textAnchor==="start"?x.textAnchor="end":c.textAnchor==="end"&&(x.textAnchor="start")),p.plotDataLabelsText({x:t,y:i,text:k,i:s,j:r,parent:v,dataLabelsConfig:x,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return v}},{key:"drawTotalDataLabels",value:function(e){var t,i=e.x,a=e.y,s=e.val,r=e.realIndex,n=e.textAnchor,o=e.barTotalDataLabelsConfig,h=new z(this.barCtx.ctx);return o.enabled&&i!==void 0&&a!==void 0&&this.barCtx.lastActiveBarSerieIndex===r&&(t=h.drawText({x:i,y:a,foreColor:o.style.color,text:s,textAnchor:n,fontFamily:o.style.fontFamily,fontSize:o.style.fontSize,fontWeight:o.style.fontWeight})),t}}]),m}(),Dt=function(){function m(e){F(this,m),this.w=e.w,this.barCtx=e}return R(m,[{key:"initVariables",value:function(e){var t=this.w;this.barCtx.series=e,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=e[i].length),t.globals.isXNumeric)for(var a=0;at.globals.minX&&t.globals.seriesX[i][a]0&&(a=h.globals.minXDiff/u),(r=a/d*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}String(this.barCtx.barOptions.columnWidth).indexOf("%")===-1&&(r=parseInt(this.barCtx.barOptions.columnWidth,10)),n=h.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?h.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),e=h.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return{x:e,y:t,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:n,zeroW:o}}},{key:"initializeStackedPrevVars",value:function(e){var t=e.w;t.globals.hasSeriesGroups?t.globals.seriesGroups.forEach(function(i){e[i]||(e[i]={}),e[i].prevY=[],e[i].prevX=[],e[i].prevYF=[],e[i].prevXF=[],e[i].prevYVal=[],e[i].prevXVal=[]}):(e.prevY=[],e.prevX=[],e.prevYF=[],e.prevXF=[],e.prevYVal=[],e.prevXVal=[])}},{key:"initializeStackedXYVars",value:function(e){var t=e.w;t.globals.hasSeriesGroups?t.globals.seriesGroups.forEach(function(i){e[i]||(e[i]={}),e[i].xArrj=[],e[i].xArrjF=[],e[i].xArrjVal=[],e[i].yArrj=[],e[i].yArrjF=[],e[i].yArrjVal=[]}):(e.xArrj=[],e.xArrjF=[],e.xArrjVal=[],e.yArrj=[],e.yArrjF=[],e.yArrjVal=[])}},{key:"getPathFillColor",value:function(e,t,i,a){var s,r,n,o,h=this.w,c=new Q(this.barCtx.ctx),d=null,u=this.barCtx.barOptions.distributed?i:t;return this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map(function(p){e[t][i]>=p.from&&e[t][i]<=p.to&&(d=p.color)}),h.config.series[t].data[i]&&h.config.series[t].data[i].fillColor&&(d=h.config.series[t].data[i].fillColor),c.fillPath({seriesNumber:this.barCtx.barOptions.distributed?u:a,dataPointIndex:i,color:d,value:e[t][i],fillConfig:(s=h.config.series[t].data[i])===null||s===void 0?void 0:s.fill,fillType:(r=h.config.series[t].data[i])!==null&&r!==void 0&&(n=r.fill)!==null&&n!==void 0&&n.type?(o=h.config.series[t].data[i])===null||o===void 0?void 0:o.fill.type:h.config.fill.type})}},{key:"getStrokeWidth",value:function(e,t,i){var a=0,s=this.w;return this.barCtx.series[e][t]?this.barCtx.isNullValue=!1:this.barCtx.isNullValue=!0,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"shouldApplyRadius",value:function(e){var t=this.w,i=!1;return t.config.plotOptions.bar.borderRadius>0&&(t.config.chart.stacked&&t.config.plotOptions.bar.borderRadiusWhenStacked==="last"?this.barCtx.lastActiveBarSerieIndex===e&&(i=!0):i=!0),i}},{key:"barBackground",value:function(e){var t=e.j,i=e.i,a=e.x1,s=e.x2,r=e.y1,n=e.y2,o=e.elSeries,h=this.w,c=new z(this.barCtx.ctx),d=new $(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&d===i){t>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(t%=this.barCtx.barOptions.colors.backgroundBarColors.length);var u=this.barCtx.barOptions.colors.backgroundBarColors[t],p=c.drawRect(a!==void 0?a:0,r!==void 0?r:0,s!==void 0?s:h.globals.gridWidth,n!==void 0?n:h.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,u,this.barCtx.barOptions.colors.backgroundBarOpacity);o.add(p),p.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(e){var t,i=e.barWidth,a=e.barXPosition,s=e.y1,r=e.y2,n=e.strokeWidth,o=e.seriesGroup,h=e.realIndex,c=e.i,d=e.j,u=e.w,p=new z(this.barCtx.ctx);(n=Array.isArray(n)?n[h]:n)||(n=0);var f=i,b=a;(t=u.config.series[h].data[d])!==null&&t!==void 0&&t.columnWidthOffset&&(b=a-u.config.series[h].data[d].columnWidthOffset/2,f=i+u.config.series[h].data[d].columnWidthOffset);var v=b,w=b+f;s+=.001,r+=.001;var k=p.move(v,s),l=p.move(v,s),g=p.line(w-n,s);if(u.globals.previousPaths.length>0&&(l=this.barCtx.getPreviousPath(h,d,!1)),k=k+p.line(v,r)+p.line(w-n,r)+p.line(w-n,s)+(u.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),l=l+p.line(v,s)+g+g+g+g+g+p.line(v,s)+(u.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),this.shouldApplyRadius(h)&&(k=p.roundPathCorners(k,u.config.plotOptions.bar.borderRadius)),u.config.chart.stacked){var x=this.barCtx;u.globals.hasSeriesGroups&&o&&(x=this.barCtx[o]),x.yArrj.push(r),x.yArrjF.push(Math.abs(s-r)),x.yArrjVal.push(this.barCtx.series[c][d])}return{pathTo:k,pathFrom:l}}},{key:"getBarpaths",value:function(e){var t,i=e.barYPosition,a=e.barHeight,s=e.x1,r=e.x2,n=e.strokeWidth,o=e.seriesGroup,h=e.realIndex,c=e.i,d=e.j,u=e.w,p=new z(this.barCtx.ctx);(n=Array.isArray(n)?n[h]:n)||(n=0);var f=i,b=a;(t=u.config.series[h].data[d])!==null&&t!==void 0&&t.barHeightOffset&&(f=i-u.config.series[h].data[d].barHeightOffset/2,b=a+u.config.series[h].data[d].barHeightOffset);var v=f,w=f+b;s+=.001,r+=.001;var k=p.move(s,v),l=p.move(s,v);u.globals.previousPaths.length>0&&(l=this.barCtx.getPreviousPath(h,d,!1));var g=p.line(s,w-n);if(k=k+p.line(r,v)+p.line(r,w-n)+g+(u.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),l=l+p.line(s,v)+g+g+g+g+g+p.line(s,v)+(u.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),this.shouldApplyRadius(h)&&(k=p.roundPathCorners(k,u.config.plotOptions.bar.borderRadius)),u.config.chart.stacked){var x=this.barCtx;u.globals.hasSeriesGroups&&o&&(x=this.barCtx[o]),x.xArrj.push(r),x.xArrjF.push(Math.abs(s-r)),x.xArrjVal.push(this.barCtx.series[c][d])}return{pathTo:k,pathFrom:l}}},{key:"checkZeroSeries",value:function(e){for(var t=e.series,i=this.w,a=0;a2&&arguments[2]!==void 0)||arguments[2]?t:null;return e!=null&&(i=t+e/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?e/this.barCtx.invertedYRatio:0)),i}},{key:"getYForValue",value:function(e,t){var i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2]?t:null;return e!=null&&(i=t-e/this.barCtx.yRatio[this.barCtx.yaxisIndex]+2*(this.barCtx.isReversed?e/this.barCtx.yRatio[this.barCtx.yaxisIndex]:0)),i}},{key:"getGoalValues",value:function(e,t,i,a,s){var r=this,n=this.w,o=[],h=function(u,p){var f;o.push((ee(f={},e,e==="x"?r.getXForValue(u,t,!1):r.getYForValue(u,i,!1)),ee(f,"attrs",p),f))};if(n.globals.seriesGoals[a]&&n.globals.seriesGoals[a][s]&&Array.isArray(n.globals.seriesGoals[a][s])&&n.globals.seriesGoals[a][s].forEach(function(u){h(u.value,u)}),this.barCtx.barOptions.isDumbbell&&n.globals.seriesRange.length){var c=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:n.globals.colors,d={strokeHeight:e==="x"?0:n.globals.markers.size[a],strokeWidth:e==="x"?n.globals.markers.size[a]:0,strokeDashArray:0,strokeLineCap:"round",strokeColor:Array.isArray(c[a])?c[a][0]:c[a]};h(n.globals.seriesRangeStart[a][s],d),h(n.globals.seriesRangeEnd[a][s],E(E({},d),{},{strokeColor:Array.isArray(c[a])?c[a][1]:c[a]}))}return o}},{key:"drawGoalLine",value:function(e){var t=e.barXPosition,i=e.barYPosition,a=e.goalX,s=e.goalY,r=e.barWidth,n=e.barHeight,o=new z(this.barCtx.ctx),h=o.group({className:"apexcharts-bar-goals-groups"});h.node.classList.add("apexcharts-element-hidden"),this.barCtx.w.globals.delayedElements.push({el:h.node}),h.attr("clip-path","url(#gridRectMarkerMask".concat(this.barCtx.w.globals.cuid,")"));var c=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach(function(d){var u=d.attrs.strokeHeight!==void 0?d.attrs.strokeHeight:n/2,p=i+u+n/2;c=o.drawLine(d.x,p-2*u,d.x,p,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeWidth?d.attrs.strokeWidth:2,d.attrs.strokeLineCap),h.add(c)}):Array.isArray(s)&&s.forEach(function(d){var u=d.attrs.strokeWidth!==void 0?d.attrs.strokeWidth:r/2,p=t+u+r/2;c=o.drawLine(p-2*u,d.y,p,d.y,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeHeight?d.attrs.strokeHeight:2,d.attrs.strokeLineCap),h.add(c)}),h}},{key:"drawBarShadow",value:function(e){var t=e.prevPaths,i=e.currPaths,a=e.color,s=this.w,r=t.x,n=t.x1,o=t.barYPosition,h=i.x,c=i.x1,d=i.barYPosition,u=o+i.barHeight,p=new z(this.barCtx.ctx),f=new P,b=p.move(n,u)+p.line(r,u)+p.line(h,d)+p.line(c,d)+p.line(n,u)+(s.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z");return p.drawPath({d:b,fill:f.shadeColor(.5,P.rgb2hex(a)),stroke:"none",strokeWidth:0,fillOpacity:1,classes:"apexcharts-bar-shadows"})}},{key:"getZeroValueEncounters",value:function(e){var t=e.i,i=e.j,a=this.w,s=0,r=0;return a.globals.seriesPercent.forEach(function(n,o){n[i]&&s++,othis.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts");for(var n=0,o=0;n0&&(this.visibleI=this.visibleI+1);var l=0,g=0;this.yRatio.length>1&&(this.yaxisIndex=w),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var x=this.barHelpers.initialPositions();f=x.y,l=x.barHeight,c=x.yDivision,u=x.zeroW,p=x.x,g=x.barWidth,h=x.xDivision,d=x.zeroH,this.horizontal||v.push(p+g/2);var y=a.group({class:"apexcharts-datalabels","data:realIndex":w});i.globals.delayedElements.push({el:y.node}),y.node.classList.add("apexcharts-element-hidden");var A=a.group({class:"apexcharts-bar-goals-markers"}),S=a.group({class:"apexcharts-bar-shadows"});i.globals.delayedElements.push({el:S.node}),S.node.classList.add("apexcharts-element-hidden");for(var L=0;L0){var X=this.barHelpers.drawBarShadow({color:typeof I=="string"&&I?.indexOf("url")===-1?I:P.hexToRgba(i.globals.colors[n]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:M});X&&S.add(X)}this.pathArr.push(M);var Y=this.barHelpers.drawGoalLine({barXPosition:M.barXPosition,barYPosition:M.barYPosition,goalX:M.goalX,goalY:M.goalY,barHeight:l,barWidth:g});Y&&A.add(Y),f=M.y,p=M.x,L>0&&v.push(p+g/2),b.push(f),this.renderSeries({realIndex:w,pathFill:I,j:L,i:n,pathFrom:M.pathFrom,pathTo:M.pathTo,strokeWidth:C,elSeries:k,x:p,y:f,series:e,barHeight:M.barHeight?M.barHeight:l,barWidth:M.barWidth?M.barWidth:g,elDataLabelsWrap:y,elGoalsMarkers:A,elBarShadows:S,visibleSeries:this.visibleI,type:"bar"})}i.globals.seriesXvalues[w]=v,i.globals.seriesYvalues[w]=b,r.add(k)}return r}},{key:"renderSeries",value:function(e){var t=e.realIndex,i=e.pathFill,a=e.lineFill,s=e.j,r=e.i,n=e.groupIndex,o=e.pathFrom,h=e.pathTo,c=e.strokeWidth,d=e.elSeries,u=e.x,p=e.y,f=e.y1,b=e.y2,v=e.series,w=e.barHeight,k=e.barWidth,l=e.barXPosition,g=e.barYPosition,x=e.elDataLabelsWrap,y=e.elGoalsMarkers,A=e.elBarShadows,S=e.visibleSeries,L=e.type,C=this.w,M=new z(this.ctx);a||(a=this.barOptions.distributed?C.globals.stroke.colors[s]:C.globals.stroke.colors[t]),C.config.series[r].data[s]&&C.config.series[r].data[s].strokeColor&&(a=C.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var T=s/C.config.chart.animations.animateGradually.delay*(C.config.chart.animations.speed/C.globals.dataPoints)/2.4,I=M.renderPaths({i:r,j:s,realIndex:t,pathFrom:o,pathTo:h,stroke:a,strokeWidth:c,strokeLineCap:C.config.stroke.lineCap,fill:i,animationDelay:T,initialSpeed:C.config.chart.animations.speed,dataChangeSpeed:C.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(L,"-area")});I.attr("clip-path","url(#gridRectMask".concat(C.globals.cuid,")"));var X=C.config.forecastDataPoints;X.count>0&&s>=C.globals.dataPoints-X.count&&(I.node.setAttribute("stroke-dasharray",X.dashArray),I.node.setAttribute("stroke-width",X.strokeWidth),I.node.setAttribute("fill-opacity",X.fillOpacity)),f!==void 0&&b!==void 0&&(I.attr("data-range-y1",f),I.attr("data-range-y2",b)),new U(this.ctx).setSelectionFilter(I,t,s),d.add(I);var Y=new Ht(this).handleBarDataLabels({x:u,y:p,y1:f,y2:b,i:r,j:s,series:v,realIndex:t,groupIndex:n,barHeight:w,barWidth:k,barXPosition:l,barYPosition:g,renderedPath:I,visibleSeries:S});return Y.dataLabels!==null&&x.add(Y.dataLabels),Y.totalDataLabels&&x.add(Y.totalDataLabels),d.add(x),y&&d.add(y),A&&d.add(A),d}},{key:"drawBarPaths",value:function(e){var t,i=e.indexes,a=e.barHeight,s=e.strokeWidth,r=e.zeroW,n=e.x,o=e.y,h=e.yDivision,c=e.elSeries,d=this.w,u=i.i,p=i.j;if(d.globals.isXNumeric)t=(o=(d.globals.seriesX[u][p]-d.globals.minX)/this.invertedXRatio-a)+a*this.visibleI;else if(d.config.plotOptions.bar.hideZeroBarsWhenGrouped){var f=0,b=0;d.globals.seriesPercent.forEach(function(w,k){w[p]&&f++,k0&&(a=this.seriesLen*a/f),t=o+a*this.visibleI,t-=a*b}else t=o+a*this.visibleI;this.isFunnel&&(r-=(this.barHelpers.getXForValue(this.series[u][p],r)-r)/2),n=this.barHelpers.getXForValue(this.series[u][p],r);var v=this.barHelpers.getBarpaths({barYPosition:t,barHeight:a,x1:r,x2:n,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:u,j:p,w:d});return d.globals.isXNumeric||(o+=h),this.barHelpers.barBackground({j:p,i:u,y1:t-a*this.visibleI,y2:a*this.seriesLen,elSeries:c}),{pathTo:v.pathTo,pathFrom:v.pathFrom,x1:r,x:n,y:o,goalX:this.barHelpers.getGoalValues("x",r,null,u,p),barYPosition:t,barHeight:a}}},{key:"drawColumnPaths",value:function(e){var t,i=e.indexes,a=e.x,s=e.y,r=e.xDivision,n=e.barWidth,o=e.zeroH,h=e.strokeWidth,c=e.elSeries,d=this.w,u=i.realIndex,p=i.i,f=i.j,b=i.bc;if(d.globals.isXNumeric){var v=this.getBarXForNumericXAxis({x:a,j:f,realIndex:u,barWidth:n});a=v.x,t=v.barXPosition}else if(d.config.plotOptions.bar.hideZeroBarsWhenGrouped){var w=this.barHelpers.getZeroValueEncounters({i:p,j:f}),k=w.nonZeroColumns,l=w.zeroEncounters;k>0&&(n=this.seriesLen*n/k),t=a+n*this.visibleI,t-=n*l}else t=a+n*this.visibleI;s=this.barHelpers.getYForValue(this.series[p][f],o);var g=this.barHelpers.getColumnPaths({barXPosition:t,barWidth:n,y1:o,y2:s,strokeWidth:h,series:this.series,realIndex:i.realIndex,i:p,j:f,w:d});return d.globals.isXNumeric||(a+=r),this.barHelpers.barBackground({bc:b,j:f,i:p,x1:t-h/2-n*this.visibleI,x2:n*this.seriesLen+h/2,elSeries:c}),{pathTo:g.pathTo,pathFrom:g.pathFrom,x:a,y:s,goalY:this.barHelpers.getGoalValues("y",null,o,p,f),barXPosition:t,barWidth:n}}},{key:"getBarXForNumericXAxis",value:function(e){var t=e.x,i=e.barWidth,a=e.realIndex,s=e.j,r=this.w,n=a;return r.globals.seriesX[a].length||(n=r.globals.maxValsInArrayIndex),r.globals.seriesX[n][s]&&(t=(r.globals.seriesX[n][s]-r.globals.minX)/this.xRatio-i*this.seriesLen/2),{barXPosition:t+i*this.visibleI,x:t}}},{key:"getPreviousPath",value:function(e,t){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(e,10)&&a.globals.previousPaths[s].paths[t]!==void 0&&(i=a.globals.previousPaths[s].paths[t].d)}return i}}]),m}(),We=function(m){ge(t,ne);var e=ue(t);function t(){return F(this,t),e.apply(this,arguments)}return R(t,[{key:"draw",value:function(i,a){var s=this,r=this.w;this.graphics=new z(this.ctx),this.bar=new ne(this.ctx,this.xyRatios);var n=new G(this.ctx,r);i=n.getLogSeries(i),this.yRatio=n.getLogYRatios(this.yRatio),this.barHelpers.initVariables(i),r.config.chart.stackType==="100%"&&(i=r.globals.seriesPercent.slice()),this.series=i,this.barHelpers.initializeStackedPrevVars(this);for(var o=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),h=0,c=0,d=function(f,b){var v=void 0,w=void 0,k=void 0,l=void 0,g=-1;s.groupCtx=s,r.globals.seriesGroups.forEach(function(N,B){N.indexOf(r.config.series[f].name)>-1&&(g=B)}),g!==-1&&(s.groupCtx=s[r.globals.seriesGroups[g]]);var x=[],y=[],A=r.globals.comboCharts?a[f]:f;s.yRatio.length>1&&(s.yaxisIndex=A),s.isReversed=r.config.yaxis[s.yaxisIndex]&&r.config.yaxis[s.yaxisIndex].reversed;var S=s.graphics.group({class:"apexcharts-series",seriesName:P.escapeString(r.globals.seriesNames[A]),rel:f+1,"data:realIndex":A});s.ctx.series.addCollapsedClassToSeries(S,A);var L=s.graphics.group({class:"apexcharts-datalabels","data:realIndex":A}),C=s.graphics.group({class:"apexcharts-bar-goals-markers"}),M=0,T=0,I=s.initialPositions(h,c,v,w,k,l);c=I.y,M=I.barHeight,w=I.yDivision,l=I.zeroW,h=I.x,T=I.barWidth,v=I.xDivision,k=I.zeroH,s.barHelpers.initializeStackedXYVars(s),s.groupCtx.prevY.length===1&&s.groupCtx.prevY[0].every(function(N){return isNaN(N)})&&(s.groupCtx.prevY[0]=s.groupCtx.prevY[0].map(function(N){return k}),s.groupCtx.prevYF[0]=s.groupCtx.prevYF[0].map(function(N){return 0}));for(var X=0;X1?(s=p.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:u*parseInt(p.config.plotOptions.bar.columnWidth,10)/100,String(p.config.plotOptions.bar.columnWidth).indexOf("%")===-1&&(u=parseInt(p.config.plotOptions.bar.columnWidth,10)),n=p.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?p.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),i=p.globals.padHorizontal+(s-u)/2),{x:i,y:a,yDivision:r,xDivision:s,barHeight:(h=p.globals.seriesGroups)!==null&&h!==void 0&&h.length?d/p.globals.seriesGroups.length:d,barWidth:(c=p.globals.seriesGroups)!==null&&c!==void 0&&c.length?u/p.globals.seriesGroups.length:u,zeroH:n,zeroW:o}}},{key:"drawStackedBarPaths",value:function(i){for(var a,s=i.indexes,r=i.barHeight,n=i.strokeWidth,o=i.zeroW,h=i.x,c=i.y,d=i.groupIndex,u=i.seriesGroup,p=i.yDivision,f=i.elSeries,b=this.w,v=c+(d!==-1?d*r:0),w=s.i,k=s.j,l=0,g=0;g0){var y=o;this.groupCtx.prevXVal[x-1][k]<0?y=this.series[w][k]>=0?this.groupCtx.prevX[x-1][k]+l-2*(this.isReversed?l:0):this.groupCtx.prevX[x-1][k]:this.groupCtx.prevXVal[x-1][k]>=0&&(y=this.series[w][k]>=0?this.groupCtx.prevX[x-1][k]:this.groupCtx.prevX[x-1][k]-l+2*(this.isReversed?l:0)),a=y}else a=o;h=this.series[w][k]===null?a:a+this.series[w][k]/this.invertedYRatio-2*(this.isReversed?this.series[w][k]/this.invertedYRatio:0);var A=this.barHelpers.getBarpaths({barYPosition:v,barHeight:r,x1:a,x2:h,strokeWidth:n,series:this.series,realIndex:s.realIndex,seriesGroup:u,i:w,j:k,w:b});return this.barHelpers.barBackground({j:k,i:w,y1:v,y2:r,elSeries:f}),c+=p,{pathTo:A.pathTo,pathFrom:A.pathFrom,goalX:this.barHelpers.getGoalValues("x",o,null,w,k),barYPosition:v,x:h,y:c}}},{key:"drawStackedColumnPaths",value:function(i){var a=i.indexes,s=i.x,r=i.y,n=i.xDivision,o=i.barWidth,h=i.zeroH,c=i.groupIndex,d=i.seriesGroup,u=i.elSeries,p=this.w,f=a.i,b=a.j,v=a.bc;if(p.globals.isXNumeric){var w=p.globals.seriesX[f][b];w||(w=0),s=(w-p.globals.minX)/this.xRatio-o/2,p.globals.seriesGroups.length&&(s=(w-p.globals.minX)/this.xRatio-o/2*p.globals.seriesGroups.length)}for(var k,l=s+(c!==-1?c*o:0),g=0,x=0;x0&&!p.globals.isXNumeric||y>0&&p.globals.isXNumeric&&p.globals.seriesX[f-1][b]===p.globals.seriesX[f][b]){var A,S,L,C=Math.min(this.yRatio.length+1,f+1);if(this.groupCtx.prevY[y-1]!==void 0&&this.groupCtx.prevY[y-1].length)for(var M=1;M=0?L-g+2*(this.isReversed?g:0):L;break}if(((Y=this.groupCtx.prevYVal[y-I])===null||Y===void 0?void 0:Y[b])>=0){S=this.series[f][b]>=0?L:L+g-2*(this.isReversed?g:0);break}}S===void 0&&(S=p.globals.gridHeight),k=(A=this.groupCtx.prevYF[0])!==null&&A!==void 0&&A.every(function(D){return D===0})&&this.groupCtx.prevYF.slice(1,y).every(function(D){return D.every(function(O){return isNaN(O)})})?h:S}else k=h;r=this.series[f][b]?k-this.series[f][b]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[f][b]/this.yRatio[this.yaxisIndex]:0):k;var H=this.barHelpers.getColumnPaths({barXPosition:l,barWidth:o,y1:k,y2:r,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,seriesGroup:d,realIndex:a.realIndex,i:f,j:b,w:p});return this.barHelpers.barBackground({bc:v,j:b,i:f,x1:l,x2:o,elSeries:u}),s+=n,{pathTo:H.pathTo,pathFrom:H.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,h,f,b),barXPosition:l,x:p.globals.isXNumeric?s-n:s,y:r}}}]),t}(),Ce=function(m){ge(t,ne);var e=ue(t);function t(){return F(this,t),e.apply(this,arguments)}return R(t,[{key:"draw",value:function(i,a,s){var r=this,n=this.w,o=new z(this.ctx),h=n.globals.comboCharts?a:n.config.chart.type,c=new Q(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=n.config.plotOptions.bar.horizontal;var d=new G(this.ctx,n);i=d.getLogSeries(i),this.series=i,this.yRatio=d.getLogYRatios(this.yRatio),this.barHelpers.initVariables(i);for(var u=o.group({class:"apexcharts-".concat(h,"-series apexcharts-plot-series")}),p=function(b){r.isBoxPlot=n.config.chart.type==="boxPlot"||n.config.series[b].type==="boxPlot";var v,w,k,l,g=void 0,x=void 0,y=[],A=[],S=n.globals.comboCharts?s[b]:b,L=o.group({class:"apexcharts-series",seriesName:P.escapeString(n.globals.seriesNames[S]),rel:b+1,"data:realIndex":S});r.ctx.series.addCollapsedClassToSeries(L,S),i[b].length>0&&(r.visibleI=r.visibleI+1);var C,M;r.yRatio.length>1&&(r.yaxisIndex=S);var T=r.barHelpers.initialPositions();x=T.y,C=T.barHeight,w=T.yDivision,l=T.zeroW,g=T.x,M=T.barWidth,v=T.xDivision,k=T.zeroH,A.push(g+M/2);for(var I=o.group({class:"apexcharts-datalabels","data:realIndex":S}),X=function(H){var D=r.barHelpers.getStrokeWidth(b,H,S),O=null,W={indexes:{i:b,j:H,realIndex:S},x:g,y:x,strokeWidth:D,elSeries:L};O=r.isHorizontal?r.drawHorizontalBoxPaths(E(E({},W),{},{yDivision:w,barHeight:C,zeroW:l})):r.drawVerticalBoxPaths(E(E({},W),{},{xDivision:v,barWidth:M,zeroH:k})),x=O.y,g=O.x,H>0&&A.push(g+M/2),y.push(x),O.pathTo.forEach(function(N,B){var J=!r.isBoxPlot&&r.candlestickOptions.wick.useFillColor?O.color[B]:n.globals.stroke.colors[b],te=c.fillPath({seriesNumber:S,dataPointIndex:H,color:O.color[B],value:i[b][H]});r.renderSeries({realIndex:S,pathFill:te,lineFill:J,j:H,i:b,pathFrom:O.pathFrom,pathTo:N,strokeWidth:D,elSeries:L,x:g,y:x,series:i,barHeight:C,barWidth:M,elDataLabelsWrap:I,visibleSeries:r.visibleI,type:n.config.chart.type})})},Y=0;Yg.c&&(f=!1);var A=Math.min(g.o,g.c),S=Math.max(g.o,g.c),L=g.m;c.globals.isXNumeric&&(s=(c.globals.seriesX[l][p]-c.globals.minX)/this.xRatio-n/2);var C=s+n*this.visibleI;this.series[u][p]===void 0||this.series[u][p]===null?(A=o,S=o):(A=o-A/k,S=o-S/k,x=o-g.h/k,y=o-g.l/k,L=o-g.m/k);var M=d.move(C,o),T=d.move(C+n/2,A);return c.globals.previousPaths.length>0&&(T=this.getPreviousPath(l,p,!0)),M=this.isBoxPlot?[d.move(C,A)+d.line(C+n/2,A)+d.line(C+n/2,x)+d.line(C+n/4,x)+d.line(C+n-n/4,x)+d.line(C+n/2,x)+d.line(C+n/2,A)+d.line(C+n,A)+d.line(C+n,L)+d.line(C,L)+d.line(C,A+h/2),d.move(C,L)+d.line(C+n,L)+d.line(C+n,S)+d.line(C+n/2,S)+d.line(C+n/2,y)+d.line(C+n-n/4,y)+d.line(C+n/4,y)+d.line(C+n/2,y)+d.line(C+n/2,S)+d.line(C,S)+d.line(C,L)+"z"]:[d.move(C,S)+d.line(C+n/2,S)+d.line(C+n/2,x)+d.line(C+n/2,S)+d.line(C+n,S)+d.line(C+n,A)+d.line(C+n/2,A)+d.line(C+n/2,y)+d.line(C+n/2,A)+d.line(C,A)+d.line(C,S-h/2)],T+=d.move(C,A),c.globals.isXNumeric||(s+=r),{pathTo:M,pathFrom:T,x:s,y:S,barXPosition:C,color:this.isBoxPlot?w:f?[b]:[v]}}},{key:"drawHorizontalBoxPaths",value:function(i){var a=i.indexes;i.x;var s=i.y,r=i.yDivision,n=i.barHeight,o=i.zeroW,h=i.strokeWidth,c=this.w,d=new z(this.ctx),u=a.i,p=a.j,f=this.boxOptions.colors.lower;this.isBoxPlot&&(f=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var b=this.invertedYRatio,v=a.realIndex,w=this.getOHLCValue(v,p),k=o,l=o,g=Math.min(w.o,w.c),x=Math.max(w.o,w.c),y=w.m;c.globals.isXNumeric&&(s=(c.globals.seriesX[v][p]-c.globals.minX)/this.invertedXRatio-n/2);var A=s+n*this.visibleI;this.series[u][p]===void 0||this.series[u][p]===null?(g=o,x=o):(g=o+g/b,x=o+x/b,k=o+w.h/b,l=o+w.l/b,y=o+w.m/b);var S=d.move(o,A),L=d.move(g,A+n/2);return c.globals.previousPaths.length>0&&(L=this.getPreviousPath(v,p,!0)),S=[d.move(g,A)+d.line(g,A+n/2)+d.line(k,A+n/2)+d.line(k,A+n/2-n/4)+d.line(k,A+n/2+n/4)+d.line(k,A+n/2)+d.line(g,A+n/2)+d.line(g,A+n)+d.line(y,A+n)+d.line(y,A)+d.line(g+h/2,A),d.move(y,A)+d.line(y,A+n)+d.line(x,A+n)+d.line(x,A+n/2)+d.line(l,A+n/2)+d.line(l,A+n-n/4)+d.line(l,A+n/4)+d.line(l,A+n/2)+d.line(x,A+n/2)+d.line(x,A)+d.line(y,A)+"z"],L+=d.move(g,A),c.globals.isXNumeric||(s+=r),{pathTo:S,pathFrom:L,x,y:s,barYPosition:A,color:f}}},{key:"getOHLCValue",value:function(i,a){var s=this.w;return{o:this.isBoxPlot?s.globals.seriesCandleH[i][a]:s.globals.seriesCandleO[i][a],h:this.isBoxPlot?s.globals.seriesCandleO[i][a]:s.globals.seriesCandleH[i][a],m:s.globals.seriesCandleM[i][a],l:this.isBoxPlot?s.globals.seriesCandleC[i][a]:s.globals.seriesCandleL[i][a],c:this.isBoxPlot?s.globals.seriesCandleL[i][a]:s.globals.seriesCandleC[i][a]}}}]),t}(),it=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"checkColorRange",value:function(){var e=this.w,t=!1,i=e.config.plotOptions[e.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map(function(a,s){a.from<=0&&(t=!0)}),t}},{key:"getShadeColor",value:function(e,t,i,a){var s=this.w,r=1,n=s.config.plotOptions[e].shadeIntensity,o=this.determineColor(e,t,i);s.globals.hasNegs||a?r=s.config.plotOptions[e].reverseNegativeShade?o.percent<0?o.percent/100*(1.25*n):(1-o.percent/100)*(1.25*n):o.percent<=0?1-(1+o.percent/100)*n:(1-o.percent/100)*n:(r=1-o.percent/100,e==="treemap"&&(r=(1-o.percent/100)*(1.25*n)));var h=o.color,c=new P;return s.config.plotOptions[e].enableShades&&(h=this.w.config.theme.mode==="dark"?P.hexToRgba(c.shadeColor(-1*r,o.color),s.config.fill.opacity):P.hexToRgba(c.shadeColor(r,o.color),s.config.fill.opacity)),{color:h,colorProps:o}}},{key:"determineColor",value:function(e,t,i){var a=this.w,s=a.globals.series[t][i],r=a.config.plotOptions[e],n=r.colorScale.inverse?i:t;r.distributed&&a.config.chart.type==="treemap"&&(n=i);var o=a.globals.colors[n],h=null,c=Math.min.apply(Math,Z(a.globals.series[t])),d=Math.max.apply(Math,Z(a.globals.series[t]));r.distributed||e!=="heatmap"||(c=a.globals.minY,d=a.globals.maxY),r.colorScale.min!==void 0&&(c=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var u=Math.abs(d)+Math.abs(c),p=100*s/(u===0?u-1e-6:u);return r.colorScale.ranges.length>0&&r.colorScale.ranges.map(function(f,b){if(s>=f.from&&s<=f.to){o=f.color,h=f.foreColor?f.foreColor:null,c=f.from,d=f.to;var v=Math.abs(d)+Math.abs(c);p=100*s/(v===0?v-1e-6:v)}}),{color:o,foreColor:h,percent:p}}},{key:"calculateDataLabels",value:function(e){var t=e.text,i=e.x,a=e.y,s=e.i,r=e.j,n=e.colorProps,o=e.fontSize,h=this.w.config.dataLabels,c=new z(this.ctx),d=new se(this.ctx),u=null;if(h.enabled){u=c.group({class:"apexcharts-data-labels"});var p=h.offsetX,f=h.offsetY,b=i+p,v=a+parseFloat(h.style.fontSize)/3+f;d.plotDataLabelsText({x:b,y:v,text:t,i:s,j:r,color:n.foreColor,parent:u,fontSize:o,dataLabelsConfig:h})}return u}},{key:"addListeners",value:function(e){var t=new z(this.ctx);e.node.addEventListener("mouseenter",t.pathMouseEnter.bind(this,e)),e.node.addEventListener("mouseleave",t.pathMouseLeave.bind(this,e)),e.node.addEventListener("mousedown",t.pathMouseDown.bind(this,e))}}]),m}(),Ot=function(){function m(e,t){F(this,m),this.ctx=e,this.w=e.w,this.xRatio=t.xRatio,this.yRatio=t.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new it(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return R(m,[{key:"draw",value:function(e){var t=this.w,i=new z(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(t.globals.cuid,")"));var s=t.globals.gridWidth/t.globals.dataPoints,r=t.globals.gridHeight/t.globals.series.length,n=0,o=!1;this.negRange=this.helpers.checkColorRange();var h=e.slice();t.config.yaxis[0].reversed&&(o=!0,h.reverse());for(var c=o?0:h.length-1;o?c=0;o?c++:c--){var d=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:P.escapeString(t.globals.seriesNames[c]),rel:c+1,"data:realIndex":c});if(this.ctx.series.addCollapsedClassToSeries(d,c),t.config.chart.dropShadow.enabled){var u=t.config.chart.dropShadow;new U(this.ctx).dropShadow(d,u,c)}for(var p=0,f=t.config.plotOptions.heatmap.shadeIntensity,b=0;b-1&&this.pieClicked(u),i.config.dataLabels.enabled){var x=l.x,y=l.y,A=100*f/this.fullAngle+"%";if(f!==0&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?t.endAngle=t.endAngle-(a+n):a+n=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(o=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(o)>this.fullAngle&&(o-=this.fullAngle);var h=Math.PI*(o-90)/180,c=t.centerX+s*Math.cos(n),d=t.centerY+s*Math.sin(n),u=t.centerX+s*Math.cos(h),p=t.centerY+s*Math.sin(h),f=P.polarToCartesian(t.centerX,t.centerY,t.donutSize,o),b=P.polarToCartesian(t.centerX,t.centerY,t.donutSize,r),v=a>180?1:0,w=["M",c,d,"A",s,s,0,v,1,u,p];return t.chartType==="donut"?[].concat(w,["L",f.x,f.y,"A",t.donutSize,t.donutSize,0,v,0,b.x,b.y,"L",c,d,"z"]).join(" "):t.chartType==="pie"||t.chartType==="polarArea"?[].concat(w,["L",t.centerX,t.centerY,"L",c,d]).join(" "):[].concat(w).join(" ")}},{key:"drawPolarElements",value:function(e){var t=this.w,i=new re(this.ctx),a=new z(this.ctx),s=new at(this.ctx),r=a.group(),n=a.group(),o=i.niceScale(0,Math.ceil(this.maxY),t.config.yaxis[0].tickAmount,0,!0),h=o.result.reverse(),c=o.result.length;this.maxY=o.niceMax;for(var d=t.globals.radialSize,u=d/(c-1),p=0;p1&&e.total.show&&(s=e.total.color);var n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,e.value.formatter)(i,r),a||typeof e.total.formatter!="function"||(i=e.total.formatter(r));var h=t===e.total.label;t=e.name.formatter(t,h,r),n!==null&&(n.textContent=t),o!==null&&(o.textContent=i),n!==null&&(n.style.fill=s)}},{key:"printDataLabelsInner",value:function(e,t){var i=this.w,a=e.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(e.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(t,s,a,e);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");r!==null&&(r.style.opacity=1)}},{key:"drawSpokes",value:function(e){var t=this,i=this.w,a=new z(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(s.strokeWidth!==0){for(var r=[],n=360/i.globals.series.length,o=0;o1)n&&!t.total.showAlways?h({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(t,t.total.label,t.total.formatter(s));else if(h({makeSliceOut:!1,printLabel:!0}),!n)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var c=s.globals.selectedDataPoints[0],d=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(c));this.printDataLabelsInner(d,t)}else r&&s.globals.selectedDataPoints.length&&s.globals.selectedDataPoints[0].length===0&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}]),m}(),Nt=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var t=this.w;this.graphics=new z(this.ctx),this.lineColorArr=t.globals.stroke.colors!==void 0?t.globals.stroke.colors:t.globals.colors,this.defaultSize=t.globals.svgHeight0&&(y=t.getPreviousPath(w));for(var A=0;A=10?e.x>0?(i="start",a+=10):e.x<0&&(i="end",a-=10):i="middle",Math.abs(e.y)>=t-10&&(e.y<0?s-=10:e.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(e){for(var t=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(e,10)&&t.globals.previousPaths[a].paths[0]!==void 0&&(i=t.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.dataPointsLen;e=e||[],t=t||[];for(var a=[],s=0;s=360&&(b=360-Math.abs(this.startAngle)-.1);var v=s.drawPath({d:"",stroke:p,strokeWidth:h*parseInt(u.strokeWidth,10)/100,fill:"none",strokeOpacity:u.opacity,classes:"apexcharts-radialbar-area"});if(u.dropShadow.enabled){var w=u.dropShadow;n.dropShadow(v,w)}d.add(v),v.attr("id","apexcharts-radialbarTrack-"+c),this.animatePaths(v,{centerX:i.centerX,centerY:i.centerY,endAngle:b,startAngle:f,size:i.size,i:c,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:a.globals.easing})}return r}},{key:"drawArcs",value:function(i){var a=this.w,s=new z(this.ctx),r=new Q(this.ctx),n=new U(this.ctx),o=s.group(),h=this.getStrokeWidth(i);i.size=i.size-h/2;var c=a.config.plotOptions.radialBar.hollow.background,d=i.size-h*i.series.length-this.margin*i.series.length-h*parseInt(a.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,u=d-a.config.plotOptions.radialBar.hollow.margin;a.config.plotOptions.radialBar.hollow.image!==void 0&&(c=this.drawHollowImage(i,o,d,c));var p=this.drawHollow({size:u,centerX:i.centerX,centerY:i.centerY,fill:c||"transparent"});if(a.config.plotOptions.radialBar.hollow.dropShadow.enabled){var f=a.config.plotOptions.radialBar.hollow.dropShadow;n.dropShadow(p,f)}var b=1;!this.radialDataLabels.total.show&&a.globals.series.length>1&&(b=0);var v=null;this.radialDataLabels.show&&(v=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:d,centerX:i.centerX,centerY:i.centerY,opacity:b})),a.config.plotOptions.radialBar.hollow.position==="back"&&(o.add(p),v&&o.add(v));var w=!1;a.config.plotOptions.radialBar.inverseOrder&&(w=!0);for(var k=w?i.series.length-1:0;w?k>=0:k100?100:i.series[k])/100,S=Math.round(this.totalAngle*A)+this.startAngle,L=void 0;a.globals.dataChanged&&(y=this.startAngle,L=Math.round(this.totalAngle*P.negToZero(a.globals.previousPaths[k])/100)+y),Math.abs(S)+Math.abs(x)>=360&&(S-=.01),Math.abs(L)+Math.abs(y)>=360&&(L-=.01);var C=S-x,M=Array.isArray(a.config.stroke.dashArray)?a.config.stroke.dashArray[k]:a.config.stroke.dashArray,T=s.drawPath({d:"",stroke:g,strokeWidth:h,fill:"none",fillOpacity:a.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+k,strokeDashArray:M});if(z.setAttrs(T.node,{"data:angle":C,"data:value":i.series[k]}),a.config.chart.dropShadow.enabled){var I=a.config.chart.dropShadow;n.dropShadow(T,I,k)}n.setSelectionFilter(T,0,k),this.addListeners(T,this.radialDataLabels),l.add(T),T.attr({index:0,j:k});var X=0;!this.initialAnim||a.globals.resized||a.globals.dataChanged||(X=a.config.chart.animations.speed),a.globals.dataChanged&&(X=a.config.chart.animations.dynamicAnimation.speed),this.animDur=X/(1.2*i.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(T,{centerX:i.centerX,centerY:i.centerY,endAngle:S,startAngle:x,prevEndAngle:L,prevStartAngle:y,size:i.size,i:k,totalItems:2,animBeginArr:this.animBeginArr,dur:X,shouldSetPrevPaths:!0,easing:a.globals.easing})}return{g:o,elHollow:p,dataLabels:v}}},{key:"drawHollow",value:function(i){var a=new z(this.ctx).drawCircle(2*i.size);return a.attr({class:"apexcharts-radialbar-hollow",cx:i.centerX,cy:i.centerY,r:i.size,fill:i.fill}),a}},{key:"drawHollowImage",value:function(i,a,s,r){var n=this.w,o=new Q(this.ctx),h=P.randomId(),c=n.config.plotOptions.radialBar.hollow.image;if(n.config.plotOptions.radialBar.hollow.imageClipped)o.clippedImgArea({width:s,height:s,image:c,patternID:"pattern".concat(n.globals.cuid).concat(h)}),r="url(#pattern".concat(n.globals.cuid).concat(h,")");else{var d=n.config.plotOptions.radialBar.hollow.imageWidth,u=n.config.plotOptions.radialBar.hollow.imageHeight;if(d===void 0&&u===void 0){var p=n.globals.dom.Paper.image(c).loaded(function(b){this.move(i.centerX-b.width/2+n.config.plotOptions.radialBar.hollow.imageOffsetX,i.centerY-b.height/2+n.config.plotOptions.radialBar.hollow.imageOffsetY)});a.add(p)}else{var f=n.globals.dom.Paper.image(c).loaded(function(b){this.move(i.centerX-d/2+n.config.plotOptions.radialBar.hollow.imageOffsetX,i.centerY-u/2+n.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(d,u)});a.add(f)}}return r}},{key:"getStrokeWidth",value:function(i){var a=this.w;return i.size*(100-parseInt(a.config.plotOptions.radialBar.hollow.size,10))/100/(i.series.length+1)-this.margin}}]),t}(),Bt=function(m){ge(t,ne);var e=ue(t);function t(){return F(this,t),e.apply(this,arguments)}return R(t,[{key:"draw",value:function(i,a){var s=this.w,r=new z(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=i,this.seriesRangeStart=s.globals.seriesRangeStart,this.seriesRangeEnd=s.globals.seriesRangeEnd,this.barHelpers.initVariables(i);for(var n=r.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),o=0;o0&&(this.visibleI=this.visibleI+1);var w=0,k=0;this.yRatio.length>1&&(this.yaxisIndex=b);var l=this.barHelpers.initialPositions();f=l.y,u=l.zeroW,p=l.x,k=l.barWidth,w=l.barHeight,h=l.xDivision,c=l.yDivision,d=l.zeroH;for(var g=r.group({class:"apexcharts-datalabels","data:realIndex":b}),x=r.group({class:"apexcharts-rangebar-goals-markers"}),y=0;y0});return this.isHorizontal?(r=b.config.plotOptions.bar.rangeBarGroupRows?o+u*g:o+c*this.visibleI+u*g,x>-1&&!b.config.plotOptions.bar.rangeBarOverlap&&(v=b.globals.seriesRange[a][x].overlaps).indexOf(w)>-1&&(r=(c=f.barHeight/v.length)*this.visibleI+u*(100-parseInt(this.barOptions.barHeight,10))/100/2+c*(this.visibleI+v.indexOf(w))+u*g)):(g>-1&&(n=b.config.plotOptions.bar.rangeBarGroupRows?h+p*g:h+d*this.visibleI+p*g),x>-1&&!b.config.plotOptions.bar.rangeBarOverlap&&(v=b.globals.seriesRange[a][x].overlaps).indexOf(w)>-1&&(n=(d=f.barWidth/v.length)*this.visibleI+p*(100-parseInt(this.barOptions.barWidth,10))/100/2+d*(this.visibleI+v.indexOf(w))+p*g)),{barYPosition:r,barXPosition:n,barHeight:c,barWidth:d}}},{key:"drawRangeColumnPaths",value:function(i){var a=i.indexes,s=i.x,r=i.xDivision,n=i.barWidth,o=i.barXPosition,h=i.zeroH,c=this.w,d=a.i,u=a.j,p=this.yRatio[this.yaxisIndex],f=a.realIndex,b=this.getRangeValue(f,u),v=Math.min(b.start,b.end),w=Math.max(b.start,b.end);this.series[d][u]===void 0||this.series[d][u]===null?v=h:(v=h-v/p,w=h-w/p);var k=Math.abs(w-v),l=this.barHelpers.getColumnPaths({barXPosition:o,barWidth:n,y1:v,y2:w,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:a.realIndex,i:f,j:u,w:c});if(c.globals.isXNumeric){var g=this.getBarXForNumericXAxis({x:s,j:u,realIndex:f,barWidth:n});s=g.x,o=g.barXPosition}else s+=r;return{pathTo:l.pathTo,pathFrom:l.pathFrom,barHeight:k,x:s,y:w,goalY:this.barHelpers.getGoalValues("y",null,h,d,u),barXPosition:o}}},{key:"drawRangeBarPaths",value:function(i){var a=i.indexes,s=i.y,r=i.y1,n=i.y2,o=i.yDivision,h=i.barHeight,c=i.barYPosition,d=i.zeroW,u=this.w,p=d+r/this.invertedYRatio,f=d+n/this.invertedYRatio,b=Math.abs(f-p),v=this.barHelpers.getBarpaths({barYPosition:c,barHeight:h,x1:p,x2:f,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:a.realIndex,realIndex:a.realIndex,j:a.j,w:u});return u.globals.isXNumeric||(s+=o),{pathTo:v.pathTo,pathFrom:v.pathFrom,barWidth:b,x:f,goalX:this.barHelpers.getGoalValues("x",d,null,a.realIndex,a.j),y:s}}},{key:"getRangeValue",value:function(i,a){var s=this.w;return{start:s.globals.seriesRangeStart[i][a],end:s.globals.seriesRangeEnd[i][a]}}}]),t}(),Gt=function(){function m(e){F(this,m),this.w=e.w,this.lineCtx=e}return R(m,[{key:"sameValueSeriesFix",value:function(e,t){var i=this.w;if((i.config.fill.type==="gradient"||i.config.fill.type[e]==="gradient")&&new G(this.lineCtx.ctx,i).seriesHaveSameValues(e)){var a=t[e].slice();a[a.length-1]=a[a.length-1]+1e-6,t[e]=a}return t}},{key:"calculatePoints",value:function(e){var t=e.series,i=e.realIndex,a=e.x,s=e.y,r=e.i,n=e.j,o=e.prevY,h=this.w,c=[],d=[];if(n===0){var u=this.lineCtx.categoryAxisCorrection+h.config.markers.offsetX;h.globals.isXNumeric&&(u=(h.globals.seriesX[i][0]-h.globals.minX)/this.lineCtx.xRatio+h.config.markers.offsetX),c.push(u),d.push(P.isNumber(t[r][0])?o+h.config.markers.offsetY:null),c.push(a+h.config.markers.offsetX),d.push(P.isNumber(t[r][n+1])?s+h.config.markers.offsetY:null)}else c.push(a+h.config.markers.offsetX),d.push(P.isNumber(t[r][n+1])?s+h.config.markers.offsetY:null);return{x:c,y:d}}},{key:"checkPreviousPaths",value:function(e){for(var t=e.pathFromLine,i=e.pathFromArea,a=e.realIndex,s=this.w,r=0;r0&&parseInt(n.realIndex,10)===parseInt(a,10)&&(n.type==="line"?(this.lineCtx.appendPathFrom=!1,t=s.globals.previousPaths[r].paths[0].d):n.type==="area"&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(t=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:t,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(e){var t,i=e.i,a=e.series,s=e.prevY,r=e.lineYPosition,n=this.w;if(((t=a[i])===null||t===void 0?void 0:t[0])!==void 0)s=(r=n.config.chart.stacked&&i>0?this.lineCtx.prevSeriesY[i-1][0]:this.lineCtx.zeroY)-a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(n.config.chart.stacked&&i>0&&a[i][0]===void 0){for(var o=i-1;o>=0;o--)if(a[o][0]!==null&&a[o][0]!==void 0){s=r=this.lineCtx.prevSeriesY[o][0];break}}return{prevY:s,lineYPosition:r}}}]),m}(),Vt=function(m){for(var e,t,i,a,s=function(c){for(var d=[],u=c[0],p=c[1],f=d[0]=Pe(u,p),b=1,v=c.length-1;b9&&(a=3*i/Math.sqrt(a),s[o]=a*e,s[o+1]=a*t);for(var h=0;h<=r;h++)a=(m[Math.min(r,h+1)][0]-m[Math.max(0,h-1)][0])/(6*(1+s[h]*s[h])),n.push([a||0,s[h]*a||0]);return n},Le=function(m){for(var e="",t=0;t1&&Math.abs(i[s-2]-a[r-2])<30?(e+="Q".concat(i[0],", ").concat(i[1]),e+=", ".concat(i[2],", ").concat(i[3])):s>4?(e+="C".concat(i[0],", ").concat(i[1]),e+=", ".concat(i[2],", ").concat(i[3]),e+=", ".concat(i[4],", ").concat(i[5])):s>2&&(e+="S".concat(i[0],", ").concat(i[1]),e+=", ".concat(i[2],", ").concat(i[3]))}return e},Be=function(m){var e=Vt(m),t=m[1],i=m[0],a=[],s=e[1],r=e[0];a.push(i,[i[0]+r[0],i[1]+r[1],t[0]-s[0],t[1]-s[1],t[0],t[1]]);for(var n=2,o=e.length;n0&&(w=(r.globals.seriesX[p][0]-r.globals.minX)/this.xRatio),v.push(w);var k=w,l=this.zeroY,g=this.zeroY;l=this.lineHelpers.determineFirstPrevY({i:u,series:e,prevY:l,lineYPosition:0}).prevY,r.config.stroke.curve==="smooth"&&e[u][0]===null?f.push(null):f.push(l),o==="rangeArea"&&(g=this.lineHelpers.determineFirstPrevY({i:u,series:a,prevY:g,lineYPosition:0}).prevY,b.push(g));var x={type:o,series:e,realIndex:p,i:u,x:w,y:1,pathsFrom:this._calculatePathsFrom({type:o,series:e,i:u,realIndex:p,prevX:k,prevY:l,prevY2:g}),linePaths:[],areaPaths:[],seriesIndex:i,lineYPosition:0,xArrj:v,yArrj:f,y2Arrj:b,seriesRangeEnd:a},y=this._iterateOverDataPoints(E(E({},x),{},{iterations:o==="rangeArea"?e[u].length-1:void 0,isRangeStart:!0}));if(o==="rangeArea"){var A=this._calculatePathsFrom({series:a,i:u,realIndex:p,prevX:k,prevY:g}),S=this._iterateOverDataPoints(E(E({},x),{},{series:a,pathsFrom:A,iterations:a[u].length-1,isRangeStart:!1}));y.linePaths[0]=S.linePath+y.linePath,y.pathFromLine=S.pathFromLine+y.pathFromLine}this._handlePaths({type:o,realIndex:p,i:u,paths:y}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),d.push(this.elSeries)}if(((s=r.config.series[0])===null||s===void 0?void 0:s.zIndex)!==void 0&&d.sort(function(M,T){return Number(M.node.getAttribute("zIndex"))-Number(T.node.getAttribute("zIndex"))}),r.config.chart.stacked)for(var L=d.length;L>0;L--)h.add(d[L-1]);else for(var C=0;C1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||a.config.plotOptions.area.fillTo==="end")&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",zIndex:a.config.series[i].zIndex!==void 0?a.config.series[i].zIndex:i,seriesName:P.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var r=e[t].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":r,rel:t+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(e){var t,i,a,s,r=e.type,n=e.series,o=e.i,h=e.realIndex,c=e.prevX,d=e.prevY,u=e.prevY2,p=this.w,f=new z(this.ctx);if(n[o][0]===null){for(var b=0;b0){var v=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:h});a=v.pathFromLine,s=v.pathFromArea}return{prevX:c,prevY:d,linePath:t,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(e){var t=e.type,i=e.realIndex,a=e.i,s=e.paths,r=this.w,n=new z(this.ctx),o=new Q(this.ctx);this.prevSeriesY.push(s.yArrj),r.globals.seriesXvalues[i]=s.xArrj,r.globals.seriesYvalues[i]=s.yArrj;var h=r.config.forecastDataPoints;if(h.count>0&&t!=="rangeArea"){var c=r.globals.seriesXvalues[i][r.globals.seriesXvalues[i].length-h.count-1],d=n.drawRect(c,0,r.globals.gridWidth,r.globals.gridHeight,0);r.globals.dom.elForecastMask.appendChild(d.node);var u=n.drawRect(0,0,c,r.globals.gridHeight,0);r.globals.dom.elNonForecastMask.appendChild(u.node)}this.pointsChart||r.globals.delayedElements.push({el:this.elPointsMain.node,index:i});var p={i:a,realIndex:i,animationDelay:a,initialSpeed:r.config.chart.animations.speed,dataChangeSpeed:r.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(t)};if(t==="area")for(var f=o.fillPath({seriesNumber:i}),b=0;b0&&t!=="rangeArea"){var A=n.renderPaths(x);A.node.setAttribute("stroke-dasharray",h.dashArray),h.strokeWidth&&A.node.setAttribute("stroke-width",h.strokeWidth),this.elSeries.add(A),A.attr("clip-path","url(#forecastMask".concat(r.globals.cuid,")")),y.attr("clip-path","url(#nonForecastMask".concat(r.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(e){var t=this,i=e.type,a=e.series,s=e.iterations,r=e.realIndex,n=e.i,o=e.x,h=e.y,c=e.pathsFrom,d=e.linePaths,u=e.areaPaths,p=e.seriesIndex,f=e.lineYPosition,b=e.xArrj,v=e.yArrj,w=e.y2Arrj,k=e.isRangeStart,l=e.seriesRangeEnd,g=this.w,x=new z(this.ctx),y=this.yRatio,A=c.prevY,S=c.linePath,L=c.areaPath,C=c.pathFromLine,M=c.pathFromArea,T=P.isNumber(g.globals.minYArr[r])?g.globals.minYArr[r]:g.globals.minY;s||(s=g.globals.dataPoints>1?g.globals.dataPoints-1:g.globals.dataPoints);for(var I=function(N,B){return B-N/y[t.yaxisIndex]+2*(t.isReversed?N/y[t.yaxisIndex]:0)},X=h,Y=0;Y0&&g.globals.collapsedSeries.length-1){B--;break}return B>=0?B:0}(n-1)][Y+1]:f=this.zeroY:f=this.zeroY,H?h=I(T,f):(h=I(a[n][Y+1],f),i==="rangeArea"&&(X=I(l[n][Y+1],f))),b.push(o),H&&g.config.stroke.curve==="smooth"?v.push(null):v.push(h),w.push(X);var O=this.lineHelpers.calculatePoints({series:a,x:o,y:h,realIndex:r,i:n,j:Y,prevY:A}),W=this._createPaths({type:i,series:a,i:n,realIndex:r,j:Y,x:o,y:h,y2:X,xArrj:b,yArrj:v,y2Arrj:w,linePath:S,areaPath:L,linePaths:d,areaPaths:u,seriesIndex:p,isRangeStart:k});u=W.areaPaths,d=W.linePaths,L=W.areaPath,S=W.linePath,!this.appendPathFrom||g.config.stroke.curve==="smooth"&&i==="rangeArea"||(C+=x.line(o,this.zeroY),M+=x.line(o,this.zeroY)),this.handleNullDataPoints(a,O,n,Y,r),this._handleMarkersAndLabels({type:i,pointsPos:O,i:n,j:Y,realIndex:r,isRangeStart:k})}return{yArrj:v,xArrj:b,pathFromArea:M,areaPaths:u,pathFromLine:C,linePaths:d,linePath:S,areaPath:L}}},{key:"_handleMarkersAndLabels",value:function(e){var t=e.type,i=e.pointsPos,a=e.isRangeStart,s=e.i,r=e.j,n=e.realIndex,o=this.w,h=new se(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:n,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{o.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var c=this.markers.plotChartMarkers(i,n,r+1);c!==null&&this.elPointsMain.add(c)}var d=h.drawDataLabel({type:t,isRangeStart:a,pos:i,i:n,j:r+1});d!==null&&this.elDataLabelsWrap.add(d)}},{key:"_createPaths",value:function(e){var t=e.type,i=e.series,a=e.i,s=e.realIndex,r=e.j,n=e.x,o=e.y,h=e.xArrj,c=e.yArrj,d=e.y2,u=e.y2Arrj,p=e.linePath,f=e.areaPath,b=e.linePaths,v=e.areaPaths,w=e.seriesIndex,k=e.isRangeStart,l=this.w,g=new z(this.ctx),x=l.config.stroke.curve,y=this.areaBottomY;if(Array.isArray(l.config.stroke.curve)&&(x=Array.isArray(w)?l.config.stroke.curve[w[a]]:l.config.stroke.curve[a]),t==="rangeArea"&&(l.globals.hasNullValues||l.config.forecastDataPoints.count>0)&&x==="smooth"&&(x="straight"),x==="smooth"){var A=t==="rangeArea"?h.length===l.globals.dataPoints:r===i[a].length-2,S=h.map(function(Y,H){return[h[H],c[H]]}).filter(function(Y){return Y[1]!==null});if(A&&S.length>1){var L=Be(S);if(p+=Le(L),i[a][0]===null?f=p:f+=Le(L),t==="rangeArea"&&k){p+=g.line(h[h.length-1],u[u.length-1]);var C=h.slice().reverse(),M=u.slice().reverse(),T=C.map(function(Y,H){return[C[H],M[H]]}),I=Be(T);f=p+=Le(I)}else f+=g.line(S[S.length-1][0],y)+g.line(S[0][0],y)+g.move(S[0][0],S[0][1])+"z";b.push(p),v.push(f)}}else{if(i[a][r+1]===null){p+=g.move(n,o);var X=l.globals.isXNumeric?(l.globals.seriesX[s][r]-l.globals.minX)/this.xRatio:n-this.xDivision;f=f+g.line(X,y)+g.move(n,o)+"z"}i[a][r]===null&&(p+=g.move(n,o),f+=g.move(n,y)),x==="stepline"?(p=p+g.line(n,null,"H")+g.line(null,o,"V"),f=f+g.line(n,null,"H")+g.line(null,o,"V")):x==="straight"&&(p+=g.line(n,o),f+=g.line(n,o)),r===i[a].length-2&&(f=f+g.line(n,y)+g.move(n,o)+"z",t==="rangeArea"&&k?p=p+g.line(n,d)+g.move(n,d)+"z":(b.push(p),v.push(f)))}return{linePaths:b,areaPaths:v,linePath:p,areaPath:f}}},{key:"handleNullDataPoints",value:function(e,t,i,a,s){var r=this.w;if(e[i][a]===null&&r.config.markers.showNullDataPoints||e[i].length===1){var n=this.markers.plotChartMarkers(t,s,a+1,this.strokeWidth-r.config.markers.strokeWidth/2,!0);n!==null&&this.elPointsMain.add(n)}}}]),m}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function m(n,o,h,c){this.xoffset=n,this.yoffset=o,this.height=c,this.width=h,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(d){var u,p=[],f=this.xoffset,b=this.yoffset,v=s(d)/this.height,w=s(d)/this.width;if(this.width>=this.height)for(u=0;u=this.height){var p=d/this.height,f=this.width-p;u=new m(this.xoffset+p,this.yoffset,f,this.height)}else{var b=d/this.width,v=this.height-b;u=new m(this.xoffset,this.yoffset+b,this.width,v)}return u}}function e(n,o,h,c,d){c=c===void 0?0:c,d=d===void 0?0:d;var u=t(function(p,f){var b,v=[],w=f/s(p);for(b=0;b=l}(o,u=n[0],d)?(o.push(u),t(n.slice(1),o,h,c)):(p=h.cutArea(s(o),c),c.push(h.getCoordinates(o)),t(n,[],p,c)),c;c.push(h.getCoordinates(o))}function i(n,o){var h=Math.min.apply(Math,n),c=Math.max.apply(Math,n),d=s(n);return Math.max(Math.pow(o,2)*c/Math.pow(d,2),Math.pow(d,2)/(Math.pow(o,2)*h))}function a(n){return n&&n.constructor===Array}function s(n){var o,h=0;for(o=0;or-a&&h.width<=n-s){var c=o.rotateAroundCenter(e.node);e.node.setAttribute("transform","rotate(-90 ".concat(c.x," ").concat(c.y,") translate(").concat(h.height/3,")"))}}},{key:"truncateLabels",value:function(e,t,i,a,s,r){var n=new z(this.ctx),o=n.getTextRects(e,t).width+this.w.config.stroke.width+5>s-i&&r-a>s-i?r-a:s-i,h=n.getTextBasedOnMaxWidth({text:e,maxWidth:o,fontSize:t});return e.length!==h.length&&o/t<5?"":h}},{key:"animateTreemap",value:function(e,t,i,a){var s=new oe(this.ctx);s.animateRect(e,{x:t.x,y:t.y,width:t.width,height:t.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,function(){s.animationCompleted(e)})}}]),m}(),_t=86400,Ut=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return R(m,[{key:"calculateTimeScaleTicks",value:function(e,t){var i=this,a=this.w;if(a.globals.allSeriesCollapsed)return a.globals.labels=[],a.globals.timescaleLabels=[],[];var s=new j(this.ctx),r=(t-e)/864e5;this.determineInterval(r),a.globals.disableZoomIn=!1,a.globals.disableZoomOut=!1,r<.00011574074074074075?a.globals.disableZoomIn=!0:r>5e4&&(a.globals.disableZoomOut=!0);var n=s.getTimeUnitsfromTimestamp(e,t,this.utc),o=a.globals.gridWidth/r,h=o/24,c=h/60,d=c/60,u=Math.floor(24*r),p=Math.floor(1440*r),f=Math.floor(r*_t),b=Math.floor(r),v=Math.floor(r/30),w=Math.floor(r/365),k={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},l={firstVal:k,currentMillisecond:k.minMillisecond,currentSecond:k.minSecond,currentMinute:k.minMinute,currentHour:k.minHour,currentMonthDate:k.minDate,currentDate:k.minDate,currentMonth:k.minMonth,currentYear:k.minYear,daysWidthOnXAxis:o,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,secondsWidthOnXAxis:d,numberOfSeconds:f,numberOfMinutes:p,numberOfHours:u,numberOfDays:b,numberOfMonths:v,numberOfYears:w};switch(this.tickInterval){case"years":this.generateYearScale(l);break;case"months":case"half_year":this.generateMonthScale(l);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(l);break;case"hours":this.generateHourScale(l);break;case"minutes_fives":case"minutes":this.generateMinuteScale(l);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(l)}var g=this.timeScaleArray.map(function(x){var y={position:x.position,unit:x.unit,year:x.year,day:x.day?x.day:1,hour:x.hour?x.hour:0,month:x.month+1};return x.unit==="month"?E(E({},y),{},{day:1,value:x.value+1}):x.unit==="day"||x.unit==="hour"?E(E({},y),{},{value:x.value}):x.unit==="minute"?E(E({},y),{},{value:x.value,minute:x.value}):x.unit==="second"?E(E({},y),{},{value:x.value,minute:x.minute,second:x.second}):x});return g.filter(function(x){var y=1,A=Math.ceil(a.globals.gridWidth/120),S=x.value;a.config.xaxis.tickAmount!==void 0&&(A=a.config.xaxis.tickAmount),g.length>A&&(y=Math.floor(g.length/A));var L=!1,C=!1;switch(i.tickInterval){case"years":x.unit==="year"&&(L=!0);break;case"half_year":y=7,x.unit==="year"&&(L=!0);break;case"months":y=1,x.unit==="year"&&(L=!0);break;case"months_fortnight":y=15,x.unit!=="year"&&x.unit!=="month"||(L=!0),S===30&&(C=!0);break;case"months_days":y=10,x.unit==="month"&&(L=!0),S===30&&(C=!0);break;case"week_days":y=8,x.unit==="month"&&(L=!0);break;case"days":y=1,x.unit==="month"&&(L=!0);break;case"hours":x.unit==="day"&&(L=!0);break;case"minutes_fives":case"seconds_fives":S%5!=0&&(C=!0);break;case"seconds_tens":S%10!=0&&(C=!0)}if(i.tickInterval==="hours"||i.tickInterval==="minutes_fives"||i.tickInterval==="seconds_tens"||i.tickInterval==="seconds_fives"){if(!C)return!0}else if((S%y==0||L)&&!C)return!0})}},{key:"recalcDimensionsBasedOnFormat",value:function(e,t){var i=this.w,a=this.formatDates(e),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new me(this.ctx).plotCoords()}},{key:"determineInterval",value:function(e){var t=24*e,i=60*t;switch(!0){case e/365>5:this.tickInterval="years";break;case e>800:this.tickInterval="half_year";break;case e>180:this.tickInterval="months";break;case e>90:this.tickInterval="months_fortnight";break;case e>60:this.tickInterval="months_days";break;case e>30:this.tickInterval="week_days";break;case e>2:this.tickInterval="days";break;case t>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(e){var t=e.firstVal,i=e.currentMonth,a=e.currentYear,s=e.daysWidthOnXAxis,r=e.numberOfYears,n=t.minYear,o=0,h=new j(this.ctx),c="year";if(t.minDate>1||t.minMonth>0){var d=h.determineRemainingDaysOfYear(t.minYear,t.minMonth,t.minDate);o=(h.determineDaysOfYear(t.minYear)-d+1)*s,n=t.minYear+1,this.timeScaleArray.push({position:o,value:n,unit:c,year:n,month:P.monthMod(i+1)})}else t.minDate===1&&t.minMonth===0&&this.timeScaleArray.push({position:o,value:n,unit:c,year:a,month:P.monthMod(i+1)});for(var u=n,p=o,f=0;f1){h=(c.determineDaysOfMonths(a+1,t.minYear)-i+1)*r,o=P.monthMod(a+1);var p=s+u,f=P.monthMod(o),b=o;o===0&&(d="year",b=p,f=1,p+=u+=1),this.timeScaleArray.push({position:h,value:b,unit:d,year:p,month:f})}else this.timeScaleArray.push({position:h,value:o,unit:d,year:s,month:P.monthMod(a)});for(var v=o+1,w=h,k=0,l=1;kn.determineDaysOfMonths(g+1,x)&&(c=1,o="month",p=g+=1),g},u=(24-t.minHour)*s,p=h,f=d(c,i,a);t.minHour===0&&t.minDate===1?(u=0,p=P.monthMod(t.minMonth),o="month",c=t.minDate):t.minDate!==1&&t.minHour===0&&t.minMinute===0&&(u=0,h=t.minDate,p=h,f=d(c=h,i,a)),this.timeScaleArray.push({position:u,value:p,unit:o,year:this._getYear(a,f,0),month:P.monthMod(f),day:c});for(var b=u,v=0;vo.determineDaysOfMonths(A+1,s)&&(v=1,A+=1),{month:A,date:v}},d=function(y,A){return y>o.determineDaysOfMonths(A+1,s)?A+=1:A},u=60-(t.minMinute+t.minSecond/60),p=u*r,f=t.minHour+1,b=f;u===60&&(p=0,b=(f=t.minHour)+1);var v=i;b>=24&&(b=0,v+=1,h="day");var w=c(v,a).month;w=d(v,w),this.timeScaleArray.push({position:p,value:f,unit:h,day:v,hour:b,year:s,month:P.monthMod(w)}),b++;for(var k=p,l=0;l=24&&(b=0,h="day",w=c(v+=1,w).month,w=d(v,w));var g=this._getYear(s,w,0);k=60*r+k;var x=b===0?v:b;this.timeScaleArray.push({position:k,value:x,unit:h,hour:b,day:v,year:g,month:P.monthMod(w)}),b++}}},{key:"generateMinuteScale",value:function(e){for(var t=e.currentMillisecond,i=e.currentSecond,a=e.currentMinute,s=e.currentHour,r=e.currentDate,n=e.currentMonth,o=e.currentYear,h=e.minutesWidthOnXAxis,c=e.secondsWidthOnXAxis,d=e.numberOfMinutes,u=a+1,p=r,f=n,b=o,v=s,w=(60-i-t/1e3)*c,k=0;k=60&&(u=0,(v+=1)===24&&(v=0)),this.timeScaleArray.push({position:w,value:u,unit:"minute",hour:v,minute:u,day:p,year:this._getYear(b,f,0),month:P.monthMod(f)}),w+=h,u++}},{key:"generateSecondScale",value:function(e){for(var t=e.currentMillisecond,i=e.currentSecond,a=e.currentMinute,s=e.currentHour,r=e.currentDate,n=e.currentMonth,o=e.currentYear,h=e.secondsWidthOnXAxis,c=e.numberOfSeconds,d=i+1,u=a,p=r,f=n,b=o,v=s,w=(1e3-t)/1e3*h,k=0;k=60&&(d=0,++u>=60&&(u=0,++v===24&&(v=0))),this.timeScaleArray.push({position:w,value:d,unit:"second",hour:v,minute:u,second:d,day:p,year:this._getYear(b,f,0),month:P.monthMod(f)}),w+=h,d++}},{key:"createRawDateString",value:function(e,t){var i=e.year;return e.month===0&&(e.month=1),i+="-"+("0"+e.month.toString()).slice(-2),e.unit==="day"?i+=e.unit==="day"?"-"+("0"+t).slice(-2):"-01":i+="-"+("0"+(e.day?e.day:"1")).slice(-2),e.unit==="hour"?i+=e.unit==="hour"?"T"+("0"+t).slice(-2):"T00":i+="T"+("0"+(e.hour?e.hour:"0")).slice(-2),e.unit==="minute"?i+=":"+("0"+t).slice(-2):i+=":"+(e.minute?("0"+e.minute).slice(-2):"00"),e.unit==="second"?i+=":"+("0"+t).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(e){var t=this,i=this.w;return e.map(function(a){var s=a.value.toString(),r=new j(t.ctx),n=t.createRawDateString(a,s),o=r.getDate(r.parseDate(n));if(t.utc||(o=r.getDate(r.parseDateWithTimezone(n))),i.config.xaxis.labels.format===void 0){var h="dd MMM",c=i.config.xaxis.labels.datetimeFormatter;a.unit==="year"&&(h=c.year),a.unit==="month"&&(h=c.month),a.unit==="day"&&(h=c.day),a.unit==="hour"&&(h=c.hour),a.unit==="minute"&&(h=c.minute),a.unit==="second"&&(h=c.second),s=r.formatDate(o,h)}else s=r.formatDate(o,i.config.xaxis.labels.format);return{dateString:n,position:a.position,value:s,unit:a.unit,year:a.year,month:a.month}})}},{key:"removeOverlappingTS",value:function(e){var t,i=this,a=new z(this.ctx),s=!1;e.length>0&&e[0].value&&e.every(function(o){return o.value.length===e[0].value.length})&&(s=!0,t=a.getTextRects(e[0].value).width);var r=0,n=e.map(function(o,h){if(h>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var c=s?t:a.getTextRects(e[r].value).width,d=e[r].position;return o.position>d+c+10?(r=h,o):null}return o});return n=n.filter(function(o){return o!==null})}},{key:"_getYear",value:function(e,t,i){return e+Math.floor(t/12)+i}}]),m}(),qt=function(){function m(e,t){F(this,m),this.ctx=t,this.w=t.w,this.el=e}return R(m,[{key:"setupElements",value:function(){var e=this.w.globals,t=this.w.config,i=t.chart.type;e.axisCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"].indexOf(i)>-1,e.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].indexOf(i)>-1,e.isBarHorizontal=(t.chart.type==="bar"||t.chart.type==="rangeBar"||t.chart.type==="boxPlot")&&t.plotOptions.bar.horizontal,e.chartClass=".apexcharts"+e.chartID,e.dom.baseEl=this.el,e.dom.elWrap=document.createElement("div"),z.setAttrs(e.dom.elWrap,{id:e.chartClass.substring(1),class:"apexcharts-canvas "+e.chartClass.substring(1)}),this.el.appendChild(e.dom.elWrap),e.dom.Paper=new window.SVG.Doc(e.dom.elWrap),e.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(t.chart.offsetX,", ").concat(t.chart.offsetY,")")}),e.dom.Paper.node.style.background=t.theme.mode!=="dark"||t.chart.background?t.chart.background:"rgba(0, 0, 0, 0.8)",this.setSVGDimensions(),e.dom.elLegendForeign=document.createElementNS(e.SVGNS,"foreignObject"),z.setAttrs(e.dom.elLegendForeign,{x:0,y:0,width:e.svgWidth,height:e.svgHeight}),e.dom.elLegendWrap=document.createElement("div"),e.dom.elLegendWrap.classList.add("apexcharts-legend"),e.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),e.dom.elLegendForeign.appendChild(e.dom.elLegendWrap),e.dom.Paper.node.appendChild(e.dom.elLegendForeign),e.dom.elGraphical=e.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),e.dom.elDefs=e.dom.Paper.defs(),e.dom.Paper.add(e.dom.elGraphical),e.dom.elGraphical.add(e.dom.elDefs)}},{key:"plotChartType",value:function(e,t){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},n={series:[],i:[]},o={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]},d={series:[],i:[]},u={series:[],i:[]},p={series:[],i:[]},f={series:[],seriesRangeEnd:[],i:[]};s.series.map(function(A,S){var L=0;e[S].type!==void 0?(e[S].type==="column"||e[S].type==="bar"?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),c.series.push(A),c.i.push(S),L++,i.globals.columnSeries=c.series):e[S].type==="area"?(n.series.push(A),n.i.push(S),L++):e[S].type==="line"?(r.series.push(A),r.i.push(S),L++):e[S].type==="scatter"?(o.series.push(A),o.i.push(S)):e[S].type==="bubble"?(h.series.push(A),h.i.push(S),L++):e[S].type==="candlestick"?(d.series.push(A),d.i.push(S),L++):e[S].type==="boxPlot"?(u.series.push(A),u.i.push(S),L++):e[S].type==="rangeBar"?(p.series.push(A),p.i.push(S),L++):e[S].type==="rangeArea"?(f.series.push(s.seriesRangeStart[S]),f.seriesRangeEnd.push(s.seriesRangeEnd[S]),f.i.push(S),L++):console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble/candlestick/boxPlot/rangeBar/rangeArea"),L>1&&(s.comboCharts=!0)):(r.series.push(A),r.i.push(S))});var b=new Me(this.ctx,t),v=new Ce(this.ctx,t);this.ctx.pie=new st(this.ctx);var w=new Wt(this.ctx);this.ctx.rangeBar=new Bt(this.ctx,t);var k=new Nt(this.ctx),l=[];if(s.comboCharts){if(n.series.length>0&&l.push(b.draw(n.series,"area",n.i)),c.series.length>0)if(i.config.chart.stacked){var g=new We(this.ctx,t);l.push(g.draw(c.series,c.i))}else this.ctx.bar=new ne(this.ctx,t),l.push(this.ctx.bar.draw(c.series,c.i));if(f.series.length>0&&l.push(b.draw(f.series,"rangeArea",f.i,f.seriesRangeEnd)),r.series.length>0&&l.push(b.draw(r.series,"line",r.i)),d.series.length>0&&l.push(v.draw(d.series,"candlestick",d.i)),u.series.length>0&&l.push(v.draw(u.series,"boxPlot",u.i)),p.series.length>0&&l.push(this.ctx.rangeBar.draw(p.series,p.i)),o.series.length>0){var x=new Me(this.ctx,t,!0);l.push(x.draw(o.series,"scatter",o.i))}if(h.series.length>0){var y=new Me(this.ctx,t,!0);l.push(y.draw(h.series,"bubble",h.i))}}else switch(a.chart.type){case"line":l=b.draw(s.series,"line");break;case"area":l=b.draw(s.series,"area");break;case"bar":a.chart.stacked?l=new We(this.ctx,t).draw(s.series):(this.ctx.bar=new ne(this.ctx,t),l=this.ctx.bar.draw(s.series));break;case"candlestick":l=new Ce(this.ctx,t).draw(s.series,"candlestick");break;case"boxPlot":l=new Ce(this.ctx,t).draw(s.series,a.chart.type);break;case"rangeBar":l=this.ctx.rangeBar.draw(s.series);break;case"rangeArea":l=b.draw(s.seriesRangeStart,"rangeArea",void 0,s.seriesRangeEnd);break;case"heatmap":l=new Ot(this.ctx,t).draw(s.series);break;case"treemap":l=new jt(this.ctx,t).draw(s.series);break;case"pie":case"donut":case"polarArea":l=this.ctx.pie.draw(s.series);break;case"radialBar":l=w.draw(s.series);break;case"radar":l=k.draw(s.series);break;default:l=b.draw(s.series)}return l}},{key:"setSVGDimensions",value:function(){var e=this.w.globals,t=this.w.config;e.svgWidth=t.chart.width,e.svgHeight=t.chart.height;var i=P.getDimensions(this.el),a=t.chart.width.toString().split(/[0-9]+/g).pop();a==="%"?P.isNumber(i[0])&&(i[0].width===0&&(i=P.getDimensions(this.el.parentNode)),e.svgWidth=i[0]*parseInt(t.chart.width,10)/100):a!=="px"&&a!==""||(e.svgWidth=parseInt(t.chart.width,10));var s=t.chart.height.toString().split(/[0-9]+/g).pop();if(e.svgHeight!=="auto"&&e.svgHeight!=="")if(s==="%"){var r=P.getDimensions(this.el.parentNode);e.svgHeight=r[1]*parseInt(t.chart.height,10)/100}else e.svgHeight=parseInt(t.chart.height,10);else e.axisCharts?e.svgHeight=e.svgWidth/1.61:e.svgHeight=e.svgWidth/1.2;if(e.svgWidth<0&&(e.svgWidth=0),e.svgHeight<0&&(e.svgHeight=0),z.setAttrs(e.dom.Paper.node,{width:e.svgWidth,height:e.svgHeight}),s!=="%"){var n=t.chart.sparkline.enabled?0:e.axisCharts?t.chart.parentHeightOffset:0;e.dom.Paper.node.parentNode.parentNode.style.minHeight=e.svgHeight+n+"px"}e.dom.elWrap.style.width=e.svgWidth+"px",e.dom.elWrap.style.height=e.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var e=this.w.globals,t=e.translateY,i={transform:"translate("+e.translateX+", "+t+")"};z.setAttrs(e.dom.elGraphical.node,i)}},{key:"resizeNonAxisCharts",value:function(){var e=this.w,t=e.globals,i=0,a=e.config.chart.sparkline.enabled?1:15;a+=e.config.grid.padding.bottom,e.config.legend.position!=="top"&&e.config.legend.position!=="bottom"||!e.config.legend.show||e.config.legend.floating||(i=new Qe(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=e.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),r=2.05*e.globals.radialSize;if(s&&!e.config.chart.sparkline.enabled&&e.config.plotOptions.radialBar.startAngle!==0){var n=P.getBoundingClientRect(s);r=n.bottom;var o=n.bottom-n.top;r=Math.max(2.05*e.globals.radialSize,o)}var h=r+t.translateY+i+a;t.dom.elLegendForeign&&t.dom.elLegendForeign.setAttribute("height",h),e.config.chart.height&&String(e.config.chart.height).indexOf("%")>0||(t.dom.elWrap.style.height=h+"px",z.setAttrs(t.dom.Paper.node,{height:h}),t.dom.Paper.node.parentNode.parentNode.style.minHeight=h+"px")}},{key:"coreCalculations",value:function(){new Xe(this.ctx).init()}},{key:"resetGlobals",value:function(){var e=this,t=function(){return e.w.config.series.map(function(s){return[]})},i=new qe,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=t(),a.seriesYvalues=t()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var e=null,t=this.w;if(t.globals.axisCharts){if(t.config.xaxis.crosshairs.position==="back"&&new Ee(this.ctx).drawXCrosshairs(),t.config.yaxis[0].crosshairs.position==="back"&&new Ee(this.ctx).drawYCrosshairs(),t.config.xaxis.type==="datetime"&&t.config.xaxis.labels.formatter===void 0){this.ctx.timeScale=new Ut(this.ctx);var i=[];isFinite(t.globals.minX)&&isFinite(t.globals.maxX)&&!t.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minX,t.globals.maxX):t.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minY,t.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}e=new G(this.ctx).getCalculatedRatios()}return e}},{key:"updateSourceChart",value:function(e){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:e.w.globals.minX,max:e.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var e=this,t=this.w;if(t.config.chart.brush.enabled&&typeof t.config.chart.events.selection!="function"){var i=Array.isArray(t.config.chart.brush.targets)||[t.config.chart.brush.target];i.forEach(function(a){var s=ApexCharts.getChartByID(a);s.w.globals.brushSource=e.ctx,typeof s.w.config.chart.events.zoomed!="function"&&(s.w.config.chart.events.zoomed=function(){e.updateSourceChart(s)}),typeof s.w.config.chart.events.scrolled!="function"&&(s.w.config.chart.events.scrolled=function(){e.updateSourceChart(s)})}),t.config.chart.events.selection=function(a,s){i.forEach(function(r){var n=ApexCharts.getChartByID(r),o=P.clone(t.config.yaxis);if(t.config.chart.brush.autoScaleYaxis&&n.w.globals.series.length===1){var h=new re(n);o=h.autoScaleY(n,o,s)}var c=n.w.config.yaxis.reduce(function(d,u,p){return[].concat(Z(d),[E(E({},n.w.config.yaxis[p]),{},{min:o[0].min,max:o[0].max})])},[]);n.ctx.updateHelpers._updateOptions({xaxis:{min:s.xaxis.min,max:s.xaxis.max},yaxis:c},!1,!1,!1,!1)})}}}}]),m}(),Zt=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"_updateOptions",value:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0&&arguments[1],a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],s=!(arguments.length>3&&arguments[3]!==void 0)||arguments[3],r=arguments.length>4&&arguments[4]!==void 0&&arguments[4];return new Promise(function(n){var o=[t.ctx];s&&(o=t.ctx.getSyncedCharts()),t.ctx.w.globals.isExecCalled&&(o=[t.ctx],t.ctx.w.globals.isExecCalled=!1),o.forEach(function(h,c){var d=h.w;if(d.globals.shouldAnimate=a,i||(d.globals.resized=!0,d.globals.dataChanged=!0,a&&h.series.getPreviousPaths()),e&&V(e)==="object"&&(h.config=new ce(e),e=G.extendArrayProps(h.config,e,d),h.w.globals.chartID!==t.ctx.w.globals.chartID&&delete e.series,d.config=P.extend(d.config,e),r&&(d.globals.lastXAxis=e.xaxis?P.clone(e.xaxis):[],d.globals.lastYAxis=e.yaxis?P.clone(e.yaxis):[],d.globals.initialConfig=P.extend({},d.config),d.globals.initialSeries=P.clone(d.config.series),e.series))){for(var u=0;u2&&arguments[2]!==void 0&&arguments[2];return new Promise(function(s){var r,n=i.w;return n.globals.shouldAnimate=t,n.globals.dataChanged=!0,t&&i.ctx.series.getPreviousPaths(),n.globals.axisCharts?((r=e.map(function(o,h){return i._extendSeries(o,h)})).length===0&&(r=[{data:[]}]),n.config.series=r):n.config.series=e.slice(),a&&(n.globals.initialConfig.series=P.clone(n.config.series),n.globals.initialSeries=P.clone(n.config.series)),i.ctx.update().then(function(){s(i.ctx)})})}},{key:"_extendSeries",value:function(e,t){var i=this.w,a=i.config.series[t];return E(E({},i.config.series[t]),{},{name:e.name?e.name:a?.name,color:e.color?e.color:a?.color,type:e.type?e.type:a?.type,group:e.group?e.group:a?.group,data:e.data?e.data:a?.data,zIndex:e.zIndex!==void 0?e.zIndex:t})}},{key:"toggleDataPointSelection",value:function(e,t){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(e,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"'], ").concat(s," circle[j='").concat(t,"'], ").concat(s," rect[j='").concat(t,"']")).members[0]:t===void 0&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"']")).members[0],i.config.chart.type!=="pie"&&i.config.chart.type!=="polarArea"&&i.config.chart.type!=="donut"||this.ctx.pie.pieClicked(e)),a?(new z(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(e){var t=this.w;if(["min","max"].forEach(function(a){e.xaxis[a]!==void 0&&(t.config.xaxis[a]=e.xaxis[a],t.globals.lastXAxis[a]=e.xaxis[a])}),e.xaxis.categories&&e.xaxis.categories.length&&(t.config.xaxis.categories=e.xaxis.categories),t.config.xaxis.convertedCatToNumeric){var i=new he(e);e=i.convertCatToNumericXaxis(e,this.ctx)}return e}},{key:"forceYAxisUpdate",value:function(e){return e.chart&&e.chart.stacked&&e.chart.stackType==="100%"&&(Array.isArray(e.yaxis)?e.yaxis.forEach(function(t,i){e.yaxis[i].min=0,e.yaxis[i].max=100}):(e.yaxis.min=0,e.yaxis.max=100)),e}},{key:"revertDefaultAxisMinMax",value:function(e){var t=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;e&&e.xaxis&&(a=e.xaxis),e&&e.yaxis&&(s=e.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(n){s[n]!==void 0&&(i.config.yaxis[n].min=s[n].min,i.config.yaxis[n].max=s[n].max)};i.config.yaxis.map(function(n,o){i.globals.zoomed||s[o]!==void 0?r(o):t.ctx.opts.yaxis[o]!==void 0&&(n.min=t.ctx.opts.yaxis[o].min,n.max=t.ctx.opts.yaxis[o].max)})}}]),m}();K=typeof window<"u"?window:void 0,le=function(m,e){var t=(this!==void 0?this:m).SVG=function(l){if(t.supported)return l=new t.Doc(l),t.parser.draw||t.prepare(),l};if(t.ns="http://www.w3.org/2000/svg",t.xmlns="http://www.w3.org/2000/xmlns/",t.xlink="http://www.w3.org/1999/xlink",t.svgjs="http://svgjs.dev",t.supported=!0,!t.supported)return!1;t.did=1e3,t.eid=function(l){return"Svgjs"+c(l)+t.did++},t.create=function(l){var g=e.createElementNS(this.ns,l);return g.setAttribute("id",this.eid(l)),g},t.extend=function(){var l,g;g=(l=[].slice.call(arguments)).pop();for(var x=l.length-1;x>=0;x--)if(l[x])for(var y in g)l[x].prototype[y]=g[y];t.Set&&t.Set.inherit&&t.Set.inherit()},t.invent=function(l){var g=typeof l.create=="function"?l.create:function(){this.constructor.call(this,t.create(l.create))};return l.inherit&&(g.prototype=new l.inherit),l.extend&&t.extend(g,l.extend),l.construct&&t.extend(l.parent||t.Container,l.construct),g},t.adopt=function(l){return l?l.instance?l.instance:((g=l.nodeName=="svg"?l.parentNode instanceof m.SVGElement?new t.Nested:new t.Doc:l.nodeName=="linearGradient"?new t.Gradient("linear"):l.nodeName=="radialGradient"?new t.Gradient("radial"):t[c(l.nodeName)]?new t[c(l.nodeName)]:new t.Element(l)).type=l.nodeName,g.node=l,l.instance=g,g instanceof t.Doc&&g.namespace().defs(),g.setData(JSON.parse(l.getAttribute("svgjs:data"))||{}),g):null;var g},t.prepare=function(){var l=e.getElementsByTagName("body")[0],g=(l?new t.Doc(l):t.adopt(e.documentElement).nested()).size(2,0);t.parser={body:l||e.documentElement,draw:g.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:g.polyline().node,path:g.path().node,native:t.create("svg")}},t.parser={native:t.create("svg")},e.addEventListener("DOMContentLoaded",function(){t.parser.draw||t.prepare()},!1),t.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},t.utils={map:function(l,g){for(var x=l.length,y=[],A=0;A1?1:l,new t.Color({r:~~(this.r+(this.destination.r-this.r)*l),g:~~(this.g+(this.destination.g-this.g)*l),b:~~(this.b+(this.destination.b-this.b)*l)})):this}}),t.Color.test=function(l){return l+="",t.regex.isHex.test(l)||t.regex.isRgb.test(l)},t.Color.isRgb=function(l){return l&&typeof l.r=="number"&&typeof l.g=="number"&&typeof l.b=="number"},t.Color.isColor=function(l){return t.Color.isRgb(l)||t.Color.test(l)},t.Array=function(l,g){(l=(l||[]).valueOf()).length==0&&g&&(l=g.valueOf()),this.value=this.parse(l)},t.extend(t.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(l){return l=l.valueOf(),Array.isArray(l)?l:this.split(l)}}),t.PointArray=function(l,g){t.Array.call(this,l,g||[[0,0]])},t.PointArray.prototype=new t.Array,t.PointArray.prototype.constructor=t.PointArray;for(var i={M:function(l,g,x){return g.x=x.x=l[0],g.y=x.y=l[1],["M",g.x,g.y]},L:function(l,g){return g.x=l[0],g.y=l[1],["L",l[0],l[1]]},H:function(l,g){return g.x=l[0],["H",l[0]]},V:function(l,g){return g.y=l[0],["V",l[0]]},C:function(l,g){return g.x=l[4],g.y=l[5],["C",l[0],l[1],l[2],l[3],l[4],l[5]]},Q:function(l,g){return g.x=l[2],g.y=l[3],["Q",l[0],l[1],l[2],l[3]]},S:function(l,g){return g.x=l[2],g.y=l[3],["S",l[0],l[1],l[2],l[3]]},Z:function(l,g,x){return g.x=x.x,g.y=x.y,["Z"]}},a="mlhvqtcsaz".split(""),s=0,r=a.length;sL);return y},bbox:function(){return t.parser.draw||t.prepare(),t.parser.path.setAttribute("d",this.toString()),t.parser.path.getBBox()}}),t.Number=t.invent({create:function(l,g){this.value=0,this.unit=g||"",typeof l=="number"?this.value=isNaN(l)?0:isFinite(l)?l:l<0?-34e37:34e37:typeof l=="string"?(g=l.match(t.regex.numberAndUnit))&&(this.value=parseFloat(g[1]),g[5]=="%"?this.value/=100:g[5]=="s"&&(this.value*=1e3),this.unit=g[5]):l instanceof t.Number&&(this.value=l.valueOf(),this.unit=l.unit)},extend:{toString:function(){return(this.unit=="%"?~~(1e8*this.value)/1e6:this.unit=="s"?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(l){return l=new t.Number(l),new t.Number(this+l,this.unit||l.unit)},minus:function(l){return l=new t.Number(l),new t.Number(this-l,this.unit||l.unit)},times:function(l){return l=new t.Number(l),new t.Number(this*l,this.unit||l.unit)},divide:function(l){return l=new t.Number(l),new t.Number(this/l,this.unit||l.unit)},to:function(l){var g=new t.Number(this);return typeof l=="string"&&(g.unit=l),g},morph:function(l){return this.destination=new t.Number(l),l.relative&&(this.destination.value+=this.value),this},at:function(l){return this.destination?new t.Number(this.destination).minus(this).times(l).plus(this):this}}}),t.Element=t.invent({create:function(l){this._stroke=t.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=l)&&(this.type=l.nodeName,this.node.instance=this,this._stroke=l.getAttribute("stroke")||this._stroke)},extend:{x:function(l){return this.attr("x",l)},y:function(l){return this.attr("y",l)},cx:function(l){return l==null?this.x()+this.width()/2:this.x(l-this.width()/2)},cy:function(l){return l==null?this.y()+this.height()/2:this.y(l-this.height()/2)},move:function(l,g){return this.x(l).y(g)},center:function(l,g){return this.cx(l).cy(g)},width:function(l){return this.attr("width",l)},height:function(l){return this.attr("height",l)},size:function(l,g){var x=u(this,l,g);return this.width(new t.Number(x.width)).height(new t.Number(x.height))},clone:function(l){this.writeDataToDom();var g=b(this.node.cloneNode(!0));return l?l.add(g):this.after(g),g},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(l){return this.after(l).remove(),l},addTo:function(l){return l.put(this)},putIn:function(l){return l.add(this)},id:function(l){return this.attr("id",l)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return this.style("display")!="none"},toString:function(){return this.attr("id")},classes:function(){var l=this.attr("class");return l==null?[]:l.trim().split(t.regex.delimiter)},hasClass:function(l){return this.classes().indexOf(l)!=-1},addClass:function(l){if(!this.hasClass(l)){var g=this.classes();g.push(l),this.attr("class",g.join(" "))}return this},removeClass:function(l){return this.hasClass(l)&&this.attr("class",this.classes().filter(function(g){return g!=l}).join(" ")),this},toggleClass:function(l){return this.hasClass(l)?this.removeClass(l):this.addClass(l)},reference:function(l){return t.get(this.attr(l))},parent:function(l){var g=this;if(!g.node.parentNode)return null;if(g=t.adopt(g.node.parentNode),!l)return g;for(;g&&g.node instanceof m.SVGElement;){if(typeof l=="string"?g.matches(l):g instanceof l)return g;if(!g.node.parentNode||g.node.parentNode.nodeName=="#document")return null;g=t.adopt(g.node.parentNode)}},doc:function(){return this instanceof t.Doc?this:this.parent(t.Doc)},parents:function(l){var g=[],x=this;do{if(!(x=x.parent(l))||!x.node)break;g.push(x)}while(x.parent);return g},matches:function(l){return function(g,x){return(g.matches||g.matchesSelector||g.msMatchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.oMatchesSelector).call(g,x)}(this.node,l)},native:function(){return this.node},svg:function(l){var g=e.createElement("svg");if(!(l&&this instanceof t.Parent))return g.appendChild(l=e.createElement("svg")),this.writeDataToDom(),l.appendChild(this.node.cloneNode(!0)),g.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");g.innerHTML=""+l.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var x=0,y=g.firstChild.childNodes.length;x":function(l){return-Math.cos(l*Math.PI)/2+.5},">":function(l){return Math.sin(l*Math.PI/2)},"<":function(l){return 1-Math.cos(l*Math.PI/2)}},t.morph=function(l){return function(g,x){return new t.MorphObj(g,x).at(l)}},t.Situation=t.invent({create:function(l){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new t.Number(l.duration).valueOf(),this.delay=new t.Number(l.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=l.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),t.FX=t.invent({create:function(l){this._target=l,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(l,g,x){V(l)==="object"&&(g=l.ease,x=l.delay,l=l.duration);var y=new t.Situation({duration:l||1e3,delay:x||0,ease:t.easing[g||"-"]||g});return this.queue(y),this},target:function(l){return l&&l instanceof t.Element?(this._target=l,this):this._target},timeToAbsPos:function(l){return(l-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(l){return this.situation.duration/this._speed*l+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=m.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){m.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(l){return(typeof l=="function"||l instanceof t.Situation)&&this.situations.push(l),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof t.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var l,g=this.situation;if(g.init)return this;for(var x in g.animations){l=this.target()[x](),Array.isArray(l)||(l=[l]),Array.isArray(g.animations[x])||(g.animations[x]=[g.animations[x]]);for(var y=l.length;y--;)g.animations[x][y]instanceof t.Number&&(l[y]=new t.Number(l[y])),g.animations[x][y]=l[y].morph(g.animations[x][y])}for(var x in g.attrs)g.attrs[x]=new t.MorphObj(this.target().attr(x),g.attrs[x]);for(var x in g.styles)g.styles[x]=new t.MorphObj(this.target().style(x),g.styles[x]);return g.initialTransformation=this.target().matrixify(),g.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(l,g){var x=this.active;return this.active=!1,g&&this.clearQueue(),l&&this.situation&&(!x&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(l){var g=this.last();return this.target().on("finished.fx",function x(y){y.detail.situation==g&&(l.call(this,g),this.off("finished.fx",x))}),this._callStart()},during:function(l){var g=this.last(),x=function(y){y.detail.situation==g&&l.call(this,y.detail.pos,t.morph(y.detail.pos),y.detail.eased,g)};return this.target().off("during.fx",x).on("during.fx",x),this.after(function(){this.off("during.fx",x)}),this._callStart()},afterAll:function(l){var g=function x(y){l.call(this),this.off("allfinished.fx",x)};return this.target().off("allfinished.fx",g).on("allfinished.fx",g),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(l,g,x){return this.last()[x||"animations"][l]=g,this._callStart()},step:function(l){var g,x,y;l||(this.absPos=this.timeToAbsPos(+new Date)),this.situation.loops!==!1?(g=Math.max(this.absPos,0),x=Math.floor(g),this.situation.loops===!0||xthis.lastPos&&S<=A&&(this.situation.once[S].call(this.target(),this.pos,A),delete this.situation.once[S]);return this.active&&this.target().fire("during",{pos:this.pos,eased:A,fx:this,situation:this.situation}),this.situation?(this.eachAt(),this.pos==1&&!this.situation.reversed||this.situation.reversed&&this.pos==0?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=A,this):this},eachAt:function(){var l,g=this,x=this.target(),y=this.situation;for(var A in y.animations)l=[].concat(y.animations[A]).map(function(C){return typeof C!="string"&&C.at?C.at(y.ease(g.pos),g.pos):C}),x[A].apply(x,l);for(var A in y.attrs)l=[A].concat(y.attrs[A]).map(function(M){return typeof M!="string"&&M.at?M.at(y.ease(g.pos),g.pos):M}),x.attr.apply(x,l);for(var A in y.styles)l=[A].concat(y.styles[A]).map(function(M){return typeof M!="string"&&M.at?M.at(y.ease(g.pos),g.pos):M}),x.style.apply(x,l);if(y.transforms.length){l=y.initialTransformation,A=0;for(var S=y.transforms.length;A=0;--x)this[w[x]]=l[w[x]]!=null?l[w[x]]:g[w[x]]},extend:{extract:function(){var l=p(this,0,1);p(this,1,0);var g=180/Math.PI*Math.atan2(l.y,l.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(g*Math.PI/180)+this.f*Math.sin(g*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(g*Math.PI/180)+this.e*Math.sin(-g*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:g,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new t.Matrix(this)}},clone:function(){return new t.Matrix(this)},morph:function(l){return this.destination=new t.Matrix(l),this},multiply:function(l){return new t.Matrix(this.native().multiply(function(g){return g instanceof t.Matrix||(g=new t.Matrix(g)),g}(l).native()))},inverse:function(){return new t.Matrix(this.native().inverse())},translate:function(l,g){return new t.Matrix(this.native().translate(l||0,g||0))},native:function(){for(var l=t.parser.native.createSVGMatrix(),g=w.length-1;g>=0;g--)l[w[g]]=this[w[g]];return l},toString:function(){return"matrix("+v(this.a)+","+v(this.b)+","+v(this.c)+","+v(this.d)+","+v(this.e)+","+v(this.f)+")"}},parent:t.Element,construct:{ctm:function(){return new t.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof t.Nested){var l=this.rect(1,1),g=l.node.getScreenCTM();return l.remove(),new t.Matrix(g)}return new t.Matrix(this.node.getScreenCTM())}}}),t.Point=t.invent({create:function(l,g){var x;x=Array.isArray(l)?{x:l[0],y:l[1]}:V(l)==="object"?{x:l.x,y:l.y}:l!=null?{x:l,y:g??l}:{x:0,y:0},this.x=x.x,this.y=x.y},extend:{clone:function(){return new t.Point(this)},morph:function(l,g){return this.destination=new t.Point(l,g),this}}}),t.extend(t.Element,{point:function(l,g){return new t.Point(l,g).transform(this.screenCTM().inverse())}}),t.extend(t.Element,{attr:function(l,g,x){if(l==null){for(l={},x=(g=this.node.attributes).length-1;x>=0;x--)l[g[x].nodeName]=t.regex.isNumber.test(g[x].nodeValue)?parseFloat(g[x].nodeValue):g[x].nodeValue;return l}if(V(l)==="object")for(var y in l)this.attr(y,l[y]);else if(g===null)this.node.removeAttribute(l);else{if(g==null)return(g=this.node.getAttribute(l))==null?t.defaults.attrs[l]:t.regex.isNumber.test(g)?parseFloat(g):g;l=="stroke-width"?this.attr("stroke",parseFloat(g)>0?this._stroke:null):l=="stroke"&&(this._stroke=g),l!="fill"&&l!="stroke"||(t.regex.isImage.test(g)&&(g=this.doc().defs().image(g,0,0)),g instanceof t.Image&&(g=this.doc().defs().pattern(0,0,function(){this.add(g)}))),typeof g=="number"?g=new t.Number(g):t.Color.isColor(g)?g=new t.Color(g):Array.isArray(g)&&(g=new t.Array(g)),l=="leading"?this.leading&&this.leading(g):typeof x=="string"?this.node.setAttributeNS(x,l,g.toString()):this.node.setAttribute(l,g.toString()),!this.rebuild||l!="font-size"&&l!="x"||this.rebuild(l,g)}return this}}),t.extend(t.Element,{transform:function(l,g){var x;return V(l)!=="object"?(x=new t.Matrix(this).extract(),typeof l=="string"?x[l]:x):(x=new t.Matrix(this),g=!!g||!!l.relative,l.a!=null&&(x=g?x.multiply(new t.Matrix(l)):new t.Matrix(l)),this.attr("transform",x))}}),t.extend(t.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(t.regex.transforms).slice(0,-1).map(function(l){var g=l.trim().split("(");return[g[0],g[1].split(t.regex.delimiter).map(function(x){return parseFloat(x)})]}).reduce(function(l,g){return g[0]=="matrix"?l.multiply(f(g[1])):l[g[0]].apply(l,g[1])},new t.Matrix)},toParent:function(l){if(this==l)return this;var g=this.screenCTM(),x=l.screenCTM().inverse();return this.addTo(l).untransform().transform(x.multiply(g)),this},toDoc:function(){return this.toParent(this.doc())}}),t.Transformation=t.invent({create:function(l,g){if(arguments.length>1&&typeof g!="boolean")return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(l))for(var x=0,y=this.arguments.length;x=0},index:function(l){return[].slice.call(this.node.childNodes).indexOf(l.node)},get:function(l){return t.adopt(this.node.childNodes[l])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(l,g){for(var x=this.children(),y=0,A=x.length;y=0;g--)l.childNodes[g]instanceof m.SVGElement&&b(l.childNodes[g]);return t.adopt(l).id(t.eid(l.nodeName))}function v(l){return Math.abs(l)>1e-37?l:0}["fill","stroke"].forEach(function(l){var g={};g[l]=function(x){if(x===void 0)return this;if(typeof x=="string"||t.Color.isRgb(x)||x&&typeof x.fill=="function")this.attr(l,x);else for(var y=n[l].length-1;y>=0;y--)x[n[l][y]]!=null&&this.attr(n.prefix(l,n[l][y]),x[n[l][y]]);return this},t.extend(t.Element,t.FX,g)}),t.extend(t.Element,t.FX,{translate:function(l,g){return this.transform({x:l,y:g})},matrix:function(l){return this.attr("transform",new t.Matrix(arguments.length==6?[].slice.call(arguments):l))},opacity:function(l){return this.attr("opacity",l)},dx:function(l){return this.x(new t.Number(l).plus(this instanceof t.FX?0:this.x()),!0)},dy:function(l){return this.y(new t.Number(l).plus(this instanceof t.FX?0:this.y()),!0)}}),t.extend(t.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(l){return this.node.getPointAtLength(l)}}),t.Set=t.invent({create:function(l){Array.isArray(l)?this.members=l:this.clear()},extend:{add:function(){for(var l=[].slice.call(arguments),g=0,x=l.length;g-1&&this.members.splice(g,1),this},each:function(l){for(var g=0,x=this.members.length;g=0},index:function(l){return this.members.indexOf(l)},get:function(l){return this.members[l]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(l){return new t.Set(l)}}}),t.FX.Set=t.invent({create:function(l){this.set=l}}),t.Set.inherit=function(){var l=[];for(var g in t.Shape.prototype)typeof t.Shape.prototype[g]=="function"&&typeof t.Set.prototype[g]!="function"&&l.push(g);for(var g in l.forEach(function(y){t.Set.prototype[y]=function(){for(var A=0,S=this.members.length;A=0;l--)delete this.memory()[arguments[l]];return this},memory:function(){return this._memory||(this._memory={})}}),t.get=function(l){var g=e.getElementById(function(x){var y=(x||"").toString().match(t.regex.reference);if(y)return y[1]}(l)||l);return t.adopt(g)},t.select=function(l,g){return new t.Set(t.utils.map((g||e).querySelectorAll(l),function(x){return t.adopt(x)}))},t.extend(t.Parent,{select:function(l){return t.select(l,this.node)}});var w="abcdef".split("");if(typeof m.CustomEvent!="function"){var k=function(l,g){g=g||{bubbles:!1,cancelable:!1,detail:void 0};var x=e.createEvent("CustomEvent");return x.initCustomEvent(l,g.bubbles,g.cancelable,g.detail),x};k.prototype=m.Event.prototype,t.CustomEvent=k}else t.CustomEvent=m.CustomEvent;return t},typeof define=="function"&&define.amd?define(function(){return le(K,K.document)}):(typeof Ye>"u"?"undefined":V(Ye))==="object"&&typeof ve<"u"?ve.exports=K.document?le(K,K.document):function(m){return le(m,m.document)}:K.SVG=le(K,K.document),function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(r,n){return this.add(r,n),!r.attr("in")&&this.autoSetIn&&r.attr("in",this.source),r.attr("result")||r.attr("result",r),r},blend:function(r,n,o){return this.put(new SVG.BlendEffect(r,n,o))},colorMatrix:function(r,n){return this.put(new SVG.ColorMatrixEffect(r,n))},convolveMatrix:function(r){return this.put(new SVG.ConvolveMatrixEffect(r))},componentTransfer:function(r){return this.put(new SVG.ComponentTransferEffect(r))},composite:function(r,n,o){return this.put(new SVG.CompositeEffect(r,n,o))},flood:function(r,n){return this.put(new SVG.FloodEffect(r,n))},offset:function(r,n){return this.put(new SVG.OffsetEffect(r,n))},image:function(r){return this.put(new SVG.ImageEffect(r))},merge:function(){var r=[void 0];for(var n in arguments)r.push(arguments[n]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,r)))},gaussianBlur:function(r,n){return this.put(new SVG.GaussianBlurEffect(r,n))},morphology:function(r,n){return this.put(new SVG.MorphologyEffect(r,n))},diffuseLighting:function(r,n,o){return this.put(new SVG.DiffuseLightingEffect(r,n,o))},displacementMap:function(r,n,o,h,c){return this.put(new SVG.DisplacementMapEffect(r,n,o,h,c))},specularLighting:function(r,n,o,h){return this.put(new SVG.SpecularLightingEffect(r,n,o,h))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(r,n,o,h,c){return this.put(new SVG.TurbulenceEffect(r,n,o,h,c))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(r){var n=this.put(new SVG.Filter);return typeof r=="function"&&r.call(n,n),n}}),SVG.extend(SVG.Container,{filter:function(r){return this.defs().filter(r)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(r){return this.filterer=r instanceof SVG.Element?r:this.doc().filter(r),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(r){return this.filterer&&r===!0&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(r){return r==null?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",r)},result:function(r){return r==null?this.attr("result"):this.attr("result",r)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(r){return r==null?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",r)},result:function(r){return r==null?this.attr("result"):this.attr("result",r)},toString:function(){return this.result()}}});var m={blend:function(r,n){return this.parent()&&this.parent().blend(this,r,n)},colorMatrix:function(r,n){return this.parent()&&this.parent().colorMatrix(r,n).in(this)},convolveMatrix:function(r){return this.parent()&&this.parent().convolveMatrix(r).in(this)},componentTransfer:function(r){return this.parent()&&this.parent().componentTransfer(r).in(this)},composite:function(r,n){return this.parent()&&this.parent().composite(this,r,n)},flood:function(r,n){return this.parent()&&this.parent().flood(r,n)},offset:function(r,n){return this.parent()&&this.parent().offset(r,n).in(this)},image:function(r){return this.parent()&&this.parent().image(r)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(r,n){return this.parent()&&this.parent().gaussianBlur(r,n).in(this)},morphology:function(r,n){return this.parent()&&this.parent().morphology(r,n).in(this)},diffuseLighting:function(r,n,o){return this.parent()&&this.parent().diffuseLighting(r,n,o).in(this)},displacementMap:function(r,n,o,h){return this.parent()&&this.parent().displacementMap(this,r,n,o,h)},specularLighting:function(r,n,o,h){return this.parent()&&this.parent().specularLighting(r,n,o,h).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(r,n,o,h,c){return this.parent()&&this.parent().turbulence(r,n,o,h,c).in(this)}};SVG.extend(SVG.Effect,m),SVG.extend(SVG.ParentEffect,m),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(r){this.attr("in",r)}}});var e={blend:function(r,n,o){this.attr({in:r,in2:n,mode:o||"normal"})},colorMatrix:function(r,n){r=="matrix"&&(n=a(n)),this.attr({type:r,values:n===void 0?null:n})},convolveMatrix:function(r){r=a(r),this.attr({order:Math.sqrt(r.split(" ").length),kernelMatrix:r})},composite:function(r,n,o){this.attr({in:r,in2:n,operator:o})},flood:function(r,n){this.attr("flood-color",r),n!=null&&this.attr("flood-opacity",n)},offset:function(r,n){this.attr({dx:r,dy:n})},image:function(r){this.attr("href",r,SVG.xlink)},displacementMap:function(r,n,o,h,c){this.attr({in:r,in2:n,scale:o,xChannelSelector:h,yChannelSelector:c})},gaussianBlur:function(r,n){r!=null||n!=null?this.attr("stdDeviation",function(o){if(!Array.isArray(o))return o;for(var h=0,c=o.length,d=[];h1&&(W*=c=Math.sqrt(c),N*=c),d=new SVG.Matrix().rotate(B).scale(1/W,1/N).rotate(-B),q=q.transform(d),_=_.transform(d),u=[_.x-q.x,_.y-q.y],f=u[0]*u[0]+u[1]*u[1],p=Math.sqrt(f),u[0]/=p,u[1]/=p,b=f<4?Math.sqrt(1-f/4):0,J===te&&(b*=-1),v=new SVG.Point((_.x+q.x)/2+b*-u[1],(_.y+q.y)/2+b*u[0]),w=new SVG.Point(q.x-v.x,q.y-v.y),k=new SVG.Point(_.x-v.x,_.y-v.y),l=Math.acos(w.x/Math.sqrt(w.x*w.x+w.y*w.y)),w.y<0&&(l*=-1),g=Math.acos(k.x/Math.sqrt(k.x*k.x+k.y*k.y)),k.y<0&&(g*=-1),te&&l>g&&(g+=2*Math.PI),!te&&lr.maxX-t.width&&(n=(a=r.maxX-t.width)-this.startPoints.box.x),r.minY!=null&&sr.maxY-t.height&&(o=(s=r.maxY-t.height)-this.startPoints.box.y),r.snapToGrid!=null&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,n-=n%r.snapToGrid,o-=o%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:n,y:o},!0):this.el.move(a,s));return i},m.prototype.end=function(e){var t=this.drag(e);this.el.fire("dragend",{event:e,p:t,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,t){typeof e!="function"&&typeof e!="object"||(t=e,e=!0);var i=this.remember("_draggable")||new m(this);return(e=e===void 0||e)?i.init(t||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function m(e){this.el=e,e.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,i,a){var s=typeof t!="string"?t:i[t];return a?s/2:s},this.pointCoords=function(t,i){var a=this.pointsList[t];return{x:this.pointCoord(a[0],i,t==="t"||t==="b"),y:this.pointCoord(a[1],i,t==="r"||t==="l")}}}m.prototype.init=function(e,t){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],t[s]!==void 0&&(this.options[s]=t[s]);var r=["points","pointsExclude"];for(var s in r){var n=this.options[r[s]];typeof n=="string"?n=n.length>0?n.split(/\s*,\s*/i):[]:typeof n=="boolean"&&r[s]==="points"&&(n=n?a:[]),this.options[r[s]]=n}this.options.points=[a,this.options.points].reduce(function(o,h){return o.filter(function(c){return h.indexOf(c)>-1})}),this.options.points=[this.options.points,this.options.pointsExclude].reduce(function(o,h){return o.filter(function(c){return h.indexOf(c)<0})}),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&["line","polyline","polygon"].indexOf(this.el.type)!==-1?this.selectPoints(e):this.selectRect(e),this.observe(),this.cleanup()},m.prototype.selectPoints=function(e){return this.pointSelection.isSelected=e,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},m.prototype.getPointArray=function(){var e=this.el.bbox();return this.el.array().valueOf().map(function(t){return[t[0]-e.x,t[1]-e.y]})},m.prototype.drawPoints=function(){for(var e=this,t=this.getPointArray(),i=0,a=t.length;i0&&this.parameters.box.height-n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x+n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-n[0]);n=this.checkAspectRatio(n),this.el.move(this.parameters.box.x+n[0],this.parameters.box.y+n[1]).size(this.parameters.box.width-n[0],this.parameters.box.height-n[1])}};break;case"rt":this.calc=function(s,r){var n=this.snapToGrid(s,r,2);if(this.parameters.box.width+n[0]>0&&this.parameters.box.height-n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x-n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+n[0]);n=this.checkAspectRatio(n,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+n[1]).size(this.parameters.box.width+n[0],this.parameters.box.height-n[1])}};break;case"rb":this.calc=function(s,r){var n=this.snapToGrid(s,r,0);if(this.parameters.box.width+n[0]>0&&this.parameters.box.height+n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x-n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+n[0]);n=this.checkAspectRatio(n),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+n[0],this.parameters.box.height+n[1])}};break;case"lb":this.calc=function(s,r){var n=this.snapToGrid(s,r,1);if(this.parameters.box.width-n[0]>0&&this.parameters.box.height+n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x+n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-n[0]);n=this.checkAspectRatio(n,!0),this.el.move(this.parameters.box.x+n[0],this.parameters.box.y).size(this.parameters.box.width-n[0],this.parameters.box.height+n[1])}};break;case"t":this.calc=function(s,r){var n=this.snapToGrid(s,r,2);if(this.parameters.box.height-n[1]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y+n[1]).height(this.parameters.box.height-n[1])}};break;case"r":this.calc=function(s,r){var n=this.snapToGrid(s,r,0);if(this.parameters.box.width+n[0]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+n[0])}};break;case"b":this.calc=function(s,r){var n=this.snapToGrid(s,r,0);if(this.parameters.box.height+n[1]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+n[1])}};break;case"l":this.calc=function(s,r){var n=this.snapToGrid(s,r,1);if(this.parameters.box.width-n[0]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x+n[0],this.parameters.box.y).width(this.parameters.box.width-n[0])}};break;case"rot":this.calc=function(s,r){var n=s+this.parameters.p.x,o=r+this.parameters.p.y,h=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),c=Math.atan2(o-this.parameters.box.y-this.parameters.box.height/2,n-this.parameters.box.x-this.parameters.box.width/2),d=this.parameters.rotation+180*(c-h)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(d-d%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(s,r){var n=this.snapToGrid(s,r,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),o=this.el.array().valueOf();o[this.parameters.i][0]=this.parameters.pointCoords[0]+n[0],o[this.parameters.i][1]=this.parameters.pointCoords[1]+n[1],this.el.plot(o)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:e}),SVG.on(window,"touchmove.resize",function(s){t.update(s||window.event)}),SVG.on(window,"touchend.resize",function(){t.done()}),SVG.on(window,"mousemove.resize",function(s){t.update(s||window.event)}),SVG.on(window,"mouseup.resize",function(){t.done()})},m.prototype.update=function(e){if(e){var t=this._extractPosition(e),i=this.transformPoint(t.x,t.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:e})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},m.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},m.prototype.snapToGrid=function(e,t,i,a){var s;return a!==void 0?s=[(i+e)%this.options.snapToGrid,(a+t)%this.options.snapToGrid]:(i=i??3,s=[(this.parameters.box.x+e+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+t+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),e<0&&(s[0]-=this.options.snapToGrid),t<0&&(s[1]-=this.options.snapToGrid),e-=Math.abs(s[0])n.maxX&&(e=n.maxX-s),n.minY!==void 0&&r+tn.maxY&&(t=n.maxY-r),[e,t]},m.prototype.checkAspectRatio=function(e,t){if(!this.options.saveAspectRatio)return e;var i=e.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+e[0],r=this.parameters.box.height-e[1],n=s/r;return na&&(i[0]=this.parameters.box.width-r*a,t&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new m(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),window.Apex===void 0&&(window.Apex={});var Ge=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"initModules",value:function(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","isSeriesHidden","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","exportToCSV","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","mouseleave","touchstart","touchmove","touchleave","mouseup","touchend"],this.ctx.animations=new oe(this.ctx),this.ctx.axes=new At(this.ctx),this.ctx.core=new qt(this.ctx.el,this.ctx),this.ctx.config=new ce({}),this.ctx.data=new $e(this.ctx),this.ctx.grid=new Je(this.ctx),this.ctx.graphics=new z(this.ctx),this.ctx.coreUtils=new G(this.ctx),this.ctx.crosshairs=new Ee(this.ctx),this.ctx.events=new wt(this.ctx),this.ctx.exports=new be(this.ctx),this.ctx.localization=new kt(this.ctx),this.ctx.options=new ie,this.ctx.responsive=new St(this.ctx),this.ctx.series=new $(this.ctx),this.ctx.theme=new Ct(this.ctx),this.ctx.formatters=new pe(this.ctx),this.ctx.titleSubtitle=new Lt(this.ctx),this.ctx.legend=new Qe(this.ctx),this.ctx.toolbar=new Ke(this.ctx),this.ctx.tooltip=new Ne(this.ctx),this.ctx.dimensions=new me(this.ctx),this.ctx.updateHelpers=new Zt(this.ctx),this.ctx.zoomPanSelection=new Xt(this.ctx),this.ctx.w.globals.tooltip=new Ne(this.ctx)}}]),m}(),Ve=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"clear",value:function(e){var t=e.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:t})}},{key:"killSVG",value:function(e){e.each(function(t,i){this.removeClass("*"),this.off(),this.stop()},!0),e.ungroup(),e.clear()}},{key:"clearDomElements",value:function(e){var t=this,i=e.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight="unset");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach(function(n){s.removeEventListener(n,t.ctx.events.documentEvent)});var r=this.w.globals.dom;if(this.ctx.el!==null)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elLegendWrap=null,r.elLegendForeign=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),m}(),Ie=new WeakMap,$t=function(){function m(e,t){F(this,m),this.opts=t,this.ctx=this,this.w=new yt(t).init(),this.el=e,this.w.globals.cuid=P.randomId(),this.w.globals.chartID=this.w.config.chart.id?P.escapeString(this.w.config.chart.id):this.w.globals.cuid,new Ge(this).initModules(),this.create=P.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return R(m,[{key:"render",value:function(){var e=this;return new Promise(function(t,i){if(e.el!==null){Apex._chartInstances===void 0&&(Apex._chartInstances=[]),e.w.config.chart.id&&Apex._chartInstances.push({id:e.w.globals.chartID,group:e.w.config.chart.group,chart:e}),e.setLocale(e.w.config.chart.defaultLocale);var a=e.w.config.chart.events.beforeMount;if(typeof a=="function"&&a(e,e.w),e.events.fireEvent("beforeMount",[e,e.w]),window.addEventListener("resize",e.windowResizeHandler),function(c,d){var u=!1;if(c.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var p=c.getBoundingClientRect();c.style.display!=="none"&&p.width!==0||(u=!0)}var f=new ResizeObserver(function(b){u&&d.call(c,b),u=!0});c.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(c.children).forEach(function(b){return f.observe(b)}):f.observe(c),Ie.set(d,f)}(e.el.parentNode,e.parentResizeHandler),!e.css){var s=e.el.getRootNode&&e.el.getRootNode(),r=P.is("ShadowRoot",s),n=e.el.ownerDocument,o=n.getElementById("apexcharts-css");!r&&o||(e.css=document.createElement("style"),e.css.id="apexcharts-css",e.css.textContent=`@keyframes opaque { 0% { opacity: 0 } @@ -574,6 +573,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho .apexcharts-toolbar { position: absolute; + z-index: 11; max-width: 176px; text-align: right; border-radius: 3px; @@ -628,6 +628,10 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho opacity: 0 } +.apexcharts-hidden-element-shown { + opacity: 1; + transition: 0.25s ease all; +} .apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label { cursor: default; pointer-events: none @@ -678,4 +682,24 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho width: 200%; height: 200% } -`,n?s.prepend(e.css):r.head.appendChild(e.css))}var h=e.create(e.w.config.series,{});if(!h)return t(e);e.mount(h).then(function(){typeof e.w.config.chart.events.mounted=="function"&&e.w.config.chart.events.mounted(e,e.w),e.events.fireEvent("mounted",[e,e.w]),t(h)}).catch(function(c){i(c)})}else i(new Error("Element not found"))})}},{key:"create",value:function(e,t){var i=this.w;new $e(this).initModules();var a=this.w.globals;if(a.noData=!1,a.animationEnded=!1,this.responsive.checkResponsiveConfig(t),i.config.xaxis.convertedCatToNumeric&&new oe(i.config).convertCatToNumericXaxis(i.config,this.ctx),this.el===null||(this.core.setupElements(),i.config.chart.type==="treemap"&&(i.config.grid.show=!1,i.config.yaxis[0].show=!1),a.svgWidth===0))return a.animationEnded=!0,null;var s=N.checkComboSeries(e);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount;var n=e.every(function(d){return d.data&&d.data.length===0});(e.length===0||n)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(e),this.theme.init(),new he(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),a.noData&&a.collapsedSeries.length!==a.series.length&&!i.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),i.config.xaxis.type!=="category"&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=i.globals.minX,this.ctx.toolbar.maxX=i.globals.maxX),this.formatters.heatmapLabelFormatters(),new N(this).getLargestMarkerSize(),this.dimensions.plotCoords();var r=this.core.xySettings();this.grid.createGridMask();var o=this.core.plotChartType(e,r),h=new ie(this);h.bringForward(),i.config.dataLabels.background.enabled&&h.dataLabelsBackground(),this.core.shiftGraphPosition();var c={plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}};return{elGraph:o,xyRatios:r,elInner:i.globals.dom.elGraphical,dimensions:c}}},{key:"mount",value:function(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,i=this,a=i.w;return new Promise(function(s,n){if(i.el===null)return n(new Error("Not enough data to display or target element not found"));(t===null||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new Ne(i);var r=i.grid.drawGrid();a.config.chart.type!=="treemap"&&i.axes.drawAxis(a.config.chart.type,r),i.annotations=new rt(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),a.config.grid.position==="back"&&r&&a.globals.dom.elGraphical.add(r.el);var o=new ce(e.ctx,r),h=new Ae(e.ctx,r);if(r!==null&&(o.xAxisLabelCorrections(r.xAxisTickWidth),h.setYAxisTextAlignments(),a.config.yaxis.map(function(g,p){a.globals.ignoreYAxisIndexes.indexOf(p)===-1&&h.yAxisTitleRotate(p,g.opposite)})),a.config.annotations.position==="back"&&(a.globals.dom.Paper.add(a.globals.dom.elAnnotations),i.annotations.drawAxesAnnotations()),Array.isArray(t.elGraph))for(var c=0;c0&&a.globals.memory.methodsToExec.forEach(function(g){g.method(g.params,!1,g.context)}),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)})}},{key:"destroy",value:function(){var e,t;window.removeEventListener("resize",this.windowResizeHandler),this.el.parentNode,e=this.parentResizeHandler,(t=Pe.get(e))&&(t.disconnect(),Pe.delete(e));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach(function(a,s){a.id===P.escapeString(i)&&Apex._chartInstances.splice(s,1)}),new Je(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0&&arguments[1],a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],s=!(arguments.length>3&&arguments[3]!==void 0)||arguments[3],n=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],r=this.w;return r.globals.selection=void 0,e.series&&(this.series.resetSeries(!1,!0,!1),e.series.length&&e.series[0].data&&(e.series=e.series.map(function(o,h){return t.updateHelpers._extendSeries(o,h)})),this.updateHelpers.revertDefaultAxisMinMax()),e.xaxis&&(e=this.updateHelpers.forceXAxisUpdate(e)),e.yaxis&&(e=this.updateHelpers.forceYAxisUpdate(e)),r.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),e.theme&&(e=this.theme.updateThemeOptions(e)),this.updateHelpers._updateOptions(e,i,a,s,n)}},{key:"updateSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(e,t,i)}},{key:"appendSeries",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],a=this.w.config.series.slice();return a.push(e),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,t,i)}},{key:"appendData",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&arguments[0]!==void 0)||arguments[0],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];this.series.resetSeries(e,t)}},{key:"addEventListener",value:function(e,t){this.events.addEventListener(e,t)}},{key:"removeEventListener",value:function(e,t){this.events.removeEventListener(e,t)}},{key:"addXaxisAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(e,t,a)}},{key:"addYaxisAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(e,t,a)}},{key:"addPointAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(e,t,a)}},{key:"clearAnnotations",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:void 0,t=this;e&&(t=e),t.annotations.clearAnnotations(t)}},{key:"removeAnnotation",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,i=this;t&&(i=t),i.annotations.removeAnnotation(i,e)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(e,t){return this.coreUtils.getSeriesTotalsXRange(e,t)}},{key:"getHighestValueInSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=new ke(this.ctx);return t.getMinYMaxY(e).highestY}},{key:"getLowestValueInSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=new ke(this.ctx);return t.getMinYMaxY(e).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(e,t){return this.updateHelpers.toggleDataPointSelection(e,t)}},{key:"zoomX",value:function(e,t){this.ctx.toolbar.zoomUpdateOptions(e,t)}},{key:"setLocale",value:function(e){this.localization.setCurrentLocaleValues(e)}},{key:"dataURI",value:function(e){return new fe(this.ctx).dataURI(e)}},{key:"exportToCSV",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=new fe(this.ctx);return t.exportToCSV(e)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var e=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout(function(){e.w.globals.resized=!0,e.w.globals.dataChanged=!1,e.ctx.update()},150)}},{key:"_windowResizeHandler",value:function(){var e=this.w.config.chart.redrawOnWindowResize;typeof e=="function"&&(e=e()),e&&this._windowResize()}}],[{key:"getChartByID",value:function(e){var t=P.escapeString(e),i=Apex._chartInstances.filter(function(a){return a.id===t})[0];return i&&i.chart}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),t=0;t2?s-2:0),r=2;r0&&arguments[0]!==void 0?arguments[0]:null,i=this,a=i.w;return new Promise(function(s,r){if(i.el===null)return r(new Error("Not enough data to display or target element not found"));(t===null||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new Je(i);var n,o,h=i.grid.drawGrid();if(i.annotations=new vt(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),a.config.grid.position==="back"&&(h&&a.globals.dom.elGraphical.add(h.el),h!=null&&(n=h.elGridBorders)!==null&&n!==void 0&&n.node&&a.globals.dom.elGraphical.add(h.elGridBorders)),Array.isArray(t.elGraph))for(var c=0;c0&&a.globals.memory.methodsToExec.forEach(function(f){f.method(f.params,!1,f.context)}),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)})}},{key:"destroy",value:function(){var e,t;window.removeEventListener("resize",this.windowResizeHandler),this.el.parentNode,e=this.parentResizeHandler,(t=Ie.get(e))&&(t.disconnect(),Ie.delete(e));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach(function(a,s){a.id===P.escapeString(i)&&Apex._chartInstances.splice(s,1)}),new Ve(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0&&arguments[1],a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],s=!(arguments.length>3&&arguments[3]!==void 0)||arguments[3],r=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],n=this.w;return n.globals.selection=void 0,e.series&&(this.series.resetSeries(!1,!0,!1),e.series.length&&e.series[0].data&&(e.series=e.series.map(function(o,h){return t.updateHelpers._extendSeries(o,h)})),this.updateHelpers.revertDefaultAxisMinMax()),e.xaxis&&(e=this.updateHelpers.forceXAxisUpdate(e)),e.yaxis&&(e=this.updateHelpers.forceYAxisUpdate(e)),n.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),e.theme&&(e=this.theme.updateThemeOptions(e)),this.updateHelpers._updateOptions(e,i,a,s,r)}},{key:"updateSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(e,t,i)}},{key:"appendSeries",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],a=this.w.config.series.slice();return a.push(e),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,t,i)}},{key:"appendData",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&arguments[0]!==void 0)||arguments[0],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];this.series.resetSeries(e,t)}},{key:"addEventListener",value:function(e,t){this.events.addEventListener(e,t)}},{key:"removeEventListener",value:function(e,t){this.events.removeEventListener(e,t)}},{key:"addXaxisAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(e,t,a)}},{key:"addYaxisAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(e,t,a)}},{key:"addPointAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(e,t,a)}},{key:"clearAnnotations",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:void 0,t=this;e&&(t=e),t.annotations.clearAnnotations(t)}},{key:"removeAnnotation",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,i=this;t&&(i=t),i.annotations.removeAnnotation(i,e)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(e,t){return this.coreUtils.getSeriesTotalsXRange(e,t)}},{key:"getHighestValueInSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return new Xe(this.ctx).getMinYMaxY(e).highestY}},{key:"getLowestValueInSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return new Xe(this.ctx).getMinYMaxY(e).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(e,t){return this.updateHelpers.toggleDataPointSelection(e,t)}},{key:"zoomX",value:function(e,t){this.ctx.toolbar.zoomUpdateOptions(e,t)}},{key:"setLocale",value:function(e){this.localization.setCurrentLocaleValues(e)}},{key:"dataURI",value:function(e){return new be(this.ctx).dataURI(e)}},{key:"exportToCSV",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return new be(this.ctx).exportToCSV(e)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var e=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout(function(){e.w.globals.resized=!0,e.w.globals.dataChanged=!1,e.ctx.update()},150)}},{key:"_windowResizeHandler",value:function(){var e=this.w.config.chart.redrawOnWindowResize;typeof e=="function"&&(e=e()),e&&this._windowResize()}}],[{key:"getChartByID",value:function(e){var t=P.escapeString(e);if(Apex._chartInstances){var i=Apex._chartInstances.filter(function(a){return a.id===t})[0];return i&&i.chart}}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),t=0;t2?s-2:0),n=2;n{this.updateChart(i)}),Alpine.effect(()=>{let i=Alpine.store("theme");this.$nextTick(()=>{this.chart===null?this.initChart():this.updateChart({theme:{mode:i},chart:{background:"inherit"}})})})},initChart:function(){this.options.theme={mode:this.theme},this.options.chart.background="inherit",this.chart=new nt.default(document.querySelector(this.chartId),this.options),this.chart.render()},updateChart:function(i){this.chart.updateOptions(i,!1,!0,!0)}}}export{Jt as default}; +/*! Bundled license information: + +apexcharts/dist/apexcharts.common.js: + (*! + * ApexCharts v3.44.0 + * (c) 2018-2023 ApexCharts + * Released under the MIT License. + *) +*/ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..d84ea02 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,510 @@ +{ + "name": "filament-apex-charts", + "version": "3.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "filament-apex-charts", + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "apexcharts": "^3.44.0" + }, + "devDependencies": { + "esbuild": "^0.19.7" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.7.tgz", + "integrity": "sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.7.tgz", + "integrity": "sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.7.tgz", + "integrity": "sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.7.tgz", + "integrity": "sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.7.tgz", + "integrity": "sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.7.tgz", + "integrity": "sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.7.tgz", + "integrity": "sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.7.tgz", + "integrity": "sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.7.tgz", + "integrity": "sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.7.tgz", + "integrity": "sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.7.tgz", + "integrity": "sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.7.tgz", + "integrity": "sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.7.tgz", + "integrity": "sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.7.tgz", + "integrity": "sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.7.tgz", + "integrity": "sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.7.tgz", + "integrity": "sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.7.tgz", + "integrity": "sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.7.tgz", + "integrity": "sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.7.tgz", + "integrity": "sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.7.tgz", + "integrity": "sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.7.tgz", + "integrity": "sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.7.tgz", + "integrity": "sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" + }, + "node_modules/apexcharts": { + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.44.0.tgz", + "integrity": "sha512-u7Xzrbcxc2yWznN78Jh5NMCYVAsWDfBjRl5ea++rVzFAqjU2hLz4RgKIFwYOBDRQtW1e/Qz8azJTqIJ1+Vu9Qg==", + "dependencies": { + "@yr/monotone-cubic-spline": "^1.0.3", + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, + "node_modules/esbuild": { + "version": "0.19.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.7.tgz", + "integrity": "sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.19.7", + "@esbuild/android-arm64": "0.19.7", + "@esbuild/android-x64": "0.19.7", + "@esbuild/darwin-arm64": "0.19.7", + "@esbuild/darwin-x64": "0.19.7", + "@esbuild/freebsd-arm64": "0.19.7", + "@esbuild/freebsd-x64": "0.19.7", + "@esbuild/linux-arm": "0.19.7", + "@esbuild/linux-arm64": "0.19.7", + "@esbuild/linux-ia32": "0.19.7", + "@esbuild/linux-loong64": "0.19.7", + "@esbuild/linux-mips64el": "0.19.7", + "@esbuild/linux-ppc64": "0.19.7", + "@esbuild/linux-riscv64": "0.19.7", + "@esbuild/linux-s390x": "0.19.7", + "@esbuild/linux-x64": "0.19.7", + "@esbuild/netbsd-x64": "0.19.7", + "@esbuild/openbsd-x64": "0.19.7", + "@esbuild/sunos-x64": "0.19.7", + "@esbuild/win32-arm64": "0.19.7", + "@esbuild/win32-ia32": "0.19.7", + "@esbuild/win32-x64": "0.19.7" + } + }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..9424c5b --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "filament-apex-charts", + "version": "3.0.1", + "description": "Filament Apex Charts Plugin", + "type": "module", + "main": "index.js", + "directories": { + "example": "examples", + "test": "tests" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "leandrocfe@gmail.com", + "license": "MIT", + "devDependencies": { + "esbuild": "^0.19.7" + }, + "dependencies": { + "apexcharts": "^3.44.0" + } +} \ No newline at end of file diff --git a/resources/views/widgets/components/chart.blade.php b/resources/views/widgets/components/chart.blade.php index 74ada46..77d3724 100644 --- a/resources/views/widgets/components/chart.blade.php +++ b/resources/views/widgets/components/chart.blade.php @@ -3,29 +3,24 @@
@if ($readyToLoad) +
+
+
-
{ - this.chart.updateOptions(options, false, true, true); - }); - - this.options.theme = { mode: this.theme }; - this.options.chart.background = 'inherit'; - - this.chart = new ApexCharts($refs.{{ $chartId }}, this.options); - this.chart.render(); - } - }" - @theme-changed.window="chart.updateOptions( { theme: { mode: {{ $darkMode ? '$event.detail' : "'light'" }} } } )" +
diff --git a/src/FilamentApexChartsServiceProvider.php b/src/FilamentApexChartsServiceProvider.php index 21e53d4..605042a 100644 --- a/src/FilamentApexChartsServiceProvider.php +++ b/src/FilamentApexChartsServiceProvider.php @@ -2,7 +2,7 @@ namespace Leandrocfe\FilamentApexCharts; -use Filament\Support\Assets\Js; +use Filament\Support\Assets\AlpineComponent; use Filament\Support\Facades\FilamentAsset; use Illuminate\Support\Facades\Blade; use Leandrocfe\FilamentApexCharts\Commands\FilamentApexChartsCommand; @@ -51,7 +51,7 @@ public function bootingPackage() public function packageRegistered(): void { FilamentAsset::register([ - Js::make('apexcharts', __DIR__.'/../dist/apexcharts.js'), - ], package: 'leandrocfe/filament-apex-charts'); + AlpineComponent::make('apexcharts', __DIR__.'/../dist/apexcharts.js'), + ]); } } From b97b332dc0253255522ff944010cf283fdebebbb Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Mon, 27 Nov 2023 08:55:21 -0300 Subject: [PATCH 03/11] changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c24e7a..33201bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## 3.0.2 + +### Changed + +- Apexcharts update version. +- Filament assets. + ## 3.0.1 ### Fixed From 6fad7b29731cf8511f350196a62b42962f57198c Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Thu, 11 Jan 2024 10:14:09 -0300 Subject: [PATCH 04/11] extra js options --- apexcharts.js | 17 +- dist/apexcharts.js | 9020 +++++++++++++++-- .../views/widgets/apex-chart-widget.blade.php | 6 +- .../views/widgets/components/chart.blade.php | 37 +- src/Widgets/ApexChartWidget.php | 9 + 5 files changed, 8378 insertions(+), 711 deletions(-) diff --git a/apexcharts.js b/apexcharts.js index ef6287c..893653e 100644 --- a/apexcharts.js +++ b/apexcharts.js @@ -3,16 +3,23 @@ import ApexCharts from 'apexcharts' export default function apexcharts({ options, chartId, - theme + theme, + extraJsOptions }) { return { chart: null, options, chartId, theme, + extraJsOptions, init: function () { this.$wire.$on('updateOptions', ({ options }) => { + + options = { + ...options, + ...this.extraJsOptions + } this.updateChart(options) }) @@ -25,6 +32,7 @@ export default function apexcharts({ if (this.chart === null) { this.initChart() } else { + this.updateChart({ theme: { mode: theme }, chart: { @@ -40,11 +48,16 @@ export default function apexcharts({ this.options.theme = { mode: this.theme } this.options.chart.background = 'inherit' + this.options = { + ...this.options, + ...this.extraJsOptions + } + this.chart = new ApexCharts(document.querySelector(this.chartId), this.options) this.chart.render() }, updateChart: function (options) { this.chart.updateOptions(options, false, true, true) - } + }, } } \ No newline at end of file diff --git a/dist/apexcharts.js b/dist/apexcharts.js index a126d06..12ccf10 100644 --- a/dist/apexcharts.js +++ b/dist/apexcharts.js @@ -1,699 +1,8336 @@ -var ot=Object.create;var He=Object.defineProperty;var lt=Object.getOwnPropertyDescriptor;var ht=Object.getOwnPropertyNames;var ct=Object.getPrototypeOf,dt=Object.prototype.hasOwnProperty;var gt=(m,e)=>()=>(e||m((e={exports:{}}).exports,e),e.exports);var ut=(m,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ht(e))!dt.call(m,a)&&a!==t&&He(m,a,{get:()=>e[a],enumerable:!(i=lt(e,a))||i.enumerable});return m};var pt=(m,e,t)=>(t=m!=null?ot(ct(m)):{},ut(e||!m||!m.__esModule?He(t,"default",{value:m,enumerable:!0}):t,m));var rt=gt((Ye,ve)=>{"use strict";function De(m,e){var t=Object.keys(m);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(m);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(m,a).enumerable})),t.push.apply(t,i)}return t}function E(m){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var t,i=xe(m);if(e){var a=xe(this).constructor;t=Reflect.construct(i,arguments,a)}else t=i.apply(this,arguments);return ft(this,t)}}function je(m,e){return function(t){if(Array.isArray(t))return t}(m)||function(t,i){var a=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(a!=null){var s,r,n=[],o=!0,h=!1;try{for(a=a.call(t);!(o=(s=a.next()).done)&&(n.push(s.value),!i||n.length!==i);o=!0);}catch(c){h=!0,r=c}finally{try{o||a.return==null||a.return()}finally{if(h)throw r}}return n}}(m,e)||_e(m,e)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Z(m){return function(e){if(Array.isArray(e))return ze(e)}(m)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(m)||_e(m)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function _e(m,e){if(m){if(typeof m=="string")return ze(m,e);var t=Object.prototype.toString.call(m).slice(8,-1);return t==="Object"&&m.constructor&&(t=m.constructor.name),t==="Map"||t==="Set"?Array.from(m):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?ze(m,e):void 0}}function ze(m,e){(e==null||e>m.length)&&(e=m.length);for(var t=0,i=new Array(e);t>16,n=i>>8&255,o=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-n)*s)+n)+(Math.round((a-o)*s)+o)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,t){return m.isColorHex(t)?this.shadeHexColor(e,t):this.shadeRGBColor(e,t)}}],[{key:"bind",value:function(e,t){return function(){return e.apply(t,arguments)}}},{key:"isObject",value:function(e){return e&&V(e)==="object"&&!Array.isArray(e)&&e!=null}},{key:"is",value:function(e,t){return Object.prototype.toString.call(t)==="[object "+e+"]"}},{key:"listToArray",value:function(e){var t,i=[];for(t=0;t1&&arguments[1]!==void 0?arguments[1]:2;return Number.isInteger(e)?e:parseFloat(e.toPrecision(t))}},{key:"randomId",value:function(){return(Math.random()+1).toString(36).substring(4)}},{key:"noExponents",value:function(e){var t=String(e).split(/[eE]/);if(t.length===1)return t[0];var i="",a=e<0?"-":"",s=t[0].replace(".",""),r=Number(t[1])+1;if(r<0){for(i=a+"0.";r++;)i+="0";return i+s.replace(/^-/,"")}for(r-=s.length;r--;)i+="0";return s+i}},{key:"getDimensions",value:function(e){var t=getComputedStyle(e,null),i=e.clientHeight,a=e.clientWidth;return i-=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom),[a-=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),i]}},{key:"getBoundingClientRect",value:function(e){var t=e.getBoundingClientRect();return{top:t.top,right:t.right,bottom:t.bottom,left:t.left,width:e.clientWidth,height:e.clientHeight,x:t.left,y:t.top}}},{key:"getLargestStringFromArr",value:function(e){return e.reduce(function(t,i){return Array.isArray(i)&&(i=i.reduce(function(a,s){return a.length>s.length?a:s})),t.length>i.length?t:i},0)}},{key:"hexToRgba",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"#999999",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.6;e.substring(0,1)!=="#"&&(e="#999999");var i=e.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&arguments[1]!==void 0?arguments[1]:"x",i=e.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,t)}},{key:"negToZero",value:function(e){return e<0?0:e}},{key:"moveIndexInArray",value:function(e,t,i){if(i>=e.length)for(var a=i-e.length+1;a--;)e.push(void 0);return e.splice(i,0,e.splice(t,1)[0]),e}},{key:"extractNumber",value:function(e){return parseFloat(e.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e}},{key:"setELstyles",value:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e.style.key=t[i])}},{key:"isNumber",value:function(e){return!isNaN(e)&&parseFloat(Number(e))===e&&!isNaN(parseInt(e,10))}},{key:"isFloat",value:function(e){return Number(e)===e&&e%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(window.navigator.userAgent.indexOf("MSIE")!==-1||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){var i=e.indexOf("rv:");return parseInt(e.substring(i+3,e.indexOf(".",i)),10)}var a=e.indexOf("Edge/");return a>0&&parseInt(e.substring(a+5,e.indexOf(".",a)),10)}}]),m}(),oe=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return R(m,[{key:"setEasingFunctions",value:function(){var e;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case"linear":e="-";break;case"easein":e="<";break;case"easeout":e=">";break;case"easeinout":default:e="<>";break;case"swing":e=function(t){var i=1.70158;return(t-=1)*t*((i+1)*t+i)+1};break;case"bounce":e=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":e=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=e}}},{key:"animateLine",value:function(e,t,i,a){e.attr(t).animate(a).attr(i)}},{key:"animateMarker",value:function(e,t,i,a,s,r){t||(t=0),e.attr({r:t,width:t,height:t}).animate(a,s).attr({r:i,width:i.width,height:i.height}).afterAll(function(){r()})}},{key:"animateCircle",value:function(e,t,i,a,s){e.attr({r:t.r,cx:t.cx,cy:t.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(e,t,i,a,s){e.attr(t).animate(a).attr(i).afterAll(function(){return s()})}},{key:"animatePathsGradually",value:function(e){var t=e.el,i=e.realIndex,a=e.j,s=e.fill,r=e.pathFrom,n=e.pathTo,o=e.speed,h=e.delay,c=this.w,d=0;c.config.chart.animations.animateGradually.enabled&&(d=c.config.chart.animations.animateGradually.delay),c.config.chart.animations.dynamicAnimation.enabled&&c.globals.dataChanged&&c.config.chart.type!=="bar"&&(d=0),this.morphSVG(t,i,a,c.config.chart.type!=="line"||c.globals.comboCharts?s:"stroke",r,n,o,h*d)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach(function(e){var t=e.el;t.classList.remove("apexcharts-element-hidden"),t.classList.add("apexcharts-hidden-element-shown")})}},{key:"animationCompleted",value:function(e){var t=this.w;t.globals.animationEnded||(t.globals.animationEnded=!0,this.showDelayedElements(),typeof t.config.chart.events.animationEnd=="function"&&t.config.chart.events.animationEnd(this.ctx,{el:e,w:t}))}},{key:"morphSVG",value:function(e,t,i,a,s,r,n,o){var h=this,c=this.w;s||(s=e.attr("pathFrom")),r||(r=e.attr("pathTo"));var d=function(u){return c.config.chart.type==="radar"&&(n=1),"M 0 ".concat(c.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=d()),(!r||r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=d()),c.globals.shouldAnimate||(n=1),e.plot(s).animate(1,c.globals.easing,o).plot(s).animate(n,c.globals.easing,o).plot(r).afterAll(function(){P.isNumber(i)?i===c.globals.series[c.globals.maxValsInArrayIndex].length-2&&c.globals.shouldAnimate&&h.animationCompleted(e):a!=="none"&&c.globals.shouldAnimate&&(!c.globals.comboCharts&&t===c.globals.series.length-1||c.globals.comboCharts)&&h.animationCompleted(e),h.showDelayedElements()})}}]),m}(),U=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"getDefaultFilter",value:function(e,t){var i=this.w;e.unfilter(!0),new window.SVG.Filter().size("120%","180%","-5%","-40%"),i.config.states.normal.filter!=="none"?this.applyFilter(e,t,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(e,i.config.chart.dropShadow,t)}},{key:"addNormalFilter",value:function(e,t){var i=this.w;i.config.chart.dropShadow.enabled&&!e.node.classList.contains("apexcharts-marker")&&this.dropShadow(e,i.config.chart.dropShadow,t)}},{key:"addLightenFilter",value:function(e,t,i){var a=this,s=this.w,r=i.intensity;e.unfilter(!0),new window.SVG.Filter,e.filter(function(n){var o=s.config.chart.dropShadow;(o.enabled?a.addShadow(n,t,o):n).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:r}})}),e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)}},{key:"addDarkenFilter",value:function(e,t,i){var a=this,s=this.w,r=i.intensity;e.unfilter(!0),new window.SVG.Filter,e.filter(function(n){var o=s.config.chart.dropShadow;(o.enabled?a.addShadow(n,t,o):n).componentTransfer({rgb:{type:"linear",slope:r}})}),e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)}},{key:"applyFilter",value:function(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(e,t);break;case"lighten":this.addLightenFilter(e,t,{intensity:a});break;case"darken":this.addDarkenFilter(e,t,{intensity:a})}}},{key:"addShadow",value:function(e,t,i){var a=i.blur,s=i.top,r=i.left,n=i.color,o=i.opacity,h=e.flood(Array.isArray(n)?n[t]:n,o).composite(e.sourceAlpha,"in").offset(r,s).gaussianBlur(a).merge(e.source);return e.blend(e.source,h)}},{key:"dropShadow",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=t.top,s=t.left,r=t.blur,n=t.color,o=t.opacity,h=t.noUserSpaceOnUse,c=this.w;return e.unfilter(!0),P.isIE()&&c.config.chart.type==="radialBar"||(n=Array.isArray(n)?n[i]:n,e.filter(function(d){var u=null;u=P.isSafari()||P.isFirefox()||P.isIE()?d.flood(n,o).composite(d.sourceAlpha,"in").offset(s,a).gaussianBlur(r):d.flood(n,o).composite(d.sourceAlpha,"in").offset(s,a).gaussianBlur(r).merge(d.source),d.blend(d.source,u)}),h||e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)),e}},{key:"setSelectionFilter",value:function(e,t,i){var a=this.w;if(a.globals.selectedDataPoints[t]!==void 0&&a.globals.selectedDataPoints[t].indexOf(i)>-1){e.node.setAttribute("selected",!0);var s=a.config.states.active.filter;s!=="none"&&this.applyFilter(e,t,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(e){(function(t){for(var i in t)t.hasOwnProperty(i)&&e.setAttribute(i,t[i])})({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}]),m}(),z=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"roundPathCorners",value:function(e,t){function i(S,L,C){var M=L.x-S.x,T=L.y-S.y,I=Math.sqrt(M*M+T*T);return a(S,L,Math.min(1,C/I))}function a(S,L,C){return{x:S.x+(L.x-S.x)*C,y:S.y+(L.y-S.y)*C}}function s(S,L){S.length>2&&(S[S.length-2]=L.x,S[S.length-1]=L.y)}function r(S){return{x:parseFloat(S[S.length-2]),y:parseFloat(S[S.length-1])}}e.indexOf("NaN")>-1&&(e="");var n=e.split(/[,\s]/).reduce(function(S,L){var C=L.match("([a-zA-Z])(.+)");return C?(S.push(C[1]),S.push(C[2])):S.push(L),S},[]).reduce(function(S,L){return parseFloat(L)==L&&S.length?S[S.length-1].push(L):S.push([L]),S},[]),o=[];if(n.length>1){var h=r(n[0]),c=null;n[n.length-1][0]=="Z"&&n[0].length>2&&(c=["L",h.x,h.y],n[n.length-1]=c),o.push(n[0]);for(var d=1;d2&&p[0]=="L"&&f.length>2&&f[0]=="L"){var b,v,w=r(u),k=r(p),l=r(f);b=i(k,w,t),v=i(k,l,t),s(p,b),p.origPoint=k,o.push(p);var g=a(b,k,.5),x=a(k,v,.5),y=["C",g.x,g.y,x.x,x.y,v.x,v.y];y.origPoint=k,o.push(y)}else o.push(p)}if(c){var A=r(o[o.length-1]);o.push(["Z"]),s(o[0],A)}}else o=n;return o.reduce(function(S,L){return S+L.join(" ")+" "},"")}},{key:"drawLine",value:function(e,t,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"#a8a8a8",r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,n=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null,o=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"butt";return this.w.globals.dom.Paper.line().attr({x1:e,y1:t,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":n,"stroke-linecap":o})}},{key:"drawRect",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"#fefefe",n=arguments.length>6&&arguments[6]!==void 0?arguments[6]:1,o=arguments.length>7&&arguments[7]!==void 0?arguments[7]:null,h=arguments.length>8&&arguments[8]!==void 0?arguments[8]:null,c=arguments.length>9&&arguments[9]!==void 0?arguments[9]:0,d=this.w.globals.dom.Paper.rect();return d.attr({x:e,y:t,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:n,"stroke-width":o!==null?o:0,stroke:h!==null?h:"none","stroke-dasharray":c}),d.node.setAttribute("fill",r),d}},{key:"drawPolygon",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"#e1e1e1",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"none";return this.w.globals.dom.Paper.polygon(e).attr({fill:a,stroke:t,"stroke-width":i})}},{key:"drawCircle",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;e<0&&(e=0);var i=this.w.globals.dom.Paper.circle(2*e);return t!==null&&i.attr(t),i}},{key:"drawPath",value:function(e){var t=e.d,i=t===void 0?"":t,a=e.stroke,s=a===void 0?"#a8a8a8":a,r=e.strokeWidth,n=r===void 0?1:r,o=e.fill,h=e.fillOpacity,c=h===void 0?1:h,d=e.strokeOpacity,u=d===void 0?1:d,p=e.classes,f=e.strokeLinecap,b=f===void 0?null:f,v=e.strokeDashArray,w=v===void 0?0:v,k=this.w;return b===null&&(b=k.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(k.globals.gridHeight)),k.globals.dom.Paper.path(i).attr({fill:o,"fill-opacity":c,stroke:s,"stroke-opacity":u,"stroke-linecap":b,"stroke-width":n,"stroke-dasharray":w,class:p})}},{key:"group",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=this.w.globals.dom.Paper.group();return e!==null&&t.attr(e),t}},{key:"move",value:function(e,t){var i=["M",e,t].join(" ");return i}},{key:"line",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=null;return i===null?a=[" L",e,t].join(" "):i==="H"?a=[" H",e].join(" "):i==="V"&&(a=[" V",t].join(" ")),a}},{key:"curve",value:function(e,t,i,a,s,r){var n=["C",e,t,i,a,s,r].join(" ");return n}},{key:"quadraticCurve",value:function(e,t,i,a){return["Q",e,t,i,a].join(" ")}},{key:"arc",value:function(e,t,i,a,s,r,n){var o="A";arguments.length>7&&arguments[7]!==void 0&&arguments[7]&&(o="a");var h=[o,e,t,i,a,s,r,n].join(" ");return h}},{key:"renderPaths",value:function(e){var t,i=e.j,a=e.realIndex,s=e.pathFrom,r=e.pathTo,n=e.stroke,o=e.strokeWidth,h=e.strokeLinecap,c=e.fill,d=e.animationDelay,u=e.initialSpeed,p=e.dataChangeSpeed,f=e.className,b=e.shouldClipToGrid,v=b===void 0||b,w=e.bindEventsOnPaths,k=w===void 0||w,l=e.drawShadow,g=l===void 0||l,x=this.w,y=new U(this.ctx),A=new oe(this.ctx),S=this.w.config.chart.animations.enabled,L=S&&this.w.config.chart.animations.dynamicAnimation.enabled,C=!!(S&&!x.globals.resized||L&&x.globals.dataChanged&&x.globals.shouldAnimate);C?t=s:(t=r,x.globals.animationEnded=!0);var M=x.config.stroke.dashArray,T=0;T=Array.isArray(M)?M[a]:x.config.stroke.dashArray;var I=this.drawPath({d:t,stroke:n,strokeWidth:o,fill:c,fillOpacity:1,classes:f,strokeLinecap:h,strokeDashArray:T});if(I.attr("index",a),v&&I.attr({"clip-path":"url(#gridRectMask".concat(x.globals.cuid,")")}),x.config.states.normal.filter.type!=="none")y.getDefaultFilter(I,a);else if(x.config.chart.dropShadow.enabled&&g&&(!x.config.chart.dropShadow.enabledOnSeries||x.config.chart.dropShadow.enabledOnSeries&&x.config.chart.dropShadow.enabledOnSeries.indexOf(a)!==-1)){var X=x.config.chart.dropShadow;y.dropShadow(I,X,a)}k&&(I.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,I)),I.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,I)),I.node.addEventListener("mousedown",this.pathMouseDown.bind(this,I))),I.attr({pathTo:r,pathFrom:s});var Y={el:I,j:i,realIndex:a,pathFrom:s,pathTo:r,fill:c,strokeWidth:o,delay:d};return!S||x.globals.resized||x.globals.dataChanged?!x.globals.resized&&x.globals.dataChanged||A.showDelayedElements():A.animatePathsGradually(E(E({},Y),{},{speed:u})),x.globals.dataChanged&&L&&C&&A.animatePathsGradually(E(E({},Y),{},{speed:p})),I}},{key:"drawPattern",value:function(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"#a8a8a8",s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;return this.w.globals.dom.Paper.pattern(t,i,function(r){e==="horizontalLines"?r.line(0,0,i,0).stroke({color:a,width:s+1}):e==="verticalLines"?r.line(0,0,0,t).stroke({color:a,width:s+1}):e==="slantedLines"?r.line(0,0,t,i).stroke({color:a,width:s}):e==="squares"?r.rect(t,i).fill("none").stroke({color:a,width:s}):e==="circles"&&r.circle(t).fill("none").stroke({color:a,width:s})})}},{key:"drawGradient",value:function(e,t,i,a,s){var r,n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:null,o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null,h=arguments.length>7&&arguments[7]!==void 0?arguments[7]:null,c=arguments.length>8&&arguments[8]!==void 0?arguments[8]:0,d=this.w;t.length<9&&t.indexOf("#")===0&&(t=P.hexToRgba(t,a)),i.length<9&&i.indexOf("#")===0&&(i=P.hexToRgba(i,s));var u=0,p=1,f=1,b=null;o!==null&&(u=o[0]!==void 0?o[0]/100:0,p=o[1]!==void 0?o[1]/100:1,f=o[2]!==void 0?o[2]/100:1,b=o[3]!==void 0?o[3]/100:null);var v=!(d.config.chart.type!=="donut"&&d.config.chart.type!=="pie"&&d.config.chart.type!=="polarArea"&&d.config.chart.type!=="bubble");if(r=h===null||h.length===0?d.globals.dom.Paper.gradient(v?"radial":"linear",function(l){l.at(u,t,a),l.at(p,i,s),l.at(f,i,s),b!==null&&l.at(b,t,a)}):d.globals.dom.Paper.gradient(v?"radial":"linear",function(l){(Array.isArray(h[c])?h[c]:h).forEach(function(g){l.at(g.offset/100,g.color,g.opacity)})}),v){var w=d.globals.gridWidth/2,k=d.globals.gridHeight/2;d.config.chart.type!=="bubble"?r.attr({gradientUnits:"userSpaceOnUse",cx:w,cy:k,r:n}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else e==="vertical"?r.from(0,0).to(0,1):e==="diagonal"?r.from(0,0).to(1,1):e==="horizontal"?r.from(0,1).to(1,1):e==="diagonal2"&&r.from(1,0).to(0,1);return r}},{key:"getTextBasedOnMaxWidth",value:function(e){var t=e.text,i=e.maxWidth,a=e.fontSize,s=e.fontFamily,r=this.getTextRects(t,a,s),n=r.width/t.length,o=Math.floor(i/n);return i-1){var o=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var h=i.globals.dom.Paper.select(".apexcharts-series path").members,c=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,d=function(f){Array.prototype.forEach.call(f,function(b){b.node.setAttribute("selected","false"),a.getDefaultFilter(b,s)})};d(h),d(c)}e.node.setAttribute("selected","true"),n="true",i.globals.selectedDataPoints[s]===void 0&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if(n==="true"){var u=i.config.states.active.filter;if(u!=="none")a.applyFilter(e,s,u.type,u.value);else if(i.config.states.hover.filter!=="none"&&!i.globals.isTouchDevice){var p=i.config.states.hover.filter;a.applyFilter(e,s,p.type,p.value)}}else i.config.states.active.filter.type!=="none"&&(i.config.states.hover.filter.type==="none"||i.globals.isTouchDevice?a.getDefaultFilter(e,s):(p=i.config.states.hover.filter,a.applyFilter(e,s,p.type,p.value)));typeof i.config.chart.events.dataPointSelection=="function"&&i.config.chart.events.dataPointSelection(t,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),t&&this.ctx.events.fireEvent("dataPointSelection",[t,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(e){var t={};return e&&typeof e.getBBox=="function"&&(t=e.getBBox()),{x:t.x+t.width/2,y:t.y+t.height/2}}},{key:"getTextRects",value:function(e,t,i,a){var s=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],r=this.w,n=this.drawText({x:-200,y:-200,text:e,textAnchor:"start",fontSize:t,fontFamily:i,foreColor:"#fff",opacity:0});a&&n.attr("transform",a),r.globals.dom.Paper.add(n);var o=n.bbox();return s||(o=n.node.getBoundingClientRect()),n.remove(),{width:o.width,height:o.height}}},{key:"placeTextWithEllipsis",value:function(e,t,i){if(typeof e.getComputedTextLength=="function"&&(e.textContent=t,t.length>0&&e.getComputedTextLength()>=i/1.1)){for(var a=t.length-3;a>0;a-=3)if(e.getSubStringLength(0,a)<=i/1.1)return void(e.textContent=t.substring(0,a)+"...");e.textContent="."}}}],[{key:"setAttrs",value:function(e,t){for(var i in t)t.hasOwnProperty(i)&&e.setAttribute(i,t[i])}}]),m}(),G=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"getStackedSeriesTotals",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=this.w,i=[];if(t.globals.series.length===0)return i;for(var a=0;a0&&arguments[0]!==void 0?arguments[0]:null;return e===null?this.w.config.series.reduce(function(t,i){return t+i},0):this.w.globals.series[e].reduce(function(t,i){return t+i},0)}},{key:"isSeriesNull",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return(e===null?this.w.config.series.filter(function(t){return t!==null}):this.w.config.series[e].data.filter(function(t){return t!==null})).length===0}},{key:"seriesHaveSameValues",value:function(e){return this.w.globals.series[e].every(function(t,i,a){return t===a[0]})}},{key:"getCategoryLabels",value:function(e){var t=this.w,i=e.slice();return t.config.xaxis.convertedCatToNumeric&&(i=e.map(function(a,s){return t.config.xaxis.labels.formatter(a-t.globals.minX+1)})),i}},{key:"getLargestSeries",value:function(){var e=this.w;e.globals.maxValsInArrayIndex=e.globals.series.map(function(t){return t.length}).indexOf(Math.max.apply(Math,e.globals.series.map(function(t){return t.length})))}},{key:"getLargestMarkerSize",value:function(){var e=this.w,t=0;return e.globals.markers.size.forEach(function(i){t=Math.max(t,i)}),e.config.markers.discrete&&e.config.markers.discrete.length&&e.config.markers.discrete.forEach(function(i){t=Math.max(t,i.size)}),t>0&&(t+=e.config.markers.hover.sizeOffset+1),e.globals.markers.largestSize=t,t}},{key:"getSeriesTotals",value:function(){var e=this.w;e.globals.seriesTotals=e.globals.series.map(function(t,i){var a=0;if(Array.isArray(t))for(var s=0;se&&i.globals.seriesX[s][n]0&&(t=!0),{comboBarCount:i,comboCharts:t}}},{key:"extendArrayProps",value:function(e,t,i){return t.yaxis&&(t=e.extendYAxis(t,i)),t.annotations&&(t.annotations.yaxis&&(t=e.extendYAxisAnnotations(t)),t.annotations.xaxis&&(t=e.extendXAxisAnnotations(t)),t.annotations.points&&(t=e.extendPointAnnotations(t))),t}}]),m}(),ye=function(){function m(e){F(this,m),this.w=e.w,this.annoCtx=e}return R(m,[{key:"setOrientations",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=this.w;if(e.label.orientation==="vertical"){var a=t!==null?t:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(s!==null){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4),e.label.position==="top"?s.setAttribute("y",parseFloat(s.getAttribute("y"))+r.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-r.width);var n=this.annoCtx.graphics.rotateAroundCenter(s),o=n.x,h=n.y;s.setAttribute("transform","rotate(-90 ".concat(o," ").concat(h,")"))}}}},{key:"addBackgroundToAnno",value:function(e,t){var i=this.w;if(!e||t.label.text===void 0||t.label.text!==void 0&&!String(t.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=e.getBoundingClientRect(),r=t.label.style.padding.left,n=t.label.style.padding.right,o=t.label.style.padding.top,h=t.label.style.padding.bottom;t.label.orientation==="vertical"&&(o=t.label.style.padding.left,h=t.label.style.padding.right,r=t.label.style.padding.top,n=t.label.style.padding.bottom);var c=s.left-a.left-r,d=s.top-a.top-o,u=this.annoCtx.graphics.drawRect(c-i.globals.barPadForNumericAxis,d,s.width+r+n,s.height+o+h,t.label.borderRadius,t.label.style.background,1,t.label.borderWidth,t.label.borderColor,0);return t.id&&u.node.classList.add(t.id),u}},{key:"annotationsBackground",value:function(){var e=this,t=this.w,i=function(a,s,r){var n=t.globals.dom.baseEl.querySelector(".apexcharts-".concat(r,"-annotations .apexcharts-").concat(r,"-annotation-label[rel='").concat(s,"']"));if(n){var o=n.parentNode,h=e.addBackgroundToAnno(n,a);h&&(o.insertBefore(h.node,n),a.label.mouseEnter&&h.node.addEventListener("mouseenter",a.label.mouseEnter.bind(e,a)),a.label.mouseLeave&&h.node.addEventListener("mouseleave",a.label.mouseLeave.bind(e,a)),a.label.click&&h.node.addEventListener("click",a.label.click.bind(e,a)))}};t.config.annotations.xaxis.map(function(a,s){i(a,s,"xaxis")}),t.config.annotations.yaxis.map(function(a,s){i(a,s,"yaxis")}),t.config.annotations.points.map(function(a,s){i(a,s,"point")})}},{key:"getY1Y2",value:function(e,t){var i,a=e==="y1"?t.y:t.y2,s=this.w;if(this.annoCtx.invertAxis){var r=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(r=s.globals.categoryLabels.indexOf(a));var n=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(r+1)+")");n&&(i=parseFloat(n.getAttribute("y")))}else{var o;s.config.yaxis[t.yAxisIndex].logarithmic?o=(a=new G(this.annoCtx.ctx).getLogVal(a,t.yAxisIndex))/s.globals.yLogRatio[t.yAxisIndex]:o=(a-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight),i=s.globals.gridHeight-o,!t.marker||t.y!==void 0&&t.y!==null||(i=0),s.config.yaxis[t.yAxisIndex]&&s.config.yaxis[t.yAxisIndex].reversed&&(i=o)}return typeof a=="string"&&a.indexOf("px")>-1&&(i=parseFloat(a)),i}},{key:"getX1X2",value:function(e,t){var i=this.w,a=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,s=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,r=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,n=(t.x-a)/(r/i.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(n=(s-t.x)/(r/i.globals.gridWidth)),i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(n=this.getStringX(t.x));var o=(t.x2-a)/(r/i.globals.gridWidth);return this.annoCtx.inversedReversedAxis&&(o=(s-t.x2)/(r/i.globals.gridWidth)),i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(o=this.getStringX(t.x2)),t.x!==void 0&&t.x!==null||!t.marker||(n=i.globals.gridWidth),e==="x1"&&typeof t.x=="string"&&t.x.indexOf("px")>-1&&(n=parseFloat(t.x)),e==="x2"&&typeof t.x2=="string"&&t.x2.indexOf("px")>-1&&(o=parseFloat(t.x2)),e==="x1"?n:o}},{key:"getStringX",value:function(e){var t=this.w,i=e;t.config.xaxis.convertedCatToNumeric&&t.globals.categoryLabels.length&&(e=t.globals.categoryLabels.indexOf(e)+1);var a=t.globals.labels.indexOf(e),s=t.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),m}(),xt=function(){function m(e){F(this,m),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new ye(this.annoCtx)}return R(m,[{key:"addXaxisAnnotation",value:function(e,t,i){var a,s=this.w,r=this.helpers.getX1X2("x1",e),n=e.label.text,o=e.strokeDashArray;if(P.isNumber(r)){if(e.x2===null||e.x2===void 0){var h=this.annoCtx.graphics.drawLine(r+e.offsetX,0+e.offsetY,r+e.offsetX,s.globals.gridHeight+e.offsetY,e.borderColor,o,e.borderWidth);t.appendChild(h.node),e.id&&h.node.classList.add(e.id)}else{if((a=this.helpers.getX1X2("x2",e))n){var c=n;n=a,a=c}var d=this.annoCtx.graphics.drawRect(0+e.offsetX,a+e.offsetY,this._getYAxisAnnotationWidth(e),n-a,0,e.fillColor,e.opacity,1,e.borderColor,r);d.node.classList.add("apexcharts-annotation-rect"),d.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),t.appendChild(d.node),e.id&&d.node.classList.add(e.id)}var u=e.label.position==="right"?s.globals.gridWidth:e.label.position==="center"?s.globals.gridWidth/2:0,p=this.annoCtx.graphics.drawText({x:u+e.label.offsetX,y:(a??n)+e.label.offsetY-3,text:o,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(e.label.style.cssClass," ").concat(e.id?e.id:"")});p.attr({rel:i}),t.appendChild(p.node)}},{key:"_getYAxisAnnotationWidth",value:function(e){var t=this.w;return t.globals.gridWidth,(e.width.indexOf("%")>-1?t.globals.gridWidth*parseInt(e.width,10)/100:parseInt(e.width,10))+e.offsetX}},{key:"drawYAxisAnnotations",value:function(){var e=this,t=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return t.config.annotations.yaxis.map(function(a,s){e.addYaxisAnnotation(a,i.node,s)}),i}}]),m}(),mt=function(){function m(e){F(this,m),this.w=e.w,this.annoCtx=e,this.helpers=new ye(this.annoCtx)}return R(m,[{key:"addPointAnnotation",value:function(e,t,i){this.w;var a=this.helpers.getX1X2("x1",e),s=this.helpers.getY1Y2("y1",e);if(P.isNumber(a)){var r={pSize:e.marker.size,pointStrokeWidth:e.marker.strokeWidth,pointFillColor:e.marker.fillColor,pointStrokeColor:e.marker.strokeColor,shape:e.marker.shape,pRadius:e.marker.radius,class:"apexcharts-point-annotation-marker ".concat(e.marker.cssClass," ").concat(e.id?e.id:"")},n=this.annoCtx.graphics.drawMarker(a+e.marker.offsetX,s+e.marker.offsetY,r);t.appendChild(n.node);var o=e.label.text?e.label.text:"",h=this.annoCtx.graphics.drawText({x:a+e.label.offsetX,y:s+e.label.offsetY-e.marker.size-parseFloat(e.label.style.fontSize)/1.6,text:o,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(e.label.style.cssClass," ").concat(e.id?e.id:"")});if(h.attr({rel:i}),t.appendChild(h.node),e.customSVG.SVG){var c=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+e.customSVG.cssClass});c.attr({transform:"translate(".concat(a+e.customSVG.offsetX,", ").concat(s+e.customSVG.offsetY,")")}),c.node.innerHTML=e.customSVG.SVG,t.appendChild(c.node)}if(e.image.path){var d=e.image.width?e.image.width:20,u=e.image.height?e.image.height:20;n=this.annoCtx.addImage({x:a+e.image.offsetX-d/2,y:s+e.image.offsetY-u/2,width:d,height:u,path:e.image.path,appendTo:".apexcharts-point-annotations"})}e.mouseEnter&&n.node.addEventListener("mouseenter",e.mouseEnter.bind(this,e)),e.mouseLeave&&n.node.addEventListener("mouseleave",e.mouseLeave.bind(this,e)),e.click&&n.node.addEventListener("click",e.click.bind(this,e))}}},{key:"drawPointAnnotations",value:function(){var e=this,t=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return t.config.annotations.points.map(function(a,s){e.addPointAnnotation(a,i.node,s)}),i}}]),m}(),Ue={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},ie=function(){function m(){F(this,m),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return R(m,[{key:"init",value:function(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[Ue],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",dateFormatter:function(e){return new Date(e).toDateString()}},png:{filename:void 0},svg:{filename:void 0}},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,dataLabels:{format:"scale"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(e){return e}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(e){return e+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(e){return e.globals.seriesTotals.reduce(function(t,i){return t+i},0)/e.globals.series.length+"%"}}}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(e){return e}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(e){return e}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(e){return e.globals.seriesTotals.reduce(function(t,i){return t+i},0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(e){return e!==null?e:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:2},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",width:8,height:8,radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.5}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(e){return e?e+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),m}(),vt=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.graphics=new z(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new ye(this),this.xAxisAnnotations=new xt(this),this.yAxisAnnotations=new bt(this),this.pointsAnnotations=new mt(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return R(m,[{key:"drawAxesAnnotations",value:function(){var e=this.w;if(e.globals.axisCharts){for(var t=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=e.config.chart.animations.enabled,r=[t,i,a],n=[i.node,t.node,a.node],o=0;o<3;o++)e.globals.dom.elGraphical.add(r[o]),!s||e.globals.resized||e.globals.dataChanged||e.config.chart.type!=="scatter"&&e.config.chart.type!=="bubble"&&e.globals.dataPoints>1&&n[o].classList.add("apexcharts-element-hidden"),e.globals.delayedElements.push({el:n[o],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var e=this;this.w.config.annotations.images.map(function(t,i){e.addImage(t,i)})}},{key:"drawTextAnnos",value:function(){var e=this;this.w.config.annotations.texts.map(function(t,i){e.addText(t,i)})}},{key:"addXaxisAnnotation",value:function(e,t,i){this.xAxisAnnotations.addXaxisAnnotation(e,t,i)}},{key:"addYaxisAnnotation",value:function(e,t,i){this.yAxisAnnotations.addYaxisAnnotation(e,t,i)}},{key:"addPointAnnotation",value:function(e,t,i){this.pointsAnnotations.addPointAnnotation(e,t,i)}},{key:"addText",value:function(e,t){var i=e.x,a=e.y,s=e.text,r=e.textAnchor,n=e.foreColor,o=e.fontSize,h=e.fontFamily,c=e.fontWeight,d=e.cssClass,u=e.backgroundColor,p=e.borderWidth,f=e.strokeDashArray,b=e.borderRadius,v=e.borderColor,w=e.appendTo,k=w===void 0?".apexcharts-annotations":w,l=e.paddingLeft,g=l===void 0?4:l,x=e.paddingRight,y=x===void 0?4:x,A=e.paddingBottom,S=A===void 0?2:A,L=e.paddingTop,C=L===void 0?2:L,M=this.w,T=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:o||"12px",fontWeight:c||"regular",fontFamily:h||M.config.chart.fontFamily,foreColor:n||M.config.chart.foreColor,cssClass:d}),I=M.globals.dom.baseEl.querySelector(k);I&&I.appendChild(T.node);var X=T.bbox();if(s){var Y=this.graphics.drawRect(X.x-g,X.y-C,X.width+g+y,X.height+S+C,b,u||"transparent",1,p,v,f);I.insertBefore(Y.node,T.node)}}},{key:"addImage",value:function(e,t){var i=this.w,a=e.path,s=e.x,r=s===void 0?0:s,n=e.y,o=n===void 0?0:n,h=e.width,c=h===void 0?20:h,d=e.height,u=d===void 0?20:d,p=e.appendTo,f=p===void 0?".apexcharts-annotations":p,b=i.globals.dom.Paper.image(a);b.size(c,u).move(r,o);var v=i.globals.dom.baseEl.querySelector(f);return v&&v.appendChild(b.node),b}},{key:"addXaxisAnnotationExternal",value:function(e,t,i){return this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(e,t,i){return this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(e,t,i){return this.invertAxis===void 0&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(e){var t=e.params,i=e.pushToMemory,a=e.context,s=e.type,r=e.contextMethod,n=a,o=n.w,h=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),c=h.childNodes.length+1,d=new ie,u=Object.assign({},s==="xaxis"?d.xAxisAnnotation:s==="yaxis"?d.yAxisAnnotation:d.pointAnnotation),p=P.extend(u,t);switch(s){case"xaxis":this.addXaxisAnnotation(p,h,c);break;case"yaxis":this.addYaxisAnnotation(p,h,c);break;case"point":this.addPointAnnotation(p,h,c)}var f=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(c,"']")),b=this.helpers.addBackgroundToAnno(f,p);return b&&h.insertBefore(b.node,f),i&&o.globals.memory.methodsToExec.push({context:n,id:p.id?p.id:P.randomId(),method:r,label:"addAnnotation",params:t}),a}},{key:"clearAnnotations",value:function(e){var t=e.w,i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");t.globals.memory.methodsToExec.map(function(a,s){a.label!=="addText"&&a.label!=="addAnnotation"||t.globals.memory.methodsToExec.splice(s,1)}),i=P.listToArray(i),Array.prototype.forEach.call(i,function(a){for(;a.firstChild;)a.removeChild(a.firstChild)})}},{key:"removeAnnotation",value:function(e,t){var i=e.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(t));a&&(i.globals.memory.methodsToExec.map(function(s,r){s.id===t&&i.globals.memory.methodsToExec.splice(r,1)}),Array.prototype.forEach.call(a,function(s){s.parentElement.removeChild(s)}))}}]),m}(),j=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return R(m,[{key:"isValidDate",value:function(e){return!isNaN(this.parseDate(e))}},{key:"getTimeStamp",value:function(e){return Date.parse(e)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(e).toISOString().substr(0,25)).getTime():new Date(e).getTime():e}},{key:"getDate",value:function(e){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(e).toUTCString()):new Date(e)}},{key:"parseDate",value:function(e){var t=Date.parse(e);if(!isNaN(t))return this.getTimeStamp(e);var i=Date.parse(e.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getTimeStamp(i)}},{key:"parseDateWithTimezone",value:function(e){return Date.parse(e.replace(/-/g,"/").replace(/[a-z]+/gi," "))}},{key:"formatDate",value:function(e,t){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=["\0"].concat(Z(i.months)),r=[""].concat(Z(i.shortMonths)),n=[""].concat(Z(i.days)),o=[""].concat(Z(i.shortDays));function h(S,L){var C=S+"";for(L=L||2;C.length12?p-12:p===0?12:p;t=(t=(t=(t=t.replace(/(^|[^\\])HH+/g,"$1"+h(p))).replace(/(^|[^\\])H/g,"$1"+p)).replace(/(^|[^\\])hh+/g,"$1"+h(f))).replace(/(^|[^\\])h/g,"$1"+f);var b=a?e.getUTCMinutes():e.getMinutes();t=(t=t.replace(/(^|[^\\])mm+/g,"$1"+h(b))).replace(/(^|[^\\])m/g,"$1"+b);var v=a?e.getUTCSeconds():e.getSeconds();t=(t=t.replace(/(^|[^\\])ss+/g,"$1"+h(v))).replace(/(^|[^\\])s/g,"$1"+v);var w=a?e.getUTCMilliseconds():e.getMilliseconds();t=t.replace(/(^|[^\\])fff+/g,"$1"+h(w,3)),w=Math.round(w/10),t=t.replace(/(^|[^\\])ff/g,"$1"+h(w)),w=Math.round(w/10);var k=p<12?"AM":"PM";t=(t=(t=t.replace(/(^|[^\\])f/g,"$1"+w)).replace(/(^|[^\\])TT+/g,"$1"+k)).replace(/(^|[^\\])T/g,"$1"+k.charAt(0));var l=k.toLowerCase();t=(t=t.replace(/(^|[^\\])tt+/g,"$1"+l)).replace(/(^|[^\\])t/g,"$1"+l.charAt(0));var g=-e.getTimezoneOffset(),x=a||!g?"Z":g>0?"+":"-";if(!a){var y=(g=Math.abs(g))%60;x+=h(Math.floor(g/60))+":"+h(y)}t=t.replace(/(^|[^\\])K/g,"$1"+x);var A=(a?e.getUTCDay():e.getDay())+1;return t=(t=(t=(t=(t=t.replace(new RegExp(n[0],"g"),n[A])).replace(new RegExp(o[0],"g"),o[A])).replace(new RegExp(s[0],"g"),s[d])).replace(new RegExp(r[0],"g"),r[d])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(e,t,i){var a=this.w;a.config.xaxis.min!==void 0&&(e=a.config.xaxis.min),a.config.xaxis.max!==void 0&&(t=a.config.xaxis.max);var s=this.getDate(e),r=this.getDate(t),n=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),o=this.formatDate(r,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(n[6],10),maxMillisecond:parseInt(o[6],10),minSecond:parseInt(n[5],10),maxSecond:parseInt(o[5],10),minMinute:parseInt(n[4],10),maxMinute:parseInt(o[4],10),minHour:parseInt(n[3],10),maxHour:parseInt(o[3],10),minDate:parseInt(n[2],10),maxDate:parseInt(o[2],10),minMonth:parseInt(n[1],10)-1,maxMonth:parseInt(o[1],10)-1,minYear:parseInt(n[0],10),maxYear:parseInt(o[0],10)}}},{key:"isLeapYear",value:function(e){return e%4==0&&e%100!=0||e%400==0}},{key:"calculcateLastDaysOfMonth",value:function(e,t,i){return this.determineDaysOfMonths(e,t)-i}},{key:"determineDaysOfYear",value:function(e){var t=365;return this.isLeapYear(e)&&(t=366),t}},{key:"determineRemainingDaysOfYear",value:function(e,t,i){var a=this.daysCntOfYear[t]+i;return t>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(e,t){var i=30;switch(e=P.monthMod(e),!0){case this.months30.indexOf(e)>-1:e===2&&(i=this.isLeapYear(t)?29:28);break;case this.months31.indexOf(e)>-1:default:i=31}return i}}]),m}(),pe=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.tooltipKeyFormat="dd MMM"}return R(m,[{key:"xLabelFormat",value:function(e,t,i,a){var s=this.w;if(s.config.xaxis.type==="datetime"&&s.config.xaxis.labels.formatter===void 0&&s.config.tooltip.x.formatter===void 0){var r=new j(this.ctx);return r.formatDate(r.getDate(t),s.config.tooltip.x.format)}return e(t,i,a)}},{key:"defaultGeneralFormatter",value:function(e){return Array.isArray(e)?e.map(function(t){return t}):e}},{key:"defaultYFormatter",value:function(e,t,i){var a=this.w;return P.isNumber(e)&&(e=a.globals.yValueDecimal!==0?e.toFixed(t.decimalsInFloat!==void 0?t.decimalsInFloat:a.globals.yValueDecimal):a.globals.maxYArr[i]-a.globals.minYArr[i]<5?e.toFixed(1):e.toFixed(0)),e}},{key:"setLabelFormatters",value:function(){var e=this,t=this.w;return t.globals.xaxisTooltipFormatter=function(i){return e.defaultGeneralFormatter(i)},t.globals.ttKeyFormatter=function(i){return e.defaultGeneralFormatter(i)},t.globals.ttZFormatter=function(i){return i},t.globals.legendFormatter=function(i){return e.defaultGeneralFormatter(i)},t.config.xaxis.labels.formatter!==void 0?t.globals.xLabelFormatter=t.config.xaxis.labels.formatter:t.globals.xLabelFormatter=function(i){if(P.isNumber(i)){if(!t.config.xaxis.convertedCatToNumeric&&t.config.xaxis.type==="numeric"){if(P.isNumber(t.config.xaxis.decimalsInFloat))return i.toFixed(t.config.xaxis.decimalsInFloat);var a=t.globals.maxX-t.globals.minX;return a>0&&a<100?i.toFixed(1):i.toFixed(0)}return t.globals.isBarHorizontal&&t.globals.maxY-t.globals.minYArr<4?i.toFixed(1):i.toFixed(0)}return i},typeof t.config.tooltip.x.formatter=="function"?t.globals.ttKeyFormatter=t.config.tooltip.x.formatter:t.globals.ttKeyFormatter=t.globals.xLabelFormatter,typeof t.config.xaxis.tooltip.formatter=="function"&&(t.globals.xaxisTooltipFormatter=t.config.xaxis.tooltip.formatter),(Array.isArray(t.config.tooltip.y)||t.config.tooltip.y.formatter!==void 0)&&(t.globals.ttVal=t.config.tooltip.y),t.config.tooltip.z.formatter!==void 0&&(t.globals.ttZFormatter=t.config.tooltip.z.formatter),t.config.legend.formatter!==void 0&&(t.globals.legendFormatter=t.config.legend.formatter),t.config.yaxis.forEach(function(i,a){i.labels.formatter!==void 0?t.globals.yLabelFormatters[a]=i.labels.formatter:t.globals.yLabelFormatters[a]=function(s){return t.globals.xyCharts?Array.isArray(s)?s.map(function(r){return e.defaultYFormatter(r,i,a)}):e.defaultYFormatter(s,i,a):s}}),t.globals}},{key:"heatmapLabelFormatters",value:function(){var e=this.w;if(e.config.chart.type==="heatmap"){e.globals.yAxisScale[0].result=e.globals.seriesNames.slice();var t=e.globals.seriesNames.reduce(function(i,a){return i.length>a.length?i:a},0);e.globals.yAxisScale[0].niceMax=t,e.globals.yAxisScale[0].niceMin=t}}}]),m}(),Ae=function(m){var e,t=m.isTimeline,i=m.ctx,a=m.seriesIndex,s=m.dataPointIndex,r=m.y1,n=m.y2,o=m.w,h=o.globals.seriesRangeStart[a][s],c=o.globals.seriesRangeEnd[a][s],d=o.globals.labels[s],u=o.config.series[a].name?o.config.series[a].name:"",p=o.globals.ttKeyFormatter,f=o.config.tooltip.y.title.formatter,b={w:o,seriesIndex:a,dataPointIndex:s,start:h,end:c};typeof f=="function"&&(u=f(u,b)),(e=o.config.series[a].data[s])!==null&&e!==void 0&&e.x&&(d=o.config.series[a].data[s].x),t||o.config.xaxis.type==="datetime"&&(d=new pe(i).xLabelFormat(o.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new j(i).formatDate,w:o})),typeof p=="function"&&(d=p(d,b)),Number.isFinite(r)&&Number.isFinite(n)&&(h=r,c=n);var v="",w="",k=o.globals.colors[a];if(o.config.tooltip.x.formatter===void 0)if(o.config.xaxis.type==="datetime"){var l=new j(i);v=l.formatDate(l.getDate(h),o.config.tooltip.x.format),w=l.formatDate(l.getDate(c),o.config.tooltip.x.format)}else v=h,w=c;else v=o.config.tooltip.x.formatter(h),w=o.config.tooltip.x.formatter(c);return{start:h,end:c,startVal:v,endVal:w,ylabel:d,color:k,seriesName:u}},Se=function(m){var e=m.color,t=m.seriesName,i=m.ylabel,a=m.start,s=m.end,r=m.seriesIndex,n=m.dataPointIndex,o=m.ctx.tooltip.tooltipLabels.getFormatters(r);a=o.yLbFormatter(a),s=o.yLbFormatter(s);var h=o.yLbFormatter(m.w.globals.series[r][n]),c=` - `.concat(a,` - - - `).concat(s,` - `);return'
'+(t||"")+'
'+i+": "+(m.w.globals.comboCharts?m.w.config.series[r].type==="rangeArea"||m.w.config.series[r].type==="rangeBar"?c:"".concat(h,""):c)+"
"},he=function(){function m(e){F(this,m),this.opts=e}return R(m,[{key:"hideYAxis",value:function(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}},{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(e){return this.hideYAxis(),P.extend(e,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"round"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"funnel",value:function(){return this.hideYAxis(),E(E({},this.bar()),{},{chart:{animations:{easing:"linear",speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:"around",borderRadius:0,dataLabels:{position:"center"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}},{key:"candlestick",value:function(){var e=this;return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var i=t.seriesIndex,a=t.dataPointIndex,s=t.w;return e._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var e=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var i=t.seriesIndex,a=t.dataPointIndex,s=t.w;return e._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:5,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(e,t){t.ctx;var i=t.seriesIndex,a=t.dataPointIndex,s=t.w,r=function(){var n=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-n};return s.globals.comboCharts?s.config.series[i].type==="rangeBar"||s.config.series[i].type==="rangeArea"?r():e:r()},background:{enabled:!1},style:{colors:["#fff"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom:function(e){return e.w.config.plotOptions&&e.w.config.plotOptions.bar&&e.w.config.plotOptions.bar.horizontal?function(t){var i=Ae(E(E({},t),{},{isTimeline:!0})),a=i.color,s=i.seriesName,r=i.ylabel,n=i.startVal,o=i.endVal;return Se(E(E({},t),{},{color:a,seriesName:s,ylabel:r,start:n,end:o}))}(e):function(t){var i=Ae(t),a=i.color,s=i.seriesName,r=i.ylabel,n=i.start,o=i.end;return Se(E(E({},t),{},{color:a,seriesName:s,ylabel:r,start:n,end:o}))}(e)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"dumbbell",value:function(e){var t,i;return(t=e.plotOptions.bar)!==null&&t!==void 0&&t.barHeight||(e.plotOptions.bar.barHeight=2),(i=e.plotOptions.bar)!==null&&i!==void 0&&i.columnWidth||(e.plotOptions.bar.columnWidth=2),e}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(e){return function(t){var i=Ae(t),a=i.color,s=i.seriesName,r=i.ylabel,n=i.start,o=i.end;return Se(E(E({},t),{},{color:a,seriesName:s,ylabel:r,start:n,end:o}))}(e)}}}}},{key:"brush",value:function(e){return P.extend(e,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(e){e.dataLabels=e.dataLabels||{},e.dataLabels.formatter=e.dataLabels.formatter||void 0;var t=e.dataLabels.formatter;return e.yaxis.forEach(function(i,a){e.yaxis[a].min=0,e.yaxis[a].max=100}),e.chart.type==="bar"&&(e.dataLabels.formatter=t||function(i){return typeof i=="number"&&i?i.toFixed(0)+"%":i}),e}},{key:"stackedBars",value:function(){var e=this.bar();return E(E({},e),{},{plotOptions:E(E({},e.plotOptions),{},{bar:E(E({},e.plotOptions.bar),{},{borderRadiusApplication:"end",borderRadiusWhenStacked:"last"})})})}},{key:"convertCatToNumeric",value:function(e){return e.xaxis.convertedCatToNumeric=!0,e}},{key:"convertCatToNumericXaxis",value:function(e,t,i){e.xaxis.type="numeric",e.xaxis.labels=e.xaxis.labels||{},e.xaxis.labels.formatter=e.xaxis.labels.formatter||function(r){return P.isNumber(r)?Math.floor(r):r};var a=e.xaxis.labels.formatter,s=e.xaxis.categories&&e.xaxis.categories.length?e.xaxis.categories:e.labels;return i&&i.length&&(s=i.map(function(r){return Array.isArray(r)?r:String(r)})),s&&s.length&&(e.xaxis.labels.formatter=function(r){return P.isNumber(r)?a(s[Math.floor(r)-1]):a(r)}),e.xaxis.categories=[],e.labels=[],e.xaxis.tickAmount=e.xaxis.tickAmount||"dataPoints",e}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return this.opts.yaxis[0].tickAmount=this.opts.yaxis[0].tickAmount?this.opts.yaxis[0].tickAmount:6,{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(e){return e},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:"_getBoxTooltip",value:function(e,t,i,a,s){var r=e.globals.seriesCandleO[t][i],n=e.globals.seriesCandleH[t][i],o=e.globals.seriesCandleM[t][i],h=e.globals.seriesCandleL[t][i],c=e.globals.seriesCandleC[t][i];return e.config.series[t].type&&e.config.series[t].type!==s?`
- `.concat(e.config.series[t].name?e.config.series[t].name:"series-"+(t+1),": ").concat(e.globals.series[t][i],` -
`):'
')+"
".concat(a[0],': ')+r+"
"+"
".concat(a[1],': ')+n+"
"+(o?"
".concat(a[2],': ')+o+"
":"")+"
".concat(a[3],': ')+h+"
"+"
".concat(a[4],': ')+c+"
"}}]),m}(),ce=function(){function m(e){F(this,m),this.opts=e}return R(m,[{key:"init",value:function(e){var t=e.responsiveOverride,i=this.opts,a=new ie,s=new he(i);this.chartType=i.chart.type,i=this.extendYAxis(i),i=this.extendAnnotations(i);var r=a.init(),n={};if(i&&V(i)==="object"){var o,h,c,d,u,p,f,b,v,w,k={};k=["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(i.chart.type)!==-1?s[i.chart.type]():s.line(),(o=i.plotOptions)!==null&&o!==void 0&&(h=o.bar)!==null&&h!==void 0&&h.isFunnel&&(k=s.funnel()),i.chart.stacked&&i.chart.type==="bar"&&(k=s.stackedBars()),(c=i.chart.brush)!==null&&c!==void 0&&c.enabled&&(k=s.brush(k)),i.chart.stacked&&i.chart.stackType==="100%"&&(i=s.stacked100(i)),(d=i.plotOptions)!==null&&d!==void 0&&(u=d.bar)!==null&&u!==void 0&&u.isDumbbell&&(i=s.dumbbell(i)),((p=i)===null||p===void 0||(f=p.stroke)===null||f===void 0?void 0:f.curve)==="monotoneCubic"&&(i.stroke.curve="smooth"),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(i),i.xaxis=i.xaxis||window.Apex.xaxis||{},t||(i.xaxis.convertedCatToNumeric=!1),((b=(i=this.checkForCatToNumericXAxis(this.chartType,k,i)).chart.sparkline)!==null&&b!==void 0&&b.enabled||(v=window.Apex.chart)!==null&&v!==void 0&&(w=v.sparkline)!==null&&w!==void 0&&w.enabled)&&(k=s.sparkline(k)),n=P.extend(r,k)}var l=P.extend(n,window.Apex);return r=P.extend(l,i),r=this.handleUserInputErrors(r)}},{key:"checkForCatToNumericXAxis",value:function(e,t,i){var a,s,r=new he(i),n=(e==="bar"||e==="boxPlot")&&((a=i.plotOptions)===null||a===void 0||(s=a.bar)===null||s===void 0?void 0:s.horizontal),o=e==="pie"||e==="polarArea"||e==="donut"||e==="radar"||e==="radialBar"||e==="heatmap",h=i.xaxis.type!=="datetime"&&i.xaxis.type!=="numeric",c=i.xaxis.tickPlacement?i.xaxis.tickPlacement:t.xaxis&&t.xaxis.tickPlacement;return n||o||!h||c==="between"||(i=r.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(e,t){var i=new ie;(e.yaxis===void 0||!e.yaxis||Array.isArray(e.yaxis)&&e.yaxis.length===0)&&(e.yaxis={}),e.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(e.yaxis=P.extend(e.yaxis,window.Apex.yaxis)),e.yaxis.constructor!==Array?e.yaxis=[P.extend(i.yAxis,e.yaxis)]:e.yaxis=P.extendArray(e.yaxis,i.yAxis);var a=!1;e.yaxis.forEach(function(r){r.logarithmic&&(a=!0)});var s=e.series;return t&&!s&&(s=t.config.series),a&&s.length!==e.yaxis.length&&s.length&&(e.yaxis=s.map(function(r,n){if(r.name||(s[n].name="series-".concat(n+1)),e.yaxis[n])return e.yaxis[n].seriesName=s[n].name,e.yaxis[n];var o=P.extend(i.yAxis,e.yaxis[0]);return o.show=!1,o})),a&&s.length>1&&s.length!==e.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes"),e}},{key:"extendAnnotations",value:function(e){return e.annotations===void 0&&(e.annotations={},e.annotations.yaxis=[],e.annotations.xaxis=[],e.annotations.points=[]),e=this.extendYAxisAnnotations(e),e=this.extendXAxisAnnotations(e),e=this.extendPointAnnotations(e)}},{key:"extendYAxisAnnotations",value:function(e){var t=new ie;return e.annotations.yaxis=P.extendArray(e.annotations.yaxis!==void 0?e.annotations.yaxis:[],t.yAxisAnnotation),e}},{key:"extendXAxisAnnotations",value:function(e){var t=new ie;return e.annotations.xaxis=P.extendArray(e.annotations.xaxis!==void 0?e.annotations.xaxis:[],t.xAxisAnnotation),e}},{key:"extendPointAnnotations",value:function(e){var t=new ie;return e.annotations.points=P.extendArray(e.annotations.points!==void 0?e.annotations.points:[],t.pointAnnotation),e}},{key:"checkForDarkTheme",value:function(e){e.theme&&e.theme.mode==="dark"&&(e.tooltip||(e.tooltip={}),e.tooltip.theme!=="light"&&(e.tooltip.theme="dark"),e.chart.foreColor||(e.chart.foreColor="#f6f7f8"),e.chart.background||(e.chart.background="#424242"),e.theme.palette||(e.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(e){var t=e;if(t.tooltip.shared&&t.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if(t.chart.type==="bar"&&t.plotOptions.bar.horizontal){if(t.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");t.yaxis[0].reversed&&(t.yaxis[0].opposite=!0),t.xaxis.tooltip.enabled=!1,t.yaxis[0].tooltip.enabled=!1,t.chart.zoom.enabled=!1}return t.chart.type!=="bar"&&t.chart.type!=="rangeBar"||t.tooltip.shared&&t.xaxis.crosshairs.width==="barWidth"&&t.series.length>1&&(t.xaxis.crosshairs.width="tickWidth"),t.chart.type!=="candlestick"&&t.chart.type!=="boxPlot"||t.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(t.chart.type," chart is not supported.")),t.yaxis[0].reversed=!1),t}}]),m}(),qe=function(){function m(){F(this,m)}return R(m,[{key:"initGlobalVars",value:function(e){e.series=[],e.seriesCandleO=[],e.seriesCandleH=[],e.seriesCandleM=[],e.seriesCandleL=[],e.seriesCandleC=[],e.seriesRangeStart=[],e.seriesRangeEnd=[],e.seriesRange=[],e.seriesPercent=[],e.seriesGoals=[],e.seriesX=[],e.seriesZ=[],e.seriesNames=[],e.seriesTotals=[],e.seriesLog=[],e.seriesColors=[],e.stackedSeriesTotals=[],e.seriesXvalues=[],e.seriesYvalues=[],e.labels=[],e.hasXaxisGroups=!1,e.groups=[],e.hasSeriesGroups=!1,e.seriesGroups=[],e.categoryLabels=[],e.timescaleLabels=[],e.noLabelsProvided=!1,e.resizeTimer=null,e.selectionResizeTimer=null,e.delayedElements=[],e.pointsArray=[],e.dataLabelsRects=[],e.isXNumeric=!1,e.skipLastTimelinelabel=!1,e.skipFirstTimelinelabel=!1,e.isDataXYZ=!1,e.isMultiLineX=!1,e.isMultipleYAxis=!1,e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE,e.minYArr=[],e.maxYArr=[],e.maxX=-Number.MAX_VALUE,e.minX=Number.MAX_VALUE,e.initialMaxX=-Number.MAX_VALUE,e.initialMinX=Number.MAX_VALUE,e.maxDate=0,e.minDate=Number.MAX_VALUE,e.minZ=Number.MAX_VALUE,e.maxZ=-Number.MAX_VALUE,e.minXDiff=Number.MAX_VALUE,e.yAxisScale=[],e.xAxisScale=null,e.xAxisTicksPositions=[],e.yLabelsCoords=[],e.yTitleCoords=[],e.barPadForNumericAxis=0,e.padHorizontal=0,e.xRange=0,e.yRange=[],e.zRange=0,e.dataPoints=0,e.xTickAmount=0}},{key:"globalVars",value:function(e){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:e.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:e.chart.toolbar.autoSelected==="zoom"&&e.chart.toolbar.tools.zoom&&e.chart.zoom.enabled,panEnabled:e.chart.toolbar.autoSelected==="pan"&&e.chart.toolbar.tools.pan,selectionEnabled:e.chart.toolbar.autoSelected==="selection"&&e.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null}}},{key:"init",value:function(e){var t=this.globalVars(e);return this.initGlobalVars(t),t.initialConfig=P.extend({},e),t.initialSeries=P.clone(e.series),t.lastXAxis=P.clone(t.initialConfig.xaxis),t.lastYAxis=P.clone(t.initialConfig.yaxis),t}}]),m}(),yt=function(){function m(e){F(this,m),this.opts=e}return R(m,[{key:"init",value:function(){var e=new ce(this.opts).init({responsiveOverride:!1});return{config:e,globals:new qe().init(e)}}}]),m}(),Q=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return R(m,[{key:"clippedImgArea",value:function(e){var t=this.w,i=t.config,a=parseInt(t.globals.gridWidth,10),s=parseInt(t.globals.gridHeight,10),r=a>s?a:s,n=e.image,o=0,h=0;e.width===void 0&&e.height===void 0?i.fill.image.width!==void 0&&i.fill.image.height!==void 0?(o=i.fill.image.width+1,h=i.fill.image.height):(o=r+1,h=r):(o=e.width,h=e.height);var c=document.createElementNS(t.globals.SVGNS,"pattern");z.setAttrs(c,{id:e.patternID,patternUnits:e.patternUnits?e.patternUnits:"userSpaceOnUse",width:o+"px",height:h+"px"});var d=document.createElementNS(t.globals.SVGNS,"image");c.appendChild(d),d.setAttributeNS(window.SVG.xlink,"href",n),z.setAttrs(d,{x:0,y:0,preserveAspectRatio:"none",width:o+"px",height:h+"px"}),d.style.opacity=e.opacity,t.globals.dom.elDefs.node.appendChild(c)}},{key:"getSeriesIndex",value:function(e){var t=this.w,i=t.config.chart.type;return(i==="bar"||i==="rangeBar")&&t.config.plotOptions.bar.distributed||i==="heatmap"||i==="treemap"?this.seriesIndex=e.seriesNumber:this.seriesIndex=e.seriesNumber%t.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(e){var t=this.w;this.opts=e;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(e);var n=this.getFillColors()[this.seriesIndex];t.globals.seriesColors[this.seriesIndex]!==void 0&&(n=t.globals.seriesColors[this.seriesIndex]),typeof n=="function"&&(n=n({seriesIndex:this.seriesIndex,dataPointIndex:e.dataPointIndex,value:e.value,w:t}));var o=e.fillType?e.fillType:this.getFillType(this.seriesIndex),h=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;e.color&&(n=e.color),n||(n="#fff",console.warn("undefined color - ApexCharts"));var c=n;if(n.indexOf("rgb")===-1?n.length<9&&(c=P.hexToRgba(n,h)):n.indexOf("rgba")>-1&&(h=P.getOpacityFromRGBA(n)),e.opacity&&(h=e.opacity),o==="pattern"&&(a=this.handlePatternFill({fillConfig:e.fillConfig,patternFill:a,fillColor:n,fillOpacity:h,defaultColor:c})),o==="gradient"&&(s=this.handleGradientFill({fillConfig:e.fillConfig,fillColor:n,fillOpacity:h,i:this.seriesIndex})),o==="image"){var d=r.fill.image.src,u=e.patternID?e.patternID:"";this.clippedImgArea({opacity:h,image:Array.isArray(d)?e.seriesNumber-1&&(p=P.getOpacityFromRGBA(u));var f=r.gradient.opacityTo===void 0?i:Array.isArray(r.gradient.opacityTo)?r.gradient.opacityTo[s]:r.gradient.opacityTo;if(r.gradient.gradientToColors===void 0||r.gradient.gradientToColors.length===0)n=r.gradient.shade==="dark"?c.shadeColor(-1*parseFloat(r.gradient.shadeIntensity),t.indexOf("rgb")>-1?P.rgb2hex(t):t):c.shadeColor(parseFloat(r.gradient.shadeIntensity),t.indexOf("rgb")>-1?P.rgb2hex(t):t);else if(r.gradient.gradientToColors[o.seriesNumber]){var b=r.gradient.gradientToColors[o.seriesNumber];n=b,b.indexOf("rgba")>-1&&(f=P.getOpacityFromRGBA(b))}else n=t;if(r.gradient.gradientFrom&&(u=r.gradient.gradientFrom),r.gradient.gradientTo&&(n=r.gradient.gradientTo),r.gradient.inverseColors){var v=u;u=n,n=v}return u.indexOf("rgb")>-1&&(u=P.rgb2hex(u)),n.indexOf("rgb")>-1&&(n=P.rgb2hex(n)),h.drawGradient(d,u,n,p,f,o.size,r.gradient.stops,r.gradient.colorStops,s)}}]),m}(),fe=function(){function m(e,t){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"setGlobalMarkerSize",value:function(){var e=this.w;if(e.globals.markers.size=Array.isArray(e.config.markers.size)?e.config.markers.size:[e.config.markers.size],e.globals.markers.size.length>0){if(e.globals.markers.size.length4&&arguments[4]!==void 0&&arguments[4],n=this.w,o=t,h=e,c=null,d=new z(this.ctx),u=n.config.markers.discrete&&n.config.markers.discrete.length;if((n.globals.markers.size[t]>0||r||u)&&(c=d.group({class:r||u?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(n.globals.cuid,")")),Array.isArray(h.x))for(var p=0;p0:n.config.markers.size>0)||r||u){P.isNumber(h.y[p])?b+=" w".concat(P.randomId()):b="apexcharts-nullpoint";var v=this.getMarkerConfig({cssClass:b,seriesIndex:t,dataPointIndex:f});n.config.series[o].data[f]&&(n.config.series[o].data[f].fillColor&&(v.pointFillColor=n.config.series[o].data[f].fillColor),n.config.series[o].data[f].strokeColor&&(v.pointStrokeColor=n.config.series[o].data[f].strokeColor)),a&&(v.pSize=a),(h.x[p]<0||h.x[p]>n.globals.gridWidth||h.y[p]<-n.globals.markers.largestSize||h.y[p]>n.globals.gridHeight+n.globals.markers.largestSize)&&(v.pSize=0),(s=d.drawMarker(h.x[p],h.y[p],v)).attr("rel",f),s.attr("j",f),s.attr("index",t),s.node.setAttribute("default-marker-size",v.pSize),new U(this.ctx).setSelectionFilter(s,t,f),this.addEvents(s),c&&c.add(s)}else n.globals.pointsArray[t]===void 0&&(n.globals.pointsArray[t]=[]),n.globals.pointsArray[t].push([h.x[p],h.y[p]])}return c}},{key:"getMarkerConfig",value:function(e){var t=e.cssClass,i=e.seriesIndex,a=e.dataPointIndex,s=a===void 0?null:a,r=e.finishRadius,n=r===void 0?null:r,o=this.w,h=this.getMarkerStyle(i),c=o.globals.markers.size[i],d=o.config.markers;return s!==null&&d.discrete.length&&d.discrete.map(function(u){u.seriesIndex===i&&u.dataPointIndex===s&&(h.pointStrokeColor=u.strokeColor,h.pointFillColor=u.fillColor,c=u.size,h.pointShape=u.shape)}),{pSize:n===null?c:n,pRadius:d.radius,width:Array.isArray(d.width)?d.width[i]:d.width,height:Array.isArray(d.height)?d.height[i]:d.height,pointStrokeWidth:Array.isArray(d.strokeWidth)?d.strokeWidth[i]:d.strokeWidth,pointStrokeColor:h.pointStrokeColor,pointFillColor:h.pointFillColor,shape:h.pointShape||(Array.isArray(d.shape)?d.shape[i]:d.shape),class:t,pointStrokeOpacity:Array.isArray(d.strokeOpacity)?d.strokeOpacity[i]:d.strokeOpacity,pointStrokeDashArray:Array.isArray(d.strokeDashArray)?d.strokeDashArray[i]:d.strokeDashArray,pointFillOpacity:Array.isArray(d.fillOpacity)?d.fillOpacity[i]:d.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(e){var t=this.w,i=new z(this.ctx);e.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,e)),e.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,e)),e.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,e)),e.node.addEventListener("click",t.config.markers.onClick),e.node.addEventListener("dblclick",t.config.markers.onDblClick),e.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,e),{passive:!0})}},{key:"getMarkerStyle",value:function(e){var t=this.w,i=t.globals.markers.colors,a=t.config.markers.strokeColor||t.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[e]:a,pointFillColor:Array.isArray(i)?i[e]:i}}}]),m}(),Ze=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return R(m,[{key:"draw",value:function(e,t,i){var a=this.w,s=new z(this.ctx),r=i.realIndex,n=i.pointsPos,o=i.zRatio,h=i.elParent,c=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(c.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),Array.isArray(n.x))for(var d=0;dv.maxBubbleRadius&&(b=v.maxBubbleRadius)}a.config.chart.animations.enabled||(f=b);var w=n.x[d],k=n.y[d];if(f=f||0,k!==null&&a.globals.series[r][u]!==void 0||(p=!1),p){var l=this.drawPoint(w,k,f,b,r,u,t);c.add(l)}h.add(c)}}},{key:"drawPoint",value:function(e,t,i,a,s,r,n){var o=this.w,h=s,c=new oe(this.ctx),d=new U(this.ctx),u=new Q(this.ctx),p=new fe(this.ctx),f=new z(this.ctx),b=p.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:h,dataPointIndex:r,finishRadius:o.config.chart.type==="bubble"||o.globals.comboCharts&&o.config.series[s]&&o.config.series[s].type==="bubble"?a:null});a=b.pSize;var v,w=u.fillPath({seriesNumber:s,dataPointIndex:r,color:b.pointFillColor,patternUnits:"objectBoundingBox",value:o.globals.series[s][n]});if(b.shape==="circle"?v=f.drawCircle(i):b.shape!=="square"&&b.shape!=="rect"||(v=f.drawRect(0,0,b.width-b.pointStrokeWidth/2,b.height-b.pointStrokeWidth/2,b.pRadius)),o.config.series[h].data[r]&&o.config.series[h].data[r].fillColor&&(w=o.config.series[h].data[r].fillColor),v.attr({x:e-b.width/2-b.pointStrokeWidth/2,y:t-b.height/2-b.pointStrokeWidth/2,cx:e,cy:t,fill:w,"fill-opacity":b.pointFillOpacity,stroke:b.pointStrokeColor,r:a,"stroke-width":b.pointStrokeWidth,"stroke-dasharray":b.pointStrokeDashArray,"stroke-opacity":b.pointStrokeOpacity}),o.config.chart.dropShadow.enabled){var k=o.config.chart.dropShadow;d.dropShadow(v,k,s)}if(!this.initialAnim||o.globals.dataChanged||o.globals.resized)o.globals.animationEnded=!0;else{var l=o.config.chart.animations.speed;c.animateMarker(v,0,b.shape==="circle"?a:{width:b.width,height:b.height},l,o.globals.easing,function(){window.setTimeout(function(){c.animationCompleted(v)},100)})}if(o.globals.dataChanged&&b.shape==="circle")if(this.dynamicAnim){var g,x,y,A,S=o.config.chart.animations.dynamicAnimation.speed;(A=o.globals.previousPaths[s]&&o.globals.previousPaths[s][n])!=null&&(g=A.x,x=A.y,y=A.r!==void 0?A.r:a);for(var L=0;Lo.globals.gridHeight+u&&(t=o.globals.gridHeight+u/2),o.globals.dataLabelsRects[a]===void 0&&(o.globals.dataLabelsRects[a]=[]),o.globals.dataLabelsRects[a].push({x:e,y:t,width:d,height:u});var p=o.globals.dataLabelsRects[a].length-2,f=o.globals.lastDrawnDataLabelsIndexes[a]!==void 0?o.globals.lastDrawnDataLabelsIndexes[a][o.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(o.globals.dataLabelsRects[a][p]!==void 0){var b=o.globals.dataLabelsRects[a][f];(e>b.x+b.width||t>b.y+b.height||t+ut.globals.gridWidth+v.textRects.width+10)&&(o="");var w=t.globals.dataLabels.style.colors[r];((t.config.chart.type==="bar"||t.config.chart.type==="rangeBar")&&t.config.plotOptions.bar.distributed||t.config.dataLabels.distributed)&&(w=t.globals.dataLabels.style.colors[n]),typeof w=="function"&&(w=w({series:t.globals.series,seriesIndex:r,dataPointIndex:n,w:t})),p&&(w=p);var k=u.offsetX,l=u.offsetY;if(t.config.chart.type!=="bar"&&t.config.chart.type!=="rangeBar"||(k=0,l=0),v.drawnextLabel){var g=i.drawText({width:100,height:parseInt(u.style.fontSize,10),x:a+k,y:s+l,foreColor:w,textAnchor:h||u.textAnchor,text:o,fontSize:c||u.style.fontSize,fontFamily:u.style.fontFamily,fontWeight:u.style.fontWeight||"normal"});if(g.attr({class:"apexcharts-datalabel",cx:a,cy:s}),u.dropShadow.enabled){var x=u.dropShadow;new U(this.ctx).dropShadow(g,x)}d.add(g),t.globals.lastDrawnDataLabelsIndexes[r]===void 0&&(t.globals.lastDrawnDataLabelsIndexes[r]=[]),t.globals.lastDrawnDataLabelsIndexes[r].push(n)}}}},{key:"addBackgroundToDataLabel",value:function(e,t){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,n=t.width,o=t.height,h=new z(this.ctx).drawRect(t.x-s,t.y-r/2,n+2*s,o+r,a.borderRadius,i.config.chart.background==="transparent"?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);return a.dropShadow.enabled&&new U(this.ctx).dropShadow(h,a.dropShadow),h}},{key:"dataLabelsBackground",value:function(){var e=this.w;if(e.config.chart.type!=="bubble")for(var t=e.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&arguments[0]!==void 0)||arguments[0],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],a=this.w,s=P.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,e&&(t&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(e){for(var t=this.w,i=0;i-1&&(e[i].data=[]);return e}},{key:"toggleSeriesOnHover",value:function(e,t){var i=this.w;t||(t=e.target);var a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if(e.type==="mousemove"){var s=parseInt(t.getAttribute("rel"),10)-1,r=null,n=null;i.globals.axisCharts||i.config.chart.type==="radialBar"?i.globals.axisCharts?(r=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),n=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var o=0;o=o.from&&c<=o.to&&s[h].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[n])}else e.type==="mouseout"&&r("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"asc",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1){for(var s=i.config.series.map(function(n,o){return n.data&&n.data.length>0&&i.globals.collapsedSeriesIndices.indexOf(o)===-1&&(!i.globals.comboCharts||t.length===0||t.length&&t.indexOf(i.config.series[o].type)>-1)?o:-1}),r=e==="asc"?0:s.length-1;e==="asc"?r=0;e==="asc"?r++:r--)if(s[r]!==-1){a=s[r];break}}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map(function(e,t){return e.type==="bar"||e.type==="column"?t:-1}).filter(function(e){return e!==-1}):this.w.config.series.map(function(e,t){return t})}},{key:"getPreviousPaths",value:function(){var e=this.w;function t(r,n,o){for(var h=r[n].childNodes,c={type:o,paths:[],realIndex:r[n].getAttribute("data:realIndex")},d=0;d0)for(var a=function(r){for(var n=e.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(e.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(r,"'] rect")),o=[],h=function(d){var u=function(f){return n[d].getAttribute(f)},p={x:parseFloat(u("x")),y:parseFloat(u("y")),width:parseFloat(u("width")),height:parseFloat(u("height"))};o.push({rect:p,color:n[d].getAttribute("color")})},c=0;c0)for(var a=0;a0?t:[]});return e}}]),m}(),$e=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new G(this.ctx)}return R(m,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var e=this.w.config.series.slice(),t=new $(this.ctx);if(this.activeSeriesIndex=t.getActiveConfigSeriesIndex(),e[this.activeSeriesIndex].data!==void 0&&e[this.activeSeriesIndex].data.length>0&&e[this.activeSeriesIndex].data[0]!==null&&e[this.activeSeriesIndex].data[0].x!==void 0&&e[this.activeSeriesIndex].data[0]!==null)return!0}},{key:"isFormat2DArray",value:function(){var e=this.w.config.series.slice(),t=new $(this.ctx);if(this.activeSeriesIndex=t.getActiveConfigSeriesIndex(),e[this.activeSeriesIndex].data!==void 0&&e[this.activeSeriesIndex].data.length>0&&e[this.activeSeriesIndex].data[0]!==void 0&&e[this.activeSeriesIndex].data[0]!==null&&e[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(e,t){for(var i=this.w.config,a=this.w.globals,s=i.chart.type==="boxPlot"||i.series[t].type==="boxPlot",r=0;r=5?this.twoDSeries.push(P.parseNumber(e[t].data[r][4])):this.twoDSeries.push(P.parseNumber(e[t].data[r][1])),a.dataFormatXNumeric=!0),i.xaxis.type==="datetime"){var n=new Date(e[t].data[r][0]);n=new Date(n).getTime(),this.twoDSeriesX.push(n)}else this.twoDSeriesX.push(e[t].data[r][0]);for(var o=0;o-1&&(r=this.activeSeriesIndex);for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:this.ctx,s=this.w.config,r=this.w.globals,n=new j(a),o=s.labels.length>0?s.labels.slice():s.xaxis.categories.slice();if(r.isRangeBar=s.chart.type==="rangeBar"&&r.isBarHorizontal,r.hasXaxisGroups=s.xaxis.type==="category"&&s.xaxis.group.groups.length>0,r.hasXaxisGroups&&(r.groups=s.xaxis.group.groups),r.hasSeriesGroups=(t=e[0])===null||t===void 0?void 0:t.group,r.hasSeriesGroups){var h=[],c=Z(new Set(e.map(function(f){return f.group})));e.forEach(function(f,b){var v=c.indexOf(f.group);h[v]||(h[v]=[]),h[v].push(f.name)}),r.seriesGroups=h}for(var d=function(){for(var f=0;f0&&(this.twoDSeriesX=o,r.seriesX.push(this.twoDSeriesX))),r.labels.push(this.twoDSeriesX);var p=e[u].data.map(function(f){return P.parseNumber(f)});r.series.push(p)}r.seriesZ.push(this.threeDSeries),e[u].name!==void 0?r.seriesNames.push(e[u].name):r.seriesNames.push("series-"+parseInt(u+1,10)),e[u].color!==void 0?r.seriesColors.push(e[u].color):r.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(e){var t=this.w.globals,i=this.w.config;t.series=e.slice(),t.seriesNames=i.labels.slice();for(var a=0;a0?i.labels=t.xaxis.categories:t.labels.length>0?i.labels=t.labels.slice():this.fallbackToCategory?(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map(function(a){a.forEach(function(s){i.labels.indexOf(s.x)<0&&s.x&&i.labels.push(s.x)})}),i.labels=Array.from(new Set(i.labels.map(JSON.stringify)),JSON.parse)),t.xaxis.convertedCatToNumeric&&(new he(t).convertCatToNumericXaxis(t,this.ctx,i.seriesX[0]),this._generateExternalLabels(e))):this._generateExternalLabels(e)}},{key:"_generateExternalLabels",value:function(e){var t=this.w.globals,i=this.w.config,a=[];if(t.axisCharts){if(t.series.length>0)if(this.isFormatXY())for(var s=i.series.map(function(d,u){return d.data.filter(function(p,f,b){return b.findIndex(function(v){return v.x===p.x})===f})}),r=s.reduce(function(d,u,p,f){return f[d].length>u.length?d:p},0),n=0;n4&&arguments[4]!==void 0?arguments[4]:[],r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"12px",n=!(arguments.length>6&&arguments[6]!==void 0)||arguments[6],o=this.w,h=e[a]===void 0?"":e[a],c=h,d=o.globals.xLabelFormatter,u=o.config.xaxis.labels.formatter,p=!1,f=new pe(this.ctx),b=h;n&&(c=f.xLabelFormat(d,h,b,{i:a,dateFormatter:new j(this.ctx).formatDate,w:o}),u!==void 0&&(c=u(h,e[a],{i:a,dateFormatter:new j(this.ctx).formatDate,w:o})));var v,w;t.length>0?(v=t[a].unit,w=null,t.forEach(function(x){x.unit==="month"?w="year":x.unit==="day"?w="month":x.unit==="hour"?w="day":x.unit==="minute"&&(w="hour")}),p=w===v,i=t[a].position,c=t[a].value):o.config.xaxis.type==="datetime"&&u===void 0&&(c=""),c===void 0&&(c=""),c=Array.isArray(c)?c:c.toString();var k=new z(this.ctx),l={};l=o.globals.rotateXLabels&&n?k.getTextRects(c,parseInt(r,10),null,"rotate(".concat(o.config.xaxis.labels.rotate," 0 0)"),!1):k.getTextRects(c,parseInt(r,10));var g=!o.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(c)&&(c.indexOf("NaN")===0||c.toLowerCase().indexOf("invalid")===0||c.toLowerCase().indexOf("infinity")>=0||s.indexOf(c)>=0&&g)&&(c=""),{x:i,text:c,textRect:l,isBold:p}}},{key:"checkLabelBasedOnTickamount",value:function(e,t,i){var a=this.w,s=a.config.xaxis.tickAmount;return s==="dataPoints"&&(s=Math.round(a.globals.gridWidth/120)),s>i||e%Math.round(i/(s+1))==0||(t.text=""),t}},{key:"checkForOverflowingLabels",value:function(e,t,i,a,s){var r=this.w;if(e===0&&r.globals.skipFirstTimelinelabel&&(t.text=""),e===i-1&&r.globals.skipLastTimelinelabel&&(t.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var n=s[s.length-1];t.x0){o.config.yaxis[s].opposite===!0&&(e+=a.width);for(var d=t;d>=0;d--){var u=c+t/10+o.config.yaxis[s].labels.offsetY-1;o.globals.isBarHorizontal&&(u=r*d),o.config.chart.type==="heatmap"&&(u+=r/2);var p=h.drawLine(e+i.offsetX-a.width+a.offsetX,u+a.offsetY,e+i.offsetX+a.offsetX,u+a.offsetY,a.color);n.add(p),c+=r}}}}]),m}(),be=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"scaleSvgNode",value:function(e,t){var i=parseFloat(e.getAttributeNS(null,"width")),a=parseFloat(e.getAttributeNS(null,"height"));e.setAttributeNS(null,"width",i*t),e.setAttributeNS(null,"height",a*t),e.setAttributeNS(null,"viewBox","0 0 "+i+" "+a)}},{key:"fixSvgStringForIe11",value:function(e){if(!P.isIE11())return e.replace(/ /g," ");var t=0,i=e.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g,function(a){return++t===2?'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"':a});return i=(i=i.replace(/xmlns:NS\d+=""/g,"")).replace(/NS\d+:(\w+:\w+=")/g,"$1")}},{key:"getSvgString",value:function(e){e==null&&(e=1);var t=this.w.globals.dom.Paper.svg();if(e!==1){var i=this.w.globals.dom.Paper.node.cloneNode(!0);this.scaleSvgNode(i,e),t=new XMLSerializer().serializeToString(i)}return this.fixSvgStringForIe11(t)}},{key:"cleanup",value:function(){var e=this.w,t=e.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"),i=e.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"),a=e.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");Array.prototype.forEach.call(a,function(s){s.setAttribute("width",0)}),t&&t[0]&&(t[0].setAttribute("x",-500),t[0].setAttribute("x1",-500),t[0].setAttribute("x2",-500)),i&&i[0]&&(i[0].setAttribute("y",-100),i[0].setAttribute("y1",-100),i[0].setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var e=this.getSvgString(),t=new Blob([e],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(t)}},{key:"dataURI",value:function(e){var t=this;return new Promise(function(i){var a=t.w,s=e?e.scale||e.width/a.globals.svgWidth:1;t.cleanup();var r=document.createElement("canvas");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var n=a.config.chart.background==="transparent"?"#fff":a.config.chart.background,o=r.getContext("2d");o.fillStyle=n,o.fillRect(0,0,r.width*s,r.height*s);var h=t.getSvgString(s);if(window.canvg&&P.isIE11()){var c=window.canvg.Canvg.fromString(o,h,{ignoreClear:!0,ignoreDimensions:!0});c.start();var d=r.msToBlob();c.stop(),i({blob:d})}else{var u="data:image/svg+xml,"+encodeURIComponent(h),p=new Image;p.crossOrigin="anonymous",p.onload=function(){if(o.drawImage(p,0,0),r.msToBlob){var f=r.msToBlob();i({blob:f})}else{var b=r.toDataURL("image/png");i({imgURI:b})}},p.src=u}})}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),this.w.config.chart.toolbar.export.svg.filename,".svg")}},{key:"exportToPng",value:function(){var e=this;this.dataURI().then(function(t){var i=t.imgURI,a=t.blob;a?navigator.msSaveOrOpenBlob(a,e.w.globals.chartID+".png"):e.triggerDownload(i,e.w.config.chart.toolbar.export.png.filename,".png")})}},{key:"exportToCSV",value:function(e){var t=this,i=e.series,a=e.fileName,s=e.columnDelimiter,r=s===void 0?",":s,n=e.lineDelimiter,o=n===void 0?` -`:n,h=this.w;i||(i=h.config.series);var c=[],d=[],u="",p=h.globals.series.map(function(l,g){return h.globals.collapsedSeriesIndices.indexOf(g)===-1?l:[]}),f=Math.max.apply(Math,Z(i.map(function(l){return l.data?l.data.length:0}))),b=new $e(this.ctx),v=new ae(this.ctx),w=function(l){var g="";if(h.globals.axisCharts){if(h.config.xaxis.type==="category"||h.config.xaxis.convertedCatToNumeric)if(h.globals.isBarHorizontal){var x=h.globals.yLabelFormatters[0],y=new $(t.ctx).getActiveConfigSeriesIndex();g=x(h.globals.labels[l],{seriesIndex:y,dataPointIndex:l,w:h})}else g=v.getLabel(h.globals.labels,h.globals.timescaleLabels,0,l).text;h.config.xaxis.type==="datetime"&&(h.config.xaxis.categories.length?g=h.config.xaxis.categories[l]:h.config.labels.length&&(g=h.config.labels[l]))}else g=h.config.labels[l];return Array.isArray(g)&&(g=g.join(" ")),P.isNumber(g)?g:g.split(r).join("")},k=function(l,g){if(c.length&&g===0&&d.push(c.join(r)),l.data){l.data=l.data.length&&l.data||Z(Array(f)).map(function(){return""});for(var x=0;x=10?h.config.chart.toolbar.export.csv.dateFormatter(y):P.isNumber(y)?y:y.split(r).join("")));for(var A=0;A0&&!i.globals.isBarHorizontal&&(this.xaxisLabels=i.globals.timescaleLabels.slice()),i.config.xaxis.overwriteCategories&&(this.xaxisLabels=i.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],i.config.xaxis.position==="top"?this.offY=0:this.offY=i.globals.gridHeight+1,this.offY=this.offY+i.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal=i.config.chart.type==="bar"&&i.config.plotOptions.bar.horizontal,this.xaxisFontSize=i.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=i.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=i.config.xaxis.labels.style.colors,this.xaxisBorderWidth=i.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=i.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=i.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=i.config.xaxis.axisBorder.height,this.yaxis=i.config.yaxis[0]}return R(m,[{key:"drawXaxis",value:function(){var e=this.w,t=new z(this.ctx),i=t.group({class:"apexcharts-xaxis",transform:"translate(".concat(e.config.xaxis.offsetX,", ").concat(e.config.xaxis.offsetY,")")}),a=t.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});i.add(a);for(var s=[],r=0;r6&&arguments[6]!==void 0?arguments[6]:{},c=[],d=[],u=this.w,p=h.xaxisFontSize||this.xaxisFontSize,f=h.xaxisFontFamily||this.xaxisFontFamily,b=h.xaxisForeColors||this.xaxisForeColors,v=h.fontWeight||u.config.xaxis.labels.style.fontWeight,w=h.cssClass||u.config.xaxis.labels.style.cssClass,k=u.globals.padHorizontal,l=a.length,g=u.config.xaxis.type==="category"?u.globals.dataPoints:l;if(g===0&&l>g&&(g=l),s){var x=g>1?g-1:g;n=u.globals.gridWidth/Math.min(x,l-1),k=k+r(0,n)/2+u.config.xaxis.labels.offsetX}else n=u.globals.gridWidth/g,k=k+r(0,n)+u.config.xaxis.labels.offsetX;for(var y=function(S){var L=k-r(S,n)/2+u.config.xaxis.labels.offsetX;S===0&&l===1&&n/2===k&&g===1&&(L=u.globals.gridWidth/2);var C=o.axesUtils.getLabel(a,u.globals.timescaleLabels,L,S,c,p,e),M=28;if(u.globals.rotateXLabels&&e&&(M=22),u.config.xaxis.title.text&&u.config.xaxis.position==="top"&&(M+=parseFloat(u.config.xaxis.title.style.fontSize)+2),e||(M=M+parseFloat(p)+(u.globals.xAxisLabelsHeight-u.globals.xAxisGroupLabelsHeight)+(u.globals.rotateXLabels?10:0)),C=u.config.xaxis.tickAmount!==void 0&&u.config.xaxis.tickAmount!=="dataPoints"&&u.config.xaxis.type!=="datetime"?o.axesUtils.checkLabelBasedOnTickamount(S,C,l):o.axesUtils.checkForOverflowingLabels(S,C,l,c,d),u.config.xaxis.labels.show){var T=t.drawText({x:C.x,y:o.offY+u.config.xaxis.labels.offsetY+M-(u.config.xaxis.position==="top"?u.globals.xAxisHeight+u.config.xaxis.axisTicks.height-2:0),text:C.text,textAnchor:"middle",fontWeight:C.isBold?600:v,fontSize:p,fontFamily:f,foreColor:Array.isArray(b)?e&&u.config.xaxis.convertedCatToNumeric?b[u.globals.minX+S-1]:b[S]:b,isPlainText:!1,cssClass:(e?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+w});if(i.add(T),T.on("click",function(X){if(typeof u.config.chart.events.xAxisLabelClick=="function"){var Y=Object.assign({},u,{labelIndex:S});u.config.chart.events.xAxisLabelClick(X,o.ctx,Y)}}),e){var I=document.createElementNS(u.globals.SVGNS,"title");I.textContent=Array.isArray(C.text)?C.text.join(" "):C.text,T.node.appendChild(I),C.text!==""&&(c.push(C.text),d.push(C))}}Sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(t=t+r+a.config.xaxis.axisTicks.height,a.config.xaxis.position==="top"&&(t=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var n=new z(this.ctx).drawLine(e+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,t+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(n),n.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var e=this.w,t=[],i=this.xaxisLabels.length,a=e.globals.padHorizontal;if(e.globals.timescaleLabels.length>0)for(var s=0;s0){var c=s[s.length-1].getBBox(),d=s[0].getBBox();c.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),d.x+d.width>e.globals.gridWidth&&!e.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var u=0;u0&&(this.xaxisLabels=t.globals.timescaleLabels.slice())}return R(m,[{key:"drawGridArea",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=this.w,i=new z(this.ctx);e===null&&(e=i.group({class:"apexcharts-grid"}));var a=i.drawLine(t.globals.padHorizontal,1,t.globals.padHorizontal,t.globals.gridHeight,"transparent"),s=i.drawLine(t.globals.padHorizontal,t.globals.gridHeight,t.globals.gridWidth,t.globals.gridHeight,"transparent");return e.add(s),e.add(a),e}},{key:"drawGrid",value:function(){var e=null;return this.w.globals.axisCharts&&(e=this.renderGrid(),this.drawGridArea(e.el)),e}},{key:"createGridMask",value:function(){var e=this.w,t=e.globals,i=new z(this.ctx),a=Array.isArray(e.config.stroke.width)?0:e.config.stroke.width;if(Array.isArray(e.config.stroke.width)){var s=0;e.config.stroke.width.forEach(function(d){s=Math.max(s,d)}),a=s}t.dom.elGridRectMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(t.cuid)),t.dom.elGridRectMarkerMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(t.cuid)),t.dom.elForecastMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elForecastMask.setAttribute("id","forecastMask".concat(t.cuid)),t.dom.elNonForecastMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elNonForecastMask.setAttribute("id","nonForecastMask".concat(t.cuid));var r=e.config.chart.type,n=0,o=0;(r==="bar"||r==="rangeBar"||r==="candlestick"||r==="boxPlot"||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&(n=e.config.grid.padding.left,o=e.config.grid.padding.right,t.barPadForNumericAxis>n&&(n=t.barPadForNumericAxis,o=t.barPadForNumericAxis)),t.dom.elGridRect=i.drawRect(-a-n-2,2*-a-2,t.gridWidth+a+o+n+4,t.gridHeight+4*a+4,0,"#fff");var h=e.globals.markers.largestSize+1;t.dom.elGridRectMarker=i.drawRect(2*-h,2*-h,t.gridWidth+4*h,t.gridHeight+4*h,0,"#fff"),t.dom.elGridRectMask.appendChild(t.dom.elGridRect.node),t.dom.elGridRectMarkerMask.appendChild(t.dom.elGridRectMarker.node);var c=t.dom.baseEl.querySelector("defs");c.appendChild(t.dom.elGridRectMask),c.appendChild(t.dom.elForecastMask),c.appendChild(t.dom.elNonForecastMask),c.appendChild(t.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(e){var t=e.i,i=e.x1,a=e.y1,s=e.x2,r=e.y2,n=e.xCount,o=e.parent,h=this.w;if(!(t===0&&h.globals.skipFirstTimelinelabel||t===n-1&&h.globals.skipLastTimelinelabel&&!h.config.xaxis.labels.formatter||h.config.chart.type==="radar")){h.config.grid.xaxis.lines.show&&this._drawGridLine({i:t,x1:i,y1:a,x2:s,y2:r,xCount:n,parent:o});var c=0;if(h.globals.hasXaxisGroups&&h.config.xaxis.tickPlacement==="between"){var d=h.globals.groups;if(d){for(var u=0,p=0;u2));s++);return!e.globals.isBarHorizontal||this.isRangeBar?(i=this.xaxisLabels.length,this.isRangeBar&&(i--,a=e.globals.labels.length,e.config.xaxis.tickAmount&&e.config.xaxis.labels.formatter&&(i=e.config.xaxis.tickAmount)),this._drawXYLines({xCount:i,tickAmount:a})):(i=a,a=e.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a})),this.drawGridBands(i,a),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:e.globals.gridWidth/i}}},{key:"drawGridBands",value:function(e,t){var i=this.w;if(i.config.grid.row.colors!==void 0&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/t,r=i.globals.gridWidth,n=0,o=0;n=i.config.grid.row.colors.length&&(o=0),this._drawGridBandRect({c:o,x1:0,y1:a,x2:r,y2:s,type:"row"}),a+=i.globals.gridHeight/t;if(i.config.grid.column.colors!==void 0&&i.config.grid.column.colors.length>0)for(var h=i.globals.isBarHorizontal||i.config.xaxis.tickPlacement!=="on"||i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric?e:e-1,c=i.globals.padHorizontal,d=i.globals.padHorizontal+i.globals.gridWidth/h,u=i.globals.gridHeight,p=0,f=0;p=i.config.grid.column.colors.length&&(f=0),this._drawGridBandRect({c:f,x1:c,y1:0,x2:d,y2:u,type:"column"}),c+=i.globals.gridWidth/h}}]),m}(),re=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"niceScale",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=arguments.length>4?arguments[4]:void 0,r=this.w,n=Math.abs(t-e);if((i=this._adjustTicksForSmallRange(i,a,n))==="dataPoints"&&(i=r.globals.dataPoints-1),e===Number.MIN_VALUE&&t===0||!P.isNumber(e)&&!P.isNumber(t)||e===Number.MIN_VALUE&&t===-Number.MAX_VALUE)return e=0,t=i,this.linearScale(e,t,i);e>t?(console.warn("axis.min cannot be greater than axis.max"),t=e+.1):e===t&&(e=e===0?0:e-.5,t=t===0?2:t+.5);var o=[];n<1&&s&&(r.config.chart.type==="candlestick"||r.config.series[a].type==="candlestick"||r.config.chart.type==="boxPlot"||r.config.series[a].type==="boxPlot"||r.globals.isRangeData)&&(t*=1.01);var h=i+1;h<2?h=2:h>2&&(h-=2);var c=n/h,d=Math.floor(P.log10(c)),u=Math.pow(10,d),p=Math.round(c/u);p<1&&(p=1);var f=p*u,b=f*Math.floor(e/f),v=f*Math.ceil(t/f),w=b;if(s&&n>2){for(;o.push(P.stripNumber(w,7)),!((w+=f)>v););return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}var k=e;(o=[]).push(P.stripNumber(k,7));for(var l=Math.abs(t-e)/i,g=0;g<=i;g++)k+=l,o.push(k);return o[o.length-2]>=t&&o.pop(),{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"linearScale",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,a=arguments.length>3?arguments[3]:void 0,s=Math.abs(t-e);(i=this._adjustTicksForSmallRange(i,a,s))==="dataPoints"&&(i=this.w.globals.dataPoints-1);var r=s/i;i===Number.MAX_VALUE&&(i=10,r=1);for(var n=[],o=e;i>=0;)n.push(o),o+=r,i-=1;return{result:n,niceMin:n[0],niceMax:n[n.length-1]}}},{key:"logarithmicScaleNice",value:function(e,t,i){t<=0&&(t=Math.max(e,i)),e<=0&&(e=Math.min(t,i));for(var a=[],s=Math.ceil(Math.log(t)/Math.log(i)+1),r=Math.floor(Math.log(e)/Math.log(i));r5)a.allSeriesCollapsed=!1,a.yAxisScale[e]=this.logarithmicScale(t,i,r.logBase),a.yAxisScale[e]=r.forceNiceScale?this.logarithmicScaleNice(t,i,r.logBase):this.logarithmicScale(t,i,r.logBase);else if(i!==-Number.MAX_VALUE&&P.isNumber(i))if(a.allSeriesCollapsed=!1,r.min===void 0&&r.max===void 0||r.forceNiceScale){var o=s.yaxis[e].max===void 0&&s.yaxis[e].min===void 0||s.yaxis[e].forceNiceScale;a.yAxisScale[e]=this.niceScale(t,i,r.tickAmount?r.tickAmount:n<5&&n>1?n+1:5,e,o)}else a.yAxisScale[e]=this.linearScale(t,i,r.tickAmount,e);else a.yAxisScale[e]=this.linearScale(0,5,5)}},{key:"setXScale",value:function(e,t){var i=this.w,a=i.globals,s=i.config.xaxis,r=Math.abs(t-e);return t!==-Number.MAX_VALUE&&P.isNumber(t)?a.xAxisScale=this.linearScale(e,t,s.tickAmount?s.tickAmount:r<5&&r>1?r+1:5,0):a.xAxisScale=this.linearScale(0,5,5),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var e=this,t=this.w.globals,i=this.w.config,a=t.minYArr.concat([]),s=t.maxYArr.concat([]),r=[];i.yaxis.forEach(function(n,o){var h=o;i.series.forEach(function(u,p){u.name===n.seriesName&&(h=p,o!==p?r.push({index:p,similarIndex:o,alreadyExists:!0}):r.push({index:p}))});var c=a[h],d=s[h];e.setYScaleForIndex(o,c,d)}),this.sameScaleInMultipleAxes(a,s,r)}},{key:"sameScaleInMultipleAxes",value:function(e,t,i){var a=this,s=this.w.config,r=this.w.globals,n=[];i.forEach(function(b){b.alreadyExists&&(n[b.index]===void 0&&(n[b.index]=[]),n[b.index].push(b.index),n[b.index].push(b.similarIndex))}),r.yAxisSameScaleIndices=n,n.forEach(function(b,v){n.forEach(function(w,k){var l,g;v!==k&&(l=b,g=w,l.filter(function(x){return g.indexOf(x)!==-1})).length>0&&(n[v]=n[v].concat(n[k]))})});var o=n.map(function(b){return b.filter(function(v,w){return b.indexOf(v)===w})}).map(function(b){return b.sort()});n=n.filter(function(b){return!!b});var h=o.slice(),c=h.map(function(b){return JSON.stringify(b)});h=h.filter(function(b,v){return c.indexOf(JSON.stringify(b))===v});var d=[],u=[];e.forEach(function(b,v){h.forEach(function(w,k){w.indexOf(v)>-1&&(d[k]===void 0&&(d[k]=[],u[k]=[]),d[k].push({key:v,value:b}),u[k].push({key:v,value:t[v]}))})});var p=Array.apply(null,Array(h.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),f=Array.apply(null,Array(h.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);d.forEach(function(b,v){b.forEach(function(w,k){p[v]=Math.min(w.value,p[v])})}),u.forEach(function(b,v){b.forEach(function(w,k){f[v]=Math.max(w.value,f[v])})}),e.forEach(function(b,v){u.forEach(function(w,k){var l=p[k],g=f[k];s.chart.stacked&&(g=0,w.forEach(function(x,y){x.value!==-Number.MAX_VALUE&&(g+=x.value),l!==Number.MIN_VALUE&&(l+=d[k][y].value)})),w.forEach(function(x,y){w[y].key===v&&(s.yaxis[v].min!==void 0&&(l=typeof s.yaxis[v].min=="function"?s.yaxis[v].min(r.minY):s.yaxis[v].min),s.yaxis[v].max!==void 0&&(g=typeof s.yaxis[v].max=="function"?s.yaxis[v].max(r.maxY):s.yaxis[v].max),a.setYScaleForIndex(v,l,g))})})})}},{key:"autoScaleY",value:function(e,t,i){e||(e=this);var a=e.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis not supported in a multi-yaxis chart."),t;var s=a.globals.seriesX[0],r=a.config.chart.stacked;return t.forEach(function(n,o){for(var h=0,c=0;c=i.xaxis.min){h=c;break}var d,u,p=a.globals.minYArr[o],f=a.globals.maxYArr[o],b=a.globals.stackedSeriesTotals;a.globals.series.forEach(function(v,w){var k=v[h];r?(k=b[h],d=u=k,b.forEach(function(l,g){s[g]<=i.xaxis.max&&s[g]>=i.xaxis.min&&(l>u&&l!==null&&(u=l),v[g]=i.xaxis.min){var x=l,y=l;a.globals.series.forEach(function(A,S){l!==null&&(x=Math.min(A[g],x),y=Math.max(A[g],y))}),y>u&&y!==null&&(u=y),xp&&(d=p),t.length>1?(t[w].min=n.min===void 0?d:n.min,t[w].max=n.max===void 0?u:n.max):(t[0].min=n.min===void 0?d:n.min,t[0].max=n.max===void 0?u:n.max)})}),t}}]),m}(),Xe=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.scales=new re(e)}return R(m,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=this.w.config,r=this.w.globals,n=-Number.MAX_VALUE,o=Number.MIN_VALUE;a===null&&(a=e+1);var h=r.series,c=h,d=h;s.chart.type==="candlestick"?(c=r.seriesCandleL,d=r.seriesCandleH):s.chart.type==="boxPlot"?(c=r.seriesCandleO,d=r.seriesCandleC):r.isRangeData&&(c=r.seriesRangeStart,d=r.seriesRangeEnd);for(var u=e;uc[u][p]&&c[u][p]<0&&(o=c[u][p])):r.hasNullValues=!0}}return s.chart.type==="rangeBar"&&r.seriesRangeStart.length&&r.isBarHorizontal&&(o=t),s.chart.type==="bar"&&(o<0&&n<0&&(n=0),o===Number.MIN_VALUE&&(o=0)),{minY:o,maxY:n,lowestY:t,highestY:i}}},{key:"setYRange",value:function(){var e=this.w.globals,t=this.w.config;e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(e.isMultipleYAxis)for(var a=0;a=0&&i<=10||t.yaxis[0].min!==void 0||t.yaxis[0].max!==void 0)&&(n=0),e.minY=i-5*n/100,i>0&&e.minY<0&&(e.minY=0),e.maxY=e.maxY+5*n/100}return t.yaxis.forEach(function(o,h){o.max!==void 0&&(typeof o.max=="number"?e.maxYArr[h]=o.max:typeof o.max=="function"&&(e.maxYArr[h]=o.max(e.isMultipleYAxis?e.maxYArr[h]:e.maxY)),e.maxY=e.maxYArr[h]),o.min!==void 0&&(typeof o.min=="number"?e.minYArr[h]=o.min:typeof o.min=="function"&&(e.minYArr[h]=o.min(e.isMultipleYAxis?e.minYArr[h]===Number.MIN_VALUE?0:e.minYArr[h]:e.minY)),e.minY=e.minYArr[h])}),e.isBarHorizontal&&["min","max"].forEach(function(o){t.xaxis[o]!==void 0&&typeof t.xaxis[o]=="number"&&(o==="min"?e.minY=t.xaxis[o]:e.maxY=t.xaxis[o])}),e.isMultipleYAxis?(this.scales.setMultipleYScales(),e.minY=i,e.yAxisScale.forEach(function(o,h){e.minYArr[h]=o.niceMin,e.maxYArr[h]=o.niceMax})):(this.scales.setYScaleForIndex(0,e.minY,e.maxY),e.minY=e.yAxisScale[0].niceMin,e.maxY=e.yAxisScale[0].niceMax,e.minYArr[0]=e.yAxisScale[0].niceMin,e.maxYArr[0]=e.yAxisScale[0].niceMax),{minY:e.minY,maxY:e.maxY,minYArr:e.minYArr,maxYArr:e.maxYArr,yAxisScale:e.yAxisScale}}},{key:"setXRange",value:function(){var e=this.w.globals,t=this.w.config,i=t.xaxis.type==="numeric"||t.xaxis.type==="datetime"||t.xaxis.type==="category"&&!e.noLabelsProvided||e.noLabelsProvided||e.isXNumeric;if(e.isXNumeric&&function(){for(var n=0;ne.dataPoints&&e.dataPoints!==0&&(a=e.dataPoints-1)):t.xaxis.tickAmount==="dataPoints"?(e.series.length>1&&(a=e.series[e.maxValsInArrayIndex].length-1),e.isXNumeric&&(a=e.maxX-e.minX-1)):a=t.xaxis.tickAmount,e.xTickAmount=a,t.xaxis.max!==void 0&&typeof t.xaxis.max=="number"&&(e.maxX=t.xaxis.max),t.xaxis.min!==void 0&&typeof t.xaxis.min=="number"&&(e.minX=t.xaxis.min),t.xaxis.range!==void 0&&(e.minX=e.maxX-t.xaxis.range),e.minX!==Number.MAX_VALUE&&e.maxX!==-Number.MAX_VALUE)if(t.xaxis.convertedCatToNumeric&&!e.dataFormatXNumeric){for(var s=[],r=e.minX-1;r0&&(e.xAxisScale=this.scales.linearScale(1,e.labels.length,a-1),e.seriesX=e.labels.slice());i&&(e.labels=e.xAxisScale.result.slice())}return e.isBarHorizontal&&e.labels.length&&(e.xTickAmount=e.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:e.minX,maxX:e.maxX}}},{key:"setZRange",value:function(){var e=this.w.globals;if(e.isDataXYZ){for(var t=0;t0){var n=s-a[r-1];n>0&&(e.minXDiff=Math.min(n,e.minXDiff))}}),e.dataPoints!==1&&e.minXDiff!==Number.MAX_VALUE||(e.minXDiff=.5)})}},{key:"_setStackedMinMax",value:function(){var e=this,t=this.w.globals;if(t.series.length){var i=t.seriesGroups;i.length||(i=[this.w.config.series.map(function(r){return r.name})]);var a={},s={};i.forEach(function(r){a[r]=[],s[r]=[],e.w.config.series.map(function(n,o){return r.indexOf(n.name)>-1?o:null}).filter(function(n){return n!==null}).forEach(function(n){for(var o=0;o0?a[r][o]+=parseFloat(t.series[n][o])+1e-4:s[r][o]+=parseFloat(t.series[n][o]))})}),Object.entries(a).forEach(function(r){var n=je(r,1)[0];a[n].forEach(function(o,h){t.maxY=Math.max(t.maxY,a[n][h]),t.minY=Math.min(t.minY,s[n][h])})})}}}]),m}(),Fe=function(){function m(e,t){F(this,m),this.ctx=e,this.elgrid=t,this.w=e.w;var i=this.w;this.xaxisFontSize=i.config.xaxis.labels.style.fontSize,this.axisFontFamily=i.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=i.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal=i.config.chart.type==="bar"&&i.config.plotOptions.bar.horizontal,this.xAxisoffX=0,i.config.xaxis.position==="bottom"&&(this.xAxisoffX=i.globals.gridHeight),this.drawnLabels=[],this.axesUtils=new ae(e)}return R(m,[{key:"drawYaxis",value:function(e){var t=this,i=this.w,a=new z(this.ctx),s=i.config.yaxis[e].labels.style,r=s.fontSize,n=s.fontFamily,o=s.fontWeight,h=a.group({class:"apexcharts-yaxis",rel:e,transform:"translate("+i.globals.translateYAxisX[e]+", 0)"});if(this.axesUtils.isYAxisHidden(e))return h;var c=a.group({class:"apexcharts-yaxis-texts-g"});h.add(c);var d=i.globals.yAxisScale[e].result.length-1,u=i.globals.gridHeight/d,p=i.globals.translateY,f=i.globals.yLabelFormatters[e],b=i.globals.yAxisScale[e].result.slice();b=this.axesUtils.checkForReversedLabels(e,b);var v="";if(i.config.yaxis[e].labels.show)for(var w=function(L){var C=b[L];C=f(C,L,i);var M=i.config.yaxis[e].labels.padding;i.config.yaxis[e].opposite&&i.config.yaxis.length!==0&&(M*=-1);var T="end";i.config.yaxis[e].opposite&&(T="start"),i.config.yaxis[e].labels.align==="left"?T="start":i.config.yaxis[e].labels.align==="center"?T="middle":i.config.yaxis[e].labels.align==="right"&&(T="end");var I=t.axesUtils.getYAxisForeColor(s.colors,e),X=i.config.yaxis[e].labels.offsetY;i.config.chart.type==="heatmap"&&(X-=(i.globals.gridHeight/i.globals.series.length-1)/2);var Y=a.drawText({x:M,y:p+d/10+X+1,text:C,textAnchor:T,fontSize:r,fontFamily:n,fontWeight:o,maxWidth:i.config.yaxis[e].labels.maxWidth,foreColor:Array.isArray(I)?I[L]:I,isPlainText:!1,cssClass:"apexcharts-yaxis-label "+s.cssClass});L===d&&(v=Y),c.add(Y);var H=document.createElementNS(i.globals.SVGNS,"title");if(H.textContent=Array.isArray(C)?C.join(" "):C,Y.node.appendChild(H),i.config.yaxis[e].labels.rotate!==0){var D=a.rotateAroundCenter(v.node),O=a.rotateAroundCenter(Y.node);Y.node.setAttribute("transform","rotate(".concat(i.config.yaxis[e].labels.rotate," ").concat(D.x," ").concat(O.y,")"))}p+=u},k=d;k>=0;k--)w(k);if(i.config.yaxis[e].title.text!==void 0){var l=a.group({class:"apexcharts-yaxis-title"}),g=0;i.config.yaxis[e].opposite&&(g=i.globals.translateYAxisX[e]);var x=a.drawText({x:g,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[e].title.offsetY,text:i.config.yaxis[e].title.text,textAnchor:"end",foreColor:i.config.yaxis[e].title.style.color,fontSize:i.config.yaxis[e].title.style.fontSize,fontWeight:i.config.yaxis[e].title.style.fontWeight,fontFamily:i.config.yaxis[e].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+i.config.yaxis[e].title.style.cssClass});l.add(x),h.add(l)}var y=i.config.yaxis[e].axisBorder,A=31+y.offsetX;if(i.config.yaxis[e].opposite&&(A=-31-y.offsetX),y.show){var S=a.drawLine(A,i.globals.translateY+y.offsetY-2,A,i.globals.gridHeight+i.globals.translateY+y.offsetY+2,y.color,0,y.width);h.add(S)}return i.config.yaxis[e].axisTicks.show&&this.axesUtils.drawYAxisTicks(A,d,y,i.config.yaxis[e].axisTicks,e,u,h),h}},{key:"drawYaxisInversed",value:function(e){var t=this.w,i=new z(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});a.add(s);var r=t.globals.yAxisScale[e].result.length-1,n=t.globals.gridWidth/r+.1,o=n+t.config.xaxis.labels.offsetX,h=t.globals.xLabelFormatter,c=t.globals.yAxisScale[e].result.slice(),d=t.globals.timescaleLabels;d.length>0&&(this.xaxisLabels=d.slice(),r=(c=d.slice()).length),c=this.axesUtils.checkForReversedLabels(e,c);var u=d.length;if(t.config.xaxis.labels.show)for(var p=u?0:r;u?p=0;u?p++:p--){var f=c[p];f=h(f,p,t);var b=t.globals.gridWidth+t.globals.padHorizontal-(o-n+t.config.xaxis.labels.offsetX);if(d.length){var v=this.axesUtils.getLabel(c,d,b,p,this.drawnLabels,this.xaxisFontSize);b=v.x,f=v.text,this.drawnLabels.push(v.text),p===0&&t.globals.skipFirstTimelinelabel&&(f=""),p===c.length-1&&t.globals.skipLastTimelinelabel&&(f="")}var w=i.drawText({x:b,y:this.xAxisoffX+t.config.xaxis.labels.offsetY+30-(t.config.xaxis.position==="top"?t.globals.xAxisHeight+t.config.xaxis.axisTicks.height-2:0),text:f,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[e]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:t.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+t.config.xaxis.labels.style.cssClass});s.add(w),w.tspan(f);var k=document.createElementNS(t.globals.SVGNS,"title");k.textContent=f,w.node.appendChild(k),o+=n}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(e){var t=this.w,i=new z(this.ctx),a=t.config.xaxis.axisBorder;if(a.show){var s=0;t.config.chart.type==="bar"&&t.globals.isXNumeric&&(s-=15);var r=i.drawLine(t.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,t.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders&&t.config.grid.show?this.elgrid.elGridBorders.add(r):e.add(r)}}},{key:"inversedYAxisTitleText",value:function(e){var t=this.w,i=new z(this.ctx);if(t.config.xaxis.title.text!==void 0){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:t.globals.gridWidth/2+t.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(t.config.xaxis.title.style.fontSize)+t.config.xaxis.title.offsetY+20,text:t.config.xaxis.title.text,textAnchor:"middle",fontSize:t.config.xaxis.title.style.fontSize,fontFamily:t.config.xaxis.title.style.fontFamily,fontWeight:t.config.xaxis.title.style.fontWeight,foreColor:t.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+t.config.xaxis.title.style.cssClass});a.add(s),e.add(a)}}},{key:"yAxisTitleRotate",value:function(e,t){var i=this.w,a=new z(this.ctx),s={width:0,height:0},r={width:0,height:0},n=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(e,"'] .apexcharts-yaxis-texts-g"));n!==null&&(s=n.getBoundingClientRect());var o=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(e,"'] .apexcharts-yaxis-title text"));if(o!==null&&(r=o.getBoundingClientRect()),o!==null){var h=this.xPaddingForYAxisTitle(e,s,r,t);o.setAttribute("x",h.xPos-(t?10:0))}if(o!==null){var c=a.rotateAroundCenter(o);o.setAttribute("transform","rotate(".concat(t?-1*i.config.yaxis[e].title.rotate:i.config.yaxis[e].title.rotate," ").concat(c.x," ").concat(c.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(e,t,i,a){var s=this.w,r=0,n=0,o=10;return s.config.yaxis[e].title.text===void 0||e<0?{xPos:n,padd:0}:(a?(n=t.width+s.config.yaxis[e].title.offsetX+i.width/2+o/2,(r+=1)===0&&(n-=o/2)):(n=-1*t.width+s.config.yaxis[e].title.offsetX+o/2+i.width/2,s.globals.isBarHorizontal&&(o=25,n=-1*t.width-s.config.yaxis[e].title.offsetX-o)),{xPos:n,padd:o})}},{key:"setYAxisXPosition",value:function(e,t){var i=this.w,a=0,s=0,r=18,n=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map(function(o,h){var c=i.globals.ignoreYAxisIndexes.indexOf(h)>-1||!o.show||o.floating||e[h].width===0,d=e[h].width+t[h].width;o.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[h]=s-o.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+n,c||(n=n+d+20),i.globals.translateYAxisX[h]=s-o.labels.offsetX+20):(a=i.globals.translateX-r,c||(r=r+d+20),i.globals.translateYAxisX[h]=a+o.labels.offsetX)})}},{key:"setYAxisTextAlignments",value:function(){var e=this.w,t=e.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(t=P.listToArray(t)).forEach(function(i,a){var s=e.config.yaxis[a];if(s&&!s.floating&&s.labels.align!==void 0){var r=e.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(a,"'] .apexcharts-yaxis-texts-g")),n=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(a,"'] .apexcharts-yaxis-label"));n=P.listToArray(n);var o=r.getBoundingClientRect();s.labels.align==="left"?(n.forEach(function(h,c){h.setAttribute("text-anchor","start")}),s.opposite||r.setAttribute("transform","translate(-".concat(o.width,", 0)"))):s.labels.align==="center"?(n.forEach(function(h,c){h.setAttribute("text-anchor","middle")}),r.setAttribute("transform","translate(".concat(o.width/2*(s.opposite?1:-1),", 0)"))):s.labels.align==="right"&&(n.forEach(function(h,c){h.setAttribute("text-anchor","end")}),s.opposite&&r.setAttribute("transform","translate(".concat(o.width,", 0)")))}})}}]),m}(),wt=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.documentEvent=P.bind(this.documentEvent,this)}return R(m,[{key:"addEventListener",value:function(e,t){var i=this.w;i.globals.events.hasOwnProperty(e)?i.globals.events[e].push(t):i.globals.events[e]=[t]}},{key:"removeEventListener",value:function(e,t){var i=this.w;if(i.globals.events.hasOwnProperty(e)){var a=i.globals.events[e].indexOf(t);a!==-1&&i.globals.events[e].splice(a,1)}}},{key:"fireEvent",value:function(e,t){var i=this.w;if(i.globals.events.hasOwnProperty(e)){t&&t.length||(t=[]);for(var a=i.globals.events[e],s=a.length,r=0;r0&&(t=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=t.filter(function(s){return s.name===e})[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=P.extend(Ue,i);this.w.globals.locale=a.options}}]),m}(),At=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"drawAxis",value:function(e,t){var i,a,s=this,r=this.w.globals,n=this.w.config,o=new de(this.ctx,t),h=new Fe(this.ctx,t);r.axisCharts&&e!=="radar"&&(r.isBarHorizontal?(a=h.drawYaxisInversed(0),i=o.drawXaxisInversed(0),r.dom.elGraphical.add(i),r.dom.elGraphical.add(a)):(i=o.drawXaxis(),r.dom.elGraphical.add(i),n.yaxis.map(function(c,d){if(r.ignoreYAxisIndexes.indexOf(d)===-1&&(a=h.drawYaxis(d),r.dom.Paper.add(a),s.w.config.grid.position==="back")){var u=r.dom.Paper.children()[1];u.remove(),r.dom.Paper.add(u)}})))}}]),m}(),Ee=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"drawXCrosshairs",value:function(){var e=this.w,t=new z(this.ctx),i=new U(this.ctx),a=e.config.xaxis.crosshairs.fill.gradient,s=e.config.xaxis.crosshairs.dropShadow,r=e.config.xaxis.crosshairs.fill.type,n=a.colorFrom,o=a.colorTo,h=a.opacityFrom,c=a.opacityTo,d=a.stops,u=s.enabled,p=s.left,f=s.top,b=s.blur,v=s.color,w=s.opacity,k=e.config.xaxis.crosshairs.fill.color;if(e.config.xaxis.crosshairs.show){r==="gradient"&&(k=t.drawGradient("vertical",n,o,h,c,null,d,null));var l=t.drawRect();e.config.xaxis.crosshairs.width===1&&(l=t.drawLine());var g=e.globals.gridHeight;(!P.isNumber(g)||g<0)&&(g=0);var x=e.config.xaxis.crosshairs.width;(!P.isNumber(x)||x<0)&&(x=0),l.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:g,width:x,height:g,fill:k,filter:"none","fill-opacity":e.config.xaxis.crosshairs.opacity,stroke:e.config.xaxis.crosshairs.stroke.color,"stroke-width":e.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":e.config.xaxis.crosshairs.stroke.dashArray}),u&&(l=i.dropShadow(l,{left:p,top:f,blur:b,color:v,opacity:w})),e.globals.dom.elGraphical.add(l)}}},{key:"drawYCrosshairs",value:function(){var e=this.w,t=new z(this.ctx),i=e.config.yaxis[0].crosshairs,a=e.globals.barPadForNumericAxis;if(e.config.yaxis[0].crosshairs.show){var s=t.drawLine(-a,0,e.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),e.globals.dom.elGraphical.add(s)}var r=t.drawLine(-a,0,e.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:"apexcharts-ycrosshairs-hidden"}),e.globals.dom.elGraphical.add(r)}}]),m}(),St=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"checkResponsiveConfig",value:function(e){var t=this,i=this.w,a=i.config;if(a.responsive.length!==0){var s=a.responsive.slice();s.sort(function(h,c){return h.breakpoint>c.breakpoint?1:c.breakpoint>h.breakpoint?-1:0}).reverse();var r=new ce({}),n=function(){var h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},c=s[0].breakpoint,d=window.innerWidth>0?window.innerWidth:screen.width;if(d>c){var u=G.extendArrayProps(r,i.globals.initialConfig,i);h=P.extend(u,h),h=P.extend(i.config,h),t.overrideResponsiveOptions(h)}else for(var p=0;p0&&typeof i.config.colors[0]=="function"&&(i.globals.colors=i.config.series.map(function(f,b){var v=i.config.colors[b];return v||(v=i.config.colors[0]),typeof v=="function"?(t.isColorFn=!0,v({value:i.globals.axisCharts?i.globals.series[b][0]?i.globals.series[b][0]:0:i.globals.series[b],seriesIndex:b,dataPointIndex:b,w:i})):v}))),i.globals.seriesColors.map(function(f,b){f&&(i.globals.colors[b]=f)}),i.config.theme.monochrome.enabled){var s=[],r=i.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(r=i.globals.series[0].length*i.globals.series.length);for(var n=i.config.theme.monochrome.color,o=1/(r/i.config.theme.monochrome.shadeIntensity),h=i.config.theme.monochrome.shadeTo,c=0,d=0;d2&&arguments[2]!==void 0?arguments[2]:null,a=this.w,s=t||a.globals.series.length;if(i===null&&(i=this.isBarDistributed||this.isHeatmapDistributed||a.config.chart.type==="heatmap"&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),e.lengthe.globals.svgWidth&&(this.dCtx.lgRect.width=e.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(e,t){var i=e;if(this.w.globals.isMultiLineX){var a=t.map(function(r,n){return Array.isArray(r)?r.length:1}),s=Math.max.apply(Math,Z(a));i=t[a.indexOf(s)]}return i}}]),m}(),Mt=function(){function m(e){F(this,m),this.w=e.w,this.dCtx=e}return R(m,[{key:"getxAxisLabelsCoords",value:function(){var e,t=this.w,i=t.globals.labels.slice();if(t.config.xaxis.convertedCatToNumeric&&i.length===0&&(i=t.globals.categoryLabels),t.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();e={width:a.width,height:a.height},t.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends=t.config.legend.position!=="left"&&t.config.legend.position!=="right"||t.config.legend.floating?0:this.dCtx.lgRect.width;var s=t.globals.xLabelFormatter,r=P.getLargestStringFromArr(i),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);t.globals.isBarHorizontal&&(n=r=t.globals.yAxisScale[0].result.reduce(function(f,b){return f.length>b.length?f:b},0));var o=new pe(this.dCtx.ctx),h=r;r=o.xLabelFormat(s,r,h,{i:void 0,dateFormatter:new j(this.dCtx.ctx).formatDate,w:t}),n=o.xLabelFormat(s,n,h,{i:void 0,dateFormatter:new j(this.dCtx.ctx).formatDate,w:t}),(t.config.xaxis.convertedCatToNumeric&&r===void 0||String(r).trim()==="")&&(n=r="1");var c=new z(this.dCtx.ctx),d=c.getTextRects(r,t.config.xaxis.labels.style.fontSize),u=d;if(r!==n&&(u=c.getTextRects(n,t.config.xaxis.labels.style.fontSize)),(e={width:d.width>=u.width?d.width:u.width,height:d.height>=u.height?d.height:u.height}).width*i.length>t.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&t.config.xaxis.labels.rotate!==0||t.config.xaxis.labels.rotateAlways){if(!t.globals.isBarHorizontal){t.globals.rotateXLabels=!0;var p=function(f){return c.getTextRects(f,t.config.xaxis.labels.style.fontSize,t.config.xaxis.labels.style.fontFamily,"rotate(".concat(t.config.xaxis.labels.rotate," 0 0)"),!1)};d=p(r),r!==n&&(u=p(n)),e.height=(d.height>u.height?d.height:u.height)/1.5,e.width=d.width>u.width?d.width:u.width}}else t.globals.rotateXLabels=!1}return t.config.xaxis.labels.show||(e={width:0,height:0}),{width:e.width,height:e.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var e,t=this.w;if(!t.globals.hasXaxisGroups)return{width:0,height:0};var i,a=((e=t.config.xaxis.group.style)===null||e===void 0?void 0:e.fontSize)||t.config.xaxis.labels.style.fontSize,s=t.globals.groups.map(function(d){return d.title}),r=P.getLargestStringFromArr(s),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),o=new z(this.dCtx.ctx),h=o.getTextRects(r,a),c=h;return r!==n&&(c=o.getTextRects(n,a)),i={width:h.width>=c.width?h.width:c.width,height:h.height>=c.height?h.height:c.height},t.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var e=this.w,t=0,i=0;if(e.config.xaxis.title.text!==void 0){var a=new z(this.dCtx.ctx).getTextRects(e.config.xaxis.title.text,e.config.xaxis.title.style.fontSize);t=a.width,i=a.height}return{width:t,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var e,t=this.w;this.dCtx.timescaleLabels=t.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map(function(s){return s.value}),a=i.reduce(function(s,r){return s===void 0?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):s.length>r.length?s:r},0);return 1.05*(e=new z(this.dCtx.ctx).getTextRects(a,t.config.xaxis.labels.style.fontSize)).width*i.length>t.globals.gridWidth&&t.config.xaxis.labels.rotate!==0&&(t.globals.overlappingXLabels=!0),e}},{key:"additionalPaddingXLabels",value:function(e){var t=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,n=e.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var o=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,h=function(c,d){s.yaxis.length>1&&function(u){return a.collapsedSeriesIndices.indexOf(u)!==-1}(d)||function(u){if(t.dCtx.timescaleLabels&&t.dCtx.timescaleLabels.length){var p=t.dCtx.timescaleLabels[0],f=t.dCtx.timescaleLabels[t.dCtx.timescaleLabels.length-1].position+n/1.75-t.dCtx.yAxisWidthRight,b=p.position-n/1.75+t.dCtx.yAxisWidthLeft,v=i.config.legend.position==="right"&&t.dCtx.lgRect.width>0?t.dCtx.lgRect.width:0;f>a.svgWidth-a.translateX-v&&(a.skipLastTimelinelabel=!0),b<-(u.show&&!u.floating||s.chart.type!=="bar"&&s.chart.type!=="candlestick"&&s.chart.type!=="rangeBar"&&s.chart.type!=="boxPlot"?10:n/1.75)&&(a.skipFirstTimelinelabel=!0)}else r==="datetime"?t.dCtx.gridPad.right((A=String(d(x,o)))===null||A===void 0?void 0:A.length)?g:x},u),f=p=d(p,o);if(p!==void 0&&p.length!==0||(p=h.niceMax),t.globals.isBarHorizontal){a=0;var b=t.globals.labels.slice();p=P.getLargestStringFromArr(b),p=d(p,{seriesIndex:n,dataPointIndex:-1,w:t}),f=e.dCtx.dimHelpers.getLargestStringFromMultiArr(p,b)}var v=new z(e.dCtx.ctx),w="rotate(".concat(r.labels.rotate," 0 0)"),k=v.getTextRects(p,r.labels.style.fontSize,r.labels.style.fontFamily,w,!1),l=k;p!==f&&(l=v.getTextRects(f,r.labels.style.fontSize,r.labels.style.fontFamily,w,!1)),i.push({width:(c>l.width||c>k.width?c:l.width>k.width?l.width:k.width)+a,height:l.height>k.height?l.height:k.height})}else i.push({width:0,height:0})}),i}},{key:"getyAxisTitleCoords",value:function(){var e=this,t=this.w,i=[];return t.config.yaxis.map(function(a,s){if(a.show&&a.title.text!==void 0){var r=new z(e.dCtx.ctx),n="rotate(".concat(a.title.rotate," 0 0)"),o=r.getTextRects(a.title.text,a.title.style.fontSize,a.title.style.fontFamily,n,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})}),i}},{key:"getTotalYAxisWidth",value:function(){var e=this.w,t=0,i=0,a=0,s=e.globals.yAxisScale.length>1?10:0,r=new ae(this.dCtx.ctx),n=function(o,h){var c=e.config.yaxis[h].floating,d=0;o.width>0&&!c?(d=o.width+s,function(u){return e.globals.ignoreYAxisIndexes.indexOf(u)>-1}(h)&&(d=d-o.width-s)):d=c||r.isYAxisHidden(h)?0:5,e.config.yaxis[h].opposite?a+=d:i+=d,t+=d};return e.globals.yLabelsCoords.map(function(o,h){n(o,h)}),e.globals.yTitleCoords.map(function(o,h){n(o,h)}),e.globals.isBarHorizontal&&!e.config.yaxis[0].floating&&(t=e.globals.yLabelsCoords[0].width+e.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,t}}]),m}(),Tt=function(){function m(e){F(this,m),this.w=e.w,this.dCtx=e}return R(m,[{key:"gridPadForColumnsInNumericAxis",value:function(e){var t=this.w;if(t.globals.noData||t.globals.allSeriesCollapsed)return 0;var i=function(c){return c==="bar"||c==="rangeBar"||c==="candlestick"||c==="boxPlot"},a=t.config.chart.type,s=0,r=i(a)?t.config.series.length:1;if(t.globals.comboBarCount>0&&(r=t.globals.comboBarCount),t.globals.collapsedSeries.forEach(function(c){i(c.type)&&(r-=1)}),t.config.chart.stacked&&(r=1),(i(a)||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&r>0){var n,o,h=Math.abs(t.globals.initialMaxX-t.globals.initialMinX);h<=3&&(h=t.globals.dataPoints),n=h/e,t.globals.minXDiff&&t.globals.minXDiff/n>0&&(o=t.globals.minXDiff/n),o>e/2&&(o/=2),(s=o/r*parseInt(t.config.plotOptions.bar.columnWidth,10)/100)<1&&(s=1),s=s/(r>1?1:1.5)+5,t.globals.barPadForNumericAxis=s}return s}},{key:"gridPadFortitleSubtitle",value:function(){var e=this,t=this.w,i=t.globals,a=this.dCtx.isSparkline||!t.globals.axisCharts?0:10;["title","subtitle"].forEach(function(n){t.config[n].text!==void 0?a+=t.config[n].margin:a+=e.dCtx.isSparkline||!t.globals.axisCharts?0:5}),!t.config.legend.show||t.config.legend.position!=="bottom"||t.config.legend.floating||t.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-s.height-r.height-a,i.translateY=i.translateY+s.height+r.height+a}},{key:"setGridXPosForDualYAxis",value:function(e,t){var i=this.w,a=new ae(this.dCtx.ctx);i.config.yaxis.map(function(s,r){i.globals.ignoreYAxisIndexes.indexOf(r)!==-1||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(t[r].width+e[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))})}}]),m}(),me=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new Pt(this),this.dimYAxis=new It(this),this.dimXAxis=new Mt(this),this.dimGrid=new Tt(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return R(m,[{key:"plotCoords",value:function(){var e=this,t=this.w,i=t.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.isSparkline&&((t.config.markers.discrete.length>0||t.config.markers.size>0)&&Object.entries(this.gridPad).forEach(function(s){var r=je(s,2),n=r[0],o=r[1];e.gridPad[n]=Math.max(o,e.w.globals.markers.largestSize/1.5)}),this.gridPad.top=Math.max(t.config.stroke.width/2,this.gridPad.top),this.gridPad.bottom=Math.max(t.config.stroke.width/2,this.gridPad.bottom)),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var e=this,t=this.w,i=t.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();t.globals.yLabelsCoords=[],t.globals.yTitleCoords=[],t.config.yaxis.map(function(p,f){t.globals.yLabelsCoords.push({width:a[f].width,index:f}),t.globals.yTitleCoords.push({width:s[f].width,index:f})}),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),n=this.dimXAxis.getxAxisGroupLabelsCoords(),o=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,o,n),i.translateXAxisY=t.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=t.globals.rotateXLabels&&t.globals.isXNumeric&&t.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,t.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(t.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+t.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+t.config.xaxis.labels.offsetX;var h=this.yAxisWidth,c=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-o.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var d=10;(t.config.chart.type==="radar"||this.isSparkline)&&(h=0,c=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||t.config.chart.type==="treemap")&&(h=0,c=0,d=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(r);var u=function(){i.translateX=h,i.gridHeight=i.svgHeight-e.lgRect.height-c-(e.isSparkline||t.config.chart.type==="treemap"?0:t.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-h};switch(t.config.xaxis.position==="top"&&(d=i.xAxisHeight-t.config.xaxis.axisTicks.height-5),t.config.legend.position){case"bottom":i.translateY=d,u();break;case"top":i.translateY=this.lgRect.height+d,u();break;case"left":i.translateY=d,i.translateX=this.lgRect.width+h,i.gridHeight=i.svgHeight-c-12,i.gridWidth=i.svgWidth-this.lgRect.width-h;break;case"right":i.translateY=d,i.translateX=h,i.gridHeight=i.svgHeight-c-12,i.gridWidth=i.svgWidth-this.lgRect.width-h-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new Fe(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var e=this.w,t=e.globals,i=e.config,a=0;e.config.legend.show&&!e.config.legend.floating&&(a=20);var s=i.chart.type==="pie"||i.chart.type==="polarArea"||i.chart.type==="donut"?"pie":"radialBar",r=i.plotOptions[s].offsetY,n=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return t.gridHeight=t.svgHeight-i.grid.padding.left+i.grid.padding.right,t.gridWidth=t.gridHeight,t.translateY=r,void(t.translateX=n+(t.svgWidth-t.gridWidth)/2);switch(i.legend.position){case"bottom":t.gridHeight=t.svgHeight-this.lgRect.height-t.goldenPadding,t.gridWidth=t.svgWidth,t.translateY=r-10,t.translateX=n+(t.svgWidth-t.gridWidth)/2;break;case"top":t.gridHeight=t.svgHeight-this.lgRect.height-t.goldenPadding,t.gridWidth=t.svgWidth,t.translateY=this.lgRect.height+r+10,t.translateX=n+(t.svgWidth-t.gridWidth)/2;break;case"left":t.gridWidth=t.svgWidth-this.lgRect.width-a,t.gridHeight=i.chart.height!=="auto"?t.svgHeight:t.gridWidth,t.translateY=r,t.translateX=n+this.lgRect.width+a;break;case"right":t.gridWidth=t.svgWidth-this.lgRect.width-a-5,t.gridHeight=i.chart.height!=="auto"?t.svgHeight:t.gridWidth,t.translateY=r,t.translateX=n+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(e,t,i){var a=this.w,s=a.globals.hasXaxisGroups?2:1,r=i.height+e.height+t.height,n=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,o=a.globals.rotateXLabels?22:10,h=a.globals.rotateXLabels&&a.config.legend.position==="bottom"?10:0;this.xAxisHeight=r*n+s*o+h,this.xAxisWidth=e.width,this.xAxisHeight-t.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightd&&(this.yAxisWidth=d)}}]),m}(),zt=function(){function m(e){F(this,m),this.w=e.w,this.lgCtx=e}return R(m,[{key:"getLegendStyles",value:function(){var e=document.createElement("style");e.setAttribute("type","text/css");var t=document.createTextNode(` - - .apexcharts-legend { - display: flex; - overflow: auto; - padding: 0 10px; - } - .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top { - flex-wrap: wrap - } - .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left { - flex-direction: column; - bottom: 0; - } - .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left { - justify-content: flex-start; - } - .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center { - justify-content: center; - } - .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right { - justify-content: flex-end; - } - .apexcharts-legend-series { - cursor: pointer; - line-height: normal; - } - .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{ - display: flex; - align-items: center; - } - .apexcharts-legend-text { - position: relative; - font-size: 14px; - } - .apexcharts-legend-text *, .apexcharts-legend-marker * { - pointer-events: none; - } - .apexcharts-legend-marker { - position: relative; - display: inline-block; - cursor: pointer; - margin-right: 3px; - border-style: solid; - } - - .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{ - display: inline-block; - } - .apexcharts-legend-series.apexcharts-no-click { - cursor: auto; - } - .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series { - display: none !important; - } - .apexcharts-inactive-legend { - opacity: 0.45; - }`);return e.appendChild(t),e}},{key:"getLegendBBox",value:function(){var e=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),t=e.width;return{clwh:e.height,clww:t}}},{key:"appendToForeignObject",value:function(){this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles())}},{key:"toggleDataSeries",value:function(e,t){var i=this,a=this.w;if(a.globals.axisCharts||a.config.chart.type==="radialBar"){a.globals.resized=!0;var s=null,r=null;a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(e,"']")),r=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(e+1,"']")),r=parseInt(s.getAttribute("rel"),10)-1),t?[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach(function(c){i.riseCollapsedSeries(c.cs,c.csi,r)}):this.hideSeries({seriesEl:s,realIndex:r})}else{var n=a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(e+1,"'] path")),o=a.config.chart.type;if(o==="pie"||o==="polarArea"||o==="donut"){var h=a.config.plotOptions.pie.donut.labels;new z(this.lgCtx.ctx).pathMouseDown(n.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(n.members[0].node,h)}n.fire("click")}}},{key:"hideSeries",value:function(e){var t=e.seriesEl,i=e.realIndex,a=this.w,s=P.clone(a.config.series);if(a.globals.axisCharts){var r=!1;if(a.config.yaxis[i]&&a.config.yaxis[i].show&&a.config.yaxis[i].showAlways&&(r=!0,a.globals.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(a.globals.ancillaryCollapsedSeries.push({index:i,data:s[i].data.slice(),type:t.parentNode.className.baseVal.split("-")[1]}),a.globals.ancillaryCollapsedSeriesIndices.push(i))),!r){a.globals.collapsedSeries.push({index:i,data:s[i].data.slice(),type:t.parentNode.className.baseVal.split("-")[1]}),a.globals.collapsedSeriesIndices.push(i);var n=a.globals.risingSeries.indexOf(i);a.globals.risingSeries.splice(n,1)}}else a.globals.collapsedSeries.push({index:i,data:s[i]}),a.globals.collapsedSeriesIndices.push(i);for(var o=t.childNodes,h=0;h0){for(var r=0;r-1&&(e[a].data=[])}):e.forEach(function(i,a){t.globals.collapsedSeriesIndices.indexOf(a)>-1&&(e[a]=0)}),e}}]),m}(),Qe=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed=this.w.config.chart.type==="bar"&&this.w.config.plotOptions.bar.distributed&&this.w.config.series.length===1,this.legendHelpers=new zt(this)}return R(m,[{key:"init",value:function(){var e=this.w,t=e.globals,i=e.config;if((i.legend.showForSingleSeries&&t.series.length===1||this.isBarsDistributed||t.series.length>1||!t.axisCharts)&&i.legend.show){for(;t.dom.elLegendWrap.firstChild;)t.dom.elLegendWrap.removeChild(t.dom.elLegendWrap.firstChild);this.drawLegends(),P.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),i.legend.position==="bottom"||i.legend.position==="top"?this.legendAlignHorizontal():i.legend.position!=="right"&&i.legend.position!=="left"||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var e=this,t=this.w,i=t.config.legend.fontFamily,a=t.globals.seriesNames,s=t.globals.colors.slice();if(t.config.chart.type==="heatmap"){var r=t.config.plotOptions.heatmap.colorScale.ranges;a=r.map(function(I){return I.name?I.name:I.from+" - "+I.to}),s=r.map(function(I){return I.color})}else this.isBarsDistributed&&(a=t.globals.labels.slice());t.config.legend.customLegendItems.length&&(a=t.config.legend.customLegendItems);for(var n=t.globals.legendFormatter,o=t.config.legend.inverseOrder,h=o?a.length-1:0;o?h>=0:h<=a.length-1;o?h--:h++){var c,d=n(a[h],{seriesIndex:h,w:t}),u=!1,p=!1;if(t.globals.collapsedSeries.length>0)for(var f=0;f0)for(var b=0;b0?h-10:0)+(c>0?c-10:0)}a.style.position="absolute",r=r+e+i.config.legend.offsetX,n=n+t+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=n+"px",i.config.legend.position==="bottom"?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):i.config.legend.position==="right"&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px"),["width","height"].forEach(function(d){a.style[d]&&(a.style[d]=parseInt(i.config.legend[d],10)+"px")})}},{key:"legendAlignHorizontal",value:function(){var e=this.w;e.globals.dom.elLegendWrap.style.right=0;var t=this.legendHelpers.getLegendBBox(),i=new me(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),r=0;e.config.legend.position==="bottom"?r=-t.clwh/1.8:e.config.legend.position==="top"&&(r=a.height+s.height+e.config.title.margin+e.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:"legendAlignVertical",value:function(){var e=this.w,t=this.legendHelpers.getLegendBBox(),i=0;e.config.legend.position==="left"&&(i=20),e.config.legend.position==="right"&&(i=e.globals.svgWidth-t.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(e){var t=this.w,i=e.target.classList.contains("apexcharts-legend-series")||e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker");if(t.config.chart.type==="heatmap"||this.isBarsDistributed){if(i){var a=parseInt(e.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new $(this.ctx).highlightRangeInSeries(e,e.target)}}else!e.target.classList.contains("apexcharts-inactive-legend")&&i&&new $(this.ctx).toggleSeriesOnHover(e,e.target)}},{key:"onLegendClick",value:function(e){var t=this.w;if(!t.config.legend.customLegendItems.length&&(e.target.classList.contains("apexcharts-legend-series")||e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(e.target.getAttribute("rel"),10)-1,a=e.target.getAttribute("data:collapsed")==="true",s=this.w.config.chart.events.legendClick;typeof s=="function"&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;typeof r=="function"&&e.target.classList.contains("apexcharts-legend-marker")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),t.config.chart.type!=="treemap"&&t.config.chart.type!=="heatmap"&&!this.isBarsDistributed&&t.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),m}(),Ke=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w;var t=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=t.globals.minX,this.maxX=t.globals.maxX}return R(m,[{key:"createToolbar",value:function(){var e=this,t=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=t.config.chart.toolbar.offsetY+"px",a.style.right=3-t.config.chart.toolbar.offsetX+"px",t.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=t.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s - - - -`),n("zoomOut",this.elZoomOut,` - - - -`);var o=function(d){e.t[d]&&t.config.chart[d].enabled&&r.push({el:d==="zoom"?e.elZoom:e.elSelection,icon:typeof e.t[d]=="string"?e.t[d]:d==="zoom"?` - - - -`:` - - -`,title:e.localeValues[d==="zoom"?"selectionZoom":"selection"],class:t.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-".concat(d,"-icon")})};o("zoom"),o("selection"),this.t.pan&&t.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:typeof this.t.pan=="string"?this.t.pan:` - - - - - - - -`,title:this.localeValues.pan,class:t.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-pan-icon"}),n("reset",this.elZoomReset,` - - -`),this.t.download&&r.push({el:this.elMenuIcon,icon:typeof this.t.download=="string"?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var h=0;h0&&a.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:i.globals.gridWidth,maxY:i.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var i=this.w,a=this.xyRatios;if(!i.globals.zoomEnabled){if(i.globals.selection!==void 0&&i.globals.selection!==null)this.drawSelectionRect(i.globals.selection);else if(i.config.chart.selection.xaxis.min!==void 0&&i.config.chart.selection.xaxis.max!==void 0){var s=(i.config.chart.selection.xaxis.min-i.globals.minX)/a.xRatio,r={x:s,y:0,width:i.globals.gridWidth-(i.globals.maxX-i.config.chart.selection.xaxis.max)/a.xRatio-s,height:i.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(r),this.makeSelectionRectDraggable(),typeof i.config.chart.events.selection=="function"&&i.config.chart.events.selection(this.ctx,{xaxis:{min:i.config.chart.selection.xaxis.min,max:i.config.chart.selection.xaxis.max},yaxis:{}})}}}},{key:"drawSelectionRect",value:function(i){var a=i.x,s=i.y,r=i.width,n=i.height,o=i.translateX,h=o===void 0?0:o,c=i.translateY,d=c===void 0?0:c,u=this.w,p=this.zoomRect,f=this.selectionRect;if(this.dragged||u.globals.selection!==null){var b={transform:"translate("+h+", "+d+")"};u.globals.zoomEnabled&&this.dragged&&(r<0&&(r=1),p.attr({x:a,y:s,width:r,height:n,fill:u.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":u.config.chart.zoom.zoomedArea.fill.opacity,stroke:u.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":u.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":u.config.chart.zoom.zoomedArea.stroke.opacity}),z.setAttrs(p.node,b)),u.globals.selectionEnabled&&(f.attr({x:a,y:s,width:r>0?r:0,height:n>0?n:0,fill:u.config.chart.selection.fill.color,"fill-opacity":u.config.chart.selection.fill.opacity,stroke:u.config.chart.selection.stroke.color,"stroke-width":u.config.chart.selection.stroke.width,"stroke-dasharray":u.config.chart.selection.stroke.dashArray,"stroke-opacity":u.config.chart.selection.stroke.opacity}),z.setAttrs(f.node,b))}}},{key:"hideSelectionRect",value:function(i){i&&i.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(i){var a=i.context,s=i.zoomtype,r=this.w,n=a,o=this.gridRect.getBoundingClientRect(),h=n.startX-1,c=n.startY,d=!1,u=!1,p=n.clientX-o.left-h,f=n.clientY-o.top-c,b={};return Math.abs(p+h)>r.globals.gridWidth?p=r.globals.gridWidth-h:n.clientX-o.left<0&&(p=h),h>n.clientX-o.left&&(d=!0,p=Math.abs(p)),c>n.clientY-o.top&&(u=!0,f=Math.abs(f)),b=s==="x"?{x:d?h-p:h,y:0,width:p,height:r.globals.gridHeight}:s==="y"?{x:0,y:u?c-f:c,width:r.globals.gridWidth,height:f}:{x:d?h-p:h,y:u?c-f:c,width:p,height:f},n.drawSelectionRect(b),n.selectionDragging("resizing"),b}},{key:"selectionDragging",value:function(i,a){var s=this,r=this.w,n=this.xyRatios,o=this.selectionRect,h=0;i==="resizing"&&(h=30);var c=function(u){return parseFloat(o.node.getAttribute(u))},d={x:c("x"),y:c("y"),width:c("width"),height:c("height")};r.globals.selection=d,typeof r.config.chart.events.selection=="function"&&r.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout(function(){var u=s.gridRect.getBoundingClientRect(),p=o.node.getBoundingClientRect(),f={xaxis:{min:r.globals.xAxisScale.niceMin+(p.left-u.left)*n.xRatio,max:r.globals.xAxisScale.niceMin+(p.right-u.left)*n.xRatio},yaxis:{min:r.globals.yAxisScale[0].niceMin+(u.bottom-p.bottom)*n.yRatio[0],max:r.globals.yAxisScale[0].niceMax-(p.top-u.top)*n.yRatio[0]}};r.config.chart.events.selection(s.ctx,f),r.config.chart.brush.enabled&&r.config.chart.events.brushScrolled!==void 0&&r.config.chart.events.brushScrolled(s.ctx,f)},h))}},{key:"selectionDrawn",value:function(i){var a=i.context,s=i.zoomtype,r=this.w,n=a,o=this.xyRatios,h=this.ctx.toolbar;if(n.startX>n.endX){var c=n.startX;n.startX=n.endX,n.endX=c}if(n.startY>n.endY){var d=n.startY;n.startY=n.endY,n.endY=d}var u=void 0,p=void 0;r.globals.isRangeBar?(u=r.globals.yAxisScale[0].niceMin+n.startX*o.invertedYRatio,p=r.globals.yAxisScale[0].niceMin+n.endX*o.invertedYRatio):(u=r.globals.xAxisScale.niceMin+n.startX*o.xRatio,p=r.globals.xAxisScale.niceMin+n.endX*o.xRatio);var f=[],b=[];if(r.config.yaxis.forEach(function(A,S){f.push(r.globals.yAxisScale[S].niceMax-o.yRatio[S]*n.startY),b.push(r.globals.yAxisScale[S].niceMax-o.yRatio[S]*n.endY)}),n.dragged&&(n.dragX>10||n.dragY>10)&&u!==p){if(r.globals.zoomEnabled){var v=P.clone(r.globals.initialConfig.yaxis),w=P.clone(r.globals.initialConfig.xaxis);if(r.globals.zoomed=!0,r.config.xaxis.convertedCatToNumeric&&(u=Math.floor(u),p=Math.floor(p),u<1&&(u=1,p=r.globals.dataPoints),p-u<2&&(p=u+1)),s!=="xy"&&s!=="x"||(w={min:u,max:p}),s!=="xy"&&s!=="y"||v.forEach(function(A,S){v[S].min=b[S],v[S].max=f[S]}),r.config.chart.zoom.autoScaleYaxis){var k=new re(n.ctx);v=k.autoScaleY(n.ctx,v,{xaxis:w})}if(h){var l=h.getBeforeZoomRange(w,v);l&&(w=l.xaxis?l.xaxis:w,v=l.yaxis?l.yaxis:v)}var g={xaxis:w};r.config.chart.group||(g.yaxis=v),n.ctx.updateHelpers._updateOptions(g,!1,n.w.config.chart.animations.dynamicAnimation.enabled),typeof r.config.chart.events.zoomed=="function"&&h.zoomCallback(w,v)}else if(r.globals.selectionEnabled){var x,y=null;x={min:u,max:p},s!=="xy"&&s!=="y"||(y=P.clone(r.config.yaxis)).forEach(function(A,S){y[S].min=b[S],y[S].max=f[S]}),r.globals.selection=n.selection,typeof r.config.chart.events.selection=="function"&&r.config.chart.events.selection(n.ctx,{xaxis:x,yaxis:y})}}}},{key:"panDragging",value:function(i){var a=i.context,s=this.w,r=a;if(s.globals.lastClientPosition.x!==void 0){var n=s.globals.lastClientPosition.x-r.clientX,o=s.globals.lastClientPosition.y-r.clientY;Math.abs(n)>Math.abs(o)&&n>0?this.moveDirection="left":Math.abs(n)>Math.abs(o)&&n<0?this.moveDirection="right":Math.abs(o)>Math.abs(n)&&o>0?this.moveDirection="up":Math.abs(o)>Math.abs(n)&&o<0&&(this.moveDirection="down")}s.globals.lastClientPosition={x:r.clientX,y:r.clientY};var h=s.globals.isRangeBar?s.globals.minY:s.globals.minX,c=s.globals.isRangeBar?s.globals.maxY:s.globals.maxX;s.config.xaxis.convertedCatToNumeric||r.panScrolled(h,c)}},{key:"delayedPanScrolled",value:function(){var i=this.w,a=i.globals.minX,s=i.globals.maxX,r=(i.globals.maxX-i.globals.minX)/2;this.moveDirection==="left"?(a=i.globals.minX+r,s=i.globals.maxX+r):this.moveDirection==="right"&&(a=i.globals.minX-r,s=i.globals.maxX-r),a=Math.floor(a),s=Math.floor(s),this.updateScrolledChart({xaxis:{min:a,max:s}},a,s)}},{key:"panScrolled",value:function(i,a){var s=this.w,r=this.xyRatios,n=P.clone(s.globals.initialConfig.yaxis),o=r.xRatio,h=s.globals.minX,c=s.globals.maxX;s.globals.isRangeBar&&(o=r.invertedYRatio,h=s.globals.minY,c=s.globals.maxY),this.moveDirection==="left"?(i=h+s.globals.gridWidth/15*o,a=c+s.globals.gridWidth/15*o):this.moveDirection==="right"&&(i=h-s.globals.gridWidth/15*o,a=c-s.globals.gridWidth/15*o),s.globals.isRangeBar||(is.globals.initialMaxX)&&(i=h,a=c);var d={min:i,max:a};s.config.chart.zoom.autoScaleYaxis&&(n=new re(this.ctx).autoScaleY(this.ctx,n,{xaxis:d}));var u={xaxis:{min:i,max:a}};s.config.chart.group||(u.yaxis=n),this.updateScrolledChart(u,i,a)}},{key:"updateScrolledChart",value:function(i,a,s){var r=this.w;this.ctx.updateHelpers._updateOptions(i,!1,!1),typeof r.config.chart.events.scrolled=="function"&&r.config.chart.events.scrolled(this.ctx,{xaxis:{min:a,max:s}})}}]),t}(),et=function(){function m(e){F(this,m),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return R(m,[{key:"getNearestValues",value:function(e){var t=e.hoverArea,i=e.elGrid,a=e.clientX,s=e.clientY,r=this.w,n=i.getBoundingClientRect(),o=n.width,h=n.height,c=o/(r.globals.dataPoints-1),d=h/r.globals.dataPoints,u=this.hasBars();!r.globals.comboCharts&&!u||r.config.xaxis.convertedCatToNumeric||(c=o/r.globals.dataPoints);var p=a-n.left-r.globals.barPadForNumericAxis,f=s-n.top;p<0||f<0||p>o||f>h?(t.classList.remove("hovering-zoom"),t.classList.remove("hovering-pan")):r.globals.zoomEnabled?(t.classList.remove("hovering-pan"),t.classList.add("hovering-zoom")):r.globals.panEnabled&&(t.classList.remove("hovering-zoom"),t.classList.add("hovering-pan"));var b=Math.round(p/c),v=Math.floor(f/d);u&&!r.config.xaxis.convertedCatToNumeric&&(b=Math.ceil(p/c),b-=1);var w=null,k=null,l=r.globals.seriesXvalues.map(function(S){return S.filter(function(L){return P.isNumber(L)})}),g=r.globals.seriesYvalues.map(function(S){return S.filter(function(L){return P.isNumber(L)})});if(r.globals.isXNumeric){var x=this.ttCtx.getElGrid().getBoundingClientRect(),y=p*(x.width/o),A=f*(x.height/h);w=(k=this.closestInMultiArray(y,A,l,g)).index,b=k.j,w!==null&&(l=r.globals.seriesXvalues[w],b=(k=this.closestInArray(y,l)).index)}return r.globals.capturedSeriesIndex=w===null?-1:w,(!b||b<1)&&(b=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=v:r.globals.capturedDataPointIndex=b,{capturedSeries:w,j:r.globals.isBarHorizontal?v:b,hoverX:p,hoverY:f}}},{key:"closestInMultiArray",value:function(e,t,i,a){var s=this.w,r=0,n=null,o=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):n=0;var h=i[r][0],c=Math.abs(e-h);if(i.forEach(function(p){p.forEach(function(f,b){var v=Math.abs(e-f);v<=c&&(c=v,o=b)})}),o!==-1){var d=a[r][o],u=Math.abs(t-d);n=r,a.forEach(function(p,f){var b=Math.abs(t-p[o]);b<=u&&(u=b,n=f)})}return{index:n,j:o}}},{key:"getFirstActiveXArray",value:function(e){for(var t=this.w,i=0,a=e.map(function(r,n){return r.length>0?n:-1}),s=0;s0)for(var a=0;a *")):this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap > *")}},{key:"getAllMarkers",value:function(){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap");(e=Z(e)).sort(function(i,a){var s=Number(i.getAttribute("data:realIndex")),r=Number(a.getAttribute("data:realIndex"));return rs?-1:0});var t=[];return e.forEach(function(i){t.push(i.querySelector(".apexcharts-marker"))}),t}},{key:"hasMarkers",value:function(e){return this.getElMarkers(e).length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(e){var t=this.w,i=t.config.markers.hover.size;return i===void 0&&(i=t.globals.markers.size[e]+t.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(e){var t=this.w,i=this.ttCtx;i.allTooltipSeriesGroups.length===0&&(i.allTooltipSeriesGroups=t.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s ').concat(S.attrs.name,"
"),A+="
".concat(S.val,"
")}),l.innerHTML=y+"
",g.innerHTML=A+"
"};n?h.globals.seriesGoals[t][i]&&Array.isArray(h.globals.seriesGoals[t][i])?x():(l.innerHTML="",g.innerHTML=""):x()}else l.innerHTML="",g.innerHTML="";b!==null&&(a[t].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=h.config.tooltip.z.title,a[t].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=b!==void 0?b:""),n&&v[0]&&(d==null||h.globals.ancillaryCollapsedSeriesIndices.indexOf(t)>-1||h.globals.collapsedSeriesIndices.indexOf(t)>-1?v[0].parentNode.style.display="none":v[0].parentNode.style.display=h.config.tooltip.items.display)}},{key:"toggleActiveInactiveSeries",value:function(e){var t=this.w;if(e)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=t.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=t.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(e){var t=e.i,i=e.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",n="",o=null,h=null,c={series:a.globals.series,seriesIndex:t,dataPointIndex:i,w:a},d=a.globals.ttZFormatter;i===null?h=a.globals.series[t]:a.globals.isXNumeric&&a.config.chart.type!=="treemap"?(r=s[t][i],s[t].length===0&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=a.globals.labels[i]!==void 0?a.globals.labels[i]:"";var u=r;return a.globals.isXNumeric&&a.config.xaxis.type==="datetime"?r=new pe(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,u,u,{i:void 0,dateFormatter:new j(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](u,c):a.globals.xLabelFormatter(u,c),a.config.tooltip.x.formatter!==void 0&&(r=a.globals.ttKeyFormatter(u,c)),a.globals.seriesZ.length>0&&a.globals.seriesZ[t].length>0&&(o=d(a.globals.seriesZ[t][i],a)),n=typeof a.config.xaxis.tooltip.formatter=="function"?a.globals.xaxisTooltipFormatter(u,c):r,{val:Array.isArray(h)?h.join(" "):h,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(n)?n.join(" "):n,zVal:o}}},{key:"handleCustomTooltip",value:function(e){var t=e.i,i=e.j,a=e.y1,s=e.y2,r=e.w,n=this.ttCtx.getElTooltip(),o=r.config.tooltip.custom;Array.isArray(o)&&o[t]&&(o=o[t]),n.innerHTML=o({ctx:this.ctx,series:r.globals.series,seriesIndex:t,dataPointIndex:i,y1:a,y2:s,w:r})}}]),m}(),tt=function(){function m(e){F(this,m),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return R(m,[{key:"moveXCrosshairs",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=e-i.xcrosshairsWidth/2,n=a.globals.labels.slice().length;if(t!==null&&(r=a.globals.gridWidth/n*t),s===null||a.globals.isBarHorizontal||(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var o=r;a.config.xaxis.crosshairs.width!=="tickWidth"&&a.config.xaxis.crosshairs.width!=="barWidth"||(o=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:"moveYCrosshairs",value:function(e){var t=this.ttCtx;t.ycrosshairs!==null&&z.setAttrs(t.ycrosshairs,{y1:e,y2:e}),t.ycrosshairsHidden!==null&&z.setAttrs(t.ycrosshairsHidden,{y1:e,y2:e})}},{key:"moveXAxisTooltip",value:function(e){var t=this.w,i=this.ttCtx;if(i.xaxisTooltip!==null&&i.xcrosshairsWidth!==0){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+t.config.xaxis.tooltip.offsetY+t.globals.translateY+1+t.config.xaxis.offsetY;if(e-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(e)){e+=t.globals.translateX;var s;s=new z(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=e+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(e){var t=this.w,i=this.ttCtx;i.yaxisTTEls===null&&(i.yaxisTTEls=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=t.globals.translateY+a,r=i.yaxisTTEls[e].getBoundingClientRect().height,n=t.globals.translateYAxisX[e]-2;t.config.yaxis[e].opposite&&(n-=26),s-=r/2,t.globals.ignoreYAxisIndexes.indexOf(e)===-1?(i.yaxisTTEls[e].classList.add("apexcharts-active"),i.yaxisTTEls[e].style.top=s+"px",i.yaxisTTEls[e].style.left=n+t.config.yaxis[e].tooltip.offsetX+"px"):i.yaxisTTEls[e].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),n=s.tooltipRect,o=i!==null?parseFloat(i):1,h=parseFloat(e)+o+5,c=parseFloat(t)+o/2;if(h>a.globals.gridWidth/2&&(h=h-n.ttWidth-o-10),h>a.globals.gridWidth-n.ttWidth-10&&(h=a.globals.gridWidth-n.ttWidth),h<-20&&(h=-20),a.config.tooltip.followCursor){var d=s.getElGrid().getBoundingClientRect();(h=s.e.clientX-d.left)>a.globals.gridWidth/2&&(h-=s.tooltipRect.ttWidth),(c=s.e.clientY+a.globals.translateY-d.top)>a.globals.gridHeight/2&&(c-=s.tooltipRect.ttHeight)}else a.globals.isBarHorizontal||n.ttHeight/2+c>a.globals.gridHeight&&(c=a.globals.gridHeight-n.ttHeight+a.globals.translateY);isNaN(h)||(h+=a.globals.translateX,r.style.left=h+"px",r.style.top=c+"px")}},{key:"moveMarkers",value:function(e,t){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[e]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(e,"'] .apexcharts-marker")),r=0;r0&&(c.setAttribute("r",o),c.setAttribute("cx",i),c.setAttribute("cy",a)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,a,o)}}},{key:"moveDynamicPointsOnHover",value:function(e){var t,i=this.ttCtx,a=i.w,s=0,r=0,n=a.globals.pointsArray;t=new $(this.ctx).getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var o=i.tooltipUtil.getHoverMarkerSize(t);n[t]&&(s=n[t][e][0],r=n[t][e][1]);var h=i.tooltipUtil.getAllMarkers();if(h!==null)for(var c=0;c0?(h[c]&&h[c].setAttribute("r",o),h[c]&&h[c].setAttribute("cy",u)):h[c]&&h[c].setAttribute("r",0)}}this.moveXCrosshairs(s),i.fixedTooltip||this.moveTooltip(s,r||a.globals.gridHeight,o)}},{key:"moveStickyTooltipOverBars",value:function(e,t){var i=this.w,a=this.ttCtx,s=i.globals.columnSeries?i.globals.columnSeries.length:i.globals.series.length,r=s>=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1;i.globals.isBarHorizontal&&(r=new $(this.ctx).getActiveConfigSeriesIndex("desc")+1);var n=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(r,"'] path[j='").concat(e,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(e,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(e,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(e,"']"));n||typeof t!="number"||(n=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[data\\:realIndex='".concat(t,"'] path[j='").concat(e,`'], - .apexcharts-candlestick-series .apexcharts-series[data\\:realIndex='`).concat(t,"'] path[j='").concat(e,`'], - .apexcharts-boxPlot-series .apexcharts-series[data\\:realIndex='`).concat(t,"'] path[j='").concat(e,`'], - .apexcharts-rangebar-series .apexcharts-series[data\\:realIndex='`).concat(t,"'] path[j='").concat(e,"']")));var o=n?parseFloat(n.getAttribute("cx")):0,h=n?parseFloat(n.getAttribute("cy")):0,c=n?parseFloat(n.getAttribute("barWidth")):0,d=a.getElGrid().getBoundingClientRect(),u=n&&(n.classList.contains("apexcharts-candlestick-area")||n.classList.contains("apexcharts-boxPlot-area"));i.globals.isXNumeric?(n&&!u&&(o-=s%2!=0?c/2:0),n&&u&&i.globals.comboCharts&&(o-=c/2)):i.globals.isBarHorizontal||(o=a.xAxisTicksPositions[e-1]+a.dataPointsDividedWidth/2,isNaN(o)&&(o=a.xAxisTicksPositions[e]-a.dataPointsDividedWidth/2)),i.globals.isBarHorizontal?h-=a.tooltipRect.ttHeight:i.config.tooltip.followCursor?h=a.e.clientY-d.top-a.tooltipRect.ttHeight/2:h+a.tooltipRect.ttHeight+15>i.globals.gridHeight&&(h=i.globals.gridHeight),i.globals.isBarHorizontal||this.moveXCrosshairs(o),a.fixedTooltip||this.moveTooltip(o,h||i.globals.gridHeight)}}]),m}(),Yt=function(){function m(e){F(this,m),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new tt(e)}return R(m,[{key:"drawDynamicPoints",value:function(){var e=this.w,t=new z(this.ctx),i=new fe(this.ctx),a=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series");a=Z(a),e.config.chart.stacked&&a.sort(function(d,u){return parseFloat(d.getAttribute("data:realIndex"))-parseFloat(u.getAttribute("data:realIndex"))});for(var s=0;s2&&arguments[2]!==void 0?arguments[2]:null,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=this.w;s.config.chart.type!=="bubble"&&this.newPointSize(e,t);var r=t.getAttribute("cx"),n=t.getAttribute("cy");if(i!==null&&a!==null&&(r=i,n=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if(s.config.chart.type==="radar"){var o=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-o.left}this.tooltipPosition.moveTooltip(r,n,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(e){for(var t=this.w,i=this,a=this.ttCtx,s=e,r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),n=t.config.markers.hover.size,o=0;o=0?e[t].setAttribute("r",i):e[t].setAttribute("r",0)}}}]),m}(),Ft=function(){function m(e){F(this,m),this.w=e.w;var t=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!t.globals.isBarHorizontal&&t.config.chart.type==="rangeBar"&&t.config.plotOptions.bar.rangeBarGroupRows}return R(m,[{key:"getAttr",value:function(e,t){return parseFloat(e.target.getAttribute(t))}},{key:"handleHeatTreeTooltip",value:function(e){var t=e.e,i=e.opt,a=e.x,s=e.y,r=e.type,n=this.ttCtx,o=this.w;if(t.target.classList.contains("apexcharts-".concat(r,"-rect"))){var h=this.getAttr(t,"i"),c=this.getAttr(t,"j"),d=this.getAttr(t,"cx"),u=this.getAttr(t,"cy"),p=this.getAttr(t,"width"),f=this.getAttr(t,"height");if(n.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:h,j:c,shared:!1,e:t}),o.globals.capturedSeriesIndex=h,o.globals.capturedDataPointIndex=c,a=d+n.tooltipRect.ttWidth/2+p,s=u+n.tooltipRect.ttHeight/2-f/2,n.tooltipPosition.moveXCrosshairs(d+p/2),a>o.globals.gridWidth/2&&(a=d-n.tooltipRect.ttWidth/2+p),n.w.config.tooltip.followCursor){var b=o.globals.dom.elWrap.getBoundingClientRect();a=o.globals.clientX-b.left-(a>o.globals.gridWidth/2?n.tooltipRect.ttWidth:0),s=o.globals.clientY-b.top-(s>o.globals.gridHeight/2?n.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(e){var t,i,a=e.e,s=e.opt,r=e.x,n=e.y,o=this.w,h=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var c=parseInt(s.paths.getAttribute("cx"),10),d=parseInt(s.paths.getAttribute("cy"),10),u=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),t=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,h.intersect){var p=P.findAncestor(s.paths,"apexcharts-series");p&&(t=parseInt(p.getAttribute("data:realIndex"),10))}if(h.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:t,j:i,shared:!h.showOnIntersect&&o.config.tooltip.shared,e:a}),a.type==="mouseup"&&h.markerClick(a,t,i),o.globals.capturedSeriesIndex=t,o.globals.capturedDataPointIndex=i,r=c,n=d+o.globals.translateY-1.4*h.tooltipRect.ttHeight,h.w.config.tooltip.followCursor){var f=h.getElGrid().getBoundingClientRect();n=h.e.clientY+o.globals.translateY-f.top}u<0&&(n=d),h.marker.enlargeCurrentPoint(i,s.paths,r,n)}return{x:r,y:n}}},{key:"handleBarTooltip",value:function(e){var t,i,a=e.e,s=e.opt,r=this.w,n=this.ttCtx,o=n.getElTooltip(),h=0,c=0,d=0,u=this.getBarTooltipXY({e:a,opt:s});t=u.i;var p=u.barHeight,f=u.j;r.globals.capturedSeriesIndex=t,r.globals.capturedDataPointIndex=f,r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||!r.config.tooltip.shared?(c=u.x,d=u.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[t]:r.config.stroke.width,h=c):r.globals.comboCharts||r.config.tooltip.shared||(h/=2),isNaN(d)&&(d=r.globals.svgHeight-n.tooltipRect.ttHeight);var b=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),v=r.globals.isMultipleYAxis?r.config.yaxis[b]&&r.config.yaxis[b].reversed:r.config.yaxis[0].reversed;if(c+n.tooltipRect.ttWidth>r.globals.gridWidth&&!v?c-=n.tooltipRect.ttWidth:c<0&&(c=0),n.w.config.tooltip.followCursor){var w=n.getElGrid().getBoundingClientRect();d=n.e.clientY-w.top}n.tooltip===null&&(n.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?n.tooltipPosition.moveXCrosshairs(h+i/2):n.tooltipPosition.moveXCrosshairs(h)),!n.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars())&&(v&&(c-=n.tooltipRect.ttWidth)<0&&(c=0),!v||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||(d=d+p-2*(r.globals.series[t][f]<0?p:0)),d=d+r.globals.translateY-n.tooltipRect.ttHeight/2,o.style.left=c+r.globals.translateX+"px",o.style.top=d+"px")}},{key:"getBarTooltipXY",value:function(e){var t=this,i=e.e,a=e.opt,s=this.w,r=null,n=this.ttCtx,o=0,h=0,c=0,d=0,u=0,p=i.target.classList;if(p.contains("apexcharts-bar-area")||p.contains("apexcharts-candlestick-area")||p.contains("apexcharts-boxPlot-area")||p.contains("apexcharts-rangebar-area")){var f=i.target,b=f.getBoundingClientRect(),v=a.elGrid.getBoundingClientRect(),w=b.height;u=b.height;var k=b.width,l=parseInt(f.getAttribute("cx"),10),g=parseInt(f.getAttribute("cy"),10);d=parseFloat(f.getAttribute("barWidth"));var x=i.type==="touchmove"?i.touches[0].clientX:i.clientX;r=parseInt(f.getAttribute("j"),10),o=parseInt(f.parentNode.getAttribute("rel"),10)-1;var y=f.getAttribute("data-range-y1"),A=f.getAttribute("data-range-y2");s.globals.comboCharts&&(o=parseInt(f.parentNode.getAttribute("data:realIndex"),10));var S=function(C){return s.globals.isXNumeric?l-k/2:t.isVerticalGroupedRangeBar?l+k/2:l-n.dataPointsDividedWidth+k/2},L=function(){return g-n.dataPointsDividedHeight+w/2-n.tooltipRect.ttHeight/2};n.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:o,j:r,y1:y?parseInt(y,10):null,y2:A?parseInt(A,10):null,shared:!n.showOnIntersect&&s.config.tooltip.shared,e:i}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(h=x-v.left+15,c=L()):(h=S(),c=i.clientY-v.top-n.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((h=l)0&&i.setAttribute("width",t.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var e=this.w,t=this.ttCtx;t.ycrosshairs=e.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),t.ycrosshairsHidden=e.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(e,t,i){var a=this.ttCtx,s=this.w,r=s.globals.yLabelFormatters[e];if(a.yaxisTooltips[e]){var n=a.getElGrid().getBoundingClientRect(),o=(t-n.top)*i.yRatio[e],h=s.globals.maxYArr[e]-s.globals.minYArr[e],c=s.globals.minYArr[e]+(h-o);a.tooltipPosition.moveYCrosshairs(t-n.top),a.yaxisTooltipText[e].innerHTML=r(c),a.tooltipPosition.moveYAxisTooltip(e)}}}]),m}(),Ne=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w;var t=this.w;this.tConfig=t.config.tooltip,this.tooltipUtil=new et(this),this.tooltipLabels=new Et(this),this.tooltipPosition=new tt(this),this.marker=new Yt(this),this.intersect=new Ft(this),this.axesTooltip=new Rt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!t.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return R(m,[{key:"getElTooltip",value:function(e){return e||(e=this),e.w.globals.dom.baseEl?e.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(e){var t=this.w;this.xyRatios=e,this.isXAxisTooltipEnabled=t.config.xaxis.tooltip.enabled&&t.globals.axisCharts,this.yaxisTooltips=t.config.yaxis.map(function(r,n){return!!(r.show&&r.tooltip.enabled&&t.globals.axisCharts)}),this.allTooltipSeriesGroups=[],t.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),t.config.tooltip.cssClass&&i.classList.add(t.config.tooltip.cssClass),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),t.globals.dom.elWrap.appendChild(i),t.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new de(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!t.globals.comboCharts&&!this.tConfig.intersect&&t.config.chart.type!=="rangeBar"||this.tConfig.shared||(this.showOnIntersect=!0),t.config.markers.size!==0&&t.globals.markers.largestSize!==0||this.marker.drawDynamicPoints(this),t.globals.collapsedSeries.length!==t.globals.series.length){this.dataPointsDividedHeight=t.globals.gridHeight/t.globals.dataPoints,this.dataPointsDividedWidth=t.globals.gridWidth/t.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||t.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=t.globals.series.length;(t.globals.xyCharts||t.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:t.globals.series.length),this.legendLabels=t.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(e){for(var t=this,i=this.w,a=[],s=this.getElTooltip(),r=function(o){var h=document.createElement("div");h.classList.add("apexcharts-tooltip-series-group"),h.style.order=i.config.tooltip.inverseOrder?e-o:o+1,t.tConfig.shared&&t.tConfig.enabledOnSeries&&Array.isArray(t.tConfig.enabledOnSeries)&&t.tConfig.enabledOnSeries.indexOf(o)<0&&h.classList.add("apexcharts-tooltip-series-group-hidden");var c=document.createElement("span");c.classList.add("apexcharts-tooltip-marker"),c.style.backgroundColor=i.globals.colors[o],h.appendChild(c);var d=document.createElement("div");d.classList.add("apexcharts-tooltip-text"),d.style.fontFamily=t.tConfig.style.fontFamily||i.config.chart.fontFamily,d.style.fontSize=t.tConfig.style.fontSize,["y","goals","z"].forEach(function(u){var p=document.createElement("div");p.classList.add("apexcharts-tooltip-".concat(u,"-group"));var f=document.createElement("span");f.classList.add("apexcharts-tooltip-text-".concat(u,"-label")),p.appendChild(f);var b=document.createElement("span");b.classList.add("apexcharts-tooltip-text-".concat(u,"-value")),p.appendChild(b),d.appendChild(p)}),h.appendChild(d),s.appendChild(h),a.push(h)},n=0;n0&&this.addPathsEventListeners(f,d),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(d)}}},{key:"drawFixedTooltipRect",value:function(){var e=this.w,t=this.getElTooltip(),i=t.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,n=this.tConfig.fixed.offsetY,o=this.tConfig.fixed.position.toLowerCase();return o.indexOf("right")>-1&&(r=r+e.globals.svgWidth-a+10),o.indexOf("bottom")>-1&&(n=n+e.globals.svgHeight-s-10),t.style.left=r+"px",t.style.top=n+"px",{x:r,y:n,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(e){var t=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(t,e)}},{key:"addPathsEventListeners",value:function(e,t){for(var i=this,a=function(r){var n={paths:e[r],tooltipEl:t.tooltipEl,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:t.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map(function(o){return e[r].addEventListener(o,i.onSeriesHover.bind(i,n),{capture:!1,passive:!0})})},s=0;s=100?this.seriesHover(e,t):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout(function(){i.seriesHover(e,t)},100-a))}},{key:"seriesHover",value:function(e,t){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||s.globals.dataPoints===0)||(a.length?a.forEach(function(r){var n=i.getElTooltip(r),o={paths:e.paths,tooltipEl:n,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:r.w.globals.tooltip.ttItems};r.w.globals.minX===i.w.globals.minX&&r.w.globals.maxX===i.w.globals.maxX&&r.w.globals.tooltip.seriesHoverByContext({chartCtx:r,ttCtx:r.w.globals.tooltip,opt:o,e:t})}):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:e,e:t}))}},{key:"seriesHoverByContext",value:function(e){var t=e.chartCtx,i=e.ttCtx,a=e.opt,s=e.e,r=t.w,n=this.getElTooltip();n&&(i.tooltipRect={x:0,y:0,ttWidth:n.getBoundingClientRect().width,ttHeight:n.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared&&this.tConfig.onDatasetHover.highlightDataSeries&&new $(t).toggleSeriesOnHover(s,s.target.parentNode),i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}))}},{key:"axisChartsTooltips",value:function(e){var t,i,a=e.e,s=e.opt,r=this.w,n=s.elGrid.getBoundingClientRect(),o=a.type==="touchmove"?a.touches[0].clientX:a.clientX,h=a.type==="touchmove"?a.touches[0].clientY:a.clientY;if(this.clientY=h,this.clientX=o,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,hn.top+n.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var c=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(c)<0)return void this.handleMouseOut(s)}var d=this.getElTooltip(),u=this.getElXCrosshairs(),p=r.globals.xyCharts||r.config.chart.type==="bar"&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if(a.type==="mousemove"||a.type==="touchmove"||a.type==="mouseup"){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;u!==null&&u.classList.add("apexcharts-active");var f=this.yaxisTooltips.filter(function(w){return w===!0});if(this.ycrosshairs!==null&&f.length&&this.ycrosshairs.classList.add("apexcharts-active"),p&&!this.showOnIntersect)this.handleStickyTooltip(a,o,h,s);else if(r.config.chart.type==="heatmap"||r.config.chart.type==="treemap"){var b=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:t,y:i,type:r.config.chart.type});t=b.x,i=b.y,d.style.left=t+"px",d.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:t,y:i});if(this.yaxisTooltips.length)for(var v=0;vh.width)this.handleMouseOut(a);else if(o!==null)this.handleStickyCapturedSeries(e,o,a,n);else if(this.tooltipUtil.isXoverlap(n)||s.globals.isBarHorizontal){var c=s.globals.series.findIndex(function(d,u){return!s.globals.collapsedSeriesIndices.includes(u)});this.create(e,this,c,n,a.ttItems)}}},{key:"handleStickyCapturedSeries",value:function(e,t,i,a){var s=this.w;if(!this.tConfig.shared&&s.globals.series[t][a]===null)return void this.handleMouseOut(i);if(s.globals.series[t][a]!==void 0)this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(e,this,t,a,i.ttItems):this.create(e,this,t,a,i.ttItems,!1);else if(this.tooltipUtil.isXoverlap(a)){var r=s.globals.series.findIndex(function(n,o){return!s.globals.collapsedSeriesIndices.includes(o)});this.create(e,this,r,a,i.ttItems)}}},{key:"deactivateHoverFilter",value:function(){for(var e=this.w,t=new z(this.ctx),i=e.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&arguments[5]!==void 0?arguments[5]:null,A=this.w,S=t;e.type==="mouseup"&&this.markerClick(e,i,a),y===null&&(y=this.tConfig.shared);var L=this.tooltipUtil.hasMarkers(i),C=this.tooltipUtil.getElBars();if(A.config.legend.tooltipHoverFormatter){var M=A.config.legend.tooltipHoverFormatter,T=Array.from(this.legendLabels);T.forEach(function(J){var te=J.getAttribute("data:default-text");J.innerHTML=decodeURIComponent(te)});for(var I=0;I0?S.marker.enlargePoints(a):S.tooltipPosition.moveDynamicPointsOnHover(a);else if(this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(C),this.barSeriesHeight>0)){var W=new z(this.ctx),N=A.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(a,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a,i);for(var B=0;B0&&a.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(f-=d*A)),y&&(f=f+p.height/2-l/2-2);var L=this.barCtx.series[s][r]<0,C=h;switch(this.barCtx.isReversed&&(C=h-u+(L?2*u:0),h-=u),w.position){case"center":b=y?L?C-u/2+x:C+u/2-x:L?C-u/2+p.height/2+x:C+u/2+p.height/2-x;break;case"bottom":b=y?L?C-u+x:C+u-x:L?C-u+p.height+l+x:C+u-p.height/2+l-x;break;case"top":b=y?L?C+x:C-x:L?C-p.height/2-x:C+p.height+x}if(this.barCtx.lastActiveBarSerieIndex===n&&k.enabled){var M=new z(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:n,j:r}),v.fontSize);t=L?C-M.height/2-x-k.offsetY+18:C+M.height+x+k.offsetY-18,i=f+k.offsetX}return a.config.chart.stacked||(b<0?b=0+l:b+p.height/3>a.globals.gridHeight&&(b=a.globals.gridHeight-l)),{bcx:c,bcy:h,dataLabelsX:f,dataLabelsY:b,totalDataLabelsX:i,totalDataLabelsY:t,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(e){var t=this.w,i=e.x,a=e.i,s=e.j,r=e.realIndex,n=e.groupIndex,o=e.bcy,h=e.barHeight,c=e.barWidth,d=e.textRects,u=e.dataLabelsX,p=e.strokeWidth,f=e.dataLabelsConfig,b=e.barDataLabelsConfig,v=e.barTotalDataLabelsConfig,w=e.offX,k=e.offY,l=t.globals.gridHeight/t.globals.dataPoints;c=Math.abs(c);var g,x,y=(o+=n!==-1?n*h:0)-(this.barCtx.isRangeBar?0:l)+h/2+d.height/2+k-3,A="start",S=this.barCtx.series[a][s]<0,L=i;switch(this.barCtx.isReversed&&(L=i+c-(S?2*c:0),i=t.globals.gridWidth-c),b.position){case"center":u=S?L+c/2-w:Math.max(d.width/2,L-c/2)+w;break;case"bottom":u=S?L+c-p-Math.round(d.width/2)-w:L-c+p+Math.round(d.width/2)+w;break;case"top":u=S?L-p+Math.round(d.width/2)-w:L-p-Math.round(d.width/2)+w}if(this.barCtx.lastActiveBarSerieIndex===r&&v.enabled){var C=new z(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),f.fontSize);S?(g=L-p+Math.round(C.width/2)-w-v.offsetX-15,A="end"):g=L-p-Math.round(C.width/2)+w+v.offsetX+15,x=y+v.offsetY}return t.config.chart.stacked||(u<0?u=u+d.width+p:u+d.width/2>t.globals.gridWidth&&(u=t.globals.gridWidth-d.width-p)),{bcx:i,bcy:o,dataLabelsX:u,dataLabelsY:y,totalDataLabelsX:g,totalDataLabelsY:x,totalDataLabelsAnchor:A}}},{key:"drawCalculatedDataLabels",value:function(e){var t=e.x,i=e.y,a=e.val,s=e.i,r=e.j,n=e.textRects,o=e.barHeight,h=e.barWidth,c=e.dataLabelsConfig,d=this.w,u="rotate(0)";d.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(u="rotate(-90, ".concat(t,", ").concat(i,")"));var p=new se(this.barCtx.ctx),f=new z(this.barCtx.ctx),b=c.formatter,v=null,w=d.globals.collapsedSeriesIndices.indexOf(s)>-1;if(c.enabled&&!w){v=f.group({class:"apexcharts-data-labels",transform:u});var k="";a!==void 0&&(k=b(a,E(E({},d),{},{seriesIndex:s,dataPointIndex:r,w:d}))),!a&&d.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(k="");var l=d.globals.series[s][r]<0,g=d.config.plotOptions.bar.dataLabels.position;d.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(g==="top"&&(c.textAnchor=l?"end":"start"),g==="center"&&(c.textAnchor="middle"),g==="bottom"&&(c.textAnchor=l?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels&&hMath.abs(h)&&(k=""):n.height/1.6>Math.abs(o)&&(k=""));var x=E({},c);this.barCtx.isHorizontal&&a<0&&(c.textAnchor==="start"?x.textAnchor="end":c.textAnchor==="end"&&(x.textAnchor="start")),p.plotDataLabelsText({x:t,y:i,text:k,i:s,j:r,parent:v,dataLabelsConfig:x,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return v}},{key:"drawTotalDataLabels",value:function(e){var t,i=e.x,a=e.y,s=e.val,r=e.realIndex,n=e.textAnchor,o=e.barTotalDataLabelsConfig,h=new z(this.barCtx.ctx);return o.enabled&&i!==void 0&&a!==void 0&&this.barCtx.lastActiveBarSerieIndex===r&&(t=h.drawText({x:i,y:a,foreColor:o.style.color,text:s,textAnchor:n,fontFamily:o.style.fontFamily,fontSize:o.style.fontSize,fontWeight:o.style.fontWeight})),t}}]),m}(),Dt=function(){function m(e){F(this,m),this.w=e.w,this.barCtx=e}return R(m,[{key:"initVariables",value:function(e){var t=this.w;this.barCtx.series=e,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=e[i].length),t.globals.isXNumeric)for(var a=0;at.globals.minX&&t.globals.seriesX[i][a]0&&(a=h.globals.minXDiff/u),(r=a/d*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}String(this.barCtx.barOptions.columnWidth).indexOf("%")===-1&&(r=parseInt(this.barCtx.barOptions.columnWidth,10)),n=h.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?h.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),e=h.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return{x:e,y:t,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:n,zeroW:o}}},{key:"initializeStackedPrevVars",value:function(e){var t=e.w;t.globals.hasSeriesGroups?t.globals.seriesGroups.forEach(function(i){e[i]||(e[i]={}),e[i].prevY=[],e[i].prevX=[],e[i].prevYF=[],e[i].prevXF=[],e[i].prevYVal=[],e[i].prevXVal=[]}):(e.prevY=[],e.prevX=[],e.prevYF=[],e.prevXF=[],e.prevYVal=[],e.prevXVal=[])}},{key:"initializeStackedXYVars",value:function(e){var t=e.w;t.globals.hasSeriesGroups?t.globals.seriesGroups.forEach(function(i){e[i]||(e[i]={}),e[i].xArrj=[],e[i].xArrjF=[],e[i].xArrjVal=[],e[i].yArrj=[],e[i].yArrjF=[],e[i].yArrjVal=[]}):(e.xArrj=[],e.xArrjF=[],e.xArrjVal=[],e.yArrj=[],e.yArrjF=[],e.yArrjVal=[])}},{key:"getPathFillColor",value:function(e,t,i,a){var s,r,n,o,h=this.w,c=new Q(this.barCtx.ctx),d=null,u=this.barCtx.barOptions.distributed?i:t;return this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map(function(p){e[t][i]>=p.from&&e[t][i]<=p.to&&(d=p.color)}),h.config.series[t].data[i]&&h.config.series[t].data[i].fillColor&&(d=h.config.series[t].data[i].fillColor),c.fillPath({seriesNumber:this.barCtx.barOptions.distributed?u:a,dataPointIndex:i,color:d,value:e[t][i],fillConfig:(s=h.config.series[t].data[i])===null||s===void 0?void 0:s.fill,fillType:(r=h.config.series[t].data[i])!==null&&r!==void 0&&(n=r.fill)!==null&&n!==void 0&&n.type?(o=h.config.series[t].data[i])===null||o===void 0?void 0:o.fill.type:h.config.fill.type})}},{key:"getStrokeWidth",value:function(e,t,i){var a=0,s=this.w;return this.barCtx.series[e][t]?this.barCtx.isNullValue=!1:this.barCtx.isNullValue=!0,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"shouldApplyRadius",value:function(e){var t=this.w,i=!1;return t.config.plotOptions.bar.borderRadius>0&&(t.config.chart.stacked&&t.config.plotOptions.bar.borderRadiusWhenStacked==="last"?this.barCtx.lastActiveBarSerieIndex===e&&(i=!0):i=!0),i}},{key:"barBackground",value:function(e){var t=e.j,i=e.i,a=e.x1,s=e.x2,r=e.y1,n=e.y2,o=e.elSeries,h=this.w,c=new z(this.barCtx.ctx),d=new $(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&d===i){t>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(t%=this.barCtx.barOptions.colors.backgroundBarColors.length);var u=this.barCtx.barOptions.colors.backgroundBarColors[t],p=c.drawRect(a!==void 0?a:0,r!==void 0?r:0,s!==void 0?s:h.globals.gridWidth,n!==void 0?n:h.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,u,this.barCtx.barOptions.colors.backgroundBarOpacity);o.add(p),p.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(e){var t,i=e.barWidth,a=e.barXPosition,s=e.y1,r=e.y2,n=e.strokeWidth,o=e.seriesGroup,h=e.realIndex,c=e.i,d=e.j,u=e.w,p=new z(this.barCtx.ctx);(n=Array.isArray(n)?n[h]:n)||(n=0);var f=i,b=a;(t=u.config.series[h].data[d])!==null&&t!==void 0&&t.columnWidthOffset&&(b=a-u.config.series[h].data[d].columnWidthOffset/2,f=i+u.config.series[h].data[d].columnWidthOffset);var v=b,w=b+f;s+=.001,r+=.001;var k=p.move(v,s),l=p.move(v,s),g=p.line(w-n,s);if(u.globals.previousPaths.length>0&&(l=this.barCtx.getPreviousPath(h,d,!1)),k=k+p.line(v,r)+p.line(w-n,r)+p.line(w-n,s)+(u.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),l=l+p.line(v,s)+g+g+g+g+g+p.line(v,s)+(u.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),this.shouldApplyRadius(h)&&(k=p.roundPathCorners(k,u.config.plotOptions.bar.borderRadius)),u.config.chart.stacked){var x=this.barCtx;u.globals.hasSeriesGroups&&o&&(x=this.barCtx[o]),x.yArrj.push(r),x.yArrjF.push(Math.abs(s-r)),x.yArrjVal.push(this.barCtx.series[c][d])}return{pathTo:k,pathFrom:l}}},{key:"getBarpaths",value:function(e){var t,i=e.barYPosition,a=e.barHeight,s=e.x1,r=e.x2,n=e.strokeWidth,o=e.seriesGroup,h=e.realIndex,c=e.i,d=e.j,u=e.w,p=new z(this.barCtx.ctx);(n=Array.isArray(n)?n[h]:n)||(n=0);var f=i,b=a;(t=u.config.series[h].data[d])!==null&&t!==void 0&&t.barHeightOffset&&(f=i-u.config.series[h].data[d].barHeightOffset/2,b=a+u.config.series[h].data[d].barHeightOffset);var v=f,w=f+b;s+=.001,r+=.001;var k=p.move(s,v),l=p.move(s,v);u.globals.previousPaths.length>0&&(l=this.barCtx.getPreviousPath(h,d,!1));var g=p.line(s,w-n);if(k=k+p.line(r,v)+p.line(r,w-n)+g+(u.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),l=l+p.line(s,v)+g+g+g+g+g+p.line(s,v)+(u.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),this.shouldApplyRadius(h)&&(k=p.roundPathCorners(k,u.config.plotOptions.bar.borderRadius)),u.config.chart.stacked){var x=this.barCtx;u.globals.hasSeriesGroups&&o&&(x=this.barCtx[o]),x.xArrj.push(r),x.xArrjF.push(Math.abs(s-r)),x.xArrjVal.push(this.barCtx.series[c][d])}return{pathTo:k,pathFrom:l}}},{key:"checkZeroSeries",value:function(e){for(var t=e.series,i=this.w,a=0;a2&&arguments[2]!==void 0)||arguments[2]?t:null;return e!=null&&(i=t+e/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?e/this.barCtx.invertedYRatio:0)),i}},{key:"getYForValue",value:function(e,t){var i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2]?t:null;return e!=null&&(i=t-e/this.barCtx.yRatio[this.barCtx.yaxisIndex]+2*(this.barCtx.isReversed?e/this.barCtx.yRatio[this.barCtx.yaxisIndex]:0)),i}},{key:"getGoalValues",value:function(e,t,i,a,s){var r=this,n=this.w,o=[],h=function(u,p){var f;o.push((ee(f={},e,e==="x"?r.getXForValue(u,t,!1):r.getYForValue(u,i,!1)),ee(f,"attrs",p),f))};if(n.globals.seriesGoals[a]&&n.globals.seriesGoals[a][s]&&Array.isArray(n.globals.seriesGoals[a][s])&&n.globals.seriesGoals[a][s].forEach(function(u){h(u.value,u)}),this.barCtx.barOptions.isDumbbell&&n.globals.seriesRange.length){var c=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:n.globals.colors,d={strokeHeight:e==="x"?0:n.globals.markers.size[a],strokeWidth:e==="x"?n.globals.markers.size[a]:0,strokeDashArray:0,strokeLineCap:"round",strokeColor:Array.isArray(c[a])?c[a][0]:c[a]};h(n.globals.seriesRangeStart[a][s],d),h(n.globals.seriesRangeEnd[a][s],E(E({},d),{},{strokeColor:Array.isArray(c[a])?c[a][1]:c[a]}))}return o}},{key:"drawGoalLine",value:function(e){var t=e.barXPosition,i=e.barYPosition,a=e.goalX,s=e.goalY,r=e.barWidth,n=e.barHeight,o=new z(this.barCtx.ctx),h=o.group({className:"apexcharts-bar-goals-groups"});h.node.classList.add("apexcharts-element-hidden"),this.barCtx.w.globals.delayedElements.push({el:h.node}),h.attr("clip-path","url(#gridRectMarkerMask".concat(this.barCtx.w.globals.cuid,")"));var c=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach(function(d){var u=d.attrs.strokeHeight!==void 0?d.attrs.strokeHeight:n/2,p=i+u+n/2;c=o.drawLine(d.x,p-2*u,d.x,p,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeWidth?d.attrs.strokeWidth:2,d.attrs.strokeLineCap),h.add(c)}):Array.isArray(s)&&s.forEach(function(d){var u=d.attrs.strokeWidth!==void 0?d.attrs.strokeWidth:r/2,p=t+u+r/2;c=o.drawLine(p-2*u,d.y,p,d.y,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeHeight?d.attrs.strokeHeight:2,d.attrs.strokeLineCap),h.add(c)}),h}},{key:"drawBarShadow",value:function(e){var t=e.prevPaths,i=e.currPaths,a=e.color,s=this.w,r=t.x,n=t.x1,o=t.barYPosition,h=i.x,c=i.x1,d=i.barYPosition,u=o+i.barHeight,p=new z(this.barCtx.ctx),f=new P,b=p.move(n,u)+p.line(r,u)+p.line(h,d)+p.line(c,d)+p.line(n,u)+(s.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z");return p.drawPath({d:b,fill:f.shadeColor(.5,P.rgb2hex(a)),stroke:"none",strokeWidth:0,fillOpacity:1,classes:"apexcharts-bar-shadows"})}},{key:"getZeroValueEncounters",value:function(e){var t=e.i,i=e.j,a=this.w,s=0,r=0;return a.globals.seriesPercent.forEach(function(n,o){n[i]&&s++,othis.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts");for(var n=0,o=0;n0&&(this.visibleI=this.visibleI+1);var l=0,g=0;this.yRatio.length>1&&(this.yaxisIndex=w),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var x=this.barHelpers.initialPositions();f=x.y,l=x.barHeight,c=x.yDivision,u=x.zeroW,p=x.x,g=x.barWidth,h=x.xDivision,d=x.zeroH,this.horizontal||v.push(p+g/2);var y=a.group({class:"apexcharts-datalabels","data:realIndex":w});i.globals.delayedElements.push({el:y.node}),y.node.classList.add("apexcharts-element-hidden");var A=a.group({class:"apexcharts-bar-goals-markers"}),S=a.group({class:"apexcharts-bar-shadows"});i.globals.delayedElements.push({el:S.node}),S.node.classList.add("apexcharts-element-hidden");for(var L=0;L0){var X=this.barHelpers.drawBarShadow({color:typeof I=="string"&&I?.indexOf("url")===-1?I:P.hexToRgba(i.globals.colors[n]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:M});X&&S.add(X)}this.pathArr.push(M);var Y=this.barHelpers.drawGoalLine({barXPosition:M.barXPosition,barYPosition:M.barYPosition,goalX:M.goalX,goalY:M.goalY,barHeight:l,barWidth:g});Y&&A.add(Y),f=M.y,p=M.x,L>0&&v.push(p+g/2),b.push(f),this.renderSeries({realIndex:w,pathFill:I,j:L,i:n,pathFrom:M.pathFrom,pathTo:M.pathTo,strokeWidth:C,elSeries:k,x:p,y:f,series:e,barHeight:M.barHeight?M.barHeight:l,barWidth:M.barWidth?M.barWidth:g,elDataLabelsWrap:y,elGoalsMarkers:A,elBarShadows:S,visibleSeries:this.visibleI,type:"bar"})}i.globals.seriesXvalues[w]=v,i.globals.seriesYvalues[w]=b,r.add(k)}return r}},{key:"renderSeries",value:function(e){var t=e.realIndex,i=e.pathFill,a=e.lineFill,s=e.j,r=e.i,n=e.groupIndex,o=e.pathFrom,h=e.pathTo,c=e.strokeWidth,d=e.elSeries,u=e.x,p=e.y,f=e.y1,b=e.y2,v=e.series,w=e.barHeight,k=e.barWidth,l=e.barXPosition,g=e.barYPosition,x=e.elDataLabelsWrap,y=e.elGoalsMarkers,A=e.elBarShadows,S=e.visibleSeries,L=e.type,C=this.w,M=new z(this.ctx);a||(a=this.barOptions.distributed?C.globals.stroke.colors[s]:C.globals.stroke.colors[t]),C.config.series[r].data[s]&&C.config.series[r].data[s].strokeColor&&(a=C.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var T=s/C.config.chart.animations.animateGradually.delay*(C.config.chart.animations.speed/C.globals.dataPoints)/2.4,I=M.renderPaths({i:r,j:s,realIndex:t,pathFrom:o,pathTo:h,stroke:a,strokeWidth:c,strokeLineCap:C.config.stroke.lineCap,fill:i,animationDelay:T,initialSpeed:C.config.chart.animations.speed,dataChangeSpeed:C.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(L,"-area")});I.attr("clip-path","url(#gridRectMask".concat(C.globals.cuid,")"));var X=C.config.forecastDataPoints;X.count>0&&s>=C.globals.dataPoints-X.count&&(I.node.setAttribute("stroke-dasharray",X.dashArray),I.node.setAttribute("stroke-width",X.strokeWidth),I.node.setAttribute("fill-opacity",X.fillOpacity)),f!==void 0&&b!==void 0&&(I.attr("data-range-y1",f),I.attr("data-range-y2",b)),new U(this.ctx).setSelectionFilter(I,t,s),d.add(I);var Y=new Ht(this).handleBarDataLabels({x:u,y:p,y1:f,y2:b,i:r,j:s,series:v,realIndex:t,groupIndex:n,barHeight:w,barWidth:k,barXPosition:l,barYPosition:g,renderedPath:I,visibleSeries:S});return Y.dataLabels!==null&&x.add(Y.dataLabels),Y.totalDataLabels&&x.add(Y.totalDataLabels),d.add(x),y&&d.add(y),A&&d.add(A),d}},{key:"drawBarPaths",value:function(e){var t,i=e.indexes,a=e.barHeight,s=e.strokeWidth,r=e.zeroW,n=e.x,o=e.y,h=e.yDivision,c=e.elSeries,d=this.w,u=i.i,p=i.j;if(d.globals.isXNumeric)t=(o=(d.globals.seriesX[u][p]-d.globals.minX)/this.invertedXRatio-a)+a*this.visibleI;else if(d.config.plotOptions.bar.hideZeroBarsWhenGrouped){var f=0,b=0;d.globals.seriesPercent.forEach(function(w,k){w[p]&&f++,k0&&(a=this.seriesLen*a/f),t=o+a*this.visibleI,t-=a*b}else t=o+a*this.visibleI;this.isFunnel&&(r-=(this.barHelpers.getXForValue(this.series[u][p],r)-r)/2),n=this.barHelpers.getXForValue(this.series[u][p],r);var v=this.barHelpers.getBarpaths({barYPosition:t,barHeight:a,x1:r,x2:n,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:u,j:p,w:d});return d.globals.isXNumeric||(o+=h),this.barHelpers.barBackground({j:p,i:u,y1:t-a*this.visibleI,y2:a*this.seriesLen,elSeries:c}),{pathTo:v.pathTo,pathFrom:v.pathFrom,x1:r,x:n,y:o,goalX:this.barHelpers.getGoalValues("x",r,null,u,p),barYPosition:t,barHeight:a}}},{key:"drawColumnPaths",value:function(e){var t,i=e.indexes,a=e.x,s=e.y,r=e.xDivision,n=e.barWidth,o=e.zeroH,h=e.strokeWidth,c=e.elSeries,d=this.w,u=i.realIndex,p=i.i,f=i.j,b=i.bc;if(d.globals.isXNumeric){var v=this.getBarXForNumericXAxis({x:a,j:f,realIndex:u,barWidth:n});a=v.x,t=v.barXPosition}else if(d.config.plotOptions.bar.hideZeroBarsWhenGrouped){var w=this.barHelpers.getZeroValueEncounters({i:p,j:f}),k=w.nonZeroColumns,l=w.zeroEncounters;k>0&&(n=this.seriesLen*n/k),t=a+n*this.visibleI,t-=n*l}else t=a+n*this.visibleI;s=this.barHelpers.getYForValue(this.series[p][f],o);var g=this.barHelpers.getColumnPaths({barXPosition:t,barWidth:n,y1:o,y2:s,strokeWidth:h,series:this.series,realIndex:i.realIndex,i:p,j:f,w:d});return d.globals.isXNumeric||(a+=r),this.barHelpers.barBackground({bc:b,j:f,i:p,x1:t-h/2-n*this.visibleI,x2:n*this.seriesLen+h/2,elSeries:c}),{pathTo:g.pathTo,pathFrom:g.pathFrom,x:a,y:s,goalY:this.barHelpers.getGoalValues("y",null,o,p,f),barXPosition:t,barWidth:n}}},{key:"getBarXForNumericXAxis",value:function(e){var t=e.x,i=e.barWidth,a=e.realIndex,s=e.j,r=this.w,n=a;return r.globals.seriesX[a].length||(n=r.globals.maxValsInArrayIndex),r.globals.seriesX[n][s]&&(t=(r.globals.seriesX[n][s]-r.globals.minX)/this.xRatio-i*this.seriesLen/2),{barXPosition:t+i*this.visibleI,x:t}}},{key:"getPreviousPath",value:function(e,t){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(e,10)&&a.globals.previousPaths[s].paths[t]!==void 0&&(i=a.globals.previousPaths[s].paths[t].d)}return i}}]),m}(),We=function(m){ge(t,ne);var e=ue(t);function t(){return F(this,t),e.apply(this,arguments)}return R(t,[{key:"draw",value:function(i,a){var s=this,r=this.w;this.graphics=new z(this.ctx),this.bar=new ne(this.ctx,this.xyRatios);var n=new G(this.ctx,r);i=n.getLogSeries(i),this.yRatio=n.getLogYRatios(this.yRatio),this.barHelpers.initVariables(i),r.config.chart.stackType==="100%"&&(i=r.globals.seriesPercent.slice()),this.series=i,this.barHelpers.initializeStackedPrevVars(this);for(var o=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),h=0,c=0,d=function(f,b){var v=void 0,w=void 0,k=void 0,l=void 0,g=-1;s.groupCtx=s,r.globals.seriesGroups.forEach(function(N,B){N.indexOf(r.config.series[f].name)>-1&&(g=B)}),g!==-1&&(s.groupCtx=s[r.globals.seriesGroups[g]]);var x=[],y=[],A=r.globals.comboCharts?a[f]:f;s.yRatio.length>1&&(s.yaxisIndex=A),s.isReversed=r.config.yaxis[s.yaxisIndex]&&r.config.yaxis[s.yaxisIndex].reversed;var S=s.graphics.group({class:"apexcharts-series",seriesName:P.escapeString(r.globals.seriesNames[A]),rel:f+1,"data:realIndex":A});s.ctx.series.addCollapsedClassToSeries(S,A);var L=s.graphics.group({class:"apexcharts-datalabels","data:realIndex":A}),C=s.graphics.group({class:"apexcharts-bar-goals-markers"}),M=0,T=0,I=s.initialPositions(h,c,v,w,k,l);c=I.y,M=I.barHeight,w=I.yDivision,l=I.zeroW,h=I.x,T=I.barWidth,v=I.xDivision,k=I.zeroH,s.barHelpers.initializeStackedXYVars(s),s.groupCtx.prevY.length===1&&s.groupCtx.prevY[0].every(function(N){return isNaN(N)})&&(s.groupCtx.prevY[0]=s.groupCtx.prevY[0].map(function(N){return k}),s.groupCtx.prevYF[0]=s.groupCtx.prevYF[0].map(function(N){return 0}));for(var X=0;X1?(s=p.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:u*parseInt(p.config.plotOptions.bar.columnWidth,10)/100,String(p.config.plotOptions.bar.columnWidth).indexOf("%")===-1&&(u=parseInt(p.config.plotOptions.bar.columnWidth,10)),n=p.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?p.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),i=p.globals.padHorizontal+(s-u)/2),{x:i,y:a,yDivision:r,xDivision:s,barHeight:(h=p.globals.seriesGroups)!==null&&h!==void 0&&h.length?d/p.globals.seriesGroups.length:d,barWidth:(c=p.globals.seriesGroups)!==null&&c!==void 0&&c.length?u/p.globals.seriesGroups.length:u,zeroH:n,zeroW:o}}},{key:"drawStackedBarPaths",value:function(i){for(var a,s=i.indexes,r=i.barHeight,n=i.strokeWidth,o=i.zeroW,h=i.x,c=i.y,d=i.groupIndex,u=i.seriesGroup,p=i.yDivision,f=i.elSeries,b=this.w,v=c+(d!==-1?d*r:0),w=s.i,k=s.j,l=0,g=0;g0){var y=o;this.groupCtx.prevXVal[x-1][k]<0?y=this.series[w][k]>=0?this.groupCtx.prevX[x-1][k]+l-2*(this.isReversed?l:0):this.groupCtx.prevX[x-1][k]:this.groupCtx.prevXVal[x-1][k]>=0&&(y=this.series[w][k]>=0?this.groupCtx.prevX[x-1][k]:this.groupCtx.prevX[x-1][k]-l+2*(this.isReversed?l:0)),a=y}else a=o;h=this.series[w][k]===null?a:a+this.series[w][k]/this.invertedYRatio-2*(this.isReversed?this.series[w][k]/this.invertedYRatio:0);var A=this.barHelpers.getBarpaths({barYPosition:v,barHeight:r,x1:a,x2:h,strokeWidth:n,series:this.series,realIndex:s.realIndex,seriesGroup:u,i:w,j:k,w:b});return this.barHelpers.barBackground({j:k,i:w,y1:v,y2:r,elSeries:f}),c+=p,{pathTo:A.pathTo,pathFrom:A.pathFrom,goalX:this.barHelpers.getGoalValues("x",o,null,w,k),barYPosition:v,x:h,y:c}}},{key:"drawStackedColumnPaths",value:function(i){var a=i.indexes,s=i.x,r=i.y,n=i.xDivision,o=i.barWidth,h=i.zeroH,c=i.groupIndex,d=i.seriesGroup,u=i.elSeries,p=this.w,f=a.i,b=a.j,v=a.bc;if(p.globals.isXNumeric){var w=p.globals.seriesX[f][b];w||(w=0),s=(w-p.globals.minX)/this.xRatio-o/2,p.globals.seriesGroups.length&&(s=(w-p.globals.minX)/this.xRatio-o/2*p.globals.seriesGroups.length)}for(var k,l=s+(c!==-1?c*o:0),g=0,x=0;x0&&!p.globals.isXNumeric||y>0&&p.globals.isXNumeric&&p.globals.seriesX[f-1][b]===p.globals.seriesX[f][b]){var A,S,L,C=Math.min(this.yRatio.length+1,f+1);if(this.groupCtx.prevY[y-1]!==void 0&&this.groupCtx.prevY[y-1].length)for(var M=1;M=0?L-g+2*(this.isReversed?g:0):L;break}if(((Y=this.groupCtx.prevYVal[y-I])===null||Y===void 0?void 0:Y[b])>=0){S=this.series[f][b]>=0?L:L+g-2*(this.isReversed?g:0);break}}S===void 0&&(S=p.globals.gridHeight),k=(A=this.groupCtx.prevYF[0])!==null&&A!==void 0&&A.every(function(D){return D===0})&&this.groupCtx.prevYF.slice(1,y).every(function(D){return D.every(function(O){return isNaN(O)})})?h:S}else k=h;r=this.series[f][b]?k-this.series[f][b]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[f][b]/this.yRatio[this.yaxisIndex]:0):k;var H=this.barHelpers.getColumnPaths({barXPosition:l,barWidth:o,y1:k,y2:r,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,seriesGroup:d,realIndex:a.realIndex,i:f,j:b,w:p});return this.barHelpers.barBackground({bc:v,j:b,i:f,x1:l,x2:o,elSeries:u}),s+=n,{pathTo:H.pathTo,pathFrom:H.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,h,f,b),barXPosition:l,x:p.globals.isXNumeric?s-n:s,y:r}}}]),t}(),Ce=function(m){ge(t,ne);var e=ue(t);function t(){return F(this,t),e.apply(this,arguments)}return R(t,[{key:"draw",value:function(i,a,s){var r=this,n=this.w,o=new z(this.ctx),h=n.globals.comboCharts?a:n.config.chart.type,c=new Q(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=n.config.plotOptions.bar.horizontal;var d=new G(this.ctx,n);i=d.getLogSeries(i),this.series=i,this.yRatio=d.getLogYRatios(this.yRatio),this.barHelpers.initVariables(i);for(var u=o.group({class:"apexcharts-".concat(h,"-series apexcharts-plot-series")}),p=function(b){r.isBoxPlot=n.config.chart.type==="boxPlot"||n.config.series[b].type==="boxPlot";var v,w,k,l,g=void 0,x=void 0,y=[],A=[],S=n.globals.comboCharts?s[b]:b,L=o.group({class:"apexcharts-series",seriesName:P.escapeString(n.globals.seriesNames[S]),rel:b+1,"data:realIndex":S});r.ctx.series.addCollapsedClassToSeries(L,S),i[b].length>0&&(r.visibleI=r.visibleI+1);var C,M;r.yRatio.length>1&&(r.yaxisIndex=S);var T=r.barHelpers.initialPositions();x=T.y,C=T.barHeight,w=T.yDivision,l=T.zeroW,g=T.x,M=T.barWidth,v=T.xDivision,k=T.zeroH,A.push(g+M/2);for(var I=o.group({class:"apexcharts-datalabels","data:realIndex":S}),X=function(H){var D=r.barHelpers.getStrokeWidth(b,H,S),O=null,W={indexes:{i:b,j:H,realIndex:S},x:g,y:x,strokeWidth:D,elSeries:L};O=r.isHorizontal?r.drawHorizontalBoxPaths(E(E({},W),{},{yDivision:w,barHeight:C,zeroW:l})):r.drawVerticalBoxPaths(E(E({},W),{},{xDivision:v,barWidth:M,zeroH:k})),x=O.y,g=O.x,H>0&&A.push(g+M/2),y.push(x),O.pathTo.forEach(function(N,B){var J=!r.isBoxPlot&&r.candlestickOptions.wick.useFillColor?O.color[B]:n.globals.stroke.colors[b],te=c.fillPath({seriesNumber:S,dataPointIndex:H,color:O.color[B],value:i[b][H]});r.renderSeries({realIndex:S,pathFill:te,lineFill:J,j:H,i:b,pathFrom:O.pathFrom,pathTo:N,strokeWidth:D,elSeries:L,x:g,y:x,series:i,barHeight:C,barWidth:M,elDataLabelsWrap:I,visibleSeries:r.visibleI,type:n.config.chart.type})})},Y=0;Yg.c&&(f=!1);var A=Math.min(g.o,g.c),S=Math.max(g.o,g.c),L=g.m;c.globals.isXNumeric&&(s=(c.globals.seriesX[l][p]-c.globals.minX)/this.xRatio-n/2);var C=s+n*this.visibleI;this.series[u][p]===void 0||this.series[u][p]===null?(A=o,S=o):(A=o-A/k,S=o-S/k,x=o-g.h/k,y=o-g.l/k,L=o-g.m/k);var M=d.move(C,o),T=d.move(C+n/2,A);return c.globals.previousPaths.length>0&&(T=this.getPreviousPath(l,p,!0)),M=this.isBoxPlot?[d.move(C,A)+d.line(C+n/2,A)+d.line(C+n/2,x)+d.line(C+n/4,x)+d.line(C+n-n/4,x)+d.line(C+n/2,x)+d.line(C+n/2,A)+d.line(C+n,A)+d.line(C+n,L)+d.line(C,L)+d.line(C,A+h/2),d.move(C,L)+d.line(C+n,L)+d.line(C+n,S)+d.line(C+n/2,S)+d.line(C+n/2,y)+d.line(C+n-n/4,y)+d.line(C+n/4,y)+d.line(C+n/2,y)+d.line(C+n/2,S)+d.line(C,S)+d.line(C,L)+"z"]:[d.move(C,S)+d.line(C+n/2,S)+d.line(C+n/2,x)+d.line(C+n/2,S)+d.line(C+n,S)+d.line(C+n,A)+d.line(C+n/2,A)+d.line(C+n/2,y)+d.line(C+n/2,A)+d.line(C,A)+d.line(C,S-h/2)],T+=d.move(C,A),c.globals.isXNumeric||(s+=r),{pathTo:M,pathFrom:T,x:s,y:S,barXPosition:C,color:this.isBoxPlot?w:f?[b]:[v]}}},{key:"drawHorizontalBoxPaths",value:function(i){var a=i.indexes;i.x;var s=i.y,r=i.yDivision,n=i.barHeight,o=i.zeroW,h=i.strokeWidth,c=this.w,d=new z(this.ctx),u=a.i,p=a.j,f=this.boxOptions.colors.lower;this.isBoxPlot&&(f=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var b=this.invertedYRatio,v=a.realIndex,w=this.getOHLCValue(v,p),k=o,l=o,g=Math.min(w.o,w.c),x=Math.max(w.o,w.c),y=w.m;c.globals.isXNumeric&&(s=(c.globals.seriesX[v][p]-c.globals.minX)/this.invertedXRatio-n/2);var A=s+n*this.visibleI;this.series[u][p]===void 0||this.series[u][p]===null?(g=o,x=o):(g=o+g/b,x=o+x/b,k=o+w.h/b,l=o+w.l/b,y=o+w.m/b);var S=d.move(o,A),L=d.move(g,A+n/2);return c.globals.previousPaths.length>0&&(L=this.getPreviousPath(v,p,!0)),S=[d.move(g,A)+d.line(g,A+n/2)+d.line(k,A+n/2)+d.line(k,A+n/2-n/4)+d.line(k,A+n/2+n/4)+d.line(k,A+n/2)+d.line(g,A+n/2)+d.line(g,A+n)+d.line(y,A+n)+d.line(y,A)+d.line(g+h/2,A),d.move(y,A)+d.line(y,A+n)+d.line(x,A+n)+d.line(x,A+n/2)+d.line(l,A+n/2)+d.line(l,A+n-n/4)+d.line(l,A+n/4)+d.line(l,A+n/2)+d.line(x,A+n/2)+d.line(x,A)+d.line(y,A)+"z"],L+=d.move(g,A),c.globals.isXNumeric||(s+=r),{pathTo:S,pathFrom:L,x,y:s,barYPosition:A,color:f}}},{key:"getOHLCValue",value:function(i,a){var s=this.w;return{o:this.isBoxPlot?s.globals.seriesCandleH[i][a]:s.globals.seriesCandleO[i][a],h:this.isBoxPlot?s.globals.seriesCandleO[i][a]:s.globals.seriesCandleH[i][a],m:s.globals.seriesCandleM[i][a],l:this.isBoxPlot?s.globals.seriesCandleC[i][a]:s.globals.seriesCandleL[i][a],c:this.isBoxPlot?s.globals.seriesCandleL[i][a]:s.globals.seriesCandleC[i][a]}}}]),t}(),it=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"checkColorRange",value:function(){var e=this.w,t=!1,i=e.config.plotOptions[e.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map(function(a,s){a.from<=0&&(t=!0)}),t}},{key:"getShadeColor",value:function(e,t,i,a){var s=this.w,r=1,n=s.config.plotOptions[e].shadeIntensity,o=this.determineColor(e,t,i);s.globals.hasNegs||a?r=s.config.plotOptions[e].reverseNegativeShade?o.percent<0?o.percent/100*(1.25*n):(1-o.percent/100)*(1.25*n):o.percent<=0?1-(1+o.percent/100)*n:(1-o.percent/100)*n:(r=1-o.percent/100,e==="treemap"&&(r=(1-o.percent/100)*(1.25*n)));var h=o.color,c=new P;return s.config.plotOptions[e].enableShades&&(h=this.w.config.theme.mode==="dark"?P.hexToRgba(c.shadeColor(-1*r,o.color),s.config.fill.opacity):P.hexToRgba(c.shadeColor(r,o.color),s.config.fill.opacity)),{color:h,colorProps:o}}},{key:"determineColor",value:function(e,t,i){var a=this.w,s=a.globals.series[t][i],r=a.config.plotOptions[e],n=r.colorScale.inverse?i:t;r.distributed&&a.config.chart.type==="treemap"&&(n=i);var o=a.globals.colors[n],h=null,c=Math.min.apply(Math,Z(a.globals.series[t])),d=Math.max.apply(Math,Z(a.globals.series[t]));r.distributed||e!=="heatmap"||(c=a.globals.minY,d=a.globals.maxY),r.colorScale.min!==void 0&&(c=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var u=Math.abs(d)+Math.abs(c),p=100*s/(u===0?u-1e-6:u);return r.colorScale.ranges.length>0&&r.colorScale.ranges.map(function(f,b){if(s>=f.from&&s<=f.to){o=f.color,h=f.foreColor?f.foreColor:null,c=f.from,d=f.to;var v=Math.abs(d)+Math.abs(c);p=100*s/(v===0?v-1e-6:v)}}),{color:o,foreColor:h,percent:p}}},{key:"calculateDataLabels",value:function(e){var t=e.text,i=e.x,a=e.y,s=e.i,r=e.j,n=e.colorProps,o=e.fontSize,h=this.w.config.dataLabels,c=new z(this.ctx),d=new se(this.ctx),u=null;if(h.enabled){u=c.group({class:"apexcharts-data-labels"});var p=h.offsetX,f=h.offsetY,b=i+p,v=a+parseFloat(h.style.fontSize)/3+f;d.plotDataLabelsText({x:b,y:v,text:t,i:s,j:r,color:n.foreColor,parent:u,fontSize:o,dataLabelsConfig:h})}return u}},{key:"addListeners",value:function(e){var t=new z(this.ctx);e.node.addEventListener("mouseenter",t.pathMouseEnter.bind(this,e)),e.node.addEventListener("mouseleave",t.pathMouseLeave.bind(this,e)),e.node.addEventListener("mousedown",t.pathMouseDown.bind(this,e))}}]),m}(),Ot=function(){function m(e,t){F(this,m),this.ctx=e,this.w=e.w,this.xRatio=t.xRatio,this.yRatio=t.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new it(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return R(m,[{key:"draw",value:function(e){var t=this.w,i=new z(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(t.globals.cuid,")"));var s=t.globals.gridWidth/t.globals.dataPoints,r=t.globals.gridHeight/t.globals.series.length,n=0,o=!1;this.negRange=this.helpers.checkColorRange();var h=e.slice();t.config.yaxis[0].reversed&&(o=!0,h.reverse());for(var c=o?0:h.length-1;o?c=0;o?c++:c--){var d=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:P.escapeString(t.globals.seriesNames[c]),rel:c+1,"data:realIndex":c});if(this.ctx.series.addCollapsedClassToSeries(d,c),t.config.chart.dropShadow.enabled){var u=t.config.chart.dropShadow;new U(this.ctx).dropShadow(d,u,c)}for(var p=0,f=t.config.plotOptions.heatmap.shadeIntensity,b=0;b-1&&this.pieClicked(u),i.config.dataLabels.enabled){var x=l.x,y=l.y,A=100*f/this.fullAngle+"%";if(f!==0&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?t.endAngle=t.endAngle-(a+n):a+n=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(o=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(o)>this.fullAngle&&(o-=this.fullAngle);var h=Math.PI*(o-90)/180,c=t.centerX+s*Math.cos(n),d=t.centerY+s*Math.sin(n),u=t.centerX+s*Math.cos(h),p=t.centerY+s*Math.sin(h),f=P.polarToCartesian(t.centerX,t.centerY,t.donutSize,o),b=P.polarToCartesian(t.centerX,t.centerY,t.donutSize,r),v=a>180?1:0,w=["M",c,d,"A",s,s,0,v,1,u,p];return t.chartType==="donut"?[].concat(w,["L",f.x,f.y,"A",t.donutSize,t.donutSize,0,v,0,b.x,b.y,"L",c,d,"z"]).join(" "):t.chartType==="pie"||t.chartType==="polarArea"?[].concat(w,["L",t.centerX,t.centerY,"L",c,d]).join(" "):[].concat(w).join(" ")}},{key:"drawPolarElements",value:function(e){var t=this.w,i=new re(this.ctx),a=new z(this.ctx),s=new at(this.ctx),r=a.group(),n=a.group(),o=i.niceScale(0,Math.ceil(this.maxY),t.config.yaxis[0].tickAmount,0,!0),h=o.result.reverse(),c=o.result.length;this.maxY=o.niceMax;for(var d=t.globals.radialSize,u=d/(c-1),p=0;p1&&e.total.show&&(s=e.total.color);var n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,e.value.formatter)(i,r),a||typeof e.total.formatter!="function"||(i=e.total.formatter(r));var h=t===e.total.label;t=e.name.formatter(t,h,r),n!==null&&(n.textContent=t),o!==null&&(o.textContent=i),n!==null&&(n.style.fill=s)}},{key:"printDataLabelsInner",value:function(e,t){var i=this.w,a=e.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(e.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(t,s,a,e);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");r!==null&&(r.style.opacity=1)}},{key:"drawSpokes",value:function(e){var t=this,i=this.w,a=new z(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(s.strokeWidth!==0){for(var r=[],n=360/i.globals.series.length,o=0;o1)n&&!t.total.showAlways?h({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(t,t.total.label,t.total.formatter(s));else if(h({makeSliceOut:!1,printLabel:!0}),!n)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var c=s.globals.selectedDataPoints[0],d=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(c));this.printDataLabelsInner(d,t)}else r&&s.globals.selectedDataPoints.length&&s.globals.selectedDataPoints[0].length===0&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}]),m}(),Nt=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var t=this.w;this.graphics=new z(this.ctx),this.lineColorArr=t.globals.stroke.colors!==void 0?t.globals.stroke.colors:t.globals.colors,this.defaultSize=t.globals.svgHeight0&&(y=t.getPreviousPath(w));for(var A=0;A=10?e.x>0?(i="start",a+=10):e.x<0&&(i="end",a-=10):i="middle",Math.abs(e.y)>=t-10&&(e.y<0?s-=10:e.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(e){for(var t=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(e,10)&&t.globals.previousPaths[a].paths[0]!==void 0&&(i=t.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.dataPointsLen;e=e||[],t=t||[];for(var a=[],s=0;s=360&&(b=360-Math.abs(this.startAngle)-.1);var v=s.drawPath({d:"",stroke:p,strokeWidth:h*parseInt(u.strokeWidth,10)/100,fill:"none",strokeOpacity:u.opacity,classes:"apexcharts-radialbar-area"});if(u.dropShadow.enabled){var w=u.dropShadow;n.dropShadow(v,w)}d.add(v),v.attr("id","apexcharts-radialbarTrack-"+c),this.animatePaths(v,{centerX:i.centerX,centerY:i.centerY,endAngle:b,startAngle:f,size:i.size,i:c,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:a.globals.easing})}return r}},{key:"drawArcs",value:function(i){var a=this.w,s=new z(this.ctx),r=new Q(this.ctx),n=new U(this.ctx),o=s.group(),h=this.getStrokeWidth(i);i.size=i.size-h/2;var c=a.config.plotOptions.radialBar.hollow.background,d=i.size-h*i.series.length-this.margin*i.series.length-h*parseInt(a.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,u=d-a.config.plotOptions.radialBar.hollow.margin;a.config.plotOptions.radialBar.hollow.image!==void 0&&(c=this.drawHollowImage(i,o,d,c));var p=this.drawHollow({size:u,centerX:i.centerX,centerY:i.centerY,fill:c||"transparent"});if(a.config.plotOptions.radialBar.hollow.dropShadow.enabled){var f=a.config.plotOptions.radialBar.hollow.dropShadow;n.dropShadow(p,f)}var b=1;!this.radialDataLabels.total.show&&a.globals.series.length>1&&(b=0);var v=null;this.radialDataLabels.show&&(v=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:d,centerX:i.centerX,centerY:i.centerY,opacity:b})),a.config.plotOptions.radialBar.hollow.position==="back"&&(o.add(p),v&&o.add(v));var w=!1;a.config.plotOptions.radialBar.inverseOrder&&(w=!0);for(var k=w?i.series.length-1:0;w?k>=0:k100?100:i.series[k])/100,S=Math.round(this.totalAngle*A)+this.startAngle,L=void 0;a.globals.dataChanged&&(y=this.startAngle,L=Math.round(this.totalAngle*P.negToZero(a.globals.previousPaths[k])/100)+y),Math.abs(S)+Math.abs(x)>=360&&(S-=.01),Math.abs(L)+Math.abs(y)>=360&&(L-=.01);var C=S-x,M=Array.isArray(a.config.stroke.dashArray)?a.config.stroke.dashArray[k]:a.config.stroke.dashArray,T=s.drawPath({d:"",stroke:g,strokeWidth:h,fill:"none",fillOpacity:a.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+k,strokeDashArray:M});if(z.setAttrs(T.node,{"data:angle":C,"data:value":i.series[k]}),a.config.chart.dropShadow.enabled){var I=a.config.chart.dropShadow;n.dropShadow(T,I,k)}n.setSelectionFilter(T,0,k),this.addListeners(T,this.radialDataLabels),l.add(T),T.attr({index:0,j:k});var X=0;!this.initialAnim||a.globals.resized||a.globals.dataChanged||(X=a.config.chart.animations.speed),a.globals.dataChanged&&(X=a.config.chart.animations.dynamicAnimation.speed),this.animDur=X/(1.2*i.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(T,{centerX:i.centerX,centerY:i.centerY,endAngle:S,startAngle:x,prevEndAngle:L,prevStartAngle:y,size:i.size,i:k,totalItems:2,animBeginArr:this.animBeginArr,dur:X,shouldSetPrevPaths:!0,easing:a.globals.easing})}return{g:o,elHollow:p,dataLabels:v}}},{key:"drawHollow",value:function(i){var a=new z(this.ctx).drawCircle(2*i.size);return a.attr({class:"apexcharts-radialbar-hollow",cx:i.centerX,cy:i.centerY,r:i.size,fill:i.fill}),a}},{key:"drawHollowImage",value:function(i,a,s,r){var n=this.w,o=new Q(this.ctx),h=P.randomId(),c=n.config.plotOptions.radialBar.hollow.image;if(n.config.plotOptions.radialBar.hollow.imageClipped)o.clippedImgArea({width:s,height:s,image:c,patternID:"pattern".concat(n.globals.cuid).concat(h)}),r="url(#pattern".concat(n.globals.cuid).concat(h,")");else{var d=n.config.plotOptions.radialBar.hollow.imageWidth,u=n.config.plotOptions.radialBar.hollow.imageHeight;if(d===void 0&&u===void 0){var p=n.globals.dom.Paper.image(c).loaded(function(b){this.move(i.centerX-b.width/2+n.config.plotOptions.radialBar.hollow.imageOffsetX,i.centerY-b.height/2+n.config.plotOptions.radialBar.hollow.imageOffsetY)});a.add(p)}else{var f=n.globals.dom.Paper.image(c).loaded(function(b){this.move(i.centerX-d/2+n.config.plotOptions.radialBar.hollow.imageOffsetX,i.centerY-u/2+n.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(d,u)});a.add(f)}}return r}},{key:"getStrokeWidth",value:function(i){var a=this.w;return i.size*(100-parseInt(a.config.plotOptions.radialBar.hollow.size,10))/100/(i.series.length+1)-this.margin}}]),t}(),Bt=function(m){ge(t,ne);var e=ue(t);function t(){return F(this,t),e.apply(this,arguments)}return R(t,[{key:"draw",value:function(i,a){var s=this.w,r=new z(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=i,this.seriesRangeStart=s.globals.seriesRangeStart,this.seriesRangeEnd=s.globals.seriesRangeEnd,this.barHelpers.initVariables(i);for(var n=r.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),o=0;o0&&(this.visibleI=this.visibleI+1);var w=0,k=0;this.yRatio.length>1&&(this.yaxisIndex=b);var l=this.barHelpers.initialPositions();f=l.y,u=l.zeroW,p=l.x,k=l.barWidth,w=l.barHeight,h=l.xDivision,c=l.yDivision,d=l.zeroH;for(var g=r.group({class:"apexcharts-datalabels","data:realIndex":b}),x=r.group({class:"apexcharts-rangebar-goals-markers"}),y=0;y0});return this.isHorizontal?(r=b.config.plotOptions.bar.rangeBarGroupRows?o+u*g:o+c*this.visibleI+u*g,x>-1&&!b.config.plotOptions.bar.rangeBarOverlap&&(v=b.globals.seriesRange[a][x].overlaps).indexOf(w)>-1&&(r=(c=f.barHeight/v.length)*this.visibleI+u*(100-parseInt(this.barOptions.barHeight,10))/100/2+c*(this.visibleI+v.indexOf(w))+u*g)):(g>-1&&(n=b.config.plotOptions.bar.rangeBarGroupRows?h+p*g:h+d*this.visibleI+p*g),x>-1&&!b.config.plotOptions.bar.rangeBarOverlap&&(v=b.globals.seriesRange[a][x].overlaps).indexOf(w)>-1&&(n=(d=f.barWidth/v.length)*this.visibleI+p*(100-parseInt(this.barOptions.barWidth,10))/100/2+d*(this.visibleI+v.indexOf(w))+p*g)),{barYPosition:r,barXPosition:n,barHeight:c,barWidth:d}}},{key:"drawRangeColumnPaths",value:function(i){var a=i.indexes,s=i.x,r=i.xDivision,n=i.barWidth,o=i.barXPosition,h=i.zeroH,c=this.w,d=a.i,u=a.j,p=this.yRatio[this.yaxisIndex],f=a.realIndex,b=this.getRangeValue(f,u),v=Math.min(b.start,b.end),w=Math.max(b.start,b.end);this.series[d][u]===void 0||this.series[d][u]===null?v=h:(v=h-v/p,w=h-w/p);var k=Math.abs(w-v),l=this.barHelpers.getColumnPaths({barXPosition:o,barWidth:n,y1:v,y2:w,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:a.realIndex,i:f,j:u,w:c});if(c.globals.isXNumeric){var g=this.getBarXForNumericXAxis({x:s,j:u,realIndex:f,barWidth:n});s=g.x,o=g.barXPosition}else s+=r;return{pathTo:l.pathTo,pathFrom:l.pathFrom,barHeight:k,x:s,y:w,goalY:this.barHelpers.getGoalValues("y",null,h,d,u),barXPosition:o}}},{key:"drawRangeBarPaths",value:function(i){var a=i.indexes,s=i.y,r=i.y1,n=i.y2,o=i.yDivision,h=i.barHeight,c=i.barYPosition,d=i.zeroW,u=this.w,p=d+r/this.invertedYRatio,f=d+n/this.invertedYRatio,b=Math.abs(f-p),v=this.barHelpers.getBarpaths({barYPosition:c,barHeight:h,x1:p,x2:f,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:a.realIndex,realIndex:a.realIndex,j:a.j,w:u});return u.globals.isXNumeric||(s+=o),{pathTo:v.pathTo,pathFrom:v.pathFrom,barWidth:b,x:f,goalX:this.barHelpers.getGoalValues("x",d,null,a.realIndex,a.j),y:s}}},{key:"getRangeValue",value:function(i,a){var s=this.w;return{start:s.globals.seriesRangeStart[i][a],end:s.globals.seriesRangeEnd[i][a]}}}]),t}(),Gt=function(){function m(e){F(this,m),this.w=e.w,this.lineCtx=e}return R(m,[{key:"sameValueSeriesFix",value:function(e,t){var i=this.w;if((i.config.fill.type==="gradient"||i.config.fill.type[e]==="gradient")&&new G(this.lineCtx.ctx,i).seriesHaveSameValues(e)){var a=t[e].slice();a[a.length-1]=a[a.length-1]+1e-6,t[e]=a}return t}},{key:"calculatePoints",value:function(e){var t=e.series,i=e.realIndex,a=e.x,s=e.y,r=e.i,n=e.j,o=e.prevY,h=this.w,c=[],d=[];if(n===0){var u=this.lineCtx.categoryAxisCorrection+h.config.markers.offsetX;h.globals.isXNumeric&&(u=(h.globals.seriesX[i][0]-h.globals.minX)/this.lineCtx.xRatio+h.config.markers.offsetX),c.push(u),d.push(P.isNumber(t[r][0])?o+h.config.markers.offsetY:null),c.push(a+h.config.markers.offsetX),d.push(P.isNumber(t[r][n+1])?s+h.config.markers.offsetY:null)}else c.push(a+h.config.markers.offsetX),d.push(P.isNumber(t[r][n+1])?s+h.config.markers.offsetY:null);return{x:c,y:d}}},{key:"checkPreviousPaths",value:function(e){for(var t=e.pathFromLine,i=e.pathFromArea,a=e.realIndex,s=this.w,r=0;r0&&parseInt(n.realIndex,10)===parseInt(a,10)&&(n.type==="line"?(this.lineCtx.appendPathFrom=!1,t=s.globals.previousPaths[r].paths[0].d):n.type==="area"&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(t=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:t,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(e){var t,i=e.i,a=e.series,s=e.prevY,r=e.lineYPosition,n=this.w;if(((t=a[i])===null||t===void 0?void 0:t[0])!==void 0)s=(r=n.config.chart.stacked&&i>0?this.lineCtx.prevSeriesY[i-1][0]:this.lineCtx.zeroY)-a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(n.config.chart.stacked&&i>0&&a[i][0]===void 0){for(var o=i-1;o>=0;o--)if(a[o][0]!==null&&a[o][0]!==void 0){s=r=this.lineCtx.prevSeriesY[o][0];break}}return{prevY:s,lineYPosition:r}}}]),m}(),Vt=function(m){for(var e,t,i,a,s=function(c){for(var d=[],u=c[0],p=c[1],f=d[0]=Pe(u,p),b=1,v=c.length-1;b9&&(a=3*i/Math.sqrt(a),s[o]=a*e,s[o+1]=a*t);for(var h=0;h<=r;h++)a=(m[Math.min(r,h+1)][0]-m[Math.max(0,h-1)][0])/(6*(1+s[h]*s[h])),n.push([a||0,s[h]*a||0]);return n},Le=function(m){for(var e="",t=0;t1&&Math.abs(i[s-2]-a[r-2])<30?(e+="Q".concat(i[0],", ").concat(i[1]),e+=", ".concat(i[2],", ").concat(i[3])):s>4?(e+="C".concat(i[0],", ").concat(i[1]),e+=", ".concat(i[2],", ").concat(i[3]),e+=", ".concat(i[4],", ").concat(i[5])):s>2&&(e+="S".concat(i[0],", ").concat(i[1]),e+=", ".concat(i[2],", ").concat(i[3]))}return e},Be=function(m){var e=Vt(m),t=m[1],i=m[0],a=[],s=e[1],r=e[0];a.push(i,[i[0]+r[0],i[1]+r[1],t[0]-s[0],t[1]-s[1],t[0],t[1]]);for(var n=2,o=e.length;n0&&(w=(r.globals.seriesX[p][0]-r.globals.minX)/this.xRatio),v.push(w);var k=w,l=this.zeroY,g=this.zeroY;l=this.lineHelpers.determineFirstPrevY({i:u,series:e,prevY:l,lineYPosition:0}).prevY,r.config.stroke.curve==="smooth"&&e[u][0]===null?f.push(null):f.push(l),o==="rangeArea"&&(g=this.lineHelpers.determineFirstPrevY({i:u,series:a,prevY:g,lineYPosition:0}).prevY,b.push(g));var x={type:o,series:e,realIndex:p,i:u,x:w,y:1,pathsFrom:this._calculatePathsFrom({type:o,series:e,i:u,realIndex:p,prevX:k,prevY:l,prevY2:g}),linePaths:[],areaPaths:[],seriesIndex:i,lineYPosition:0,xArrj:v,yArrj:f,y2Arrj:b,seriesRangeEnd:a},y=this._iterateOverDataPoints(E(E({},x),{},{iterations:o==="rangeArea"?e[u].length-1:void 0,isRangeStart:!0}));if(o==="rangeArea"){var A=this._calculatePathsFrom({series:a,i:u,realIndex:p,prevX:k,prevY:g}),S=this._iterateOverDataPoints(E(E({},x),{},{series:a,pathsFrom:A,iterations:a[u].length-1,isRangeStart:!1}));y.linePaths[0]=S.linePath+y.linePath,y.pathFromLine=S.pathFromLine+y.pathFromLine}this._handlePaths({type:o,realIndex:p,i:u,paths:y}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),d.push(this.elSeries)}if(((s=r.config.series[0])===null||s===void 0?void 0:s.zIndex)!==void 0&&d.sort(function(M,T){return Number(M.node.getAttribute("zIndex"))-Number(T.node.getAttribute("zIndex"))}),r.config.chart.stacked)for(var L=d.length;L>0;L--)h.add(d[L-1]);else for(var C=0;C1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||a.config.plotOptions.area.fillTo==="end")&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",zIndex:a.config.series[i].zIndex!==void 0?a.config.series[i].zIndex:i,seriesName:P.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var r=e[t].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":r,rel:t+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(e){var t,i,a,s,r=e.type,n=e.series,o=e.i,h=e.realIndex,c=e.prevX,d=e.prevY,u=e.prevY2,p=this.w,f=new z(this.ctx);if(n[o][0]===null){for(var b=0;b0){var v=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:h});a=v.pathFromLine,s=v.pathFromArea}return{prevX:c,prevY:d,linePath:t,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(e){var t=e.type,i=e.realIndex,a=e.i,s=e.paths,r=this.w,n=new z(this.ctx),o=new Q(this.ctx);this.prevSeriesY.push(s.yArrj),r.globals.seriesXvalues[i]=s.xArrj,r.globals.seriesYvalues[i]=s.yArrj;var h=r.config.forecastDataPoints;if(h.count>0&&t!=="rangeArea"){var c=r.globals.seriesXvalues[i][r.globals.seriesXvalues[i].length-h.count-1],d=n.drawRect(c,0,r.globals.gridWidth,r.globals.gridHeight,0);r.globals.dom.elForecastMask.appendChild(d.node);var u=n.drawRect(0,0,c,r.globals.gridHeight,0);r.globals.dom.elNonForecastMask.appendChild(u.node)}this.pointsChart||r.globals.delayedElements.push({el:this.elPointsMain.node,index:i});var p={i:a,realIndex:i,animationDelay:a,initialSpeed:r.config.chart.animations.speed,dataChangeSpeed:r.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(t)};if(t==="area")for(var f=o.fillPath({seriesNumber:i}),b=0;b0&&t!=="rangeArea"){var A=n.renderPaths(x);A.node.setAttribute("stroke-dasharray",h.dashArray),h.strokeWidth&&A.node.setAttribute("stroke-width",h.strokeWidth),this.elSeries.add(A),A.attr("clip-path","url(#forecastMask".concat(r.globals.cuid,")")),y.attr("clip-path","url(#nonForecastMask".concat(r.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(e){var t=this,i=e.type,a=e.series,s=e.iterations,r=e.realIndex,n=e.i,o=e.x,h=e.y,c=e.pathsFrom,d=e.linePaths,u=e.areaPaths,p=e.seriesIndex,f=e.lineYPosition,b=e.xArrj,v=e.yArrj,w=e.y2Arrj,k=e.isRangeStart,l=e.seriesRangeEnd,g=this.w,x=new z(this.ctx),y=this.yRatio,A=c.prevY,S=c.linePath,L=c.areaPath,C=c.pathFromLine,M=c.pathFromArea,T=P.isNumber(g.globals.minYArr[r])?g.globals.minYArr[r]:g.globals.minY;s||(s=g.globals.dataPoints>1?g.globals.dataPoints-1:g.globals.dataPoints);for(var I=function(N,B){return B-N/y[t.yaxisIndex]+2*(t.isReversed?N/y[t.yaxisIndex]:0)},X=h,Y=0;Y0&&g.globals.collapsedSeries.length-1){B--;break}return B>=0?B:0}(n-1)][Y+1]:f=this.zeroY:f=this.zeroY,H?h=I(T,f):(h=I(a[n][Y+1],f),i==="rangeArea"&&(X=I(l[n][Y+1],f))),b.push(o),H&&g.config.stroke.curve==="smooth"?v.push(null):v.push(h),w.push(X);var O=this.lineHelpers.calculatePoints({series:a,x:o,y:h,realIndex:r,i:n,j:Y,prevY:A}),W=this._createPaths({type:i,series:a,i:n,realIndex:r,j:Y,x:o,y:h,y2:X,xArrj:b,yArrj:v,y2Arrj:w,linePath:S,areaPath:L,linePaths:d,areaPaths:u,seriesIndex:p,isRangeStart:k});u=W.areaPaths,d=W.linePaths,L=W.areaPath,S=W.linePath,!this.appendPathFrom||g.config.stroke.curve==="smooth"&&i==="rangeArea"||(C+=x.line(o,this.zeroY),M+=x.line(o,this.zeroY)),this.handleNullDataPoints(a,O,n,Y,r),this._handleMarkersAndLabels({type:i,pointsPos:O,i:n,j:Y,realIndex:r,isRangeStart:k})}return{yArrj:v,xArrj:b,pathFromArea:M,areaPaths:u,pathFromLine:C,linePaths:d,linePath:S,areaPath:L}}},{key:"_handleMarkersAndLabels",value:function(e){var t=e.type,i=e.pointsPos,a=e.isRangeStart,s=e.i,r=e.j,n=e.realIndex,o=this.w,h=new se(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:n,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{o.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var c=this.markers.plotChartMarkers(i,n,r+1);c!==null&&this.elPointsMain.add(c)}var d=h.drawDataLabel({type:t,isRangeStart:a,pos:i,i:n,j:r+1});d!==null&&this.elDataLabelsWrap.add(d)}},{key:"_createPaths",value:function(e){var t=e.type,i=e.series,a=e.i,s=e.realIndex,r=e.j,n=e.x,o=e.y,h=e.xArrj,c=e.yArrj,d=e.y2,u=e.y2Arrj,p=e.linePath,f=e.areaPath,b=e.linePaths,v=e.areaPaths,w=e.seriesIndex,k=e.isRangeStart,l=this.w,g=new z(this.ctx),x=l.config.stroke.curve,y=this.areaBottomY;if(Array.isArray(l.config.stroke.curve)&&(x=Array.isArray(w)?l.config.stroke.curve[w[a]]:l.config.stroke.curve[a]),t==="rangeArea"&&(l.globals.hasNullValues||l.config.forecastDataPoints.count>0)&&x==="smooth"&&(x="straight"),x==="smooth"){var A=t==="rangeArea"?h.length===l.globals.dataPoints:r===i[a].length-2,S=h.map(function(Y,H){return[h[H],c[H]]}).filter(function(Y){return Y[1]!==null});if(A&&S.length>1){var L=Be(S);if(p+=Le(L),i[a][0]===null?f=p:f+=Le(L),t==="rangeArea"&&k){p+=g.line(h[h.length-1],u[u.length-1]);var C=h.slice().reverse(),M=u.slice().reverse(),T=C.map(function(Y,H){return[C[H],M[H]]}),I=Be(T);f=p+=Le(I)}else f+=g.line(S[S.length-1][0],y)+g.line(S[0][0],y)+g.move(S[0][0],S[0][1])+"z";b.push(p),v.push(f)}}else{if(i[a][r+1]===null){p+=g.move(n,o);var X=l.globals.isXNumeric?(l.globals.seriesX[s][r]-l.globals.minX)/this.xRatio:n-this.xDivision;f=f+g.line(X,y)+g.move(n,o)+"z"}i[a][r]===null&&(p+=g.move(n,o),f+=g.move(n,y)),x==="stepline"?(p=p+g.line(n,null,"H")+g.line(null,o,"V"),f=f+g.line(n,null,"H")+g.line(null,o,"V")):x==="straight"&&(p+=g.line(n,o),f+=g.line(n,o)),r===i[a].length-2&&(f=f+g.line(n,y)+g.move(n,o)+"z",t==="rangeArea"&&k?p=p+g.line(n,d)+g.move(n,d)+"z":(b.push(p),v.push(f)))}return{linePaths:b,areaPaths:v,linePath:p,areaPath:f}}},{key:"handleNullDataPoints",value:function(e,t,i,a,s){var r=this.w;if(e[i][a]===null&&r.config.markers.showNullDataPoints||e[i].length===1){var n=this.markers.plotChartMarkers(t,s,a+1,this.strokeWidth-r.config.markers.strokeWidth/2,!0);n!==null&&this.elPointsMain.add(n)}}}]),m}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function m(n,o,h,c){this.xoffset=n,this.yoffset=o,this.height=c,this.width=h,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(d){var u,p=[],f=this.xoffset,b=this.yoffset,v=s(d)/this.height,w=s(d)/this.width;if(this.width>=this.height)for(u=0;u=this.height){var p=d/this.height,f=this.width-p;u=new m(this.xoffset+p,this.yoffset,f,this.height)}else{var b=d/this.width,v=this.height-b;u=new m(this.xoffset,this.yoffset+b,this.width,v)}return u}}function e(n,o,h,c,d){c=c===void 0?0:c,d=d===void 0?0:d;var u=t(function(p,f){var b,v=[],w=f/s(p);for(b=0;b=l}(o,u=n[0],d)?(o.push(u),t(n.slice(1),o,h,c)):(p=h.cutArea(s(o),c),c.push(h.getCoordinates(o)),t(n,[],p,c)),c;c.push(h.getCoordinates(o))}function i(n,o){var h=Math.min.apply(Math,n),c=Math.max.apply(Math,n),d=s(n);return Math.max(Math.pow(o,2)*c/Math.pow(d,2),Math.pow(d,2)/(Math.pow(o,2)*h))}function a(n){return n&&n.constructor===Array}function s(n){var o,h=0;for(o=0;or-a&&h.width<=n-s){var c=o.rotateAroundCenter(e.node);e.node.setAttribute("transform","rotate(-90 ".concat(c.x," ").concat(c.y,") translate(").concat(h.height/3,")"))}}},{key:"truncateLabels",value:function(e,t,i,a,s,r){var n=new z(this.ctx),o=n.getTextRects(e,t).width+this.w.config.stroke.width+5>s-i&&r-a>s-i?r-a:s-i,h=n.getTextBasedOnMaxWidth({text:e,maxWidth:o,fontSize:t});return e.length!==h.length&&o/t<5?"":h}},{key:"animateTreemap",value:function(e,t,i,a){var s=new oe(this.ctx);s.animateRect(e,{x:t.x,y:t.y,width:t.width,height:t.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,function(){s.animationCompleted(e)})}}]),m}(),_t=86400,Ut=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return R(m,[{key:"calculateTimeScaleTicks",value:function(e,t){var i=this,a=this.w;if(a.globals.allSeriesCollapsed)return a.globals.labels=[],a.globals.timescaleLabels=[],[];var s=new j(this.ctx),r=(t-e)/864e5;this.determineInterval(r),a.globals.disableZoomIn=!1,a.globals.disableZoomOut=!1,r<.00011574074074074075?a.globals.disableZoomIn=!0:r>5e4&&(a.globals.disableZoomOut=!0);var n=s.getTimeUnitsfromTimestamp(e,t,this.utc),o=a.globals.gridWidth/r,h=o/24,c=h/60,d=c/60,u=Math.floor(24*r),p=Math.floor(1440*r),f=Math.floor(r*_t),b=Math.floor(r),v=Math.floor(r/30),w=Math.floor(r/365),k={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},l={firstVal:k,currentMillisecond:k.minMillisecond,currentSecond:k.minSecond,currentMinute:k.minMinute,currentHour:k.minHour,currentMonthDate:k.minDate,currentDate:k.minDate,currentMonth:k.minMonth,currentYear:k.minYear,daysWidthOnXAxis:o,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,secondsWidthOnXAxis:d,numberOfSeconds:f,numberOfMinutes:p,numberOfHours:u,numberOfDays:b,numberOfMonths:v,numberOfYears:w};switch(this.tickInterval){case"years":this.generateYearScale(l);break;case"months":case"half_year":this.generateMonthScale(l);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(l);break;case"hours":this.generateHourScale(l);break;case"minutes_fives":case"minutes":this.generateMinuteScale(l);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(l)}var g=this.timeScaleArray.map(function(x){var y={position:x.position,unit:x.unit,year:x.year,day:x.day?x.day:1,hour:x.hour?x.hour:0,month:x.month+1};return x.unit==="month"?E(E({},y),{},{day:1,value:x.value+1}):x.unit==="day"||x.unit==="hour"?E(E({},y),{},{value:x.value}):x.unit==="minute"?E(E({},y),{},{value:x.value,minute:x.value}):x.unit==="second"?E(E({},y),{},{value:x.value,minute:x.minute,second:x.second}):x});return g.filter(function(x){var y=1,A=Math.ceil(a.globals.gridWidth/120),S=x.value;a.config.xaxis.tickAmount!==void 0&&(A=a.config.xaxis.tickAmount),g.length>A&&(y=Math.floor(g.length/A));var L=!1,C=!1;switch(i.tickInterval){case"years":x.unit==="year"&&(L=!0);break;case"half_year":y=7,x.unit==="year"&&(L=!0);break;case"months":y=1,x.unit==="year"&&(L=!0);break;case"months_fortnight":y=15,x.unit!=="year"&&x.unit!=="month"||(L=!0),S===30&&(C=!0);break;case"months_days":y=10,x.unit==="month"&&(L=!0),S===30&&(C=!0);break;case"week_days":y=8,x.unit==="month"&&(L=!0);break;case"days":y=1,x.unit==="month"&&(L=!0);break;case"hours":x.unit==="day"&&(L=!0);break;case"minutes_fives":case"seconds_fives":S%5!=0&&(C=!0);break;case"seconds_tens":S%10!=0&&(C=!0)}if(i.tickInterval==="hours"||i.tickInterval==="minutes_fives"||i.tickInterval==="seconds_tens"||i.tickInterval==="seconds_fives"){if(!C)return!0}else if((S%y==0||L)&&!C)return!0})}},{key:"recalcDimensionsBasedOnFormat",value:function(e,t){var i=this.w,a=this.formatDates(e),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new me(this.ctx).plotCoords()}},{key:"determineInterval",value:function(e){var t=24*e,i=60*t;switch(!0){case e/365>5:this.tickInterval="years";break;case e>800:this.tickInterval="half_year";break;case e>180:this.tickInterval="months";break;case e>90:this.tickInterval="months_fortnight";break;case e>60:this.tickInterval="months_days";break;case e>30:this.tickInterval="week_days";break;case e>2:this.tickInterval="days";break;case t>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(e){var t=e.firstVal,i=e.currentMonth,a=e.currentYear,s=e.daysWidthOnXAxis,r=e.numberOfYears,n=t.minYear,o=0,h=new j(this.ctx),c="year";if(t.minDate>1||t.minMonth>0){var d=h.determineRemainingDaysOfYear(t.minYear,t.minMonth,t.minDate);o=(h.determineDaysOfYear(t.minYear)-d+1)*s,n=t.minYear+1,this.timeScaleArray.push({position:o,value:n,unit:c,year:n,month:P.monthMod(i+1)})}else t.minDate===1&&t.minMonth===0&&this.timeScaleArray.push({position:o,value:n,unit:c,year:a,month:P.monthMod(i+1)});for(var u=n,p=o,f=0;f1){h=(c.determineDaysOfMonths(a+1,t.minYear)-i+1)*r,o=P.monthMod(a+1);var p=s+u,f=P.monthMod(o),b=o;o===0&&(d="year",b=p,f=1,p+=u+=1),this.timeScaleArray.push({position:h,value:b,unit:d,year:p,month:f})}else this.timeScaleArray.push({position:h,value:o,unit:d,year:s,month:P.monthMod(a)});for(var v=o+1,w=h,k=0,l=1;kn.determineDaysOfMonths(g+1,x)&&(c=1,o="month",p=g+=1),g},u=(24-t.minHour)*s,p=h,f=d(c,i,a);t.minHour===0&&t.minDate===1?(u=0,p=P.monthMod(t.minMonth),o="month",c=t.minDate):t.minDate!==1&&t.minHour===0&&t.minMinute===0&&(u=0,h=t.minDate,p=h,f=d(c=h,i,a)),this.timeScaleArray.push({position:u,value:p,unit:o,year:this._getYear(a,f,0),month:P.monthMod(f),day:c});for(var b=u,v=0;vo.determineDaysOfMonths(A+1,s)&&(v=1,A+=1),{month:A,date:v}},d=function(y,A){return y>o.determineDaysOfMonths(A+1,s)?A+=1:A},u=60-(t.minMinute+t.minSecond/60),p=u*r,f=t.minHour+1,b=f;u===60&&(p=0,b=(f=t.minHour)+1);var v=i;b>=24&&(b=0,v+=1,h="day");var w=c(v,a).month;w=d(v,w),this.timeScaleArray.push({position:p,value:f,unit:h,day:v,hour:b,year:s,month:P.monthMod(w)}),b++;for(var k=p,l=0;l=24&&(b=0,h="day",w=c(v+=1,w).month,w=d(v,w));var g=this._getYear(s,w,0);k=60*r+k;var x=b===0?v:b;this.timeScaleArray.push({position:k,value:x,unit:h,hour:b,day:v,year:g,month:P.monthMod(w)}),b++}}},{key:"generateMinuteScale",value:function(e){for(var t=e.currentMillisecond,i=e.currentSecond,a=e.currentMinute,s=e.currentHour,r=e.currentDate,n=e.currentMonth,o=e.currentYear,h=e.minutesWidthOnXAxis,c=e.secondsWidthOnXAxis,d=e.numberOfMinutes,u=a+1,p=r,f=n,b=o,v=s,w=(60-i-t/1e3)*c,k=0;k=60&&(u=0,(v+=1)===24&&(v=0)),this.timeScaleArray.push({position:w,value:u,unit:"minute",hour:v,minute:u,day:p,year:this._getYear(b,f,0),month:P.monthMod(f)}),w+=h,u++}},{key:"generateSecondScale",value:function(e){for(var t=e.currentMillisecond,i=e.currentSecond,a=e.currentMinute,s=e.currentHour,r=e.currentDate,n=e.currentMonth,o=e.currentYear,h=e.secondsWidthOnXAxis,c=e.numberOfSeconds,d=i+1,u=a,p=r,f=n,b=o,v=s,w=(1e3-t)/1e3*h,k=0;k=60&&(d=0,++u>=60&&(u=0,++v===24&&(v=0))),this.timeScaleArray.push({position:w,value:d,unit:"second",hour:v,minute:u,second:d,day:p,year:this._getYear(b,f,0),month:P.monthMod(f)}),w+=h,d++}},{key:"createRawDateString",value:function(e,t){var i=e.year;return e.month===0&&(e.month=1),i+="-"+("0"+e.month.toString()).slice(-2),e.unit==="day"?i+=e.unit==="day"?"-"+("0"+t).slice(-2):"-01":i+="-"+("0"+(e.day?e.day:"1")).slice(-2),e.unit==="hour"?i+=e.unit==="hour"?"T"+("0"+t).slice(-2):"T00":i+="T"+("0"+(e.hour?e.hour:"0")).slice(-2),e.unit==="minute"?i+=":"+("0"+t).slice(-2):i+=":"+(e.minute?("0"+e.minute).slice(-2):"00"),e.unit==="second"?i+=":"+("0"+t).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(e){var t=this,i=this.w;return e.map(function(a){var s=a.value.toString(),r=new j(t.ctx),n=t.createRawDateString(a,s),o=r.getDate(r.parseDate(n));if(t.utc||(o=r.getDate(r.parseDateWithTimezone(n))),i.config.xaxis.labels.format===void 0){var h="dd MMM",c=i.config.xaxis.labels.datetimeFormatter;a.unit==="year"&&(h=c.year),a.unit==="month"&&(h=c.month),a.unit==="day"&&(h=c.day),a.unit==="hour"&&(h=c.hour),a.unit==="minute"&&(h=c.minute),a.unit==="second"&&(h=c.second),s=r.formatDate(o,h)}else s=r.formatDate(o,i.config.xaxis.labels.format);return{dateString:n,position:a.position,value:s,unit:a.unit,year:a.year,month:a.month}})}},{key:"removeOverlappingTS",value:function(e){var t,i=this,a=new z(this.ctx),s=!1;e.length>0&&e[0].value&&e.every(function(o){return o.value.length===e[0].value.length})&&(s=!0,t=a.getTextRects(e[0].value).width);var r=0,n=e.map(function(o,h){if(h>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var c=s?t:a.getTextRects(e[r].value).width,d=e[r].position;return o.position>d+c+10?(r=h,o):null}return o});return n=n.filter(function(o){return o!==null})}},{key:"_getYear",value:function(e,t,i){return e+Math.floor(t/12)+i}}]),m}(),qt=function(){function m(e,t){F(this,m),this.ctx=t,this.w=t.w,this.el=e}return R(m,[{key:"setupElements",value:function(){var e=this.w.globals,t=this.w.config,i=t.chart.type;e.axisCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"].indexOf(i)>-1,e.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].indexOf(i)>-1,e.isBarHorizontal=(t.chart.type==="bar"||t.chart.type==="rangeBar"||t.chart.type==="boxPlot")&&t.plotOptions.bar.horizontal,e.chartClass=".apexcharts"+e.chartID,e.dom.baseEl=this.el,e.dom.elWrap=document.createElement("div"),z.setAttrs(e.dom.elWrap,{id:e.chartClass.substring(1),class:"apexcharts-canvas "+e.chartClass.substring(1)}),this.el.appendChild(e.dom.elWrap),e.dom.Paper=new window.SVG.Doc(e.dom.elWrap),e.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(t.chart.offsetX,", ").concat(t.chart.offsetY,")")}),e.dom.Paper.node.style.background=t.theme.mode!=="dark"||t.chart.background?t.chart.background:"rgba(0, 0, 0, 0.8)",this.setSVGDimensions(),e.dom.elLegendForeign=document.createElementNS(e.SVGNS,"foreignObject"),z.setAttrs(e.dom.elLegendForeign,{x:0,y:0,width:e.svgWidth,height:e.svgHeight}),e.dom.elLegendWrap=document.createElement("div"),e.dom.elLegendWrap.classList.add("apexcharts-legend"),e.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),e.dom.elLegendForeign.appendChild(e.dom.elLegendWrap),e.dom.Paper.node.appendChild(e.dom.elLegendForeign),e.dom.elGraphical=e.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),e.dom.elDefs=e.dom.Paper.defs(),e.dom.Paper.add(e.dom.elGraphical),e.dom.elGraphical.add(e.dom.elDefs)}},{key:"plotChartType",value:function(e,t){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},n={series:[],i:[]},o={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]},d={series:[],i:[]},u={series:[],i:[]},p={series:[],i:[]},f={series:[],seriesRangeEnd:[],i:[]};s.series.map(function(A,S){var L=0;e[S].type!==void 0?(e[S].type==="column"||e[S].type==="bar"?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),c.series.push(A),c.i.push(S),L++,i.globals.columnSeries=c.series):e[S].type==="area"?(n.series.push(A),n.i.push(S),L++):e[S].type==="line"?(r.series.push(A),r.i.push(S),L++):e[S].type==="scatter"?(o.series.push(A),o.i.push(S)):e[S].type==="bubble"?(h.series.push(A),h.i.push(S),L++):e[S].type==="candlestick"?(d.series.push(A),d.i.push(S),L++):e[S].type==="boxPlot"?(u.series.push(A),u.i.push(S),L++):e[S].type==="rangeBar"?(p.series.push(A),p.i.push(S),L++):e[S].type==="rangeArea"?(f.series.push(s.seriesRangeStart[S]),f.seriesRangeEnd.push(s.seriesRangeEnd[S]),f.i.push(S),L++):console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble/candlestick/boxPlot/rangeBar/rangeArea"),L>1&&(s.comboCharts=!0)):(r.series.push(A),r.i.push(S))});var b=new Me(this.ctx,t),v=new Ce(this.ctx,t);this.ctx.pie=new st(this.ctx);var w=new Wt(this.ctx);this.ctx.rangeBar=new Bt(this.ctx,t);var k=new Nt(this.ctx),l=[];if(s.comboCharts){if(n.series.length>0&&l.push(b.draw(n.series,"area",n.i)),c.series.length>0)if(i.config.chart.stacked){var g=new We(this.ctx,t);l.push(g.draw(c.series,c.i))}else this.ctx.bar=new ne(this.ctx,t),l.push(this.ctx.bar.draw(c.series,c.i));if(f.series.length>0&&l.push(b.draw(f.series,"rangeArea",f.i,f.seriesRangeEnd)),r.series.length>0&&l.push(b.draw(r.series,"line",r.i)),d.series.length>0&&l.push(v.draw(d.series,"candlestick",d.i)),u.series.length>0&&l.push(v.draw(u.series,"boxPlot",u.i)),p.series.length>0&&l.push(this.ctx.rangeBar.draw(p.series,p.i)),o.series.length>0){var x=new Me(this.ctx,t,!0);l.push(x.draw(o.series,"scatter",o.i))}if(h.series.length>0){var y=new Me(this.ctx,t,!0);l.push(y.draw(h.series,"bubble",h.i))}}else switch(a.chart.type){case"line":l=b.draw(s.series,"line");break;case"area":l=b.draw(s.series,"area");break;case"bar":a.chart.stacked?l=new We(this.ctx,t).draw(s.series):(this.ctx.bar=new ne(this.ctx,t),l=this.ctx.bar.draw(s.series));break;case"candlestick":l=new Ce(this.ctx,t).draw(s.series,"candlestick");break;case"boxPlot":l=new Ce(this.ctx,t).draw(s.series,a.chart.type);break;case"rangeBar":l=this.ctx.rangeBar.draw(s.series);break;case"rangeArea":l=b.draw(s.seriesRangeStart,"rangeArea",void 0,s.seriesRangeEnd);break;case"heatmap":l=new Ot(this.ctx,t).draw(s.series);break;case"treemap":l=new jt(this.ctx,t).draw(s.series);break;case"pie":case"donut":case"polarArea":l=this.ctx.pie.draw(s.series);break;case"radialBar":l=w.draw(s.series);break;case"radar":l=k.draw(s.series);break;default:l=b.draw(s.series)}return l}},{key:"setSVGDimensions",value:function(){var e=this.w.globals,t=this.w.config;e.svgWidth=t.chart.width,e.svgHeight=t.chart.height;var i=P.getDimensions(this.el),a=t.chart.width.toString().split(/[0-9]+/g).pop();a==="%"?P.isNumber(i[0])&&(i[0].width===0&&(i=P.getDimensions(this.el.parentNode)),e.svgWidth=i[0]*parseInt(t.chart.width,10)/100):a!=="px"&&a!==""||(e.svgWidth=parseInt(t.chart.width,10));var s=t.chart.height.toString().split(/[0-9]+/g).pop();if(e.svgHeight!=="auto"&&e.svgHeight!=="")if(s==="%"){var r=P.getDimensions(this.el.parentNode);e.svgHeight=r[1]*parseInt(t.chart.height,10)/100}else e.svgHeight=parseInt(t.chart.height,10);else e.axisCharts?e.svgHeight=e.svgWidth/1.61:e.svgHeight=e.svgWidth/1.2;if(e.svgWidth<0&&(e.svgWidth=0),e.svgHeight<0&&(e.svgHeight=0),z.setAttrs(e.dom.Paper.node,{width:e.svgWidth,height:e.svgHeight}),s!=="%"){var n=t.chart.sparkline.enabled?0:e.axisCharts?t.chart.parentHeightOffset:0;e.dom.Paper.node.parentNode.parentNode.style.minHeight=e.svgHeight+n+"px"}e.dom.elWrap.style.width=e.svgWidth+"px",e.dom.elWrap.style.height=e.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var e=this.w.globals,t=e.translateY,i={transform:"translate("+e.translateX+", "+t+")"};z.setAttrs(e.dom.elGraphical.node,i)}},{key:"resizeNonAxisCharts",value:function(){var e=this.w,t=e.globals,i=0,a=e.config.chart.sparkline.enabled?1:15;a+=e.config.grid.padding.bottom,e.config.legend.position!=="top"&&e.config.legend.position!=="bottom"||!e.config.legend.show||e.config.legend.floating||(i=new Qe(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=e.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),r=2.05*e.globals.radialSize;if(s&&!e.config.chart.sparkline.enabled&&e.config.plotOptions.radialBar.startAngle!==0){var n=P.getBoundingClientRect(s);r=n.bottom;var o=n.bottom-n.top;r=Math.max(2.05*e.globals.radialSize,o)}var h=r+t.translateY+i+a;t.dom.elLegendForeign&&t.dom.elLegendForeign.setAttribute("height",h),e.config.chart.height&&String(e.config.chart.height).indexOf("%")>0||(t.dom.elWrap.style.height=h+"px",z.setAttrs(t.dom.Paper.node,{height:h}),t.dom.Paper.node.parentNode.parentNode.style.minHeight=h+"px")}},{key:"coreCalculations",value:function(){new Xe(this.ctx).init()}},{key:"resetGlobals",value:function(){var e=this,t=function(){return e.w.config.series.map(function(s){return[]})},i=new qe,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=t(),a.seriesYvalues=t()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var e=null,t=this.w;if(t.globals.axisCharts){if(t.config.xaxis.crosshairs.position==="back"&&new Ee(this.ctx).drawXCrosshairs(),t.config.yaxis[0].crosshairs.position==="back"&&new Ee(this.ctx).drawYCrosshairs(),t.config.xaxis.type==="datetime"&&t.config.xaxis.labels.formatter===void 0){this.ctx.timeScale=new Ut(this.ctx);var i=[];isFinite(t.globals.minX)&&isFinite(t.globals.maxX)&&!t.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minX,t.globals.maxX):t.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minY,t.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}e=new G(this.ctx).getCalculatedRatios()}return e}},{key:"updateSourceChart",value:function(e){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:e.w.globals.minX,max:e.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var e=this,t=this.w;if(t.config.chart.brush.enabled&&typeof t.config.chart.events.selection!="function"){var i=Array.isArray(t.config.chart.brush.targets)||[t.config.chart.brush.target];i.forEach(function(a){var s=ApexCharts.getChartByID(a);s.w.globals.brushSource=e.ctx,typeof s.w.config.chart.events.zoomed!="function"&&(s.w.config.chart.events.zoomed=function(){e.updateSourceChart(s)}),typeof s.w.config.chart.events.scrolled!="function"&&(s.w.config.chart.events.scrolled=function(){e.updateSourceChart(s)})}),t.config.chart.events.selection=function(a,s){i.forEach(function(r){var n=ApexCharts.getChartByID(r),o=P.clone(t.config.yaxis);if(t.config.chart.brush.autoScaleYaxis&&n.w.globals.series.length===1){var h=new re(n);o=h.autoScaleY(n,o,s)}var c=n.w.config.yaxis.reduce(function(d,u,p){return[].concat(Z(d),[E(E({},n.w.config.yaxis[p]),{},{min:o[0].min,max:o[0].max})])},[]);n.ctx.updateHelpers._updateOptions({xaxis:{min:s.xaxis.min,max:s.xaxis.max},yaxis:c},!1,!1,!1,!1)})}}}}]),m}(),Zt=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"_updateOptions",value:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0&&arguments[1],a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],s=!(arguments.length>3&&arguments[3]!==void 0)||arguments[3],r=arguments.length>4&&arguments[4]!==void 0&&arguments[4];return new Promise(function(n){var o=[t.ctx];s&&(o=t.ctx.getSyncedCharts()),t.ctx.w.globals.isExecCalled&&(o=[t.ctx],t.ctx.w.globals.isExecCalled=!1),o.forEach(function(h,c){var d=h.w;if(d.globals.shouldAnimate=a,i||(d.globals.resized=!0,d.globals.dataChanged=!0,a&&h.series.getPreviousPaths()),e&&V(e)==="object"&&(h.config=new ce(e),e=G.extendArrayProps(h.config,e,d),h.w.globals.chartID!==t.ctx.w.globals.chartID&&delete e.series,d.config=P.extend(d.config,e),r&&(d.globals.lastXAxis=e.xaxis?P.clone(e.xaxis):[],d.globals.lastYAxis=e.yaxis?P.clone(e.yaxis):[],d.globals.initialConfig=P.extend({},d.config),d.globals.initialSeries=P.clone(d.config.series),e.series))){for(var u=0;u2&&arguments[2]!==void 0&&arguments[2];return new Promise(function(s){var r,n=i.w;return n.globals.shouldAnimate=t,n.globals.dataChanged=!0,t&&i.ctx.series.getPreviousPaths(),n.globals.axisCharts?((r=e.map(function(o,h){return i._extendSeries(o,h)})).length===0&&(r=[{data:[]}]),n.config.series=r):n.config.series=e.slice(),a&&(n.globals.initialConfig.series=P.clone(n.config.series),n.globals.initialSeries=P.clone(n.config.series)),i.ctx.update().then(function(){s(i.ctx)})})}},{key:"_extendSeries",value:function(e,t){var i=this.w,a=i.config.series[t];return E(E({},i.config.series[t]),{},{name:e.name?e.name:a?.name,color:e.color?e.color:a?.color,type:e.type?e.type:a?.type,group:e.group?e.group:a?.group,data:e.data?e.data:a?.data,zIndex:e.zIndex!==void 0?e.zIndex:t})}},{key:"toggleDataPointSelection",value:function(e,t){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(e,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"'], ").concat(s," circle[j='").concat(t,"'], ").concat(s," rect[j='").concat(t,"']")).members[0]:t===void 0&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"']")).members[0],i.config.chart.type!=="pie"&&i.config.chart.type!=="polarArea"&&i.config.chart.type!=="donut"||this.ctx.pie.pieClicked(e)),a?(new z(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(e){var t=this.w;if(["min","max"].forEach(function(a){e.xaxis[a]!==void 0&&(t.config.xaxis[a]=e.xaxis[a],t.globals.lastXAxis[a]=e.xaxis[a])}),e.xaxis.categories&&e.xaxis.categories.length&&(t.config.xaxis.categories=e.xaxis.categories),t.config.xaxis.convertedCatToNumeric){var i=new he(e);e=i.convertCatToNumericXaxis(e,this.ctx)}return e}},{key:"forceYAxisUpdate",value:function(e){return e.chart&&e.chart.stacked&&e.chart.stackType==="100%"&&(Array.isArray(e.yaxis)?e.yaxis.forEach(function(t,i){e.yaxis[i].min=0,e.yaxis[i].max=100}):(e.yaxis.min=0,e.yaxis.max=100)),e}},{key:"revertDefaultAxisMinMax",value:function(e){var t=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;e&&e.xaxis&&(a=e.xaxis),e&&e.yaxis&&(s=e.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(n){s[n]!==void 0&&(i.config.yaxis[n].min=s[n].min,i.config.yaxis[n].max=s[n].max)};i.config.yaxis.map(function(n,o){i.globals.zoomed||s[o]!==void 0?r(o):t.ctx.opts.yaxis[o]!==void 0&&(n.min=t.ctx.opts.yaxis[o].min,n.max=t.ctx.opts.yaxis[o].max)})}}]),m}();K=typeof window<"u"?window:void 0,le=function(m,e){var t=(this!==void 0?this:m).SVG=function(l){if(t.supported)return l=new t.Doc(l),t.parser.draw||t.prepare(),l};if(t.ns="http://www.w3.org/2000/svg",t.xmlns="http://www.w3.org/2000/xmlns/",t.xlink="http://www.w3.org/1999/xlink",t.svgjs="http://svgjs.dev",t.supported=!0,!t.supported)return!1;t.did=1e3,t.eid=function(l){return"Svgjs"+c(l)+t.did++},t.create=function(l){var g=e.createElementNS(this.ns,l);return g.setAttribute("id",this.eid(l)),g},t.extend=function(){var l,g;g=(l=[].slice.call(arguments)).pop();for(var x=l.length-1;x>=0;x--)if(l[x])for(var y in g)l[x].prototype[y]=g[y];t.Set&&t.Set.inherit&&t.Set.inherit()},t.invent=function(l){var g=typeof l.create=="function"?l.create:function(){this.constructor.call(this,t.create(l.create))};return l.inherit&&(g.prototype=new l.inherit),l.extend&&t.extend(g,l.extend),l.construct&&t.extend(l.parent||t.Container,l.construct),g},t.adopt=function(l){return l?l.instance?l.instance:((g=l.nodeName=="svg"?l.parentNode instanceof m.SVGElement?new t.Nested:new t.Doc:l.nodeName=="linearGradient"?new t.Gradient("linear"):l.nodeName=="radialGradient"?new t.Gradient("radial"):t[c(l.nodeName)]?new t[c(l.nodeName)]:new t.Element(l)).type=l.nodeName,g.node=l,l.instance=g,g instanceof t.Doc&&g.namespace().defs(),g.setData(JSON.parse(l.getAttribute("svgjs:data"))||{}),g):null;var g},t.prepare=function(){var l=e.getElementsByTagName("body")[0],g=(l?new t.Doc(l):t.adopt(e.documentElement).nested()).size(2,0);t.parser={body:l||e.documentElement,draw:g.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:g.polyline().node,path:g.path().node,native:t.create("svg")}},t.parser={native:t.create("svg")},e.addEventListener("DOMContentLoaded",function(){t.parser.draw||t.prepare()},!1),t.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},t.utils={map:function(l,g){for(var x=l.length,y=[],A=0;A1?1:l,new t.Color({r:~~(this.r+(this.destination.r-this.r)*l),g:~~(this.g+(this.destination.g-this.g)*l),b:~~(this.b+(this.destination.b-this.b)*l)})):this}}),t.Color.test=function(l){return l+="",t.regex.isHex.test(l)||t.regex.isRgb.test(l)},t.Color.isRgb=function(l){return l&&typeof l.r=="number"&&typeof l.g=="number"&&typeof l.b=="number"},t.Color.isColor=function(l){return t.Color.isRgb(l)||t.Color.test(l)},t.Array=function(l,g){(l=(l||[]).valueOf()).length==0&&g&&(l=g.valueOf()),this.value=this.parse(l)},t.extend(t.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(l){return l=l.valueOf(),Array.isArray(l)?l:this.split(l)}}),t.PointArray=function(l,g){t.Array.call(this,l,g||[[0,0]])},t.PointArray.prototype=new t.Array,t.PointArray.prototype.constructor=t.PointArray;for(var i={M:function(l,g,x){return g.x=x.x=l[0],g.y=x.y=l[1],["M",g.x,g.y]},L:function(l,g){return g.x=l[0],g.y=l[1],["L",l[0],l[1]]},H:function(l,g){return g.x=l[0],["H",l[0]]},V:function(l,g){return g.y=l[0],["V",l[0]]},C:function(l,g){return g.x=l[4],g.y=l[5],["C",l[0],l[1],l[2],l[3],l[4],l[5]]},Q:function(l,g){return g.x=l[2],g.y=l[3],["Q",l[0],l[1],l[2],l[3]]},S:function(l,g){return g.x=l[2],g.y=l[3],["S",l[0],l[1],l[2],l[3]]},Z:function(l,g,x){return g.x=x.x,g.y=x.y,["Z"]}},a="mlhvqtcsaz".split(""),s=0,r=a.length;sL);return y},bbox:function(){return t.parser.draw||t.prepare(),t.parser.path.setAttribute("d",this.toString()),t.parser.path.getBBox()}}),t.Number=t.invent({create:function(l,g){this.value=0,this.unit=g||"",typeof l=="number"?this.value=isNaN(l)?0:isFinite(l)?l:l<0?-34e37:34e37:typeof l=="string"?(g=l.match(t.regex.numberAndUnit))&&(this.value=parseFloat(g[1]),g[5]=="%"?this.value/=100:g[5]=="s"&&(this.value*=1e3),this.unit=g[5]):l instanceof t.Number&&(this.value=l.valueOf(),this.unit=l.unit)},extend:{toString:function(){return(this.unit=="%"?~~(1e8*this.value)/1e6:this.unit=="s"?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(l){return l=new t.Number(l),new t.Number(this+l,this.unit||l.unit)},minus:function(l){return l=new t.Number(l),new t.Number(this-l,this.unit||l.unit)},times:function(l){return l=new t.Number(l),new t.Number(this*l,this.unit||l.unit)},divide:function(l){return l=new t.Number(l),new t.Number(this/l,this.unit||l.unit)},to:function(l){var g=new t.Number(this);return typeof l=="string"&&(g.unit=l),g},morph:function(l){return this.destination=new t.Number(l),l.relative&&(this.destination.value+=this.value),this},at:function(l){return this.destination?new t.Number(this.destination).minus(this).times(l).plus(this):this}}}),t.Element=t.invent({create:function(l){this._stroke=t.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=l)&&(this.type=l.nodeName,this.node.instance=this,this._stroke=l.getAttribute("stroke")||this._stroke)},extend:{x:function(l){return this.attr("x",l)},y:function(l){return this.attr("y",l)},cx:function(l){return l==null?this.x()+this.width()/2:this.x(l-this.width()/2)},cy:function(l){return l==null?this.y()+this.height()/2:this.y(l-this.height()/2)},move:function(l,g){return this.x(l).y(g)},center:function(l,g){return this.cx(l).cy(g)},width:function(l){return this.attr("width",l)},height:function(l){return this.attr("height",l)},size:function(l,g){var x=u(this,l,g);return this.width(new t.Number(x.width)).height(new t.Number(x.height))},clone:function(l){this.writeDataToDom();var g=b(this.node.cloneNode(!0));return l?l.add(g):this.after(g),g},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(l){return this.after(l).remove(),l},addTo:function(l){return l.put(this)},putIn:function(l){return l.add(this)},id:function(l){return this.attr("id",l)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return this.style("display")!="none"},toString:function(){return this.attr("id")},classes:function(){var l=this.attr("class");return l==null?[]:l.trim().split(t.regex.delimiter)},hasClass:function(l){return this.classes().indexOf(l)!=-1},addClass:function(l){if(!this.hasClass(l)){var g=this.classes();g.push(l),this.attr("class",g.join(" "))}return this},removeClass:function(l){return this.hasClass(l)&&this.attr("class",this.classes().filter(function(g){return g!=l}).join(" ")),this},toggleClass:function(l){return this.hasClass(l)?this.removeClass(l):this.addClass(l)},reference:function(l){return t.get(this.attr(l))},parent:function(l){var g=this;if(!g.node.parentNode)return null;if(g=t.adopt(g.node.parentNode),!l)return g;for(;g&&g.node instanceof m.SVGElement;){if(typeof l=="string"?g.matches(l):g instanceof l)return g;if(!g.node.parentNode||g.node.parentNode.nodeName=="#document")return null;g=t.adopt(g.node.parentNode)}},doc:function(){return this instanceof t.Doc?this:this.parent(t.Doc)},parents:function(l){var g=[],x=this;do{if(!(x=x.parent(l))||!x.node)break;g.push(x)}while(x.parent);return g},matches:function(l){return function(g,x){return(g.matches||g.matchesSelector||g.msMatchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.oMatchesSelector).call(g,x)}(this.node,l)},native:function(){return this.node},svg:function(l){var g=e.createElement("svg");if(!(l&&this instanceof t.Parent))return g.appendChild(l=e.createElement("svg")),this.writeDataToDom(),l.appendChild(this.node.cloneNode(!0)),g.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");g.innerHTML=""+l.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var x=0,y=g.firstChild.childNodes.length;x":function(l){return-Math.cos(l*Math.PI)/2+.5},">":function(l){return Math.sin(l*Math.PI/2)},"<":function(l){return 1-Math.cos(l*Math.PI/2)}},t.morph=function(l){return function(g,x){return new t.MorphObj(g,x).at(l)}},t.Situation=t.invent({create:function(l){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new t.Number(l.duration).valueOf(),this.delay=new t.Number(l.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=l.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),t.FX=t.invent({create:function(l){this._target=l,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(l,g,x){V(l)==="object"&&(g=l.ease,x=l.delay,l=l.duration);var y=new t.Situation({duration:l||1e3,delay:x||0,ease:t.easing[g||"-"]||g});return this.queue(y),this},target:function(l){return l&&l instanceof t.Element?(this._target=l,this):this._target},timeToAbsPos:function(l){return(l-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(l){return this.situation.duration/this._speed*l+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=m.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){m.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(l){return(typeof l=="function"||l instanceof t.Situation)&&this.situations.push(l),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof t.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var l,g=this.situation;if(g.init)return this;for(var x in g.animations){l=this.target()[x](),Array.isArray(l)||(l=[l]),Array.isArray(g.animations[x])||(g.animations[x]=[g.animations[x]]);for(var y=l.length;y--;)g.animations[x][y]instanceof t.Number&&(l[y]=new t.Number(l[y])),g.animations[x][y]=l[y].morph(g.animations[x][y])}for(var x in g.attrs)g.attrs[x]=new t.MorphObj(this.target().attr(x),g.attrs[x]);for(var x in g.styles)g.styles[x]=new t.MorphObj(this.target().style(x),g.styles[x]);return g.initialTransformation=this.target().matrixify(),g.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(l,g){var x=this.active;return this.active=!1,g&&this.clearQueue(),l&&this.situation&&(!x&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(l){var g=this.last();return this.target().on("finished.fx",function x(y){y.detail.situation==g&&(l.call(this,g),this.off("finished.fx",x))}),this._callStart()},during:function(l){var g=this.last(),x=function(y){y.detail.situation==g&&l.call(this,y.detail.pos,t.morph(y.detail.pos),y.detail.eased,g)};return this.target().off("during.fx",x).on("during.fx",x),this.after(function(){this.off("during.fx",x)}),this._callStart()},afterAll:function(l){var g=function x(y){l.call(this),this.off("allfinished.fx",x)};return this.target().off("allfinished.fx",g).on("allfinished.fx",g),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(l,g,x){return this.last()[x||"animations"][l]=g,this._callStart()},step:function(l){var g,x,y;l||(this.absPos=this.timeToAbsPos(+new Date)),this.situation.loops!==!1?(g=Math.max(this.absPos,0),x=Math.floor(g),this.situation.loops===!0||xthis.lastPos&&S<=A&&(this.situation.once[S].call(this.target(),this.pos,A),delete this.situation.once[S]);return this.active&&this.target().fire("during",{pos:this.pos,eased:A,fx:this,situation:this.situation}),this.situation?(this.eachAt(),this.pos==1&&!this.situation.reversed||this.situation.reversed&&this.pos==0?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=A,this):this},eachAt:function(){var l,g=this,x=this.target(),y=this.situation;for(var A in y.animations)l=[].concat(y.animations[A]).map(function(C){return typeof C!="string"&&C.at?C.at(y.ease(g.pos),g.pos):C}),x[A].apply(x,l);for(var A in y.attrs)l=[A].concat(y.attrs[A]).map(function(M){return typeof M!="string"&&M.at?M.at(y.ease(g.pos),g.pos):M}),x.attr.apply(x,l);for(var A in y.styles)l=[A].concat(y.styles[A]).map(function(M){return typeof M!="string"&&M.at?M.at(y.ease(g.pos),g.pos):M}),x.style.apply(x,l);if(y.transforms.length){l=y.initialTransformation,A=0;for(var S=y.transforms.length;A=0;--x)this[w[x]]=l[w[x]]!=null?l[w[x]]:g[w[x]]},extend:{extract:function(){var l=p(this,0,1);p(this,1,0);var g=180/Math.PI*Math.atan2(l.y,l.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(g*Math.PI/180)+this.f*Math.sin(g*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(g*Math.PI/180)+this.e*Math.sin(-g*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:g,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new t.Matrix(this)}},clone:function(){return new t.Matrix(this)},morph:function(l){return this.destination=new t.Matrix(l),this},multiply:function(l){return new t.Matrix(this.native().multiply(function(g){return g instanceof t.Matrix||(g=new t.Matrix(g)),g}(l).native()))},inverse:function(){return new t.Matrix(this.native().inverse())},translate:function(l,g){return new t.Matrix(this.native().translate(l||0,g||0))},native:function(){for(var l=t.parser.native.createSVGMatrix(),g=w.length-1;g>=0;g--)l[w[g]]=this[w[g]];return l},toString:function(){return"matrix("+v(this.a)+","+v(this.b)+","+v(this.c)+","+v(this.d)+","+v(this.e)+","+v(this.f)+")"}},parent:t.Element,construct:{ctm:function(){return new t.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof t.Nested){var l=this.rect(1,1),g=l.node.getScreenCTM();return l.remove(),new t.Matrix(g)}return new t.Matrix(this.node.getScreenCTM())}}}),t.Point=t.invent({create:function(l,g){var x;x=Array.isArray(l)?{x:l[0],y:l[1]}:V(l)==="object"?{x:l.x,y:l.y}:l!=null?{x:l,y:g??l}:{x:0,y:0},this.x=x.x,this.y=x.y},extend:{clone:function(){return new t.Point(this)},morph:function(l,g){return this.destination=new t.Point(l,g),this}}}),t.extend(t.Element,{point:function(l,g){return new t.Point(l,g).transform(this.screenCTM().inverse())}}),t.extend(t.Element,{attr:function(l,g,x){if(l==null){for(l={},x=(g=this.node.attributes).length-1;x>=0;x--)l[g[x].nodeName]=t.regex.isNumber.test(g[x].nodeValue)?parseFloat(g[x].nodeValue):g[x].nodeValue;return l}if(V(l)==="object")for(var y in l)this.attr(y,l[y]);else if(g===null)this.node.removeAttribute(l);else{if(g==null)return(g=this.node.getAttribute(l))==null?t.defaults.attrs[l]:t.regex.isNumber.test(g)?parseFloat(g):g;l=="stroke-width"?this.attr("stroke",parseFloat(g)>0?this._stroke:null):l=="stroke"&&(this._stroke=g),l!="fill"&&l!="stroke"||(t.regex.isImage.test(g)&&(g=this.doc().defs().image(g,0,0)),g instanceof t.Image&&(g=this.doc().defs().pattern(0,0,function(){this.add(g)}))),typeof g=="number"?g=new t.Number(g):t.Color.isColor(g)?g=new t.Color(g):Array.isArray(g)&&(g=new t.Array(g)),l=="leading"?this.leading&&this.leading(g):typeof x=="string"?this.node.setAttributeNS(x,l,g.toString()):this.node.setAttribute(l,g.toString()),!this.rebuild||l!="font-size"&&l!="x"||this.rebuild(l,g)}return this}}),t.extend(t.Element,{transform:function(l,g){var x;return V(l)!=="object"?(x=new t.Matrix(this).extract(),typeof l=="string"?x[l]:x):(x=new t.Matrix(this),g=!!g||!!l.relative,l.a!=null&&(x=g?x.multiply(new t.Matrix(l)):new t.Matrix(l)),this.attr("transform",x))}}),t.extend(t.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(t.regex.transforms).slice(0,-1).map(function(l){var g=l.trim().split("(");return[g[0],g[1].split(t.regex.delimiter).map(function(x){return parseFloat(x)})]}).reduce(function(l,g){return g[0]=="matrix"?l.multiply(f(g[1])):l[g[0]].apply(l,g[1])},new t.Matrix)},toParent:function(l){if(this==l)return this;var g=this.screenCTM(),x=l.screenCTM().inverse();return this.addTo(l).untransform().transform(x.multiply(g)),this},toDoc:function(){return this.toParent(this.doc())}}),t.Transformation=t.invent({create:function(l,g){if(arguments.length>1&&typeof g!="boolean")return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(l))for(var x=0,y=this.arguments.length;x=0},index:function(l){return[].slice.call(this.node.childNodes).indexOf(l.node)},get:function(l){return t.adopt(this.node.childNodes[l])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(l,g){for(var x=this.children(),y=0,A=x.length;y=0;g--)l.childNodes[g]instanceof m.SVGElement&&b(l.childNodes[g]);return t.adopt(l).id(t.eid(l.nodeName))}function v(l){return Math.abs(l)>1e-37?l:0}["fill","stroke"].forEach(function(l){var g={};g[l]=function(x){if(x===void 0)return this;if(typeof x=="string"||t.Color.isRgb(x)||x&&typeof x.fill=="function")this.attr(l,x);else for(var y=n[l].length-1;y>=0;y--)x[n[l][y]]!=null&&this.attr(n.prefix(l,n[l][y]),x[n[l][y]]);return this},t.extend(t.Element,t.FX,g)}),t.extend(t.Element,t.FX,{translate:function(l,g){return this.transform({x:l,y:g})},matrix:function(l){return this.attr("transform",new t.Matrix(arguments.length==6?[].slice.call(arguments):l))},opacity:function(l){return this.attr("opacity",l)},dx:function(l){return this.x(new t.Number(l).plus(this instanceof t.FX?0:this.x()),!0)},dy:function(l){return this.y(new t.Number(l).plus(this instanceof t.FX?0:this.y()),!0)}}),t.extend(t.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(l){return this.node.getPointAtLength(l)}}),t.Set=t.invent({create:function(l){Array.isArray(l)?this.members=l:this.clear()},extend:{add:function(){for(var l=[].slice.call(arguments),g=0,x=l.length;g-1&&this.members.splice(g,1),this},each:function(l){for(var g=0,x=this.members.length;g=0},index:function(l){return this.members.indexOf(l)},get:function(l){return this.members[l]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(l){return new t.Set(l)}}}),t.FX.Set=t.invent({create:function(l){this.set=l}}),t.Set.inherit=function(){var l=[];for(var g in t.Shape.prototype)typeof t.Shape.prototype[g]=="function"&&typeof t.Set.prototype[g]!="function"&&l.push(g);for(var g in l.forEach(function(y){t.Set.prototype[y]=function(){for(var A=0,S=this.members.length;A=0;l--)delete this.memory()[arguments[l]];return this},memory:function(){return this._memory||(this._memory={})}}),t.get=function(l){var g=e.getElementById(function(x){var y=(x||"").toString().match(t.regex.reference);if(y)return y[1]}(l)||l);return t.adopt(g)},t.select=function(l,g){return new t.Set(t.utils.map((g||e).querySelectorAll(l),function(x){return t.adopt(x)}))},t.extend(t.Parent,{select:function(l){return t.select(l,this.node)}});var w="abcdef".split("");if(typeof m.CustomEvent!="function"){var k=function(l,g){g=g||{bubbles:!1,cancelable:!1,detail:void 0};var x=e.createEvent("CustomEvent");return x.initCustomEvent(l,g.bubbles,g.cancelable,g.detail),x};k.prototype=m.Event.prototype,t.CustomEvent=k}else t.CustomEvent=m.CustomEvent;return t},typeof define=="function"&&define.amd?define(function(){return le(K,K.document)}):(typeof Ye>"u"?"undefined":V(Ye))==="object"&&typeof ve<"u"?ve.exports=K.document?le(K,K.document):function(m){return le(m,m.document)}:K.SVG=le(K,K.document),function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(r,n){return this.add(r,n),!r.attr("in")&&this.autoSetIn&&r.attr("in",this.source),r.attr("result")||r.attr("result",r),r},blend:function(r,n,o){return this.put(new SVG.BlendEffect(r,n,o))},colorMatrix:function(r,n){return this.put(new SVG.ColorMatrixEffect(r,n))},convolveMatrix:function(r){return this.put(new SVG.ConvolveMatrixEffect(r))},componentTransfer:function(r){return this.put(new SVG.ComponentTransferEffect(r))},composite:function(r,n,o){return this.put(new SVG.CompositeEffect(r,n,o))},flood:function(r,n){return this.put(new SVG.FloodEffect(r,n))},offset:function(r,n){return this.put(new SVG.OffsetEffect(r,n))},image:function(r){return this.put(new SVG.ImageEffect(r))},merge:function(){var r=[void 0];for(var n in arguments)r.push(arguments[n]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,r)))},gaussianBlur:function(r,n){return this.put(new SVG.GaussianBlurEffect(r,n))},morphology:function(r,n){return this.put(new SVG.MorphologyEffect(r,n))},diffuseLighting:function(r,n,o){return this.put(new SVG.DiffuseLightingEffect(r,n,o))},displacementMap:function(r,n,o,h,c){return this.put(new SVG.DisplacementMapEffect(r,n,o,h,c))},specularLighting:function(r,n,o,h){return this.put(new SVG.SpecularLightingEffect(r,n,o,h))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(r,n,o,h,c){return this.put(new SVG.TurbulenceEffect(r,n,o,h,c))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(r){var n=this.put(new SVG.Filter);return typeof r=="function"&&r.call(n,n),n}}),SVG.extend(SVG.Container,{filter:function(r){return this.defs().filter(r)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(r){return this.filterer=r instanceof SVG.Element?r:this.doc().filter(r),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(r){return this.filterer&&r===!0&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(r){return r==null?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",r)},result:function(r){return r==null?this.attr("result"):this.attr("result",r)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(r){return r==null?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",r)},result:function(r){return r==null?this.attr("result"):this.attr("result",r)},toString:function(){return this.result()}}});var m={blend:function(r,n){return this.parent()&&this.parent().blend(this,r,n)},colorMatrix:function(r,n){return this.parent()&&this.parent().colorMatrix(r,n).in(this)},convolveMatrix:function(r){return this.parent()&&this.parent().convolveMatrix(r).in(this)},componentTransfer:function(r){return this.parent()&&this.parent().componentTransfer(r).in(this)},composite:function(r,n){return this.parent()&&this.parent().composite(this,r,n)},flood:function(r,n){return this.parent()&&this.parent().flood(r,n)},offset:function(r,n){return this.parent()&&this.parent().offset(r,n).in(this)},image:function(r){return this.parent()&&this.parent().image(r)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(r,n){return this.parent()&&this.parent().gaussianBlur(r,n).in(this)},morphology:function(r,n){return this.parent()&&this.parent().morphology(r,n).in(this)},diffuseLighting:function(r,n,o){return this.parent()&&this.parent().diffuseLighting(r,n,o).in(this)},displacementMap:function(r,n,o,h){return this.parent()&&this.parent().displacementMap(this,r,n,o,h)},specularLighting:function(r,n,o,h){return this.parent()&&this.parent().specularLighting(r,n,o,h).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(r,n,o,h,c){return this.parent()&&this.parent().turbulence(r,n,o,h,c).in(this)}};SVG.extend(SVG.Effect,m),SVG.extend(SVG.ParentEffect,m),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(r){this.attr("in",r)}}});var e={blend:function(r,n,o){this.attr({in:r,in2:n,mode:o||"normal"})},colorMatrix:function(r,n){r=="matrix"&&(n=a(n)),this.attr({type:r,values:n===void 0?null:n})},convolveMatrix:function(r){r=a(r),this.attr({order:Math.sqrt(r.split(" ").length),kernelMatrix:r})},composite:function(r,n,o){this.attr({in:r,in2:n,operator:o})},flood:function(r,n){this.attr("flood-color",r),n!=null&&this.attr("flood-opacity",n)},offset:function(r,n){this.attr({dx:r,dy:n})},image:function(r){this.attr("href",r,SVG.xlink)},displacementMap:function(r,n,o,h,c){this.attr({in:r,in2:n,scale:o,xChannelSelector:h,yChannelSelector:c})},gaussianBlur:function(r,n){r!=null||n!=null?this.attr("stdDeviation",function(o){if(!Array.isArray(o))return o;for(var h=0,c=o.length,d=[];h1&&(W*=c=Math.sqrt(c),N*=c),d=new SVG.Matrix().rotate(B).scale(1/W,1/N).rotate(-B),q=q.transform(d),_=_.transform(d),u=[_.x-q.x,_.y-q.y],f=u[0]*u[0]+u[1]*u[1],p=Math.sqrt(f),u[0]/=p,u[1]/=p,b=f<4?Math.sqrt(1-f/4):0,J===te&&(b*=-1),v=new SVG.Point((_.x+q.x)/2+b*-u[1],(_.y+q.y)/2+b*u[0]),w=new SVG.Point(q.x-v.x,q.y-v.y),k=new SVG.Point(_.x-v.x,_.y-v.y),l=Math.acos(w.x/Math.sqrt(w.x*w.x+w.y*w.y)),w.y<0&&(l*=-1),g=Math.acos(k.x/Math.sqrt(k.x*k.x+k.y*k.y)),k.y<0&&(g*=-1),te&&l>g&&(g+=2*Math.PI),!te&&lr.maxX-t.width&&(n=(a=r.maxX-t.width)-this.startPoints.box.x),r.minY!=null&&sr.maxY-t.height&&(o=(s=r.maxY-t.height)-this.startPoints.box.y),r.snapToGrid!=null&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,n-=n%r.snapToGrid,o-=o%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:n,y:o},!0):this.el.move(a,s));return i},m.prototype.end=function(e){var t=this.drag(e);this.el.fire("dragend",{event:e,p:t,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,t){typeof e!="function"&&typeof e!="object"||(t=e,e=!0);var i=this.remember("_draggable")||new m(this);return(e=e===void 0||e)?i.init(t||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function m(e){this.el=e,e.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,i,a){var s=typeof t!="string"?t:i[t];return a?s/2:s},this.pointCoords=function(t,i){var a=this.pointsList[t];return{x:this.pointCoord(a[0],i,t==="t"||t==="b"),y:this.pointCoord(a[1],i,t==="r"||t==="l")}}}m.prototype.init=function(e,t){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],t[s]!==void 0&&(this.options[s]=t[s]);var r=["points","pointsExclude"];for(var s in r){var n=this.options[r[s]];typeof n=="string"?n=n.length>0?n.split(/\s*,\s*/i):[]:typeof n=="boolean"&&r[s]==="points"&&(n=n?a:[]),this.options[r[s]]=n}this.options.points=[a,this.options.points].reduce(function(o,h){return o.filter(function(c){return h.indexOf(c)>-1})}),this.options.points=[this.options.points,this.options.pointsExclude].reduce(function(o,h){return o.filter(function(c){return h.indexOf(c)<0})}),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&["line","polyline","polygon"].indexOf(this.el.type)!==-1?this.selectPoints(e):this.selectRect(e),this.observe(),this.cleanup()},m.prototype.selectPoints=function(e){return this.pointSelection.isSelected=e,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},m.prototype.getPointArray=function(){var e=this.el.bbox();return this.el.array().valueOf().map(function(t){return[t[0]-e.x,t[1]-e.y]})},m.prototype.drawPoints=function(){for(var e=this,t=this.getPointArray(),i=0,a=t.length;i0&&this.parameters.box.height-n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x+n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-n[0]);n=this.checkAspectRatio(n),this.el.move(this.parameters.box.x+n[0],this.parameters.box.y+n[1]).size(this.parameters.box.width-n[0],this.parameters.box.height-n[1])}};break;case"rt":this.calc=function(s,r){var n=this.snapToGrid(s,r,2);if(this.parameters.box.width+n[0]>0&&this.parameters.box.height-n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x-n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+n[0]);n=this.checkAspectRatio(n,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+n[1]).size(this.parameters.box.width+n[0],this.parameters.box.height-n[1])}};break;case"rb":this.calc=function(s,r){var n=this.snapToGrid(s,r,0);if(this.parameters.box.width+n[0]>0&&this.parameters.box.height+n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x-n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+n[0]);n=this.checkAspectRatio(n),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+n[0],this.parameters.box.height+n[1])}};break;case"lb":this.calc=function(s,r){var n=this.snapToGrid(s,r,1);if(this.parameters.box.width-n[0]>0&&this.parameters.box.height+n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x+n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-n[0]);n=this.checkAspectRatio(n,!0),this.el.move(this.parameters.box.x+n[0],this.parameters.box.y).size(this.parameters.box.width-n[0],this.parameters.box.height+n[1])}};break;case"t":this.calc=function(s,r){var n=this.snapToGrid(s,r,2);if(this.parameters.box.height-n[1]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y+n[1]).height(this.parameters.box.height-n[1])}};break;case"r":this.calc=function(s,r){var n=this.snapToGrid(s,r,0);if(this.parameters.box.width+n[0]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+n[0])}};break;case"b":this.calc=function(s,r){var n=this.snapToGrid(s,r,0);if(this.parameters.box.height+n[1]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+n[1])}};break;case"l":this.calc=function(s,r){var n=this.snapToGrid(s,r,1);if(this.parameters.box.width-n[0]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x+n[0],this.parameters.box.y).width(this.parameters.box.width-n[0])}};break;case"rot":this.calc=function(s,r){var n=s+this.parameters.p.x,o=r+this.parameters.p.y,h=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),c=Math.atan2(o-this.parameters.box.y-this.parameters.box.height/2,n-this.parameters.box.x-this.parameters.box.width/2),d=this.parameters.rotation+180*(c-h)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(d-d%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(s,r){var n=this.snapToGrid(s,r,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),o=this.el.array().valueOf();o[this.parameters.i][0]=this.parameters.pointCoords[0]+n[0],o[this.parameters.i][1]=this.parameters.pointCoords[1]+n[1],this.el.plot(o)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:e}),SVG.on(window,"touchmove.resize",function(s){t.update(s||window.event)}),SVG.on(window,"touchend.resize",function(){t.done()}),SVG.on(window,"mousemove.resize",function(s){t.update(s||window.event)}),SVG.on(window,"mouseup.resize",function(){t.done()})},m.prototype.update=function(e){if(e){var t=this._extractPosition(e),i=this.transformPoint(t.x,t.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:e})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},m.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},m.prototype.snapToGrid=function(e,t,i,a){var s;return a!==void 0?s=[(i+e)%this.options.snapToGrid,(a+t)%this.options.snapToGrid]:(i=i??3,s=[(this.parameters.box.x+e+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+t+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),e<0&&(s[0]-=this.options.snapToGrid),t<0&&(s[1]-=this.options.snapToGrid),e-=Math.abs(s[0])n.maxX&&(e=n.maxX-s),n.minY!==void 0&&r+tn.maxY&&(t=n.maxY-r),[e,t]},m.prototype.checkAspectRatio=function(e,t){if(!this.options.saveAspectRatio)return e;var i=e.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+e[0],r=this.parameters.box.height-e[1],n=s/r;return na&&(i[0]=this.parameters.box.width-r*a,t&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new m(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),window.Apex===void 0&&(window.Apex={});var Ge=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"initModules",value:function(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","isSeriesHidden","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","exportToCSV","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","mouseleave","touchstart","touchmove","touchleave","mouseup","touchend"],this.ctx.animations=new oe(this.ctx),this.ctx.axes=new At(this.ctx),this.ctx.core=new qt(this.ctx.el,this.ctx),this.ctx.config=new ce({}),this.ctx.data=new $e(this.ctx),this.ctx.grid=new Je(this.ctx),this.ctx.graphics=new z(this.ctx),this.ctx.coreUtils=new G(this.ctx),this.ctx.crosshairs=new Ee(this.ctx),this.ctx.events=new wt(this.ctx),this.ctx.exports=new be(this.ctx),this.ctx.localization=new kt(this.ctx),this.ctx.options=new ie,this.ctx.responsive=new St(this.ctx),this.ctx.series=new $(this.ctx),this.ctx.theme=new Ct(this.ctx),this.ctx.formatters=new pe(this.ctx),this.ctx.titleSubtitle=new Lt(this.ctx),this.ctx.legend=new Qe(this.ctx),this.ctx.toolbar=new Ke(this.ctx),this.ctx.tooltip=new Ne(this.ctx),this.ctx.dimensions=new me(this.ctx),this.ctx.updateHelpers=new Zt(this.ctx),this.ctx.zoomPanSelection=new Xt(this.ctx),this.ctx.w.globals.tooltip=new Ne(this.ctx)}}]),m}(),Ve=function(){function m(e){F(this,m),this.ctx=e,this.w=e.w}return R(m,[{key:"clear",value:function(e){var t=e.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:t})}},{key:"killSVG",value:function(e){e.each(function(t,i){this.removeClass("*"),this.off(),this.stop()},!0),e.ungroup(),e.clear()}},{key:"clearDomElements",value:function(e){var t=this,i=e.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight="unset");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach(function(n){s.removeEventListener(n,t.ctx.events.documentEvent)});var r=this.w.globals.dom;if(this.ctx.el!==null)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elLegendWrap=null,r.elLegendForeign=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),m}(),Ie=new WeakMap,$t=function(){function m(e,t){F(this,m),this.opts=t,this.ctx=this,this.w=new yt(t).init(),this.el=e,this.w.globals.cuid=P.randomId(),this.w.globals.chartID=this.w.config.chart.id?P.escapeString(this.w.config.chart.id):this.w.globals.cuid,new Ge(this).initModules(),this.create=P.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return R(m,[{key:"render",value:function(){var e=this;return new Promise(function(t,i){if(e.el!==null){Apex._chartInstances===void 0&&(Apex._chartInstances=[]),e.w.config.chart.id&&Apex._chartInstances.push({id:e.w.globals.chartID,group:e.w.config.chart.group,chart:e}),e.setLocale(e.w.config.chart.defaultLocale);var a=e.w.config.chart.events.beforeMount;if(typeof a=="function"&&a(e,e.w),e.events.fireEvent("beforeMount",[e,e.w]),window.addEventListener("resize",e.windowResizeHandler),function(c,d){var u=!1;if(c.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var p=c.getBoundingClientRect();c.style.display!=="none"&&p.width!==0||(u=!0)}var f=new ResizeObserver(function(b){u&&d.call(c,b),u=!0});c.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(c.children).forEach(function(b){return f.observe(b)}):f.observe(c),Ie.set(d,f)}(e.el.parentNode,e.parentResizeHandler),!e.css){var s=e.el.getRootNode&&e.el.getRootNode(),r=P.is("ShadowRoot",s),n=e.el.ownerDocument,o=n.getElementById("apexcharts-css");!r&&o||(e.css=document.createElement("style"),e.css.id="apexcharts-css",e.css.textContent=`@keyframes opaque { - 0% { - opacity: 0 +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); - to { - opacity: 1 +// node_modules/apexcharts/dist/apexcharts.common.js +var require_apexcharts_common = __commonJS({ + "node_modules/apexcharts/dist/apexcharts.common.js"(exports, module) { + "use strict"; + function t(t2, e2) { + var i2 = Object.keys(t2); + if (Object.getOwnPropertySymbols) { + var a2 = Object.getOwnPropertySymbols(t2); + e2 && (a2 = a2.filter(function(e3) { + return Object.getOwnPropertyDescriptor(t2, e3).enumerable; + })), i2.push.apply(i2, a2); + } + return i2; + } + function e(e2) { + for (var i2 = 1; i2 < arguments.length; i2++) { + var a2 = null != arguments[i2] ? arguments[i2] : {}; + i2 % 2 ? t(Object(a2), true).forEach(function(t2) { + o(e2, t2, a2[t2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(a2)) : t(Object(a2)).forEach(function(t2) { + Object.defineProperty(e2, t2, Object.getOwnPropertyDescriptor(a2, t2)); + }); + } + return e2; + } + function i(t2) { + return i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t3) { + return typeof t3; + } : function(t3) { + return t3 && "function" == typeof Symbol && t3.constructor === Symbol && t3 !== Symbol.prototype ? "symbol" : typeof t3; + }, i(t2); + } + function a(t2, e2) { + if (!(t2 instanceof e2)) + throw new TypeError("Cannot call a class as a function"); + } + function s(t2, e2) { + for (var i2 = 0; i2 < e2.length; i2++) { + var a2 = e2[i2]; + a2.enumerable = a2.enumerable || false, a2.configurable = true, "value" in a2 && (a2.writable = true), Object.defineProperty(t2, a2.key, a2); + } + } + function r(t2, e2, i2) { + return e2 && s(t2.prototype, e2), i2 && s(t2, i2), t2; + } + function o(t2, e2, i2) { + return e2 in t2 ? Object.defineProperty(t2, e2, { value: i2, enumerable: true, configurable: true, writable: true }) : t2[e2] = i2, t2; + } + function n(t2, e2) { + if ("function" != typeof e2 && null !== e2) + throw new TypeError("Super expression must either be null or a function"); + t2.prototype = Object.create(e2 && e2.prototype, { constructor: { value: t2, writable: true, configurable: true } }), e2 && h(t2, e2); + } + function l(t2) { + return l = Object.setPrototypeOf ? Object.getPrototypeOf : function(t3) { + return t3.__proto__ || Object.getPrototypeOf(t3); + }, l(t2); + } + function h(t2, e2) { + return h = Object.setPrototypeOf || function(t3, e3) { + return t3.__proto__ = e3, t3; + }, h(t2, e2); + } + function c(t2, e2) { + if (e2 && ("object" == typeof e2 || "function" == typeof e2)) + return e2; + if (void 0 !== e2) + throw new TypeError("Derived constructors may only return object or undefined"); + return function(t3) { + if (void 0 === t3) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return t3; + }(t2); + } + function d(t2) { + var e2 = function() { + if ("undefined" == typeof Reflect || !Reflect.construct) + return false; + if (Reflect.construct.sham) + return false; + if ("function" == typeof Proxy) + return true; + try { + return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })), true; + } catch (t3) { + return false; + } + }(); + return function() { + var i2, a2 = l(t2); + if (e2) { + var s2 = l(this).constructor; + i2 = Reflect.construct(a2, arguments, s2); + } else + i2 = a2.apply(this, arguments); + return c(this, i2); + }; + } + function g(t2, e2) { + return function(t3) { + if (Array.isArray(t3)) + return t3; + }(t2) || function(t3, e3) { + var i2 = null == t3 ? null : "undefined" != typeof Symbol && t3[Symbol.iterator] || t3["@@iterator"]; + if (null == i2) + return; + var a2, s2, r2 = [], o2 = true, n2 = false; + try { + for (i2 = i2.call(t3); !(o2 = (a2 = i2.next()).done) && (r2.push(a2.value), !e3 || r2.length !== e3); o2 = true) + ; + } catch (t4) { + n2 = true, s2 = t4; + } finally { + try { + o2 || null == i2.return || i2.return(); + } finally { + if (n2) + throw s2; + } + } + return r2; + }(t2, e2) || p(t2, e2) || function() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + }(); + } + function u(t2) { + return function(t3) { + if (Array.isArray(t3)) + return f(t3); + }(t2) || function(t3) { + if ("undefined" != typeof Symbol && null != t3[Symbol.iterator] || null != t3["@@iterator"]) + return Array.from(t3); + }(t2) || p(t2) || function() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + }(); + } + function p(t2, e2) { + if (t2) { + if ("string" == typeof t2) + return f(t2, e2); + var i2 = Object.prototype.toString.call(t2).slice(8, -1); + return "Object" === i2 && t2.constructor && (i2 = t2.constructor.name), "Map" === i2 || "Set" === i2 ? Array.from(t2) : "Arguments" === i2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i2) ? f(t2, e2) : void 0; + } + } + function f(t2, e2) { + (null == e2 || e2 > t2.length) && (e2 = t2.length); + for (var i2 = 0, a2 = new Array(e2); i2 < e2; i2++) + a2[i2] = t2[i2]; + return a2; + } + var x = function() { + function t2() { + a(this, t2); + } + return r(t2, [{ key: "shadeRGBColor", value: function(t3, e2) { + var i2 = e2.split(","), a2 = t3 < 0 ? 0 : 255, s2 = t3 < 0 ? -1 * t3 : t3, r2 = parseInt(i2[0].slice(4), 10), o2 = parseInt(i2[1], 10), n2 = parseInt(i2[2], 10); + return "rgb(" + (Math.round((a2 - r2) * s2) + r2) + "," + (Math.round((a2 - o2) * s2) + o2) + "," + (Math.round((a2 - n2) * s2) + n2) + ")"; + } }, { key: "shadeHexColor", value: function(t3, e2) { + var i2 = parseInt(e2.slice(1), 16), a2 = t3 < 0 ? 0 : 255, s2 = t3 < 0 ? -1 * t3 : t3, r2 = i2 >> 16, o2 = i2 >> 8 & 255, n2 = 255 & i2; + return "#" + (16777216 + 65536 * (Math.round((a2 - r2) * s2) + r2) + 256 * (Math.round((a2 - o2) * s2) + o2) + (Math.round((a2 - n2) * s2) + n2)).toString(16).slice(1); + } }, { key: "shadeColor", value: function(e2, i2) { + return t2.isColorHex(i2) ? this.shadeHexColor(e2, i2) : this.shadeRGBColor(e2, i2); + } }], [{ key: "bind", value: function(t3, e2) { + return function() { + return t3.apply(e2, arguments); + }; + } }, { key: "isObject", value: function(t3) { + return t3 && "object" === i(t3) && !Array.isArray(t3) && null != t3; + } }, { key: "is", value: function(t3, e2) { + return Object.prototype.toString.call(e2) === "[object " + t3 + "]"; + } }, { key: "listToArray", value: function(t3) { + var e2, i2 = []; + for (e2 = 0; e2 < t3.length; e2++) + i2[e2] = t3[e2]; + return i2; + } }, { key: "extend", value: function(t3, e2) { + var i2 = this; + "function" != typeof Object.assign && (Object.assign = function(t4) { + if (null == t4) + throw new TypeError("Cannot convert undefined or null to object"); + for (var e3 = Object(t4), i3 = 1; i3 < arguments.length; i3++) { + var a3 = arguments[i3]; + if (null != a3) + for (var s2 in a3) + a3.hasOwnProperty(s2) && (e3[s2] = a3[s2]); + } + return e3; + }); + var a2 = Object.assign({}, t3); + return this.isObject(t3) && this.isObject(e2) && Object.keys(e2).forEach(function(s2) { + i2.isObject(e2[s2]) && s2 in t3 ? a2[s2] = i2.extend(t3[s2], e2[s2]) : Object.assign(a2, o({}, s2, e2[s2])); + }), a2; + } }, { key: "extendArray", value: function(e2, i2) { + var a2 = []; + return e2.map(function(e3) { + a2.push(t2.extend(i2, e3)); + }), e2 = a2; + } }, { key: "monthMod", value: function(t3) { + return t3 % 12; + } }, { key: "clone", value: function(e2) { + if (t2.is("Array", e2)) { + for (var a2 = [], s2 = 0; s2 < e2.length; s2++) + a2[s2] = this.clone(e2[s2]); + return a2; + } + if (t2.is("Null", e2)) + return null; + if (t2.is("Date", e2)) + return e2; + if ("object" === i(e2)) { + var r2 = {}; + for (var o2 in e2) + e2.hasOwnProperty(o2) && (r2[o2] = this.clone(e2[o2])); + return r2; + } + return e2; + } }, { key: "log10", value: function(t3) { + return Math.log(t3) / Math.LN10; + } }, { key: "roundToBase10", value: function(t3) { + return Math.pow(10, Math.floor(Math.log10(t3))); + } }, { key: "roundToBase", value: function(t3, e2) { + return Math.pow(e2, Math.floor(Math.log(t3) / Math.log(e2))); + } }, { key: "parseNumber", value: function(t3) { + return null === t3 ? t3 : parseFloat(t3); + } }, { key: "stripNumber", value: function(t3) { + var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 2; + return Number.isInteger(t3) ? t3 : parseFloat(t3.toPrecision(e2)); + } }, { key: "randomId", value: function() { + return (Math.random() + 1).toString(36).substring(4); + } }, { key: "noExponents", value: function(t3) { + var e2 = String(t3).split(/[eE]/); + if (1 === e2.length) + return e2[0]; + var i2 = "", a2 = t3 < 0 ? "-" : "", s2 = e2[0].replace(".", ""), r2 = Number(e2[1]) + 1; + if (r2 < 0) { + for (i2 = a2 + "0."; r2++; ) + i2 += "0"; + return i2 + s2.replace(/^-/, ""); + } + for (r2 -= s2.length; r2--; ) + i2 += "0"; + return s2 + i2; + } }, { key: "getDimensions", value: function(t3) { + var e2 = getComputedStyle(t3, null), i2 = t3.clientHeight, a2 = t3.clientWidth; + return i2 -= parseFloat(e2.paddingTop) + parseFloat(e2.paddingBottom), [a2 -= parseFloat(e2.paddingLeft) + parseFloat(e2.paddingRight), i2]; + } }, { key: "getBoundingClientRect", value: function(t3) { + var e2 = t3.getBoundingClientRect(); + return { top: e2.top, right: e2.right, bottom: e2.bottom, left: e2.left, width: t3.clientWidth, height: t3.clientHeight, x: e2.left, y: e2.top }; + } }, { key: "getLargestStringFromArr", value: function(t3) { + return t3.reduce(function(t4, e2) { + return Array.isArray(e2) && (e2 = e2.reduce(function(t5, e3) { + return t5.length > e3.length ? t5 : e3; + })), t4.length > e2.length ? t4 : e2; + }, 0); + } }, { key: "hexToRgba", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "#999999", e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0.6; + "#" !== t3.substring(0, 1) && (t3 = "#999999"); + var i2 = t3.replace("#", ""); + i2 = i2.match(new RegExp("(.{" + i2.length / 3 + "})", "g")); + for (var a2 = 0; a2 < i2.length; a2++) + i2[a2] = parseInt(1 === i2[a2].length ? i2[a2] + i2[a2] : i2[a2], 16); + return void 0 !== e2 && i2.push(e2), "rgba(" + i2.join(",") + ")"; + } }, { key: "getOpacityFromRGBA", value: function(t3) { + return parseFloat(t3.replace(/^.*,(.+)\)/, "$1")); + } }, { key: "rgb2hex", value: function(t3) { + return (t3 = t3.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i)) && 4 === t3.length ? "#" + ("0" + parseInt(t3[1], 10).toString(16)).slice(-2) + ("0" + parseInt(t3[2], 10).toString(16)).slice(-2) + ("0" + parseInt(t3[3], 10).toString(16)).slice(-2) : ""; + } }, { key: "isColorHex", value: function(t3) { + return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)|(^#[0-9A-F]{8}$)/i.test(t3); + } }, { key: "getPolygonPos", value: function(t3, e2) { + for (var i2 = [], a2 = 2 * Math.PI / e2, s2 = 0; s2 < e2; s2++) { + var r2 = {}; + r2.x = t3 * Math.sin(s2 * a2), r2.y = -t3 * Math.cos(s2 * a2), i2.push(r2); + } + return i2; + } }, { key: "polarToCartesian", value: function(t3, e2, i2, a2) { + var s2 = (a2 - 90) * Math.PI / 180; + return { x: t3 + i2 * Math.cos(s2), y: e2 + i2 * Math.sin(s2) }; + } }, { key: "escapeString", value: function(t3) { + var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "x", i2 = t3.toString().slice(); + return i2 = i2.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi, e2); + } }, { key: "negToZero", value: function(t3) { + return t3 < 0 ? 0 : t3; + } }, { key: "moveIndexInArray", value: function(t3, e2, i2) { + if (i2 >= t3.length) + for (var a2 = i2 - t3.length + 1; a2--; ) + t3.push(void 0); + return t3.splice(i2, 0, t3.splice(e2, 1)[0]), t3; + } }, { key: "extractNumber", value: function(t3) { + return parseFloat(t3.replace(/[^\d.]*/g, "")); + } }, { key: "findAncestor", value: function(t3, e2) { + for (; (t3 = t3.parentElement) && !t3.classList.contains(e2); ) + ; + return t3; + } }, { key: "setELstyles", value: function(t3, e2) { + for (var i2 in e2) + e2.hasOwnProperty(i2) && (t3.style.key = e2[i2]); + } }, { key: "isNumber", value: function(t3) { + return !isNaN(t3) && parseFloat(Number(t3)) === t3 && !isNaN(parseInt(t3, 10)); + } }, { key: "isFloat", value: function(t3) { + return Number(t3) === t3 && t3 % 1 != 0; + } }, { key: "isSafari", value: function() { + return /^((?!chrome|android).)*safari/i.test(navigator.userAgent); + } }, { key: "isFirefox", value: function() { + return navigator.userAgent.toLowerCase().indexOf("firefox") > -1; + } }, { key: "isIE11", value: function() { + if (-1 !== window.navigator.userAgent.indexOf("MSIE") || window.navigator.appVersion.indexOf("Trident/") > -1) + return true; + } }, { key: "isIE", value: function() { + var t3 = window.navigator.userAgent, e2 = t3.indexOf("MSIE "); + if (e2 > 0) + return parseInt(t3.substring(e2 + 5, t3.indexOf(".", e2)), 10); + if (t3.indexOf("Trident/") > 0) { + var i2 = t3.indexOf("rv:"); + return parseInt(t3.substring(i2 + 3, t3.indexOf(".", i2)), 10); + } + var a2 = t3.indexOf("Edge/"); + return a2 > 0 && parseInt(t3.substring(a2 + 5, t3.indexOf(".", a2)), 10); + } }]), t2; + }(); + var b = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.setEasingFunctions(); + } + return r(t2, [{ key: "setEasingFunctions", value: function() { + var t3; + if (!this.w.globals.easing) { + switch (this.w.config.chart.animations.easing) { + case "linear": + t3 = "-"; + break; + case "easein": + t3 = "<"; + break; + case "easeout": + t3 = ">"; + break; + case "easeinout": + default: + t3 = "<>"; + break; + case "swing": + t3 = function(t4) { + var e2 = 1.70158; + return (t4 -= 1) * t4 * ((e2 + 1) * t4 + e2) + 1; + }; + break; + case "bounce": + t3 = function(t4) { + return t4 < 1 / 2.75 ? 7.5625 * t4 * t4 : t4 < 2 / 2.75 ? 7.5625 * (t4 -= 1.5 / 2.75) * t4 + 0.75 : t4 < 2.5 / 2.75 ? 7.5625 * (t4 -= 2.25 / 2.75) * t4 + 0.9375 : 7.5625 * (t4 -= 2.625 / 2.75) * t4 + 0.984375; + }; + break; + case "elastic": + t3 = function(t4) { + return t4 === !!t4 ? t4 : Math.pow(2, -10 * t4) * Math.sin((t4 - 0.075) * (2 * Math.PI) / 0.3) + 1; + }; + } + this.w.globals.easing = t3; + } + } }, { key: "animateLine", value: function(t3, e2, i2, a2) { + t3.attr(e2).animate(a2).attr(i2); + } }, { key: "animateMarker", value: function(t3, e2, i2, a2, s2, r2) { + e2 || (e2 = 0), t3.attr({ r: e2, width: e2, height: e2 }).animate(a2, s2).attr({ r: i2, width: i2.width, height: i2.height }).afterAll(function() { + r2(); + }); + } }, { key: "animateCircle", value: function(t3, e2, i2, a2, s2) { + t3.attr({ r: e2.r, cx: e2.cx, cy: e2.cy }).animate(a2, s2).attr({ r: i2.r, cx: i2.cx, cy: i2.cy }); + } }, { key: "animateRect", value: function(t3, e2, i2, a2, s2) { + t3.attr(e2).animate(a2).attr(i2).afterAll(function() { + return s2(); + }); + } }, { key: "animatePathsGradually", value: function(t3) { + var e2 = t3.el, i2 = t3.realIndex, a2 = t3.j, s2 = t3.fill, r2 = t3.pathFrom, o2 = t3.pathTo, n2 = t3.speed, l2 = t3.delay, h2 = this.w, c2 = 0; + h2.config.chart.animations.animateGradually.enabled && (c2 = h2.config.chart.animations.animateGradually.delay), h2.config.chart.animations.dynamicAnimation.enabled && h2.globals.dataChanged && "bar" !== h2.config.chart.type && (c2 = 0), this.morphSVG(e2, i2, a2, "line" !== h2.config.chart.type || h2.globals.comboCharts ? s2 : "stroke", r2, o2, n2, l2 * c2); + } }, { key: "showDelayedElements", value: function() { + this.w.globals.delayedElements.forEach(function(t3) { + var e2 = t3.el; + e2.classList.remove("apexcharts-element-hidden"), e2.classList.add("apexcharts-hidden-element-shown"); + }); + } }, { key: "animationCompleted", value: function(t3) { + var e2 = this.w; + e2.globals.animationEnded || (e2.globals.animationEnded = true, this.showDelayedElements(), "function" == typeof e2.config.chart.events.animationEnd && e2.config.chart.events.animationEnd(this.ctx, { el: t3, w: e2 })); + } }, { key: "morphSVG", value: function(t3, e2, i2, a2, s2, r2, o2, n2) { + var l2 = this, h2 = this.w; + s2 || (s2 = t3.attr("pathFrom")), r2 || (r2 = t3.attr("pathTo")); + var c2 = function(t4) { + return "radar" === h2.config.chart.type && (o2 = 1), "M 0 ".concat(h2.globals.gridHeight); + }; + (!s2 || s2.indexOf("undefined") > -1 || s2.indexOf("NaN") > -1) && (s2 = c2()), (!r2 || r2.indexOf("undefined") > -1 || r2.indexOf("NaN") > -1) && (r2 = c2()), h2.globals.shouldAnimate || (o2 = 1), t3.plot(s2).animate(1, h2.globals.easing, n2).plot(s2).animate(o2, h2.globals.easing, n2).plot(r2).afterAll(function() { + x.isNumber(i2) ? i2 === h2.globals.series[h2.globals.maxValsInArrayIndex].length - 2 && h2.globals.shouldAnimate && l2.animationCompleted(t3) : "none" !== a2 && h2.globals.shouldAnimate && (!h2.globals.comboCharts && e2 === h2.globals.series.length - 1 || h2.globals.comboCharts) && l2.animationCompleted(t3), l2.showDelayedElements(); + }); + } }]), t2; + }(); + var v = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "getDefaultFilter", value: function(t3, e2) { + var i2 = this.w; + t3.unfilter(true), new window.SVG.Filter().size("120%", "180%", "-5%", "-40%"), "none" !== i2.config.states.normal.filter ? this.applyFilter(t3, e2, i2.config.states.normal.filter.type, i2.config.states.normal.filter.value) : i2.config.chart.dropShadow.enabled && this.dropShadow(t3, i2.config.chart.dropShadow, e2); + } }, { key: "addNormalFilter", value: function(t3, e2) { + var i2 = this.w; + i2.config.chart.dropShadow.enabled && !t3.node.classList.contains("apexcharts-marker") && this.dropShadow(t3, i2.config.chart.dropShadow, e2); + } }, { key: "addLightenFilter", value: function(t3, e2, i2) { + var a2 = this, s2 = this.w, r2 = i2.intensity; + t3.unfilter(true); + new window.SVG.Filter(); + t3.filter(function(t4) { + var i3 = s2.config.chart.dropShadow; + (i3.enabled ? a2.addShadow(t4, e2, i3) : t4).componentTransfer({ rgb: { type: "linear", slope: 1.5, intercept: r2 } }); + }), t3.filterer.node.setAttribute("filterUnits", "userSpaceOnUse"), this._scaleFilterSize(t3.filterer.node); + } }, { key: "addDarkenFilter", value: function(t3, e2, i2) { + var a2 = this, s2 = this.w, r2 = i2.intensity; + t3.unfilter(true); + new window.SVG.Filter(); + t3.filter(function(t4) { + var i3 = s2.config.chart.dropShadow; + (i3.enabled ? a2.addShadow(t4, e2, i3) : t4).componentTransfer({ rgb: { type: "linear", slope: r2 } }); + }), t3.filterer.node.setAttribute("filterUnits", "userSpaceOnUse"), this._scaleFilterSize(t3.filterer.node); + } }, { key: "applyFilter", value: function(t3, e2, i2) { + var a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0.5; + switch (i2) { + case "none": + this.addNormalFilter(t3, e2); + break; + case "lighten": + this.addLightenFilter(t3, e2, { intensity: a2 }); + break; + case "darken": + this.addDarkenFilter(t3, e2, { intensity: a2 }); + } + } }, { key: "addShadow", value: function(t3, e2, i2) { + var a2 = i2.blur, s2 = i2.top, r2 = i2.left, o2 = i2.color, n2 = i2.opacity, l2 = t3.flood(Array.isArray(o2) ? o2[e2] : o2, n2).composite(t3.sourceAlpha, "in").offset(r2, s2).gaussianBlur(a2).merge(t3.source); + return t3.blend(t3.source, l2); + } }, { key: "dropShadow", value: function(t3, e2) { + var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, a2 = e2.top, s2 = e2.left, r2 = e2.blur, o2 = e2.color, n2 = e2.opacity, l2 = e2.noUserSpaceOnUse, h2 = this.w; + return t3.unfilter(true), x.isIE() && "radialBar" === h2.config.chart.type || (o2 = Array.isArray(o2) ? o2[i2] : o2, t3.filter(function(t4) { + var e3 = null; + e3 = x.isSafari() || x.isFirefox() || x.isIE() ? t4.flood(o2, n2).composite(t4.sourceAlpha, "in").offset(s2, a2).gaussianBlur(r2) : t4.flood(o2, n2).composite(t4.sourceAlpha, "in").offset(s2, a2).gaussianBlur(r2).merge(t4.source), t4.blend(t4.source, e3); + }), l2 || t3.filterer.node.setAttribute("filterUnits", "userSpaceOnUse"), this._scaleFilterSize(t3.filterer.node)), t3; + } }, { key: "setSelectionFilter", value: function(t3, e2, i2) { + var a2 = this.w; + if (void 0 !== a2.globals.selectedDataPoints[e2] && a2.globals.selectedDataPoints[e2].indexOf(i2) > -1) { + t3.node.setAttribute("selected", true); + var s2 = a2.config.states.active.filter; + "none" !== s2 && this.applyFilter(t3, e2, s2.type, s2.value); + } + } }, { key: "_scaleFilterSize", value: function(t3) { + !function(e2) { + for (var i2 in e2) + e2.hasOwnProperty(i2) && t3.setAttribute(i2, e2[i2]); + }({ width: "200%", height: "200%", x: "-50%", y: "-50%" }); + } }]), t2; + }(); + var m = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "roundPathCorners", value: function(t3, e2) { + function i2(t4, e3, i3) { + var s3 = e3.x - t4.x, r3 = e3.y - t4.y, o3 = Math.sqrt(s3 * s3 + r3 * r3); + return a2(t4, e3, Math.min(1, i3 / o3)); + } + function a2(t4, e3, i3) { + return { x: t4.x + (e3.x - t4.x) * i3, y: t4.y + (e3.y - t4.y) * i3 }; + } + function s2(t4, e3) { + t4.length > 2 && (t4[t4.length - 2] = e3.x, t4[t4.length - 1] = e3.y); + } + function r2(t4) { + return { x: parseFloat(t4[t4.length - 2]), y: parseFloat(t4[t4.length - 1]) }; + } + t3.indexOf("NaN") > -1 && (t3 = ""); + var o2 = t3.split(/[,\s]/).reduce(function(t4, e3) { + var i3 = e3.match("([a-zA-Z])(.+)"); + return i3 ? (t4.push(i3[1]), t4.push(i3[2])) : t4.push(e3), t4; + }, []).reduce(function(t4, e3) { + return parseFloat(e3) == e3 && t4.length ? t4[t4.length - 1].push(e3) : t4.push([e3]), t4; + }, []), n2 = []; + if (o2.length > 1) { + var l2 = r2(o2[0]), h2 = null; + "Z" == o2[o2.length - 1][0] && o2[0].length > 2 && (h2 = ["L", l2.x, l2.y], o2[o2.length - 1] = h2), n2.push(o2[0]); + for (var c2 = 1; c2 < o2.length; c2++) { + var d2 = n2[n2.length - 1], g2 = o2[c2], u2 = g2 == h2 ? o2[1] : o2[c2 + 1]; + if (u2 && d2 && d2.length > 2 && "L" == g2[0] && u2.length > 2 && "L" == u2[0]) { + var p2, f2, x2 = r2(d2), b2 = r2(g2), v2 = r2(u2); + p2 = i2(b2, x2, e2), f2 = i2(b2, v2, e2), s2(g2, p2), g2.origPoint = b2, n2.push(g2); + var m2 = a2(p2, b2, 0.5), y2 = a2(b2, f2, 0.5), w2 = ["C", m2.x, m2.y, y2.x, y2.y, f2.x, f2.y]; + w2.origPoint = b2, n2.push(w2); + } else + n2.push(g2); + } + if (h2) { + var k2 = r2(n2[n2.length - 1]); + n2.push(["Z"]), s2(n2[0], k2); + } + } else + n2 = o2; + return n2.reduce(function(t4, e3) { + return t4 + e3.join(" ") + " "; + }, ""); + } }, { key: "drawLine", value: function(t3, e2, i2, a2) { + var s2 = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : "#a8a8a8", r2 = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0, o2 = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : null, n2 = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : "butt"; + return this.w.globals.dom.Paper.line().attr({ x1: t3, y1: e2, x2: i2, y2: a2, stroke: s2, "stroke-dasharray": r2, "stroke-width": o2, "stroke-linecap": n2 }); + } }, { key: "drawRect", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, s2 = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0, r2 = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : "#fefefe", o2 = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : 1, n2 = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : null, l2 = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : null, h2 = arguments.length > 9 && void 0 !== arguments[9] ? arguments[9] : 0, c2 = this.w.globals.dom.Paper.rect(); + return c2.attr({ x: t3, y: e2, width: i2 > 0 ? i2 : 0, height: a2 > 0 ? a2 : 0, rx: s2, ry: s2, opacity: o2, "stroke-width": null !== n2 ? n2 : 0, stroke: null !== l2 ? l2 : "none", "stroke-dasharray": h2 }), c2.node.setAttribute("fill", r2), c2; + } }, { key: "drawPolygon", value: function(t3) { + var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "#e1e1e1", i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "none"; + return this.w.globals.dom.Paper.polygon(t3).attr({ fill: a2, stroke: e2, "stroke-width": i2 }); + } }, { key: "drawCircle", value: function(t3) { + var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null; + t3 < 0 && (t3 = 0); + var i2 = this.w.globals.dom.Paper.circle(2 * t3); + return null !== e2 && i2.attr(e2), i2; + } }, { key: "drawPath", value: function(t3) { + var e2 = t3.d, i2 = void 0 === e2 ? "" : e2, a2 = t3.stroke, s2 = void 0 === a2 ? "#a8a8a8" : a2, r2 = t3.strokeWidth, o2 = void 0 === r2 ? 1 : r2, n2 = t3.fill, l2 = t3.fillOpacity, h2 = void 0 === l2 ? 1 : l2, c2 = t3.strokeOpacity, d2 = void 0 === c2 ? 1 : c2, g2 = t3.classes, u2 = t3.strokeLinecap, p2 = void 0 === u2 ? null : u2, f2 = t3.strokeDashArray, x2 = void 0 === f2 ? 0 : f2, b2 = this.w; + return null === p2 && (p2 = b2.config.stroke.lineCap), (i2.indexOf("undefined") > -1 || i2.indexOf("NaN") > -1) && (i2 = "M 0 ".concat(b2.globals.gridHeight)), b2.globals.dom.Paper.path(i2).attr({ fill: n2, "fill-opacity": h2, stroke: s2, "stroke-opacity": d2, "stroke-linecap": p2, "stroke-width": o2, "stroke-dasharray": x2, class: g2 }); + } }, { key: "group", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, e2 = this.w.globals.dom.Paper.group(); + return null !== t3 && e2.attr(t3), e2; + } }, { key: "move", value: function(t3, e2) { + var i2 = ["M", t3, e2].join(" "); + return i2; + } }, { key: "line", value: function(t3, e2) { + var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, a2 = null; + return null === i2 ? a2 = [" L", t3, e2].join(" ") : "H" === i2 ? a2 = [" H", t3].join(" ") : "V" === i2 && (a2 = [" V", e2].join(" ")), a2; + } }, { key: "curve", value: function(t3, e2, i2, a2, s2, r2) { + var o2 = ["C", t3, e2, i2, a2, s2, r2].join(" "); + return o2; + } }, { key: "quadraticCurve", value: function(t3, e2, i2, a2) { + return ["Q", t3, e2, i2, a2].join(" "); + } }, { key: "arc", value: function(t3, e2, i2, a2, s2, r2, o2) { + var n2 = "A"; + arguments.length > 7 && void 0 !== arguments[7] && arguments[7] && (n2 = "a"); + var l2 = [n2, t3, e2, i2, a2, s2, r2, o2].join(" "); + return l2; + } }, { key: "renderPaths", value: function(t3) { + var i2, a2 = t3.j, s2 = t3.realIndex, r2 = t3.pathFrom, o2 = t3.pathTo, n2 = t3.stroke, l2 = t3.strokeWidth, h2 = t3.strokeLinecap, c2 = t3.fill, d2 = t3.animationDelay, g2 = t3.initialSpeed, u2 = t3.dataChangeSpeed, p2 = t3.className, f2 = t3.shouldClipToGrid, x2 = void 0 === f2 || f2, m2 = t3.bindEventsOnPaths, y2 = void 0 === m2 || m2, w2 = t3.drawShadow, k2 = void 0 === w2 || w2, A2 = this.w, S2 = new v(this.ctx), C2 = new b(this.ctx), L2 = this.w.config.chart.animations.enabled, P2 = L2 && this.w.config.chart.animations.dynamicAnimation.enabled, I2 = !!(L2 && !A2.globals.resized || P2 && A2.globals.dataChanged && A2.globals.shouldAnimate); + I2 ? i2 = r2 : (i2 = o2, A2.globals.animationEnded = true); + var M2 = A2.config.stroke.dashArray, T2 = 0; + T2 = Array.isArray(M2) ? M2[s2] : A2.config.stroke.dashArray; + var z2 = this.drawPath({ d: i2, stroke: n2, strokeWidth: l2, fill: c2, fillOpacity: 1, classes: p2, strokeLinecap: h2, strokeDashArray: T2 }); + if (z2.attr("index", s2), x2 && z2.attr({ "clip-path": "url(#gridRectMask".concat(A2.globals.cuid, ")") }), "none" !== A2.config.states.normal.filter.type) + S2.getDefaultFilter(z2, s2); + else if (A2.config.chart.dropShadow.enabled && k2 && (!A2.config.chart.dropShadow.enabledOnSeries || A2.config.chart.dropShadow.enabledOnSeries && -1 !== A2.config.chart.dropShadow.enabledOnSeries.indexOf(s2))) { + var X2 = A2.config.chart.dropShadow; + S2.dropShadow(z2, X2, s2); + } + y2 && (z2.node.addEventListener("mouseenter", this.pathMouseEnter.bind(this, z2)), z2.node.addEventListener("mouseleave", this.pathMouseLeave.bind(this, z2)), z2.node.addEventListener("mousedown", this.pathMouseDown.bind(this, z2))), z2.attr({ pathTo: o2, pathFrom: r2 }); + var E2 = { el: z2, j: a2, realIndex: s2, pathFrom: r2, pathTo: o2, fill: c2, strokeWidth: l2, delay: d2 }; + return !L2 || A2.globals.resized || A2.globals.dataChanged ? !A2.globals.resized && A2.globals.dataChanged || C2.showDelayedElements() : C2.animatePathsGradually(e(e({}, E2), {}, { speed: g2 })), A2.globals.dataChanged && P2 && I2 && C2.animatePathsGradually(e(e({}, E2), {}, { speed: u2 })), z2; + } }, { key: "drawPattern", value: function(t3, e2, i2) { + var a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "#a8a8a8", s2 = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0; + return this.w.globals.dom.Paper.pattern(e2, i2, function(r2) { + "horizontalLines" === t3 ? r2.line(0, 0, i2, 0).stroke({ color: a2, width: s2 + 1 }) : "verticalLines" === t3 ? r2.line(0, 0, 0, e2).stroke({ color: a2, width: s2 + 1 }) : "slantedLines" === t3 ? r2.line(0, 0, e2, i2).stroke({ color: a2, width: s2 }) : "squares" === t3 ? r2.rect(e2, i2).fill("none").stroke({ color: a2, width: s2 }) : "circles" === t3 && r2.circle(e2).fill("none").stroke({ color: a2, width: s2 }); + }); + } }, { key: "drawGradient", value: function(t3, e2, i2, a2, s2) { + var r2, o2 = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : null, n2 = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : null, l2 = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : null, h2 = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : 0, c2 = this.w; + e2.length < 9 && 0 === e2.indexOf("#") && (e2 = x.hexToRgba(e2, a2)), i2.length < 9 && 0 === i2.indexOf("#") && (i2 = x.hexToRgba(i2, s2)); + var d2 = 0, g2 = 1, u2 = 1, p2 = null; + null !== n2 && (d2 = void 0 !== n2[0] ? n2[0] / 100 : 0, g2 = void 0 !== n2[1] ? n2[1] / 100 : 1, u2 = void 0 !== n2[2] ? n2[2] / 100 : 1, p2 = void 0 !== n2[3] ? n2[3] / 100 : null); + var f2 = !("donut" !== c2.config.chart.type && "pie" !== c2.config.chart.type && "polarArea" !== c2.config.chart.type && "bubble" !== c2.config.chart.type); + if (r2 = null === l2 || 0 === l2.length ? c2.globals.dom.Paper.gradient(f2 ? "radial" : "linear", function(t4) { + t4.at(d2, e2, a2), t4.at(g2, i2, s2), t4.at(u2, i2, s2), null !== p2 && t4.at(p2, e2, a2); + }) : c2.globals.dom.Paper.gradient(f2 ? "radial" : "linear", function(t4) { + (Array.isArray(l2[h2]) ? l2[h2] : l2).forEach(function(e3) { + t4.at(e3.offset / 100, e3.color, e3.opacity); + }); + }), f2) { + var b2 = c2.globals.gridWidth / 2, v2 = c2.globals.gridHeight / 2; + "bubble" !== c2.config.chart.type ? r2.attr({ gradientUnits: "userSpaceOnUse", cx: b2, cy: v2, r: o2 }) : r2.attr({ cx: 0.5, cy: 0.5, r: 0.8, fx: 0.2, fy: 0.2 }); + } else + "vertical" === t3 ? r2.from(0, 0).to(0, 1) : "diagonal" === t3 ? r2.from(0, 0).to(1, 1) : "horizontal" === t3 ? r2.from(0, 1).to(1, 1) : "diagonal2" === t3 && r2.from(1, 0).to(0, 1); + return r2; + } }, { key: "getTextBasedOnMaxWidth", value: function(t3) { + var e2 = t3.text, i2 = t3.maxWidth, a2 = t3.fontSize, s2 = t3.fontFamily, r2 = this.getTextRects(e2, a2, s2), o2 = r2.width / e2.length, n2 = Math.floor(i2 / o2); + return i2 < r2.width ? e2.slice(0, n2 - 3) + "..." : e2; + } }, { key: "drawText", value: function(t3) { + var i2 = this, a2 = t3.x, s2 = t3.y, r2 = t3.text, o2 = t3.textAnchor, n2 = t3.fontSize, l2 = t3.fontFamily, h2 = t3.fontWeight, c2 = t3.foreColor, d2 = t3.opacity, g2 = t3.maxWidth, u2 = t3.cssClass, p2 = void 0 === u2 ? "" : u2, f2 = t3.isPlainText, x2 = void 0 === f2 || f2, b2 = this.w; + void 0 === r2 && (r2 = ""); + var v2 = r2; + o2 || (o2 = "start"), c2 && c2.length || (c2 = b2.config.chart.foreColor), l2 = l2 || b2.config.chart.fontFamily, h2 = h2 || "regular"; + var m2, y2 = { maxWidth: g2, fontSize: n2 = n2 || "11px", fontFamily: l2 }; + return Array.isArray(r2) ? m2 = b2.globals.dom.Paper.text(function(t4) { + for (var a3 = 0; a3 < r2.length; a3++) + v2 = r2[a3], g2 && (v2 = i2.getTextBasedOnMaxWidth(e({ text: r2[a3] }, y2))), 0 === a3 ? t4.tspan(v2) : t4.tspan(v2).newLine(); + }) : (g2 && (v2 = this.getTextBasedOnMaxWidth(e({ text: r2 }, y2))), m2 = x2 ? b2.globals.dom.Paper.plain(r2) : b2.globals.dom.Paper.text(function(t4) { + return t4.tspan(v2); + })), m2.attr({ x: a2, y: s2, "text-anchor": o2, "dominant-baseline": "auto", "font-size": n2, "font-family": l2, "font-weight": h2, fill: c2, class: "apexcharts-text " + p2 }), m2.node.style.fontFamily = l2, m2.node.style.opacity = d2, m2; + } }, { key: "drawMarker", value: function(t3, e2, i2) { + t3 = t3 || 0; + var a2 = i2.pSize || 0, s2 = null; + if ("square" === i2.shape || "rect" === i2.shape) { + var r2 = void 0 === i2.pRadius ? a2 / 2 : i2.pRadius; + null !== e2 && a2 || (a2 = 0, r2 = 0); + var o2 = 1.2 * a2 + r2, n2 = this.drawRect(o2, o2, o2, o2, r2); + n2.attr({ x: t3 - o2 / 2, y: e2 - o2 / 2, cx: t3, cy: e2, class: i2.class ? i2.class : "", fill: i2.pointFillColor, "fill-opacity": i2.pointFillOpacity ? i2.pointFillOpacity : 1, stroke: i2.pointStrokeColor, "stroke-width": i2.pointStrokeWidth ? i2.pointStrokeWidth : 0, "stroke-opacity": i2.pointStrokeOpacity ? i2.pointStrokeOpacity : 1 }), s2 = n2; + } else + "circle" !== i2.shape && i2.shape || (x.isNumber(e2) || (a2 = 0, e2 = 0), s2 = this.drawCircle(a2, { cx: t3, cy: e2, class: i2.class ? i2.class : "", stroke: i2.pointStrokeColor, fill: i2.pointFillColor, "fill-opacity": i2.pointFillOpacity ? i2.pointFillOpacity : 1, "stroke-width": i2.pointStrokeWidth ? i2.pointStrokeWidth : 0, "stroke-opacity": i2.pointStrokeOpacity ? i2.pointStrokeOpacity : 1 })); + return s2; + } }, { key: "pathMouseEnter", value: function(t3, e2) { + var i2 = this.w, a2 = new v(this.ctx), s2 = parseInt(t3.node.getAttribute("index"), 10), r2 = parseInt(t3.node.getAttribute("j"), 10); + if ("function" == typeof i2.config.chart.events.dataPointMouseEnter && i2.config.chart.events.dataPointMouseEnter(e2, this.ctx, { seriesIndex: s2, dataPointIndex: r2, w: i2 }), this.ctx.events.fireEvent("dataPointMouseEnter", [e2, this.ctx, { seriesIndex: s2, dataPointIndex: r2, w: i2 }]), ("none" === i2.config.states.active.filter.type || "true" !== t3.node.getAttribute("selected")) && "none" !== i2.config.states.hover.filter.type && !i2.globals.isTouchDevice) { + var o2 = i2.config.states.hover.filter; + a2.applyFilter(t3, s2, o2.type, o2.value); + } + } }, { key: "pathMouseLeave", value: function(t3, e2) { + var i2 = this.w, a2 = new v(this.ctx), s2 = parseInt(t3.node.getAttribute("index"), 10), r2 = parseInt(t3.node.getAttribute("j"), 10); + "function" == typeof i2.config.chart.events.dataPointMouseLeave && i2.config.chart.events.dataPointMouseLeave(e2, this.ctx, { seriesIndex: s2, dataPointIndex: r2, w: i2 }), this.ctx.events.fireEvent("dataPointMouseLeave", [e2, this.ctx, { seriesIndex: s2, dataPointIndex: r2, w: i2 }]), "none" !== i2.config.states.active.filter.type && "true" === t3.node.getAttribute("selected") || "none" !== i2.config.states.hover.filter.type && a2.getDefaultFilter(t3, s2); + } }, { key: "pathMouseDown", value: function(t3, e2) { + var i2 = this.w, a2 = new v(this.ctx), s2 = parseInt(t3.node.getAttribute("index"), 10), r2 = parseInt(t3.node.getAttribute("j"), 10), o2 = "false"; + if ("true" === t3.node.getAttribute("selected")) { + if (t3.node.setAttribute("selected", "false"), i2.globals.selectedDataPoints[s2].indexOf(r2) > -1) { + var n2 = i2.globals.selectedDataPoints[s2].indexOf(r2); + i2.globals.selectedDataPoints[s2].splice(n2, 1); + } + } else { + if (!i2.config.states.active.allowMultipleDataPointsSelection && i2.globals.selectedDataPoints.length > 0) { + i2.globals.selectedDataPoints = []; + var l2 = i2.globals.dom.Paper.select(".apexcharts-series path").members, h2 = i2.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members, c2 = function(t4) { + Array.prototype.forEach.call(t4, function(t5) { + t5.node.setAttribute("selected", "false"), a2.getDefaultFilter(t5, s2); + }); + }; + c2(l2), c2(h2); + } + t3.node.setAttribute("selected", "true"), o2 = "true", void 0 === i2.globals.selectedDataPoints[s2] && (i2.globals.selectedDataPoints[s2] = []), i2.globals.selectedDataPoints[s2].push(r2); + } + if ("true" === o2) { + var d2 = i2.config.states.active.filter; + if ("none" !== d2) + a2.applyFilter(t3, s2, d2.type, d2.value); + else if ("none" !== i2.config.states.hover.filter && !i2.globals.isTouchDevice) { + var g2 = i2.config.states.hover.filter; + a2.applyFilter(t3, s2, g2.type, g2.value); + } + } else if ("none" !== i2.config.states.active.filter.type) + if ("none" === i2.config.states.hover.filter.type || i2.globals.isTouchDevice) + a2.getDefaultFilter(t3, s2); + else { + g2 = i2.config.states.hover.filter; + a2.applyFilter(t3, s2, g2.type, g2.value); + } + "function" == typeof i2.config.chart.events.dataPointSelection && i2.config.chart.events.dataPointSelection(e2, this.ctx, { selectedDataPoints: i2.globals.selectedDataPoints, seriesIndex: s2, dataPointIndex: r2, w: i2 }), e2 && this.ctx.events.fireEvent("dataPointSelection", [e2, this.ctx, { selectedDataPoints: i2.globals.selectedDataPoints, seriesIndex: s2, dataPointIndex: r2, w: i2 }]); + } }, { key: "rotateAroundCenter", value: function(t3) { + var e2 = {}; + return t3 && "function" == typeof t3.getBBox && (e2 = t3.getBBox()), { x: e2.x + e2.width / 2, y: e2.y + e2.height / 2 }; + } }, { key: "getTextRects", value: function(t3, e2, i2, a2) { + var s2 = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4], r2 = this.w, o2 = this.drawText({ x: -200, y: -200, text: t3, textAnchor: "start", fontSize: e2, fontFamily: i2, foreColor: "#fff", opacity: 0 }); + a2 && o2.attr("transform", a2), r2.globals.dom.Paper.add(o2); + var n2 = o2.bbox(); + return s2 || (n2 = o2.node.getBoundingClientRect()), o2.remove(), { width: n2.width, height: n2.height }; + } }, { key: "placeTextWithEllipsis", value: function(t3, e2, i2) { + if ("function" == typeof t3.getComputedTextLength && (t3.textContent = e2, e2.length > 0 && t3.getComputedTextLength() >= i2 / 1.1)) { + for (var a2 = e2.length - 3; a2 > 0; a2 -= 3) + if (t3.getSubStringLength(0, a2) <= i2 / 1.1) + return void (t3.textContent = e2.substring(0, a2) + "..."); + t3.textContent = "."; + } + } }], [{ key: "setAttrs", value: function(t3, e2) { + for (var i2 in e2) + e2.hasOwnProperty(i2) && t3.setAttribute(i2, e2[i2]); + } }]), t2; + }(); + var y = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "getStackedSeriesTotals", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], e2 = this.w, i2 = []; + if (0 === e2.globals.series.length) + return i2; + for (var a2 = 0; a2 < e2.globals.series[e2.globals.maxValsInArrayIndex].length; a2++) { + for (var s2 = 0, r2 = 0; r2 < e2.globals.series.length; r2++) + void 0 !== e2.globals.series[r2][a2] && -1 === t3.indexOf(r2) && (s2 += e2.globals.series[r2][a2]); + i2.push(s2); + } + return i2; + } }, { key: "getSeriesTotalByIndex", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null; + return null === t3 ? this.w.config.series.reduce(function(t4, e2) { + return t4 + e2; + }, 0) : this.w.globals.series[t3].reduce(function(t4, e2) { + return t4 + e2; + }, 0); + } }, { key: "isSeriesNull", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null; + return 0 === (null === t3 ? this.w.config.series.filter(function(t4) { + return null !== t4; + }) : this.w.config.series[t3].data.filter(function(t4) { + return null !== t4; + })).length; + } }, { key: "seriesHaveSameValues", value: function(t3) { + return this.w.globals.series[t3].every(function(t4, e2, i2) { + return t4 === i2[0]; + }); + } }, { key: "getCategoryLabels", value: function(t3) { + var e2 = this.w, i2 = t3.slice(); + return e2.config.xaxis.convertedCatToNumeric && (i2 = t3.map(function(t4, i3) { + return e2.config.xaxis.labels.formatter(t4 - e2.globals.minX + 1); + })), i2; + } }, { key: "getLargestSeries", value: function() { + var t3 = this.w; + t3.globals.maxValsInArrayIndex = t3.globals.series.map(function(t4) { + return t4.length; + }).indexOf(Math.max.apply(Math, t3.globals.series.map(function(t4) { + return t4.length; + }))); + } }, { key: "getLargestMarkerSize", value: function() { + var t3 = this.w, e2 = 0; + return t3.globals.markers.size.forEach(function(t4) { + e2 = Math.max(e2, t4); + }), t3.config.markers.discrete && t3.config.markers.discrete.length && t3.config.markers.discrete.forEach(function(t4) { + e2 = Math.max(e2, t4.size); + }), e2 > 0 && (e2 += t3.config.markers.hover.sizeOffset + 1), t3.globals.markers.largestSize = e2, e2; + } }, { key: "getSeriesTotals", value: function() { + var t3 = this.w; + t3.globals.seriesTotals = t3.globals.series.map(function(t4, e2) { + var i2 = 0; + if (Array.isArray(t4)) + for (var a2 = 0; a2 < t4.length; a2++) + i2 += t4[a2]; + else + i2 += t4; + return i2; + }); + } }, { key: "getSeriesTotalsXRange", value: function(t3, e2) { + var i2 = this.w; + return i2.globals.series.map(function(a2, s2) { + for (var r2 = 0, o2 = 0; o2 < a2.length; o2++) + i2.globals.seriesX[s2][o2] > t3 && i2.globals.seriesX[s2][o2] < e2 && (r2 += a2[o2]); + return r2; + }); + } }, { key: "getPercentSeries", value: function() { + var t3 = this.w; + t3.globals.seriesPercent = t3.globals.series.map(function(e2, i2) { + var a2 = []; + if (Array.isArray(e2)) + for (var s2 = 0; s2 < e2.length; s2++) { + var r2 = t3.globals.stackedSeriesTotals[s2], o2 = 0; + r2 && (o2 = 100 * e2[s2] / r2), a2.push(o2); + } + else { + var n2 = 100 * e2 / t3.globals.seriesTotals.reduce(function(t4, e3) { + return t4 + e3; + }, 0); + a2.push(n2); + } + return a2; + }); + } }, { key: "getCalculatedRatios", value: function() { + var t3, e2, i2, a2, s2 = this.w.globals, r2 = [], o2 = 0, n2 = [], l2 = 0.1, h2 = 0; + if (s2.yRange = [], s2.isMultipleYAxis) + for (var c2 = 0; c2 < s2.minYArr.length; c2++) + s2.yRange.push(Math.abs(s2.minYArr[c2] - s2.maxYArr[c2])), n2.push(0); + else + s2.yRange.push(Math.abs(s2.minY - s2.maxY)); + s2.xRange = Math.abs(s2.maxX - s2.minX), s2.zRange = Math.abs(s2.maxZ - s2.minZ); + for (var d2 = 0; d2 < s2.yRange.length; d2++) + r2.push(s2.yRange[d2] / s2.gridHeight); + if (e2 = s2.xRange / s2.gridWidth, i2 = Math.abs(s2.initialMaxX - s2.initialMinX) / s2.gridWidth, t3 = s2.yRange / s2.gridWidth, a2 = s2.xRange / s2.gridHeight, (o2 = s2.zRange / s2.gridHeight * 16) || (o2 = 1), s2.minY !== Number.MIN_VALUE && 0 !== Math.abs(s2.minY) && (s2.hasNegs = true), s2.isMultipleYAxis) { + n2 = []; + for (var g2 = 0; g2 < r2.length; g2++) + n2.push(-s2.minYArr[g2] / r2[g2]); + } else + n2.push(-s2.minY / r2[0]), s2.minY !== Number.MIN_VALUE && 0 !== Math.abs(s2.minY) && (l2 = -s2.minY / t3, h2 = s2.minX / e2); + return { yRatio: r2, invertedYRatio: t3, zRatio: o2, xRatio: e2, initialXRatio: i2, invertedXRatio: a2, baseLineInvertedY: l2, baseLineY: n2, baseLineX: h2 }; + } }, { key: "getLogSeries", value: function(t3) { + var e2 = this, i2 = this.w; + return i2.globals.seriesLog = t3.map(function(t4, a2) { + return i2.config.yaxis[a2] && i2.config.yaxis[a2].logarithmic ? t4.map(function(t5) { + return null === t5 ? null : e2.getLogVal(i2.config.yaxis[a2].logBase, t5, a2); + }) : t4; + }), i2.globals.invalidLogScale ? t3 : i2.globals.seriesLog; + } }, { key: "getBaseLog", value: function(t3, e2) { + return Math.log(e2) / Math.log(t3); + } }, { key: "getLogVal", value: function(t3, e2, i2) { + if (0 === e2) + return 0; + var a2 = this.w, s2 = 0 === a2.globals.minYArr[i2] ? -1 : this.getBaseLog(t3, a2.globals.minYArr[i2]), r2 = (0 === a2.globals.maxYArr[i2] ? 0 : this.getBaseLog(t3, a2.globals.maxYArr[i2])) - s2; + return e2 < 1 ? e2 / r2 : (this.getBaseLog(t3, e2) - s2) / r2; + } }, { key: "getLogYRatios", value: function(t3) { + var e2 = this, i2 = this.w, a2 = this.w.globals; + return a2.yLogRatio = t3.slice(), a2.logYRange = a2.yRange.map(function(t4, s2) { + if (i2.config.yaxis[s2] && e2.w.config.yaxis[s2].logarithmic) { + var r2, o2 = -Number.MAX_VALUE, n2 = Number.MIN_VALUE; + return a2.seriesLog.forEach(function(t5, e3) { + t5.forEach(function(t6) { + i2.config.yaxis[e3] && i2.config.yaxis[e3].logarithmic && (o2 = Math.max(t6, o2), n2 = Math.min(t6, n2)); + }); + }), r2 = Math.pow(a2.yRange[s2], Math.abs(n2 - o2) / a2.yRange[s2]), a2.yLogRatio[s2] = r2 / a2.gridHeight, r2; + } + }), a2.invalidLogScale ? t3.slice() : a2.yLogRatio; + } }], [{ key: "checkComboSeries", value: function(t3) { + var e2 = false, i2 = 0, a2 = 0; + return t3.length && void 0 !== t3[0].type && t3.forEach(function(t4) { + "bar" !== t4.type && "column" !== t4.type && "candlestick" !== t4.type && "boxPlot" !== t4.type || i2++, void 0 !== t4.type && a2++; + }), a2 > 0 && (e2 = true), { comboBarCount: i2, comboCharts: e2 }; + } }, { key: "extendArrayProps", value: function(t3, e2, i2) { + return e2.yaxis && (e2 = t3.extendYAxis(e2, i2)), e2.annotations && (e2.annotations.yaxis && (e2 = t3.extendYAxisAnnotations(e2)), e2.annotations.xaxis && (e2 = t3.extendXAxisAnnotations(e2)), e2.annotations.points && (e2 = t3.extendPointAnnotations(e2))), e2; + } }]), t2; + }(); + var w = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.annoCtx = e2; + } + return r(t2, [{ key: "setOrientations", value: function(t3) { + var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, i2 = this.w; + if ("vertical" === t3.label.orientation) { + var a2 = null !== e2 ? e2 : 0, s2 = i2.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a2, "']")); + if (null !== s2) { + var r2 = s2.getBoundingClientRect(); + s2.setAttribute("x", parseFloat(s2.getAttribute("x")) - r2.height + 4), "top" === t3.label.position ? s2.setAttribute("y", parseFloat(s2.getAttribute("y")) + r2.width) : s2.setAttribute("y", parseFloat(s2.getAttribute("y")) - r2.width); + var o2 = this.annoCtx.graphics.rotateAroundCenter(s2), n2 = o2.x, l2 = o2.y; + s2.setAttribute("transform", "rotate(-90 ".concat(n2, " ").concat(l2, ")")); + } + } + } }, { key: "addBackgroundToAnno", value: function(t3, e2) { + var i2 = this.w; + if (!t3 || void 0 === e2.label.text || void 0 !== e2.label.text && !String(e2.label.text).trim()) + return null; + var a2 = i2.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(), s2 = t3.getBoundingClientRect(), r2 = e2.label.style.padding.left, o2 = e2.label.style.padding.right, n2 = e2.label.style.padding.top, l2 = e2.label.style.padding.bottom; + "vertical" === e2.label.orientation && (n2 = e2.label.style.padding.left, l2 = e2.label.style.padding.right, r2 = e2.label.style.padding.top, o2 = e2.label.style.padding.bottom); + var h2 = s2.left - a2.left - r2, c2 = s2.top - a2.top - n2, d2 = this.annoCtx.graphics.drawRect(h2 - i2.globals.barPadForNumericAxis, c2, s2.width + r2 + o2, s2.height + n2 + l2, e2.label.borderRadius, e2.label.style.background, 1, e2.label.borderWidth, e2.label.borderColor, 0); + return e2.id && d2.node.classList.add(e2.id), d2; + } }, { key: "annotationsBackground", value: function() { + var t3 = this, e2 = this.w, i2 = function(i3, a2, s2) { + var r2 = e2.globals.dom.baseEl.querySelector(".apexcharts-".concat(s2, "-annotations .apexcharts-").concat(s2, "-annotation-label[rel='").concat(a2, "']")); + if (r2) { + var o2 = r2.parentNode, n2 = t3.addBackgroundToAnno(r2, i3); + n2 && (o2.insertBefore(n2.node, r2), i3.label.mouseEnter && n2.node.addEventListener("mouseenter", i3.label.mouseEnter.bind(t3, i3)), i3.label.mouseLeave && n2.node.addEventListener("mouseleave", i3.label.mouseLeave.bind(t3, i3)), i3.label.click && n2.node.addEventListener("click", i3.label.click.bind(t3, i3))); + } + }; + e2.config.annotations.xaxis.map(function(t4, e3) { + i2(t4, e3, "xaxis"); + }), e2.config.annotations.yaxis.map(function(t4, e3) { + i2(t4, e3, "yaxis"); + }), e2.config.annotations.points.map(function(t4, e3) { + i2(t4, e3, "point"); + }); + } }, { key: "getY1Y2", value: function(t3, e2) { + var i2, a2 = "y1" === t3 ? e2.y : e2.y2, s2 = this.w; + if (this.annoCtx.invertAxis) { + var r2 = s2.globals.labels.indexOf(a2); + s2.config.xaxis.convertedCatToNumeric && (r2 = s2.globals.categoryLabels.indexOf(a2)); + var o2 = s2.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child(" + (r2 + 1) + ")"); + o2 && (i2 = parseFloat(o2.getAttribute("y"))); + } else { + var n2; + if (s2.config.yaxis[e2.yAxisIndex].logarithmic) + n2 = (a2 = new y(this.annoCtx.ctx).getLogVal(a2, e2.yAxisIndex)) / s2.globals.yLogRatio[e2.yAxisIndex]; + else + n2 = (a2 - s2.globals.minYArr[e2.yAxisIndex]) / (s2.globals.yRange[e2.yAxisIndex] / s2.globals.gridHeight); + i2 = s2.globals.gridHeight - n2, !e2.marker || void 0 !== e2.y && null !== e2.y || (i2 = 0), s2.config.yaxis[e2.yAxisIndex] && s2.config.yaxis[e2.yAxisIndex].reversed && (i2 = n2); + } + return "string" == typeof a2 && a2.indexOf("px") > -1 && (i2 = parseFloat(a2)), i2; + } }, { key: "getX1X2", value: function(t3, e2) { + var i2 = this.w, a2 = this.annoCtx.invertAxis ? i2.globals.minY : i2.globals.minX, s2 = this.annoCtx.invertAxis ? i2.globals.maxY : i2.globals.maxX, r2 = this.annoCtx.invertAxis ? i2.globals.yRange[0] : i2.globals.xRange, o2 = (e2.x - a2) / (r2 / i2.globals.gridWidth); + this.annoCtx.inversedReversedAxis && (o2 = (s2 - e2.x) / (r2 / i2.globals.gridWidth)), "category" !== i2.config.xaxis.type && !i2.config.xaxis.convertedCatToNumeric || this.annoCtx.invertAxis || i2.globals.dataFormatXNumeric || (o2 = this.getStringX(e2.x)); + var n2 = (e2.x2 - a2) / (r2 / i2.globals.gridWidth); + return this.annoCtx.inversedReversedAxis && (n2 = (s2 - e2.x2) / (r2 / i2.globals.gridWidth)), "category" !== i2.config.xaxis.type && !i2.config.xaxis.convertedCatToNumeric || this.annoCtx.invertAxis || i2.globals.dataFormatXNumeric || (n2 = this.getStringX(e2.x2)), void 0 !== e2.x && null !== e2.x || !e2.marker || (o2 = i2.globals.gridWidth), "x1" === t3 && "string" == typeof e2.x && e2.x.indexOf("px") > -1 && (o2 = parseFloat(e2.x)), "x2" === t3 && "string" == typeof e2.x2 && e2.x2.indexOf("px") > -1 && (n2 = parseFloat(e2.x2)), "x1" === t3 ? o2 : n2; + } }, { key: "getStringX", value: function(t3) { + var e2 = this.w, i2 = t3; + e2.config.xaxis.convertedCatToNumeric && e2.globals.categoryLabels.length && (t3 = e2.globals.categoryLabels.indexOf(t3) + 1); + var a2 = e2.globals.labels.indexOf(t3), s2 = e2.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child(" + (a2 + 1) + ")"); + return s2 && (i2 = parseFloat(s2.getAttribute("x"))), i2; + } }]), t2; + }(); + var k = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.annoCtx = e2, this.invertAxis = this.annoCtx.invertAxis, this.helpers = new w(this.annoCtx); + } + return r(t2, [{ key: "addXaxisAnnotation", value: function(t3, e2, i2) { + var a2, s2 = this.w, r2 = this.helpers.getX1X2("x1", t3), o2 = t3.label.text, n2 = t3.strokeDashArray; + if (x.isNumber(r2)) { + if (null === t3.x2 || void 0 === t3.x2) { + var l2 = this.annoCtx.graphics.drawLine(r2 + t3.offsetX, 0 + t3.offsetY, r2 + t3.offsetX, s2.globals.gridHeight + t3.offsetY, t3.borderColor, n2, t3.borderWidth); + e2.appendChild(l2.node), t3.id && l2.node.classList.add(t3.id); + } else { + if ((a2 = this.helpers.getX1X2("x2", t3)) < r2) { + var h2 = r2; + r2 = a2, a2 = h2; + } + var c2 = this.annoCtx.graphics.drawRect(r2 + t3.offsetX, 0 + t3.offsetY, a2 - r2, s2.globals.gridHeight + t3.offsetY, 0, t3.fillColor, t3.opacity, 1, t3.borderColor, n2); + c2.node.classList.add("apexcharts-annotation-rect"), c2.attr("clip-path", "url(#gridRectMask".concat(s2.globals.cuid, ")")), e2.appendChild(c2.node), t3.id && c2.node.classList.add(t3.id); + } + var d2 = this.annoCtx.graphics.getTextRects(o2, parseFloat(t3.label.style.fontSize)), g2 = "top" === t3.label.position ? 4 : "center" === t3.label.position ? s2.globals.gridHeight / 2 + ("vertical" === t3.label.orientation ? d2.width / 2 : 0) : s2.globals.gridHeight, u2 = this.annoCtx.graphics.drawText({ x: r2 + t3.label.offsetX, y: g2 + t3.label.offsetY - ("vertical" === t3.label.orientation ? "top" === t3.label.position ? d2.width / 2 - 12 : -d2.width / 2 : 0), text: o2, textAnchor: t3.label.textAnchor, fontSize: t3.label.style.fontSize, fontFamily: t3.label.style.fontFamily, fontWeight: t3.label.style.fontWeight, foreColor: t3.label.style.color, cssClass: "apexcharts-xaxis-annotation-label ".concat(t3.label.style.cssClass, " ").concat(t3.id ? t3.id : "") }); + u2.attr({ rel: i2 }), e2.appendChild(u2.node), this.annoCtx.helpers.setOrientations(t3, i2); + } + } }, { key: "drawXAxisAnnotations", value: function() { + var t3 = this, e2 = this.w, i2 = this.annoCtx.graphics.group({ class: "apexcharts-xaxis-annotations" }); + return e2.config.annotations.xaxis.map(function(e3, a2) { + t3.addXaxisAnnotation(e3, i2.node, a2); + }), i2; + } }]), t2; + }(); + var A = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.annoCtx = e2, this.helpers = new w(this.annoCtx); + } + return r(t2, [{ key: "addYaxisAnnotation", value: function(t3, e2, i2) { + var a2, s2 = this.w, r2 = t3.strokeDashArray, o2 = this.helpers.getY1Y2("y1", t3), n2 = t3.label.text; + if (null === t3.y2 || void 0 === t3.y2) { + var l2 = this.annoCtx.graphics.drawLine(0 + t3.offsetX, o2 + t3.offsetY, this._getYAxisAnnotationWidth(t3), o2 + t3.offsetY, t3.borderColor, r2, t3.borderWidth); + e2.appendChild(l2.node), t3.id && l2.node.classList.add(t3.id); + } else { + if ((a2 = this.helpers.getY1Y2("y2", t3)) > o2) { + var h2 = o2; + o2 = a2, a2 = h2; + } + var c2 = this.annoCtx.graphics.drawRect(0 + t3.offsetX, a2 + t3.offsetY, this._getYAxisAnnotationWidth(t3), o2 - a2, 0, t3.fillColor, t3.opacity, 1, t3.borderColor, r2); + c2.node.classList.add("apexcharts-annotation-rect"), c2.attr("clip-path", "url(#gridRectMask".concat(s2.globals.cuid, ")")), e2.appendChild(c2.node), t3.id && c2.node.classList.add(t3.id); + } + var d2 = "right" === t3.label.position ? s2.globals.gridWidth : "center" === t3.label.position ? s2.globals.gridWidth / 2 : 0, g2 = this.annoCtx.graphics.drawText({ x: d2 + t3.label.offsetX, y: (null != a2 ? a2 : o2) + t3.label.offsetY - 3, text: n2, textAnchor: t3.label.textAnchor, fontSize: t3.label.style.fontSize, fontFamily: t3.label.style.fontFamily, fontWeight: t3.label.style.fontWeight, foreColor: t3.label.style.color, cssClass: "apexcharts-yaxis-annotation-label ".concat(t3.label.style.cssClass, " ").concat(t3.id ? t3.id : "") }); + g2.attr({ rel: i2 }), e2.appendChild(g2.node); + } }, { key: "_getYAxisAnnotationWidth", value: function(t3) { + var e2 = this.w; + e2.globals.gridWidth; + return (t3.width.indexOf("%") > -1 ? e2.globals.gridWidth * parseInt(t3.width, 10) / 100 : parseInt(t3.width, 10)) + t3.offsetX; + } }, { key: "drawYAxisAnnotations", value: function() { + var t3 = this, e2 = this.w, i2 = this.annoCtx.graphics.group({ class: "apexcharts-yaxis-annotations" }); + return e2.config.annotations.yaxis.map(function(e3, a2) { + t3.addYaxisAnnotation(e3, i2.node, a2); + }), i2; + } }]), t2; + }(); + var S = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.annoCtx = e2, this.helpers = new w(this.annoCtx); + } + return r(t2, [{ key: "addPointAnnotation", value: function(t3, e2, i2) { + this.w; + var a2 = this.helpers.getX1X2("x1", t3), s2 = this.helpers.getY1Y2("y1", t3); + if (x.isNumber(a2)) { + var r2 = { pSize: t3.marker.size, pointStrokeWidth: t3.marker.strokeWidth, pointFillColor: t3.marker.fillColor, pointStrokeColor: t3.marker.strokeColor, shape: t3.marker.shape, pRadius: t3.marker.radius, class: "apexcharts-point-annotation-marker ".concat(t3.marker.cssClass, " ").concat(t3.id ? t3.id : "") }, o2 = this.annoCtx.graphics.drawMarker(a2 + t3.marker.offsetX, s2 + t3.marker.offsetY, r2); + e2.appendChild(o2.node); + var n2 = t3.label.text ? t3.label.text : "", l2 = this.annoCtx.graphics.drawText({ x: a2 + t3.label.offsetX, y: s2 + t3.label.offsetY - t3.marker.size - parseFloat(t3.label.style.fontSize) / 1.6, text: n2, textAnchor: t3.label.textAnchor, fontSize: t3.label.style.fontSize, fontFamily: t3.label.style.fontFamily, fontWeight: t3.label.style.fontWeight, foreColor: t3.label.style.color, cssClass: "apexcharts-point-annotation-label ".concat(t3.label.style.cssClass, " ").concat(t3.id ? t3.id : "") }); + if (l2.attr({ rel: i2 }), e2.appendChild(l2.node), t3.customSVG.SVG) { + var h2 = this.annoCtx.graphics.group({ class: "apexcharts-point-annotations-custom-svg " + t3.customSVG.cssClass }); + h2.attr({ transform: "translate(".concat(a2 + t3.customSVG.offsetX, ", ").concat(s2 + t3.customSVG.offsetY, ")") }), h2.node.innerHTML = t3.customSVG.SVG, e2.appendChild(h2.node); + } + if (t3.image.path) { + var c2 = t3.image.width ? t3.image.width : 20, d2 = t3.image.height ? t3.image.height : 20; + o2 = this.annoCtx.addImage({ x: a2 + t3.image.offsetX - c2 / 2, y: s2 + t3.image.offsetY - d2 / 2, width: c2, height: d2, path: t3.image.path, appendTo: ".apexcharts-point-annotations" }); + } + t3.mouseEnter && o2.node.addEventListener("mouseenter", t3.mouseEnter.bind(this, t3)), t3.mouseLeave && o2.node.addEventListener("mouseleave", t3.mouseLeave.bind(this, t3)), t3.click && o2.node.addEventListener("click", t3.click.bind(this, t3)); + } + } }, { key: "drawPointAnnotations", value: function() { + var t3 = this, e2 = this.w, i2 = this.annoCtx.graphics.group({ class: "apexcharts-point-annotations" }); + return e2.config.annotations.points.map(function(e3, a2) { + t3.addPointAnnotation(e3, i2.node, a2); + }), i2; + } }]), t2; + }(); + var C = { name: "en", options: { months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], toolbar: { exportToSVG: "Download SVG", exportToPNG: "Download PNG", exportToCSV: "Download CSV", menu: "Menu", selection: "Selection", selectionZoom: "Selection Zoom", zoomIn: "Zoom In", zoomOut: "Zoom Out", pan: "Panning", reset: "Reset Zoom" } } }; + var L = function() { + function t2() { + a(this, t2), this.yAxis = { show: true, showAlways: false, showForNullSeries: true, seriesName: void 0, opposite: false, reversed: false, logarithmic: false, logBase: 10, tickAmount: void 0, forceNiceScale: false, max: void 0, min: void 0, floating: false, decimalsInFloat: void 0, labels: { show: true, minWidth: 0, maxWidth: 160, offsetX: 0, offsetY: 0, align: void 0, rotate: 0, padding: 20, style: { colors: [], fontSize: "11px", fontWeight: 400, fontFamily: void 0, cssClass: "" }, formatter: void 0 }, axisBorder: { show: false, color: "#e0e0e0", width: 1, offsetX: 0, offsetY: 0 }, axisTicks: { show: false, color: "#e0e0e0", width: 6, offsetX: 0, offsetY: 0 }, title: { text: void 0, rotate: -90, offsetY: 0, offsetX: 0, style: { color: void 0, fontSize: "11px", fontWeight: 900, fontFamily: void 0, cssClass: "" } }, tooltip: { enabled: false, offsetX: 0 }, crosshairs: { show: true, position: "front", stroke: { color: "#b6b6b6", width: 1, dashArray: 0 } } }, this.pointAnnotation = { id: void 0, x: 0, y: null, yAxisIndex: 0, seriesIndex: 0, mouseEnter: void 0, mouseLeave: void 0, click: void 0, marker: { size: 4, fillColor: "#fff", strokeWidth: 2, strokeColor: "#333", shape: "circle", offsetX: 0, offsetY: 0, radius: 2, cssClass: "" }, label: { borderColor: "#c2c2c2", borderWidth: 1, borderRadius: 2, text: void 0, textAnchor: "middle", offsetX: 0, offsetY: 0, mouseEnter: void 0, mouseLeave: void 0, click: void 0, style: { background: "#fff", color: void 0, fontSize: "11px", fontFamily: void 0, fontWeight: 400, cssClass: "", padding: { left: 5, right: 5, top: 2, bottom: 2 } } }, customSVG: { SVG: void 0, cssClass: void 0, offsetX: 0, offsetY: 0 }, image: { path: void 0, width: 20, height: 20, offsetX: 0, offsetY: 0 } }, this.yAxisAnnotation = { id: void 0, y: 0, y2: null, strokeDashArray: 1, fillColor: "#c2c2c2", borderColor: "#c2c2c2", borderWidth: 1, opacity: 0.3, offsetX: 0, offsetY: 0, width: "100%", yAxisIndex: 0, label: { borderColor: "#c2c2c2", borderWidth: 1, borderRadius: 2, text: void 0, textAnchor: "end", position: "right", offsetX: 0, offsetY: -3, mouseEnter: void 0, mouseLeave: void 0, click: void 0, style: { background: "#fff", color: void 0, fontSize: "11px", fontFamily: void 0, fontWeight: 400, cssClass: "", padding: { left: 5, right: 5, top: 2, bottom: 2 } } } }, this.xAxisAnnotation = { id: void 0, x: 0, x2: null, strokeDashArray: 1, fillColor: "#c2c2c2", borderColor: "#c2c2c2", borderWidth: 1, opacity: 0.3, offsetX: 0, offsetY: 0, label: { borderColor: "#c2c2c2", borderWidth: 1, borderRadius: 2, text: void 0, textAnchor: "middle", orientation: "vertical", position: "top", offsetX: 0, offsetY: 0, mouseEnter: void 0, mouseLeave: void 0, click: void 0, style: { background: "#fff", color: void 0, fontSize: "11px", fontFamily: void 0, fontWeight: 400, cssClass: "", padding: { left: 5, right: 5, top: 2, bottom: 2 } } } }, this.text = { x: 0, y: 0, text: "", textAnchor: "start", foreColor: void 0, fontSize: "13px", fontFamily: void 0, fontWeight: 400, appendTo: ".apexcharts-annotations", backgroundColor: "transparent", borderColor: "#c2c2c2", borderRadius: 0, borderWidth: 0, paddingLeft: 4, paddingRight: 4, paddingTop: 2, paddingBottom: 2 }; + } + return r(t2, [{ key: "init", value: function() { + return { annotations: { yaxis: [this.yAxisAnnotation], xaxis: [this.xAxisAnnotation], points: [this.pointAnnotation], texts: [], images: [], shapes: [] }, chart: { animations: { enabled: true, easing: "easeinout", speed: 800, animateGradually: { delay: 150, enabled: true }, dynamicAnimation: { enabled: true, speed: 350 } }, background: "transparent", locales: [C], defaultLocale: "en", dropShadow: { enabled: false, enabledOnSeries: void 0, top: 2, left: 2, blur: 4, color: "#000", opacity: 0.35 }, events: { animationEnd: void 0, beforeMount: void 0, mounted: void 0, updated: void 0, click: void 0, mouseMove: void 0, mouseLeave: void 0, xAxisLabelClick: void 0, legendClick: void 0, markerClick: void 0, selection: void 0, dataPointSelection: void 0, dataPointMouseEnter: void 0, dataPointMouseLeave: void 0, beforeZoom: void 0, beforeResetZoom: void 0, zoomed: void 0, scrolled: void 0, brushScrolled: void 0 }, foreColor: "#373d3f", fontFamily: "Helvetica, Arial, sans-serif", height: "auto", parentHeightOffset: 15, redrawOnParentResize: true, redrawOnWindowResize: true, id: void 0, group: void 0, offsetX: 0, offsetY: 0, selection: { enabled: false, type: "x", fill: { color: "#24292e", opacity: 0.1 }, stroke: { width: 1, color: "#24292e", opacity: 0.4, dashArray: 3 }, xaxis: { min: void 0, max: void 0 }, yaxis: { min: void 0, max: void 0 } }, sparkline: { enabled: false }, brush: { enabled: false, autoScaleYaxis: true, target: void 0, targets: void 0 }, stacked: false, stackType: "normal", toolbar: { show: true, offsetX: 0, offsetY: 0, tools: { download: true, selection: true, zoom: true, zoomin: true, zoomout: true, pan: true, reset: true, customIcons: [] }, export: { csv: { filename: void 0, columnDelimiter: ",", headerCategory: "category", headerValue: "value", dateFormatter: function(t3) { + return new Date(t3).toDateString(); + } }, png: { filename: void 0 }, svg: { filename: void 0 } }, autoSelected: "zoom" }, type: "line", width: "100%", zoom: { enabled: true, type: "x", autoScaleYaxis: false, zoomedArea: { fill: { color: "#90CAF9", opacity: 0.4 }, stroke: { color: "#0D47A1", opacity: 0.4, width: 1 } } } }, plotOptions: { area: { fillTo: "origin" }, bar: { horizontal: false, columnWidth: "70%", barHeight: "70%", distributed: false, borderRadius: 0, borderRadiusApplication: "around", borderRadiusWhenStacked: "last", rangeBarOverlap: true, rangeBarGroupRows: false, hideZeroBarsWhenGrouped: false, isDumbbell: false, dumbbellColors: void 0, isFunnel: false, isFunnel3d: true, colors: { ranges: [], backgroundBarColors: [], backgroundBarOpacity: 1, backgroundBarRadius: 0 }, dataLabels: { position: "top", maxItems: 100, hideOverflowingLabels: true, orientation: "horizontal", total: { enabled: false, formatter: void 0, offsetX: 0, offsetY: 0, style: { color: "#373d3f", fontSize: "12px", fontFamily: void 0, fontWeight: 600 } } } }, bubble: { zScaling: true, minBubbleRadius: void 0, maxBubbleRadius: void 0 }, candlestick: { colors: { upward: "#00B746", downward: "#EF403C" }, wick: { useFillColor: true } }, boxPlot: { colors: { upper: "#00E396", lower: "#008FFB" } }, heatmap: { radius: 2, enableShades: true, shadeIntensity: 0.5, reverseNegativeShade: false, distributed: false, useFillColorAsStroke: false, colorScale: { inverse: false, ranges: [], min: void 0, max: void 0 } }, treemap: { enableShades: true, shadeIntensity: 0.5, distributed: false, reverseNegativeShade: false, useFillColorAsStroke: false, dataLabels: { format: "scale" }, colorScale: { inverse: false, ranges: [], min: void 0, max: void 0 } }, radialBar: { inverseOrder: false, startAngle: 0, endAngle: 360, offsetX: 0, offsetY: 0, hollow: { margin: 5, size: "50%", background: "transparent", image: void 0, imageWidth: 150, imageHeight: 150, imageOffsetX: 0, imageOffsetY: 0, imageClipped: true, position: "front", dropShadow: { enabled: false, top: 0, left: 0, blur: 3, color: "#000", opacity: 0.5 } }, track: { show: true, startAngle: void 0, endAngle: void 0, background: "#f2f2f2", strokeWidth: "97%", opacity: 1, margin: 5, dropShadow: { enabled: false, top: 0, left: 0, blur: 3, color: "#000", opacity: 0.5 } }, dataLabels: { show: true, name: { show: true, fontSize: "16px", fontFamily: void 0, fontWeight: 600, color: void 0, offsetY: 0, formatter: function(t3) { + return t3; + } }, value: { show: true, fontSize: "14px", fontFamily: void 0, fontWeight: 400, color: void 0, offsetY: 16, formatter: function(t3) { + return t3 + "%"; + } }, total: { show: false, label: "Total", fontSize: "16px", fontWeight: 600, fontFamily: void 0, color: void 0, formatter: function(t3) { + return t3.globals.seriesTotals.reduce(function(t4, e2) { + return t4 + e2; + }, 0) / t3.globals.series.length + "%"; + } } } }, pie: { customScale: 1, offsetX: 0, offsetY: 0, startAngle: 0, endAngle: 360, expandOnClick: true, dataLabels: { offset: 0, minAngleToShowLabel: 10 }, donut: { size: "65%", background: "transparent", labels: { show: false, name: { show: true, fontSize: "16px", fontFamily: void 0, fontWeight: 600, color: void 0, offsetY: -10, formatter: function(t3) { + return t3; + } }, value: { show: true, fontSize: "20px", fontFamily: void 0, fontWeight: 400, color: void 0, offsetY: 10, formatter: function(t3) { + return t3; + } }, total: { show: false, showAlways: false, label: "Total", fontSize: "16px", fontWeight: 400, fontFamily: void 0, color: void 0, formatter: function(t3) { + return t3.globals.seriesTotals.reduce(function(t4, e2) { + return t4 + e2; + }, 0); + } } } } }, polarArea: { rings: { strokeWidth: 1, strokeColor: "#e8e8e8" }, spokes: { strokeWidth: 1, connectorColors: "#e8e8e8" } }, radar: { size: void 0, offsetX: 0, offsetY: 0, polygons: { strokeWidth: 1, strokeColors: "#e8e8e8", connectorColors: "#e8e8e8", fill: { colors: void 0 } } } }, colors: void 0, dataLabels: { enabled: true, enabledOnSeries: void 0, formatter: function(t3) { + return null !== t3 ? t3 : ""; + }, textAnchor: "middle", distributed: false, offsetX: 0, offsetY: 0, style: { fontSize: "12px", fontFamily: void 0, fontWeight: 600, colors: void 0 }, background: { enabled: true, foreColor: "#fff", borderRadius: 2, padding: 4, opacity: 0.9, borderWidth: 1, borderColor: "#fff", dropShadow: { enabled: false, top: 1, left: 1, blur: 1, color: "#000", opacity: 0.45 } }, dropShadow: { enabled: false, top: 1, left: 1, blur: 1, color: "#000", opacity: 0.45 } }, fill: { type: "solid", colors: void 0, opacity: 0.85, gradient: { shade: "dark", type: "horizontal", shadeIntensity: 0.5, gradientToColors: void 0, inverseColors: true, opacityFrom: 1, opacityTo: 1, stops: [0, 50, 100], colorStops: [] }, image: { src: [], width: void 0, height: void 0 }, pattern: { style: "squares", width: 6, height: 6, strokeWidth: 2 } }, forecastDataPoints: { count: 0, fillOpacity: 0.5, strokeWidth: void 0, dashArray: 4 }, grid: { show: true, borderColor: "#e0e0e0", strokeDashArray: 0, position: "back", xaxis: { lines: { show: false } }, yaxis: { lines: { show: true } }, row: { colors: void 0, opacity: 0.5 }, column: { colors: void 0, opacity: 0.5 }, padding: { top: 0, right: 10, bottom: 0, left: 12 } }, labels: [], legend: { show: true, showForSingleSeries: false, showForNullSeries: true, showForZeroSeries: true, floating: false, position: "bottom", horizontalAlign: "center", inverseOrder: false, fontSize: "12px", fontFamily: void 0, fontWeight: 400, width: void 0, height: void 0, formatter: void 0, tooltipHoverFormatter: void 0, offsetX: -20, offsetY: 4, customLegendItems: [], labels: { colors: void 0, useSeriesColors: false }, markers: { width: 12, height: 12, strokeWidth: 0, fillColors: void 0, strokeColor: "#fff", radius: 12, customHTML: void 0, offsetX: 0, offsetY: 0, onClick: void 0 }, itemMargin: { horizontal: 5, vertical: 2 }, onItemClick: { toggleDataSeries: true }, onItemHover: { highlightDataSeries: true } }, markers: { discrete: [], size: 0, colors: void 0, strokeColors: "#fff", strokeWidth: 2, strokeOpacity: 0.9, strokeDashArray: 0, fillOpacity: 1, shape: "circle", width: 8, height: 8, radius: 2, offsetX: 0, offsetY: 0, onClick: void 0, onDblClick: void 0, showNullDataPoints: true, hover: { size: void 0, sizeOffset: 3 } }, noData: { text: void 0, align: "center", verticalAlign: "middle", offsetX: 0, offsetY: 0, style: { color: void 0, fontSize: "14px", fontFamily: void 0 } }, responsive: [], series: void 0, states: { normal: { filter: { type: "none", value: 0 } }, hover: { filter: { type: "lighten", value: 0.1 } }, active: { allowMultipleDataPointsSelection: false, filter: { type: "darken", value: 0.5 } } }, title: { text: void 0, align: "left", margin: 5, offsetX: 0, offsetY: 0, floating: false, style: { fontSize: "14px", fontWeight: 900, fontFamily: void 0, color: void 0 } }, subtitle: { text: void 0, align: "left", margin: 5, offsetX: 0, offsetY: 30, floating: false, style: { fontSize: "12px", fontWeight: 400, fontFamily: void 0, color: void 0 } }, stroke: { show: true, curve: "smooth", lineCap: "butt", width: 2, colors: void 0, dashArray: 0, fill: { type: "solid", colors: void 0, opacity: 0.85, gradient: { shade: "dark", type: "horizontal", shadeIntensity: 0.5, gradientToColors: void 0, inverseColors: true, opacityFrom: 1, opacityTo: 1, stops: [0, 50, 100], colorStops: [] } } }, tooltip: { enabled: true, enabledOnSeries: void 0, shared: true, followCursor: false, intersect: false, inverseOrder: false, custom: void 0, fillSeriesColor: false, theme: "light", cssClass: "", style: { fontSize: "12px", fontFamily: void 0 }, onDatasetHover: { highlightDataSeries: false }, x: { show: true, format: "dd MMM", formatter: void 0 }, y: { formatter: void 0, title: { formatter: function(t3) { + return t3 ? t3 + ": " : ""; + } } }, z: { formatter: void 0, title: "Size: " }, marker: { show: true, fillColors: void 0 }, items: { display: "flex" }, fixed: { enabled: false, position: "topRight", offsetX: 0, offsetY: 0 } }, xaxis: { type: "category", categories: [], convertedCatToNumeric: false, offsetX: 0, offsetY: 0, overwriteCategories: void 0, labels: { show: true, rotate: -45, rotateAlways: false, hideOverlappingLabels: true, trim: false, minHeight: void 0, maxHeight: 120, showDuplicates: true, style: { colors: [], fontSize: "12px", fontWeight: 400, fontFamily: void 0, cssClass: "" }, offsetX: 0, offsetY: 0, format: void 0, formatter: void 0, datetimeUTC: true, datetimeFormatter: { year: "yyyy", month: "MMM 'yy", day: "dd MMM", hour: "HH:mm", minute: "HH:mm:ss", second: "HH:mm:ss" } }, group: { groups: [], style: { colors: [], fontSize: "12px", fontWeight: 400, fontFamily: void 0, cssClass: "" } }, axisBorder: { show: true, color: "#e0e0e0", width: "100%", height: 1, offsetX: 0, offsetY: 0 }, axisTicks: { show: true, color: "#e0e0e0", height: 6, offsetX: 0, offsetY: 0 }, tickAmount: void 0, tickPlacement: "on", min: void 0, max: void 0, range: void 0, floating: false, decimalsInFloat: void 0, position: "bottom", title: { text: void 0, offsetX: 0, offsetY: 0, style: { color: void 0, fontSize: "12px", fontWeight: 900, fontFamily: void 0, cssClass: "" } }, crosshairs: { show: true, width: 1, position: "back", opacity: 0.9, stroke: { color: "#b6b6b6", width: 1, dashArray: 3 }, fill: { type: "solid", color: "#B1B9C4", gradient: { colorFrom: "#D8E3F0", colorTo: "#BED1E6", stops: [0, 100], opacityFrom: 0.4, opacityTo: 0.5 } }, dropShadow: { enabled: false, left: 0, top: 0, blur: 1, opacity: 0.4 } }, tooltip: { enabled: true, offsetY: 0, formatter: void 0, style: { fontSize: "12px", fontFamily: void 0 } } }, yaxis: this.yAxis, theme: { mode: "light", palette: "palette1", monochrome: { enabled: false, color: "#008FFB", shadeTo: "light", shadeIntensity: 0.65 } } }; + } }]), t2; + }(); + var P = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.graphics = new m(this.ctx), this.w.globals.isBarHorizontal && (this.invertAxis = true), this.helpers = new w(this), this.xAxisAnnotations = new k(this), this.yAxisAnnotations = new A(this), this.pointsAnnotations = new S(this), this.w.globals.isBarHorizontal && this.w.config.yaxis[0].reversed && (this.inversedReversedAxis = true), this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints; + } + return r(t2, [{ key: "drawAxesAnnotations", value: function() { + var t3 = this.w; + if (t3.globals.axisCharts) { + for (var e2 = this.yAxisAnnotations.drawYAxisAnnotations(), i2 = this.xAxisAnnotations.drawXAxisAnnotations(), a2 = this.pointsAnnotations.drawPointAnnotations(), s2 = t3.config.chart.animations.enabled, r2 = [e2, i2, a2], o2 = [i2.node, e2.node, a2.node], n2 = 0; n2 < 3; n2++) + t3.globals.dom.elGraphical.add(r2[n2]), !s2 || t3.globals.resized || t3.globals.dataChanged || "scatter" !== t3.config.chart.type && "bubble" !== t3.config.chart.type && t3.globals.dataPoints > 1 && o2[n2].classList.add("apexcharts-element-hidden"), t3.globals.delayedElements.push({ el: o2[n2], index: 0 }); + this.helpers.annotationsBackground(); + } + } }, { key: "drawImageAnnos", value: function() { + var t3 = this; + this.w.config.annotations.images.map(function(e2, i2) { + t3.addImage(e2, i2); + }); + } }, { key: "drawTextAnnos", value: function() { + var t3 = this; + this.w.config.annotations.texts.map(function(e2, i2) { + t3.addText(e2, i2); + }); + } }, { key: "addXaxisAnnotation", value: function(t3, e2, i2) { + this.xAxisAnnotations.addXaxisAnnotation(t3, e2, i2); + } }, { key: "addYaxisAnnotation", value: function(t3, e2, i2) { + this.yAxisAnnotations.addYaxisAnnotation(t3, e2, i2); + } }, { key: "addPointAnnotation", value: function(t3, e2, i2) { + this.pointsAnnotations.addPointAnnotation(t3, e2, i2); + } }, { key: "addText", value: function(t3, e2) { + var i2 = t3.x, a2 = t3.y, s2 = t3.text, r2 = t3.textAnchor, o2 = t3.foreColor, n2 = t3.fontSize, l2 = t3.fontFamily, h2 = t3.fontWeight, c2 = t3.cssClass, d2 = t3.backgroundColor, g2 = t3.borderWidth, u2 = t3.strokeDashArray, p2 = t3.borderRadius, f2 = t3.borderColor, x2 = t3.appendTo, b2 = void 0 === x2 ? ".apexcharts-annotations" : x2, v2 = t3.paddingLeft, m2 = void 0 === v2 ? 4 : v2, y2 = t3.paddingRight, w2 = void 0 === y2 ? 4 : y2, k2 = t3.paddingBottom, A2 = void 0 === k2 ? 2 : k2, S2 = t3.paddingTop, C2 = void 0 === S2 ? 2 : S2, L2 = this.w, P2 = this.graphics.drawText({ x: i2, y: a2, text: s2, textAnchor: r2 || "start", fontSize: n2 || "12px", fontWeight: h2 || "regular", fontFamily: l2 || L2.config.chart.fontFamily, foreColor: o2 || L2.config.chart.foreColor, cssClass: c2 }), I2 = L2.globals.dom.baseEl.querySelector(b2); + I2 && I2.appendChild(P2.node); + var M2 = P2.bbox(); + if (s2) { + var T2 = this.graphics.drawRect(M2.x - m2, M2.y - C2, M2.width + m2 + w2, M2.height + A2 + C2, p2, d2 || "transparent", 1, g2, f2, u2); + I2.insertBefore(T2.node, P2.node); + } + } }, { key: "addImage", value: function(t3, e2) { + var i2 = this.w, a2 = t3.path, s2 = t3.x, r2 = void 0 === s2 ? 0 : s2, o2 = t3.y, n2 = void 0 === o2 ? 0 : o2, l2 = t3.width, h2 = void 0 === l2 ? 20 : l2, c2 = t3.height, d2 = void 0 === c2 ? 20 : c2, g2 = t3.appendTo, u2 = void 0 === g2 ? ".apexcharts-annotations" : g2, p2 = i2.globals.dom.Paper.image(a2); + p2.size(h2, d2).move(r2, n2); + var f2 = i2.globals.dom.baseEl.querySelector(u2); + return f2 && f2.appendChild(p2.node), p2; + } }, { key: "addXaxisAnnotationExternal", value: function(t3, e2, i2) { + return this.addAnnotationExternal({ params: t3, pushToMemory: e2, context: i2, type: "xaxis", contextMethod: i2.addXaxisAnnotation }), i2; + } }, { key: "addYaxisAnnotationExternal", value: function(t3, e2, i2) { + return this.addAnnotationExternal({ params: t3, pushToMemory: e2, context: i2, type: "yaxis", contextMethod: i2.addYaxisAnnotation }), i2; + } }, { key: "addPointAnnotationExternal", value: function(t3, e2, i2) { + return void 0 === this.invertAxis && (this.invertAxis = i2.w.globals.isBarHorizontal), this.addAnnotationExternal({ params: t3, pushToMemory: e2, context: i2, type: "point", contextMethod: i2.addPointAnnotation }), i2; + } }, { key: "addAnnotationExternal", value: function(t3) { + var e2 = t3.params, i2 = t3.pushToMemory, a2 = t3.context, s2 = t3.type, r2 = t3.contextMethod, o2 = a2, n2 = o2.w, l2 = n2.globals.dom.baseEl.querySelector(".apexcharts-".concat(s2, "-annotations")), h2 = l2.childNodes.length + 1, c2 = new L(), d2 = Object.assign({}, "xaxis" === s2 ? c2.xAxisAnnotation : "yaxis" === s2 ? c2.yAxisAnnotation : c2.pointAnnotation), g2 = x.extend(d2, e2); + switch (s2) { + case "xaxis": + this.addXaxisAnnotation(g2, l2, h2); + break; + case "yaxis": + this.addYaxisAnnotation(g2, l2, h2); + break; + case "point": + this.addPointAnnotation(g2, l2, h2); + } + var u2 = n2.globals.dom.baseEl.querySelector(".apexcharts-".concat(s2, "-annotations .apexcharts-").concat(s2, "-annotation-label[rel='").concat(h2, "']")), p2 = this.helpers.addBackgroundToAnno(u2, g2); + return p2 && l2.insertBefore(p2.node, u2), i2 && n2.globals.memory.methodsToExec.push({ context: o2, id: g2.id ? g2.id : x.randomId(), method: r2, label: "addAnnotation", params: e2 }), a2; + } }, { key: "clearAnnotations", value: function(t3) { + var e2 = t3.w, i2 = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations"); + e2.globals.memory.methodsToExec.map(function(t4, i3) { + "addText" !== t4.label && "addAnnotation" !== t4.label || e2.globals.memory.methodsToExec.splice(i3, 1); + }), i2 = x.listToArray(i2), Array.prototype.forEach.call(i2, function(t4) { + for (; t4.firstChild; ) + t4.removeChild(t4.firstChild); + }); + } }, { key: "removeAnnotation", value: function(t3, e2) { + var i2 = t3.w, a2 = i2.globals.dom.baseEl.querySelectorAll(".".concat(e2)); + a2 && (i2.globals.memory.methodsToExec.map(function(t4, a3) { + t4.id === e2 && i2.globals.memory.methodsToExec.splice(a3, 1); + }), Array.prototype.forEach.call(a2, function(t4) { + t4.parentElement.removeChild(t4); + })); + } }]), t2; + }(); + var I = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.months31 = [1, 3, 5, 7, 8, 10, 12], this.months30 = [2, 4, 6, 9, 11], this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + } + return r(t2, [{ key: "isValidDate", value: function(t3) { + return !isNaN(this.parseDate(t3)); + } }, { key: "getTimeStamp", value: function(t3) { + return Date.parse(t3) ? this.w.config.xaxis.labels.datetimeUTC ? new Date(new Date(t3).toISOString().substr(0, 25)).getTime() : new Date(t3).getTime() : t3; + } }, { key: "getDate", value: function(t3) { + return this.w.config.xaxis.labels.datetimeUTC ? new Date(new Date(t3).toUTCString()) : new Date(t3); + } }, { key: "parseDate", value: function(t3) { + var e2 = Date.parse(t3); + if (!isNaN(e2)) + return this.getTimeStamp(t3); + var i2 = Date.parse(t3.replace(/-/g, "/").replace(/[a-z]+/gi, " ")); + return i2 = this.getTimeStamp(i2); + } }, { key: "parseDateWithTimezone", value: function(t3) { + return Date.parse(t3.replace(/-/g, "/").replace(/[a-z]+/gi, " ")); + } }, { key: "formatDate", value: function(t3, e2) { + var i2 = this.w.globals.locale, a2 = this.w.config.xaxis.labels.datetimeUTC, s2 = ["\0"].concat(u(i2.months)), r2 = [""].concat(u(i2.shortMonths)), o2 = [""].concat(u(i2.days)), n2 = [""].concat(u(i2.shortDays)); + function l2(t4, e3) { + var i3 = t4 + ""; + for (e3 = e3 || 2; i3.length < e3; ) + i3 = "0" + i3; + return i3; + } + var h2 = a2 ? t3.getUTCFullYear() : t3.getFullYear(); + e2 = (e2 = (e2 = e2.replace(/(^|[^\\])yyyy+/g, "$1" + h2)).replace(/(^|[^\\])yy/g, "$1" + h2.toString().substr(2, 2))).replace(/(^|[^\\])y/g, "$1" + h2); + var c2 = (a2 ? t3.getUTCMonth() : t3.getMonth()) + 1; + e2 = (e2 = (e2 = (e2 = e2.replace(/(^|[^\\])MMMM+/g, "$1" + s2[0])).replace(/(^|[^\\])MMM/g, "$1" + r2[0])).replace(/(^|[^\\])MM/g, "$1" + l2(c2))).replace(/(^|[^\\])M/g, "$1" + c2); + var d2 = a2 ? t3.getUTCDate() : t3.getDate(); + e2 = (e2 = (e2 = (e2 = e2.replace(/(^|[^\\])dddd+/g, "$1" + o2[0])).replace(/(^|[^\\])ddd/g, "$1" + n2[0])).replace(/(^|[^\\])dd/g, "$1" + l2(d2))).replace(/(^|[^\\])d/g, "$1" + d2); + var g2 = a2 ? t3.getUTCHours() : t3.getHours(), p2 = g2 > 12 ? g2 - 12 : 0 === g2 ? 12 : g2; + e2 = (e2 = (e2 = (e2 = e2.replace(/(^|[^\\])HH+/g, "$1" + l2(g2))).replace(/(^|[^\\])H/g, "$1" + g2)).replace(/(^|[^\\])hh+/g, "$1" + l2(p2))).replace(/(^|[^\\])h/g, "$1" + p2); + var f2 = a2 ? t3.getUTCMinutes() : t3.getMinutes(); + e2 = (e2 = e2.replace(/(^|[^\\])mm+/g, "$1" + l2(f2))).replace(/(^|[^\\])m/g, "$1" + f2); + var x2 = a2 ? t3.getUTCSeconds() : t3.getSeconds(); + e2 = (e2 = e2.replace(/(^|[^\\])ss+/g, "$1" + l2(x2))).replace(/(^|[^\\])s/g, "$1" + x2); + var b2 = a2 ? t3.getUTCMilliseconds() : t3.getMilliseconds(); + e2 = e2.replace(/(^|[^\\])fff+/g, "$1" + l2(b2, 3)), b2 = Math.round(b2 / 10), e2 = e2.replace(/(^|[^\\])ff/g, "$1" + l2(b2)), b2 = Math.round(b2 / 10); + var v2 = g2 < 12 ? "AM" : "PM"; + e2 = (e2 = (e2 = e2.replace(/(^|[^\\])f/g, "$1" + b2)).replace(/(^|[^\\])TT+/g, "$1" + v2)).replace(/(^|[^\\])T/g, "$1" + v2.charAt(0)); + var m2 = v2.toLowerCase(); + e2 = (e2 = e2.replace(/(^|[^\\])tt+/g, "$1" + m2)).replace(/(^|[^\\])t/g, "$1" + m2.charAt(0)); + var y2 = -t3.getTimezoneOffset(), w2 = a2 || !y2 ? "Z" : y2 > 0 ? "+" : "-"; + if (!a2) { + var k2 = (y2 = Math.abs(y2)) % 60; + w2 += l2(Math.floor(y2 / 60)) + ":" + l2(k2); + } + e2 = e2.replace(/(^|[^\\])K/g, "$1" + w2); + var A2 = (a2 ? t3.getUTCDay() : t3.getDay()) + 1; + return e2 = (e2 = (e2 = (e2 = (e2 = e2.replace(new RegExp(o2[0], "g"), o2[A2])).replace(new RegExp(n2[0], "g"), n2[A2])).replace(new RegExp(s2[0], "g"), s2[c2])).replace(new RegExp(r2[0], "g"), r2[c2])).replace(/\\(.)/g, "$1"); + } }, { key: "getTimeUnitsfromTimestamp", value: function(t3, e2, i2) { + var a2 = this.w; + void 0 !== a2.config.xaxis.min && (t3 = a2.config.xaxis.min), void 0 !== a2.config.xaxis.max && (e2 = a2.config.xaxis.max); + var s2 = this.getDate(t3), r2 = this.getDate(e2), o2 = this.formatDate(s2, "yyyy MM dd HH mm ss fff").split(" "), n2 = this.formatDate(r2, "yyyy MM dd HH mm ss fff").split(" "); + return { minMillisecond: parseInt(o2[6], 10), maxMillisecond: parseInt(n2[6], 10), minSecond: parseInt(o2[5], 10), maxSecond: parseInt(n2[5], 10), minMinute: parseInt(o2[4], 10), maxMinute: parseInt(n2[4], 10), minHour: parseInt(o2[3], 10), maxHour: parseInt(n2[3], 10), minDate: parseInt(o2[2], 10), maxDate: parseInt(n2[2], 10), minMonth: parseInt(o2[1], 10) - 1, maxMonth: parseInt(n2[1], 10) - 1, minYear: parseInt(o2[0], 10), maxYear: parseInt(n2[0], 10) }; + } }, { key: "isLeapYear", value: function(t3) { + return t3 % 4 == 0 && t3 % 100 != 0 || t3 % 400 == 0; + } }, { key: "calculcateLastDaysOfMonth", value: function(t3, e2, i2) { + return this.determineDaysOfMonths(t3, e2) - i2; + } }, { key: "determineDaysOfYear", value: function(t3) { + var e2 = 365; + return this.isLeapYear(t3) && (e2 = 366), e2; + } }, { key: "determineRemainingDaysOfYear", value: function(t3, e2, i2) { + var a2 = this.daysCntOfYear[e2] + i2; + return e2 > 1 && this.isLeapYear() && a2++, a2; + } }, { key: "determineDaysOfMonths", value: function(t3, e2) { + var i2 = 30; + switch (t3 = x.monthMod(t3), true) { + case this.months30.indexOf(t3) > -1: + 2 === t3 && (i2 = this.isLeapYear(e2) ? 29 : 28); + break; + case this.months31.indexOf(t3) > -1: + default: + i2 = 31; + } + return i2; + } }]), t2; + }(); + var M = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.tooltipKeyFormat = "dd MMM"; + } + return r(t2, [{ key: "xLabelFormat", value: function(t3, e2, i2, a2) { + var s2 = this.w; + if ("datetime" === s2.config.xaxis.type && void 0 === s2.config.xaxis.labels.formatter && void 0 === s2.config.tooltip.x.formatter) { + var r2 = new I(this.ctx); + return r2.formatDate(r2.getDate(e2), s2.config.tooltip.x.format); + } + return t3(e2, i2, a2); + } }, { key: "defaultGeneralFormatter", value: function(t3) { + return Array.isArray(t3) ? t3.map(function(t4) { + return t4; + }) : t3; + } }, { key: "defaultYFormatter", value: function(t3, e2, i2) { + var a2 = this.w; + return x.isNumber(t3) && (t3 = 0 !== a2.globals.yValueDecimal ? t3.toFixed(void 0 !== e2.decimalsInFloat ? e2.decimalsInFloat : a2.globals.yValueDecimal) : a2.globals.maxYArr[i2] - a2.globals.minYArr[i2] < 5 ? t3.toFixed(1) : t3.toFixed(0)), t3; + } }, { key: "setLabelFormatters", value: function() { + var t3 = this, e2 = this.w; + return e2.globals.xaxisTooltipFormatter = function(e3) { + return t3.defaultGeneralFormatter(e3); + }, e2.globals.ttKeyFormatter = function(e3) { + return t3.defaultGeneralFormatter(e3); + }, e2.globals.ttZFormatter = function(t4) { + return t4; + }, e2.globals.legendFormatter = function(e3) { + return t3.defaultGeneralFormatter(e3); + }, void 0 !== e2.config.xaxis.labels.formatter ? e2.globals.xLabelFormatter = e2.config.xaxis.labels.formatter : e2.globals.xLabelFormatter = function(t4) { + if (x.isNumber(t4)) { + if (!e2.config.xaxis.convertedCatToNumeric && "numeric" === e2.config.xaxis.type) { + if (x.isNumber(e2.config.xaxis.decimalsInFloat)) + return t4.toFixed(e2.config.xaxis.decimalsInFloat); + var i2 = e2.globals.maxX - e2.globals.minX; + return i2 > 0 && i2 < 100 ? t4.toFixed(1) : t4.toFixed(0); + } + if (e2.globals.isBarHorizontal) { + if (e2.globals.maxY - e2.globals.minYArr < 4) + return t4.toFixed(1); + } + return t4.toFixed(0); + } + return t4; + }, "function" == typeof e2.config.tooltip.x.formatter ? e2.globals.ttKeyFormatter = e2.config.tooltip.x.formatter : e2.globals.ttKeyFormatter = e2.globals.xLabelFormatter, "function" == typeof e2.config.xaxis.tooltip.formatter && (e2.globals.xaxisTooltipFormatter = e2.config.xaxis.tooltip.formatter), (Array.isArray(e2.config.tooltip.y) || void 0 !== e2.config.tooltip.y.formatter) && (e2.globals.ttVal = e2.config.tooltip.y), void 0 !== e2.config.tooltip.z.formatter && (e2.globals.ttZFormatter = e2.config.tooltip.z.formatter), void 0 !== e2.config.legend.formatter && (e2.globals.legendFormatter = e2.config.legend.formatter), e2.config.yaxis.forEach(function(i2, a2) { + void 0 !== i2.labels.formatter ? e2.globals.yLabelFormatters[a2] = i2.labels.formatter : e2.globals.yLabelFormatters[a2] = function(s2) { + return e2.globals.xyCharts ? Array.isArray(s2) ? s2.map(function(e3) { + return t3.defaultYFormatter(e3, i2, a2); + }) : t3.defaultYFormatter(s2, i2, a2) : s2; + }; + }), e2.globals; + } }, { key: "heatmapLabelFormatters", value: function() { + var t3 = this.w; + if ("heatmap" === t3.config.chart.type) { + t3.globals.yAxisScale[0].result = t3.globals.seriesNames.slice(); + var e2 = t3.globals.seriesNames.reduce(function(t4, e3) { + return t4.length > e3.length ? t4 : e3; + }, 0); + t3.globals.yAxisScale[0].niceMax = e2, t3.globals.yAxisScale[0].niceMin = e2; + } + } }]), t2; + }(); + var T = function(t2) { + var e2, i2 = t2.isTimeline, a2 = t2.ctx, s2 = t2.seriesIndex, r2 = t2.dataPointIndex, o2 = t2.y1, n2 = t2.y2, l2 = t2.w, h2 = l2.globals.seriesRangeStart[s2][r2], c2 = l2.globals.seriesRangeEnd[s2][r2], d2 = l2.globals.labels[r2], g2 = l2.config.series[s2].name ? l2.config.series[s2].name : "", u2 = l2.globals.ttKeyFormatter, p2 = l2.config.tooltip.y.title.formatter, f2 = { w: l2, seriesIndex: s2, dataPointIndex: r2, start: h2, end: c2 }; + ("function" == typeof p2 && (g2 = p2(g2, f2)), null !== (e2 = l2.config.series[s2].data[r2]) && void 0 !== e2 && e2.x && (d2 = l2.config.series[s2].data[r2].x), i2) || "datetime" === l2.config.xaxis.type && (d2 = new M(a2).xLabelFormat(l2.globals.ttKeyFormatter, d2, d2, { i: void 0, dateFormatter: new I(a2).formatDate, w: l2 })); + "function" == typeof u2 && (d2 = u2(d2, f2)), Number.isFinite(o2) && Number.isFinite(n2) && (h2 = o2, c2 = n2); + var x2 = "", b2 = "", v2 = l2.globals.colors[s2]; + if (void 0 === l2.config.tooltip.x.formatter) + if ("datetime" === l2.config.xaxis.type) { + var m2 = new I(a2); + x2 = m2.formatDate(m2.getDate(h2), l2.config.tooltip.x.format), b2 = m2.formatDate(m2.getDate(c2), l2.config.tooltip.x.format); + } else + x2 = h2, b2 = c2; + else + x2 = l2.config.tooltip.x.formatter(h2), b2 = l2.config.tooltip.x.formatter(c2); + return { start: h2, end: c2, startVal: x2, endVal: b2, ylabel: d2, color: v2, seriesName: g2 }; + }; + var z = function(t2) { + var e2 = t2.color, i2 = t2.seriesName, a2 = t2.ylabel, s2 = t2.start, r2 = t2.end, o2 = t2.seriesIndex, n2 = t2.dataPointIndex, l2 = t2.ctx.tooltip.tooltipLabels.getFormatters(o2); + s2 = l2.yLbFormatter(s2), r2 = l2.yLbFormatter(r2); + var h2 = l2.yLbFormatter(t2.w.globals.series[o2][n2]), c2 = '\n '.concat(s2, '\n - \n ').concat(r2, "\n "); + return '
' + (i2 || "") + '
' + a2 + ": " + (t2.w.globals.comboCharts ? "rangeArea" === t2.w.config.series[o2].type || "rangeBar" === t2.w.config.series[o2].type ? c2 : "".concat(h2, "") : c2) + "
"; + }; + var X = function() { + function t2(e2) { + a(this, t2), this.opts = e2; + } + return r(t2, [{ key: "hideYAxis", value: function() { + this.opts.yaxis[0].show = false, this.opts.yaxis[0].title.text = "", this.opts.yaxis[0].axisBorder.show = false, this.opts.yaxis[0].axisTicks.show = false, this.opts.yaxis[0].floating = true; + } }, { key: "line", value: function() { + return { chart: { animations: { easing: "swing" } }, dataLabels: { enabled: false }, stroke: { width: 5, curve: "straight" }, markers: { size: 0, hover: { sizeOffset: 6 } }, xaxis: { crosshairs: { width: 1 } } }; + } }, { key: "sparkline", value: function(t3) { + this.hideYAxis(); + return x.extend(t3, { grid: { show: false, padding: { left: 0, right: 0, top: 0, bottom: 0 } }, legend: { show: false }, xaxis: { labels: { show: false }, tooltip: { enabled: false }, axisBorder: { show: false }, axisTicks: { show: false } }, chart: { toolbar: { show: false }, zoom: { enabled: false } }, dataLabels: { enabled: false } }); + } }, { key: "bar", value: function() { + return { chart: { stacked: false, animations: { easing: "swing" } }, plotOptions: { bar: { dataLabels: { position: "center" } } }, dataLabels: { style: { colors: ["#fff"] }, background: { enabled: false } }, stroke: { width: 0, lineCap: "round" }, fill: { opacity: 0.85 }, legend: { markers: { shape: "square", radius: 2, size: 8 } }, tooltip: { shared: false, intersect: true }, xaxis: { tooltip: { enabled: false }, tickPlacement: "between", crosshairs: { width: "barWidth", position: "back", fill: { type: "gradient" }, dropShadow: { enabled: false }, stroke: { width: 0 } } } }; + } }, { key: "funnel", value: function() { + return this.hideYAxis(), e(e({}, this.bar()), {}, { chart: { animations: { easing: "linear", speed: 800, animateGradually: { enabled: false } } }, plotOptions: { bar: { horizontal: true, borderRadiusApplication: "around", borderRadius: 0, dataLabels: { position: "center" } } }, grid: { show: false, padding: { left: 0, right: 0 } }, xaxis: { labels: { show: false }, tooltip: { enabled: false }, axisBorder: { show: false }, axisTicks: { show: false } } }); + } }, { key: "candlestick", value: function() { + var t3 = this; + return { stroke: { width: 1, colors: ["#333"] }, fill: { opacity: 1 }, dataLabels: { enabled: false }, tooltip: { shared: true, custom: function(e2) { + var i2 = e2.seriesIndex, a2 = e2.dataPointIndex, s2 = e2.w; + return t3._getBoxTooltip(s2, i2, a2, ["Open", "High", "", "Low", "Close"], "candlestick"); + } }, states: { active: { filter: { type: "none" } } }, xaxis: { crosshairs: { width: 1 } } }; + } }, { key: "boxPlot", value: function() { + var t3 = this; + return { chart: { animations: { dynamicAnimation: { enabled: false } } }, stroke: { width: 1, colors: ["#24292e"] }, dataLabels: { enabled: false }, tooltip: { shared: true, custom: function(e2) { + var i2 = e2.seriesIndex, a2 = e2.dataPointIndex, s2 = e2.w; + return t3._getBoxTooltip(s2, i2, a2, ["Minimum", "Q1", "Median", "Q3", "Maximum"], "boxPlot"); + } }, markers: { size: 5, strokeWidth: 1, strokeColors: "#111" }, xaxis: { crosshairs: { width: 1 } } }; + } }, { key: "rangeBar", value: function() { + return { chart: { animations: { animateGradually: false } }, stroke: { width: 0, lineCap: "square" }, plotOptions: { bar: { borderRadius: 0, dataLabels: { position: "center" } } }, dataLabels: { enabled: false, formatter: function(t3, e2) { + e2.ctx; + var i2 = e2.seriesIndex, a2 = e2.dataPointIndex, s2 = e2.w, r2 = function() { + var t4 = s2.globals.seriesRangeStart[i2][a2]; + return s2.globals.seriesRangeEnd[i2][a2] - t4; + }; + return s2.globals.comboCharts ? "rangeBar" === s2.config.series[i2].type || "rangeArea" === s2.config.series[i2].type ? r2() : t3 : r2(); + }, background: { enabled: false }, style: { colors: ["#fff"] } }, markers: { size: 10 }, tooltip: { shared: false, followCursor: true, custom: function(t3) { + return t3.w.config.plotOptions && t3.w.config.plotOptions.bar && t3.w.config.plotOptions.bar.horizontal ? function(t4) { + var i2 = T(e(e({}, t4), {}, { isTimeline: true })), a2 = i2.color, s2 = i2.seriesName, r2 = i2.ylabel, o2 = i2.startVal, n2 = i2.endVal; + return z(e(e({}, t4), {}, { color: a2, seriesName: s2, ylabel: r2, start: o2, end: n2 })); + }(t3) : function(t4) { + var i2 = T(t4), a2 = i2.color, s2 = i2.seriesName, r2 = i2.ylabel, o2 = i2.start, n2 = i2.end; + return z(e(e({}, t4), {}, { color: a2, seriesName: s2, ylabel: r2, start: o2, end: n2 })); + }(t3); + } }, xaxis: { tickPlacement: "between", tooltip: { enabled: false }, crosshairs: { stroke: { width: 0 } } } }; + } }, { key: "dumbbell", value: function(t3) { + var e2, i2; + return null !== (e2 = t3.plotOptions.bar) && void 0 !== e2 && e2.barHeight || (t3.plotOptions.bar.barHeight = 2), null !== (i2 = t3.plotOptions.bar) && void 0 !== i2 && i2.columnWidth || (t3.plotOptions.bar.columnWidth = 2), t3; + } }, { key: "area", value: function() { + return { stroke: { width: 4, fill: { type: "solid", gradient: { inverseColors: false, shade: "light", type: "vertical", opacityFrom: 0.65, opacityTo: 0.5, stops: [0, 100, 100] } } }, fill: { type: "gradient", gradient: { inverseColors: false, shade: "light", type: "vertical", opacityFrom: 0.65, opacityTo: 0.5, stops: [0, 100, 100] } }, markers: { size: 0, hover: { sizeOffset: 6 } }, tooltip: { followCursor: false } }; + } }, { key: "rangeArea", value: function() { + return { stroke: { curve: "straight", width: 0 }, fill: { type: "solid", opacity: 0.6 }, markers: { size: 0 }, states: { hover: { filter: { type: "none" } }, active: { filter: { type: "none" } } }, tooltip: { intersect: false, shared: true, followCursor: true, custom: function(t3) { + return function(t4) { + var i2 = T(t4), a2 = i2.color, s2 = i2.seriesName, r2 = i2.ylabel, o2 = i2.start, n2 = i2.end; + return z(e(e({}, t4), {}, { color: a2, seriesName: s2, ylabel: r2, start: o2, end: n2 })); + }(t3); + } } }; + } }, { key: "brush", value: function(t3) { + return x.extend(t3, { chart: { toolbar: { autoSelected: "selection", show: false }, zoom: { enabled: false } }, dataLabels: { enabled: false }, stroke: { width: 1 }, tooltip: { enabled: false }, xaxis: { tooltip: { enabled: false } } }); + } }, { key: "stacked100", value: function(t3) { + t3.dataLabels = t3.dataLabels || {}, t3.dataLabels.formatter = t3.dataLabels.formatter || void 0; + var e2 = t3.dataLabels.formatter; + return t3.yaxis.forEach(function(e3, i2) { + t3.yaxis[i2].min = 0, t3.yaxis[i2].max = 100; + }), "bar" === t3.chart.type && (t3.dataLabels.formatter = e2 || function(t4) { + return "number" == typeof t4 && t4 ? t4.toFixed(0) + "%" : t4; + }), t3; + } }, { key: "stackedBars", value: function() { + var t3 = this.bar(); + return e(e({}, t3), {}, { plotOptions: e(e({}, t3.plotOptions), {}, { bar: e(e({}, t3.plotOptions.bar), {}, { borderRadiusApplication: "end", borderRadiusWhenStacked: "last" }) }) }); + } }, { key: "convertCatToNumeric", value: function(t3) { + return t3.xaxis.convertedCatToNumeric = true, t3; + } }, { key: "convertCatToNumericXaxis", value: function(t3, e2, i2) { + t3.xaxis.type = "numeric", t3.xaxis.labels = t3.xaxis.labels || {}, t3.xaxis.labels.formatter = t3.xaxis.labels.formatter || function(t4) { + return x.isNumber(t4) ? Math.floor(t4) : t4; + }; + var a2 = t3.xaxis.labels.formatter, s2 = t3.xaxis.categories && t3.xaxis.categories.length ? t3.xaxis.categories : t3.labels; + return i2 && i2.length && (s2 = i2.map(function(t4) { + return Array.isArray(t4) ? t4 : String(t4); + })), s2 && s2.length && (t3.xaxis.labels.formatter = function(t4) { + return x.isNumber(t4) ? a2(s2[Math.floor(t4) - 1]) : a2(t4); + }), t3.xaxis.categories = [], t3.labels = [], t3.xaxis.tickAmount = t3.xaxis.tickAmount || "dataPoints", t3; + } }, { key: "bubble", value: function() { + return { dataLabels: { style: { colors: ["#fff"] } }, tooltip: { shared: false, intersect: true }, xaxis: { crosshairs: { width: 0 } }, fill: { type: "solid", gradient: { shade: "light", inverse: true, shadeIntensity: 0.55, opacityFrom: 0.4, opacityTo: 0.8 } } }; + } }, { key: "scatter", value: function() { + return { dataLabels: { enabled: false }, tooltip: { shared: false, intersect: true }, markers: { size: 6, strokeWidth: 1, hover: { sizeOffset: 2 } } }; + } }, { key: "heatmap", value: function() { + return { chart: { stacked: false }, fill: { opacity: 1 }, dataLabels: { style: { colors: ["#fff"] } }, stroke: { colors: ["#fff"] }, tooltip: { followCursor: true, marker: { show: false }, x: { show: false } }, legend: { position: "top", markers: { shape: "square", size: 10, offsetY: 2 } }, grid: { padding: { right: 20 } } }; + } }, { key: "treemap", value: function() { + return { chart: { zoom: { enabled: false } }, dataLabels: { style: { fontSize: 14, fontWeight: 600, colors: ["#fff"] } }, stroke: { show: true, width: 2, colors: ["#fff"] }, legend: { show: false }, fill: { gradient: { stops: [0, 100] } }, tooltip: { followCursor: true, x: { show: false } }, grid: { padding: { left: 0, right: 0 } }, xaxis: { crosshairs: { show: false }, tooltip: { enabled: false } } }; + } }, { key: "pie", value: function() { + return { chart: { toolbar: { show: false } }, plotOptions: { pie: { donut: { labels: { show: false } } } }, dataLabels: { formatter: function(t3) { + return t3.toFixed(1) + "%"; + }, style: { colors: ["#fff"] }, background: { enabled: false }, dropShadow: { enabled: true } }, stroke: { colors: ["#fff"] }, fill: { opacity: 1, gradient: { shade: "light", stops: [0, 100] } }, tooltip: { theme: "dark", fillSeriesColor: true }, legend: { position: "right" } }; + } }, { key: "donut", value: function() { + return { chart: { toolbar: { show: false } }, dataLabels: { formatter: function(t3) { + return t3.toFixed(1) + "%"; + }, style: { colors: ["#fff"] }, background: { enabled: false }, dropShadow: { enabled: true } }, stroke: { colors: ["#fff"] }, fill: { opacity: 1, gradient: { shade: "light", shadeIntensity: 0.35, stops: [80, 100], opacityFrom: 1, opacityTo: 1 } }, tooltip: { theme: "dark", fillSeriesColor: true }, legend: { position: "right" } }; + } }, { key: "polarArea", value: function() { + return this.opts.yaxis[0].tickAmount = this.opts.yaxis[0].tickAmount ? this.opts.yaxis[0].tickAmount : 6, { chart: { toolbar: { show: false } }, dataLabels: { formatter: function(t3) { + return t3.toFixed(1) + "%"; + }, enabled: false }, stroke: { show: true, width: 2 }, fill: { opacity: 0.7 }, tooltip: { theme: "dark", fillSeriesColor: true }, legend: { position: "right" } }; + } }, { key: "radar", value: function() { + return this.opts.yaxis[0].labels.offsetY = this.opts.yaxis[0].labels.offsetY ? this.opts.yaxis[0].labels.offsetY : 6, { dataLabels: { enabled: false, style: { fontSize: "11px" } }, stroke: { width: 2 }, markers: { size: 3, strokeWidth: 1, strokeOpacity: 1 }, fill: { opacity: 0.2 }, tooltip: { shared: false, intersect: true, followCursor: true }, grid: { show: false }, xaxis: { labels: { formatter: function(t3) { + return t3; + }, style: { colors: ["#a8a8a8"], fontSize: "11px" } }, tooltip: { enabled: false }, crosshairs: { show: false } } }; + } }, { key: "radialBar", value: function() { + return { chart: { animations: { dynamicAnimation: { enabled: true, speed: 800 } }, toolbar: { show: false } }, fill: { gradient: { shade: "dark", shadeIntensity: 0.4, inverseColors: false, type: "diagonal2", opacityFrom: 1, opacityTo: 1, stops: [70, 98, 100] } }, legend: { show: false, position: "right" }, tooltip: { enabled: false, fillSeriesColor: true } }; + } }, { key: "_getBoxTooltip", value: function(t3, e2, i2, a2, s2) { + var r2 = t3.globals.seriesCandleO[e2][i2], o2 = t3.globals.seriesCandleH[e2][i2], n2 = t3.globals.seriesCandleM[e2][i2], l2 = t3.globals.seriesCandleL[e2][i2], h2 = t3.globals.seriesCandleC[e2][i2]; + return t3.config.series[e2].type && t3.config.series[e2].type !== s2 ? '
\n '.concat(t3.config.series[e2].name ? t3.config.series[e2].name : "series-" + (e2 + 1), ": ").concat(t3.globals.series[e2][i2], "\n
") : '
') + "
".concat(a2[0], ': ') + r2 + "
" + "
".concat(a2[1], ': ') + o2 + "
" + (n2 ? "
".concat(a2[2], ': ') + n2 + "
" : "") + "
".concat(a2[3], ': ') + l2 + "
" + "
".concat(a2[4], ': ') + h2 + "
"; + } }]), t2; + }(); + var E = function() { + function t2(e2) { + a(this, t2), this.opts = e2; + } + return r(t2, [{ key: "init", value: function(t3) { + var e2 = t3.responsiveOverride, a2 = this.opts, s2 = new L(), r2 = new X(a2); + this.chartType = a2.chart.type, a2 = this.extendYAxis(a2), a2 = this.extendAnnotations(a2); + var o2 = s2.init(), n2 = {}; + if (a2 && "object" === i(a2)) { + var l2, h2, c2, d2, g2, u2, p2, f2, b2, v2, m2 = {}; + m2 = -1 !== ["line", "area", "bar", "candlestick", "boxPlot", "rangeBar", "rangeArea", "bubble", "scatter", "heatmap", "treemap", "pie", "polarArea", "donut", "radar", "radialBar"].indexOf(a2.chart.type) ? r2[a2.chart.type]() : r2.line(), null !== (l2 = a2.plotOptions) && void 0 !== l2 && null !== (h2 = l2.bar) && void 0 !== h2 && h2.isFunnel && (m2 = r2.funnel()), a2.chart.stacked && "bar" === a2.chart.type && (m2 = r2.stackedBars()), null !== (c2 = a2.chart.brush) && void 0 !== c2 && c2.enabled && (m2 = r2.brush(m2)), a2.chart.stacked && "100%" === a2.chart.stackType && (a2 = r2.stacked100(a2)), null !== (d2 = a2.plotOptions) && void 0 !== d2 && null !== (g2 = d2.bar) && void 0 !== g2 && g2.isDumbbell && (a2 = r2.dumbbell(a2)), "monotoneCubic" === (null === (u2 = a2) || void 0 === u2 || null === (p2 = u2.stroke) || void 0 === p2 ? void 0 : p2.curve) && (a2.stroke.curve = "smooth"), this.checkForDarkTheme(window.Apex), this.checkForDarkTheme(a2), a2.xaxis = a2.xaxis || window.Apex.xaxis || {}, e2 || (a2.xaxis.convertedCatToNumeric = false), (null !== (f2 = (a2 = this.checkForCatToNumericXAxis(this.chartType, m2, a2)).chart.sparkline) && void 0 !== f2 && f2.enabled || null !== (b2 = window.Apex.chart) && void 0 !== b2 && null !== (v2 = b2.sparkline) && void 0 !== v2 && v2.enabled) && (m2 = r2.sparkline(m2)), n2 = x.extend(o2, m2); + } + var y2 = x.extend(n2, window.Apex); + return o2 = x.extend(y2, a2), o2 = this.handleUserInputErrors(o2); + } }, { key: "checkForCatToNumericXAxis", value: function(t3, e2, i2) { + var a2, s2, r2 = new X(i2), o2 = ("bar" === t3 || "boxPlot" === t3) && (null === (a2 = i2.plotOptions) || void 0 === a2 || null === (s2 = a2.bar) || void 0 === s2 ? void 0 : s2.horizontal), n2 = "pie" === t3 || "polarArea" === t3 || "donut" === t3 || "radar" === t3 || "radialBar" === t3 || "heatmap" === t3, l2 = "datetime" !== i2.xaxis.type && "numeric" !== i2.xaxis.type, h2 = i2.xaxis.tickPlacement ? i2.xaxis.tickPlacement : e2.xaxis && e2.xaxis.tickPlacement; + return o2 || n2 || !l2 || "between" === h2 || (i2 = r2.convertCatToNumeric(i2)), i2; + } }, { key: "extendYAxis", value: function(t3, e2) { + var i2 = new L(); + (void 0 === t3.yaxis || !t3.yaxis || Array.isArray(t3.yaxis) && 0 === t3.yaxis.length) && (t3.yaxis = {}), t3.yaxis.constructor !== Array && window.Apex.yaxis && window.Apex.yaxis.constructor !== Array && (t3.yaxis = x.extend(t3.yaxis, window.Apex.yaxis)), t3.yaxis.constructor !== Array ? t3.yaxis = [x.extend(i2.yAxis, t3.yaxis)] : t3.yaxis = x.extendArray(t3.yaxis, i2.yAxis); + var a2 = false; + t3.yaxis.forEach(function(t4) { + t4.logarithmic && (a2 = true); + }); + var s2 = t3.series; + return e2 && !s2 && (s2 = e2.config.series), a2 && s2.length !== t3.yaxis.length && s2.length && (t3.yaxis = s2.map(function(e3, a3) { + if (e3.name || (s2[a3].name = "series-".concat(a3 + 1)), t3.yaxis[a3]) + return t3.yaxis[a3].seriesName = s2[a3].name, t3.yaxis[a3]; + var r2 = x.extend(i2.yAxis, t3.yaxis[0]); + return r2.show = false, r2; + })), a2 && s2.length > 1 && s2.length !== t3.yaxis.length && console.warn("A multi-series logarithmic chart should have equal number of series and y-axes"), t3; + } }, { key: "extendAnnotations", value: function(t3) { + return void 0 === t3.annotations && (t3.annotations = {}, t3.annotations.yaxis = [], t3.annotations.xaxis = [], t3.annotations.points = []), t3 = this.extendYAxisAnnotations(t3), t3 = this.extendXAxisAnnotations(t3), t3 = this.extendPointAnnotations(t3); + } }, { key: "extendYAxisAnnotations", value: function(t3) { + var e2 = new L(); + return t3.annotations.yaxis = x.extendArray(void 0 !== t3.annotations.yaxis ? t3.annotations.yaxis : [], e2.yAxisAnnotation), t3; + } }, { key: "extendXAxisAnnotations", value: function(t3) { + var e2 = new L(); + return t3.annotations.xaxis = x.extendArray(void 0 !== t3.annotations.xaxis ? t3.annotations.xaxis : [], e2.xAxisAnnotation), t3; + } }, { key: "extendPointAnnotations", value: function(t3) { + var e2 = new L(); + return t3.annotations.points = x.extendArray(void 0 !== t3.annotations.points ? t3.annotations.points : [], e2.pointAnnotation), t3; + } }, { key: "checkForDarkTheme", value: function(t3) { + t3.theme && "dark" === t3.theme.mode && (t3.tooltip || (t3.tooltip = {}), "light" !== t3.tooltip.theme && (t3.tooltip.theme = "dark"), t3.chart.foreColor || (t3.chart.foreColor = "#f6f7f8"), t3.chart.background || (t3.chart.background = "#424242"), t3.theme.palette || (t3.theme.palette = "palette4")); + } }, { key: "handleUserInputErrors", value: function(t3) { + var e2 = t3; + if (e2.tooltip.shared && e2.tooltip.intersect) + throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false."); + if ("bar" === e2.chart.type && e2.plotOptions.bar.horizontal) { + if (e2.yaxis.length > 1) + throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false"); + e2.yaxis[0].reversed && (e2.yaxis[0].opposite = true), e2.xaxis.tooltip.enabled = false, e2.yaxis[0].tooltip.enabled = false, e2.chart.zoom.enabled = false; + } + return "bar" !== e2.chart.type && "rangeBar" !== e2.chart.type || e2.tooltip.shared && "barWidth" === e2.xaxis.crosshairs.width && e2.series.length > 1 && (e2.xaxis.crosshairs.width = "tickWidth"), "candlestick" !== e2.chart.type && "boxPlot" !== e2.chart.type || e2.yaxis[0].reversed && (console.warn("Reversed y-axis in ".concat(e2.chart.type, " chart is not supported.")), e2.yaxis[0].reversed = false), e2; + } }]), t2; + }(); + var Y = function() { + function t2() { + a(this, t2); + } + return r(t2, [{ key: "initGlobalVars", value: function(t3) { + t3.series = [], t3.seriesCandleO = [], t3.seriesCandleH = [], t3.seriesCandleM = [], t3.seriesCandleL = [], t3.seriesCandleC = [], t3.seriesRangeStart = [], t3.seriesRangeEnd = [], t3.seriesRange = [], t3.seriesPercent = [], t3.seriesGoals = [], t3.seriesX = [], t3.seriesZ = [], t3.seriesNames = [], t3.seriesTotals = [], t3.seriesLog = [], t3.seriesColors = [], t3.stackedSeriesTotals = [], t3.seriesXvalues = [], t3.seriesYvalues = [], t3.labels = [], t3.hasXaxisGroups = false, t3.groups = [], t3.hasSeriesGroups = false, t3.seriesGroups = [], t3.categoryLabels = [], t3.timescaleLabels = [], t3.noLabelsProvided = false, t3.resizeTimer = null, t3.selectionResizeTimer = null, t3.delayedElements = [], t3.pointsArray = [], t3.dataLabelsRects = [], t3.isXNumeric = false, t3.skipLastTimelinelabel = false, t3.skipFirstTimelinelabel = false, t3.isDataXYZ = false, t3.isMultiLineX = false, t3.isMultipleYAxis = false, t3.maxY = -Number.MAX_VALUE, t3.minY = Number.MIN_VALUE, t3.minYArr = [], t3.maxYArr = [], t3.maxX = -Number.MAX_VALUE, t3.minX = Number.MAX_VALUE, t3.initialMaxX = -Number.MAX_VALUE, t3.initialMinX = Number.MAX_VALUE, t3.maxDate = 0, t3.minDate = Number.MAX_VALUE, t3.minZ = Number.MAX_VALUE, t3.maxZ = -Number.MAX_VALUE, t3.minXDiff = Number.MAX_VALUE, t3.yAxisScale = [], t3.xAxisScale = null, t3.xAxisTicksPositions = [], t3.yLabelsCoords = [], t3.yTitleCoords = [], t3.barPadForNumericAxis = 0, t3.padHorizontal = 0, t3.xRange = 0, t3.yRange = [], t3.zRange = 0, t3.dataPoints = 0, t3.xTickAmount = 0; + } }, { key: "globalVars", value: function(t3) { + return { chartID: null, cuid: null, events: { beforeMount: [], mounted: [], updated: [], clicked: [], selection: [], dataPointSelection: [], zoomed: [], scrolled: [] }, colors: [], clientX: null, clientY: null, fill: { colors: [] }, stroke: { colors: [] }, dataLabels: { style: { colors: [] } }, radarPolygons: { fill: { colors: [] } }, markers: { colors: [], size: t3.markers.size, largestSize: 0 }, animationEnded: false, isTouchDevice: "ontouchstart" in window || navigator.msMaxTouchPoints, isDirty: false, isExecCalled: false, initialConfig: null, initialSeries: [], lastXAxis: [], lastYAxis: [], columnSeries: null, labels: [], timescaleLabels: [], noLabelsProvided: false, allSeriesCollapsed: false, collapsedSeries: [], collapsedSeriesIndices: [], ancillaryCollapsedSeries: [], ancillaryCollapsedSeriesIndices: [], risingSeries: [], dataFormatXNumeric: false, capturedSeriesIndex: -1, capturedDataPointIndex: -1, selectedDataPoints: [], goldenPadding: 35, invalidLogScale: false, ignoreYAxisIndexes: [], yAxisSameScaleIndices: [], maxValsInArrayIndex: 0, radialSize: 0, selection: void 0, zoomEnabled: "zoom" === t3.chart.toolbar.autoSelected && t3.chart.toolbar.tools.zoom && t3.chart.zoom.enabled, panEnabled: "pan" === t3.chart.toolbar.autoSelected && t3.chart.toolbar.tools.pan, selectionEnabled: "selection" === t3.chart.toolbar.autoSelected && t3.chart.toolbar.tools.selection, yaxis: null, mousedown: false, lastClientPosition: {}, visibleXRange: void 0, yValueDecimal: 0, total: 0, SVGNS: "http://www.w3.org/2000/svg", svgWidth: 0, svgHeight: 0, noData: false, locale: {}, dom: {}, memory: { methodsToExec: [] }, shouldAnimate: true, skipLastTimelinelabel: false, skipFirstTimelinelabel: false, delayedElements: [], axisCharts: true, isDataXYZ: false, resized: false, resizeTimer: null, comboCharts: false, dataChanged: false, previousPaths: [], allSeriesHasEqualX: true, pointsArray: [], dataLabelsRects: [], lastDrawnDataLabelsIndexes: [], hasNullValues: false, easing: null, zoomed: false, gridWidth: 0, gridHeight: 0, rotateXLabels: false, defaultLabels: false, xLabelFormatter: void 0, yLabelFormatters: [], xaxisTooltipFormatter: void 0, ttKeyFormatter: void 0, ttVal: void 0, ttZFormatter: void 0, LINE_HEIGHT_RATIO: 1.618, xAxisLabelsHeight: 0, xAxisGroupLabelsHeight: 0, xAxisLabelsWidth: 0, yAxisLabelsWidth: 0, scaleX: 1, scaleY: 1, translateX: 0, translateY: 0, translateYAxisX: [], yAxisWidths: [], translateXAxisY: 0, translateXAxisX: 0, tooltip: null }; + } }, { key: "init", value: function(t3) { + var e2 = this.globalVars(t3); + return this.initGlobalVars(e2), e2.initialConfig = x.extend({}, t3), e2.initialSeries = x.clone(t3.series), e2.lastXAxis = x.clone(e2.initialConfig.xaxis), e2.lastYAxis = x.clone(e2.initialConfig.yaxis), e2; + } }]), t2; + }(); + var F = function() { + function t2(e2) { + a(this, t2), this.opts = e2; + } + return r(t2, [{ key: "init", value: function() { + var t3 = new E(this.opts).init({ responsiveOverride: false }); + return { config: t3, globals: new Y().init(t3) }; + } }]), t2; + }(); + var R = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.opts = null, this.seriesIndex = 0; + } + return r(t2, [{ key: "clippedImgArea", value: function(t3) { + var e2 = this.w, i2 = e2.config, a2 = parseInt(e2.globals.gridWidth, 10), s2 = parseInt(e2.globals.gridHeight, 10), r2 = a2 > s2 ? a2 : s2, o2 = t3.image, n2 = 0, l2 = 0; + void 0 === t3.width && void 0 === t3.height ? void 0 !== i2.fill.image.width && void 0 !== i2.fill.image.height ? (n2 = i2.fill.image.width + 1, l2 = i2.fill.image.height) : (n2 = r2 + 1, l2 = r2) : (n2 = t3.width, l2 = t3.height); + var h2 = document.createElementNS(e2.globals.SVGNS, "pattern"); + m.setAttrs(h2, { id: t3.patternID, patternUnits: t3.patternUnits ? t3.patternUnits : "userSpaceOnUse", width: n2 + "px", height: l2 + "px" }); + var c2 = document.createElementNS(e2.globals.SVGNS, "image"); + h2.appendChild(c2), c2.setAttributeNS(window.SVG.xlink, "href", o2), m.setAttrs(c2, { x: 0, y: 0, preserveAspectRatio: "none", width: n2 + "px", height: l2 + "px" }), c2.style.opacity = t3.opacity, e2.globals.dom.elDefs.node.appendChild(h2); + } }, { key: "getSeriesIndex", value: function(t3) { + var e2 = this.w, i2 = e2.config.chart.type; + return ("bar" === i2 || "rangeBar" === i2) && e2.config.plotOptions.bar.distributed || "heatmap" === i2 || "treemap" === i2 ? this.seriesIndex = t3.seriesNumber : this.seriesIndex = t3.seriesNumber % e2.globals.series.length, this.seriesIndex; + } }, { key: "fillPath", value: function(t3) { + var e2 = this.w; + this.opts = t3; + var i2, a2, s2, r2 = this.w.config; + this.seriesIndex = this.getSeriesIndex(t3); + var o2 = this.getFillColors()[this.seriesIndex]; + void 0 !== e2.globals.seriesColors[this.seriesIndex] && (o2 = e2.globals.seriesColors[this.seriesIndex]), "function" == typeof o2 && (o2 = o2({ seriesIndex: this.seriesIndex, dataPointIndex: t3.dataPointIndex, value: t3.value, w: e2 })); + var n2 = t3.fillType ? t3.fillType : this.getFillType(this.seriesIndex), l2 = Array.isArray(r2.fill.opacity) ? r2.fill.opacity[this.seriesIndex] : r2.fill.opacity; + t3.color && (o2 = t3.color), o2 || (o2 = "#fff", console.warn("undefined color - ApexCharts")); + var h2 = o2; + if (-1 === o2.indexOf("rgb") ? o2.length < 9 && (h2 = x.hexToRgba(o2, l2)) : o2.indexOf("rgba") > -1 && (l2 = x.getOpacityFromRGBA(o2)), t3.opacity && (l2 = t3.opacity), "pattern" === n2 && (a2 = this.handlePatternFill({ fillConfig: t3.fillConfig, patternFill: a2, fillColor: o2, fillOpacity: l2, defaultColor: h2 })), "gradient" === n2 && (s2 = this.handleGradientFill({ fillConfig: t3.fillConfig, fillColor: o2, fillOpacity: l2, i: this.seriesIndex })), "image" === n2) { + var c2 = r2.fill.image.src, d2 = t3.patternID ? t3.patternID : ""; + this.clippedImgArea({ opacity: l2, image: Array.isArray(c2) ? t3.seriesNumber < c2.length ? c2[t3.seriesNumber] : c2[0] : c2, width: t3.width ? t3.width : void 0, height: t3.height ? t3.height : void 0, patternUnits: t3.patternUnits, patternID: "pattern".concat(e2.globals.cuid).concat(t3.seriesNumber + 1).concat(d2) }), i2 = "url(#pattern".concat(e2.globals.cuid).concat(t3.seriesNumber + 1).concat(d2, ")"); + } else + i2 = "gradient" === n2 ? s2 : "pattern" === n2 ? a2 : h2; + return t3.solid && (i2 = h2), i2; + } }, { key: "getFillType", value: function(t3) { + var e2 = this.w; + return Array.isArray(e2.config.fill.type) ? e2.config.fill.type[t3] : e2.config.fill.type; + } }, { key: "getFillColors", value: function() { + var t3 = this.w, e2 = t3.config, i2 = this.opts, a2 = []; + return t3.globals.comboCharts ? "line" === t3.config.series[this.seriesIndex].type ? Array.isArray(t3.globals.stroke.colors) ? a2 = t3.globals.stroke.colors : a2.push(t3.globals.stroke.colors) : Array.isArray(t3.globals.fill.colors) ? a2 = t3.globals.fill.colors : a2.push(t3.globals.fill.colors) : "line" === e2.chart.type ? Array.isArray(t3.globals.stroke.colors) ? a2 = t3.globals.stroke.colors : a2.push(t3.globals.stroke.colors) : Array.isArray(t3.globals.fill.colors) ? a2 = t3.globals.fill.colors : a2.push(t3.globals.fill.colors), void 0 !== i2.fillColors && (a2 = [], Array.isArray(i2.fillColors) ? a2 = i2.fillColors.slice() : a2.push(i2.fillColors)), a2; + } }, { key: "handlePatternFill", value: function(t3) { + var e2 = t3.fillConfig, i2 = t3.patternFill, a2 = t3.fillColor, s2 = t3.fillOpacity, r2 = t3.defaultColor, o2 = this.w.config.fill; + e2 && (o2 = e2); + var n2 = this.opts, l2 = new m(this.ctx), h2 = Array.isArray(o2.pattern.strokeWidth) ? o2.pattern.strokeWidth[this.seriesIndex] : o2.pattern.strokeWidth, c2 = a2; + Array.isArray(o2.pattern.style) ? i2 = void 0 !== o2.pattern.style[n2.seriesNumber] ? l2.drawPattern(o2.pattern.style[n2.seriesNumber], o2.pattern.width, o2.pattern.height, c2, h2, s2) : r2 : i2 = l2.drawPattern(o2.pattern.style, o2.pattern.width, o2.pattern.height, c2, h2, s2); + return i2; + } }, { key: "handleGradientFill", value: function(t3) { + var i2 = t3.fillColor, a2 = t3.fillOpacity, s2 = t3.fillConfig, r2 = t3.i, o2 = this.w.config.fill; + s2 && (o2 = e(e({}, o2), s2)); + var n2, l2 = this.opts, h2 = new m(this.ctx), c2 = new x(), d2 = o2.gradient.type, g2 = i2, u2 = void 0 === o2.gradient.opacityFrom ? a2 : Array.isArray(o2.gradient.opacityFrom) ? o2.gradient.opacityFrom[r2] : o2.gradient.opacityFrom; + g2.indexOf("rgba") > -1 && (u2 = x.getOpacityFromRGBA(g2)); + var p2 = void 0 === o2.gradient.opacityTo ? a2 : Array.isArray(o2.gradient.opacityTo) ? o2.gradient.opacityTo[r2] : o2.gradient.opacityTo; + if (void 0 === o2.gradient.gradientToColors || 0 === o2.gradient.gradientToColors.length) + n2 = "dark" === o2.gradient.shade ? c2.shadeColor(-1 * parseFloat(o2.gradient.shadeIntensity), i2.indexOf("rgb") > -1 ? x.rgb2hex(i2) : i2) : c2.shadeColor(parseFloat(o2.gradient.shadeIntensity), i2.indexOf("rgb") > -1 ? x.rgb2hex(i2) : i2); + else if (o2.gradient.gradientToColors[l2.seriesNumber]) { + var f2 = o2.gradient.gradientToColors[l2.seriesNumber]; + n2 = f2, f2.indexOf("rgba") > -1 && (p2 = x.getOpacityFromRGBA(f2)); + } else + n2 = i2; + if (o2.gradient.gradientFrom && (g2 = o2.gradient.gradientFrom), o2.gradient.gradientTo && (n2 = o2.gradient.gradientTo), o2.gradient.inverseColors) { + var b2 = g2; + g2 = n2, n2 = b2; + } + return g2.indexOf("rgb") > -1 && (g2 = x.rgb2hex(g2)), n2.indexOf("rgb") > -1 && (n2 = x.rgb2hex(n2)), h2.drawGradient(d2, g2, n2, u2, p2, l2.size, o2.gradient.stops, o2.gradient.colorStops, r2); + } }]), t2; + }(); + var H = function() { + function t2(e2, i2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "setGlobalMarkerSize", value: function() { + var t3 = this.w; + if (t3.globals.markers.size = Array.isArray(t3.config.markers.size) ? t3.config.markers.size : [t3.config.markers.size], t3.globals.markers.size.length > 0) { + if (t3.globals.markers.size.length < t3.globals.series.length + 1) + for (var e2 = 0; e2 <= t3.globals.series.length; e2++) + void 0 === t3.globals.markers.size[e2] && t3.globals.markers.size.push(t3.globals.markers.size[0]); + } else + t3.globals.markers.size = t3.config.series.map(function(e3) { + return t3.config.markers.size; + }); + } }, { key: "plotChartMarkers", value: function(t3, e2, i2, a2) { + var s2, r2 = arguments.length > 4 && void 0 !== arguments[4] && arguments[4], o2 = this.w, n2 = e2, l2 = t3, h2 = null, c2 = new m(this.ctx), d2 = o2.config.markers.discrete && o2.config.markers.discrete.length; + if ((o2.globals.markers.size[e2] > 0 || r2 || d2) && (h2 = c2.group({ class: r2 || d2 ? "" : "apexcharts-series-markers" })).attr("clip-path", "url(#gridRectMarkerMask".concat(o2.globals.cuid, ")")), Array.isArray(l2.x)) + for (var g2 = 0; g2 < l2.x.length; g2++) { + var u2 = i2; + 1 === i2 && 0 === g2 && (u2 = 0), 1 === i2 && 1 === g2 && (u2 = 1); + var p2 = "apexcharts-marker"; + if ("line" !== o2.config.chart.type && "area" !== o2.config.chart.type || o2.globals.comboCharts || o2.config.tooltip.intersect || (p2 += " no-pointer-events"), (Array.isArray(o2.config.markers.size) ? o2.globals.markers.size[e2] > 0 : o2.config.markers.size > 0) || r2 || d2) { + x.isNumber(l2.y[g2]) ? p2 += " w".concat(x.randomId()) : p2 = "apexcharts-nullpoint"; + var f2 = this.getMarkerConfig({ cssClass: p2, seriesIndex: e2, dataPointIndex: u2 }); + o2.config.series[n2].data[u2] && (o2.config.series[n2].data[u2].fillColor && (f2.pointFillColor = o2.config.series[n2].data[u2].fillColor), o2.config.series[n2].data[u2].strokeColor && (f2.pointStrokeColor = o2.config.series[n2].data[u2].strokeColor)), a2 && (f2.pSize = a2), (l2.x[g2] < 0 || l2.x[g2] > o2.globals.gridWidth || l2.y[g2] < -o2.globals.markers.largestSize || l2.y[g2] > o2.globals.gridHeight + o2.globals.markers.largestSize) && (f2.pSize = 0), (s2 = c2.drawMarker(l2.x[g2], l2.y[g2], f2)).attr("rel", u2), s2.attr("j", u2), s2.attr("index", e2), s2.node.setAttribute("default-marker-size", f2.pSize), new v(this.ctx).setSelectionFilter(s2, e2, u2), this.addEvents(s2), h2 && h2.add(s2); + } else + void 0 === o2.globals.pointsArray[e2] && (o2.globals.pointsArray[e2] = []), o2.globals.pointsArray[e2].push([l2.x[g2], l2.y[g2]]); + } + return h2; + } }, { key: "getMarkerConfig", value: function(t3) { + var e2 = t3.cssClass, i2 = t3.seriesIndex, a2 = t3.dataPointIndex, s2 = void 0 === a2 ? null : a2, r2 = t3.finishRadius, o2 = void 0 === r2 ? null : r2, n2 = this.w, l2 = this.getMarkerStyle(i2), h2 = n2.globals.markers.size[i2], c2 = n2.config.markers; + return null !== s2 && c2.discrete.length && c2.discrete.map(function(t4) { + t4.seriesIndex === i2 && t4.dataPointIndex === s2 && (l2.pointStrokeColor = t4.strokeColor, l2.pointFillColor = t4.fillColor, h2 = t4.size, l2.pointShape = t4.shape); + }), { pSize: null === o2 ? h2 : o2, pRadius: c2.radius, width: Array.isArray(c2.width) ? c2.width[i2] : c2.width, height: Array.isArray(c2.height) ? c2.height[i2] : c2.height, pointStrokeWidth: Array.isArray(c2.strokeWidth) ? c2.strokeWidth[i2] : c2.strokeWidth, pointStrokeColor: l2.pointStrokeColor, pointFillColor: l2.pointFillColor, shape: l2.pointShape || (Array.isArray(c2.shape) ? c2.shape[i2] : c2.shape), class: e2, pointStrokeOpacity: Array.isArray(c2.strokeOpacity) ? c2.strokeOpacity[i2] : c2.strokeOpacity, pointStrokeDashArray: Array.isArray(c2.strokeDashArray) ? c2.strokeDashArray[i2] : c2.strokeDashArray, pointFillOpacity: Array.isArray(c2.fillOpacity) ? c2.fillOpacity[i2] : c2.fillOpacity, seriesIndex: i2 }; + } }, { key: "addEvents", value: function(t3) { + var e2 = this.w, i2 = new m(this.ctx); + t3.node.addEventListener("mouseenter", i2.pathMouseEnter.bind(this.ctx, t3)), t3.node.addEventListener("mouseleave", i2.pathMouseLeave.bind(this.ctx, t3)), t3.node.addEventListener("mousedown", i2.pathMouseDown.bind(this.ctx, t3)), t3.node.addEventListener("click", e2.config.markers.onClick), t3.node.addEventListener("dblclick", e2.config.markers.onDblClick), t3.node.addEventListener("touchstart", i2.pathMouseDown.bind(this.ctx, t3), { passive: true }); + } }, { key: "getMarkerStyle", value: function(t3) { + var e2 = this.w, i2 = e2.globals.markers.colors, a2 = e2.config.markers.strokeColor || e2.config.markers.strokeColors; + return { pointStrokeColor: Array.isArray(a2) ? a2[t3] : a2, pointFillColor: Array.isArray(i2) ? i2[t3] : i2 }; + } }]), t2; + }(); + var D = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.initialAnim = this.w.config.chart.animations.enabled, this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; + } + return r(t2, [{ key: "draw", value: function(t3, e2, i2) { + var a2 = this.w, s2 = new m(this.ctx), r2 = i2.realIndex, o2 = i2.pointsPos, n2 = i2.zRatio, l2 = i2.elParent, h2 = s2.group({ class: "apexcharts-series-markers apexcharts-series-".concat(a2.config.chart.type) }); + if (h2.attr("clip-path", "url(#gridRectMarkerMask".concat(a2.globals.cuid, ")")), Array.isArray(o2.x)) + for (var c2 = 0; c2 < o2.x.length; c2++) { + var d2 = e2 + 1, g2 = true; + 0 === e2 && 0 === c2 && (d2 = 0), 0 === e2 && 1 === c2 && (d2 = 1); + var u2 = 0, p2 = a2.globals.markers.size[r2]; + if (n2 !== 1 / 0) { + var f2 = a2.config.plotOptions.bubble; + p2 = a2.globals.seriesZ[r2][d2], f2.zScaling && (p2 /= n2), f2.minBubbleRadius && p2 < f2.minBubbleRadius && (p2 = f2.minBubbleRadius), f2.maxBubbleRadius && p2 > f2.maxBubbleRadius && (p2 = f2.maxBubbleRadius); + } + a2.config.chart.animations.enabled || (u2 = p2); + var x2 = o2.x[c2], b2 = o2.y[c2]; + if (u2 = u2 || 0, null !== b2 && void 0 !== a2.globals.series[r2][d2] || (g2 = false), g2) { + var v2 = this.drawPoint(x2, b2, u2, p2, r2, d2, e2); + h2.add(v2); + } + l2.add(h2); + } + } }, { key: "drawPoint", value: function(t3, e2, i2, a2, s2, r2, o2) { + var n2 = this.w, l2 = s2, h2 = new b(this.ctx), c2 = new v(this.ctx), d2 = new R(this.ctx), g2 = new H(this.ctx), u2 = new m(this.ctx), p2 = g2.getMarkerConfig({ cssClass: "apexcharts-marker", seriesIndex: l2, dataPointIndex: r2, finishRadius: "bubble" === n2.config.chart.type || n2.globals.comboCharts && n2.config.series[s2] && "bubble" === n2.config.series[s2].type ? a2 : null }); + a2 = p2.pSize; + var f2, x2 = d2.fillPath({ seriesNumber: s2, dataPointIndex: r2, color: p2.pointFillColor, patternUnits: "objectBoundingBox", value: n2.globals.series[s2][o2] }); + if ("circle" === p2.shape ? f2 = u2.drawCircle(i2) : "square" !== p2.shape && "rect" !== p2.shape || (f2 = u2.drawRect(0, 0, p2.width - p2.pointStrokeWidth / 2, p2.height - p2.pointStrokeWidth / 2, p2.pRadius)), n2.config.series[l2].data[r2] && n2.config.series[l2].data[r2].fillColor && (x2 = n2.config.series[l2].data[r2].fillColor), f2.attr({ x: t3 - p2.width / 2 - p2.pointStrokeWidth / 2, y: e2 - p2.height / 2 - p2.pointStrokeWidth / 2, cx: t3, cy: e2, fill: x2, "fill-opacity": p2.pointFillOpacity, stroke: p2.pointStrokeColor, r: a2, "stroke-width": p2.pointStrokeWidth, "stroke-dasharray": p2.pointStrokeDashArray, "stroke-opacity": p2.pointStrokeOpacity }), n2.config.chart.dropShadow.enabled) { + var y2 = n2.config.chart.dropShadow; + c2.dropShadow(f2, y2, s2); + } + if (!this.initialAnim || n2.globals.dataChanged || n2.globals.resized) + n2.globals.animationEnded = true; + else { + var w2 = n2.config.chart.animations.speed; + h2.animateMarker(f2, 0, "circle" === p2.shape ? a2 : { width: p2.width, height: p2.height }, w2, n2.globals.easing, function() { + window.setTimeout(function() { + h2.animationCompleted(f2); + }, 100); + }); + } + if (n2.globals.dataChanged && "circle" === p2.shape) + if (this.dynamicAnim) { + var k2, A2, S2, C2, L2 = n2.config.chart.animations.dynamicAnimation.speed; + null != (C2 = n2.globals.previousPaths[s2] && n2.globals.previousPaths[s2][o2]) && (k2 = C2.x, A2 = C2.y, S2 = void 0 !== C2.r ? C2.r : a2); + for (var P2 = 0; P2 < n2.globals.collapsedSeries.length; P2++) + n2.globals.collapsedSeries[P2].index === s2 && (L2 = 1, a2 = 0); + 0 === t3 && 0 === e2 && (a2 = 0), h2.animateCircle(f2, { cx: k2, cy: A2, r: S2 }, { cx: t3, cy: e2, r: a2 }, L2, n2.globals.easing); + } else + f2.attr({ r: a2 }); + return f2.attr({ rel: r2, j: r2, index: s2, "default-marker-size": a2 }), c2.setSelectionFilter(f2, s2, r2), g2.addEvents(f2), f2.node.classList.add("apexcharts-marker"), f2; + } }, { key: "centerTextInBubble", value: function(t3) { + var e2 = this.w; + return { y: t3 += parseInt(e2.config.dataLabels.style.fontSize, 10) / 4 }; + } }]), t2; + }(); + var O = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "dataLabelsCorrection", value: function(t3, e2, i2, a2, s2, r2, o2) { + var n2 = this.w, l2 = false, h2 = new m(this.ctx).getTextRects(i2, o2), c2 = h2.width, d2 = h2.height; + e2 < 0 && (e2 = 0), e2 > n2.globals.gridHeight + d2 && (e2 = n2.globals.gridHeight + d2 / 2), void 0 === n2.globals.dataLabelsRects[a2] && (n2.globals.dataLabelsRects[a2] = []), n2.globals.dataLabelsRects[a2].push({ x: t3, y: e2, width: c2, height: d2 }); + var g2 = n2.globals.dataLabelsRects[a2].length - 2, u2 = void 0 !== n2.globals.lastDrawnDataLabelsIndexes[a2] ? n2.globals.lastDrawnDataLabelsIndexes[a2][n2.globals.lastDrawnDataLabelsIndexes[a2].length - 1] : 0; + if (void 0 !== n2.globals.dataLabelsRects[a2][g2]) { + var p2 = n2.globals.dataLabelsRects[a2][u2]; + (t3 > p2.x + p2.width || e2 > p2.y + p2.height || e2 + d2 < p2.y || t3 + c2 < p2.x) && (l2 = true); + } + return (0 === s2 || r2) && (l2 = true), { x: t3, y: e2, textRects: h2, drawnextLabel: l2 }; + } }, { key: "drawDataLabel", value: function(t3) { + var e2 = this, i2 = t3.type, a2 = t3.pos, s2 = t3.i, r2 = t3.j, o2 = t3.isRangeStart, n2 = t3.strokeWidth, l2 = void 0 === n2 ? 2 : n2, h2 = this.w, c2 = new m(this.ctx), d2 = h2.config.dataLabels, g2 = 0, u2 = 0, p2 = r2, f2 = null; + if (!d2.enabled || !Array.isArray(a2.x)) + return f2; + f2 = c2.group({ class: "apexcharts-data-labels" }); + for (var x2 = 0; x2 < a2.x.length; x2++) + if (g2 = a2.x[x2] + d2.offsetX, u2 = a2.y[x2] + d2.offsetY + l2, !isNaN(g2)) { + 1 === r2 && 0 === x2 && (p2 = 0), 1 === r2 && 1 === x2 && (p2 = 1); + var b2 = h2.globals.series[s2][p2]; + "rangeArea" === i2 && (b2 = o2 ? h2.globals.seriesRangeStart[s2][p2] : h2.globals.seriesRangeEnd[s2][p2]); + var v2 = "", y2 = function(t4) { + return h2.config.dataLabels.formatter(t4, { ctx: e2.ctx, seriesIndex: s2, dataPointIndex: p2, w: h2 }); + }; + if ("bubble" === h2.config.chart.type) + v2 = y2(b2 = h2.globals.seriesZ[s2][p2]), u2 = a2.y[x2], u2 = new D(this.ctx).centerTextInBubble(u2, s2, p2).y; + else + void 0 !== b2 && (v2 = y2(b2)); + this.plotDataLabelsText({ x: g2, y: u2, text: v2, i: s2, j: p2, parent: f2, offsetCorrection: true, dataLabelsConfig: h2.config.dataLabels }); + } + return f2; + } }, { key: "plotDataLabelsText", value: function(t3) { + var e2 = this.w, i2 = new m(this.ctx), a2 = t3.x, s2 = t3.y, r2 = t3.i, o2 = t3.j, n2 = t3.text, l2 = t3.textAnchor, h2 = t3.fontSize, c2 = t3.parent, d2 = t3.dataLabelsConfig, g2 = t3.color, u2 = t3.alwaysDrawDataLabel, p2 = t3.offsetCorrection; + if (!(Array.isArray(e2.config.dataLabels.enabledOnSeries) && e2.config.dataLabels.enabledOnSeries.indexOf(r2) < 0)) { + var f2 = { x: a2, y: s2, drawnextLabel: true, textRects: null }; + p2 && (f2 = this.dataLabelsCorrection(a2, s2, n2, r2, o2, u2, parseInt(d2.style.fontSize, 10))), e2.globals.zoomed || (a2 = f2.x, s2 = f2.y), f2.textRects && (a2 < -10 - f2.textRects.width || a2 > e2.globals.gridWidth + f2.textRects.width + 10) && (n2 = ""); + var x2 = e2.globals.dataLabels.style.colors[r2]; + (("bar" === e2.config.chart.type || "rangeBar" === e2.config.chart.type) && e2.config.plotOptions.bar.distributed || e2.config.dataLabels.distributed) && (x2 = e2.globals.dataLabels.style.colors[o2]), "function" == typeof x2 && (x2 = x2({ series: e2.globals.series, seriesIndex: r2, dataPointIndex: o2, w: e2 })), g2 && (x2 = g2); + var b2 = d2.offsetX, y2 = d2.offsetY; + if ("bar" !== e2.config.chart.type && "rangeBar" !== e2.config.chart.type || (b2 = 0, y2 = 0), f2.drawnextLabel) { + var w2 = i2.drawText({ width: 100, height: parseInt(d2.style.fontSize, 10), x: a2 + b2, y: s2 + y2, foreColor: x2, textAnchor: l2 || d2.textAnchor, text: n2, fontSize: h2 || d2.style.fontSize, fontFamily: d2.style.fontFamily, fontWeight: d2.style.fontWeight || "normal" }); + if (w2.attr({ class: "apexcharts-datalabel", cx: a2, cy: s2 }), d2.dropShadow.enabled) { + var k2 = d2.dropShadow; + new v(this.ctx).dropShadow(w2, k2); + } + c2.add(w2), void 0 === e2.globals.lastDrawnDataLabelsIndexes[r2] && (e2.globals.lastDrawnDataLabelsIndexes[r2] = []), e2.globals.lastDrawnDataLabelsIndexes[r2].push(o2); + } + } + } }, { key: "addBackgroundToDataLabel", value: function(t3, e2) { + var i2 = this.w, a2 = i2.config.dataLabels.background, s2 = a2.padding, r2 = a2.padding / 2, o2 = e2.width, n2 = e2.height, l2 = new m(this.ctx).drawRect(e2.x - s2, e2.y - r2 / 2, o2 + 2 * s2, n2 + r2, a2.borderRadius, "transparent" === i2.config.chart.background ? "#fff" : i2.config.chart.background, a2.opacity, a2.borderWidth, a2.borderColor); + a2.dropShadow.enabled && new v(this.ctx).dropShadow(l2, a2.dropShadow); + return l2; + } }, { key: "dataLabelsBackground", value: function() { + var t3 = this.w; + if ("bubble" !== t3.config.chart.type) + for (var e2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"), i2 = 0; i2 < e2.length; i2++) { + var a2 = e2[i2], s2 = a2.getBBox(), r2 = null; + if (s2.width && s2.height && (r2 = this.addBackgroundToDataLabel(a2, s2)), r2) { + a2.parentNode.insertBefore(r2.node, a2); + var o2 = a2.getAttribute("fill"); + t3.config.chart.animations.enabled && !t3.globals.resized && !t3.globals.dataChanged ? r2.animate().attr({ fill: o2 }) : r2.attr({ fill: o2 }), a2.setAttribute("fill", t3.config.dataLabels.background.foreColor); + } + } + } }, { key: "bringForward", value: function() { + for (var t3 = this.w, e2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels"), i2 = t3.globals.dom.baseEl.querySelector(".apexcharts-plot-series:last-child"), a2 = 0; a2 < e2.length; a2++) + i2 && i2.insertBefore(e2[a2], i2.nextSibling); + } }]), t2; + }(); + var N = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.legendInactiveClass = "legend-mouseover-inactive"; + } + return r(t2, [{ key: "getAllSeriesEls", value: function() { + return this.w.globals.dom.baseEl.getElementsByClassName("apexcharts-series"); + } }, { key: "getSeriesByName", value: function(t3) { + return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner .apexcharts-series[seriesName='".concat(x.escapeString(t3), "']")); + } }, { key: "isSeriesHidden", value: function(t3) { + var e2 = this.getSeriesByName(t3), i2 = parseInt(e2.getAttribute("data:realIndex"), 10); + return { isHidden: e2.classList.contains("apexcharts-series-collapsed"), realIndex: i2 }; + } }, { key: "addCollapsedClassToSeries", value: function(t3, e2) { + var i2 = this.w; + function a2(i3) { + for (var a3 = 0; a3 < i3.length; a3++) + i3[a3].index === e2 && t3.node.classList.add("apexcharts-series-collapsed"); + } + a2(i2.globals.collapsedSeries), a2(i2.globals.ancillaryCollapsedSeries); + } }, { key: "toggleSeries", value: function(t3) { + var e2 = this.isSeriesHidden(t3); + return this.ctx.legend.legendHelpers.toggleDataSeries(e2.realIndex, e2.isHidden), e2.isHidden; + } }, { key: "showSeries", value: function(t3) { + var e2 = this.isSeriesHidden(t3); + e2.isHidden && this.ctx.legend.legendHelpers.toggleDataSeries(e2.realIndex, true); + } }, { key: "hideSeries", value: function(t3) { + var e2 = this.isSeriesHidden(t3); + e2.isHidden || this.ctx.legend.legendHelpers.toggleDataSeries(e2.realIndex, false); + } }, { key: "resetSeries", value: function() { + var t3 = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0], e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], a2 = this.w, s2 = x.clone(a2.globals.initialSeries); + a2.globals.previousPaths = [], i2 ? (a2.globals.collapsedSeries = [], a2.globals.ancillaryCollapsedSeries = [], a2.globals.collapsedSeriesIndices = [], a2.globals.ancillaryCollapsedSeriesIndices = []) : s2 = this.emptyCollapsedSeries(s2), a2.config.series = s2, t3 && (e2 && (a2.globals.zoomed = false, this.ctx.updateHelpers.revertDefaultAxisMinMax()), this.ctx.updateHelpers._updateSeries(s2, a2.config.chart.animations.dynamicAnimation.enabled)); + } }, { key: "emptyCollapsedSeries", value: function(t3) { + for (var e2 = this.w, i2 = 0; i2 < t3.length; i2++) + e2.globals.collapsedSeriesIndices.indexOf(i2) > -1 && (t3[i2].data = []); + return t3; + } }, { key: "toggleSeriesOnHover", value: function(t3, e2) { + var i2 = this.w; + e2 || (e2 = t3.target); + var a2 = i2.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels"); + if ("mousemove" === t3.type) { + var s2 = parseInt(e2.getAttribute("rel"), 10) - 1, r2 = null, o2 = null; + i2.globals.axisCharts || "radialBar" === i2.config.chart.type ? i2.globals.axisCharts ? (r2 = i2.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s2, "']")), o2 = i2.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s2, "']"))) : r2 = i2.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s2 + 1, "']")) : r2 = i2.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s2 + 1, "'] path")); + for (var n2 = 0; n2 < a2.length; n2++) + a2[n2].classList.add(this.legendInactiveClass); + null !== r2 && (i2.globals.axisCharts || r2.parentNode.classList.remove(this.legendInactiveClass), r2.classList.remove(this.legendInactiveClass), null !== o2 && o2.classList.remove(this.legendInactiveClass)); + } else if ("mouseout" === t3.type) + for (var l2 = 0; l2 < a2.length; l2++) + a2[l2].classList.remove(this.legendInactiveClass); + } }, { key: "highlightRangeInSeries", value: function(t3, e2) { + var i2 = this, a2 = this.w, s2 = a2.globals.dom.baseEl.getElementsByClassName("apexcharts-heatmap-rect"), r2 = function(t4) { + for (var e3 = 0; e3 < s2.length; e3++) + s2[e3].classList[t4](i2.legendInactiveClass); + }; + if ("mousemove" === t3.type) { + var o2 = parseInt(e2.getAttribute("rel"), 10) - 1; + r2("add"), function(t4) { + for (var e3 = 0; e3 < s2.length; e3++) { + var a3 = parseInt(s2[e3].getAttribute("val"), 10); + a3 >= t4.from && a3 <= t4.to && s2[e3].classList.remove(i2.legendInactiveClass); + } + }(a2.config.plotOptions.heatmap.colorScale.ranges[o2]); + } else + "mouseout" === t3.type && r2("remove"); + } }, { key: "getActiveConfigSeriesIndex", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "asc", e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], i2 = this.w, a2 = 0; + if (i2.config.series.length > 1) { + for (var s2 = i2.config.series.map(function(t4, a3) { + return t4.data && t4.data.length > 0 && -1 === i2.globals.collapsedSeriesIndices.indexOf(a3) && (!i2.globals.comboCharts || 0 === e2.length || e2.length && e2.indexOf(i2.config.series[a3].type) > -1) ? a3 : -1; + }), r2 = "asc" === t3 ? 0 : s2.length - 1; "asc" === t3 ? r2 < s2.length : r2 >= 0; "asc" === t3 ? r2++ : r2--) + if (-1 !== s2[r2]) { + a2 = s2[r2]; + break; + } + } + return a2; + } }, { key: "getBarSeriesIndices", value: function() { + return this.w.globals.comboCharts ? this.w.config.series.map(function(t3, e2) { + return "bar" === t3.type || "column" === t3.type ? e2 : -1; + }).filter(function(t3) { + return -1 !== t3; + }) : this.w.config.series.map(function(t3, e2) { + return e2; + }); + } }, { key: "getPreviousPaths", value: function() { + var t3 = this.w; + function e2(e3, i3, a3) { + for (var s3 = e3[i3].childNodes, r2 = { type: a3, paths: [], realIndex: e3[i3].getAttribute("data:realIndex") }, o2 = 0; o2 < s3.length; o2++) + if (s3[o2].hasAttribute("pathTo")) { + var n2 = s3[o2].getAttribute("pathTo"); + r2.paths.push({ d: n2 }); + } + t3.globals.previousPaths.push(r2); + } + t3.globals.previousPaths = []; + ["line", "area", "bar", "rangebar", "rangeArea", "candlestick", "radar"].forEach(function(i3) { + for (var a3, s3 = (a3 = i3, t3.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(a3, "-series .apexcharts-series"))), r2 = 0; r2 < s3.length; r2++) + e2(s3, r2, i3); + }), this.handlePrevBubbleScatterPaths("bubble"), this.handlePrevBubbleScatterPaths("scatter"); + var i2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t3.config.chart.type, " .apexcharts-series")); + if (i2.length > 0) + for (var a2 = function(e3) { + for (var i3 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t3.config.chart.type, " .apexcharts-series[data\\:realIndex='").concat(e3, "'] rect")), a3 = [], s3 = function(t4) { + var e4 = function(e5) { + return i3[t4].getAttribute(e5); + }, s4 = { x: parseFloat(e4("x")), y: parseFloat(e4("y")), width: parseFloat(e4("width")), height: parseFloat(e4("height")) }; + a3.push({ rect: s4, color: i3[t4].getAttribute("color") }); + }, r2 = 0; r2 < i3.length; r2++) + s3(r2); + t3.globals.previousPaths.push(a3); + }, s2 = 0; s2 < i2.length; s2++) + a2(s2); + t3.globals.axisCharts || (t3.globals.previousPaths = t3.globals.series); + } }, { key: "handlePrevBubbleScatterPaths", value: function(t3) { + var e2 = this.w, i2 = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t3, "-series .apexcharts-series")); + if (i2.length > 0) + for (var a2 = 0; a2 < i2.length; a2++) { + for (var s2 = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t3, "-series .apexcharts-series[data\\:realIndex='").concat(a2, "'] circle")), r2 = [], o2 = 0; o2 < s2.length; o2++) + r2.push({ x: s2[o2].getAttribute("cx"), y: s2[o2].getAttribute("cy"), r: s2[o2].getAttribute("r") }); + e2.globals.previousPaths.push(r2); + } + } }, { key: "clearPreviousPaths", value: function() { + var t3 = this.w; + t3.globals.previousPaths = [], t3.globals.allSeriesCollapsed = false; + } }, { key: "handleNoData", value: function() { + var t3 = this.w, e2 = t3.config.noData, i2 = new m(this.ctx), a2 = t3.globals.svgWidth / 2, s2 = t3.globals.svgHeight / 2, r2 = "middle"; + if (t3.globals.noData = true, t3.globals.animationEnded = true, "left" === e2.align ? (a2 = 10, r2 = "start") : "right" === e2.align && (a2 = t3.globals.svgWidth - 10, r2 = "end"), "top" === e2.verticalAlign ? s2 = 50 : "bottom" === e2.verticalAlign && (s2 = t3.globals.svgHeight - 50), a2 += e2.offsetX, s2 = s2 + parseInt(e2.style.fontSize, 10) + 2 + e2.offsetY, void 0 !== e2.text && "" !== e2.text) { + var o2 = i2.drawText({ x: a2, y: s2, text: e2.text, textAnchor: r2, fontSize: e2.style.fontSize, fontFamily: e2.style.fontFamily, foreColor: e2.style.color, opacity: 1, class: "apexcharts-text-nodata" }); + t3.globals.dom.Paper.add(o2); + } + } }, { key: "setNullSeriesToZeroValues", value: function(t3) { + for (var e2 = this.w, i2 = 0; i2 < t3.length; i2++) + if (0 === t3[i2].length) + for (var a2 = 0; a2 < t3[e2.globals.maxValsInArrayIndex].length; a2++) + t3[i2].push(0); + return t3; + } }, { key: "hasAllSeriesEqualX", value: function() { + for (var t3 = true, e2 = this.w, i2 = this.filteredSeriesX(), a2 = 0; a2 < i2.length - 1; a2++) + if (i2[a2][0] !== i2[a2 + 1][0]) { + t3 = false; + break; + } + return e2.globals.allSeriesHasEqualX = t3, t3; + } }, { key: "filteredSeriesX", value: function() { + var t3 = this.w.globals.seriesX.map(function(t4) { + return t4.length > 0 ? t4 : []; + }); + return t3; + } }]), t2; + }(); + var W = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.twoDSeries = [], this.threeDSeries = [], this.twoDSeriesX = [], this.seriesGoals = [], this.coreUtils = new y(this.ctx); + } + return r(t2, [{ key: "isMultiFormat", value: function() { + return this.isFormatXY() || this.isFormat2DArray(); + } }, { key: "isFormatXY", value: function() { + var t3 = this.w.config.series.slice(), e2 = new N(this.ctx); + if (this.activeSeriesIndex = e2.getActiveConfigSeriesIndex(), void 0 !== t3[this.activeSeriesIndex].data && t3[this.activeSeriesIndex].data.length > 0 && null !== t3[this.activeSeriesIndex].data[0] && void 0 !== t3[this.activeSeriesIndex].data[0].x && null !== t3[this.activeSeriesIndex].data[0]) + return true; + } }, { key: "isFormat2DArray", value: function() { + var t3 = this.w.config.series.slice(), e2 = new N(this.ctx); + if (this.activeSeriesIndex = e2.getActiveConfigSeriesIndex(), void 0 !== t3[this.activeSeriesIndex].data && t3[this.activeSeriesIndex].data.length > 0 && void 0 !== t3[this.activeSeriesIndex].data[0] && null !== t3[this.activeSeriesIndex].data[0] && t3[this.activeSeriesIndex].data[0].constructor === Array) + return true; + } }, { key: "handleFormat2DArray", value: function(t3, e2) { + for (var i2 = this.w.config, a2 = this.w.globals, s2 = "boxPlot" === i2.chart.type || "boxPlot" === i2.series[e2].type, r2 = 0; r2 < t3[e2].data.length; r2++) + if (void 0 !== t3[e2].data[r2][1] && (Array.isArray(t3[e2].data[r2][1]) && 4 === t3[e2].data[r2][1].length && !s2 ? this.twoDSeries.push(x.parseNumber(t3[e2].data[r2][1][3])) : t3[e2].data[r2].length >= 5 ? this.twoDSeries.push(x.parseNumber(t3[e2].data[r2][4])) : this.twoDSeries.push(x.parseNumber(t3[e2].data[r2][1])), a2.dataFormatXNumeric = true), "datetime" === i2.xaxis.type) { + var o2 = new Date(t3[e2].data[r2][0]); + o2 = new Date(o2).getTime(), this.twoDSeriesX.push(o2); + } else + this.twoDSeriesX.push(t3[e2].data[r2][0]); + for (var n2 = 0; n2 < t3[e2].data.length; n2++) + void 0 !== t3[e2].data[n2][2] && (this.threeDSeries.push(t3[e2].data[n2][2]), a2.isDataXYZ = true); + } }, { key: "handleFormatXY", value: function(t3, e2) { + var i2 = this.w.config, a2 = this.w.globals, s2 = new I(this.ctx), r2 = e2; + a2.collapsedSeriesIndices.indexOf(e2) > -1 && (r2 = this.activeSeriesIndex); + for (var o2 = 0; o2 < t3[e2].data.length; o2++) + void 0 !== t3[e2].data[o2].y && (Array.isArray(t3[e2].data[o2].y) ? this.twoDSeries.push(x.parseNumber(t3[e2].data[o2].y[t3[e2].data[o2].y.length - 1])) : this.twoDSeries.push(x.parseNumber(t3[e2].data[o2].y))), void 0 !== t3[e2].data[o2].goals && Array.isArray(t3[e2].data[o2].goals) ? (void 0 === this.seriesGoals[e2] && (this.seriesGoals[e2] = []), this.seriesGoals[e2].push(t3[e2].data[o2].goals)) : (void 0 === this.seriesGoals[e2] && (this.seriesGoals[e2] = []), this.seriesGoals[e2].push(null)); + for (var n2 = 0; n2 < t3[r2].data.length; n2++) { + var l2 = "string" == typeof t3[r2].data[n2].x, h2 = Array.isArray(t3[r2].data[n2].x), c2 = !h2 && !!s2.isValidDate(t3[r2].data[n2].x.toString()); + if (l2 || c2) + if (l2 || i2.xaxis.convertedCatToNumeric) { + var d2 = a2.isBarHorizontal && a2.isRangeData; + "datetime" !== i2.xaxis.type || d2 ? (this.fallbackToCategory = true, this.twoDSeriesX.push(t3[r2].data[n2].x), isNaN(t3[r2].data[n2].x) || "category" === this.w.config.xaxis.type || "string" == typeof t3[r2].data[n2].x || (a2.isXNumeric = true)) : this.twoDSeriesX.push(s2.parseDate(t3[r2].data[n2].x)); + } else + "datetime" === i2.xaxis.type ? this.twoDSeriesX.push(s2.parseDate(t3[r2].data[n2].x.toString())) : (a2.dataFormatXNumeric = true, a2.isXNumeric = true, this.twoDSeriesX.push(parseFloat(t3[r2].data[n2].x))); + else + h2 ? (this.fallbackToCategory = true, this.twoDSeriesX.push(t3[r2].data[n2].x)) : (a2.isXNumeric = true, a2.dataFormatXNumeric = true, this.twoDSeriesX.push(t3[r2].data[n2].x)); + } + if (t3[e2].data[0] && void 0 !== t3[e2].data[0].z) { + for (var g2 = 0; g2 < t3[e2].data.length; g2++) + this.threeDSeries.push(t3[e2].data[g2].z); + a2.isDataXYZ = true; + } + } }, { key: "handleRangeData", value: function(t3, e2) { + var i2 = this.w.globals, a2 = {}; + return this.isFormat2DArray() ? a2 = this.handleRangeDataFormat("array", t3, e2) : this.isFormatXY() && (a2 = this.handleRangeDataFormat("xy", t3, e2)), i2.seriesRangeStart.push(a2.start), i2.seriesRangeEnd.push(a2.end), i2.seriesRange.push(a2.rangeUniques), i2.seriesRange.forEach(function(t4, e3) { + t4 && t4.forEach(function(t5, e4) { + t5.y.forEach(function(e5, i3) { + for (var a3 = 0; a3 < t5.y.length; a3++) + if (i3 !== a3) { + var s2 = e5.y1, r2 = e5.y2, o2 = t5.y[a3].y1; + s2 <= t5.y[a3].y2 && o2 <= r2 && (t5.overlaps.indexOf(e5.rangeName) < 0 && t5.overlaps.push(e5.rangeName), t5.overlaps.indexOf(t5.y[a3].rangeName) < 0 && t5.overlaps.push(t5.y[a3].rangeName)); + } + }); + }); + }), a2; + } }, { key: "handleCandleStickBoxData", value: function(t3, e2) { + var i2 = this.w.globals, a2 = {}; + return this.isFormat2DArray() ? a2 = this.handleCandleStickBoxDataFormat("array", t3, e2) : this.isFormatXY() && (a2 = this.handleCandleStickBoxDataFormat("xy", t3, e2)), i2.seriesCandleO[e2] = a2.o, i2.seriesCandleH[e2] = a2.h, i2.seriesCandleM[e2] = a2.m, i2.seriesCandleL[e2] = a2.l, i2.seriesCandleC[e2] = a2.c, a2; + } }, { key: "handleRangeDataFormat", value: function(t3, e2, i2) { + var a2 = [], s2 = [], r2 = e2[i2].data.filter(function(t4, e3, i3) { + return e3 === i3.findIndex(function(e4) { + return e4.x === t4.x; + }); + }).map(function(t4, e3) { + return { x: t4.x, overlaps: [], y: [] }; + }); + if ("array" === t3) + for (var o2 = 0; o2 < e2[i2].data.length; o2++) + Array.isArray(e2[i2].data[o2]) ? (a2.push(e2[i2].data[o2][1][0]), s2.push(e2[i2].data[o2][1][1])) : (a2.push(e2[i2].data[o2]), s2.push(e2[i2].data[o2])); + else if ("xy" === t3) + for (var n2 = function(t4) { + var o3 = Array.isArray(e2[i2].data[t4].y), n3 = x.randomId(), l3 = e2[i2].data[t4].x, h2 = { y1: o3 ? e2[i2].data[t4].y[0] : e2[i2].data[t4].y, y2: o3 ? e2[i2].data[t4].y[1] : e2[i2].data[t4].y, rangeName: n3 }; + e2[i2].data[t4].rangeName = n3; + var c2 = r2.findIndex(function(t5) { + return t5.x === l3; + }); + r2[c2].y.push(h2), a2.push(h2.y1), s2.push(h2.y2); + }, l2 = 0; l2 < e2[i2].data.length; l2++) + n2(l2); + return { start: a2, end: s2, rangeUniques: r2 }; + } }, { key: "handleCandleStickBoxDataFormat", value: function(t3, e2, i2) { + var a2 = this.w, s2 = "boxPlot" === a2.config.chart.type || "boxPlot" === a2.config.series[i2].type, r2 = [], o2 = [], n2 = [], l2 = [], h2 = []; + if ("array" === t3) + if (s2 && 6 === e2[i2].data[0].length || !s2 && 5 === e2[i2].data[0].length) + for (var c2 = 0; c2 < e2[i2].data.length; c2++) + r2.push(e2[i2].data[c2][1]), o2.push(e2[i2].data[c2][2]), s2 ? (n2.push(e2[i2].data[c2][3]), l2.push(e2[i2].data[c2][4]), h2.push(e2[i2].data[c2][5])) : (l2.push(e2[i2].data[c2][3]), h2.push(e2[i2].data[c2][4])); + else + for (var d2 = 0; d2 < e2[i2].data.length; d2++) + Array.isArray(e2[i2].data[d2][1]) && (r2.push(e2[i2].data[d2][1][0]), o2.push(e2[i2].data[d2][1][1]), s2 ? (n2.push(e2[i2].data[d2][1][2]), l2.push(e2[i2].data[d2][1][3]), h2.push(e2[i2].data[d2][1][4])) : (l2.push(e2[i2].data[d2][1][2]), h2.push(e2[i2].data[d2][1][3]))); + else if ("xy" === t3) + for (var g2 = 0; g2 < e2[i2].data.length; g2++) + Array.isArray(e2[i2].data[g2].y) && (r2.push(e2[i2].data[g2].y[0]), o2.push(e2[i2].data[g2].y[1]), s2 ? (n2.push(e2[i2].data[g2].y[2]), l2.push(e2[i2].data[g2].y[3]), h2.push(e2[i2].data[g2].y[4])) : (l2.push(e2[i2].data[g2].y[2]), h2.push(e2[i2].data[g2].y[3]))); + return { o: r2, h: o2, m: n2, l: l2, c: h2 }; + } }, { key: "parseDataAxisCharts", value: function(t3) { + var e2, i2 = this, a2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.ctx, s2 = this.w.config, r2 = this.w.globals, o2 = new I(a2), n2 = s2.labels.length > 0 ? s2.labels.slice() : s2.xaxis.categories.slice(); + if (r2.isRangeBar = "rangeBar" === s2.chart.type && r2.isBarHorizontal, r2.hasXaxisGroups = "category" === s2.xaxis.type && s2.xaxis.group.groups.length > 0, r2.hasXaxisGroups && (r2.groups = s2.xaxis.group.groups), r2.hasSeriesGroups = null === (e2 = t3[0]) || void 0 === e2 ? void 0 : e2.group, r2.hasSeriesGroups) { + var l2 = [], h2 = u(new Set(t3.map(function(t4) { + return t4.group; + }))); + t3.forEach(function(t4, e3) { + var i3 = h2.indexOf(t4.group); + l2[i3] || (l2[i3] = []), l2[i3].push(t4.name); + }), r2.seriesGroups = l2; + } + for (var c2 = function() { + for (var t4 = 0; t4 < n2.length; t4++) + if ("string" == typeof n2[t4]) { + if (!o2.isValidDate(n2[t4])) + throw new Error("You have provided invalid Date format. Please provide a valid JavaScript Date"); + i2.twoDSeriesX.push(o2.parseDate(n2[t4])); + } else + i2.twoDSeriesX.push(n2[t4]); + }, d2 = 0; d2 < t3.length; d2++) { + if (this.twoDSeries = [], this.twoDSeriesX = [], this.threeDSeries = [], void 0 === t3[d2].data) + return void console.error("It is a possibility that you may have not included 'data' property in series."); + if ("rangeBar" !== s2.chart.type && "rangeArea" !== s2.chart.type && "rangeBar" !== t3[d2].type && "rangeArea" !== t3[d2].type || (r2.isRangeData = true, r2.isComboCharts ? "rangeBar" !== t3[d2].type && "rangeArea" !== t3[d2].type || this.handleRangeData(t3, d2) : "rangeBar" !== s2.chart.type && "rangeArea" !== s2.chart.type || this.handleRangeData(t3, d2)), this.isMultiFormat()) + this.isFormat2DArray() ? this.handleFormat2DArray(t3, d2) : this.isFormatXY() && this.handleFormatXY(t3, d2), "candlestick" !== s2.chart.type && "candlestick" !== t3[d2].type && "boxPlot" !== s2.chart.type && "boxPlot" !== t3[d2].type || this.handleCandleStickBoxData(t3, d2), r2.series.push(this.twoDSeries), r2.labels.push(this.twoDSeriesX), r2.seriesX.push(this.twoDSeriesX), r2.seriesGoals = this.seriesGoals, d2 !== this.activeSeriesIndex || this.fallbackToCategory || (r2.isXNumeric = true); + else { + "datetime" === s2.xaxis.type ? (r2.isXNumeric = true, c2(), r2.seriesX.push(this.twoDSeriesX)) : "numeric" === s2.xaxis.type && (r2.isXNumeric = true, n2.length > 0 && (this.twoDSeriesX = n2, r2.seriesX.push(this.twoDSeriesX))), r2.labels.push(this.twoDSeriesX); + var g2 = t3[d2].data.map(function(t4) { + return x.parseNumber(t4); + }); + r2.series.push(g2); + } + r2.seriesZ.push(this.threeDSeries), void 0 !== t3[d2].name ? r2.seriesNames.push(t3[d2].name) : r2.seriesNames.push("series-" + parseInt(d2 + 1, 10)), void 0 !== t3[d2].color ? r2.seriesColors.push(t3[d2].color) : r2.seriesColors.push(void 0); + } + return this.w; + } }, { key: "parseDataNonAxisCharts", value: function(t3) { + var e2 = this.w.globals, i2 = this.w.config; + e2.series = t3.slice(), e2.seriesNames = i2.labels.slice(); + for (var a2 = 0; a2 < e2.series.length; a2++) + void 0 === e2.seriesNames[a2] && e2.seriesNames.push("series-" + (a2 + 1)); + return this.w; + } }, { key: "handleExternalLabelsData", value: function(t3) { + var e2 = this.w.config, i2 = this.w.globals; + if (e2.xaxis.categories.length > 0) + i2.labels = e2.xaxis.categories; + else if (e2.labels.length > 0) + i2.labels = e2.labels.slice(); + else if (this.fallbackToCategory) { + if (i2.labels = i2.labels[0], i2.seriesRange.length && (i2.seriesRange.map(function(t4) { + t4.forEach(function(t5) { + i2.labels.indexOf(t5.x) < 0 && t5.x && i2.labels.push(t5.x); + }); + }), i2.labels = Array.from(new Set(i2.labels.map(JSON.stringify)), JSON.parse)), e2.xaxis.convertedCatToNumeric) + new X(e2).convertCatToNumericXaxis(e2, this.ctx, i2.seriesX[0]), this._generateExternalLabels(t3); + } else + this._generateExternalLabels(t3); + } }, { key: "_generateExternalLabels", value: function(t3) { + var e2 = this.w.globals, i2 = this.w.config, a2 = []; + if (e2.axisCharts) { + if (e2.series.length > 0) + if (this.isFormatXY()) + for (var s2 = i2.series.map(function(t4, e3) { + return t4.data.filter(function(t5, e4, i3) { + return i3.findIndex(function(e5) { + return e5.x === t5.x; + }) === e4; + }); + }), r2 = s2.reduce(function(t4, e3, i3, a3) { + return a3[t4].length > e3.length ? t4 : i3; + }, 0), o2 = 0; o2 < s2[r2].length; o2++) + a2.push(o2 + 1); + else + for (var n2 = 0; n2 < e2.series[e2.maxValsInArrayIndex].length; n2++) + a2.push(n2 + 1); + e2.seriesX = []; + for (var l2 = 0; l2 < t3.length; l2++) + e2.seriesX.push(a2); + this.w.globals.isBarHorizontal || (e2.isXNumeric = true); + } + if (0 === a2.length) { + a2 = e2.axisCharts ? [] : e2.series.map(function(t4, e3) { + return e3 + 1; + }); + for (var h2 = 0; h2 < t3.length; h2++) + e2.seriesX.push(a2); + } + e2.labels = a2, i2.xaxis.convertedCatToNumeric && (e2.categoryLabels = a2.map(function(t4) { + return i2.xaxis.labels.formatter(t4); + })), e2.noLabelsProvided = true; + } }, { key: "parseData", value: function(t3) { + var e2 = this.w, i2 = e2.config, a2 = e2.globals; + if (this.excludeCollapsedSeriesInYAxis(), this.fallbackToCategory = false, this.ctx.core.resetGlobals(), this.ctx.core.isMultipleY(), a2.axisCharts ? (this.parseDataAxisCharts(t3), this.coreUtils.getLargestSeries()) : this.parseDataNonAxisCharts(t3), i2.chart.stacked) { + var s2 = new N(this.ctx); + a2.series = s2.setNullSeriesToZeroValues(a2.series); + } + this.coreUtils.getSeriesTotals(), a2.axisCharts && (a2.stackedSeriesTotals = this.coreUtils.getStackedSeriesTotals()), this.coreUtils.getPercentSeries(), a2.dataFormatXNumeric || a2.isXNumeric && ("numeric" !== i2.xaxis.type || 0 !== i2.labels.length || 0 !== i2.xaxis.categories.length) || this.handleExternalLabelsData(t3); + for (var r2 = this.coreUtils.getCategoryLabels(a2.labels), o2 = 0; o2 < r2.length; o2++) + if (Array.isArray(r2[o2])) { + a2.isMultiLineX = true; + break; + } + } }, { key: "excludeCollapsedSeriesInYAxis", value: function() { + var t3 = this, e2 = this.w; + e2.globals.ignoreYAxisIndexes = e2.globals.collapsedSeries.map(function(i2, a2) { + if (t3.w.globals.isMultipleYAxis && !e2.config.chart.stacked) + return i2.index; + }); + } }]), t2; + }(); + var B = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "getLabel", value: function(t3, e2, i2, a2) { + var s2 = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : [], r2 = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : "12px", o2 = !(arguments.length > 6 && void 0 !== arguments[6]) || arguments[6], n2 = this.w, l2 = void 0 === t3[a2] ? "" : t3[a2], h2 = l2, c2 = n2.globals.xLabelFormatter, d2 = n2.config.xaxis.labels.formatter, g2 = false, u2 = new M(this.ctx), p2 = l2; + o2 && (h2 = u2.xLabelFormat(c2, l2, p2, { i: a2, dateFormatter: new I(this.ctx).formatDate, w: n2 }), void 0 !== d2 && (h2 = d2(l2, t3[a2], { i: a2, dateFormatter: new I(this.ctx).formatDate, w: n2 }))); + var f2, x2; + e2.length > 0 ? (f2 = e2[a2].unit, x2 = null, e2.forEach(function(t4) { + "month" === t4.unit ? x2 = "year" : "day" === t4.unit ? x2 = "month" : "hour" === t4.unit ? x2 = "day" : "minute" === t4.unit && (x2 = "hour"); + }), g2 = x2 === f2, i2 = e2[a2].position, h2 = e2[a2].value) : "datetime" === n2.config.xaxis.type && void 0 === d2 && (h2 = ""), void 0 === h2 && (h2 = ""), h2 = Array.isArray(h2) ? h2 : h2.toString(); + var b2 = new m(this.ctx), v2 = {}; + v2 = n2.globals.rotateXLabels && o2 ? b2.getTextRects(h2, parseInt(r2, 10), null, "rotate(".concat(n2.config.xaxis.labels.rotate, " 0 0)"), false) : b2.getTextRects(h2, parseInt(r2, 10)); + var y2 = !n2.config.xaxis.labels.showDuplicates && this.ctx.timeScale; + return !Array.isArray(h2) && (0 === h2.indexOf("NaN") || 0 === h2.toLowerCase().indexOf("invalid") || h2.toLowerCase().indexOf("infinity") >= 0 || s2.indexOf(h2) >= 0 && y2) && (h2 = ""), { x: i2, text: h2, textRect: v2, isBold: g2 }; + } }, { key: "checkLabelBasedOnTickamount", value: function(t3, e2, i2) { + var a2 = this.w, s2 = a2.config.xaxis.tickAmount; + return "dataPoints" === s2 && (s2 = Math.round(a2.globals.gridWidth / 120)), s2 > i2 || t3 % Math.round(i2 / (s2 + 1)) == 0 || (e2.text = ""), e2; + } }, { key: "checkForOverflowingLabels", value: function(t3, e2, i2, a2, s2) { + var r2 = this.w; + if (0 === t3 && r2.globals.skipFirstTimelinelabel && (e2.text = ""), t3 === i2 - 1 && r2.globals.skipLastTimelinelabel && (e2.text = ""), r2.config.xaxis.labels.hideOverlappingLabels && a2.length > 0) { + var o2 = s2[s2.length - 1]; + e2.x < o2.textRect.width / (r2.globals.rotateXLabels ? Math.abs(r2.config.xaxis.labels.rotate) / 12 : 1.01) + o2.x && (e2.text = ""); + } + return e2; + } }, { key: "checkForReversedLabels", value: function(t3, e2) { + var i2 = this.w; + return i2.config.yaxis[t3] && i2.config.yaxis[t3].reversed && e2.reverse(), e2; + } }, { key: "isYAxisHidden", value: function(t3) { + var e2 = this.w, i2 = new y(this.ctx); + return !e2.config.yaxis[t3].show || !e2.config.yaxis[t3].showForNullSeries && i2.isSeriesNull(t3) && -1 === e2.globals.collapsedSeriesIndices.indexOf(t3); + } }, { key: "getYAxisForeColor", value: function(t3, e2) { + var i2 = this.w; + return Array.isArray(t3) && i2.globals.yAxisScale[e2] && this.ctx.theme.pushExtraColors(t3, i2.globals.yAxisScale[e2].result.length, false), t3; + } }, { key: "drawYAxisTicks", value: function(t3, e2, i2, a2, s2, r2, o2) { + var n2 = this.w, l2 = new m(this.ctx), h2 = n2.globals.translateY; + if (a2.show && e2 > 0) { + true === n2.config.yaxis[s2].opposite && (t3 += a2.width); + for (var c2 = e2; c2 >= 0; c2--) { + var d2 = h2 + e2 / 10 + n2.config.yaxis[s2].labels.offsetY - 1; + n2.globals.isBarHorizontal && (d2 = r2 * c2), "heatmap" === n2.config.chart.type && (d2 += r2 / 2); + var g2 = l2.drawLine(t3 + i2.offsetX - a2.width + a2.offsetX, d2 + a2.offsetY, t3 + i2.offsetX + a2.offsetX, d2 + a2.offsetY, a2.color); + o2.add(g2), h2 += r2; + } + } + } }]), t2; + }(); + var G = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "scaleSvgNode", value: function(t3, e2) { + var i2 = parseFloat(t3.getAttributeNS(null, "width")), a2 = parseFloat(t3.getAttributeNS(null, "height")); + t3.setAttributeNS(null, "width", i2 * e2), t3.setAttributeNS(null, "height", a2 * e2), t3.setAttributeNS(null, "viewBox", "0 0 " + i2 + " " + a2); + } }, { key: "fixSvgStringForIe11", value: function(t3) { + if (!x.isIE11()) + return t3.replace(/ /g, " "); + var e2 = 0, i2 = t3.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g, function(t4) { + return 2 === ++e2 ? 'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"' : t4; + }); + return i2 = (i2 = i2.replace(/xmlns:NS\d+=""/g, "")).replace(/NS\d+:(\w+:\w+=")/g, "$1"); + } }, { key: "getSvgString", value: function(t3) { + null == t3 && (t3 = 1); + var e2 = this.w.globals.dom.Paper.svg(); + if (1 !== t3) { + var i2 = this.w.globals.dom.Paper.node.cloneNode(true); + this.scaleSvgNode(i2, t3), e2 = new XMLSerializer().serializeToString(i2); + } + return this.fixSvgStringForIe11(e2); + } }, { key: "cleanup", value: function() { + var t3 = this.w, e2 = t3.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"), i2 = t3.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"), a2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect"); + Array.prototype.forEach.call(a2, function(t4) { + t4.setAttribute("width", 0); + }), e2 && e2[0] && (e2[0].setAttribute("x", -500), e2[0].setAttribute("x1", -500), e2[0].setAttribute("x2", -500)), i2 && i2[0] && (i2[0].setAttribute("y", -100), i2[0].setAttribute("y1", -100), i2[0].setAttribute("y2", -100)); + } }, { key: "svgUrl", value: function() { + this.cleanup(); + var t3 = this.getSvgString(), e2 = new Blob([t3], { type: "image/svg+xml;charset=utf-8" }); + return URL.createObjectURL(e2); + } }, { key: "dataURI", value: function(t3) { + var e2 = this; + return new Promise(function(i2) { + var a2 = e2.w, s2 = t3 ? t3.scale || t3.width / a2.globals.svgWidth : 1; + e2.cleanup(); + var r2 = document.createElement("canvas"); + r2.width = a2.globals.svgWidth * s2, r2.height = parseInt(a2.globals.dom.elWrap.style.height, 10) * s2; + var o2 = "transparent" === a2.config.chart.background ? "#fff" : a2.config.chart.background, n2 = r2.getContext("2d"); + n2.fillStyle = o2, n2.fillRect(0, 0, r2.width * s2, r2.height * s2); + var l2 = e2.getSvgString(s2); + if (window.canvg && x.isIE11()) { + var h2 = window.canvg.Canvg.fromString(n2, l2, { ignoreClear: true, ignoreDimensions: true }); + h2.start(); + var c2 = r2.msToBlob(); + h2.stop(), i2({ blob: c2 }); + } else { + var d2 = "data:image/svg+xml," + encodeURIComponent(l2), g2 = new Image(); + g2.crossOrigin = "anonymous", g2.onload = function() { + if (n2.drawImage(g2, 0, 0), r2.msToBlob) { + var t4 = r2.msToBlob(); + i2({ blob: t4 }); + } else { + var e3 = r2.toDataURL("image/png"); + i2({ imgURI: e3 }); + } + }, g2.src = d2; + } + }); + } }, { key: "exportToSVG", value: function() { + this.triggerDownload(this.svgUrl(), this.w.config.chart.toolbar.export.svg.filename, ".svg"); + } }, { key: "exportToPng", value: function() { + var t3 = this; + this.dataURI().then(function(e2) { + var i2 = e2.imgURI, a2 = e2.blob; + a2 ? navigator.msSaveOrOpenBlob(a2, t3.w.globals.chartID + ".png") : t3.triggerDownload(i2, t3.w.config.chart.toolbar.export.png.filename, ".png"); + }); + } }, { key: "exportToCSV", value: function(t3) { + var e2 = this, i2 = t3.series, a2 = t3.fileName, s2 = t3.columnDelimiter, r2 = void 0 === s2 ? "," : s2, o2 = t3.lineDelimiter, n2 = void 0 === o2 ? "\n" : o2, l2 = this.w; + i2 || (i2 = l2.config.series); + var h2 = [], c2 = [], d2 = "", g2 = l2.globals.series.map(function(t4, e3) { + return -1 === l2.globals.collapsedSeriesIndices.indexOf(e3) ? t4 : []; + }), p2 = Math.max.apply(Math, u(i2.map(function(t4) { + return t4.data ? t4.data.length : 0; + }))), f2 = new W(this.ctx), b2 = new B(this.ctx), v2 = function(t4) { + var i3 = ""; + if (l2.globals.axisCharts) { + if ("category" === l2.config.xaxis.type || l2.config.xaxis.convertedCatToNumeric) + if (l2.globals.isBarHorizontal) { + var a3 = l2.globals.yLabelFormatters[0], s3 = new N(e2.ctx).getActiveConfigSeriesIndex(); + i3 = a3(l2.globals.labels[t4], { seriesIndex: s3, dataPointIndex: t4, w: l2 }); + } else + i3 = b2.getLabel(l2.globals.labels, l2.globals.timescaleLabels, 0, t4).text; + "datetime" === l2.config.xaxis.type && (l2.config.xaxis.categories.length ? i3 = l2.config.xaxis.categories[t4] : l2.config.labels.length && (i3 = l2.config.labels[t4])); + } else + i3 = l2.config.labels[t4]; + return Array.isArray(i3) && (i3 = i3.join(" ")), x.isNumber(i3) ? i3 : i3.split(r2).join(""); + }, m2 = function(t4, e3) { + if (h2.length && 0 === e3 && c2.push(h2.join(r2)), t4.data) { + t4.data = t4.data.length && t4.data || u(Array(p2)).map(function() { + return ""; + }); + for (var a3 = 0; a3 < t4.data.length; a3++) { + h2 = []; + var s3 = v2(a3); + if (s3 || (f2.isFormatXY() ? s3 = i2[e3].data[a3].x : f2.isFormat2DArray() && (s3 = i2[e3].data[a3] ? i2[e3].data[a3][0] : "")), 0 === e3) { + h2.push((d3 = s3, "datetime" === l2.config.xaxis.type && String(d3).length >= 10 ? l2.config.chart.toolbar.export.csv.dateFormatter(s3) : x.isNumber(s3) ? s3 : s3.split(r2).join(""))); + for (var o3 = 0; o3 < l2.globals.series.length; o3++) { + var n3; + if (f2.isFormatXY()) + h2.push(null === (n3 = i2[o3].data[a3]) || void 0 === n3 ? void 0 : n3.y); + else + h2.push(g2[o3][a3]); + } + } + ("candlestick" === l2.config.chart.type || t4.type && "candlestick" === t4.type) && (h2.pop(), h2.push(l2.globals.seriesCandleO[e3][a3]), h2.push(l2.globals.seriesCandleH[e3][a3]), h2.push(l2.globals.seriesCandleL[e3][a3]), h2.push(l2.globals.seriesCandleC[e3][a3])), ("boxPlot" === l2.config.chart.type || t4.type && "boxPlot" === t4.type) && (h2.pop(), h2.push(l2.globals.seriesCandleO[e3][a3]), h2.push(l2.globals.seriesCandleH[e3][a3]), h2.push(l2.globals.seriesCandleM[e3][a3]), h2.push(l2.globals.seriesCandleL[e3][a3]), h2.push(l2.globals.seriesCandleC[e3][a3])), "rangeBar" === l2.config.chart.type && (h2.pop(), h2.push(l2.globals.seriesRangeStart[e3][a3]), h2.push(l2.globals.seriesRangeEnd[e3][a3])), h2.length && c2.push(h2.join(r2)); + } + } + var d3; + }; + h2.push(l2.config.chart.toolbar.export.csv.headerCategory), "boxPlot" === l2.config.chart.type ? (h2.push("minimum"), h2.push("q1"), h2.push("median"), h2.push("q3"), h2.push("maximum")) : "candlestick" === l2.config.chart.type ? (h2.push("open"), h2.push("high"), h2.push("low"), h2.push("close")) : "rangeBar" === l2.config.chart.type ? (h2.push("minimum"), h2.push("maximum")) : i2.map(function(t4, e3) { + var i3 = (t4.name ? t4.name : "series-".concat(e3)) + ""; + l2.globals.axisCharts && h2.push(i3.split(r2).join("") ? i3.split(r2).join("") : "series-".concat(e3)); + }), l2.globals.axisCharts || (h2.push(l2.config.chart.toolbar.export.csv.headerValue), c2.push(h2.join(r2))), i2.map(function(t4, e3) { + l2.globals.axisCharts ? m2(t4, e3) : ((h2 = []).push(l2.globals.labels[e3].split(r2).join("")), h2.push(g2[e3]), c2.push(h2.join(r2))); + }), d2 += c2.join(n2), this.triggerDownload("data:text/csv; charset=utf-8," + encodeURIComponent("\uFEFF" + d2), a2 || l2.config.chart.toolbar.export.csv.filename, ".csv"); + } }, { key: "triggerDownload", value: function(t3, e2, i2) { + var a2 = document.createElement("a"); + a2.href = t3, a2.download = (e2 || this.w.globals.chartID) + i2, document.body.appendChild(a2), a2.click(), document.body.removeChild(a2); + } }]), t2; + }(); + var V = function() { + function t2(e2, i2) { + a(this, t2), this.ctx = e2, this.elgrid = i2, this.w = e2.w; + var s2 = this.w; + this.axesUtils = new B(e2), this.xaxisLabels = s2.globals.labels.slice(), s2.globals.timescaleLabels.length > 0 && !s2.globals.isBarHorizontal && (this.xaxisLabels = s2.globals.timescaleLabels.slice()), s2.config.xaxis.overwriteCategories && (this.xaxisLabels = s2.config.xaxis.overwriteCategories), this.drawnLabels = [], this.drawnLabelsRects = [], "top" === s2.config.xaxis.position ? this.offY = 0 : this.offY = s2.globals.gridHeight + 1, this.offY = this.offY + s2.config.xaxis.axisBorder.offsetY, this.isCategoryBarHorizontal = "bar" === s2.config.chart.type && s2.config.plotOptions.bar.horizontal, this.xaxisFontSize = s2.config.xaxis.labels.style.fontSize, this.xaxisFontFamily = s2.config.xaxis.labels.style.fontFamily, this.xaxisForeColors = s2.config.xaxis.labels.style.colors, this.xaxisBorderWidth = s2.config.xaxis.axisBorder.width, this.isCategoryBarHorizontal && (this.xaxisBorderWidth = s2.config.yaxis[0].axisBorder.width.toString()), this.xaxisBorderWidth.indexOf("%") > -1 ? this.xaxisBorderWidth = s2.globals.gridWidth * parseInt(this.xaxisBorderWidth, 10) / 100 : this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth, 10), this.xaxisBorderHeight = s2.config.xaxis.axisBorder.height, this.yaxis = s2.config.yaxis[0]; + } + return r(t2, [{ key: "drawXaxis", value: function() { + var t3 = this.w, e2 = new m(this.ctx), i2 = e2.group({ class: "apexcharts-xaxis", transform: "translate(".concat(t3.config.xaxis.offsetX, ", ").concat(t3.config.xaxis.offsetY, ")") }), a2 = e2.group({ class: "apexcharts-xaxis-texts-g", transform: "translate(".concat(t3.globals.translateXAxisX, ", ").concat(t3.globals.translateXAxisY, ")") }); + i2.add(a2); + for (var s2 = [], r2 = 0; r2 < this.xaxisLabels.length; r2++) + s2.push(this.xaxisLabels[r2]); + if (this.drawXAxisLabelAndGroup(true, e2, a2, s2, t3.globals.isXNumeric, function(t4, e3) { + return e3; + }), t3.globals.hasXaxisGroups) { + var o2 = t3.globals.groups; + s2 = []; + for (var n2 = 0; n2 < o2.length; n2++) + s2.push(o2[n2].title); + var l2 = {}; + t3.config.xaxis.group.style && (l2.xaxisFontSize = t3.config.xaxis.group.style.fontSize, l2.xaxisFontFamily = t3.config.xaxis.group.style.fontFamily, l2.xaxisForeColors = t3.config.xaxis.group.style.colors, l2.fontWeight = t3.config.xaxis.group.style.fontWeight, l2.cssClass = t3.config.xaxis.group.style.cssClass), this.drawXAxisLabelAndGroup(false, e2, a2, s2, false, function(t4, e3) { + return o2[t4].cols * e3; + }, l2); + } + if (void 0 !== t3.config.xaxis.title.text) { + var h2 = e2.group({ class: "apexcharts-xaxis-title" }), c2 = e2.drawText({ x: t3.globals.gridWidth / 2 + t3.config.xaxis.title.offsetX, y: this.offY + parseFloat(this.xaxisFontSize) + ("bottom" === t3.config.xaxis.position ? t3.globals.xAxisLabelsHeight : -t3.globals.xAxisLabelsHeight - 10) + t3.config.xaxis.title.offsetY, text: t3.config.xaxis.title.text, textAnchor: "middle", fontSize: t3.config.xaxis.title.style.fontSize, fontFamily: t3.config.xaxis.title.style.fontFamily, fontWeight: t3.config.xaxis.title.style.fontWeight, foreColor: t3.config.xaxis.title.style.color, cssClass: "apexcharts-xaxis-title-text " + t3.config.xaxis.title.style.cssClass }); + h2.add(c2), i2.add(h2); + } + if (t3.config.xaxis.axisBorder.show) { + var d2 = t3.globals.barPadForNumericAxis, g2 = e2.drawLine(t3.globals.padHorizontal + t3.config.xaxis.axisBorder.offsetX - d2, this.offY, this.xaxisBorderWidth + d2, this.offY, t3.config.xaxis.axisBorder.color, 0, this.xaxisBorderHeight); + this.elgrid && this.elgrid.elGridBorders && t3.config.grid.show ? this.elgrid.elGridBorders.add(g2) : i2.add(g2); + } + return i2; + } }, { key: "drawXAxisLabelAndGroup", value: function(t3, e2, i2, a2, s2, r2) { + var o2, n2 = this, l2 = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : {}, h2 = [], c2 = [], d2 = this.w, g2 = l2.xaxisFontSize || this.xaxisFontSize, u2 = l2.xaxisFontFamily || this.xaxisFontFamily, p2 = l2.xaxisForeColors || this.xaxisForeColors, f2 = l2.fontWeight || d2.config.xaxis.labels.style.fontWeight, x2 = l2.cssClass || d2.config.xaxis.labels.style.cssClass, b2 = d2.globals.padHorizontal, v2 = a2.length, m2 = "category" === d2.config.xaxis.type ? d2.globals.dataPoints : v2; + if (0 === m2 && v2 > m2 && (m2 = v2), s2) { + var y2 = m2 > 1 ? m2 - 1 : m2; + o2 = d2.globals.gridWidth / Math.min(y2, v2 - 1), b2 = b2 + r2(0, o2) / 2 + d2.config.xaxis.labels.offsetX; + } else + o2 = d2.globals.gridWidth / m2, b2 = b2 + r2(0, o2) + d2.config.xaxis.labels.offsetX; + for (var w2 = function(s3) { + var l3 = b2 - r2(s3, o2) / 2 + d2.config.xaxis.labels.offsetX; + 0 === s3 && 1 === v2 && o2 / 2 === b2 && 1 === m2 && (l3 = d2.globals.gridWidth / 2); + var y3 = n2.axesUtils.getLabel(a2, d2.globals.timescaleLabels, l3, s3, h2, g2, t3), w3 = 28; + d2.globals.rotateXLabels && t3 && (w3 = 22), d2.config.xaxis.title.text && "top" === d2.config.xaxis.position && (w3 += parseFloat(d2.config.xaxis.title.style.fontSize) + 2), t3 || (w3 = w3 + parseFloat(g2) + (d2.globals.xAxisLabelsHeight - d2.globals.xAxisGroupLabelsHeight) + (d2.globals.rotateXLabels ? 10 : 0)), y3 = void 0 !== d2.config.xaxis.tickAmount && "dataPoints" !== d2.config.xaxis.tickAmount && "datetime" !== d2.config.xaxis.type ? n2.axesUtils.checkLabelBasedOnTickamount(s3, y3, v2) : n2.axesUtils.checkForOverflowingLabels(s3, y3, v2, h2, c2); + if (d2.config.xaxis.labels.show) { + var k3 = e2.drawText({ x: y3.x, y: n2.offY + d2.config.xaxis.labels.offsetY + w3 - ("top" === d2.config.xaxis.position ? d2.globals.xAxisHeight + d2.config.xaxis.axisTicks.height - 2 : 0), text: y3.text, textAnchor: "middle", fontWeight: y3.isBold ? 600 : f2, fontSize: g2, fontFamily: u2, foreColor: Array.isArray(p2) ? t3 && d2.config.xaxis.convertedCatToNumeric ? p2[d2.globals.minX + s3 - 1] : p2[s3] : p2, isPlainText: false, cssClass: (t3 ? "apexcharts-xaxis-label " : "apexcharts-xaxis-group-label ") + x2 }); + if (i2.add(k3), k3.on("click", function(t4) { + if ("function" == typeof d2.config.chart.events.xAxisLabelClick) { + var e3 = Object.assign({}, d2, { labelIndex: s3 }); + d2.config.chart.events.xAxisLabelClick(t4, n2.ctx, e3); + } + }), t3) { + var A2 = document.createElementNS(d2.globals.SVGNS, "title"); + A2.textContent = Array.isArray(y3.text) ? y3.text.join(" ") : y3.text, k3.node.appendChild(A2), "" !== y3.text && (h2.push(y3.text), c2.push(y3)); + } + } + s3 < v2 - 1 && (b2 += r2(s3 + 1, o2)); + }, k2 = 0; k2 <= v2 - 1; k2++) + w2(k2); + } }, { key: "drawXaxisInversed", value: function(t3) { + var e2, i2, a2 = this, s2 = this.w, r2 = new m(this.ctx), o2 = s2.config.yaxis[0].opposite ? s2.globals.translateYAxisX[t3] : 0, n2 = r2.group({ class: "apexcharts-yaxis apexcharts-xaxis-inversed", rel: t3 }), l2 = r2.group({ class: "apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g", transform: "translate(" + o2 + ", 0)" }); + n2.add(l2); + var h2 = []; + if (s2.config.yaxis[t3].show) + for (var c2 = 0; c2 < this.xaxisLabels.length; c2++) + h2.push(this.xaxisLabels[c2]); + e2 = s2.globals.gridHeight / h2.length, i2 = -e2 / 2.2; + var d2 = s2.globals.yLabelFormatters[0], g2 = s2.config.yaxis[0].labels; + if (g2.show) + for (var u2 = function(o3) { + var n3 = void 0 === h2[o3] ? "" : h2[o3]; + n3 = d2(n3, { seriesIndex: t3, dataPointIndex: o3, w: s2 }); + var c3 = a2.axesUtils.getYAxisForeColor(g2.style.colors, t3), u3 = 0; + Array.isArray(n3) && (u3 = n3.length / 2 * parseInt(g2.style.fontSize, 10)); + var p3 = g2.offsetX - 15, f3 = "end"; + a2.yaxis.opposite && (f3 = "start"), "left" === s2.config.yaxis[0].labels.align ? (p3 = g2.offsetX, f3 = "start") : "center" === s2.config.yaxis[0].labels.align ? (p3 = g2.offsetX, f3 = "middle") : "right" === s2.config.yaxis[0].labels.align && (f3 = "end"); + var x3 = r2.drawText({ x: p3, y: i2 + e2 + g2.offsetY - u3, text: n3, textAnchor: f3, foreColor: Array.isArray(c3) ? c3[o3] : c3, fontSize: g2.style.fontSize, fontFamily: g2.style.fontFamily, fontWeight: g2.style.fontWeight, isPlainText: false, cssClass: "apexcharts-yaxis-label " + g2.style.cssClass, maxWidth: g2.maxWidth }); + l2.add(x3), x3.on("click", function(t4) { + if ("function" == typeof s2.config.chart.events.xAxisLabelClick) { + var e3 = Object.assign({}, s2, { labelIndex: o3 }); + s2.config.chart.events.xAxisLabelClick(t4, a2.ctx, e3); + } + }); + var b3 = document.createElementNS(s2.globals.SVGNS, "title"); + if (b3.textContent = Array.isArray(n3) ? n3.join(" ") : n3, x3.node.appendChild(b3), 0 !== s2.config.yaxis[t3].labels.rotate) { + var v3 = r2.rotateAroundCenter(x3.node); + x3.node.setAttribute("transform", "rotate(".concat(s2.config.yaxis[t3].labels.rotate, " 0 ").concat(v3.y, ")")); + } + i2 += e2; + }, p2 = 0; p2 <= h2.length - 1; p2++) + u2(p2); + if (void 0 !== s2.config.yaxis[0].title.text) { + var f2 = r2.group({ class: "apexcharts-yaxis-title apexcharts-xaxis-title-inversed", transform: "translate(" + o2 + ", 0)" }), x2 = r2.drawText({ x: s2.config.yaxis[0].title.offsetX, y: s2.globals.gridHeight / 2 + s2.config.yaxis[0].title.offsetY, text: s2.config.yaxis[0].title.text, textAnchor: "middle", foreColor: s2.config.yaxis[0].title.style.color, fontSize: s2.config.yaxis[0].title.style.fontSize, fontWeight: s2.config.yaxis[0].title.style.fontWeight, fontFamily: s2.config.yaxis[0].title.style.fontFamily, cssClass: "apexcharts-yaxis-title-text " + s2.config.yaxis[0].title.style.cssClass }); + f2.add(x2), n2.add(f2); + } + var b2 = 0; + this.isCategoryBarHorizontal && s2.config.yaxis[0].opposite && (b2 = s2.globals.gridWidth); + var v2 = s2.config.xaxis.axisBorder; + if (v2.show) { + var y2 = r2.drawLine(s2.globals.padHorizontal + v2.offsetX + b2, 1 + v2.offsetY, s2.globals.padHorizontal + v2.offsetX + b2, s2.globals.gridHeight + v2.offsetY, v2.color, 0); + this.elgrid && this.elgrid.elGridBorders && s2.config.grid.show ? this.elgrid.elGridBorders.add(y2) : n2.add(y2); + } + return s2.config.yaxis[0].axisTicks.show && this.axesUtils.drawYAxisTicks(b2, h2.length, s2.config.yaxis[0].axisBorder, s2.config.yaxis[0].axisTicks, 0, e2, n2), n2; + } }, { key: "drawXaxisTicks", value: function(t3, e2, i2) { + var a2 = this.w, s2 = t3; + if (!(t3 < 0 || t3 - 2 > a2.globals.gridWidth)) { + var r2 = this.offY + a2.config.xaxis.axisTicks.offsetY; + if (e2 = e2 + r2 + a2.config.xaxis.axisTicks.height, "top" === a2.config.xaxis.position && (e2 = r2 - a2.config.xaxis.axisTicks.height), a2.config.xaxis.axisTicks.show) { + var o2 = new m(this.ctx).drawLine(t3 + a2.config.xaxis.axisTicks.offsetX, r2 + a2.config.xaxis.offsetY, s2 + a2.config.xaxis.axisTicks.offsetX, e2 + a2.config.xaxis.offsetY, a2.config.xaxis.axisTicks.color); + i2.add(o2), o2.node.classList.add("apexcharts-xaxis-tick"); + } + } + } }, { key: "getXAxisTicksPositions", value: function() { + var t3 = this.w, e2 = [], i2 = this.xaxisLabels.length, a2 = t3.globals.padHorizontal; + if (t3.globals.timescaleLabels.length > 0) + for (var s2 = 0; s2 < i2; s2++) + a2 = this.xaxisLabels[s2].position, e2.push(a2); + else + for (var r2 = i2, o2 = 0; o2 < r2; o2++) { + var n2 = r2; + t3.globals.isXNumeric && "bar" !== t3.config.chart.type && (n2 -= 1), a2 += t3.globals.gridWidth / n2, e2.push(a2); + } + return e2; + } }, { key: "xAxisLabelCorrections", value: function() { + var t3 = this.w, e2 = new m(this.ctx), i2 = t3.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g"), a2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-xaxis-texts-g text:not(.apexcharts-xaxis-group-label)"), s2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-inversed text"), r2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-xaxis-inversed-texts-g text tspan"); + if (t3.globals.rotateXLabels || t3.config.xaxis.labels.rotateAlways) + for (var o2 = 0; o2 < a2.length; o2++) { + var n2 = e2.rotateAroundCenter(a2[o2]); + n2.y = n2.y - 1, n2.x = n2.x + 1, a2[o2].setAttribute("transform", "rotate(".concat(t3.config.xaxis.labels.rotate, " ").concat(n2.x, " ").concat(n2.y, ")")), a2[o2].setAttribute("text-anchor", "end"); + i2.setAttribute("transform", "translate(0, ".concat(-10, ")")); + var l2 = a2[o2].childNodes; + t3.config.xaxis.labels.trim && Array.prototype.forEach.call(l2, function(i3) { + e2.placeTextWithEllipsis(i3, i3.textContent, t3.globals.xAxisLabelsHeight - ("bottom" === t3.config.legend.position ? 20 : 10)); + }); + } + else + !function() { + for (var i3 = t3.globals.gridWidth / (t3.globals.labels.length + 1), s3 = 0; s3 < a2.length; s3++) { + var r3 = a2[s3].childNodes; + t3.config.xaxis.labels.trim && "datetime" !== t3.config.xaxis.type && Array.prototype.forEach.call(r3, function(t4) { + e2.placeTextWithEllipsis(t4, t4.textContent, i3); + }); + } + }(); + if (s2.length > 0) { + var h2 = s2[s2.length - 1].getBBox(), c2 = s2[0].getBBox(); + h2.x < -20 && s2[s2.length - 1].parentNode.removeChild(s2[s2.length - 1]), c2.x + c2.width > t3.globals.gridWidth && !t3.globals.isBarHorizontal && s2[0].parentNode.removeChild(s2[0]); + for (var d2 = 0; d2 < r2.length; d2++) + e2.placeTextWithEllipsis(r2[d2], r2[d2].textContent, t3.config.yaxis[0].labels.maxWidth - (t3.config.yaxis[0].title.text ? 2 * parseFloat(t3.config.yaxis[0].title.style.fontSize) : 0) - 15); + } + } }]), t2; + }(); + var j = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + var i2 = this.w; + this.xaxisLabels = i2.globals.labels.slice(), this.axesUtils = new B(e2), this.isRangeBar = i2.globals.seriesRange.length && i2.globals.isBarHorizontal, i2.globals.timescaleLabels.length > 0 && (this.xaxisLabels = i2.globals.timescaleLabels.slice()); + } + return r(t2, [{ key: "drawGridArea", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, e2 = this.w, i2 = new m(this.ctx); + null === t3 && (t3 = i2.group({ class: "apexcharts-grid" })); + var a2 = i2.drawLine(e2.globals.padHorizontal, 1, e2.globals.padHorizontal, e2.globals.gridHeight, "transparent"), s2 = i2.drawLine(e2.globals.padHorizontal, e2.globals.gridHeight, e2.globals.gridWidth, e2.globals.gridHeight, "transparent"); + return t3.add(s2), t3.add(a2), t3; + } }, { key: "drawGrid", value: function() { + var t3 = null; + return this.w.globals.axisCharts && (t3 = this.renderGrid(), this.drawGridArea(t3.el)), t3; + } }, { key: "createGridMask", value: function() { + var t3 = this.w, e2 = t3.globals, i2 = new m(this.ctx), a2 = Array.isArray(t3.config.stroke.width) ? 0 : t3.config.stroke.width; + if (Array.isArray(t3.config.stroke.width)) { + var s2 = 0; + t3.config.stroke.width.forEach(function(t4) { + s2 = Math.max(s2, t4); + }), a2 = s2; + } + e2.dom.elGridRectMask = document.createElementNS(e2.SVGNS, "clipPath"), e2.dom.elGridRectMask.setAttribute("id", "gridRectMask".concat(e2.cuid)), e2.dom.elGridRectMarkerMask = document.createElementNS(e2.SVGNS, "clipPath"), e2.dom.elGridRectMarkerMask.setAttribute("id", "gridRectMarkerMask".concat(e2.cuid)), e2.dom.elForecastMask = document.createElementNS(e2.SVGNS, "clipPath"), e2.dom.elForecastMask.setAttribute("id", "forecastMask".concat(e2.cuid)), e2.dom.elNonForecastMask = document.createElementNS(e2.SVGNS, "clipPath"), e2.dom.elNonForecastMask.setAttribute("id", "nonForecastMask".concat(e2.cuid)); + var r2 = t3.config.chart.type, o2 = 0, n2 = 0; + ("bar" === r2 || "rangeBar" === r2 || "candlestick" === r2 || "boxPlot" === r2 || t3.globals.comboBarCount > 0) && t3.globals.isXNumeric && !t3.globals.isBarHorizontal && (o2 = t3.config.grid.padding.left, n2 = t3.config.grid.padding.right, e2.barPadForNumericAxis > o2 && (o2 = e2.barPadForNumericAxis, n2 = e2.barPadForNumericAxis)), e2.dom.elGridRect = i2.drawRect(-a2 - o2 - 2, 2 * -a2 - 2, e2.gridWidth + a2 + n2 + o2 + 4, e2.gridHeight + 4 * a2 + 4, 0, "#fff"); + var l2 = t3.globals.markers.largestSize + 1; + e2.dom.elGridRectMarker = i2.drawRect(2 * -l2, 2 * -l2, e2.gridWidth + 4 * l2, e2.gridHeight + 4 * l2, 0, "#fff"), e2.dom.elGridRectMask.appendChild(e2.dom.elGridRect.node), e2.dom.elGridRectMarkerMask.appendChild(e2.dom.elGridRectMarker.node); + var h2 = e2.dom.baseEl.querySelector("defs"); + h2.appendChild(e2.dom.elGridRectMask), h2.appendChild(e2.dom.elForecastMask), h2.appendChild(e2.dom.elNonForecastMask), h2.appendChild(e2.dom.elGridRectMarkerMask); + } }, { key: "_drawGridLines", value: function(t3) { + var e2 = t3.i, i2 = t3.x1, a2 = t3.y1, s2 = t3.x2, r2 = t3.y2, o2 = t3.xCount, n2 = t3.parent, l2 = this.w; + if (!(0 === e2 && l2.globals.skipFirstTimelinelabel || e2 === o2 - 1 && l2.globals.skipLastTimelinelabel && !l2.config.xaxis.labels.formatter || "radar" === l2.config.chart.type)) { + l2.config.grid.xaxis.lines.show && this._drawGridLine({ i: e2, x1: i2, y1: a2, x2: s2, y2: r2, xCount: o2, parent: n2 }); + var h2 = 0; + if (l2.globals.hasXaxisGroups && "between" === l2.config.xaxis.tickPlacement) { + var c2 = l2.globals.groups; + if (c2) { + for (var d2 = 0, g2 = 0; d2 < e2 && g2 < c2.length; g2++) + d2 += c2[g2].cols; + d2 === e2 && (h2 = 0.6 * l2.globals.xAxisLabelsHeight); + } + } + new V(this.ctx).drawXaxisTicks(i2, h2, l2.globals.dom.elGraphical); + } + } }, { key: "_drawGridLine", value: function(t3) { + var e2 = t3.i, i2 = t3.x1, a2 = t3.y1, s2 = t3.x2, r2 = t3.y2, o2 = t3.xCount, n2 = t3.parent, l2 = this.w, h2 = false, c2 = n2.node.classList.contains("apexcharts-gridlines-horizontal"), d2 = l2.config.grid.strokeDashArray, g2 = l2.globals.barPadForNumericAxis; + (0 === a2 && 0 === r2 || 0 === i2 && 0 === s2) && (h2 = true), a2 === l2.globals.gridHeight && r2 === l2.globals.gridHeight && (h2 = true), !l2.globals.isBarHorizontal || 0 !== e2 && e2 !== o2 - 1 || (h2 = true); + var u2 = new m(this).drawLine(i2 - (c2 ? g2 : 0), a2, s2 + (c2 ? g2 : 0), r2, l2.config.grid.borderColor, d2); + u2.node.classList.add("apexcharts-gridline"), h2 && l2.config.grid.show ? this.elGridBorders.add(u2) : n2.add(u2); + } }, { key: "_drawGridBandRect", value: function(t3) { + var e2 = t3.c, i2 = t3.x1, a2 = t3.y1, s2 = t3.x2, r2 = t3.y2, o2 = t3.type, n2 = this.w, l2 = new m(this.ctx), h2 = n2.globals.barPadForNumericAxis; + if ("column" !== o2 || "datetime" !== n2.config.xaxis.type) { + var c2 = n2.config.grid[o2].colors[e2], d2 = l2.drawRect(i2 - ("row" === o2 ? h2 : 0), a2, s2 + ("row" === o2 ? 2 * h2 : 0), r2, 0, c2, n2.config.grid[o2].opacity); + this.elg.add(d2), d2.attr("clip-path", "url(#gridRectMask".concat(n2.globals.cuid, ")")), d2.node.classList.add("apexcharts-grid-".concat(o2)); + } + } }, { key: "_drawXYLines", value: function(t3) { + var e2 = this, i2 = t3.xCount, a2 = t3.tickAmount, s2 = this.w; + if (s2.config.grid.xaxis.lines.show || s2.config.xaxis.axisTicks.show) { + var r2, o2 = s2.globals.padHorizontal, n2 = s2.globals.gridHeight; + s2.globals.timescaleLabels.length ? function(t4) { + for (var a3 = t4.xC, s3 = t4.x1, r3 = t4.y1, o3 = t4.x2, n3 = t4.y2, l3 = 0; l3 < a3; l3++) + s3 = e2.xaxisLabels[l3].position, o3 = e2.xaxisLabels[l3].position, e2._drawGridLines({ i: l3, x1: s3, y1: r3, x2: o3, y2: n3, xCount: i2, parent: e2.elgridLinesV }); + }({ xC: i2, x1: o2, y1: 0, x2: r2, y2: n2 }) : (s2.globals.isXNumeric && (i2 = s2.globals.xAxisScale.result.length), function(t4) { + for (var a3 = t4.xC, r3 = t4.x1, o3 = t4.y1, n3 = t4.x2, l3 = t4.y2, h3 = 0; h3 < a3 + (s2.globals.isXNumeric ? 0 : 1); h3++) + 0 === h3 && 1 === a3 && 1 === s2.globals.dataPoints && (n3 = r3 = s2.globals.gridWidth / 2), e2._drawGridLines({ i: h3, x1: r3, y1: o3, x2: n3, y2: l3, xCount: i2, parent: e2.elgridLinesV }), n3 = r3 += s2.globals.gridWidth / (s2.globals.isXNumeric ? a3 - 1 : a3); + }({ xC: i2, x1: o2, y1: 0, x2: r2, y2: n2 })); + } + if (s2.config.grid.yaxis.lines.show) { + var l2 = 0, h2 = 0, c2 = s2.globals.gridWidth, d2 = a2 + 1; + this.isRangeBar && (d2 = s2.globals.labels.length); + for (var g2 = 0; g2 < d2 + (this.isRangeBar ? 1 : 0); g2++) + this._drawGridLine({ i: g2, xCount: d2 + (this.isRangeBar ? 1 : 0), x1: 0, y1: l2, x2: c2, y2: h2, parent: this.elgridLinesH }), h2 = l2 += s2.globals.gridHeight / (this.isRangeBar ? d2 : a2); + } + } }, { key: "_drawInvertedXYLines", value: function(t3) { + var e2 = t3.xCount, i2 = this.w; + if (i2.config.grid.xaxis.lines.show || i2.config.xaxis.axisTicks.show) + for (var a2, s2 = i2.globals.padHorizontal, r2 = i2.globals.gridHeight, o2 = 0; o2 < e2 + 1; o2++) { + i2.config.grid.xaxis.lines.show && this._drawGridLine({ i: o2, xCount: e2 + 1, x1: s2, y1: 0, x2: a2, y2: r2, parent: this.elgridLinesV }), new V(this.ctx).drawXaxisTicks(s2, 0, i2.globals.dom.elGraphical), a2 = s2 = s2 + i2.globals.gridWidth / e2 + 0.3; + } + if (i2.config.grid.yaxis.lines.show) + for (var n2 = 0, l2 = 0, h2 = i2.globals.gridWidth, c2 = 0; c2 < i2.globals.dataPoints + 1; c2++) + this._drawGridLine({ i: c2, xCount: i2.globals.dataPoints + 1, x1: 0, y1: n2, x2: h2, y2: l2, parent: this.elgridLinesH }), l2 = n2 += i2.globals.gridHeight / i2.globals.dataPoints; + } }, { key: "renderGrid", value: function() { + var t3 = this.w, e2 = new m(this.ctx); + this.elg = e2.group({ class: "apexcharts-grid" }), this.elgridLinesH = e2.group({ class: "apexcharts-gridlines-horizontal" }), this.elgridLinesV = e2.group({ class: "apexcharts-gridlines-vertical" }), this.elGridBorders = e2.group({ class: "apexcharts-grid-borders" }), this.elg.add(this.elgridLinesH), this.elg.add(this.elgridLinesV), t3.config.grid.show || (this.elgridLinesV.hide(), this.elgridLinesH.hide(), this.elGridBorders.hide()); + for (var i2, a2 = t3.globals.yAxisScale.length ? t3.globals.yAxisScale[0].result.length - 1 : 5, s2 = 0; s2 < t3.globals.series.length && (void 0 !== t3.globals.yAxisScale[s2] && (a2 = t3.globals.yAxisScale[s2].result.length - 1), !(a2 > 2)); s2++) + ; + return !t3.globals.isBarHorizontal || this.isRangeBar ? (i2 = this.xaxisLabels.length, this.isRangeBar && (i2--, a2 = t3.globals.labels.length, t3.config.xaxis.tickAmount && t3.config.xaxis.labels.formatter && (i2 = t3.config.xaxis.tickAmount)), this._drawXYLines({ xCount: i2, tickAmount: a2 })) : (i2 = a2, a2 = t3.globals.xTickAmount, this._drawInvertedXYLines({ xCount: i2, tickAmount: a2 })), this.drawGridBands(i2, a2), { el: this.elg, elGridBorders: this.elGridBorders, xAxisTickWidth: t3.globals.gridWidth / i2 }; + } }, { key: "drawGridBands", value: function(t3, e2) { + var i2 = this.w; + if (void 0 !== i2.config.grid.row.colors && i2.config.grid.row.colors.length > 0) + for (var a2 = 0, s2 = i2.globals.gridHeight / e2, r2 = i2.globals.gridWidth, o2 = 0, n2 = 0; o2 < e2; o2++, n2++) + n2 >= i2.config.grid.row.colors.length && (n2 = 0), this._drawGridBandRect({ c: n2, x1: 0, y1: a2, x2: r2, y2: s2, type: "row" }), a2 += i2.globals.gridHeight / e2; + if (void 0 !== i2.config.grid.column.colors && i2.config.grid.column.colors.length > 0) + for (var l2 = i2.globals.isBarHorizontal || "on" !== i2.config.xaxis.tickPlacement || "category" !== i2.config.xaxis.type && !i2.config.xaxis.convertedCatToNumeric ? t3 : t3 - 1, h2 = i2.globals.padHorizontal, c2 = i2.globals.padHorizontal + i2.globals.gridWidth / l2, d2 = i2.globals.gridHeight, g2 = 0, u2 = 0; g2 < t3; g2++, u2++) + u2 >= i2.config.grid.column.colors.length && (u2 = 0), this._drawGridBandRect({ c: u2, x1: h2, y1: 0, x2: c2, y2: d2, type: "column" }), h2 += i2.globals.gridWidth / l2; + } }]), t2; + }(); + var _ = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "niceScale", value: function(t3, e2) { + var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10, a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, s2 = arguments.length > 4 ? arguments[4] : void 0, r2 = this.w, o2 = Math.abs(e2 - t3); + if ("dataPoints" === (i2 = this._adjustTicksForSmallRange(i2, a2, o2)) && (i2 = r2.globals.dataPoints - 1), t3 === Number.MIN_VALUE && 0 === e2 || !x.isNumber(t3) && !x.isNumber(e2) || t3 === Number.MIN_VALUE && e2 === -Number.MAX_VALUE) + return t3 = 0, e2 = i2, this.linearScale(t3, e2, i2); + t3 > e2 ? (console.warn("axis.min cannot be greater than axis.max"), e2 = t3 + 0.1) : t3 === e2 && (t3 = 0 === t3 ? 0 : t3 - 0.5, e2 = 0 === e2 ? 2 : e2 + 0.5); + var n2 = []; + o2 < 1 && s2 && ("candlestick" === r2.config.chart.type || "candlestick" === r2.config.series[a2].type || "boxPlot" === r2.config.chart.type || "boxPlot" === r2.config.series[a2].type || r2.globals.isRangeData) && (e2 *= 1.01); + var l2 = i2 + 1; + l2 < 2 ? l2 = 2 : l2 > 2 && (l2 -= 2); + var h2 = o2 / l2, c2 = Math.floor(x.log10(h2)), d2 = Math.pow(10, c2), g2 = Math.round(h2 / d2); + g2 < 1 && (g2 = 1); + var u2 = g2 * d2, p2 = u2 * Math.floor(t3 / u2), f2 = u2 * Math.ceil(e2 / u2), b2 = p2; + if (s2 && o2 > 2) { + for (; n2.push(x.stripNumber(b2, 7)), !((b2 += u2) > f2); ) + ; + return { result: n2, niceMin: n2[0], niceMax: n2[n2.length - 1] }; + } + var v2 = t3; + (n2 = []).push(x.stripNumber(v2, 7)); + for (var m2 = Math.abs(e2 - t3) / i2, y2 = 0; y2 <= i2; y2++) + v2 += m2, n2.push(v2); + return n2[n2.length - 2] >= e2 && n2.pop(), { result: n2, niceMin: n2[0], niceMax: n2[n2.length - 1] }; + } }, { key: "linearScale", value: function(t3, e2) { + var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10, a2 = arguments.length > 3 ? arguments[3] : void 0, s2 = Math.abs(e2 - t3); + "dataPoints" === (i2 = this._adjustTicksForSmallRange(i2, a2, s2)) && (i2 = this.w.globals.dataPoints - 1); + var r2 = s2 / i2; + i2 === Number.MAX_VALUE && (i2 = 10, r2 = 1); + for (var o2 = [], n2 = t3; i2 >= 0; ) + o2.push(n2), n2 += r2, i2 -= 1; + return { result: o2, niceMin: o2[0], niceMax: o2[o2.length - 1] }; + } }, { key: "logarithmicScaleNice", value: function(t3, e2, i2) { + e2 <= 0 && (e2 = Math.max(t3, i2)), t3 <= 0 && (t3 = Math.min(e2, i2)); + for (var a2 = [], s2 = Math.ceil(Math.log(e2) / Math.log(i2) + 1), r2 = Math.floor(Math.log(t3) / Math.log(i2)); r2 < s2; r2++) + a2.push(Math.pow(i2, r2)); + return { result: a2, niceMin: a2[0], niceMax: a2[a2.length - 1] }; + } }, { key: "logarithmicScale", value: function(t3, e2, i2) { + e2 <= 0 && (e2 = Math.max(t3, i2)), t3 <= 0 && (t3 = Math.min(e2, i2)); + for (var a2 = [], s2 = Math.log(e2) / Math.log(i2), r2 = Math.log(t3) / Math.log(i2), o2 = s2 - r2, n2 = Math.round(o2), l2 = o2 / n2, h2 = 0, c2 = r2; h2 < n2; h2++, c2 += l2) + a2.push(Math.pow(i2, c2)); + return a2.push(Math.pow(i2, s2)), { result: a2, niceMin: t3, niceMax: e2 }; + } }, { key: "_adjustTicksForSmallRange", value: function(t3, e2, i2) { + var a2 = t3; + if (void 0 !== e2 && this.w.config.yaxis[e2].labels.formatter && void 0 === this.w.config.yaxis[e2].tickAmount) { + var s2 = Number(this.w.config.yaxis[e2].labels.formatter(1)); + x.isNumber(s2) && 0 === this.w.globals.yValueDecimal && (a2 = Math.ceil(i2)); + } + return a2 < t3 ? a2 : t3; + } }, { key: "setYScaleForIndex", value: function(t3, e2, i2) { + var a2 = this.w.globals, s2 = this.w.config, r2 = a2.isBarHorizontal ? s2.xaxis : s2.yaxis[t3]; + void 0 === a2.yAxisScale[t3] && (a2.yAxisScale[t3] = []); + var o2 = Math.abs(i2 - e2); + if (r2.logarithmic && o2 <= 5 && (a2.invalidLogScale = true), r2.logarithmic && o2 > 5) + a2.allSeriesCollapsed = false, a2.yAxisScale[t3] = this.logarithmicScale(e2, i2, r2.logBase), a2.yAxisScale[t3] = r2.forceNiceScale ? this.logarithmicScaleNice(e2, i2, r2.logBase) : this.logarithmicScale(e2, i2, r2.logBase); + else if (i2 !== -Number.MAX_VALUE && x.isNumber(i2)) + if (a2.allSeriesCollapsed = false, void 0 === r2.min && void 0 === r2.max || r2.forceNiceScale) { + var n2 = void 0 === s2.yaxis[t3].max && void 0 === s2.yaxis[t3].min || s2.yaxis[t3].forceNiceScale; + a2.yAxisScale[t3] = this.niceScale(e2, i2, r2.tickAmount ? r2.tickAmount : o2 < 5 && o2 > 1 ? o2 + 1 : 5, t3, n2); + } else + a2.yAxisScale[t3] = this.linearScale(e2, i2, r2.tickAmount, t3); + else + a2.yAxisScale[t3] = this.linearScale(0, 5, 5); + } }, { key: "setXScale", value: function(t3, e2) { + var i2 = this.w, a2 = i2.globals, s2 = i2.config.xaxis, r2 = Math.abs(e2 - t3); + return e2 !== -Number.MAX_VALUE && x.isNumber(e2) ? a2.xAxisScale = this.linearScale(t3, e2, s2.tickAmount ? s2.tickAmount : r2 < 5 && r2 > 1 ? r2 + 1 : 5, 0) : a2.xAxisScale = this.linearScale(0, 5, 5), a2.xAxisScale; + } }, { key: "setMultipleYScales", value: function() { + var t3 = this, e2 = this.w.globals, i2 = this.w.config, a2 = e2.minYArr.concat([]), s2 = e2.maxYArr.concat([]), r2 = []; + i2.yaxis.forEach(function(e3, o2) { + var n2 = o2; + i2.series.forEach(function(t4, i3) { + t4.name === e3.seriesName && (n2 = i3, o2 !== i3 ? r2.push({ index: i3, similarIndex: o2, alreadyExists: true }) : r2.push({ index: i3 })); + }); + var l2 = a2[n2], h2 = s2[n2]; + t3.setYScaleForIndex(o2, l2, h2); + }), this.sameScaleInMultipleAxes(a2, s2, r2); + } }, { key: "sameScaleInMultipleAxes", value: function(t3, e2, i2) { + var a2 = this, s2 = this.w.config, r2 = this.w.globals, o2 = []; + i2.forEach(function(t4) { + t4.alreadyExists && (void 0 === o2[t4.index] && (o2[t4.index] = []), o2[t4.index].push(t4.index), o2[t4.index].push(t4.similarIndex)); + }), r2.yAxisSameScaleIndices = o2, o2.forEach(function(t4, e3) { + o2.forEach(function(i3, a3) { + var s3, r3; + e3 !== a3 && (s3 = t4, r3 = i3, s3.filter(function(t5) { + return -1 !== r3.indexOf(t5); + })).length > 0 && (o2[e3] = o2[e3].concat(o2[a3])); + }); + }); + var n2 = o2.map(function(t4) { + return t4.filter(function(e3, i3) { + return t4.indexOf(e3) === i3; + }); + }).map(function(t4) { + return t4.sort(); + }); + o2 = o2.filter(function(t4) { + return !!t4; + }); + var l2 = n2.slice(), h2 = l2.map(function(t4) { + return JSON.stringify(t4); + }); + l2 = l2.filter(function(t4, e3) { + return h2.indexOf(JSON.stringify(t4)) === e3; + }); + var c2 = [], d2 = []; + t3.forEach(function(t4, i3) { + l2.forEach(function(a3, s3) { + a3.indexOf(i3) > -1 && (void 0 === c2[s3] && (c2[s3] = [], d2[s3] = []), c2[s3].push({ key: i3, value: t4 }), d2[s3].push({ key: i3, value: e2[i3] })); + }); + }); + var g2 = Array.apply(null, Array(l2.length)).map(Number.prototype.valueOf, Number.MIN_VALUE), u2 = Array.apply(null, Array(l2.length)).map(Number.prototype.valueOf, -Number.MAX_VALUE); + c2.forEach(function(t4, e3) { + t4.forEach(function(t5, i3) { + g2[e3] = Math.min(t5.value, g2[e3]); + }); + }), d2.forEach(function(t4, e3) { + t4.forEach(function(t5, i3) { + u2[e3] = Math.max(t5.value, u2[e3]); + }); + }), t3.forEach(function(t4, e3) { + d2.forEach(function(t5, i3) { + var o3 = g2[i3], n3 = u2[i3]; + s2.chart.stacked && (n3 = 0, t5.forEach(function(t6, e4) { + t6.value !== -Number.MAX_VALUE && (n3 += t6.value), o3 !== Number.MIN_VALUE && (o3 += c2[i3][e4].value); + })), t5.forEach(function(i4, l3) { + t5[l3].key === e3 && (void 0 !== s2.yaxis[e3].min && (o3 = "function" == typeof s2.yaxis[e3].min ? s2.yaxis[e3].min(r2.minY) : s2.yaxis[e3].min), void 0 !== s2.yaxis[e3].max && (n3 = "function" == typeof s2.yaxis[e3].max ? s2.yaxis[e3].max(r2.maxY) : s2.yaxis[e3].max), a2.setYScaleForIndex(e3, o3, n3)); + }); + }); + }); + } }, { key: "autoScaleY", value: function(t3, e2, i2) { + t3 || (t3 = this); + var a2 = t3.w; + if (a2.globals.isMultipleYAxis || a2.globals.collapsedSeries.length) + return console.warn("autoScaleYaxis not supported in a multi-yaxis chart."), e2; + var s2 = a2.globals.seriesX[0], r2 = a2.config.chart.stacked; + return e2.forEach(function(t4, o2) { + for (var n2 = 0, l2 = 0; l2 < s2.length; l2++) + if (s2[l2] >= i2.xaxis.min) { + n2 = l2; + break; + } + var h2, c2, d2 = a2.globals.minYArr[o2], g2 = a2.globals.maxYArr[o2], u2 = a2.globals.stackedSeriesTotals; + a2.globals.series.forEach(function(o3, l3) { + var p2 = o3[n2]; + r2 ? (p2 = u2[n2], h2 = c2 = p2, u2.forEach(function(t5, e3) { + s2[e3] <= i2.xaxis.max && s2[e3] >= i2.xaxis.min && (t5 > c2 && null !== t5 && (c2 = t5), o3[e3] < h2 && null !== o3[e3] && (h2 = o3[e3])); + })) : (h2 = c2 = p2, o3.forEach(function(t5, e3) { + if (s2[e3] <= i2.xaxis.max && s2[e3] >= i2.xaxis.min) { + var r3 = t5, o4 = t5; + a2.globals.series.forEach(function(i3, a3) { + null !== t5 && (r3 = Math.min(i3[e3], r3), o4 = Math.max(i3[e3], o4)); + }), o4 > c2 && null !== o4 && (c2 = o4), r3 < h2 && null !== r3 && (h2 = r3); + } + })), void 0 === h2 && void 0 === c2 && (h2 = d2, c2 = g2), c2 *= c2 < 0 ? 0.9 : 1.1, 0 === (h2 *= h2 < 0 ? 1.1 : 0.9) && 0 === c2 && (h2 = -1, c2 = 1), c2 < 0 && c2 < g2 && (c2 = g2), h2 < 0 && h2 > d2 && (h2 = d2), e2.length > 1 ? (e2[l3].min = void 0 === t4.min ? h2 : t4.min, e2[l3].max = void 0 === t4.max ? c2 : t4.max) : (e2[0].min = void 0 === t4.min ? h2 : t4.min, e2[0].max = void 0 === t4.max ? c2 : t4.max); + }); + }), e2; + } }]), t2; + }(); + var U = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.scales = new _(e2); + } + return r(t2, [{ key: "init", value: function() { + this.setYRange(), this.setXRange(), this.setZRange(); + } }, { key: "getMinYMaxY", value: function(t3) { + var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Number.MAX_VALUE, i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : -Number.MAX_VALUE, a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null, s2 = this.w.config, r2 = this.w.globals, o2 = -Number.MAX_VALUE, n2 = Number.MIN_VALUE; + null === a2 && (a2 = t3 + 1); + var l2 = r2.series, h2 = l2, c2 = l2; + "candlestick" === s2.chart.type ? (h2 = r2.seriesCandleL, c2 = r2.seriesCandleH) : "boxPlot" === s2.chart.type ? (h2 = r2.seriesCandleO, c2 = r2.seriesCandleC) : r2.isRangeData && (h2 = r2.seriesRangeStart, c2 = r2.seriesRangeEnd); + for (var d2 = t3; d2 < a2; d2++) { + r2.dataPoints = Math.max(r2.dataPoints, l2[d2].length), r2.categoryLabels.length && (r2.dataPoints = r2.categoryLabels.filter(function(t4) { + return void 0 !== t4; + }).length), r2.labels.length && "datetime" !== s2.xaxis.type && 0 !== r2.series.reduce(function(t4, e3) { + return t4 + e3.length; + }, 0) && (r2.dataPoints = Math.max(r2.dataPoints, r2.labels.length)); + for (var g2 = 0; g2 < r2.series[d2].length; g2++) { + var u2 = l2[d2][g2]; + null !== u2 && x.isNumber(u2) ? (void 0 !== c2[d2][g2] && (o2 = Math.max(o2, c2[d2][g2]), e2 = Math.min(e2, c2[d2][g2])), void 0 !== h2[d2][g2] && (e2 = Math.min(e2, h2[d2][g2]), i2 = Math.max(i2, h2[d2][g2])), "candlestick" !== this.w.config.chart.type && "boxPlot" !== this.w.config.chart.type && "rangeArea" === this.w.config.chart.type && "rangeBar" === this.w.config.chart.type || ("candlestick" !== this.w.config.chart.type && "boxPlot" !== this.w.config.chart.type || void 0 !== r2.seriesCandleC[d2][g2] && (o2 = Math.max(o2, r2.seriesCandleO[d2][g2]), o2 = Math.max(o2, r2.seriesCandleH[d2][g2]), o2 = Math.max(o2, r2.seriesCandleL[d2][g2]), o2 = Math.max(o2, r2.seriesCandleC[d2][g2]), "boxPlot" === this.w.config.chart.type && (o2 = Math.max(o2, r2.seriesCandleM[d2][g2]))), !s2.series[d2].type || "candlestick" === s2.series[d2].type && "boxPlot" === s2.series[d2].type && "rangeArea" === s2.series[d2].type && "rangeBar" === s2.series[d2].type || (o2 = Math.max(o2, r2.series[d2][g2]), e2 = Math.min(e2, r2.series[d2][g2])), i2 = o2), r2.seriesGoals[d2] && r2.seriesGoals[d2][g2] && Array.isArray(r2.seriesGoals[d2][g2]) && r2.seriesGoals[d2][g2].forEach(function(t4) { + n2 !== Number.MIN_VALUE && (n2 = Math.min(n2, t4.value), e2 = n2), o2 = Math.max(o2, t4.value), i2 = o2; + }), x.isFloat(u2) && (u2 = x.noExponents(u2), r2.yValueDecimal = Math.max(r2.yValueDecimal, u2.toString().split(".")[1].length)), n2 > h2[d2][g2] && h2[d2][g2] < 0 && (n2 = h2[d2][g2])) : r2.hasNullValues = true; + } + } + return "rangeBar" === s2.chart.type && r2.seriesRangeStart.length && r2.isBarHorizontal && (n2 = e2), "bar" === s2.chart.type && (n2 < 0 && o2 < 0 && (o2 = 0), n2 === Number.MIN_VALUE && (n2 = 0)), { minY: n2, maxY: o2, lowestY: e2, highestY: i2 }; + } }, { key: "setYRange", value: function() { + var t3 = this.w.globals, e2 = this.w.config; + t3.maxY = -Number.MAX_VALUE, t3.minY = Number.MIN_VALUE; + var i2 = Number.MAX_VALUE; + if (t3.isMultipleYAxis) + for (var a2 = 0; a2 < t3.series.length; a2++) { + var s2 = this.getMinYMaxY(a2, i2, null, a2 + 1); + t3.minYArr.push(s2.minY), t3.maxYArr.push(s2.maxY), i2 = s2.lowestY; + } + var r2 = this.getMinYMaxY(0, i2, null, t3.series.length); + if (t3.minY = r2.minY, t3.maxY = r2.maxY, i2 = r2.lowestY, e2.chart.stacked && this._setStackedMinMax(), ("line" === e2.chart.type || "area" === e2.chart.type || "candlestick" === e2.chart.type || "boxPlot" === e2.chart.type || "rangeBar" === e2.chart.type && !t3.isBarHorizontal) && t3.minY === Number.MIN_VALUE && i2 !== -Number.MAX_VALUE && i2 !== t3.maxY) { + var o2 = t3.maxY - i2; + (i2 >= 0 && i2 <= 10 || void 0 !== e2.yaxis[0].min || void 0 !== e2.yaxis[0].max) && (o2 = 0), t3.minY = i2 - 5 * o2 / 100, i2 > 0 && t3.minY < 0 && (t3.minY = 0), t3.maxY = t3.maxY + 5 * o2 / 100; + } + if (e2.yaxis.forEach(function(e3, i3) { + void 0 !== e3.max && ("number" == typeof e3.max ? t3.maxYArr[i3] = e3.max : "function" == typeof e3.max && (t3.maxYArr[i3] = e3.max(t3.isMultipleYAxis ? t3.maxYArr[i3] : t3.maxY)), t3.maxY = t3.maxYArr[i3]), void 0 !== e3.min && ("number" == typeof e3.min ? t3.minYArr[i3] = e3.min : "function" == typeof e3.min && (t3.minYArr[i3] = e3.min(t3.isMultipleYAxis ? t3.minYArr[i3] === Number.MIN_VALUE ? 0 : t3.minYArr[i3] : t3.minY)), t3.minY = t3.minYArr[i3]); + }), t3.isBarHorizontal) { + ["min", "max"].forEach(function(i3) { + void 0 !== e2.xaxis[i3] && "number" == typeof e2.xaxis[i3] && ("min" === i3 ? t3.minY = e2.xaxis[i3] : t3.maxY = e2.xaxis[i3]); + }); + } + return t3.isMultipleYAxis ? (this.scales.setMultipleYScales(), t3.minY = i2, t3.yAxisScale.forEach(function(e3, i3) { + t3.minYArr[i3] = e3.niceMin, t3.maxYArr[i3] = e3.niceMax; + })) : (this.scales.setYScaleForIndex(0, t3.minY, t3.maxY), t3.minY = t3.yAxisScale[0].niceMin, t3.maxY = t3.yAxisScale[0].niceMax, t3.minYArr[0] = t3.yAxisScale[0].niceMin, t3.maxYArr[0] = t3.yAxisScale[0].niceMax), { minY: t3.minY, maxY: t3.maxY, minYArr: t3.minYArr, maxYArr: t3.maxYArr, yAxisScale: t3.yAxisScale }; + } }, { key: "setXRange", value: function() { + var t3 = this.w.globals, e2 = this.w.config, i2 = "numeric" === e2.xaxis.type || "datetime" === e2.xaxis.type || "category" === e2.xaxis.type && !t3.noLabelsProvided || t3.noLabelsProvided || t3.isXNumeric; + if (t3.isXNumeric && function() { + for (var e3 = 0; e3 < t3.series.length; e3++) + if (t3.labels[e3]) + for (var i3 = 0; i3 < t3.labels[e3].length; i3++) + null !== t3.labels[e3][i3] && x.isNumber(t3.labels[e3][i3]) && (t3.maxX = Math.max(t3.maxX, t3.labels[e3][i3]), t3.initialMaxX = Math.max(t3.maxX, t3.labels[e3][i3]), t3.minX = Math.min(t3.minX, t3.labels[e3][i3]), t3.initialMinX = Math.min(t3.minX, t3.labels[e3][i3])); + }(), t3.noLabelsProvided && 0 === e2.xaxis.categories.length && (t3.maxX = t3.labels[t3.labels.length - 1], t3.initialMaxX = t3.labels[t3.labels.length - 1], t3.minX = 1, t3.initialMinX = 1), t3.isXNumeric || t3.noLabelsProvided || t3.dataFormatXNumeric) { + var a2; + if (void 0 === e2.xaxis.tickAmount ? (a2 = Math.round(t3.svgWidth / 150), "numeric" === e2.xaxis.type && t3.dataPoints < 30 && (a2 = t3.dataPoints - 1), a2 > t3.dataPoints && 0 !== t3.dataPoints && (a2 = t3.dataPoints - 1)) : "dataPoints" === e2.xaxis.tickAmount ? (t3.series.length > 1 && (a2 = t3.series[t3.maxValsInArrayIndex].length - 1), t3.isXNumeric && (a2 = t3.maxX - t3.minX - 1)) : a2 = e2.xaxis.tickAmount, t3.xTickAmount = a2, void 0 !== e2.xaxis.max && "number" == typeof e2.xaxis.max && (t3.maxX = e2.xaxis.max), void 0 !== e2.xaxis.min && "number" == typeof e2.xaxis.min && (t3.minX = e2.xaxis.min), void 0 !== e2.xaxis.range && (t3.minX = t3.maxX - e2.xaxis.range), t3.minX !== Number.MAX_VALUE && t3.maxX !== -Number.MAX_VALUE) + if (e2.xaxis.convertedCatToNumeric && !t3.dataFormatXNumeric) { + for (var s2 = [], r2 = t3.minX - 1; r2 < t3.maxX; r2++) + s2.push(r2 + 1); + t3.xAxisScale = { result: s2, niceMin: s2[0], niceMax: s2[s2.length - 1] }; + } else + t3.xAxisScale = this.scales.setXScale(t3.minX, t3.maxX); + else + t3.xAxisScale = this.scales.linearScale(0, a2, a2), t3.noLabelsProvided && t3.labels.length > 0 && (t3.xAxisScale = this.scales.linearScale(1, t3.labels.length, a2 - 1), t3.seriesX = t3.labels.slice()); + i2 && (t3.labels = t3.xAxisScale.result.slice()); + } + return t3.isBarHorizontal && t3.labels.length && (t3.xTickAmount = t3.labels.length), this._handleSingleDataPoint(), this._getMinXDiff(), { minX: t3.minX, maxX: t3.maxX }; + } }, { key: "setZRange", value: function() { + var t3 = this.w.globals; + if (t3.isDataXYZ) { + for (var e2 = 0; e2 < t3.series.length; e2++) + if (void 0 !== t3.seriesZ[e2]) + for (var i2 = 0; i2 < t3.seriesZ[e2].length; i2++) + null !== t3.seriesZ[e2][i2] && x.isNumber(t3.seriesZ[e2][i2]) && (t3.maxZ = Math.max(t3.maxZ, t3.seriesZ[e2][i2]), t3.minZ = Math.min(t3.minZ, t3.seriesZ[e2][i2])); + } + } }, { key: "_handleSingleDataPoint", value: function() { + var t3 = this.w.globals, e2 = this.w.config; + if (t3.minX === t3.maxX) { + var i2 = new I(this.ctx); + if ("datetime" === e2.xaxis.type) { + var a2 = i2.getDate(t3.minX); + e2.xaxis.labels.datetimeUTC ? a2.setUTCDate(a2.getUTCDate() - 2) : a2.setDate(a2.getDate() - 2), t3.minX = new Date(a2).getTime(); + var s2 = i2.getDate(t3.maxX); + e2.xaxis.labels.datetimeUTC ? s2.setUTCDate(s2.getUTCDate() + 2) : s2.setDate(s2.getDate() + 2), t3.maxX = new Date(s2).getTime(); + } else + ("numeric" === e2.xaxis.type || "category" === e2.xaxis.type && !t3.noLabelsProvided) && (t3.minX = t3.minX - 2, t3.initialMinX = t3.minX, t3.maxX = t3.maxX + 2, t3.initialMaxX = t3.maxX); + } + } }, { key: "_getMinXDiff", value: function() { + var t3 = this.w.globals; + t3.isXNumeric && t3.seriesX.forEach(function(e2, i2) { + 1 === e2.length && e2.push(t3.seriesX[t3.maxValsInArrayIndex][t3.seriesX[t3.maxValsInArrayIndex].length - 1]); + var a2 = e2.slice(); + a2.sort(function(t4, e3) { + return t4 - e3; + }), a2.forEach(function(e3, i3) { + if (i3 > 0) { + var s2 = e3 - a2[i3 - 1]; + s2 > 0 && (t3.minXDiff = Math.min(s2, t3.minXDiff)); + } + }), 1 !== t3.dataPoints && t3.minXDiff !== Number.MAX_VALUE || (t3.minXDiff = 0.5); + }); + } }, { key: "_setStackedMinMax", value: function() { + var t3 = this, e2 = this.w.globals; + if (e2.series.length) { + var i2 = e2.seriesGroups; + i2.length || (i2 = [this.w.config.series.map(function(t4) { + return t4.name; + })]); + var a2 = {}, s2 = {}; + i2.forEach(function(i3) { + a2[i3] = [], s2[i3] = [], t3.w.config.series.map(function(t4, e3) { + return i3.indexOf(t4.name) > -1 ? e3 : null; + }).filter(function(t4) { + return null !== t4; + }).forEach(function(t4) { + for (var r2 = 0; r2 < e2.series[e2.maxValsInArrayIndex].length; r2++) + void 0 === a2[i3][r2] && (a2[i3][r2] = 0, s2[i3][r2] = 0), null !== e2.series[t4][r2] && x.isNumber(e2.series[t4][r2]) && (e2.series[t4][r2] > 0 ? a2[i3][r2] += parseFloat(e2.series[t4][r2]) + 1e-4 : s2[i3][r2] += parseFloat(e2.series[t4][r2])); + }); + }), Object.entries(a2).forEach(function(t4) { + var i3 = g(t4, 1)[0]; + a2[i3].forEach(function(t5, r2) { + e2.maxY = Math.max(e2.maxY, a2[i3][r2]), e2.minY = Math.min(e2.minY, s2[i3][r2]); + }); + }); + } + } }]), t2; + }(); + var q = function() { + function t2(e2, i2) { + a(this, t2), this.ctx = e2, this.elgrid = i2, this.w = e2.w; + var s2 = this.w; + this.xaxisFontSize = s2.config.xaxis.labels.style.fontSize, this.axisFontFamily = s2.config.xaxis.labels.style.fontFamily, this.xaxisForeColors = s2.config.xaxis.labels.style.colors, this.isCategoryBarHorizontal = "bar" === s2.config.chart.type && s2.config.plotOptions.bar.horizontal, this.xAxisoffX = 0, "bottom" === s2.config.xaxis.position && (this.xAxisoffX = s2.globals.gridHeight), this.drawnLabels = [], this.axesUtils = new B(e2); + } + return r(t2, [{ key: "drawYaxis", value: function(t3) { + var e2 = this, i2 = this.w, a2 = new m(this.ctx), s2 = i2.config.yaxis[t3].labels.style, r2 = s2.fontSize, o2 = s2.fontFamily, n2 = s2.fontWeight, l2 = a2.group({ class: "apexcharts-yaxis", rel: t3, transform: "translate(" + i2.globals.translateYAxisX[t3] + ", 0)" }); + if (this.axesUtils.isYAxisHidden(t3)) + return l2; + var h2 = a2.group({ class: "apexcharts-yaxis-texts-g" }); + l2.add(h2); + var c2 = i2.globals.yAxisScale[t3].result.length - 1, d2 = i2.globals.gridHeight / c2, g2 = i2.globals.translateY, u2 = i2.globals.yLabelFormatters[t3], p2 = i2.globals.yAxisScale[t3].result.slice(); + p2 = this.axesUtils.checkForReversedLabels(t3, p2); + var f2 = ""; + if (i2.config.yaxis[t3].labels.show) + for (var x2 = function(l3) { + var x3 = p2[l3]; + x3 = u2(x3, l3, i2); + var b3 = i2.config.yaxis[t3].labels.padding; + i2.config.yaxis[t3].opposite && 0 !== i2.config.yaxis.length && (b3 *= -1); + var v3 = "end"; + i2.config.yaxis[t3].opposite && (v3 = "start"), "left" === i2.config.yaxis[t3].labels.align ? v3 = "start" : "center" === i2.config.yaxis[t3].labels.align ? v3 = "middle" : "right" === i2.config.yaxis[t3].labels.align && (v3 = "end"); + var m2 = e2.axesUtils.getYAxisForeColor(s2.colors, t3), y3 = i2.config.yaxis[t3].labels.offsetY; + "heatmap" === i2.config.chart.type && (y3 -= (i2.globals.gridHeight / i2.globals.series.length - 1) / 2); + var w3 = a2.drawText({ x: b3, y: g2 + c2 / 10 + y3 + 1, text: x3, textAnchor: v3, fontSize: r2, fontFamily: o2, fontWeight: n2, maxWidth: i2.config.yaxis[t3].labels.maxWidth, foreColor: Array.isArray(m2) ? m2[l3] : m2, isPlainText: false, cssClass: "apexcharts-yaxis-label " + s2.cssClass }); + l3 === c2 && (f2 = w3), h2.add(w3); + var k3 = document.createElementNS(i2.globals.SVGNS, "title"); + if (k3.textContent = Array.isArray(x3) ? x3.join(" ") : x3, w3.node.appendChild(k3), 0 !== i2.config.yaxis[t3].labels.rotate) { + var A3 = a2.rotateAroundCenter(f2.node), S3 = a2.rotateAroundCenter(w3.node); + w3.node.setAttribute("transform", "rotate(".concat(i2.config.yaxis[t3].labels.rotate, " ").concat(A3.x, " ").concat(S3.y, ")")); + } + g2 += d2; + }, b2 = c2; b2 >= 0; b2--) + x2(b2); + if (void 0 !== i2.config.yaxis[t3].title.text) { + var v2 = a2.group({ class: "apexcharts-yaxis-title" }), y2 = 0; + i2.config.yaxis[t3].opposite && (y2 = i2.globals.translateYAxisX[t3]); + var w2 = a2.drawText({ x: y2, y: i2.globals.gridHeight / 2 + i2.globals.translateY + i2.config.yaxis[t3].title.offsetY, text: i2.config.yaxis[t3].title.text, textAnchor: "end", foreColor: i2.config.yaxis[t3].title.style.color, fontSize: i2.config.yaxis[t3].title.style.fontSize, fontWeight: i2.config.yaxis[t3].title.style.fontWeight, fontFamily: i2.config.yaxis[t3].title.style.fontFamily, cssClass: "apexcharts-yaxis-title-text " + i2.config.yaxis[t3].title.style.cssClass }); + v2.add(w2), l2.add(v2); + } + var k2 = i2.config.yaxis[t3].axisBorder, A2 = 31 + k2.offsetX; + if (i2.config.yaxis[t3].opposite && (A2 = -31 - k2.offsetX), k2.show) { + var S2 = a2.drawLine(A2, i2.globals.translateY + k2.offsetY - 2, A2, i2.globals.gridHeight + i2.globals.translateY + k2.offsetY + 2, k2.color, 0, k2.width); + l2.add(S2); + } + return i2.config.yaxis[t3].axisTicks.show && this.axesUtils.drawYAxisTicks(A2, c2, k2, i2.config.yaxis[t3].axisTicks, t3, d2, l2), l2; + } }, { key: "drawYaxisInversed", value: function(t3) { + var e2 = this.w, i2 = new m(this.ctx), a2 = i2.group({ class: "apexcharts-xaxis apexcharts-yaxis-inversed" }), s2 = i2.group({ class: "apexcharts-xaxis-texts-g", transform: "translate(".concat(e2.globals.translateXAxisX, ", ").concat(e2.globals.translateXAxisY, ")") }); + a2.add(s2); + var r2 = e2.globals.yAxisScale[t3].result.length - 1, o2 = e2.globals.gridWidth / r2 + 0.1, n2 = o2 + e2.config.xaxis.labels.offsetX, l2 = e2.globals.xLabelFormatter, h2 = e2.globals.yAxisScale[t3].result.slice(), c2 = e2.globals.timescaleLabels; + c2.length > 0 && (this.xaxisLabels = c2.slice(), r2 = (h2 = c2.slice()).length), h2 = this.axesUtils.checkForReversedLabels(t3, h2); + var d2 = c2.length; + if (e2.config.xaxis.labels.show) + for (var g2 = d2 ? 0 : r2; d2 ? g2 < d2 : g2 >= 0; d2 ? g2++ : g2--) { + var u2 = h2[g2]; + u2 = l2(u2, g2, e2); + var p2 = e2.globals.gridWidth + e2.globals.padHorizontal - (n2 - o2 + e2.config.xaxis.labels.offsetX); + if (c2.length) { + var f2 = this.axesUtils.getLabel(h2, c2, p2, g2, this.drawnLabels, this.xaxisFontSize); + p2 = f2.x, u2 = f2.text, this.drawnLabels.push(f2.text), 0 === g2 && e2.globals.skipFirstTimelinelabel && (u2 = ""), g2 === h2.length - 1 && e2.globals.skipLastTimelinelabel && (u2 = ""); + } + var x2 = i2.drawText({ x: p2, y: this.xAxisoffX + e2.config.xaxis.labels.offsetY + 30 - ("top" === e2.config.xaxis.position ? e2.globals.xAxisHeight + e2.config.xaxis.axisTicks.height - 2 : 0), text: u2, textAnchor: "middle", foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[t3] : this.xaxisForeColors, fontSize: this.xaxisFontSize, fontFamily: this.xaxisFontFamily, fontWeight: e2.config.xaxis.labels.style.fontWeight, isPlainText: false, cssClass: "apexcharts-xaxis-label " + e2.config.xaxis.labels.style.cssClass }); + s2.add(x2), x2.tspan(u2); + var b2 = document.createElementNS(e2.globals.SVGNS, "title"); + b2.textContent = u2, x2.node.appendChild(b2), n2 += o2; + } + return this.inversedYAxisTitleText(a2), this.inversedYAxisBorder(a2), a2; + } }, { key: "inversedYAxisBorder", value: function(t3) { + var e2 = this.w, i2 = new m(this.ctx), a2 = e2.config.xaxis.axisBorder; + if (a2.show) { + var s2 = 0; + "bar" === e2.config.chart.type && e2.globals.isXNumeric && (s2 -= 15); + var r2 = i2.drawLine(e2.globals.padHorizontal + s2 + a2.offsetX, this.xAxisoffX, e2.globals.gridWidth, this.xAxisoffX, a2.color, 0, a2.height); + this.elgrid && this.elgrid.elGridBorders && e2.config.grid.show ? this.elgrid.elGridBorders.add(r2) : t3.add(r2); + } + } }, { key: "inversedYAxisTitleText", value: function(t3) { + var e2 = this.w, i2 = new m(this.ctx); + if (void 0 !== e2.config.xaxis.title.text) { + var a2 = i2.group({ class: "apexcharts-xaxis-title apexcharts-yaxis-title-inversed" }), s2 = i2.drawText({ x: e2.globals.gridWidth / 2 + e2.config.xaxis.title.offsetX, y: this.xAxisoffX + parseFloat(this.xaxisFontSize) + parseFloat(e2.config.xaxis.title.style.fontSize) + e2.config.xaxis.title.offsetY + 20, text: e2.config.xaxis.title.text, textAnchor: "middle", fontSize: e2.config.xaxis.title.style.fontSize, fontFamily: e2.config.xaxis.title.style.fontFamily, fontWeight: e2.config.xaxis.title.style.fontWeight, foreColor: e2.config.xaxis.title.style.color, cssClass: "apexcharts-xaxis-title-text " + e2.config.xaxis.title.style.cssClass }); + a2.add(s2), t3.add(a2); + } + } }, { key: "yAxisTitleRotate", value: function(t3, e2) { + var i2 = this.w, a2 = new m(this.ctx), s2 = { width: 0, height: 0 }, r2 = { width: 0, height: 0 }, o2 = i2.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t3, "'] .apexcharts-yaxis-texts-g")); + null !== o2 && (s2 = o2.getBoundingClientRect()); + var n2 = i2.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t3, "'] .apexcharts-yaxis-title text")); + if (null !== n2 && (r2 = n2.getBoundingClientRect()), null !== n2) { + var l2 = this.xPaddingForYAxisTitle(t3, s2, r2, e2); + n2.setAttribute("x", l2.xPos - (e2 ? 10 : 0)); + } + if (null !== n2) { + var h2 = a2.rotateAroundCenter(n2); + n2.setAttribute("transform", "rotate(".concat(e2 ? -1 * i2.config.yaxis[t3].title.rotate : i2.config.yaxis[t3].title.rotate, " ").concat(h2.x, " ").concat(h2.y, ")")); + } + } }, { key: "xPaddingForYAxisTitle", value: function(t3, e2, i2, a2) { + var s2 = this.w, r2 = 0, o2 = 0, n2 = 10; + return void 0 === s2.config.yaxis[t3].title.text || t3 < 0 ? { xPos: o2, padd: 0 } : (a2 ? (o2 = e2.width + s2.config.yaxis[t3].title.offsetX + i2.width / 2 + n2 / 2, 0 === (r2 += 1) && (o2 -= n2 / 2)) : (o2 = -1 * e2.width + s2.config.yaxis[t3].title.offsetX + n2 / 2 + i2.width / 2, s2.globals.isBarHorizontal && (n2 = 25, o2 = -1 * e2.width - s2.config.yaxis[t3].title.offsetX - n2)), { xPos: o2, padd: n2 }); + } }, { key: "setYAxisXPosition", value: function(t3, e2) { + var i2 = this.w, a2 = 0, s2 = 0, r2 = 18, o2 = 1; + i2.config.yaxis.length > 1 && (this.multipleYs = true), i2.config.yaxis.map(function(n2, l2) { + var h2 = i2.globals.ignoreYAxisIndexes.indexOf(l2) > -1 || !n2.show || n2.floating || 0 === t3[l2].width, c2 = t3[l2].width + e2[l2].width; + n2.opposite ? i2.globals.isBarHorizontal ? (s2 = i2.globals.gridWidth + i2.globals.translateX - 1, i2.globals.translateYAxisX[l2] = s2 - n2.labels.offsetX) : (s2 = i2.globals.gridWidth + i2.globals.translateX + o2, h2 || (o2 = o2 + c2 + 20), i2.globals.translateYAxisX[l2] = s2 - n2.labels.offsetX + 20) : (a2 = i2.globals.translateX - r2, h2 || (r2 = r2 + c2 + 20), i2.globals.translateYAxisX[l2] = a2 + n2.labels.offsetX); + }); + } }, { key: "setYAxisTextAlignments", value: function() { + var t3 = this.w, e2 = t3.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis"); + (e2 = x.listToArray(e2)).forEach(function(e3, i2) { + var a2 = t3.config.yaxis[i2]; + if (a2 && !a2.floating && void 0 !== a2.labels.align) { + var s2 = t3.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i2, "'] .apexcharts-yaxis-texts-g")), r2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i2, "'] .apexcharts-yaxis-label")); + r2 = x.listToArray(r2); + var o2 = s2.getBoundingClientRect(); + "left" === a2.labels.align ? (r2.forEach(function(t4, e4) { + t4.setAttribute("text-anchor", "start"); + }), a2.opposite || s2.setAttribute("transform", "translate(-".concat(o2.width, ", 0)"))) : "center" === a2.labels.align ? (r2.forEach(function(t4, e4) { + t4.setAttribute("text-anchor", "middle"); + }), s2.setAttribute("transform", "translate(".concat(o2.width / 2 * (a2.opposite ? 1 : -1), ", 0)"))) : "right" === a2.labels.align && (r2.forEach(function(t4, e4) { + t4.setAttribute("text-anchor", "end"); + }), a2.opposite && s2.setAttribute("transform", "translate(".concat(o2.width, ", 0)"))); + } + }); + } }]), t2; + }(); + var Z = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.documentEvent = x.bind(this.documentEvent, this); + } + return r(t2, [{ key: "addEventListener", value: function(t3, e2) { + var i2 = this.w; + i2.globals.events.hasOwnProperty(t3) ? i2.globals.events[t3].push(e2) : i2.globals.events[t3] = [e2]; + } }, { key: "removeEventListener", value: function(t3, e2) { + var i2 = this.w; + if (i2.globals.events.hasOwnProperty(t3)) { + var a2 = i2.globals.events[t3].indexOf(e2); + -1 !== a2 && i2.globals.events[t3].splice(a2, 1); + } + } }, { key: "fireEvent", value: function(t3, e2) { + var i2 = this.w; + if (i2.globals.events.hasOwnProperty(t3)) { + e2 && e2.length || (e2 = []); + for (var a2 = i2.globals.events[t3], s2 = a2.length, r2 = 0; r2 < s2; r2++) + a2[r2].apply(null, e2); + } + } }, { key: "setupEventHandlers", value: function() { + var t3 = this, e2 = this.w, i2 = this.ctx, a2 = e2.globals.dom.baseEl.querySelector(e2.globals.chartClass); + this.ctx.eventList.forEach(function(t4) { + a2.addEventListener(t4, function(t5) { + var a3 = Object.assign({}, e2, { seriesIndex: e2.globals.capturedSeriesIndex, dataPointIndex: e2.globals.capturedDataPointIndex }); + "mousemove" === t5.type || "touchmove" === t5.type ? "function" == typeof e2.config.chart.events.mouseMove && e2.config.chart.events.mouseMove(t5, i2, a3) : "mouseleave" === t5.type || "touchleave" === t5.type ? "function" == typeof e2.config.chart.events.mouseLeave && e2.config.chart.events.mouseLeave(t5, i2, a3) : ("mouseup" === t5.type && 1 === t5.which || "touchend" === t5.type) && ("function" == typeof e2.config.chart.events.click && e2.config.chart.events.click(t5, i2, a3), i2.ctx.events.fireEvent("click", [t5, i2, a3])); + }, { capture: false, passive: true }); + }), this.ctx.eventList.forEach(function(i3) { + e2.globals.dom.baseEl.addEventListener(i3, t3.documentEvent, { passive: true }); + }), this.ctx.core.setupBrushHandler(); + } }, { key: "documentEvent", value: function(t3) { + var e2 = this.w, i2 = t3.target.className; + if ("click" === t3.type) { + var a2 = e2.globals.dom.baseEl.querySelector(".apexcharts-menu"); + a2 && a2.classList.contains("apexcharts-menu-open") && "apexcharts-menu-icon" !== i2 && a2.classList.remove("apexcharts-menu-open"); + } + e2.globals.clientX = "touchmove" === t3.type ? t3.touches[0].clientX : t3.clientX, e2.globals.clientY = "touchmove" === t3.type ? t3.touches[0].clientY : t3.clientY; + } }]), t2; + }(); + var $ = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "setCurrentLocaleValues", value: function(t3) { + var e2 = this.w.config.chart.locales; + window.Apex.chart && window.Apex.chart.locales && window.Apex.chart.locales.length > 0 && (e2 = this.w.config.chart.locales.concat(window.Apex.chart.locales)); + var i2 = e2.filter(function(e3) { + return e3.name === t3; + })[0]; + if (!i2) + throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options"); + var a2 = x.extend(C, i2); + this.w.globals.locale = a2.options; + } }]), t2; + }(); + var J = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "drawAxis", value: function(t3, e2) { + var i2, a2, s2 = this, r2 = this.w.globals, o2 = this.w.config, n2 = new V(this.ctx, e2), l2 = new q(this.ctx, e2); + r2.axisCharts && "radar" !== t3 && (r2.isBarHorizontal ? (a2 = l2.drawYaxisInversed(0), i2 = n2.drawXaxisInversed(0), r2.dom.elGraphical.add(i2), r2.dom.elGraphical.add(a2)) : (i2 = n2.drawXaxis(), r2.dom.elGraphical.add(i2), o2.yaxis.map(function(t4, e3) { + if (-1 === r2.ignoreYAxisIndexes.indexOf(e3) && (a2 = l2.drawYaxis(e3), r2.dom.Paper.add(a2), "back" === s2.w.config.grid.position)) { + var i3 = r2.dom.Paper.children()[1]; + i3.remove(), r2.dom.Paper.add(i3); + } + }))); + } }]), t2; + }(); + var Q = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "drawXCrosshairs", value: function() { + var t3 = this.w, e2 = new m(this.ctx), i2 = new v(this.ctx), a2 = t3.config.xaxis.crosshairs.fill.gradient, s2 = t3.config.xaxis.crosshairs.dropShadow, r2 = t3.config.xaxis.crosshairs.fill.type, o2 = a2.colorFrom, n2 = a2.colorTo, l2 = a2.opacityFrom, h2 = a2.opacityTo, c2 = a2.stops, d2 = s2.enabled, g2 = s2.left, u2 = s2.top, p2 = s2.blur, f2 = s2.color, b2 = s2.opacity, y2 = t3.config.xaxis.crosshairs.fill.color; + if (t3.config.xaxis.crosshairs.show) { + "gradient" === r2 && (y2 = e2.drawGradient("vertical", o2, n2, l2, h2, null, c2, null)); + var w2 = e2.drawRect(); + 1 === t3.config.xaxis.crosshairs.width && (w2 = e2.drawLine()); + var k2 = t3.globals.gridHeight; + (!x.isNumber(k2) || k2 < 0) && (k2 = 0); + var A2 = t3.config.xaxis.crosshairs.width; + (!x.isNumber(A2) || A2 < 0) && (A2 = 0), w2.attr({ class: "apexcharts-xcrosshairs", x: 0, y: 0, y2: k2, width: A2, height: k2, fill: y2, filter: "none", "fill-opacity": t3.config.xaxis.crosshairs.opacity, stroke: t3.config.xaxis.crosshairs.stroke.color, "stroke-width": t3.config.xaxis.crosshairs.stroke.width, "stroke-dasharray": t3.config.xaxis.crosshairs.stroke.dashArray }), d2 && (w2 = i2.dropShadow(w2, { left: g2, top: u2, blur: p2, color: f2, opacity: b2 })), t3.globals.dom.elGraphical.add(w2); + } + } }, { key: "drawYCrosshairs", value: function() { + var t3 = this.w, e2 = new m(this.ctx), i2 = t3.config.yaxis[0].crosshairs, a2 = t3.globals.barPadForNumericAxis; + if (t3.config.yaxis[0].crosshairs.show) { + var s2 = e2.drawLine(-a2, 0, t3.globals.gridWidth + a2, 0, i2.stroke.color, i2.stroke.dashArray, i2.stroke.width); + s2.attr({ class: "apexcharts-ycrosshairs" }), t3.globals.dom.elGraphical.add(s2); + } + var r2 = e2.drawLine(-a2, 0, t3.globals.gridWidth + a2, 0, i2.stroke.color, 0, 0); + r2.attr({ class: "apexcharts-ycrosshairs-hidden" }), t3.globals.dom.elGraphical.add(r2); + } }]), t2; + }(); + var K = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "checkResponsiveConfig", value: function(t3) { + var e2 = this, i2 = this.w, a2 = i2.config; + if (0 !== a2.responsive.length) { + var s2 = a2.responsive.slice(); + s2.sort(function(t4, e3) { + return t4.breakpoint > e3.breakpoint ? 1 : e3.breakpoint > t4.breakpoint ? -1 : 0; + }).reverse(); + var r2 = new E({}), o2 = function() { + var t4 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, a3 = s2[0].breakpoint, o3 = window.innerWidth > 0 ? window.innerWidth : screen.width; + if (o3 > a3) { + var n3 = y.extendArrayProps(r2, i2.globals.initialConfig, i2); + t4 = x.extend(n3, t4), t4 = x.extend(i2.config, t4), e2.overrideResponsiveOptions(t4); + } else + for (var l2 = 0; l2 < s2.length; l2++) + o3 < s2[l2].breakpoint && (t4 = y.extendArrayProps(r2, s2[l2].options, i2), t4 = x.extend(i2.config, t4), e2.overrideResponsiveOptions(t4)); + }; + if (t3) { + var n2 = y.extendArrayProps(r2, t3, i2); + n2 = x.extend(i2.config, n2), o2(n2 = x.extend(n2, t3)); + } else + o2({}); + } + } }, { key: "overrideResponsiveOptions", value: function(t3) { + var e2 = new E(t3).init({ responsiveOverride: true }); + this.w.config = e2; + } }]), t2; + }(); + var tt = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.colors = [], this.w = e2.w; + var i2 = this.w; + this.isColorFn = false, this.isHeatmapDistributed = "treemap" === i2.config.chart.type && i2.config.plotOptions.treemap.distributed || "heatmap" === i2.config.chart.type && i2.config.plotOptions.heatmap.distributed, this.isBarDistributed = i2.config.plotOptions.bar.distributed && ("bar" === i2.config.chart.type || "rangeBar" === i2.config.chart.type); + } + return r(t2, [{ key: "init", value: function() { + this.setDefaultColors(); + } }, { key: "setDefaultColors", value: function() { + var t3, e2 = this, i2 = this.w, a2 = new x(); + if (i2.globals.dom.elWrap.classList.add("apexcharts-theme-".concat(i2.config.theme.mode)), void 0 === i2.config.colors || 0 === (null === (t3 = i2.config.colors) || void 0 === t3 ? void 0 : t3.length) ? i2.globals.colors = this.predefined() : (i2.globals.colors = i2.config.colors, Array.isArray(i2.config.colors) && i2.config.colors.length > 0 && "function" == typeof i2.config.colors[0] && (i2.globals.colors = i2.config.series.map(function(t4, a3) { + var s3 = i2.config.colors[a3]; + return s3 || (s3 = i2.config.colors[0]), "function" == typeof s3 ? (e2.isColorFn = true, s3({ value: i2.globals.axisCharts ? i2.globals.series[a3][0] ? i2.globals.series[a3][0] : 0 : i2.globals.series[a3], seriesIndex: a3, dataPointIndex: a3, w: i2 })) : s3; + }))), i2.globals.seriesColors.map(function(t4, e3) { + t4 && (i2.globals.colors[e3] = t4); + }), i2.config.theme.monochrome.enabled) { + var s2 = [], r2 = i2.globals.series.length; + (this.isBarDistributed || this.isHeatmapDistributed) && (r2 = i2.globals.series[0].length * i2.globals.series.length); + for (var o2 = i2.config.theme.monochrome.color, n2 = 1 / (r2 / i2.config.theme.monochrome.shadeIntensity), l2 = i2.config.theme.monochrome.shadeTo, h2 = 0, c2 = 0; c2 < r2; c2++) { + var d2 = void 0; + "dark" === l2 ? (d2 = a2.shadeColor(-1 * h2, o2), h2 += n2) : (d2 = a2.shadeColor(h2, o2), h2 += n2), s2.push(d2); + } + i2.globals.colors = s2.slice(); + } + var g2 = i2.globals.colors.slice(); + this.pushExtraColors(i2.globals.colors); + ["fill", "stroke"].forEach(function(t4) { + void 0 === i2.config[t4].colors ? i2.globals[t4].colors = e2.isColorFn ? i2.config.colors : g2 : i2.globals[t4].colors = i2.config[t4].colors.slice(), e2.pushExtraColors(i2.globals[t4].colors); + }), void 0 === i2.config.dataLabels.style.colors ? i2.globals.dataLabels.style.colors = g2 : i2.globals.dataLabels.style.colors = i2.config.dataLabels.style.colors.slice(), this.pushExtraColors(i2.globals.dataLabels.style.colors, 50), void 0 === i2.config.plotOptions.radar.polygons.fill.colors ? i2.globals.radarPolygons.fill.colors = ["dark" === i2.config.theme.mode ? "#424242" : "none"] : i2.globals.radarPolygons.fill.colors = i2.config.plotOptions.radar.polygons.fill.colors.slice(), this.pushExtraColors(i2.globals.radarPolygons.fill.colors, 20), void 0 === i2.config.markers.colors ? i2.globals.markers.colors = g2 : i2.globals.markers.colors = i2.config.markers.colors.slice(), this.pushExtraColors(i2.globals.markers.colors); + } }, { key: "pushExtraColors", value: function(t3, e2) { + var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, a2 = this.w, s2 = e2 || a2.globals.series.length; + if (null === i2 && (i2 = this.isBarDistributed || this.isHeatmapDistributed || "heatmap" === a2.config.chart.type && a2.config.plotOptions.heatmap.colorScale.inverse), i2 && a2.globals.series.length && (s2 = a2.globals.series[a2.globals.maxValsInArrayIndex].length * a2.globals.series.length), t3.length < s2) + for (var r2 = s2 - t3.length, o2 = 0; o2 < r2; o2++) + t3.push(t3[o2]); + } }, { key: "updateThemeOptions", value: function(t3) { + t3.chart = t3.chart || {}, t3.tooltip = t3.tooltip || {}; + var e2 = t3.theme.mode || "light", i2 = t3.theme.palette ? t3.theme.palette : "dark" === e2 ? "palette4" : "palette1", a2 = t3.chart.foreColor ? t3.chart.foreColor : "dark" === e2 ? "#f6f7f8" : "#373d3f"; + return t3.tooltip.theme = e2, t3.chart.foreColor = a2, t3.theme.palette = i2, t3; + } }, { key: "predefined", value: function() { + switch (this.w.config.theme.palette) { + case "palette1": + default: + this.colors = ["#008FFB", "#00E396", "#FEB019", "#FF4560", "#775DD0"]; + break; + case "palette2": + this.colors = ["#3f51b5", "#03a9f4", "#4caf50", "#f9ce1d", "#FF9800"]; + break; + case "palette3": + this.colors = ["#33b2df", "#546E7A", "#d4526e", "#13d8aa", "#A5978B"]; + break; + case "palette4": + this.colors = ["#4ecdc4", "#c7f464", "#81D4FA", "#fd6a6a", "#546E7A"]; + break; + case "palette5": + this.colors = ["#2b908f", "#f9a3a4", "#90ee7e", "#fa4443", "#69d2e7"]; + break; + case "palette6": + this.colors = ["#449DD1", "#F86624", "#EA3546", "#662E9B", "#C5D86D"]; + break; + case "palette7": + this.colors = ["#D7263D", "#1B998B", "#2E294E", "#F46036", "#E2C044"]; + break; + case "palette8": + this.colors = ["#662E9B", "#F86624", "#F9C80E", "#EA3546", "#43BCCD"]; + break; + case "palette9": + this.colors = ["#5C4742", "#A5978B", "#8D5B4C", "#5A2A27", "#C4BBAF"]; + break; + case "palette10": + this.colors = ["#A300D6", "#7D02EB", "#5653FE", "#2983FF", "#00B1F2"]; + } + return this.colors; + } }]), t2; + }(); + var et = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "draw", value: function() { + this.drawTitleSubtitle("title"), this.drawTitleSubtitle("subtitle"); + } }, { key: "drawTitleSubtitle", value: function(t3) { + var e2 = this.w, i2 = "title" === t3 ? e2.config.title : e2.config.subtitle, a2 = e2.globals.svgWidth / 2, s2 = i2.offsetY, r2 = "middle"; + if ("left" === i2.align ? (a2 = 10, r2 = "start") : "right" === i2.align && (a2 = e2.globals.svgWidth - 10, r2 = "end"), a2 += i2.offsetX, s2 = s2 + parseInt(i2.style.fontSize, 10) + i2.margin / 2, void 0 !== i2.text) { + var o2 = new m(this.ctx).drawText({ x: a2, y: s2, text: i2.text, textAnchor: r2, fontSize: i2.style.fontSize, fontFamily: i2.style.fontFamily, fontWeight: i2.style.fontWeight, foreColor: i2.style.color, opacity: 1 }); + o2.node.setAttribute("class", "apexcharts-".concat(t3, "-text")), e2.globals.dom.Paper.add(o2); + } + } }]), t2; + }(); + var it = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.dCtx = e2; + } + return r(t2, [{ key: "getTitleSubtitleCoords", value: function(t3) { + var e2 = this.w, i2 = 0, a2 = 0, s2 = "title" === t3 ? e2.config.title.floating : e2.config.subtitle.floating, r2 = e2.globals.dom.baseEl.querySelector(".apexcharts-".concat(t3, "-text")); + if (null !== r2 && !s2) { + var o2 = r2.getBoundingClientRect(); + i2 = o2.width, a2 = e2.globals.axisCharts ? o2.height + 5 : o2.height; + } + return { width: i2, height: a2 }; + } }, { key: "getLegendsRect", value: function() { + var t3 = this.w, e2 = t3.globals.dom.elLegendWrap; + t3.config.legend.height || "top" !== t3.config.legend.position && "bottom" !== t3.config.legend.position || (e2.style.maxHeight = t3.globals.svgHeight / 2 + "px"); + var i2 = Object.assign({}, x.getBoundingClientRect(e2)); + return null !== e2 && !t3.config.legend.floating && t3.config.legend.show ? this.dCtx.lgRect = { x: i2.x, y: i2.y, height: i2.height, width: 0 === i2.height ? 0 : i2.width } : this.dCtx.lgRect = { x: 0, y: 0, height: 0, width: 0 }, "left" !== t3.config.legend.position && "right" !== t3.config.legend.position || 1.5 * this.dCtx.lgRect.width > t3.globals.svgWidth && (this.dCtx.lgRect.width = t3.globals.svgWidth / 1.5), this.dCtx.lgRect; + } }, { key: "getLargestStringFromMultiArr", value: function(t3, e2) { + var i2 = t3; + if (this.w.globals.isMultiLineX) { + var a2 = e2.map(function(t4, e3) { + return Array.isArray(t4) ? t4.length : 1; + }), s2 = Math.max.apply(Math, u(a2)); + i2 = e2[a2.indexOf(s2)]; + } + return i2; + } }]), t2; + }(); + var at = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.dCtx = e2; + } + return r(t2, [{ key: "getxAxisLabelsCoords", value: function() { + var t3, e2 = this.w, i2 = e2.globals.labels.slice(); + if (e2.config.xaxis.convertedCatToNumeric && 0 === i2.length && (i2 = e2.globals.categoryLabels), e2.globals.timescaleLabels.length > 0) { + var a2 = this.getxAxisTimeScaleLabelsCoords(); + t3 = { width: a2.width, height: a2.height }, e2.globals.rotateXLabels = false; + } else { + this.dCtx.lgWidthForSideLegends = "left" !== e2.config.legend.position && "right" !== e2.config.legend.position || e2.config.legend.floating ? 0 : this.dCtx.lgRect.width; + var s2 = e2.globals.xLabelFormatter, r2 = x.getLargestStringFromArr(i2), o2 = this.dCtx.dimHelpers.getLargestStringFromMultiArr(r2, i2); + e2.globals.isBarHorizontal && (o2 = r2 = e2.globals.yAxisScale[0].result.reduce(function(t4, e3) { + return t4.length > e3.length ? t4 : e3; + }, 0)); + var n2 = new M(this.dCtx.ctx), l2 = r2; + r2 = n2.xLabelFormat(s2, r2, l2, { i: void 0, dateFormatter: new I(this.dCtx.ctx).formatDate, w: e2 }), o2 = n2.xLabelFormat(s2, o2, l2, { i: void 0, dateFormatter: new I(this.dCtx.ctx).formatDate, w: e2 }), (e2.config.xaxis.convertedCatToNumeric && void 0 === r2 || "" === String(r2).trim()) && (o2 = r2 = "1"); + var h2 = new m(this.dCtx.ctx), c2 = h2.getTextRects(r2, e2.config.xaxis.labels.style.fontSize), d2 = c2; + if (r2 !== o2 && (d2 = h2.getTextRects(o2, e2.config.xaxis.labels.style.fontSize)), (t3 = { width: c2.width >= d2.width ? c2.width : d2.width, height: c2.height >= d2.height ? c2.height : d2.height }).width * i2.length > e2.globals.svgWidth - this.dCtx.lgWidthForSideLegends - this.dCtx.yAxisWidth - this.dCtx.gridPad.left - this.dCtx.gridPad.right && 0 !== e2.config.xaxis.labels.rotate || e2.config.xaxis.labels.rotateAlways) { + if (!e2.globals.isBarHorizontal) { + e2.globals.rotateXLabels = true; + var g2 = function(t4) { + return h2.getTextRects(t4, e2.config.xaxis.labels.style.fontSize, e2.config.xaxis.labels.style.fontFamily, "rotate(".concat(e2.config.xaxis.labels.rotate, " 0 0)"), false); + }; + c2 = g2(r2), r2 !== o2 && (d2 = g2(o2)), t3.height = (c2.height > d2.height ? c2.height : d2.height) / 1.5, t3.width = c2.width > d2.width ? c2.width : d2.width; + } + } else + e2.globals.rotateXLabels = false; + } + return e2.config.xaxis.labels.show || (t3 = { width: 0, height: 0 }), { width: t3.width, height: t3.height }; + } }, { key: "getxAxisGroupLabelsCoords", value: function() { + var t3, e2 = this.w; + if (!e2.globals.hasXaxisGroups) + return { width: 0, height: 0 }; + var i2, a2 = (null === (t3 = e2.config.xaxis.group.style) || void 0 === t3 ? void 0 : t3.fontSize) || e2.config.xaxis.labels.style.fontSize, s2 = e2.globals.groups.map(function(t4) { + return t4.title; + }), r2 = x.getLargestStringFromArr(s2), o2 = this.dCtx.dimHelpers.getLargestStringFromMultiArr(r2, s2), n2 = new m(this.dCtx.ctx), l2 = n2.getTextRects(r2, a2), h2 = l2; + return r2 !== o2 && (h2 = n2.getTextRects(o2, a2)), i2 = { width: l2.width >= h2.width ? l2.width : h2.width, height: l2.height >= h2.height ? l2.height : h2.height }, e2.config.xaxis.labels.show || (i2 = { width: 0, height: 0 }), { width: i2.width, height: i2.height }; + } }, { key: "getxAxisTitleCoords", value: function() { + var t3 = this.w, e2 = 0, i2 = 0; + if (void 0 !== t3.config.xaxis.title.text) { + var a2 = new m(this.dCtx.ctx).getTextRects(t3.config.xaxis.title.text, t3.config.xaxis.title.style.fontSize); + e2 = a2.width, i2 = a2.height; + } + return { width: e2, height: i2 }; + } }, { key: "getxAxisTimeScaleLabelsCoords", value: function() { + var t3, e2 = this.w; + this.dCtx.timescaleLabels = e2.globals.timescaleLabels.slice(); + var i2 = this.dCtx.timescaleLabels.map(function(t4) { + return t4.value; + }), a2 = i2.reduce(function(t4, e3) { + return void 0 === t4 ? (console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"), 0) : t4.length > e3.length ? t4 : e3; + }, 0); + return 1.05 * (t3 = new m(this.dCtx.ctx).getTextRects(a2, e2.config.xaxis.labels.style.fontSize)).width * i2.length > e2.globals.gridWidth && 0 !== e2.config.xaxis.labels.rotate && (e2.globals.overlappingXLabels = true), t3; + } }, { key: "additionalPaddingXLabels", value: function(t3) { + var e2 = this, i2 = this.w, a2 = i2.globals, s2 = i2.config, r2 = s2.xaxis.type, o2 = t3.width; + a2.skipLastTimelinelabel = false, a2.skipFirstTimelinelabel = false; + var n2 = i2.config.yaxis[0].opposite && i2.globals.isBarHorizontal, l2 = function(t4, n3) { + s2.yaxis.length > 1 && function(t5) { + return -1 !== a2.collapsedSeriesIndices.indexOf(t5); + }(n3) || function(t5) { + if (e2.dCtx.timescaleLabels && e2.dCtx.timescaleLabels.length) { + var n4 = e2.dCtx.timescaleLabels[0], l3 = e2.dCtx.timescaleLabels[e2.dCtx.timescaleLabels.length - 1].position + o2 / 1.75 - e2.dCtx.yAxisWidthRight, h2 = n4.position - o2 / 1.75 + e2.dCtx.yAxisWidthLeft, c2 = "right" === i2.config.legend.position && e2.dCtx.lgRect.width > 0 ? e2.dCtx.lgRect.width : 0; + l3 > a2.svgWidth - a2.translateX - c2 && (a2.skipLastTimelinelabel = true), h2 < -(t5.show && !t5.floating || "bar" !== s2.chart.type && "candlestick" !== s2.chart.type && "rangeBar" !== s2.chart.type && "boxPlot" !== s2.chart.type ? 10 : o2 / 1.75) && (a2.skipFirstTimelinelabel = true); + } else + "datetime" === r2 ? e2.dCtx.gridPad.right < o2 && !a2.rotateXLabels && (a2.skipLastTimelinelabel = true) : "datetime" !== r2 && e2.dCtx.gridPad.right < o2 / 2 - e2.dCtx.yAxisWidthRight && !a2.rotateXLabels && !i2.config.xaxis.labels.trim && ("between" !== i2.config.xaxis.tickPlacement || i2.globals.isBarHorizontal) && (e2.dCtx.xPadRight = o2 / 2 + 1); + }(t4); + }; + s2.yaxis.forEach(function(t4, i3) { + n2 ? (e2.dCtx.gridPad.left < o2 && (e2.dCtx.xPadLeft = o2 / 2 + 1), e2.dCtx.xPadRight = o2 / 2 + 1) : l2(t4, i3); + }); + } }]), t2; + }(); + var st = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.dCtx = e2; + } + return r(t2, [{ key: "getyAxisLabelsCoords", value: function() { + var t3 = this, e2 = this.w, i2 = [], a2 = 10, s2 = new B(this.dCtx.ctx); + return e2.config.yaxis.map(function(r2, o2) { + var n2 = { seriesIndex: o2, dataPointIndex: -1, w: e2 }, l2 = e2.globals.yAxisScale[o2], h2 = 0; + if (!s2.isYAxisHidden(o2) && r2.labels.show && void 0 !== r2.labels.minWidth && (h2 = r2.labels.minWidth), !s2.isYAxisHidden(o2) && r2.labels.show && l2.result.length) { + var c2 = e2.globals.yLabelFormatters[o2], d2 = l2.niceMin === Number.MIN_VALUE ? 0 : l2.niceMin, g2 = l2.result.reduce(function(t4, e3) { + var i3, a3; + return (null === (i3 = String(c2(t4, n2))) || void 0 === i3 ? void 0 : i3.length) > (null === (a3 = String(c2(e3, n2))) || void 0 === a3 ? void 0 : a3.length) ? t4 : e3; + }, d2), u2 = g2 = c2(g2, n2); + if (void 0 !== g2 && 0 !== g2.length || (g2 = l2.niceMax), e2.globals.isBarHorizontal) { + a2 = 0; + var p2 = e2.globals.labels.slice(); + g2 = x.getLargestStringFromArr(p2), g2 = c2(g2, { seriesIndex: o2, dataPointIndex: -1, w: e2 }), u2 = t3.dCtx.dimHelpers.getLargestStringFromMultiArr(g2, p2); + } + var f2 = new m(t3.dCtx.ctx), b2 = "rotate(".concat(r2.labels.rotate, " 0 0)"), v2 = f2.getTextRects(g2, r2.labels.style.fontSize, r2.labels.style.fontFamily, b2, false), y2 = v2; + g2 !== u2 && (y2 = f2.getTextRects(u2, r2.labels.style.fontSize, r2.labels.style.fontFamily, b2, false)), i2.push({ width: (h2 > y2.width || h2 > v2.width ? h2 : y2.width > v2.width ? y2.width : v2.width) + a2, height: y2.height > v2.height ? y2.height : v2.height }); + } else + i2.push({ width: 0, height: 0 }); + }), i2; + } }, { key: "getyAxisTitleCoords", value: function() { + var t3 = this, e2 = this.w, i2 = []; + return e2.config.yaxis.map(function(e3, a2) { + if (e3.show && void 0 !== e3.title.text) { + var s2 = new m(t3.dCtx.ctx), r2 = "rotate(".concat(e3.title.rotate, " 0 0)"), o2 = s2.getTextRects(e3.title.text, e3.title.style.fontSize, e3.title.style.fontFamily, r2, false); + i2.push({ width: o2.width, height: o2.height }); + } else + i2.push({ width: 0, height: 0 }); + }), i2; + } }, { key: "getTotalYAxisWidth", value: function() { + var t3 = this.w, e2 = 0, i2 = 0, a2 = 0, s2 = t3.globals.yAxisScale.length > 1 ? 10 : 0, r2 = new B(this.dCtx.ctx), o2 = function(o3, n2) { + var l2 = t3.config.yaxis[n2].floating, h2 = 0; + o3.width > 0 && !l2 ? (h2 = o3.width + s2, function(e3) { + return t3.globals.ignoreYAxisIndexes.indexOf(e3) > -1; + }(n2) && (h2 = h2 - o3.width - s2)) : h2 = l2 || r2.isYAxisHidden(n2) ? 0 : 5, t3.config.yaxis[n2].opposite ? a2 += h2 : i2 += h2, e2 += h2; + }; + return t3.globals.yLabelsCoords.map(function(t4, e3) { + o2(t4, e3); + }), t3.globals.yTitleCoords.map(function(t4, e3) { + o2(t4, e3); + }), t3.globals.isBarHorizontal && !t3.config.yaxis[0].floating && (e2 = t3.globals.yLabelsCoords[0].width + t3.globals.yTitleCoords[0].width + 15), this.dCtx.yAxisWidthLeft = i2, this.dCtx.yAxisWidthRight = a2, e2; + } }]), t2; + }(); + var rt = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.dCtx = e2; + } + return r(t2, [{ key: "gridPadForColumnsInNumericAxis", value: function(t3) { + var e2 = this.w; + if (e2.globals.noData || e2.globals.allSeriesCollapsed) + return 0; + var i2 = function(t4) { + return "bar" === t4 || "rangeBar" === t4 || "candlestick" === t4 || "boxPlot" === t4; + }, a2 = e2.config.chart.type, s2 = 0, r2 = i2(a2) ? e2.config.series.length : 1; + if (e2.globals.comboBarCount > 0 && (r2 = e2.globals.comboBarCount), e2.globals.collapsedSeries.forEach(function(t4) { + i2(t4.type) && (r2 -= 1); + }), e2.config.chart.stacked && (r2 = 1), (i2(a2) || e2.globals.comboBarCount > 0) && e2.globals.isXNumeric && !e2.globals.isBarHorizontal && r2 > 0) { + var o2, n2, l2 = Math.abs(e2.globals.initialMaxX - e2.globals.initialMinX); + l2 <= 3 && (l2 = e2.globals.dataPoints), o2 = l2 / t3, e2.globals.minXDiff && e2.globals.minXDiff / o2 > 0 && (n2 = e2.globals.minXDiff / o2), n2 > t3 / 2 && (n2 /= 2), (s2 = n2 / r2 * parseInt(e2.config.plotOptions.bar.columnWidth, 10) / 100) < 1 && (s2 = 1), s2 = s2 / (r2 > 1 ? 1 : 1.5) + 5, e2.globals.barPadForNumericAxis = s2; + } + return s2; + } }, { key: "gridPadFortitleSubtitle", value: function() { + var t3 = this, e2 = this.w, i2 = e2.globals, a2 = this.dCtx.isSparkline || !e2.globals.axisCharts ? 0 : 10; + ["title", "subtitle"].forEach(function(i3) { + void 0 !== e2.config[i3].text ? a2 += e2.config[i3].margin : a2 += t3.dCtx.isSparkline || !e2.globals.axisCharts ? 0 : 5; + }), !e2.config.legend.show || "bottom" !== e2.config.legend.position || e2.config.legend.floating || e2.globals.axisCharts || (a2 += 10); + var s2 = this.dCtx.dimHelpers.getTitleSubtitleCoords("title"), r2 = this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle"); + i2.gridHeight = i2.gridHeight - s2.height - r2.height - a2, i2.translateY = i2.translateY + s2.height + r2.height + a2; + } }, { key: "setGridXPosForDualYAxis", value: function(t3, e2) { + var i2 = this.w, a2 = new B(this.dCtx.ctx); + i2.config.yaxis.map(function(s2, r2) { + -1 !== i2.globals.ignoreYAxisIndexes.indexOf(r2) || s2.floating || a2.isYAxisHidden(r2) || (s2.opposite && (i2.globals.translateX = i2.globals.translateX - (e2[r2].width + t3[r2].width) - parseInt(i2.config.yaxis[r2].labels.style.fontSize, 10) / 1.2 - 12), i2.globals.translateX < 2 && (i2.globals.translateX = 2)); + }); + } }]), t2; + }(); + var ot = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.lgRect = {}, this.yAxisWidth = 0, this.yAxisWidthLeft = 0, this.yAxisWidthRight = 0, this.xAxisHeight = 0, this.isSparkline = this.w.config.chart.sparkline.enabled, this.dimHelpers = new it(this), this.dimYAxis = new st(this), this.dimXAxis = new at(this), this.dimGrid = new rt(this), this.lgWidthForSideLegends = 0, this.gridPad = this.w.config.grid.padding, this.xPadRight = 0, this.xPadLeft = 0; + } + return r(t2, [{ key: "plotCoords", value: function() { + var t3 = this, e2 = this.w, i2 = e2.globals; + this.lgRect = this.dimHelpers.getLegendsRect(), this.isSparkline && ((e2.config.markers.discrete.length > 0 || e2.config.markers.size > 0) && Object.entries(this.gridPad).forEach(function(e3) { + var i3 = g(e3, 2), a3 = i3[0], s2 = i3[1]; + t3.gridPad[a3] = Math.max(s2, t3.w.globals.markers.largestSize / 1.5); + }), this.gridPad.top = Math.max(e2.config.stroke.width / 2, this.gridPad.top), this.gridPad.bottom = Math.max(e2.config.stroke.width / 2, this.gridPad.bottom)), i2.axisCharts ? this.setDimensionsForAxisCharts() : this.setDimensionsForNonAxisCharts(), this.dimGrid.gridPadFortitleSubtitle(), i2.gridHeight = i2.gridHeight - this.gridPad.top - this.gridPad.bottom, i2.gridWidth = i2.gridWidth - this.gridPad.left - this.gridPad.right - this.xPadRight - this.xPadLeft; + var a2 = this.dimGrid.gridPadForColumnsInNumericAxis(i2.gridWidth); + i2.gridWidth = i2.gridWidth - 2 * a2, i2.translateX = i2.translateX + this.gridPad.left + this.xPadLeft + (a2 > 0 ? a2 + 4 : 0), i2.translateY = i2.translateY + this.gridPad.top; + } }, { key: "setDimensionsForAxisCharts", value: function() { + var t3 = this, e2 = this.w, i2 = e2.globals, a2 = this.dimYAxis.getyAxisLabelsCoords(), s2 = this.dimYAxis.getyAxisTitleCoords(); + e2.globals.yLabelsCoords = [], e2.globals.yTitleCoords = [], e2.config.yaxis.map(function(t4, i3) { + e2.globals.yLabelsCoords.push({ width: a2[i3].width, index: i3 }), e2.globals.yTitleCoords.push({ width: s2[i3].width, index: i3 }); + }), this.yAxisWidth = this.dimYAxis.getTotalYAxisWidth(); + var r2 = this.dimXAxis.getxAxisLabelsCoords(), o2 = this.dimXAxis.getxAxisGroupLabelsCoords(), n2 = this.dimXAxis.getxAxisTitleCoords(); + this.conditionalChecksForAxisCoords(r2, n2, o2), i2.translateXAxisY = e2.globals.rotateXLabels ? this.xAxisHeight / 8 : -4, i2.translateXAxisX = e2.globals.rotateXLabels && e2.globals.isXNumeric && e2.config.xaxis.labels.rotate <= -45 ? -this.xAxisWidth / 4 : 0, e2.globals.isBarHorizontal && (i2.rotateXLabels = false, i2.translateXAxisY = parseInt(e2.config.xaxis.labels.style.fontSize, 10) / 1.5 * -1), i2.translateXAxisY = i2.translateXAxisY + e2.config.xaxis.labels.offsetY, i2.translateXAxisX = i2.translateXAxisX + e2.config.xaxis.labels.offsetX; + var l2 = this.yAxisWidth, h2 = this.xAxisHeight; + i2.xAxisLabelsHeight = this.xAxisHeight - n2.height, i2.xAxisGroupLabelsHeight = i2.xAxisLabelsHeight - r2.height, i2.xAxisLabelsWidth = this.xAxisWidth, i2.xAxisHeight = this.xAxisHeight; + var c2 = 10; + ("radar" === e2.config.chart.type || this.isSparkline) && (l2 = 0, h2 = i2.goldenPadding), this.isSparkline && (this.lgRect = { height: 0, width: 0 }), (this.isSparkline || "treemap" === e2.config.chart.type) && (l2 = 0, h2 = 0, c2 = 0), this.isSparkline || this.dimXAxis.additionalPaddingXLabels(r2); + var d2 = function() { + i2.translateX = l2, i2.gridHeight = i2.svgHeight - t3.lgRect.height - h2 - (t3.isSparkline || "treemap" === e2.config.chart.type ? 0 : e2.globals.rotateXLabels ? 10 : 15), i2.gridWidth = i2.svgWidth - l2; + }; + switch ("top" === e2.config.xaxis.position && (c2 = i2.xAxisHeight - e2.config.xaxis.axisTicks.height - 5), e2.config.legend.position) { + case "bottom": + i2.translateY = c2, d2(); + break; + case "top": + i2.translateY = this.lgRect.height + c2, d2(); + break; + case "left": + i2.translateY = c2, i2.translateX = this.lgRect.width + l2, i2.gridHeight = i2.svgHeight - h2 - 12, i2.gridWidth = i2.svgWidth - this.lgRect.width - l2; + break; + case "right": + i2.translateY = c2, i2.translateX = l2, i2.gridHeight = i2.svgHeight - h2 - 12, i2.gridWidth = i2.svgWidth - this.lgRect.width - l2 - 5; + break; + default: + throw new Error("Legend position not supported"); + } + this.dimGrid.setGridXPosForDualYAxis(s2, a2), new q(this.ctx).setYAxisXPosition(a2, s2); + } }, { key: "setDimensionsForNonAxisCharts", value: function() { + var t3 = this.w, e2 = t3.globals, i2 = t3.config, a2 = 0; + t3.config.legend.show && !t3.config.legend.floating && (a2 = 20); + var s2 = "pie" === i2.chart.type || "polarArea" === i2.chart.type || "donut" === i2.chart.type ? "pie" : "radialBar", r2 = i2.plotOptions[s2].offsetY, o2 = i2.plotOptions[s2].offsetX; + if (!i2.legend.show || i2.legend.floating) + return e2.gridHeight = e2.svgHeight - i2.grid.padding.left + i2.grid.padding.right, e2.gridWidth = e2.gridHeight, e2.translateY = r2, void (e2.translateX = o2 + (e2.svgWidth - e2.gridWidth) / 2); + switch (i2.legend.position) { + case "bottom": + e2.gridHeight = e2.svgHeight - this.lgRect.height - e2.goldenPadding, e2.gridWidth = e2.svgWidth, e2.translateY = r2 - 10, e2.translateX = o2 + (e2.svgWidth - e2.gridWidth) / 2; + break; + case "top": + e2.gridHeight = e2.svgHeight - this.lgRect.height - e2.goldenPadding, e2.gridWidth = e2.svgWidth, e2.translateY = this.lgRect.height + r2 + 10, e2.translateX = o2 + (e2.svgWidth - e2.gridWidth) / 2; + break; + case "left": + e2.gridWidth = e2.svgWidth - this.lgRect.width - a2, e2.gridHeight = "auto" !== i2.chart.height ? e2.svgHeight : e2.gridWidth, e2.translateY = r2, e2.translateX = o2 + this.lgRect.width + a2; + break; + case "right": + e2.gridWidth = e2.svgWidth - this.lgRect.width - a2 - 5, e2.gridHeight = "auto" !== i2.chart.height ? e2.svgHeight : e2.gridWidth, e2.translateY = r2, e2.translateX = o2 + 10; + break; + default: + throw new Error("Legend position not supported"); + } + } }, { key: "conditionalChecksForAxisCoords", value: function(t3, e2, i2) { + var a2 = this.w, s2 = a2.globals.hasXaxisGroups ? 2 : 1, r2 = i2.height + t3.height + e2.height, o2 = a2.globals.isMultiLineX ? 1.2 : a2.globals.LINE_HEIGHT_RATIO, n2 = a2.globals.rotateXLabels ? 22 : 10, l2 = a2.globals.rotateXLabels && "bottom" === a2.config.legend.position ? 10 : 0; + this.xAxisHeight = r2 * o2 + s2 * n2 + l2, this.xAxisWidth = t3.width, this.xAxisHeight - e2.height > a2.config.xaxis.labels.maxHeight && (this.xAxisHeight = a2.config.xaxis.labels.maxHeight), a2.config.xaxis.labels.minHeight && this.xAxisHeight < a2.config.xaxis.labels.minHeight && (this.xAxisHeight = a2.config.xaxis.labels.minHeight), a2.config.xaxis.floating && (this.xAxisHeight = 0); + var h2 = 0, c2 = 0; + a2.config.yaxis.forEach(function(t4) { + h2 += t4.labels.minWidth, c2 += t4.labels.maxWidth; + }), this.yAxisWidth < h2 && (this.yAxisWidth = h2), this.yAxisWidth > c2 && (this.yAxisWidth = c2); + } }]), t2; + }(); + var nt = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.lgCtx = e2; + } + return r(t2, [{ key: "getLegendStyles", value: function() { + var t3 = document.createElement("style"); + t3.setAttribute("type", "text/css"); + var e2 = document.createTextNode(" \n \n .apexcharts-legend { \n display: flex; \n overflow: auto; \n padding: 0 10px; \n } \n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top { \n flex-wrap: wrap \n } \n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left { \n flex-direction: column; \n bottom: 0; \n } \n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left { \n justify-content: flex-start; \n } \n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center { \n justify-content: center; \n } \n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right { \n justify-content: flex-end; \n } \n .apexcharts-legend-series { \n cursor: pointer; \n line-height: normal; \n } \n .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{ \n display: flex; \n align-items: center; \n } \n .apexcharts-legend-text { \n position: relative; \n font-size: 14px; \n } \n .apexcharts-legend-text *, .apexcharts-legend-marker * { \n pointer-events: none; \n } \n .apexcharts-legend-marker { \n position: relative; \n display: inline-block; \n cursor: pointer; \n margin-right: 3px; \n border-style: solid;\n } \n \n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{ \n display: inline-block; \n } \n .apexcharts-legend-series.apexcharts-no-click { \n cursor: auto; \n } \n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series { \n display: none !important; \n } \n .apexcharts-inactive-legend { \n opacity: 0.45; \n }"); + return t3.appendChild(e2), t3; + } }, { key: "getLegendBBox", value: function() { + var t3 = this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(), e2 = t3.width; + return { clwh: t3.height, clww: e2 }; + } }, { key: "appendToForeignObject", value: function() { + this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles()); + } }, { key: "toggleDataSeries", value: function(t3, e2) { + var i2 = this, a2 = this.w; + if (a2.globals.axisCharts || "radialBar" === a2.config.chart.type) { + a2.globals.resized = true; + var s2 = null, r2 = null; + if (a2.globals.risingSeries = [], a2.globals.axisCharts ? (s2 = a2.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t3, "']")), r2 = parseInt(s2.getAttribute("data:realIndex"), 10)) : (s2 = a2.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t3 + 1, "']")), r2 = parseInt(s2.getAttribute("rel"), 10) - 1), e2) + [{ cs: a2.globals.collapsedSeries, csi: a2.globals.collapsedSeriesIndices }, { cs: a2.globals.ancillaryCollapsedSeries, csi: a2.globals.ancillaryCollapsedSeriesIndices }].forEach(function(t4) { + i2.riseCollapsedSeries(t4.cs, t4.csi, r2); + }); + else + this.hideSeries({ seriesEl: s2, realIndex: r2 }); + } else { + var o2 = a2.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t3 + 1, "'] path")), n2 = a2.config.chart.type; + if ("pie" === n2 || "polarArea" === n2 || "donut" === n2) { + var l2 = a2.config.plotOptions.pie.donut.labels; + new m(this.lgCtx.ctx).pathMouseDown(o2.members[0], null), this.lgCtx.ctx.pie.printDataLabelsInner(o2.members[0].node, l2); + } + o2.fire("click"); + } + } }, { key: "hideSeries", value: function(t3) { + var e2 = t3.seriesEl, i2 = t3.realIndex, a2 = this.w, s2 = x.clone(a2.config.series); + if (a2.globals.axisCharts) { + var r2 = false; + if (a2.config.yaxis[i2] && a2.config.yaxis[i2].show && a2.config.yaxis[i2].showAlways && (r2 = true, a2.globals.ancillaryCollapsedSeriesIndices.indexOf(i2) < 0 && (a2.globals.ancillaryCollapsedSeries.push({ index: i2, data: s2[i2].data.slice(), type: e2.parentNode.className.baseVal.split("-")[1] }), a2.globals.ancillaryCollapsedSeriesIndices.push(i2))), !r2) { + a2.globals.collapsedSeries.push({ index: i2, data: s2[i2].data.slice(), type: e2.parentNode.className.baseVal.split("-")[1] }), a2.globals.collapsedSeriesIndices.push(i2); + var o2 = a2.globals.risingSeries.indexOf(i2); + a2.globals.risingSeries.splice(o2, 1); + } + } else + a2.globals.collapsedSeries.push({ index: i2, data: s2[i2] }), a2.globals.collapsedSeriesIndices.push(i2); + for (var n2 = e2.childNodes, l2 = 0; l2 < n2.length; l2++) + n2[l2].classList.contains("apexcharts-series-markers-wrap") && (n2[l2].classList.contains("apexcharts-hide") ? n2[l2].classList.remove("apexcharts-hide") : n2[l2].classList.add("apexcharts-hide")); + a2.globals.allSeriesCollapsed = a2.globals.collapsedSeries.length === a2.config.series.length, s2 = this._getSeriesBasedOnCollapsedState(s2), this.lgCtx.ctx.updateHelpers._updateSeries(s2, a2.config.chart.animations.dynamicAnimation.enabled); + } }, { key: "riseCollapsedSeries", value: function(t3, e2, i2) { + var a2 = this.w, s2 = x.clone(a2.config.series); + if (t3.length > 0) { + for (var r2 = 0; r2 < t3.length; r2++) + t3[r2].index === i2 && (a2.globals.axisCharts ? (s2[i2].data = t3[r2].data.slice(), t3.splice(r2, 1), e2.splice(r2, 1), a2.globals.risingSeries.push(i2)) : (s2[i2] = t3[r2].data, t3.splice(r2, 1), e2.splice(r2, 1), a2.globals.risingSeries.push(i2))); + s2 = this._getSeriesBasedOnCollapsedState(s2), this.lgCtx.ctx.updateHelpers._updateSeries(s2, a2.config.chart.animations.dynamicAnimation.enabled); + } + } }, { key: "_getSeriesBasedOnCollapsedState", value: function(t3) { + var e2 = this.w; + return e2.globals.axisCharts ? t3.forEach(function(i2, a2) { + e2.globals.collapsedSeriesIndices.indexOf(a2) > -1 && (t3[a2].data = []); + }) : t3.forEach(function(i2, a2) { + e2.globals.collapsedSeriesIndices.indexOf(a2) > -1 && (t3[a2] = 0); + }), t3; + } }]), t2; + }(); + var lt = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.onLegendClick = this.onLegendClick.bind(this), this.onLegendHovered = this.onLegendHovered.bind(this), this.isBarsDistributed = "bar" === this.w.config.chart.type && this.w.config.plotOptions.bar.distributed && 1 === this.w.config.series.length, this.legendHelpers = new nt(this); + } + return r(t2, [{ key: "init", value: function() { + var t3 = this.w, e2 = t3.globals, i2 = t3.config; + if ((i2.legend.showForSingleSeries && 1 === e2.series.length || this.isBarsDistributed || e2.series.length > 1 || !e2.axisCharts) && i2.legend.show) { + for (; e2.dom.elLegendWrap.firstChild; ) + e2.dom.elLegendWrap.removeChild(e2.dom.elLegendWrap.firstChild); + this.drawLegends(), x.isIE11() ? document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()) : this.legendHelpers.appendToForeignObject(), "bottom" === i2.legend.position || "top" === i2.legend.position ? this.legendAlignHorizontal() : "right" !== i2.legend.position && "left" !== i2.legend.position || this.legendAlignVertical(); + } + } }, { key: "drawLegends", value: function() { + var t3 = this, e2 = this.w, i2 = e2.config.legend.fontFamily, a2 = e2.globals.seriesNames, s2 = e2.globals.colors.slice(); + if ("heatmap" === e2.config.chart.type) { + var r2 = e2.config.plotOptions.heatmap.colorScale.ranges; + a2 = r2.map(function(t4) { + return t4.name ? t4.name : t4.from + " - " + t4.to; + }), s2 = r2.map(function(t4) { + return t4.color; + }); + } else + this.isBarsDistributed && (a2 = e2.globals.labels.slice()); + e2.config.legend.customLegendItems.length && (a2 = e2.config.legend.customLegendItems); + for (var o2 = e2.globals.legendFormatter, n2 = e2.config.legend.inverseOrder, l2 = n2 ? a2.length - 1 : 0; n2 ? l2 >= 0 : l2 <= a2.length - 1; n2 ? l2-- : l2++) { + var h2, c2 = o2(a2[l2], { seriesIndex: l2, w: e2 }), d2 = false, g2 = false; + if (e2.globals.collapsedSeries.length > 0) + for (var u2 = 0; u2 < e2.globals.collapsedSeries.length; u2++) + e2.globals.collapsedSeries[u2].index === l2 && (d2 = true); + if (e2.globals.ancillaryCollapsedSeriesIndices.length > 0) + for (var p2 = 0; p2 < e2.globals.ancillaryCollapsedSeriesIndices.length; p2++) + e2.globals.ancillaryCollapsedSeriesIndices[p2] === l2 && (g2 = true); + var f2 = document.createElement("span"); + f2.classList.add("apexcharts-legend-marker"); + var b2 = e2.config.legend.markers.offsetX, v2 = e2.config.legend.markers.offsetY, w2 = e2.config.legend.markers.height, k2 = e2.config.legend.markers.width, A2 = e2.config.legend.markers.strokeWidth, S2 = e2.config.legend.markers.strokeColor, C2 = e2.config.legend.markers.radius, L2 = f2.style; + L2.background = s2[l2], L2.color = s2[l2], L2.setProperty("background", s2[l2], "important"), e2.config.legend.markers.fillColors && e2.config.legend.markers.fillColors[l2] && (L2.background = e2.config.legend.markers.fillColors[l2]), void 0 !== e2.globals.seriesColors[l2] && (L2.background = e2.globals.seriesColors[l2], L2.color = e2.globals.seriesColors[l2]), L2.height = Array.isArray(w2) ? parseFloat(w2[l2]) + "px" : parseFloat(w2) + "px", L2.width = Array.isArray(k2) ? parseFloat(k2[l2]) + "px" : parseFloat(k2) + "px", L2.left = (Array.isArray(b2) ? parseFloat(b2[l2]) : parseFloat(b2)) + "px", L2.top = (Array.isArray(v2) ? parseFloat(v2[l2]) : parseFloat(v2)) + "px", L2.borderWidth = Array.isArray(A2) ? A2[l2] : A2, L2.borderColor = Array.isArray(S2) ? S2[l2] : S2, L2.borderRadius = Array.isArray(C2) ? parseFloat(C2[l2]) + "px" : parseFloat(C2) + "px", e2.config.legend.markers.customHTML && (Array.isArray(e2.config.legend.markers.customHTML) ? e2.config.legend.markers.customHTML[l2] && (f2.innerHTML = e2.config.legend.markers.customHTML[l2]()) : f2.innerHTML = e2.config.legend.markers.customHTML()), m.setAttrs(f2, { rel: l2 + 1, "data:collapsed": d2 || g2 }), (d2 || g2) && f2.classList.add("apexcharts-inactive-legend"); + var P2 = document.createElement("div"), I2 = document.createElement("span"); + I2.classList.add("apexcharts-legend-text"), I2.innerHTML = Array.isArray(c2) ? c2.join(" ") : c2; + var M2 = e2.config.legend.labels.useSeriesColors ? e2.globals.colors[l2] : Array.isArray(e2.config.legend.labels.colors) ? null === (h2 = e2.config.legend.labels.colors) || void 0 === h2 ? void 0 : h2[l2] : e2.config.legend.labels.colors; + M2 || (M2 = e2.config.chart.foreColor), I2.style.color = M2, I2.style.fontSize = parseFloat(e2.config.legend.fontSize) + "px", I2.style.fontWeight = e2.config.legend.fontWeight, I2.style.fontFamily = i2 || e2.config.chart.fontFamily, m.setAttrs(I2, { rel: l2 + 1, i: l2, "data:default-text": encodeURIComponent(c2), "data:collapsed": d2 || g2 }), P2.appendChild(f2), P2.appendChild(I2); + var T2 = new y(this.ctx); + if (!e2.config.legend.showForZeroSeries) + 0 === T2.getSeriesTotalByIndex(l2) && T2.seriesHaveSameValues(l2) && !T2.isSeriesNull(l2) && -1 === e2.globals.collapsedSeriesIndices.indexOf(l2) && -1 === e2.globals.ancillaryCollapsedSeriesIndices.indexOf(l2) && P2.classList.add("apexcharts-hidden-zero-series"); + e2.config.legend.showForNullSeries || T2.isSeriesNull(l2) && -1 === e2.globals.collapsedSeriesIndices.indexOf(l2) && -1 === e2.globals.ancillaryCollapsedSeriesIndices.indexOf(l2) && P2.classList.add("apexcharts-hidden-null-series"), e2.globals.dom.elLegendWrap.appendChild(P2), e2.globals.dom.elLegendWrap.classList.add("apexcharts-align-".concat(e2.config.legend.horizontalAlign)), e2.globals.dom.elLegendWrap.classList.add("apx-legend-position-" + e2.config.legend.position), P2.classList.add("apexcharts-legend-series"), P2.style.margin = "".concat(e2.config.legend.itemMargin.vertical, "px ").concat(e2.config.legend.itemMargin.horizontal, "px"), e2.globals.dom.elLegendWrap.style.width = e2.config.legend.width ? e2.config.legend.width + "px" : "", e2.globals.dom.elLegendWrap.style.height = e2.config.legend.height ? e2.config.legend.height + "px" : "", m.setAttrs(P2, { rel: l2 + 1, seriesName: x.escapeString(a2[l2]), "data:collapsed": d2 || g2 }), (d2 || g2) && P2.classList.add("apexcharts-inactive-legend"), e2.config.legend.onItemClick.toggleDataSeries || P2.classList.add("apexcharts-no-click"); + } + e2.globals.dom.elWrap.addEventListener("click", t3.onLegendClick, true), e2.config.legend.onItemHover.highlightDataSeries && 0 === e2.config.legend.customLegendItems.length && (e2.globals.dom.elWrap.addEventListener("mousemove", t3.onLegendHovered, true), e2.globals.dom.elWrap.addEventListener("mouseout", t3.onLegendHovered, true)); + } }, { key: "setLegendWrapXY", value: function(t3, e2) { + var i2 = this.w, a2 = i2.globals.dom.elLegendWrap, s2 = a2.getBoundingClientRect(), r2 = 0, o2 = 0; + if ("bottom" === i2.config.legend.position) + o2 += i2.globals.svgHeight - s2.height / 2; + else if ("top" === i2.config.legend.position) { + var n2 = new ot(this.ctx), l2 = n2.dimHelpers.getTitleSubtitleCoords("title").height, h2 = n2.dimHelpers.getTitleSubtitleCoords("subtitle").height; + o2 = o2 + (l2 > 0 ? l2 - 10 : 0) + (h2 > 0 ? h2 - 10 : 0); + } + a2.style.position = "absolute", r2 = r2 + t3 + i2.config.legend.offsetX, o2 = o2 + e2 + i2.config.legend.offsetY, a2.style.left = r2 + "px", a2.style.top = o2 + "px", "bottom" === i2.config.legend.position ? (a2.style.top = "auto", a2.style.bottom = 5 - i2.config.legend.offsetY + "px") : "right" === i2.config.legend.position && (a2.style.left = "auto", a2.style.right = 25 + i2.config.legend.offsetX + "px"); + ["width", "height"].forEach(function(t4) { + a2.style[t4] && (a2.style[t4] = parseInt(i2.config.legend[t4], 10) + "px"); + }); + } }, { key: "legendAlignHorizontal", value: function() { + var t3 = this.w; + t3.globals.dom.elLegendWrap.style.right = 0; + var e2 = this.legendHelpers.getLegendBBox(), i2 = new ot(this.ctx), a2 = i2.dimHelpers.getTitleSubtitleCoords("title"), s2 = i2.dimHelpers.getTitleSubtitleCoords("subtitle"), r2 = 0; + "bottom" === t3.config.legend.position ? r2 = -e2.clwh / 1.8 : "top" === t3.config.legend.position && (r2 = a2.height + s2.height + t3.config.title.margin + t3.config.subtitle.margin - 10), this.setLegendWrapXY(20, r2); + } }, { key: "legendAlignVertical", value: function() { + var t3 = this.w, e2 = this.legendHelpers.getLegendBBox(), i2 = 0; + "left" === t3.config.legend.position && (i2 = 20), "right" === t3.config.legend.position && (i2 = t3.globals.svgWidth - e2.clww - 10), this.setLegendWrapXY(i2, 20); + } }, { key: "onLegendHovered", value: function(t3) { + var e2 = this.w, i2 = t3.target.classList.contains("apexcharts-legend-series") || t3.target.classList.contains("apexcharts-legend-text") || t3.target.classList.contains("apexcharts-legend-marker"); + if ("heatmap" === e2.config.chart.type || this.isBarsDistributed) { + if (i2) { + var a2 = parseInt(t3.target.getAttribute("rel"), 10) - 1; + this.ctx.events.fireEvent("legendHover", [this.ctx, a2, this.w]), new N(this.ctx).highlightRangeInSeries(t3, t3.target); + } + } else + !t3.target.classList.contains("apexcharts-inactive-legend") && i2 && new N(this.ctx).toggleSeriesOnHover(t3, t3.target); + } }, { key: "onLegendClick", value: function(t3) { + var e2 = this.w; + if (!e2.config.legend.customLegendItems.length && (t3.target.classList.contains("apexcharts-legend-series") || t3.target.classList.contains("apexcharts-legend-text") || t3.target.classList.contains("apexcharts-legend-marker"))) { + var i2 = parseInt(t3.target.getAttribute("rel"), 10) - 1, a2 = "true" === t3.target.getAttribute("data:collapsed"), s2 = this.w.config.chart.events.legendClick; + "function" == typeof s2 && s2(this.ctx, i2, this.w), this.ctx.events.fireEvent("legendClick", [this.ctx, i2, this.w]); + var r2 = this.w.config.legend.markers.onClick; + "function" == typeof r2 && t3.target.classList.contains("apexcharts-legend-marker") && (r2(this.ctx, i2, this.w), this.ctx.events.fireEvent("legendMarkerClick", [this.ctx, i2, this.w])), "treemap" !== e2.config.chart.type && "heatmap" !== e2.config.chart.type && !this.isBarsDistributed && e2.config.legend.onItemClick.toggleDataSeries && this.legendHelpers.toggleDataSeries(i2, a2); + } + } }]), t2; + }(); + var ht = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + var i2 = this.w; + this.ev = this.w.config.chart.events, this.selectedClass = "apexcharts-selected", this.localeValues = this.w.globals.locale.toolbar, this.minX = i2.globals.minX, this.maxX = i2.globals.maxX; + } + return r(t2, [{ key: "createToolbar", value: function() { + var t3 = this, e2 = this.w, i2 = function() { + return document.createElement("div"); + }, a2 = i2(); + if (a2.setAttribute("class", "apexcharts-toolbar"), a2.style.top = e2.config.chart.toolbar.offsetY + "px", a2.style.right = 3 - e2.config.chart.toolbar.offsetX + "px", e2.globals.dom.elWrap.appendChild(a2), this.elZoom = i2(), this.elZoomIn = i2(), this.elZoomOut = i2(), this.elPan = i2(), this.elSelection = i2(), this.elZoomReset = i2(), this.elMenuIcon = i2(), this.elMenu = i2(), this.elCustomIcons = [], this.t = e2.config.chart.toolbar.tools, Array.isArray(this.t.customIcons)) + for (var s2 = 0; s2 < this.t.customIcons.length; s2++) + this.elCustomIcons.push(i2()); + var r2 = [], o2 = function(i3, a3, s3) { + var o3 = i3.toLowerCase(); + t3.t[o3] && e2.config.chart.zoom.enabled && r2.push({ el: a3, icon: "string" == typeof t3.t[o3] ? t3.t[o3] : s3, title: t3.localeValues[i3], class: "apexcharts-".concat(o3, "-icon") }); + }; + o2("zoomIn", this.elZoomIn, '\n \n \n\n'), o2("zoomOut", this.elZoomOut, '\n \n \n\n'); + var n2 = function(i3) { + t3.t[i3] && e2.config.chart[i3].enabled && r2.push({ el: "zoom" === i3 ? t3.elZoom : t3.elSelection, icon: "string" == typeof t3.t[i3] ? t3.t[i3] : "zoom" === i3 ? '\n \n \n \n' : '\n \n \n', title: t3.localeValues["zoom" === i3 ? "selectionZoom" : "selection"], class: e2.globals.isTouchDevice ? "apexcharts-element-hidden" : "apexcharts-".concat(i3, "-icon") }); + }; + n2("zoom"), n2("selection"), this.t.pan && e2.config.chart.zoom.enabled && r2.push({ el: this.elPan, icon: "string" == typeof this.t.pan ? this.t.pan : '\n \n \n \n \n \n \n \n', title: this.localeValues.pan, class: e2.globals.isTouchDevice ? "apexcharts-element-hidden" : "apexcharts-pan-icon" }), o2("reset", this.elZoomReset, '\n \n \n'), this.t.download && r2.push({ el: this.elMenuIcon, icon: "string" == typeof this.t.download ? this.t.download : '', title: this.localeValues.menu, class: "apexcharts-menu-icon" }); + for (var l2 = 0; l2 < this.elCustomIcons.length; l2++) + r2.push({ el: this.elCustomIcons[l2], icon: this.t.customIcons[l2].icon, title: this.t.customIcons[l2].title, index: this.t.customIcons[l2].index, class: "apexcharts-toolbar-custom-icon " + this.t.customIcons[l2].class }); + r2.forEach(function(t4, e3) { + t4.index && x.moveIndexInArray(r2, e3, t4.index); + }); + for (var h2 = 0; h2 < r2.length; h2++) + m.setAttrs(r2[h2].el, { class: r2[h2].class, title: r2[h2].title }), r2[h2].el.innerHTML = r2[h2].icon, a2.appendChild(r2[h2].el); + this._createHamburgerMenu(a2), e2.globals.zoomEnabled ? this.elZoom.classList.add(this.selectedClass) : e2.globals.panEnabled ? this.elPan.classList.add(this.selectedClass) : e2.globals.selectionEnabled && this.elSelection.classList.add(this.selectedClass), this.addToolbarEventListeners(); + } }, { key: "_createHamburgerMenu", value: function(t3) { + this.elMenuItems = [], t3.appendChild(this.elMenu), m.setAttrs(this.elMenu, { class: "apexcharts-menu" }); + var e2 = [{ name: "exportSVG", title: this.localeValues.exportToSVG }, { name: "exportPNG", title: this.localeValues.exportToPNG }, { name: "exportCSV", title: this.localeValues.exportToCSV }]; + this.w.globals.allSeriesHasEqualX || e2.splice(2, 1); + for (var i2 = 0; i2 < e2.length; i2++) + this.elMenuItems.push(document.createElement("div")), this.elMenuItems[i2].innerHTML = e2[i2].title, m.setAttrs(this.elMenuItems[i2], { class: "apexcharts-menu-item ".concat(e2[i2].name), title: e2[i2].title }), this.elMenu.appendChild(this.elMenuItems[i2]); + } }, { key: "addToolbarEventListeners", value: function() { + var t3 = this; + this.elZoomReset.addEventListener("click", this.handleZoomReset.bind(this)), this.elSelection.addEventListener("click", this.toggleZoomSelection.bind(this, "selection")), this.elZoom.addEventListener("click", this.toggleZoomSelection.bind(this, "zoom")), this.elZoomIn.addEventListener("click", this.handleZoomIn.bind(this)), this.elZoomOut.addEventListener("click", this.handleZoomOut.bind(this)), this.elPan.addEventListener("click", this.togglePanning.bind(this)), this.elMenuIcon.addEventListener("click", this.toggleMenu.bind(this)), this.elMenuItems.forEach(function(e3) { + e3.classList.contains("exportSVG") ? e3.addEventListener("click", t3.handleDownload.bind(t3, "svg")) : e3.classList.contains("exportPNG") ? e3.addEventListener("click", t3.handleDownload.bind(t3, "png")) : e3.classList.contains("exportCSV") && e3.addEventListener("click", t3.handleDownload.bind(t3, "csv")); + }); + for (var e2 = 0; e2 < this.t.customIcons.length; e2++) + this.elCustomIcons[e2].addEventListener("click", this.t.customIcons[e2].click.bind(this, this.ctx, this.ctx.w)); + } }, { key: "toggleZoomSelection", value: function(t3) { + this.ctx.getSyncedCharts().forEach(function(e2) { + e2.ctx.toolbar.toggleOtherControls(); + var i2 = "selection" === t3 ? e2.ctx.toolbar.elSelection : e2.ctx.toolbar.elZoom, a2 = "selection" === t3 ? "selectionEnabled" : "zoomEnabled"; + e2.w.globals[a2] = !e2.w.globals[a2], i2.classList.contains(e2.ctx.toolbar.selectedClass) ? i2.classList.remove(e2.ctx.toolbar.selectedClass) : i2.classList.add(e2.ctx.toolbar.selectedClass); + }); + } }, { key: "getToolbarIconsReference", value: function() { + var t3 = this.w; + this.elZoom || (this.elZoom = t3.globals.dom.baseEl.querySelector(".apexcharts-zoom-icon")), this.elPan || (this.elPan = t3.globals.dom.baseEl.querySelector(".apexcharts-pan-icon")), this.elSelection || (this.elSelection = t3.globals.dom.baseEl.querySelector(".apexcharts-selection-icon")); + } }, { key: "enableZoomPanFromToolbar", value: function(t3) { + this.toggleOtherControls(), "pan" === t3 ? this.w.globals.panEnabled = true : this.w.globals.zoomEnabled = true; + var e2 = "pan" === t3 ? this.elPan : this.elZoom, i2 = "pan" === t3 ? this.elZoom : this.elPan; + e2 && e2.classList.add(this.selectedClass), i2 && i2.classList.remove(this.selectedClass); + } }, { key: "togglePanning", value: function() { + this.ctx.getSyncedCharts().forEach(function(t3) { + t3.ctx.toolbar.toggleOtherControls(), t3.w.globals.panEnabled = !t3.w.globals.panEnabled, t3.ctx.toolbar.elPan.classList.contains(t3.ctx.toolbar.selectedClass) ? t3.ctx.toolbar.elPan.classList.remove(t3.ctx.toolbar.selectedClass) : t3.ctx.toolbar.elPan.classList.add(t3.ctx.toolbar.selectedClass); + }); + } }, { key: "toggleOtherControls", value: function() { + var t3 = this, e2 = this.w; + e2.globals.panEnabled = false, e2.globals.zoomEnabled = false, e2.globals.selectionEnabled = false, this.getToolbarIconsReference(), [this.elPan, this.elSelection, this.elZoom].forEach(function(e3) { + e3 && e3.classList.remove(t3.selectedClass); + }); + } }, { key: "handleZoomIn", value: function() { + var t3 = this.w; + t3.globals.isRangeBar && (this.minX = t3.globals.minY, this.maxX = t3.globals.maxY); + var e2 = (this.minX + this.maxX) / 2, i2 = (this.minX + e2) / 2, a2 = (this.maxX + e2) / 2, s2 = this._getNewMinXMaxX(i2, a2); + t3.globals.disableZoomIn || this.zoomUpdateOptions(s2.minX, s2.maxX); + } }, { key: "handleZoomOut", value: function() { + var t3 = this.w; + if (t3.globals.isRangeBar && (this.minX = t3.globals.minY, this.maxX = t3.globals.maxY), !("datetime" === t3.config.xaxis.type && new Date(this.minX).getUTCFullYear() < 1e3)) { + var e2 = (this.minX + this.maxX) / 2, i2 = this.minX - (e2 - this.minX), a2 = this.maxX - (e2 - this.maxX), s2 = this._getNewMinXMaxX(i2, a2); + t3.globals.disableZoomOut || this.zoomUpdateOptions(s2.minX, s2.maxX); + } + } }, { key: "_getNewMinXMaxX", value: function(t3, e2) { + var i2 = this.w.config.xaxis.convertedCatToNumeric; + return { minX: i2 ? Math.floor(t3) : t3, maxX: i2 ? Math.floor(e2) : e2 }; + } }, { key: "zoomUpdateOptions", value: function(t3, e2) { + var i2 = this.w; + if (void 0 !== t3 || void 0 !== e2) { + if (!(i2.config.xaxis.convertedCatToNumeric && (t3 < 1 && (t3 = 1, e2 = i2.globals.dataPoints), e2 - t3 < 2))) { + var a2 = { min: t3, max: e2 }, s2 = this.getBeforeZoomRange(a2); + s2 && (a2 = s2.xaxis); + var r2 = { xaxis: a2 }, o2 = x.clone(i2.globals.initialConfig.yaxis); + if (i2.config.chart.zoom.autoScaleYaxis) + o2 = new _(this.ctx).autoScaleY(this.ctx, o2, { xaxis: a2 }); + i2.config.chart.group || (r2.yaxis = o2), this.w.globals.zoomed = true, this.ctx.updateHelpers._updateOptions(r2, false, this.w.config.chart.animations.dynamicAnimation.enabled), this.zoomCallback(a2, o2); + } + } else + this.handleZoomReset(); + } }, { key: "zoomCallback", value: function(t3, e2) { + "function" == typeof this.ev.zoomed && this.ev.zoomed(this.ctx, { xaxis: t3, yaxis: e2 }); + } }, { key: "getBeforeZoomRange", value: function(t3, e2) { + var i2 = null; + return "function" == typeof this.ev.beforeZoom && (i2 = this.ev.beforeZoom(this, { xaxis: t3, yaxis: e2 })), i2; + } }, { key: "toggleMenu", value: function() { + var t3 = this; + window.setTimeout(function() { + t3.elMenu.classList.contains("apexcharts-menu-open") ? t3.elMenu.classList.remove("apexcharts-menu-open") : t3.elMenu.classList.add("apexcharts-menu-open"); + }, 0); + } }, { key: "handleDownload", value: function(t3) { + var e2 = this.w, i2 = new G(this.ctx); + switch (t3) { + case "svg": + i2.exportToSVG(this.ctx); + break; + case "png": + i2.exportToPng(this.ctx); + break; + case "csv": + i2.exportToCSV({ series: e2.config.series, columnDelimiter: e2.config.chart.toolbar.export.csv.columnDelimiter }); + } + } }, { key: "handleZoomReset", value: function(t3) { + this.ctx.getSyncedCharts().forEach(function(t4) { + var e2 = t4.w; + if (e2.globals.lastXAxis.min = e2.globals.initialConfig.xaxis.min, e2.globals.lastXAxis.max = e2.globals.initialConfig.xaxis.max, t4.updateHelpers.revertDefaultAxisMinMax(), "function" == typeof e2.config.chart.events.beforeResetZoom) { + var i2 = e2.config.chart.events.beforeResetZoom(t4, e2); + i2 && t4.updateHelpers.revertDefaultAxisMinMax(i2); + } + "function" == typeof e2.config.chart.events.zoomed && t4.ctx.toolbar.zoomCallback({ min: e2.config.xaxis.min, max: e2.config.xaxis.max }), e2.globals.zoomed = false; + var a2 = t4.ctx.series.emptyCollapsedSeries(x.clone(e2.globals.initialSeries)); + t4.updateHelpers._updateSeries(a2, e2.config.chart.animations.dynamicAnimation.enabled); + }); + } }, { key: "destroy", value: function() { + this.elZoom = null, this.elZoomIn = null, this.elZoomOut = null, this.elPan = null, this.elSelection = null, this.elZoomReset = null, this.elMenuIcon = null; + } }]), t2; + }(); + var ct = function(t2) { + n(i2, ht); + var e2 = d(i2); + function i2(t3) { + var s2; + return a(this, i2), (s2 = e2.call(this, t3)).ctx = t3, s2.w = t3.w, s2.dragged = false, s2.graphics = new m(s2.ctx), s2.eventList = ["mousedown", "mouseleave", "mousemove", "touchstart", "touchmove", "mouseup", "touchend"], s2.clientX = 0, s2.clientY = 0, s2.startX = 0, s2.endX = 0, s2.dragX = 0, s2.startY = 0, s2.endY = 0, s2.dragY = 0, s2.moveDirection = "none", s2; + } + return r(i2, [{ key: "init", value: function(t3) { + var e3 = this, i3 = t3.xyRatios, a2 = this.w, s2 = this; + this.xyRatios = i3, this.zoomRect = this.graphics.drawRect(0, 0, 0, 0), this.selectionRect = this.graphics.drawRect(0, 0, 0, 0), this.gridRect = a2.globals.dom.baseEl.querySelector(".apexcharts-grid"), this.zoomRect.node.classList.add("apexcharts-zoom-rect"), this.selectionRect.node.classList.add("apexcharts-selection-rect"), a2.globals.dom.elGraphical.add(this.zoomRect), a2.globals.dom.elGraphical.add(this.selectionRect), "x" === a2.config.chart.selection.type ? this.slDraggableRect = this.selectionRect.draggable({ minX: 0, minY: 0, maxX: a2.globals.gridWidth, maxY: a2.globals.gridHeight }).on("dragmove", this.selectionDragging.bind(this, "dragging")) : "y" === a2.config.chart.selection.type ? this.slDraggableRect = this.selectionRect.draggable({ minX: 0, maxX: a2.globals.gridWidth }).on("dragmove", this.selectionDragging.bind(this, "dragging")) : this.slDraggableRect = this.selectionRect.draggable().on("dragmove", this.selectionDragging.bind(this, "dragging")), this.preselectedSelection(), this.hoverArea = a2.globals.dom.baseEl.querySelector("".concat(a2.globals.chartClass, " .apexcharts-svg")), this.hoverArea.classList.add("apexcharts-zoomable"), this.eventList.forEach(function(t4) { + e3.hoverArea.addEventListener(t4, s2.svgMouseEvents.bind(s2, i3), { capture: false, passive: true }); + }); + } }, { key: "destroy", value: function() { + this.slDraggableRect && (this.slDraggableRect.draggable(false), this.slDraggableRect.off(), this.selectionRect.off()), this.selectionRect = null, this.zoomRect = null, this.gridRect = null; + } }, { key: "svgMouseEvents", value: function(t3, e3) { + var i3 = this.w, a2 = this, s2 = this.ctx.toolbar, r2 = i3.globals.zoomEnabled ? i3.config.chart.zoom.type : i3.config.chart.selection.type, o2 = i3.config.chart.toolbar.autoSelected; + if (e3.shiftKey ? (this.shiftWasPressed = true, s2.enableZoomPanFromToolbar("pan" === o2 ? "zoom" : "pan")) : this.shiftWasPressed && (s2.enableZoomPanFromToolbar(o2), this.shiftWasPressed = false), e3.target) { + var n2, l2 = e3.target.classList; + if (e3.target.parentNode && null !== e3.target.parentNode && (n2 = e3.target.parentNode.classList), !(l2.contains("apexcharts-selection-rect") || l2.contains("apexcharts-legend-marker") || l2.contains("apexcharts-legend-text") || n2 && n2.contains("apexcharts-toolbar"))) { + if (a2.clientX = "touchmove" === e3.type || "touchstart" === e3.type ? e3.touches[0].clientX : "touchend" === e3.type ? e3.changedTouches[0].clientX : e3.clientX, a2.clientY = "touchmove" === e3.type || "touchstart" === e3.type ? e3.touches[0].clientY : "touchend" === e3.type ? e3.changedTouches[0].clientY : e3.clientY, "mousedown" === e3.type && 1 === e3.which) { + var h2 = a2.gridRect.getBoundingClientRect(); + a2.startX = a2.clientX - h2.left, a2.startY = a2.clientY - h2.top, a2.dragged = false, a2.w.globals.mousedown = true; + } + if (("mousemove" === e3.type && 1 === e3.which || "touchmove" === e3.type) && (a2.dragged = true, i3.globals.panEnabled ? (i3.globals.selection = null, a2.w.globals.mousedown && a2.panDragging({ context: a2, zoomtype: r2, xyRatios: t3 })) : (a2.w.globals.mousedown && i3.globals.zoomEnabled || a2.w.globals.mousedown && i3.globals.selectionEnabled) && (a2.selection = a2.selectionDrawing({ context: a2, zoomtype: r2 }))), "mouseup" === e3.type || "touchend" === e3.type || "mouseleave" === e3.type) { + var c2 = a2.gridRect.getBoundingClientRect(); + a2.w.globals.mousedown && (a2.endX = a2.clientX - c2.left, a2.endY = a2.clientY - c2.top, a2.dragX = Math.abs(a2.endX - a2.startX), a2.dragY = Math.abs(a2.endY - a2.startY), (i3.globals.zoomEnabled || i3.globals.selectionEnabled) && a2.selectionDrawn({ context: a2, zoomtype: r2 }), i3.globals.panEnabled && i3.config.xaxis.convertedCatToNumeric && a2.delayedPanScrolled()), i3.globals.zoomEnabled && a2.hideSelectionRect(this.selectionRect), a2.dragged = false, a2.w.globals.mousedown = false; + } + this.makeSelectionRectDraggable(); + } + } + } }, { key: "makeSelectionRectDraggable", value: function() { + var t3 = this.w; + if (this.selectionRect) { + var e3 = this.selectionRect.node.getBoundingClientRect(); + e3.width > 0 && e3.height > 0 && this.slDraggableRect.selectize({ points: "l, r", pointSize: 8, pointType: "rect" }).resize({ constraint: { minX: 0, minY: 0, maxX: t3.globals.gridWidth, maxY: t3.globals.gridHeight } }).on("resizing", this.selectionDragging.bind(this, "resizing")); + } + } }, { key: "preselectedSelection", value: function() { + var t3 = this.w, e3 = this.xyRatios; + if (!t3.globals.zoomEnabled) { + if (void 0 !== t3.globals.selection && null !== t3.globals.selection) + this.drawSelectionRect(t3.globals.selection); + else if (void 0 !== t3.config.chart.selection.xaxis.min && void 0 !== t3.config.chart.selection.xaxis.max) { + var i3 = (t3.config.chart.selection.xaxis.min - t3.globals.minX) / e3.xRatio, a2 = { x: i3, y: 0, width: t3.globals.gridWidth - (t3.globals.maxX - t3.config.chart.selection.xaxis.max) / e3.xRatio - i3, height: t3.globals.gridHeight, translateX: 0, translateY: 0, selectionEnabled: true }; + this.drawSelectionRect(a2), this.makeSelectionRectDraggable(), "function" == typeof t3.config.chart.events.selection && t3.config.chart.events.selection(this.ctx, { xaxis: { min: t3.config.chart.selection.xaxis.min, max: t3.config.chart.selection.xaxis.max }, yaxis: {} }); + } + } + } }, { key: "drawSelectionRect", value: function(t3) { + var e3 = t3.x, i3 = t3.y, a2 = t3.width, s2 = t3.height, r2 = t3.translateX, o2 = void 0 === r2 ? 0 : r2, n2 = t3.translateY, l2 = void 0 === n2 ? 0 : n2, h2 = this.w, c2 = this.zoomRect, d2 = this.selectionRect; + if (this.dragged || null !== h2.globals.selection) { + var g2 = { transform: "translate(" + o2 + ", " + l2 + ")" }; + h2.globals.zoomEnabled && this.dragged && (a2 < 0 && (a2 = 1), c2.attr({ x: e3, y: i3, width: a2, height: s2, fill: h2.config.chart.zoom.zoomedArea.fill.color, "fill-opacity": h2.config.chart.zoom.zoomedArea.fill.opacity, stroke: h2.config.chart.zoom.zoomedArea.stroke.color, "stroke-width": h2.config.chart.zoom.zoomedArea.stroke.width, "stroke-opacity": h2.config.chart.zoom.zoomedArea.stroke.opacity }), m.setAttrs(c2.node, g2)), h2.globals.selectionEnabled && (d2.attr({ x: e3, y: i3, width: a2 > 0 ? a2 : 0, height: s2 > 0 ? s2 : 0, fill: h2.config.chart.selection.fill.color, "fill-opacity": h2.config.chart.selection.fill.opacity, stroke: h2.config.chart.selection.stroke.color, "stroke-width": h2.config.chart.selection.stroke.width, "stroke-dasharray": h2.config.chart.selection.stroke.dashArray, "stroke-opacity": h2.config.chart.selection.stroke.opacity }), m.setAttrs(d2.node, g2)); + } + } }, { key: "hideSelectionRect", value: function(t3) { + t3 && t3.attr({ x: 0, y: 0, width: 0, height: 0 }); + } }, { key: "selectionDrawing", value: function(t3) { + var e3 = t3.context, i3 = t3.zoomtype, a2 = this.w, s2 = e3, r2 = this.gridRect.getBoundingClientRect(), o2 = s2.startX - 1, n2 = s2.startY, l2 = false, h2 = false, c2 = s2.clientX - r2.left - o2, d2 = s2.clientY - r2.top - n2, g2 = {}; + return Math.abs(c2 + o2) > a2.globals.gridWidth ? c2 = a2.globals.gridWidth - o2 : s2.clientX - r2.left < 0 && (c2 = o2), o2 > s2.clientX - r2.left && (l2 = true, c2 = Math.abs(c2)), n2 > s2.clientY - r2.top && (h2 = true, d2 = Math.abs(d2)), g2 = "x" === i3 ? { x: l2 ? o2 - c2 : o2, y: 0, width: c2, height: a2.globals.gridHeight } : "y" === i3 ? { x: 0, y: h2 ? n2 - d2 : n2, width: a2.globals.gridWidth, height: d2 } : { x: l2 ? o2 - c2 : o2, y: h2 ? n2 - d2 : n2, width: c2, height: d2 }, s2.drawSelectionRect(g2), s2.selectionDragging("resizing"), g2; + } }, { key: "selectionDragging", value: function(t3, e3) { + var i3 = this, a2 = this.w, s2 = this.xyRatios, r2 = this.selectionRect, o2 = 0; + "resizing" === t3 && (o2 = 30); + var n2 = function(t4) { + return parseFloat(r2.node.getAttribute(t4)); + }, l2 = { x: n2("x"), y: n2("y"), width: n2("width"), height: n2("height") }; + a2.globals.selection = l2, "function" == typeof a2.config.chart.events.selection && a2.globals.selectionEnabled && (clearTimeout(this.w.globals.selectionResizeTimer), this.w.globals.selectionResizeTimer = window.setTimeout(function() { + var t4 = i3.gridRect.getBoundingClientRect(), e4 = r2.node.getBoundingClientRect(), o3 = { xaxis: { min: a2.globals.xAxisScale.niceMin + (e4.left - t4.left) * s2.xRatio, max: a2.globals.xAxisScale.niceMin + (e4.right - t4.left) * s2.xRatio }, yaxis: { min: a2.globals.yAxisScale[0].niceMin + (t4.bottom - e4.bottom) * s2.yRatio[0], max: a2.globals.yAxisScale[0].niceMax - (e4.top - t4.top) * s2.yRatio[0] } }; + a2.config.chart.events.selection(i3.ctx, o3), a2.config.chart.brush.enabled && void 0 !== a2.config.chart.events.brushScrolled && a2.config.chart.events.brushScrolled(i3.ctx, o3); + }, o2)); + } }, { key: "selectionDrawn", value: function(t3) { + var e3 = t3.context, i3 = t3.zoomtype, a2 = this.w, s2 = e3, r2 = this.xyRatios, o2 = this.ctx.toolbar; + if (s2.startX > s2.endX) { + var n2 = s2.startX; + s2.startX = s2.endX, s2.endX = n2; + } + if (s2.startY > s2.endY) { + var l2 = s2.startY; + s2.startY = s2.endY, s2.endY = l2; + } + var h2 = void 0, c2 = void 0; + a2.globals.isRangeBar ? (h2 = a2.globals.yAxisScale[0].niceMin + s2.startX * r2.invertedYRatio, c2 = a2.globals.yAxisScale[0].niceMin + s2.endX * r2.invertedYRatio) : (h2 = a2.globals.xAxisScale.niceMin + s2.startX * r2.xRatio, c2 = a2.globals.xAxisScale.niceMin + s2.endX * r2.xRatio); + var d2 = [], g2 = []; + if (a2.config.yaxis.forEach(function(t4, e4) { + d2.push(a2.globals.yAxisScale[e4].niceMax - r2.yRatio[e4] * s2.startY), g2.push(a2.globals.yAxisScale[e4].niceMax - r2.yRatio[e4] * s2.endY); + }), s2.dragged && (s2.dragX > 10 || s2.dragY > 10) && h2 !== c2) { + if (a2.globals.zoomEnabled) { + var u2 = x.clone(a2.globals.initialConfig.yaxis), p2 = x.clone(a2.globals.initialConfig.xaxis); + if (a2.globals.zoomed = true, a2.config.xaxis.convertedCatToNumeric && (h2 = Math.floor(h2), c2 = Math.floor(c2), h2 < 1 && (h2 = 1, c2 = a2.globals.dataPoints), c2 - h2 < 2 && (c2 = h2 + 1)), "xy" !== i3 && "x" !== i3 || (p2 = { min: h2, max: c2 }), "xy" !== i3 && "y" !== i3 || u2.forEach(function(t4, e4) { + u2[e4].min = g2[e4], u2[e4].max = d2[e4]; + }), a2.config.chart.zoom.autoScaleYaxis) { + var f2 = new _(s2.ctx); + u2 = f2.autoScaleY(s2.ctx, u2, { xaxis: p2 }); + } + if (o2) { + var b2 = o2.getBeforeZoomRange(p2, u2); + b2 && (p2 = b2.xaxis ? b2.xaxis : p2, u2 = b2.yaxis ? b2.yaxis : u2); + } + var v2 = { xaxis: p2 }; + a2.config.chart.group || (v2.yaxis = u2), s2.ctx.updateHelpers._updateOptions(v2, false, s2.w.config.chart.animations.dynamicAnimation.enabled), "function" == typeof a2.config.chart.events.zoomed && o2.zoomCallback(p2, u2); + } else if (a2.globals.selectionEnabled) { + var m2, y2 = null; + m2 = { min: h2, max: c2 }, "xy" !== i3 && "y" !== i3 || (y2 = x.clone(a2.config.yaxis)).forEach(function(t4, e4) { + y2[e4].min = g2[e4], y2[e4].max = d2[e4]; + }), a2.globals.selection = s2.selection, "function" == typeof a2.config.chart.events.selection && a2.config.chart.events.selection(s2.ctx, { xaxis: m2, yaxis: y2 }); + } + } + } }, { key: "panDragging", value: function(t3) { + var e3 = t3.context, i3 = this.w, a2 = e3; + if (void 0 !== i3.globals.lastClientPosition.x) { + var s2 = i3.globals.lastClientPosition.x - a2.clientX, r2 = i3.globals.lastClientPosition.y - a2.clientY; + Math.abs(s2) > Math.abs(r2) && s2 > 0 ? this.moveDirection = "left" : Math.abs(s2) > Math.abs(r2) && s2 < 0 ? this.moveDirection = "right" : Math.abs(r2) > Math.abs(s2) && r2 > 0 ? this.moveDirection = "up" : Math.abs(r2) > Math.abs(s2) && r2 < 0 && (this.moveDirection = "down"); + } + i3.globals.lastClientPosition = { x: a2.clientX, y: a2.clientY }; + var o2 = i3.globals.isRangeBar ? i3.globals.minY : i3.globals.minX, n2 = i3.globals.isRangeBar ? i3.globals.maxY : i3.globals.maxX; + i3.config.xaxis.convertedCatToNumeric || a2.panScrolled(o2, n2); + } }, { key: "delayedPanScrolled", value: function() { + var t3 = this.w, e3 = t3.globals.minX, i3 = t3.globals.maxX, a2 = (t3.globals.maxX - t3.globals.minX) / 2; + "left" === this.moveDirection ? (e3 = t3.globals.minX + a2, i3 = t3.globals.maxX + a2) : "right" === this.moveDirection && (e3 = t3.globals.minX - a2, i3 = t3.globals.maxX - a2), e3 = Math.floor(e3), i3 = Math.floor(i3), this.updateScrolledChart({ xaxis: { min: e3, max: i3 } }, e3, i3); + } }, { key: "panScrolled", value: function(t3, e3) { + var i3 = this.w, a2 = this.xyRatios, s2 = x.clone(i3.globals.initialConfig.yaxis), r2 = a2.xRatio, o2 = i3.globals.minX, n2 = i3.globals.maxX; + i3.globals.isRangeBar && (r2 = a2.invertedYRatio, o2 = i3.globals.minY, n2 = i3.globals.maxY), "left" === this.moveDirection ? (t3 = o2 + i3.globals.gridWidth / 15 * r2, e3 = n2 + i3.globals.gridWidth / 15 * r2) : "right" === this.moveDirection && (t3 = o2 - i3.globals.gridWidth / 15 * r2, e3 = n2 - i3.globals.gridWidth / 15 * r2), i3.globals.isRangeBar || (t3 < i3.globals.initialMinX || e3 > i3.globals.initialMaxX) && (t3 = o2, e3 = n2); + var l2 = { min: t3, max: e3 }; + i3.config.chart.zoom.autoScaleYaxis && (s2 = new _(this.ctx).autoScaleY(this.ctx, s2, { xaxis: l2 })); + var h2 = { xaxis: { min: t3, max: e3 } }; + i3.config.chart.group || (h2.yaxis = s2), this.updateScrolledChart(h2, t3, e3); + } }, { key: "updateScrolledChart", value: function(t3, e3, i3) { + var a2 = this.w; + this.ctx.updateHelpers._updateOptions(t3, false, false), "function" == typeof a2.config.chart.events.scrolled && a2.config.chart.events.scrolled(this.ctx, { xaxis: { min: e3, max: i3 } }); + } }]), i2; + }(); + var dt = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.ttCtx = e2, this.ctx = e2.ctx; + } + return r(t2, [{ key: "getNearestValues", value: function(t3) { + var e2 = t3.hoverArea, i2 = t3.elGrid, a2 = t3.clientX, s2 = t3.clientY, r2 = this.w, o2 = i2.getBoundingClientRect(), n2 = o2.width, l2 = o2.height, h2 = n2 / (r2.globals.dataPoints - 1), c2 = l2 / r2.globals.dataPoints, d2 = this.hasBars(); + !r2.globals.comboCharts && !d2 || r2.config.xaxis.convertedCatToNumeric || (h2 = n2 / r2.globals.dataPoints); + var g2 = a2 - o2.left - r2.globals.barPadForNumericAxis, u2 = s2 - o2.top; + g2 < 0 || u2 < 0 || g2 > n2 || u2 > l2 ? (e2.classList.remove("hovering-zoom"), e2.classList.remove("hovering-pan")) : r2.globals.zoomEnabled ? (e2.classList.remove("hovering-pan"), e2.classList.add("hovering-zoom")) : r2.globals.panEnabled && (e2.classList.remove("hovering-zoom"), e2.classList.add("hovering-pan")); + var p2 = Math.round(g2 / h2), f2 = Math.floor(u2 / c2); + d2 && !r2.config.xaxis.convertedCatToNumeric && (p2 = Math.ceil(g2 / h2), p2 -= 1); + var b2 = null, v2 = null, m2 = r2.globals.seriesXvalues.map(function(t4) { + return t4.filter(function(t5) { + return x.isNumber(t5); + }); + }), y2 = r2.globals.seriesYvalues.map(function(t4) { + return t4.filter(function(t5) { + return x.isNumber(t5); + }); + }); + if (r2.globals.isXNumeric) { + var w2 = this.ttCtx.getElGrid().getBoundingClientRect(), k2 = g2 * (w2.width / n2), A2 = u2 * (w2.height / l2); + b2 = (v2 = this.closestInMultiArray(k2, A2, m2, y2)).index, p2 = v2.j, null !== b2 && (m2 = r2.globals.seriesXvalues[b2], p2 = (v2 = this.closestInArray(k2, m2)).index); + } + return r2.globals.capturedSeriesIndex = null === b2 ? -1 : b2, (!p2 || p2 < 1) && (p2 = 0), r2.globals.isBarHorizontal ? r2.globals.capturedDataPointIndex = f2 : r2.globals.capturedDataPointIndex = p2, { capturedSeries: b2, j: r2.globals.isBarHorizontal ? f2 : p2, hoverX: g2, hoverY: u2 }; + } }, { key: "closestInMultiArray", value: function(t3, e2, i2, a2) { + var s2 = this.w, r2 = 0, o2 = null, n2 = -1; + s2.globals.series.length > 1 ? r2 = this.getFirstActiveXArray(i2) : o2 = 0; + var l2 = i2[r2][0], h2 = Math.abs(t3 - l2); + if (i2.forEach(function(e3) { + e3.forEach(function(e4, i3) { + var a3 = Math.abs(t3 - e4); + a3 <= h2 && (h2 = a3, n2 = i3); + }); + }), -1 !== n2) { + var c2 = a2[r2][n2], d2 = Math.abs(e2 - c2); + o2 = r2, a2.forEach(function(t4, i3) { + var a3 = Math.abs(e2 - t4[n2]); + a3 <= d2 && (d2 = a3, o2 = i3); + }); + } + return { index: o2, j: n2 }; + } }, { key: "getFirstActiveXArray", value: function(t3) { + for (var e2 = this.w, i2 = 0, a2 = t3.map(function(t4, e3) { + return t4.length > 0 ? e3 : -1; + }), s2 = 0; s2 < a2.length; s2++) + if (-1 !== a2[s2] && -1 === e2.globals.collapsedSeriesIndices.indexOf(s2) && -1 === e2.globals.ancillaryCollapsedSeriesIndices.indexOf(s2)) { + i2 = a2[s2]; + break; + } + return i2; + } }, { key: "closestInArray", value: function(t3, e2) { + for (var i2 = e2[0], a2 = null, s2 = Math.abs(t3 - i2), r2 = 0; r2 < e2.length; r2++) { + var o2 = Math.abs(t3 - e2[r2]); + o2 < s2 && (s2 = o2, a2 = r2); + } + return { index: a2 }; + } }, { key: "isXoverlap", value: function(t3) { + var e2 = [], i2 = this.w.globals.seriesX.filter(function(t4) { + return void 0 !== t4[0]; + }); + if (i2.length > 0) + for (var a2 = 0; a2 < i2.length - 1; a2++) + void 0 !== i2[a2][t3] && void 0 !== i2[a2 + 1][t3] && i2[a2][t3] !== i2[a2 + 1][t3] && e2.push("unEqual"); + return 0 === e2.length; + } }, { key: "isInitialSeriesSameLen", value: function() { + for (var t3 = true, e2 = this.w.globals.initialSeries, i2 = 0; i2 < e2.length - 1; i2++) + if (e2[i2].data.length !== e2[i2 + 1].data.length) { + t3 = false; + break; + } + return t3; + } }, { key: "getBarsHeight", value: function(t3) { + return u(t3).reduce(function(t4, e2) { + return t4 + e2.getBBox().height; + }, 0); + } }, { key: "getElMarkers", value: function(t3) { + return "number" == typeof t3 ? this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:realIndex='".concat(t3, "'] .apexcharts-series-markers-wrap > *")) : this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap > *"); + } }, { key: "getAllMarkers", value: function() { + var t3 = this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap"); + (t3 = u(t3)).sort(function(t4, e3) { + var i2 = Number(t4.getAttribute("data:realIndex")), a2 = Number(e3.getAttribute("data:realIndex")); + return a2 < i2 ? 1 : a2 > i2 ? -1 : 0; + }); + var e2 = []; + return t3.forEach(function(t4) { + e2.push(t4.querySelector(".apexcharts-marker")); + }), e2; + } }, { key: "hasMarkers", value: function(t3) { + return this.getElMarkers(t3).length > 0; + } }, { key: "getElBars", value: function() { + return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series"); + } }, { key: "hasBars", value: function() { + return this.getElBars().length > 0; + } }, { key: "getHoverMarkerSize", value: function(t3) { + var e2 = this.w, i2 = e2.config.markers.hover.size; + return void 0 === i2 && (i2 = e2.globals.markers.size[t3] + e2.config.markers.hover.sizeOffset), i2; + } }, { key: "toggleAllTooltipSeriesGroups", value: function(t3) { + var e2 = this.w, i2 = this.ttCtx; + 0 === i2.allTooltipSeriesGroups.length && (i2.allTooltipSeriesGroups = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group")); + for (var a2 = i2.allTooltipSeriesGroups, s2 = 0; s2 < a2.length; s2++) + "enable" === t3 ? (a2[s2].classList.add("apexcharts-active"), a2[s2].style.display = e2.config.tooltip.items.display) : (a2[s2].classList.remove("apexcharts-active"), a2[s2].style.display = "none"); + } }]), t2; + }(); + var gt = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.ctx = e2.ctx, this.ttCtx = e2, this.tooltipUtil = new dt(e2); + } + return r(t2, [{ key: "drawSeriesTexts", value: function(t3) { + var e2 = t3.shared, i2 = void 0 === e2 || e2, a2 = t3.ttItems, s2 = t3.i, r2 = void 0 === s2 ? 0 : s2, o2 = t3.j, n2 = void 0 === o2 ? null : o2, l2 = t3.y1, h2 = t3.y2, c2 = t3.e, d2 = this.w; + void 0 !== d2.config.tooltip.custom ? this.handleCustomTooltip({ i: r2, j: n2, y1: l2, y2: h2, w: d2 }) : this.toggleActiveInactiveSeries(i2); + var g2 = this.getValuesToPrint({ i: r2, j: n2 }); + this.printLabels({ i: r2, j: n2, values: g2, ttItems: a2, shared: i2, e: c2 }); + var u2 = this.ttCtx.getElTooltip(); + this.ttCtx.tooltipRect.ttWidth = u2.getBoundingClientRect().width, this.ttCtx.tooltipRect.ttHeight = u2.getBoundingClientRect().height; + } }, { key: "printLabels", value: function(t3) { + var i2, a2 = this, s2 = t3.i, r2 = t3.j, o2 = t3.values, n2 = t3.ttItems, l2 = t3.shared, h2 = t3.e, c2 = this.w, d2 = [], g2 = function(t4) { + return c2.globals.seriesGoals[t4] && c2.globals.seriesGoals[t4][r2] && Array.isArray(c2.globals.seriesGoals[t4][r2]); + }, u2 = o2.xVal, p2 = o2.zVal, f2 = o2.xAxisTTVal, x2 = "", b2 = c2.globals.colors[s2]; + null !== r2 && c2.config.plotOptions.bar.distributed && (b2 = c2.globals.colors[r2]); + for (var v2 = function(t4, o3) { + var v3 = a2.getFormatters(s2); + x2 = a2.getSeriesName({ fn: v3.yLbTitleFormatter, index: s2, seriesIndex: s2, j: r2 }), "treemap" === c2.config.chart.type && (x2 = v3.yLbTitleFormatter(String(c2.config.series[s2].data[r2].x), { series: c2.globals.series, seriesIndex: s2, dataPointIndex: r2, w: c2 })); + var m3 = c2.config.tooltip.inverseOrder ? o3 : t4; + if (c2.globals.axisCharts) { + var y3 = function(t5) { + var e2, i3, a3, s3; + return c2.globals.isRangeData ? v3.yLbFormatter(null === (e2 = c2.globals.seriesRangeStart) || void 0 === e2 || null === (i3 = e2[t5]) || void 0 === i3 ? void 0 : i3[r2], { series: c2.globals.seriesRangeStart, seriesIndex: t5, dataPointIndex: r2, w: c2 }) + " - " + v3.yLbFormatter(null === (a3 = c2.globals.seriesRangeEnd) || void 0 === a3 || null === (s3 = a3[t5]) || void 0 === s3 ? void 0 : s3[r2], { series: c2.globals.seriesRangeEnd, seriesIndex: t5, dataPointIndex: r2, w: c2 }) : v3.yLbFormatter(c2.globals.series[t5][r2], { series: c2.globals.series, seriesIndex: t5, dataPointIndex: r2, w: c2 }); + }; + if (l2) + v3 = a2.getFormatters(m3), x2 = a2.getSeriesName({ fn: v3.yLbTitleFormatter, index: m3, seriesIndex: s2, j: r2 }), b2 = c2.globals.colors[m3], i2 = y3(m3), g2(m3) && (d2 = c2.globals.seriesGoals[m3][r2].map(function(t5) { + return { attrs: t5, val: v3.yLbFormatter(t5.value, { seriesIndex: m3, dataPointIndex: r2, w: c2 }) }; + })); + else { + var w2, k2 = null == h2 || null === (w2 = h2.target) || void 0 === w2 ? void 0 : w2.getAttribute("fill"); + k2 && (b2 = -1 !== k2.indexOf("url") ? document.querySelector(k2.substr(4).slice(0, -1)).childNodes[0].getAttribute("stroke") : k2), i2 = y3(s2), g2(s2) && Array.isArray(c2.globals.seriesGoals[s2][r2]) && (d2 = c2.globals.seriesGoals[s2][r2].map(function(t5) { + return { attrs: t5, val: v3.yLbFormatter(t5.value, { seriesIndex: s2, dataPointIndex: r2, w: c2 }) }; + })); + } + } + null === r2 && (i2 = v3.yLbFormatter(c2.globals.series[s2], e(e({}, c2), {}, { seriesIndex: s2, dataPointIndex: s2 }))), a2.DOMHandling({ i: s2, t: m3, j: r2, ttItems: n2, values: { val: i2, goalVals: d2, xVal: u2, xAxisTTVal: f2, zVal: p2 }, seriesName: x2, shared: l2, pColor: b2 }); + }, m2 = 0, y2 = c2.globals.series.length - 1; m2 < c2.globals.series.length; m2++, y2--) + v2(m2, y2); + } }, { key: "getFormatters", value: function(t3) { + var e2, i2 = this.w, a2 = i2.globals.yLabelFormatters[t3]; + return void 0 !== i2.globals.ttVal ? Array.isArray(i2.globals.ttVal) ? (a2 = i2.globals.ttVal[t3] && i2.globals.ttVal[t3].formatter, e2 = i2.globals.ttVal[t3] && i2.globals.ttVal[t3].title && i2.globals.ttVal[t3].title.formatter) : (a2 = i2.globals.ttVal.formatter, "function" == typeof i2.globals.ttVal.title.formatter && (e2 = i2.globals.ttVal.title.formatter)) : e2 = i2.config.tooltip.y.title.formatter, "function" != typeof a2 && (a2 = i2.globals.yLabelFormatters[0] ? i2.globals.yLabelFormatters[0] : function(t4) { + return t4; + }), "function" != typeof e2 && (e2 = function(t4) { + return t4; + }), { yLbFormatter: a2, yLbTitleFormatter: e2 }; + } }, { key: "getSeriesName", value: function(t3) { + var e2 = t3.fn, i2 = t3.index, a2 = t3.seriesIndex, s2 = t3.j, r2 = this.w; + return e2(String(r2.globals.seriesNames[i2]), { series: r2.globals.series, seriesIndex: a2, dataPointIndex: s2, w: r2 }); + } }, { key: "DOMHandling", value: function(t3) { + t3.i; + var e2 = t3.t, i2 = t3.j, a2 = t3.ttItems, s2 = t3.values, r2 = t3.seriesName, o2 = t3.shared, n2 = t3.pColor, l2 = this.w, h2 = this.ttCtx, c2 = s2.val, d2 = s2.goalVals, g2 = s2.xVal, u2 = s2.xAxisTTVal, p2 = s2.zVal, f2 = null; + f2 = a2[e2].children, l2.config.tooltip.fillSeriesColor && (a2[e2].style.backgroundColor = n2, f2[0].style.display = "none"), h2.showTooltipTitle && (null === h2.tooltipTitle && (h2.tooltipTitle = l2.globals.dom.baseEl.querySelector(".apexcharts-tooltip-title")), h2.tooltipTitle.innerHTML = g2), h2.isXAxisTooltipEnabled && (h2.xaxisTooltipText.innerHTML = "" !== u2 ? u2 : g2); + var x2 = a2[e2].querySelector(".apexcharts-tooltip-text-y-label"); + x2 && (x2.innerHTML = r2 || ""); + var b2 = a2[e2].querySelector(".apexcharts-tooltip-text-y-value"); + b2 && (b2.innerHTML = void 0 !== c2 ? c2 : ""), f2[0] && f2[0].classList.contains("apexcharts-tooltip-marker") && (l2.config.tooltip.marker.fillColors && Array.isArray(l2.config.tooltip.marker.fillColors) && (n2 = l2.config.tooltip.marker.fillColors[e2]), f2[0].style.backgroundColor = n2), l2.config.tooltip.marker.show || (f2[0].style.display = "none"); + var v2 = a2[e2].querySelector(".apexcharts-tooltip-text-goals-label"), m2 = a2[e2].querySelector(".apexcharts-tooltip-text-goals-value"); + if (d2.length && l2.globals.seriesGoals[e2]) { + var y2 = function() { + var t4 = "
", e3 = "
"; + d2.forEach(function(i3, a3) { + t4 += '
').concat(i3.attrs.name, "
"), e3 += "
".concat(i3.val, "
"); + }), v2.innerHTML = t4 + "
", m2.innerHTML = e3 + "
"; + }; + o2 ? l2.globals.seriesGoals[e2][i2] && Array.isArray(l2.globals.seriesGoals[e2][i2]) ? y2() : (v2.innerHTML = "", m2.innerHTML = "") : y2(); + } else + v2.innerHTML = "", m2.innerHTML = ""; + null !== p2 && (a2[e2].querySelector(".apexcharts-tooltip-text-z-label").innerHTML = l2.config.tooltip.z.title, a2[e2].querySelector(".apexcharts-tooltip-text-z-value").innerHTML = void 0 !== p2 ? p2 : ""); + o2 && f2[0] && (null == c2 || l2.globals.ancillaryCollapsedSeriesIndices.indexOf(e2) > -1 || l2.globals.collapsedSeriesIndices.indexOf(e2) > -1 ? f2[0].parentNode.style.display = "none" : f2[0].parentNode.style.display = l2.config.tooltip.items.display); + } }, { key: "toggleActiveInactiveSeries", value: function(t3) { + var e2 = this.w; + if (t3) + this.tooltipUtil.toggleAllTooltipSeriesGroups("enable"); + else { + this.tooltipUtil.toggleAllTooltipSeriesGroups("disable"); + var i2 = e2.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group"); + i2 && (i2.classList.add("apexcharts-active"), i2.style.display = e2.config.tooltip.items.display); + } + } }, { key: "getValuesToPrint", value: function(t3) { + var e2 = t3.i, i2 = t3.j, a2 = this.w, s2 = this.ctx.series.filteredSeriesX(), r2 = "", o2 = "", n2 = null, l2 = null, h2 = { series: a2.globals.series, seriesIndex: e2, dataPointIndex: i2, w: a2 }, c2 = a2.globals.ttZFormatter; + null === i2 ? l2 = a2.globals.series[e2] : a2.globals.isXNumeric && "treemap" !== a2.config.chart.type ? (r2 = s2[e2][i2], 0 === s2[e2].length && (r2 = s2[this.tooltipUtil.getFirstActiveXArray(s2)][i2])) : r2 = void 0 !== a2.globals.labels[i2] ? a2.globals.labels[i2] : ""; + var d2 = r2; + a2.globals.isXNumeric && "datetime" === a2.config.xaxis.type ? r2 = new M(this.ctx).xLabelFormat(a2.globals.ttKeyFormatter, d2, d2, { i: void 0, dateFormatter: new I(this.ctx).formatDate, w: this.w }) : r2 = a2.globals.isBarHorizontal ? a2.globals.yLabelFormatters[0](d2, h2) : a2.globals.xLabelFormatter(d2, h2); + return void 0 !== a2.config.tooltip.x.formatter && (r2 = a2.globals.ttKeyFormatter(d2, h2)), a2.globals.seriesZ.length > 0 && a2.globals.seriesZ[e2].length > 0 && (n2 = c2(a2.globals.seriesZ[e2][i2], a2)), o2 = "function" == typeof a2.config.xaxis.tooltip.formatter ? a2.globals.xaxisTooltipFormatter(d2, h2) : r2, { val: Array.isArray(l2) ? l2.join(" ") : l2, xVal: Array.isArray(r2) ? r2.join(" ") : r2, xAxisTTVal: Array.isArray(o2) ? o2.join(" ") : o2, zVal: n2 }; + } }, { key: "handleCustomTooltip", value: function(t3) { + var e2 = t3.i, i2 = t3.j, a2 = t3.y1, s2 = t3.y2, r2 = t3.w, o2 = this.ttCtx.getElTooltip(), n2 = r2.config.tooltip.custom; + Array.isArray(n2) && n2[e2] && (n2 = n2[e2]), o2.innerHTML = n2({ ctx: this.ctx, series: r2.globals.series, seriesIndex: e2, dataPointIndex: i2, y1: a2, y2: s2, w: r2 }); + } }]), t2; + }(); + var ut = function() { + function t2(e2) { + a(this, t2), this.ttCtx = e2, this.ctx = e2.ctx, this.w = e2.w; + } + return r(t2, [{ key: "moveXCrosshairs", value: function(t3) { + var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, i2 = this.ttCtx, a2 = this.w, s2 = i2.getElXCrosshairs(), r2 = t3 - i2.xcrosshairsWidth / 2, o2 = a2.globals.labels.slice().length; + if (null !== e2 && (r2 = a2.globals.gridWidth / o2 * e2), null === s2 || a2.globals.isBarHorizontal || (s2.setAttribute("x", r2), s2.setAttribute("x1", r2), s2.setAttribute("x2", r2), s2.setAttribute("y2", a2.globals.gridHeight), s2.classList.add("apexcharts-active")), r2 < 0 && (r2 = 0), r2 > a2.globals.gridWidth && (r2 = a2.globals.gridWidth), i2.isXAxisTooltipEnabled) { + var n2 = r2; + "tickWidth" !== a2.config.xaxis.crosshairs.width && "barWidth" !== a2.config.xaxis.crosshairs.width || (n2 = r2 + i2.xcrosshairsWidth / 2), this.moveXAxisTooltip(n2); + } + } }, { key: "moveYCrosshairs", value: function(t3) { + var e2 = this.ttCtx; + null !== e2.ycrosshairs && m.setAttrs(e2.ycrosshairs, { y1: t3, y2: t3 }), null !== e2.ycrosshairsHidden && m.setAttrs(e2.ycrosshairsHidden, { y1: t3, y2: t3 }); + } }, { key: "moveXAxisTooltip", value: function(t3) { + var e2 = this.w, i2 = this.ttCtx; + if (null !== i2.xaxisTooltip && 0 !== i2.xcrosshairsWidth) { + i2.xaxisTooltip.classList.add("apexcharts-active"); + var a2 = i2.xaxisOffY + e2.config.xaxis.tooltip.offsetY + e2.globals.translateY + 1 + e2.config.xaxis.offsetY; + if (t3 -= i2.xaxisTooltip.getBoundingClientRect().width / 2, !isNaN(t3)) { + t3 += e2.globals.translateX; + var s2; + s2 = new m(this.ctx).getTextRects(i2.xaxisTooltipText.innerHTML), i2.xaxisTooltipText.style.minWidth = s2.width + "px", i2.xaxisTooltip.style.left = t3 + "px", i2.xaxisTooltip.style.top = a2 + "px"; + } + } + } }, { key: "moveYAxisTooltip", value: function(t3) { + var e2 = this.w, i2 = this.ttCtx; + null === i2.yaxisTTEls && (i2.yaxisTTEls = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip")); + var a2 = parseInt(i2.ycrosshairsHidden.getAttribute("y1"), 10), s2 = e2.globals.translateY + a2, r2 = i2.yaxisTTEls[t3].getBoundingClientRect().height, o2 = e2.globals.translateYAxisX[t3] - 2; + e2.config.yaxis[t3].opposite && (o2 -= 26), s2 -= r2 / 2, -1 === e2.globals.ignoreYAxisIndexes.indexOf(t3) ? (i2.yaxisTTEls[t3].classList.add("apexcharts-active"), i2.yaxisTTEls[t3].style.top = s2 + "px", i2.yaxisTTEls[t3].style.left = o2 + e2.config.yaxis[t3].tooltip.offsetX + "px") : i2.yaxisTTEls[t3].classList.remove("apexcharts-active"); + } }, { key: "moveTooltip", value: function(t3, e2) { + var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, a2 = this.w, s2 = this.ttCtx, r2 = s2.getElTooltip(), o2 = s2.tooltipRect, n2 = null !== i2 ? parseFloat(i2) : 1, l2 = parseFloat(t3) + n2 + 5, h2 = parseFloat(e2) + n2 / 2; + if (l2 > a2.globals.gridWidth / 2 && (l2 = l2 - o2.ttWidth - n2 - 10), l2 > a2.globals.gridWidth - o2.ttWidth - 10 && (l2 = a2.globals.gridWidth - o2.ttWidth), l2 < -20 && (l2 = -20), a2.config.tooltip.followCursor) { + var c2 = s2.getElGrid().getBoundingClientRect(); + (l2 = s2.e.clientX - c2.left) > a2.globals.gridWidth / 2 && (l2 -= s2.tooltipRect.ttWidth), (h2 = s2.e.clientY + a2.globals.translateY - c2.top) > a2.globals.gridHeight / 2 && (h2 -= s2.tooltipRect.ttHeight); + } else + a2.globals.isBarHorizontal || o2.ttHeight / 2 + h2 > a2.globals.gridHeight && (h2 = a2.globals.gridHeight - o2.ttHeight + a2.globals.translateY); + isNaN(l2) || (l2 += a2.globals.translateX, r2.style.left = l2 + "px", r2.style.top = h2 + "px"); + } }, { key: "moveMarkers", value: function(t3, e2) { + var i2 = this.w, a2 = this.ttCtx; + if (i2.globals.markers.size[t3] > 0) + for (var s2 = i2.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t3, "'] .apexcharts-marker")), r2 = 0; r2 < s2.length; r2++) + parseInt(s2[r2].getAttribute("rel"), 10) === e2 && (a2.marker.resetPointsSize(), a2.marker.enlargeCurrentPoint(e2, s2[r2])); + else + a2.marker.resetPointsSize(), this.moveDynamicPointOnHover(e2, t3); + } }, { key: "moveDynamicPointOnHover", value: function(t3, e2) { + var i2, a2, s2 = this.w, r2 = this.ttCtx, o2 = s2.globals.pointsArray, n2 = r2.tooltipUtil.getHoverMarkerSize(e2), l2 = s2.config.series[e2].type; + if (!l2 || "column" !== l2 && "candlestick" !== l2 && "boxPlot" !== l2) { + i2 = o2[e2][t3][0], a2 = o2[e2][t3][1] ? o2[e2][t3][1] : 0; + var h2 = s2.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(e2, "'] .apexcharts-series-markers circle")); + h2 && a2 < s2.globals.gridHeight && a2 > 0 && (h2.setAttribute("r", n2), h2.setAttribute("cx", i2), h2.setAttribute("cy", a2)), this.moveXCrosshairs(i2), r2.fixedTooltip || this.moveTooltip(i2, a2, n2); + } + } }, { key: "moveDynamicPointsOnHover", value: function(t3) { + var e2, i2 = this.ttCtx, a2 = i2.w, s2 = 0, r2 = 0, o2 = a2.globals.pointsArray; + e2 = new N(this.ctx).getActiveConfigSeriesIndex("asc", ["line", "area", "scatter", "bubble"]); + var n2 = i2.tooltipUtil.getHoverMarkerSize(e2); + o2[e2] && (s2 = o2[e2][t3][0], r2 = o2[e2][t3][1]); + var l2 = i2.tooltipUtil.getAllMarkers(); + if (null !== l2) + for (var h2 = 0; h2 < a2.globals.series.length; h2++) { + var c2 = o2[h2]; + if (a2.globals.comboCharts && void 0 === c2 && l2.splice(h2, 0, null), c2 && c2.length) { + var d2 = o2[h2][t3][1], g2 = void 0; + if (l2[h2].setAttribute("cx", s2), "rangeArea" === a2.config.chart.type && !a2.globals.comboCharts) { + var u2 = t3 + a2.globals.series[h2].length; + g2 = o2[h2][u2][1], d2 -= Math.abs(d2 - g2) / 2; + } + null !== d2 && !isNaN(d2) && d2 < a2.globals.gridHeight + n2 && d2 + n2 > 0 ? (l2[h2] && l2[h2].setAttribute("r", n2), l2[h2] && l2[h2].setAttribute("cy", d2)) : l2[h2] && l2[h2].setAttribute("r", 0); + } + } + this.moveXCrosshairs(s2), i2.fixedTooltip || this.moveTooltip(s2, r2 || a2.globals.gridHeight, n2); + } }, { key: "moveStickyTooltipOverBars", value: function(t3, e2) { + var i2 = this.w, a2 = this.ttCtx, s2 = i2.globals.columnSeries ? i2.globals.columnSeries.length : i2.globals.series.length, r2 = s2 >= 2 && s2 % 2 == 0 ? Math.floor(s2 / 2) : Math.floor(s2 / 2) + 1; + i2.globals.isBarHorizontal && (r2 = new N(this.ctx).getActiveConfigSeriesIndex("desc") + 1); + var o2 = i2.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(r2, "'] path[j='").concat(t3, "'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(r2, "'] path[j='").concat(t3, "'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(r2, "'] path[j='").concat(t3, "'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(r2, "'] path[j='").concat(t3, "']")); + o2 || "number" != typeof e2 || (o2 = i2.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[data\\:realIndex='".concat(e2, "'] path[j='").concat(t3, "'],\n .apexcharts-candlestick-series .apexcharts-series[data\\:realIndex='").concat(e2, "'] path[j='").concat(t3, "'],\n .apexcharts-boxPlot-series .apexcharts-series[data\\:realIndex='").concat(e2, "'] path[j='").concat(t3, "'],\n .apexcharts-rangebar-series .apexcharts-series[data\\:realIndex='").concat(e2, "'] path[j='").concat(t3, "']"))); + var n2 = o2 ? parseFloat(o2.getAttribute("cx")) : 0, l2 = o2 ? parseFloat(o2.getAttribute("cy")) : 0, h2 = o2 ? parseFloat(o2.getAttribute("barWidth")) : 0, c2 = a2.getElGrid().getBoundingClientRect(), d2 = o2 && (o2.classList.contains("apexcharts-candlestick-area") || o2.classList.contains("apexcharts-boxPlot-area")); + i2.globals.isXNumeric ? (o2 && !d2 && (n2 -= s2 % 2 != 0 ? h2 / 2 : 0), o2 && d2 && i2.globals.comboCharts && (n2 -= h2 / 2)) : i2.globals.isBarHorizontal || (n2 = a2.xAxisTicksPositions[t3 - 1] + a2.dataPointsDividedWidth / 2, isNaN(n2) && (n2 = a2.xAxisTicksPositions[t3] - a2.dataPointsDividedWidth / 2)), i2.globals.isBarHorizontal ? l2 -= a2.tooltipRect.ttHeight : i2.config.tooltip.followCursor ? l2 = a2.e.clientY - c2.top - a2.tooltipRect.ttHeight / 2 : l2 + a2.tooltipRect.ttHeight + 15 > i2.globals.gridHeight && (l2 = i2.globals.gridHeight), i2.globals.isBarHorizontal || this.moveXCrosshairs(n2), a2.fixedTooltip || this.moveTooltip(n2, l2 || i2.globals.gridHeight); + } }]), t2; + }(); + var pt = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.ttCtx = e2, this.ctx = e2.ctx, this.tooltipPosition = new ut(e2); + } + return r(t2, [{ key: "drawDynamicPoints", value: function() { + var t3 = this.w, e2 = new m(this.ctx), i2 = new H(this.ctx), a2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-series"); + a2 = u(a2), t3.config.chart.stacked && a2.sort(function(t4, e3) { + return parseFloat(t4.getAttribute("data:realIndex")) - parseFloat(e3.getAttribute("data:realIndex")); + }); + for (var s2 = 0; s2 < a2.length; s2++) { + var r2 = a2[s2].querySelector(".apexcharts-series-markers-wrap"); + if (null !== r2) { + var o2 = void 0, n2 = "apexcharts-marker w".concat((Math.random() + 1).toString(36).substring(4)); + "line" !== t3.config.chart.type && "area" !== t3.config.chart.type || t3.globals.comboCharts || t3.config.tooltip.intersect || (n2 += " no-pointer-events"); + var l2 = i2.getMarkerConfig({ cssClass: n2, seriesIndex: Number(r2.getAttribute("data:realIndex")) }); + (o2 = e2.drawMarker(0, 0, l2)).node.setAttribute("default-marker-size", 0); + var h2 = document.createElementNS(t3.globals.SVGNS, "g"); + h2.classList.add("apexcharts-series-markers"), h2.appendChild(o2.node), r2.appendChild(h2); + } + } + } }, { key: "enlargeCurrentPoint", value: function(t3, e2) { + var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null, s2 = this.w; + "bubble" !== s2.config.chart.type && this.newPointSize(t3, e2); + var r2 = e2.getAttribute("cx"), o2 = e2.getAttribute("cy"); + if (null !== i2 && null !== a2 && (r2 = i2, o2 = a2), this.tooltipPosition.moveXCrosshairs(r2), !this.fixedTooltip) { + if ("radar" === s2.config.chart.type) { + var n2 = this.ttCtx.getElGrid().getBoundingClientRect(); + r2 = this.ttCtx.e.clientX - n2.left; + } + this.tooltipPosition.moveTooltip(r2, o2, s2.config.markers.hover.size); + } + } }, { key: "enlargePoints", value: function(t3) { + for (var e2 = this.w, i2 = this, a2 = this.ttCtx, s2 = t3, r2 = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"), o2 = e2.config.markers.hover.size, n2 = 0; n2 < r2.length; n2++) { + var l2 = r2[n2].getAttribute("rel"), h2 = r2[n2].getAttribute("index"); + if (void 0 === o2 && (o2 = e2.globals.markers.size[h2] + e2.config.markers.hover.sizeOffset), s2 === parseInt(l2, 10)) { + i2.newPointSize(s2, r2[n2]); + var c2 = r2[n2].getAttribute("cx"), d2 = r2[n2].getAttribute("cy"); + i2.tooltipPosition.moveXCrosshairs(c2), a2.fixedTooltip || i2.tooltipPosition.moveTooltip(c2, d2, o2); + } else + i2.oldPointSize(r2[n2]); + } + } }, { key: "newPointSize", value: function(t3, e2) { + var i2 = this.w, a2 = i2.config.markers.hover.size, s2 = 0 === t3 ? e2.parentNode.firstChild : e2.parentNode.lastChild; + if ("0" !== s2.getAttribute("default-marker-size")) { + var r2 = parseInt(s2.getAttribute("index"), 10); + void 0 === a2 && (a2 = i2.globals.markers.size[r2] + i2.config.markers.hover.sizeOffset), a2 < 0 && (a2 = 0), s2.setAttribute("r", a2); + } + } }, { key: "oldPointSize", value: function(t3) { + var e2 = parseFloat(t3.getAttribute("default-marker-size")); + t3.setAttribute("r", e2); + } }, { key: "resetPointsSize", value: function() { + for (var t3 = this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"), e2 = 0; e2 < t3.length; e2++) { + var i2 = parseFloat(t3[e2].getAttribute("default-marker-size")); + x.isNumber(i2) && i2 >= 0 ? t3[e2].setAttribute("r", i2) : t3[e2].setAttribute("r", 0); + } + } }]), t2; + }(); + var ft = function() { + function t2(e2) { + a(this, t2), this.w = e2.w; + var i2 = this.w; + this.ttCtx = e2, this.isVerticalGroupedRangeBar = !i2.globals.isBarHorizontal && "rangeBar" === i2.config.chart.type && i2.config.plotOptions.bar.rangeBarGroupRows; + } + return r(t2, [{ key: "getAttr", value: function(t3, e2) { + return parseFloat(t3.target.getAttribute(e2)); + } }, { key: "handleHeatTreeTooltip", value: function(t3) { + var e2 = t3.e, i2 = t3.opt, a2 = t3.x, s2 = t3.y, r2 = t3.type, o2 = this.ttCtx, n2 = this.w; + if (e2.target.classList.contains("apexcharts-".concat(r2, "-rect"))) { + var l2 = this.getAttr(e2, "i"), h2 = this.getAttr(e2, "j"), c2 = this.getAttr(e2, "cx"), d2 = this.getAttr(e2, "cy"), g2 = this.getAttr(e2, "width"), u2 = this.getAttr(e2, "height"); + if (o2.tooltipLabels.drawSeriesTexts({ ttItems: i2.ttItems, i: l2, j: h2, shared: false, e: e2 }), n2.globals.capturedSeriesIndex = l2, n2.globals.capturedDataPointIndex = h2, a2 = c2 + o2.tooltipRect.ttWidth / 2 + g2, s2 = d2 + o2.tooltipRect.ttHeight / 2 - u2 / 2, o2.tooltipPosition.moveXCrosshairs(c2 + g2 / 2), a2 > n2.globals.gridWidth / 2 && (a2 = c2 - o2.tooltipRect.ttWidth / 2 + g2), o2.w.config.tooltip.followCursor) { + var p2 = n2.globals.dom.elWrap.getBoundingClientRect(); + a2 = n2.globals.clientX - p2.left - (a2 > n2.globals.gridWidth / 2 ? o2.tooltipRect.ttWidth : 0), s2 = n2.globals.clientY - p2.top - (s2 > n2.globals.gridHeight / 2 ? o2.tooltipRect.ttHeight : 0); + } + } + return { x: a2, y: s2 }; + } }, { key: "handleMarkerTooltip", value: function(t3) { + var e2, i2, a2 = t3.e, s2 = t3.opt, r2 = t3.x, o2 = t3.y, n2 = this.w, l2 = this.ttCtx; + if (a2.target.classList.contains("apexcharts-marker")) { + var h2 = parseInt(s2.paths.getAttribute("cx"), 10), c2 = parseInt(s2.paths.getAttribute("cy"), 10), d2 = parseFloat(s2.paths.getAttribute("val")); + if (i2 = parseInt(s2.paths.getAttribute("rel"), 10), e2 = parseInt(s2.paths.parentNode.parentNode.parentNode.getAttribute("rel"), 10) - 1, l2.intersect) { + var g2 = x.findAncestor(s2.paths, "apexcharts-series"); + g2 && (e2 = parseInt(g2.getAttribute("data:realIndex"), 10)); + } + if (l2.tooltipLabels.drawSeriesTexts({ ttItems: s2.ttItems, i: e2, j: i2, shared: !l2.showOnIntersect && n2.config.tooltip.shared, e: a2 }), "mouseup" === a2.type && l2.markerClick(a2, e2, i2), n2.globals.capturedSeriesIndex = e2, n2.globals.capturedDataPointIndex = i2, r2 = h2, o2 = c2 + n2.globals.translateY - 1.4 * l2.tooltipRect.ttHeight, l2.w.config.tooltip.followCursor) { + var u2 = l2.getElGrid().getBoundingClientRect(); + o2 = l2.e.clientY + n2.globals.translateY - u2.top; + } + d2 < 0 && (o2 = c2), l2.marker.enlargeCurrentPoint(i2, s2.paths, r2, o2); + } + return { x: r2, y: o2 }; + } }, { key: "handleBarTooltip", value: function(t3) { + var e2, i2, a2 = t3.e, s2 = t3.opt, r2 = this.w, o2 = this.ttCtx, n2 = o2.getElTooltip(), l2 = 0, h2 = 0, c2 = 0, d2 = this.getBarTooltipXY({ e: a2, opt: s2 }); + e2 = d2.i; + var g2 = d2.barHeight, u2 = d2.j; + r2.globals.capturedSeriesIndex = e2, r2.globals.capturedDataPointIndex = u2, r2.globals.isBarHorizontal && o2.tooltipUtil.hasBars() || !r2.config.tooltip.shared ? (h2 = d2.x, c2 = d2.y, i2 = Array.isArray(r2.config.stroke.width) ? r2.config.stroke.width[e2] : r2.config.stroke.width, l2 = h2) : r2.globals.comboCharts || r2.config.tooltip.shared || (l2 /= 2), isNaN(c2) && (c2 = r2.globals.svgHeight - o2.tooltipRect.ttHeight); + var p2 = parseInt(s2.paths.parentNode.getAttribute("data:realIndex"), 10), f2 = r2.globals.isMultipleYAxis ? r2.config.yaxis[p2] && r2.config.yaxis[p2].reversed : r2.config.yaxis[0].reversed; + if (h2 + o2.tooltipRect.ttWidth > r2.globals.gridWidth && !f2 ? h2 -= o2.tooltipRect.ttWidth : h2 < 0 && (h2 = 0), o2.w.config.tooltip.followCursor) { + var x2 = o2.getElGrid().getBoundingClientRect(); + c2 = o2.e.clientY - x2.top; + } + null === o2.tooltip && (o2.tooltip = r2.globals.dom.baseEl.querySelector(".apexcharts-tooltip")), r2.config.tooltip.shared || (r2.globals.comboBarCount > 0 ? o2.tooltipPosition.moveXCrosshairs(l2 + i2 / 2) : o2.tooltipPosition.moveXCrosshairs(l2)), !o2.fixedTooltip && (!r2.config.tooltip.shared || r2.globals.isBarHorizontal && o2.tooltipUtil.hasBars()) && (f2 && (h2 -= o2.tooltipRect.ttWidth) < 0 && (h2 = 0), !f2 || r2.globals.isBarHorizontal && o2.tooltipUtil.hasBars() || (c2 = c2 + g2 - 2 * (r2.globals.series[e2][u2] < 0 ? g2 : 0)), c2 = c2 + r2.globals.translateY - o2.tooltipRect.ttHeight / 2, n2.style.left = h2 + r2.globals.translateX + "px", n2.style.top = c2 + "px"); + } }, { key: "getBarTooltipXY", value: function(t3) { + var e2 = this, i2 = t3.e, a2 = t3.opt, s2 = this.w, r2 = null, o2 = this.ttCtx, n2 = 0, l2 = 0, h2 = 0, c2 = 0, d2 = 0, g2 = i2.target.classList; + if (g2.contains("apexcharts-bar-area") || g2.contains("apexcharts-candlestick-area") || g2.contains("apexcharts-boxPlot-area") || g2.contains("apexcharts-rangebar-area")) { + var u2 = i2.target, p2 = u2.getBoundingClientRect(), f2 = a2.elGrid.getBoundingClientRect(), x2 = p2.height; + d2 = p2.height; + var b2 = p2.width, v2 = parseInt(u2.getAttribute("cx"), 10), m2 = parseInt(u2.getAttribute("cy"), 10); + c2 = parseFloat(u2.getAttribute("barWidth")); + var y2 = "touchmove" === i2.type ? i2.touches[0].clientX : i2.clientX; + r2 = parseInt(u2.getAttribute("j"), 10), n2 = parseInt(u2.parentNode.getAttribute("rel"), 10) - 1; + var w2 = u2.getAttribute("data-range-y1"), k2 = u2.getAttribute("data-range-y2"); + s2.globals.comboCharts && (n2 = parseInt(u2.parentNode.getAttribute("data:realIndex"), 10)); + var A2 = function(t4) { + return s2.globals.isXNumeric ? v2 - b2 / 2 : e2.isVerticalGroupedRangeBar ? v2 + b2 / 2 : v2 - o2.dataPointsDividedWidth + b2 / 2; + }, S2 = function() { + return m2 - o2.dataPointsDividedHeight + x2 / 2 - o2.tooltipRect.ttHeight / 2; + }; + o2.tooltipLabels.drawSeriesTexts({ ttItems: a2.ttItems, i: n2, j: r2, y1: w2 ? parseInt(w2, 10) : null, y2: k2 ? parseInt(k2, 10) : null, shared: !o2.showOnIntersect && s2.config.tooltip.shared, e: i2 }), s2.config.tooltip.followCursor ? s2.globals.isBarHorizontal ? (l2 = y2 - f2.left + 15, h2 = S2()) : (l2 = A2(), h2 = i2.clientY - f2.top - o2.tooltipRect.ttHeight / 2 - 15) : s2.globals.isBarHorizontal ? ((l2 = v2) < o2.xyRatios.baseLineInvertedY && (l2 = v2 - o2.tooltipRect.ttWidth), h2 = S2()) : (l2 = A2(), h2 = m2); + } + return { x: l2, y: h2, barHeight: d2, barWidth: c2, i: n2, j: r2 }; + } }]), t2; + }(); + var xt = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.ttCtx = e2; + } + return r(t2, [{ key: "drawXaxisTooltip", value: function() { + var t3 = this.w, e2 = this.ttCtx, i2 = "bottom" === t3.config.xaxis.position; + e2.xaxisOffY = i2 ? t3.globals.gridHeight + 1 : -t3.globals.xAxisHeight - t3.config.xaxis.axisTicks.height + 3; + var a2 = i2 ? "apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom" : "apexcharts-xaxistooltip apexcharts-xaxistooltip-top", s2 = t3.globals.dom.elWrap; + e2.isXAxisTooltipEnabled && (null === t3.globals.dom.baseEl.querySelector(".apexcharts-xaxistooltip") && (e2.xaxisTooltip = document.createElement("div"), e2.xaxisTooltip.setAttribute("class", a2 + " apexcharts-theme-" + t3.config.tooltip.theme), s2.appendChild(e2.xaxisTooltip), e2.xaxisTooltipText = document.createElement("div"), e2.xaxisTooltipText.classList.add("apexcharts-xaxistooltip-text"), e2.xaxisTooltipText.style.fontFamily = t3.config.xaxis.tooltip.style.fontFamily || t3.config.chart.fontFamily, e2.xaxisTooltipText.style.fontSize = t3.config.xaxis.tooltip.style.fontSize, e2.xaxisTooltip.appendChild(e2.xaxisTooltipText))); + } }, { key: "drawYaxisTooltip", value: function() { + for (var t3 = this.w, e2 = this.ttCtx, i2 = function(i3) { + var a3 = t3.config.yaxis[i3].opposite || t3.config.yaxis[i3].crosshairs.opposite; + e2.yaxisOffX = a3 ? t3.globals.gridWidth + 1 : 1; + var s2 = "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i3, a3 ? " apexcharts-yaxistooltip-right" : " apexcharts-yaxistooltip-left"); + t3.globals.yAxisSameScaleIndices.map(function(e3, a4) { + e3.map(function(e4, a5) { + a5 === i3 && (s2 += t3.config.yaxis[a5].show ? " " : " apexcharts-yaxistooltip-hidden"); + }); + }); + var r2 = t3.globals.dom.elWrap; + null === t3.globals.dom.baseEl.querySelector(".apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i3)) && (e2.yaxisTooltip = document.createElement("div"), e2.yaxisTooltip.setAttribute("class", s2 + " apexcharts-theme-" + t3.config.tooltip.theme), r2.appendChild(e2.yaxisTooltip), 0 === i3 && (e2.yaxisTooltipText = []), e2.yaxisTooltipText[i3] = document.createElement("div"), e2.yaxisTooltipText[i3].classList.add("apexcharts-yaxistooltip-text"), e2.yaxisTooltip.appendChild(e2.yaxisTooltipText[i3])); + }, a2 = 0; a2 < t3.config.yaxis.length; a2++) + i2(a2); + } }, { key: "setXCrosshairWidth", value: function() { + var t3 = this.w, e2 = this.ttCtx, i2 = e2.getElXCrosshairs(); + if (e2.xcrosshairsWidth = parseInt(t3.config.xaxis.crosshairs.width, 10), t3.globals.comboCharts) { + var a2 = t3.globals.dom.baseEl.querySelector(".apexcharts-bar-area"); + if (null !== a2 && "barWidth" === t3.config.xaxis.crosshairs.width) { + var s2 = parseFloat(a2.getAttribute("barWidth")); + e2.xcrosshairsWidth = s2; + } else if ("tickWidth" === t3.config.xaxis.crosshairs.width) { + var r2 = t3.globals.labels.length; + e2.xcrosshairsWidth = t3.globals.gridWidth / r2; + } + } else if ("tickWidth" === t3.config.xaxis.crosshairs.width) { + var o2 = t3.globals.labels.length; + e2.xcrosshairsWidth = t3.globals.gridWidth / o2; + } else if ("barWidth" === t3.config.xaxis.crosshairs.width) { + var n2 = t3.globals.dom.baseEl.querySelector(".apexcharts-bar-area"); + if (null !== n2) { + var l2 = parseFloat(n2.getAttribute("barWidth")); + e2.xcrosshairsWidth = l2; + } else + e2.xcrosshairsWidth = 1; + } + t3.globals.isBarHorizontal && (e2.xcrosshairsWidth = 0), null !== i2 && e2.xcrosshairsWidth > 0 && i2.setAttribute("width", e2.xcrosshairsWidth); + } }, { key: "handleYCrosshair", value: function() { + var t3 = this.w, e2 = this.ttCtx; + e2.ycrosshairs = t3.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"), e2.ycrosshairsHidden = t3.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden"); + } }, { key: "drawYaxisTooltipText", value: function(t3, e2, i2) { + var a2 = this.ttCtx, s2 = this.w, r2 = s2.globals.yLabelFormatters[t3]; + if (a2.yaxisTooltips[t3]) { + var o2 = a2.getElGrid().getBoundingClientRect(), n2 = (e2 - o2.top) * i2.yRatio[t3], l2 = s2.globals.maxYArr[t3] - s2.globals.minYArr[t3], h2 = s2.globals.minYArr[t3] + (l2 - n2); + a2.tooltipPosition.moveYCrosshairs(e2 - o2.top), a2.yaxisTooltipText[t3].innerHTML = r2(h2), a2.tooltipPosition.moveYAxisTooltip(t3); + } + } }]), t2; + }(); + var bt = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + var i2 = this.w; + this.tConfig = i2.config.tooltip, this.tooltipUtil = new dt(this), this.tooltipLabels = new gt(this), this.tooltipPosition = new ut(this), this.marker = new pt(this), this.intersect = new ft(this), this.axesTooltip = new xt(this), this.showOnIntersect = this.tConfig.intersect, this.showTooltipTitle = this.tConfig.x.show, this.fixedTooltip = this.tConfig.fixed.enabled, this.xaxisTooltip = null, this.yaxisTTEls = null, this.isBarShared = !i2.globals.isBarHorizontal && this.tConfig.shared, this.lastHoverTime = Date.now(); + } + return r(t2, [{ key: "getElTooltip", value: function(t3) { + return t3 || (t3 = this), t3.w.globals.dom.baseEl ? t3.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip") : null; + } }, { key: "getElXCrosshairs", value: function() { + return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs"); + } }, { key: "getElGrid", value: function() { + return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid"); + } }, { key: "drawTooltip", value: function(t3) { + var e2 = this.w; + this.xyRatios = t3, this.isXAxisTooltipEnabled = e2.config.xaxis.tooltip.enabled && e2.globals.axisCharts, this.yaxisTooltips = e2.config.yaxis.map(function(t4, i3) { + return !!(t4.show && t4.tooltip.enabled && e2.globals.axisCharts); + }), this.allTooltipSeriesGroups = [], e2.globals.axisCharts || (this.showTooltipTitle = false); + var i2 = document.createElement("div"); + if (i2.classList.add("apexcharts-tooltip"), e2.config.tooltip.cssClass && i2.classList.add(e2.config.tooltip.cssClass), i2.classList.add("apexcharts-theme-".concat(this.tConfig.theme)), e2.globals.dom.elWrap.appendChild(i2), e2.globals.axisCharts) { + this.axesTooltip.drawXaxisTooltip(), this.axesTooltip.drawYaxisTooltip(), this.axesTooltip.setXCrosshairWidth(), this.axesTooltip.handleYCrosshair(); + var a2 = new V(this.ctx); + this.xAxisTicksPositions = a2.getXAxisTicksPositions(); + } + if (!e2.globals.comboCharts && !this.tConfig.intersect && "rangeBar" !== e2.config.chart.type || this.tConfig.shared || (this.showOnIntersect = true), 0 !== e2.config.markers.size && 0 !== e2.globals.markers.largestSize || this.marker.drawDynamicPoints(this), e2.globals.collapsedSeries.length !== e2.globals.series.length) { + this.dataPointsDividedHeight = e2.globals.gridHeight / e2.globals.dataPoints, this.dataPointsDividedWidth = e2.globals.gridWidth / e2.globals.dataPoints, this.showTooltipTitle && (this.tooltipTitle = document.createElement("div"), this.tooltipTitle.classList.add("apexcharts-tooltip-title"), this.tooltipTitle.style.fontFamily = this.tConfig.style.fontFamily || e2.config.chart.fontFamily, this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize, i2.appendChild(this.tooltipTitle)); + var s2 = e2.globals.series.length; + (e2.globals.xyCharts || e2.globals.comboCharts) && this.tConfig.shared && (s2 = this.showOnIntersect ? 1 : e2.globals.series.length), this.legendLabels = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"), this.ttItems = this.createTTElements(s2), this.addSVGEvents(); + } + } }, { key: "createTTElements", value: function(t3) { + for (var e2 = this, i2 = this.w, a2 = [], s2 = this.getElTooltip(), r2 = function(r3) { + var o3 = document.createElement("div"); + o3.classList.add("apexcharts-tooltip-series-group"), o3.style.order = i2.config.tooltip.inverseOrder ? t3 - r3 : r3 + 1, e2.tConfig.shared && e2.tConfig.enabledOnSeries && Array.isArray(e2.tConfig.enabledOnSeries) && e2.tConfig.enabledOnSeries.indexOf(r3) < 0 && o3.classList.add("apexcharts-tooltip-series-group-hidden"); + var n2 = document.createElement("span"); + n2.classList.add("apexcharts-tooltip-marker"), n2.style.backgroundColor = i2.globals.colors[r3], o3.appendChild(n2); + var l2 = document.createElement("div"); + l2.classList.add("apexcharts-tooltip-text"), l2.style.fontFamily = e2.tConfig.style.fontFamily || i2.config.chart.fontFamily, l2.style.fontSize = e2.tConfig.style.fontSize, ["y", "goals", "z"].forEach(function(t4) { + var e3 = document.createElement("div"); + e3.classList.add("apexcharts-tooltip-".concat(t4, "-group")); + var i3 = document.createElement("span"); + i3.classList.add("apexcharts-tooltip-text-".concat(t4, "-label")), e3.appendChild(i3); + var a3 = document.createElement("span"); + a3.classList.add("apexcharts-tooltip-text-".concat(t4, "-value")), e3.appendChild(a3), l2.appendChild(e3); + }), o3.appendChild(l2), s2.appendChild(o3), a2.push(o3); + }, o2 = 0; o2 < t3; o2++) + r2(o2); + return a2; + } }, { key: "addSVGEvents", value: function() { + var t3 = this.w, e2 = t3.config.chart.type, i2 = this.getElTooltip(), a2 = !("bar" !== e2 && "candlestick" !== e2 && "boxPlot" !== e2 && "rangeBar" !== e2), s2 = "area" === e2 || "line" === e2 || "scatter" === e2 || "bubble" === e2 || "radar" === e2, r2 = t3.globals.dom.Paper.node, o2 = this.getElGrid(); + o2 && (this.seriesBound = o2.getBoundingClientRect()); + var n2, l2 = [], h2 = [], c2 = { hoverArea: r2, elGrid: o2, tooltipEl: i2, tooltipY: l2, tooltipX: h2, ttItems: this.ttItems }; + if (t3.globals.axisCharts && (s2 ? n2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker") : a2 ? n2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-boxPlot-area, .apexcharts-series .apexcharts-rangebar-area") : "heatmap" !== e2 && "treemap" !== e2 || (n2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-heatmap, .apexcharts-series .apexcharts-treemap")), n2 && n2.length)) + for (var d2 = 0; d2 < n2.length; d2++) + l2.push(n2[d2].getAttribute("cy")), h2.push(n2[d2].getAttribute("cx")); + if (t3.globals.xyCharts && !this.showOnIntersect || t3.globals.comboCharts && !this.showOnIntersect || a2 && this.tooltipUtil.hasBars() && this.tConfig.shared) + this.addPathsEventListeners([r2], c2); + else if (a2 && !t3.globals.comboCharts || s2 && this.showOnIntersect) + this.addDatapointEventsListeners(c2); + else if (!t3.globals.axisCharts || "heatmap" === e2 || "treemap" === e2) { + var g2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-series"); + this.addPathsEventListeners(g2, c2); + } + if (this.showOnIntersect) { + var u2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-line-series .apexcharts-marker, .apexcharts-area-series .apexcharts-marker"); + u2.length > 0 && this.addPathsEventListeners(u2, c2), this.tooltipUtil.hasBars() && !this.tConfig.shared && this.addDatapointEventsListeners(c2); + } + } }, { key: "drawFixedTooltipRect", value: function() { + var t3 = this.w, e2 = this.getElTooltip(), i2 = e2.getBoundingClientRect(), a2 = i2.width + 10, s2 = i2.height + 10, r2 = this.tConfig.fixed.offsetX, o2 = this.tConfig.fixed.offsetY, n2 = this.tConfig.fixed.position.toLowerCase(); + return n2.indexOf("right") > -1 && (r2 = r2 + t3.globals.svgWidth - a2 + 10), n2.indexOf("bottom") > -1 && (o2 = o2 + t3.globals.svgHeight - s2 - 10), e2.style.left = r2 + "px", e2.style.top = o2 + "px", { x: r2, y: o2, ttWidth: a2, ttHeight: s2 }; + } }, { key: "addDatapointEventsListeners", value: function(t3) { + var e2 = this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area"); + this.addPathsEventListeners(e2, t3); + } }, { key: "addPathsEventListeners", value: function(t3, e2) { + for (var i2 = this, a2 = function(a3) { + var s3 = { paths: t3[a3], tooltipEl: e2.tooltipEl, tooltipY: e2.tooltipY, tooltipX: e2.tooltipX, elGrid: e2.elGrid, hoverArea: e2.hoverArea, ttItems: e2.ttItems }; + ["mousemove", "mouseup", "touchmove", "mouseout", "touchend"].map(function(e3) { + return t3[a3].addEventListener(e3, i2.onSeriesHover.bind(i2, s3), { capture: false, passive: true }); + }); + }, s2 = 0; s2 < t3.length; s2++) + a2(s2); + } }, { key: "onSeriesHover", value: function(t3, e2) { + var i2 = this, a2 = Date.now() - this.lastHoverTime; + a2 >= 100 ? this.seriesHover(t3, e2) : (clearTimeout(this.seriesHoverTimeout), this.seriesHoverTimeout = setTimeout(function() { + i2.seriesHover(t3, e2); + }, 100 - a2)); + } }, { key: "seriesHover", value: function(t3, e2) { + var i2 = this; + this.lastHoverTime = Date.now(); + var a2 = [], s2 = this.w; + s2.config.chart.group && (a2 = this.ctx.getGroupedCharts()), s2.globals.axisCharts && (s2.globals.minX === -1 / 0 && s2.globals.maxX === 1 / 0 || 0 === s2.globals.dataPoints) || (a2.length ? a2.forEach(function(a3) { + var s3 = i2.getElTooltip(a3), r2 = { paths: t3.paths, tooltipEl: s3, tooltipY: t3.tooltipY, tooltipX: t3.tooltipX, elGrid: t3.elGrid, hoverArea: t3.hoverArea, ttItems: a3.w.globals.tooltip.ttItems }; + a3.w.globals.minX === i2.w.globals.minX && a3.w.globals.maxX === i2.w.globals.maxX && a3.w.globals.tooltip.seriesHoverByContext({ chartCtx: a3, ttCtx: a3.w.globals.tooltip, opt: r2, e: e2 }); + }) : this.seriesHoverByContext({ chartCtx: this.ctx, ttCtx: this.w.globals.tooltip, opt: t3, e: e2 })); + } }, { key: "seriesHoverByContext", value: function(t3) { + var e2 = t3.chartCtx, i2 = t3.ttCtx, a2 = t3.opt, s2 = t3.e, r2 = e2.w, o2 = this.getElTooltip(); + if (o2) { + if (i2.tooltipRect = { x: 0, y: 0, ttWidth: o2.getBoundingClientRect().width, ttHeight: o2.getBoundingClientRect().height }, i2.e = s2, i2.tooltipUtil.hasBars() && !r2.globals.comboCharts && !i2.isBarShared) { + if (this.tConfig.onDatasetHover.highlightDataSeries) + new N(e2).toggleSeriesOnHover(s2, s2.target.parentNode); + } + i2.fixedTooltip && i2.drawFixedTooltipRect(), r2.globals.axisCharts ? i2.axisChartsTooltips({ e: s2, opt: a2, tooltipRect: i2.tooltipRect }) : i2.nonAxisChartsTooltips({ e: s2, opt: a2, tooltipRect: i2.tooltipRect }); + } + } }, { key: "axisChartsTooltips", value: function(t3) { + var e2, i2, a2 = t3.e, s2 = t3.opt, r2 = this.w, o2 = s2.elGrid.getBoundingClientRect(), n2 = "touchmove" === a2.type ? a2.touches[0].clientX : a2.clientX, l2 = "touchmove" === a2.type ? a2.touches[0].clientY : a2.clientY; + if (this.clientY = l2, this.clientX = n2, r2.globals.capturedSeriesIndex = -1, r2.globals.capturedDataPointIndex = -1, l2 < o2.top || l2 > o2.top + o2.height) + this.handleMouseOut(s2); + else { + if (Array.isArray(this.tConfig.enabledOnSeries) && !r2.config.tooltip.shared) { + var h2 = parseInt(s2.paths.getAttribute("index"), 10); + if (this.tConfig.enabledOnSeries.indexOf(h2) < 0) + return void this.handleMouseOut(s2); + } + var c2 = this.getElTooltip(), d2 = this.getElXCrosshairs(), g2 = r2.globals.xyCharts || "bar" === r2.config.chart.type && !r2.globals.isBarHorizontal && this.tooltipUtil.hasBars() && this.tConfig.shared || r2.globals.comboCharts && this.tooltipUtil.hasBars(); + if ("mousemove" === a2.type || "touchmove" === a2.type || "mouseup" === a2.type) { + if (r2.globals.collapsedSeries.length + r2.globals.ancillaryCollapsedSeries.length === r2.globals.series.length) + return; + null !== d2 && d2.classList.add("apexcharts-active"); + var u2 = this.yaxisTooltips.filter(function(t4) { + return true === t4; + }); + if (null !== this.ycrosshairs && u2.length && this.ycrosshairs.classList.add("apexcharts-active"), g2 && !this.showOnIntersect) + this.handleStickyTooltip(a2, n2, l2, s2); + else if ("heatmap" === r2.config.chart.type || "treemap" === r2.config.chart.type) { + var p2 = this.intersect.handleHeatTreeTooltip({ e: a2, opt: s2, x: e2, y: i2, type: r2.config.chart.type }); + e2 = p2.x, i2 = p2.y, c2.style.left = e2 + "px", c2.style.top = i2 + "px"; + } else + this.tooltipUtil.hasBars() && this.intersect.handleBarTooltip({ e: a2, opt: s2 }), this.tooltipUtil.hasMarkers() && this.intersect.handleMarkerTooltip({ e: a2, opt: s2, x: e2, y: i2 }); + if (this.yaxisTooltips.length) + for (var f2 = 0; f2 < r2.config.yaxis.length; f2++) + this.axesTooltip.drawYaxisTooltipText(f2, l2, this.xyRatios); + s2.tooltipEl.classList.add("apexcharts-active"); + } else + "mouseout" !== a2.type && "touchend" !== a2.type || this.handleMouseOut(s2); + } + } }, { key: "nonAxisChartsTooltips", value: function(t3) { + var e2 = t3.e, i2 = t3.opt, a2 = t3.tooltipRect, s2 = this.w, r2 = i2.paths.getAttribute("rel"), o2 = this.getElTooltip(), n2 = s2.globals.dom.elWrap.getBoundingClientRect(); + if ("mousemove" === e2.type || "touchmove" === e2.type) { + o2.classList.add("apexcharts-active"), this.tooltipLabels.drawSeriesTexts({ ttItems: i2.ttItems, i: parseInt(r2, 10) - 1, shared: false }); + var l2 = s2.globals.clientX - n2.left - a2.ttWidth / 2, h2 = s2.globals.clientY - n2.top - a2.ttHeight - 10; + if (o2.style.left = l2 + "px", o2.style.top = h2 + "px", s2.config.legend.tooltipHoverFormatter) { + var c2 = r2 - 1, d2 = (0, s2.config.legend.tooltipHoverFormatter)(this.legendLabels[c2].getAttribute("data:default-text"), { seriesIndex: c2, dataPointIndex: c2, w: s2 }); + this.legendLabels[c2].innerHTML = d2; + } + } else + "mouseout" !== e2.type && "touchend" !== e2.type || (o2.classList.remove("apexcharts-active"), s2.config.legend.tooltipHoverFormatter && this.legendLabels.forEach(function(t4) { + var e3 = t4.getAttribute("data:default-text"); + t4.innerHTML = decodeURIComponent(e3); + })); + } }, { key: "handleStickyTooltip", value: function(t3, e2, i2, a2) { + var s2 = this.w, r2 = this.tooltipUtil.getNearestValues({ context: this, hoverArea: a2.hoverArea, elGrid: a2.elGrid, clientX: e2, clientY: i2 }), o2 = r2.j, n2 = r2.capturedSeries; + s2.globals.collapsedSeriesIndices.includes(n2) && (n2 = null); + var l2 = a2.elGrid.getBoundingClientRect(); + if (r2.hoverX < 0 || r2.hoverX > l2.width) + this.handleMouseOut(a2); + else if (null !== n2) + this.handleStickyCapturedSeries(t3, n2, a2, o2); + else if (this.tooltipUtil.isXoverlap(o2) || s2.globals.isBarHorizontal) { + var h2 = s2.globals.series.findIndex(function(t4, e3) { + return !s2.globals.collapsedSeriesIndices.includes(e3); + }); + this.create(t3, this, h2, o2, a2.ttItems); + } + } }, { key: "handleStickyCapturedSeries", value: function(t3, e2, i2, a2) { + var s2 = this.w; + if (!this.tConfig.shared && null === s2.globals.series[e2][a2]) + return void this.handleMouseOut(i2); + if (void 0 !== s2.globals.series[e2][a2]) + this.tConfig.shared && this.tooltipUtil.isXoverlap(a2) && this.tooltipUtil.isInitialSeriesSameLen() ? this.create(t3, this, e2, a2, i2.ttItems) : this.create(t3, this, e2, a2, i2.ttItems, false); + else if (this.tooltipUtil.isXoverlap(a2)) { + var r2 = s2.globals.series.findIndex(function(t4, e3) { + return !s2.globals.collapsedSeriesIndices.includes(e3); + }); + this.create(t3, this, r2, a2, i2.ttItems); + } + } }, { key: "deactivateHoverFilter", value: function() { + for (var t3 = this.w, e2 = new m(this.ctx), i2 = t3.globals.dom.Paper.select(".apexcharts-bar-area"), a2 = 0; a2 < i2.length; a2++) + e2.pathMouseLeave(i2[a2]); + } }, { key: "handleMouseOut", value: function(t3) { + var e2 = this.w, i2 = this.getElXCrosshairs(); + if (t3.tooltipEl.classList.remove("apexcharts-active"), this.deactivateHoverFilter(), "bubble" !== e2.config.chart.type && this.marker.resetPointsSize(), null !== i2 && i2.classList.remove("apexcharts-active"), null !== this.ycrosshairs && this.ycrosshairs.classList.remove("apexcharts-active"), this.isXAxisTooltipEnabled && this.xaxisTooltip.classList.remove("apexcharts-active"), this.yaxisTooltips.length) { + null === this.yaxisTTEls && (this.yaxisTTEls = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip")); + for (var a2 = 0; a2 < this.yaxisTTEls.length; a2++) + this.yaxisTTEls[a2].classList.remove("apexcharts-active"); + } + e2.config.legend.tooltipHoverFormatter && this.legendLabels.forEach(function(t4) { + var e3 = t4.getAttribute("data:default-text"); + t4.innerHTML = decodeURIComponent(e3); + }); + } }, { key: "markerClick", value: function(t3, e2, i2) { + var a2 = this.w; + "function" == typeof a2.config.chart.events.markerClick && a2.config.chart.events.markerClick(t3, this.ctx, { seriesIndex: e2, dataPointIndex: i2, w: a2 }), this.ctx.events.fireEvent("markerClick", [t3, this.ctx, { seriesIndex: e2, dataPointIndex: i2, w: a2 }]); + } }, { key: "create", value: function(t3, i2, a2, s2, r2) { + var o2, n2, l2, h2, c2, d2, g2, u2, p2, f2, x2, b2, v2, y2, w2, k2, A2 = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : null, S2 = this.w, C2 = i2; + "mouseup" === t3.type && this.markerClick(t3, a2, s2), null === A2 && (A2 = this.tConfig.shared); + var L2 = this.tooltipUtil.hasMarkers(a2), P2 = this.tooltipUtil.getElBars(); + if (S2.config.legend.tooltipHoverFormatter) { + var I2 = S2.config.legend.tooltipHoverFormatter, M2 = Array.from(this.legendLabels); + M2.forEach(function(t4) { + var e2 = t4.getAttribute("data:default-text"); + t4.innerHTML = decodeURIComponent(e2); + }); + for (var T2 = 0; T2 < M2.length; T2++) { + var z2 = M2[T2], X2 = parseInt(z2.getAttribute("i"), 10), E2 = decodeURIComponent(z2.getAttribute("data:default-text")), Y2 = I2(E2, { seriesIndex: A2 ? X2 : a2, dataPointIndex: s2, w: S2 }); + if (A2) + z2.innerHTML = S2.globals.collapsedSeriesIndices.indexOf(X2) < 0 ? Y2 : E2; + else if (z2.innerHTML = X2 === a2 ? Y2 : E2, a2 === X2) + break; + } + } + var F2 = e(e({ ttItems: r2, i: a2, j: s2 }, void 0 !== (null === (o2 = S2.globals.seriesRange) || void 0 === o2 || null === (n2 = o2[a2]) || void 0 === n2 || null === (l2 = n2[s2]) || void 0 === l2 || null === (h2 = l2.y[0]) || void 0 === h2 ? void 0 : h2.y1) && { y1: null === (c2 = S2.globals.seriesRange) || void 0 === c2 || null === (d2 = c2[a2]) || void 0 === d2 || null === (g2 = d2[s2]) || void 0 === g2 || null === (u2 = g2.y[0]) || void 0 === u2 ? void 0 : u2.y1 }), void 0 !== (null === (p2 = S2.globals.seriesRange) || void 0 === p2 || null === (f2 = p2[a2]) || void 0 === f2 || null === (x2 = f2[s2]) || void 0 === x2 || null === (b2 = x2.y[0]) || void 0 === b2 ? void 0 : b2.y2) && { y2: null === (v2 = S2.globals.seriesRange) || void 0 === v2 || null === (y2 = v2[a2]) || void 0 === y2 || null === (w2 = y2[s2]) || void 0 === w2 || null === (k2 = w2.y[0]) || void 0 === k2 ? void 0 : k2.y2 }); + if (A2) { + if (C2.tooltipLabels.drawSeriesTexts(e(e({}, F2), {}, { shared: !this.showOnIntersect && this.tConfig.shared })), L2) + S2.globals.markers.largestSize > 0 ? C2.marker.enlargePoints(s2) : C2.tooltipPosition.moveDynamicPointsOnHover(s2); + else if (this.tooltipUtil.hasBars() && (this.barSeriesHeight = this.tooltipUtil.getBarsHeight(P2), this.barSeriesHeight > 0)) { + var R2 = new m(this.ctx), H2 = S2.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(s2, "']")); + this.deactivateHoverFilter(), this.tooltipPosition.moveStickyTooltipOverBars(s2, a2); + for (var D2 = 0; D2 < H2.length; D2++) + R2.pathMouseEnter(H2[D2]); + } + } else + C2.tooltipLabels.drawSeriesTexts(e({ shared: false }, F2)), this.tooltipUtil.hasBars() && C2.tooltipPosition.moveStickyTooltipOverBars(s2, a2), L2 && C2.tooltipPosition.moveMarkers(a2, s2); + } }]), t2; + }(); + var vt = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.barCtx = e2, this.totalFormatter = this.w.config.plotOptions.bar.dataLabels.total.formatter, this.totalFormatter || (this.totalFormatter = this.w.config.dataLabels.formatter); + } + return r(t2, [{ key: "handleBarDataLabels", value: function(t3) { + var e2 = t3.x, i2 = t3.y, a2 = t3.y1, s2 = t3.y2, r2 = t3.i, o2 = t3.j, n2 = t3.realIndex, l2 = t3.groupIndex, h2 = t3.series, c2 = t3.barHeight, d2 = t3.barWidth, g2 = t3.barXPosition, u2 = t3.barYPosition, p2 = t3.visibleSeries, f2 = t3.renderedPath, x2 = this.w, b2 = new m(this.barCtx.ctx), v2 = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[n2] : this.barCtx.strokeWidth, y2 = e2 + parseFloat(d2 * p2), w2 = i2 + parseFloat(c2 * p2); + x2.globals.isXNumeric && !x2.globals.isBarHorizontal && (y2 = e2 + parseFloat(d2 * (p2 + 1)), w2 = i2 + parseFloat(c2 * (p2 + 1)) - v2); + var k2, A2 = null, S2 = e2, C2 = i2, L2 = {}, P2 = x2.config.dataLabels, I2 = this.barCtx.barOptions.dataLabels, M2 = this.barCtx.barOptions.dataLabels.total; + void 0 !== u2 && this.barCtx.isRangeBar && (w2 = u2, C2 = u2), void 0 !== g2 && this.barCtx.isVerticalGroupedRangeBar && (y2 = g2, S2 = g2); + var T2 = P2.offsetX, z2 = P2.offsetY, X2 = { width: 0, height: 0 }; + if (x2.config.dataLabels.enabled) { + var E2 = this.barCtx.series[r2][o2]; + X2 = b2.getTextRects(x2.globals.yLabelFormatters[0](E2), parseFloat(P2.style.fontSize)); + } + var Y2 = { x: e2, y: i2, i: r2, j: o2, realIndex: n2, groupIndex: l2 || -1, renderedPath: f2, bcx: y2, bcy: w2, barHeight: c2, barWidth: d2, textRects: X2, strokeWidth: v2, dataLabelsX: S2, dataLabelsY: C2, dataLabelsConfig: P2, barDataLabelsConfig: I2, barTotalDataLabelsConfig: M2, offX: T2, offY: z2 }; + return L2 = this.barCtx.isHorizontal ? this.calculateBarsDataLabelsPosition(Y2) : this.calculateColumnsDataLabelsPosition(Y2), f2.attr({ cy: L2.bcy, cx: L2.bcx, j: o2, val: h2[r2][o2], barHeight: c2, barWidth: d2 }), k2 = this.drawCalculatedDataLabels({ x: L2.dataLabelsX, y: L2.dataLabelsY, val: this.barCtx.isRangeBar ? [a2, s2] : h2[r2][o2], i: n2, j: o2, barWidth: d2, barHeight: c2, textRects: X2, dataLabelsConfig: P2 }), x2.config.chart.stacked && M2.enabled && (A2 = this.drawTotalDataLabels({ x: L2.totalDataLabelsX, y: L2.totalDataLabelsY, realIndex: n2, textAnchor: L2.totalDataLabelsAnchor, val: this.getStackedTotalDataLabel({ realIndex: n2, j: o2 }), dataLabelsConfig: P2, barTotalDataLabelsConfig: M2 })), { dataLabels: k2, totalDataLabels: A2 }; + } }, { key: "getStackedTotalDataLabel", value: function(t3) { + var i2 = t3.realIndex, a2 = t3.j, s2 = this.w, r2 = this.barCtx.stackedSeriesTotals[a2]; + return this.totalFormatter && (r2 = this.totalFormatter(r2, e(e({}, s2), {}, { seriesIndex: i2, dataPointIndex: a2, w: s2 }))), r2; + } }, { key: "calculateColumnsDataLabelsPosition", value: function(t3) { + var e2, i2, a2 = this.w, s2 = t3.i, r2 = t3.j, o2 = t3.realIndex, n2 = t3.groupIndex, l2 = t3.y, h2 = t3.bcx, c2 = t3.barWidth, d2 = t3.barHeight, g2 = t3.textRects, u2 = t3.dataLabelsX, p2 = t3.dataLabelsY, f2 = t3.dataLabelsConfig, x2 = t3.barDataLabelsConfig, b2 = t3.barTotalDataLabelsConfig, v2 = t3.strokeWidth, y2 = t3.offX, w2 = t3.offY; + d2 = Math.abs(d2); + var k2 = "vertical" === a2.config.plotOptions.bar.dataLabels.orientation, A2 = this.barCtx.barHelpers.getZeroValueEncounters({ i: s2, j: r2 }).zeroEncounters; + h2 = h2 - v2 / 2 + (-1 !== n2 ? n2 * c2 : 0); + var S2 = a2.globals.gridWidth / a2.globals.dataPoints; + if (this.barCtx.isVerticalGroupedRangeBar ? u2 += c2 / 2 : (u2 = a2.globals.isXNumeric ? h2 - c2 / 2 + y2 : h2 - S2 + c2 / 2 + y2, A2 > 0 && a2.config.plotOptions.bar.hideZeroBarsWhenGrouped && (u2 -= c2 * A2)), k2) { + u2 = u2 + g2.height / 2 - v2 / 2 - 2; + } + var C2 = this.barCtx.series[s2][r2] < 0, L2 = l2; + switch (this.barCtx.isReversed && (L2 = l2 - d2 + (C2 ? 2 * d2 : 0), l2 -= d2), x2.position) { + case "center": + p2 = k2 ? C2 ? L2 - d2 / 2 + w2 : L2 + d2 / 2 - w2 : C2 ? L2 - d2 / 2 + g2.height / 2 + w2 : L2 + d2 / 2 + g2.height / 2 - w2; + break; + case "bottom": + p2 = k2 ? C2 ? L2 - d2 + w2 : L2 + d2 - w2 : C2 ? L2 - d2 + g2.height + v2 + w2 : L2 + d2 - g2.height / 2 + v2 - w2; + break; + case "top": + p2 = k2 ? C2 ? L2 + w2 : L2 - w2 : C2 ? L2 - g2.height / 2 - w2 : L2 + g2.height + w2; + } + if (this.barCtx.lastActiveBarSerieIndex === o2 && b2.enabled) { + var P2 = new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({ realIndex: o2, j: r2 }), f2.fontSize); + e2 = C2 ? L2 - P2.height / 2 - w2 - b2.offsetY + 18 : L2 + P2.height + w2 + b2.offsetY - 18, i2 = u2 + b2.offsetX; + } + return a2.config.chart.stacked || (p2 < 0 ? p2 = 0 + v2 : p2 + g2.height / 3 > a2.globals.gridHeight && (p2 = a2.globals.gridHeight - v2)), { bcx: h2, bcy: l2, dataLabelsX: u2, dataLabelsY: p2, totalDataLabelsX: i2, totalDataLabelsY: e2, totalDataLabelsAnchor: "middle" }; + } }, { key: "calculateBarsDataLabelsPosition", value: function(t3) { + var e2 = this.w, i2 = t3.x, a2 = t3.i, s2 = t3.j, r2 = t3.realIndex, o2 = t3.groupIndex, n2 = t3.bcy, l2 = t3.barHeight, h2 = t3.barWidth, c2 = t3.textRects, d2 = t3.dataLabelsX, g2 = t3.strokeWidth, u2 = t3.dataLabelsConfig, p2 = t3.barDataLabelsConfig, f2 = t3.barTotalDataLabelsConfig, x2 = t3.offX, b2 = t3.offY, v2 = e2.globals.gridHeight / e2.globals.dataPoints; + h2 = Math.abs(h2); + var y2, w2, k2 = (n2 += -1 !== o2 ? o2 * l2 : 0) - (this.barCtx.isRangeBar ? 0 : v2) + l2 / 2 + c2.height / 2 + b2 - 3, A2 = "start", S2 = this.barCtx.series[a2][s2] < 0, C2 = i2; + switch (this.barCtx.isReversed && (C2 = i2 + h2 - (S2 ? 2 * h2 : 0), i2 = e2.globals.gridWidth - h2), p2.position) { + case "center": + d2 = S2 ? C2 + h2 / 2 - x2 : Math.max(c2.width / 2, C2 - h2 / 2) + x2; + break; + case "bottom": + d2 = S2 ? C2 + h2 - g2 - Math.round(c2.width / 2) - x2 : C2 - h2 + g2 + Math.round(c2.width / 2) + x2; + break; + case "top": + d2 = S2 ? C2 - g2 + Math.round(c2.width / 2) - x2 : C2 - g2 - Math.round(c2.width / 2) + x2; + } + if (this.barCtx.lastActiveBarSerieIndex === r2 && f2.enabled) { + var L2 = new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({ realIndex: r2, j: s2 }), u2.fontSize); + S2 ? (y2 = C2 - g2 + Math.round(L2.width / 2) - x2 - f2.offsetX - 15, A2 = "end") : y2 = C2 - g2 - Math.round(L2.width / 2) + x2 + f2.offsetX + 15, w2 = k2 + f2.offsetY; + } + return e2.config.chart.stacked || (d2 < 0 ? d2 = d2 + c2.width + g2 : d2 + c2.width / 2 > e2.globals.gridWidth && (d2 = e2.globals.gridWidth - c2.width - g2)), { bcx: i2, bcy: n2, dataLabelsX: d2, dataLabelsY: k2, totalDataLabelsX: y2, totalDataLabelsY: w2, totalDataLabelsAnchor: A2 }; + } }, { key: "drawCalculatedDataLabels", value: function(t3) { + var i2 = t3.x, a2 = t3.y, s2 = t3.val, r2 = t3.i, o2 = t3.j, n2 = t3.textRects, l2 = t3.barHeight, h2 = t3.barWidth, c2 = t3.dataLabelsConfig, d2 = this.w, g2 = "rotate(0)"; + "vertical" === d2.config.plotOptions.bar.dataLabels.orientation && (g2 = "rotate(-90, ".concat(i2, ", ").concat(a2, ")")); + var u2 = new O(this.barCtx.ctx), p2 = new m(this.barCtx.ctx), f2 = c2.formatter, x2 = null, b2 = d2.globals.collapsedSeriesIndices.indexOf(r2) > -1; + if (c2.enabled && !b2) { + x2 = p2.group({ class: "apexcharts-data-labels", transform: g2 }); + var v2 = ""; + void 0 !== s2 && (v2 = f2(s2, e(e({}, d2), {}, { seriesIndex: r2, dataPointIndex: o2, w: d2 }))), !s2 && d2.config.plotOptions.bar.hideZeroBarsWhenGrouped && (v2 = ""); + var y2 = d2.globals.series[r2][o2] < 0, w2 = d2.config.plotOptions.bar.dataLabels.position; + if ("vertical" === d2.config.plotOptions.bar.dataLabels.orientation && ("top" === w2 && (c2.textAnchor = y2 ? "end" : "start"), "center" === w2 && (c2.textAnchor = "middle"), "bottom" === w2 && (c2.textAnchor = y2 ? "end" : "start")), this.barCtx.isRangeBar && this.barCtx.barOptions.dataLabels.hideOverflowingLabels) + h2 < p2.getTextRects(v2, parseFloat(c2.style.fontSize)).width && (v2 = ""); + d2.config.chart.stacked && this.barCtx.barOptions.dataLabels.hideOverflowingLabels && (this.barCtx.isHorizontal ? n2.width / 1.6 > Math.abs(h2) && (v2 = "") : n2.height / 1.6 > Math.abs(l2) && (v2 = "")); + var k2 = e({}, c2); + this.barCtx.isHorizontal && s2 < 0 && ("start" === c2.textAnchor ? k2.textAnchor = "end" : "end" === c2.textAnchor && (k2.textAnchor = "start")), u2.plotDataLabelsText({ x: i2, y: a2, text: v2, i: r2, j: o2, parent: x2, dataLabelsConfig: k2, alwaysDrawDataLabel: true, offsetCorrection: true }); + } + return x2; + } }, { key: "drawTotalDataLabels", value: function(t3) { + var e2, i2 = t3.x, a2 = t3.y, s2 = t3.val, r2 = t3.realIndex, o2 = t3.textAnchor, n2 = t3.barTotalDataLabelsConfig, l2 = new m(this.barCtx.ctx); + return n2.enabled && void 0 !== i2 && void 0 !== a2 && this.barCtx.lastActiveBarSerieIndex === r2 && (e2 = l2.drawText({ x: i2, y: a2, foreColor: n2.style.color, text: s2, textAnchor: o2, fontFamily: n2.style.fontFamily, fontSize: n2.style.fontSize, fontWeight: n2.style.fontWeight })), e2; + } }]), t2; + }(); + var mt = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.barCtx = e2; + } + return r(t2, [{ key: "initVariables", value: function(t3) { + var e2 = this.w; + this.barCtx.series = t3, this.barCtx.totalItems = 0, this.barCtx.seriesLen = 0, this.barCtx.visibleI = -1, this.barCtx.visibleItems = 1; + for (var i2 = 0; i2 < t3.length; i2++) + if (t3[i2].length > 0 && (this.barCtx.seriesLen = this.barCtx.seriesLen + 1, this.barCtx.totalItems += t3[i2].length), e2.globals.isXNumeric) + for (var a2 = 0; a2 < t3[i2].length; a2++) + e2.globals.seriesX[i2][a2] > e2.globals.minX && e2.globals.seriesX[i2][a2] < e2.globals.maxX && this.barCtx.visibleItems++; + else + this.barCtx.visibleItems = e2.globals.dataPoints; + 0 === this.barCtx.seriesLen && (this.barCtx.seriesLen = 1), this.barCtx.zeroSerieses = [], e2.globals.comboCharts || this.checkZeroSeries({ series: t3 }); + } }, { key: "initialPositions", value: function() { + var t3, e2, i2, a2, s2, r2, o2, n2, l2 = this.w, h2 = l2.globals.dataPoints; + this.barCtx.isRangeBar && (h2 = l2.globals.labels.length); + var c2 = this.barCtx.seriesLen; + if (l2.config.plotOptions.bar.rangeBarGroupRows && (c2 = 1), this.barCtx.isHorizontal) + s2 = (i2 = l2.globals.gridHeight / h2) / c2, l2.globals.isXNumeric && (s2 = (i2 = l2.globals.gridHeight / this.barCtx.totalItems) / this.barCtx.seriesLen), s2 = s2 * parseInt(this.barCtx.barOptions.barHeight, 10) / 100, -1 === String(this.barCtx.barOptions.barHeight).indexOf("%") && (s2 = parseInt(this.barCtx.barOptions.barHeight, 10)), n2 = this.barCtx.baseLineInvertedY + l2.globals.padHorizontal + (this.barCtx.isReversed ? l2.globals.gridWidth : 0) - (this.barCtx.isReversed ? 2 * this.barCtx.baseLineInvertedY : 0), this.barCtx.isFunnel && (n2 = l2.globals.gridWidth / 2), e2 = (i2 - s2 * this.barCtx.seriesLen) / 2; + else { + if (a2 = l2.globals.gridWidth / this.barCtx.visibleItems, l2.config.xaxis.convertedCatToNumeric && (a2 = l2.globals.gridWidth / l2.globals.dataPoints), r2 = a2 / c2 * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100, l2.globals.isXNumeric) { + var d2 = this.barCtx.xRatio; + l2.config.xaxis.convertedCatToNumeric && (d2 = this.barCtx.initialXRatio), l2.globals.minXDiff && 0.5 !== l2.globals.minXDiff && l2.globals.minXDiff / d2 > 0 && (a2 = l2.globals.minXDiff / d2), (r2 = a2 / c2 * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100) < 1 && (r2 = 1); + } + -1 === String(this.barCtx.barOptions.columnWidth).indexOf("%") && (r2 = parseInt(this.barCtx.barOptions.columnWidth, 10)), o2 = l2.globals.gridHeight - this.barCtx.baseLineY[this.barCtx.yaxisIndex] - (this.barCtx.isReversed ? l2.globals.gridHeight : 0) + (this.barCtx.isReversed ? 2 * this.barCtx.baseLineY[this.barCtx.yaxisIndex] : 0), t3 = l2.globals.padHorizontal + (a2 - r2 * this.barCtx.seriesLen) / 2; + } + return { x: t3, y: e2, yDivision: i2, xDivision: a2, barHeight: s2, barWidth: r2, zeroH: o2, zeroW: n2 }; + } }, { key: "initializeStackedPrevVars", value: function(t3) { + var e2 = t3.w; + e2.globals.hasSeriesGroups ? e2.globals.seriesGroups.forEach(function(e3) { + t3[e3] || (t3[e3] = {}), t3[e3].prevY = [], t3[e3].prevX = [], t3[e3].prevYF = [], t3[e3].prevXF = [], t3[e3].prevYVal = [], t3[e3].prevXVal = []; + }) : (t3.prevY = [], t3.prevX = [], t3.prevYF = [], t3.prevXF = [], t3.prevYVal = [], t3.prevXVal = []); + } }, { key: "initializeStackedXYVars", value: function(t3) { + var e2 = t3.w; + e2.globals.hasSeriesGroups ? e2.globals.seriesGroups.forEach(function(e3) { + t3[e3] || (t3[e3] = {}), t3[e3].xArrj = [], t3[e3].xArrjF = [], t3[e3].xArrjVal = [], t3[e3].yArrj = [], t3[e3].yArrjF = [], t3[e3].yArrjVal = []; + }) : (t3.xArrj = [], t3.xArrjF = [], t3.xArrjVal = [], t3.yArrj = [], t3.yArrjF = [], t3.yArrjVal = []); + } }, { key: "getPathFillColor", value: function(t3, e2, i2, a2) { + var s2, r2, o2, n2, l2 = this.w, h2 = new R(this.barCtx.ctx), c2 = null, d2 = this.barCtx.barOptions.distributed ? i2 : e2; + this.barCtx.barOptions.colors.ranges.length > 0 && this.barCtx.barOptions.colors.ranges.map(function(a3) { + t3[e2][i2] >= a3.from && t3[e2][i2] <= a3.to && (c2 = a3.color); + }); + return l2.config.series[e2].data[i2] && l2.config.series[e2].data[i2].fillColor && (c2 = l2.config.series[e2].data[i2].fillColor), h2.fillPath({ seriesNumber: this.barCtx.barOptions.distributed ? d2 : a2, dataPointIndex: i2, color: c2, value: t3[e2][i2], fillConfig: null === (s2 = l2.config.series[e2].data[i2]) || void 0 === s2 ? void 0 : s2.fill, fillType: null !== (r2 = l2.config.series[e2].data[i2]) && void 0 !== r2 && null !== (o2 = r2.fill) && void 0 !== o2 && o2.type ? null === (n2 = l2.config.series[e2].data[i2]) || void 0 === n2 ? void 0 : n2.fill.type : l2.config.fill.type }); + } }, { key: "getStrokeWidth", value: function(t3, e2, i2) { + var a2 = 0, s2 = this.w; + return this.barCtx.series[t3][e2] ? this.barCtx.isNullValue = false : this.barCtx.isNullValue = true, s2.config.stroke.show && (this.barCtx.isNullValue || (a2 = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[i2] : this.barCtx.strokeWidth)), a2; + } }, { key: "shouldApplyRadius", value: function(t3) { + var e2 = this.w, i2 = false; + return e2.config.plotOptions.bar.borderRadius > 0 && (e2.config.chart.stacked && "last" === e2.config.plotOptions.bar.borderRadiusWhenStacked ? this.barCtx.lastActiveBarSerieIndex === t3 && (i2 = true) : i2 = true), i2; + } }, { key: "barBackground", value: function(t3) { + var e2 = t3.j, i2 = t3.i, a2 = t3.x1, s2 = t3.x2, r2 = t3.y1, o2 = t3.y2, n2 = t3.elSeries, l2 = this.w, h2 = new m(this.barCtx.ctx), c2 = new N(this.barCtx.ctx).getActiveConfigSeriesIndex(); + if (this.barCtx.barOptions.colors.backgroundBarColors.length > 0 && c2 === i2) { + e2 >= this.barCtx.barOptions.colors.backgroundBarColors.length && (e2 %= this.barCtx.barOptions.colors.backgroundBarColors.length); + var d2 = this.barCtx.barOptions.colors.backgroundBarColors[e2], g2 = h2.drawRect(void 0 !== a2 ? a2 : 0, void 0 !== r2 ? r2 : 0, void 0 !== s2 ? s2 : l2.globals.gridWidth, void 0 !== o2 ? o2 : l2.globals.gridHeight, this.barCtx.barOptions.colors.backgroundBarRadius, d2, this.barCtx.barOptions.colors.backgroundBarOpacity); + n2.add(g2), g2.node.classList.add("apexcharts-backgroundBar"); + } + } }, { key: "getColumnPaths", value: function(t3) { + var e2, i2 = t3.barWidth, a2 = t3.barXPosition, s2 = t3.y1, r2 = t3.y2, o2 = t3.strokeWidth, n2 = t3.seriesGroup, l2 = t3.realIndex, h2 = t3.i, c2 = t3.j, d2 = t3.w, g2 = new m(this.barCtx.ctx); + (o2 = Array.isArray(o2) ? o2[l2] : o2) || (o2 = 0); + var u2 = i2, p2 = a2; + null !== (e2 = d2.config.series[l2].data[c2]) && void 0 !== e2 && e2.columnWidthOffset && (p2 = a2 - d2.config.series[l2].data[c2].columnWidthOffset / 2, u2 = i2 + d2.config.series[l2].data[c2].columnWidthOffset); + var f2 = p2, x2 = p2 + u2; + s2 += 1e-3, r2 += 1e-3; + var b2 = g2.move(f2, s2), v2 = g2.move(f2, s2), y2 = g2.line(x2 - o2, s2); + if (d2.globals.previousPaths.length > 0 && (v2 = this.barCtx.getPreviousPath(l2, c2, false)), b2 = b2 + g2.line(f2, r2) + g2.line(x2 - o2, r2) + g2.line(x2 - o2, s2) + ("around" === d2.config.plotOptions.bar.borderRadiusApplication ? " Z" : " z"), v2 = v2 + g2.line(f2, s2) + y2 + y2 + y2 + y2 + y2 + g2.line(f2, s2) + ("around" === d2.config.plotOptions.bar.borderRadiusApplication ? " Z" : " z"), this.shouldApplyRadius(l2) && (b2 = g2.roundPathCorners(b2, d2.config.plotOptions.bar.borderRadius)), d2.config.chart.stacked) { + var w2 = this.barCtx; + d2.globals.hasSeriesGroups && n2 && (w2 = this.barCtx[n2]), w2.yArrj.push(r2), w2.yArrjF.push(Math.abs(s2 - r2)), w2.yArrjVal.push(this.barCtx.series[h2][c2]); + } + return { pathTo: b2, pathFrom: v2 }; + } }, { key: "getBarpaths", value: function(t3) { + var e2, i2 = t3.barYPosition, a2 = t3.barHeight, s2 = t3.x1, r2 = t3.x2, o2 = t3.strokeWidth, n2 = t3.seriesGroup, l2 = t3.realIndex, h2 = t3.i, c2 = t3.j, d2 = t3.w, g2 = new m(this.barCtx.ctx); + (o2 = Array.isArray(o2) ? o2[l2] : o2) || (o2 = 0); + var u2 = i2, p2 = a2; + null !== (e2 = d2.config.series[l2].data[c2]) && void 0 !== e2 && e2.barHeightOffset && (u2 = i2 - d2.config.series[l2].data[c2].barHeightOffset / 2, p2 = a2 + d2.config.series[l2].data[c2].barHeightOffset); + var f2 = u2, x2 = u2 + p2; + s2 += 1e-3, r2 += 1e-3; + var b2 = g2.move(s2, f2), v2 = g2.move(s2, f2); + d2.globals.previousPaths.length > 0 && (v2 = this.barCtx.getPreviousPath(l2, c2, false)); + var y2 = g2.line(s2, x2 - o2); + if (b2 = b2 + g2.line(r2, f2) + g2.line(r2, x2 - o2) + y2 + ("around" === d2.config.plotOptions.bar.borderRadiusApplication ? " Z" : " z"), v2 = v2 + g2.line(s2, f2) + y2 + y2 + y2 + y2 + y2 + g2.line(s2, f2) + ("around" === d2.config.plotOptions.bar.borderRadiusApplication ? " Z" : " z"), this.shouldApplyRadius(l2) && (b2 = g2.roundPathCorners(b2, d2.config.plotOptions.bar.borderRadius)), d2.config.chart.stacked) { + var w2 = this.barCtx; + d2.globals.hasSeriesGroups && n2 && (w2 = this.barCtx[n2]), w2.xArrj.push(r2), w2.xArrjF.push(Math.abs(s2 - r2)), w2.xArrjVal.push(this.barCtx.series[h2][c2]); + } + return { pathTo: b2, pathFrom: v2 }; + } }, { key: "checkZeroSeries", value: function(t3) { + for (var e2 = t3.series, i2 = this.w, a2 = 0; a2 < e2.length; a2++) { + for (var s2 = 0, r2 = 0; r2 < e2[i2.globals.maxValsInArrayIndex].length; r2++) + s2 += e2[a2][r2]; + 0 === s2 && this.barCtx.zeroSerieses.push(a2); + } + } }, { key: "getXForValue", value: function(t3, e2) { + var i2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2] ? e2 : null; + return null != t3 && (i2 = e2 + t3 / this.barCtx.invertedYRatio - 2 * (this.barCtx.isReversed ? t3 / this.barCtx.invertedYRatio : 0)), i2; + } }, { key: "getYForValue", value: function(t3, e2) { + var i2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2] ? e2 : null; + return null != t3 && (i2 = e2 - t3 / this.barCtx.yRatio[this.barCtx.yaxisIndex] + 2 * (this.barCtx.isReversed ? t3 / this.barCtx.yRatio[this.barCtx.yaxisIndex] : 0)), i2; + } }, { key: "getGoalValues", value: function(t3, i2, a2, s2, r2) { + var n2 = this, l2 = this.w, h2 = [], c2 = function(e2, s3) { + var r3; + h2.push((o(r3 = {}, t3, "x" === t3 ? n2.getXForValue(e2, i2, false) : n2.getYForValue(e2, a2, false)), o(r3, "attrs", s3), r3)); + }; + if (l2.globals.seriesGoals[s2] && l2.globals.seriesGoals[s2][r2] && Array.isArray(l2.globals.seriesGoals[s2][r2]) && l2.globals.seriesGoals[s2][r2].forEach(function(t4) { + c2(t4.value, t4); + }), this.barCtx.barOptions.isDumbbell && l2.globals.seriesRange.length) { + var d2 = this.barCtx.barOptions.dumbbellColors ? this.barCtx.barOptions.dumbbellColors : l2.globals.colors, g2 = { strokeHeight: "x" === t3 ? 0 : l2.globals.markers.size[s2], strokeWidth: "x" === t3 ? l2.globals.markers.size[s2] : 0, strokeDashArray: 0, strokeLineCap: "round", strokeColor: Array.isArray(d2[s2]) ? d2[s2][0] : d2[s2] }; + c2(l2.globals.seriesRangeStart[s2][r2], g2), c2(l2.globals.seriesRangeEnd[s2][r2], e(e({}, g2), {}, { strokeColor: Array.isArray(d2[s2]) ? d2[s2][1] : d2[s2] })); + } + return h2; + } }, { key: "drawGoalLine", value: function(t3) { + var e2 = t3.barXPosition, i2 = t3.barYPosition, a2 = t3.goalX, s2 = t3.goalY, r2 = t3.barWidth, o2 = t3.barHeight, n2 = new m(this.barCtx.ctx), l2 = n2.group({ className: "apexcharts-bar-goals-groups" }); + l2.node.classList.add("apexcharts-element-hidden"), this.barCtx.w.globals.delayedElements.push({ el: l2.node }), l2.attr("clip-path", "url(#gridRectMarkerMask".concat(this.barCtx.w.globals.cuid, ")")); + var h2 = null; + return this.barCtx.isHorizontal ? Array.isArray(a2) && a2.forEach(function(t4) { + var e3 = void 0 !== t4.attrs.strokeHeight ? t4.attrs.strokeHeight : o2 / 2, a3 = i2 + e3 + o2 / 2; + h2 = n2.drawLine(t4.x, a3 - 2 * e3, t4.x, a3, t4.attrs.strokeColor ? t4.attrs.strokeColor : void 0, t4.attrs.strokeDashArray, t4.attrs.strokeWidth ? t4.attrs.strokeWidth : 2, t4.attrs.strokeLineCap), l2.add(h2); + }) : Array.isArray(s2) && s2.forEach(function(t4) { + var i3 = void 0 !== t4.attrs.strokeWidth ? t4.attrs.strokeWidth : r2 / 2, a3 = e2 + i3 + r2 / 2; + h2 = n2.drawLine(a3 - 2 * i3, t4.y, a3, t4.y, t4.attrs.strokeColor ? t4.attrs.strokeColor : void 0, t4.attrs.strokeDashArray, t4.attrs.strokeHeight ? t4.attrs.strokeHeight : 2, t4.attrs.strokeLineCap), l2.add(h2); + }), l2; + } }, { key: "drawBarShadow", value: function(t3) { + var e2 = t3.prevPaths, i2 = t3.currPaths, a2 = t3.color, s2 = this.w, r2 = e2.x, o2 = e2.x1, n2 = e2.barYPosition, l2 = i2.x, h2 = i2.x1, c2 = i2.barYPosition, d2 = n2 + i2.barHeight, g2 = new m(this.barCtx.ctx), u2 = new x(), p2 = g2.move(o2, d2) + g2.line(r2, d2) + g2.line(l2, c2) + g2.line(h2, c2) + g2.line(o2, d2) + ("around" === s2.config.plotOptions.bar.borderRadiusApplication ? " Z" : " z"); + return g2.drawPath({ d: p2, fill: u2.shadeColor(0.5, x.rgb2hex(a2)), stroke: "none", strokeWidth: 0, fillOpacity: 1, classes: "apexcharts-bar-shadows" }); + } }, { key: "getZeroValueEncounters", value: function(t3) { + var e2 = t3.i, i2 = t3.j, a2 = this.w, s2 = 0, r2 = 0; + return a2.globals.seriesPercent.forEach(function(t4, a3) { + t4[i2] && s2++, a3 < e2 && 0 === t4[i2] && r2++; + }), { nonZeroColumns: s2, zeroEncounters: r2 }; + } }]), t2; + }(); + var yt = function() { + function t2(e2, i2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + var s2 = this.w; + this.barOptions = s2.config.plotOptions.bar, this.isHorizontal = this.barOptions.horizontal, this.strokeWidth = s2.config.stroke.width, this.isNullValue = false, this.isRangeBar = s2.globals.seriesRange.length && this.isHorizontal, this.isVerticalGroupedRangeBar = !s2.globals.isBarHorizontal && s2.globals.seriesRange.length && s2.config.plotOptions.bar.rangeBarGroupRows, this.isFunnel = this.barOptions.isFunnel, this.xyRatios = i2, null !== this.xyRatios && (this.xRatio = i2.xRatio, this.initialXRatio = i2.initialXRatio, this.yRatio = i2.yRatio, this.invertedXRatio = i2.invertedXRatio, this.invertedYRatio = i2.invertedYRatio, this.baseLineY = i2.baseLineY, this.baseLineInvertedY = i2.baseLineInvertedY), this.yaxisIndex = 0, this.seriesLen = 0, this.pathArr = []; + var r2 = new N(this.ctx); + this.lastActiveBarSerieIndex = r2.getActiveConfigSeriesIndex("desc", ["bar", "column"]); + var o2 = r2.getBarSeriesIndices(), n2 = new y(this.ctx); + this.stackedSeriesTotals = n2.getStackedSeriesTotals(this.w.config.series.map(function(t3, e3) { + return -1 === o2.indexOf(e3) ? e3 : -1; + }).filter(function(t3) { + return -1 !== t3; + })), this.barHelpers = new mt(this); + } + return r(t2, [{ key: "draw", value: function(t3, i2) { + var a2 = this.w, s2 = new m(this.ctx), r2 = new y(this.ctx, a2); + t3 = r2.getLogSeries(t3), this.series = t3, this.yRatio = r2.getLogYRatios(this.yRatio), this.barHelpers.initVariables(t3); + var o2 = s2.group({ class: "apexcharts-bar-series apexcharts-plot-series" }); + a2.config.dataLabels.enabled && this.totalItems > this.barOptions.dataLabels.maxItems && console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts"); + for (var n2 = 0, l2 = 0; n2 < t3.length; n2++, l2++) { + var h2, c2, d2, g2, u2 = void 0, p2 = void 0, f2 = [], b2 = [], v2 = a2.globals.comboCharts ? i2[n2] : n2, w2 = s2.group({ class: "apexcharts-series", rel: n2 + 1, seriesName: x.escapeString(a2.globals.seriesNames[v2]), "data:realIndex": v2 }); + this.ctx.series.addCollapsedClassToSeries(w2, v2), t3[n2].length > 0 && (this.visibleI = this.visibleI + 1); + var k2 = 0, A2 = 0; + this.yRatio.length > 1 && (this.yaxisIndex = v2), this.isReversed = a2.config.yaxis[this.yaxisIndex] && a2.config.yaxis[this.yaxisIndex].reversed; + var S2 = this.barHelpers.initialPositions(); + p2 = S2.y, k2 = S2.barHeight, c2 = S2.yDivision, g2 = S2.zeroW, u2 = S2.x, A2 = S2.barWidth, h2 = S2.xDivision, d2 = S2.zeroH, this.horizontal || b2.push(u2 + A2 / 2); + var C2 = s2.group({ class: "apexcharts-datalabels", "data:realIndex": v2 }); + a2.globals.delayedElements.push({ el: C2.node }), C2.node.classList.add("apexcharts-element-hidden"); + var L2 = s2.group({ class: "apexcharts-bar-goals-markers" }), P2 = s2.group({ class: "apexcharts-bar-shadows" }); + a2.globals.delayedElements.push({ el: P2.node }), P2.node.classList.add("apexcharts-element-hidden"); + for (var I2 = 0; I2 < a2.globals.dataPoints; I2++) { + var M2 = this.barHelpers.getStrokeWidth(n2, I2, v2), T2 = null, z2 = { indexes: { i: n2, j: I2, realIndex: v2, bc: l2 }, x: u2, y: p2, strokeWidth: M2, elSeries: w2 }; + this.isHorizontal ? (T2 = this.drawBarPaths(e(e({}, z2), {}, { barHeight: k2, zeroW: g2, yDivision: c2 })), A2 = this.series[n2][I2] / this.invertedYRatio) : (T2 = this.drawColumnPaths(e(e({}, z2), {}, { xDivision: h2, barWidth: A2, zeroH: d2 })), k2 = this.series[n2][I2] / this.yRatio[this.yaxisIndex]); + var X2 = this.barHelpers.getPathFillColor(t3, n2, I2, v2); + if (this.isFunnel && this.barOptions.isFunnel3d && this.pathArr.length && I2 > 0) { + var E2 = this.barHelpers.drawBarShadow({ color: "string" == typeof X2 && -1 === (null == X2 ? void 0 : X2.indexOf("url")) ? X2 : x.hexToRgba(a2.globals.colors[n2]), prevPaths: this.pathArr[this.pathArr.length - 1], currPaths: T2 }); + E2 && P2.add(E2); + } + this.pathArr.push(T2); + var Y2 = this.barHelpers.drawGoalLine({ barXPosition: T2.barXPosition, barYPosition: T2.barYPosition, goalX: T2.goalX, goalY: T2.goalY, barHeight: k2, barWidth: A2 }); + Y2 && L2.add(Y2), p2 = T2.y, u2 = T2.x, I2 > 0 && b2.push(u2 + A2 / 2), f2.push(p2), this.renderSeries({ realIndex: v2, pathFill: X2, j: I2, i: n2, pathFrom: T2.pathFrom, pathTo: T2.pathTo, strokeWidth: M2, elSeries: w2, x: u2, y: p2, series: t3, barHeight: T2.barHeight ? T2.barHeight : k2, barWidth: T2.barWidth ? T2.barWidth : A2, elDataLabelsWrap: C2, elGoalsMarkers: L2, elBarShadows: P2, visibleSeries: this.visibleI, type: "bar" }); + } + a2.globals.seriesXvalues[v2] = b2, a2.globals.seriesYvalues[v2] = f2, o2.add(w2); + } + return o2; + } }, { key: "renderSeries", value: function(t3) { + var e2 = t3.realIndex, i2 = t3.pathFill, a2 = t3.lineFill, s2 = t3.j, r2 = t3.i, o2 = t3.groupIndex, n2 = t3.pathFrom, l2 = t3.pathTo, h2 = t3.strokeWidth, c2 = t3.elSeries, d2 = t3.x, g2 = t3.y, u2 = t3.y1, p2 = t3.y2, f2 = t3.series, x2 = t3.barHeight, b2 = t3.barWidth, y2 = t3.barXPosition, w2 = t3.barYPosition, k2 = t3.elDataLabelsWrap, A2 = t3.elGoalsMarkers, S2 = t3.elBarShadows, C2 = t3.visibleSeries, L2 = t3.type, P2 = this.w, I2 = new m(this.ctx); + a2 || (a2 = this.barOptions.distributed ? P2.globals.stroke.colors[s2] : P2.globals.stroke.colors[e2]), P2.config.series[r2].data[s2] && P2.config.series[r2].data[s2].strokeColor && (a2 = P2.config.series[r2].data[s2].strokeColor), this.isNullValue && (i2 = "none"); + var M2 = s2 / P2.config.chart.animations.animateGradually.delay * (P2.config.chart.animations.speed / P2.globals.dataPoints) / 2.4, T2 = I2.renderPaths({ i: r2, j: s2, realIndex: e2, pathFrom: n2, pathTo: l2, stroke: a2, strokeWidth: h2, strokeLineCap: P2.config.stroke.lineCap, fill: i2, animationDelay: M2, initialSpeed: P2.config.chart.animations.speed, dataChangeSpeed: P2.config.chart.animations.dynamicAnimation.speed, className: "apexcharts-".concat(L2, "-area") }); + T2.attr("clip-path", "url(#gridRectMask".concat(P2.globals.cuid, ")")); + var z2 = P2.config.forecastDataPoints; + z2.count > 0 && s2 >= P2.globals.dataPoints - z2.count && (T2.node.setAttribute("stroke-dasharray", z2.dashArray), T2.node.setAttribute("stroke-width", z2.strokeWidth), T2.node.setAttribute("fill-opacity", z2.fillOpacity)), void 0 !== u2 && void 0 !== p2 && (T2.attr("data-range-y1", u2), T2.attr("data-range-y2", p2)), new v(this.ctx).setSelectionFilter(T2, e2, s2), c2.add(T2); + var X2 = new vt(this).handleBarDataLabels({ x: d2, y: g2, y1: u2, y2: p2, i: r2, j: s2, series: f2, realIndex: e2, groupIndex: o2, barHeight: x2, barWidth: b2, barXPosition: y2, barYPosition: w2, renderedPath: T2, visibleSeries: C2 }); + return null !== X2.dataLabels && k2.add(X2.dataLabels), X2.totalDataLabels && k2.add(X2.totalDataLabels), c2.add(k2), A2 && c2.add(A2), S2 && c2.add(S2), c2; + } }, { key: "drawBarPaths", value: function(t3) { + var e2, i2 = t3.indexes, a2 = t3.barHeight, s2 = t3.strokeWidth, r2 = t3.zeroW, o2 = t3.x, n2 = t3.y, l2 = t3.yDivision, h2 = t3.elSeries, c2 = this.w, d2 = i2.i, g2 = i2.j; + if (c2.globals.isXNumeric) + e2 = (n2 = (c2.globals.seriesX[d2][g2] - c2.globals.minX) / this.invertedXRatio - a2) + a2 * this.visibleI; + else if (c2.config.plotOptions.bar.hideZeroBarsWhenGrouped) { + var u2 = 0, p2 = 0; + c2.globals.seriesPercent.forEach(function(t4, e3) { + t4[g2] && u2++, e3 < d2 && 0 === t4[g2] && p2++; + }), u2 > 0 && (a2 = this.seriesLen * a2 / u2), e2 = n2 + a2 * this.visibleI, e2 -= a2 * p2; + } else + e2 = n2 + a2 * this.visibleI; + this.isFunnel && (r2 -= (this.barHelpers.getXForValue(this.series[d2][g2], r2) - r2) / 2), o2 = this.barHelpers.getXForValue(this.series[d2][g2], r2); + var f2 = this.barHelpers.getBarpaths({ barYPosition: e2, barHeight: a2, x1: r2, x2: o2, strokeWidth: s2, series: this.series, realIndex: i2.realIndex, i: d2, j: g2, w: c2 }); + return c2.globals.isXNumeric || (n2 += l2), this.barHelpers.barBackground({ j: g2, i: d2, y1: e2 - a2 * this.visibleI, y2: a2 * this.seriesLen, elSeries: h2 }), { pathTo: f2.pathTo, pathFrom: f2.pathFrom, x1: r2, x: o2, y: n2, goalX: this.barHelpers.getGoalValues("x", r2, null, d2, g2), barYPosition: e2, barHeight: a2 }; + } }, { key: "drawColumnPaths", value: function(t3) { + var e2, i2 = t3.indexes, a2 = t3.x, s2 = t3.y, r2 = t3.xDivision, o2 = t3.barWidth, n2 = t3.zeroH, l2 = t3.strokeWidth, h2 = t3.elSeries, c2 = this.w, d2 = i2.realIndex, g2 = i2.i, u2 = i2.j, p2 = i2.bc; + if (c2.globals.isXNumeric) { + var f2 = this.getBarXForNumericXAxis({ x: a2, j: u2, realIndex: d2, barWidth: o2 }); + a2 = f2.x, e2 = f2.barXPosition; + } else if (c2.config.plotOptions.bar.hideZeroBarsWhenGrouped) { + var x2 = this.barHelpers.getZeroValueEncounters({ i: g2, j: u2 }), b2 = x2.nonZeroColumns, v2 = x2.zeroEncounters; + b2 > 0 && (o2 = this.seriesLen * o2 / b2), e2 = a2 + o2 * this.visibleI, e2 -= o2 * v2; + } else + e2 = a2 + o2 * this.visibleI; + s2 = this.barHelpers.getYForValue(this.series[g2][u2], n2); + var m2 = this.barHelpers.getColumnPaths({ barXPosition: e2, barWidth: o2, y1: n2, y2: s2, strokeWidth: l2, series: this.series, realIndex: i2.realIndex, i: g2, j: u2, w: c2 }); + return c2.globals.isXNumeric || (a2 += r2), this.barHelpers.barBackground({ bc: p2, j: u2, i: g2, x1: e2 - l2 / 2 - o2 * this.visibleI, x2: o2 * this.seriesLen + l2 / 2, elSeries: h2 }), { pathTo: m2.pathTo, pathFrom: m2.pathFrom, x: a2, y: s2, goalY: this.barHelpers.getGoalValues("y", null, n2, g2, u2), barXPosition: e2, barWidth: o2 }; + } }, { key: "getBarXForNumericXAxis", value: function(t3) { + var e2 = t3.x, i2 = t3.barWidth, a2 = t3.realIndex, s2 = t3.j, r2 = this.w, o2 = a2; + return r2.globals.seriesX[a2].length || (o2 = r2.globals.maxValsInArrayIndex), r2.globals.seriesX[o2][s2] && (e2 = (r2.globals.seriesX[o2][s2] - r2.globals.minX) / this.xRatio - i2 * this.seriesLen / 2), { barXPosition: e2 + i2 * this.visibleI, x: e2 }; + } }, { key: "getPreviousPath", value: function(t3, e2) { + for (var i2, a2 = this.w, s2 = 0; s2 < a2.globals.previousPaths.length; s2++) { + var r2 = a2.globals.previousPaths[s2]; + r2.paths && r2.paths.length > 0 && parseInt(r2.realIndex, 10) === parseInt(t3, 10) && void 0 !== a2.globals.previousPaths[s2].paths[e2] && (i2 = a2.globals.previousPaths[s2].paths[e2].d); + } + return i2; + } }]), t2; + }(); + var wt = function(t2) { + n(s2, yt); + var i2 = d(s2); + function s2() { + return a(this, s2), i2.apply(this, arguments); + } + return r(s2, [{ key: "draw", value: function(t3, i3) { + var a2 = this, s3 = this.w; + this.graphics = new m(this.ctx), this.bar = new yt(this.ctx, this.xyRatios); + var r2 = new y(this.ctx, s3); + t3 = r2.getLogSeries(t3), this.yRatio = r2.getLogYRatios(this.yRatio), this.barHelpers.initVariables(t3), "100%" === s3.config.chart.stackType && (t3 = s3.globals.seriesPercent.slice()), this.series = t3, this.barHelpers.initializeStackedPrevVars(this); + for (var o2 = this.graphics.group({ class: "apexcharts-bar-series apexcharts-plot-series" }), n2 = 0, l2 = 0, h2 = function(r3, h3) { + var c3 = void 0, d3 = void 0, g2 = void 0, u2 = void 0, p2 = -1; + a2.groupCtx = a2, s3.globals.seriesGroups.forEach(function(t4, e2) { + t4.indexOf(s3.config.series[r3].name) > -1 && (p2 = e2); + }), -1 !== p2 && (a2.groupCtx = a2[s3.globals.seriesGroups[p2]]); + var f2 = [], b2 = [], v2 = s3.globals.comboCharts ? i3[r3] : r3; + a2.yRatio.length > 1 && (a2.yaxisIndex = v2), a2.isReversed = s3.config.yaxis[a2.yaxisIndex] && s3.config.yaxis[a2.yaxisIndex].reversed; + var m2 = a2.graphics.group({ class: "apexcharts-series", seriesName: x.escapeString(s3.globals.seriesNames[v2]), rel: r3 + 1, "data:realIndex": v2 }); + a2.ctx.series.addCollapsedClassToSeries(m2, v2); + var y2 = a2.graphics.group({ class: "apexcharts-datalabels", "data:realIndex": v2 }), w2 = a2.graphics.group({ class: "apexcharts-bar-goals-markers" }), k2 = 0, A2 = 0, S2 = a2.initialPositions(n2, l2, c3, d3, g2, u2); + l2 = S2.y, k2 = S2.barHeight, d3 = S2.yDivision, u2 = S2.zeroW, n2 = S2.x, A2 = S2.barWidth, c3 = S2.xDivision, g2 = S2.zeroH, a2.barHelpers.initializeStackedXYVars(a2), 1 === a2.groupCtx.prevY.length && a2.groupCtx.prevY[0].every(function(t4) { + return isNaN(t4); + }) && (a2.groupCtx.prevY[0] = a2.groupCtx.prevY[0].map(function(t4) { + return g2; + }), a2.groupCtx.prevYF[0] = a2.groupCtx.prevYF[0].map(function(t4) { + return 0; + })); + for (var C2 = 0; C2 < s3.globals.dataPoints; C2++) { + var L2 = a2.barHelpers.getStrokeWidth(r3, C2, v2), P2 = { indexes: { i: r3, j: C2, realIndex: v2, bc: h3 }, strokeWidth: L2, x: n2, y: l2, elSeries: m2, groupIndex: p2, seriesGroup: s3.globals.seriesGroups[p2] }, I2 = null; + a2.isHorizontal ? (I2 = a2.drawStackedBarPaths(e(e({}, P2), {}, { zeroW: u2, barHeight: k2, yDivision: d3 })), A2 = a2.series[r3][C2] / a2.invertedYRatio) : (I2 = a2.drawStackedColumnPaths(e(e({}, P2), {}, { xDivision: c3, barWidth: A2, zeroH: g2 })), k2 = a2.series[r3][C2] / a2.yRatio[a2.yaxisIndex]); + var M2 = a2.barHelpers.drawGoalLine({ barXPosition: I2.barXPosition, barYPosition: I2.barYPosition, goalX: I2.goalX, goalY: I2.goalY, barHeight: k2, barWidth: A2 }); + M2 && w2.add(M2), l2 = I2.y, n2 = I2.x, f2.push(n2), b2.push(l2); + var T2 = a2.barHelpers.getPathFillColor(t3, r3, C2, v2); + m2 = a2.renderSeries({ realIndex: v2, pathFill: T2, j: C2, i: r3, groupIndex: p2, pathFrom: I2.pathFrom, pathTo: I2.pathTo, strokeWidth: L2, elSeries: m2, x: n2, y: l2, series: t3, barHeight: k2, barWidth: A2, elDataLabelsWrap: y2, elGoalsMarkers: w2, type: "bar", visibleSeries: 0 }); + } + s3.globals.seriesXvalues[v2] = f2, s3.globals.seriesYvalues[v2] = b2, a2.groupCtx.prevY.push(a2.groupCtx.yArrj), a2.groupCtx.prevYF.push(a2.groupCtx.yArrjF), a2.groupCtx.prevYVal.push(a2.groupCtx.yArrjVal), a2.groupCtx.prevX.push(a2.groupCtx.xArrj), a2.groupCtx.prevXF.push(a2.groupCtx.xArrjF), a2.groupCtx.prevXVal.push(a2.groupCtx.xArrjVal), o2.add(m2); + }, c2 = 0, d2 = 0; c2 < t3.length; c2++, d2++) + h2(c2, d2); + return o2; + } }, { key: "initialPositions", value: function(t3, e2, i3, a2, s3, r2) { + var o2, n2, l2, h2, c2 = this.w; + return this.isHorizontal ? (l2 = (l2 = a2 = c2.globals.gridHeight / c2.globals.dataPoints) * parseInt(c2.config.plotOptions.bar.barHeight, 10) / 100, -1 === String(c2.config.plotOptions.bar.barHeight).indexOf("%") && (l2 = parseInt(c2.config.plotOptions.bar.barHeight, 10)), r2 = this.baseLineInvertedY + c2.globals.padHorizontal + (this.isReversed ? c2.globals.gridWidth : 0) - (this.isReversed ? 2 * this.baseLineInvertedY : 0), e2 = (a2 - l2) / 2) : (h2 = i3 = c2.globals.gridWidth / c2.globals.dataPoints, h2 = c2.globals.isXNumeric && c2.globals.dataPoints > 1 ? (i3 = c2.globals.minXDiff / this.xRatio) * parseInt(this.barOptions.columnWidth, 10) / 100 : h2 * parseInt(c2.config.plotOptions.bar.columnWidth, 10) / 100, -1 === String(c2.config.plotOptions.bar.columnWidth).indexOf("%") && (h2 = parseInt(c2.config.plotOptions.bar.columnWidth, 10)), s3 = c2.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? c2.globals.gridHeight : 0) + (this.isReversed ? 2 * this.baseLineY[this.yaxisIndex] : 0), t3 = c2.globals.padHorizontal + (i3 - h2) / 2), { x: t3, y: e2, yDivision: a2, xDivision: i3, barHeight: null !== (o2 = c2.globals.seriesGroups) && void 0 !== o2 && o2.length ? l2 / c2.globals.seriesGroups.length : l2, barWidth: null !== (n2 = c2.globals.seriesGroups) && void 0 !== n2 && n2.length ? h2 / c2.globals.seriesGroups.length : h2, zeroH: s3, zeroW: r2 }; + } }, { key: "drawStackedBarPaths", value: function(t3) { + for (var e2, i3 = t3.indexes, a2 = t3.barHeight, s3 = t3.strokeWidth, r2 = t3.zeroW, o2 = t3.x, n2 = t3.y, l2 = t3.groupIndex, h2 = t3.seriesGroup, c2 = t3.yDivision, d2 = t3.elSeries, g2 = this.w, u2 = n2 + (-1 !== l2 ? l2 * a2 : 0), p2 = i3.i, f2 = i3.j, x2 = 0, b2 = 0; b2 < this.groupCtx.prevXF.length; b2++) + x2 += this.groupCtx.prevXF[b2][f2]; + var v2 = p2; + if (h2 && (v2 = h2.indexOf(g2.config.series[p2].name)), v2 > 0) { + var m2 = r2; + this.groupCtx.prevXVal[v2 - 1][f2] < 0 ? m2 = this.series[p2][f2] >= 0 ? this.groupCtx.prevX[v2 - 1][f2] + x2 - 2 * (this.isReversed ? x2 : 0) : this.groupCtx.prevX[v2 - 1][f2] : this.groupCtx.prevXVal[v2 - 1][f2] >= 0 && (m2 = this.series[p2][f2] >= 0 ? this.groupCtx.prevX[v2 - 1][f2] : this.groupCtx.prevX[v2 - 1][f2] - x2 + 2 * (this.isReversed ? x2 : 0)), e2 = m2; + } else + e2 = r2; + o2 = null === this.series[p2][f2] ? e2 : e2 + this.series[p2][f2] / this.invertedYRatio - 2 * (this.isReversed ? this.series[p2][f2] / this.invertedYRatio : 0); + var y2 = this.barHelpers.getBarpaths({ barYPosition: u2, barHeight: a2, x1: e2, x2: o2, strokeWidth: s3, series: this.series, realIndex: i3.realIndex, seriesGroup: h2, i: p2, j: f2, w: g2 }); + return this.barHelpers.barBackground({ j: f2, i: p2, y1: u2, y2: a2, elSeries: d2 }), n2 += c2, { pathTo: y2.pathTo, pathFrom: y2.pathFrom, goalX: this.barHelpers.getGoalValues("x", r2, null, p2, f2), barYPosition: u2, x: o2, y: n2 }; + } }, { key: "drawStackedColumnPaths", value: function(t3) { + var e2 = t3.indexes, i3 = t3.x, a2 = t3.y, s3 = t3.xDivision, r2 = t3.barWidth, o2 = t3.zeroH, n2 = t3.groupIndex, l2 = t3.seriesGroup, h2 = t3.elSeries, c2 = this.w, d2 = e2.i, g2 = e2.j, u2 = e2.bc; + if (c2.globals.isXNumeric) { + var p2 = c2.globals.seriesX[d2][g2]; + p2 || (p2 = 0), i3 = (p2 - c2.globals.minX) / this.xRatio - r2 / 2, c2.globals.seriesGroups.length && (i3 = (p2 - c2.globals.minX) / this.xRatio - r2 / 2 * c2.globals.seriesGroups.length); + } + for (var f2, x2 = i3 + (-1 !== n2 ? n2 * r2 : 0), b2 = 0, v2 = 0; v2 < this.groupCtx.prevYF.length; v2++) + b2 += isNaN(this.groupCtx.prevYF[v2][g2]) ? 0 : this.groupCtx.prevYF[v2][g2]; + var m2 = d2; + if (l2 && (m2 = l2.indexOf(c2.config.series[d2].name)), m2 > 0 && !c2.globals.isXNumeric || m2 > 0 && c2.globals.isXNumeric && c2.globals.seriesX[d2 - 1][g2] === c2.globals.seriesX[d2][g2]) { + var y2, w2, k2, A2 = Math.min(this.yRatio.length + 1, d2 + 1); + if (void 0 !== this.groupCtx.prevY[m2 - 1] && this.groupCtx.prevY[m2 - 1].length) + for (var S2 = 1; S2 < A2; S2++) { + var C2; + if (!isNaN(null === (C2 = this.groupCtx.prevY[m2 - S2]) || void 0 === C2 ? void 0 : C2[g2])) { + k2 = this.groupCtx.prevY[m2 - S2][g2]; + break; + } + } + for (var L2 = 1; L2 < A2; L2++) { + var P2, I2; + if ((null === (P2 = this.groupCtx.prevYVal[m2 - L2]) || void 0 === P2 ? void 0 : P2[g2]) < 0) { + w2 = this.series[d2][g2] >= 0 ? k2 - b2 + 2 * (this.isReversed ? b2 : 0) : k2; + break; + } + if ((null === (I2 = this.groupCtx.prevYVal[m2 - L2]) || void 0 === I2 ? void 0 : I2[g2]) >= 0) { + w2 = this.series[d2][g2] >= 0 ? k2 : k2 + b2 - 2 * (this.isReversed ? b2 : 0); + break; + } + } + void 0 === w2 && (w2 = c2.globals.gridHeight), f2 = null !== (y2 = this.groupCtx.prevYF[0]) && void 0 !== y2 && y2.every(function(t4) { + return 0 === t4; + }) && this.groupCtx.prevYF.slice(1, m2).every(function(t4) { + return t4.every(function(t5) { + return isNaN(t5); + }); + }) ? o2 : w2; + } else + f2 = o2; + a2 = this.series[d2][g2] ? f2 - this.series[d2][g2] / this.yRatio[this.yaxisIndex] + 2 * (this.isReversed ? this.series[d2][g2] / this.yRatio[this.yaxisIndex] : 0) : f2; + var M2 = this.barHelpers.getColumnPaths({ barXPosition: x2, barWidth: r2, y1: f2, y2: a2, yRatio: this.yRatio[this.yaxisIndex], strokeWidth: this.strokeWidth, series: this.series, seriesGroup: l2, realIndex: e2.realIndex, i: d2, j: g2, w: c2 }); + return this.barHelpers.barBackground({ bc: u2, j: g2, i: d2, x1: x2, x2: r2, elSeries: h2 }), i3 += s3, { pathTo: M2.pathTo, pathFrom: M2.pathFrom, goalY: this.barHelpers.getGoalValues("y", null, o2, d2, g2), barXPosition: x2, x: c2.globals.isXNumeric ? i3 - s3 : i3, y: a2 }; + } }]), s2; + }(); + var kt = function(t2) { + n(s2, yt); + var i2 = d(s2); + function s2() { + return a(this, s2), i2.apply(this, arguments); + } + return r(s2, [{ key: "draw", value: function(t3, i3, a2) { + var s3 = this, r2 = this.w, o2 = new m(this.ctx), n2 = r2.globals.comboCharts ? i3 : r2.config.chart.type, l2 = new R(this.ctx); + this.candlestickOptions = this.w.config.plotOptions.candlestick, this.boxOptions = this.w.config.plotOptions.boxPlot, this.isHorizontal = r2.config.plotOptions.bar.horizontal; + var h2 = new y(this.ctx, r2); + t3 = h2.getLogSeries(t3), this.series = t3, this.yRatio = h2.getLogYRatios(this.yRatio), this.barHelpers.initVariables(t3); + for (var c2 = o2.group({ class: "apexcharts-".concat(n2, "-series apexcharts-plot-series") }), d2 = function(i4) { + s3.isBoxPlot = "boxPlot" === r2.config.chart.type || "boxPlot" === r2.config.series[i4].type; + var n3, h3, d3, g3, u2 = void 0, p2 = void 0, f2 = [], b2 = [], v2 = r2.globals.comboCharts ? a2[i4] : i4, m2 = o2.group({ class: "apexcharts-series", seriesName: x.escapeString(r2.globals.seriesNames[v2]), rel: i4 + 1, "data:realIndex": v2 }); + s3.ctx.series.addCollapsedClassToSeries(m2, v2), t3[i4].length > 0 && (s3.visibleI = s3.visibleI + 1); + var y2, w2; + s3.yRatio.length > 1 && (s3.yaxisIndex = v2); + var k2 = s3.barHelpers.initialPositions(); + p2 = k2.y, y2 = k2.barHeight, h3 = k2.yDivision, g3 = k2.zeroW, u2 = k2.x, w2 = k2.barWidth, n3 = k2.xDivision, d3 = k2.zeroH, b2.push(u2 + w2 / 2); + for (var A2 = o2.group({ class: "apexcharts-datalabels", "data:realIndex": v2 }), S2 = function(a3) { + var o3 = s3.barHelpers.getStrokeWidth(i4, a3, v2), c3 = null, x2 = { indexes: { i: i4, j: a3, realIndex: v2 }, x: u2, y: p2, strokeWidth: o3, elSeries: m2 }; + c3 = s3.isHorizontal ? s3.drawHorizontalBoxPaths(e(e({}, x2), {}, { yDivision: h3, barHeight: y2, zeroW: g3 })) : s3.drawVerticalBoxPaths(e(e({}, x2), {}, { xDivision: n3, barWidth: w2, zeroH: d3 })), p2 = c3.y, u2 = c3.x, a3 > 0 && b2.push(u2 + w2 / 2), f2.push(p2), c3.pathTo.forEach(function(e2, n4) { + var h4 = !s3.isBoxPlot && s3.candlestickOptions.wick.useFillColor ? c3.color[n4] : r2.globals.stroke.colors[i4], d4 = l2.fillPath({ seriesNumber: v2, dataPointIndex: a3, color: c3.color[n4], value: t3[i4][a3] }); + s3.renderSeries({ realIndex: v2, pathFill: d4, lineFill: h4, j: a3, i: i4, pathFrom: c3.pathFrom, pathTo: e2, strokeWidth: o3, elSeries: m2, x: u2, y: p2, series: t3, barHeight: y2, barWidth: w2, elDataLabelsWrap: A2, visibleSeries: s3.visibleI, type: r2.config.chart.type }); + }); + }, C2 = 0; C2 < r2.globals.dataPoints; C2++) + S2(C2); + r2.globals.seriesXvalues[v2] = b2, r2.globals.seriesYvalues[v2] = f2, c2.add(m2); + }, g2 = 0; g2 < t3.length; g2++) + d2(g2); + return c2; + } }, { key: "drawVerticalBoxPaths", value: function(t3) { + var e2 = t3.indexes, i3 = t3.x; + t3.y; + var a2 = t3.xDivision, s3 = t3.barWidth, r2 = t3.zeroH, o2 = t3.strokeWidth, n2 = this.w, l2 = new m(this.ctx), h2 = e2.i, c2 = e2.j, d2 = true, g2 = n2.config.plotOptions.candlestick.colors.upward, u2 = n2.config.plotOptions.candlestick.colors.downward, p2 = ""; + this.isBoxPlot && (p2 = [this.boxOptions.colors.lower, this.boxOptions.colors.upper]); + var f2 = this.yRatio[this.yaxisIndex], x2 = e2.realIndex, b2 = this.getOHLCValue(x2, c2), v2 = r2, y2 = r2; + b2.o > b2.c && (d2 = false); + var w2 = Math.min(b2.o, b2.c), k2 = Math.max(b2.o, b2.c), A2 = b2.m; + n2.globals.isXNumeric && (i3 = (n2.globals.seriesX[x2][c2] - n2.globals.minX) / this.xRatio - s3 / 2); + var S2 = i3 + s3 * this.visibleI; + void 0 === this.series[h2][c2] || null === this.series[h2][c2] ? (w2 = r2, k2 = r2) : (w2 = r2 - w2 / f2, k2 = r2 - k2 / f2, v2 = r2 - b2.h / f2, y2 = r2 - b2.l / f2, A2 = r2 - b2.m / f2); + var C2 = l2.move(S2, r2), L2 = l2.move(S2 + s3 / 2, w2); + return n2.globals.previousPaths.length > 0 && (L2 = this.getPreviousPath(x2, c2, true)), C2 = this.isBoxPlot ? [l2.move(S2, w2) + l2.line(S2 + s3 / 2, w2) + l2.line(S2 + s3 / 2, v2) + l2.line(S2 + s3 / 4, v2) + l2.line(S2 + s3 - s3 / 4, v2) + l2.line(S2 + s3 / 2, v2) + l2.line(S2 + s3 / 2, w2) + l2.line(S2 + s3, w2) + l2.line(S2 + s3, A2) + l2.line(S2, A2) + l2.line(S2, w2 + o2 / 2), l2.move(S2, A2) + l2.line(S2 + s3, A2) + l2.line(S2 + s3, k2) + l2.line(S2 + s3 / 2, k2) + l2.line(S2 + s3 / 2, y2) + l2.line(S2 + s3 - s3 / 4, y2) + l2.line(S2 + s3 / 4, y2) + l2.line(S2 + s3 / 2, y2) + l2.line(S2 + s3 / 2, k2) + l2.line(S2, k2) + l2.line(S2, A2) + "z"] : [l2.move(S2, k2) + l2.line(S2 + s3 / 2, k2) + l2.line(S2 + s3 / 2, v2) + l2.line(S2 + s3 / 2, k2) + l2.line(S2 + s3, k2) + l2.line(S2 + s3, w2) + l2.line(S2 + s3 / 2, w2) + l2.line(S2 + s3 / 2, y2) + l2.line(S2 + s3 / 2, w2) + l2.line(S2, w2) + l2.line(S2, k2 - o2 / 2)], L2 += l2.move(S2, w2), n2.globals.isXNumeric || (i3 += a2), { pathTo: C2, pathFrom: L2, x: i3, y: k2, barXPosition: S2, color: this.isBoxPlot ? p2 : d2 ? [g2] : [u2] }; + } }, { key: "drawHorizontalBoxPaths", value: function(t3) { + var e2 = t3.indexes; + t3.x; + var i3 = t3.y, a2 = t3.yDivision, s3 = t3.barHeight, r2 = t3.zeroW, o2 = t3.strokeWidth, n2 = this.w, l2 = new m(this.ctx), h2 = e2.i, c2 = e2.j, d2 = this.boxOptions.colors.lower; + this.isBoxPlot && (d2 = [this.boxOptions.colors.lower, this.boxOptions.colors.upper]); + var g2 = this.invertedYRatio, u2 = e2.realIndex, p2 = this.getOHLCValue(u2, c2), f2 = r2, x2 = r2, b2 = Math.min(p2.o, p2.c), v2 = Math.max(p2.o, p2.c), y2 = p2.m; + n2.globals.isXNumeric && (i3 = (n2.globals.seriesX[u2][c2] - n2.globals.minX) / this.invertedXRatio - s3 / 2); + var w2 = i3 + s3 * this.visibleI; + void 0 === this.series[h2][c2] || null === this.series[h2][c2] ? (b2 = r2, v2 = r2) : (b2 = r2 + b2 / g2, v2 = r2 + v2 / g2, f2 = r2 + p2.h / g2, x2 = r2 + p2.l / g2, y2 = r2 + p2.m / g2); + var k2 = l2.move(r2, w2), A2 = l2.move(b2, w2 + s3 / 2); + return n2.globals.previousPaths.length > 0 && (A2 = this.getPreviousPath(u2, c2, true)), k2 = [l2.move(b2, w2) + l2.line(b2, w2 + s3 / 2) + l2.line(f2, w2 + s3 / 2) + l2.line(f2, w2 + s3 / 2 - s3 / 4) + l2.line(f2, w2 + s3 / 2 + s3 / 4) + l2.line(f2, w2 + s3 / 2) + l2.line(b2, w2 + s3 / 2) + l2.line(b2, w2 + s3) + l2.line(y2, w2 + s3) + l2.line(y2, w2) + l2.line(b2 + o2 / 2, w2), l2.move(y2, w2) + l2.line(y2, w2 + s3) + l2.line(v2, w2 + s3) + l2.line(v2, w2 + s3 / 2) + l2.line(x2, w2 + s3 / 2) + l2.line(x2, w2 + s3 - s3 / 4) + l2.line(x2, w2 + s3 / 4) + l2.line(x2, w2 + s3 / 2) + l2.line(v2, w2 + s3 / 2) + l2.line(v2, w2) + l2.line(y2, w2) + "z"], A2 += l2.move(b2, w2), n2.globals.isXNumeric || (i3 += a2), { pathTo: k2, pathFrom: A2, x: v2, y: i3, barYPosition: w2, color: d2 }; + } }, { key: "getOHLCValue", value: function(t3, e2) { + var i3 = this.w; + return { o: this.isBoxPlot ? i3.globals.seriesCandleH[t3][e2] : i3.globals.seriesCandleO[t3][e2], h: this.isBoxPlot ? i3.globals.seriesCandleO[t3][e2] : i3.globals.seriesCandleH[t3][e2], m: i3.globals.seriesCandleM[t3][e2], l: this.isBoxPlot ? i3.globals.seriesCandleC[t3][e2] : i3.globals.seriesCandleL[t3][e2], c: this.isBoxPlot ? i3.globals.seriesCandleL[t3][e2] : i3.globals.seriesCandleC[t3][e2] }; + } }]), s2; + }(); + var At = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "checkColorRange", value: function() { + var t3 = this.w, e2 = false, i2 = t3.config.plotOptions[t3.config.chart.type]; + return i2.colorScale.ranges.length > 0 && i2.colorScale.ranges.map(function(t4, i3) { + t4.from <= 0 && (e2 = true); + }), e2; + } }, { key: "getShadeColor", value: function(t3, e2, i2, a2) { + var s2 = this.w, r2 = 1, o2 = s2.config.plotOptions[t3].shadeIntensity, n2 = this.determineColor(t3, e2, i2); + s2.globals.hasNegs || a2 ? r2 = s2.config.plotOptions[t3].reverseNegativeShade ? n2.percent < 0 ? n2.percent / 100 * (1.25 * o2) : (1 - n2.percent / 100) * (1.25 * o2) : n2.percent <= 0 ? 1 - (1 + n2.percent / 100) * o2 : (1 - n2.percent / 100) * o2 : (r2 = 1 - n2.percent / 100, "treemap" === t3 && (r2 = (1 - n2.percent / 100) * (1.25 * o2))); + var l2 = n2.color, h2 = new x(); + return s2.config.plotOptions[t3].enableShades && (l2 = "dark" === this.w.config.theme.mode ? x.hexToRgba(h2.shadeColor(-1 * r2, n2.color), s2.config.fill.opacity) : x.hexToRgba(h2.shadeColor(r2, n2.color), s2.config.fill.opacity)), { color: l2, colorProps: n2 }; + } }, { key: "determineColor", value: function(t3, e2, i2) { + var a2 = this.w, s2 = a2.globals.series[e2][i2], r2 = a2.config.plotOptions[t3], o2 = r2.colorScale.inverse ? i2 : e2; + r2.distributed && "treemap" === a2.config.chart.type && (o2 = i2); + var n2 = a2.globals.colors[o2], l2 = null, h2 = Math.min.apply(Math, u(a2.globals.series[e2])), c2 = Math.max.apply(Math, u(a2.globals.series[e2])); + r2.distributed || "heatmap" !== t3 || (h2 = a2.globals.minY, c2 = a2.globals.maxY), void 0 !== r2.colorScale.min && (h2 = r2.colorScale.min < a2.globals.minY ? r2.colorScale.min : a2.globals.minY, c2 = r2.colorScale.max > a2.globals.maxY ? r2.colorScale.max : a2.globals.maxY); + var d2 = Math.abs(c2) + Math.abs(h2), g2 = 100 * s2 / (0 === d2 ? d2 - 1e-6 : d2); + r2.colorScale.ranges.length > 0 && r2.colorScale.ranges.map(function(t4, e3) { + if (s2 >= t4.from && s2 <= t4.to) { + n2 = t4.color, l2 = t4.foreColor ? t4.foreColor : null, h2 = t4.from, c2 = t4.to; + var i3 = Math.abs(c2) + Math.abs(h2); + g2 = 100 * s2 / (0 === i3 ? i3 - 1e-6 : i3); + } + }); + return { color: n2, foreColor: l2, percent: g2 }; + } }, { key: "calculateDataLabels", value: function(t3) { + var e2 = t3.text, i2 = t3.x, a2 = t3.y, s2 = t3.i, r2 = t3.j, o2 = t3.colorProps, n2 = t3.fontSize, l2 = this.w.config.dataLabels, h2 = new m(this.ctx), c2 = new O(this.ctx), d2 = null; + if (l2.enabled) { + d2 = h2.group({ class: "apexcharts-data-labels" }); + var g2 = l2.offsetX, u2 = l2.offsetY, p2 = i2 + g2, f2 = a2 + parseFloat(l2.style.fontSize) / 3 + u2; + c2.plotDataLabelsText({ x: p2, y: f2, text: e2, i: s2, j: r2, color: o2.foreColor, parent: d2, fontSize: n2, dataLabelsConfig: l2 }); + } + return d2; + } }, { key: "addListeners", value: function(t3) { + var e2 = new m(this.ctx); + t3.node.addEventListener("mouseenter", e2.pathMouseEnter.bind(this, t3)), t3.node.addEventListener("mouseleave", e2.pathMouseLeave.bind(this, t3)), t3.node.addEventListener("mousedown", e2.pathMouseDown.bind(this, t3)); + } }]), t2; + }(); + var St = function() { + function t2(e2, i2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.xRatio = i2.xRatio, this.yRatio = i2.yRatio, this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation, this.helpers = new At(e2), this.rectRadius = this.w.config.plotOptions.heatmap.radius, this.strokeWidth = this.w.config.stroke.show ? this.w.config.stroke.width : 0; + } + return r(t2, [{ key: "draw", value: function(t3) { + var e2 = this.w, i2 = new m(this.ctx), a2 = i2.group({ class: "apexcharts-heatmap" }); + a2.attr("clip-path", "url(#gridRectMask".concat(e2.globals.cuid, ")")); + var s2 = e2.globals.gridWidth / e2.globals.dataPoints, r2 = e2.globals.gridHeight / e2.globals.series.length, o2 = 0, n2 = false; + this.negRange = this.helpers.checkColorRange(); + var l2 = t3.slice(); + e2.config.yaxis[0].reversed && (n2 = true, l2.reverse()); + for (var h2 = n2 ? 0 : l2.length - 1; n2 ? h2 < l2.length : h2 >= 0; n2 ? h2++ : h2--) { + var c2 = i2.group({ class: "apexcharts-series apexcharts-heatmap-series", seriesName: x.escapeString(e2.globals.seriesNames[h2]), rel: h2 + 1, "data:realIndex": h2 }); + if (this.ctx.series.addCollapsedClassToSeries(c2, h2), e2.config.chart.dropShadow.enabled) { + var d2 = e2.config.chart.dropShadow; + new v(this.ctx).dropShadow(c2, d2, h2); + } + for (var g2 = 0, u2 = e2.config.plotOptions.heatmap.shadeIntensity, p2 = 0; p2 < l2[h2].length; p2++) { + var f2 = this.helpers.getShadeColor(e2.config.chart.type, h2, p2, this.negRange), b2 = f2.color, y2 = f2.colorProps; + if ("image" === e2.config.fill.type) + b2 = new R(this.ctx).fillPath({ seriesNumber: h2, dataPointIndex: p2, opacity: e2.globals.hasNegs ? y2.percent < 0 ? 1 - (1 + y2.percent / 100) : u2 + y2.percent / 100 : y2.percent / 100, patternID: x.randomId(), width: e2.config.fill.image.width ? e2.config.fill.image.width : s2, height: e2.config.fill.image.height ? e2.config.fill.image.height : r2 }); + var w2 = this.rectRadius, k2 = i2.drawRect(g2, o2, s2, r2, w2); + if (k2.attr({ cx: g2, cy: o2 }), k2.node.classList.add("apexcharts-heatmap-rect"), c2.add(k2), k2.attr({ fill: b2, i: h2, index: h2, j: p2, val: l2[h2][p2], "stroke-width": this.strokeWidth, stroke: e2.config.plotOptions.heatmap.useFillColorAsStroke ? b2 : e2.globals.stroke.colors[0], color: b2 }), this.helpers.addListeners(k2), e2.config.chart.animations.enabled && !e2.globals.dataChanged) { + var A2 = 1; + e2.globals.resized || (A2 = e2.config.chart.animations.speed), this.animateHeatMap(k2, g2, o2, s2, r2, A2); + } + if (e2.globals.dataChanged) { + var S2 = 1; + if (this.dynamicAnim.enabled && e2.globals.shouldAnimate) { + S2 = this.dynamicAnim.speed; + var C2 = e2.globals.previousPaths[h2] && e2.globals.previousPaths[h2][p2] && e2.globals.previousPaths[h2][p2].color; + C2 || (C2 = "rgba(255, 255, 255, 0)"), this.animateHeatColor(k2, x.isColorHex(C2) ? C2 : x.rgb2hex(C2), x.isColorHex(b2) ? b2 : x.rgb2hex(b2), S2); + } + } + var L2 = (0, e2.config.dataLabels.formatter)(e2.globals.series[h2][p2], { value: e2.globals.series[h2][p2], seriesIndex: h2, dataPointIndex: p2, w: e2 }), P2 = this.helpers.calculateDataLabels({ text: L2, x: g2 + s2 / 2, y: o2 + r2 / 2, i: h2, j: p2, colorProps: y2, series: l2 }); + null !== P2 && c2.add(P2), g2 += s2; + } + o2 += r2, a2.add(c2); + } + var I2 = e2.globals.yAxisScale[0].result.slice(); + return e2.config.yaxis[0].reversed ? I2.unshift("") : I2.push(""), e2.globals.yAxisScale[0].result = I2, a2; + } }, { key: "animateHeatMap", value: function(t3, e2, i2, a2, s2, r2) { + var o2 = new b(this.ctx); + o2.animateRect(t3, { x: e2 + a2 / 2, y: i2 + s2 / 2, width: 0, height: 0 }, { x: e2, y: i2, width: a2, height: s2 }, r2, function() { + o2.animationCompleted(t3); + }); + } }, { key: "animateHeatColor", value: function(t3, e2, i2, a2) { + t3.attr({ fill: e2 }).animate(a2).attr({ fill: i2 }); + } }]), t2; + }(); + var Ct = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "drawYAxisTexts", value: function(t3, e2, i2, a2) { + var s2 = this.w, r2 = s2.config.yaxis[0], o2 = s2.globals.yLabelFormatters[0]; + return new m(this.ctx).drawText({ x: t3 + r2.labels.offsetX, y: e2 + r2.labels.offsetY, text: o2(a2, i2), textAnchor: "middle", fontSize: r2.labels.style.fontSize, fontFamily: r2.labels.style.fontFamily, foreColor: Array.isArray(r2.labels.style.colors) ? r2.labels.style.colors[i2] : r2.labels.style.colors }); + } }]), t2; + }(); + var Lt = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + var i2 = this.w; + this.chartType = this.w.config.chart.type, this.initialAnim = this.w.config.chart.animations.enabled, this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled, this.animBeginArr = [0], this.animDur = 0, this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels, this.lineColorArr = void 0 !== i2.globals.stroke.colors ? i2.globals.stroke.colors : i2.globals.colors, this.defaultSize = Math.min(i2.globals.gridWidth, i2.globals.gridHeight), this.centerY = this.defaultSize / 2, this.centerX = i2.globals.gridWidth / 2, "radialBar" === i2.config.chart.type ? this.fullAngle = 360 : this.fullAngle = Math.abs(i2.config.plotOptions.pie.endAngle - i2.config.plotOptions.pie.startAngle), this.initialAngle = i2.config.plotOptions.pie.startAngle % this.fullAngle, i2.globals.radialSize = this.defaultSize / 2.05 - i2.config.stroke.width - (i2.config.chart.sparkline.enabled ? 0 : i2.config.chart.dropShadow.blur), this.donutSize = i2.globals.radialSize * parseInt(i2.config.plotOptions.pie.donut.size, 10) / 100, this.maxY = 0, this.sliceLabels = [], this.sliceSizes = [], this.prevSectorAngleArr = []; + } + return r(t2, [{ key: "draw", value: function(t3) { + var e2 = this, i2 = this.w, a2 = new m(this.ctx); + if (this.ret = a2.group({ class: "apexcharts-pie" }), i2.globals.noData) + return this.ret; + for (var s2 = 0, r2 = 0; r2 < t3.length; r2++) + s2 += x.negToZero(t3[r2]); + var o2 = [], n2 = a2.group(); + 0 === s2 && (s2 = 1e-5), t3.forEach(function(t4) { + e2.maxY = Math.max(e2.maxY, t4); + }), i2.config.yaxis[0].max && (this.maxY = i2.config.yaxis[0].max), "back" === i2.config.grid.position && "polarArea" === this.chartType && this.drawPolarElements(this.ret); + for (var l2 = 0; l2 < t3.length; l2++) { + var h2 = this.fullAngle * x.negToZero(t3[l2]) / s2; + o2.push(h2), "polarArea" === this.chartType ? (o2[l2] = this.fullAngle / t3.length, this.sliceSizes.push(i2.globals.radialSize * t3[l2] / this.maxY)) : this.sliceSizes.push(i2.globals.radialSize); + } + if (i2.globals.dataChanged) { + for (var c2, d2 = 0, g2 = 0; g2 < i2.globals.previousPaths.length; g2++) + d2 += x.negToZero(i2.globals.previousPaths[g2]); + for (var u2 = 0; u2 < i2.globals.previousPaths.length; u2++) + c2 = this.fullAngle * x.negToZero(i2.globals.previousPaths[u2]) / d2, this.prevSectorAngleArr.push(c2); + } + this.donutSize < 0 && (this.donutSize = 0); + var p2 = i2.config.plotOptions.pie.customScale, f2 = i2.globals.gridWidth / 2, b2 = i2.globals.gridHeight / 2, v2 = f2 - i2.globals.gridWidth / 2 * p2, y2 = b2 - i2.globals.gridHeight / 2 * p2; + if ("donut" === this.chartType) { + var w2 = a2.drawCircle(this.donutSize); + w2.attr({ cx: this.centerX, cy: this.centerY, fill: i2.config.plotOptions.pie.donut.background ? i2.config.plotOptions.pie.donut.background : "transparent" }), n2.add(w2); + } + var k2 = this.drawArcs(o2, t3); + if (this.sliceLabels.forEach(function(t4) { + k2.add(t4); + }), n2.attr({ transform: "translate(".concat(v2, ", ").concat(y2, ") scale(").concat(p2, ")") }), n2.add(k2), this.ret.add(n2), this.donutDataLabels.show) { + var A2 = this.renderInnerDataLabels(this.donutDataLabels, { hollowSize: this.donutSize, centerX: this.centerX, centerY: this.centerY, opacity: this.donutDataLabels.show, translateX: v2, translateY: y2 }); + this.ret.add(A2); + } + return "front" === i2.config.grid.position && "polarArea" === this.chartType && this.drawPolarElements(this.ret), this.ret; + } }, { key: "drawArcs", value: function(t3, e2) { + var i2 = this.w, a2 = new v(this.ctx), s2 = new m(this.ctx), r2 = new R(this.ctx), o2 = s2.group({ class: "apexcharts-slices" }), n2 = this.initialAngle, l2 = this.initialAngle, h2 = this.initialAngle, c2 = this.initialAngle; + this.strokeWidth = i2.config.stroke.show ? i2.config.stroke.width : 0; + for (var d2 = 0; d2 < t3.length; d2++) { + var g2 = s2.group({ class: "apexcharts-series apexcharts-pie-series", seriesName: x.escapeString(i2.globals.seriesNames[d2]), rel: d2 + 1, "data:realIndex": d2 }); + o2.add(g2), l2 = c2, h2 = (n2 = h2) + t3[d2], c2 = l2 + this.prevSectorAngleArr[d2]; + var u2 = h2 < n2 ? this.fullAngle + h2 - n2 : h2 - n2, p2 = r2.fillPath({ seriesNumber: d2, size: this.sliceSizes[d2], value: e2[d2] }), f2 = this.getChangedPath(l2, c2), b2 = s2.drawPath({ d: f2, stroke: Array.isArray(this.lineColorArr) ? this.lineColorArr[d2] : this.lineColorArr, strokeWidth: 0, fill: p2, fillOpacity: i2.config.fill.opacity, classes: "apexcharts-pie-area apexcharts-".concat(this.chartType.toLowerCase(), "-slice-").concat(d2) }); + if (b2.attr({ index: 0, j: d2 }), a2.setSelectionFilter(b2, 0, d2), i2.config.chart.dropShadow.enabled) { + var y2 = i2.config.chart.dropShadow; + a2.dropShadow(b2, y2, d2); + } + this.addListeners(b2, this.donutDataLabels), m.setAttrs(b2.node, { "data:angle": u2, "data:startAngle": n2, "data:strokeWidth": this.strokeWidth, "data:value": e2[d2] }); + var w2 = { x: 0, y: 0 }; + "pie" === this.chartType || "polarArea" === this.chartType ? w2 = x.polarToCartesian(this.centerX, this.centerY, i2.globals.radialSize / 1.25 + i2.config.plotOptions.pie.dataLabels.offset, (n2 + u2 / 2) % this.fullAngle) : "donut" === this.chartType && (w2 = x.polarToCartesian(this.centerX, this.centerY, (i2.globals.radialSize + this.donutSize) / 2 + i2.config.plotOptions.pie.dataLabels.offset, (n2 + u2 / 2) % this.fullAngle)), g2.add(b2); + var k2 = 0; + if (!this.initialAnim || i2.globals.resized || i2.globals.dataChanged ? this.animBeginArr.push(0) : (0 === (k2 = u2 / this.fullAngle * i2.config.chart.animations.speed) && (k2 = 1), this.animDur = k2 + this.animDur, this.animBeginArr.push(this.animDur)), this.dynamicAnim && i2.globals.dataChanged ? this.animatePaths(b2, { size: this.sliceSizes[d2], endAngle: h2, startAngle: n2, prevStartAngle: l2, prevEndAngle: c2, animateStartingPos: true, i: d2, animBeginArr: this.animBeginArr, shouldSetPrevPaths: true, dur: i2.config.chart.animations.dynamicAnimation.speed }) : this.animatePaths(b2, { size: this.sliceSizes[d2], endAngle: h2, startAngle: n2, i: d2, totalItems: t3.length - 1, animBeginArr: this.animBeginArr, dur: k2 }), i2.config.plotOptions.pie.expandOnClick && "polarArea" !== this.chartType && b2.click(this.pieClicked.bind(this, d2)), void 0 !== i2.globals.selectedDataPoints[0] && i2.globals.selectedDataPoints[0].indexOf(d2) > -1 && this.pieClicked(d2), i2.config.dataLabels.enabled) { + var A2 = w2.x, S2 = w2.y, C2 = 100 * u2 / this.fullAngle + "%"; + if (0 !== u2 && i2.config.plotOptions.pie.dataLabels.minAngleToShowLabel < t3[d2]) { + var L2 = i2.config.dataLabels.formatter; + void 0 !== L2 && (C2 = L2(i2.globals.seriesPercent[d2][0], { seriesIndex: d2, w: i2 })); + var P2 = i2.globals.dataLabels.style.colors[d2], I2 = s2.group({ class: "apexcharts-datalabels" }), M2 = s2.drawText({ x: A2, y: S2, text: C2, textAnchor: "middle", fontSize: i2.config.dataLabels.style.fontSize, fontFamily: i2.config.dataLabels.style.fontFamily, fontWeight: i2.config.dataLabels.style.fontWeight, foreColor: P2 }); + if (I2.add(M2), i2.config.dataLabels.dropShadow.enabled) { + var T2 = i2.config.dataLabels.dropShadow; + a2.dropShadow(M2, T2); + } + M2.node.classList.add("apexcharts-pie-label"), i2.config.chart.animations.animate && false === i2.globals.resized && (M2.node.classList.add("apexcharts-pie-label-delay"), M2.node.style.animationDelay = i2.config.chart.animations.speed / 940 + "s"), this.sliceLabels.push(I2); + } + } + } + return o2; + } }, { key: "addListeners", value: function(t3, e2) { + var i2 = new m(this.ctx); + t3.node.addEventListener("mouseenter", i2.pathMouseEnter.bind(this, t3)), t3.node.addEventListener("mouseleave", i2.pathMouseLeave.bind(this, t3)), t3.node.addEventListener("mouseleave", this.revertDataLabelsInner.bind(this, t3.node, e2)), t3.node.addEventListener("mousedown", i2.pathMouseDown.bind(this, t3)), this.donutDataLabels.total.showAlways || (t3.node.addEventListener("mouseenter", this.printDataLabelsInner.bind(this, t3.node, e2)), t3.node.addEventListener("mousedown", this.printDataLabelsInner.bind(this, t3.node, e2))); + } }, { key: "animatePaths", value: function(t3, e2) { + var i2 = this.w, a2 = e2.endAngle < e2.startAngle ? this.fullAngle + e2.endAngle - e2.startAngle : e2.endAngle - e2.startAngle, s2 = a2, r2 = e2.startAngle, o2 = e2.startAngle; + void 0 !== e2.prevStartAngle && void 0 !== e2.prevEndAngle && (r2 = e2.prevEndAngle, s2 = e2.prevEndAngle < e2.prevStartAngle ? this.fullAngle + e2.prevEndAngle - e2.prevStartAngle : e2.prevEndAngle - e2.prevStartAngle), e2.i === i2.config.series.length - 1 && (a2 + o2 > this.fullAngle ? e2.endAngle = e2.endAngle - (a2 + o2) : a2 + o2 < this.fullAngle && (e2.endAngle = e2.endAngle + (this.fullAngle - (a2 + o2)))), a2 === this.fullAngle && (a2 = this.fullAngle - 0.01), this.animateArc(t3, r2, o2, a2, s2, e2); + } }, { key: "animateArc", value: function(t3, e2, i2, a2, s2, r2) { + var o2, n2 = this, l2 = this.w, h2 = new b(this.ctx), c2 = r2.size; + (isNaN(e2) || isNaN(s2)) && (e2 = i2, s2 = a2, r2.dur = 0); + var d2 = a2, g2 = i2, u2 = e2 < i2 ? this.fullAngle + e2 - i2 : e2 - i2; + l2.globals.dataChanged && r2.shouldSetPrevPaths && r2.prevEndAngle && (o2 = n2.getPiePath({ me: n2, startAngle: r2.prevStartAngle, angle: r2.prevEndAngle < r2.prevStartAngle ? this.fullAngle + r2.prevEndAngle - r2.prevStartAngle : r2.prevEndAngle - r2.prevStartAngle, size: c2 }), t3.attr({ d: o2 })), 0 !== r2.dur ? t3.animate(r2.dur, l2.globals.easing, r2.animBeginArr[r2.i]).afterAll(function() { + "pie" !== n2.chartType && "donut" !== n2.chartType && "polarArea" !== n2.chartType || this.animate(l2.config.chart.animations.dynamicAnimation.speed).attr({ "stroke-width": n2.strokeWidth }), r2.i === l2.config.series.length - 1 && h2.animationCompleted(t3); + }).during(function(l3) { + d2 = u2 + (a2 - u2) * l3, r2.animateStartingPos && (d2 = s2 + (a2 - s2) * l3, g2 = e2 - s2 + (i2 - (e2 - s2)) * l3), o2 = n2.getPiePath({ me: n2, startAngle: g2, angle: d2, size: c2 }), t3.node.setAttribute("data:pathOrig", o2), t3.attr({ d: o2 }); + }) : (o2 = n2.getPiePath({ me: n2, startAngle: g2, angle: a2, size: c2 }), r2.isTrack || (l2.globals.animationEnded = true), t3.node.setAttribute("data:pathOrig", o2), t3.attr({ d: o2, "stroke-width": n2.strokeWidth })); + } }, { key: "pieClicked", value: function(t3) { + var e2, i2 = this.w, a2 = this, s2 = a2.sliceSizes[t3] + (i2.config.plotOptions.pie.expandOnClick ? 4 : 0), r2 = i2.globals.dom.Paper.select(".apexcharts-".concat(a2.chartType.toLowerCase(), "-slice-").concat(t3)).members[0]; + if ("true" !== r2.attr("data:pieClicked")) { + var o2 = i2.globals.dom.baseEl.getElementsByClassName("apexcharts-pie-area"); + Array.prototype.forEach.call(o2, function(t4) { + t4.setAttribute("data:pieClicked", "false"); + var e3 = t4.getAttribute("data:pathOrig"); + e3 && t4.setAttribute("d", e3); + }), r2.attr("data:pieClicked", "true"); + var n2 = parseInt(r2.attr("data:startAngle"), 10), l2 = parseInt(r2.attr("data:angle"), 10); + e2 = a2.getPiePath({ me: a2, startAngle: n2, angle: l2, size: s2 }), 360 !== l2 && r2.plot(e2); + } else { + r2.attr({ "data:pieClicked": "false" }), this.revertDataLabelsInner(r2.node, this.donutDataLabels); + var h2 = r2.attr("data:pathOrig"); + r2.attr({ d: h2 }); + } + } }, { key: "getChangedPath", value: function(t3, e2) { + var i2 = ""; + return this.dynamicAnim && this.w.globals.dataChanged && (i2 = this.getPiePath({ me: this, startAngle: t3, angle: e2 - t3, size: this.size })), i2; + } }, { key: "getPiePath", value: function(t3) { + var e2 = t3.me, i2 = t3.startAngle, a2 = t3.angle, s2 = t3.size, r2 = i2, o2 = Math.PI * (r2 - 90) / 180, n2 = a2 + i2; + Math.ceil(n2) >= this.fullAngle + this.w.config.plotOptions.pie.startAngle % this.fullAngle && (n2 = this.fullAngle + this.w.config.plotOptions.pie.startAngle % this.fullAngle - 0.01), Math.ceil(n2) > this.fullAngle && (n2 -= this.fullAngle); + var l2 = Math.PI * (n2 - 90) / 180, h2 = e2.centerX + s2 * Math.cos(o2), c2 = e2.centerY + s2 * Math.sin(o2), d2 = e2.centerX + s2 * Math.cos(l2), g2 = e2.centerY + s2 * Math.sin(l2), u2 = x.polarToCartesian(e2.centerX, e2.centerY, e2.donutSize, n2), p2 = x.polarToCartesian(e2.centerX, e2.centerY, e2.donutSize, r2), f2 = a2 > 180 ? 1 : 0, b2 = ["M", h2, c2, "A", s2, s2, 0, f2, 1, d2, g2]; + return "donut" === e2.chartType ? [].concat(b2, ["L", u2.x, u2.y, "A", e2.donutSize, e2.donutSize, 0, f2, 0, p2.x, p2.y, "L", h2, c2, "z"]).join(" ") : "pie" === e2.chartType || "polarArea" === e2.chartType ? [].concat(b2, ["L", e2.centerX, e2.centerY, "L", h2, c2]).join(" ") : [].concat(b2).join(" "); + } }, { key: "drawPolarElements", value: function(t3) { + var e2 = this.w, i2 = new _(this.ctx), a2 = new m(this.ctx), s2 = new Ct(this.ctx), r2 = a2.group(), o2 = a2.group(), n2 = i2.niceScale(0, Math.ceil(this.maxY), e2.config.yaxis[0].tickAmount, 0, true), l2 = n2.result.reverse(), h2 = n2.result.length; + this.maxY = n2.niceMax; + for (var c2 = e2.globals.radialSize, d2 = c2 / (h2 - 1), g2 = 0; g2 < h2 - 1; g2++) { + var u2 = a2.drawCircle(c2); + if (u2.attr({ cx: this.centerX, cy: this.centerY, fill: "none", "stroke-width": e2.config.plotOptions.polarArea.rings.strokeWidth, stroke: e2.config.plotOptions.polarArea.rings.strokeColor }), e2.config.yaxis[0].show) { + var p2 = s2.drawYAxisTexts(this.centerX, this.centerY - c2 + parseInt(e2.config.yaxis[0].labels.style.fontSize, 10) / 2, g2, l2[g2]); + o2.add(p2); + } + r2.add(u2), c2 -= d2; + } + this.drawSpokes(t3), t3.add(r2), t3.add(o2); + } }, { key: "renderInnerDataLabels", value: function(t3, e2) { + var i2 = this.w, a2 = new m(this.ctx), s2 = a2.group({ class: "apexcharts-datalabels-group", transform: "translate(".concat(e2.translateX ? e2.translateX : 0, ", ").concat(e2.translateY ? e2.translateY : 0, ") scale(").concat(i2.config.plotOptions.pie.customScale, ")") }), r2 = t3.total.show; + s2.node.style.opacity = e2.opacity; + var o2, n2, l2 = e2.centerX, h2 = e2.centerY; + o2 = void 0 === t3.name.color ? i2.globals.colors[0] : t3.name.color; + var c2 = t3.name.fontSize, d2 = t3.name.fontFamily, g2 = t3.name.fontWeight; + n2 = void 0 === t3.value.color ? i2.config.chart.foreColor : t3.value.color; + var u2 = t3.value.formatter, p2 = "", f2 = ""; + if (r2 ? (o2 = t3.total.color, c2 = t3.total.fontSize, d2 = t3.total.fontFamily, g2 = t3.total.fontWeight, f2 = t3.total.label, p2 = t3.total.formatter(i2)) : 1 === i2.globals.series.length && (p2 = u2(i2.globals.series[0], i2), f2 = i2.globals.seriesNames[0]), f2 && (f2 = t3.name.formatter(f2, t3.total.show, i2)), t3.name.show) { + var x2 = a2.drawText({ x: l2, y: h2 + parseFloat(t3.name.offsetY), text: f2, textAnchor: "middle", foreColor: o2, fontSize: c2, fontWeight: g2, fontFamily: d2 }); + x2.node.classList.add("apexcharts-datalabel-label"), s2.add(x2); + } + if (t3.value.show) { + var b2 = t3.name.show ? parseFloat(t3.value.offsetY) + 16 : t3.value.offsetY, v2 = a2.drawText({ x: l2, y: h2 + b2, text: p2, textAnchor: "middle", foreColor: n2, fontWeight: t3.value.fontWeight, fontSize: t3.value.fontSize, fontFamily: t3.value.fontFamily }); + v2.node.classList.add("apexcharts-datalabel-value"), s2.add(v2); + } + return s2; + } }, { key: "printInnerLabels", value: function(t3, e2, i2, a2) { + var s2, r2 = this.w; + a2 ? s2 = void 0 === t3.name.color ? r2.globals.colors[parseInt(a2.parentNode.getAttribute("rel"), 10) - 1] : t3.name.color : r2.globals.series.length > 1 && t3.total.show && (s2 = t3.total.color); + var o2 = r2.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"), n2 = r2.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value"); + i2 = (0, t3.value.formatter)(i2, r2), a2 || "function" != typeof t3.total.formatter || (i2 = t3.total.formatter(r2)); + var l2 = e2 === t3.total.label; + e2 = t3.name.formatter(e2, l2, r2), null !== o2 && (o2.textContent = e2), null !== n2 && (n2.textContent = i2), null !== o2 && (o2.style.fill = s2); + } }, { key: "printDataLabelsInner", value: function(t3, e2) { + var i2 = this.w, a2 = t3.getAttribute("data:value"), s2 = i2.globals.seriesNames[parseInt(t3.parentNode.getAttribute("rel"), 10) - 1]; + i2.globals.series.length > 1 && this.printInnerLabels(e2, s2, a2, t3); + var r2 = i2.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group"); + null !== r2 && (r2.style.opacity = 1); + } }, { key: "drawSpokes", value: function(t3) { + var e2 = this, i2 = this.w, a2 = new m(this.ctx), s2 = i2.config.plotOptions.polarArea.spokes; + if (0 !== s2.strokeWidth) { + for (var r2 = [], o2 = 360 / i2.globals.series.length, n2 = 0; n2 < i2.globals.series.length; n2++) + r2.push(x.polarToCartesian(this.centerX, this.centerY, i2.globals.radialSize, i2.config.plotOptions.pie.startAngle + o2 * n2)); + r2.forEach(function(i3, r3) { + var o3 = a2.drawLine(i3.x, i3.y, e2.centerX, e2.centerY, Array.isArray(s2.connectorColors) ? s2.connectorColors[r3] : s2.connectorColors); + t3.add(o3); + }); + } + } }, { key: "revertDataLabelsInner", value: function(t3, e2, i2) { + var a2 = this, s2 = this.w, r2 = s2.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group"), o2 = false, n2 = s2.globals.dom.baseEl.getElementsByClassName("apexcharts-pie-area"), l2 = function(t4) { + var i3 = t4.makeSliceOut, s3 = t4.printLabel; + Array.prototype.forEach.call(n2, function(t5) { + "true" === t5.getAttribute("data:pieClicked") && (i3 && (o2 = true), s3 && a2.printDataLabelsInner(t5, e2)); + }); + }; + if (l2({ makeSliceOut: true, printLabel: false }), e2.total.show && s2.globals.series.length > 1) + o2 && !e2.total.showAlways ? l2({ makeSliceOut: false, printLabel: true }) : this.printInnerLabels(e2, e2.total.label, e2.total.formatter(s2)); + else if (l2({ makeSliceOut: false, printLabel: true }), !o2) + if (s2.globals.selectedDataPoints.length && s2.globals.series.length > 1) + if (s2.globals.selectedDataPoints[0].length > 0) { + var h2 = s2.globals.selectedDataPoints[0], c2 = s2.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(), "-slice-").concat(h2)); + this.printDataLabelsInner(c2, e2); + } else + r2 && s2.globals.selectedDataPoints.length && 0 === s2.globals.selectedDataPoints[0].length && (r2.style.opacity = 0); + else + r2 && s2.globals.series.length > 1 && (r2.style.opacity = 0); + } }]), t2; + }(); + var Pt = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.chartType = this.w.config.chart.type, this.initialAnim = this.w.config.chart.animations.enabled, this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled, this.animDur = 0; + var i2 = this.w; + this.graphics = new m(this.ctx), this.lineColorArr = void 0 !== i2.globals.stroke.colors ? i2.globals.stroke.colors : i2.globals.colors, this.defaultSize = i2.globals.svgHeight < i2.globals.svgWidth ? i2.globals.gridHeight + 1.5 * i2.globals.goldenPadding : i2.globals.gridWidth, this.isLog = i2.config.yaxis[0].logarithmic, this.coreUtils = new y(this.ctx), this.maxValue = this.isLog ? this.coreUtils.getLogVal(i2.globals.maxY, 0) : i2.globals.maxY, this.minValue = this.isLog ? this.coreUtils.getLogVal(this.w.globals.minY, 0) : i2.globals.minY, this.polygons = i2.config.plotOptions.radar.polygons, this.strokeWidth = i2.config.stroke.show ? i2.config.stroke.width : 0, this.size = this.defaultSize / 2.1 - this.strokeWidth - i2.config.chart.dropShadow.blur, i2.config.xaxis.labels.show && (this.size = this.size - i2.globals.xAxisLabelsWidth / 1.75), void 0 !== i2.config.plotOptions.radar.size && (this.size = i2.config.plotOptions.radar.size), this.dataRadiusOfPercent = [], this.dataRadius = [], this.angleArr = [], this.yaxisLabelsTextsPos = []; + } + return r(t2, [{ key: "draw", value: function(t3) { + var i2 = this, a2 = this.w, s2 = new R(this.ctx), r2 = [], o2 = new O(this.ctx); + t3.length && (this.dataPointsLen = t3[a2.globals.maxValsInArrayIndex].length), this.disAngle = 2 * Math.PI / this.dataPointsLen; + var n2 = a2.globals.gridWidth / 2, l2 = a2.globals.gridHeight / 2, h2 = n2 + a2.config.plotOptions.radar.offsetX, c2 = l2 + a2.config.plotOptions.radar.offsetY, d2 = this.graphics.group({ class: "apexcharts-radar-series apexcharts-plot-series", transform: "translate(".concat(h2 || 0, ", ").concat(c2 || 0, ")") }), g2 = [], u2 = null, p2 = null; + if (this.yaxisLabels = this.graphics.group({ class: "apexcharts-yaxis" }), t3.forEach(function(t4, n3) { + var l3 = t4.length === a2.globals.dataPoints, h3 = i2.graphics.group().attr({ class: "apexcharts-series", "data:longestSeries": l3, seriesName: x.escapeString(a2.globals.seriesNames[n3]), rel: n3 + 1, "data:realIndex": n3 }); + i2.dataRadiusOfPercent[n3] = [], i2.dataRadius[n3] = [], i2.angleArr[n3] = [], t4.forEach(function(t5, e2) { + var a3 = Math.abs(i2.maxValue - i2.minValue); + t5 += Math.abs(i2.minValue), i2.isLog && (t5 = i2.coreUtils.getLogVal(t5, 0)), i2.dataRadiusOfPercent[n3][e2] = t5 / a3, i2.dataRadius[n3][e2] = i2.dataRadiusOfPercent[n3][e2] * i2.size, i2.angleArr[n3][e2] = e2 * i2.disAngle; + }), g2 = i2.getDataPointsPos(i2.dataRadius[n3], i2.angleArr[n3]); + var c3 = i2.createPaths(g2, { x: 0, y: 0 }); + u2 = i2.graphics.group({ class: "apexcharts-series-markers-wrap apexcharts-element-hidden" }), p2 = i2.graphics.group({ class: "apexcharts-datalabels", "data:realIndex": n3 }), a2.globals.delayedElements.push({ el: u2.node, index: n3 }); + var d3 = { i: n3, realIndex: n3, animationDelay: n3, initialSpeed: a2.config.chart.animations.speed, dataChangeSpeed: a2.config.chart.animations.dynamicAnimation.speed, className: "apexcharts-radar", shouldClipToGrid: false, bindEventsOnPaths: false, stroke: a2.globals.stroke.colors[n3], strokeLineCap: a2.config.stroke.lineCap }, f3 = null; + a2.globals.previousPaths.length > 0 && (f3 = i2.getPreviousPath(n3)); + for (var b2 = 0; b2 < c3.linePathsTo.length; b2++) { + var m2 = i2.graphics.renderPaths(e(e({}, d3), {}, { pathFrom: null === f3 ? c3.linePathsFrom[b2] : f3, pathTo: c3.linePathsTo[b2], strokeWidth: Array.isArray(i2.strokeWidth) ? i2.strokeWidth[n3] : i2.strokeWidth, fill: "none", drawShadow: false })); + h3.add(m2); + var y2 = s2.fillPath({ seriesNumber: n3 }), w2 = i2.graphics.renderPaths(e(e({}, d3), {}, { pathFrom: null === f3 ? c3.areaPathsFrom[b2] : f3, pathTo: c3.areaPathsTo[b2], strokeWidth: 0, fill: y2, drawShadow: false })); + if (a2.config.chart.dropShadow.enabled) { + var k2 = new v(i2.ctx), A2 = a2.config.chart.dropShadow; + k2.dropShadow(w2, Object.assign({}, A2, { noUserSpaceOnUse: true }), n3); + } + h3.add(w2); + } + t4.forEach(function(t5, s3) { + var r3 = new H(i2.ctx).getMarkerConfig({ cssClass: "apexcharts-marker", seriesIndex: n3, dataPointIndex: s3 }), l4 = i2.graphics.drawMarker(g2[s3].x, g2[s3].y, r3); + l4.attr("rel", s3), l4.attr("j", s3), l4.attr("index", n3), l4.node.setAttribute("default-marker-size", r3.pSize); + var c4 = i2.graphics.group({ class: "apexcharts-series-markers" }); + c4 && c4.add(l4), u2.add(c4), h3.add(u2); + var d4 = a2.config.dataLabels; + if (d4.enabled) { + var f4 = d4.formatter(a2.globals.series[n3][s3], { seriesIndex: n3, dataPointIndex: s3, w: a2 }); + o2.plotDataLabelsText({ x: g2[s3].x, y: g2[s3].y, text: f4, textAnchor: "middle", i: n3, j: n3, parent: p2, offsetCorrection: false, dataLabelsConfig: e({}, d4) }); + } + h3.add(p2); + }), r2.push(h3); + }), this.drawPolygons({ parent: d2 }), a2.config.xaxis.labels.show) { + var f2 = this.drawXAxisTexts(); + d2.add(f2); + } + return r2.forEach(function(t4) { + d2.add(t4); + }), d2.add(this.yaxisLabels), d2; + } }, { key: "drawPolygons", value: function(t3) { + for (var e2 = this, i2 = this.w, a2 = t3.parent, s2 = new Ct(this.ctx), r2 = i2.globals.yAxisScale[0].result.reverse(), o2 = r2.length, n2 = [], l2 = this.size / (o2 - 1), h2 = 0; h2 < o2; h2++) + n2[h2] = l2 * h2; + n2.reverse(); + var c2 = [], d2 = []; + n2.forEach(function(t4, i3) { + var a3 = x.getPolygonPos(t4, e2.dataPointsLen), s3 = ""; + a3.forEach(function(t5, a4) { + if (0 === i3) { + var r3 = e2.graphics.drawLine(t5.x, t5.y, 0, 0, Array.isArray(e2.polygons.connectorColors) ? e2.polygons.connectorColors[a4] : e2.polygons.connectorColors); + d2.push(r3); + } + 0 === a4 && e2.yaxisLabelsTextsPos.push({ x: t5.x, y: t5.y }), s3 += t5.x + "," + t5.y + " "; + }), c2.push(s3); + }), c2.forEach(function(t4, s3) { + var r3 = e2.polygons.strokeColors, o3 = e2.polygons.strokeWidth, n3 = e2.graphics.drawPolygon(t4, Array.isArray(r3) ? r3[s3] : r3, Array.isArray(o3) ? o3[s3] : o3, i2.globals.radarPolygons.fill.colors[s3]); + a2.add(n3); + }), d2.forEach(function(t4) { + a2.add(t4); + }), i2.config.yaxis[0].show && this.yaxisLabelsTextsPos.forEach(function(t4, i3) { + var a3 = s2.drawYAxisTexts(t4.x, t4.y, i3, r2[i3]); + e2.yaxisLabels.add(a3); + }); + } }, { key: "drawXAxisTexts", value: function() { + var t3 = this, i2 = this.w, a2 = i2.config.xaxis.labels, s2 = this.graphics.group({ class: "apexcharts-xaxis" }), r2 = x.getPolygonPos(this.size, this.dataPointsLen); + return i2.globals.labels.forEach(function(o2, n2) { + var l2 = i2.config.xaxis.labels.formatter, h2 = new O(t3.ctx); + if (r2[n2]) { + var c2 = t3.getTextPos(r2[n2], t3.size), d2 = l2(o2, { seriesIndex: -1, dataPointIndex: n2, w: i2 }); + h2.plotDataLabelsText({ x: c2.newX, y: c2.newY, text: d2, textAnchor: c2.textAnchor, i: n2, j: n2, parent: s2, color: Array.isArray(a2.style.colors) && a2.style.colors[n2] ? a2.style.colors[n2] : "#a8a8a8", dataLabelsConfig: e({ textAnchor: c2.textAnchor, dropShadow: { enabled: false } }, a2), offsetCorrection: false }); + } + }), s2; + } }, { key: "createPaths", value: function(t3, e2) { + var i2 = this, a2 = [], s2 = [], r2 = [], o2 = []; + if (t3.length) { + s2 = [this.graphics.move(e2.x, e2.y)], o2 = [this.graphics.move(e2.x, e2.y)]; + var n2 = this.graphics.move(t3[0].x, t3[0].y), l2 = this.graphics.move(t3[0].x, t3[0].y); + t3.forEach(function(e3, a3) { + n2 += i2.graphics.line(e3.x, e3.y), l2 += i2.graphics.line(e3.x, e3.y), a3 === t3.length - 1 && (n2 += "Z", l2 += "Z"); + }), a2.push(n2), r2.push(l2); + } + return { linePathsFrom: s2, linePathsTo: a2, areaPathsFrom: o2, areaPathsTo: r2 }; + } }, { key: "getTextPos", value: function(t3, e2) { + var i2 = "middle", a2 = t3.x, s2 = t3.y; + return Math.abs(t3.x) >= 10 ? t3.x > 0 ? (i2 = "start", a2 += 10) : t3.x < 0 && (i2 = "end", a2 -= 10) : i2 = "middle", Math.abs(t3.y) >= e2 - 10 && (t3.y < 0 ? s2 -= 10 : t3.y > 0 && (s2 += 10)), { textAnchor: i2, newX: a2, newY: s2 }; + } }, { key: "getPreviousPath", value: function(t3) { + for (var e2 = this.w, i2 = null, a2 = 0; a2 < e2.globals.previousPaths.length; a2++) { + var s2 = e2.globals.previousPaths[a2]; + s2.paths.length > 0 && parseInt(s2.realIndex, 10) === parseInt(t3, 10) && void 0 !== e2.globals.previousPaths[a2].paths[0] && (i2 = e2.globals.previousPaths[a2].paths[0].d); + } + return i2; + } }, { key: "getDataPointsPos", value: function(t3, e2) { + var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.dataPointsLen; + t3 = t3 || [], e2 = e2 || []; + for (var a2 = [], s2 = 0; s2 < i2; s2++) { + var r2 = {}; + r2.x = t3[s2] * Math.sin(e2[s2]), r2.y = -t3[s2] * Math.cos(e2[s2]), a2.push(r2); + } + return a2; + } }]), t2; + }(); + var It = function(t2) { + n(i2, Lt); + var e2 = d(i2); + function i2(t3) { + var s2; + a(this, i2), (s2 = e2.call(this, t3)).ctx = t3, s2.w = t3.w, s2.animBeginArr = [0], s2.animDur = 0; + var r2 = s2.w; + return s2.startAngle = r2.config.plotOptions.radialBar.startAngle, s2.endAngle = r2.config.plotOptions.radialBar.endAngle, s2.totalAngle = Math.abs(r2.config.plotOptions.radialBar.endAngle - r2.config.plotOptions.radialBar.startAngle), s2.trackStartAngle = r2.config.plotOptions.radialBar.track.startAngle, s2.trackEndAngle = r2.config.plotOptions.radialBar.track.endAngle, s2.donutDataLabels = s2.w.config.plotOptions.radialBar.dataLabels, s2.radialDataLabels = s2.donutDataLabels, s2.trackStartAngle || (s2.trackStartAngle = s2.startAngle), s2.trackEndAngle || (s2.trackEndAngle = s2.endAngle), 360 === s2.endAngle && (s2.endAngle = 359.99), s2.margin = parseInt(r2.config.plotOptions.radialBar.track.margin, 10), s2; + } + return r(i2, [{ key: "draw", value: function(t3) { + var e3 = this.w, i3 = new m(this.ctx), a2 = i3.group({ class: "apexcharts-radialbar" }); + if (e3.globals.noData) + return a2; + var s2 = i3.group(), r2 = this.defaultSize / 2, o2 = e3.globals.gridWidth / 2, n2 = this.defaultSize / 2.05; + e3.config.chart.sparkline.enabled || (n2 = n2 - e3.config.stroke.width - e3.config.chart.dropShadow.blur); + var l2 = e3.globals.fill.colors; + if (e3.config.plotOptions.radialBar.track.show) { + var h2 = this.drawTracks({ size: n2, centerX: o2, centerY: r2, colorArr: l2, series: t3 }); + s2.add(h2); + } + var c2 = this.drawArcs({ size: n2, centerX: o2, centerY: r2, colorArr: l2, series: t3 }), d2 = 360; + e3.config.plotOptions.radialBar.startAngle < 0 && (d2 = this.totalAngle); + var g2 = (360 - d2) / 360; + if (e3.globals.radialSize = n2 - n2 * g2, this.radialDataLabels.value.show) { + var u2 = Math.max(this.radialDataLabels.value.offsetY, this.radialDataLabels.name.offsetY); + e3.globals.radialSize += u2 * g2; + } + return s2.add(c2.g), "front" === e3.config.plotOptions.radialBar.hollow.position && (c2.g.add(c2.elHollow), c2.dataLabels && c2.g.add(c2.dataLabels)), a2.add(s2), a2; + } }, { key: "drawTracks", value: function(t3) { + var e3 = this.w, i3 = new m(this.ctx), a2 = i3.group({ class: "apexcharts-tracks" }), s2 = new v(this.ctx), r2 = new R(this.ctx), o2 = this.getStrokeWidth(t3); + t3.size = t3.size - o2 / 2; + for (var n2 = 0; n2 < t3.series.length; n2++) { + var l2 = i3.group({ class: "apexcharts-radialbar-track apexcharts-track" }); + a2.add(l2), l2.attr({ rel: n2 + 1 }), t3.size = t3.size - o2 - this.margin; + var h2 = e3.config.plotOptions.radialBar.track, c2 = r2.fillPath({ seriesNumber: 0, size: t3.size, fillColors: Array.isArray(h2.background) ? h2.background[n2] : h2.background, solid: true }), d2 = this.trackStartAngle, g2 = this.trackEndAngle; + Math.abs(g2) + Math.abs(d2) >= 360 && (g2 = 360 - Math.abs(this.startAngle) - 0.1); + var u2 = i3.drawPath({ d: "", stroke: c2, strokeWidth: o2 * parseInt(h2.strokeWidth, 10) / 100, fill: "none", strokeOpacity: h2.opacity, classes: "apexcharts-radialbar-area" }); + if (h2.dropShadow.enabled) { + var p2 = h2.dropShadow; + s2.dropShadow(u2, p2); + } + l2.add(u2), u2.attr("id", "apexcharts-radialbarTrack-" + n2), this.animatePaths(u2, { centerX: t3.centerX, centerY: t3.centerY, endAngle: g2, startAngle: d2, size: t3.size, i: n2, totalItems: 2, animBeginArr: 0, dur: 0, isTrack: true, easing: e3.globals.easing }); + } + return a2; + } }, { key: "drawArcs", value: function(t3) { + var e3 = this.w, i3 = new m(this.ctx), a2 = new R(this.ctx), s2 = new v(this.ctx), r2 = i3.group(), o2 = this.getStrokeWidth(t3); + t3.size = t3.size - o2 / 2; + var n2 = e3.config.plotOptions.radialBar.hollow.background, l2 = t3.size - o2 * t3.series.length - this.margin * t3.series.length - o2 * parseInt(e3.config.plotOptions.radialBar.track.strokeWidth, 10) / 100 / 2, h2 = l2 - e3.config.plotOptions.radialBar.hollow.margin; + void 0 !== e3.config.plotOptions.radialBar.hollow.image && (n2 = this.drawHollowImage(t3, r2, l2, n2)); + var c2 = this.drawHollow({ size: h2, centerX: t3.centerX, centerY: t3.centerY, fill: n2 || "transparent" }); + if (e3.config.plotOptions.radialBar.hollow.dropShadow.enabled) { + var d2 = e3.config.plotOptions.radialBar.hollow.dropShadow; + s2.dropShadow(c2, d2); + } + var g2 = 1; + !this.radialDataLabels.total.show && e3.globals.series.length > 1 && (g2 = 0); + var u2 = null; + this.radialDataLabels.show && (u2 = this.renderInnerDataLabels(this.radialDataLabels, { hollowSize: l2, centerX: t3.centerX, centerY: t3.centerY, opacity: g2 })), "back" === e3.config.plotOptions.radialBar.hollow.position && (r2.add(c2), u2 && r2.add(u2)); + var p2 = false; + e3.config.plotOptions.radialBar.inverseOrder && (p2 = true); + for (var f2 = p2 ? t3.series.length - 1 : 0; p2 ? f2 >= 0 : f2 < t3.series.length; p2 ? f2-- : f2++) { + var b2 = i3.group({ class: "apexcharts-series apexcharts-radial-series", seriesName: x.escapeString(e3.globals.seriesNames[f2]) }); + r2.add(b2), b2.attr({ rel: f2 + 1, "data:realIndex": f2 }), this.ctx.series.addCollapsedClassToSeries(b2, f2), t3.size = t3.size - o2 - this.margin; + var y2 = a2.fillPath({ seriesNumber: f2, size: t3.size, value: t3.series[f2] }), w2 = this.startAngle, k2 = void 0, A2 = x.negToZero(t3.series[f2] > 100 ? 100 : t3.series[f2]) / 100, S2 = Math.round(this.totalAngle * A2) + this.startAngle, C2 = void 0; + e3.globals.dataChanged && (k2 = this.startAngle, C2 = Math.round(this.totalAngle * x.negToZero(e3.globals.previousPaths[f2]) / 100) + k2), Math.abs(S2) + Math.abs(w2) >= 360 && (S2 -= 0.01), Math.abs(C2) + Math.abs(k2) >= 360 && (C2 -= 0.01); + var L2 = S2 - w2, P2 = Array.isArray(e3.config.stroke.dashArray) ? e3.config.stroke.dashArray[f2] : e3.config.stroke.dashArray, I2 = i3.drawPath({ d: "", stroke: y2, strokeWidth: o2, fill: "none", fillOpacity: e3.config.fill.opacity, classes: "apexcharts-radialbar-area apexcharts-radialbar-slice-" + f2, strokeDashArray: P2 }); + if (m.setAttrs(I2.node, { "data:angle": L2, "data:value": t3.series[f2] }), e3.config.chart.dropShadow.enabled) { + var M2 = e3.config.chart.dropShadow; + s2.dropShadow(I2, M2, f2); + } + s2.setSelectionFilter(I2, 0, f2), this.addListeners(I2, this.radialDataLabels), b2.add(I2), I2.attr({ index: 0, j: f2 }); + var T2 = 0; + !this.initialAnim || e3.globals.resized || e3.globals.dataChanged || (T2 = e3.config.chart.animations.speed), e3.globals.dataChanged && (T2 = e3.config.chart.animations.dynamicAnimation.speed), this.animDur = T2 / (1.2 * t3.series.length) + this.animDur, this.animBeginArr.push(this.animDur), this.animatePaths(I2, { centerX: t3.centerX, centerY: t3.centerY, endAngle: S2, startAngle: w2, prevEndAngle: C2, prevStartAngle: k2, size: t3.size, i: f2, totalItems: 2, animBeginArr: this.animBeginArr, dur: T2, shouldSetPrevPaths: true, easing: e3.globals.easing }); + } + return { g: r2, elHollow: c2, dataLabels: u2 }; + } }, { key: "drawHollow", value: function(t3) { + var e3 = new m(this.ctx).drawCircle(2 * t3.size); + return e3.attr({ class: "apexcharts-radialbar-hollow", cx: t3.centerX, cy: t3.centerY, r: t3.size, fill: t3.fill }), e3; + } }, { key: "drawHollowImage", value: function(t3, e3, i3, a2) { + var s2 = this.w, r2 = new R(this.ctx), o2 = x.randomId(), n2 = s2.config.plotOptions.radialBar.hollow.image; + if (s2.config.plotOptions.radialBar.hollow.imageClipped) + r2.clippedImgArea({ width: i3, height: i3, image: n2, patternID: "pattern".concat(s2.globals.cuid).concat(o2) }), a2 = "url(#pattern".concat(s2.globals.cuid).concat(o2, ")"); + else { + var l2 = s2.config.plotOptions.radialBar.hollow.imageWidth, h2 = s2.config.plotOptions.radialBar.hollow.imageHeight; + if (void 0 === l2 && void 0 === h2) { + var c2 = s2.globals.dom.Paper.image(n2).loaded(function(e4) { + this.move(t3.centerX - e4.width / 2 + s2.config.plotOptions.radialBar.hollow.imageOffsetX, t3.centerY - e4.height / 2 + s2.config.plotOptions.radialBar.hollow.imageOffsetY); + }); + e3.add(c2); + } else { + var d2 = s2.globals.dom.Paper.image(n2).loaded(function(e4) { + this.move(t3.centerX - l2 / 2 + s2.config.plotOptions.radialBar.hollow.imageOffsetX, t3.centerY - h2 / 2 + s2.config.plotOptions.radialBar.hollow.imageOffsetY), this.size(l2, h2); + }); + e3.add(d2); + } + } + return a2; + } }, { key: "getStrokeWidth", value: function(t3) { + var e3 = this.w; + return t3.size * (100 - parseInt(e3.config.plotOptions.radialBar.hollow.size, 10)) / 100 / (t3.series.length + 1) - this.margin; + } }]), i2; + }(); + var Mt = function(t2) { + n(s2, yt); + var i2 = d(s2); + function s2() { + return a(this, s2), i2.apply(this, arguments); + } + return r(s2, [{ key: "draw", value: function(t3, i3) { + var a2 = this.w, s3 = new m(this.ctx); + this.rangeBarOptions = this.w.config.plotOptions.rangeBar, this.series = t3, this.seriesRangeStart = a2.globals.seriesRangeStart, this.seriesRangeEnd = a2.globals.seriesRangeEnd, this.barHelpers.initVariables(t3); + for (var r2 = s3.group({ class: "apexcharts-rangebar-series apexcharts-plot-series" }), n2 = 0; n2 < t3.length; n2++) { + var l2, h2, c2, d2, g2 = void 0, u2 = void 0, p2 = a2.globals.comboCharts ? i3[n2] : n2, f2 = s3.group({ class: "apexcharts-series", seriesName: x.escapeString(a2.globals.seriesNames[p2]), rel: n2 + 1, "data:realIndex": p2 }); + this.ctx.series.addCollapsedClassToSeries(f2, p2), t3[n2].length > 0 && (this.visibleI = this.visibleI + 1); + var b2 = 0, v2 = 0; + this.yRatio.length > 1 && (this.yaxisIndex = p2); + var y2 = this.barHelpers.initialPositions(); + u2 = y2.y, d2 = y2.zeroW, g2 = y2.x, v2 = y2.barWidth, b2 = y2.barHeight, l2 = y2.xDivision, h2 = y2.yDivision, c2 = y2.zeroH; + for (var w2 = s3.group({ class: "apexcharts-datalabels", "data:realIndex": p2 }), k2 = s3.group({ class: "apexcharts-rangebar-goals-markers" }), A2 = 0; A2 < a2.globals.dataPoints; A2++) { + var S2, C2 = this.barHelpers.getStrokeWidth(n2, A2, p2), L2 = this.seriesRangeStart[n2][A2], P2 = this.seriesRangeEnd[n2][A2], I2 = null, M2 = null, T2 = null, z2 = { x: g2, y: u2, strokeWidth: C2, elSeries: f2 }, X2 = this.seriesLen; + if (a2.config.plotOptions.bar.rangeBarGroupRows && (X2 = 1), void 0 === a2.config.series[n2].data[A2]) + break; + if (this.isHorizontal) { + T2 = u2 + b2 * this.visibleI; + var E2 = (h2 - b2 * X2) / 2; + if (a2.config.series[n2].data[A2].x) { + var Y2 = this.detectOverlappingBars({ i: n2, j: A2, barYPosition: T2, srty: E2, barHeight: b2, yDivision: h2, initPositions: y2 }); + b2 = Y2.barHeight, T2 = Y2.barYPosition; + } + v2 = (I2 = this.drawRangeBarPaths(e({ indexes: { i: n2, j: A2, realIndex: p2 }, barHeight: b2, barYPosition: T2, zeroW: d2, yDivision: h2, y1: L2, y2: P2 }, z2))).barWidth; + } else { + a2.globals.isXNumeric && (g2 = (a2.globals.seriesX[n2][A2] - a2.globals.minX) / this.xRatio - v2 / 2), M2 = g2 + v2 * this.visibleI; + var F2 = (l2 - v2 * X2) / 2; + if (a2.config.series[n2].data[A2].x) { + var R2 = this.detectOverlappingBars({ i: n2, j: A2, barXPosition: M2, srtx: F2, barWidth: v2, xDivision: l2, initPositions: y2 }); + v2 = R2.barWidth, M2 = R2.barXPosition; + } + b2 = (I2 = this.drawRangeColumnPaths(e({ indexes: { i: n2, j: A2, realIndex: p2 }, barWidth: v2, barXPosition: M2, zeroH: c2, xDivision: l2 }, z2))).barHeight; + } + var H2 = this.barHelpers.drawGoalLine({ barXPosition: I2.barXPosition, barYPosition: T2, goalX: I2.goalX, goalY: I2.goalY, barHeight: b2, barWidth: v2 }); + H2 && k2.add(H2), u2 = I2.y, g2 = I2.x; + var D2 = this.barHelpers.getPathFillColor(t3, n2, A2, p2), O2 = a2.globals.stroke.colors[p2]; + this.renderSeries((o(S2 = { realIndex: p2, pathFill: D2, lineFill: O2, j: A2, i: n2, x: g2, y: u2, y1: L2, y2: P2, pathFrom: I2.pathFrom, pathTo: I2.pathTo, strokeWidth: C2, elSeries: f2, series: t3, barHeight: b2, barWidth: v2, barXPosition: M2, barYPosition: T2 }, "barWidth", v2), o(S2, "elDataLabelsWrap", w2), o(S2, "elGoalsMarkers", k2), o(S2, "visibleSeries", this.visibleI), o(S2, "type", "rangebar"), S2)); + } + r2.add(f2); + } + return r2; + } }, { key: "detectOverlappingBars", value: function(t3) { + var e2 = t3.i, i3 = t3.j, a2 = t3.barYPosition, s3 = t3.barXPosition, r2 = t3.srty, o2 = t3.srtx, n2 = t3.barHeight, l2 = t3.barWidth, h2 = t3.yDivision, c2 = t3.xDivision, d2 = t3.initPositions, g2 = this.w, u2 = [], p2 = g2.config.series[e2].data[i3].rangeName, f2 = g2.config.series[e2].data[i3].x, x2 = Array.isArray(f2) ? f2.join(" ") : f2, b2 = g2.globals.labels.map(function(t4) { + return Array.isArray(t4) ? t4.join(" ") : t4; + }).indexOf(x2), v2 = g2.globals.seriesRange[e2].findIndex(function(t4) { + return t4.x === x2 && t4.overlaps.length > 0; + }); + return this.isHorizontal ? (a2 = g2.config.plotOptions.bar.rangeBarGroupRows ? r2 + h2 * b2 : r2 + n2 * this.visibleI + h2 * b2, v2 > -1 && !g2.config.plotOptions.bar.rangeBarOverlap && (u2 = g2.globals.seriesRange[e2][v2].overlaps).indexOf(p2) > -1 && (a2 = (n2 = d2.barHeight / u2.length) * this.visibleI + h2 * (100 - parseInt(this.barOptions.barHeight, 10)) / 100 / 2 + n2 * (this.visibleI + u2.indexOf(p2)) + h2 * b2)) : (b2 > -1 && (s3 = g2.config.plotOptions.bar.rangeBarGroupRows ? o2 + c2 * b2 : o2 + l2 * this.visibleI + c2 * b2), v2 > -1 && !g2.config.plotOptions.bar.rangeBarOverlap && (u2 = g2.globals.seriesRange[e2][v2].overlaps).indexOf(p2) > -1 && (s3 = (l2 = d2.barWidth / u2.length) * this.visibleI + c2 * (100 - parseInt(this.barOptions.barWidth, 10)) / 100 / 2 + l2 * (this.visibleI + u2.indexOf(p2)) + c2 * b2)), { barYPosition: a2, barXPosition: s3, barHeight: n2, barWidth: l2 }; + } }, { key: "drawRangeColumnPaths", value: function(t3) { + var e2 = t3.indexes, i3 = t3.x, a2 = t3.xDivision, s3 = t3.barWidth, r2 = t3.barXPosition, o2 = t3.zeroH, n2 = this.w, l2 = e2.i, h2 = e2.j, c2 = this.yRatio[this.yaxisIndex], d2 = e2.realIndex, g2 = this.getRangeValue(d2, h2), u2 = Math.min(g2.start, g2.end), p2 = Math.max(g2.start, g2.end); + void 0 === this.series[l2][h2] || null === this.series[l2][h2] ? u2 = o2 : (u2 = o2 - u2 / c2, p2 = o2 - p2 / c2); + var f2 = Math.abs(p2 - u2), x2 = this.barHelpers.getColumnPaths({ barXPosition: r2, barWidth: s3, y1: u2, y2: p2, strokeWidth: this.strokeWidth, series: this.seriesRangeEnd, realIndex: e2.realIndex, i: d2, j: h2, w: n2 }); + if (n2.globals.isXNumeric) { + var b2 = this.getBarXForNumericXAxis({ x: i3, j: h2, realIndex: d2, barWidth: s3 }); + i3 = b2.x, r2 = b2.barXPosition; + } else + i3 += a2; + return { pathTo: x2.pathTo, pathFrom: x2.pathFrom, barHeight: f2, x: i3, y: p2, goalY: this.barHelpers.getGoalValues("y", null, o2, l2, h2), barXPosition: r2 }; + } }, { key: "drawRangeBarPaths", value: function(t3) { + var e2 = t3.indexes, i3 = t3.y, a2 = t3.y1, s3 = t3.y2, r2 = t3.yDivision, o2 = t3.barHeight, n2 = t3.barYPosition, l2 = t3.zeroW, h2 = this.w, c2 = l2 + a2 / this.invertedYRatio, d2 = l2 + s3 / this.invertedYRatio, g2 = Math.abs(d2 - c2), u2 = this.barHelpers.getBarpaths({ barYPosition: n2, barHeight: o2, x1: c2, x2: d2, strokeWidth: this.strokeWidth, series: this.seriesRangeEnd, i: e2.realIndex, realIndex: e2.realIndex, j: e2.j, w: h2 }); + return h2.globals.isXNumeric || (i3 += r2), { pathTo: u2.pathTo, pathFrom: u2.pathFrom, barWidth: g2, x: d2, goalX: this.barHelpers.getGoalValues("x", l2, null, e2.realIndex, e2.j), y: i3 }; + } }, { key: "getRangeValue", value: function(t3, e2) { + var i3 = this.w; + return { start: i3.globals.seriesRangeStart[t3][e2], end: i3.globals.seriesRangeEnd[t3][e2] }; + } }]), s2; + }(); + var Tt = function() { + function t2(e2) { + a(this, t2), this.w = e2.w, this.lineCtx = e2; + } + return r(t2, [{ key: "sameValueSeriesFix", value: function(t3, e2) { + var i2 = this.w; + if (("gradient" === i2.config.fill.type || "gradient" === i2.config.fill.type[t3]) && new y(this.lineCtx.ctx, i2).seriesHaveSameValues(t3)) { + var a2 = e2[t3].slice(); + a2[a2.length - 1] = a2[a2.length - 1] + 1e-6, e2[t3] = a2; + } + return e2; + } }, { key: "calculatePoints", value: function(t3) { + var e2 = t3.series, i2 = t3.realIndex, a2 = t3.x, s2 = t3.y, r2 = t3.i, o2 = t3.j, n2 = t3.prevY, l2 = this.w, h2 = [], c2 = []; + if (0 === o2) { + var d2 = this.lineCtx.categoryAxisCorrection + l2.config.markers.offsetX; + l2.globals.isXNumeric && (d2 = (l2.globals.seriesX[i2][0] - l2.globals.minX) / this.lineCtx.xRatio + l2.config.markers.offsetX), h2.push(d2), c2.push(x.isNumber(e2[r2][0]) ? n2 + l2.config.markers.offsetY : null), h2.push(a2 + l2.config.markers.offsetX), c2.push(x.isNumber(e2[r2][o2 + 1]) ? s2 + l2.config.markers.offsetY : null); + } else + h2.push(a2 + l2.config.markers.offsetX), c2.push(x.isNumber(e2[r2][o2 + 1]) ? s2 + l2.config.markers.offsetY : null); + return { x: h2, y: c2 }; + } }, { key: "checkPreviousPaths", value: function(t3) { + for (var e2 = t3.pathFromLine, i2 = t3.pathFromArea, a2 = t3.realIndex, s2 = this.w, r2 = 0; r2 < s2.globals.previousPaths.length; r2++) { + var o2 = s2.globals.previousPaths[r2]; + ("line" === o2.type || "area" === o2.type) && o2.paths.length > 0 && parseInt(o2.realIndex, 10) === parseInt(a2, 10) && ("line" === o2.type ? (this.lineCtx.appendPathFrom = false, e2 = s2.globals.previousPaths[r2].paths[0].d) : "area" === o2.type && (this.lineCtx.appendPathFrom = false, i2 = s2.globals.previousPaths[r2].paths[0].d, s2.config.stroke.show && s2.globals.previousPaths[r2].paths[1] && (e2 = s2.globals.previousPaths[r2].paths[1].d))); + } + return { pathFromLine: e2, pathFromArea: i2 }; + } }, { key: "determineFirstPrevY", value: function(t3) { + var e2, i2 = t3.i, a2 = t3.series, s2 = t3.prevY, r2 = t3.lineYPosition, o2 = this.w; + if (void 0 !== (null === (e2 = a2[i2]) || void 0 === e2 ? void 0 : e2[0])) + s2 = (r2 = o2.config.chart.stacked && i2 > 0 ? this.lineCtx.prevSeriesY[i2 - 1][0] : this.lineCtx.zeroY) - a2[i2][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] + 2 * (this.lineCtx.isReversed ? a2[i2][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] : 0); + else if (o2.config.chart.stacked && i2 > 0 && void 0 === a2[i2][0]) { + for (var n2 = i2 - 1; n2 >= 0; n2--) + if (null !== a2[n2][0] && void 0 !== a2[n2][0]) { + s2 = r2 = this.lineCtx.prevSeriesY[n2][0]; + break; + } + } + return { prevY: s2, lineYPosition: r2 }; + } }]), t2; + }(); + var zt = function(t2) { + for (var e2, i2, a2, s2, r2 = function(t3) { + for (var e3 = [], i3 = t3[0], a3 = t3[1], s3 = e3[0] = Yt(i3, a3), r3 = 1, o3 = t3.length - 1; r3 < o3; r3++) + i3 = a3, a3 = t3[r3 + 1], e3[r3] = 0.5 * (s3 + (s3 = Yt(i3, a3))); + return e3[r3] = s3, e3; + }(t2), o2 = t2.length - 1, n2 = [], l2 = 0; l2 < o2; l2++) + a2 = Yt(t2[l2], t2[l2 + 1]), Math.abs(a2) < 1e-6 ? r2[l2] = r2[l2 + 1] = 0 : (s2 = (e2 = r2[l2] / a2) * e2 + (i2 = r2[l2 + 1] / a2) * i2) > 9 && (s2 = 3 * a2 / Math.sqrt(s2), r2[l2] = s2 * e2, r2[l2 + 1] = s2 * i2); + for (var h2 = 0; h2 <= o2; h2++) + s2 = (t2[Math.min(o2, h2 + 1)][0] - t2[Math.max(0, h2 - 1)][0]) / (6 * (1 + r2[h2] * r2[h2])), n2.push([s2 || 0, r2[h2] * s2 || 0]); + return n2; + }; + var Xt = function(t2) { + for (var e2 = "", i2 = 0; i2 < t2.length; i2++) { + var a2 = t2[i2], s2 = t2[i2 - 1], r2 = a2.length, o2 = null == s2 ? void 0 : s2.length; + i2 > 1 && Math.abs(a2[r2 - 2] - s2[o2 - 2]) < 30 ? (e2 += "Q".concat(a2[0], ", ").concat(a2[1]), e2 += ", ".concat(a2[2], ", ").concat(a2[3])) : r2 > 4 ? (e2 += "C".concat(a2[0], ", ").concat(a2[1]), e2 += ", ".concat(a2[2], ", ").concat(a2[3]), e2 += ", ".concat(a2[4], ", ").concat(a2[5])) : r2 > 2 && (e2 += "S".concat(a2[0], ", ").concat(a2[1]), e2 += ", ".concat(a2[2], ", ").concat(a2[3])); + } + return e2; + }; + var Et = function(t2) { + var e2 = zt(t2), i2 = t2[1], a2 = t2[0], s2 = [], r2 = e2[1], o2 = e2[0]; + s2.push(a2, [a2[0] + o2[0], a2[1] + o2[1], i2[0] - r2[0], i2[1] - r2[1], i2[0], i2[1]]); + for (var n2 = 2, l2 = e2.length; n2 < l2; n2++) { + var h2 = t2[n2], c2 = e2[n2]; + s2.push([h2[0] - c2[0], h2[1] - c2[1], h2[0], h2[1]]); + } + return s2; + }; + function Yt(t2, e2) { + return (e2[1] - t2[1]) / (e2[0] - t2[0]); + } + var Ft = function() { + function t2(e2, i2, s2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.xyRatios = i2, this.pointsChart = !("bubble" !== this.w.config.chart.type && "scatter" !== this.w.config.chart.type) || s2, this.scatter = new D(this.ctx), this.noNegatives = this.w.globals.minX === Number.MAX_VALUE, this.lineHelpers = new Tt(this), this.markers = new H(this.ctx), this.prevSeriesY = [], this.categoryAxisCorrection = 0, this.yaxisIndex = 0; + } + return r(t2, [{ key: "draw", value: function(t3, i2, a2, s2) { + var r2, o2 = this.w, n2 = new m(this.ctx), l2 = o2.globals.comboCharts ? i2 : o2.config.chart.type, h2 = n2.group({ class: "apexcharts-".concat(l2, "-series apexcharts-plot-series") }), c2 = new y(this.ctx, o2); + this.yRatio = this.xyRatios.yRatio, this.zRatio = this.xyRatios.zRatio, this.xRatio = this.xyRatios.xRatio, this.baseLineY = this.xyRatios.baseLineY, t3 = c2.getLogSeries(t3), this.yRatio = c2.getLogYRatios(this.yRatio); + for (var d2 = [], g2 = 0; g2 < t3.length; g2++) { + t3 = this.lineHelpers.sameValueSeriesFix(g2, t3); + var u2 = o2.globals.comboCharts ? a2[g2] : g2; + this._initSerieVariables(t3, g2, u2); + var p2 = [], f2 = [], x2 = [], b2 = o2.globals.padHorizontal + this.categoryAxisCorrection; + this.ctx.series.addCollapsedClassToSeries(this.elSeries, u2), o2.globals.isXNumeric && o2.globals.seriesX.length > 0 && (b2 = (o2.globals.seriesX[u2][0] - o2.globals.minX) / this.xRatio), x2.push(b2); + var v2 = b2, w2 = this.zeroY, k2 = this.zeroY; + w2 = this.lineHelpers.determineFirstPrevY({ i: g2, series: t3, prevY: w2, lineYPosition: 0 }).prevY, "smooth" === o2.config.stroke.curve && null === t3[g2][0] ? p2.push(null) : p2.push(w2); + "rangeArea" === l2 && (k2 = this.lineHelpers.determineFirstPrevY({ i: g2, series: s2, prevY: k2, lineYPosition: 0 }).prevY, f2.push(k2)); + var A2 = { type: l2, series: t3, realIndex: u2, i: g2, x: b2, y: 1, pathsFrom: this._calculatePathsFrom({ type: l2, series: t3, i: g2, realIndex: u2, prevX: v2, prevY: w2, prevY2: k2 }), linePaths: [], areaPaths: [], seriesIndex: a2, lineYPosition: 0, xArrj: x2, yArrj: p2, y2Arrj: f2, seriesRangeEnd: s2 }, S2 = this._iterateOverDataPoints(e(e({}, A2), {}, { iterations: "rangeArea" === l2 ? t3[g2].length - 1 : void 0, isRangeStart: true })); + if ("rangeArea" === l2) { + var C2 = this._calculatePathsFrom({ series: s2, i: g2, realIndex: u2, prevX: v2, prevY: k2 }), L2 = this._iterateOverDataPoints(e(e({}, A2), {}, { series: s2, pathsFrom: C2, iterations: s2[g2].length - 1, isRangeStart: false })); + S2.linePaths[0] = L2.linePath + S2.linePath, S2.pathFromLine = L2.pathFromLine + S2.pathFromLine; + } + this._handlePaths({ type: l2, realIndex: u2, i: g2, paths: S2 }), this.elSeries.add(this.elPointsMain), this.elSeries.add(this.elDataLabelsWrap), d2.push(this.elSeries); + } + if (void 0 !== (null === (r2 = o2.config.series[0]) || void 0 === r2 ? void 0 : r2.zIndex) && d2.sort(function(t4, e2) { + return Number(t4.node.getAttribute("zIndex")) - Number(e2.node.getAttribute("zIndex")); + }), o2.config.chart.stacked) + for (var P2 = d2.length; P2 > 0; P2--) + h2.add(d2[P2 - 1]); + else + for (var I2 = 0; I2 < d2.length; I2++) + h2.add(d2[I2]); + return h2; + } }, { key: "_initSerieVariables", value: function(t3, e2, i2) { + var a2 = this.w, s2 = new m(this.ctx); + this.xDivision = a2.globals.gridWidth / (a2.globals.dataPoints - ("on" === a2.config.xaxis.tickPlacement ? 1 : 0)), this.strokeWidth = Array.isArray(a2.config.stroke.width) ? a2.config.stroke.width[i2] : a2.config.stroke.width, this.yRatio.length > 1 && (this.yaxisIndex = i2), this.isReversed = a2.config.yaxis[this.yaxisIndex] && a2.config.yaxis[this.yaxisIndex].reversed, this.zeroY = a2.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? a2.globals.gridHeight : 0) + (this.isReversed ? 2 * this.baseLineY[this.yaxisIndex] : 0), this.areaBottomY = this.zeroY, (this.zeroY > a2.globals.gridHeight || "end" === a2.config.plotOptions.area.fillTo) && (this.areaBottomY = a2.globals.gridHeight), this.categoryAxisCorrection = this.xDivision / 2, this.elSeries = s2.group({ class: "apexcharts-series", zIndex: void 0 !== a2.config.series[i2].zIndex ? a2.config.series[i2].zIndex : i2, seriesName: x.escapeString(a2.globals.seriesNames[i2]) }), this.elPointsMain = s2.group({ class: "apexcharts-series-markers-wrap", "data:realIndex": i2 }), this.elDataLabelsWrap = s2.group({ class: "apexcharts-datalabels", "data:realIndex": i2 }); + var r2 = t3[e2].length === a2.globals.dataPoints; + this.elSeries.attr({ "data:longestSeries": r2, rel: e2 + 1, "data:realIndex": i2 }), this.appendPathFrom = true; + } }, { key: "_calculatePathsFrom", value: function(t3) { + var e2, i2, a2, s2, r2 = t3.type, o2 = t3.series, n2 = t3.i, l2 = t3.realIndex, h2 = t3.prevX, c2 = t3.prevY, d2 = t3.prevY2, g2 = this.w, u2 = new m(this.ctx); + if (null === o2[n2][0]) { + for (var p2 = 0; p2 < o2[n2].length; p2++) + if (null !== o2[n2][p2]) { + h2 = this.xDivision * p2, c2 = this.zeroY - o2[n2][p2] / this.yRatio[this.yaxisIndex], e2 = u2.move(h2, c2), i2 = u2.move(h2, this.areaBottomY); + break; + } + } else + e2 = u2.move(h2, c2), "rangeArea" === r2 && (e2 = u2.move(h2, d2) + u2.line(h2, c2)), i2 = u2.move(h2, this.areaBottomY) + u2.line(h2, c2); + if (a2 = u2.move(-1, this.zeroY) + u2.line(-1, this.zeroY), s2 = u2.move(-1, this.zeroY) + u2.line(-1, this.zeroY), g2.globals.previousPaths.length > 0) { + var f2 = this.lineHelpers.checkPreviousPaths({ pathFromLine: a2, pathFromArea: s2, realIndex: l2 }); + a2 = f2.pathFromLine, s2 = f2.pathFromArea; + } + return { prevX: h2, prevY: c2, linePath: e2, areaPath: i2, pathFromLine: a2, pathFromArea: s2 }; + } }, { key: "_handlePaths", value: function(t3) { + var i2 = t3.type, a2 = t3.realIndex, s2 = t3.i, r2 = t3.paths, o2 = this.w, n2 = new m(this.ctx), l2 = new R(this.ctx); + this.prevSeriesY.push(r2.yArrj), o2.globals.seriesXvalues[a2] = r2.xArrj, o2.globals.seriesYvalues[a2] = r2.yArrj; + var h2 = o2.config.forecastDataPoints; + if (h2.count > 0 && "rangeArea" !== i2) { + var c2 = o2.globals.seriesXvalues[a2][o2.globals.seriesXvalues[a2].length - h2.count - 1], d2 = n2.drawRect(c2, 0, o2.globals.gridWidth, o2.globals.gridHeight, 0); + o2.globals.dom.elForecastMask.appendChild(d2.node); + var g2 = n2.drawRect(0, 0, c2, o2.globals.gridHeight, 0); + o2.globals.dom.elNonForecastMask.appendChild(g2.node); + } + this.pointsChart || o2.globals.delayedElements.push({ el: this.elPointsMain.node, index: a2 }); + var u2 = { i: s2, realIndex: a2, animationDelay: s2, initialSpeed: o2.config.chart.animations.speed, dataChangeSpeed: o2.config.chart.animations.dynamicAnimation.speed, className: "apexcharts-".concat(i2) }; + if ("area" === i2) + for (var p2 = l2.fillPath({ seriesNumber: a2 }), f2 = 0; f2 < r2.areaPaths.length; f2++) { + var x2 = n2.renderPaths(e(e({}, u2), {}, { pathFrom: r2.pathFromArea, pathTo: r2.areaPaths[f2], stroke: "none", strokeWidth: 0, strokeLineCap: null, fill: p2 })); + this.elSeries.add(x2); + } + if (o2.config.stroke.show && !this.pointsChart) { + var b2 = null; + if ("line" === i2) + b2 = l2.fillPath({ seriesNumber: a2, i: s2 }); + else if ("solid" === o2.config.stroke.fill.type) + b2 = o2.globals.stroke.colors[a2]; + else { + var v2 = o2.config.fill; + o2.config.fill = o2.config.stroke.fill, b2 = l2.fillPath({ seriesNumber: a2, i: s2 }), o2.config.fill = v2; + } + for (var y2 = 0; y2 < r2.linePaths.length; y2++) { + var w2 = b2; + "rangeArea" === i2 && (w2 = l2.fillPath({ seriesNumber: a2 })); + var k2 = e(e({}, u2), {}, { pathFrom: r2.pathFromLine, pathTo: r2.linePaths[y2], stroke: b2, strokeWidth: this.strokeWidth, strokeLineCap: o2.config.stroke.lineCap, fill: "rangeArea" === i2 ? w2 : "none" }), A2 = n2.renderPaths(k2); + if (this.elSeries.add(A2), A2.attr("fill-rule", "evenodd"), h2.count > 0 && "rangeArea" !== i2) { + var S2 = n2.renderPaths(k2); + S2.node.setAttribute("stroke-dasharray", h2.dashArray), h2.strokeWidth && S2.node.setAttribute("stroke-width", h2.strokeWidth), this.elSeries.add(S2), S2.attr("clip-path", "url(#forecastMask".concat(o2.globals.cuid, ")")), A2.attr("clip-path", "url(#nonForecastMask".concat(o2.globals.cuid, ")")); + } + } + } + } }, { key: "_iterateOverDataPoints", value: function(t3) { + var e2 = this, i2 = t3.type, a2 = t3.series, s2 = t3.iterations, r2 = t3.realIndex, o2 = t3.i, n2 = t3.x, l2 = t3.y, h2 = t3.pathsFrom, c2 = t3.linePaths, d2 = t3.areaPaths, g2 = t3.seriesIndex, u2 = t3.lineYPosition, p2 = t3.xArrj, f2 = t3.yArrj, b2 = t3.y2Arrj, v2 = t3.isRangeStart, y2 = t3.seriesRangeEnd, w2 = this.w, k2 = new m(this.ctx), A2 = this.yRatio, S2 = h2.prevY, C2 = h2.linePath, L2 = h2.areaPath, P2 = h2.pathFromLine, I2 = h2.pathFromArea, M2 = x.isNumber(w2.globals.minYArr[r2]) ? w2.globals.minYArr[r2] : w2.globals.minY; + s2 || (s2 = w2.globals.dataPoints > 1 ? w2.globals.dataPoints - 1 : w2.globals.dataPoints); + for (var T2 = function(t4, i3) { + return i3 - t4 / A2[e2.yaxisIndex] + 2 * (e2.isReversed ? t4 / A2[e2.yaxisIndex] : 0); + }, z2 = l2, X2 = 0; X2 < s2; X2++) { + var E2 = void 0 === a2[o2][X2 + 1] || null === a2[o2][X2 + 1]; + if (w2.globals.isXNumeric) { + var Y2 = w2.globals.seriesX[r2][X2 + 1]; + void 0 === w2.globals.seriesX[r2][X2 + 1] && (Y2 = w2.globals.seriesX[r2][s2 - 1]), n2 = (Y2 - w2.globals.minX) / this.xRatio; + } else + n2 += this.xDivision; + if (w2.config.chart.stacked) + if (o2 > 0 && w2.globals.collapsedSeries.length < w2.config.series.length - 1) { + u2 = this.prevSeriesY[function(t4) { + for (var e3 = t4, i3 = 0; i3 < w2.globals.series.length; i3++) + if (w2.globals.collapsedSeriesIndices.indexOf(t4) > -1) { + e3--; + break; + } + return e3 >= 0 ? e3 : 0; + }(o2 - 1)][X2 + 1]; + } else + u2 = this.zeroY; + else + u2 = this.zeroY; + E2 ? l2 = T2(M2, u2) : (l2 = T2(a2[o2][X2 + 1], u2), "rangeArea" === i2 && (z2 = T2(y2[o2][X2 + 1], u2))), p2.push(n2), E2 && "smooth" === w2.config.stroke.curve ? f2.push(null) : f2.push(l2), b2.push(z2); + var F2 = this.lineHelpers.calculatePoints({ series: a2, x: n2, y: l2, realIndex: r2, i: o2, j: X2, prevY: S2 }), R2 = this._createPaths({ type: i2, series: a2, i: o2, realIndex: r2, j: X2, x: n2, y: l2, y2: z2, xArrj: p2, yArrj: f2, y2Arrj: b2, linePath: C2, areaPath: L2, linePaths: c2, areaPaths: d2, seriesIndex: g2, isRangeStart: v2 }); + d2 = R2.areaPaths, c2 = R2.linePaths, L2 = R2.areaPath, C2 = R2.linePath, !this.appendPathFrom || "smooth" === w2.config.stroke.curve && "rangeArea" === i2 || (P2 += k2.line(n2, this.zeroY), I2 += k2.line(n2, this.zeroY)), this.handleNullDataPoints(a2, F2, o2, X2, r2), this._handleMarkersAndLabels({ type: i2, pointsPos: F2, i: o2, j: X2, realIndex: r2, isRangeStart: v2 }); + } + return { yArrj: f2, xArrj: p2, pathFromArea: I2, areaPaths: d2, pathFromLine: P2, linePaths: c2, linePath: C2, areaPath: L2 }; + } }, { key: "_handleMarkersAndLabels", value: function(t3) { + var e2 = t3.type, i2 = t3.pointsPos, a2 = t3.isRangeStart, s2 = t3.i, r2 = t3.j, o2 = t3.realIndex, n2 = this.w, l2 = new O(this.ctx); + if (this.pointsChart) + this.scatter.draw(this.elSeries, r2, { realIndex: o2, pointsPos: i2, zRatio: this.zRatio, elParent: this.elPointsMain }); + else { + n2.globals.series[s2].length > 1 && this.elPointsMain.node.classList.add("apexcharts-element-hidden"); + var h2 = this.markers.plotChartMarkers(i2, o2, r2 + 1); + null !== h2 && this.elPointsMain.add(h2); + } + var c2 = l2.drawDataLabel({ type: e2, isRangeStart: a2, pos: i2, i: o2, j: r2 + 1 }); + null !== c2 && this.elDataLabelsWrap.add(c2); + } }, { key: "_createPaths", value: function(t3) { + var e2 = t3.type, i2 = t3.series, a2 = t3.i, s2 = t3.realIndex, r2 = t3.j, o2 = t3.x, n2 = t3.y, l2 = t3.xArrj, h2 = t3.yArrj, c2 = t3.y2, d2 = t3.y2Arrj, g2 = t3.linePath, u2 = t3.areaPath, p2 = t3.linePaths, f2 = t3.areaPaths, x2 = t3.seriesIndex, b2 = t3.isRangeStart, v2 = this.w, y2 = new m(this.ctx), w2 = v2.config.stroke.curve, k2 = this.areaBottomY; + if (Array.isArray(v2.config.stroke.curve) && (w2 = Array.isArray(x2) ? v2.config.stroke.curve[x2[a2]] : v2.config.stroke.curve[a2]), "rangeArea" === e2 && (v2.globals.hasNullValues || v2.config.forecastDataPoints.count > 0) && "smooth" === w2 && (w2 = "straight"), "smooth" === w2) { + var A2 = "rangeArea" === e2 ? l2.length === v2.globals.dataPoints : r2 === i2[a2].length - 2, S2 = l2.map(function(t4, e3) { + return [l2[e3], h2[e3]]; + }).filter(function(t4) { + return null !== t4[1]; + }); + if (A2 && S2.length > 1) { + var C2 = Et(S2); + if (g2 += Xt(C2), null === i2[a2][0] ? u2 = g2 : u2 += Xt(C2), "rangeArea" === e2 && b2) { + g2 += y2.line(l2[l2.length - 1], d2[d2.length - 1]); + var L2 = l2.slice().reverse(), P2 = d2.slice().reverse(), I2 = L2.map(function(t4, e3) { + return [L2[e3], P2[e3]]; + }), M2 = Et(I2); + u2 = g2 += Xt(M2); + } else + u2 += y2.line(S2[S2.length - 1][0], k2) + y2.line(S2[0][0], k2) + y2.move(S2[0][0], S2[0][1]) + "z"; + p2.push(g2), f2.push(u2); + } + } else { + if (null === i2[a2][r2 + 1]) { + g2 += y2.move(o2, n2); + var T2 = v2.globals.isXNumeric ? (v2.globals.seriesX[s2][r2] - v2.globals.minX) / this.xRatio : o2 - this.xDivision; + u2 = u2 + y2.line(T2, k2) + y2.move(o2, n2) + "z"; + } + null === i2[a2][r2] && (g2 += y2.move(o2, n2), u2 += y2.move(o2, k2)), "stepline" === w2 ? (g2 = g2 + y2.line(o2, null, "H") + y2.line(null, n2, "V"), u2 = u2 + y2.line(o2, null, "H") + y2.line(null, n2, "V")) : "straight" === w2 && (g2 += y2.line(o2, n2), u2 += y2.line(o2, n2)), r2 === i2[a2].length - 2 && (u2 = u2 + y2.line(o2, k2) + y2.move(o2, n2) + "z", "rangeArea" === e2 && b2 ? g2 = g2 + y2.line(o2, c2) + y2.move(o2, c2) + "z" : (p2.push(g2), f2.push(u2))); + } + return { linePaths: p2, areaPaths: f2, linePath: g2, areaPath: u2 }; + } }, { key: "handleNullDataPoints", value: function(t3, e2, i2, a2, s2) { + var r2 = this.w; + if (null === t3[i2][a2] && r2.config.markers.showNullDataPoints || 1 === t3[i2].length) { + var o2 = this.markers.plotChartMarkers(e2, s2, a2 + 1, this.strokeWidth - r2.config.markers.strokeWidth / 2, true); + null !== o2 && this.elPointsMain.add(o2); + } + } }]), t2; + }(); + window.TreemapSquared = {}, window.TreemapSquared.generate = /* @__PURE__ */ function() { + function t2(e3, i3, a3, s3) { + this.xoffset = e3, this.yoffset = i3, this.height = s3, this.width = a3, this.shortestEdge = function() { + return Math.min(this.height, this.width); + }, this.getCoordinates = function(t3) { + var e4, i4 = [], a4 = this.xoffset, s4 = this.yoffset, o3 = r2(t3) / this.height, n2 = r2(t3) / this.width; + if (this.width >= this.height) + for (e4 = 0; e4 < t3.length; e4++) + i4.push([a4, s4, a4 + o3, s4 + t3[e4] / o3]), s4 += t3[e4] / o3; + else + for (e4 = 0; e4 < t3.length; e4++) + i4.push([a4, s4, a4 + t3[e4] / n2, s4 + n2]), a4 += t3[e4] / n2; + return i4; + }, this.cutArea = function(e4) { + var i4; + if (this.width >= this.height) { + var a4 = e4 / this.height, s4 = this.width - a4; + i4 = new t2(this.xoffset + a4, this.yoffset, s4, this.height); + } else { + var r3 = e4 / this.width, o3 = this.height - r3; + i4 = new t2(this.xoffset, this.yoffset + r3, this.width, o3); + } + return i4; + }; + } + function e2(e3, a3, s3, o3, n2) { + o3 = void 0 === o3 ? 0 : o3, n2 = void 0 === n2 ? 0 : n2; + var l2 = i2(function(t3, e4) { + var i3, a4 = [], s4 = e4 / r2(t3); + for (i3 = 0; i3 < t3.length; i3++) + a4[i3] = t3[i3] * s4; + return a4; + }(e3, a3 * s3), [], new t2(o3, n2, a3, s3), []); + return function(t3) { + var e4, i3, a4 = []; + for (e4 = 0; e4 < t3.length; e4++) + for (i3 = 0; i3 < t3[e4].length; i3++) + a4.push(t3[e4][i3]); + return a4; + }(l2); + } + function i2(t3, e3, s3, o3) { + var n2, l2, h2; + if (0 !== t3.length) + return n2 = s3.shortestEdge(), function(t4, e4, i3) { + var s4; + if (0 === t4.length) + return true; + (s4 = t4.slice()).push(e4); + var r3 = a2(t4, i3), o4 = a2(s4, i3); + return r3 >= o4; + }(e3, l2 = t3[0], n2) ? (e3.push(l2), i2(t3.slice(1), e3, s3, o3)) : (h2 = s3.cutArea(r2(e3), o3), o3.push(s3.getCoordinates(e3)), i2(t3, [], h2, o3)), o3; + o3.push(s3.getCoordinates(e3)); + } + function a2(t3, e3) { + var i3 = Math.min.apply(Math, t3), a3 = Math.max.apply(Math, t3), s3 = r2(t3); + return Math.max(Math.pow(e3, 2) * a3 / Math.pow(s3, 2), Math.pow(s3, 2) / (Math.pow(e3, 2) * i3)); + } + function s2(t3) { + return t3 && t3.constructor === Array; + } + function r2(t3) { + var e3, i3 = 0; + for (e3 = 0; e3 < t3.length; e3++) + i3 += t3[e3]; + return i3; + } + function o2(t3) { + var e3, i3 = 0; + if (s2(t3[0])) + for (e3 = 0; e3 < t3.length; e3++) + i3 += o2(t3[e3]); + else + i3 = r2(t3); + return i3; + } + return function t3(i3, a3, r3, n2, l2) { + n2 = void 0 === n2 ? 0 : n2, l2 = void 0 === l2 ? 0 : l2; + var h2, c2, d2 = [], g2 = []; + if (s2(i3[0])) { + for (c2 = 0; c2 < i3.length; c2++) + d2[c2] = o2(i3[c2]); + for (h2 = e2(d2, a3, r3, n2, l2), c2 = 0; c2 < i3.length; c2++) + g2.push(t3(i3[c2], h2[c2][2] - h2[c2][0], h2[c2][3] - h2[c2][1], h2[c2][0], h2[c2][1])); + } else + g2 = e2(i3, a3, r3, n2, l2); + return g2; + }; + }(); + var Rt; + var Ht; + var Dt = function() { + function t2(e2, i2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.strokeWidth = this.w.config.stroke.width, this.helpers = new At(e2), this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation, this.labels = []; + } + return r(t2, [{ key: "draw", value: function(t3) { + var e2 = this, i2 = this.w, a2 = new m(this.ctx), s2 = new R(this.ctx), r2 = a2.group({ class: "apexcharts-treemap" }); + if (i2.globals.noData) + return r2; + var o2 = []; + return t3.forEach(function(t4) { + var e3 = t4.map(function(t5) { + return Math.abs(t5); + }); + o2.push(e3); + }), this.negRange = this.helpers.checkColorRange(), i2.config.series.forEach(function(t4, i3) { + t4.data.forEach(function(t5) { + Array.isArray(e2.labels[i3]) || (e2.labels[i3] = []), e2.labels[i3].push(t5.x); + }); + }), window.TreemapSquared.generate(o2, i2.globals.gridWidth, i2.globals.gridHeight).forEach(function(o3, n2) { + var l2 = a2.group({ class: "apexcharts-series apexcharts-treemap-series", seriesName: x.escapeString(i2.globals.seriesNames[n2]), rel: n2 + 1, "data:realIndex": n2 }); + if (i2.config.chart.dropShadow.enabled) { + var h2 = i2.config.chart.dropShadow; + new v(e2.ctx).dropShadow(r2, h2, n2); + } + var c2 = a2.group({ class: "apexcharts-data-labels" }); + o3.forEach(function(r3, o4) { + var h3 = r3[0], c3 = r3[1], d2 = r3[2], g2 = r3[3], u2 = a2.drawRect(h3, c3, d2 - h3, g2 - c3, 0, "#fff", 1, e2.strokeWidth, i2.config.plotOptions.treemap.useFillColorAsStroke ? f2 : i2.globals.stroke.colors[n2]); + u2.attr({ cx: h3, cy: c3, index: n2, i: n2, j: o4, width: d2 - h3, height: g2 - c3 }); + var p2 = e2.helpers.getShadeColor(i2.config.chart.type, n2, o4, e2.negRange), f2 = p2.color; + void 0 !== i2.config.series[n2].data[o4] && i2.config.series[n2].data[o4].fillColor && (f2 = i2.config.series[n2].data[o4].fillColor); + var x2 = s2.fillPath({ color: f2, seriesNumber: n2, dataPointIndex: o4 }); + u2.node.classList.add("apexcharts-treemap-rect"), u2.attr({ fill: x2 }), e2.helpers.addListeners(u2); + var b2 = { x: h3 + (d2 - h3) / 2, y: c3 + (g2 - c3) / 2, width: 0, height: 0 }, v2 = { x: h3, y: c3, width: d2 - h3, height: g2 - c3 }; + if (i2.config.chart.animations.enabled && !i2.globals.dataChanged) { + var m2 = 1; + i2.globals.resized || (m2 = i2.config.chart.animations.speed), e2.animateTreemap(u2, b2, v2, m2); + } + if (i2.globals.dataChanged) { + var y2 = 1; + e2.dynamicAnim.enabled && i2.globals.shouldAnimate && (y2 = e2.dynamicAnim.speed, i2.globals.previousPaths[n2] && i2.globals.previousPaths[n2][o4] && i2.globals.previousPaths[n2][o4].rect && (b2 = i2.globals.previousPaths[n2][o4].rect), e2.animateTreemap(u2, b2, v2, y2)); + } + var w2 = e2.getFontSize(r3), k2 = i2.config.dataLabels.formatter(e2.labels[n2][o4], { value: i2.globals.series[n2][o4], seriesIndex: n2, dataPointIndex: o4, w: i2 }); + "truncate" === i2.config.plotOptions.treemap.dataLabels.format && (w2 = parseInt(i2.config.dataLabels.style.fontSize, 10), k2 = e2.truncateLabels(k2, w2, h3, c3, d2, g2)); + var A2 = e2.helpers.calculateDataLabels({ text: k2, x: (h3 + d2) / 2, y: (c3 + g2) / 2 + e2.strokeWidth / 2 + w2 / 3, i: n2, j: o4, colorProps: p2, fontSize: w2, series: t3 }); + i2.config.dataLabels.enabled && A2 && e2.rotateToFitLabel(A2, w2, k2, h3, c3, d2, g2), l2.add(u2), null !== A2 && l2.add(A2); + }), l2.add(c2), r2.add(l2); + }), r2; + } }, { key: "getFontSize", value: function(t3) { + var e2 = this.w; + var i2, a2, s2, r2, o2 = function t4(e3) { + var i3, a3 = 0; + if (Array.isArray(e3[0])) + for (i3 = 0; i3 < e3.length; i3++) + a3 += t4(e3[i3]); + else + for (i3 = 0; i3 < e3.length; i3++) + a3 += e3[i3].length; + return a3; + }(this.labels) / function t4(e3) { + var i3, a3 = 0; + if (Array.isArray(e3[0])) + for (i3 = 0; i3 < e3.length; i3++) + a3 += t4(e3[i3]); + else + for (i3 = 0; i3 < e3.length; i3++) + a3 += 1; + return a3; + }(this.labels); + return i2 = t3[2] - t3[0], a2 = t3[3] - t3[1], s2 = i2 * a2, r2 = Math.pow(s2, 0.5), Math.min(r2 / o2, parseInt(e2.config.dataLabels.style.fontSize, 10)); + } }, { key: "rotateToFitLabel", value: function(t3, e2, i2, a2, s2, r2, o2) { + var n2 = new m(this.ctx), l2 = n2.getTextRects(i2, e2); + if (l2.width + this.w.config.stroke.width + 5 > r2 - a2 && l2.width <= o2 - s2) { + var h2 = n2.rotateAroundCenter(t3.node); + t3.node.setAttribute("transform", "rotate(-90 ".concat(h2.x, " ").concat(h2.y, ") translate(").concat(l2.height / 3, ")")); + } + } }, { key: "truncateLabels", value: function(t3, e2, i2, a2, s2, r2) { + var o2 = new m(this.ctx), n2 = o2.getTextRects(t3, e2).width + this.w.config.stroke.width + 5 > s2 - i2 && r2 - a2 > s2 - i2 ? r2 - a2 : s2 - i2, l2 = o2.getTextBasedOnMaxWidth({ text: t3, maxWidth: n2, fontSize: e2 }); + return t3.length !== l2.length && n2 / e2 < 5 ? "" : l2; + } }, { key: "animateTreemap", value: function(t3, e2, i2, a2) { + var s2 = new b(this.ctx); + s2.animateRect(t3, { x: e2.x, y: e2.y, width: e2.width, height: e2.height }, { x: i2.x, y: i2.y, width: i2.width, height: i2.height }, a2, function() { + s2.animationCompleted(t3); + }); + } }]), t2; + }(); + var Ot = 86400; + var Nt = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w, this.timeScaleArray = [], this.utc = this.w.config.xaxis.labels.datetimeUTC; + } + return r(t2, [{ key: "calculateTimeScaleTicks", value: function(t3, i2) { + var a2 = this, s2 = this.w; + if (s2.globals.allSeriesCollapsed) + return s2.globals.labels = [], s2.globals.timescaleLabels = [], []; + var r2 = new I(this.ctx), o2 = (i2 - t3) / 864e5; + this.determineInterval(o2), s2.globals.disableZoomIn = false, s2.globals.disableZoomOut = false, o2 < 11574074074074075e-20 ? s2.globals.disableZoomIn = true : o2 > 5e4 && (s2.globals.disableZoomOut = true); + var n2 = r2.getTimeUnitsfromTimestamp(t3, i2, this.utc), l2 = s2.globals.gridWidth / o2, h2 = l2 / 24, c2 = h2 / 60, d2 = c2 / 60, g2 = Math.floor(24 * o2), u2 = Math.floor(1440 * o2), p2 = Math.floor(o2 * Ot), f2 = Math.floor(o2), x2 = Math.floor(o2 / 30), b2 = Math.floor(o2 / 365), v2 = { minMillisecond: n2.minMillisecond, minSecond: n2.minSecond, minMinute: n2.minMinute, minHour: n2.minHour, minDate: n2.minDate, minMonth: n2.minMonth, minYear: n2.minYear }, m2 = { firstVal: v2, currentMillisecond: v2.minMillisecond, currentSecond: v2.minSecond, currentMinute: v2.minMinute, currentHour: v2.minHour, currentMonthDate: v2.minDate, currentDate: v2.minDate, currentMonth: v2.minMonth, currentYear: v2.minYear, daysWidthOnXAxis: l2, hoursWidthOnXAxis: h2, minutesWidthOnXAxis: c2, secondsWidthOnXAxis: d2, numberOfSeconds: p2, numberOfMinutes: u2, numberOfHours: g2, numberOfDays: f2, numberOfMonths: x2, numberOfYears: b2 }; + switch (this.tickInterval) { + case "years": + this.generateYearScale(m2); + break; + case "months": + case "half_year": + this.generateMonthScale(m2); + break; + case "months_days": + case "months_fortnight": + case "days": + case "week_days": + this.generateDayScale(m2); + break; + case "hours": + this.generateHourScale(m2); + break; + case "minutes_fives": + case "minutes": + this.generateMinuteScale(m2); + break; + case "seconds_tens": + case "seconds_fives": + case "seconds": + this.generateSecondScale(m2); + } + var y2 = this.timeScaleArray.map(function(t4) { + var i3 = { position: t4.position, unit: t4.unit, year: t4.year, day: t4.day ? t4.day : 1, hour: t4.hour ? t4.hour : 0, month: t4.month + 1 }; + return "month" === t4.unit ? e(e({}, i3), {}, { day: 1, value: t4.value + 1 }) : "day" === t4.unit || "hour" === t4.unit ? e(e({}, i3), {}, { value: t4.value }) : "minute" === t4.unit ? e(e({}, i3), {}, { value: t4.value, minute: t4.value }) : "second" === t4.unit ? e(e({}, i3), {}, { value: t4.value, minute: t4.minute, second: t4.second }) : t4; + }); + return y2.filter(function(t4) { + var e2 = 1, i3 = Math.ceil(s2.globals.gridWidth / 120), r3 = t4.value; + void 0 !== s2.config.xaxis.tickAmount && (i3 = s2.config.xaxis.tickAmount), y2.length > i3 && (e2 = Math.floor(y2.length / i3)); + var o3 = false, n3 = false; + switch (a2.tickInterval) { + case "years": + "year" === t4.unit && (o3 = true); + break; + case "half_year": + e2 = 7, "year" === t4.unit && (o3 = true); + break; + case "months": + e2 = 1, "year" === t4.unit && (o3 = true); + break; + case "months_fortnight": + e2 = 15, "year" !== t4.unit && "month" !== t4.unit || (o3 = true), 30 === r3 && (n3 = true); + break; + case "months_days": + e2 = 10, "month" === t4.unit && (o3 = true), 30 === r3 && (n3 = true); + break; + case "week_days": + e2 = 8, "month" === t4.unit && (o3 = true); + break; + case "days": + e2 = 1, "month" === t4.unit && (o3 = true); + break; + case "hours": + "day" === t4.unit && (o3 = true); + break; + case "minutes_fives": + case "seconds_fives": + r3 % 5 != 0 && (n3 = true); + break; + case "seconds_tens": + r3 % 10 != 0 && (n3 = true); + } + if ("hours" === a2.tickInterval || "minutes_fives" === a2.tickInterval || "seconds_tens" === a2.tickInterval || "seconds_fives" === a2.tickInterval) { + if (!n3) + return true; + } else if ((r3 % e2 == 0 || o3) && !n3) + return true; + }); + } }, { key: "recalcDimensionsBasedOnFormat", value: function(t3, e2) { + var i2 = this.w, a2 = this.formatDates(t3), s2 = this.removeOverlappingTS(a2); + i2.globals.timescaleLabels = s2.slice(), new ot(this.ctx).plotCoords(); + } }, { key: "determineInterval", value: function(t3) { + var e2 = 24 * t3, i2 = 60 * e2; + switch (true) { + case t3 / 365 > 5: + this.tickInterval = "years"; + break; + case t3 > 800: + this.tickInterval = "half_year"; + break; + case t3 > 180: + this.tickInterval = "months"; + break; + case t3 > 90: + this.tickInterval = "months_fortnight"; + break; + case t3 > 60: + this.tickInterval = "months_days"; + break; + case t3 > 30: + this.tickInterval = "week_days"; + break; + case t3 > 2: + this.tickInterval = "days"; + break; + case e2 > 2.4: + this.tickInterval = "hours"; + break; + case i2 > 15: + this.tickInterval = "minutes_fives"; + break; + case i2 > 5: + this.tickInterval = "minutes"; + break; + case i2 > 1: + this.tickInterval = "seconds_tens"; + break; + case 60 * i2 > 20: + this.tickInterval = "seconds_fives"; + break; + default: + this.tickInterval = "seconds"; + } + } }, { key: "generateYearScale", value: function(t3) { + var e2 = t3.firstVal, i2 = t3.currentMonth, a2 = t3.currentYear, s2 = t3.daysWidthOnXAxis, r2 = t3.numberOfYears, o2 = e2.minYear, n2 = 0, l2 = new I(this.ctx), h2 = "year"; + if (e2.minDate > 1 || e2.minMonth > 0) { + var c2 = l2.determineRemainingDaysOfYear(e2.minYear, e2.minMonth, e2.minDate); + n2 = (l2.determineDaysOfYear(e2.minYear) - c2 + 1) * s2, o2 = e2.minYear + 1, this.timeScaleArray.push({ position: n2, value: o2, unit: h2, year: o2, month: x.monthMod(i2 + 1) }); + } else + 1 === e2.minDate && 0 === e2.minMonth && this.timeScaleArray.push({ position: n2, value: o2, unit: h2, year: a2, month: x.monthMod(i2 + 1) }); + for (var d2 = o2, g2 = n2, u2 = 0; u2 < r2; u2++) + d2++, g2 = l2.determineDaysOfYear(d2 - 1) * s2 + g2, this.timeScaleArray.push({ position: g2, value: d2, unit: h2, year: d2, month: 1 }); + } }, { key: "generateMonthScale", value: function(t3) { + var e2 = t3.firstVal, i2 = t3.currentMonthDate, a2 = t3.currentMonth, s2 = t3.currentYear, r2 = t3.daysWidthOnXAxis, o2 = t3.numberOfMonths, n2 = a2, l2 = 0, h2 = new I(this.ctx), c2 = "month", d2 = 0; + if (e2.minDate > 1) { + l2 = (h2.determineDaysOfMonths(a2 + 1, e2.minYear) - i2 + 1) * r2, n2 = x.monthMod(a2 + 1); + var g2 = s2 + d2, u2 = x.monthMod(n2), p2 = n2; + 0 === n2 && (c2 = "year", p2 = g2, u2 = 1, g2 += d2 += 1), this.timeScaleArray.push({ position: l2, value: p2, unit: c2, year: g2, month: u2 }); + } else + this.timeScaleArray.push({ position: l2, value: n2, unit: c2, year: s2, month: x.monthMod(a2) }); + for (var f2 = n2 + 1, b2 = l2, v2 = 0, m2 = 1; v2 < o2; v2++, m2++) { + 0 === (f2 = x.monthMod(f2)) ? (c2 = "year", d2 += 1) : c2 = "month"; + var y2 = this._getYear(s2, f2, d2); + b2 = h2.determineDaysOfMonths(f2, y2) * r2 + b2; + var w2 = 0 === f2 ? y2 : f2; + this.timeScaleArray.push({ position: b2, value: w2, unit: c2, year: y2, month: 0 === f2 ? 1 : f2 }), f2++; + } + } }, { key: "generateDayScale", value: function(t3) { + var e2 = t3.firstVal, i2 = t3.currentMonth, a2 = t3.currentYear, s2 = t3.hoursWidthOnXAxis, r2 = t3.numberOfDays, o2 = new I(this.ctx), n2 = "day", l2 = e2.minDate + 1, h2 = l2, c2 = function(t4, e3, i3) { + return t4 > o2.determineDaysOfMonths(e3 + 1, i3) ? (h2 = 1, n2 = "month", g2 = e3 += 1, e3) : e3; + }, d2 = (24 - e2.minHour) * s2, g2 = l2, u2 = c2(h2, i2, a2); + 0 === e2.minHour && 1 === e2.minDate ? (d2 = 0, g2 = x.monthMod(e2.minMonth), n2 = "month", h2 = e2.minDate) : 1 !== e2.minDate && 0 === e2.minHour && 0 === e2.minMinute && (d2 = 0, l2 = e2.minDate, g2 = l2, u2 = c2(h2 = l2, i2, a2)), this.timeScaleArray.push({ position: d2, value: g2, unit: n2, year: this._getYear(a2, u2, 0), month: x.monthMod(u2), day: h2 }); + for (var p2 = d2, f2 = 0; f2 < r2; f2++) { + n2 = "day", u2 = c2(h2 += 1, u2, this._getYear(a2, u2, 0)); + var b2 = this._getYear(a2, u2, 0); + p2 = 24 * s2 + p2; + var v2 = 1 === h2 ? x.monthMod(u2) : h2; + this.timeScaleArray.push({ position: p2, value: v2, unit: n2, year: b2, month: x.monthMod(u2), day: v2 }); + } + } }, { key: "generateHourScale", value: function(t3) { + var e2 = t3.firstVal, i2 = t3.currentDate, a2 = t3.currentMonth, s2 = t3.currentYear, r2 = t3.minutesWidthOnXAxis, o2 = t3.numberOfHours, n2 = new I(this.ctx), l2 = "hour", h2 = function(t4, e3) { + return t4 > n2.determineDaysOfMonths(e3 + 1, s2) && (f2 = 1, e3 += 1), { month: e3, date: f2 }; + }, c2 = function(t4, e3) { + return t4 > n2.determineDaysOfMonths(e3 + 1, s2) ? e3 += 1 : e3; + }, d2 = 60 - (e2.minMinute + e2.minSecond / 60), g2 = d2 * r2, u2 = e2.minHour + 1, p2 = u2; + 60 === d2 && (g2 = 0, p2 = (u2 = e2.minHour) + 1); + var f2 = i2; + p2 >= 24 && (p2 = 0, f2 += 1, l2 = "day"); + var b2 = h2(f2, a2).month; + b2 = c2(f2, b2), this.timeScaleArray.push({ position: g2, value: u2, unit: l2, day: f2, hour: p2, year: s2, month: x.monthMod(b2) }), p2++; + for (var v2 = g2, m2 = 0; m2 < o2; m2++) { + if (l2 = "hour", p2 >= 24) + p2 = 0, l2 = "day", b2 = h2(f2 += 1, b2).month, b2 = c2(f2, b2); + var y2 = this._getYear(s2, b2, 0); + v2 = 60 * r2 + v2; + var w2 = 0 === p2 ? f2 : p2; + this.timeScaleArray.push({ position: v2, value: w2, unit: l2, hour: p2, day: f2, year: y2, month: x.monthMod(b2) }), p2++; + } + } }, { key: "generateMinuteScale", value: function(t3) { + for (var e2 = t3.currentMillisecond, i2 = t3.currentSecond, a2 = t3.currentMinute, s2 = t3.currentHour, r2 = t3.currentDate, o2 = t3.currentMonth, n2 = t3.currentYear, l2 = t3.minutesWidthOnXAxis, h2 = t3.secondsWidthOnXAxis, c2 = t3.numberOfMinutes, d2 = a2 + 1, g2 = r2, u2 = o2, p2 = n2, f2 = s2, b2 = (60 - i2 - e2 / 1e3) * h2, v2 = 0; v2 < c2; v2++) + d2 >= 60 && (d2 = 0, 24 === (f2 += 1) && (f2 = 0)), this.timeScaleArray.push({ position: b2, value: d2, unit: "minute", hour: f2, minute: d2, day: g2, year: this._getYear(p2, u2, 0), month: x.monthMod(u2) }), b2 += l2, d2++; + } }, { key: "generateSecondScale", value: function(t3) { + for (var e2 = t3.currentMillisecond, i2 = t3.currentSecond, a2 = t3.currentMinute, s2 = t3.currentHour, r2 = t3.currentDate, o2 = t3.currentMonth, n2 = t3.currentYear, l2 = t3.secondsWidthOnXAxis, h2 = t3.numberOfSeconds, c2 = i2 + 1, d2 = a2, g2 = r2, u2 = o2, p2 = n2, f2 = s2, b2 = (1e3 - e2) / 1e3 * l2, v2 = 0; v2 < h2; v2++) + c2 >= 60 && (c2 = 0, ++d2 >= 60 && (d2 = 0, 24 === ++f2 && (f2 = 0))), this.timeScaleArray.push({ position: b2, value: c2, unit: "second", hour: f2, minute: d2, second: c2, day: g2, year: this._getYear(p2, u2, 0), month: x.monthMod(u2) }), b2 += l2, c2++; + } }, { key: "createRawDateString", value: function(t3, e2) { + var i2 = t3.year; + return 0 === t3.month && (t3.month = 1), i2 += "-" + ("0" + t3.month.toString()).slice(-2), "day" === t3.unit ? i2 += "day" === t3.unit ? "-" + ("0" + e2).slice(-2) : "-01" : i2 += "-" + ("0" + (t3.day ? t3.day : "1")).slice(-2), "hour" === t3.unit ? i2 += "hour" === t3.unit ? "T" + ("0" + e2).slice(-2) : "T00" : i2 += "T" + ("0" + (t3.hour ? t3.hour : "0")).slice(-2), "minute" === t3.unit ? i2 += ":" + ("0" + e2).slice(-2) : i2 += ":" + (t3.minute ? ("0" + t3.minute).slice(-2) : "00"), "second" === t3.unit ? i2 += ":" + ("0" + e2).slice(-2) : i2 += ":00", this.utc && (i2 += ".000Z"), i2; + } }, { key: "formatDates", value: function(t3) { + var e2 = this, i2 = this.w; + return t3.map(function(t4) { + var a2 = t4.value.toString(), s2 = new I(e2.ctx), r2 = e2.createRawDateString(t4, a2), o2 = s2.getDate(s2.parseDate(r2)); + if (e2.utc || (o2 = s2.getDate(s2.parseDateWithTimezone(r2))), void 0 === i2.config.xaxis.labels.format) { + var n2 = "dd MMM", l2 = i2.config.xaxis.labels.datetimeFormatter; + "year" === t4.unit && (n2 = l2.year), "month" === t4.unit && (n2 = l2.month), "day" === t4.unit && (n2 = l2.day), "hour" === t4.unit && (n2 = l2.hour), "minute" === t4.unit && (n2 = l2.minute), "second" === t4.unit && (n2 = l2.second), a2 = s2.formatDate(o2, n2); + } else + a2 = s2.formatDate(o2, i2.config.xaxis.labels.format); + return { dateString: r2, position: t4.position, value: a2, unit: t4.unit, year: t4.year, month: t4.month }; + }); + } }, { key: "removeOverlappingTS", value: function(t3) { + var e2, i2 = this, a2 = new m(this.ctx), s2 = false; + t3.length > 0 && t3[0].value && t3.every(function(e3) { + return e3.value.length === t3[0].value.length; + }) && (s2 = true, e2 = a2.getTextRects(t3[0].value).width); + var r2 = 0, o2 = t3.map(function(o3, n2) { + if (n2 > 0 && i2.w.config.xaxis.labels.hideOverlappingLabels) { + var l2 = s2 ? e2 : a2.getTextRects(t3[r2].value).width, h2 = t3[r2].position; + return o3.position > h2 + l2 + 10 ? (r2 = n2, o3) : null; + } + return o3; + }); + return o2 = o2.filter(function(t4) { + return null !== t4; + }); + } }, { key: "_getYear", value: function(t3, e2, i2) { + return t3 + Math.floor(e2 / 12) + i2; + } }]), t2; + }(); + var Wt = function() { + function t2(e2, i2) { + a(this, t2), this.ctx = i2, this.w = i2.w, this.el = e2; + } + return r(t2, [{ key: "setupElements", value: function() { + var t3 = this.w.globals, e2 = this.w.config, i2 = e2.chart.type; + t3.axisCharts = ["line", "area", "bar", "rangeBar", "rangeArea", "candlestick", "boxPlot", "scatter", "bubble", "radar", "heatmap", "treemap"].indexOf(i2) > -1, t3.xyCharts = ["line", "area", "bar", "rangeBar", "rangeArea", "candlestick", "boxPlot", "scatter", "bubble"].indexOf(i2) > -1, t3.isBarHorizontal = ("bar" === e2.chart.type || "rangeBar" === e2.chart.type || "boxPlot" === e2.chart.type) && e2.plotOptions.bar.horizontal, t3.chartClass = ".apexcharts" + t3.chartID, t3.dom.baseEl = this.el, t3.dom.elWrap = document.createElement("div"), m.setAttrs(t3.dom.elWrap, { id: t3.chartClass.substring(1), class: "apexcharts-canvas " + t3.chartClass.substring(1) }), this.el.appendChild(t3.dom.elWrap), t3.dom.Paper = new window.SVG.Doc(t3.dom.elWrap), t3.dom.Paper.attr({ class: "apexcharts-svg", "xmlns:data": "ApexChartsNS", transform: "translate(".concat(e2.chart.offsetX, ", ").concat(e2.chart.offsetY, ")") }), t3.dom.Paper.node.style.background = "dark" !== e2.theme.mode || e2.chart.background ? e2.chart.background : "rgba(0, 0, 0, 0.8)", this.setSVGDimensions(), t3.dom.elLegendForeign = document.createElementNS(t3.SVGNS, "foreignObject"), m.setAttrs(t3.dom.elLegendForeign, { x: 0, y: 0, width: t3.svgWidth, height: t3.svgHeight }), t3.dom.elLegendWrap = document.createElement("div"), t3.dom.elLegendWrap.classList.add("apexcharts-legend"), t3.dom.elLegendWrap.setAttribute("xmlns", "http://www.w3.org/1999/xhtml"), t3.dom.elLegendForeign.appendChild(t3.dom.elLegendWrap), t3.dom.Paper.node.appendChild(t3.dom.elLegendForeign), t3.dom.elGraphical = t3.dom.Paper.group().attr({ class: "apexcharts-inner apexcharts-graphical" }), t3.dom.elDefs = t3.dom.Paper.defs(), t3.dom.Paper.add(t3.dom.elGraphical), t3.dom.elGraphical.add(t3.dom.elDefs); + } }, { key: "plotChartType", value: function(t3, e2) { + var i2 = this.w, a2 = i2.config, s2 = i2.globals, r2 = { series: [], i: [] }, o2 = { series: [], i: [] }, n2 = { series: [], i: [] }, l2 = { series: [], i: [] }, h2 = { series: [], i: [] }, c2 = { series: [], i: [] }, d2 = { series: [], i: [] }, g2 = { series: [], i: [] }, u2 = { series: [], seriesRangeEnd: [], i: [] }; + s2.series.map(function(e3, p3) { + var f3 = 0; + void 0 !== t3[p3].type ? ("column" === t3[p3].type || "bar" === t3[p3].type ? (s2.series.length > 1 && a2.plotOptions.bar.horizontal && console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"), h2.series.push(e3), h2.i.push(p3), f3++, i2.globals.columnSeries = h2.series) : "area" === t3[p3].type ? (o2.series.push(e3), o2.i.push(p3), f3++) : "line" === t3[p3].type ? (r2.series.push(e3), r2.i.push(p3), f3++) : "scatter" === t3[p3].type ? (n2.series.push(e3), n2.i.push(p3)) : "bubble" === t3[p3].type ? (l2.series.push(e3), l2.i.push(p3), f3++) : "candlestick" === t3[p3].type ? (c2.series.push(e3), c2.i.push(p3), f3++) : "boxPlot" === t3[p3].type ? (d2.series.push(e3), d2.i.push(p3), f3++) : "rangeBar" === t3[p3].type ? (g2.series.push(e3), g2.i.push(p3), f3++) : "rangeArea" === t3[p3].type ? (u2.series.push(s2.seriesRangeStart[p3]), u2.seriesRangeEnd.push(s2.seriesRangeEnd[p3]), u2.i.push(p3), f3++) : console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble/candlestick/boxPlot/rangeBar/rangeArea"), f3 > 1 && (s2.comboCharts = true)) : (r2.series.push(e3), r2.i.push(p3)); + }); + var p2 = new Ft(this.ctx, e2), f2 = new kt(this.ctx, e2); + this.ctx.pie = new Lt(this.ctx); + var x2 = new It(this.ctx); + this.ctx.rangeBar = new Mt(this.ctx, e2); + var b2 = new Pt(this.ctx), v2 = []; + if (s2.comboCharts) { + if (o2.series.length > 0 && v2.push(p2.draw(o2.series, "area", o2.i)), h2.series.length > 0) + if (i2.config.chart.stacked) { + var m2 = new wt(this.ctx, e2); + v2.push(m2.draw(h2.series, h2.i)); + } else + this.ctx.bar = new yt(this.ctx, e2), v2.push(this.ctx.bar.draw(h2.series, h2.i)); + if (u2.series.length > 0 && v2.push(p2.draw(u2.series, "rangeArea", u2.i, u2.seriesRangeEnd)), r2.series.length > 0 && v2.push(p2.draw(r2.series, "line", r2.i)), c2.series.length > 0 && v2.push(f2.draw(c2.series, "candlestick", c2.i)), d2.series.length > 0 && v2.push(f2.draw(d2.series, "boxPlot", d2.i)), g2.series.length > 0 && v2.push(this.ctx.rangeBar.draw(g2.series, g2.i)), n2.series.length > 0) { + var y2 = new Ft(this.ctx, e2, true); + v2.push(y2.draw(n2.series, "scatter", n2.i)); + } + if (l2.series.length > 0) { + var w2 = new Ft(this.ctx, e2, true); + v2.push(w2.draw(l2.series, "bubble", l2.i)); + } + } else + switch (a2.chart.type) { + case "line": + v2 = p2.draw(s2.series, "line"); + break; + case "area": + v2 = p2.draw(s2.series, "area"); + break; + case "bar": + if (a2.chart.stacked) + v2 = new wt(this.ctx, e2).draw(s2.series); + else + this.ctx.bar = new yt(this.ctx, e2), v2 = this.ctx.bar.draw(s2.series); + break; + case "candlestick": + v2 = new kt(this.ctx, e2).draw(s2.series, "candlestick"); + break; + case "boxPlot": + v2 = new kt(this.ctx, e2).draw(s2.series, a2.chart.type); + break; + case "rangeBar": + v2 = this.ctx.rangeBar.draw(s2.series); + break; + case "rangeArea": + v2 = p2.draw(s2.seriesRangeStart, "rangeArea", void 0, s2.seriesRangeEnd); + break; + case "heatmap": + v2 = new St(this.ctx, e2).draw(s2.series); + break; + case "treemap": + v2 = new Dt(this.ctx, e2).draw(s2.series); + break; + case "pie": + case "donut": + case "polarArea": + v2 = this.ctx.pie.draw(s2.series); + break; + case "radialBar": + v2 = x2.draw(s2.series); + break; + case "radar": + v2 = b2.draw(s2.series); + break; + default: + v2 = p2.draw(s2.series); + } + return v2; + } }, { key: "setSVGDimensions", value: function() { + var t3 = this.w.globals, e2 = this.w.config; + t3.svgWidth = e2.chart.width, t3.svgHeight = e2.chart.height; + var i2 = x.getDimensions(this.el), a2 = e2.chart.width.toString().split(/[0-9]+/g).pop(); + "%" === a2 ? x.isNumber(i2[0]) && (0 === i2[0].width && (i2 = x.getDimensions(this.el.parentNode)), t3.svgWidth = i2[0] * parseInt(e2.chart.width, 10) / 100) : "px" !== a2 && "" !== a2 || (t3.svgWidth = parseInt(e2.chart.width, 10)); + var s2 = e2.chart.height.toString().split(/[0-9]+/g).pop(); + if ("auto" !== t3.svgHeight && "" !== t3.svgHeight) + if ("%" === s2) { + var r2 = x.getDimensions(this.el.parentNode); + t3.svgHeight = r2[1] * parseInt(e2.chart.height, 10) / 100; + } else + t3.svgHeight = parseInt(e2.chart.height, 10); + else + t3.axisCharts ? t3.svgHeight = t3.svgWidth / 1.61 : t3.svgHeight = t3.svgWidth / 1.2; + if (t3.svgWidth < 0 && (t3.svgWidth = 0), t3.svgHeight < 0 && (t3.svgHeight = 0), m.setAttrs(t3.dom.Paper.node, { width: t3.svgWidth, height: t3.svgHeight }), "%" !== s2) { + var o2 = e2.chart.sparkline.enabled ? 0 : t3.axisCharts ? e2.chart.parentHeightOffset : 0; + t3.dom.Paper.node.parentNode.parentNode.style.minHeight = t3.svgHeight + o2 + "px"; + } + t3.dom.elWrap.style.width = t3.svgWidth + "px", t3.dom.elWrap.style.height = t3.svgHeight + "px"; + } }, { key: "shiftGraphPosition", value: function() { + var t3 = this.w.globals, e2 = t3.translateY, i2 = { transform: "translate(" + t3.translateX + ", " + e2 + ")" }; + m.setAttrs(t3.dom.elGraphical.node, i2); + } }, { key: "resizeNonAxisCharts", value: function() { + var t3 = this.w, e2 = t3.globals, i2 = 0, a2 = t3.config.chart.sparkline.enabled ? 1 : 15; + a2 += t3.config.grid.padding.bottom, "top" !== t3.config.legend.position && "bottom" !== t3.config.legend.position || !t3.config.legend.show || t3.config.legend.floating || (i2 = new lt(this.ctx).legendHelpers.getLegendBBox().clwh + 10); + var s2 = t3.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"), r2 = 2.05 * t3.globals.radialSize; + if (s2 && !t3.config.chart.sparkline.enabled && 0 !== t3.config.plotOptions.radialBar.startAngle) { + var o2 = x.getBoundingClientRect(s2); + r2 = o2.bottom; + var n2 = o2.bottom - o2.top; + r2 = Math.max(2.05 * t3.globals.radialSize, n2); + } + var l2 = r2 + e2.translateY + i2 + a2; + e2.dom.elLegendForeign && e2.dom.elLegendForeign.setAttribute("height", l2), t3.config.chart.height && String(t3.config.chart.height).indexOf("%") > 0 || (e2.dom.elWrap.style.height = l2 + "px", m.setAttrs(e2.dom.Paper.node, { height: l2 }), e2.dom.Paper.node.parentNode.parentNode.style.minHeight = l2 + "px"); + } }, { key: "coreCalculations", value: function() { + new U(this.ctx).init(); + } }, { key: "resetGlobals", value: function() { + var t3 = this, e2 = function() { + return t3.w.config.series.map(function(t4) { + return []; + }); + }, i2 = new Y(), a2 = this.w.globals; + i2.initGlobalVars(a2), a2.seriesXvalues = e2(), a2.seriesYvalues = e2(); + } }, { key: "isMultipleY", value: function() { + if (this.w.config.yaxis.constructor === Array && this.w.config.yaxis.length > 1) + return this.w.globals.isMultipleYAxis = true, true; + } }, { key: "xySettings", value: function() { + var t3 = null, e2 = this.w; + if (e2.globals.axisCharts) { + if ("back" === e2.config.xaxis.crosshairs.position) + new Q(this.ctx).drawXCrosshairs(); + if ("back" === e2.config.yaxis[0].crosshairs.position) + new Q(this.ctx).drawYCrosshairs(); + if ("datetime" === e2.config.xaxis.type && void 0 === e2.config.xaxis.labels.formatter) { + this.ctx.timeScale = new Nt(this.ctx); + var i2 = []; + isFinite(e2.globals.minX) && isFinite(e2.globals.maxX) && !e2.globals.isBarHorizontal ? i2 = this.ctx.timeScale.calculateTimeScaleTicks(e2.globals.minX, e2.globals.maxX) : e2.globals.isBarHorizontal && (i2 = this.ctx.timeScale.calculateTimeScaleTicks(e2.globals.minY, e2.globals.maxY)), this.ctx.timeScale.recalcDimensionsBasedOnFormat(i2); + } + t3 = new y(this.ctx).getCalculatedRatios(); + } + return t3; + } }, { key: "updateSourceChart", value: function(t3) { + this.ctx.w.globals.selection = void 0, this.ctx.updateHelpers._updateOptions({ chart: { selection: { xaxis: { min: t3.w.globals.minX, max: t3.w.globals.maxX } } } }, false, false); + } }, { key: "setupBrushHandler", value: function() { + var t3 = this, i2 = this.w; + if (i2.config.chart.brush.enabled && "function" != typeof i2.config.chart.events.selection) { + var a2 = Array.isArray(i2.config.chart.brush.targets) || [i2.config.chart.brush.target]; + a2.forEach(function(e2) { + var i3 = ApexCharts.getChartByID(e2); + i3.w.globals.brushSource = t3.ctx, "function" != typeof i3.w.config.chart.events.zoomed && (i3.w.config.chart.events.zoomed = function() { + t3.updateSourceChart(i3); + }), "function" != typeof i3.w.config.chart.events.scrolled && (i3.w.config.chart.events.scrolled = function() { + t3.updateSourceChart(i3); + }); + }), i2.config.chart.events.selection = function(t4, s2) { + a2.forEach(function(t5) { + var a3 = ApexCharts.getChartByID(t5), r2 = x.clone(i2.config.yaxis); + if (i2.config.chart.brush.autoScaleYaxis && 1 === a3.w.globals.series.length) { + var o2 = new _(a3); + r2 = o2.autoScaleY(a3, r2, s2); + } + var n2 = a3.w.config.yaxis.reduce(function(t6, i3, s3) { + return [].concat(u(t6), [e(e({}, a3.w.config.yaxis[s3]), {}, { min: r2[0].min, max: r2[0].max })]); + }, []); + a3.ctx.updateHelpers._updateOptions({ xaxis: { min: s2.xaxis.min, max: s2.xaxis.max }, yaxis: n2 }, false, false, false, false); + }); + }; + } + } }]), t2; + }(); + var Bt = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "_updateOptions", value: function(t3) { + var e2 = this, a2 = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], s2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], r2 = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3], o2 = arguments.length > 4 && void 0 !== arguments[4] && arguments[4]; + return new Promise(function(n2) { + var l2 = [e2.ctx]; + r2 && (l2 = e2.ctx.getSyncedCharts()), e2.ctx.w.globals.isExecCalled && (l2 = [e2.ctx], e2.ctx.w.globals.isExecCalled = false), l2.forEach(function(r3, h2) { + var c2 = r3.w; + if (c2.globals.shouldAnimate = s2, a2 || (c2.globals.resized = true, c2.globals.dataChanged = true, s2 && r3.series.getPreviousPaths()), t3 && "object" === i(t3) && (r3.config = new E(t3), t3 = y.extendArrayProps(r3.config, t3, c2), r3.w.globals.chartID !== e2.ctx.w.globals.chartID && delete t3.series, c2.config = x.extend(c2.config, t3), o2 && (c2.globals.lastXAxis = t3.xaxis ? x.clone(t3.xaxis) : [], c2.globals.lastYAxis = t3.yaxis ? x.clone(t3.yaxis) : [], c2.globals.initialConfig = x.extend({}, c2.config), c2.globals.initialSeries = x.clone(c2.config.series), t3.series))) { + for (var d2 = 0; d2 < c2.globals.collapsedSeriesIndices.length; d2++) { + var g2 = c2.config.series[c2.globals.collapsedSeriesIndices[d2]]; + c2.globals.collapsedSeries[d2].data = c2.globals.axisCharts ? g2.data.slice() : g2; + } + for (var u2 = 0; u2 < c2.globals.ancillaryCollapsedSeriesIndices.length; u2++) { + var p2 = c2.config.series[c2.globals.ancillaryCollapsedSeriesIndices[u2]]; + c2.globals.ancillaryCollapsedSeries[u2].data = c2.globals.axisCharts ? p2.data.slice() : p2; + } + r3.series.emptyCollapsedSeries(c2.config.series); + } + return r3.update(t3).then(function() { + h2 === l2.length - 1 && n2(r3); + }); + }); + }); + } }, { key: "_updateSeries", value: function(t3, e2) { + var i2 = this, a2 = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; + return new Promise(function(s2) { + var r2, o2 = i2.w; + return o2.globals.shouldAnimate = e2, o2.globals.dataChanged = true, e2 && i2.ctx.series.getPreviousPaths(), o2.globals.axisCharts ? (0 === (r2 = t3.map(function(t4, e3) { + return i2._extendSeries(t4, e3); + })).length && (r2 = [{ data: [] }]), o2.config.series = r2) : o2.config.series = t3.slice(), a2 && (o2.globals.initialConfig.series = x.clone(o2.config.series), o2.globals.initialSeries = x.clone(o2.config.series)), i2.ctx.update().then(function() { + s2(i2.ctx); + }); + }); + } }, { key: "_extendSeries", value: function(t3, i2) { + var a2 = this.w, s2 = a2.config.series[i2]; + return e(e({}, a2.config.series[i2]), {}, { name: t3.name ? t3.name : null == s2 ? void 0 : s2.name, color: t3.color ? t3.color : null == s2 ? void 0 : s2.color, type: t3.type ? t3.type : null == s2 ? void 0 : s2.type, group: t3.group ? t3.group : null == s2 ? void 0 : s2.group, data: t3.data ? t3.data : null == s2 ? void 0 : s2.data, zIndex: void 0 !== t3.zIndex ? t3.zIndex : i2 }); + } }, { key: "toggleDataPointSelection", value: function(t3, e2) { + var i2 = this.w, a2 = null, s2 = ".apexcharts-series[data\\:realIndex='".concat(t3, "']"); + return i2.globals.axisCharts ? a2 = i2.globals.dom.Paper.select("".concat(s2, " path[j='").concat(e2, "'], ").concat(s2, " circle[j='").concat(e2, "'], ").concat(s2, " rect[j='").concat(e2, "']")).members[0] : void 0 === e2 && (a2 = i2.globals.dom.Paper.select("".concat(s2, " path[j='").concat(t3, "']")).members[0], "pie" !== i2.config.chart.type && "polarArea" !== i2.config.chart.type && "donut" !== i2.config.chart.type || this.ctx.pie.pieClicked(t3)), a2 ? (new m(this.ctx).pathMouseDown(a2, null), a2.node ? a2.node : null) : (console.warn("toggleDataPointSelection: Element not found"), null); + } }, { key: "forceXAxisUpdate", value: function(t3) { + var e2 = this.w; + if (["min", "max"].forEach(function(i3) { + void 0 !== t3.xaxis[i3] && (e2.config.xaxis[i3] = t3.xaxis[i3], e2.globals.lastXAxis[i3] = t3.xaxis[i3]); + }), t3.xaxis.categories && t3.xaxis.categories.length && (e2.config.xaxis.categories = t3.xaxis.categories), e2.config.xaxis.convertedCatToNumeric) { + var i2 = new X(t3); + t3 = i2.convertCatToNumericXaxis(t3, this.ctx); + } + return t3; + } }, { key: "forceYAxisUpdate", value: function(t3) { + return t3.chart && t3.chart.stacked && "100%" === t3.chart.stackType && (Array.isArray(t3.yaxis) ? t3.yaxis.forEach(function(e2, i2) { + t3.yaxis[i2].min = 0, t3.yaxis[i2].max = 100; + }) : (t3.yaxis.min = 0, t3.yaxis.max = 100)), t3; + } }, { key: "revertDefaultAxisMinMax", value: function(t3) { + var e2 = this, i2 = this.w, a2 = i2.globals.lastXAxis, s2 = i2.globals.lastYAxis; + t3 && t3.xaxis && (a2 = t3.xaxis), t3 && t3.yaxis && (s2 = t3.yaxis), i2.config.xaxis.min = a2.min, i2.config.xaxis.max = a2.max; + var r2 = function(t4) { + void 0 !== s2[t4] && (i2.config.yaxis[t4].min = s2[t4].min, i2.config.yaxis[t4].max = s2[t4].max); + }; + i2.config.yaxis.map(function(t4, a3) { + i2.globals.zoomed || void 0 !== s2[a3] ? r2(a3) : void 0 !== e2.ctx.opts.yaxis[a3] && (t4.min = e2.ctx.opts.yaxis[a3].min, t4.max = e2.ctx.opts.yaxis[a3].max); + }); + } }]), t2; + }(); + Rt = "undefined" != typeof window ? window : void 0, Ht = function(t2, e2) { + var a2 = (void 0 !== this ? this : t2).SVG = function(t3) { + if (a2.supported) + return t3 = new a2.Doc(t3), a2.parser.draw || a2.prepare(), t3; + }; + if (a2.ns = "http://www.w3.org/2000/svg", a2.xmlns = "http://www.w3.org/2000/xmlns/", a2.xlink = "http://www.w3.org/1999/xlink", a2.svgjs = "http://svgjs.dev", a2.supported = true, !a2.supported) + return false; + a2.did = 1e3, a2.eid = function(t3) { + return "Svgjs" + d2(t3) + a2.did++; + }, a2.create = function(t3) { + var i2 = e2.createElementNS(this.ns, t3); + return i2.setAttribute("id", this.eid(t3)), i2; + }, a2.extend = function() { + var t3, e3; + e3 = (t3 = [].slice.call(arguments)).pop(); + for (var i2 = t3.length - 1; i2 >= 0; i2--) + if (t3[i2]) + for (var s3 in e3) + t3[i2].prototype[s3] = e3[s3]; + a2.Set && a2.Set.inherit && a2.Set.inherit(); + }, a2.invent = function(t3) { + var e3 = "function" == typeof t3.create ? t3.create : function() { + this.constructor.call(this, a2.create(t3.create)); + }; + return t3.inherit && (e3.prototype = new t3.inherit()), t3.extend && a2.extend(e3, t3.extend), t3.construct && a2.extend(t3.parent || a2.Container, t3.construct), e3; + }, a2.adopt = function(e3) { + return e3 ? e3.instance ? e3.instance : ((i2 = "svg" == e3.nodeName ? e3.parentNode instanceof t2.SVGElement ? new a2.Nested() : new a2.Doc() : "linearGradient" == e3.nodeName ? new a2.Gradient("linear") : "radialGradient" == e3.nodeName ? new a2.Gradient("radial") : a2[d2(e3.nodeName)] ? new a2[d2(e3.nodeName)]() : new a2.Element(e3)).type = e3.nodeName, i2.node = e3, e3.instance = i2, i2 instanceof a2.Doc && i2.namespace().defs(), i2.setData(JSON.parse(e3.getAttribute("svgjs:data")) || {}), i2) : null; + var i2; + }, a2.prepare = function() { + var t3 = e2.getElementsByTagName("body")[0], i2 = (t3 ? new a2.Doc(t3) : a2.adopt(e2.documentElement).nested()).size(2, 0); + a2.parser = { body: t3 || e2.documentElement, draw: i2.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node, poly: i2.polyline().node, path: i2.path().node, native: a2.create("svg") }; + }, a2.parser = { native: a2.create("svg") }, e2.addEventListener("DOMContentLoaded", function() { + a2.parser.draw || a2.prepare(); + }, false), a2.regex = { numberAndUnit: /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i, hex: /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i, rgb: /rgb\((\d+),(\d+),(\d+)\)/, reference: /#([a-z0-9\-_]+)/i, transforms: /\)\s*,?\s*/, whitespace: /\s/g, isHex: /^#[a-f0-9]{3,6}$/i, isRgb: /^rgb\(/, isCss: /[^:]+:[^;]+;?/, isBlank: /^(\s+)?$/, isNumber: /^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, isPercent: /^-?[\d\.]+%$/, isImage: /\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i, delimiter: /[\s,]+/, hyphen: /([^e])\-/gi, pathLetters: /[MLHVCSQTAZ]/gi, isPathLetter: /[MLHVCSQTAZ]/i, numbersWithDots: /((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi, dots: /\./g }, a2.utils = { map: function(t3, e3) { + for (var i2 = t3.length, a3 = [], s3 = 0; s3 < i2; s3++) + a3.push(e3(t3[s3])); + return a3; + }, filter: function(t3, e3) { + for (var i2 = t3.length, a3 = [], s3 = 0; s3 < i2; s3++) + e3(t3[s3]) && a3.push(t3[s3]); + return a3; + }, filterSVGElements: function(e3) { + return this.filter(e3, function(e4) { + return e4 instanceof t2.SVGElement; + }); + } }, a2.defaults = { attrs: { "fill-opacity": 1, "stroke-opacity": 1, "stroke-width": 0, "stroke-linejoin": "miter", "stroke-linecap": "butt", fill: "#000000", stroke: "#000000", opacity: 1, x: 0, y: 0, cx: 0, cy: 0, width: 0, height: 0, r: 0, rx: 0, ry: 0, offset: 0, "stop-opacity": 1, "stop-color": "#000000", "font-size": 16, "font-family": "Helvetica, Arial, sans-serif", "text-anchor": "start" } }, a2.Color = function(t3) { + var e3, s3; + this.r = 0, this.g = 0, this.b = 0, t3 && ("string" == typeof t3 ? a2.regex.isRgb.test(t3) ? (e3 = a2.regex.rgb.exec(t3.replace(a2.regex.whitespace, "")), this.r = parseInt(e3[1]), this.g = parseInt(e3[2]), this.b = parseInt(e3[3])) : a2.regex.isHex.test(t3) && (e3 = a2.regex.hex.exec(4 == (s3 = t3).length ? ["#", s3.substring(1, 2), s3.substring(1, 2), s3.substring(2, 3), s3.substring(2, 3), s3.substring(3, 4), s3.substring(3, 4)].join("") : s3), this.r = parseInt(e3[1], 16), this.g = parseInt(e3[2], 16), this.b = parseInt(e3[3], 16)) : "object" === i(t3) && (this.r = t3.r, this.g = t3.g, this.b = t3.b)); + }, a2.extend(a2.Color, { toString: function() { + return this.toHex(); + }, toHex: function() { + return "#" + g2(this.r) + g2(this.g) + g2(this.b); + }, toRgb: function() { + return "rgb(" + [this.r, this.g, this.b].join() + ")"; + }, brightness: function() { + return this.r / 255 * 0.3 + this.g / 255 * 0.59 + this.b / 255 * 0.11; + }, morph: function(t3) { + return this.destination = new a2.Color(t3), this; + }, at: function(t3) { + return this.destination ? (t3 = t3 < 0 ? 0 : t3 > 1 ? 1 : t3, new a2.Color({ r: ~~(this.r + (this.destination.r - this.r) * t3), g: ~~(this.g + (this.destination.g - this.g) * t3), b: ~~(this.b + (this.destination.b - this.b) * t3) })) : this; + } }), a2.Color.test = function(t3) { + return t3 += "", a2.regex.isHex.test(t3) || a2.regex.isRgb.test(t3); + }, a2.Color.isRgb = function(t3) { + return t3 && "number" == typeof t3.r && "number" == typeof t3.g && "number" == typeof t3.b; + }, a2.Color.isColor = function(t3) { + return a2.Color.isRgb(t3) || a2.Color.test(t3); + }, a2.Array = function(t3, e3) { + 0 == (t3 = (t3 || []).valueOf()).length && e3 && (t3 = e3.valueOf()), this.value = this.parse(t3); + }, a2.extend(a2.Array, { toString: function() { + return this.value.join(" "); + }, valueOf: function() { + return this.value; + }, parse: function(t3) { + return t3 = t3.valueOf(), Array.isArray(t3) ? t3 : this.split(t3); + } }), a2.PointArray = function(t3, e3) { + a2.Array.call(this, t3, e3 || [[0, 0]]); + }, a2.PointArray.prototype = new a2.Array(), a2.PointArray.prototype.constructor = a2.PointArray; + for (var s2 = { M: function(t3, e3, i2) { + return e3.x = i2.x = t3[0], e3.y = i2.y = t3[1], ["M", e3.x, e3.y]; + }, L: function(t3, e3) { + return e3.x = t3[0], e3.y = t3[1], ["L", t3[0], t3[1]]; + }, H: function(t3, e3) { + return e3.x = t3[0], ["H", t3[0]]; + }, V: function(t3, e3) { + return e3.y = t3[0], ["V", t3[0]]; + }, C: function(t3, e3) { + return e3.x = t3[4], e3.y = t3[5], ["C", t3[0], t3[1], t3[2], t3[3], t3[4], t3[5]]; + }, Q: function(t3, e3) { + return e3.x = t3[2], e3.y = t3[3], ["Q", t3[0], t3[1], t3[2], t3[3]]; + }, S: function(t3, e3) { + return e3.x = t3[2], e3.y = t3[3], ["S", t3[0], t3[1], t3[2], t3[3]]; + }, Z: function(t3, e3, i2) { + return e3.x = i2.x, e3.y = i2.y, ["Z"]; + } }, r2 = "mlhvqtcsaz".split(""), o2 = 0, n2 = r2.length; o2 < n2; ++o2) + s2[r2[o2]] = /* @__PURE__ */ function(t3) { + return function(e3, i2, a3) { + if ("H" == t3) + e3[0] = e3[0] + i2.x; + else if ("V" == t3) + e3[0] = e3[0] + i2.y; + else if ("A" == t3) + e3[5] = e3[5] + i2.x, e3[6] = e3[6] + i2.y; + else + for (var r3 = 0, o3 = e3.length; r3 < o3; ++r3) + e3[r3] = e3[r3] + (r3 % 2 ? i2.y : i2.x); + if (s2 && "function" == typeof s2[t3]) + return s2[t3](e3, i2, a3); + }; + }(r2[o2].toUpperCase()); + a2.PathArray = function(t3, e3) { + a2.Array.call(this, t3, e3 || [["M", 0, 0]]); + }, a2.PathArray.prototype = new a2.Array(), a2.PathArray.prototype.constructor = a2.PathArray, a2.extend(a2.PathArray, { toString: function() { + return function(t3) { + for (var e3 = 0, i2 = t3.length, a3 = ""; e3 < i2; e3++) + a3 += t3[e3][0], null != t3[e3][1] && (a3 += t3[e3][1], null != t3[e3][2] && (a3 += " ", a3 += t3[e3][2], null != t3[e3][3] && (a3 += " ", a3 += t3[e3][3], a3 += " ", a3 += t3[e3][4], null != t3[e3][5] && (a3 += " ", a3 += t3[e3][5], a3 += " ", a3 += t3[e3][6], null != t3[e3][7] && (a3 += " ", a3 += t3[e3][7]))))); + return a3 + " "; + }(this.value); + }, move: function(t3, e3) { + var i2 = this.bbox(); + return i2.x, i2.y, this; + }, at: function(t3) { + if (!this.destination) + return this; + for (var e3 = this.value, i2 = this.destination.value, s3 = [], r3 = new a2.PathArray(), o3 = 0, n3 = e3.length; o3 < n3; o3++) { + s3[o3] = [e3[o3][0]]; + for (var l3 = 1, h3 = e3[o3].length; l3 < h3; l3++) + s3[o3][l3] = e3[o3][l3] + (i2[o3][l3] - e3[o3][l3]) * t3; + "A" === s3[o3][0] && (s3[o3][4] = +(0 != s3[o3][4]), s3[o3][5] = +(0 != s3[o3][5])); + } + return r3.value = s3, r3; + }, parse: function(t3) { + if (t3 instanceof a2.PathArray) + return t3.valueOf(); + var e3, i2 = { M: 2, L: 2, H: 1, V: 1, C: 6, S: 4, Q: 4, T: 2, A: 7, Z: 0 }; + t3 = "string" == typeof t3 ? t3.replace(a2.regex.numbersWithDots, h2).replace(a2.regex.pathLetters, " $& ").replace(a2.regex.hyphen, "$1 -").trim().split(a2.regex.delimiter) : t3.reduce(function(t4, e4) { + return [].concat.call(t4, e4); + }, []); + var r3 = [], o3 = new a2.Point(), n3 = new a2.Point(), l3 = 0, c3 = t3.length; + do { + a2.regex.isPathLetter.test(t3[l3]) ? (e3 = t3[l3], ++l3) : "M" == e3 ? e3 = "L" : "m" == e3 && (e3 = "l"), r3.push(s2[e3].call(null, t3.slice(l3, l3 += i2[e3.toUpperCase()]).map(parseFloat), o3, n3)); + } while (c3 > l3); + return r3; + }, bbox: function() { + return a2.parser.draw || a2.prepare(), a2.parser.path.setAttribute("d", this.toString()), a2.parser.path.getBBox(); + } }), a2.Number = a2.invent({ create: function(t3, e3) { + this.value = 0, this.unit = e3 || "", "number" == typeof t3 ? this.value = isNaN(t3) ? 0 : isFinite(t3) ? t3 : t3 < 0 ? -34e37 : 34e37 : "string" == typeof t3 ? (e3 = t3.match(a2.regex.numberAndUnit)) && (this.value = parseFloat(e3[1]), "%" == e3[5] ? this.value /= 100 : "s" == e3[5] && (this.value *= 1e3), this.unit = e3[5]) : t3 instanceof a2.Number && (this.value = t3.valueOf(), this.unit = t3.unit); + }, extend: { toString: function() { + return ("%" == this.unit ? ~~(1e8 * this.value) / 1e6 : "s" == this.unit ? this.value / 1e3 : this.value) + this.unit; + }, toJSON: function() { + return this.toString(); + }, valueOf: function() { + return this.value; + }, plus: function(t3) { + return t3 = new a2.Number(t3), new a2.Number(this + t3, this.unit || t3.unit); + }, minus: function(t3) { + return t3 = new a2.Number(t3), new a2.Number(this - t3, this.unit || t3.unit); + }, times: function(t3) { + return t3 = new a2.Number(t3), new a2.Number(this * t3, this.unit || t3.unit); + }, divide: function(t3) { + return t3 = new a2.Number(t3), new a2.Number(this / t3, this.unit || t3.unit); + }, to: function(t3) { + var e3 = new a2.Number(this); + return "string" == typeof t3 && (e3.unit = t3), e3; + }, morph: function(t3) { + return this.destination = new a2.Number(t3), t3.relative && (this.destination.value += this.value), this; + }, at: function(t3) { + return this.destination ? new a2.Number(this.destination).minus(this).times(t3).plus(this) : this; + } } }), a2.Element = a2.invent({ create: function(t3) { + this._stroke = a2.defaults.attrs.stroke, this._event = null, this.dom = {}, (this.node = t3) && (this.type = t3.nodeName, this.node.instance = this, this._stroke = t3.getAttribute("stroke") || this._stroke); + }, extend: { x: function(t3) { + return this.attr("x", t3); + }, y: function(t3) { + return this.attr("y", t3); + }, cx: function(t3) { + return null == t3 ? this.x() + this.width() / 2 : this.x(t3 - this.width() / 2); + }, cy: function(t3) { + return null == t3 ? this.y() + this.height() / 2 : this.y(t3 - this.height() / 2); + }, move: function(t3, e3) { + return this.x(t3).y(e3); + }, center: function(t3, e3) { + return this.cx(t3).cy(e3); + }, width: function(t3) { + return this.attr("width", t3); + }, height: function(t3) { + return this.attr("height", t3); + }, size: function(t3, e3) { + var i2 = u2(this, t3, e3); + return this.width(new a2.Number(i2.width)).height(new a2.Number(i2.height)); + }, clone: function(t3) { + this.writeDataToDom(); + var e3 = x2(this.node.cloneNode(true)); + return t3 ? t3.add(e3) : this.after(e3), e3; + }, remove: function() { + return this.parent() && this.parent().removeElement(this), this; + }, replace: function(t3) { + return this.after(t3).remove(), t3; + }, addTo: function(t3) { + return t3.put(this); + }, putIn: function(t3) { + return t3.add(this); + }, id: function(t3) { + return this.attr("id", t3); + }, show: function() { + return this.style("display", ""); + }, hide: function() { + return this.style("display", "none"); + }, visible: function() { + return "none" != this.style("display"); + }, toString: function() { + return this.attr("id"); + }, classes: function() { + var t3 = this.attr("class"); + return null == t3 ? [] : t3.trim().split(a2.regex.delimiter); + }, hasClass: function(t3) { + return -1 != this.classes().indexOf(t3); + }, addClass: function(t3) { + if (!this.hasClass(t3)) { + var e3 = this.classes(); + e3.push(t3), this.attr("class", e3.join(" ")); + } + return this; + }, removeClass: function(t3) { + return this.hasClass(t3) && this.attr("class", this.classes().filter(function(e3) { + return e3 != t3; + }).join(" ")), this; + }, toggleClass: function(t3) { + return this.hasClass(t3) ? this.removeClass(t3) : this.addClass(t3); + }, reference: function(t3) { + return a2.get(this.attr(t3)); + }, parent: function(e3) { + var i2 = this; + if (!i2.node.parentNode) + return null; + if (i2 = a2.adopt(i2.node.parentNode), !e3) + return i2; + for (; i2 && i2.node instanceof t2.SVGElement; ) { + if ("string" == typeof e3 ? i2.matches(e3) : i2 instanceof e3) + return i2; + if (!i2.node.parentNode || "#document" == i2.node.parentNode.nodeName) + return null; + i2 = a2.adopt(i2.node.parentNode); + } + }, doc: function() { + return this instanceof a2.Doc ? this : this.parent(a2.Doc); + }, parents: function(t3) { + var e3 = [], i2 = this; + do { + if (!(i2 = i2.parent(t3)) || !i2.node) + break; + e3.push(i2); + } while (i2.parent); + return e3; + }, matches: function(t3) { + return function(t4, e3) { + return (t4.matches || t4.matchesSelector || t4.msMatchesSelector || t4.mozMatchesSelector || t4.webkitMatchesSelector || t4.oMatchesSelector).call(t4, e3); + }(this.node, t3); + }, native: function() { + return this.node; + }, svg: function(t3) { + var i2 = e2.createElement("svg"); + if (!(t3 && this instanceof a2.Parent)) + return i2.appendChild(t3 = e2.createElement("svg")), this.writeDataToDom(), t3.appendChild(this.node.cloneNode(true)), i2.innerHTML.replace(/^/, "").replace(/<\/svg>$/, ""); + i2.innerHTML = "" + t3.replace(/\n/, "").replace(/<([\w:-]+)([^<]+?)\/>/g, "<$1$2>") + ""; + for (var s3 = 0, r3 = i2.firstChild.childNodes.length; s3 < r3; s3++) + this.node.appendChild(i2.firstChild.firstChild); + return this; + }, writeDataToDom: function() { + return (this.each || this.lines) && (this.each ? this : this.lines()).each(function() { + this.writeDataToDom(); + }), this.node.removeAttribute("svgjs:data"), Object.keys(this.dom).length && this.node.setAttribute("svgjs:data", JSON.stringify(this.dom)), this; + }, setData: function(t3) { + return this.dom = t3, this; + }, is: function(t3) { + return function(t4, e3) { + return t4 instanceof e3; + }(this, t3); + } } }), a2.easing = { "-": function(t3) { + return t3; + }, "<>": function(t3) { + return -Math.cos(t3 * Math.PI) / 2 + 0.5; + }, ">": function(t3) { + return Math.sin(t3 * Math.PI / 2); + }, "<": function(t3) { + return 1 - Math.cos(t3 * Math.PI / 2); + } }, a2.morph = function(t3) { + return function(e3, i2) { + return new a2.MorphObj(e3, i2).at(t3); + }; + }, a2.Situation = a2.invent({ create: function(t3) { + this.init = false, this.reversed = false, this.reversing = false, this.duration = new a2.Number(t3.duration).valueOf(), this.delay = new a2.Number(t3.delay).valueOf(), this.start = +/* @__PURE__ */ new Date() + this.delay, this.finish = this.start + this.duration, this.ease = t3.ease, this.loop = 0, this.loops = false, this.animations = {}, this.attrs = {}, this.styles = {}, this.transforms = [], this.once = {}; + } }), a2.FX = a2.invent({ create: function(t3) { + this._target = t3, this.situations = [], this.active = false, this.situation = null, this.paused = false, this.lastPos = 0, this.pos = 0, this.absPos = 0, this._speed = 1; + }, extend: { animate: function(t3, e3, s3) { + "object" === i(t3) && (e3 = t3.ease, s3 = t3.delay, t3 = t3.duration); + var r3 = new a2.Situation({ duration: t3 || 1e3, delay: s3 || 0, ease: a2.easing[e3 || "-"] || e3 }); + return this.queue(r3), this; + }, target: function(t3) { + return t3 && t3 instanceof a2.Element ? (this._target = t3, this) : this._target; + }, timeToAbsPos: function(t3) { + return (t3 - this.situation.start) / (this.situation.duration / this._speed); + }, absPosToTime: function(t3) { + return this.situation.duration / this._speed * t3 + this.situation.start; + }, startAnimFrame: function() { + this.stopAnimFrame(), this.animationFrame = t2.requestAnimationFrame(function() { + this.step(); + }.bind(this)); + }, stopAnimFrame: function() { + t2.cancelAnimationFrame(this.animationFrame); + }, start: function() { + return !this.active && this.situation && (this.active = true, this.startCurrent()), this; + }, startCurrent: function() { + return this.situation.start = +/* @__PURE__ */ new Date() + this.situation.delay / this._speed, this.situation.finish = this.situation.start + this.situation.duration / this._speed, this.initAnimations().step(); + }, queue: function(t3) { + return ("function" == typeof t3 || t3 instanceof a2.Situation) && this.situations.push(t3), this.situation || (this.situation = this.situations.shift()), this; + }, dequeue: function() { + return this.stop(), this.situation = this.situations.shift(), this.situation && (this.situation instanceof a2.Situation ? this.start() : this.situation.call(this)), this; + }, initAnimations: function() { + var t3, e3 = this.situation; + if (e3.init) + return this; + for (var i2 in e3.animations) { + t3 = this.target()[i2](), Array.isArray(t3) || (t3 = [t3]), Array.isArray(e3.animations[i2]) || (e3.animations[i2] = [e3.animations[i2]]); + for (var s3 = t3.length; s3--; ) + e3.animations[i2][s3] instanceof a2.Number && (t3[s3] = new a2.Number(t3[s3])), e3.animations[i2][s3] = t3[s3].morph(e3.animations[i2][s3]); + } + for (var i2 in e3.attrs) + e3.attrs[i2] = new a2.MorphObj(this.target().attr(i2), e3.attrs[i2]); + for (var i2 in e3.styles) + e3.styles[i2] = new a2.MorphObj(this.target().style(i2), e3.styles[i2]); + return e3.initialTransformation = this.target().matrixify(), e3.init = true, this; + }, clearQueue: function() { + return this.situations = [], this; + }, clearCurrent: function() { + return this.situation = null, this; + }, stop: function(t3, e3) { + var i2 = this.active; + return this.active = false, e3 && this.clearQueue(), t3 && this.situation && (!i2 && this.startCurrent(), this.atEnd()), this.stopAnimFrame(), this.clearCurrent(); + }, after: function(t3) { + var e3 = this.last(); + return this.target().on("finished.fx", function i2(a3) { + a3.detail.situation == e3 && (t3.call(this, e3), this.off("finished.fx", i2)); + }), this._callStart(); + }, during: function(t3) { + var e3 = this.last(), i2 = function(i3) { + i3.detail.situation == e3 && t3.call(this, i3.detail.pos, a2.morph(i3.detail.pos), i3.detail.eased, e3); + }; + return this.target().off("during.fx", i2).on("during.fx", i2), this.after(function() { + this.off("during.fx", i2); + }), this._callStart(); + }, afterAll: function(t3) { + var e3 = function e4(i2) { + t3.call(this), this.off("allfinished.fx", e4); + }; + return this.target().off("allfinished.fx", e3).on("allfinished.fx", e3), this._callStart(); + }, last: function() { + return this.situations.length ? this.situations[this.situations.length - 1] : this.situation; + }, add: function(t3, e3, i2) { + return this.last()[i2 || "animations"][t3] = e3, this._callStart(); + }, step: function(t3) { + var e3, i2, a3; + t3 || (this.absPos = this.timeToAbsPos(+/* @__PURE__ */ new Date())), false !== this.situation.loops ? (e3 = Math.max(this.absPos, 0), i2 = Math.floor(e3), true === this.situation.loops || i2 < this.situation.loops ? (this.pos = e3 - i2, a3 = this.situation.loop, this.situation.loop = i2) : (this.absPos = this.situation.loops, this.pos = 1, a3 = this.situation.loop - 1, this.situation.loop = this.situation.loops), this.situation.reversing && (this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - a3) % 2))) : (this.absPos = Math.min(this.absPos, 1), this.pos = this.absPos), this.pos < 0 && (this.pos = 0), this.situation.reversed && (this.pos = 1 - this.pos); + var s3 = this.situation.ease(this.pos); + for (var r3 in this.situation.once) + r3 > this.lastPos && r3 <= s3 && (this.situation.once[r3].call(this.target(), this.pos, s3), delete this.situation.once[r3]); + return this.active && this.target().fire("during", { pos: this.pos, eased: s3, fx: this, situation: this.situation }), this.situation ? (this.eachAt(), 1 == this.pos && !this.situation.reversed || this.situation.reversed && 0 == this.pos ? (this.stopAnimFrame(), this.target().fire("finished", { fx: this, situation: this.situation }), this.situations.length || (this.target().fire("allfinished"), this.situations.length || (this.target().off(".fx"), this.active = false)), this.active ? this.dequeue() : this.clearCurrent()) : !this.paused && this.active && this.startAnimFrame(), this.lastPos = s3, this) : this; + }, eachAt: function() { + var t3, e3 = this, i2 = this.target(), s3 = this.situation; + for (var r3 in s3.animations) + t3 = [].concat(s3.animations[r3]).map(function(t4) { + return "string" != typeof t4 && t4.at ? t4.at(s3.ease(e3.pos), e3.pos) : t4; + }), i2[r3].apply(i2, t3); + for (var r3 in s3.attrs) + t3 = [r3].concat(s3.attrs[r3]).map(function(t4) { + return "string" != typeof t4 && t4.at ? t4.at(s3.ease(e3.pos), e3.pos) : t4; + }), i2.attr.apply(i2, t3); + for (var r3 in s3.styles) + t3 = [r3].concat(s3.styles[r3]).map(function(t4) { + return "string" != typeof t4 && t4.at ? t4.at(s3.ease(e3.pos), e3.pos) : t4; + }), i2.style.apply(i2, t3); + if (s3.transforms.length) { + t3 = s3.initialTransformation, r3 = 0; + for (var o3 = s3.transforms.length; r3 < o3; r3++) { + var n3 = s3.transforms[r3]; + n3 instanceof a2.Matrix ? t3 = n3.relative ? t3.multiply(new a2.Matrix().morph(n3).at(s3.ease(this.pos))) : t3.morph(n3).at(s3.ease(this.pos)) : (n3.relative || n3.undo(t3.extract()), t3 = t3.multiply(n3.at(s3.ease(this.pos)))); + } + i2.matrix(t3); + } + return this; + }, once: function(t3, e3, i2) { + var a3 = this.last(); + return i2 || (t3 = a3.ease(t3)), a3.once[t3] = e3, this; + }, _callStart: function() { + return setTimeout(function() { + this.start(); + }.bind(this), 0), this; + } }, parent: a2.Element, construct: { animate: function(t3, e3, i2) { + return (this.fx || (this.fx = new a2.FX(this))).animate(t3, e3, i2); + }, delay: function(t3) { + return (this.fx || (this.fx = new a2.FX(this))).delay(t3); + }, stop: function(t3, e3) { + return this.fx && this.fx.stop(t3, e3), this; + }, finish: function() { + return this.fx && this.fx.finish(), this; + } } }), a2.MorphObj = a2.invent({ create: function(t3, e3) { + return a2.Color.isColor(e3) ? new a2.Color(t3).morph(e3) : a2.regex.delimiter.test(t3) ? a2.regex.pathLetters.test(t3) ? new a2.PathArray(t3).morph(e3) : new a2.Array(t3).morph(e3) : a2.regex.numberAndUnit.test(e3) ? new a2.Number(t3).morph(e3) : (this.value = t3, void (this.destination = e3)); + }, extend: { at: function(t3, e3) { + return e3 < 1 ? this.value : this.destination; + }, valueOf: function() { + return this.value; + } } }), a2.extend(a2.FX, { attr: function(t3, e3, a3) { + if ("object" === i(t3)) + for (var s3 in t3) + this.attr(s3, t3[s3]); + else + this.add(t3, e3, "attrs"); + return this; + }, plot: function(t3, e3, i2, a3) { + return 4 == arguments.length ? this.plot([t3, e3, i2, a3]) : this.add("plot", new (this.target()).morphArray(t3)); + } }), a2.Box = a2.invent({ create: function(t3, e3, s3, r3) { + if (!("object" !== i(t3) || t3 instanceof a2.Element)) + return a2.Box.call(this, null != t3.left ? t3.left : t3.x, null != t3.top ? t3.top : t3.y, t3.width, t3.height); + var o3; + 4 == arguments.length && (this.x = t3, this.y = e3, this.width = s3, this.height = r3), null == (o3 = this).x && (o3.x = 0, o3.y = 0, o3.width = 0, o3.height = 0), o3.w = o3.width, o3.h = o3.height, o3.x2 = o3.x + o3.width, o3.y2 = o3.y + o3.height, o3.cx = o3.x + o3.width / 2, o3.cy = o3.y + o3.height / 2; + } }), a2.BBox = a2.invent({ create: function(t3) { + if (a2.Box.apply(this, [].slice.call(arguments)), t3 instanceof a2.Element) { + var i2; + try { + if (!e2.documentElement.contains) { + for (var s3 = t3.node; s3.parentNode; ) + s3 = s3.parentNode; + if (s3 != e2) + throw new Error("Element not in the dom"); + } + i2 = t3.node.getBBox(); + } catch (e3) { + if (t3 instanceof a2.Shape) { + a2.parser.draw || a2.prepare(); + var r3 = t3.clone(a2.parser.draw.instance).show(); + r3 && r3.node && "function" == typeof r3.node.getBBox && (i2 = r3.node.getBBox()), r3 && "function" == typeof r3.remove && r3.remove(); + } else + i2 = { x: t3.node.clientLeft, y: t3.node.clientTop, width: t3.node.clientWidth, height: t3.node.clientHeight }; + } + a2.Box.call(this, i2); + } + }, inherit: a2.Box, parent: a2.Element, construct: { bbox: function() { + return new a2.BBox(this); + } } }), a2.BBox.prototype.constructor = a2.BBox, a2.Matrix = a2.invent({ create: function(t3) { + var e3 = f2([1, 0, 0, 1, 0, 0]); + t3 = null === t3 ? e3 : t3 instanceof a2.Element ? t3.matrixify() : "string" == typeof t3 ? f2(t3.split(a2.regex.delimiter).map(parseFloat)) : 6 == arguments.length ? f2([].slice.call(arguments)) : Array.isArray(t3) ? f2(t3) : t3 && "object" === i(t3) ? t3 : e3; + for (var s3 = v2.length - 1; s3 >= 0; --s3) + this[v2[s3]] = null != t3[v2[s3]] ? t3[v2[s3]] : e3[v2[s3]]; + }, extend: { extract: function() { + var t3 = p2(this, 0, 1); + p2(this, 1, 0); + var e3 = 180 / Math.PI * Math.atan2(t3.y, t3.x) - 90; + return { x: this.e, y: this.f, transformedX: (this.e * Math.cos(e3 * Math.PI / 180) + this.f * Math.sin(e3 * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b), transformedY: (this.f * Math.cos(e3 * Math.PI / 180) + this.e * Math.sin(-e3 * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d), rotation: e3, a: this.a, b: this.b, c: this.c, d: this.d, e: this.e, f: this.f, matrix: new a2.Matrix(this) }; + }, clone: function() { + return new a2.Matrix(this); + }, morph: function(t3) { + return this.destination = new a2.Matrix(t3), this; + }, multiply: function(t3) { + return new a2.Matrix(this.native().multiply(function(t4) { + return t4 instanceof a2.Matrix || (t4 = new a2.Matrix(t4)), t4; + }(t3).native())); + }, inverse: function() { + return new a2.Matrix(this.native().inverse()); + }, translate: function(t3, e3) { + return new a2.Matrix(this.native().translate(t3 || 0, e3 || 0)); + }, native: function() { + for (var t3 = a2.parser.native.createSVGMatrix(), e3 = v2.length - 1; e3 >= 0; e3--) + t3[v2[e3]] = this[v2[e3]]; + return t3; + }, toString: function() { + return "matrix(" + b2(this.a) + "," + b2(this.b) + "," + b2(this.c) + "," + b2(this.d) + "," + b2(this.e) + "," + b2(this.f) + ")"; + } }, parent: a2.Element, construct: { ctm: function() { + return new a2.Matrix(this.node.getCTM()); + }, screenCTM: function() { + if (this instanceof a2.Nested) { + var t3 = this.rect(1, 1), e3 = t3.node.getScreenCTM(); + return t3.remove(), new a2.Matrix(e3); + } + return new a2.Matrix(this.node.getScreenCTM()); + } } }), a2.Point = a2.invent({ create: function(t3, e3) { + var a3; + a3 = Array.isArray(t3) ? { x: t3[0], y: t3[1] } : "object" === i(t3) ? { x: t3.x, y: t3.y } : null != t3 ? { x: t3, y: null != e3 ? e3 : t3 } : { x: 0, y: 0 }, this.x = a3.x, this.y = a3.y; + }, extend: { clone: function() { + return new a2.Point(this); + }, morph: function(t3, e3) { + return this.destination = new a2.Point(t3, e3), this; + } } }), a2.extend(a2.Element, { point: function(t3, e3) { + return new a2.Point(t3, e3).transform(this.screenCTM().inverse()); + } }), a2.extend(a2.Element, { attr: function(t3, e3, s3) { + if (null == t3) { + for (t3 = {}, s3 = (e3 = this.node.attributes).length - 1; s3 >= 0; s3--) + t3[e3[s3].nodeName] = a2.regex.isNumber.test(e3[s3].nodeValue) ? parseFloat(e3[s3].nodeValue) : e3[s3].nodeValue; + return t3; + } + if ("object" === i(t3)) + for (var r3 in t3) + this.attr(r3, t3[r3]); + else if (null === e3) + this.node.removeAttribute(t3); + else { + if (null == e3) + return null == (e3 = this.node.getAttribute(t3)) ? a2.defaults.attrs[t3] : a2.regex.isNumber.test(e3) ? parseFloat(e3) : e3; + "stroke-width" == t3 ? this.attr("stroke", parseFloat(e3) > 0 ? this._stroke : null) : "stroke" == t3 && (this._stroke = e3), "fill" != t3 && "stroke" != t3 || (a2.regex.isImage.test(e3) && (e3 = this.doc().defs().image(e3, 0, 0)), e3 instanceof a2.Image && (e3 = this.doc().defs().pattern(0, 0, function() { + this.add(e3); + }))), "number" == typeof e3 ? e3 = new a2.Number(e3) : a2.Color.isColor(e3) ? e3 = new a2.Color(e3) : Array.isArray(e3) && (e3 = new a2.Array(e3)), "leading" == t3 ? this.leading && this.leading(e3) : "string" == typeof s3 ? this.node.setAttributeNS(s3, t3, e3.toString()) : this.node.setAttribute(t3, e3.toString()), !this.rebuild || "font-size" != t3 && "x" != t3 || this.rebuild(t3, e3); + } + return this; + } }), a2.extend(a2.Element, { transform: function(t3, e3) { + var s3; + return "object" !== i(t3) ? (s3 = new a2.Matrix(this).extract(), "string" == typeof t3 ? s3[t3] : s3) : (s3 = new a2.Matrix(this), e3 = !!e3 || !!t3.relative, null != t3.a && (s3 = e3 ? s3.multiply(new a2.Matrix(t3)) : new a2.Matrix(t3)), this.attr("transform", s3)); + } }), a2.extend(a2.Element, { untransform: function() { + return this.attr("transform", null); + }, matrixify: function() { + return (this.attr("transform") || "").split(a2.regex.transforms).slice(0, -1).map(function(t3) { + var e3 = t3.trim().split("("); + return [e3[0], e3[1].split(a2.regex.delimiter).map(function(t4) { + return parseFloat(t4); + })]; + }).reduce(function(t3, e3) { + return "matrix" == e3[0] ? t3.multiply(f2(e3[1])) : t3[e3[0]].apply(t3, e3[1]); + }, new a2.Matrix()); + }, toParent: function(t3) { + if (this == t3) + return this; + var e3 = this.screenCTM(), i2 = t3.screenCTM().inverse(); + return this.addTo(t3).untransform().transform(i2.multiply(e3)), this; + }, toDoc: function() { + return this.toParent(this.doc()); + } }), a2.Transformation = a2.invent({ create: function(t3, e3) { + if (arguments.length > 1 && "boolean" != typeof e3) + return this.constructor.call(this, [].slice.call(arguments)); + if (Array.isArray(t3)) + for (var a3 = 0, s3 = this.arguments.length; a3 < s3; ++a3) + this[this.arguments[a3]] = t3[a3]; + else if (t3 && "object" === i(t3)) + for (a3 = 0, s3 = this.arguments.length; a3 < s3; ++a3) + this[this.arguments[a3]] = t3[this.arguments[a3]]; + this.inversed = false, true === e3 && (this.inversed = true); + } }), a2.Translate = a2.invent({ parent: a2.Matrix, inherit: a2.Transformation, create: function(t3, e3) { + this.constructor.apply(this, [].slice.call(arguments)); + }, extend: { arguments: ["transformedX", "transformedY"], method: "translate" } }), a2.extend(a2.Element, { style: function(t3, e3) { + if (0 == arguments.length) + return this.node.style.cssText || ""; + if (arguments.length < 2) + if ("object" === i(t3)) + for (var s3 in t3) + this.style(s3, t3[s3]); + else { + if (!a2.regex.isCss.test(t3)) + return this.node.style[c2(t3)]; + for (t3 = t3.split(/\s*;\s*/).filter(function(t4) { + return !!t4; + }).map(function(t4) { + return t4.split(/\s*:\s*/); + }); e3 = t3.pop(); ) + this.style(e3[0], e3[1]); + } + else + this.node.style[c2(t3)] = null === e3 || a2.regex.isBlank.test(e3) ? "" : e3; + return this; + } }), a2.Parent = a2.invent({ create: function(t3) { + this.constructor.call(this, t3); + }, inherit: a2.Element, extend: { children: function() { + return a2.utils.map(a2.utils.filterSVGElements(this.node.childNodes), function(t3) { + return a2.adopt(t3); + }); + }, add: function(t3, e3) { + return null == e3 ? this.node.appendChild(t3.node) : t3.node != this.node.childNodes[e3] && this.node.insertBefore(t3.node, this.node.childNodes[e3]), this; + }, put: function(t3, e3) { + return this.add(t3, e3), t3; + }, has: function(t3) { + return this.index(t3) >= 0; + }, index: function(t3) { + return [].slice.call(this.node.childNodes).indexOf(t3.node); + }, get: function(t3) { + return a2.adopt(this.node.childNodes[t3]); + }, first: function() { + return this.get(0); + }, last: function() { + return this.get(this.node.childNodes.length - 1); + }, each: function(t3, e3) { + for (var i2 = this.children(), s3 = 0, r3 = i2.length; s3 < r3; s3++) + i2[s3] instanceof a2.Element && t3.apply(i2[s3], [s3, i2]), e3 && i2[s3] instanceof a2.Container && i2[s3].each(t3, e3); + return this; + }, removeElement: function(t3) { + return this.node.removeChild(t3.node), this; + }, clear: function() { + for (; this.node.hasChildNodes(); ) + this.node.removeChild(this.node.lastChild); + return delete this._defs, this; + }, defs: function() { + return this.doc().defs(); + } } }), a2.extend(a2.Parent, { ungroup: function(t3, e3) { + return 0 === e3 || this instanceof a2.Defs || this.node == a2.parser.draw || (t3 = t3 || (this instanceof a2.Doc ? this : this.parent(a2.Parent)), e3 = e3 || 1 / 0, this.each(function() { + return this instanceof a2.Defs ? this : this instanceof a2.Parent ? this.ungroup(t3, e3 - 1) : this.toParent(t3); + }), this.node.firstChild || this.remove()), this; + }, flatten: function(t3, e3) { + return this.ungroup(t3, e3); + } }), a2.Container = a2.invent({ create: function(t3) { + this.constructor.call(this, t3); + }, inherit: a2.Parent }), a2.ViewBox = a2.invent({ parent: a2.Container, construct: {} }), ["click", "dblclick", "mousedown", "mouseup", "mouseover", "mouseout", "mousemove", "touchstart", "touchmove", "touchleave", "touchend", "touchcancel"].forEach(function(t3) { + a2.Element.prototype[t3] = function(e3) { + return a2.on(this.node, t3, e3), this; + }; + }), a2.listeners = [], a2.handlerMap = [], a2.listenerId = 0, a2.on = function(t3, e3, i2, s3, r3) { + var o3 = i2.bind(s3 || t3.instance || t3), n3 = (a2.handlerMap.indexOf(t3) + 1 || a2.handlerMap.push(t3)) - 1, l3 = e3.split(".")[0], h3 = e3.split(".")[1] || "*"; + a2.listeners[n3] = a2.listeners[n3] || {}, a2.listeners[n3][l3] = a2.listeners[n3][l3] || {}, a2.listeners[n3][l3][h3] = a2.listeners[n3][l3][h3] || {}, i2._svgjsListenerId || (i2._svgjsListenerId = ++a2.listenerId), a2.listeners[n3][l3][h3][i2._svgjsListenerId] = o3, t3.addEventListener(l3, o3, r3 || { passive: true }); + }, a2.off = function(t3, e3, i2) { + var s3 = a2.handlerMap.indexOf(t3), r3 = e3 && e3.split(".")[0], o3 = e3 && e3.split(".")[1], n3 = ""; + if (-1 != s3) + if (i2) { + if ("function" == typeof i2 && (i2 = i2._svgjsListenerId), !i2) + return; + a2.listeners[s3][r3] && a2.listeners[s3][r3][o3 || "*"] && (t3.removeEventListener(r3, a2.listeners[s3][r3][o3 || "*"][i2], false), delete a2.listeners[s3][r3][o3 || "*"][i2]); + } else if (o3 && r3) { + if (a2.listeners[s3][r3] && a2.listeners[s3][r3][o3]) { + for (var l3 in a2.listeners[s3][r3][o3]) + a2.off(t3, [r3, o3].join("."), l3); + delete a2.listeners[s3][r3][o3]; + } + } else if (o3) + for (var h3 in a2.listeners[s3]) + for (var n3 in a2.listeners[s3][h3]) + o3 === n3 && a2.off(t3, [h3, o3].join(".")); + else if (r3) { + if (a2.listeners[s3][r3]) { + for (var n3 in a2.listeners[s3][r3]) + a2.off(t3, [r3, n3].join(".")); + delete a2.listeners[s3][r3]; + } + } else { + for (var h3 in a2.listeners[s3]) + a2.off(t3, h3); + delete a2.listeners[s3], delete a2.handlerMap[s3]; + } + }, a2.extend(a2.Element, { on: function(t3, e3, i2, s3) { + return a2.on(this.node, t3, e3, i2, s3), this; + }, off: function(t3, e3) { + return a2.off(this.node, t3, e3), this; + }, fire: function(e3, i2) { + return e3 instanceof t2.Event ? this.node.dispatchEvent(e3) : this.node.dispatchEvent(e3 = new a2.CustomEvent(e3, { detail: i2, cancelable: true })), this._event = e3, this; + }, event: function() { + return this._event; + } }), a2.Defs = a2.invent({ create: "defs", inherit: a2.Container }), a2.G = a2.invent({ create: "g", inherit: a2.Container, extend: { x: function(t3) { + return null == t3 ? this.transform("x") : this.transform({ x: t3 - this.x() }, true); + } }, construct: { group: function() { + return this.put(new a2.G()); + } } }), a2.Doc = a2.invent({ create: function(t3) { + t3 && ("svg" == (t3 = "string" == typeof t3 ? e2.getElementById(t3) : t3).nodeName ? this.constructor.call(this, t3) : (this.constructor.call(this, a2.create("svg")), t3.appendChild(this.node), this.size("100%", "100%")), this.namespace().defs()); + }, inherit: a2.Container, extend: { namespace: function() { + return this.attr({ xmlns: a2.ns, version: "1.1" }).attr("xmlns:xlink", a2.xlink, a2.xmlns).attr("xmlns:svgjs", a2.svgjs, a2.xmlns); + }, defs: function() { + var t3; + return this._defs || ((t3 = this.node.getElementsByTagName("defs")[0]) ? this._defs = a2.adopt(t3) : this._defs = new a2.Defs(), this.node.appendChild(this._defs.node)), this._defs; + }, parent: function() { + return this.node.parentNode && "#document" != this.node.parentNode.nodeName ? this.node.parentNode : null; + }, remove: function() { + return this.parent() && this.parent().removeChild(this.node), this; + }, clear: function() { + for (; this.node.hasChildNodes(); ) + this.node.removeChild(this.node.lastChild); + return delete this._defs, a2.parser.draw && !a2.parser.draw.parentNode && this.node.appendChild(a2.parser.draw), this; + }, clone: function(t3) { + this.writeDataToDom(); + var e3 = this.node, i2 = x2(e3.cloneNode(true)); + return t3 ? (t3.node || t3).appendChild(i2.node) : e3.parentNode.insertBefore(i2.node, e3.nextSibling), i2; + } } }), a2.extend(a2.Element, {}), a2.Gradient = a2.invent({ create: function(t3) { + this.constructor.call(this, a2.create(t3 + "Gradient")), this.type = t3; + }, inherit: a2.Container, extend: { at: function(t3, e3, i2) { + return this.put(new a2.Stop()).update(t3, e3, i2); + }, update: function(t3) { + return this.clear(), "function" == typeof t3 && t3.call(this, this), this; + }, fill: function() { + return "url(#" + this.id() + ")"; + }, toString: function() { + return this.fill(); + }, attr: function(t3, e3, i2) { + return "transform" == t3 && (t3 = "gradientTransform"), a2.Container.prototype.attr.call(this, t3, e3, i2); + } }, construct: { gradient: function(t3, e3) { + return this.defs().gradient(t3, e3); + } } }), a2.extend(a2.Gradient, a2.FX, { from: function(t3, e3) { + return "radial" == (this._target || this).type ? this.attr({ fx: new a2.Number(t3), fy: new a2.Number(e3) }) : this.attr({ x1: new a2.Number(t3), y1: new a2.Number(e3) }); + }, to: function(t3, e3) { + return "radial" == (this._target || this).type ? this.attr({ cx: new a2.Number(t3), cy: new a2.Number(e3) }) : this.attr({ x2: new a2.Number(t3), y2: new a2.Number(e3) }); + } }), a2.extend(a2.Defs, { gradient: function(t3, e3) { + return this.put(new a2.Gradient(t3)).update(e3); + } }), a2.Stop = a2.invent({ create: "stop", inherit: a2.Element, extend: { update: function(t3) { + return ("number" == typeof t3 || t3 instanceof a2.Number) && (t3 = { offset: arguments[0], color: arguments[1], opacity: arguments[2] }), null != t3.opacity && this.attr("stop-opacity", t3.opacity), null != t3.color && this.attr("stop-color", t3.color), null != t3.offset && this.attr("offset", new a2.Number(t3.offset)), this; + } } }), a2.Pattern = a2.invent({ create: "pattern", inherit: a2.Container, extend: { fill: function() { + return "url(#" + this.id() + ")"; + }, update: function(t3) { + return this.clear(), "function" == typeof t3 && t3.call(this, this), this; + }, toString: function() { + return this.fill(); + }, attr: function(t3, e3, i2) { + return "transform" == t3 && (t3 = "patternTransform"), a2.Container.prototype.attr.call(this, t3, e3, i2); + } }, construct: { pattern: function(t3, e3, i2) { + return this.defs().pattern(t3, e3, i2); + } } }), a2.extend(a2.Defs, { pattern: function(t3, e3, i2) { + return this.put(new a2.Pattern()).update(i2).attr({ x: 0, y: 0, width: t3, height: e3, patternUnits: "userSpaceOnUse" }); + } }), a2.Shape = a2.invent({ create: function(t3) { + this.constructor.call(this, t3); + }, inherit: a2.Element }), a2.Symbol = a2.invent({ create: "symbol", inherit: a2.Container, construct: { symbol: function() { + return this.put(new a2.Symbol()); + } } }), a2.Use = a2.invent({ create: "use", inherit: a2.Shape, extend: { element: function(t3, e3) { + return this.attr("href", (e3 || "") + "#" + t3, a2.xlink); + } }, construct: { use: function(t3, e3) { + return this.put(new a2.Use()).element(t3, e3); + } } }), a2.Rect = a2.invent({ create: "rect", inherit: a2.Shape, construct: { rect: function(t3, e3) { + return this.put(new a2.Rect()).size(t3, e3); + } } }), a2.Circle = a2.invent({ create: "circle", inherit: a2.Shape, construct: { circle: function(t3) { + return this.put(new a2.Circle()).rx(new a2.Number(t3).divide(2)).move(0, 0); + } } }), a2.extend(a2.Circle, a2.FX, { rx: function(t3) { + return this.attr("r", t3); + }, ry: function(t3) { + return this.rx(t3); + } }), a2.Ellipse = a2.invent({ create: "ellipse", inherit: a2.Shape, construct: { ellipse: function(t3, e3) { + return this.put(new a2.Ellipse()).size(t3, e3).move(0, 0); + } } }), a2.extend(a2.Ellipse, a2.Rect, a2.FX, { rx: function(t3) { + return this.attr("rx", t3); + }, ry: function(t3) { + return this.attr("ry", t3); + } }), a2.extend(a2.Circle, a2.Ellipse, { x: function(t3) { + return null == t3 ? this.cx() - this.rx() : this.cx(t3 + this.rx()); + }, y: function(t3) { + return null == t3 ? this.cy() - this.ry() : this.cy(t3 + this.ry()); + }, cx: function(t3) { + return null == t3 ? this.attr("cx") : this.attr("cx", t3); + }, cy: function(t3) { + return null == t3 ? this.attr("cy") : this.attr("cy", t3); + }, width: function(t3) { + return null == t3 ? 2 * this.rx() : this.rx(new a2.Number(t3).divide(2)); + }, height: function(t3) { + return null == t3 ? 2 * this.ry() : this.ry(new a2.Number(t3).divide(2)); + }, size: function(t3, e3) { + var i2 = u2(this, t3, e3); + return this.rx(new a2.Number(i2.width).divide(2)).ry(new a2.Number(i2.height).divide(2)); + } }), a2.Line = a2.invent({ create: "line", inherit: a2.Shape, extend: { array: function() { + return new a2.PointArray([[this.attr("x1"), this.attr("y1")], [this.attr("x2"), this.attr("y2")]]); + }, plot: function(t3, e3, i2, s3) { + return null == t3 ? this.array() : (t3 = void 0 !== e3 ? { x1: t3, y1: e3, x2: i2, y2: s3 } : new a2.PointArray(t3).toLine(), this.attr(t3)); + }, move: function(t3, e3) { + return this.attr(this.array().move(t3, e3).toLine()); + }, size: function(t3, e3) { + var i2 = u2(this, t3, e3); + return this.attr(this.array().size(i2.width, i2.height).toLine()); + } }, construct: { line: function(t3, e3, i2, s3) { + return a2.Line.prototype.plot.apply(this.put(new a2.Line()), null != t3 ? [t3, e3, i2, s3] : [0, 0, 0, 0]); + } } }), a2.Polyline = a2.invent({ create: "polyline", inherit: a2.Shape, construct: { polyline: function(t3) { + return this.put(new a2.Polyline()).plot(t3 || new a2.PointArray()); + } } }), a2.Polygon = a2.invent({ create: "polygon", inherit: a2.Shape, construct: { polygon: function(t3) { + return this.put(new a2.Polygon()).plot(t3 || new a2.PointArray()); + } } }), a2.extend(a2.Polyline, a2.Polygon, { array: function() { + return this._array || (this._array = new a2.PointArray(this.attr("points"))); + }, plot: function(t3) { + return null == t3 ? this.array() : this.clear().attr("points", "string" == typeof t3 ? t3 : this._array = new a2.PointArray(t3)); + }, clear: function() { + return delete this._array, this; + }, move: function(t3, e3) { + return this.attr("points", this.array().move(t3, e3)); + }, size: function(t3, e3) { + var i2 = u2(this, t3, e3); + return this.attr("points", this.array().size(i2.width, i2.height)); + } }), a2.extend(a2.Line, a2.Polyline, a2.Polygon, { morphArray: a2.PointArray, x: function(t3) { + return null == t3 ? this.bbox().x : this.move(t3, this.bbox().y); + }, y: function(t3) { + return null == t3 ? this.bbox().y : this.move(this.bbox().x, t3); + }, width: function(t3) { + var e3 = this.bbox(); + return null == t3 ? e3.width : this.size(t3, e3.height); + }, height: function(t3) { + var e3 = this.bbox(); + return null == t3 ? e3.height : this.size(e3.width, t3); + } }), a2.Path = a2.invent({ create: "path", inherit: a2.Shape, extend: { morphArray: a2.PathArray, array: function() { + return this._array || (this._array = new a2.PathArray(this.attr("d"))); + }, plot: function(t3) { + return null == t3 ? this.array() : this.clear().attr("d", "string" == typeof t3 ? t3 : this._array = new a2.PathArray(t3)); + }, clear: function() { + return delete this._array, this; + } }, construct: { path: function(t3) { + return this.put(new a2.Path()).plot(t3 || new a2.PathArray()); + } } }), a2.Image = a2.invent({ create: "image", inherit: a2.Shape, extend: { load: function(e3) { + if (!e3) + return this; + var i2 = this, s3 = new t2.Image(); + return a2.on(s3, "load", function() { + a2.off(s3); + var t3 = i2.parent(a2.Pattern); + null !== t3 && (0 == i2.width() && 0 == i2.height() && i2.size(s3.width, s3.height), t3 && 0 == t3.width() && 0 == t3.height() && t3.size(i2.width(), i2.height()), "function" == typeof i2._loaded && i2._loaded.call(i2, { width: s3.width, height: s3.height, ratio: s3.width / s3.height, url: e3 })); + }), a2.on(s3, "error", function(t3) { + a2.off(s3), "function" == typeof i2._error && i2._error.call(i2, t3); + }), this.attr("href", s3.src = this.src = e3, a2.xlink); + }, loaded: function(t3) { + return this._loaded = t3, this; + }, error: function(t3) { + return this._error = t3, this; + } }, construct: { image: function(t3, e3, i2) { + return this.put(new a2.Image()).load(t3).size(e3 || 0, i2 || e3 || 0); + } } }), a2.Text = a2.invent({ create: function() { + this.constructor.call(this, a2.create("text")), this.dom.leading = new a2.Number(1.3), this._rebuild = true, this._build = false, this.attr("font-family", a2.defaults.attrs["font-family"]); + }, inherit: a2.Shape, extend: { x: function(t3) { + return null == t3 ? this.attr("x") : this.attr("x", t3); + }, text: function(t3) { + if (void 0 === t3) { + t3 = ""; + for (var e3 = this.node.childNodes, i2 = 0, s3 = e3.length; i2 < s3; ++i2) + 0 != i2 && 3 != e3[i2].nodeType && 1 == a2.adopt(e3[i2]).dom.newLined && (t3 += "\n"), t3 += e3[i2].textContent; + return t3; + } + if (this.clear().build(true), "function" == typeof t3) + t3.call(this, this); + else { + i2 = 0; + for (var r3 = (t3 = t3.split("\n")).length; i2 < r3; i2++) + this.tspan(t3[i2]).newLine(); + } + return this.build(false).rebuild(); + }, size: function(t3) { + return this.attr("font-size", t3).rebuild(); + }, leading: function(t3) { + return null == t3 ? this.dom.leading : (this.dom.leading = new a2.Number(t3), this.rebuild()); + }, lines: function() { + var t3 = (this.textPath && this.textPath() || this).node, e3 = a2.utils.map(a2.utils.filterSVGElements(t3.childNodes), function(t4) { + return a2.adopt(t4); + }); + return new a2.Set(e3); + }, rebuild: function(t3) { + if ("boolean" == typeof t3 && (this._rebuild = t3), this._rebuild) { + var e3 = this, i2 = 0, s3 = this.dom.leading * new a2.Number(this.attr("font-size")); + this.lines().each(function() { + this.dom.newLined && (e3.textPath() || this.attr("x", e3.attr("x")), "\n" == this.text() ? i2 += s3 : (this.attr("dy", s3 + i2), i2 = 0)); + }), this.fire("rebuild"); + } + return this; + }, build: function(t3) { + return this._build = !!t3, this; + }, setData: function(t3) { + return this.dom = t3, this.dom.leading = new a2.Number(t3.leading || 1.3), this; + } }, construct: { text: function(t3) { + return this.put(new a2.Text()).text(t3); + }, plain: function(t3) { + return this.put(new a2.Text()).plain(t3); + } } }), a2.Tspan = a2.invent({ create: "tspan", inherit: a2.Shape, extend: { text: function(t3) { + return null == t3 ? this.node.textContent + (this.dom.newLined ? "\n" : "") : ("function" == typeof t3 ? t3.call(this, this) : this.plain(t3), this); + }, dx: function(t3) { + return this.attr("dx", t3); + }, dy: function(t3) { + return this.attr("dy", t3); + }, newLine: function() { + var t3 = this.parent(a2.Text); + return this.dom.newLined = true, this.dy(t3.dom.leading * t3.attr("font-size")).attr("x", t3.x()); + } } }), a2.extend(a2.Text, a2.Tspan, { plain: function(t3) { + return false === this._build && this.clear(), this.node.appendChild(e2.createTextNode(t3)), this; + }, tspan: function(t3) { + var e3 = (this.textPath && this.textPath() || this).node, i2 = new a2.Tspan(); + return false === this._build && this.clear(), e3.appendChild(i2.node), i2.text(t3); + }, clear: function() { + for (var t3 = (this.textPath && this.textPath() || this).node; t3.hasChildNodes(); ) + t3.removeChild(t3.lastChild); + return this; + }, length: function() { + return this.node.getComputedTextLength(); + } }), a2.TextPath = a2.invent({ create: "textPath", inherit: a2.Parent, parent: a2.Text, construct: { morphArray: a2.PathArray, array: function() { + var t3 = this.track(); + return t3 ? t3.array() : null; + }, plot: function(t3) { + var e3 = this.track(), i2 = null; + return e3 && (i2 = e3.plot(t3)), null == t3 ? i2 : this; + }, track: function() { + var t3 = this.textPath(); + if (t3) + return t3.reference("href"); + }, textPath: function() { + if (this.node.firstChild && "textPath" == this.node.firstChild.nodeName) + return a2.adopt(this.node.firstChild); + } } }), a2.Nested = a2.invent({ create: function() { + this.constructor.call(this, a2.create("svg")), this.style("overflow", "visible"); + }, inherit: a2.Container, construct: { nested: function() { + return this.put(new a2.Nested()); + } } }); + var l2 = { stroke: ["color", "width", "opacity", "linecap", "linejoin", "miterlimit", "dasharray", "dashoffset"], fill: ["color", "opacity", "rule"], prefix: function(t3, e3) { + return "color" == e3 ? t3 : t3 + "-" + e3; + } }; + function h2(t3, e3, i2, s3) { + return i2 + s3.replace(a2.regex.dots, " ."); + } + function c2(t3) { + return t3.toLowerCase().replace(/-(.)/g, function(t4, e3) { + return e3.toUpperCase(); + }); + } + function d2(t3) { + return t3.charAt(0).toUpperCase() + t3.slice(1); + } + function g2(t3) { + var e3 = t3.toString(16); + return 1 == e3.length ? "0" + e3 : e3; + } + function u2(t3, e3, i2) { + if (null == e3 || null == i2) { + var a3 = t3.bbox(); + null == e3 ? e3 = a3.width / a3.height * i2 : null == i2 && (i2 = a3.height / a3.width * e3); + } + return { width: e3, height: i2 }; + } + function p2(t3, e3, i2) { + return { x: e3 * t3.a + i2 * t3.c + 0, y: e3 * t3.b + i2 * t3.d + 0 }; + } + function f2(t3) { + return { a: t3[0], b: t3[1], c: t3[2], d: t3[3], e: t3[4], f: t3[5] }; + } + function x2(e3) { + for (var i2 = e3.childNodes.length - 1; i2 >= 0; i2--) + e3.childNodes[i2] instanceof t2.SVGElement && x2(e3.childNodes[i2]); + return a2.adopt(e3).id(a2.eid(e3.nodeName)); + } + function b2(t3) { + return Math.abs(t3) > 1e-37 ? t3 : 0; + } + ["fill", "stroke"].forEach(function(t3) { + var e3 = {}; + e3[t3] = function(e4) { + if (void 0 === e4) + return this; + if ("string" == typeof e4 || a2.Color.isRgb(e4) || e4 && "function" == typeof e4.fill) + this.attr(t3, e4); + else + for (var i2 = l2[t3].length - 1; i2 >= 0; i2--) + null != e4[l2[t3][i2]] && this.attr(l2.prefix(t3, l2[t3][i2]), e4[l2[t3][i2]]); + return this; + }, a2.extend(a2.Element, a2.FX, e3); + }), a2.extend(a2.Element, a2.FX, { translate: function(t3, e3) { + return this.transform({ x: t3, y: e3 }); + }, matrix: function(t3) { + return this.attr("transform", new a2.Matrix(6 == arguments.length ? [].slice.call(arguments) : t3)); + }, opacity: function(t3) { + return this.attr("opacity", t3); + }, dx: function(t3) { + return this.x(new a2.Number(t3).plus(this instanceof a2.FX ? 0 : this.x()), true); + }, dy: function(t3) { + return this.y(new a2.Number(t3).plus(this instanceof a2.FX ? 0 : this.y()), true); + } }), a2.extend(a2.Path, { length: function() { + return this.node.getTotalLength(); + }, pointAt: function(t3) { + return this.node.getPointAtLength(t3); + } }), a2.Set = a2.invent({ create: function(t3) { + Array.isArray(t3) ? this.members = t3 : this.clear(); + }, extend: { add: function() { + for (var t3 = [].slice.call(arguments), e3 = 0, i2 = t3.length; e3 < i2; e3++) + this.members.push(t3[e3]); + return this; + }, remove: function(t3) { + var e3 = this.index(t3); + return e3 > -1 && this.members.splice(e3, 1), this; + }, each: function(t3) { + for (var e3 = 0, i2 = this.members.length; e3 < i2; e3++) + t3.apply(this.members[e3], [e3, this.members]); + return this; + }, clear: function() { + return this.members = [], this; + }, length: function() { + return this.members.length; + }, has: function(t3) { + return this.index(t3) >= 0; + }, index: function(t3) { + return this.members.indexOf(t3); + }, get: function(t3) { + return this.members[t3]; + }, first: function() { + return this.get(0); + }, last: function() { + return this.get(this.members.length - 1); + }, valueOf: function() { + return this.members; + } }, construct: { set: function(t3) { + return new a2.Set(t3); + } } }), a2.FX.Set = a2.invent({ create: function(t3) { + this.set = t3; + } }), a2.Set.inherit = function() { + var t3 = []; + for (var e3 in a2.Shape.prototype) + "function" == typeof a2.Shape.prototype[e3] && "function" != typeof a2.Set.prototype[e3] && t3.push(e3); + for (var e3 in t3.forEach(function(t4) { + a2.Set.prototype[t4] = function() { + for (var e4 = 0, i2 = this.members.length; e4 < i2; e4++) + this.members[e4] && "function" == typeof this.members[e4][t4] && this.members[e4][t4].apply(this.members[e4], arguments); + return "animate" == t4 ? this.fx || (this.fx = new a2.FX.Set(this)) : this; + }; + }), t3 = [], a2.FX.prototype) + "function" == typeof a2.FX.prototype[e3] && "function" != typeof a2.FX.Set.prototype[e3] && t3.push(e3); + t3.forEach(function(t4) { + a2.FX.Set.prototype[t4] = function() { + for (var e4 = 0, i2 = this.set.members.length; e4 < i2; e4++) + this.set.members[e4].fx[t4].apply(this.set.members[e4].fx, arguments); + return this; + }; + }); + }, a2.extend(a2.Element, {}), a2.extend(a2.Element, { remember: function(t3, e3) { + if ("object" === i(arguments[0])) + for (var a3 in t3) + this.remember(a3, t3[a3]); + else { + if (1 == arguments.length) + return this.memory()[t3]; + this.memory()[t3] = e3; + } + return this; + }, forget: function() { + if (0 == arguments.length) + this._memory = {}; + else + for (var t3 = arguments.length - 1; t3 >= 0; t3--) + delete this.memory()[arguments[t3]]; + return this; + }, memory: function() { + return this._memory || (this._memory = {}); + } }), a2.get = function(t3) { + var i2 = e2.getElementById(function(t4) { + var e3 = (t4 || "").toString().match(a2.regex.reference); + if (e3) + return e3[1]; + }(t3) || t3); + return a2.adopt(i2); + }, a2.select = function(t3, i2) { + return new a2.Set(a2.utils.map((i2 || e2).querySelectorAll(t3), function(t4) { + return a2.adopt(t4); + })); + }, a2.extend(a2.Parent, { select: function(t3) { + return a2.select(t3, this.node); + } }); + var v2 = "abcdef".split(""); + if ("function" != typeof t2.CustomEvent) { + var m2 = function(t3, i2) { + i2 = i2 || { bubbles: false, cancelable: false, detail: void 0 }; + var a3 = e2.createEvent("CustomEvent"); + return a3.initCustomEvent(t3, i2.bubbles, i2.cancelable, i2.detail), a3; + }; + m2.prototype = t2.Event.prototype, a2.CustomEvent = m2; + } else + a2.CustomEvent = t2.CustomEvent; + return a2; + }, "function" == typeof define && define.amd ? define(function() { + return Ht(Rt, Rt.document); + }) : "object" === ("undefined" == typeof exports ? "undefined" : i(exports)) && "undefined" != typeof module ? module.exports = Rt.document ? Ht(Rt, Rt.document) : function(t2) { + return Ht(t2, t2.document); + } : Rt.SVG = Ht(Rt, Rt.document), /*! svg.filter.js - v2.0.2 - 2016-02-24 + * https://github.com/wout/svg.filter.js + * Copyright (c) 2016 Wout Fierens; Licensed MIT */ + function() { + SVG.Filter = SVG.invent({ create: "filter", inherit: SVG.Parent, extend: { source: "SourceGraphic", sourceAlpha: "SourceAlpha", background: "BackgroundImage", backgroundAlpha: "BackgroundAlpha", fill: "FillPaint", stroke: "StrokePaint", autoSetIn: true, put: function(t3, e3) { + return this.add(t3, e3), !t3.attr("in") && this.autoSetIn && t3.attr("in", this.source), t3.attr("result") || t3.attr("result", t3), t3; + }, blend: function(t3, e3, i3) { + return this.put(new SVG.BlendEffect(t3, e3, i3)); + }, colorMatrix: function(t3, e3) { + return this.put(new SVG.ColorMatrixEffect(t3, e3)); + }, convolveMatrix: function(t3) { + return this.put(new SVG.ConvolveMatrixEffect(t3)); + }, componentTransfer: function(t3) { + return this.put(new SVG.ComponentTransferEffect(t3)); + }, composite: function(t3, e3, i3) { + return this.put(new SVG.CompositeEffect(t3, e3, i3)); + }, flood: function(t3, e3) { + return this.put(new SVG.FloodEffect(t3, e3)); + }, offset: function(t3, e3) { + return this.put(new SVG.OffsetEffect(t3, e3)); + }, image: function(t3) { + return this.put(new SVG.ImageEffect(t3)); + }, merge: function() { + var t3 = [void 0]; + for (var e3 in arguments) + t3.push(arguments[e3]); + return this.put(new (SVG.MergeEffect.bind.apply(SVG.MergeEffect, t3))()); + }, gaussianBlur: function(t3, e3) { + return this.put(new SVG.GaussianBlurEffect(t3, e3)); + }, morphology: function(t3, e3) { + return this.put(new SVG.MorphologyEffect(t3, e3)); + }, diffuseLighting: function(t3, e3, i3) { + return this.put(new SVG.DiffuseLightingEffect(t3, e3, i3)); + }, displacementMap: function(t3, e3, i3, a3, s3) { + return this.put(new SVG.DisplacementMapEffect(t3, e3, i3, a3, s3)); + }, specularLighting: function(t3, e3, i3, a3) { + return this.put(new SVG.SpecularLightingEffect(t3, e3, i3, a3)); + }, tile: function() { + return this.put(new SVG.TileEffect()); + }, turbulence: function(t3, e3, i3, a3, s3) { + return this.put(new SVG.TurbulenceEffect(t3, e3, i3, a3, s3)); + }, toString: function() { + return "url(#" + this.attr("id") + ")"; + } } }), SVG.extend(SVG.Defs, { filter: function(t3) { + var e3 = this.put(new SVG.Filter()); + return "function" == typeof t3 && t3.call(e3, e3), e3; + } }), SVG.extend(SVG.Container, { filter: function(t3) { + return this.defs().filter(t3); + } }), SVG.extend(SVG.Element, SVG.G, SVG.Nested, { filter: function(t3) { + return this.filterer = t3 instanceof SVG.Element ? t3 : this.doc().filter(t3), this.doc() && this.filterer.doc() !== this.doc() && this.doc().defs().add(this.filterer), this.attr("filter", this.filterer), this.filterer; + }, unfilter: function(t3) { + return this.filterer && true === t3 && this.filterer.remove(), delete this.filterer, this.attr("filter", null); + } }), SVG.Effect = SVG.invent({ create: function() { + this.constructor.call(this); + }, inherit: SVG.Element, extend: { in: function(t3) { + return null == t3 ? this.parent() && this.parent().select('[result="' + this.attr("in") + '"]').get(0) || this.attr("in") : this.attr("in", t3); + }, result: function(t3) { + return null == t3 ? this.attr("result") : this.attr("result", t3); + }, toString: function() { + return this.result(); + } } }), SVG.ParentEffect = SVG.invent({ create: function() { + this.constructor.call(this); + }, inherit: SVG.Parent, extend: { in: function(t3) { + return null == t3 ? this.parent() && this.parent().select('[result="' + this.attr("in") + '"]').get(0) || this.attr("in") : this.attr("in", t3); + }, result: function(t3) { + return null == t3 ? this.attr("result") : this.attr("result", t3); + }, toString: function() { + return this.result(); + } } }); + var t2 = { blend: function(t3, e3) { + return this.parent() && this.parent().blend(this, t3, e3); + }, colorMatrix: function(t3, e3) { + return this.parent() && this.parent().colorMatrix(t3, e3).in(this); + }, convolveMatrix: function(t3) { + return this.parent() && this.parent().convolveMatrix(t3).in(this); + }, componentTransfer: function(t3) { + return this.parent() && this.parent().componentTransfer(t3).in(this); + }, composite: function(t3, e3) { + return this.parent() && this.parent().composite(this, t3, e3); + }, flood: function(t3, e3) { + return this.parent() && this.parent().flood(t3, e3); + }, offset: function(t3, e3) { + return this.parent() && this.parent().offset(t3, e3).in(this); + }, image: function(t3) { + return this.parent() && this.parent().image(t3); + }, merge: function() { + return this.parent() && this.parent().merge.apply(this.parent(), [this].concat(arguments)); + }, gaussianBlur: function(t3, e3) { + return this.parent() && this.parent().gaussianBlur(t3, e3).in(this); + }, morphology: function(t3, e3) { + return this.parent() && this.parent().morphology(t3, e3).in(this); + }, diffuseLighting: function(t3, e3, i3) { + return this.parent() && this.parent().diffuseLighting(t3, e3, i3).in(this); + }, displacementMap: function(t3, e3, i3, a3) { + return this.parent() && this.parent().displacementMap(this, t3, e3, i3, a3); + }, specularLighting: function(t3, e3, i3, a3) { + return this.parent() && this.parent().specularLighting(t3, e3, i3, a3).in(this); + }, tile: function() { + return this.parent() && this.parent().tile().in(this); + }, turbulence: function(t3, e3, i3, a3, s3) { + return this.parent() && this.parent().turbulence(t3, e3, i3, a3, s3).in(this); + } }; + SVG.extend(SVG.Effect, t2), SVG.extend(SVG.ParentEffect, t2), SVG.ChildEffect = SVG.invent({ create: function() { + this.constructor.call(this); + }, inherit: SVG.Element, extend: { in: function(t3) { + this.attr("in", t3); + } } }); + var e2 = { blend: function(t3, e3, i3) { + this.attr({ in: t3, in2: e3, mode: i3 || "normal" }); + }, colorMatrix: function(t3, e3) { + "matrix" == t3 && (e3 = s2(e3)), this.attr({ type: t3, values: void 0 === e3 ? null : e3 }); + }, convolveMatrix: function(t3) { + t3 = s2(t3), this.attr({ order: Math.sqrt(t3.split(" ").length), kernelMatrix: t3 }); + }, composite: function(t3, e3, i3) { + this.attr({ in: t3, in2: e3, operator: i3 }); + }, flood: function(t3, e3) { + this.attr("flood-color", t3), null != e3 && this.attr("flood-opacity", e3); + }, offset: function(t3, e3) { + this.attr({ dx: t3, dy: e3 }); + }, image: function(t3) { + this.attr("href", t3, SVG.xlink); + }, displacementMap: function(t3, e3, i3, a3, s3) { + this.attr({ in: t3, in2: e3, scale: i3, xChannelSelector: a3, yChannelSelector: s3 }); + }, gaussianBlur: function(t3, e3) { + null != t3 || null != e3 ? this.attr("stdDeviation", function(t4) { + if (!Array.isArray(t4)) + return t4; + for (var e4 = 0, i3 = t4.length, a3 = []; e4 < i3; e4++) + a3.push(t4[e4]); + return a3.join(" "); + }(Array.prototype.slice.call(arguments))) : this.attr("stdDeviation", "0 0"); + }, morphology: function(t3, e3) { + this.attr({ operator: t3, radius: e3 }); + }, tile: function() { + }, turbulence: function(t3, e3, i3, a3, s3) { + this.attr({ numOctaves: e3, seed: i3, stitchTiles: a3, baseFrequency: t3, type: s3 }); + } }, i2 = { merge: function() { + var t3; + if (arguments[0] instanceof SVG.Set) { + var e3 = this; + arguments[0].each(function(t4) { + this instanceof SVG.MergeNode ? e3.put(this) : (this instanceof SVG.Effect || this instanceof SVG.ParentEffect) && e3.put(new SVG.MergeNode(this)); + }); + } else { + t3 = Array.isArray(arguments[0]) ? arguments[0] : arguments; + for (var i3 = 0; i3 < t3.length; i3++) + t3[i3] instanceof SVG.MergeNode ? this.put(t3[i3]) : this.put(new SVG.MergeNode(t3[i3])); + } + }, componentTransfer: function(t3) { + if (this.rgb = new SVG.Set(), ["r", "g", "b", "a"].forEach(function(t4) { + this[t4] = new SVG["Func" + t4.toUpperCase()]("identity"), this.rgb.add(this[t4]), this.node.appendChild(this[t4].node); + }.bind(this)), t3) + for (var e3 in t3.rgb && (["r", "g", "b"].forEach(function(e4) { + this[e4].attr(t3.rgb); + }.bind(this)), delete t3.rgb), t3) + this[e3].attr(t3[e3]); + }, diffuseLighting: function(t3, e3, i3) { + this.attr({ surfaceScale: t3, diffuseConstant: e3, kernelUnitLength: i3 }); + }, specularLighting: function(t3, e3, i3, a3) { + this.attr({ surfaceScale: t3, diffuseConstant: e3, specularExponent: i3, kernelUnitLength: a3 }); + } }, a2 = { distantLight: function(t3, e3) { + this.attr({ azimuth: t3, elevation: e3 }); + }, pointLight: function(t3, e3, i3) { + this.attr({ x: t3, y: e3, z: i3 }); + }, spotLight: function(t3, e3, i3, a3, s3, r3) { + this.attr({ x: t3, y: e3, z: i3, pointsAtX: a3, pointsAtY: s3, pointsAtZ: r3 }); + }, mergeNode: function(t3) { + this.attr("in", t3); + } }; + function s2(t3) { + return Array.isArray(t3) && (t3 = new SVG.Array(t3)), t3.toString().replace(/^\s+/, "").replace(/\s+$/, "").replace(/\s+/g, " "); + } + function r2() { + var t3 = function() { + }; + for (var e3 in "function" == typeof arguments[arguments.length - 1] && (t3 = arguments[arguments.length - 1], Array.prototype.splice.call(arguments, arguments.length - 1, 1)), arguments) + for (var i3 in arguments[e3]) + t3(arguments[e3][i3], i3, arguments[e3]); + } + ["r", "g", "b", "a"].forEach(function(t3) { + a2["Func" + t3.toUpperCase()] = function(t4) { + switch (this.attr("type", t4), t4) { + case "table": + this.attr("tableValues", arguments[1]); + break; + case "linear": + this.attr("slope", arguments[1]), this.attr("intercept", arguments[2]); + break; + case "gamma": + this.attr("amplitude", arguments[1]), this.attr("exponent", arguments[2]), this.attr("offset", arguments[2]); + } + }; + }), r2(e2, function(t3, e3) { + var i3 = e3.charAt(0).toUpperCase() + e3.slice(1); + SVG[i3 + "Effect"] = SVG.invent({ create: function() { + this.constructor.call(this, SVG.create("fe" + i3)), t3.apply(this, arguments), this.result(this.attr("id") + "Out"); + }, inherit: SVG.Effect, extend: {} }); + }), r2(i2, function(t3, e3) { + var i3 = e3.charAt(0).toUpperCase() + e3.slice(1); + SVG[i3 + "Effect"] = SVG.invent({ create: function() { + this.constructor.call(this, SVG.create("fe" + i3)), t3.apply(this, arguments), this.result(this.attr("id") + "Out"); + }, inherit: SVG.ParentEffect, extend: {} }); + }), r2(a2, function(t3, e3) { + var i3 = e3.charAt(0).toUpperCase() + e3.slice(1); + SVG[i3] = SVG.invent({ create: function() { + this.constructor.call(this, SVG.create("fe" + i3)), t3.apply(this, arguments); + }, inherit: SVG.ChildEffect, extend: {} }); + }), SVG.extend(SVG.MergeEffect, { in: function(t3) { + return t3 instanceof SVG.MergeNode ? this.add(t3, 0) : this.add(new SVG.MergeNode(t3), 0), this; + } }), SVG.extend(SVG.CompositeEffect, SVG.BlendEffect, SVG.DisplacementMapEffect, { in2: function(t3) { + return null == t3 ? this.parent() && this.parent().select('[result="' + this.attr("in2") + '"]').get(0) || this.attr("in2") : this.attr("in2", t3); + } }), SVG.filter = { sepiatone: [0.343, 0.669, 0.119, 0, 0, 0.249, 0.626, 0.13, 0, 0, 0.172, 0.334, 0.111, 0, 0, 0, 0, 0, 1, 0] }; + }.call(void 0), function() { + function t2(t3, s3, r2, o2, n2, l2, h2) { + for (var c2 = t3.slice(s3, r2 || h2), d2 = o2.slice(n2, l2 || h2), g2 = 0, u2 = { pos: [0, 0], start: [0, 0] }, p2 = { pos: [0, 0], start: [0, 0] }; ; ) { + if (c2[g2] = e2.call(u2, c2[g2]), d2[g2] = e2.call(p2, d2[g2]), c2[g2][0] != d2[g2][0] || "M" == c2[g2][0] || "A" == c2[g2][0] && (c2[g2][4] != d2[g2][4] || c2[g2][5] != d2[g2][5]) ? (Array.prototype.splice.apply(c2, [g2, 1].concat(a2.call(u2, c2[g2]))), Array.prototype.splice.apply(d2, [g2, 1].concat(a2.call(p2, d2[g2])))) : (c2[g2] = i2.call(u2, c2[g2]), d2[g2] = i2.call(p2, d2[g2])), ++g2 == c2.length && g2 == d2.length) + break; + g2 == c2.length && c2.push(["C", u2.pos[0], u2.pos[1], u2.pos[0], u2.pos[1], u2.pos[0], u2.pos[1]]), g2 == d2.length && d2.push(["C", p2.pos[0], p2.pos[1], p2.pos[0], p2.pos[1], p2.pos[0], p2.pos[1]]); + } + return { start: c2, dest: d2 }; + } + function e2(t3) { + switch (t3[0]) { + case "z": + case "Z": + t3[0] = "L", t3[1] = this.start[0], t3[2] = this.start[1]; + break; + case "H": + t3[0] = "L", t3[2] = this.pos[1]; + break; + case "V": + t3[0] = "L", t3[2] = t3[1], t3[1] = this.pos[0]; + break; + case "T": + t3[0] = "Q", t3[3] = t3[1], t3[4] = t3[2], t3[1] = this.reflection[1], t3[2] = this.reflection[0]; + break; + case "S": + t3[0] = "C", t3[6] = t3[4], t3[5] = t3[3], t3[4] = t3[2], t3[3] = t3[1], t3[2] = this.reflection[1], t3[1] = this.reflection[0]; + } + return t3; + } + function i2(t3) { + var e3 = t3.length; + return this.pos = [t3[e3 - 2], t3[e3 - 1]], -1 != "SCQT".indexOf(t3[0]) && (this.reflection = [2 * this.pos[0] - t3[e3 - 4], 2 * this.pos[1] - t3[e3 - 3]]), t3; + } + function a2(t3) { + var e3 = [t3]; + switch (t3[0]) { + case "M": + return this.pos = this.start = [t3[1], t3[2]], e3; + case "L": + t3[5] = t3[3] = t3[1], t3[6] = t3[4] = t3[2], t3[1] = this.pos[0], t3[2] = this.pos[1]; + break; + case "Q": + t3[6] = t3[4], t3[5] = t3[3], t3[4] = 1 * t3[4] / 3 + 2 * t3[2] / 3, t3[3] = 1 * t3[3] / 3 + 2 * t3[1] / 3, t3[2] = 1 * this.pos[1] / 3 + 2 * t3[2] / 3, t3[1] = 1 * this.pos[0] / 3 + 2 * t3[1] / 3; + break; + case "A": + e3 = function(t4, e4) { + var i3, a3, s3, r2, o2, n2, l2, h2, c2, d2, g2, u2, p2, f2, x2, b2, v2, m2, y2, w2, k2, A2, S2, C2, L2, P2, I2 = Math.abs(e4[1]), M2 = Math.abs(e4[2]), T2 = e4[3] % 360, z2 = e4[4], X2 = e4[5], E2 = e4[6], Y2 = e4[7], F2 = new SVG.Point(t4), R2 = new SVG.Point(E2, Y2), H2 = []; + if (0 === I2 || 0 === M2 || F2.x === R2.x && F2.y === R2.y) + return [["C", F2.x, F2.y, R2.x, R2.y, R2.x, R2.y]]; + i3 = new SVG.Point((F2.x - R2.x) / 2, (F2.y - R2.y) / 2).transform(new SVG.Matrix().rotate(T2)), (a3 = i3.x * i3.x / (I2 * I2) + i3.y * i3.y / (M2 * M2)) > 1 && (I2 *= a3 = Math.sqrt(a3), M2 *= a3); + s3 = new SVG.Matrix().rotate(T2).scale(1 / I2, 1 / M2).rotate(-T2), F2 = F2.transform(s3), R2 = R2.transform(s3), r2 = [R2.x - F2.x, R2.y - F2.y], n2 = r2[0] * r2[0] + r2[1] * r2[1], o2 = Math.sqrt(n2), r2[0] /= o2, r2[1] /= o2, l2 = n2 < 4 ? Math.sqrt(1 - n2 / 4) : 0, z2 === X2 && (l2 *= -1); + h2 = new SVG.Point((R2.x + F2.x) / 2 + l2 * -r2[1], (R2.y + F2.y) / 2 + l2 * r2[0]), c2 = new SVG.Point(F2.x - h2.x, F2.y - h2.y), d2 = new SVG.Point(R2.x - h2.x, R2.y - h2.y), g2 = Math.acos(c2.x / Math.sqrt(c2.x * c2.x + c2.y * c2.y)), c2.y < 0 && (g2 *= -1); + u2 = Math.acos(d2.x / Math.sqrt(d2.x * d2.x + d2.y * d2.y)), d2.y < 0 && (u2 *= -1); + X2 && g2 > u2 && (u2 += 2 * Math.PI); + !X2 && g2 < u2 && (u2 -= 2 * Math.PI); + for (f2 = Math.ceil(2 * Math.abs(g2 - u2) / Math.PI), b2 = [], v2 = g2, p2 = (u2 - g2) / f2, x2 = 4 * Math.tan(p2 / 4) / 3, k2 = 0; k2 <= f2; k2++) + y2 = Math.cos(v2), m2 = Math.sin(v2), w2 = new SVG.Point(h2.x + y2, h2.y + m2), b2[k2] = [new SVG.Point(w2.x + x2 * m2, w2.y - x2 * y2), w2, new SVG.Point(w2.x - x2 * m2, w2.y + x2 * y2)], v2 += p2; + for (b2[0][0] = b2[0][1].clone(), b2[b2.length - 1][2] = b2[b2.length - 1][1].clone(), s3 = new SVG.Matrix().rotate(T2).scale(I2, M2).rotate(-T2), k2 = 0, A2 = b2.length; k2 < A2; k2++) + b2[k2][0] = b2[k2][0].transform(s3), b2[k2][1] = b2[k2][1].transform(s3), b2[k2][2] = b2[k2][2].transform(s3); + for (k2 = 1, A2 = b2.length; k2 < A2; k2++) + S2 = (w2 = b2[k2 - 1][2]).x, C2 = w2.y, L2 = (w2 = b2[k2][0]).x, P2 = w2.y, E2 = (w2 = b2[k2][1]).x, Y2 = w2.y, H2.push(["C", S2, C2, L2, P2, E2, Y2]); + return H2; + }(this.pos, t3), t3 = e3[0]; + } + return t3[0] = "C", this.pos = [t3[5], t3[6]], this.reflection = [2 * t3[5] - t3[3], 2 * t3[6] - t3[4]], e3; + } + function s2(t3, e3) { + if (false === e3) + return false; + for (var i3 = e3, a3 = t3.length; i3 < a3; ++i3) + if ("M" == t3[i3][0]) + return i3; + return false; + } + SVG.extend(SVG.PathArray, { morph: function(e3) { + for (var i3 = this.value, a3 = this.parse(e3), r2 = 0, o2 = 0, n2 = false, l2 = false; false !== r2 || false !== o2; ) { + var h2; + n2 = s2(i3, false !== r2 && r2 + 1), l2 = s2(a3, false !== o2 && o2 + 1), false === r2 && (r2 = 0 == (h2 = new SVG.PathArray(c2.start).bbox()).height || 0 == h2.width ? i3.push(i3[0]) - 1 : i3.push(["M", h2.x + h2.width / 2, h2.y + h2.height / 2]) - 1), false === o2 && (o2 = 0 == (h2 = new SVG.PathArray(c2.dest).bbox()).height || 0 == h2.width ? a3.push(a3[0]) - 1 : a3.push(["M", h2.x + h2.width / 2, h2.y + h2.height / 2]) - 1); + var c2 = t2(i3, r2, n2, a3, o2, l2); + i3 = i3.slice(0, r2).concat(c2.start, false === n2 ? [] : i3.slice(n2)), a3 = a3.slice(0, o2).concat(c2.dest, false === l2 ? [] : a3.slice(l2)), r2 = false !== n2 && r2 + c2.start.length, o2 = false !== l2 && o2 + c2.dest.length; + } + return this.value = i3, this.destination = new SVG.PathArray(), this.destination.value = a3, this; + } }); + }(), /*! svg.draggable.js - v2.2.2 - 2019-01-08 + * https://github.com/svgdotjs/svg.draggable.js + * Copyright (c) 2019 Wout Fierens; Licensed MIT */ + function() { + function t2(t3) { + t3.remember("_draggable", this), this.el = t3; + } + t2.prototype.init = function(t3, e2) { + var i2 = this; + this.constraint = t3, this.value = e2, this.el.on("mousedown.drag", function(t4) { + i2.start(t4); + }), this.el.on("touchstart.drag", function(t4) { + i2.start(t4); + }); + }, t2.prototype.transformPoint = function(t3, e2) { + var i2 = (t3 = t3 || window.event).changedTouches && t3.changedTouches[0] || t3; + return this.p.x = i2.clientX - (e2 || 0), this.p.y = i2.clientY, this.p.matrixTransform(this.m); + }, t2.prototype.getBBox = function() { + var t3 = this.el.bbox(); + return this.el instanceof SVG.Nested && (t3 = this.el.rbox()), (this.el instanceof SVG.G || this.el instanceof SVG.Use || this.el instanceof SVG.Nested) && (t3.x = this.el.x(), t3.y = this.el.y()), t3; + }, t2.prototype.start = function(t3) { + if ("click" != t3.type && "mousedown" != t3.type && "mousemove" != t3.type || 1 == (t3.which || t3.buttons)) { + var e2 = this; + if (this.el.fire("beforedrag", { event: t3, handler: this }), !this.el.event().defaultPrevented) { + t3.preventDefault(), t3.stopPropagation(), this.parent = this.parent || this.el.parent(SVG.Nested) || this.el.parent(SVG.Doc), this.p = this.parent.node.createSVGPoint(), this.m = this.el.node.getScreenCTM().inverse(); + var i2, a2 = this.getBBox(); + if (this.el instanceof SVG.Text) + switch (i2 = this.el.node.getComputedTextLength(), this.el.attr("text-anchor")) { + case "middle": + i2 /= 2; + break; + case "start": + i2 = 0; + } + this.startPoints = { point: this.transformPoint(t3, i2), box: a2, transform: this.el.transform() }, SVG.on(window, "mousemove.drag", function(t4) { + e2.drag(t4); + }), SVG.on(window, "touchmove.drag", function(t4) { + e2.drag(t4); + }), SVG.on(window, "mouseup.drag", function(t4) { + e2.end(t4); + }), SVG.on(window, "touchend.drag", function(t4) { + e2.end(t4); + }), this.el.fire("dragstart", { event: t3, p: this.startPoints.point, m: this.m, handler: this }); + } + } + }, t2.prototype.drag = function(t3) { + var e2 = this.getBBox(), i2 = this.transformPoint(t3), a2 = this.startPoints.box.x + i2.x - this.startPoints.point.x, s2 = this.startPoints.box.y + i2.y - this.startPoints.point.y, r2 = this.constraint, o2 = i2.x - this.startPoints.point.x, n2 = i2.y - this.startPoints.point.y; + if (this.el.fire("dragmove", { event: t3, p: i2, m: this.m, handler: this }), this.el.event().defaultPrevented) + return i2; + if ("function" == typeof r2) { + var l2 = r2.call(this.el, a2, s2, this.m); + "boolean" == typeof l2 && (l2 = { x: l2, y: l2 }), true === l2.x ? this.el.x(a2) : false !== l2.x && this.el.x(l2.x), true === l2.y ? this.el.y(s2) : false !== l2.y && this.el.y(l2.y); + } else + "object" == typeof r2 && (null != r2.minX && a2 < r2.minX ? o2 = (a2 = r2.minX) - this.startPoints.box.x : null != r2.maxX && a2 > r2.maxX - e2.width && (o2 = (a2 = r2.maxX - e2.width) - this.startPoints.box.x), null != r2.minY && s2 < r2.minY ? n2 = (s2 = r2.minY) - this.startPoints.box.y : null != r2.maxY && s2 > r2.maxY - e2.height && (n2 = (s2 = r2.maxY - e2.height) - this.startPoints.box.y), null != r2.snapToGrid && (a2 -= a2 % r2.snapToGrid, s2 -= s2 % r2.snapToGrid, o2 -= o2 % r2.snapToGrid, n2 -= n2 % r2.snapToGrid), this.el instanceof SVG.G ? this.el.matrix(this.startPoints.transform).transform({ x: o2, y: n2 }, true) : this.el.move(a2, s2)); + return i2; + }, t2.prototype.end = function(t3) { + var e2 = this.drag(t3); + this.el.fire("dragend", { event: t3, p: e2, m: this.m, handler: this }), SVG.off(window, "mousemove.drag"), SVG.off(window, "touchmove.drag"), SVG.off(window, "mouseup.drag"), SVG.off(window, "touchend.drag"); + }, SVG.extend(SVG.Element, { draggable: function(e2, i2) { + "function" != typeof e2 && "object" != typeof e2 || (i2 = e2, e2 = true); + var a2 = this.remember("_draggable") || new t2(this); + return (e2 = void 0 === e2 || e2) ? a2.init(i2 || {}, e2) : (this.off("mousedown.drag"), this.off("touchstart.drag")), this; + } }); + }.call(void 0), function() { + function t2(t3) { + this.el = t3, t3.remember("_selectHandler", this), this.pointSelection = { isSelected: false }, this.rectSelection = { isSelected: false }, this.pointsList = { lt: [0, 0], rt: ["width", 0], rb: ["width", "height"], lb: [0, "height"], t: ["width", 0], r: ["width", "height"], b: ["width", "height"], l: [0, "height"] }, this.pointCoord = function(t4, e2, i2) { + var a2 = "string" != typeof t4 ? t4 : e2[t4]; + return i2 ? a2 / 2 : a2; + }, this.pointCoords = function(t4, e2) { + var i2 = this.pointsList[t4]; + return { x: this.pointCoord(i2[0], e2, "t" === t4 || "b" === t4), y: this.pointCoord(i2[1], e2, "r" === t4 || "l" === t4) }; + }; + } + t2.prototype.init = function(t3, e2) { + var i2 = this.el.bbox(); + this.options = {}; + var a2 = this.el.selectize.defaults.points; + for (var s2 in this.el.selectize.defaults) + this.options[s2] = this.el.selectize.defaults[s2], void 0 !== e2[s2] && (this.options[s2] = e2[s2]); + var r2 = ["points", "pointsExclude"]; + for (var s2 in r2) { + var o2 = this.options[r2[s2]]; + "string" == typeof o2 ? o2 = o2.length > 0 ? o2.split(/\s*,\s*/i) : [] : "boolean" == typeof o2 && "points" === r2[s2] && (o2 = o2 ? a2 : []), this.options[r2[s2]] = o2; + } + this.options.points = [a2, this.options.points].reduce(function(t4, e3) { + return t4.filter(function(t5) { + return e3.indexOf(t5) > -1; + }); + }), this.options.points = [this.options.points, this.options.pointsExclude].reduce(function(t4, e3) { + return t4.filter(function(t5) { + return e3.indexOf(t5) < 0; + }); + }), this.parent = this.el.parent(), this.nested = this.nested || this.parent.group(), this.nested.matrix(new SVG.Matrix(this.el).translate(i2.x, i2.y)), this.options.deepSelect && -1 !== ["line", "polyline", "polygon"].indexOf(this.el.type) ? this.selectPoints(t3) : this.selectRect(t3), this.observe(), this.cleanup(); + }, t2.prototype.selectPoints = function(t3) { + return this.pointSelection.isSelected = t3, this.pointSelection.set || (this.pointSelection.set = this.parent.set(), this.drawPoints()), this; + }, t2.prototype.getPointArray = function() { + var t3 = this.el.bbox(); + return this.el.array().valueOf().map(function(e2) { + return [e2[0] - t3.x, e2[1] - t3.y]; + }); + }, t2.prototype.drawPoints = function() { + for (var t3 = this, e2 = this.getPointArray(), i2 = 0, a2 = e2.length; i2 < a2; ++i2) { + var s2 = /* @__PURE__ */ function(e3) { + return function(i3) { + (i3 = i3 || window.event).preventDefault ? i3.preventDefault() : i3.returnValue = false, i3.stopPropagation(); + var a3 = i3.pageX || i3.touches[0].pageX, s3 = i3.pageY || i3.touches[0].pageY; + t3.el.fire("point", { x: a3, y: s3, i: e3, event: i3 }); + }; + }(i2), r2 = this.drawPoint(e2[i2][0], e2[i2][1]).addClass(this.options.classPoints).addClass(this.options.classPoints + "_point").on("touchstart", s2).on("mousedown", s2); + this.pointSelection.set.add(r2); + } + }, t2.prototype.drawPoint = function(t3, e2) { + var i2 = this.options.pointType; + switch (i2) { + case "circle": + return this.drawCircle(t3, e2); + case "rect": + return this.drawRect(t3, e2); + default: + if ("function" == typeof i2) + return i2.call(this, t3, e2); + throw new Error("Unknown " + i2 + " point type!"); + } + }, t2.prototype.drawCircle = function(t3, e2) { + return this.nested.circle(this.options.pointSize).center(t3, e2); + }, t2.prototype.drawRect = function(t3, e2) { + return this.nested.rect(this.options.pointSize, this.options.pointSize).center(t3, e2); + }, t2.prototype.updatePointSelection = function() { + var t3 = this.getPointArray(); + this.pointSelection.set.each(function(e2) { + this.cx() === t3[e2][0] && this.cy() === t3[e2][1] || this.center(t3[e2][0], t3[e2][1]); + }); + }, t2.prototype.updateRectSelection = function() { + var t3 = this, e2 = this.el.bbox(); + if (this.rectSelection.set.get(0).attr({ width: e2.width, height: e2.height }), this.options.points.length && this.options.points.map(function(i3, a2) { + var s2 = t3.pointCoords(i3, e2); + t3.rectSelection.set.get(a2 + 1).center(s2.x, s2.y); + }), this.options.rotationPoint) { + var i2 = this.rectSelection.set.length(); + this.rectSelection.set.get(i2 - 1).center(e2.width / 2, 20); + } + }, t2.prototype.selectRect = function(t3) { + var e2 = this, i2 = this.el.bbox(); + function a2(t4) { + return function(i3) { + (i3 = i3 || window.event).preventDefault ? i3.preventDefault() : i3.returnValue = false, i3.stopPropagation(); + var a3 = i3.pageX || i3.touches[0].pageX, s3 = i3.pageY || i3.touches[0].pageY; + e2.el.fire(t4, { x: a3, y: s3, event: i3 }); + }; + } + if (this.rectSelection.isSelected = t3, this.rectSelection.set = this.rectSelection.set || this.parent.set(), this.rectSelection.set.get(0) || this.rectSelection.set.add(this.nested.rect(i2.width, i2.height).addClass(this.options.classRect)), this.options.points.length && this.rectSelection.set.length() < 2) { + this.options.points.map(function(t4, s3) { + var r3 = e2.pointCoords(t4, i2), o2 = e2.drawPoint(r3.x, r3.y).attr("class", e2.options.classPoints + "_" + t4).on("mousedown", a2(t4)).on("touchstart", a2(t4)); + e2.rectSelection.set.add(o2); + }), this.rectSelection.set.each(function() { + this.addClass(e2.options.classPoints); + }); + } + if (this.options.rotationPoint && (this.options.points && !this.rectSelection.set.get(9) || !this.options.points && !this.rectSelection.set.get(1))) { + var s2 = function(t4) { + (t4 = t4 || window.event).preventDefault ? t4.preventDefault() : t4.returnValue = false, t4.stopPropagation(); + var i3 = t4.pageX || t4.touches[0].pageX, a3 = t4.pageY || t4.touches[0].pageY; + e2.el.fire("rot", { x: i3, y: a3, event: t4 }); + }, r2 = this.drawPoint(i2.width / 2, 20).attr("class", this.options.classPoints + "_rot").on("touchstart", s2).on("mousedown", s2); + this.rectSelection.set.add(r2); + } + }, t2.prototype.handler = function() { + var t3 = this.el.bbox(); + this.nested.matrix(new SVG.Matrix(this.el).translate(t3.x, t3.y)), this.rectSelection.isSelected && this.updateRectSelection(), this.pointSelection.isSelected && this.updatePointSelection(); + }, t2.prototype.observe = function() { + var t3 = this; + if (MutationObserver) + if (this.rectSelection.isSelected || this.pointSelection.isSelected) + this.observerInst = this.observerInst || new MutationObserver(function() { + t3.handler(); + }), this.observerInst.observe(this.el.node, { attributes: true }); + else + try { + this.observerInst.disconnect(), delete this.observerInst; + } catch (t4) { + } + else + this.el.off("DOMAttrModified.select"), (this.rectSelection.isSelected || this.pointSelection.isSelected) && this.el.on("DOMAttrModified.select", function() { + t3.handler(); + }); + }, t2.prototype.cleanup = function() { + !this.rectSelection.isSelected && this.rectSelection.set && (this.rectSelection.set.each(function() { + this.remove(); + }), this.rectSelection.set.clear(), delete this.rectSelection.set), !this.pointSelection.isSelected && this.pointSelection.set && (this.pointSelection.set.each(function() { + this.remove(); + }), this.pointSelection.set.clear(), delete this.pointSelection.set), this.pointSelection.isSelected || this.rectSelection.isSelected || (this.nested.remove(), delete this.nested); + }, SVG.extend(SVG.Element, { selectize: function(e2, i2) { + return "object" == typeof e2 && (i2 = e2, e2 = true), (this.remember("_selectHandler") || new t2(this)).init(void 0 === e2 || e2, i2 || {}), this; + } }), SVG.Element.prototype.selectize.defaults = { points: ["lt", "rt", "rb", "lb", "t", "r", "b", "l"], pointsExclude: [], classRect: "svg_select_boundingRect", classPoints: "svg_select_points", pointSize: 7, rotationPoint: true, deepSelect: false, pointType: "circle" }; + }(), function() { + (function() { + function t2(t3) { + t3.remember("_resizeHandler", this), this.el = t3, this.parameters = {}, this.lastUpdateCall = null, this.p = t3.doc().node.createSVGPoint(); + } + t2.prototype.transformPoint = function(t3, e2, i2) { + return this.p.x = t3 - (this.offset.x - window.pageXOffset), this.p.y = e2 - (this.offset.y - window.pageYOffset), this.p.matrixTransform(i2 || this.m); + }, t2.prototype._extractPosition = function(t3) { + return { x: null != t3.clientX ? t3.clientX : t3.touches[0].clientX, y: null != t3.clientY ? t3.clientY : t3.touches[0].clientY }; + }, t2.prototype.init = function(t3) { + var e2 = this; + if (this.stop(), "stop" !== t3) { + for (var i2 in this.options = {}, this.el.resize.defaults) + this.options[i2] = this.el.resize.defaults[i2], void 0 !== t3[i2] && (this.options[i2] = t3[i2]); + this.el.on("lt.resize", function(t4) { + e2.resize(t4 || window.event); + }), this.el.on("rt.resize", function(t4) { + e2.resize(t4 || window.event); + }), this.el.on("rb.resize", function(t4) { + e2.resize(t4 || window.event); + }), this.el.on("lb.resize", function(t4) { + e2.resize(t4 || window.event); + }), this.el.on("t.resize", function(t4) { + e2.resize(t4 || window.event); + }), this.el.on("r.resize", function(t4) { + e2.resize(t4 || window.event); + }), this.el.on("b.resize", function(t4) { + e2.resize(t4 || window.event); + }), this.el.on("l.resize", function(t4) { + e2.resize(t4 || window.event); + }), this.el.on("rot.resize", function(t4) { + e2.resize(t4 || window.event); + }), this.el.on("point.resize", function(t4) { + e2.resize(t4 || window.event); + }), this.update(); + } + }, t2.prototype.stop = function() { + return this.el.off("lt.resize"), this.el.off("rt.resize"), this.el.off("rb.resize"), this.el.off("lb.resize"), this.el.off("t.resize"), this.el.off("r.resize"), this.el.off("b.resize"), this.el.off("l.resize"), this.el.off("rot.resize"), this.el.off("point.resize"), this; + }, t2.prototype.resize = function(t3) { + var e2 = this; + this.m = this.el.node.getScreenCTM().inverse(), this.offset = { x: window.pageXOffset, y: window.pageYOffset }; + var i2 = this._extractPosition(t3.detail.event); + if (this.parameters = { type: this.el.type, p: this.transformPoint(i2.x, i2.y), x: t3.detail.x, y: t3.detail.y, box: this.el.bbox(), rotation: this.el.transform().rotation }, "text" === this.el.type && (this.parameters.fontSize = this.el.attr()["font-size"]), void 0 !== t3.detail.i) { + var a2 = this.el.array().valueOf(); + this.parameters.i = t3.detail.i, this.parameters.pointCoords = [a2[t3.detail.i][0], a2[t3.detail.i][1]]; + } + switch (t3.type) { + case "lt": + this.calc = function(t4, e3) { + var i3 = this.snapToGrid(t4, e3); + if (this.parameters.box.width - i3[0] > 0 && this.parameters.box.height - i3[1] > 0) { + if ("text" === this.parameters.type) + return this.el.move(this.parameters.box.x + i3[0], this.parameters.box.y), void this.el.attr("font-size", this.parameters.fontSize - i3[0]); + i3 = this.checkAspectRatio(i3), this.el.move(this.parameters.box.x + i3[0], this.parameters.box.y + i3[1]).size(this.parameters.box.width - i3[0], this.parameters.box.height - i3[1]); + } + }; + break; + case "rt": + this.calc = function(t4, e3) { + var i3 = this.snapToGrid(t4, e3, 2); + if (this.parameters.box.width + i3[0] > 0 && this.parameters.box.height - i3[1] > 0) { + if ("text" === this.parameters.type) + return this.el.move(this.parameters.box.x - i3[0], this.parameters.box.y), void this.el.attr("font-size", this.parameters.fontSize + i3[0]); + i3 = this.checkAspectRatio(i3, true), this.el.move(this.parameters.box.x, this.parameters.box.y + i3[1]).size(this.parameters.box.width + i3[0], this.parameters.box.height - i3[1]); + } + }; + break; + case "rb": + this.calc = function(t4, e3) { + var i3 = this.snapToGrid(t4, e3, 0); + if (this.parameters.box.width + i3[0] > 0 && this.parameters.box.height + i3[1] > 0) { + if ("text" === this.parameters.type) + return this.el.move(this.parameters.box.x - i3[0], this.parameters.box.y), void this.el.attr("font-size", this.parameters.fontSize + i3[0]); + i3 = this.checkAspectRatio(i3), this.el.move(this.parameters.box.x, this.parameters.box.y).size(this.parameters.box.width + i3[0], this.parameters.box.height + i3[1]); + } + }; + break; + case "lb": + this.calc = function(t4, e3) { + var i3 = this.snapToGrid(t4, e3, 1); + if (this.parameters.box.width - i3[0] > 0 && this.parameters.box.height + i3[1] > 0) { + if ("text" === this.parameters.type) + return this.el.move(this.parameters.box.x + i3[0], this.parameters.box.y), void this.el.attr("font-size", this.parameters.fontSize - i3[0]); + i3 = this.checkAspectRatio(i3, true), this.el.move(this.parameters.box.x + i3[0], this.parameters.box.y).size(this.parameters.box.width - i3[0], this.parameters.box.height + i3[1]); + } + }; + break; + case "t": + this.calc = function(t4, e3) { + var i3 = this.snapToGrid(t4, e3, 2); + if (this.parameters.box.height - i3[1] > 0) { + if ("text" === this.parameters.type) + return; + this.el.move(this.parameters.box.x, this.parameters.box.y + i3[1]).height(this.parameters.box.height - i3[1]); + } + }; + break; + case "r": + this.calc = function(t4, e3) { + var i3 = this.snapToGrid(t4, e3, 0); + if (this.parameters.box.width + i3[0] > 0) { + if ("text" === this.parameters.type) + return; + this.el.move(this.parameters.box.x, this.parameters.box.y).width(this.parameters.box.width + i3[0]); + } + }; + break; + case "b": + this.calc = function(t4, e3) { + var i3 = this.snapToGrid(t4, e3, 0); + if (this.parameters.box.height + i3[1] > 0) { + if ("text" === this.parameters.type) + return; + this.el.move(this.parameters.box.x, this.parameters.box.y).height(this.parameters.box.height + i3[1]); + } + }; + break; + case "l": + this.calc = function(t4, e3) { + var i3 = this.snapToGrid(t4, e3, 1); + if (this.parameters.box.width - i3[0] > 0) { + if ("text" === this.parameters.type) + return; + this.el.move(this.parameters.box.x + i3[0], this.parameters.box.y).width(this.parameters.box.width - i3[0]); + } + }; + break; + case "rot": + this.calc = function(t4, e3) { + var i3 = t4 + this.parameters.p.x, a3 = e3 + this.parameters.p.y, s2 = Math.atan2(this.parameters.p.y - this.parameters.box.y - this.parameters.box.height / 2, this.parameters.p.x - this.parameters.box.x - this.parameters.box.width / 2), r2 = Math.atan2(a3 - this.parameters.box.y - this.parameters.box.height / 2, i3 - this.parameters.box.x - this.parameters.box.width / 2), o2 = this.parameters.rotation + 180 * (r2 - s2) / Math.PI + this.options.snapToAngle / 2; + this.el.center(this.parameters.box.cx, this.parameters.box.cy).rotate(o2 - o2 % this.options.snapToAngle, this.parameters.box.cx, this.parameters.box.cy); + }; + break; + case "point": + this.calc = function(t4, e3) { + var i3 = this.snapToGrid(t4, e3, this.parameters.pointCoords[0], this.parameters.pointCoords[1]), a3 = this.el.array().valueOf(); + a3[this.parameters.i][0] = this.parameters.pointCoords[0] + i3[0], a3[this.parameters.i][1] = this.parameters.pointCoords[1] + i3[1], this.el.plot(a3); + }; + } + this.el.fire("resizestart", { dx: this.parameters.x, dy: this.parameters.y, event: t3 }), SVG.on(window, "touchmove.resize", function(t4) { + e2.update(t4 || window.event); + }), SVG.on(window, "touchend.resize", function() { + e2.done(); + }), SVG.on(window, "mousemove.resize", function(t4) { + e2.update(t4 || window.event); + }), SVG.on(window, "mouseup.resize", function() { + e2.done(); + }); + }, t2.prototype.update = function(t3) { + if (t3) { + var e2 = this._extractPosition(t3), i2 = this.transformPoint(e2.x, e2.y), a2 = i2.x - this.parameters.p.x, s2 = i2.y - this.parameters.p.y; + this.lastUpdateCall = [a2, s2], this.calc(a2, s2), this.el.fire("resizing", { dx: a2, dy: s2, event: t3 }); + } else + this.lastUpdateCall && this.calc(this.lastUpdateCall[0], this.lastUpdateCall[1]); + }, t2.prototype.done = function() { + this.lastUpdateCall = null, SVG.off(window, "mousemove.resize"), SVG.off(window, "mouseup.resize"), SVG.off(window, "touchmove.resize"), SVG.off(window, "touchend.resize"), this.el.fire("resizedone"); + }, t2.prototype.snapToGrid = function(t3, e2, i2, a2) { + var s2; + return void 0 !== a2 ? s2 = [(i2 + t3) % this.options.snapToGrid, (a2 + e2) % this.options.snapToGrid] : (i2 = null == i2 ? 3 : i2, s2 = [(this.parameters.box.x + t3 + (1 & i2 ? 0 : this.parameters.box.width)) % this.options.snapToGrid, (this.parameters.box.y + e2 + (2 & i2 ? 0 : this.parameters.box.height)) % this.options.snapToGrid]), t3 < 0 && (s2[0] -= this.options.snapToGrid), e2 < 0 && (s2[1] -= this.options.snapToGrid), t3 -= Math.abs(s2[0]) < this.options.snapToGrid / 2 ? s2[0] : s2[0] - (t3 < 0 ? -this.options.snapToGrid : this.options.snapToGrid), e2 -= Math.abs(s2[1]) < this.options.snapToGrid / 2 ? s2[1] : s2[1] - (e2 < 0 ? -this.options.snapToGrid : this.options.snapToGrid), this.constraintToBox(t3, e2, i2, a2); + }, t2.prototype.constraintToBox = function(t3, e2, i2, a2) { + var s2, r2, o2 = this.options.constraint || {}; + return void 0 !== a2 ? (s2 = i2, r2 = a2) : (s2 = this.parameters.box.x + (1 & i2 ? 0 : this.parameters.box.width), r2 = this.parameters.box.y + (2 & i2 ? 0 : this.parameters.box.height)), void 0 !== o2.minX && s2 + t3 < o2.minX && (t3 = o2.minX - s2), void 0 !== o2.maxX && s2 + t3 > o2.maxX && (t3 = o2.maxX - s2), void 0 !== o2.minY && r2 + e2 < o2.minY && (e2 = o2.minY - r2), void 0 !== o2.maxY && r2 + e2 > o2.maxY && (e2 = o2.maxY - r2), [t3, e2]; + }, t2.prototype.checkAspectRatio = function(t3, e2) { + if (!this.options.saveAspectRatio) + return t3; + var i2 = t3.slice(), a2 = this.parameters.box.width / this.parameters.box.height, s2 = this.parameters.box.width + t3[0], r2 = this.parameters.box.height - t3[1], o2 = s2 / r2; + return o2 < a2 ? (i2[1] = s2 / a2 - this.parameters.box.height, e2 && (i2[1] = -i2[1])) : o2 > a2 && (i2[0] = this.parameters.box.width - r2 * a2, e2 && (i2[0] = -i2[0])), i2; + }, SVG.extend(SVG.Element, { resize: function(e2) { + return (this.remember("_resizeHandler") || new t2(this)).init(e2 || {}), this; + } }), SVG.Element.prototype.resize.defaults = { snapToAngle: 0.1, snapToGrid: 1, constraint: {}, saveAspectRatio: false }; + }).call(this); + }(), void 0 === window.Apex && (window.Apex = {}); + var Gt = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "initModules", value: function() { + this.ctx.publicMethods = ["updateOptions", "updateSeries", "appendData", "appendSeries", "isSeriesHidden", "toggleSeries", "showSeries", "hideSeries", "setLocale", "resetSeries", "zoomX", "toggleDataPointSelection", "dataURI", "exportToCSV", "addXaxisAnnotation", "addYaxisAnnotation", "addPointAnnotation", "clearAnnotations", "removeAnnotation", "paper", "destroy"], this.ctx.eventList = ["click", "mousedown", "mousemove", "mouseleave", "touchstart", "touchmove", "touchleave", "mouseup", "touchend"], this.ctx.animations = new b(this.ctx), this.ctx.axes = new J(this.ctx), this.ctx.core = new Wt(this.ctx.el, this.ctx), this.ctx.config = new E({}), this.ctx.data = new W(this.ctx), this.ctx.grid = new j(this.ctx), this.ctx.graphics = new m(this.ctx), this.ctx.coreUtils = new y(this.ctx), this.ctx.crosshairs = new Q(this.ctx), this.ctx.events = new Z(this.ctx), this.ctx.exports = new G(this.ctx), this.ctx.localization = new $(this.ctx), this.ctx.options = new L(), this.ctx.responsive = new K(this.ctx), this.ctx.series = new N(this.ctx), this.ctx.theme = new tt(this.ctx), this.ctx.formatters = new M(this.ctx), this.ctx.titleSubtitle = new et(this.ctx), this.ctx.legend = new lt(this.ctx), this.ctx.toolbar = new ht(this.ctx), this.ctx.tooltip = new bt(this.ctx), this.ctx.dimensions = new ot(this.ctx), this.ctx.updateHelpers = new Bt(this.ctx), this.ctx.zoomPanSelection = new ct(this.ctx), this.ctx.w.globals.tooltip = new bt(this.ctx); + } }]), t2; + }(); + var Vt = function() { + function t2(e2) { + a(this, t2), this.ctx = e2, this.w = e2.w; + } + return r(t2, [{ key: "clear", value: function(t3) { + var e2 = t3.isUpdating; + this.ctx.zoomPanSelection && this.ctx.zoomPanSelection.destroy(), this.ctx.toolbar && this.ctx.toolbar.destroy(), this.ctx.animations = null, this.ctx.axes = null, this.ctx.annotations = null, this.ctx.core = null, this.ctx.data = null, this.ctx.grid = null, this.ctx.series = null, this.ctx.responsive = null, this.ctx.theme = null, this.ctx.formatters = null, this.ctx.titleSubtitle = null, this.ctx.legend = null, this.ctx.dimensions = null, this.ctx.options = null, this.ctx.crosshairs = null, this.ctx.zoomPanSelection = null, this.ctx.updateHelpers = null, this.ctx.toolbar = null, this.ctx.localization = null, this.ctx.w.globals.tooltip = null, this.clearDomElements({ isUpdating: e2 }); + } }, { key: "killSVG", value: function(t3) { + t3.each(function(t4, e2) { + this.removeClass("*"), this.off(), this.stop(); + }, true), t3.ungroup(), t3.clear(); + } }, { key: "clearDomElements", value: function(t3) { + var e2 = this, i2 = t3.isUpdating, a2 = this.w.globals.dom.Paper.node; + a2.parentNode && a2.parentNode.parentNode && !i2 && (a2.parentNode.parentNode.style.minHeight = "unset"); + var s2 = this.w.globals.dom.baseEl; + s2 && this.ctx.eventList.forEach(function(t4) { + s2.removeEventListener(t4, e2.ctx.events.documentEvent); + }); + var r2 = this.w.globals.dom; + if (null !== this.ctx.el) + for (; this.ctx.el.firstChild; ) + this.ctx.el.removeChild(this.ctx.el.firstChild); + this.killSVG(r2.Paper), r2.Paper.remove(), r2.elWrap = null, r2.elGraphical = null, r2.elLegendWrap = null, r2.elLegendForeign = null, r2.baseEl = null, r2.elGridRect = null, r2.elGridRectMask = null, r2.elGridRectMarkerMask = null, r2.elForecastMask = null, r2.elNonForecastMask = null, r2.elDefs = null; + } }]), t2; + }(); + var jt = /* @__PURE__ */ new WeakMap(); + var _t = function() { + function t2(e2, i2) { + a(this, t2), this.opts = i2, this.ctx = this, this.w = new F(i2).init(), this.el = e2, this.w.globals.cuid = x.randomId(), this.w.globals.chartID = this.w.config.chart.id ? x.escapeString(this.w.config.chart.id) : this.w.globals.cuid, new Gt(this).initModules(), this.create = x.bind(this.create, this), this.windowResizeHandler = this._windowResizeHandler.bind(this), this.parentResizeHandler = this._parentResizeCallback.bind(this); + } + return r(t2, [{ key: "render", value: function() { + var t3 = this; + return new Promise(function(e2, i2) { + if (null !== t3.el) { + void 0 === Apex._chartInstances && (Apex._chartInstances = []), t3.w.config.chart.id && Apex._chartInstances.push({ id: t3.w.globals.chartID, group: t3.w.config.chart.group, chart: t3 }), t3.setLocale(t3.w.config.chart.defaultLocale); + var a2 = t3.w.config.chart.events.beforeMount; + if ("function" == typeof a2 && a2(t3, t3.w), t3.events.fireEvent("beforeMount", [t3, t3.w]), window.addEventListener("resize", t3.windowResizeHandler), function(t4, e3) { + var i3 = false; + if (t4.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) { + var a3 = t4.getBoundingClientRect(); + "none" !== t4.style.display && 0 !== a3.width || (i3 = true); + } + var s3 = new ResizeObserver(function(a4) { + i3 && e3.call(t4, a4), i3 = true; + }); + t4.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? Array.from(t4.children).forEach(function(t5) { + return s3.observe(t5); + }) : s3.observe(t4), jt.set(e3, s3); + }(t3.el.parentNode, t3.parentResizeHandler), !t3.css) { + var s2 = t3.el.getRootNode && t3.el.getRootNode(), r2 = x.is("ShadowRoot", s2), o2 = t3.el.ownerDocument, n2 = o2.getElementById("apexcharts-css"); + !r2 && n2 || (t3.css = document.createElement("style"), t3.css.id = "apexcharts-css", t3.css.textContent = '@keyframes opaque {\n 0% {\n opacity: 0\n }\n\n to {\n opacity: 1\n }\n}\n\n@keyframes resizeanim {\n 0%,to {\n opacity: 0\n }\n}\n\n.apexcharts-canvas {\n position: relative;\n user-select: none\n}\n\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\n}\n\n.apexcharts-inner {\n position: relative\n}\n\n.apexcharts-text tspan {\n font-family: inherit\n}\n\n.legend-mouseover-inactive {\n transition: .15s ease all;\n opacity: .2\n}\n\n.apexcharts-legend-text {\n padding-left: 15px;\n margin-left: -15px;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255,255,255,.96)\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30,30,30,.8)\n}\n\n.apexcharts-tooltip * {\n font-family: inherit\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #eceff1;\n border-bottom: 1px solid #ddd\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0,0,0,.7);\n border-bottom: 1px solid #333\n}\n\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\n display: inline-block;\n margin-left: 5px;\n font-weight: 600\n}\n\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\n display: none\n}\n\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n padding: 6px 0 5px\n}\n\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n display: flex\n}\n\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\n margin-top: -6px\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0;\n margin-right: 10px;\n border-radius: 50%\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0!important\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px\n}\n\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\n padding: 4px 8px\n}\n\n.apexcharts-tooltip-boxPlot {\n display: flex;\n flex-direction: column-reverse\n}\n\n.apexcharts-tooltip-box>div {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_boundingRect,.svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0,0,0,.7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\n opacity: 0\n}\n\n.apexcharts-hidden-element-shown {\n opacity: 1;\n transition: 0.25s ease all;\n}\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\n pointer-events: none\n}\n\n.apexcharts-marker {\n transition: .15s ease all\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\n content: " ";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n\n.apexcharts-bar-goals-markers{\n pointer-events: none\n}\n\n.apexcharts-bar-shadows{\n pointer-events: none\n}\n\n.apexcharts-rangebar-goals-markers{\n pointer-events: none\n}', r2 ? s2.prepend(t3.css) : o2.head.appendChild(t3.css)); + } + var l2 = t3.create(t3.w.config.series, {}); + if (!l2) + return e2(t3); + t3.mount(l2).then(function() { + "function" == typeof t3.w.config.chart.events.mounted && t3.w.config.chart.events.mounted(t3, t3.w), t3.events.fireEvent("mounted", [t3, t3.w]), e2(l2); + }).catch(function(t4) { + i2(t4); + }); + } else + i2(new Error("Element not found")); + }); + } }, { key: "create", value: function(t3, e2) { + var i2 = this.w; + new Gt(this).initModules(); + var a2 = this.w.globals; + (a2.noData = false, a2.animationEnded = false, this.responsive.checkResponsiveConfig(e2), i2.config.xaxis.convertedCatToNumeric) && new X(i2.config).convertCatToNumericXaxis(i2.config, this.ctx); + if (null === this.el) + return a2.animationEnded = true, null; + if (this.core.setupElements(), "treemap" === i2.config.chart.type && (i2.config.grid.show = false, i2.config.yaxis[0].show = false), 0 === a2.svgWidth) + return a2.animationEnded = true, null; + var s2 = y.checkComboSeries(t3); + a2.comboCharts = s2.comboCharts, a2.comboBarCount = s2.comboBarCount; + var r2 = t3.every(function(t4) { + return t4.data && 0 === t4.data.length; + }); + (0 === t3.length || r2) && this.series.handleNoData(), this.events.setupEventHandlers(), this.data.parseData(t3), this.theme.init(), new H(this).setGlobalMarkerSize(), this.formatters.setLabelFormatters(), this.titleSubtitle.draw(), a2.noData && a2.collapsedSeries.length !== a2.series.length && !i2.config.legend.showForSingleSeries || this.legend.init(), this.series.hasAllSeriesEqualX(), a2.axisCharts && (this.core.coreCalculations(), "category" !== i2.config.xaxis.type && this.formatters.setLabelFormatters(), this.ctx.toolbar.minX = i2.globals.minX, this.ctx.toolbar.maxX = i2.globals.maxX), this.formatters.heatmapLabelFormatters(), new y(this).getLargestMarkerSize(), this.dimensions.plotCoords(); + var o2 = this.core.xySettings(); + this.grid.createGridMask(); + var n2 = this.core.plotChartType(t3, o2), l2 = new O(this); + return l2.bringForward(), i2.config.dataLabels.background.enabled && l2.dataLabelsBackground(), this.core.shiftGraphPosition(), { elGraph: n2, xyRatios: o2, dimensions: { plot: { left: i2.globals.translateX, top: i2.globals.translateY, width: i2.globals.gridWidth, height: i2.globals.gridHeight } } }; + } }, { key: "mount", value: function() { + var t3 = this, e2 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, i2 = this, a2 = i2.w; + return new Promise(function(s2, r2) { + if (null === i2.el) + return r2(new Error("Not enough data to display or target element not found")); + (null === e2 || a2.globals.allSeriesCollapsed) && i2.series.handleNoData(), i2.grid = new j(i2); + var o2, n2, l2 = i2.grid.drawGrid(); + (i2.annotations = new P(i2), i2.annotations.drawImageAnnos(), i2.annotations.drawTextAnnos(), "back" === a2.config.grid.position) && (l2 && a2.globals.dom.elGraphical.add(l2.el), null != l2 && null !== (o2 = l2.elGridBorders) && void 0 !== o2 && o2.node && a2.globals.dom.elGraphical.add(l2.elGridBorders)); + if (Array.isArray(e2.elGraph)) + for (var h2 = 0; h2 < e2.elGraph.length; h2++) + a2.globals.dom.elGraphical.add(e2.elGraph[h2]); + else + a2.globals.dom.elGraphical.add(e2.elGraph); + "front" === a2.config.grid.position && (l2 && a2.globals.dom.elGraphical.add(l2.el), null != l2 && null !== (n2 = l2.elGridBorders) && void 0 !== n2 && n2.node && a2.globals.dom.elGraphical.add(l2.elGridBorders)); + "front" === a2.config.xaxis.crosshairs.position && i2.crosshairs.drawXCrosshairs(), "front" === a2.config.yaxis[0].crosshairs.position && i2.crosshairs.drawYCrosshairs(), "treemap" !== a2.config.chart.type && i2.axes.drawAxis(a2.config.chart.type, l2); + var c2 = new V(t3.ctx, l2), d2 = new q(t3.ctx, l2); + if (null !== l2 && (c2.xAxisLabelCorrections(l2.xAxisTickWidth), d2.setYAxisTextAlignments(), a2.config.yaxis.map(function(t4, e3) { + -1 === a2.globals.ignoreYAxisIndexes.indexOf(e3) && d2.yAxisTitleRotate(e3, t4.opposite); + })), i2.annotations.drawAxesAnnotations(), !a2.globals.noData) { + if (a2.config.tooltip.enabled && !a2.globals.noData && i2.w.globals.tooltip.drawTooltip(e2.xyRatios), a2.globals.axisCharts && (a2.globals.isXNumeric || a2.config.xaxis.convertedCatToNumeric || a2.globals.isRangeBar)) + (a2.config.chart.zoom.enabled || a2.config.chart.selection && a2.config.chart.selection.enabled || a2.config.chart.pan && a2.config.chart.pan.enabled) && i2.zoomPanSelection.init({ xyRatios: e2.xyRatios }); + else { + var g2 = a2.config.chart.toolbar.tools; + ["zoom", "zoomin", "zoomout", "selection", "pan", "reset"].forEach(function(t4) { + g2[t4] = false; + }); + } + a2.config.chart.toolbar.show && !a2.globals.allSeriesCollapsed && i2.toolbar.createToolbar(); + } + a2.globals.memory.methodsToExec.length > 0 && a2.globals.memory.methodsToExec.forEach(function(t4) { + t4.method(t4.params, false, t4.context); + }), a2.globals.axisCharts || a2.globals.noData || i2.core.resizeNonAxisCharts(), s2(i2); + }); + } }, { key: "destroy", value: function() { + var t3, e2; + window.removeEventListener("resize", this.windowResizeHandler), this.el.parentNode, t3 = this.parentResizeHandler, (e2 = jt.get(t3)) && (e2.disconnect(), jt.delete(t3)); + var i2 = this.w.config.chart.id; + i2 && Apex._chartInstances.forEach(function(t4, e3) { + t4.id === x.escapeString(i2) && Apex._chartInstances.splice(e3, 1); + }), new Vt(this.ctx).clear({ isUpdating: false }); + } }, { key: "updateOptions", value: function(t3) { + var e2 = this, i2 = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], a2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], s2 = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3], r2 = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4], o2 = this.w; + return o2.globals.selection = void 0, t3.series && (this.series.resetSeries(false, true, false), t3.series.length && t3.series[0].data && (t3.series = t3.series.map(function(t4, i3) { + return e2.updateHelpers._extendSeries(t4, i3); + })), this.updateHelpers.revertDefaultAxisMinMax()), t3.xaxis && (t3 = this.updateHelpers.forceXAxisUpdate(t3)), t3.yaxis && (t3 = this.updateHelpers.forceYAxisUpdate(t3)), o2.globals.collapsedSeriesIndices.length > 0 && this.series.clearPreviousPaths(), t3.theme && (t3 = this.theme.updateThemeOptions(t3)), this.updateHelpers._updateOptions(t3, i2, a2, s2, r2); + } }, { key: "updateSeries", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; + return this.series.resetSeries(false), this.updateHelpers.revertDefaultAxisMinMax(), this.updateHelpers._updateSeries(t3, e2, i2); + } }, { key: "appendSeries", value: function(t3) { + var e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], a2 = this.w.config.series.slice(); + return a2.push(t3), this.series.resetSeries(false), this.updateHelpers.revertDefaultAxisMinMax(), this.updateHelpers._updateSeries(a2, e2, i2); + } }, { key: "appendData", value: function(t3) { + var e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = this; + i2.w.globals.dataChanged = true, i2.series.getPreviousPaths(); + for (var a2 = i2.w.config.series.slice(), s2 = 0; s2 < a2.length; s2++) + if (null !== t3[s2] && void 0 !== t3[s2]) + for (var r2 = 0; r2 < t3[s2].data.length; r2++) + a2[s2].data.push(t3[s2].data[r2]); + return i2.w.config.series = a2, e2 && (i2.w.globals.initialSeries = x.clone(i2.w.config.series)), this.update(); + } }, { key: "update", value: function(t3) { + var e2 = this; + return new Promise(function(i2, a2) { + new Vt(e2.ctx).clear({ isUpdating: true }); + var s2 = e2.create(e2.w.config.series, t3); + if (!s2) + return i2(e2); + e2.mount(s2).then(function() { + "function" == typeof e2.w.config.chart.events.updated && e2.w.config.chart.events.updated(e2, e2.w), e2.events.fireEvent("updated", [e2, e2.w]), e2.w.globals.isDirty = true, i2(e2); + }).catch(function(t4) { + a2(t4); + }); + }); + } }, { key: "getSyncedCharts", value: function() { + var t3 = this.getGroupedCharts(), e2 = [this]; + return t3.length && (e2 = [], t3.forEach(function(t4) { + e2.push(t4); + })), e2; + } }, { key: "getGroupedCharts", value: function() { + var t3 = this; + return Apex._chartInstances.filter(function(t4) { + if (t4.group) + return true; + }).map(function(e2) { + return t3.w.config.chart.group === e2.group ? e2.chart : t3; + }); + } }, { key: "toggleSeries", value: function(t3) { + return this.series.toggleSeries(t3); + } }, { key: "highlightSeriesOnLegendHover", value: function(t3, e2) { + return this.series.toggleSeriesOnHover(t3, e2); + } }, { key: "showSeries", value: function(t3) { + this.series.showSeries(t3); + } }, { key: "hideSeries", value: function(t3) { + this.series.hideSeries(t3); + } }, { key: "isSeriesHidden", value: function(t3) { + this.series.isSeriesHidden(t3); + } }, { key: "resetSeries", value: function() { + var t3 = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0], e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]; + this.series.resetSeries(t3, e2); + } }, { key: "addEventListener", value: function(t3, e2) { + this.events.addEventListener(t3, e2); + } }, { key: "removeEventListener", value: function(t3, e2) { + this.events.removeEventListener(t3, e2); + } }, { key: "addXaxisAnnotation", value: function(t3) { + var e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0, a2 = this; + i2 && (a2 = i2), a2.annotations.addXaxisAnnotationExternal(t3, e2, a2); + } }, { key: "addYaxisAnnotation", value: function(t3) { + var e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0, a2 = this; + i2 && (a2 = i2), a2.annotations.addYaxisAnnotationExternal(t3, e2, a2); + } }, { key: "addPointAnnotation", value: function(t3) { + var e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0, a2 = this; + i2 && (a2 = i2), a2.annotations.addPointAnnotationExternal(t3, e2, a2); + } }, { key: "clearAnnotations", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0, e2 = this; + t3 && (e2 = t3), e2.annotations.clearAnnotations(e2); + } }, { key: "removeAnnotation", value: function(t3) { + var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0, i2 = this; + e2 && (i2 = e2), i2.annotations.removeAnnotation(i2, t3); + } }, { key: "getChartArea", value: function() { + return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner"); + } }, { key: "getSeriesTotalXRange", value: function(t3, e2) { + return this.coreUtils.getSeriesTotalsXRange(t3, e2); + } }, { key: "getHighestValueInSeries", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0; + return new U(this.ctx).getMinYMaxY(t3).highestY; + } }, { key: "getLowestValueInSeries", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0; + return new U(this.ctx).getMinYMaxY(t3).lowestY; + } }, { key: "getSeriesTotal", value: function() { + return this.w.globals.seriesTotals; + } }, { key: "toggleDataPointSelection", value: function(t3, e2) { + return this.updateHelpers.toggleDataPointSelection(t3, e2); + } }, { key: "zoomX", value: function(t3, e2) { + this.ctx.toolbar.zoomUpdateOptions(t3, e2); + } }, { key: "setLocale", value: function(t3) { + this.localization.setCurrentLocaleValues(t3); + } }, { key: "dataURI", value: function(t3) { + return new G(this.ctx).dataURI(t3); + } }, { key: "exportToCSV", value: function() { + var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + return new G(this.ctx).exportToCSV(t3); + } }, { key: "paper", value: function() { + return this.w.globals.dom.Paper; + } }, { key: "_parentResizeCallback", value: function() { + this.w.globals.animationEnded && this.w.config.chart.redrawOnParentResize && this._windowResize(); + } }, { key: "_windowResize", value: function() { + var t3 = this; + clearTimeout(this.w.globals.resizeTimer), this.w.globals.resizeTimer = window.setTimeout(function() { + t3.w.globals.resized = true, t3.w.globals.dataChanged = false, t3.ctx.update(); + }, 150); + } }, { key: "_windowResizeHandler", value: function() { + var t3 = this.w.config.chart.redrawOnWindowResize; + "function" == typeof t3 && (t3 = t3()), t3 && this._windowResize(); + } }], [{ key: "getChartByID", value: function(t3) { + var e2 = x.escapeString(t3); + if (Apex._chartInstances) { + var i2 = Apex._chartInstances.filter(function(t4) { + return t4.id === e2; + })[0]; + return i2 && i2.chart; + } + } }, { key: "initOnLoad", value: function() { + for (var e2 = document.querySelectorAll("[data-apexcharts]"), i2 = 0; i2 < e2.length; i2++) { + new t2(e2[i2], JSON.parse(e2[i2].getAttribute("data-options"))).render(); + } + } }, { key: "exec", value: function(t3, e2) { + var i2 = this.getChartByID(t3); + if (i2) { + i2.w.globals.isExecCalled = true; + var a2 = null; + if (-1 !== i2.publicMethods.indexOf(e2)) { + for (var s2 = arguments.length, r2 = new Array(s2 > 2 ? s2 - 2 : 0), o2 = 2; o2 < s2; o2++) + r2[o2 - 2] = arguments[o2]; + a2 = i2[e2].apply(i2, r2); + } + return a2; + } + } }, { key: "merge", value: function(t3, e2) { + return x.extend(t3, e2); + } }]), t2; + }(); + module.exports = _t; } -} - -@keyframes resizeanim { - 0%,to { - opacity: 0 - } -} - -.apexcharts-canvas { - position: relative; - user-select: none -} - -.apexcharts-canvas ::-webkit-scrollbar { - -webkit-appearance: none; - width: 6px -} - -.apexcharts-canvas ::-webkit-scrollbar-thumb { - border-radius: 4px; - background-color: rgba(0,0,0,.5); - box-shadow: 0 0 1px rgba(255,255,255,.5); - -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5) -} - -.apexcharts-inner { - position: relative -} - -.apexcharts-text tspan { - font-family: inherit -} - -.legend-mouseover-inactive { - transition: .15s ease all; - opacity: .2 -} - -.apexcharts-legend-text { - padding-left: 15px; - margin-left: -15px; -} - -.apexcharts-series-collapsed { - opacity: 0 -} - -.apexcharts-tooltip { - border-radius: 5px; - box-shadow: 2px 2px 6px -4px #999; - cursor: default; - font-size: 14px; - left: 62px; - opacity: 0; - pointer-events: none; - position: absolute; - top: 20px; - display: flex; - flex-direction: column; - overflow: hidden; - white-space: nowrap; - z-index: 12; - transition: .15s ease all -} - -.apexcharts-tooltip.apexcharts-active { - opacity: 1; - transition: .15s ease all -} - -.apexcharts-tooltip.apexcharts-theme-light { - border: 1px solid #e3e3e3; - background: rgba(255,255,255,.96) -} - -.apexcharts-tooltip.apexcharts-theme-dark { - color: #fff; - background: rgba(30,30,30,.8) -} - -.apexcharts-tooltip * { - font-family: inherit -} - -.apexcharts-tooltip-title { - padding: 6px; - font-size: 15px; - margin-bottom: 4px -} - -.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title { - background: #eceff1; - border-bottom: 1px solid #ddd -} - -.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title { - background: rgba(0,0,0,.7); - border-bottom: 1px solid #333 -} - -.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value { - display: inline-block; - margin-left: 5px; - font-weight: 600 -} - -.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty { - display: none -} - -.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value { - padding: 6px 0 5px -} - -.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value { - display: flex -} - -.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) { - margin-top: -6px -} - -.apexcharts-tooltip-marker { - width: 12px; - height: 12px; - position: relative; - top: 0; - margin-right: 10px; - border-radius: 50% -} - -.apexcharts-tooltip-series-group { - padding: 0 10px; - display: none; - text-align: left; - justify-content: left; - align-items: center -} - -.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker { - opacity: 1 -} - -.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child { - padding-bottom: 4px -} - -.apexcharts-tooltip-series-group-hidden { - opacity: 0; - height: 0; - line-height: 0; - padding: 0!important -} - -.apexcharts-tooltip-y-group { - padding: 6px 0 5px -} - -.apexcharts-custom-tooltip,.apexcharts-tooltip-box { - padding: 4px 8px -} - -.apexcharts-tooltip-boxPlot { - display: flex; - flex-direction: column-reverse -} - -.apexcharts-tooltip-box>div { - margin: 4px 0 -} - -.apexcharts-tooltip-box span.value { - font-weight: 700 -} - -.apexcharts-tooltip-rangebar { - padding: 5px 8px -} - -.apexcharts-tooltip-rangebar .category { - font-weight: 600; - color: #777 -} - -.apexcharts-tooltip-rangebar .series-name { - font-weight: 700; - display: block; - margin-bottom: 5px -} - -.apexcharts-xaxistooltip,.apexcharts-yaxistooltip { - opacity: 0; - pointer-events: none; - color: #373d3f; - font-size: 13px; - text-align: center; - border-radius: 2px; - position: absolute; - z-index: 10; - background: #eceff1; - border: 1px solid #90a4ae -} - -.apexcharts-xaxistooltip { - padding: 9px 10px; - transition: .15s ease all -} - -.apexcharts-xaxistooltip.apexcharts-theme-dark { - background: rgba(0,0,0,.7); - border: 1px solid rgba(0,0,0,.5); - color: #fff -} - -.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before { - left: 50%; - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none -} - -.apexcharts-xaxistooltip:after { - border-color: transparent; - border-width: 6px; - margin-left: -6px -} - -.apexcharts-xaxistooltip:before { - border-color: transparent; - border-width: 7px; - margin-left: -7px -} - -.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before { - bottom: 100% -} - -.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before { - top: 100% -} - -.apexcharts-xaxistooltip-bottom:after { - border-bottom-color: #eceff1 -} - -.apexcharts-xaxistooltip-bottom:before { - border-bottom-color: #90a4ae -} - -.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before { - border-bottom-color: rgba(0,0,0,.5) -} - -.apexcharts-xaxistooltip-top:after { - border-top-color: #eceff1 -} - -.apexcharts-xaxistooltip-top:before { - border-top-color: #90a4ae -} - -.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before { - border-top-color: rgba(0,0,0,.5) -} - -.apexcharts-xaxistooltip.apexcharts-active { - opacity: 1; - transition: .15s ease all -} - -.apexcharts-yaxistooltip { - padding: 4px 10px -} - -.apexcharts-yaxistooltip.apexcharts-theme-dark { - background: rgba(0,0,0,.7); - border: 1px solid rgba(0,0,0,.5); - color: #fff -} - -.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before { - top: 50%; - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none -} - -.apexcharts-yaxistooltip:after { - border-color: transparent; - border-width: 6px; - margin-top: -6px -} +}); -.apexcharts-yaxistooltip:before { - border-color: transparent; - border-width: 7px; - margin-top: -7px +// apexcharts.js +var import_apexcharts = __toESM(require_apexcharts_common(), 1); +function apexcharts({ + options, + chartId, + theme, + extraJsOptions +}) { + return { + chart: null, + options, + chartId, + theme, + extraJsOptions, + init: function() { + this.$wire.$on("updateOptions", ({ options: options2 }) => { + options2 = { + ...options2, + ...this.extraJsOptions + }; + this.updateChart(options2); + }); + Alpine.effect(() => { + const theme2 = Alpine.store("theme"); + this.$nextTick(() => { + if (this.chart === null) { + this.initChart(); + } else { + this.updateChart({ + theme: { mode: theme2 }, + chart: { + background: "inherit" + } + }); + } + }); + }); + }, + initChart: function() { + this.options.theme = { mode: this.theme }; + this.options.chart.background = "inherit"; + this.options = { + ...this.options, + ...this.extraJsOptions + }; + this.chart = new import_apexcharts.default(document.querySelector(this.chartId), this.options); + this.chart.render(); + }, + updateChart: function(options2) { + this.chart.updateOptions(options2, false, true, true); + } + }; } - -.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before { - left: 100% -} - -.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before { - right: 100% -} - -.apexcharts-yaxistooltip-left:after { - border-left-color: #eceff1 -} - -.apexcharts-yaxistooltip-left:before { - border-left-color: #90a4ae -} - -.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before { - border-left-color: rgba(0,0,0,.5) -} - -.apexcharts-yaxistooltip-right:after { - border-right-color: #eceff1 -} - -.apexcharts-yaxistooltip-right:before { - border-right-color: #90a4ae -} - -.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before { - border-right-color: rgba(0,0,0,.5) -} - -.apexcharts-yaxistooltip.apexcharts-active { - opacity: 1 -} - -.apexcharts-yaxistooltip-hidden { - display: none -} - -.apexcharts-xcrosshairs,.apexcharts-ycrosshairs { - pointer-events: none; - opacity: 0; - transition: .15s ease all -} - -.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active { - opacity: 1; - transition: .15s ease all -} - -.apexcharts-ycrosshairs-hidden { - opacity: 0 -} - -.apexcharts-selection-rect { - cursor: move -} - -.svg_select_boundingRect,.svg_select_points_rot { - pointer-events: none; - opacity: 0; - visibility: hidden -} - -.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot { - opacity: 0; - visibility: hidden -} - -.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r { - cursor: ew-resize; - opacity: 1; - visibility: visible -} - -.svg_select_points { - fill: #efefef; - stroke: #333; - rx: 2 -} - -.apexcharts-svg.apexcharts-zoomable.hovering-zoom { - cursor: crosshair -} - -.apexcharts-svg.apexcharts-zoomable.hovering-pan { - cursor: move -} - -.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon { - cursor: pointer; - width: 20px; - height: 20px; - line-height: 24px; - color: #6e8192; - text-align: center -} - -.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg { - fill: #6e8192 -} - -.apexcharts-selection-icon svg { - fill: #444; - transform: scale(.76) -} - -.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg { - fill: #f3f4f5 -} - -.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg { - fill: #008ffb -} - -.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg { - fill: #333 -} - -.apexcharts-menu-icon,.apexcharts-selection-icon { - position: relative -} - -.apexcharts-reset-icon { - margin-left: 5px -} - -.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon { - transform: scale(.85) -} - -.apexcharts-zoomin-icon,.apexcharts-zoomout-icon { - transform: scale(.7) -} - -.apexcharts-zoomout-icon { - margin-right: 3px -} - -.apexcharts-pan-icon { - transform: scale(.62); - position: relative; - left: 1px; - top: 0 -} - -.apexcharts-pan-icon svg { - fill: #fff; - stroke: #6e8192; - stroke-width: 2 -} - -.apexcharts-pan-icon.apexcharts-selected svg { - stroke: #008ffb -} - -.apexcharts-pan-icon:not(.apexcharts-selected):hover svg { - stroke: #333 -} - -.apexcharts-toolbar { - position: absolute; - z-index: 11; - max-width: 176px; - text-align: right; - border-radius: 3px; - padding: 0 6px 2px; - display: flex; - justify-content: space-between; - align-items: center -} - -.apexcharts-menu { - background: #fff; - position: absolute; - top: 100%; - border: 1px solid #ddd; - border-radius: 3px; - padding: 3px; - right: 10px; - opacity: 0; - min-width: 110px; - transition: .15s ease all; - pointer-events: none -} - -.apexcharts-menu.apexcharts-menu-open { - opacity: 1; - pointer-events: all; - transition: .15s ease all -} - -.apexcharts-menu-item { - padding: 6px 7px; - font-size: 12px; - cursor: pointer -} - -.apexcharts-theme-light .apexcharts-menu-item:hover { - background: #eee -} - -.apexcharts-theme-dark .apexcharts-menu { - background: rgba(0,0,0,.7); - color: #fff -} - -@media screen and (min-width:768px) { - .apexcharts-canvas:hover .apexcharts-toolbar { - opacity: 1 - } -} - -.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points { - opacity: 0 -} - -.apexcharts-hidden-element-shown { - opacity: 1; - transition: 0.25s ease all; -} -.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label { - cursor: default; - pointer-events: none -} - -.apexcharts-pie-label-delay { - opacity: 0; - animation-name: opaque; - animation-duration: .3s; - animation-fill-mode: forwards; - animation-timing-function: ease -} - -.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect { - pointer-events: none -} - -.apexcharts-marker { - transition: .15s ease all -} - -.resize-triggers { - animation: 1ms resizeanim; - visibility: hidden; - opacity: 0; - height: 100%; - width: 100%; - overflow: hidden -} - -.contract-trigger:before,.resize-triggers,.resize-triggers>div { - content: " "; - display: block; - position: absolute; - top: 0; - left: 0 -} - -.resize-triggers>div { - height: 100%; - width: 100%; - background: #eee; - overflow: auto -} - -.contract-trigger:before { - overflow: hidden; - width: 200%; - height: 200% -} - -.apexcharts-bar-goals-markers{ - pointer-events: none -} - -.apexcharts-bar-shadows{ - pointer-events: none -} - -.apexcharts-rangebar-goals-markers{ - pointer-events: none -}`,r?s.prepend(e.css):n.head.appendChild(e.css))}var h=e.create(e.w.config.series,{});if(!h)return t(e);e.mount(h).then(function(){typeof e.w.config.chart.events.mounted=="function"&&e.w.config.chart.events.mounted(e,e.w),e.events.fireEvent("mounted",[e,e.w]),t(h)}).catch(function(c){i(c)})}else i(new Error("Element not found"))})}},{key:"create",value:function(e,t){var i=this.w;new Ge(this).initModules();var a=this.w.globals;if(a.noData=!1,a.animationEnded=!1,this.responsive.checkResponsiveConfig(t),i.config.xaxis.convertedCatToNumeric&&new he(i.config).convertCatToNumericXaxis(i.config,this.ctx),this.el===null||(this.core.setupElements(),i.config.chart.type==="treemap"&&(i.config.grid.show=!1,i.config.yaxis[0].show=!1),a.svgWidth===0))return a.animationEnded=!0,null;var s=G.checkComboSeries(e);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount;var r=e.every(function(c){return c.data&&c.data.length===0});(e.length===0||r)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(e),this.theme.init(),new fe(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),a.noData&&a.collapsedSeries.length!==a.series.length&&!i.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),i.config.xaxis.type!=="category"&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=i.globals.minX,this.ctx.toolbar.maxX=i.globals.maxX),this.formatters.heatmapLabelFormatters(),new G(this).getLargestMarkerSize(),this.dimensions.plotCoords();var n=this.core.xySettings();this.grid.createGridMask();var o=this.core.plotChartType(e,n),h=new se(this);return h.bringForward(),i.config.dataLabels.background.enabled&&h.dataLabelsBackground(),this.core.shiftGraphPosition(),{elGraph:o,xyRatios:n,dimensions:{plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}}}}},{key:"mount",value:function(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,i=this,a=i.w;return new Promise(function(s,r){if(i.el===null)return r(new Error("Not enough data to display or target element not found"));(t===null||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new Je(i);var n,o,h=i.grid.drawGrid();if(i.annotations=new vt(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),a.config.grid.position==="back"&&(h&&a.globals.dom.elGraphical.add(h.el),h!=null&&(n=h.elGridBorders)!==null&&n!==void 0&&n.node&&a.globals.dom.elGraphical.add(h.elGridBorders)),Array.isArray(t.elGraph))for(var c=0;c0&&a.globals.memory.methodsToExec.forEach(function(f){f.method(f.params,!1,f.context)}),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)})}},{key:"destroy",value:function(){var e,t;window.removeEventListener("resize",this.windowResizeHandler),this.el.parentNode,e=this.parentResizeHandler,(t=Ie.get(e))&&(t.disconnect(),Ie.delete(e));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach(function(a,s){a.id===P.escapeString(i)&&Apex._chartInstances.splice(s,1)}),new Ve(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0&&arguments[1],a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],s=!(arguments.length>3&&arguments[3]!==void 0)||arguments[3],r=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],n=this.w;return n.globals.selection=void 0,e.series&&(this.series.resetSeries(!1,!0,!1),e.series.length&&e.series[0].data&&(e.series=e.series.map(function(o,h){return t.updateHelpers._extendSeries(o,h)})),this.updateHelpers.revertDefaultAxisMinMax()),e.xaxis&&(e=this.updateHelpers.forceXAxisUpdate(e)),e.yaxis&&(e=this.updateHelpers.forceYAxisUpdate(e)),n.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),e.theme&&(e=this.theme.updateThemeOptions(e)),this.updateHelpers._updateOptions(e,i,a,s,r)}},{key:"updateSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(e,t,i)}},{key:"appendSeries",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],a=this.w.config.series.slice();return a.push(e),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,t,i)}},{key:"appendData",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&arguments[0]!==void 0)||arguments[0],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];this.series.resetSeries(e,t)}},{key:"addEventListener",value:function(e,t){this.events.addEventListener(e,t)}},{key:"removeEventListener",value:function(e,t){this.events.removeEventListener(e,t)}},{key:"addXaxisAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(e,t,a)}},{key:"addYaxisAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(e,t,a)}},{key:"addPointAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(e,t,a)}},{key:"clearAnnotations",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:void 0,t=this;e&&(t=e),t.annotations.clearAnnotations(t)}},{key:"removeAnnotation",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,i=this;t&&(i=t),i.annotations.removeAnnotation(i,e)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(e,t){return this.coreUtils.getSeriesTotalsXRange(e,t)}},{key:"getHighestValueInSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return new Xe(this.ctx).getMinYMaxY(e).highestY}},{key:"getLowestValueInSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return new Xe(this.ctx).getMinYMaxY(e).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(e,t){return this.updateHelpers.toggleDataPointSelection(e,t)}},{key:"zoomX",value:function(e,t){this.ctx.toolbar.zoomUpdateOptions(e,t)}},{key:"setLocale",value:function(e){this.localization.setCurrentLocaleValues(e)}},{key:"dataURI",value:function(e){return new be(this.ctx).dataURI(e)}},{key:"exportToCSV",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return new be(this.ctx).exportToCSV(e)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var e=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout(function(){e.w.globals.resized=!0,e.w.globals.dataChanged=!1,e.ctx.update()},150)}},{key:"_windowResizeHandler",value:function(){var e=this.w.config.chart.redrawOnWindowResize;typeof e=="function"&&(e=e()),e&&this._windowResize()}}],[{key:"getChartByID",value:function(e){var t=P.escapeString(e);if(Apex._chartInstances){var i=Apex._chartInstances.filter(function(a){return a.id===t})[0];return i&&i.chart}}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),t=0;t2?s-2:0),n=2;n{this.updateChart(i)}),Alpine.effect(()=>{let i=Alpine.store("theme");this.$nextTick(()=>{this.chart===null?this.initChart():this.updateChart({theme:{mode:i},chart:{background:"inherit"}})})})},initChart:function(){this.options.theme={mode:this.theme},this.options.chart.background="inherit",this.chart=new nt.default(document.querySelector(this.chartId),this.options),this.chart.render()},updateChart:function(i){this.chart.updateOptions(i,!1,!0,!0)}}}export{Jt as default}; +export { + apexcharts as default +}; /*! Bundled license information: apexcharts/dist/apexcharts.common.js: @@ -703,3 +8340,4 @@ apexcharts/dist/apexcharts.common.js: * Released under the MIT License. *) */ +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzL2FwZXhjaGFydHMvZGlzdC9hcGV4Y2hhcnRzLmNvbW1vbi5qcyIsICIuLi9hcGV4Y2hhcnRzLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiFcbiAqIEFwZXhDaGFydHMgdjMuNDQuMFxuICogKGMpIDIwMTgtMjAyMyBBcGV4Q2hhcnRzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHQodCxlKXt2YXIgaT1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihhPWEuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLGkucHVzaC5hcHBseShpLGEpfXJldHVybiBpfWZ1bmN0aW9uIGUoZSl7Zm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIGE9bnVsbCE9YXJndW1lbnRzW2ldP2FyZ3VtZW50c1tpXTp7fTtpJTI/dChPYmplY3QoYSksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe28oZSx0LGFbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYSkpOnQoT2JqZWN0KGEpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSx0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiB0fSxpKHQpfWZ1bmN0aW9uIGEodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIHModCxlKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGE9ZVtpXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsYS5rZXksYSl9fWZ1bmN0aW9uIHIodCxlLGkpe3JldHVybiBlJiZzKHQucHJvdG90eXBlLGUpLGkmJnModCxpKSx0fWZ1bmN0aW9uIG8odCxlLGkpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6aSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09aSx0fWZ1bmN0aW9uIG4odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJmgodCxlKX1mdW5jdGlvbiBsKHQpe3JldHVybiBsPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LGwodCl9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxoKHQsZSl9ZnVuY3Rpb24gYyh0LGUpe2lmKGUmJihcIm9iamVjdFwiPT10eXBlb2YgZXx8XCJmdW5jdGlvblwiPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiB0fSh0KX1mdW5jdGlvbiBkKHQpe3ZhciBlPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGksYT1sKHQpO2lmKGUpe3ZhciBzPWwodGhpcykuY29uc3RydWN0b3I7aT1SZWZsZWN0LmNvbnN0cnVjdChhLGFyZ3VtZW50cyxzKX1lbHNlIGk9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGModGhpcyxpKX19ZnVuY3Rpb24gZyh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgaT1udWxsPT10P251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0W1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1pKXJldHVybjt2YXIgYSxzLHI9W10sbz0hMCxuPSExO3RyeXtmb3IoaT1pLmNhbGwodCk7IShvPShhPWkubmV4dCgpKS5kb25lKSYmKHIucHVzaChhLnZhbHVlKSwhZXx8ci5sZW5ndGghPT1lKTtvPSEwKTt9Y2F0Y2godCl7bj0hMCxzPXR9ZmluYWxseXt0cnl7b3x8bnVsbD09aS5yZXR1cm58fGkucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IHN9fXJldHVybiByfSh0LGUpfHxwKHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiB1KHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBmKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10W1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fHAodCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gcCh0LGUpe2lmKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXJldHVybiBmKHQsZSk7dmFyIGk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1pJiZ0LmNvbnN0cnVjdG9yJiYoaT10LmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1pfHxcIlNldFwiPT09aT9BcnJheS5mcm9tKHQpOlwiQXJndW1lbnRzXCI9PT1pfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChpKT9mKHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBmKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBpPTAsYT1uZXcgQXJyYXkoZSk7aTxlO2krKylhW2ldPXRbaV07cmV0dXJuIGF9dmFyIHg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7YSh0aGlzLHQpfXJldHVybiByKHQsW3trZXk6XCJzaGFkZVJHQkNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLnNwbGl0KFwiLFwiKSxhPXQ8MD8wOjI1NSxzPXQ8MD8tMSp0OnQscj1wYXJzZUludChpWzBdLnNsaWNlKDQpLDEwKSxvPXBhcnNlSW50KGlbMV0sMTApLG49cGFyc2VJbnQoaVsyXSwxMCk7cmV0dXJuXCJyZ2IoXCIrKE1hdGgucm91bmQoKGEtcikqcykrcikrXCIsXCIrKE1hdGgucm91bmQoKGEtbykqcykrbykrXCIsXCIrKE1hdGgucm91bmQoKGEtbikqcykrbikrXCIpXCJ9fSx7a2V5Olwic2hhZGVIZXhDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9cGFyc2VJbnQoZS5zbGljZSgxKSwxNiksYT10PDA/MDoyNTUscz10PDA/LTEqdDp0LHI9aT4+MTYsbz1pPj44JjI1NSxuPTI1NSZpO3JldHVyblwiI1wiKygxNjc3NzIxNis2NTUzNiooTWF0aC5yb3VuZCgoYS1yKSpzKStyKSsyNTYqKE1hdGgucm91bmQoKGEtbykqcykrbykrKE1hdGgucm91bmQoKGEtbikqcykrbikpLnRvU3RyaW5nKDE2KS5zbGljZSgxKX19LHtrZXk6XCJzaGFkZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24oZSxpKXtyZXR1cm4gdC5pc0NvbG9ySGV4KGkpP3RoaXMuc2hhZGVIZXhDb2xvcihlLGkpOnRoaXMuc2hhZGVSR0JDb2xvcihlLGkpfX1dLFt7a2V5OlwiYmluZFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LHtrZXk6XCJpc09iamVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcIm9iamVjdFwiPT09aSh0KSYmIUFycmF5LmlzQXJyYXkodCkmJm51bGwhPXR9fSx7a2V5OlwiaXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk9PT1cIltvYmplY3QgXCIrdCtcIl1cIn19LHtrZXk6XCJsaXN0VG9BcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpW2VdPXRbZV07cmV0dXJuIGl9fSx7a2V5OlwiZXh0ZW5kXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO1wiZnVuY3Rpb25cIiE9dHlwZW9mIE9iamVjdC5hc3NpZ24mJihPYmplY3QuYXNzaWduPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdFwiKTtmb3IodmFyIGU9T2JqZWN0KHQpLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgYT1hcmd1bWVudHNbaV07aWYobnVsbCE9YSlmb3IodmFyIHMgaW4gYSlhLmhhc093blByb3BlcnR5KHMpJiYoZVtzXT1hW3NdKX1yZXR1cm4gZX0pO3ZhciBhPU9iamVjdC5hc3NpZ24oe30sdCk7cmV0dXJuIHRoaXMuaXNPYmplY3QodCkmJnRoaXMuaXNPYmplY3QoZSkmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHMpe2kuaXNPYmplY3QoZVtzXSkmJnMgaW4gdD9hW3NdPWkuZXh0ZW5kKHRbc10sZVtzXSk6T2JqZWN0LmFzc2lnbihhLG8oe30scyxlW3NdKSl9KSksYX19LHtrZXk6XCJleHRlbmRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKGUsaSl7dmFyIGE9W107cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXthLnB1c2godC5leHRlbmQoaSxlKSl9KSksZT1hfX0se2tleTpcIm1vbnRoTW9kXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQlMTJ9fSx7a2V5OlwiY2xvbmVcIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0LmlzKFwiQXJyYXlcIixlKSl7Zm9yKHZhciBhPVtdLHM9MDtzPGUubGVuZ3RoO3MrKylhW3NdPXRoaXMuY2xvbmUoZVtzXSk7cmV0dXJuIGF9aWYodC5pcyhcIk51bGxcIixlKSlyZXR1cm4gbnVsbDtpZih0LmlzKFwiRGF0ZVwiLGUpKXJldHVybiBlO2lmKFwib2JqZWN0XCI9PT1pKGUpKXt2YXIgcj17fTtmb3IodmFyIG8gaW4gZSllLmhhc093blByb3BlcnR5KG8pJiYocltvXT10aGlzLmNsb25lKGVbb10pKTtyZXR1cm4gcn1yZXR1cm4gZX19LHtrZXk6XCJsb2cxMFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLkxOMTB9fSx7a2V5Olwicm91bmRUb0Jhc2UxMFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nMTAodCkpKX19LHtrZXk6XCJyb3VuZFRvQmFzZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgucG93KGUsTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLmxvZyhlKSkpfX0se2tleTpcInBhcnNlTnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10P3Q6cGFyc2VGbG9hdCh0KX19LHtrZXk6XCJzdHJpcE51bWJlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToyO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHQpP3Q6cGFyc2VGbG9hdCh0LnRvUHJlY2lzaW9uKGUpKX19LHtrZXk6XCJyYW5kb21JZFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKE1hdGgucmFuZG9tKCkrMSkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg0KX19LHtrZXk6XCJub0V4cG9uZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyh0KS5zcGxpdCgvW2VFXS8pO2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gZVswXTt2YXIgaT1cIlwiLGE9dDwwP1wiLVwiOlwiXCIscz1lWzBdLnJlcGxhY2UoXCIuXCIsXCJcIikscj1OdW1iZXIoZVsxXSkrMTtpZihyPDApe2ZvcihpPWErXCIwLlwiO3IrKzspaSs9XCIwXCI7cmV0dXJuIGkrcy5yZXBsYWNlKC9eLS8sXCJcIil9Zm9yKHItPXMubGVuZ3RoO3ItLTspaSs9XCIwXCI7cmV0dXJuIHMraX19LHtrZXk6XCJnZXREaW1lbnNpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9Z2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLGk9dC5jbGllbnRIZWlnaHQsYT10LmNsaWVudFdpZHRoO3JldHVybiBpLT1wYXJzZUZsb2F0KGUucGFkZGluZ1RvcCkrcGFyc2VGbG9hdChlLnBhZGRpbmdCb3R0b20pLFthLT1wYXJzZUZsb2F0KGUucGFkZGluZ0xlZnQpK3BhcnNlRmxvYXQoZS5wYWRkaW5nUmlnaHQpLGldfX0se2tleTpcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3RvcDplLnRvcCxyaWdodDplLnJpZ2h0LGJvdHRvbTplLmJvdHRvbSxsZWZ0OmUubGVmdCx3aWR0aDp0LmNsaWVudFdpZHRoLGhlaWdodDp0LmNsaWVudEhlaWdodCx4OmUubGVmdCx5OmUudG9wfX19LHtrZXk6XCJnZXRMYXJnZXN0U3RyaW5nRnJvbUFyclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmKGU9ZS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pKSksdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCl9fSx7a2V5OlwiaGV4VG9SZ2JhXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCIjOTk5OTk5XCIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06LjY7XCIjXCIhPT10LnN1YnN0cmluZygwLDEpJiYodD1cIiM5OTk5OTlcIik7dmFyIGk9dC5yZXBsYWNlKFwiI1wiLFwiXCIpO2k9aS5tYXRjaChuZXcgUmVnRXhwKFwiKC57XCIraS5sZW5ndGgvMytcIn0pXCIsXCJnXCIpKTtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylpW2FdPXBhcnNlSW50KDE9PT1pW2FdLmxlbmd0aD9pW2FdK2lbYV06aVthXSwxNik7cmV0dXJuIHZvaWQgMCE9PWUmJmkucHVzaChlKSxcInJnYmEoXCIraS5qb2luKFwiLFwiKStcIilcIn19LHtrZXk6XCJnZXRPcGFjaXR5RnJvbVJHQkFcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0LnJlcGxhY2UoL14uKiwoLispXFwpLyxcIiQxXCIpKX19LHtrZXk6XCJyZ2IyaGV4XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dC5tYXRjaCgvXnJnYmE/W1xccytdP1xcKFtcXHMrXT8oXFxkKylbXFxzK10/LFtcXHMrXT8oXFxkKylbXFxzK10/LFtcXHMrXT8oXFxkKylbXFxzK10/L2kpKSYmND09PXQubGVuZ3RoP1wiI1wiKyhcIjBcIitwYXJzZUludCh0WzFdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSsoXCIwXCIrcGFyc2VJbnQodFsyXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikrKFwiMFwiK3BhcnNlSW50KHRbM10sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpOlwiXCJ9fSx7a2V5OlwiaXNDb2xvckhleFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybi8oXiNbMC05QS1GXXs2fSQpfCheI1swLTlBLUZdezN9JCl8KF4jWzAtOUEtRl17OH0kKS9pLnRlc3QodCl9fSx7a2V5OlwiZ2V0UG9seWdvblBvc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPVtdLGE9MipNYXRoLlBJL2Uscz0wO3M8ZTtzKyspe3ZhciByPXt9O3IueD10Kk1hdGguc2luKHMqYSksci55PS10Kk1hdGguY29zKHMqYSksaS5wdXNoKHIpfXJldHVybiBpfX0se2tleTpcInBvbGFyVG9DYXJ0ZXNpYW5cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz0oYS05MCkqTWF0aC5QSS8xODA7cmV0dXJue3g6dCtpKk1hdGguY29zKHMpLHk6ZStpKk1hdGguc2luKHMpfX19LHtrZXk6XCJlc2NhcGVTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06XCJ4XCIsaT10LnRvU3RyaW5nKCkuc2xpY2UoKTtyZXR1cm4gaT1pLnJlcGxhY2UoL1tgIH4hQCMkJV4mKigpfCtcXD0/OzonXCIsLjw+e31bXFxdXFxcXC9dL2dpLGUpfX0se2tleTpcIm5lZ1RvWmVyb1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0PDA/MDp0fX0se2tleTpcIm1vdmVJbmRleEluQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoaT49dC5sZW5ndGgpZm9yKHZhciBhPWktdC5sZW5ndGgrMTthLS07KXQucHVzaCh2b2lkIDApO3JldHVybiB0LnNwbGljZShpLDAsdC5zcGxpY2UoZSwxKVswXSksdH19LHtrZXk6XCJleHRyYWN0TnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodC5yZXBsYWNlKC9bXlxcZC5dKi9nLFwiXCIpKX19LHtrZXk6XCJmaW5kQW5jZXN0b3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcig7KHQ9dC5wYXJlbnRFbGVtZW50KSYmIXQuY2xhc3NMaXN0LmNvbnRhaW5zKGUpOyk7cmV0dXJuIHR9fSx7a2V5Olwic2V0RUxzdHlsZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJih0LnN0eWxlLmtleT1lW2ldKX19LHtrZXk6XCJpc051bWJlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiFpc05hTih0KSYmcGFyc2VGbG9hdChOdW1iZXIodCkpPT09dCYmIWlzTmFOKHBhcnNlSW50KHQsMTApKX19LHtrZXk6XCJpc0Zsb2F0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE51bWJlcih0KT09PXQmJnQlMSE9MH19LHtrZXk6XCJpc1NhZmFyaVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KX19LHtrZXk6XCJpc0ZpcmVmb3hcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImZpcmVmb3hcIik+LTF9fSx7a2V5OlwiaXNJRTExXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZigtMSE9PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJNU0lFXCIpfHx3aW5kb3cubmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIlRyaWRlbnQvXCIpPi0xKXJldHVybiEwfX0se2tleTpcImlzSUVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LGU9dC5pbmRleE9mKFwiTVNJRSBcIik7aWYoZT4wKXJldHVybiBwYXJzZUludCh0LnN1YnN0cmluZyhlKzUsdC5pbmRleE9mKFwiLlwiLGUpKSwxMCk7aWYodC5pbmRleE9mKFwiVHJpZGVudC9cIik+MCl7dmFyIGk9dC5pbmRleE9mKFwicnY6XCIpO3JldHVybiBwYXJzZUludCh0LnN1YnN0cmluZyhpKzMsdC5pbmRleE9mKFwiLlwiLGkpKSwxMCl9dmFyIGE9dC5pbmRleE9mKFwiRWRnZS9cIik7cmV0dXJuIGE+MCYmcGFyc2VJbnQodC5zdWJzdHJpbmcoYSs1LHQuaW5kZXhPZihcIi5cIixhKSksMTApfX1dKSx0fSgpLGI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zZXRFYXNpbmdGdW5jdGlvbnMoKX1yZXR1cm4gcih0LFt7a2V5Olwic2V0RWFzaW5nRnVuY3Rpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtpZighdGhpcy53Lmdsb2JhbHMuZWFzaW5nKXtzd2l0Y2godGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVhc2luZyl7Y2FzZVwibGluZWFyXCI6dD1cIi1cIjticmVhaztjYXNlXCJlYXNlaW5cIjp0PVwiPFwiO2JyZWFrO2Nhc2VcImVhc2VvdXRcIjp0PVwiPlwiO2JyZWFrO2Nhc2VcImVhc2Vpbm91dFwiOmRlZmF1bHQ6dD1cIjw+XCI7YnJlYWs7Y2FzZVwic3dpbmdcIjp0PWZ1bmN0aW9uKHQpe3ZhciBlPTEuNzAxNTg7cmV0dXJuKHQtPTEpKnQqKChlKzEpKnQrZSkrMX07YnJlYWs7Y2FzZVwiYm91bmNlXCI6dD1mdW5jdGlvbih0KXtyZXR1cm4gdDwxLzIuNzU/Ny41NjI1KnQqdDp0PDIvMi43NT83LjU2MjUqKHQtPTEuNS8yLjc1KSp0Ky43NTp0PDIuNS8yLjc1PzcuNTYyNSoodC09Mi4yNS8yLjc1KSp0Ky45Mzc1OjcuNTYyNSoodC09Mi42MjUvMi43NSkqdCsuOTg0Mzc1fTticmVhaztjYXNlXCJlbGFzdGljXCI6dD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PSEhdD90Ok1hdGgucG93KDIsLTEwKnQpKk1hdGguc2luKCh0LS4wNzUpKigyKk1hdGguUEkpLy4zKSsxfX10aGlzLncuZ2xvYmFscy5lYXNpbmc9dH19fSx7a2V5OlwiYW5pbWF0ZUxpbmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt0LmF0dHIoZSkuYW5pbWF0ZShhKS5hdHRyKGkpfX0se2tleTpcImFuaW1hdGVNYXJrZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7ZXx8KGU9MCksdC5hdHRyKHtyOmUsd2lkdGg6ZSxoZWlnaHQ6ZX0pLmFuaW1hdGUoYSxzKS5hdHRyKHtyOmksd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9KS5hZnRlckFsbCgoZnVuY3Rpb24oKXtyKCl9KSl9fSx7a2V5OlwiYW5pbWF0ZUNpcmNsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dC5hdHRyKHtyOmUucixjeDplLmN4LGN5OmUuY3l9KS5hbmltYXRlKGEscykuYXR0cih7cjppLnIsY3g6aS5jeCxjeTppLmN5fSl9fSx7a2V5OlwiYW5pbWF0ZVJlY3RcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3QuYXR0cihlKS5hbmltYXRlKGEpLmF0dHIoaSkuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCl7cmV0dXJuIHMoKX0pKX19LHtrZXk6XCJhbmltYXRlUGF0aHNHcmFkdWFsbHlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmVsLGk9dC5yZWFsSW5kZXgsYT10Lmoscz10LmZpbGwscj10LnBhdGhGcm9tLG89dC5wYXRoVG8sbj10LnNwZWVkLGw9dC5kZWxheSxoPXRoaXMudyxjPTA7aC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmVuYWJsZWQmJihjPWguY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSksaC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQmJmguZ2xvYmFscy5kYXRhQ2hhbmdlZCYmXCJiYXJcIiE9PWguY29uZmlnLmNoYXJ0LnR5cGUmJihjPTApLHRoaXMubW9ycGhTVkcoZSxpLGEsXCJsaW5lXCIhPT1oLmNvbmZpZy5jaGFydC50eXBlfHxoLmdsb2JhbHMuY29tYm9DaGFydHM/czpcInN0cm9rZVwiLHIsbyxuLGwqYyl9fSx7a2V5Olwic2hvd0RlbGF5ZWRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZWw7ZS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKSxlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGRlbi1lbGVtZW50LXNob3duXCIpfSkpfX0se2tleTpcImFuaW1hdGlvbkNvbXBsZXRlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztlLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWR8fChlLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITAsdGhpcy5zaG93RGVsYXllZEVsZW1lbnRzKCksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLmFuaW1hdGlvbkVuZCYmZS5jb25maWcuY2hhcnQuZXZlbnRzLmFuaW1hdGlvbkVuZCh0aGlzLmN0eCx7ZWw6dCx3OmV9KSl9fSx7a2V5OlwibW9ycGhTVkdcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvLG4pe3ZhciBsPXRoaXMsaD10aGlzLnc7c3x8KHM9dC5hdHRyKFwicGF0aEZyb21cIikpLHJ8fChyPXQuYXR0cihcInBhdGhUb1wiKSk7dmFyIGM9ZnVuY3Rpb24odCl7cmV0dXJuXCJyYWRhclwiPT09aC5jb25maWcuY2hhcnQudHlwZSYmKG89MSksXCJNIDAgXCIuY29uY2F0KGguZ2xvYmFscy5ncmlkSGVpZ2h0KX07KCFzfHxzLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fHMuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihzPWMoKSksKCFyfHxyLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fHIuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihyPWMoKSksaC5nbG9iYWxzLnNob3VsZEFuaW1hdGV8fChvPTEpLHQucGxvdChzKS5hbmltYXRlKDEsaC5nbG9iYWxzLmVhc2luZyxuKS5wbG90KHMpLmFuaW1hdGUobyxoLmdsb2JhbHMuZWFzaW5nLG4pLnBsb3QocikuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCl7eC5pc051bWJlcihpKT9pPT09aC5nbG9iYWxzLnNlcmllc1toLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoLTImJmguZ2xvYmFscy5zaG91bGRBbmltYXRlJiZsLmFuaW1hdGlvbkNvbXBsZXRlZCh0KTpcIm5vbmVcIiE9PWEmJmguZ2xvYmFscy5zaG91bGRBbmltYXRlJiYoIWguZ2xvYmFscy5jb21ib0NoYXJ0cyYmZT09PWguZ2xvYmFscy5zZXJpZXMubGVuZ3RoLTF8fGguZ2xvYmFscy5jb21ib0NoYXJ0cykmJmwuYW5pbWF0aW9uQ29tcGxldGVkKHQpLGwuc2hvd0RlbGF5ZWRFbGVtZW50cygpfSkpfX1dKSx0fSgpLHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImdldERlZmF1bHRGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudzt0LnVuZmlsdGVyKCEwKSwobmV3IHdpbmRvdy5TVkcuRmlsdGVyKS5zaXplKFwiMTIwJVwiLFwiMTgwJVwiLFwiLTUlXCIsXCItNDAlXCIpLFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXI/dGhpcy5hcHBseUZpbHRlcih0LGUsaS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudHlwZSxpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci52YWx1ZSk6aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiZ0aGlzLmRyb3BTaGFkb3codCxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LGUpfX0se2tleTpcImFkZE5vcm1hbEZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2kuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmIXQubm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSYmdGhpcy5kcm9wU2hhZG93KHQsaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdyxlKX19LHtrZXk6XCJhZGRMaWdodGVuRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1pLmludGVuc2l0eTt0LnVuZmlsdGVyKCEwKTtuZXcgd2luZG93LlNWRy5GaWx0ZXI7dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBpPXMuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7KGkuZW5hYmxlZD9hLmFkZFNoYWRvdyh0LGUsaSk6dCkuY29tcG9uZW50VHJhbnNmZXIoe3JnYjp7dHlwZTpcImxpbmVhclwiLHNsb3BlOjEuNSxpbnRlcmNlcHQ6cn19KX0pKSx0LmZpbHRlcmVyLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsdGVyVW5pdHNcIixcInVzZXJTcGFjZU9uVXNlXCIpLHRoaXMuX3NjYWxlRmlsdGVyU2l6ZSh0LmZpbHRlcmVyLm5vZGUpfX0se2tleTpcImFkZERhcmtlbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLHM9dGhpcy53LHI9aS5pbnRlbnNpdHk7dC51bmZpbHRlcighMCk7bmV3IHdpbmRvdy5TVkcuRmlsdGVyO3QuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgaT1zLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OyhpLmVuYWJsZWQ/YS5hZGRTaGFkb3codCxlLGkpOnQpLmNvbXBvbmVudFRyYW5zZmVyKHtyZ2I6e3R5cGU6XCJsaW5lYXJcIixzbG9wZTpyfX0pfSkpLHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSl9fSx7a2V5OlwiYXBwbHlGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOi41O3N3aXRjaChpKXtjYXNlXCJub25lXCI6dGhpcy5hZGROb3JtYWxGaWx0ZXIodCxlKTticmVhaztjYXNlXCJsaWdodGVuXCI6dGhpcy5hZGRMaWdodGVuRmlsdGVyKHQsZSx7aW50ZW5zaXR5OmF9KTticmVhaztjYXNlXCJkYXJrZW5cIjp0aGlzLmFkZERhcmtlbkZpbHRlcih0LGUse2ludGVuc2l0eTphfSl9fX0se2tleTpcImFkZFNoYWRvd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1pLmJsdXIscz1pLnRvcCxyPWkubGVmdCxvPWkuY29sb3Isbj1pLm9wYWNpdHksbD10LmZsb29kKEFycmF5LmlzQXJyYXkobyk/b1tlXTpvLG4pLmNvbXBvc2l0ZSh0LnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHIscykuZ2F1c3NpYW5CbHVyKGEpLm1lcmdlKHQuc291cmNlKTtyZXR1cm4gdC5ibGVuZCh0LnNvdXJjZSxsKX19LHtrZXk6XCJkcm9wU2hhZG93XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxhPWUudG9wLHM9ZS5sZWZ0LHI9ZS5ibHVyLG89ZS5jb2xvcixuPWUub3BhY2l0eSxsPWUubm9Vc2VyU3BhY2VPblVzZSxoPXRoaXMudztyZXR1cm4gdC51bmZpbHRlcighMCkseC5pc0lFKCkmJlwicmFkaWFsQmFyXCI9PT1oLmNvbmZpZy5jaGFydC50eXBlfHwobz1BcnJheS5pc0FycmF5KG8pP29baV06byx0LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGU9bnVsbDtlPXguaXNTYWZhcmkoKXx8eC5pc0ZpcmVmb3goKXx8eC5pc0lFKCk/dC5mbG9vZChvLG4pLmNvbXBvc2l0ZSh0LnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHMsYSkuZ2F1c3NpYW5CbHVyKHIpOnQuZmxvb2QobyxuKS5jb21wb3NpdGUodC5zb3VyY2VBbHBoYSxcImluXCIpLm9mZnNldChzLGEpLmdhdXNzaWFuQmx1cihyKS5tZXJnZSh0LnNvdXJjZSksdC5ibGVuZCh0LnNvdXJjZSxlKX0pKSxsfHx0LmZpbHRlcmVyLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsdGVyVW5pdHNcIixcInVzZXJTcGFjZU9uVXNlXCIpLHRoaXMuX3NjYWxlRmlsdGVyU2l6ZSh0LmZpbHRlcmVyLm5vZGUpKSx0fX0se2tleTpcInNldFNlbGVjdGlvbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnc7aWYodm9pZCAwIT09YS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tlXSYmYS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tlXS5pbmRleE9mKGkpPi0xKXt0Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIiwhMCk7dmFyIHM9YS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXI7XCJub25lXCIhPT1zJiZ0aGlzLmFwcGx5RmlsdGVyKHQsZSxzLnR5cGUscy52YWx1ZSl9fX0se2tleTpcIl9zY2FsZUZpbHRlclNpemVcIix2YWx1ZTpmdW5jdGlvbih0KXshZnVuY3Rpb24oZSl7Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmdC5zZXRBdHRyaWJ1dGUoaSxlW2ldKX0oe3dpZHRoOlwiMjAwJVwiLGhlaWdodDpcIjIwMCVcIix4OlwiLTUwJVwiLHk6XCItNTAlXCJ9KX19XSksdH0oKSxtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJyb3VuZFBhdGhDb3JuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQsZSxpKXt2YXIgcz1lLngtdC54LHI9ZS55LXQueSxvPU1hdGguc3FydChzKnMrcipyKTtyZXR1cm4gYSh0LGUsTWF0aC5taW4oMSxpL28pKX1mdW5jdGlvbiBhKHQsZSxpKXtyZXR1cm57eDp0LngrKGUueC10LngpKmkseTp0LnkrKGUueS10LnkpKml9fWZ1bmN0aW9uIHModCxlKXt0Lmxlbmd0aD4yJiYodFt0Lmxlbmd0aC0yXT1lLngsdFt0Lmxlbmd0aC0xXT1lLnkpfWZ1bmN0aW9uIHIodCl7cmV0dXJue3g6cGFyc2VGbG9hdCh0W3QubGVuZ3RoLTJdKSx5OnBhcnNlRmxvYXQodFt0Lmxlbmd0aC0xXSl9fXQuaW5kZXhPZihcIk5hTlwiKT4tMSYmKHQ9XCJcIik7dmFyIG89dC5zcGxpdCgvWyxcXHNdLykucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBpPWUubWF0Y2goXCIoW2EtekEtWl0pKC4rKVwiKTtyZXR1cm4gaT8odC5wdXNoKGlbMV0pLHQucHVzaChpWzJdKSk6dC5wdXNoKGUpLHR9KSxbXSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBwYXJzZUZsb2F0KGUpPT1lJiZ0Lmxlbmd0aD90W3QubGVuZ3RoLTFdLnB1c2goZSk6dC5wdXNoKFtlXSksdH0pLFtdKSxuPVtdO2lmKG8ubGVuZ3RoPjEpe3ZhciBsPXIob1swXSksaD1udWxsO1wiWlwiPT1vW28ubGVuZ3RoLTFdWzBdJiZvWzBdLmxlbmd0aD4yJiYoaD1bXCJMXCIsbC54LGwueV0sb1tvLmxlbmd0aC0xXT1oKSxuLnB1c2gob1swXSk7Zm9yKHZhciBjPTE7YzxvLmxlbmd0aDtjKyspe3ZhciBkPW5bbi5sZW5ndGgtMV0sZz1vW2NdLHU9Zz09aD9vWzFdOm9bYysxXTtpZih1JiZkJiZkLmxlbmd0aD4yJiZcIkxcIj09Z1swXSYmdS5sZW5ndGg+MiYmXCJMXCI9PXVbMF0pe3ZhciBwLGYseD1yKGQpLGI9cihnKSx2PXIodSk7cD1pKGIseCxlKSxmPWkoYix2LGUpLHMoZyxwKSxnLm9yaWdQb2ludD1iLG4ucHVzaChnKTt2YXIgbT1hKHAsYiwuNSkseT1hKGIsZiwuNSksdz1bXCJDXCIsbS54LG0ueSx5LngseS55LGYueCxmLnldO3cub3JpZ1BvaW50PWIsbi5wdXNoKHcpfWVsc2Ugbi5wdXNoKGcpfWlmKGgpe3ZhciBrPXIobltuLmxlbmd0aC0xXSk7bi5wdXNoKFtcIlpcIl0pLHMoblswXSxrKX19ZWxzZSBuPW87cmV0dXJuIG4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2Uuam9pbihcIiBcIikrXCIgXCJ9KSxcIlwiKX19LHtrZXk6XCJkcmF3TGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTpcIiNhOGE4YThcIixyPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTowLG89YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOm51bGwsbj1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XT9hcmd1bWVudHNbN106XCJidXR0XCI7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5saW5lKCkuYXR0cih7eDE6dCx5MTplLHgyOmkseTI6YSxzdHJva2U6cyxcInN0cm9rZS1kYXNoYXJyYXlcIjpyLFwic3Ryb2tlLXdpZHRoXCI6byxcInN0cm9rZS1saW5lY2FwXCI6bn0pfX0se2tleTpcImRyYXdSZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjAsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MCxzPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowLHI9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOlwiI2ZlZmVmZVwiLG89YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOjEsbj1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XT9hcmd1bWVudHNbN106bnVsbCxsPWFyZ3VtZW50cy5sZW5ndGg+OCYmdm9pZCAwIT09YXJndW1lbnRzWzhdP2FyZ3VtZW50c1s4XTpudWxsLGg9YXJndW1lbnRzLmxlbmd0aD45JiZ2b2lkIDAhPT1hcmd1bWVudHNbOV0/YXJndW1lbnRzWzldOjAsYz10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIucmVjdCgpO3JldHVybiBjLmF0dHIoe3g6dCx5OmUsd2lkdGg6aT4wP2k6MCxoZWlnaHQ6YT4wP2E6MCxyeDpzLHJ5OnMsb3BhY2l0eTpvLFwic3Ryb2tlLXdpZHRoXCI6bnVsbCE9PW4/bjowLHN0cm9rZTpudWxsIT09bD9sOlwibm9uZVwiLFwic3Ryb2tlLWRhc2hhcnJheVwiOmh9KSxjLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbFwiLHIpLGN9fSx7a2V5OlwiZHJhd1BvbHlnb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06XCIjZTFlMWUxXCIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MSxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpcIm5vbmVcIjtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnBvbHlnb24odCkuYXR0cih7ZmlsbDphLHN0cm9rZTplLFwic3Ryb2tlLXdpZHRoXCI6aX0pfX0se2tleTpcImRyYXdDaXJjbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDt0PDAmJih0PTApO3ZhciBpPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5jaXJjbGUoMip0KTtyZXR1cm4gbnVsbCE9PWUmJmkuYXR0cihlKSxpfX0se2tleTpcImRyYXdQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5kLGk9dm9pZCAwPT09ZT9cIlwiOmUsYT10LnN0cm9rZSxzPXZvaWQgMD09PWE/XCIjYThhOGE4XCI6YSxyPXQuc3Ryb2tlV2lkdGgsbz12b2lkIDA9PT1yPzE6cixuPXQuZmlsbCxsPXQuZmlsbE9wYWNpdHksaD12b2lkIDA9PT1sPzE6bCxjPXQuc3Ryb2tlT3BhY2l0eSxkPXZvaWQgMD09PWM/MTpjLGc9dC5jbGFzc2VzLHU9dC5zdHJva2VMaW5lY2FwLHA9dm9pZCAwPT09dT9udWxsOnUsZj10LnN0cm9rZURhc2hBcnJheSx4PXZvaWQgMD09PWY/MDpmLGI9dGhpcy53O3JldHVybiBudWxsPT09cCYmKHA9Yi5jb25maWcuc3Ryb2tlLmxpbmVDYXApLChpLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fGkuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihpPVwiTSAwIFwiLmNvbmNhdChiLmdsb2JhbHMuZ3JpZEhlaWdodCkpLGIuZ2xvYmFscy5kb20uUGFwZXIucGF0aChpKS5hdHRyKHtmaWxsOm4sXCJmaWxsLW9wYWNpdHlcIjpoLHN0cm9rZTpzLFwic3Ryb2tlLW9wYWNpdHlcIjpkLFwic3Ryb2tlLWxpbmVjYXBcIjpwLFwic3Ryb2tlLXdpZHRoXCI6byxcInN0cm9rZS1kYXNoYXJyYXlcIjp4LGNsYXNzOmd9KX19LHtrZXk6XCJncm91cFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIuZ3JvdXAoKTtyZXR1cm4gbnVsbCE9PXQmJmUuYXR0cih0KSxlfX0se2tleTpcIm1vdmVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPVtcIk1cIix0LGVdLmpvaW4oXCIgXCIpO3JldHVybiBpfX0se2tleTpcImxpbmVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGE9bnVsbDtyZXR1cm4gbnVsbD09PWk/YT1bXCIgTFwiLHQsZV0uam9pbihcIiBcIik6XCJIXCI9PT1pP2E9W1wiIEhcIix0XS5qb2luKFwiIFwiKTpcIlZcIj09PWkmJihhPVtcIiBWXCIsZV0uam9pbihcIiBcIikpLGF9fSx7a2V5OlwiY3VydmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG89W1wiQ1wiLHQsZSxpLGEscyxyXS5qb2luKFwiIFwiKTtyZXR1cm4gb319LHtrZXk6XCJxdWFkcmF0aWNDdXJ2ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybltcIlFcIix0LGUsaSxhXS5qb2luKFwiIFwiKX19LHtrZXk6XCJhcmNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj1cIkFcIjthcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XSYmYXJndW1lbnRzWzddJiYobj1cImFcIik7dmFyIGw9W24sdCxlLGksYSxzLHIsb10uam9pbihcIiBcIik7cmV0dXJuIGx9fSx7a2V5OlwicmVuZGVyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaSxhPXQuaixzPXQucmVhbEluZGV4LHI9dC5wYXRoRnJvbSxvPXQucGF0aFRvLG49dC5zdHJva2UsbD10LnN0cm9rZVdpZHRoLGg9dC5zdHJva2VMaW5lY2FwLGM9dC5maWxsLGQ9dC5hbmltYXRpb25EZWxheSxnPXQuaW5pdGlhbFNwZWVkLHU9dC5kYXRhQ2hhbmdlU3BlZWQscD10LmNsYXNzTmFtZSxmPXQuc2hvdWxkQ2xpcFRvR3JpZCx4PXZvaWQgMD09PWZ8fGYsbT10LmJpbmRFdmVudHNPblBhdGhzLHk9dm9pZCAwPT09bXx8bSx3PXQuZHJhd1NoYWRvdyxrPXZvaWQgMD09PXd8fHcsQT10aGlzLncsUz1uZXcgdih0aGlzLmN0eCksQz1uZXcgYih0aGlzLmN0eCksTD10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCxQPUwmJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsST0hIShMJiYhQS5nbG9iYWxzLnJlc2l6ZWR8fFAmJkEuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmQS5nbG9iYWxzLnNob3VsZEFuaW1hdGUpO0k/aT1yOihpPW8sQS5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwKTt2YXIgTT1BLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5LFQ9MDtUPUFycmF5LmlzQXJyYXkoTSk/TVtzXTpBLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5O3ZhciB6PXRoaXMuZHJhd1BhdGgoe2Q6aSxzdHJva2U6bixzdHJva2VXaWR0aDpsLGZpbGw6YyxmaWxsT3BhY2l0eToxLGNsYXNzZXM6cCxzdHJva2VMaW5lY2FwOmgsc3Ryb2tlRGFzaEFycmF5OlR9KTtpZih6LmF0dHIoXCJpbmRleFwiLHMpLHgmJnouYXR0cih7XCJjbGlwLXBhdGhcIjpcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KEEuZ2xvYmFscy5jdWlkLFwiKVwiKX0pLFwibm9uZVwiIT09QS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudHlwZSlTLmdldERlZmF1bHRGaWx0ZXIoeixzKTtlbHNlIGlmKEEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmayYmKCFBLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllc3x8QS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkT25TZXJpZXMmJi0xIT09QS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihzKSkpe3ZhciBYPUEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7Uy5kcm9wU2hhZG93KHosWCxzKX15JiYoei5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsdGhpcy5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMseikpLHoubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHRoaXMucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLHopKSx6Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLHRoaXMucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMseikpKSx6LmF0dHIoe3BhdGhUbzpvLHBhdGhGcm9tOnJ9KTt2YXIgRT17ZWw6eixqOmEscmVhbEluZGV4OnMscGF0aEZyb206cixwYXRoVG86byxmaWxsOmMsc3Ryb2tlV2lkdGg6bCxkZWxheTpkfTtyZXR1cm4hTHx8QS5nbG9iYWxzLnJlc2l6ZWR8fEEuZ2xvYmFscy5kYXRhQ2hhbmdlZD8hQS5nbG9iYWxzLnJlc2l6ZWQmJkEuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8Qy5zaG93RGVsYXllZEVsZW1lbnRzKCk6Qy5hbmltYXRlUGF0aHNHcmFkdWFsbHkoZShlKHt9LEUpLHt9LHtzcGVlZDpnfSkpLEEuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmUCYmSSYmQy5hbmltYXRlUGF0aHNHcmFkdWFsbHkoZShlKHt9LEUpLHt9LHtzcGVlZDp1fSkpLHp9fSx7a2V5OlwiZHJhd1BhdHRlcm5cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOlwiI2E4YThhOFwiLHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjA7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5wYXR0ZXJuKGUsaSwoZnVuY3Rpb24ocil7XCJob3Jpem9udGFsTGluZXNcIj09PXQ/ci5saW5lKDAsMCxpLDApLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzKzF9KTpcInZlcnRpY2FsTGluZXNcIj09PXQ/ci5saW5lKDAsMCwwLGUpLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzKzF9KTpcInNsYW50ZWRMaW5lc1wiPT09dD9yLmxpbmUoMCwwLGUsaSkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnN9KTpcInNxdWFyZXNcIj09PXQ/ci5yZWN0KGUsaSkuZmlsbChcIm5vbmVcIikuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnN9KTpcImNpcmNsZXNcIj09PXQmJnIuY2lyY2xlKGUpLmZpbGwoXCJub25lXCIpLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzfSl9KSl9fSx7a2V5OlwiZHJhd0dyYWRpZW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt2YXIgcixvPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTpudWxsLG49YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOm51bGwsbD1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XT9hcmd1bWVudHNbN106bnVsbCxoPWFyZ3VtZW50cy5sZW5ndGg+OCYmdm9pZCAwIT09YXJndW1lbnRzWzhdP2FyZ3VtZW50c1s4XTowLGM9dGhpcy53O2UubGVuZ3RoPDkmJjA9PT1lLmluZGV4T2YoXCIjXCIpJiYoZT14LmhleFRvUmdiYShlLGEpKSxpLmxlbmd0aDw5JiYwPT09aS5pbmRleE9mKFwiI1wiKSYmKGk9eC5oZXhUb1JnYmEoaSxzKSk7dmFyIGQ9MCxnPTEsdT0xLHA9bnVsbDtudWxsIT09biYmKGQ9dm9pZCAwIT09blswXT9uWzBdLzEwMDowLGc9dm9pZCAwIT09blsxXT9uWzFdLzEwMDoxLHU9dm9pZCAwIT09blsyXT9uWzJdLzEwMDoxLHA9dm9pZCAwIT09blszXT9uWzNdLzEwMDpudWxsKTt2YXIgZj0hKFwiZG9udXRcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUmJlwicGllXCIhPT1jLmNvbmZpZy5jaGFydC50eXBlJiZcInBvbGFyQXJlYVwiIT09Yy5jb25maWcuY2hhcnQudHlwZSYmXCJidWJibGVcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUpO2lmKHI9bnVsbD09PWx8fDA9PT1sLmxlbmd0aD9jLmdsb2JhbHMuZG9tLlBhcGVyLmdyYWRpZW50KGY/XCJyYWRpYWxcIjpcImxpbmVhclwiLChmdW5jdGlvbih0KXt0LmF0KGQsZSxhKSx0LmF0KGcsaSxzKSx0LmF0KHUsaSxzKSxudWxsIT09cCYmdC5hdChwLGUsYSl9KSk6Yy5nbG9iYWxzLmRvbS5QYXBlci5ncmFkaWVudChmP1wicmFkaWFsXCI6XCJsaW5lYXJcIiwoZnVuY3Rpb24odCl7KEFycmF5LmlzQXJyYXkobFtoXSk/bFtoXTpsKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmF0KGUub2Zmc2V0LzEwMCxlLmNvbG9yLGUub3BhY2l0eSl9KSl9KSksZil7dmFyIGI9Yy5nbG9iYWxzLmdyaWRXaWR0aC8yLHY9Yy5nbG9iYWxzLmdyaWRIZWlnaHQvMjtcImJ1YmJsZVwiIT09Yy5jb25maWcuY2hhcnQudHlwZT9yLmF0dHIoe2dyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGN4OmIsY3k6dixyOm99KTpyLmF0dHIoe2N4Oi41LGN5Oi41LHI6LjgsZng6LjIsZnk6LjJ9KX1lbHNlXCJ2ZXJ0aWNhbFwiPT09dD9yLmZyb20oMCwwKS50bygwLDEpOlwiZGlhZ29uYWxcIj09PXQ/ci5mcm9tKDAsMCkudG8oMSwxKTpcImhvcml6b250YWxcIj09PXQ/ci5mcm9tKDAsMSkudG8oMSwxKTpcImRpYWdvbmFsMlwiPT09dCYmci5mcm9tKDEsMCkudG8oMCwxKTtyZXR1cm4gcn19LHtrZXk6XCJnZXRUZXh0QmFzZWRPbk1heFdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50ZXh0LGk9dC5tYXhXaWR0aCxhPXQuZm9udFNpemUscz10LmZvbnRGYW1pbHkscj10aGlzLmdldFRleHRSZWN0cyhlLGEscyksbz1yLndpZHRoL2UubGVuZ3RoLG49TWF0aC5mbG9vcihpL28pO3JldHVybiBpPHIud2lkdGg/ZS5zbGljZSgwLG4tMykrXCIuLi5cIjplfX0se2tleTpcImRyYXdUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcyxhPXQueCxzPXQueSxyPXQudGV4dCxvPXQudGV4dEFuY2hvcixuPXQuZm9udFNpemUsbD10LmZvbnRGYW1pbHksaD10LmZvbnRXZWlnaHQsYz10LmZvcmVDb2xvcixkPXQub3BhY2l0eSxnPXQubWF4V2lkdGgsdT10LmNzc0NsYXNzLHA9dm9pZCAwPT09dT9cIlwiOnUsZj10LmlzUGxhaW5UZXh0LHg9dm9pZCAwPT09Znx8ZixiPXRoaXMudzt2b2lkIDA9PT1yJiYocj1cIlwiKTt2YXIgdj1yO298fChvPVwic3RhcnRcIiksYyYmYy5sZW5ndGh8fChjPWIuY29uZmlnLmNoYXJ0LmZvcmVDb2xvciksbD1sfHxiLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGg9aHx8XCJyZWd1bGFyXCI7dmFyIG0seT17bWF4V2lkdGg6Zyxmb250U2l6ZTpuPW58fFwiMTFweFwiLGZvbnRGYW1pbHk6bH07cmV0dXJuIEFycmF5LmlzQXJyYXkocik/bT1iLmdsb2JhbHMuZG9tLlBhcGVyLnRleHQoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgYT0wO2E8ci5sZW5ndGg7YSsrKXY9clthXSxnJiYodj1pLmdldFRleHRCYXNlZE9uTWF4V2lkdGgoZSh7dGV4dDpyW2FdfSx5KSkpLDA9PT1hP3QudHNwYW4odik6dC50c3Bhbih2KS5uZXdMaW5lKCl9KSk6KGcmJih2PXRoaXMuZ2V0VGV4dEJhc2VkT25NYXhXaWR0aChlKHt0ZXh0OnJ9LHkpKSksbT14P2IuZ2xvYmFscy5kb20uUGFwZXIucGxhaW4ocik6Yi5nbG9iYWxzLmRvbS5QYXBlci50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gdC50c3Bhbih2KX0pKSksbS5hdHRyKHt4OmEseTpzLFwidGV4dC1hbmNob3JcIjpvLFwiZG9taW5hbnQtYmFzZWxpbmVcIjpcImF1dG9cIixcImZvbnQtc2l6ZVwiOm4sXCJmb250LWZhbWlseVwiOmwsXCJmb250LXdlaWdodFwiOmgsZmlsbDpjLGNsYXNzOlwiYXBleGNoYXJ0cy10ZXh0IFwiK3B9KSxtLm5vZGUuc3R5bGUuZm9udEZhbWlseT1sLG0ubm9kZS5zdHlsZS5vcGFjaXR5PWQsbX19LHtrZXk6XCJkcmF3TWFya2VyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3Q9dHx8MDt2YXIgYT1pLnBTaXplfHwwLHM9bnVsbDtpZihcInNxdWFyZVwiPT09aS5zaGFwZXx8XCJyZWN0XCI9PT1pLnNoYXBlKXt2YXIgcj12b2lkIDA9PT1pLnBSYWRpdXM/YS8yOmkucFJhZGl1cztudWxsIT09ZSYmYXx8KGE9MCxyPTApO3ZhciBvPTEuMiphK3Isbj10aGlzLmRyYXdSZWN0KG8sbyxvLG8scik7bi5hdHRyKHt4OnQtby8yLHk6ZS1vLzIsY3g6dCxjeTplLGNsYXNzOmkuY2xhc3M/aS5jbGFzczpcIlwiLGZpbGw6aS5wb2ludEZpbGxDb2xvcixcImZpbGwtb3BhY2l0eVwiOmkucG9pbnRGaWxsT3BhY2l0eT9pLnBvaW50RmlsbE9wYWNpdHk6MSxzdHJva2U6aS5wb2ludFN0cm9rZUNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6aS5wb2ludFN0cm9rZVdpZHRoP2kucG9pbnRTdHJva2VXaWR0aDowLFwic3Ryb2tlLW9wYWNpdHlcIjppLnBvaW50U3Ryb2tlT3BhY2l0eT9pLnBvaW50U3Ryb2tlT3BhY2l0eToxfSkscz1ufWVsc2VcImNpcmNsZVwiIT09aS5zaGFwZSYmaS5zaGFwZXx8KHguaXNOdW1iZXIoZSl8fChhPTAsZT0wKSxzPXRoaXMuZHJhd0NpcmNsZShhLHtjeDp0LGN5OmUsY2xhc3M6aS5jbGFzcz9pLmNsYXNzOlwiXCIsc3Ryb2tlOmkucG9pbnRTdHJva2VDb2xvcixmaWxsOmkucG9pbnRGaWxsQ29sb3IsXCJmaWxsLW9wYWNpdHlcIjppLnBvaW50RmlsbE9wYWNpdHk/aS5wb2ludEZpbGxPcGFjaXR5OjEsXCJzdHJva2Utd2lkdGhcIjppLnBvaW50U3Ryb2tlV2lkdGg/aS5wb2ludFN0cm9rZVdpZHRoOjAsXCJzdHJva2Utb3BhY2l0eVwiOmkucG9pbnRTdHJva2VPcGFjaXR5P2kucG9pbnRTdHJva2VPcGFjaXR5OjF9KSk7cmV0dXJuIHN9fSx7a2V5OlwicGF0aE1vdXNlRW50ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyB2KHRoaXMuY3R4KSxzPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCkscj1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlRW50ZXImJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUVudGVyKGUsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiZGF0YVBvaW50TW91c2VFbnRlclwiLFtlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pLChcIm5vbmVcIj09PWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyLnR5cGV8fFwidHJ1ZVwiIT09dC5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpKSYmXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLnR5cGUmJiFpLmdsb2JhbHMuaXNUb3VjaERldmljZSl7dmFyIG89aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKHQscyxvLnR5cGUsby52YWx1ZSl9fX0se2tleTpcInBhdGhNb3VzZUxlYXZlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgdih0aGlzLmN0eCkscz1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApLHI9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImpcIiksMTApO1wiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUxlYXZlJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VMZWF2ZShlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfSksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImRhdGFQb2ludE1vdXNlTGVhdmVcIixbZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX1dKSxcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyLnR5cGUmJlwidHJ1ZVwiPT09dC5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpfHxcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZSYmYS5nZXREZWZhdWx0RmlsdGVyKHQscyl9fSx7a2V5OlwicGF0aE1vdXNlRG93blwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IHYodGhpcy5jdHgpLHM9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKSxyPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKSxvPVwiZmFsc2VcIjtpZihcInRydWVcIj09PXQubm9kZS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKSl7aWYodC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJmYWxzZVwiKSxpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLmluZGV4T2Yocik+LTEpe3ZhciBuPWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10uaW5kZXhPZihyKTtpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLnNwbGljZShuLDEpfX1lbHNle2lmKCFpLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmFsbG93TXVsdGlwbGVEYXRhUG9pbnRzU2VsZWN0aW9uJiZpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aD4wKXtpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzPVtdO3ZhciBsPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtc2VyaWVzIHBhdGhcIikubWVtYmVycyxoPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtc2VyaWVzIGNpcmNsZSwgLmFwZXhjaGFydHMtc2VyaWVzIHJlY3RcIikubWVtYmVycyxjPWZ1bmN0aW9uKHQpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodCwoZnVuY3Rpb24odCl7dC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJmYWxzZVwiKSxhLmdldERlZmF1bHRGaWx0ZXIodCxzKX0pKX07YyhsKSxjKGgpfXQubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLFwidHJ1ZVwiKSxvPVwidHJ1ZVwiLHZvaWQgMD09PWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10mJihpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdPVtdKSxpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLnB1c2gocil9aWYoXCJ0cnVlXCI9PT1vKXt2YXIgZD1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlcjtpZihcIm5vbmVcIiE9PWQpYS5hcHBseUZpbHRlcih0LHMsZC50eXBlLGQudmFsdWUpO2Vsc2UgaWYoXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyJiYhaS5nbG9iYWxzLmlzVG91Y2hEZXZpY2Upe3ZhciBnPWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXI7YS5hcHBseUZpbHRlcih0LHMsZy50eXBlLGcudmFsdWUpfX1lbHNlIGlmKFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSlpZihcIm5vbmVcIj09PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZXx8aS5nbG9iYWxzLmlzVG91Y2hEZXZpY2UpYS5nZXREZWZhdWx0RmlsdGVyKHQscyk7ZWxzZXtnPWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXI7YS5hcHBseUZpbHRlcih0LHMsZy50eXBlLGcudmFsdWUpfVwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRTZWxlY3Rpb24mJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRTZWxlY3Rpb24oZSx0aGlzLmN0eCx7c2VsZWN0ZWREYXRhUG9pbnRzOmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX0pLGUmJnRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJkYXRhUG9pbnRTZWxlY3Rpb25cIixbZSx0aGlzLmN0eCx7c2VsZWN0ZWREYXRhUG9pbnRzOmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX1dKX19LHtrZXk6XCJyb3RhdGVBcm91bmRDZW50ZXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT17fTtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXRCQm94JiYoZT10LmdldEJCb3goKSkse3g6ZS54K2Uud2lkdGgvMix5OmUueStlLmhlaWdodC8yfX19LHtrZXk6XCJnZXRUZXh0UmVjdHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz0hKGFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdKXx8YXJndW1lbnRzWzRdLHI9dGhpcy53LG89dGhpcy5kcmF3VGV4dCh7eDotMjAwLHk6LTIwMCx0ZXh0OnQsdGV4dEFuY2hvcjpcInN0YXJ0XCIsZm9udFNpemU6ZSxmb250RmFtaWx5OmksZm9yZUNvbG9yOlwiI2ZmZlwiLG9wYWNpdHk6MH0pO2EmJm8uYXR0cihcInRyYW5zZm9ybVwiLGEpLHIuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG8pO3ZhciBuPW8uYmJveCgpO3JldHVybiBzfHwobj1vLm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLG8ucmVtb3ZlKCkse3dpZHRoOm4ud2lkdGgsaGVpZ2h0Om4uaGVpZ2h0fX19LHtrZXk6XCJwbGFjZVRleHRXaXRoRWxsaXBzaXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXRDb21wdXRlZFRleHRMZW5ndGgmJih0LnRleHRDb250ZW50PWUsZS5sZW5ndGg+MCYmdC5nZXRDb21wdXRlZFRleHRMZW5ndGgoKT49aS8xLjEpKXtmb3IodmFyIGE9ZS5sZW5ndGgtMzthPjA7YS09MylpZih0LmdldFN1YlN0cmluZ0xlbmd0aCgwLGEpPD1pLzEuMSlyZXR1cm4gdm9pZCh0LnRleHRDb250ZW50PWUuc3Vic3RyaW5nKDAsYSkrXCIuLi5cIik7dC50ZXh0Q29udGVudD1cIi5cIn19fV0sW3trZXk6XCJzZXRBdHRyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmdC5zZXRBdHRyaWJ1dGUoaSxlW2ldKX19XSksdH0oKSx5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJnZXRTdGFja2VkU2VyaWVzVG90YWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W10sZT10aGlzLncsaT1bXTtpZigwPT09ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpcmV0dXJuIGk7Zm9yKHZhciBhPTA7YTxlLmdsb2JhbHMuc2VyaWVzW2UuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7YSsrKXtmb3IodmFyIHM9MCxyPTA7cjxlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtyKyspdm9pZCAwIT09ZS5nbG9iYWxzLnNlcmllc1tyXVthXSYmLTE9PT10LmluZGV4T2YocikmJihzKz1lLmdsb2JhbHMuc2VyaWVzW3JdW2FdKTtpLnB1c2gocyl9cmV0dXJuIGl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxCeUluZGV4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gbnVsbD09PXQ/dGhpcy53LmNvbmZpZy5zZXJpZXMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKTp0aGlzLncuZ2xvYmFscy5zZXJpZXNbdF0ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKX19LHtrZXk6XCJpc1Nlcmllc051bGxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiAwPT09KG51bGw9PT10P3RoaXMudy5jb25maWcuc2VyaWVzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10fSkpOnRoaXMudy5jb25maWcuc2VyaWVzW3RdLmRhdGEuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSkpLmxlbmd0aH19LHtrZXk6XCJzZXJpZXNIYXZlU2FtZVZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLncuZ2xvYmFscy5zZXJpZXNbdF0uZXZlcnkoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD09PWlbMF19KSl9fSx7a2V5OlwiZ2V0Q2F0ZWdvcnlMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LnNsaWNlKCk7cmV0dXJuIGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGk9dC5tYXAoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIodC1lLmdsb2JhbHMubWluWCsxKX0pKSksaX19LHtrZXk6XCJnZXRMYXJnZXN0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXg9dC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKS5pbmRleE9mKE1hdGgubWF4LmFwcGx5KE1hdGgsdC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKSkpfX0se2tleTpcImdldExhcmdlc3RNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wO3JldHVybiB0Lmdsb2JhbHMubWFya2Vycy5zaXplLmZvckVhY2goKGZ1bmN0aW9uKHQpe2U9TWF0aC5tYXgoZSx0KX0pKSx0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlJiZ0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmxlbmd0aCYmdC5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5mb3JFYWNoKChmdW5jdGlvbih0KXtlPU1hdGgubWF4KGUsdC5zaXplKX0pKSxlPjAmJihlKz10LmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQrMSksdC5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemU9ZSxlfX0se2tleTpcImdldFNlcmllc1RvdGFsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5zZXJpZXNUb3RhbHM9dC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9MDtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKWkrPXRbYV07ZWxzZSBpKz10O3JldHVybiBpfSkpfX0se2tleTpcImdldFNlcmllc1RvdGFsc1hSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybiBpLmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24oYSxzKXtmb3IodmFyIHI9MCxvPTA7bzxhLmxlbmd0aDtvKyspaS5nbG9iYWxzLnNlcmllc1hbc11bb10+dCYmaS5nbG9iYWxzLnNlcmllc1hbc11bb108ZSYmKHIrPWFbb10pO3JldHVybiByfSkpfX0se2tleTpcImdldFBlcmNlbnRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMuc2VyaWVzUGVyY2VudD10Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSxpKXt2YXIgYT1bXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgcj10Lmdsb2JhbHMuc3RhY2tlZFNlcmllc1RvdGFsc1tzXSxvPTA7ciYmKG89MTAwKmVbc10vciksYS5wdXNoKG8pfWVsc2V7dmFyIG49MTAwKmUvdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApO2EucHVzaChuKX1yZXR1cm4gYX0pKX19LHtrZXk6XCJnZXRDYWxjdWxhdGVkUmF0aW9zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksYSxzPXRoaXMudy5nbG9iYWxzLHI9W10sbz0wLG49W10sbD0uMSxoPTA7aWYocy55UmFuZ2U9W10scy5pc011bHRpcGxlWUF4aXMpZm9yKHZhciBjPTA7YzxzLm1pbllBcnIubGVuZ3RoO2MrKylzLnlSYW5nZS5wdXNoKE1hdGguYWJzKHMubWluWUFycltjXS1zLm1heFlBcnJbY10pKSxuLnB1c2goMCk7ZWxzZSBzLnlSYW5nZS5wdXNoKE1hdGguYWJzKHMubWluWS1zLm1heFkpKTtzLnhSYW5nZT1NYXRoLmFicyhzLm1heFgtcy5taW5YKSxzLnpSYW5nZT1NYXRoLmFicyhzLm1heFotcy5taW5aKTtmb3IodmFyIGQ9MDtkPHMueVJhbmdlLmxlbmd0aDtkKyspci5wdXNoKHMueVJhbmdlW2RdL3MuZ3JpZEhlaWdodCk7aWYoZT1zLnhSYW5nZS9zLmdyaWRXaWR0aCxpPU1hdGguYWJzKHMuaW5pdGlhbE1heFgtcy5pbml0aWFsTWluWCkvcy5ncmlkV2lkdGgsdD1zLnlSYW5nZS9zLmdyaWRXaWR0aCxhPXMueFJhbmdlL3MuZ3JpZEhlaWdodCwobz1zLnpSYW5nZS9zLmdyaWRIZWlnaHQqMTYpfHwobz0xKSxzLm1pblkhPT1OdW1iZXIuTUlOX1ZBTFVFJiYwIT09TWF0aC5hYnMocy5taW5ZKSYmKHMuaGFzTmVncz0hMCkscy5pc011bHRpcGxlWUF4aXMpe249W107Zm9yKHZhciBnPTA7ZzxyLmxlbmd0aDtnKyspbi5wdXNoKC1zLm1pbllBcnJbZ10vcltnXSl9ZWxzZSBuLnB1c2goLXMubWluWS9yWzBdKSxzLm1pblkhPT1OdW1iZXIuTUlOX1ZBTFVFJiYwIT09TWF0aC5hYnMocy5taW5ZKSYmKGw9LXMubWluWS90LGg9cy5taW5YL2UpO3JldHVybnt5UmF0aW86cixpbnZlcnRlZFlSYXRpbzp0LHpSYXRpbzpvLHhSYXRpbzplLGluaXRpYWxYUmF0aW86aSxpbnZlcnRlZFhSYXRpbzphLGJhc2VMaW5lSW52ZXJ0ZWRZOmwsYmFzZUxpbmVZOm4sYmFzZUxpbmVYOmh9fX0se2tleTpcImdldExvZ1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLnc7cmV0dXJuIGkuZ2xvYmFscy5zZXJpZXNMb2c9dC5tYXAoKGZ1bmN0aW9uKHQsYSl7cmV0dXJuIGkuY29uZmlnLnlheGlzW2FdJiZpLmNvbmZpZy55YXhpc1thXS5sb2dhcml0aG1pYz90Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10P251bGw6ZS5nZXRMb2dWYWwoaS5jb25maWcueWF4aXNbYV0ubG9nQmFzZSx0LGEpfSkpOnR9KSksaS5nbG9iYWxzLmludmFsaWRMb2dTY2FsZT90OmkuZ2xvYmFscy5zZXJpZXNMb2d9fSx7a2V5OlwiZ2V0QmFzZUxvZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubG9nKGUpL01hdGgubG9nKHQpfX0se2tleTpcImdldExvZ1ZhbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZigwPT09ZSlyZXR1cm4gMDt2YXIgYT10aGlzLncscz0wPT09YS5nbG9iYWxzLm1pbllBcnJbaV0/LTE6dGhpcy5nZXRCYXNlTG9nKHQsYS5nbG9iYWxzLm1pbllBcnJbaV0pLHI9KDA9PT1hLmdsb2JhbHMubWF4WUFycltpXT8wOnRoaXMuZ2V0QmFzZUxvZyh0LGEuZ2xvYmFscy5tYXhZQXJyW2ldKSktcztyZXR1cm4gZTwxP2UvcjoodGhpcy5nZXRCYXNlTG9nKHQsZSktcykvcn19LHtrZXk6XCJnZXRMb2dZUmF0aW9zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPXRoaXMudy5nbG9iYWxzO3JldHVybiBhLnlMb2dSYXRpbz10LnNsaWNlKCksYS5sb2dZUmFuZ2U9YS55UmFuZ2UubWFwKChmdW5jdGlvbih0LHMpe2lmKGkuY29uZmlnLnlheGlzW3NdJiZlLncuY29uZmlnLnlheGlzW3NdLmxvZ2FyaXRobWljKXt2YXIgcixvPS1OdW1iZXIuTUFYX1ZBTFVFLG49TnVtYmVyLk1JTl9WQUxVRTtyZXR1cm4gYS5zZXJpZXNMb2cuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kuY29uZmlnLnlheGlzW2VdJiZpLmNvbmZpZy55YXhpc1tlXS5sb2dhcml0aG1pYyYmKG89TWF0aC5tYXgodCxvKSxuPU1hdGgubWluKHQsbikpfSkpfSkpLHI9TWF0aC5wb3coYS55UmFuZ2Vbc10sTWF0aC5hYnMobi1vKS9hLnlSYW5nZVtzXSksYS55TG9nUmF0aW9bc109ci9hLmdyaWRIZWlnaHQscn19KSksYS5pbnZhbGlkTG9nU2NhbGU/dC5zbGljZSgpOmEueUxvZ1JhdGlvfX1dLFt7a2V5OlwiY2hlY2tDb21ib1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSExLGk9MCxhPTA7cmV0dXJuIHQubGVuZ3RoJiZ2b2lkIDAhPT10WzBdLnR5cGUmJnQuZm9yRWFjaCgoZnVuY3Rpb24odCl7XCJiYXJcIiE9PXQudHlwZSYmXCJjb2x1bW5cIiE9PXQudHlwZSYmXCJjYW5kbGVzdGlja1wiIT09dC50eXBlJiZcImJveFBsb3RcIiE9PXQudHlwZXx8aSsrLHZvaWQgMCE9PXQudHlwZSYmYSsrfSkpLGE+MCYmKGU9ITApLHtjb21ib0JhckNvdW50OmksY29tYm9DaGFydHM6ZX19fSx7a2V5OlwiZXh0ZW5kQXJyYXlQcm9wc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS55YXhpcyYmKGU9dC5leHRlbmRZQXhpcyhlLGkpKSxlLmFubm90YXRpb25zJiYoZS5hbm5vdGF0aW9ucy55YXhpcyYmKGU9dC5leHRlbmRZQXhpc0Fubm90YXRpb25zKGUpKSxlLmFubm90YXRpb25zLnhheGlzJiYoZT10LmV4dGVuZFhBeGlzQW5ub3RhdGlvbnMoZSkpLGUuYW5ub3RhdGlvbnMucG9pbnRzJiYoZT10LmV4dGVuZFBvaW50QW5ub3RhdGlvbnMoZSkpKSxlfX1dKSx0fSgpLHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lfXJldHVybiByKHQsW3trZXk6XCJzZXRPcmllbnRhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxpPXRoaXMudztpZihcInZlcnRpY2FsXCI9PT10LmxhYmVsLm9yaWVudGF0aW9uKXt2YXIgYT1udWxsIT09ZT9lOjAscz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiLmNvbmNhdChhLFwiJ11cIikpO2lmKG51bGwhPT1zKXt2YXIgcj1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Muc2V0QXR0cmlidXRlKFwieFwiLHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ4XCIpKS1yLmhlaWdodCs0KSxcInRvcFwiPT09dC5sYWJlbC5wb3NpdGlvbj9zLnNldEF0dHJpYnV0ZShcInlcIixwYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieVwiKSkrci53aWR0aCk6cy5zZXRBdHRyaWJ1dGUoXCJ5XCIscGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInlcIikpLXIud2lkdGgpO3ZhciBvPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5yb3RhdGVBcm91bmRDZW50ZXIocyksbj1vLngsbD1vLnk7cy5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZSgtOTAgXCIuY29uY2F0KG4sXCIgXCIpLmNvbmNhdChsLFwiKVwiKSl9fX19LHtrZXk6XCJhZGRCYWNrZ3JvdW5kVG9Bbm5vXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoIXR8fHZvaWQgMD09PWUubGFiZWwudGV4dHx8dm9pZCAwIT09ZS5sYWJlbC50ZXh0JiYhU3RyaW5nKGUubGFiZWwudGV4dCkudHJpbSgpKXJldHVybiBudWxsO3ZhciBhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1ncmlkXCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPWUubGFiZWwuc3R5bGUucGFkZGluZy5sZWZ0LG89ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnJpZ2h0LG49ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnRvcCxsPWUubGFiZWwuc3R5bGUucGFkZGluZy5ib3R0b207XCJ2ZXJ0aWNhbFwiPT09ZS5sYWJlbC5vcmllbnRhdGlvbiYmKG49ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmxlZnQsbD1lLmxhYmVsLnN0eWxlLnBhZGRpbmcucmlnaHQscj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcudG9wLG89ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmJvdHRvbSk7dmFyIGg9cy5sZWZ0LWEubGVmdC1yLGM9cy50b3AtYS50b3AtbixkPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdChoLWkuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcyxjLHMud2lkdGgrcitvLHMuaGVpZ2h0K24rbCxlLmxhYmVsLmJvcmRlclJhZGl1cyxlLmxhYmVsLnN0eWxlLmJhY2tncm91bmQsMSxlLmxhYmVsLmJvcmRlcldpZHRoLGUubGFiZWwuYm9yZGVyQ29sb3IsMCk7cmV0dXJuIGUuaWQmJmQubm9kZS5jbGFzc0xpc3QuYWRkKGUuaWQpLGR9fSx7a2V5OlwiYW5ub3RhdGlvbnNCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZnVuY3Rpb24oaSxhLHMpe3ZhciByPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQocyxcIi1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy1cIikuY29uY2F0KHMsXCItYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiKS5jb25jYXQoYSxcIiddXCIpKTtpZihyKXt2YXIgbz1yLnBhcmVudE5vZGUsbj10LmFkZEJhY2tncm91bmRUb0Fubm8ocixpKTtuJiYoby5pbnNlcnRCZWZvcmUobi5ub2RlLHIpLGkubGFiZWwubW91c2VFbnRlciYmbi5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsaS5sYWJlbC5tb3VzZUVudGVyLmJpbmQodCxpKSksaS5sYWJlbC5tb3VzZUxlYXZlJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixpLmxhYmVsLm1vdXNlTGVhdmUuYmluZCh0LGkpKSxpLmxhYmVsLmNsaWNrJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsaS5sYWJlbC5jbGljay5iaW5kKHQsaSkpKX19O2UuY29uZmlnLmFubm90YXRpb25zLnhheGlzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSxcInhheGlzXCIpfSkpLGUuY29uZmlnLmFubm90YXRpb25zLnlheGlzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSxcInlheGlzXCIpfSkpLGUuY29uZmlnLmFubm90YXRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKHQsZSl7aSh0LGUsXCJwb2ludFwiKX0pKX19LHtrZXk6XCJnZXRZMVkyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaSxhPVwieTFcIj09PXQ/ZS55OmUueTIscz10aGlzLnc7aWYodGhpcy5hbm5vQ3R4LmludmVydEF4aXMpe3ZhciByPXMuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZihhKTtzLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihyPXMuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5pbmRleE9mKGEpKTt2YXIgbz1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXMtdGV4dHMtZyB0ZXh0Om50aC1jaGlsZChcIisocisxKStcIilcIik7byYmKGk9cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcInlcIikpKX1lbHNle3ZhciBuO2lmKHMuY29uZmlnLnlheGlzW2UueUF4aXNJbmRleF0ubG9nYXJpdGhtaWMpbj0oYT1uZXcgeSh0aGlzLmFubm9DdHguY3R4KS5nZXRMb2dWYWwoYSxlLnlBeGlzSW5kZXgpKS9zLmdsb2JhbHMueUxvZ1JhdGlvW2UueUF4aXNJbmRleF07ZWxzZSBuPShhLXMuZ2xvYmFscy5taW5ZQXJyW2UueUF4aXNJbmRleF0pLyhzLmdsb2JhbHMueVJhbmdlW2UueUF4aXNJbmRleF0vcy5nbG9iYWxzLmdyaWRIZWlnaHQpO2k9cy5nbG9iYWxzLmdyaWRIZWlnaHQtbiwhZS5tYXJrZXJ8fHZvaWQgMCE9PWUueSYmbnVsbCE9PWUueXx8KGk9MCkscy5jb25maWcueWF4aXNbZS55QXhpc0luZGV4XSYmcy5jb25maWcueWF4aXNbZS55QXhpc0luZGV4XS5yZXZlcnNlZCYmKGk9bil9cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGEmJmEuaW5kZXhPZihcInB4XCIpPi0xJiYoaT1wYXJzZUZsb2F0KGEpKSxpfX0se2tleTpcImdldFgxWDJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzP2kuZ2xvYmFscy5taW5ZOmkuZ2xvYmFscy5taW5YLHM9dGhpcy5hbm5vQ3R4LmludmVydEF4aXM/aS5nbG9iYWxzLm1heFk6aS5nbG9iYWxzLm1heFgscj10aGlzLmFubm9DdHguaW52ZXJ0QXhpcz9pLmdsb2JhbHMueVJhbmdlWzBdOmkuZ2xvYmFscy54UmFuZ2Usbz0oZS54LWEpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpO3RoaXMuYW5ub0N0eC5pbnZlcnNlZFJldmVyc2VkQXhpcyYmKG89KHMtZS54KS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKSksXCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8dGhpcy5hbm5vQ3R4LmludmVydEF4aXN8fGkuZ2xvYmFscy5kYXRhRm9ybWF0WE51bWVyaWN8fChvPXRoaXMuZ2V0U3RyaW5nWChlLngpKTt2YXIgbj0oZS54Mi1hKS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKTtyZXR1cm4gdGhpcy5hbm5vQ3R4LmludmVyc2VkUmV2ZXJzZWRBeGlzJiYobj0ocy1lLngyKS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKSksXCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8dGhpcy5hbm5vQ3R4LmludmVydEF4aXN8fGkuZ2xvYmFscy5kYXRhRm9ybWF0WE51bWVyaWN8fChuPXRoaXMuZ2V0U3RyaW5nWChlLngyKSksdm9pZCAwIT09ZS54JiZudWxsIT09ZS54fHwhZS5tYXJrZXJ8fChvPWkuZ2xvYmFscy5ncmlkV2lkdGgpLFwieDFcIj09PXQmJlwic3RyaW5nXCI9PXR5cGVvZiBlLngmJmUueC5pbmRleE9mKFwicHhcIik+LTEmJihvPXBhcnNlRmxvYXQoZS54KSksXCJ4MlwiPT09dCYmXCJzdHJpbmdcIj09dHlwZW9mIGUueDImJmUueDIuaW5kZXhPZihcInB4XCIpPi0xJiYobj1wYXJzZUZsb2F0KGUueDIpKSxcIngxXCI9PT10P286bn19LHtrZXk6XCJnZXRTdHJpbmdYXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dDtlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJmUuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5sZW5ndGgmJih0PWUuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5pbmRleE9mKHQpKzEpO3ZhciBhPWUuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZih0KSxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nIHRleHQ6bnRoLWNoaWxkKFwiKyhhKzEpK1wiKVwiKTtyZXR1cm4gcyYmKGk9cGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInhcIikpKSxpfX1dKSx0fSgpLGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lLHRoaXMuaW52ZXJ0QXhpcz10aGlzLmFubm9DdHguaW52ZXJ0QXhpcyx0aGlzLmhlbHBlcnM9bmV3IHcodGhpcy5hbm5vQ3R4KX1yZXR1cm4gcih0LFt7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhLHM9dGhpcy53LHI9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MVwiLHQpLG89dC5sYWJlbC50ZXh0LG49dC5zdHJva2VEYXNoQXJyYXk7aWYoeC5pc051bWJlcihyKSl7aWYobnVsbD09PXQueDJ8fHZvaWQgMD09PXQueDIpe3ZhciBsPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3TGluZShyK3Qub2Zmc2V0WCwwK3Qub2Zmc2V0WSxyK3Qub2Zmc2V0WCxzLmdsb2JhbHMuZ3JpZEhlaWdodCt0Lm9mZnNldFksdC5ib3JkZXJDb2xvcixuLHQuYm9yZGVyV2lkdGgpO2UuYXBwZW5kQ2hpbGQobC5ub2RlKSx0LmlkJiZsLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX1lbHNle2lmKChhPXRoaXMuaGVscGVycy5nZXRYMVgyKFwieDJcIix0KSk8cil7dmFyIGg9cjtyPWEsYT1ofXZhciBjPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdChyK3Qub2Zmc2V0WCwwK3Qub2Zmc2V0WSxhLXIscy5nbG9iYWxzLmdyaWRIZWlnaHQrdC5vZmZzZXRZLDAsdC5maWxsQ29sb3IsdC5vcGFjaXR5LDEsdC5ib3JkZXJDb2xvcixuKTtjLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0XCIpLGMuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQocy5nbG9iYWxzLmN1aWQsXCIpXCIpKSxlLmFwcGVuZENoaWxkKGMubm9kZSksdC5pZCYmYy5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9dmFyIGQ9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdldFRleHRSZWN0cyhvLHBhcnNlRmxvYXQodC5sYWJlbC5zdHlsZS5mb250U2l6ZSkpLGc9XCJ0b3BcIj09PXQubGFiZWwucG9zaXRpb24/NDpcImNlbnRlclwiPT09dC5sYWJlbC5wb3NpdGlvbj9zLmdsb2JhbHMuZ3JpZEhlaWdodC8yKyhcInZlcnRpY2FsXCI9PT10LmxhYmVsLm9yaWVudGF0aW9uP2Qud2lkdGgvMjowKTpzLmdsb2JhbHMuZ3JpZEhlaWdodCx1PXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDpyK3QubGFiZWwub2Zmc2V0WCx5OmcrdC5sYWJlbC5vZmZzZXRZLShcInZlcnRpY2FsXCI9PT10LmxhYmVsLm9yaWVudGF0aW9uP1widG9wXCI9PT10LmxhYmVsLnBvc2l0aW9uP2Qud2lkdGgvMi0xMjotZC53aWR0aC8yOjApLHRleHQ6byx0ZXh0QW5jaG9yOnQubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTp0LmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSk7dS5hdHRyKHtyZWw6aX0pLGUuYXBwZW5kQ2hpbGQodS5ub2RlKSx0aGlzLmFubm9DdHguaGVscGVycy5zZXRPcmllbnRhdGlvbnModCxpKX19fSx7a2V5OlwiZHJhd1hBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uc1wifSk7cmV0dXJuIGUuY29uZmlnLmFubm90YXRpb25zLnhheGlzLm1hcCgoZnVuY3Rpb24oZSxhKXt0LmFkZFhheGlzQW5ub3RhdGlvbihlLGkubm9kZSxhKX0pKSxpfX1dKSx0fSgpLEE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lLHRoaXMuaGVscGVycz1uZXcgdyh0aGlzLmFubm9DdHgpfXJldHVybiByKHQsW3trZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGEscz10aGlzLncscj10LnN0cm9rZURhc2hBcnJheSxvPXRoaXMuaGVscGVycy5nZXRZMVkyKFwieTFcIix0KSxuPXQubGFiZWwudGV4dDtpZihudWxsPT09dC55Mnx8dm9pZCAwPT09dC55Mil7dmFyIGw9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKDArdC5vZmZzZXRYLG8rdC5vZmZzZXRZLHRoaXMuX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoKHQpLG8rdC5vZmZzZXRZLHQuYm9yZGVyQ29sb3Iscix0LmJvcmRlcldpZHRoKTtlLmFwcGVuZENoaWxkKGwubm9kZSksdC5pZCYmbC5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9ZWxzZXtpZigoYT10aGlzLmhlbHBlcnMuZ2V0WTFZMihcInkyXCIsdCkpPm8pe3ZhciBoPW87bz1hLGE9aH12YXIgYz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1JlY3QoMCt0Lm9mZnNldFgsYSt0Lm9mZnNldFksdGhpcy5fZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGgodCksby1hLDAsdC5maWxsQ29sb3IsdC5vcGFjaXR5LDEsdC5ib3JkZXJDb2xvcixyKTtjLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0XCIpLGMuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQocy5nbG9iYWxzLmN1aWQsXCIpXCIpKSxlLmFwcGVuZENoaWxkKGMubm9kZSksdC5pZCYmYy5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9dmFyIGQ9XCJyaWdodFwiPT09dC5sYWJlbC5wb3NpdGlvbj9zLmdsb2JhbHMuZ3JpZFdpZHRoOlwiY2VudGVyXCI9PT10LmxhYmVsLnBvc2l0aW9uP3MuZ2xvYmFscy5ncmlkV2lkdGgvMjowLGc9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHt4OmQrdC5sYWJlbC5vZmZzZXRYLHk6KG51bGwhPWE/YTpvKSt0LmxhYmVsLm9mZnNldFktMyx0ZXh0Om4sdGV4dEFuY2hvcjp0LmxhYmVsLnRleHRBbmNob3IsZm9udFNpemU6dC5sYWJlbC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQubGFiZWwuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnQubGFiZWwuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6dC5sYWJlbC5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbi1sYWJlbCBcIi5jb25jYXQodC5sYWJlbC5zdHlsZS5jc3NDbGFzcyxcIiBcIikuY29uY2F0KHQuaWQ/dC5pZDpcIlwiKX0pO2cuYXR0cih7cmVsOml9KSxlLmFwcGVuZENoaWxkKGcubm9kZSl9fSx7a2V5OlwiX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2UuZ2xvYmFscy5ncmlkV2lkdGg7cmV0dXJuKHQud2lkdGguaW5kZXhPZihcIiVcIik+LTE/ZS5nbG9iYWxzLmdyaWRXaWR0aCpwYXJzZUludCh0LndpZHRoLDEwKS8xMDA6cGFyc2VJbnQodC53aWR0aCwxMCkpK3Qub2Zmc2V0WH19LHtrZXk6XCJkcmF3WUF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKChmdW5jdGlvbihlLGEpe3QuYWRkWWF4aXNBbm5vdGF0aW9uKGUsaS5ub2RlLGEpfSkpLGl9fV0pLHR9KCksUz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5oZWxwZXJzPW5ldyB3KHRoaXMuYW5ub0N0eCl9cmV0dXJuIHIodCxbe2tleTpcImFkZFBvaW50QW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnc7dmFyIGE9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MVwiLHQpLHM9dGhpcy5oZWxwZXJzLmdldFkxWTIoXCJ5MVwiLHQpO2lmKHguaXNOdW1iZXIoYSkpe3ZhciByPXtwU2l6ZTp0Lm1hcmtlci5zaXplLHBvaW50U3Ryb2tlV2lkdGg6dC5tYXJrZXIuc3Ryb2tlV2lkdGgscG9pbnRGaWxsQ29sb3I6dC5tYXJrZXIuZmlsbENvbG9yLHBvaW50U3Ryb2tlQ29sb3I6dC5tYXJrZXIuc3Ryb2tlQ29sb3Isc2hhcGU6dC5tYXJrZXIuc2hhcGUscFJhZGl1czp0Lm1hcmtlci5yYWRpdXMsY2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbWFya2VyIFwiLmNvbmNhdCh0Lm1hcmtlci5jc3NDbGFzcyxcIiBcIikuY29uY2F0KHQuaWQ/dC5pZDpcIlwiKX0sbz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd01hcmtlcihhK3QubWFya2VyLm9mZnNldFgscyt0Lm1hcmtlci5vZmZzZXRZLHIpO2UuYXBwZW5kQ2hpbGQoby5ub2RlKTt2YXIgbj10LmxhYmVsLnRleHQ/dC5sYWJlbC50ZXh0OlwiXCIsbD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoe3g6YSt0LmxhYmVsLm9mZnNldFgseTpzK3QubGFiZWwub2Zmc2V0WS10Lm1hcmtlci5zaXplLXBhcnNlRmxvYXQodC5sYWJlbC5zdHlsZS5mb250U2l6ZSkvMS42LHRleHQ6bix0ZXh0QW5jaG9yOnQubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTp0LmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSk7aWYobC5hdHRyKHtyZWw6aX0pLGUuYXBwZW5kQ2hpbGQobC5ub2RlKSx0LmN1c3RvbVNWRy5TVkcpe3ZhciBoPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zLWN1c3RvbS1zdmcgXCIrdC5jdXN0b21TVkcuY3NzQ2xhc3N9KTtoLmF0dHIoe3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoYSt0LmN1c3RvbVNWRy5vZmZzZXRYLFwiLCBcIikuY29uY2F0KHMrdC5jdXN0b21TVkcub2Zmc2V0WSxcIilcIil9KSxoLm5vZGUuaW5uZXJIVE1MPXQuY3VzdG9tU1ZHLlNWRyxlLmFwcGVuZENoaWxkKGgubm9kZSl9aWYodC5pbWFnZS5wYXRoKXt2YXIgYz10LmltYWdlLndpZHRoP3QuaW1hZ2Uud2lkdGg6MjAsZD10LmltYWdlLmhlaWdodD90LmltYWdlLmhlaWdodDoyMDtvPXRoaXMuYW5ub0N0eC5hZGRJbWFnZSh7eDphK3QuaW1hZ2Uub2Zmc2V0WC1jLzIseTpzK3QuaW1hZ2Uub2Zmc2V0WS1kLzIsd2lkdGg6YyxoZWlnaHQ6ZCxwYXRoOnQuaW1hZ2UucGF0aCxhcHBlbmRUbzpcIi5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCJ9KX10Lm1vdXNlRW50ZXImJm8ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHQubW91c2VFbnRlci5iaW5kKHRoaXMsdCkpLHQubW91c2VMZWF2ZSYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdC5tb3VzZUxlYXZlLmJpbmQodGhpcyx0KSksdC5jbGljayYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuY2xpY2suYmluZCh0aGlzLHQpKX19fSx7a2V5OlwiZHJhd1BvaW50QW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uc1wifSk7cmV0dXJuIGUuY29uZmlnLmFubm90YXRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKGUsYSl7dC5hZGRQb2ludEFubm90YXRpb24oZSxpLm5vZGUsYSl9KSksaX19XSksdH0oKTt2YXIgQz17bmFtZTpcImVuXCIsb3B0aW9uczp7bW9udGhzOltcIkphbnVhcnlcIixcIkZlYnJ1YXJ5XCIsXCJNYXJjaFwiLFwiQXByaWxcIixcIk1heVwiLFwiSnVuZVwiLFwiSnVseVwiLFwiQXVndXN0XCIsXCJTZXB0ZW1iZXJcIixcIk9jdG9iZXJcIixcIk5vdmVtYmVyXCIsXCJEZWNlbWJlclwiXSxzaG9ydE1vbnRoczpbXCJKYW5cIixcIkZlYlwiLFwiTWFyXCIsXCJBcHJcIixcIk1heVwiLFwiSnVuXCIsXCJKdWxcIixcIkF1Z1wiLFwiU2VwXCIsXCJPY3RcIixcIk5vdlwiLFwiRGVjXCJdLGRheXM6W1wiU3VuZGF5XCIsXCJNb25kYXlcIixcIlR1ZXNkYXlcIixcIldlZG5lc2RheVwiLFwiVGh1cnNkYXlcIixcIkZyaWRheVwiLFwiU2F0dXJkYXlcIl0sc2hvcnREYXlzOltcIlN1blwiLFwiTW9uXCIsXCJUdWVcIixcIldlZFwiLFwiVGh1XCIsXCJGcmlcIixcIlNhdFwiXSx0b29sYmFyOntleHBvcnRUb1NWRzpcIkRvd25sb2FkIFNWR1wiLGV4cG9ydFRvUE5HOlwiRG93bmxvYWQgUE5HXCIsZXhwb3J0VG9DU1Y6XCJEb3dubG9hZCBDU1ZcIixtZW51OlwiTWVudVwiLHNlbGVjdGlvbjpcIlNlbGVjdGlvblwiLHNlbGVjdGlvblpvb206XCJTZWxlY3Rpb24gWm9vbVwiLHpvb21JbjpcIlpvb20gSW5cIix6b29tT3V0OlwiWm9vbSBPdXRcIixwYW46XCJQYW5uaW5nXCIscmVzZXQ6XCJSZXNldCBab29tXCJ9fX0sTD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXthKHRoaXMsdCksdGhpcy55QXhpcz17c2hvdzohMCxzaG93QWx3YXlzOiExLHNob3dGb3JOdWxsU2VyaWVzOiEwLHNlcmllc05hbWU6dm9pZCAwLG9wcG9zaXRlOiExLHJldmVyc2VkOiExLGxvZ2FyaXRobWljOiExLGxvZ0Jhc2U6MTAsdGlja0Ftb3VudDp2b2lkIDAsZm9yY2VOaWNlU2NhbGU6ITEsbWF4OnZvaWQgMCxtaW46dm9pZCAwLGZsb2F0aW5nOiExLGRlY2ltYWxzSW5GbG9hdDp2b2lkIDAsbGFiZWxzOntzaG93OiEwLG1pbldpZHRoOjAsbWF4V2lkdGg6MTYwLG9mZnNldFg6MCxvZmZzZXRZOjAsYWxpZ246dm9pZCAwLHJvdGF0ZTowLHBhZGRpbmc6MjAsc3R5bGU6e2NvbG9yczpbXSxmb250U2l6ZTpcIjExcHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifSxmb3JtYXR0ZXI6dm9pZCAwfSxheGlzQm9yZGVyOntzaG93OiExLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOjEsb2Zmc2V0WDowLG9mZnNldFk6MH0sYXhpc1RpY2tzOntzaG93OiExLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOjYsb2Zmc2V0WDowLG9mZnNldFk6MH0sdGl0bGU6e3RleHQ6dm9pZCAwLHJvdGF0ZTotOTAsb2Zmc2V0WTowLG9mZnNldFg6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRXZWlnaHQ6OTAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSx0b29sdGlwOntlbmFibGVkOiExLG9mZnNldFg6MH0sY3Jvc3NoYWlyczp7c2hvdzohMCxwb3NpdGlvbjpcImZyb250XCIsc3Ryb2tlOntjb2xvcjpcIiNiNmI2YjZcIix3aWR0aDoxLGRhc2hBcnJheTowfX19LHRoaXMucG9pbnRBbm5vdGF0aW9uPXtpZDp2b2lkIDAseDowLHk6bnVsbCx5QXhpc0luZGV4OjAsc2VyaWVzSW5kZXg6MCxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsbWFya2VyOntzaXplOjQsZmlsbENvbG9yOlwiI2ZmZlwiLHN0cm9rZVdpZHRoOjIsc3Ryb2tlQ29sb3I6XCIjMzMzXCIsc2hhcGU6XCJjaXJjbGVcIixvZmZzZXRYOjAsb2Zmc2V0WTowLHJhZGl1czoyLGNzc0NsYXNzOlwiXCJ9LGxhYmVsOntib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6XCJtaWRkbGVcIixvZmZzZXRYOjAsb2Zmc2V0WTowLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxzdHlsZTp7YmFja2dyb3VuZDpcIiNmZmZcIixjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6XCJcIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6Mixib3R0b206Mn19fSxjdXN0b21TVkc6e1NWRzp2b2lkIDAsY3NzQ2xhc3M6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjB9LGltYWdlOntwYXRoOnZvaWQgMCx3aWR0aDoyMCxoZWlnaHQ6MjAsb2Zmc2V0WDowLG9mZnNldFk6MH19LHRoaXMueUF4aXNBbm5vdGF0aW9uPXtpZDp2b2lkIDAseTowLHkyOm51bGwsc3Ryb2tlRGFzaEFycmF5OjEsZmlsbENvbG9yOlwiI2MyYzJjMlwiLGJvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsb3BhY2l0eTouMyxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOlwiMTAwJVwiLHlBeGlzSW5kZXg6MCxsYWJlbDp7Ym9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxib3JkZXJSYWRpdXM6Mix0ZXh0OnZvaWQgMCx0ZXh0QW5jaG9yOlwiZW5kXCIscG9zaXRpb246XCJyaWdodFwiLG9mZnNldFg6MCxvZmZzZXRZOi0zLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxzdHlsZTp7YmFja2dyb3VuZDpcIiNmZmZcIixjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6XCJcIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6Mixib3R0b206Mn19fX0sdGhpcy54QXhpc0Fubm90YXRpb249e2lkOnZvaWQgMCx4OjAseDI6bnVsbCxzdHJva2VEYXNoQXJyYXk6MSxmaWxsQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxvcGFjaXR5Oi4zLG9mZnNldFg6MCxvZmZzZXRZOjAsbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOjIsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLG9yaWVudGF0aW9uOlwidmVydGljYWxcIixwb3NpdGlvbjpcInRvcFwiLG9mZnNldFg6MCxvZmZzZXRZOjAsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19fSx0aGlzLnRleHQ9e3g6MCx5OjAsdGV4dDpcIlwiLHRleHRBbmNob3I6XCJzdGFydFwiLGZvcmVDb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxM3B4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsYXBwZW5kVG86XCIuYXBleGNoYXJ0cy1hbm5vdGF0aW9uc1wiLGJhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyUmFkaXVzOjAsYm9yZGVyV2lkdGg6MCxwYWRkaW5nTGVmdDo0LHBhZGRpbmdSaWdodDo0LHBhZGRpbmdUb3A6MixwYWRkaW5nQm90dG9tOjJ9fXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57YW5ub3RhdGlvbnM6e3lheGlzOlt0aGlzLnlBeGlzQW5ub3RhdGlvbl0seGF4aXM6W3RoaXMueEF4aXNBbm5vdGF0aW9uXSxwb2ludHM6W3RoaXMucG9pbnRBbm5vdGF0aW9uXSx0ZXh0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdfSxjaGFydDp7YW5pbWF0aW9uczp7ZW5hYmxlZDohMCxlYXNpbmc6XCJlYXNlaW5vdXRcIixzcGVlZDo4MDAsYW5pbWF0ZUdyYWR1YWxseTp7ZGVsYXk6MTUwLGVuYWJsZWQ6ITB9LGR5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITAsc3BlZWQ6MzUwfX0sYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsbG9jYWxlczpbQ10sZGVmYXVsdExvY2FsZTpcImVuXCIsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSxlbmFibGVkT25TZXJpZXM6dm9pZCAwLHRvcDoyLGxlZnQ6MixibHVyOjQsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouMzV9LGV2ZW50czp7YW5pbWF0aW9uRW5kOnZvaWQgMCxiZWZvcmVNb3VudDp2b2lkIDAsbW91bnRlZDp2b2lkIDAsdXBkYXRlZDp2b2lkIDAsY2xpY2s6dm9pZCAwLG1vdXNlTW92ZTp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAseEF4aXNMYWJlbENsaWNrOnZvaWQgMCxsZWdlbmRDbGljazp2b2lkIDAsbWFya2VyQ2xpY2s6dm9pZCAwLHNlbGVjdGlvbjp2b2lkIDAsZGF0YVBvaW50U2VsZWN0aW9uOnZvaWQgMCxkYXRhUG9pbnRNb3VzZUVudGVyOnZvaWQgMCxkYXRhUG9pbnRNb3VzZUxlYXZlOnZvaWQgMCxiZWZvcmVab29tOnZvaWQgMCxiZWZvcmVSZXNldFpvb206dm9pZCAwLHpvb21lZDp2b2lkIDAsc2Nyb2xsZWQ6dm9pZCAwLGJydXNoU2Nyb2xsZWQ6dm9pZCAwfSxmb3JlQ29sb3I6XCIjMzczZDNmXCIsZm9udEZhbWlseTpcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIixoZWlnaHQ6XCJhdXRvXCIscGFyZW50SGVpZ2h0T2Zmc2V0OjE1LHJlZHJhd09uUGFyZW50UmVzaXplOiEwLHJlZHJhd09uV2luZG93UmVzaXplOiEwLGlkOnZvaWQgMCxncm91cDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxzZWxlY3Rpb246e2VuYWJsZWQ6ITEsdHlwZTpcInhcIixmaWxsOntjb2xvcjpcIiMyNDI5MmVcIixvcGFjaXR5Oi4xfSxzdHJva2U6e3dpZHRoOjEsY29sb3I6XCIjMjQyOTJlXCIsb3BhY2l0eTouNCxkYXNoQXJyYXk6M30seGF4aXM6e21pbjp2b2lkIDAsbWF4OnZvaWQgMH0seWF4aXM6e21pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHNwYXJrbGluZTp7ZW5hYmxlZDohMX0sYnJ1c2g6e2VuYWJsZWQ6ITEsYXV0b1NjYWxlWWF4aXM6ITAsdGFyZ2V0OnZvaWQgMCx0YXJnZXRzOnZvaWQgMH0sc3RhY2tlZDohMSxzdGFja1R5cGU6XCJub3JtYWxcIix0b29sYmFyOntzaG93OiEwLG9mZnNldFg6MCxvZmZzZXRZOjAsdG9vbHM6e2Rvd25sb2FkOiEwLHNlbGVjdGlvbjohMCx6b29tOiEwLHpvb21pbjohMCx6b29tb3V0OiEwLHBhbjohMCxyZXNldDohMCxjdXN0b21JY29uczpbXX0sZXhwb3J0Ontjc3Y6e2ZpbGVuYW1lOnZvaWQgMCxjb2x1bW5EZWxpbWl0ZXI6XCIsXCIsaGVhZGVyQ2F0ZWdvcnk6XCJjYXRlZ29yeVwiLGhlYWRlclZhbHVlOlwidmFsdWVcIixkYXRlRm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh0KS50b0RhdGVTdHJpbmcoKX19LHBuZzp7ZmlsZW5hbWU6dm9pZCAwfSxzdmc6e2ZpbGVuYW1lOnZvaWQgMH19LGF1dG9TZWxlY3RlZDpcInpvb21cIn0sdHlwZTpcImxpbmVcIix3aWR0aDpcIjEwMCVcIix6b29tOntlbmFibGVkOiEwLHR5cGU6XCJ4XCIsYXV0b1NjYWxlWWF4aXM6ITEsem9vbWVkQXJlYTp7ZmlsbDp7Y29sb3I6XCIjOTBDQUY5XCIsb3BhY2l0eTouNH0sc3Ryb2tlOntjb2xvcjpcIiMwRDQ3QTFcIixvcGFjaXR5Oi40LHdpZHRoOjF9fX19LHBsb3RPcHRpb25zOnthcmVhOntmaWxsVG86XCJvcmlnaW5cIn0sYmFyOntob3Jpem9udGFsOiExLGNvbHVtbldpZHRoOlwiNzAlXCIsYmFySGVpZ2h0OlwiNzAlXCIsZGlzdHJpYnV0ZWQ6ITEsYm9yZGVyUmFkaXVzOjAsYm9yZGVyUmFkaXVzQXBwbGljYXRpb246XCJhcm91bmRcIixib3JkZXJSYWRpdXNXaGVuU3RhY2tlZDpcImxhc3RcIixyYW5nZUJhck92ZXJsYXA6ITAscmFuZ2VCYXJHcm91cFJvd3M6ITEsaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQ6ITEsaXNEdW1iYmVsbDohMSxkdW1iYmVsbENvbG9yczp2b2lkIDAsaXNGdW5uZWw6ITEsaXNGdW5uZWwzZDohMCxjb2xvcnM6e3JhbmdlczpbXSxiYWNrZ3JvdW5kQmFyQ29sb3JzOltdLGJhY2tncm91bmRCYXJPcGFjaXR5OjEsYmFja2dyb3VuZEJhclJhZGl1czowfSxkYXRhTGFiZWxzOntwb3NpdGlvbjpcInRvcFwiLG1heEl0ZW1zOjEwMCxoaWRlT3ZlcmZsb3dpbmdMYWJlbHM6ITAsb3JpZW50YXRpb246XCJob3Jpem9udGFsXCIsdG90YWw6e2VuYWJsZWQ6ITEsZm9ybWF0dGVyOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntjb2xvcjpcIiMzNzNkM2ZcIixmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMH19fX0sYnViYmxlOnt6U2NhbGluZzohMCxtaW5CdWJibGVSYWRpdXM6dm9pZCAwLG1heEJ1YmJsZVJhZGl1czp2b2lkIDB9LGNhbmRsZXN0aWNrOntjb2xvcnM6e3Vwd2FyZDpcIiMwMEI3NDZcIixkb3dud2FyZDpcIiNFRjQwM0NcIn0sd2ljazp7dXNlRmlsbENvbG9yOiEwfX0sYm94UGxvdDp7Y29sb3JzOnt1cHBlcjpcIiMwMEUzOTZcIixsb3dlcjpcIiMwMDhGRkJcIn19LGhlYXRtYXA6e3JhZGl1czoyLGVuYWJsZVNoYWRlczohMCxzaGFkZUludGVuc2l0eTouNSxyZXZlcnNlTmVnYXRpdmVTaGFkZTohMSxkaXN0cmlidXRlZDohMSx1c2VGaWxsQ29sb3JBc1N0cm9rZTohMSxjb2xvclNjYWxlOntpbnZlcnNlOiExLHJhbmdlczpbXSxtaW46dm9pZCAwLG1heDp2b2lkIDB9fSx0cmVlbWFwOntlbmFibGVTaGFkZXM6ITAsc2hhZGVJbnRlbnNpdHk6LjUsZGlzdHJpYnV0ZWQ6ITEscmV2ZXJzZU5lZ2F0aXZlU2hhZGU6ITEsdXNlRmlsbENvbG9yQXNTdHJva2U6ITEsZGF0YUxhYmVsczp7Zm9ybWF0Olwic2NhbGVcIn0sY29sb3JTY2FsZTp7aW52ZXJzZTohMSxyYW5nZXM6W10sbWluOnZvaWQgMCxtYXg6dm9pZCAwfX0scmFkaWFsQmFyOntpbnZlcnNlT3JkZXI6ITEsc3RhcnRBbmdsZTowLGVuZEFuZ2xlOjM2MCxvZmZzZXRYOjAsb2Zmc2V0WTowLGhvbGxvdzp7bWFyZ2luOjUsc2l6ZTpcIjUwJVwiLGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGltYWdlOnZvaWQgMCxpbWFnZVdpZHRoOjE1MCxpbWFnZUhlaWdodDoxNTAsaW1hZ2VPZmZzZXRYOjAsaW1hZ2VPZmZzZXRZOjAsaW1hZ2VDbGlwcGVkOiEwLHBvc2l0aW9uOlwiZnJvbnRcIixkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDowLGxlZnQ6MCxibHVyOjMsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNX19LHRyYWNrOntzaG93OiEwLHN0YXJ0QW5nbGU6dm9pZCAwLGVuZEFuZ2xlOnZvaWQgMCxiYWNrZ3JvdW5kOlwiI2YyZjJmMlwiLHN0cm9rZVdpZHRoOlwiOTclXCIsb3BhY2l0eToxLG1hcmdpbjo1LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjAsbGVmdDowLGJsdXI6Myxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi41fX0sZGF0YUxhYmVsczp7c2hvdzohMCxuYW1lOntzaG93OiEwLGZvbnRTaXplOlwiMTZweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOjAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sdmFsdWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNHB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MTYsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0K1wiJVwifX0sdG90YWw6e3Nob3c6ITEsbGFiZWw6XCJUb3RhbFwiLGZvbnRTaXplOlwiMTZweFwiLGZvbnRXZWlnaHQ6NjAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy5zZXJpZXNUb3RhbHMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKS90Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCtcIiVcIn19fX0scGllOntjdXN0b21TY2FsZToxLG9mZnNldFg6MCxvZmZzZXRZOjAsc3RhcnRBbmdsZTowLGVuZEFuZ2xlOjM2MCxleHBhbmRPbkNsaWNrOiEwLGRhdGFMYWJlbHM6e29mZnNldDowLG1pbkFuZ2xlVG9TaG93TGFiZWw6MTB9LGRvbnV0OntzaXplOlwiNjUlXCIsYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsbGFiZWxzOntzaG93OiExLG5hbWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6LTEwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHZhbHVlOntzaG93OiEwLGZvbnRTaXplOlwiMjBweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOjEwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHRvdGFsOntzaG93OiExLHNob3dBbHdheXM6ITEsbGFiZWw6XCJUb3RhbFwiLGZvbnRTaXplOlwiMTZweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy5zZXJpZXNUb3RhbHMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKX19fX19LHBvbGFyQXJlYTp7cmluZ3M6e3N0cm9rZVdpZHRoOjEsc3Ryb2tlQ29sb3I6XCIjZThlOGU4XCJ9LHNwb2tlczp7c3Ryb2tlV2lkdGg6MSxjb25uZWN0b3JDb2xvcnM6XCIjZThlOGU4XCJ9fSxyYWRhcjp7c2l6ZTp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxwb2x5Z29uczp7c3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcnM6XCIjZThlOGU4XCIsY29ubmVjdG9yQ29sb3JzOlwiI2U4ZThlOFwiLGZpbGw6e2NvbG9yczp2b2lkIDB9fX19LGNvbG9yczp2b2lkIDAsZGF0YUxhYmVsczp7ZW5hYmxlZDohMCxlbmFibGVkT25TZXJpZXM6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXQ/dDpcIlwifSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZGlzdHJpYnV0ZWQ6ITEsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3JzOnZvaWQgMH0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMCxmb3JlQ29sb3I6XCIjZmZmXCIsYm9yZGVyUmFkaXVzOjIscGFkZGluZzo0LG9wYWNpdHk6LjksYm9yZGVyV2lkdGg6MSxib3JkZXJDb2xvcjpcIiNmZmZcIixkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDoxLGxlZnQ6MSxibHVyOjEsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNDV9fSxkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDoxLGxlZnQ6MSxibHVyOjEsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNDV9fSxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZTpcImRhcmtcIix0eXBlOlwiaG9yaXpvbnRhbFwiLHNoYWRlSW50ZW5zaXR5Oi41LGdyYWRpZW50VG9Db2xvcnM6dm9pZCAwLGludmVyc2VDb2xvcnM6ITAsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbMCw1MCwxMDBdLGNvbG9yU3RvcHM6W119LGltYWdlOntzcmM6W10sd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDB9LHBhdHRlcm46e3N0eWxlOlwic3F1YXJlc1wiLHdpZHRoOjYsaGVpZ2h0OjYsc3Ryb2tlV2lkdGg6Mn19LGZvcmVjYXN0RGF0YVBvaW50czp7Y291bnQ6MCxmaWxsT3BhY2l0eTouNSxzdHJva2VXaWR0aDp2b2lkIDAsZGFzaEFycmF5OjR9LGdyaWQ6e3Nob3c6ITAsYm9yZGVyQ29sb3I6XCIjZTBlMGUwXCIsc3Ryb2tlRGFzaEFycmF5OjAscG9zaXRpb246XCJiYWNrXCIseGF4aXM6e2xpbmVzOntzaG93OiExfX0seWF4aXM6e2xpbmVzOntzaG93OiEwfX0scm93Ontjb2xvcnM6dm9pZCAwLG9wYWNpdHk6LjV9LGNvbHVtbjp7Y29sb3JzOnZvaWQgMCxvcGFjaXR5Oi41fSxwYWRkaW5nOnt0b3A6MCxyaWdodDoxMCxib3R0b206MCxsZWZ0OjEyfX0sbGFiZWxzOltdLGxlZ2VuZDp7c2hvdzohMCxzaG93Rm9yU2luZ2xlU2VyaWVzOiExLHNob3dGb3JOdWxsU2VyaWVzOiEwLHNob3dGb3JaZXJvU2VyaWVzOiEwLGZsb2F0aW5nOiExLHBvc2l0aW9uOlwiYm90dG9tXCIsaG9yaXpvbnRhbEFsaWduOlwiY2VudGVyXCIsaW52ZXJzZU9yZGVyOiExLGZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGZvcm1hdHRlcjp2b2lkIDAsdG9vbHRpcEhvdmVyRm9ybWF0dGVyOnZvaWQgMCxvZmZzZXRYOi0yMCxvZmZzZXRZOjQsY3VzdG9tTGVnZW5kSXRlbXM6W10sbGFiZWxzOntjb2xvcnM6dm9pZCAwLHVzZVNlcmllc0NvbG9yczohMX0sbWFya2Vyczp7d2lkdGg6MTIsaGVpZ2h0OjEyLHN0cm9rZVdpZHRoOjAsZmlsbENvbG9yczp2b2lkIDAsc3Ryb2tlQ29sb3I6XCIjZmZmXCIscmFkaXVzOjEyLGN1c3RvbUhUTUw6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsb25DbGljazp2b2lkIDB9LGl0ZW1NYXJnaW46e2hvcml6b250YWw6NSx2ZXJ0aWNhbDoyfSxvbkl0ZW1DbGljazp7dG9nZ2xlRGF0YVNlcmllczohMH0sb25JdGVtSG92ZXI6e2hpZ2hsaWdodERhdGFTZXJpZXM6ITB9fSxtYXJrZXJzOntkaXNjcmV0ZTpbXSxzaXplOjAsY29sb3JzOnZvaWQgMCxzdHJva2VDb2xvcnM6XCIjZmZmXCIsc3Ryb2tlV2lkdGg6MixzdHJva2VPcGFjaXR5Oi45LHN0cm9rZURhc2hBcnJheTowLGZpbGxPcGFjaXR5OjEsc2hhcGU6XCJjaXJjbGVcIix3aWR0aDo4LGhlaWdodDo4LHJhZGl1czoyLG9mZnNldFg6MCxvZmZzZXRZOjAsb25DbGljazp2b2lkIDAsb25EYmxDbGljazp2b2lkIDAsc2hvd051bGxEYXRhUG9pbnRzOiEwLGhvdmVyOntzaXplOnZvaWQgMCxzaXplT2Zmc2V0OjN9fSxub0RhdGE6e3RleHQ6dm9pZCAwLGFsaWduOlwiY2VudGVyXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjE0cHhcIixmb250RmFtaWx5OnZvaWQgMH19LHJlc3BvbnNpdmU6W10sc2VyaWVzOnZvaWQgMCxzdGF0ZXM6e25vcm1hbDp7ZmlsdGVyOnt0eXBlOlwibm9uZVwiLHZhbHVlOjB9fSxob3Zlcjp7ZmlsdGVyOnt0eXBlOlwibGlnaHRlblwiLHZhbHVlOi4xfX0sYWN0aXZlOnthbGxvd011bHRpcGxlRGF0YVBvaW50c1NlbGVjdGlvbjohMSxmaWx0ZXI6e3R5cGU6XCJkYXJrZW5cIix2YWx1ZTouNX19fSx0aXRsZTp7dGV4dDp2b2lkIDAsYWxpZ246XCJsZWZ0XCIsbWFyZ2luOjUsb2Zmc2V0WDowLG9mZnNldFk6MCxmbG9hdGluZzohMSxzdHlsZTp7Zm9udFNpemU6XCIxNHB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwfX0sc3VidGl0bGU6e3RleHQ6dm9pZCAwLGFsaWduOlwibGVmdFwiLG1hcmdpbjo1LG9mZnNldFg6MCxvZmZzZXRZOjMwLGZsb2F0aW5nOiExLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdHJva2U6e3Nob3c6ITAsY3VydmU6XCJzbW9vdGhcIixsaW5lQ2FwOlwiYnV0dFwiLHdpZHRoOjIsY29sb3JzOnZvaWQgMCxkYXNoQXJyYXk6MCxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZTpcImRhcmtcIix0eXBlOlwiaG9yaXpvbnRhbFwiLHNoYWRlSW50ZW5zaXR5Oi41LGdyYWRpZW50VG9Db2xvcnM6dm9pZCAwLGludmVyc2VDb2xvcnM6ITAsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbMCw1MCwxMDBdLGNvbG9yU3RvcHM6W119fX0sdG9vbHRpcDp7ZW5hYmxlZDohMCxlbmFibGVkT25TZXJpZXM6dm9pZCAwLHNoYXJlZDohMCxmb2xsb3dDdXJzb3I6ITEsaW50ZXJzZWN0OiExLGludmVyc2VPcmRlcjohMSxjdXN0b206dm9pZCAwLGZpbGxTZXJpZXNDb2xvcjohMSx0aGVtZTpcImxpZ2h0XCIsY3NzQ2xhc3M6XCJcIixzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDB9LG9uRGF0YXNldEhvdmVyOntoaWdobGlnaHREYXRhU2VyaWVzOiExfSx4OntzaG93OiEwLGZvcm1hdDpcImRkIE1NTVwiLGZvcm1hdHRlcjp2b2lkIDB9LHk6e2Zvcm1hdHRlcjp2b2lkIDAsdGl0bGU6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD90K1wiOiBcIjpcIlwifX19LHo6e2Zvcm1hdHRlcjp2b2lkIDAsdGl0bGU6XCJTaXplOiBcIn0sbWFya2VyOntzaG93OiEwLGZpbGxDb2xvcnM6dm9pZCAwfSxpdGVtczp7ZGlzcGxheTpcImZsZXhcIn0sZml4ZWQ6e2VuYWJsZWQ6ITEscG9zaXRpb246XCJ0b3BSaWdodFwiLG9mZnNldFg6MCxvZmZzZXRZOjB9fSx4YXhpczp7dHlwZTpcImNhdGVnb3J5XCIsY2F0ZWdvcmllczpbXSxjb252ZXJ0ZWRDYXRUb051bWVyaWM6ITEsb2Zmc2V0WDowLG9mZnNldFk6MCxvdmVyd3JpdGVDYXRlZ29yaWVzOnZvaWQgMCxsYWJlbHM6e3Nob3c6ITAscm90YXRlOi00NSxyb3RhdGVBbHdheXM6ITEsaGlkZU92ZXJsYXBwaW5nTGFiZWxzOiEwLHRyaW06ITEsbWluSGVpZ2h0OnZvaWQgMCxtYXhIZWlnaHQ6MTIwLHNob3dEdXBsaWNhdGVzOiEwLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn0sb2Zmc2V0WDowLG9mZnNldFk6MCxmb3JtYXQ6dm9pZCAwLGZvcm1hdHRlcjp2b2lkIDAsZGF0ZXRpbWVVVEM6ITAsZGF0ZXRpbWVGb3JtYXR0ZXI6e3llYXI6XCJ5eXl5XCIsbW9udGg6XCJNTU0gJ3l5XCIsZGF5OlwiZGQgTU1NXCIsaG91cjpcIkhIOm1tXCIsbWludXRlOlwiSEg6bW06c3NcIixzZWNvbmQ6XCJISDptbTpzc1wifX0sZ3JvdXA6e2dyb3VwczpbXSxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSxheGlzQm9yZGVyOntzaG93OiEwLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOlwiMTAwJVwiLGhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjB9LGF4aXNUaWNrczp7c2hvdzohMCxjb2xvcjpcIiNlMGUwZTBcIixoZWlnaHQ6NixvZmZzZXRYOjAsb2Zmc2V0WTowfSx0aWNrQW1vdW50OnZvaWQgMCx0aWNrUGxhY2VtZW50Olwib25cIixtaW46dm9pZCAwLG1heDp2b2lkIDAscmFuZ2U6dm9pZCAwLGZsb2F0aW5nOiExLGRlY2ltYWxzSW5GbG9hdDp2b2lkIDAscG9zaXRpb246XCJib3R0b21cIix0aXRsZTp7dGV4dDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6OTAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSxjcm9zc2hhaXJzOntzaG93OiEwLHdpZHRoOjEscG9zaXRpb246XCJiYWNrXCIsb3BhY2l0eTouOSxzdHJva2U6e2NvbG9yOlwiI2I2YjZiNlwiLHdpZHRoOjEsZGFzaEFycmF5OjN9LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yOlwiI0IxQjlDNFwiLGdyYWRpZW50Ontjb2xvckZyb206XCIjRDhFM0YwXCIsY29sb3JUbzpcIiNCRUQxRTZcIixzdG9wczpbMCwxMDBdLG9wYWNpdHlGcm9tOi40LG9wYWNpdHlUbzouNX19LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsbGVmdDowLHRvcDowLGJsdXI6MSxvcGFjaXR5Oi40fX0sdG9vbHRpcDp7ZW5hYmxlZDohMCxvZmZzZXRZOjAsZm9ybWF0dGVyOnZvaWQgMCxzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDB9fX0seWF4aXM6dGhpcy55QXhpcyx0aGVtZTp7bW9kZTpcImxpZ2h0XCIscGFsZXR0ZTpcInBhbGV0dGUxXCIsbW9ub2Nocm9tZTp7ZW5hYmxlZDohMSxjb2xvcjpcIiMwMDhGRkJcIixzaGFkZVRvOlwibGlnaHRcIixzaGFkZUludGVuc2l0eTouNjV9fX19fV0pLHR9KCksUD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmdyYXBoaWNzPW5ldyBtKHRoaXMuY3R4KSx0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJih0aGlzLmludmVydEF4aXM9ITApLHRoaXMuaGVscGVycz1uZXcgdyh0aGlzKSx0aGlzLnhBeGlzQW5ub3RhdGlvbnM9bmV3IGsodGhpcyksdGhpcy55QXhpc0Fubm90YXRpb25zPW5ldyBBKHRoaXMpLHRoaXMucG9pbnRzQW5ub3RhdGlvbnM9bmV3IFModGhpcyksdGhpcy53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLncuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkJiYodGhpcy5pbnZlcnNlZFJldmVyc2VkQXhpcz0hMCksdGhpcy54RGl2aXNpb249dGhpcy53Lmdsb2JhbHMuZ3JpZFdpZHRoL3RoaXMudy5nbG9iYWxzLmRhdGFQb2ludHN9cmV0dXJuIHIodCxbe2tleTpcImRyYXdBeGVzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZih0Lmdsb2JhbHMuYXhpc0NoYXJ0cyl7Zm9yKHZhciBlPXRoaXMueUF4aXNBbm5vdGF0aW9ucy5kcmF3WUF4aXNBbm5vdGF0aW9ucygpLGk9dGhpcy54QXhpc0Fubm90YXRpb25zLmRyYXdYQXhpc0Fubm90YXRpb25zKCksYT10aGlzLnBvaW50c0Fubm90YXRpb25zLmRyYXdQb2ludEFubm90YXRpb25zKCkscz10LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQscj1bZSxpLGFdLG89W2kubm9kZSxlLm5vZGUsYS5ub2RlXSxuPTA7bjwzO24rKyl0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChyW25dKSwhc3x8dC5nbG9iYWxzLnJlc2l6ZWR8fHQuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8XCJzY2F0dGVyXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiZcImJ1YmJsZVwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmdC5nbG9iYWxzLmRhdGFQb2ludHM+MSYmb1tuXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKSx0Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOm9bbl0saW5kZXg6MH0pO3RoaXMuaGVscGVycy5hbm5vdGF0aW9uc0JhY2tncm91bmQoKX19fSx7a2V5OlwiZHJhd0ltYWdlQW5ub3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy53LmNvbmZpZy5hbm5vdGF0aW9ucy5pbWFnZXMubWFwKChmdW5jdGlvbihlLGkpe3QuYWRkSW1hZ2UoZSxpKX0pKX19LHtrZXk6XCJkcmF3VGV4dEFubm9zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMudy5jb25maWcuYW5ub3RhdGlvbnMudGV4dHMubWFwKChmdW5jdGlvbihlLGkpe3QuYWRkVGV4dChlLGkpfSkpfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnhBeGlzQW5ub3RhdGlvbnMuYWRkWGF4aXNBbm5vdGF0aW9uKHQsZSxpKX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy55QXhpc0Fubm90YXRpb25zLmFkZFlheGlzQW5ub3RhdGlvbih0LGUsaSl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMucG9pbnRzQW5ub3RhdGlvbnMuYWRkUG9pbnRBbm5vdGF0aW9uKHQsZSxpKX19LHtrZXk6XCJhZGRUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10LngsYT10Lnkscz10LnRleHQscj10LnRleHRBbmNob3Isbz10LmZvcmVDb2xvcixuPXQuZm9udFNpemUsbD10LmZvbnRGYW1pbHksaD10LmZvbnRXZWlnaHQsYz10LmNzc0NsYXNzLGQ9dC5iYWNrZ3JvdW5kQ29sb3IsZz10LmJvcmRlcldpZHRoLHU9dC5zdHJva2VEYXNoQXJyYXkscD10LmJvcmRlclJhZGl1cyxmPXQuYm9yZGVyQ29sb3IseD10LmFwcGVuZFRvLGI9dm9pZCAwPT09eD9cIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zXCI6eCx2PXQucGFkZGluZ0xlZnQsbT12b2lkIDA9PT12PzQ6dix5PXQucGFkZGluZ1JpZ2h0LHc9dm9pZCAwPT09eT80Onksaz10LnBhZGRpbmdCb3R0b20sQT12b2lkIDA9PT1rPzI6ayxTPXQucGFkZGluZ1RvcCxDPXZvaWQgMD09PVM/MjpTLEw9dGhpcy53LFA9dGhpcy5ncmFwaGljcy5kcmF3VGV4dCh7eDppLHk6YSx0ZXh0OnMsdGV4dEFuY2hvcjpyfHxcInN0YXJ0XCIsZm9udFNpemU6bnx8XCIxMnB4XCIsZm9udFdlaWdodDpofHxcInJlZ3VsYXJcIixmb250RmFtaWx5Omx8fEwuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksZm9yZUNvbG9yOm98fEwuY29uZmlnLmNoYXJ0LmZvcmVDb2xvcixjc3NDbGFzczpjfSksST1MLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKGIpO0kmJkkuYXBwZW5kQ2hpbGQoUC5ub2RlKTt2YXIgTT1QLmJib3goKTtpZihzKXt2YXIgVD10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KE0ueC1tLE0ueS1DLE0ud2lkdGgrbSt3LE0uaGVpZ2h0K0ErQyxwLGR8fFwidHJhbnNwYXJlbnRcIiwxLGcsZix1KTtJLmluc2VydEJlZm9yZShULm5vZGUsUC5ub2RlKX19fSx7a2V5OlwiYWRkSW1hZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXQucGF0aCxzPXQueCxyPXZvaWQgMD09PXM/MDpzLG89dC55LG49dm9pZCAwPT09bz8wOm8sbD10LndpZHRoLGg9dm9pZCAwPT09bD8yMDpsLGM9dC5oZWlnaHQsZD12b2lkIDA9PT1jPzIwOmMsZz10LmFwcGVuZFRvLHU9dm9pZCAwPT09Zz9cIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zXCI6ZyxwPWkuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UoYSk7cC5zaXplKGgsZCkubW92ZShyLG4pO3ZhciBmPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IodSk7cmV0dXJuIGYmJmYuYXBwZW5kQ2hpbGQocC5ub2RlKSxwfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7cGFyYW1zOnQscHVzaFRvTWVtb3J5OmUsY29udGV4dDppLHR5cGU6XCJ4YXhpc1wiLGNvbnRleHRNZXRob2Q6aS5hZGRYYXhpc0Fubm90YXRpb259KSxpfX0se2tleTpcImFkZFlheGlzQW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7cGFyYW1zOnQscHVzaFRvTWVtb3J5OmUsY29udGV4dDppLHR5cGU6XCJ5YXhpc1wiLGNvbnRleHRNZXRob2Q6aS5hZGRZYXhpc0Fubm90YXRpb259KSxpfX0se2tleTpcImFkZFBvaW50QW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB2b2lkIDA9PT10aGlzLmludmVydEF4aXMmJih0aGlzLmludmVydEF4aXM9aS53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKSx0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7cGFyYW1zOnQscHVzaFRvTWVtb3J5OmUsY29udGV4dDppLHR5cGU6XCJwb2ludFwiLGNvbnRleHRNZXRob2Q6aS5hZGRQb2ludEFubm90YXRpb259KSxpfX0se2tleTpcImFkZEFubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQucGFyYW1zLGk9dC5wdXNoVG9NZW1vcnksYT10LmNvbnRleHQscz10LnR5cGUscj10LmNvbnRleHRNZXRob2Qsbz1hLG49by53LGw9bi5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChzLFwiLWFubm90YXRpb25zXCIpKSxoPWwuY2hpbGROb2Rlcy5sZW5ndGgrMSxjPW5ldyBMLGQ9T2JqZWN0LmFzc2lnbih7fSxcInhheGlzXCI9PT1zP2MueEF4aXNBbm5vdGF0aW9uOlwieWF4aXNcIj09PXM/Yy55QXhpc0Fubm90YXRpb246Yy5wb2ludEFubm90YXRpb24pLGc9eC5leHRlbmQoZCxlKTtzd2l0Y2gocyl7Y2FzZVwieGF4aXNcIjp0aGlzLmFkZFhheGlzQW5ub3RhdGlvbihnLGwsaCk7YnJlYWs7Y2FzZVwieWF4aXNcIjp0aGlzLmFkZFlheGlzQW5ub3RhdGlvbihnLGwsaCk7YnJlYWs7Y2FzZVwicG9pbnRcIjp0aGlzLmFkZFBvaW50QW5ub3RhdGlvbihnLGwsaCl9dmFyIHU9bi5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChzLFwiLWFubm90YXRpb25zIC5hcGV4Y2hhcnRzLVwiKS5jb25jYXQocyxcIi1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIpLmNvbmNhdChoLFwiJ11cIikpLHA9dGhpcy5oZWxwZXJzLmFkZEJhY2tncm91bmRUb0Fubm8odSxnKTtyZXR1cm4gcCYmbC5pbnNlcnRCZWZvcmUocC5ub2RlLHUpLGkmJm4uZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5wdXNoKHtjb250ZXh0Om8saWQ6Zy5pZD9nLmlkOngucmFuZG9tSWQoKSxtZXRob2Q6cixsYWJlbDpcImFkZEFubm90YXRpb25cIixwYXJhbXM6ZX0pLGF9fSx7a2V5OlwiY2xlYXJBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudyxpPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9ucywgLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMsIC5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCIpO2UuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5tYXAoKGZ1bmN0aW9uKHQsaSl7XCJhZGRUZXh0XCIhPT10LmxhYmVsJiZcImFkZEFubm90YXRpb25cIiE9PXQubGFiZWx8fGUuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5zcGxpY2UoaSwxKX0pKSxpPXgubGlzdFRvQXJyYXkoaSksQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChpLChmdW5jdGlvbih0KXtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpfSkpfX0se2tleTpcInJlbW92ZUFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQudyxhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuXCIuY29uY2F0KGUpKTthJiYoaS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLm1hcCgoZnVuY3Rpb24odCxhKXt0LmlkPT09ZSYmaS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnNwbGljZShhLDEpfSkpLEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSwoZnVuY3Rpb24odCl7dC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHQpfSkpKX19XSksdH0oKSxJPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMubW9udGhzMzE9WzEsMyw1LDcsOCwxMCwxMl0sdGhpcy5tb250aHMzMD1bMiw0LDYsOSwxMV0sdGhpcy5kYXlzQ250T2ZZZWFyPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzRdfXJldHVybiByKHQsW3trZXk6XCJpc1ZhbGlkRGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiFpc05hTih0aGlzLnBhcnNlRGF0ZSh0KSl9fSx7a2V5OlwiZ2V0VGltZVN0YW1wXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIERhdGUucGFyc2UodCk/dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/bmV3IERhdGUobmV3IERhdGUodCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwyNSkpLmdldFRpbWUoKTpuZXcgRGF0ZSh0KS5nZXRUaW1lKCk6dH19LHtrZXk6XCJnZXREYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP25ldyBEYXRlKG5ldyBEYXRlKHQpLnRvVVRDU3RyaW5nKCkpOm5ldyBEYXRlKHQpfX0se2tleTpcInBhcnNlRGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPURhdGUucGFyc2UodCk7aWYoIWlzTmFOKGUpKXJldHVybiB0aGlzLmdldFRpbWVTdGFtcCh0KTt2YXIgaT1EYXRlLnBhcnNlKHQucmVwbGFjZSgvLS9nLFwiL1wiKS5yZXBsYWNlKC9bYS16XSsvZ2ksXCIgXCIpKTtyZXR1cm4gaT10aGlzLmdldFRpbWVTdGFtcChpKX19LHtrZXk6XCJwYXJzZURhdGVXaXRoVGltZXpvbmVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gRGF0ZS5wYXJzZSh0LnJlcGxhY2UoLy0vZyxcIi9cIikucmVwbGFjZSgvW2Etel0rL2dpLFwiIFwiKSl9fSx7a2V5OlwiZm9ybWF0RGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMubG9jYWxlLGE9dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEMscz1bXCJcXDBcIl0uY29uY2F0KHUoaS5tb250aHMpKSxyPVtcIlxceDAxXCJdLmNvbmNhdCh1KGkuc2hvcnRNb250aHMpKSxvPVtcIlxceDAyXCJdLmNvbmNhdCh1KGkuZGF5cykpLG49W1wiXFx4MDNcIl0uY29uY2F0KHUoaS5zaG9ydERheXMpKTtmdW5jdGlvbiBsKHQsZSl7dmFyIGk9dCtcIlwiO2ZvcihlPWV8fDI7aS5sZW5ndGg8ZTspaT1cIjBcIitpO3JldHVybiBpfXZhciBoPWE/dC5nZXRVVENGdWxsWWVhcigpOnQuZ2V0RnVsbFllYXIoKTtlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSl5eXl5Ky9nLFwiJDFcIitoKSkucmVwbGFjZSgvKF58W15cXFxcXSl5eS9nLFwiJDFcIitoLnRvU3RyaW5nKCkuc3Vic3RyKDIsMikpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXkvZyxcIiQxXCIraCk7dmFyIGM9KGE/dC5nZXRVVENNb250aCgpOnQuZ2V0TW9udGgoKSkrMTtlPShlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlNTU1NKy9nLFwiJDFcIitzWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlNTU0vZyxcIiQxXCIrclswXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pTU0vZyxcIiQxXCIrbChjKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pTS9nLFwiJDFcIitjKTt2YXIgZD1hP3QuZ2V0VVRDRGF0ZSgpOnQuZ2V0RGF0ZSgpO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkZGQrL2csXCIkMVwiK29bMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkZC9nLFwiJDFcIituWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlkZC9nLFwiJDFcIitsKGQpKSkucmVwbGFjZSgvKF58W15cXFxcXSlkL2csXCIkMVwiK2QpO3ZhciBnPWE/dC5nZXRVVENIb3VycygpOnQuZ2V0SG91cnMoKSxwPWc+MTI/Zy0xMjowPT09Zz8xMjpnO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKUhIKy9nLFwiJDFcIitsKGcpKSkucmVwbGFjZSgvKF58W15cXFxcXSlIL2csXCIkMVwiK2cpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWhoKy9nLFwiJDFcIitsKHApKSkucmVwbGFjZSgvKF58W15cXFxcXSloL2csXCIkMVwiK3ApO3ZhciBmPWE/dC5nZXRVVENNaW51dGVzKCk6dC5nZXRNaW51dGVzKCk7ZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pbW0rL2csXCIkMVwiK2woZikpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKW0vZyxcIiQxXCIrZik7dmFyIHg9YT90LmdldFVUQ1NlY29uZHMoKTp0LmdldFNlY29uZHMoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlzcysvZyxcIiQxXCIrbCh4KSkpLnJlcGxhY2UoLyhefFteXFxcXF0pcy9nLFwiJDFcIit4KTt2YXIgYj1hP3QuZ2V0VVRDTWlsbGlzZWNvbmRzKCk6dC5nZXRNaWxsaXNlY29uZHMoKTtlPWUucmVwbGFjZSgvKF58W15cXFxcXSlmZmYrL2csXCIkMVwiK2woYiwzKSksYj1NYXRoLnJvdW5kKGIvMTApLGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWZmL2csXCIkMVwiK2woYikpLGI9TWF0aC5yb3VuZChiLzEwKTt2YXIgdj1nPDEyP1wiQU1cIjpcIlBNXCI7ZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZi9nLFwiJDFcIitiKSkucmVwbGFjZSgvKF58W15cXFxcXSlUVCsvZyxcIiQxXCIrdikpLnJlcGxhY2UoLyhefFteXFxcXF0pVC9nLFwiJDFcIit2LmNoYXJBdCgwKSk7dmFyIG09di50b0xvd2VyQ2FzZSgpO2U9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXR0Ky9nLFwiJDFcIittKSkucmVwbGFjZSgvKF58W15cXFxcXSl0L2csXCIkMVwiK20uY2hhckF0KDApKTt2YXIgeT0tdC5nZXRUaW1lem9uZU9mZnNldCgpLHc9YXx8IXk/XCJaXCI6eT4wP1wiK1wiOlwiLVwiO2lmKCFhKXt2YXIgaz0oeT1NYXRoLmFicyh5KSklNjA7dys9bChNYXRoLmZsb29yKHkvNjApKStcIjpcIitsKGspfWU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKUsvZyxcIiQxXCIrdyk7dmFyIEE9KGE/dC5nZXRVVENEYXkoKTp0LmdldERheSgpKSsxO3JldHVybiBlPShlPShlPShlPShlPWUucmVwbGFjZShuZXcgUmVnRXhwKG9bMF0sXCJnXCIpLG9bQV0pKS5yZXBsYWNlKG5ldyBSZWdFeHAoblswXSxcImdcIiksbltBXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChzWzBdLFwiZ1wiKSxzW2NdKSkucmVwbGFjZShuZXcgUmVnRXhwKHJbMF0sXCJnXCIpLHJbY10pKS5yZXBsYWNlKC9cXFxcKC4pL2csXCIkMVwiKX19LHtrZXk6XCJnZXRUaW1lVW5pdHNmcm9tVGltZXN0YW1wXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudzt2b2lkIDAhPT1hLmNvbmZpZy54YXhpcy5taW4mJih0PWEuY29uZmlnLnhheGlzLm1pbiksdm9pZCAwIT09YS5jb25maWcueGF4aXMubWF4JiYoZT1hLmNvbmZpZy54YXhpcy5tYXgpO3ZhciBzPXRoaXMuZ2V0RGF0ZSh0KSxyPXRoaXMuZ2V0RGF0ZShlKSxvPXRoaXMuZm9ybWF0RGF0ZShzLFwieXl5eSBNTSBkZCBISCBtbSBzcyBmZmZcIikuc3BsaXQoXCIgXCIpLG49dGhpcy5mb3JtYXREYXRlKHIsXCJ5eXl5IE1NIGRkIEhIIG1tIHNzIGZmZlwiKS5zcGxpdChcIiBcIik7cmV0dXJue21pbk1pbGxpc2Vjb25kOnBhcnNlSW50KG9bNl0sMTApLG1heE1pbGxpc2Vjb25kOnBhcnNlSW50KG5bNl0sMTApLG1pblNlY29uZDpwYXJzZUludChvWzVdLDEwKSxtYXhTZWNvbmQ6cGFyc2VJbnQobls1XSwxMCksbWluTWludXRlOnBhcnNlSW50KG9bNF0sMTApLG1heE1pbnV0ZTpwYXJzZUludChuWzRdLDEwKSxtaW5Ib3VyOnBhcnNlSW50KG9bM10sMTApLG1heEhvdXI6cGFyc2VJbnQoblszXSwxMCksbWluRGF0ZTpwYXJzZUludChvWzJdLDEwKSxtYXhEYXRlOnBhcnNlSW50KG5bMl0sMTApLG1pbk1vbnRoOnBhcnNlSW50KG9bMV0sMTApLTEsbWF4TW9udGg6cGFyc2VJbnQoblsxXSwxMCktMSxtaW5ZZWFyOnBhcnNlSW50KG9bMF0sMTApLG1heFllYXI6cGFyc2VJbnQoblswXSwxMCl9fX0se2tleTpcImlzTGVhcFllYXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCU0PT0wJiZ0JTEwMCE9MHx8dCU0MDA9PTB9fSx7a2V5OlwiY2FsY3VsY2F0ZUxhc3REYXlzT2ZNb250aFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5kZXRlcm1pbmVEYXlzT2ZNb250aHModCxlKS1pfX0se2tleTpcImRldGVybWluZURheXNPZlllYXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0zNjU7cmV0dXJuIHRoaXMuaXNMZWFwWWVhcih0KSYmKGU9MzY2KSxlfX0se2tleTpcImRldGVybWluZVJlbWFpbmluZ0RheXNPZlllYXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy5kYXlzQ250T2ZZZWFyW2VdK2k7cmV0dXJuIGU+MSYmdGhpcy5pc0xlYXBZZWFyKCkmJmErKyxhfX0se2tleTpcImRldGVybWluZURheXNPZk1vbnRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9MzA7c3dpdGNoKHQ9eC5tb250aE1vZCh0KSwhMCl7Y2FzZSB0aGlzLm1vbnRoczMwLmluZGV4T2YodCk+LTE6Mj09PXQmJihpPXRoaXMuaXNMZWFwWWVhcihlKT8yOToyOCk7YnJlYWs7Y2FzZSB0aGlzLm1vbnRoczMxLmluZGV4T2YodCk+LTE6ZGVmYXVsdDppPTMxfXJldHVybiBpfX1dKSx0fSgpLE09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50b29sdGlwS2V5Rm9ybWF0PVwiZGQgTU1NXCJ9cmV0dXJuIHIodCxbe2tleTpcInhMYWJlbEZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudztpZihcImRhdGV0aW1lXCI9PT1zLmNvbmZpZy54YXhpcy50eXBlJiZ2b2lkIDA9PT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyJiZ2b2lkIDA9PT1zLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKXt2YXIgcj1uZXcgSSh0aGlzLmN0eCk7cmV0dXJuIHIuZm9ybWF0RGF0ZShyLmdldERhdGUoZSkscy5jb25maWcudG9vbHRpcC54LmZvcm1hdCl9cmV0dXJuIHQoZSxpLGEpfX0se2tleTpcImRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpOnR9fSx7a2V5OlwiZGVmYXVsdFlGb3JtYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O3JldHVybiB4LmlzTnVtYmVyKHQpJiYodD0wIT09YS5nbG9iYWxzLnlWYWx1ZURlY2ltYWw/dC50b0ZpeGVkKHZvaWQgMCE9PWUuZGVjaW1hbHNJbkZsb2F0P2UuZGVjaW1hbHNJbkZsb2F0OmEuZ2xvYmFscy55VmFsdWVEZWNpbWFsKTphLmdsb2JhbHMubWF4WUFycltpXS1hLmdsb2JhbHMubWluWUFycltpXTw1P3QudG9GaXhlZCgxKTp0LnRvRml4ZWQoMCkpLHR9fSx7a2V5Olwic2V0TGFiZWxGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53O3JldHVybiBlLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0LmRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyKGUpfSxlLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LGUuZ2xvYmFscy50dFpGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LHZvaWQgMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI/ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcj1lLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyOmUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7aWYoeC5pc051bWJlcih0KSl7aWYoIWUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmXCJudW1lcmljXCI9PT1lLmNvbmZpZy54YXhpcy50eXBlKXtpZih4LmlzTnVtYmVyKGUuY29uZmlnLnhheGlzLmRlY2ltYWxzSW5GbG9hdCkpcmV0dXJuIHQudG9GaXhlZChlLmNvbmZpZy54YXhpcy5kZWNpbWFsc0luRmxvYXQpO3ZhciBpPWUuZ2xvYmFscy5tYXhYLWUuZ2xvYmFscy5taW5YO3JldHVybiBpPjAmJmk8MTAwP3QudG9GaXhlZCgxKTp0LnRvRml4ZWQoMCl9aWYoZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbClpZihlLmdsb2JhbHMubWF4WS1lLmdsb2JhbHMubWluWUFycjw0KXJldHVybiB0LnRvRml4ZWQoMSk7cmV0dXJuIHQudG9GaXhlZCgwKX1yZXR1cm4gdH0sXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcj9lLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcjplLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlciYmKGUuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXI9ZS5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXIpLChBcnJheS5pc0FycmF5KGUuY29uZmlnLnRvb2x0aXAueSl8fHZvaWQgMCE9PWUuY29uZmlnLnRvb2x0aXAueS5mb3JtYXR0ZXIpJiYoZS5nbG9iYWxzLnR0VmFsPWUuY29uZmlnLnRvb2x0aXAueSksdm9pZCAwIT09ZS5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciYmKGUuZ2xvYmFscy50dFpGb3JtYXR0ZXI9ZS5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciksdm9pZCAwIT09ZS5jb25maWcubGVnZW5kLmZvcm1hdHRlciYmKGUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXI9ZS5jb25maWcubGVnZW5kLmZvcm1hdHRlciksZS5jb25maWcueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXt2b2lkIDAhPT1pLmxhYmVscy5mb3JtYXR0ZXI/ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbYV09aS5sYWJlbHMuZm9ybWF0dGVyOmUuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW2FdPWZ1bmN0aW9uKHMpe3JldHVybiBlLmdsb2JhbHMueHlDaGFydHM/QXJyYXkuaXNBcnJheShzKT9zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdFlGb3JtYXR0ZXIoZSxpLGEpfSkpOnQuZGVmYXVsdFlGb3JtYXR0ZXIocyxpLGEpOnN9fSkpLGUuZ2xvYmFsc319LHtrZXk6XCJoZWF0bWFwTGFiZWxGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYoXCJoZWF0bWFwXCI9PT10LmNvbmZpZy5jaGFydC50eXBlKXt0Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQ9dC5nbG9iYWxzLnNlcmllc05hbWVzLnNsaWNlKCk7dmFyIGU9dC5nbG9iYWxzLnNlcmllc05hbWVzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCk7dC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1heD1lLHQuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW49ZX19fV0pLHR9KCksVD1mdW5jdGlvbih0KXt2YXIgZSxpPXQuaXNUaW1lbGluZSxhPXQuY3R4LHM9dC5zZXJpZXNJbmRleCxyPXQuZGF0YVBvaW50SW5kZXgsbz10LnkxLG49dC55MixsPXQudyxoPWwuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3NdW3JdLGM9bC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3NdW3JdLGQ9bC5nbG9iYWxzLmxhYmVsc1tyXSxnPWwuY29uZmlnLnNlcmllc1tzXS5uYW1lP2wuY29uZmlnLnNlcmllc1tzXS5uYW1lOlwiXCIsdT1sLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIscD1sLmNvbmZpZy50b29sdGlwLnkudGl0bGUuZm9ybWF0dGVyLGY9e3c6bCxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsc3RhcnQ6aCxlbmQ6Y307KFwiZnVuY3Rpb25cIj09dHlwZW9mIHAmJihnPXAoZyxmKSksbnVsbCE9PShlPWwuY29uZmlnLnNlcmllc1tzXS5kYXRhW3JdKSYmdm9pZCAwIT09ZSYmZS54JiYoZD1sLmNvbmZpZy5zZXJpZXNbc10uZGF0YVtyXS54KSxpKXx8XCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSYmKGQ9bmV3IE0oYSkueExhYmVsRm9ybWF0KGwuZ2xvYmFscy50dEtleUZvcm1hdHRlcixkLGQse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEkoYSkuZm9ybWF0RGF0ZSx3Omx9KSk7XCJmdW5jdGlvblwiPT10eXBlb2YgdSYmKGQ9dShkLGYpKSxOdW1iZXIuaXNGaW5pdGUobykmJk51bWJlci5pc0Zpbml0ZShuKSYmKGg9byxjPW4pO3ZhciB4PVwiXCIsYj1cIlwiLHY9bC5nbG9iYWxzLmNvbG9yc1tzXTtpZih2b2lkIDA9PT1sLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKWlmKFwiZGF0ZXRpbWVcIj09PWwuY29uZmlnLnhheGlzLnR5cGUpe3ZhciBtPW5ldyBJKGEpO3g9bS5mb3JtYXREYXRlKG0uZ2V0RGF0ZShoKSxsLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KSxiPW0uZm9ybWF0RGF0ZShtLmdldERhdGUoYyksbC5jb25maWcudG9vbHRpcC54LmZvcm1hdCl9ZWxzZSB4PWgsYj1jO2Vsc2UgeD1sLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKGgpLGI9bC5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcihjKTtyZXR1cm57c3RhcnQ6aCxlbmQ6YyxzdGFydFZhbDp4LGVuZFZhbDpiLHlsYWJlbDpkLGNvbG9yOnYsc2VyaWVzTmFtZTpnfX0sej1mdW5jdGlvbih0KXt2YXIgZT10LmNvbG9yLGk9dC5zZXJpZXNOYW1lLGE9dC55bGFiZWwscz10LnN0YXJ0LHI9dC5lbmQsbz10LnNlcmllc0luZGV4LG49dC5kYXRhUG9pbnRJbmRleCxsPXQuY3R4LnRvb2x0aXAudG9vbHRpcExhYmVscy5nZXRGb3JtYXR0ZXJzKG8pO3M9bC55TGJGb3JtYXR0ZXIocykscj1sLnlMYkZvcm1hdHRlcihyKTt2YXIgaD1sLnlMYkZvcm1hdHRlcih0LncuZ2xvYmFscy5zZXJpZXNbb11bbl0pLGM9JzxzcGFuIGNsYXNzPVwidmFsdWUgc3RhcnQtdmFsdWVcIj5cXG4gICcuY29uY2F0KHMsJ1xcbiAgPC9zcGFuPiA8c3BhbiBjbGFzcz1cInNlcGFyYXRvclwiPi08L3NwYW4+IDxzcGFuIGNsYXNzPVwidmFsdWUgZW5kLXZhbHVlXCI+XFxuICAnKS5jb25jYXQocixcIlxcbiAgPC9zcGFuPlwiKTtyZXR1cm4nPGRpdiBjbGFzcz1cImFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhclwiPjxkaXY+IDxzcGFuIGNsYXNzPVwic2VyaWVzLW5hbWVcIiBzdHlsZT1cImNvbG9yOiAnK2UrJ1wiPicrKGl8fFwiXCIpKyc8L3NwYW4+PC9kaXY+PGRpdj4gPHNwYW4gY2xhc3M9XCJjYXRlZ29yeVwiPicrYStcIjogPC9zcGFuPiBcIisodC53Lmdsb2JhbHMuY29tYm9DaGFydHM/XCJyYW5nZUFyZWFcIj09PXQudy5jb25maWcuc2VyaWVzW29dLnR5cGV8fFwicmFuZ2VCYXJcIj09PXQudy5jb25maWcuc2VyaWVzW29dLnR5cGU/YzpcIjxzcGFuPlwiLmNvbmNhdChoLFwiPC9zcGFuPlwiKTpjKStcIiA8L2Rpdj48L2Rpdj5cIn0sWD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMub3B0cz1lfXJldHVybiByKHQsW3trZXk6XCJoaWRlWUF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMub3B0cy55YXhpc1swXS5zaG93PSExLHRoaXMub3B0cy55YXhpc1swXS50aXRsZS50ZXh0PVwiXCIsdGhpcy5vcHRzLnlheGlzWzBdLmF4aXNCb3JkZXIuc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0uYXhpc1RpY2tzLnNob3c9ITEsdGhpcy5vcHRzLnlheGlzWzBdLmZsb2F0aW5nPSEwfX0se2tleTpcImxpbmVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7ZWFzaW5nOlwic3dpbmdcIn19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6NSxjdXJ2ZTpcInN0cmFpZ2h0XCJ9LG1hcmtlcnM6e3NpemU6MCxob3Zlcjp7c2l6ZU9mZnNldDo2fX0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5Olwic3BhcmtsaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5oaWRlWUF4aXMoKTtyZXR1cm4geC5leHRlbmQodCx7Z3JpZDp7c2hvdzohMSxwYWRkaW5nOntsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH19LGxlZ2VuZDp7c2hvdzohMX0seGF4aXM6e2xhYmVsczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0sYXhpc0JvcmRlcjp7c2hvdzohMX0sYXhpc1RpY2tzOntzaG93OiExfX0sY2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfX0pfX0se2tleTpcImJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OntzdGFja2VkOiExLGFuaW1hdGlvbnM6e2Vhc2luZzpcInN3aW5nXCJ9fSxwbG90T3B0aW9uczp7YmFyOntkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX19LHN0cm9rZTp7d2lkdGg6MCxsaW5lQ2FwOlwicm91bmRcIn0sZmlsbDp7b3BhY2l0eTouODV9LGxlZ2VuZDp7bWFya2Vyczp7c2hhcGU6XCJzcXVhcmVcIixyYWRpdXM6MixzaXplOjh9fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7dG9vbHRpcDp7ZW5hYmxlZDohMX0sdGlja1BsYWNlbWVudDpcImJldHdlZW5cIixjcm9zc2hhaXJzOnt3aWR0aDpcImJhcldpZHRoXCIscG9zaXRpb246XCJiYWNrXCIsZmlsbDp7dHlwZTpcImdyYWRpZW50XCJ9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6MH19fX19fSx7a2V5OlwiZnVubmVsXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWRlWUF4aXMoKSxlKGUoe30sdGhpcy5iYXIoKSkse30se2NoYXJ0OnthbmltYXRpb25zOntlYXNpbmc6XCJsaW5lYXJcIixzcGVlZDo4MDAsYW5pbWF0ZUdyYWR1YWxseTp7ZW5hYmxlZDohMX19fSxwbG90T3B0aW9uczp7YmFyOntob3Jpem9udGFsOiEwLGJvcmRlclJhZGl1c0FwcGxpY2F0aW9uOlwiYXJvdW5kXCIsYm9yZGVyUmFkaXVzOjAsZGF0YUxhYmVsczp7cG9zaXRpb246XCJjZW50ZXJcIn19fSxncmlkOntzaG93OiExLHBhZGRpbmc6e2xlZnQ6MCxyaWdodDowfX0seGF4aXM6e2xhYmVsczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0sYXhpc0JvcmRlcjp7c2hvdzohMX0sYXhpc1RpY2tzOntzaG93OiExfX19KX19LHtrZXk6XCJjYW5kbGVzdGlja1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm57c3Ryb2tlOnt3aWR0aDoxLGNvbG9yczpbXCIjMzMzXCJdfSxmaWxsOntvcGFjaXR5OjF9LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHRvb2x0aXA6e3NoYXJlZDohMCxjdXN0b206ZnVuY3Rpb24oZSl7dmFyIGk9ZS5zZXJpZXNJbmRleCxhPWUuZGF0YVBvaW50SW5kZXgscz1lLnc7cmV0dXJuIHQuX2dldEJveFRvb2x0aXAocyxpLGEsW1wiT3BlblwiLFwiSGlnaFwiLFwiXCIsXCJMb3dcIixcIkNsb3NlXCJdLFwiY2FuZGxlc3RpY2tcIil9fSxzdGF0ZXM6e2FjdGl2ZTp7ZmlsdGVyOnt0eXBlOlwibm9uZVwifX19LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDoxfX19fX0se2tleTpcImJveFBsb3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntkeW5hbWljQW5pbWF0aW9uOntlbmFibGVkOiExfX19LHN0cm9rZTp7d2lkdGg6MSxjb2xvcnM6W1wiIzI0MjkyZVwiXX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiEwLGN1c3RvbTpmdW5jdGlvbihlKXt2YXIgaT1lLnNlcmllc0luZGV4LGE9ZS5kYXRhUG9pbnRJbmRleCxzPWUudztyZXR1cm4gdC5fZ2V0Qm94VG9vbHRpcChzLGksYSxbXCJNaW5pbXVtXCIsXCJRMVwiLFwiTWVkaWFuXCIsXCJRM1wiLFwiTWF4aW11bVwiXSxcImJveFBsb3RcIil9fSxtYXJrZXJzOntzaXplOjUsc3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcnM6XCIjMTExXCJ9LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDoxfX19fX0se2tleTpcInJhbmdlQmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2FuaW1hdGVHcmFkdWFsbHk6ITF9fSxzdHJva2U6e3dpZHRoOjAsbGluZUNhcDpcInNxdWFyZVwifSxwbG90T3B0aW9uczp7YmFyOntib3JkZXJSYWRpdXM6MCxkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsZm9ybWF0dGVyOmZ1bmN0aW9uKHQsZSl7ZS5jdHg7dmFyIGk9ZS5zZXJpZXNJbmRleCxhPWUuZGF0YVBvaW50SW5kZXgscz1lLncscj1mdW5jdGlvbigpe3ZhciB0PXMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W2ldW2FdO3JldHVybiBzLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbaV1bYV0tdH07cmV0dXJuIHMuZ2xvYmFscy5jb21ib0NoYXJ0cz9cInJhbmdlQmFyXCI9PT1zLmNvbmZpZy5zZXJpZXNbaV0udHlwZXx8XCJyYW5nZUFyZWFcIj09PXMuY29uZmlnLnNlcmllc1tpXS50eXBlP3IoKTp0OnIoKX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfX0sbWFya2Vyczp7c2l6ZToxMH0sdG9vbHRpcDp7c2hhcmVkOiExLGZvbGxvd0N1cnNvcjohMCxjdXN0b206ZnVuY3Rpb24odCl7cmV0dXJuIHQudy5jb25maWcucGxvdE9wdGlvbnMmJnQudy5jb25maWcucGxvdE9wdGlvbnMuYmFyJiZ0LncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsP2Z1bmN0aW9uKHQpe3ZhciBpPVQoZShlKHt9LHQpLHt9LHtpc1RpbWVsaW5lOiEwfSkpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG89aS5zdGFydFZhbCxuPWkuZW5kVmFsO3JldHVybiB6KGUoZSh7fSx0KSx7fSx7Y29sb3I6YSxzZXJpZXNOYW1lOnMseWxhYmVsOnIsc3RhcnQ6byxlbmQ6bn0pKX0odCk6ZnVuY3Rpb24odCl7dmFyIGk9VCh0KSxhPWkuY29sb3Iscz1pLnNlcmllc05hbWUscj1pLnlsYWJlbCxvPWkuc3RhcnQsbj1pLmVuZDtyZXR1cm4geihlKGUoe30sdCkse30se2NvbG9yOmEsc2VyaWVzTmFtZTpzLHlsYWJlbDpyLHN0YXJ0Om8sZW5kOm59KSl9KHQpfX0seGF4aXM6e3RpY2tQbGFjZW1lbnQ6XCJiZXR3ZWVuXCIsdG9vbHRpcDp7ZW5hYmxlZDohMX0sY3Jvc3NoYWlyczp7c3Ryb2tlOnt3aWR0aDowfX19fX19LHtrZXk6XCJkdW1iYmVsbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk7cmV0dXJuIG51bGwhPT0oZT10LnBsb3RPcHRpb25zLmJhcikmJnZvaWQgMCE9PWUmJmUuYmFySGVpZ2h0fHwodC5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0PTIpLG51bGwhPT0oaT10LnBsb3RPcHRpb25zLmJhcikmJnZvaWQgMCE9PWkmJmkuY29sdW1uV2lkdGh8fCh0LnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aD0yKSx0fX0se2tleTpcImFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntzdHJva2U6e3dpZHRoOjQsZmlsbDp7dHlwZTpcInNvbGlkXCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6XCJsaWdodFwiLHR5cGU6XCJ2ZXJ0aWNhbFwiLG9wYWNpdHlGcm9tOi42NSxvcGFjaXR5VG86LjUsc3RvcHM6WzAsMTAwLDEwMF19fX0sZmlsbDp7dHlwZTpcImdyYWRpZW50XCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6XCJsaWdodFwiLHR5cGU6XCJ2ZXJ0aWNhbFwiLG9wYWNpdHlGcm9tOi42NSxvcGFjaXR5VG86LjUsc3RvcHM6WzAsMTAwLDEwMF19fSxtYXJrZXJzOntzaXplOjAsaG92ZXI6e3NpemVPZmZzZXQ6Nn19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMX19fX0se2tleTpcInJhbmdlQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7Y3VydmU6XCJzdHJhaWdodFwiLHdpZHRoOjB9LGZpbGw6e3R5cGU6XCJzb2xpZFwiLG9wYWNpdHk6LjZ9LG1hcmtlcnM6e3NpemU6MH0sc3RhdGVzOntob3Zlcjp7ZmlsdGVyOnt0eXBlOlwibm9uZVwifX0sYWN0aXZlOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fX0sdG9vbHRpcDp7aW50ZXJzZWN0OiExLHNoYXJlZDohMCxmb2xsb3dDdXJzb3I6ITAsY3VzdG9tOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgaT1UKHQpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG89aS5zdGFydCxuPWkuZW5kO3JldHVybiB6KGUoZSh7fSx0KSx7fSx7Y29sb3I6YSxzZXJpZXNOYW1lOnMseWxhYmVsOnIsc3RhcnQ6byxlbmQ6bn0pKX0odCl9fX19fSx7a2V5OlwiYnJ1c2hcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4geC5leHRlbmQodCx7Y2hhcnQ6e3Rvb2xiYXI6e2F1dG9TZWxlY3RlZDpcInNlbGVjdGlvblwiLHNob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSxzdHJva2U6e3dpZHRoOjF9LHRvb2x0aXA6e2VuYWJsZWQ6ITF9LHhheGlzOnt0b29sdGlwOntlbmFibGVkOiExfX19KX19LHtrZXk6XCJzdGFja2VkMTAwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5kYXRhTGFiZWxzPXQuZGF0YUxhYmVsc3x8e30sdC5kYXRhTGFiZWxzLmZvcm1hdHRlcj10LmRhdGFMYWJlbHMuZm9ybWF0dGVyfHx2b2lkIDA7dmFyIGU9dC5kYXRhTGFiZWxzLmZvcm1hdHRlcjtyZXR1cm4gdC55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3QueWF4aXNbaV0ubWluPTAsdC55YXhpc1tpXS5tYXg9MTAwfSkpLFwiYmFyXCI9PT10LmNoYXJ0LnR5cGUmJih0LmRhdGFMYWJlbHMuZm9ybWF0dGVyPWV8fGZ1bmN0aW9uKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0P3QudG9GaXhlZCgwKStcIiVcIjp0fSksdH19LHtrZXk6XCJzdGFja2VkQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5iYXIoKTtyZXR1cm4gZShlKHt9LHQpLHt9LHtwbG90T3B0aW9uczplKGUoe30sdC5wbG90T3B0aW9ucykse30se2JhcjplKGUoe30sdC5wbG90T3B0aW9ucy5iYXIpLHt9LHtib3JkZXJSYWRpdXNBcHBsaWNhdGlvbjpcImVuZFwiLGJvcmRlclJhZGl1c1doZW5TdGFja2VkOlwibGFzdFwifSl9KX0pfX0se2tleTpcImNvbnZlcnRDYXRUb051bWVyaWNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM9ITAsdH19LHtrZXk6XCJjb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dC54YXhpcy50eXBlPVwibnVtZXJpY1wiLHQueGF4aXMubGFiZWxzPXQueGF4aXMubGFiZWxzfHx7fSx0LnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9dC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyfHxmdW5jdGlvbih0KXtyZXR1cm4geC5pc051bWJlcih0KT9NYXRoLmZsb29yKHQpOnR9O3ZhciBhPXQueGF4aXMubGFiZWxzLmZvcm1hdHRlcixzPXQueGF4aXMuY2F0ZWdvcmllcyYmdC54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD90LnhheGlzLmNhdGVnb3JpZXM6dC5sYWJlbHM7cmV0dXJuIGkmJmkubGVuZ3RoJiYocz1pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dDpTdHJpbmcodCl9KSkpLHMmJnMubGVuZ3RoJiYodC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB4LmlzTnVtYmVyKHQpP2Eoc1tNYXRoLmZsb29yKHQpLTFdKTphKHQpfSksdC54YXhpcy5jYXRlZ29yaWVzPVtdLHQubGFiZWxzPVtdLHQueGF4aXMudGlja0Ftb3VudD10LnhheGlzLnRpY2tBbW91bnR8fFwiZGF0YVBvaW50c1wiLHR9fSx7a2V5OlwiYnViYmxlXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfX0sdG9vbHRpcDp7c2hhcmVkOiExLGludGVyc2VjdDohMH0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjB9fSxmaWxsOnt0eXBlOlwic29saWRcIixncmFkaWVudDp7c2hhZGU6XCJsaWdodFwiLGludmVyc2U6ITAsc2hhZGVJbnRlbnNpdHk6LjU1LG9wYWNpdHlGcm9tOi40LG9wYWNpdHlUbzouOH19fX19LHtrZXk6XCJzY2F0dGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiExLGludGVyc2VjdDohMH0sbWFya2Vyczp7c2l6ZTo2LHN0cm9rZVdpZHRoOjEsaG92ZXI6e3NpemVPZmZzZXQ6Mn19fX19LHtrZXk6XCJoZWF0bWFwXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3N0YWNrZWQ6ITF9LGZpbGw6e29wYWNpdHk6MX0sZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfX0sc3Ryb2tlOntjb2xvcnM6W1wiI2ZmZlwiXX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiEwLG1hcmtlcjp7c2hvdzohMX0seDp7c2hvdzohMX19LGxlZ2VuZDp7cG9zaXRpb246XCJ0b3BcIixtYXJrZXJzOntzaGFwZTpcInNxdWFyZVwiLHNpemU6MTAsb2Zmc2V0WToyfX0sZ3JpZDp7cGFkZGluZzp7cmlnaHQ6MjB9fX19fSx7a2V5OlwidHJlZW1hcFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0Ont6b29tOntlbmFibGVkOiExfX0sZGF0YUxhYmVsczp7c3R5bGU6e2ZvbnRTaXplOjE0LGZvbnRXZWlnaHQ6NjAwLGNvbG9yczpbXCIjZmZmXCJdfX0sc3Ryb2tlOntzaG93OiEwLHdpZHRoOjIsY29sb3JzOltcIiNmZmZcIl19LGxlZ2VuZDp7c2hvdzohMX0sZmlsbDp7Z3JhZGllbnQ6e3N0b3BzOlswLDEwMF19fSx0b29sdGlwOntmb2xsb3dDdXJzb3I6ITAseDp7c2hvdzohMX19LGdyaWQ6e3BhZGRpbmc6e2xlZnQ6MCxyaWdodDowfX0seGF4aXM6e2Nyb3NzaGFpcnM6e3Nob3c6ITF9LHRvb2x0aXA6e2VuYWJsZWQ6ITF9fX19fSx7a2V5OlwicGllXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxwbG90T3B0aW9uczp7cGllOntkb251dDp7bGFiZWxzOntzaG93OiExfX19fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9GaXhlZCgxKStcIiVcIn0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxkcm9wU2hhZG93OntlbmFibGVkOiEwfX0sc3Ryb2tlOntjb2xvcnM6W1wiI2ZmZlwiXX0sZmlsbDp7b3BhY2l0eToxLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsc3RvcHM6WzAsMTAwXX19LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJkb251dFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0Ont0b29sYmFyOntzaG93OiExfX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvRml4ZWQoMSkrXCIlXCJ9LHN0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMH19LHN0cm9rZTp7Y29sb3JzOltcIiNmZmZcIl19LGZpbGw6e29wYWNpdHk6MSxncmFkaWVudDp7c2hhZGU6XCJsaWdodFwiLHNoYWRlSW50ZW5zaXR5Oi4zNSxzdG9wczpbODAsMTAwXSxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxfX0sdG9vbHRpcDp7dGhlbWU6XCJkYXJrXCIsZmlsbFNlcmllc0NvbG9yOiEwfSxsZWdlbmQ6e3Bvc2l0aW9uOlwicmlnaHRcIn19fX0se2tleTpcInBvbGFyQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0cy55YXhpc1swXS50aWNrQW1vdW50PXRoaXMub3B0cy55YXhpc1swXS50aWNrQW1vdW50P3RoaXMub3B0cy55YXhpc1swXS50aWNrQW1vdW50OjYse2NoYXJ0Ont0b29sYmFyOntzaG93OiExfX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvRml4ZWQoMSkrXCIlXCJ9LGVuYWJsZWQ6ITF9LHN0cm9rZTp7c2hvdzohMCx3aWR0aDoyfSxmaWxsOntvcGFjaXR5Oi43fSx0b29sdGlwOnt0aGVtZTpcImRhcmtcIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246XCJyaWdodFwifX19fSx7a2V5OlwicmFkYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk9dGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZP3RoaXMub3B0cy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WTo2LHtkYXRhTGFiZWxzOntlbmFibGVkOiExLHN0eWxlOntmb250U2l6ZTpcIjExcHhcIn19LHN0cm9rZTp7d2lkdGg6Mn0sbWFya2Vyczp7c2l6ZTozLHN0cm9rZVdpZHRoOjEsc3Ryb2tlT3BhY2l0eToxfSxmaWxsOntvcGFjaXR5Oi4yfSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwLGZvbGxvd0N1cnNvcjohMH0sZ3JpZDp7c2hvdzohMX0seGF4aXM6e2xhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxzdHlsZTp7Y29sb3JzOltcIiNhOGE4YThcIl0sZm9udFNpemU6XCIxMXB4XCJ9fSx0b29sdGlwOntlbmFibGVkOiExfSxjcm9zc2hhaXJzOntzaG93OiExfX19fX0se2tleTpcInJhZGlhbEJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntkeW5hbWljQW5pbWF0aW9uOntlbmFibGVkOiEwLHNwZWVkOjgwMH19LHRvb2xiYXI6e3Nob3c6ITF9fSxmaWxsOntncmFkaWVudDp7c2hhZGU6XCJkYXJrXCIsc2hhZGVJbnRlbnNpdHk6LjQsaW52ZXJzZUNvbG9yczohMSx0eXBlOlwiZGlhZ29uYWwyXCIsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbNzAsOTgsMTAwXX19LGxlZ2VuZDp7c2hvdzohMSxwb3NpdGlvbjpcInJpZ2h0XCJ9LHRvb2x0aXA6e2VuYWJsZWQ6ITEsZmlsbFNlcmllc0NvbG9yOiEwfX19fSx7a2V5OlwiX2dldEJveFRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3ZhciByPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2VdW2ldLG89dC5nbG9iYWxzLnNlcmllc0NhbmRsZUhbZV1baV0sbj10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVtlXVtpXSxsPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW2ldLGg9dC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1baV07cmV0dXJuIHQuY29uZmlnLnNlcmllc1tlXS50eXBlJiZ0LmNvbmZpZy5zZXJpZXNbZV0udHlwZSE9PXM/JzxkaXYgY2xhc3M9XCJhcGV4Y2hhcnRzLWN1c3RvbS10b29sdGlwXCI+XFxuICAgICAgICAgICcuY29uY2F0KHQuY29uZmlnLnNlcmllc1tlXS5uYW1lP3QuY29uZmlnLnNlcmllc1tlXS5uYW1lOlwic2VyaWVzLVwiKyhlKzEpLFwiOiA8c3Ryb25nPlwiKS5jb25jYXQodC5nbG9iYWxzLnNlcmllc1tlXVtpXSxcIjwvc3Ryb25nPlxcbiAgICAgICAgPC9kaXY+XCIpOic8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLWJveCBhcGV4Y2hhcnRzLXRvb2x0aXAtJy5jb25jYXQodC5jb25maWcuY2hhcnQudHlwZSwnXCI+JykrXCI8ZGl2PlwiLmNvbmNhdChhWzBdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStyK1wiPC9zcGFuPjwvZGl2PlwiK1wiPGRpdj5cIi5jb25jYXQoYVsxXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrbytcIjwvc3Bhbj48L2Rpdj5cIisobj9cIjxkaXY+XCIuY29uY2F0KGFbMl0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK24rXCI8L3NwYW4+PC9kaXY+XCI6XCJcIikrXCI8ZGl2PlwiLmNvbmNhdChhWzNdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStsK1wiPC9zcGFuPjwvZGl2PlwiK1wiPGRpdj5cIi5jb25jYXQoYVs0XSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykraCtcIjwvc3Bhbj48L2Rpdj48L2Rpdj5cIn19XSksdH0oKSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5vcHRzPWV9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnJlc3BvbnNpdmVPdmVycmlkZSxhPXRoaXMub3B0cyxzPW5ldyBMLHI9bmV3IFgoYSk7dGhpcy5jaGFydFR5cGU9YS5jaGFydC50eXBlLGE9dGhpcy5leHRlbmRZQXhpcyhhKSxhPXRoaXMuZXh0ZW5kQW5ub3RhdGlvbnMoYSk7dmFyIG89cy5pbml0KCksbj17fTtpZihhJiZcIm9iamVjdFwiPT09aShhKSl7dmFyIGwsaCxjLGQsZyx1LHAsZixiLHYsbT17fTttPS0xIT09W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiYnViYmxlXCIsXCJzY2F0dGVyXCIsXCJoZWF0bWFwXCIsXCJ0cmVlbWFwXCIsXCJwaWVcIixcInBvbGFyQXJlYVwiLFwiZG9udXRcIixcInJhZGFyXCIsXCJyYWRpYWxCYXJcIl0uaW5kZXhPZihhLmNoYXJ0LnR5cGUpP3JbYS5jaGFydC50eXBlXSgpOnIubGluZSgpLG51bGwhPT0obD1hLnBsb3RPcHRpb25zKSYmdm9pZCAwIT09bCYmbnVsbCE9PShoPWwuYmFyKSYmdm9pZCAwIT09aCYmaC5pc0Z1bm5lbCYmKG09ci5mdW5uZWwoKSksYS5jaGFydC5zdGFja2VkJiZcImJhclwiPT09YS5jaGFydC50eXBlJiYobT1yLnN0YWNrZWRCYXJzKCkpLG51bGwhPT0oYz1hLmNoYXJ0LmJydXNoKSYmdm9pZCAwIT09YyYmYy5lbmFibGVkJiYobT1yLmJydXNoKG0pKSxhLmNoYXJ0LnN0YWNrZWQmJlwiMTAwJVwiPT09YS5jaGFydC5zdGFja1R5cGUmJihhPXIuc3RhY2tlZDEwMChhKSksbnVsbCE9PShkPWEucGxvdE9wdGlvbnMpJiZ2b2lkIDAhPT1kJiZudWxsIT09KGc9ZC5iYXIpJiZ2b2lkIDAhPT1nJiZnLmlzRHVtYmJlbGwmJihhPXIuZHVtYmJlbGwoYSkpLFwibW9ub3RvbmVDdWJpY1wiPT09KG51bGw9PT0odT1hKXx8dm9pZCAwPT09dXx8bnVsbD09PShwPXUuc3Ryb2tlKXx8dm9pZCAwPT09cD92b2lkIDA6cC5jdXJ2ZSkmJihhLnN0cm9rZS5jdXJ2ZT1cInNtb290aFwiKSx0aGlzLmNoZWNrRm9yRGFya1RoZW1lKHdpbmRvdy5BcGV4KSx0aGlzLmNoZWNrRm9yRGFya1RoZW1lKGEpLGEueGF4aXM9YS54YXhpc3x8d2luZG93LkFwZXgueGF4aXN8fHt9LGV8fChhLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz0hMSksKG51bGwhPT0oZj0oYT10aGlzLmNoZWNrRm9yQ2F0VG9OdW1lcmljWEF4aXModGhpcy5jaGFydFR5cGUsbSxhKSkuY2hhcnQuc3BhcmtsaW5lKSYmdm9pZCAwIT09ZiYmZi5lbmFibGVkfHxudWxsIT09KGI9d2luZG93LkFwZXguY2hhcnQpJiZ2b2lkIDAhPT1iJiZudWxsIT09KHY9Yi5zcGFya2xpbmUpJiZ2b2lkIDAhPT12JiZ2LmVuYWJsZWQpJiYobT1yLnNwYXJrbGluZShtKSksbj14LmV4dGVuZChvLG0pfXZhciB5PXguZXh0ZW5kKG4sd2luZG93LkFwZXgpO3JldHVybiBvPXguZXh0ZW5kKHksYSksbz10aGlzLmhhbmRsZVVzZXJJbnB1dEVycm9ycyhvKX19LHtrZXk6XCJjaGVja0ZvckNhdFRvTnVtZXJpY1hBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhLHMscj1uZXcgWChpKSxvPShcImJhclwiPT09dHx8XCJib3hQbG90XCI9PT10KSYmKG51bGw9PT0oYT1pLnBsb3RPcHRpb25zKXx8dm9pZCAwPT09YXx8bnVsbD09PShzPWEuYmFyKXx8dm9pZCAwPT09cz92b2lkIDA6cy5ob3Jpem9udGFsKSxuPVwicGllXCI9PT10fHxcInBvbGFyQXJlYVwiPT09dHx8XCJkb251dFwiPT09dHx8XCJyYWRhclwiPT09dHx8XCJyYWRpYWxCYXJcIj09PXR8fFwiaGVhdG1hcFwiPT09dCxsPVwiZGF0ZXRpbWVcIiE9PWkueGF4aXMudHlwZSYmXCJudW1lcmljXCIhPT1pLnhheGlzLnR5cGUsaD1pLnhheGlzLnRpY2tQbGFjZW1lbnQ/aS54YXhpcy50aWNrUGxhY2VtZW50OmUueGF4aXMmJmUueGF4aXMudGlja1BsYWNlbWVudDtyZXR1cm4gb3x8bnx8IWx8fFwiYmV0d2VlblwiPT09aHx8KGk9ci5jb252ZXJ0Q2F0VG9OdW1lcmljKGkpKSxpfX0se2tleTpcImV4dGVuZFlBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1uZXcgTDsodm9pZCAwPT09dC55YXhpc3x8IXQueWF4aXN8fEFycmF5LmlzQXJyYXkodC55YXhpcykmJjA9PT10LnlheGlzLmxlbmd0aCkmJih0LnlheGlzPXt9KSx0LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXkmJndpbmRvdy5BcGV4LnlheGlzJiZ3aW5kb3cuQXBleC55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5JiYodC55YXhpcz14LmV4dGVuZCh0LnlheGlzLHdpbmRvdy5BcGV4LnlheGlzKSksdC55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5P3QueWF4aXM9W3guZXh0ZW5kKGkueUF4aXMsdC55YXhpcyldOnQueWF4aXM9eC5leHRlbmRBcnJheSh0LnlheGlzLGkueUF4aXMpO3ZhciBhPSExO3QueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5sb2dhcml0aG1pYyYmKGE9ITApfSkpO3ZhciBzPXQuc2VyaWVzO3JldHVybiBlJiYhcyYmKHM9ZS5jb25maWcuc2VyaWVzKSxhJiZzLmxlbmd0aCE9PXQueWF4aXMubGVuZ3RoJiZzLmxlbmd0aCYmKHQueWF4aXM9cy5tYXAoKGZ1bmN0aW9uKGUsYSl7aWYoZS5uYW1lfHwoc1thXS5uYW1lPVwic2VyaWVzLVwiLmNvbmNhdChhKzEpKSx0LnlheGlzW2FdKXJldHVybiB0LnlheGlzW2FdLnNlcmllc05hbWU9c1thXS5uYW1lLHQueWF4aXNbYV07dmFyIHI9eC5leHRlbmQoaS55QXhpcyx0LnlheGlzWzBdKTtyZXR1cm4gci5zaG93PSExLHJ9KSkpLGEmJnMubGVuZ3RoPjEmJnMubGVuZ3RoIT09dC55YXhpcy5sZW5ndGgmJmNvbnNvbGUud2FybihcIkEgbXVsdGktc2VyaWVzIGxvZ2FyaXRobWljIGNoYXJ0IHNob3VsZCBoYXZlIGVxdWFsIG51bWJlciBvZiBzZXJpZXMgYW5kIHktYXhlc1wiKSx0fX0se2tleTpcImV4dGVuZEFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQuYW5ub3RhdGlvbnMmJih0LmFubm90YXRpb25zPXt9LHQuYW5ub3RhdGlvbnMueWF4aXM9W10sdC5hbm5vdGF0aW9ucy54YXhpcz1bXSx0LmFubm90YXRpb25zLnBvaW50cz1bXSksdD10aGlzLmV4dGVuZFlBeGlzQW5ub3RhdGlvbnModCksdD10aGlzLmV4dGVuZFhBeGlzQW5ub3RhdGlvbnModCksdD10aGlzLmV4dGVuZFBvaW50QW5ub3RhdGlvbnModCl9fSx7a2V5OlwiZXh0ZW5kWUF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBMO3JldHVybiB0LmFubm90YXRpb25zLnlheGlzPXguZXh0ZW5kQXJyYXkodm9pZCAwIT09dC5hbm5vdGF0aW9ucy55YXhpcz90LmFubm90YXRpb25zLnlheGlzOltdLGUueUF4aXNBbm5vdGF0aW9uKSx0fX0se2tleTpcImV4dGVuZFhBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgTDtyZXR1cm4gdC5hbm5vdGF0aW9ucy54YXhpcz14LmV4dGVuZEFycmF5KHZvaWQgMCE9PXQuYW5ub3RhdGlvbnMueGF4aXM/dC5hbm5vdGF0aW9ucy54YXhpczpbXSxlLnhBeGlzQW5ub3RhdGlvbiksdH19LHtrZXk6XCJleHRlbmRQb2ludEFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEw7cmV0dXJuIHQuYW5ub3RhdGlvbnMucG9pbnRzPXguZXh0ZW5kQXJyYXkodm9pZCAwIT09dC5hbm5vdGF0aW9ucy5wb2ludHM/dC5hbm5vdGF0aW9ucy5wb2ludHM6W10sZS5wb2ludEFubm90YXRpb24pLHR9fSx7a2V5OlwiY2hlY2tGb3JEYXJrVGhlbWVcIix2YWx1ZTpmdW5jdGlvbih0KXt0LnRoZW1lJiZcImRhcmtcIj09PXQudGhlbWUubW9kZSYmKHQudG9vbHRpcHx8KHQudG9vbHRpcD17fSksXCJsaWdodFwiIT09dC50b29sdGlwLnRoZW1lJiYodC50b29sdGlwLnRoZW1lPVwiZGFya1wiKSx0LmNoYXJ0LmZvcmVDb2xvcnx8KHQuY2hhcnQuZm9yZUNvbG9yPVwiI2Y2ZjdmOFwiKSx0LmNoYXJ0LmJhY2tncm91bmR8fCh0LmNoYXJ0LmJhY2tncm91bmQ9XCIjNDI0MjQyXCIpLHQudGhlbWUucGFsZXR0ZXx8KHQudGhlbWUucGFsZXR0ZT1cInBhbGV0dGU0XCIpKX19LHtrZXk6XCJoYW5kbGVVc2VySW5wdXRFcnJvcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10O2lmKGUudG9vbHRpcC5zaGFyZWQmJmUudG9vbHRpcC5pbnRlcnNlY3QpdGhyb3cgbmV3IEVycm9yKFwidG9vbHRpcC5zaGFyZWQgY2Fubm90IGJlIGVuYWJsZWQgd2hlbiB0b29sdGlwLmludGVyc2VjdCBpcyB0cnVlLiBUdXJuIG9mZiBhbnkgb3RoZXIgb3B0aW9uIGJ5IHNldHRpbmcgaXQgdG8gZmFsc2UuXCIpO2lmKFwiYmFyXCI9PT1lLmNoYXJ0LnR5cGUmJmUucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwpe2lmKGUueWF4aXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKFwiTXVsdGlwbGUgWSBBeGlzIGZvciBiYXJzIGFyZSBub3Qgc3VwcG9ydGVkLiBTd2l0Y2ggdG8gY29sdW1uIGNoYXJ0IGJ5IHNldHRpbmcgcGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw9ZmFsc2VcIik7ZS55YXhpc1swXS5yZXZlcnNlZCYmKGUueWF4aXNbMF0ub3Bwb3NpdGU9ITApLGUueGF4aXMudG9vbHRpcC5lbmFibGVkPSExLGUueWF4aXNbMF0udG9vbHRpcC5lbmFibGVkPSExLGUuY2hhcnQuem9vbS5lbmFibGVkPSExfXJldHVyblwiYmFyXCIhPT1lLmNoYXJ0LnR5cGUmJlwicmFuZ2VCYXJcIiE9PWUuY2hhcnQudHlwZXx8ZS50b29sdGlwLnNoYXJlZCYmXCJiYXJXaWR0aFwiPT09ZS54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiZlLnNlcmllcy5sZW5ndGg+MSYmKGUueGF4aXMuY3Jvc3NoYWlycy53aWR0aD1cInRpY2tXaWR0aFwiKSxcImNhbmRsZXN0aWNrXCIhPT1lLmNoYXJ0LnR5cGUmJlwiYm94UGxvdFwiIT09ZS5jaGFydC50eXBlfHxlLnlheGlzWzBdLnJldmVyc2VkJiYoY29uc29sZS53YXJuKFwiUmV2ZXJzZWQgeS1heGlzIGluIFwiLmNvbmNhdChlLmNoYXJ0LnR5cGUsXCIgY2hhcnQgaXMgbm90IHN1cHBvcnRlZC5cIikpLGUueWF4aXNbMF0ucmV2ZXJzZWQ9ITEpLGV9fV0pLHR9KCksWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXthKHRoaXMsdCl9cmV0dXJuIHIodCxbe2tleTpcImluaXRHbG9iYWxWYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5zZXJpZXM9W10sdC5zZXJpZXNDYW5kbGVPPVtdLHQuc2VyaWVzQ2FuZGxlSD1bXSx0LnNlcmllc0NhbmRsZU09W10sdC5zZXJpZXNDYW5kbGVMPVtdLHQuc2VyaWVzQ2FuZGxlQz1bXSx0LnNlcmllc1JhbmdlU3RhcnQ9W10sdC5zZXJpZXNSYW5nZUVuZD1bXSx0LnNlcmllc1JhbmdlPVtdLHQuc2VyaWVzUGVyY2VudD1bXSx0LnNlcmllc0dvYWxzPVtdLHQuc2VyaWVzWD1bXSx0LnNlcmllc1o9W10sdC5zZXJpZXNOYW1lcz1bXSx0LnNlcmllc1RvdGFscz1bXSx0LnNlcmllc0xvZz1bXSx0LnNlcmllc0NvbG9ycz1bXSx0LnN0YWNrZWRTZXJpZXNUb3RhbHM9W10sdC5zZXJpZXNYdmFsdWVzPVtdLHQuc2VyaWVzWXZhbHVlcz1bXSx0LmxhYmVscz1bXSx0Lmhhc1hheGlzR3JvdXBzPSExLHQuZ3JvdXBzPVtdLHQuaGFzU2VyaWVzR3JvdXBzPSExLHQuc2VyaWVzR3JvdXBzPVtdLHQuY2F0ZWdvcnlMYWJlbHM9W10sdC50aW1lc2NhbGVMYWJlbHM9W10sdC5ub0xhYmVsc1Byb3ZpZGVkPSExLHQucmVzaXplVGltZXI9bnVsbCx0LnNlbGVjdGlvblJlc2l6ZVRpbWVyPW51bGwsdC5kZWxheWVkRWxlbWVudHM9W10sdC5wb2ludHNBcnJheT1bXSx0LmRhdGFMYWJlbHNSZWN0cz1bXSx0LmlzWE51bWVyaWM9ITEsdC5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITEsdC5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSExLHQuaXNEYXRhWFlaPSExLHQuaXNNdWx0aUxpbmVYPSExLHQuaXNNdWx0aXBsZVlBeGlzPSExLHQubWF4WT0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblk9TnVtYmVyLk1JTl9WQUxVRSx0Lm1pbllBcnI9W10sdC5tYXhZQXJyPVtdLHQubWF4WD0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblg9TnVtYmVyLk1BWF9WQUxVRSx0LmluaXRpYWxNYXhYPS1OdW1iZXIuTUFYX1ZBTFVFLHQuaW5pdGlhbE1pblg9TnVtYmVyLk1BWF9WQUxVRSx0Lm1heERhdGU9MCx0Lm1pbkRhdGU9TnVtYmVyLk1BWF9WQUxVRSx0Lm1pblo9TnVtYmVyLk1BWF9WQUxVRSx0Lm1heFo9LU51bWJlci5NQVhfVkFMVUUsdC5taW5YRGlmZj1OdW1iZXIuTUFYX1ZBTFVFLHQueUF4aXNTY2FsZT1bXSx0LnhBeGlzU2NhbGU9bnVsbCx0LnhBeGlzVGlja3NQb3NpdGlvbnM9W10sdC55TGFiZWxzQ29vcmRzPVtdLHQueVRpdGxlQ29vcmRzPVtdLHQuYmFyUGFkRm9yTnVtZXJpY0F4aXM9MCx0LnBhZEhvcml6b250YWw9MCx0LnhSYW5nZT0wLHQueVJhbmdlPVtdLHQuelJhbmdlPTAsdC5kYXRhUG9pbnRzPTAsdC54VGlja0Ftb3VudD0wfX0se2tleTpcImdsb2JhbFZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm57Y2hhcnRJRDpudWxsLGN1aWQ6bnVsbCxldmVudHM6e2JlZm9yZU1vdW50OltdLG1vdW50ZWQ6W10sdXBkYXRlZDpbXSxjbGlja2VkOltdLHNlbGVjdGlvbjpbXSxkYXRhUG9pbnRTZWxlY3Rpb246W10sem9vbWVkOltdLHNjcm9sbGVkOltdfSxjb2xvcnM6W10sY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxmaWxsOntjb2xvcnM6W119LHN0cm9rZTp7Y29sb3JzOltdfSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltdfX0scmFkYXJQb2x5Z29uczp7ZmlsbDp7Y29sb3JzOltdfX0sbWFya2Vyczp7Y29sb3JzOltdLHNpemU6dC5tYXJrZXJzLnNpemUsbGFyZ2VzdFNpemU6MH0sYW5pbWF0aW9uRW5kZWQ6ITEsaXNUb3VjaERldmljZTpcIm9udG91Y2hzdGFydFwiaW4gd2luZG93fHxuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyxpc0RpcnR5OiExLGlzRXhlY0NhbGxlZDohMSxpbml0aWFsQ29uZmlnOm51bGwsaW5pdGlhbFNlcmllczpbXSxsYXN0WEF4aXM6W10sbGFzdFlBeGlzOltdLGNvbHVtblNlcmllczpudWxsLGxhYmVsczpbXSx0aW1lc2NhbGVMYWJlbHM6W10sbm9MYWJlbHNQcm92aWRlZDohMSxhbGxTZXJpZXNDb2xsYXBzZWQ6ITEsY29sbGFwc2VkU2VyaWVzOltdLGNvbGxhcHNlZFNlcmllc0luZGljZXM6W10sYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzOltdLGFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXM6W10scmlzaW5nU2VyaWVzOltdLGRhdGFGb3JtYXRYTnVtZXJpYzohMSxjYXB0dXJlZFNlcmllc0luZGV4Oi0xLGNhcHR1cmVkRGF0YVBvaW50SW5kZXg6LTEsc2VsZWN0ZWREYXRhUG9pbnRzOltdLGdvbGRlblBhZGRpbmc6MzUsaW52YWxpZExvZ1NjYWxlOiExLGlnbm9yZVlBeGlzSW5kZXhlczpbXSx5QXhpc1NhbWVTY2FsZUluZGljZXM6W10sbWF4VmFsc0luQXJyYXlJbmRleDowLHJhZGlhbFNpemU6MCxzZWxlY3Rpb246dm9pZCAwLHpvb21FbmFibGVkOlwiem9vbVwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnpvb20mJnQuY2hhcnQuem9vbS5lbmFibGVkLHBhbkVuYWJsZWQ6XCJwYW5cIj09PXQuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQmJnQuY2hhcnQudG9vbGJhci50b29scy5wYW4sc2VsZWN0aW9uRW5hYmxlZDpcInNlbGVjdGlvblwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnNlbGVjdGlvbix5YXhpczpudWxsLG1vdXNlZG93bjohMSxsYXN0Q2xpZW50UG9zaXRpb246e30sdmlzaWJsZVhSYW5nZTp2b2lkIDAseVZhbHVlRGVjaW1hbDowLHRvdGFsOjAsU1ZHTlM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHN2Z1dpZHRoOjAsc3ZnSGVpZ2h0OjAsbm9EYXRhOiExLGxvY2FsZTp7fSxkb206e30sbWVtb3J5OnttZXRob2RzVG9FeGVjOltdfSxzaG91bGRBbmltYXRlOiEwLHNraXBMYXN0VGltZWxpbmVsYWJlbDohMSxza2lwRmlyc3RUaW1lbGluZWxhYmVsOiExLGRlbGF5ZWRFbGVtZW50czpbXSxheGlzQ2hhcnRzOiEwLGlzRGF0YVhZWjohMSxyZXNpemVkOiExLHJlc2l6ZVRpbWVyOm51bGwsY29tYm9DaGFydHM6ITEsZGF0YUNoYW5nZWQ6ITEscHJldmlvdXNQYXRoczpbXSxhbGxTZXJpZXNIYXNFcXVhbFg6ITAscG9pbnRzQXJyYXk6W10sZGF0YUxhYmVsc1JlY3RzOltdLGxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzOltdLGhhc051bGxWYWx1ZXM6ITEsZWFzaW5nOm51bGwsem9vbWVkOiExLGdyaWRXaWR0aDowLGdyaWRIZWlnaHQ6MCxyb3RhdGVYTGFiZWxzOiExLGRlZmF1bHRMYWJlbHM6ITEseExhYmVsRm9ybWF0dGVyOnZvaWQgMCx5TGFiZWxGb3JtYXR0ZXJzOltdLHhheGlzVG9vbHRpcEZvcm1hdHRlcjp2b2lkIDAsdHRLZXlGb3JtYXR0ZXI6dm9pZCAwLHR0VmFsOnZvaWQgMCx0dFpGb3JtYXR0ZXI6dm9pZCAwLExJTkVfSEVJR0hUX1JBVElPOjEuNjE4LHhBeGlzTGFiZWxzSGVpZ2h0OjAseEF4aXNHcm91cExhYmVsc0hlaWdodDowLHhBeGlzTGFiZWxzV2lkdGg6MCx5QXhpc0xhYmVsc1dpZHRoOjAsc2NhbGVYOjEsc2NhbGVZOjEsdHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCx0cmFuc2xhdGVZQXhpc1g6W10seUF4aXNXaWR0aHM6W10sdHJhbnNsYXRlWEF4aXNZOjAsdHJhbnNsYXRlWEF4aXNYOjAsdG9vbHRpcDpudWxsfX19LHtrZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nbG9iYWxWYXJzKHQpO3JldHVybiB0aGlzLmluaXRHbG9iYWxWYXJzKGUpLGUuaW5pdGlhbENvbmZpZz14LmV4dGVuZCh7fSx0KSxlLmluaXRpYWxTZXJpZXM9eC5jbG9uZSh0LnNlcmllcyksZS5sYXN0WEF4aXM9eC5jbG9uZShlLmluaXRpYWxDb25maWcueGF4aXMpLGUubGFzdFlBeGlzPXguY2xvbmUoZS5pbml0aWFsQ29uZmlnLnlheGlzKSxlfX1dKSx0fSgpLEY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLm9wdHM9ZX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEUodGhpcy5vcHRzKS5pbml0KHtyZXNwb25zaXZlT3ZlcnJpZGU6ITF9KTtyZXR1cm57Y29uZmlnOnQsZ2xvYmFsczoobmV3IFkpLmluaXQodCl9fX1dKSx0fSgpLFI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5vcHRzPW51bGwsdGhpcy5zZXJpZXNJbmRleD0wfXJldHVybiByKHQsW3trZXk6XCJjbGlwcGVkSW1nQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuY29uZmlnLGE9cGFyc2VJbnQoZS5nbG9iYWxzLmdyaWRXaWR0aCwxMCkscz1wYXJzZUludChlLmdsb2JhbHMuZ3JpZEhlaWdodCwxMCkscj1hPnM/YTpzLG89dC5pbWFnZSxuPTAsbD0wO3ZvaWQgMD09PXQud2lkdGgmJnZvaWQgMD09PXQuaGVpZ2h0P3ZvaWQgMCE9PWkuZmlsbC5pbWFnZS53aWR0aCYmdm9pZCAwIT09aS5maWxsLmltYWdlLmhlaWdodD8obj1pLmZpbGwuaW1hZ2Uud2lkdGgrMSxsPWkuZmlsbC5pbWFnZS5oZWlnaHQpOihuPXIrMSxsPXIpOihuPXQud2lkdGgsbD10LmhlaWdodCk7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcInBhdHRlcm5cIik7bS5zZXRBdHRycyhoLHtpZDp0LnBhdHRlcm5JRCxwYXR0ZXJuVW5pdHM6dC5wYXR0ZXJuVW5pdHM/dC5wYXR0ZXJuVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHdpZHRoOm4rXCJweFwiLGhlaWdodDpsK1wicHhcIn0pO3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsXCJpbWFnZVwiKTtoLmFwcGVuZENoaWxkKGMpLGMuc2V0QXR0cmlidXRlTlMod2luZG93LlNWRy54bGluayxcImhyZWZcIixvKSxtLnNldEF0dHJzKGMse3g6MCx5OjAscHJlc2VydmVBc3BlY3RSYXRpbzpcIm5vbmVcIix3aWR0aDpuK1wicHhcIixoZWlnaHQ6bCtcInB4XCJ9KSxjLnN0eWxlLm9wYWNpdHk9dC5vcGFjaXR5LGUuZ2xvYmFscy5kb20uZWxEZWZzLm5vZGUuYXBwZW5kQ2hpbGQoaCl9fSx7a2V5OlwiZ2V0U2VyaWVzSW5kZXhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmNvbmZpZy5jaGFydC50eXBlO3JldHVybihcImJhclwiPT09aXx8XCJyYW5nZUJhclwiPT09aSkmJmUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZHx8XCJoZWF0bWFwXCI9PT1pfHxcInRyZWVtYXBcIj09PWk/dGhpcy5zZXJpZXNJbmRleD10LnNlcmllc051bWJlcjp0aGlzLnNlcmllc0luZGV4PXQuc2VyaWVzTnVtYmVyJWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLHRoaXMuc2VyaWVzSW5kZXh9fSx7a2V5OlwiZmlsbFBhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7dGhpcy5vcHRzPXQ7dmFyIGksYSxzLHI9dGhpcy53LmNvbmZpZzt0aGlzLnNlcmllc0luZGV4PXRoaXMuZ2V0U2VyaWVzSW5kZXgodCk7dmFyIG89dGhpcy5nZXRGaWxsQ29sb3JzKClbdGhpcy5zZXJpZXNJbmRleF07dm9pZCAwIT09ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSYmKG89ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSksXCJmdW5jdGlvblwiPT10eXBlb2YgbyYmKG89byh7c2VyaWVzSW5kZXg6dGhpcy5zZXJpZXNJbmRleCxkYXRhUG9pbnRJbmRleDp0LmRhdGFQb2ludEluZGV4LHZhbHVlOnQudmFsdWUsdzplfSkpO3ZhciBuPXQuZmlsbFR5cGU/dC5maWxsVHlwZTp0aGlzLmdldEZpbGxUeXBlKHRoaXMuc2VyaWVzSW5kZXgpLGw9QXJyYXkuaXNBcnJheShyLmZpbGwub3BhY2l0eSk/ci5maWxsLm9wYWNpdHlbdGhpcy5zZXJpZXNJbmRleF06ci5maWxsLm9wYWNpdHk7dC5jb2xvciYmKG89dC5jb2xvciksb3x8KG89XCIjZmZmXCIsY29uc29sZS53YXJuKFwidW5kZWZpbmVkIGNvbG9yIC0gQXBleENoYXJ0c1wiKSk7dmFyIGg9bztpZigtMT09PW8uaW5kZXhPZihcInJnYlwiKT9vLmxlbmd0aDw5JiYoaD14LmhleFRvUmdiYShvLGwpKTpvLmluZGV4T2YoXCJyZ2JhXCIpPi0xJiYobD14LmdldE9wYWNpdHlGcm9tUkdCQShvKSksdC5vcGFjaXR5JiYobD10Lm9wYWNpdHkpLFwicGF0dGVyblwiPT09biYmKGE9dGhpcy5oYW5kbGVQYXR0ZXJuRmlsbCh7ZmlsbENvbmZpZzp0LmZpbGxDb25maWcscGF0dGVybkZpbGw6YSxmaWxsQ29sb3I6byxmaWxsT3BhY2l0eTpsLGRlZmF1bHRDb2xvcjpofSkpLFwiZ3JhZGllbnRcIj09PW4mJihzPXRoaXMuaGFuZGxlR3JhZGllbnRGaWxsKHtmaWxsQ29uZmlnOnQuZmlsbENvbmZpZyxmaWxsQ29sb3I6byxmaWxsT3BhY2l0eTpsLGk6dGhpcy5zZXJpZXNJbmRleH0pKSxcImltYWdlXCI9PT1uKXt2YXIgYz1yLmZpbGwuaW1hZ2Uuc3JjLGQ9dC5wYXR0ZXJuSUQ/dC5wYXR0ZXJuSUQ6XCJcIjt0aGlzLmNsaXBwZWRJbWdBcmVhKHtvcGFjaXR5OmwsaW1hZ2U6QXJyYXkuaXNBcnJheShjKT90LnNlcmllc051bWJlcjxjLmxlbmd0aD9jW3Quc2VyaWVzTnVtYmVyXTpjWzBdOmMsd2lkdGg6dC53aWR0aD90LndpZHRoOnZvaWQgMCxoZWlnaHQ6dC5oZWlnaHQ/dC5oZWlnaHQ6dm9pZCAwLHBhdHRlcm5Vbml0czp0LnBhdHRlcm5Vbml0cyxwYXR0ZXJuSUQ6XCJwYXR0ZXJuXCIuY29uY2F0KGUuZ2xvYmFscy5jdWlkKS5jb25jYXQodC5zZXJpZXNOdW1iZXIrMSkuY29uY2F0KGQpfSksaT1cInVybCgjcGF0dGVyblwiLmNvbmNhdChlLmdsb2JhbHMuY3VpZCkuY29uY2F0KHQuc2VyaWVzTnVtYmVyKzEpLmNvbmNhdChkLFwiKVwiKX1lbHNlIGk9XCJncmFkaWVudFwiPT09bj9zOlwicGF0dGVyblwiPT09bj9hOmg7cmV0dXJuIHQuc29saWQmJihpPWgpLGl9fSx7a2V5OlwiZ2V0RmlsbFR5cGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIEFycmF5LmlzQXJyYXkoZS5jb25maWcuZmlsbC50eXBlKT9lLmNvbmZpZy5maWxsLnR5cGVbdF06ZS5jb25maWcuZmlsbC50eXBlfX0se2tleTpcImdldEZpbGxDb2xvcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLGk9dGhpcy5vcHRzLGE9W107cmV0dXJuIHQuZ2xvYmFscy5jb21ib0NoYXJ0cz9cImxpbmVcIj09PXQuY29uZmlnLnNlcmllc1t0aGlzLnNlcmllc0luZGV4XS50eXBlP0FycmF5LmlzQXJyYXkodC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpP2E9dC5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6YS5wdXNoKHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKTpBcnJheS5pc0FycmF5KHQuZ2xvYmFscy5maWxsLmNvbG9ycyk/YT10Lmdsb2JhbHMuZmlsbC5jb2xvcnM6YS5wdXNoKHQuZ2xvYmFscy5maWxsLmNvbG9ycyk6XCJsaW5lXCI9PT1lLmNoYXJ0LnR5cGU/QXJyYXkuaXNBcnJheSh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk/YT10Lmdsb2JhbHMuc3Ryb2tlLmNvbG9yczphLnB1c2godC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpOkFycmF5LmlzQXJyYXkodC5nbG9iYWxzLmZpbGwuY29sb3JzKT9hPXQuZ2xvYmFscy5maWxsLmNvbG9yczphLnB1c2godC5nbG9iYWxzLmZpbGwuY29sb3JzKSx2b2lkIDAhPT1pLmZpbGxDb2xvcnMmJihhPVtdLEFycmF5LmlzQXJyYXkoaS5maWxsQ29sb3JzKT9hPWkuZmlsbENvbG9ycy5zbGljZSgpOmEucHVzaChpLmZpbGxDb2xvcnMpKSxhfX0se2tleTpcImhhbmRsZVBhdHRlcm5GaWxsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maWxsQ29uZmlnLGk9dC5wYXR0ZXJuRmlsbCxhPXQuZmlsbENvbG9yLHM9dC5maWxsT3BhY2l0eSxyPXQuZGVmYXVsdENvbG9yLG89dGhpcy53LmNvbmZpZy5maWxsO2UmJihvPWUpO3ZhciBuPXRoaXMub3B0cyxsPW5ldyBtKHRoaXMuY3R4KSxoPUFycmF5LmlzQXJyYXkoby5wYXR0ZXJuLnN0cm9rZVdpZHRoKT9vLnBhdHRlcm4uc3Ryb2tlV2lkdGhbdGhpcy5zZXJpZXNJbmRleF06by5wYXR0ZXJuLnN0cm9rZVdpZHRoLGM9YTtBcnJheS5pc0FycmF5KG8ucGF0dGVybi5zdHlsZSk/aT12b2lkIDAhPT1vLnBhdHRlcm4uc3R5bGVbbi5zZXJpZXNOdW1iZXJdP2wuZHJhd1BhdHRlcm4oby5wYXR0ZXJuLnN0eWxlW24uc2VyaWVzTnVtYmVyXSxvLnBhdHRlcm4ud2lkdGgsby5wYXR0ZXJuLmhlaWdodCxjLGgscyk6cjppPWwuZHJhd1BhdHRlcm4oby5wYXR0ZXJuLnN0eWxlLG8ucGF0dGVybi53aWR0aCxvLnBhdHRlcm4uaGVpZ2h0LGMsaCxzKTtyZXR1cm4gaX19LHtrZXk6XCJoYW5kbGVHcmFkaWVudEZpbGxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LmZpbGxDb2xvcixhPXQuZmlsbE9wYWNpdHkscz10LmZpbGxDb25maWcscj10Lmksbz10aGlzLncuY29uZmlnLmZpbGw7cyYmKG89ZShlKHt9LG8pLHMpKTt2YXIgbixsPXRoaXMub3B0cyxoPW5ldyBtKHRoaXMuY3R4KSxjPW5ldyB4LGQ9by5ncmFkaWVudC50eXBlLGc9aSx1PXZvaWQgMD09PW8uZ3JhZGllbnQub3BhY2l0eUZyb20/YTpBcnJheS5pc0FycmF5KG8uZ3JhZGllbnQub3BhY2l0eUZyb20pP28uZ3JhZGllbnQub3BhY2l0eUZyb21bcl06by5ncmFkaWVudC5vcGFjaXR5RnJvbTtnLmluZGV4T2YoXCJyZ2JhXCIpPi0xJiYodT14LmdldE9wYWNpdHlGcm9tUkdCQShnKSk7dmFyIHA9dm9pZCAwPT09by5ncmFkaWVudC5vcGFjaXR5VG8/YTpBcnJheS5pc0FycmF5KG8uZ3JhZGllbnQub3BhY2l0eVRvKT9vLmdyYWRpZW50Lm9wYWNpdHlUb1tyXTpvLmdyYWRpZW50Lm9wYWNpdHlUbztpZih2b2lkIDA9PT1vLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnN8fDA9PT1vLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnMubGVuZ3RoKW49XCJkYXJrXCI9PT1vLmdyYWRpZW50LnNoYWRlP2Muc2hhZGVDb2xvcigtMSpwYXJzZUZsb2F0KG8uZ3JhZGllbnQuc2hhZGVJbnRlbnNpdHkpLGkuaW5kZXhPZihcInJnYlwiKT4tMT94LnJnYjJoZXgoaSk6aSk6Yy5zaGFkZUNvbG9yKHBhcnNlRmxvYXQoby5ncmFkaWVudC5zaGFkZUludGVuc2l0eSksaS5pbmRleE9mKFwicmdiXCIpPi0xP3gucmdiMmhleChpKTppKTtlbHNlIGlmKG8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc1tsLnNlcmllc051bWJlcl0pe3ZhciBmPW8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc1tsLnNlcmllc051bWJlcl07bj1mLGYuaW5kZXhPZihcInJnYmFcIik+LTEmJihwPXguZ2V0T3BhY2l0eUZyb21SR0JBKGYpKX1lbHNlIG49aTtpZihvLmdyYWRpZW50LmdyYWRpZW50RnJvbSYmKGc9by5ncmFkaWVudC5ncmFkaWVudEZyb20pLG8uZ3JhZGllbnQuZ3JhZGllbnRUbyYmKG49by5ncmFkaWVudC5ncmFkaWVudFRvKSxvLmdyYWRpZW50LmludmVyc2VDb2xvcnMpe3ZhciBiPWc7Zz1uLG49Yn1yZXR1cm4gZy5pbmRleE9mKFwicmdiXCIpPi0xJiYoZz14LnJnYjJoZXgoZykpLG4uaW5kZXhPZihcInJnYlwiKT4tMSYmKG49eC5yZ2IyaGV4KG4pKSxoLmRyYXdHcmFkaWVudChkLGcsbix1LHAsbC5zaXplLG8uZ3JhZGllbnQuc3RvcHMsby5ncmFkaWVudC5jb2xvclN0b3BzLHIpfX1dKSx0fSgpLEg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5Olwic2V0R2xvYmFsTWFya2VyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5tYXJrZXJzLnNpemU9QXJyYXkuaXNBcnJheSh0LmNvbmZpZy5tYXJrZXJzLnNpemUpP3QuY29uZmlnLm1hcmtlcnMuc2l6ZTpbdC5jb25maWcubWFya2Vycy5zaXplXSx0Lmdsb2JhbHMubWFya2Vycy5zaXplLmxlbmd0aD4wKXtpZih0Lmdsb2JhbHMubWFya2Vycy5zaXplLmxlbmd0aDx0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCsxKWZvcih2YXIgZT0wO2U8PXQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2UrKyl2b2lkIDA9PT10Lmdsb2JhbHMubWFya2Vycy5zaXplW2VdJiZ0Lmdsb2JhbHMubWFya2Vycy5zaXplLnB1c2godC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVswXSl9ZWxzZSB0Lmdsb2JhbHMubWFya2Vycy5zaXplPXQuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNvbmZpZy5tYXJrZXJzLnNpemV9KSl9fSx7a2V5OlwicGxvdENoYXJ0TWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzLHI9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0mJmFyZ3VtZW50c1s0XSxvPXRoaXMudyxuPWUsbD10LGg9bnVsbCxjPW5ldyBtKHRoaXMuY3R4KSxkPW8uY29uZmlnLm1hcmtlcnMuZGlzY3JldGUmJm8uY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoO2lmKChvLmdsb2JhbHMubWFya2Vycy5zaXplW2VdPjB8fHJ8fGQpJiYoaD1jLmdyb3VwKHtjbGFzczpyfHxkP1wiXCI6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzXCJ9KSkuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBcnJheS5pc0FycmF5KGwueCkpZm9yKHZhciBnPTA7ZzxsLngubGVuZ3RoO2crKyl7dmFyIHU9aTsxPT09aSYmMD09PWcmJih1PTApLDE9PT1pJiYxPT09ZyYmKHU9MSk7dmFyIHA9XCJhcGV4Y2hhcnRzLW1hcmtlclwiO2lmKFwibGluZVwiIT09by5jb25maWcuY2hhcnQudHlwZSYmXCJhcmVhXCIhPT1vLmNvbmZpZy5jaGFydC50eXBlfHxvLmdsb2JhbHMuY29tYm9DaGFydHN8fG8uY29uZmlnLnRvb2x0aXAuaW50ZXJzZWN0fHwocCs9XCIgbm8tcG9pbnRlci1ldmVudHNcIiksKEFycmF5LmlzQXJyYXkoby5jb25maWcubWFya2Vycy5zaXplKT9vLmdsb2JhbHMubWFya2Vycy5zaXplW2VdPjA6by5jb25maWcubWFya2Vycy5zaXplPjApfHxyfHxkKXt4LmlzTnVtYmVyKGwueVtnXSk/cCs9XCIgd1wiLmNvbmNhdCh4LnJhbmRvbUlkKCkpOnA9XCJhcGV4Y2hhcnRzLW51bGxwb2ludFwiO3ZhciBmPXRoaXMuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpwLHNlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6dX0pO28uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdJiYoby5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uZmlsbENvbG9yJiYoZi5wb2ludEZpbGxDb2xvcj1vLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVt1XS5maWxsQ29sb3IpLG8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLnN0cm9rZUNvbG9yJiYoZi5wb2ludFN0cm9rZUNvbG9yPW8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLnN0cm9rZUNvbG9yKSksYSYmKGYucFNpemU9YSksKGwueFtnXTwwfHxsLnhbZ10+by5nbG9iYWxzLmdyaWRXaWR0aHx8bC55W2ddPC1vLmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZXx8bC55W2ddPm8uZ2xvYmFscy5ncmlkSGVpZ2h0K28uZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplKSYmKGYucFNpemU9MCksKHM9Yy5kcmF3TWFya2VyKGwueFtnXSxsLnlbZ10sZikpLmF0dHIoXCJyZWxcIix1KSxzLmF0dHIoXCJqXCIsdSkscy5hdHRyKFwiaW5kZXhcIixlKSxzLm5vZGUuc2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiLGYucFNpemUpLG5ldyB2KHRoaXMuY3R4KS5zZXRTZWxlY3Rpb25GaWx0ZXIocyxlLHUpLHRoaXMuYWRkRXZlbnRzKHMpLGgmJmguYWRkKHMpfWVsc2Ugdm9pZCAwPT09by5nbG9iYWxzLnBvaW50c0FycmF5W2VdJiYoby5nbG9iYWxzLnBvaW50c0FycmF5W2VdPVtdKSxvLmdsb2JhbHMucG9pbnRzQXJyYXlbZV0ucHVzaChbbC54W2ddLGwueVtnXV0pfXJldHVybiBofX0se2tleTpcImdldE1hcmtlckNvbmZpZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY3NzQ2xhc3MsaT10LnNlcmllc0luZGV4LGE9dC5kYXRhUG9pbnRJbmRleCxzPXZvaWQgMD09PWE/bnVsbDphLHI9dC5maW5pc2hSYWRpdXMsbz12b2lkIDA9PT1yP251bGw6cixuPXRoaXMudyxsPXRoaXMuZ2V0TWFya2VyU3R5bGUoaSksaD1uLmdsb2JhbHMubWFya2Vycy5zaXplW2ldLGM9bi5jb25maWcubWFya2VycztyZXR1cm4gbnVsbCE9PXMmJmMuZGlzY3JldGUubGVuZ3RoJiZjLmRpc2NyZXRlLm1hcCgoZnVuY3Rpb24odCl7dC5zZXJpZXNJbmRleD09PWkmJnQuZGF0YVBvaW50SW5kZXg9PT1zJiYobC5wb2ludFN0cm9rZUNvbG9yPXQuc3Ryb2tlQ29sb3IsbC5wb2ludEZpbGxDb2xvcj10LmZpbGxDb2xvcixoPXQuc2l6ZSxsLnBvaW50U2hhcGU9dC5zaGFwZSl9KSkse3BTaXplOm51bGw9PT1vP2g6byxwUmFkaXVzOmMucmFkaXVzLHdpZHRoOkFycmF5LmlzQXJyYXkoYy53aWR0aCk/Yy53aWR0aFtpXTpjLndpZHRoLGhlaWdodDpBcnJheS5pc0FycmF5KGMuaGVpZ2h0KT9jLmhlaWdodFtpXTpjLmhlaWdodCxwb2ludFN0cm9rZVdpZHRoOkFycmF5LmlzQXJyYXkoYy5zdHJva2VXaWR0aCk/Yy5zdHJva2VXaWR0aFtpXTpjLnN0cm9rZVdpZHRoLHBvaW50U3Ryb2tlQ29sb3I6bC5wb2ludFN0cm9rZUNvbG9yLHBvaW50RmlsbENvbG9yOmwucG9pbnRGaWxsQ29sb3Isc2hhcGU6bC5wb2ludFNoYXBlfHwoQXJyYXkuaXNBcnJheShjLnNoYXBlKT9jLnNoYXBlW2ldOmMuc2hhcGUpLGNsYXNzOmUscG9pbnRTdHJva2VPcGFjaXR5OkFycmF5LmlzQXJyYXkoYy5zdHJva2VPcGFjaXR5KT9jLnN0cm9rZU9wYWNpdHlbaV06Yy5zdHJva2VPcGFjaXR5LHBvaW50U3Ryb2tlRGFzaEFycmF5OkFycmF5LmlzQXJyYXkoYy5zdHJva2VEYXNoQXJyYXkpP2Muc3Ryb2tlRGFzaEFycmF5W2ldOmMuc3Ryb2tlRGFzaEFycmF5LHBvaW50RmlsbE9wYWNpdHk6QXJyYXkuaXNBcnJheShjLmZpbGxPcGFjaXR5KT9jLmZpbGxPcGFjaXR5W2ldOmMuZmlsbE9wYWNpdHksc2VyaWVzSW5kZXg6aX19fSx7a2V5OlwiYWRkRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpO3Qubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLmN0eCx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZS5jb25maWcubWFya2Vycy5vbkNsaWNrKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImRibGNsaWNrXCIsZS5jb25maWcubWFya2Vycy5vbkRibENsaWNrKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLmN0eCx0KSx7cGFzc2l2ZTohMH0pfX0se2tleTpcImdldE1hcmtlclN0eWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzLGE9ZS5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnx8ZS5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnM7cmV0dXJue3BvaW50U3Ryb2tlQ29sb3I6QXJyYXkuaXNBcnJheShhKT9hW3RdOmEscG9pbnRGaWxsQ29sb3I6QXJyYXkuaXNBcnJheShpKT9pW3RdOml9fX1dKSx0fSgpLEQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWR9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9bmV3IG0odGhpcy5jdHgpLHI9aS5yZWFsSW5kZXgsbz1pLnBvaW50c1BvcyxuPWkuelJhdGlvLGw9aS5lbFBhcmVudCxoPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyBhcGV4Y2hhcnRzLXNlcmllcy1cIi5jb25jYXQoYS5jb25maWcuY2hhcnQudHlwZSl9KTtpZihoLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXJrZXJNYXNrXCIuY29uY2F0KGEuZ2xvYmFscy5jdWlkLFwiKVwiKSksQXJyYXkuaXNBcnJheShvLngpKWZvcih2YXIgYz0wO2M8by54Lmxlbmd0aDtjKyspe3ZhciBkPWUrMSxnPSEwOzA9PT1lJiYwPT09YyYmKGQ9MCksMD09PWUmJjE9PT1jJiYoZD0xKTt2YXIgdT0wLHA9YS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtyXTtpZihuIT09MS8wKXt2YXIgZj1hLmNvbmZpZy5wbG90T3B0aW9ucy5idWJibGU7cD1hLmdsb2JhbHMuc2VyaWVzWltyXVtkXSxmLnpTY2FsaW5nJiYocC89biksZi5taW5CdWJibGVSYWRpdXMmJnA8Zi5taW5CdWJibGVSYWRpdXMmJihwPWYubWluQnViYmxlUmFkaXVzKSxmLm1heEJ1YmJsZVJhZGl1cyYmcD5mLm1heEJ1YmJsZVJhZGl1cyYmKHA9Zi5tYXhCdWJibGVSYWRpdXMpfWEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZHx8KHU9cCk7dmFyIHg9by54W2NdLGI9by55W2NdO2lmKHU9dXx8MCxudWxsIT09YiYmdm9pZCAwIT09YS5nbG9iYWxzLnNlcmllc1tyXVtkXXx8KGc9ITEpLGcpe3ZhciB2PXRoaXMuZHJhd1BvaW50KHgsYix1LHAscixkLGUpO2guYWRkKHYpfWwuYWRkKGgpfX19LHtrZXk6XCJkcmF3UG9pbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj10aGlzLncsbD1zLGg9bmV3IGIodGhpcy5jdHgpLGM9bmV3IHYodGhpcy5jdHgpLGQ9bmV3IFIodGhpcy5jdHgpLGc9bmV3IEgodGhpcy5jdHgpLHU9bmV3IG0odGhpcy5jdHgpLHA9Zy5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOlwiYXBleGNoYXJ0cy1tYXJrZXJcIixzZXJpZXNJbmRleDpsLGRhdGFQb2ludEluZGV4OnIsZmluaXNoUmFkaXVzOlwiYnViYmxlXCI9PT1uLmNvbmZpZy5jaGFydC50eXBlfHxuLmdsb2JhbHMuY29tYm9DaGFydHMmJm4uY29uZmlnLnNlcmllc1tzXSYmXCJidWJibGVcIj09PW4uY29uZmlnLnNlcmllc1tzXS50eXBlP2E6bnVsbH0pO2E9cC5wU2l6ZTt2YXIgZix4PWQuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpzLGRhdGFQb2ludEluZGV4OnIsY29sb3I6cC5wb2ludEZpbGxDb2xvcixwYXR0ZXJuVW5pdHM6XCJvYmplY3RCb3VuZGluZ0JveFwiLHZhbHVlOm4uZ2xvYmFscy5zZXJpZXNbc11bb119KTtpZihcImNpcmNsZVwiPT09cC5zaGFwZT9mPXUuZHJhd0NpcmNsZShpKTpcInNxdWFyZVwiIT09cC5zaGFwZSYmXCJyZWN0XCIhPT1wLnNoYXBlfHwoZj11LmRyYXdSZWN0KDAsMCxwLndpZHRoLXAucG9pbnRTdHJva2VXaWR0aC8yLHAuaGVpZ2h0LXAucG9pbnRTdHJva2VXaWR0aC8yLHAucFJhZGl1cykpLG4uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdJiZuLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtyXS5maWxsQ29sb3ImJih4PW4uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdLmZpbGxDb2xvciksZi5hdHRyKHt4OnQtcC53aWR0aC8yLXAucG9pbnRTdHJva2VXaWR0aC8yLHk6ZS1wLmhlaWdodC8yLXAucG9pbnRTdHJva2VXaWR0aC8yLGN4OnQsY3k6ZSxmaWxsOngsXCJmaWxsLW9wYWNpdHlcIjpwLnBvaW50RmlsbE9wYWNpdHksc3Ryb2tlOnAucG9pbnRTdHJva2VDb2xvcixyOmEsXCJzdHJva2Utd2lkdGhcIjpwLnBvaW50U3Ryb2tlV2lkdGgsXCJzdHJva2UtZGFzaGFycmF5XCI6cC5wb2ludFN0cm9rZURhc2hBcnJheSxcInN0cm9rZS1vcGFjaXR5XCI6cC5wb2ludFN0cm9rZU9wYWNpdHl9KSxuLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciB5PW4uY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7Yy5kcm9wU2hhZG93KGYseSxzKX1pZighdGhpcy5pbml0aWFsQW5pbXx8bi5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxuLmdsb2JhbHMucmVzaXplZCluLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITA7ZWxzZXt2YXIgdz1uLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkO2guYW5pbWF0ZU1hcmtlcihmLDAsXCJjaXJjbGVcIj09PXAuc2hhcGU/YTp7d2lkdGg6cC53aWR0aCxoZWlnaHQ6cC5oZWlnaHR9LHcsbi5nbG9iYWxzLmVhc2luZywoZnVuY3Rpb24oKXt3aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtoLmFuaW1hdGlvbkNvbXBsZXRlZChmKX0pLDEwMCl9KSl9aWYobi5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZcImNpcmNsZVwiPT09cC5zaGFwZSlpZih0aGlzLmR5bmFtaWNBbmltKXt2YXIgayxBLFMsQyxMPW4uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZDtudWxsIT0oQz1uLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXSYmbi5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc11bb10pJiYoaz1DLngsQT1DLnksUz12b2lkIDAhPT1DLnI/Qy5yOmEpO2Zvcih2YXIgUD0wO1A8bi5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg7UCsrKW4uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbUF0uaW5kZXg9PT1zJiYoTD0xLGE9MCk7MD09PXQmJjA9PT1lJiYoYT0wKSxoLmFuaW1hdGVDaXJjbGUoZix7Y3g6ayxjeTpBLHI6U30se2N4OnQsY3k6ZSxyOmF9LEwsbi5nbG9iYWxzLmVhc2luZyl9ZWxzZSBmLmF0dHIoe3I6YX0pO3JldHVybiBmLmF0dHIoe3JlbDpyLGo6cixpbmRleDpzLFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiOmF9KSxjLnNldFNlbGVjdGlvbkZpbHRlcihmLHMsciksZy5hZGRFdmVudHMoZiksZi5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSxmfX0se2tleTpcImNlbnRlclRleHRJbkJ1YmJsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm57eTp0Kz1wYXJzZUludChlLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS80fX19XSksdH0oKSxPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkYXRhTGFiZWxzQ29ycmVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPXRoaXMudyxsPSExLGg9bmV3IG0odGhpcy5jdHgpLmdldFRleHRSZWN0cyhpLG8pLGM9aC53aWR0aCxkPWguaGVpZ2h0O2U8MCYmKGU9MCksZT5uLmdsb2JhbHMuZ3JpZEhlaWdodCtkJiYoZT1uLmdsb2JhbHMuZ3JpZEhlaWdodCtkLzIpLHZvaWQgMD09PW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV0mJihuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdPVtdKSxuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdLnB1c2goe3g6dCx5OmUsd2lkdGg6YyxoZWlnaHQ6ZH0pO3ZhciBnPW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV0ubGVuZ3RoLTIsdT12b2lkIDAhPT1uLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbYV0/bi5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW2FdW24uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXS5sZW5ndGgtMV06MDtpZih2b2lkIDAhPT1uLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdW2ddKXt2YXIgcD1uLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdW3VdOyh0PnAueCtwLndpZHRofHxlPnAueStwLmhlaWdodHx8ZStkPHAueXx8dCtjPHAueCkmJihsPSEwKX1yZXR1cm4oMD09PXN8fHIpJiYobD0hMCkse3g6dCx5OmUsdGV4dFJlY3RzOmgsZHJhd25leHRMYWJlbDpsfX19LHtrZXk6XCJkcmF3RGF0YUxhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQudHlwZSxhPXQucG9zLHM9dC5pLHI9dC5qLG89dC5pc1JhbmdlU3RhcnQsbj10LnN0cm9rZVdpZHRoLGw9dm9pZCAwPT09bj8yOm4saD10aGlzLncsYz1uZXcgbSh0aGlzLmN0eCksZD1oLmNvbmZpZy5kYXRhTGFiZWxzLGc9MCx1PTAscD1yLGY9bnVsbDtpZighZC5lbmFibGVkfHwhQXJyYXkuaXNBcnJheShhLngpKXJldHVybiBmO2Y9Yy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCJ9KTtmb3IodmFyIHg9MDt4PGEueC5sZW5ndGg7eCsrKWlmKGc9YS54W3hdK2Qub2Zmc2V0WCx1PWEueVt4XStkLm9mZnNldFkrbCwhaXNOYU4oZykpezE9PT1yJiYwPT09eCYmKHA9MCksMT09PXImJjE9PT14JiYocD0xKTt2YXIgYj1oLmdsb2JhbHMuc2VyaWVzW3NdW3BdO1wicmFuZ2VBcmVhXCI9PT1pJiYoYj1vP2guZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3NdW3BdOmguZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtzXVtwXSk7dmFyIHY9XCJcIix5PWZ1bmN0aW9uKHQpe3JldHVybiBoLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcih0LHtjdHg6ZS5jdHgsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpwLHc6aH0pfTtpZihcImJ1YmJsZVwiPT09aC5jb25maWcuY2hhcnQudHlwZSl2PXkoYj1oLmdsb2JhbHMuc2VyaWVzWltzXVtwXSksdT1hLnlbeF0sdT1uZXcgRCh0aGlzLmN0eCkuY2VudGVyVGV4dEluQnViYmxlKHUscyxwKS55O2Vsc2Ugdm9pZCAwIT09YiYmKHY9eShiKSk7dGhpcy5wbG90RGF0YUxhYmVsc1RleHQoe3g6Zyx5OnUsdGV4dDp2LGk6cyxqOnAscGFyZW50OmYsb2Zmc2V0Q29ycmVjdGlvbjohMCxkYXRhTGFiZWxzQ29uZmlnOmguY29uZmlnLmRhdGFMYWJlbHN9KX1yZXR1cm4gZn19LHtrZXk6XCJwbG90RGF0YUxhYmVsc1RleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT10Lngscz10Lnkscj10Lmksbz10Lmosbj10LnRleHQsbD10LnRleHRBbmNob3IsaD10LmZvbnRTaXplLGM9dC5wYXJlbnQsZD10LmRhdGFMYWJlbHNDb25maWcsZz10LmNvbG9yLHU9dC5hbHdheXNEcmF3RGF0YUxhYmVsLHA9dC5vZmZzZXRDb3JyZWN0aW9uO2lmKCEoQXJyYXkuaXNBcnJheShlLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWRPblNlcmllcykmJmUuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2Yocik8MCkpe3ZhciBmPXt4OmEseTpzLGRyYXduZXh0TGFiZWw6ITAsdGV4dFJlY3RzOm51bGx9O3AmJihmPXRoaXMuZGF0YUxhYmVsc0NvcnJlY3Rpb24oYSxzLG4scixvLHUscGFyc2VJbnQoZC5zdHlsZS5mb250U2l6ZSwxMCkpKSxlLmdsb2JhbHMuem9vbWVkfHwoYT1mLngscz1mLnkpLGYudGV4dFJlY3RzJiYoYTwtMTAtZi50ZXh0UmVjdHMud2lkdGh8fGE+ZS5nbG9iYWxzLmdyaWRXaWR0aCtmLnRleHRSZWN0cy53aWR0aCsxMCkmJihuPVwiXCIpO3ZhciB4PWUuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tyXTsoKFwiYmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKSYmZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkfHxlLmNvbmZpZy5kYXRhTGFiZWxzLmRpc3RyaWJ1dGVkKSYmKHg9ZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW29dKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB4JiYoeD14KHtzZXJpZXM6ZS5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDpyLGRhdGFQb2ludEluZGV4Om8sdzplfSkpLGcmJih4PWcpO3ZhciBiPWQub2Zmc2V0WCx5PWQub2Zmc2V0WTtpZihcImJhclwiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09ZS5jb25maWcuY2hhcnQudHlwZXx8KGI9MCx5PTApLGYuZHJhd25leHRMYWJlbCl7dmFyIHc9aS5kcmF3VGV4dCh7d2lkdGg6MTAwLGhlaWdodDpwYXJzZUludChkLnN0eWxlLmZvbnRTaXplLDEwKSx4OmErYix5OnMreSxmb3JlQ29sb3I6eCx0ZXh0QW5jaG9yOmx8fGQudGV4dEFuY2hvcix0ZXh0Om4sZm9udFNpemU6aHx8ZC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmQuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OmQuc3R5bGUuZm9udFdlaWdodHx8XCJub3JtYWxcIn0pO2lmKHcuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbFwiLGN4OmEsY3k6c30pLGQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgaz1kLmRyb3BTaGFkb3c7bmV3IHYodGhpcy5jdHgpLmRyb3BTaGFkb3codyxrKX1jLmFkZCh3KSx2b2lkIDA9PT1lLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbcl0mJihlLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbcl09W10pLGUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXS5wdXNoKG8pfX19fSx7a2V5OlwiYWRkQmFja2dyb3VuZFRvRGF0YUxhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQscz1hLnBhZGRpbmcscj1hLnBhZGRpbmcvMixvPWUud2lkdGgsbj1lLmhlaWdodCxsPW5ldyBtKHRoaXMuY3R4KS5kcmF3UmVjdChlLngtcyxlLnktci8yLG8rMipzLG4rcixhLmJvcmRlclJhZGl1cyxcInRyYW5zcGFyZW50XCI9PT1pLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kP1wiI2ZmZlwiOmkuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQsYS5vcGFjaXR5LGEuYm9yZGVyV2lkdGgsYS5ib3JkZXJDb2xvcik7YS5kcm9wU2hhZG93LmVuYWJsZWQmJm5ldyB2KHRoaXMuY3R4KS5kcm9wU2hhZG93KGwsYS5kcm9wU2hhZG93KTtyZXR1cm4gbH19LHtrZXk6XCJkYXRhTGFiZWxzQmFja2dyb3VuZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKFwiYnViYmxlXCIhPT10LmNvbmZpZy5jaGFydC50eXBlKWZvcih2YXIgZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscyB0ZXh0XCIpLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGE9ZVtpXSxzPWEuZ2V0QkJveCgpLHI9bnVsbDtpZihzLndpZHRoJiZzLmhlaWdodCYmKHI9dGhpcy5hZGRCYWNrZ3JvdW5kVG9EYXRhTGFiZWwoYSxzKSkscil7YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLm5vZGUsYSk7dmFyIG89YS5nZXRBdHRyaWJ1dGUoXCJmaWxsXCIpO3QuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIXQuZ2xvYmFscy5yZXNpemVkJiYhdC5nbG9iYWxzLmRhdGFDaGFuZ2VkP3IuYW5pbWF0ZSgpLmF0dHIoe2ZpbGw6b30pOnIuYXR0cih7ZmlsbDpvfSksYS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsdC5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmZvcmVDb2xvcil9fX19LHtrZXk6XCJicmluZ0ZvcndhcmRcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsc1wiKSxpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1wbG90LXNlcmllczpsYXN0LWNoaWxkXCIpLGE9MDthPGUubGVuZ3RoO2ErKylpJiZpLmluc2VydEJlZm9yZShlW2FdLGkubmV4dFNpYmxpbmcpfX1dKSx0fSgpLE49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzPVwibGVnZW5kLW1vdXNlb3Zlci1pbmFjdGl2ZVwifXJldHVybiByKHQsW3trZXk6XCJnZXRBbGxTZXJpZXNFbHNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXNlcmllc1wiKX19LHtrZXk6XCJnZXRTZXJpZXNCeU5hbWVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtaW5uZXIgLmFwZXhjaGFydHMtc2VyaWVzW3Nlcmllc05hbWU9J1wiLmNvbmNhdCh4LmVzY2FwZVN0cmluZyh0KSxcIiddXCIpKX19LHtrZXk6XCJpc1Nlcmllc0hpZGRlblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0U2VyaWVzQnlOYW1lKHQpLGk9cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCk7cmV0dXJue2lzSGlkZGVuOmUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkXCIpLHJlYWxJbmRleDppfX19LHtrZXk6XCJhZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7ZnVuY3Rpb24gYShpKXtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylpW2FdLmluZGV4PT09ZSYmdC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWRcIil9YShpLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzKSxhKGkuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMpfX0se2tleTpcInRvZ2dsZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaXNTZXJpZXNIaWRkZW4odCk7cmV0dXJuIHRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsZS5pc0hpZGRlbiksZS5pc0hpZGRlbn19LHtrZXk6XCJzaG93U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtlLmlzSGlkZGVuJiZ0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGUucmVhbEluZGV4LCEwKX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtlLmlzSGlkZGVufHx0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGUucmVhbEluZGV4LCExKX19LHtrZXk6XCJyZXNldFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGE9dGhpcy53LHM9eC5jbG9uZShhLmdsb2JhbHMuaW5pdGlhbFNlcmllcyk7YS5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W10saT8oYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcz1bXSxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzPVtdLGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzPVtdLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzPVtdKTpzPXRoaXMuZW1wdHlDb2xsYXBzZWRTZXJpZXMocyksYS5jb25maWcuc2VyaWVzPXMsdCYmKGUmJihhLmdsb2JhbHMuem9vbWVkPSExLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpKX19LHtrZXk6XCJlbXB0eUNvbGxhcHNlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT0wO2k8dC5sZW5ndGg7aSsrKWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaSk+LTEmJih0W2ldLmRhdGE9W10pO3JldHVybiB0fX0se2tleTpcInRvZ2dsZVNlcmllc09uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztlfHwoZT10LnRhcmdldCk7dmFyIGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcywgLmFwZXhjaGFydHMtZGF0YWxhYmVsc1wiKTtpZihcIm1vdXNlbW92ZVwiPT09dC50eXBlKXt2YXIgcz1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSxyPW51bGwsbz1udWxsO2kuZ2xvYmFscy5heGlzQ2hhcnRzfHxcInJhZGlhbEJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZT9pLmdsb2JhbHMuYXhpc0NoYXJ0cz8ocj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHMsXCInXVwiKSksbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChzLFwiJ11cIikpKTpyPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQocysxLFwiJ11cIikpOnI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChzKzEsXCInXSBwYXRoXCIpKTtmb3IodmFyIG49MDtuPGEubGVuZ3RoO24rKylhW25dLmNsYXNzTGlzdC5hZGQodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKTtudWxsIT09ciYmKGkuZ2xvYmFscy5heGlzQ2hhcnRzfHxyLnBhcmVudE5vZGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpLHIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpLG51bGwhPT1vJiZvLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKSl9ZWxzZSBpZihcIm1vdXNlb3V0XCI9PT10LnR5cGUpZm9yKHZhciBsPTA7bDxhLmxlbmd0aDtsKyspYVtsXS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyl9fSx7a2V5OlwiaGlnaGxpZ2h0UmFuZ2VJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPXRoaXMudyxzPWEuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLWhlYXRtYXAtcmVjdFwiKSxyPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8cy5sZW5ndGg7ZSsrKXNbZV0uY2xhc3NMaXN0W3RdKGkubGVnZW5kSW5hY3RpdmVDbGFzcyl9O2lmKFwibW91c2Vtb3ZlXCI9PT10LnR5cGUpe3ZhciBvPXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3IoXCJhZGRcIiksZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxzLmxlbmd0aDtlKyspe3ZhciBhPXBhcnNlSW50KHNbZV0uZ2V0QXR0cmlidXRlKFwidmFsXCIpLDEwKTthPj10LmZyb20mJmE8PXQudG8mJnNbZV0uY2xhc3NMaXN0LnJlbW92ZShpLmxlZ2VuZEluYWN0aXZlQ2xhc3MpfX0oYS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLnJhbmdlc1tvXSl9ZWxzZVwibW91c2VvdXRcIj09PXQudHlwZSYmcihcInJlbW92ZVwiKX19LHtrZXk6XCJnZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlwiYXNjXCIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10saT10aGlzLncsYT0wO2lmKGkuY29uZmlnLnNlcmllcy5sZW5ndGg+MSlmb3IodmFyIHM9aS5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxhKXtyZXR1cm4gdC5kYXRhJiZ0LmRhdGEubGVuZ3RoPjAmJi0xPT09aS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKSYmKCFpLmdsb2JhbHMuY29tYm9DaGFydHN8fDA9PT1lLmxlbmd0aHx8ZS5sZW5ndGgmJmUuaW5kZXhPZihpLmNvbmZpZy5zZXJpZXNbYV0udHlwZSk+LTEpP2E6LTF9KSkscj1cImFzY1wiPT09dD8wOnMubGVuZ3RoLTE7XCJhc2NcIj09PXQ/cjxzLmxlbmd0aDpyPj0wO1wiYXNjXCI9PT10P3IrKzpyLS0paWYoLTEhPT1zW3JdKXthPXNbcl07YnJlYWt9cmV0dXJuIGF9fSx7a2V5OlwiZ2V0QmFyU2VyaWVzSW5kaWNlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmNvbWJvQ2hhcnRzP3RoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm5cImJhclwiPT09dC50eXBlfHxcImNvbHVtblwiPT09dC50eXBlP2U6LTF9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXR9KSk6dGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlfSkpfX0se2tleTpcImdldFByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztmdW5jdGlvbiBlKGUsaSxhKXtmb3IodmFyIHM9ZVtpXS5jaGlsZE5vZGVzLHI9e3R5cGU6YSxwYXRoczpbXSxyZWFsSW5kZXg6ZVtpXS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKX0sbz0wO288cy5sZW5ndGg7bysrKWlmKHNbb10uaGFzQXR0cmlidXRlKFwicGF0aFRvXCIpKXt2YXIgbj1zW29dLmdldEF0dHJpYnV0ZShcInBhdGhUb1wiKTtyLnBhdGhzLnB1c2goe2Q6bn0pfXQuZ2xvYmFscy5wcmV2aW91c1BhdGhzLnB1c2gocil9dC5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W107W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZWJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwicmFkYXJcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7Zm9yKHZhciBhLHM9KGE9aSx0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGEsXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1wiKSkpLHI9MDtyPHMubGVuZ3RoO3IrKyllKHMscixpKX0pKSx0aGlzLmhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHMoXCJidWJibGVcIiksdGhpcy5oYW5kbGVQcmV2QnViYmxlU2NhdHRlclBhdGhzKFwic2NhdHRlclwiKTt2YXIgaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsXCIgLmFwZXhjaGFydHMtc2VyaWVzXCIpKTtpZihpLmxlbmd0aD4wKWZvcih2YXIgYT1mdW5jdGlvbihlKXtmb3IodmFyIGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LmNvbmZpZy5jaGFydC50eXBlLFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoZSxcIiddIHJlY3RcIikpLGE9W10scz1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4gaVt0XS5nZXRBdHRyaWJ1dGUoZSl9LHM9e3g6cGFyc2VGbG9hdChlKFwieFwiKSkseTpwYXJzZUZsb2F0KGUoXCJ5XCIpKSx3aWR0aDpwYXJzZUZsb2F0KGUoXCJ3aWR0aFwiKSksaGVpZ2h0OnBhcnNlRmxvYXQoZShcImhlaWdodFwiKSl9O2EucHVzaCh7cmVjdDpzLGNvbG9yOmlbdF0uZ2V0QXR0cmlidXRlKFwiY29sb3JcIil9KX0scj0wO3I8aS5sZW5ndGg7cisrKXMocik7dC5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChhKX0scz0wO3M8aS5sZW5ndGg7cysrKWEocyk7dC5nbG9iYWxzLmF4aXNDaGFydHN8fCh0Lmdsb2JhbHMucHJldmlvdXNQYXRocz10Lmdsb2JhbHMuc2VyaWVzKX19LHtrZXk6XCJoYW5kbGVQcmV2QnViYmxlU2NhdHRlclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LFwiLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNcIikpO2lmKGkubGVuZ3RoPjApZm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspe2Zvcih2YXIgcz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoYSxcIiddIGNpcmNsZVwiKSkscj1bXSxvPTA7bzxzLmxlbmd0aDtvKyspci5wdXNoKHt4OnNbb10uZ2V0QXR0cmlidXRlKFwiY3hcIikseTpzW29dLmdldEF0dHJpYnV0ZShcImN5XCIpLHI6c1tvXS5nZXRBdHRyaWJ1dGUoXCJyXCIpfSk7ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChyKX19fSx7a2V5OlwiY2xlYXJQcmV2aW91c1BhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W10sdC5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZD0hMX19LHtrZXk6XCJoYW5kbGVOb0RhdGFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLm5vRGF0YSxpPW5ldyBtKHRoaXMuY3R4KSxhPXQuZ2xvYmFscy5zdmdXaWR0aC8yLHM9dC5nbG9iYWxzLnN2Z0hlaWdodC8yLHI9XCJtaWRkbGVcIjtpZih0Lmdsb2JhbHMubm9EYXRhPSEwLHQuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCxcImxlZnRcIj09PWUuYWxpZ24/KGE9MTAscj1cInN0YXJ0XCIpOlwicmlnaHRcIj09PWUuYWxpZ24mJihhPXQuZ2xvYmFscy5zdmdXaWR0aC0xMCxyPVwiZW5kXCIpLFwidG9wXCI9PT1lLnZlcnRpY2FsQWxpZ24/cz01MDpcImJvdHRvbVwiPT09ZS52ZXJ0aWNhbEFsaWduJiYocz10Lmdsb2JhbHMuc3ZnSGVpZ2h0LTUwKSxhKz1lLm9mZnNldFgscz1zK3BhcnNlSW50KGUuc3R5bGUuZm9udFNpemUsMTApKzIrZS5vZmZzZXRZLHZvaWQgMCE9PWUudGV4dCYmXCJcIiE9PWUudGV4dCl7dmFyIG89aS5kcmF3VGV4dCh7eDphLHk6cyx0ZXh0OmUudGV4dCx0ZXh0QW5jaG9yOnIsZm9udFNpemU6ZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmUuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6ZS5zdHlsZS5jb2xvcixvcGFjaXR5OjEsY2xhc3M6XCJhcGV4Y2hhcnRzLXRleHQtbm9kYXRhXCJ9KTt0Lmdsb2JhbHMuZG9tLlBhcGVyLmFkZChvKX19fSx7a2V5Olwic2V0TnVsbFNlcmllc1RvWmVyb1ZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT0wO2k8dC5sZW5ndGg7aSsrKWlmKDA9PT10W2ldLmxlbmd0aClmb3IodmFyIGE9MDthPHRbZS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDthKyspdFtpXS5wdXNoKDApO3JldHVybiB0fX0se2tleTpcImhhc0FsbFNlcmllc0VxdWFsWFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSEwLGU9dGhpcy53LGk9dGhpcy5maWx0ZXJlZFNlcmllc1goKSxhPTA7YTxpLmxlbmd0aC0xO2ErKylpZihpW2FdWzBdIT09aVthKzFdWzBdKXt0PSExO2JyZWFrfXJldHVybiBlLmdsb2JhbHMuYWxsU2VyaWVzSGFzRXF1YWxYPXQsdH19LHtrZXk6XCJmaWx0ZXJlZFNlcmllc1hcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLnNlcmllc1gubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg+MD90OltdfSkpO3JldHVybiB0fX1dKSx0fSgpLFc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50d29EU2VyaWVzPVtdLHRoaXMudGhyZWVEU2VyaWVzPVtdLHRoaXMudHdvRFNlcmllc1g9W10sdGhpcy5zZXJpZXNHb2Fscz1bXSx0aGlzLmNvcmVVdGlscz1uZXcgeSh0aGlzLmN0eCl9cmV0dXJuIHIodCxbe2tleTpcImlzTXVsdGlGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzRm9ybWF0WFkoKXx8dGhpcy5pc0Zvcm1hdDJEQXJyYXkoKX19LHtrZXk6XCJpc0Zvcm1hdFhZXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpLGU9bmV3IE4odGhpcy5jdHgpO2lmKHRoaXMuYWN0aXZlU2VyaWVzSW5kZXg9ZS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpLHZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YSYmdFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhLmxlbmd0aD4wJiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZ2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0ueCYmbnVsbCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSlyZXR1cm4hMH19LHtrZXk6XCJpc0Zvcm1hdDJEQXJyYXlcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5jb25maWcuc2VyaWVzLnNsaWNlKCksZT1uZXcgTih0aGlzLmN0eCk7aWYodGhpcy5hY3RpdmVTZXJpZXNJbmRleD1lLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCksdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEubGVuZ3RoPjAmJnZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSYmbnVsbCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSYmdFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdLmNvbnN0cnVjdG9yPT09QXJyYXkpcmV0dXJuITB9fSx7a2V5OlwiaGFuZGxlRm9ybWF0MkRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXRoaXMudy5jb25maWcsYT10aGlzLncuZ2xvYmFscyxzPVwiYm94UGxvdFwiPT09aS5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PWkuc2VyaWVzW2VdLnR5cGUscj0wO3I8dFtlXS5kYXRhLmxlbmd0aDtyKyspaWYodm9pZCAwIT09dFtlXS5kYXRhW3JdWzFdJiYoQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbcl1bMV0pJiY0PT09dFtlXS5kYXRhW3JdWzFdLmxlbmd0aCYmIXM/dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbcl1bMV1bM10pKTp0W2VdLmRhdGFbcl0ubGVuZ3RoPj01P3RoaXMudHdvRFNlcmllcy5wdXNoKHgucGFyc2VOdW1iZXIodFtlXS5kYXRhW3JdWzRdKSk6dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbcl1bMV0pKSxhLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCksXCJkYXRldGltZVwiPT09aS54YXhpcy50eXBlKXt2YXIgbz1uZXcgRGF0ZSh0W2VdLmRhdGFbcl1bMF0pO289bmV3IERhdGUobykuZ2V0VGltZSgpLHRoaXMudHdvRFNlcmllc1gucHVzaChvKX1lbHNlIHRoaXMudHdvRFNlcmllc1gucHVzaCh0W2VdLmRhdGFbcl1bMF0pO2Zvcih2YXIgbj0wO248dFtlXS5kYXRhLmxlbmd0aDtuKyspdm9pZCAwIT09dFtlXS5kYXRhW25dWzJdJiYodGhpcy50aHJlZURTZXJpZXMucHVzaCh0W2VdLmRhdGFbbl1bMl0pLGEuaXNEYXRhWFlaPSEwKX19LHtrZXk6XCJoYW5kbGVGb3JtYXRYWVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LmNvbmZpZyxhPXRoaXMudy5nbG9iYWxzLHM9bmV3IEkodGhpcy5jdHgpLHI9ZTthLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKT4tMSYmKHI9dGhpcy5hY3RpdmVTZXJpZXNJbmRleCk7Zm9yKHZhciBvPTA7bzx0W2VdLmRhdGEubGVuZ3RoO28rKyl2b2lkIDAhPT10W2VdLmRhdGFbb10ueSYmKEFycmF5LmlzQXJyYXkodFtlXS5kYXRhW29dLnkpP3RoaXMudHdvRFNlcmllcy5wdXNoKHgucGFyc2VOdW1iZXIodFtlXS5kYXRhW29dLnlbdFtlXS5kYXRhW29dLnkubGVuZ3RoLTFdKSk6dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbb10ueSkpKSx2b2lkIDAhPT10W2VdLmRhdGFbb10uZ29hbHMmJkFycmF5LmlzQXJyYXkodFtlXS5kYXRhW29dLmdvYWxzKT8odm9pZCAwPT09dGhpcy5zZXJpZXNHb2Fsc1tlXSYmKHRoaXMuc2VyaWVzR29hbHNbZV09W10pLHRoaXMuc2VyaWVzR29hbHNbZV0ucHVzaCh0W2VdLmRhdGFbb10uZ29hbHMpKToodm9pZCAwPT09dGhpcy5zZXJpZXNHb2Fsc1tlXSYmKHRoaXMuc2VyaWVzR29hbHNbZV09W10pLHRoaXMuc2VyaWVzR29hbHNbZV0ucHVzaChudWxsKSk7Zm9yKHZhciBuPTA7bjx0W3JdLmRhdGEubGVuZ3RoO24rKyl7dmFyIGw9XCJzdHJpbmdcIj09dHlwZW9mIHRbcl0uZGF0YVtuXS54LGg9QXJyYXkuaXNBcnJheSh0W3JdLmRhdGFbbl0ueCksYz0haCYmISFzLmlzVmFsaWREYXRlKHRbcl0uZGF0YVtuXS54LnRvU3RyaW5nKCkpO2lmKGx8fGMpaWYobHx8aS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpe3ZhciBkPWEuaXNCYXJIb3Jpem9udGFsJiZhLmlzUmFuZ2VEYXRhO1wiZGF0ZXRpbWVcIiE9PWkueGF4aXMudHlwZXx8ZD8odGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbcl0uZGF0YVtuXS54KSxpc05hTih0W3JdLmRhdGFbbl0ueCl8fFwiY2F0ZWdvcnlcIj09PXRoaXMudy5jb25maWcueGF4aXMudHlwZXx8XCJzdHJpbmdcIj09dHlwZW9mIHRbcl0uZGF0YVtuXS54fHwoYS5pc1hOdW1lcmljPSEwKSk6dGhpcy50d29EU2VyaWVzWC5wdXNoKHMucGFyc2VEYXRlKHRbcl0uZGF0YVtuXS54KSl9ZWxzZVwiZGF0ZXRpbWVcIj09PWkueGF4aXMudHlwZT90aGlzLnR3b0RTZXJpZXNYLnB1c2gocy5wYXJzZURhdGUodFtyXS5kYXRhW25dLngudG9TdHJpbmcoKSkpOihhLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCxhLmlzWE51bWVyaWM9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHBhcnNlRmxvYXQodFtyXS5kYXRhW25dLngpKSk7ZWxzZSBoPyh0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeT0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2godFtyXS5kYXRhW25dLngpKTooYS5pc1hOdW1lcmljPSEwLGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwLHRoaXMudHdvRFNlcmllc1gucHVzaCh0W3JdLmRhdGFbbl0ueCkpfWlmKHRbZV0uZGF0YVswXSYmdm9pZCAwIT09dFtlXS5kYXRhWzBdLnope2Zvcih2YXIgZz0wO2c8dFtlXS5kYXRhLmxlbmd0aDtnKyspdGhpcy50aHJlZURTZXJpZXMucHVzaCh0W2VdLmRhdGFbZ10ueik7YS5pc0RhdGFYWVo9ITB9fX0se2tleTpcImhhbmRsZVJhbmdlRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMsYT17fTtyZXR1cm4gdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT9hPXRoaXMuaGFuZGxlUmFuZ2VEYXRhRm9ybWF0KFwiYXJyYXlcIix0LGUpOnRoaXMuaXNGb3JtYXRYWSgpJiYoYT10aGlzLmhhbmRsZVJhbmdlRGF0YUZvcm1hdChcInh5XCIsdCxlKSksaS5zZXJpZXNSYW5nZVN0YXJ0LnB1c2goYS5zdGFydCksaS5zZXJpZXNSYW5nZUVuZC5wdXNoKGEuZW5kKSxpLnNlcmllc1JhbmdlLnB1c2goYS5yYW5nZVVuaXF1ZXMpLGkuc2VyaWVzUmFuZ2UuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0JiZ0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC55LmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7Zm9yKHZhciBhPTA7YTx0LnkubGVuZ3RoO2ErKylpZihpIT09YSl7dmFyIHM9ZS55MSxyPWUueTIsbz10LnlbYV0ueTE7czw9dC55W2FdLnkyJiZvPD1yJiYodC5vdmVybGFwcy5pbmRleE9mKGUucmFuZ2VOYW1lKTwwJiZ0Lm92ZXJsYXBzLnB1c2goZS5yYW5nZU5hbWUpLHQub3ZlcmxhcHMuaW5kZXhPZih0LnlbYV0ucmFuZ2VOYW1lKTwwJiZ0Lm92ZXJsYXBzLnB1c2godC55W2FdLnJhbmdlTmFtZSkpfX0pKX0pKX0pKSxhfX0se2tleTpcImhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMsYT17fTtyZXR1cm4gdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT9hPXRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0KFwiYXJyYXlcIix0LGUpOnRoaXMuaXNGb3JtYXRYWSgpJiYoYT10aGlzLmhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YUZvcm1hdChcInh5XCIsdCxlKSksaS5zZXJpZXNDYW5kbGVPW2VdPWEubyxpLnNlcmllc0NhbmRsZUhbZV09YS5oLGkuc2VyaWVzQ2FuZGxlTVtlXT1hLm0saS5zZXJpZXNDYW5kbGVMW2VdPWEubCxpLnNlcmllc0NhbmRsZUNbZV09YS5jLGF9fSx7a2V5OlwiaGFuZGxlUmFuZ2VEYXRhRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPVtdLHM9W10scj1lW2ldLmRhdGEuZmlsdGVyKChmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGU9PT1pLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUueD09PXQueH0pKX0pKS5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3g6dC54LG92ZXJsYXBzOltdLHk6W119fSkpO2lmKFwiYXJyYXlcIj09PXQpZm9yKHZhciBvPTA7bzxlW2ldLmRhdGEubGVuZ3RoO28rKylBcnJheS5pc0FycmF5KGVbaV0uZGF0YVtvXSk/KGEucHVzaChlW2ldLmRhdGFbb11bMV1bMF0pLHMucHVzaChlW2ldLmRhdGFbb11bMV1bMV0pKTooYS5wdXNoKGVbaV0uZGF0YVtvXSkscy5wdXNoKGVbaV0uZGF0YVtvXSkpO2Vsc2UgaWYoXCJ4eVwiPT09dClmb3IodmFyIG49ZnVuY3Rpb24odCl7dmFyIG89QXJyYXkuaXNBcnJheShlW2ldLmRhdGFbdF0ueSksbj14LnJhbmRvbUlkKCksbD1lW2ldLmRhdGFbdF0ueCxoPXt5MTpvP2VbaV0uZGF0YVt0XS55WzBdOmVbaV0uZGF0YVt0XS55LHkyOm8/ZVtpXS5kYXRhW3RdLnlbMV06ZVtpXS5kYXRhW3RdLnkscmFuZ2VOYW1lOm59O2VbaV0uZGF0YVt0XS5yYW5nZU5hbWU9bjt2YXIgYz1yLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueD09PWx9KSk7cltjXS55LnB1c2goaCksYS5wdXNoKGgueTEpLHMucHVzaChoLnkyKX0sbD0wO2w8ZVtpXS5kYXRhLmxlbmd0aDtsKyspbihsKTtyZXR1cm57c3RhcnQ6YSxlbmQ6cyxyYW5nZVVuaXF1ZXM6cn19fSx7a2V5OlwiaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPVwiYm94UGxvdFwiPT09YS5jb25maWcuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1hLmNvbmZpZy5zZXJpZXNbaV0udHlwZSxyPVtdLG89W10sbj1bXSxsPVtdLGg9W107aWYoXCJhcnJheVwiPT09dClpZihzJiY2PT09ZVtpXS5kYXRhWzBdLmxlbmd0aHx8IXMmJjU9PT1lW2ldLmRhdGFbMF0ubGVuZ3RoKWZvcih2YXIgYz0wO2M8ZVtpXS5kYXRhLmxlbmd0aDtjKyspci5wdXNoKGVbaV0uZGF0YVtjXVsxXSksby5wdXNoKGVbaV0uZGF0YVtjXVsyXSkscz8obi5wdXNoKGVbaV0uZGF0YVtjXVszXSksbC5wdXNoKGVbaV0uZGF0YVtjXVs0XSksaC5wdXNoKGVbaV0uZGF0YVtjXVs1XSkpOihsLnB1c2goZVtpXS5kYXRhW2NdWzNdKSxoLnB1c2goZVtpXS5kYXRhW2NdWzRdKSk7ZWxzZSBmb3IodmFyIGQ9MDtkPGVbaV0uZGF0YS5sZW5ndGg7ZCsrKUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW2RdWzFdKSYmKHIucHVzaChlW2ldLmRhdGFbZF1bMV1bMF0pLG8ucHVzaChlW2ldLmRhdGFbZF1bMV1bMV0pLHM/KG4ucHVzaChlW2ldLmRhdGFbZF1bMV1bMl0pLGwucHVzaChlW2ldLmRhdGFbZF1bMV1bM10pLGgucHVzaChlW2ldLmRhdGFbZF1bMV1bNF0pKToobC5wdXNoKGVbaV0uZGF0YVtkXVsxXVsyXSksaC5wdXNoKGVbaV0uZGF0YVtkXVsxXVszXSkpKTtlbHNlIGlmKFwieHlcIj09PXQpZm9yKHZhciBnPTA7ZzxlW2ldLmRhdGEubGVuZ3RoO2crKylBcnJheS5pc0FycmF5KGVbaV0uZGF0YVtnXS55KSYmKHIucHVzaChlW2ldLmRhdGFbZ10ueVswXSksby5wdXNoKGVbaV0uZGF0YVtnXS55WzFdKSxzPyhuLnB1c2goZVtpXS5kYXRhW2ddLnlbMl0pLGwucHVzaChlW2ldLmRhdGFbZ10ueVszXSksaC5wdXNoKGVbaV0uZGF0YVtnXS55WzRdKSk6KGwucHVzaChlW2ldLmRhdGFbZ10ueVsyXSksaC5wdXNoKGVbaV0uZGF0YVtnXS55WzNdKSkpO3JldHVybntvOnIsaDpvLG06bixsOmwsYzpofX19LHtrZXk6XCJwYXJzZURhdGFBeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuY3R4LHM9dGhpcy53LmNvbmZpZyxyPXRoaXMudy5nbG9iYWxzLG89bmV3IEkoYSksbj1zLmxhYmVscy5sZW5ndGg+MD9zLmxhYmVscy5zbGljZSgpOnMueGF4aXMuY2F0ZWdvcmllcy5zbGljZSgpO2lmKHIuaXNSYW5nZUJhcj1cInJhbmdlQmFyXCI9PT1zLmNoYXJ0LnR5cGUmJnIuaXNCYXJIb3Jpem9udGFsLHIuaGFzWGF4aXNHcm91cHM9XCJjYXRlZ29yeVwiPT09cy54YXhpcy50eXBlJiZzLnhheGlzLmdyb3VwLmdyb3Vwcy5sZW5ndGg+MCxyLmhhc1hheGlzR3JvdXBzJiYoci5ncm91cHM9cy54YXhpcy5ncm91cC5ncm91cHMpLHIuaGFzU2VyaWVzR3JvdXBzPW51bGw9PT0oZT10WzBdKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5ncm91cCxyLmhhc1Nlcmllc0dyb3Vwcyl7dmFyIGw9W10saD11KG5ldyBTZXQodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmdyb3VwfSkpKSk7dC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3ZhciBpPWguaW5kZXhPZih0Lmdyb3VwKTtsW2ldfHwobFtpXT1bXSksbFtpXS5wdXNoKHQubmFtZSl9KSksci5zZXJpZXNHcm91cHM9bH1mb3IodmFyIGM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKylpZihcInN0cmluZ1wiPT10eXBlb2Ygblt0XSl7aWYoIW8uaXNWYWxpZERhdGUoblt0XSkpdGhyb3cgbmV3IEVycm9yKFwiWW91IGhhdmUgcHJvdmlkZWQgaW52YWxpZCBEYXRlIGZvcm1hdC4gUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBKYXZhU2NyaXB0IERhdGVcIik7aS50d29EU2VyaWVzWC5wdXNoKG8ucGFyc2VEYXRlKG5bdF0pKX1lbHNlIGkudHdvRFNlcmllc1gucHVzaChuW3RdKX0sZD0wO2Q8dC5sZW5ndGg7ZCsrKXtpZih0aGlzLnR3b0RTZXJpZXM9W10sdGhpcy50d29EU2VyaWVzWD1bXSx0aGlzLnRocmVlRFNlcmllcz1bXSx2b2lkIDA9PT10W2RdLmRhdGEpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcihcIkl0IGlzIGEgcG9zc2liaWxpdHkgdGhhdCB5b3UgbWF5IGhhdmUgbm90IGluY2x1ZGVkICdkYXRhJyBwcm9wZXJ0eSBpbiBzZXJpZXMuXCIpO2lmKFwicmFuZ2VCYXJcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUFyZWFcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09dFtkXS50eXBlJiZcInJhbmdlQXJlYVwiIT09dFtkXS50eXBlfHwoci5pc1JhbmdlRGF0YT0hMCxyLmlzQ29tYm9DaGFydHM/XCJyYW5nZUJhclwiIT09dFtkXS50eXBlJiZcInJhbmdlQXJlYVwiIT09dFtkXS50eXBlfHx0aGlzLmhhbmRsZVJhbmdlRGF0YSh0LGQpOlwicmFuZ2VCYXJcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUFyZWFcIiE9PXMuY2hhcnQudHlwZXx8dGhpcy5oYW5kbGVSYW5nZURhdGEodCxkKSksdGhpcy5pc011bHRpRm9ybWF0KCkpdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT90aGlzLmhhbmRsZUZvcm1hdDJEQXJyYXkodCxkKTp0aGlzLmlzRm9ybWF0WFkoKSYmdGhpcy5oYW5kbGVGb3JtYXRYWSh0LGQpLFwiY2FuZGxlc3RpY2tcIiE9PXMuY2hhcnQudHlwZSYmXCJjYW5kbGVzdGlja1wiIT09dFtkXS50eXBlJiZcImJveFBsb3RcIiE9PXMuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT10W2RdLnR5cGV8fHRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhKHQsZCksci5zZXJpZXMucHVzaCh0aGlzLnR3b0RTZXJpZXMpLHIubGFiZWxzLnB1c2godGhpcy50d29EU2VyaWVzWCksci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCksci5zZXJpZXNHb2Fscz10aGlzLnNlcmllc0dvYWxzLGQhPT10aGlzLmFjdGl2ZVNlcmllc0luZGV4fHx0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeXx8KHIuaXNYTnVtZXJpYz0hMCk7ZWxzZXtcImRhdGV0aW1lXCI9PT1zLnhheGlzLnR5cGU/KHIuaXNYTnVtZXJpYz0hMCxjKCksci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCkpOlwibnVtZXJpY1wiPT09cy54YXhpcy50eXBlJiYoci5pc1hOdW1lcmljPSEwLG4ubGVuZ3RoPjAmJih0aGlzLnR3b0RTZXJpZXNYPW4sci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCkpKSxyLmxhYmVscy5wdXNoKHRoaXMudHdvRFNlcmllc1gpO3ZhciBnPXRbZF0uZGF0YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB4LnBhcnNlTnVtYmVyKHQpfSkpO3Iuc2VyaWVzLnB1c2goZyl9ci5zZXJpZXNaLnB1c2godGhpcy50aHJlZURTZXJpZXMpLHZvaWQgMCE9PXRbZF0ubmFtZT9yLnNlcmllc05hbWVzLnB1c2godFtkXS5uYW1lKTpyLnNlcmllc05hbWVzLnB1c2goXCJzZXJpZXMtXCIrcGFyc2VJbnQoZCsxLDEwKSksdm9pZCAwIT09dFtkXS5jb2xvcj9yLnNlcmllc0NvbG9ycy5wdXNoKHRbZF0uY29sb3IpOnIuc2VyaWVzQ29sb3JzLnB1c2godm9pZCAwKX1yZXR1cm4gdGhpcy53fX0se2tleTpcInBhcnNlRGF0YU5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWc7ZS5zZXJpZXM9dC5zbGljZSgpLGUuc2VyaWVzTmFtZXM9aS5sYWJlbHMuc2xpY2UoKTtmb3IodmFyIGE9MDthPGUuc2VyaWVzLmxlbmd0aDthKyspdm9pZCAwPT09ZS5zZXJpZXNOYW1lc1thXSYmZS5zZXJpZXNOYW1lcy5wdXNoKFwic2VyaWVzLVwiKyhhKzEpKTtyZXR1cm4gdGhpcy53fX0se2tleTpcImhhbmRsZUV4dGVybmFsTGFiZWxzRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5jb25maWcsaT10aGlzLncuZ2xvYmFscztpZihlLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoPjApaS5sYWJlbHM9ZS54YXhpcy5jYXRlZ29yaWVzO2Vsc2UgaWYoZS5sYWJlbHMubGVuZ3RoPjApaS5sYWJlbHM9ZS5sYWJlbHMuc2xpY2UoKTtlbHNlIGlmKHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5KXtpZihpLmxhYmVscz1pLmxhYmVsc1swXSxpLnNlcmllc1JhbmdlLmxlbmd0aCYmKGkuc2VyaWVzUmFuZ2UubWFwKChmdW5jdGlvbih0KXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kubGFiZWxzLmluZGV4T2YodC54KTwwJiZ0LngmJmkubGFiZWxzLnB1c2godC54KX0pKX0pKSxpLmxhYmVscz1BcnJheS5mcm9tKG5ldyBTZXQoaS5sYWJlbHMubWFwKEpTT04uc3RyaW5naWZ5KSksSlNPTi5wYXJzZSkpLGUueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKW5ldyBYKGUpLmNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyhlLHRoaXMuY3R4LGkuc2VyaWVzWFswXSksdGhpcy5fZ2VuZXJhdGVFeHRlcm5hbExhYmVscyh0KX1lbHNlIHRoaXMuX2dlbmVyYXRlRXh0ZXJuYWxMYWJlbHModCl9fSx7a2V5OlwiX2dlbmVyYXRlRXh0ZXJuYWxMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcsYT1bXTtpZihlLmF4aXNDaGFydHMpe2lmKGUuc2VyaWVzLmxlbmd0aD4wKWlmKHRoaXMuaXNGb3JtYXRYWSgpKWZvcih2YXIgcz1pLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gaS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpe3JldHVybiBlLng9PT10Lnh9KSk9PT1lfSkpfSkpLHI9cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiBhW3RdLmxlbmd0aD5lLmxlbmd0aD90Oml9KSwwKSxvPTA7bzxzW3JdLmxlbmd0aDtvKyspYS5wdXNoKG8rMSk7ZWxzZSBmb3IodmFyIG49MDtuPGUuc2VyaWVzW2UubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO24rKylhLnB1c2gobisxKTtlLnNlcmllc1g9W107Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspZS5zZXJpZXNYLnB1c2goYSk7dGhpcy53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwoZS5pc1hOdW1lcmljPSEwKX1pZigwPT09YS5sZW5ndGgpe2E9ZS5heGlzQ2hhcnRzP1tdOmUuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsxfSkpO2Zvcih2YXIgaD0wO2g8dC5sZW5ndGg7aCsrKWUuc2VyaWVzWC5wdXNoKGEpfWUubGFiZWxzPWEsaS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihlLmNhdGVnb3J5TGFiZWxzPWEubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gaS54YXhpcy5sYWJlbHMuZm9ybWF0dGVyKHQpfSkpKSxlLm5vTGFiZWxzUHJvdmlkZWQ9ITB9fSx7a2V5OlwicGFyc2VEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcsYT1lLmdsb2JhbHM7aWYodGhpcy5leGNsdWRlQ29sbGFwc2VkU2VyaWVzSW5ZQXhpcygpLHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSExLHRoaXMuY3R4LmNvcmUucmVzZXRHbG9iYWxzKCksdGhpcy5jdHguY29yZS5pc011bHRpcGxlWSgpLGEuYXhpc0NoYXJ0cz8odGhpcy5wYXJzZURhdGFBeGlzQ2hhcnRzKHQpLHRoaXMuY29yZVV0aWxzLmdldExhcmdlc3RTZXJpZXMoKSk6dGhpcy5wYXJzZURhdGFOb25BeGlzQ2hhcnRzKHQpLGkuY2hhcnQuc3RhY2tlZCl7dmFyIHM9bmV3IE4odGhpcy5jdHgpO2Euc2VyaWVzPXMuc2V0TnVsbFNlcmllc1RvWmVyb1ZhbHVlcyhhLnNlcmllcyl9dGhpcy5jb3JlVXRpbHMuZ2V0U2VyaWVzVG90YWxzKCksYS5heGlzQ2hhcnRzJiYoYS5zdGFja2VkU2VyaWVzVG90YWxzPXRoaXMuY29yZVV0aWxzLmdldFN0YWNrZWRTZXJpZXNUb3RhbHMoKSksdGhpcy5jb3JlVXRpbHMuZ2V0UGVyY2VudFNlcmllcygpLGEuZGF0YUZvcm1hdFhOdW1lcmljfHxhLmlzWE51bWVyaWMmJihcIm51bWVyaWNcIiE9PWkueGF4aXMudHlwZXx8MCE9PWkubGFiZWxzLmxlbmd0aHx8MCE9PWkueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgpfHx0aGlzLmhhbmRsZUV4dGVybmFsTGFiZWxzRGF0YSh0KTtmb3IodmFyIHI9dGhpcy5jb3JlVXRpbHMuZ2V0Q2F0ZWdvcnlMYWJlbHMoYS5sYWJlbHMpLG89MDtvPHIubGVuZ3RoO28rKylpZihBcnJheS5pc0FycmF5KHJbb10pKXthLmlzTXVsdGlMaW5lWD0hMDticmVha319fSx7a2V5OlwiZXhjbHVkZUNvbGxhcHNlZFNlcmllc0luWUF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7ZS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcz1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLm1hcCgoZnVuY3Rpb24oaSxhKXtpZih0LncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXMmJiFlLmNvbmZpZy5jaGFydC5zdGFja2VkKXJldHVybiBpLmluZGV4fSkpfX1dKSx0fSgpLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImdldExhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOltdLHI9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOlwiMTJweFwiLG89IShhcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XSl8fGFyZ3VtZW50c1s2XSxuPXRoaXMudyxsPXZvaWQgMD09PXRbYV0/XCJcIjp0W2FdLGg9bCxjPW4uZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsZD1uLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLGc9ITEsdT1uZXcgTSh0aGlzLmN0eCkscD1sO28mJihoPXUueExhYmVsRm9ybWF0KGMsbCxwLHtpOmEsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmN0eCkuZm9ybWF0RGF0ZSx3Om59KSx2b2lkIDAhPT1kJiYoaD1kKGwsdFthXSx7aTphLGRhdGVGb3JtYXR0ZXI6bmV3IEkodGhpcy5jdHgpLmZvcm1hdERhdGUsdzpufSkpKTt2YXIgZix4O2UubGVuZ3RoPjA/KGY9ZVthXS51bml0LHg9bnVsbCxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe1wibW9udGhcIj09PXQudW5pdD94PVwieWVhclwiOlwiZGF5XCI9PT10LnVuaXQ/eD1cIm1vbnRoXCI6XCJob3VyXCI9PT10LnVuaXQ/eD1cImRheVwiOlwibWludXRlXCI9PT10LnVuaXQmJih4PVwiaG91clwiKX0pKSxnPXg9PT1mLGk9ZVthXS5wb3NpdGlvbixoPWVbYV0udmFsdWUpOlwiZGF0ZXRpbWVcIj09PW4uY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PWQmJihoPVwiXCIpLHZvaWQgMD09PWgmJihoPVwiXCIpLGg9QXJyYXkuaXNBcnJheShoKT9oOmgudG9TdHJpbmcoKTt2YXIgYj1uZXcgbSh0aGlzLmN0eCksdj17fTt2PW4uZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZvP2IuZ2V0VGV4dFJlY3RzKGgscGFyc2VJbnQociwxMCksbnVsbCxcInJvdGF0ZShcIi5jb25jYXQobi5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLCExKTpiLmdldFRleHRSZWN0cyhoLHBhcnNlSW50KHIsMTApKTt2YXIgeT0hbi5jb25maWcueGF4aXMubGFiZWxzLnNob3dEdXBsaWNhdGVzJiZ0aGlzLmN0eC50aW1lU2NhbGU7cmV0dXJuIUFycmF5LmlzQXJyYXkoaCkmJigwPT09aC5pbmRleE9mKFwiTmFOXCIpfHwwPT09aC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJpbnZhbGlkXCIpfHxoLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImluZmluaXR5XCIpPj0wfHxzLmluZGV4T2YoaCk+PTAmJnkpJiYoaD1cIlwiKSx7eDppLHRleHQ6aCx0ZXh0UmVjdDp2LGlzQm9sZDpnfX19LHtrZXk6XCJjaGVja0xhYmVsQmFzZWRPblRpY2thbW91bnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9YS5jb25maWcueGF4aXMudGlja0Ftb3VudDtyZXR1cm5cImRhdGFQb2ludHNcIj09PXMmJihzPU1hdGgucm91bmQoYS5nbG9iYWxzLmdyaWRXaWR0aC8xMjApKSxzPml8fHQlTWF0aC5yb3VuZChpLyhzKzEpKT09MHx8KGUudGV4dD1cIlwiKSxlfX0se2tleTpcImNoZWNrRm9yT3ZlcmZsb3dpbmdMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3ZhciByPXRoaXMudztpZigwPT09dCYmci5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWwmJihlLnRleHQ9XCJcIiksdD09PWktMSYmci5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmKGUudGV4dD1cIlwiKSxyLmNvbmZpZy54YXhpcy5sYWJlbHMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzJiZhLmxlbmd0aD4wKXt2YXIgbz1zW3MubGVuZ3RoLTFdO2UueDxvLnRleHRSZWN0LndpZHRoLyhyLmdsb2JhbHMucm90YXRlWExhYmVscz9NYXRoLmFicyhyLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlKS8xMjoxLjAxKStvLngmJihlLnRleHQ9XCJcIil9cmV0dXJuIGV9fSx7a2V5OlwiY2hlY2tGb3JSZXZlcnNlZExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybiBpLmNvbmZpZy55YXhpc1t0XSYmaS5jb25maWcueWF4aXNbdF0ucmV2ZXJzZWQmJmUucmV2ZXJzZSgpLGV9fSx7a2V5OlwiaXNZQXhpc0hpZGRlblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyB5KHRoaXMuY3R4KTtyZXR1cm4hZS5jb25maWcueWF4aXNbdF0uc2hvd3x8IWUuY29uZmlnLnlheGlzW3RdLnNob3dGb3JOdWxsU2VyaWVzJiZpLmlzU2VyaWVzTnVsbCh0KSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpfX0se2tleTpcImdldFlBeGlzRm9yZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJmkuZ2xvYmFscy55QXhpc1NjYWxlW2VdJiZ0aGlzLmN0eC50aGVtZS5wdXNoRXh0cmFDb2xvcnModCxpLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5yZXN1bHQubGVuZ3RoLCExKSx0fX0se2tleTpcImRyYXdZQXhpc1RpY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49dGhpcy53LGw9bmV3IG0odGhpcy5jdHgpLGg9bi5nbG9iYWxzLnRyYW5zbGF0ZVk7aWYoYS5zaG93JiZlPjApeyEwPT09bi5jb25maWcueWF4aXNbc10ub3Bwb3NpdGUmJih0Kz1hLndpZHRoKTtmb3IodmFyIGM9ZTtjPj0wO2MtLSl7dmFyIGQ9aCtlLzEwK24uY29uZmlnLnlheGlzW3NdLmxhYmVscy5vZmZzZXRZLTE7bi5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGQ9cipjKSxcImhlYXRtYXBcIj09PW4uY29uZmlnLmNoYXJ0LnR5cGUmJihkKz1yLzIpO3ZhciBnPWwuZHJhd0xpbmUodCtpLm9mZnNldFgtYS53aWR0aCthLm9mZnNldFgsZCthLm9mZnNldFksdCtpLm9mZnNldFgrYS5vZmZzZXRYLGQrYS5vZmZzZXRZLGEuY29sb3IpO28uYWRkKGcpLGgrPXJ9fX19XSksdH0oKSxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJzY2FsZVN2Z05vZGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGVOUyhudWxsLFwid2lkdGhcIikpLGE9cGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZU5TKG51bGwsXCJoZWlnaHRcIikpO3Quc2V0QXR0cmlidXRlTlMobnVsbCxcIndpZHRoXCIsaSplKSx0LnNldEF0dHJpYnV0ZU5TKG51bGwsXCJoZWlnaHRcIixhKmUpLHQuc2V0QXR0cmlidXRlTlMobnVsbCxcInZpZXdCb3hcIixcIjAgMCBcIitpK1wiIFwiK2EpfX0se2tleTpcImZpeFN2Z1N0cmluZ0ZvckllMTFcIix2YWx1ZTpmdW5jdGlvbih0KXtpZigheC5pc0lFMTEoKSlyZXR1cm4gdC5yZXBsYWNlKC8mbmJzcDsvZyxcIiYjMTYwO1wiKTt2YXIgZT0wLGk9dC5yZXBsYWNlKC94bWxucz1cImh0dHA6XFwvXFwvd3d3LnczLm9yZ1xcLzIwMDBcXC9zdmdcIi9nLChmdW5jdGlvbih0KXtyZXR1cm4gMj09PSsrZT8neG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeG1sbnM6c3ZnanM9XCJodHRwOi8vc3ZnanMuZGV2XCInOnR9KSk7cmV0dXJuIGk9KGk9aS5yZXBsYWNlKC94bWxuczpOU1xcZCs9XCJcIi9nLFwiXCIpKS5yZXBsYWNlKC9OU1xcZCs6KFxcdys6XFx3Kz1cIikvZyxcIiQxXCIpfX0se2tleTpcImdldFN2Z1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe251bGw9PXQmJih0PTEpO3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5zdmcoKTtpZigxIT09dCl7dmFyIGk9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGUuY2xvbmVOb2RlKCEwKTt0aGlzLnNjYWxlU3ZnTm9kZShpLHQpLGU9KG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyhpKX1yZXR1cm4gdGhpcy5maXhTdmdTdHJpbmdGb3JJZTExKGUpfX0se2tleTpcImNsZWFudXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMteWNyb3NzaGFpcnNcIiksYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtem9vbS1yZWN0LCAuYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsKGZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKFwid2lkdGhcIiwwKX0pKSxlJiZlWzBdJiYoZVswXS5zZXRBdHRyaWJ1dGUoXCJ4XCIsLTUwMCksZVswXS5zZXRBdHRyaWJ1dGUoXCJ4MVwiLC01MDApLGVbMF0uc2V0QXR0cmlidXRlKFwieDJcIiwtNTAwKSksaSYmaVswXSYmKGlbMF0uc2V0QXR0cmlidXRlKFwieVwiLC0xMDApLGlbMF0uc2V0QXR0cmlidXRlKFwieTFcIiwtMTAwKSxpWzBdLnNldEF0dHJpYnV0ZShcInkyXCIsLTEwMCkpfX0se2tleTpcInN2Z1VybFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhbnVwKCk7dmFyIHQ9dGhpcy5nZXRTdmdTdHJpbmcoKSxlPW5ldyBCbG9iKFt0XSx7dHlwZTpcImltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOFwifSk7cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoZSl9fSx7a2V5OlwiZGF0YVVSSVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihpKXt2YXIgYT1lLncscz10P3Quc2NhbGV8fHQud2lkdGgvYS5nbG9iYWxzLnN2Z1dpZHRoOjE7ZS5jbGVhbnVwKCk7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtyLndpZHRoPWEuZ2xvYmFscy5zdmdXaWR0aCpzLHIuaGVpZ2h0PXBhcnNlSW50KGEuZ2xvYmFscy5kb20uZWxXcmFwLnN0eWxlLmhlaWdodCwxMCkqczt2YXIgbz1cInRyYW5zcGFyZW50XCI9PT1hLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kP1wiI2ZmZlwiOmEuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQsbj1yLmdldENvbnRleHQoXCIyZFwiKTtuLmZpbGxTdHlsZT1vLG4uZmlsbFJlY3QoMCwwLHIud2lkdGgqcyxyLmhlaWdodCpzKTt2YXIgbD1lLmdldFN2Z1N0cmluZyhzKTtpZih3aW5kb3cuY2FudmcmJnguaXNJRTExKCkpe3ZhciBoPXdpbmRvdy5jYW52Zy5DYW52Zy5mcm9tU3RyaW5nKG4sbCx7aWdub3JlQ2xlYXI6ITAsaWdub3JlRGltZW5zaW9uczohMH0pO2guc3RhcnQoKTt2YXIgYz1yLm1zVG9CbG9iKCk7aC5zdG9wKCksaSh7YmxvYjpjfSl9ZWxzZXt2YXIgZD1cImRhdGE6aW1hZ2Uvc3ZnK3htbCxcIitlbmNvZGVVUklDb21wb25lbnQobCksZz1uZXcgSW1hZ2U7Zy5jcm9zc09yaWdpbj1cImFub255bW91c1wiLGcub25sb2FkPWZ1bmN0aW9uKCl7aWYobi5kcmF3SW1hZ2UoZywwLDApLHIubXNUb0Jsb2Ipe3ZhciB0PXIubXNUb0Jsb2IoKTtpKHtibG9iOnR9KX1lbHNle3ZhciBlPXIudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO2koe2ltZ1VSSTplfSl9fSxnLnNyYz1kfX0pKX19LHtrZXk6XCJleHBvcnRUb1NWR1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyRG93bmxvYWQodGhpcy5zdmdVcmwoKSx0aGlzLncuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LnN2Zy5maWxlbmFtZSxcIi5zdmdcIil9fSx7a2V5OlwiZXhwb3J0VG9QbmdcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kYXRhVVJJKCkudGhlbigoZnVuY3Rpb24oZSl7dmFyIGk9ZS5pbWdVUkksYT1lLmJsb2I7YT9uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihhLHQudy5nbG9iYWxzLmNoYXJ0SUQrXCIucG5nXCIpOnQudHJpZ2dlckRvd25sb2FkKGksdC53LmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5wbmcuZmlsZW5hbWUsXCIucG5nXCIpfSkpfX0se2tleTpcImV4cG9ydFRvQ1NWXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQuc2VyaWVzLGE9dC5maWxlTmFtZSxzPXQuY29sdW1uRGVsaW1pdGVyLHI9dm9pZCAwPT09cz9cIixcIjpzLG89dC5saW5lRGVsaW1pdGVyLG49dm9pZCAwPT09bz9cIlxcblwiOm8sbD10aGlzLnc7aXx8KGk9bC5jb25maWcuc2VyaWVzKTt2YXIgaD1bXSxjPVtdLGQ9XCJcIixnPWwuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybi0xPT09bC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKT90OltdfSkpLHA9TWF0aC5tYXguYXBwbHkoTWF0aCx1KGkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhP3QuZGF0YS5sZW5ndGg6MH0pKSkpLGY9bmV3IFcodGhpcy5jdHgpLGI9bmV3IEIodGhpcy5jdHgpLHY9ZnVuY3Rpb24odCl7dmFyIGk9XCJcIjtpZihsLmdsb2JhbHMuYXhpc0NoYXJ0cyl7aWYoXCJjYXRlZ29yeVwiPT09bC5jb25maWcueGF4aXMudHlwZXx8bC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKWlmKGwuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe3ZhciBhPWwuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdLHM9bmV3IE4oZS5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCk7aT1hKGwuZ2xvYmFscy5sYWJlbHNbdF0se3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6dCx3Omx9KX1lbHNlIGk9Yi5nZXRMYWJlbChsLmdsb2JhbHMubGFiZWxzLGwuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMsMCx0KS50ZXh0O1wiZGF0ZXRpbWVcIj09PWwuY29uZmlnLnhheGlzLnR5cGUmJihsLmNvbmZpZy54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD9pPWwuY29uZmlnLnhheGlzLmNhdGVnb3JpZXNbdF06bC5jb25maWcubGFiZWxzLmxlbmd0aCYmKGk9bC5jb25maWcubGFiZWxzW3RdKSl9ZWxzZSBpPWwuY29uZmlnLmxhYmVsc1t0XTtyZXR1cm4gQXJyYXkuaXNBcnJheShpKSYmKGk9aS5qb2luKFwiIFwiKSkseC5pc051bWJlcihpKT9pOmkuc3BsaXQocikuam9pbihcIlwiKX0sbT1mdW5jdGlvbih0LGUpe2lmKGgubGVuZ3RoJiYwPT09ZSYmYy5wdXNoKGguam9pbihyKSksdC5kYXRhKXt0LmRhdGE9dC5kYXRhLmxlbmd0aCYmdC5kYXRhfHx1KEFycmF5KHApKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuXCJcIn0pKTtmb3IodmFyIGE9MDthPHQuZGF0YS5sZW5ndGg7YSsrKXtoPVtdO3ZhciBzPXYoYSk7aWYoc3x8KGYuaXNGb3JtYXRYWSgpP3M9aVtlXS5kYXRhW2FdLng6Zi5pc0Zvcm1hdDJEQXJyYXkoKSYmKHM9aVtlXS5kYXRhW2FdP2lbZV0uZGF0YVthXVswXTpcIlwiKSksMD09PWUpe2gucHVzaCgoZD1zLFwiZGF0ZXRpbWVcIj09PWwuY29uZmlnLnhheGlzLnR5cGUmJlN0cmluZyhkKS5sZW5ndGg+PTEwP2wuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5kYXRlRm9ybWF0dGVyKHMpOnguaXNOdW1iZXIocyk/czpzLnNwbGl0KHIpLmpvaW4oXCJcIikpKTtmb3IodmFyIG89MDtvPGwuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO28rKyl7dmFyIG47aWYoZi5pc0Zvcm1hdFhZKCkpaC5wdXNoKG51bGw9PT0obj1pW29dLmRhdGFbYV0pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnkpO2Vsc2UgaC5wdXNoKGdbb11bYV0pfX0oXCJjYW5kbGVzdGlja1wiPT09bC5jb25maWcuY2hhcnQudHlwZXx8dC50eXBlJiZcImNhbmRsZXN0aWNrXCI9PT10LnR5cGUpJiYoaC5wb3AoKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1bYV0pKSwoXCJib3hQbG90XCI9PT1sLmNvbmZpZy5jaGFydC50eXBlfHx0LnR5cGUmJlwiYm94UGxvdFwiPT09dC50eXBlKSYmKGgucG9wKCksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUhbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1bYV0pKSxcInJhbmdlQmFyXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlJiYoaC5wb3AoKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbZV1bYV0pKSxoLmxlbmd0aCYmYy5wdXNoKGguam9pbihyKSl9fXZhciBkfTtoLnB1c2gobC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmhlYWRlckNhdGVnb3J5KSxcImJveFBsb3RcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGgucHVzaChcIm1pbmltdW1cIiksaC5wdXNoKFwicTFcIiksaC5wdXNoKFwibWVkaWFuXCIpLGgucHVzaChcInEzXCIpLGgucHVzaChcIm1heGltdW1cIikpOlwiY2FuZGxlc3RpY2tcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGgucHVzaChcIm9wZW5cIiksaC5wdXNoKFwiaGlnaFwiKSxoLnB1c2goXCJsb3dcIiksaC5wdXNoKFwiY2xvc2VcIikpOlwicmFuZ2VCYXJcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGgucHVzaChcIm1pbmltdW1cIiksaC5wdXNoKFwibWF4aW11bVwiKSk6aS5tYXAoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9KHQubmFtZT90Lm5hbWU6XCJzZXJpZXMtXCIuY29uY2F0KGUpKStcIlwiO2wuZ2xvYmFscy5heGlzQ2hhcnRzJiZoLnB1c2goaS5zcGxpdChyKS5qb2luKFwiXCIpP2kuc3BsaXQocikuam9pbihcIlwiKTpcInNlcmllcy1cIi5jb25jYXQoZSkpfSkpLGwuZ2xvYmFscy5heGlzQ2hhcnRzfHwoaC5wdXNoKGwuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5oZWFkZXJWYWx1ZSksYy5wdXNoKGguam9pbihyKSkpLGkubWFwKChmdW5jdGlvbih0LGUpe2wuZ2xvYmFscy5heGlzQ2hhcnRzP20odCxlKTooKGg9W10pLnB1c2gobC5nbG9iYWxzLmxhYmVsc1tlXS5zcGxpdChyKS5qb2luKFwiXCIpKSxoLnB1c2goZ1tlXSksYy5wdXNoKGguam9pbihyKSkpfSkpLGQrPWMuam9pbihuKSx0aGlzLnRyaWdnZXJEb3dubG9hZChcImRhdGE6dGV4dC9jc3Y7IGNoYXJzZXQ9dXRmLTgsXCIrZW5jb2RlVVJJQ29tcG9uZW50KFwiXFx1ZmVmZlwiK2QpLGF8fGwuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5maWxlbmFtZSxcIi5jc3ZcIil9fSx7a2V5OlwidHJpZ2dlckRvd25sb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO2EuaHJlZj10LGEuZG93bmxvYWQ9KGV8fHRoaXMudy5nbG9iYWxzLmNoYXJ0SUQpK2ksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKSxhLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKX19XSksdH0oKSxWPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuZWxncmlkPWksdGhpcy53PWUudzt2YXIgcz10aGlzLnc7dGhpcy5heGVzVXRpbHM9bmV3IEIoZSksdGhpcy54YXhpc0xhYmVscz1zLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkscy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MCYmIXMuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJih0aGlzLnhheGlzTGFiZWxzPXMuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKSkscy5jb25maWcueGF4aXMub3ZlcndyaXRlQ2F0ZWdvcmllcyYmKHRoaXMueGF4aXNMYWJlbHM9cy5jb25maWcueGF4aXMub3ZlcndyaXRlQ2F0ZWdvcmllcyksdGhpcy5kcmF3bkxhYmVscz1bXSx0aGlzLmRyYXduTGFiZWxzUmVjdHM9W10sXCJ0b3BcIj09PXMuY29uZmlnLnhheGlzLnBvc2l0aW9uP3RoaXMub2ZmWT0wOnRoaXMub2ZmWT1zLmdsb2JhbHMuZ3JpZEhlaWdodCsxLHRoaXMub2ZmWT10aGlzLm9mZlkrcy5jb25maWcueGF4aXMuYXhpc0JvcmRlci5vZmZzZXRZLHRoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWw9XCJiYXJcIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHRoaXMueGF4aXNGb250U2l6ZT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsdGhpcy54YXhpc0ZvbnRGYW1pbHk9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksdGhpcy54YXhpc0ZvcmVDb2xvcnM9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNvbG9ycyx0aGlzLnhheGlzQm9yZGVyV2lkdGg9cy5jb25maWcueGF4aXMuYXhpc0JvcmRlci53aWR0aCx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsJiYodGhpcy54YXhpc0JvcmRlcldpZHRoPXMuY29uZmlnLnlheGlzWzBdLmF4aXNCb3JkZXIud2lkdGgudG9TdHJpbmcoKSksdGhpcy54YXhpc0JvcmRlcldpZHRoLmluZGV4T2YoXCIlXCIpPi0xP3RoaXMueGF4aXNCb3JkZXJXaWR0aD1zLmdsb2JhbHMuZ3JpZFdpZHRoKnBhcnNlSW50KHRoaXMueGF4aXNCb3JkZXJXaWR0aCwxMCkvMTAwOnRoaXMueGF4aXNCb3JkZXJXaWR0aD1wYXJzZUludCh0aGlzLnhheGlzQm9yZGVyV2lkdGgsMTApLHRoaXMueGF4aXNCb3JkZXJIZWlnaHQ9cy5jb25maWcueGF4aXMuYXhpc0JvcmRlci5oZWlnaHQsdGhpcy55YXhpcz1zLmNvbmZpZy55YXhpc1swXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1hheGlzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXNcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHQuY29uZmlnLnhheGlzLm9mZnNldFgsXCIsIFwiKS5jb25jYXQodC5jb25maWcueGF4aXMub2Zmc2V0WSxcIilcIil9KSxhPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdCh0Lmdsb2JhbHMudHJhbnNsYXRlWEF4aXNYLFwiLCBcIikuY29uY2F0KHQuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksXCIpXCIpfSk7aS5hZGQoYSk7Zm9yKHZhciBzPVtdLHI9MDtyPHRoaXMueGF4aXNMYWJlbHMubGVuZ3RoO3IrKylzLnB1c2godGhpcy54YXhpc0xhYmVsc1tyXSk7aWYodGhpcy5kcmF3WEF4aXNMYWJlbEFuZEdyb3VwKCEwLGUsYSxzLHQuZ2xvYmFscy5pc1hOdW1lcmljLChmdW5jdGlvbih0LGUpe3JldHVybiBlfSkpLHQuZ2xvYmFscy5oYXNYYXhpc0dyb3Vwcyl7dmFyIG89dC5nbG9iYWxzLmdyb3VwcztzPVtdO2Zvcih2YXIgbj0wO248by5sZW5ndGg7bisrKXMucHVzaChvW25dLnRpdGxlKTt2YXIgbD17fTt0LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZSYmKGwueGF4aXNGb250U2l6ZT10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250U2l6ZSxsLnhheGlzRm9udEZhbWlseT10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250RmFtaWx5LGwueGF4aXNGb3JlQ29sb3JzPXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmNvbG9ycyxsLmZvbnRXZWlnaHQ9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuZm9udFdlaWdodCxsLmNzc0NsYXNzPXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmNzc0NsYXNzKSx0aGlzLmRyYXdYQXhpc0xhYmVsQW5kR3JvdXAoITEsZSxhLHMsITEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bdF0uY29scyplfSksbCl9aWYodm9pZCAwIT09dC5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIGg9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlXCJ9KSxjPWUuZHJhd1RleHQoe3g6dC5nbG9iYWxzLmdyaWRXaWR0aC8yK3QuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFgseTp0aGlzLm9mZlkrcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpKyhcImJvdHRvbVwiPT09dC5jb25maWcueGF4aXMucG9zaXRpb24/dC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0Oi10Lmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQtMTApK3QuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFksdGV4dDp0LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCBcIit0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2guYWRkKGMpLGkuYWRkKGgpfWlmKHQuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuc2hvdyl7dmFyIGQ9dC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLGc9ZS5kcmF3TGluZSh0Lmdsb2JhbHMucGFkSG9yaXpvbnRhbCt0LmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFgtZCx0aGlzLm9mZlksdGhpcy54YXhpc0JvcmRlcldpZHRoK2QsdGhpcy5vZmZZLHQuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuY29sb3IsMCx0aGlzLnhheGlzQm9yZGVySGVpZ2h0KTt0aGlzLmVsZ3JpZCYmdGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycyYmdC5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMuYWRkKGcpOmkuYWRkKGcpfXJldHVybiBpfX0se2tleTpcImRyYXdYQXhpc0xhYmVsQW5kR3JvdXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG8sbj10aGlzLGw9YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOnt9LGg9W10sYz1bXSxkPXRoaXMudyxnPWwueGF4aXNGb250U2l6ZXx8dGhpcy54YXhpc0ZvbnRTaXplLHU9bC54YXhpc0ZvbnRGYW1pbHl8fHRoaXMueGF4aXNGb250RmFtaWx5LHA9bC54YXhpc0ZvcmVDb2xvcnN8fHRoaXMueGF4aXNGb3JlQ29sb3JzLGY9bC5mb250V2VpZ2h0fHxkLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFdlaWdodCx4PWwuY3NzQ2xhc3N8fGQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jc3NDbGFzcyxiPWQuZ2xvYmFscy5wYWRIb3Jpem9udGFsLHY9YS5sZW5ndGgsbT1cImNhdGVnb3J5XCI9PT1kLmNvbmZpZy54YXhpcy50eXBlP2QuZ2xvYmFscy5kYXRhUG9pbnRzOnY7aWYoMD09PW0mJnY+bSYmKG09dikscyl7dmFyIHk9bT4xP20tMTptO289ZC5nbG9iYWxzLmdyaWRXaWR0aC9NYXRoLm1pbih5LHYtMSksYj1iK3IoMCxvKS8yK2QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYfWVsc2Ugbz1kLmdsb2JhbHMuZ3JpZFdpZHRoL20sYj1iK3IoMCxvKStkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDtmb3IodmFyIHc9ZnVuY3Rpb24ocyl7dmFyIGw9Yi1yKHMsbykvMitkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDswPT09cyYmMT09PXYmJm8vMj09PWImJjE9PT1tJiYobD1kLmdsb2JhbHMuZ3JpZFdpZHRoLzIpO3ZhciB5PW4uYXhlc1V0aWxzLmdldExhYmVsKGEsZC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscyxsLHMsaCxnLHQpLHc9Mjg7ZC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJnQmJih3PTIyKSxkLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0JiZcInRvcFwiPT09ZC5jb25maWcueGF4aXMucG9zaXRpb24mJih3Kz1wYXJzZUZsb2F0KGQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKSsyKSx0fHwodz13K3BhcnNlRmxvYXQoZykrKGQuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC1kLmdsb2JhbHMueEF4aXNHcm91cExhYmVsc0hlaWdodCkrKGQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzEwOjApKSx5PXZvaWQgMCE9PWQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJlwiZGF0YVBvaW50c1wiIT09ZC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmXCJkYXRldGltZVwiIT09ZC5jb25maWcueGF4aXMudHlwZT9uLmF4ZXNVdGlscy5jaGVja0xhYmVsQmFzZWRPblRpY2thbW91bnQocyx5LHYpOm4uYXhlc1V0aWxzLmNoZWNrRm9yT3ZlcmZsb3dpbmdMYWJlbHMocyx5LHYsaCxjKTtpZihkLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdyl7dmFyIGs9ZS5kcmF3VGV4dCh7eDp5LngseTpuLm9mZlkrZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkrdy0oXCJ0b3BcIj09PWQuY29uZmlnLnhheGlzLnBvc2l0aW9uP2QuZ2xvYmFscy54QXhpc0hlaWdodCtkLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LTI6MCksdGV4dDp5LnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRXZWlnaHQ6eS5pc0JvbGQ/NjAwOmYsZm9udFNpemU6Zyxmb250RmFtaWx5OnUsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkocCk/dCYmZC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljP3BbZC5nbG9iYWxzLm1pblgrcy0xXTpwW3NdOnAsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6KHQ/XCJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsIFwiOlwiYXBleGNoYXJ0cy14YXhpcy1ncm91cC1sYWJlbCBcIikreH0pO2lmKGkuYWRkKGspLGsub24oXCJjbGlja1wiLChmdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKXt2YXIgZT1PYmplY3QuYXNzaWduKHt9LGQse2xhYmVsSW5kZXg6c30pO2QuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2sodCxuLmN0eCxlKX19KSksdCl7dmFyIEE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGQuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO0EudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheSh5LnRleHQpP3kudGV4dC5qb2luKFwiIFwiKTp5LnRleHQsay5ub2RlLmFwcGVuZENoaWxkKEEpLFwiXCIhPT15LnRleHQmJihoLnB1c2goeS50ZXh0KSxjLnB1c2goeSkpfX1zPHYtMSYmKGIrPXIocysxLG8pKX0saz0wO2s8PXYtMTtrKyspdyhrKX19LHtrZXk6XCJkcmF3WGF4aXNJbnZlcnNlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10aGlzLHM9dGhpcy53LHI9bmV3IG0odGhpcy5jdHgpLG89cy5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGU/cy5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XTowLG49ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzIGFwZXhjaGFydHMteGF4aXMtaW52ZXJzZWRcIixyZWw6dH0pLGw9ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRleHRzLWcgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZC10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK28rXCIsIDApXCJ9KTtuLmFkZChsKTt2YXIgaD1bXTtpZihzLmNvbmZpZy55YXhpc1t0XS5zaG93KWZvcih2YXIgYz0wO2M8dGhpcy54YXhpc0xhYmVscy5sZW5ndGg7YysrKWgucHVzaCh0aGlzLnhheGlzTGFiZWxzW2NdKTtlPXMuZ2xvYmFscy5ncmlkSGVpZ2h0L2gubGVuZ3RoLGk9LWUvMi4yO3ZhciBkPXMuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdLGc9cy5jb25maWcueWF4aXNbMF0ubGFiZWxzO2lmKGcuc2hvdylmb3IodmFyIHU9ZnVuY3Rpb24obyl7dmFyIG49dm9pZCAwPT09aFtvXT9cIlwiOmhbb107bj1kKG4se3Nlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6byx3OnN9KTt2YXIgYz1hLmF4ZXNVdGlscy5nZXRZQXhpc0ZvcmVDb2xvcihnLnN0eWxlLmNvbG9ycyx0KSx1PTA7QXJyYXkuaXNBcnJheShuKSYmKHU9bi5sZW5ndGgvMipwYXJzZUludChnLnN0eWxlLmZvbnRTaXplLDEwKSk7dmFyIHA9Zy5vZmZzZXRYLTE1LGY9XCJlbmRcIjthLnlheGlzLm9wcG9zaXRlJiYoZj1cInN0YXJ0XCIpLFwibGVmdFwiPT09cy5jb25maWcueWF4aXNbMF0ubGFiZWxzLmFsaWduPyhwPWcub2Zmc2V0WCxmPVwic3RhcnRcIik6XCJjZW50ZXJcIj09PXMuY29uZmlnLnlheGlzWzBdLmxhYmVscy5hbGlnbj8ocD1nLm9mZnNldFgsZj1cIm1pZGRsZVwiKTpcInJpZ2h0XCI9PT1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuYWxpZ24mJihmPVwiZW5kXCIpO3ZhciB4PXIuZHJhd1RleHQoe3g6cCx5OmkrZStnLm9mZnNldFktdSx0ZXh0Om4sdGV4dEFuY2hvcjpmLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KGMpP2Nbb106Yyxmb250U2l6ZTpnLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6Zy5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6Zy5zdHlsZS5mb250V2VpZ2h0LGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1sYWJlbCBcIitnLnN0eWxlLmNzc0NsYXNzLG1heFdpZHRoOmcubWF4V2lkdGh9KTtsLmFkZCh4KSx4Lm9uKFwiY2xpY2tcIiwoZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcy5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljayl7dmFyIGU9T2JqZWN0LmFzc2lnbih7fSxzLHtsYWJlbEluZGV4Om99KTtzLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKHQsYS5jdHgsZSl9fSkpO3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzLmdsb2JhbHMuU1ZHTlMsXCJ0aXRsZVwiKTtpZihiLnRleHRDb250ZW50PUFycmF5LmlzQXJyYXkobik/bi5qb2luKFwiIFwiKTpuLHgubm9kZS5hcHBlbmRDaGlsZChiKSwwIT09cy5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSl7dmFyIHY9ci5yb3RhdGVBcm91bmRDZW50ZXIoeC5ub2RlKTt4Lm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KHMuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUsXCIgMCBcIikuY29uY2F0KHYueSxcIilcIikpfWkrPWV9LHA9MDtwPD1oLmxlbmd0aC0xO3ArKyl1KHApO2lmKHZvaWQgMCE9PXMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQpe3ZhciBmPXIuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZSBhcGV4Y2hhcnRzLXhheGlzLXRpdGxlLWludmVyc2VkXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK28rXCIsIDApXCJ9KSx4PXIuZHJhd1RleHQoe3g6cy5jb25maWcueWF4aXNbMF0udGl0bGUub2Zmc2V0WCx5OnMuZ2xvYmFscy5ncmlkSGVpZ2h0LzIrcy5jb25maWcueWF4aXNbMF0udGl0bGUub2Zmc2V0WSx0ZXh0OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5jb2xvcixmb250U2l6ZTpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250V2VpZ2h0OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9udEZhbWlseTpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250RmFtaWx5LGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZS10ZXh0IFwiK3MuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7Zi5hZGQoeCksbi5hZGQoZil9dmFyIGI9MDt0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsJiZzLmNvbmZpZy55YXhpc1swXS5vcHBvc2l0ZSYmKGI9cy5nbG9iYWxzLmdyaWRXaWR0aCk7dmFyIHY9cy5jb25maWcueGF4aXMuYXhpc0JvcmRlcjtpZih2LnNob3cpe3ZhciB5PXIuZHJhd0xpbmUocy5nbG9iYWxzLnBhZEhvcml6b250YWwrdi5vZmZzZXRYK2IsMSt2Lm9mZnNldFkscy5nbG9iYWxzLnBhZEhvcml6b250YWwrdi5vZmZzZXRYK2Iscy5nbG9iYWxzLmdyaWRIZWlnaHQrdi5vZmZzZXRZLHYuY29sb3IsMCk7dGhpcy5lbGdyaWQmJnRoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMmJnMuY29uZmlnLmdyaWQuc2hvdz90aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzLmFkZCh5KTpuLmFkZCh5KX1yZXR1cm4gcy5jb25maWcueWF4aXNbMF0uYXhpc1RpY2tzLnNob3cmJnRoaXMuYXhlc1V0aWxzLmRyYXdZQXhpc1RpY2tzKGIsaC5sZW5ndGgscy5jb25maWcueWF4aXNbMF0uYXhpc0JvcmRlcixzLmNvbmZpZy55YXhpc1swXS5heGlzVGlja3MsMCxlLG4pLG59fSx7a2V5OlwiZHJhd1hheGlzVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9dDtpZighKHQ8MHx8dC0yPmEuZ2xvYmFscy5ncmlkV2lkdGgpKXt2YXIgcj10aGlzLm9mZlkrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFk7aWYoZT1lK3IrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCxcInRvcFwiPT09YS5jb25maWcueGF4aXMucG9zaXRpb24mJihlPXItYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCksYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLnNob3cpe3ZhciBvPW5ldyBtKHRoaXMuY3R4KS5kcmF3TGluZSh0K2EuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5vZmZzZXRYLHIrYS5jb25maWcueGF4aXMub2Zmc2V0WSxzK2EuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5vZmZzZXRYLGUrYS5jb25maWcueGF4aXMub2Zmc2V0WSxhLmNvbmZpZy54YXhpcy5heGlzVGlja3MuY29sb3IpO2kuYWRkKG8pLG8ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy14YXhpcy10aWNrXCIpfX19fSx7a2V5OlwiZ2V0WEF4aXNUaWNrc1Bvc2l0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9W10saT10aGlzLnhheGlzTGFiZWxzLmxlbmd0aCxhPXQuZ2xvYmFscy5wYWRIb3Jpem9udGFsO2lmKHQuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjApZm9yKHZhciBzPTA7czxpO3MrKylhPXRoaXMueGF4aXNMYWJlbHNbc10ucG9zaXRpb24sZS5wdXNoKGEpO2Vsc2UgZm9yKHZhciByPWksbz0wO288cjtvKyspe3ZhciBuPXI7dC5nbG9iYWxzLmlzWE51bWVyaWMmJlwiYmFyXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiYobi09MSksYSs9dC5nbG9iYWxzLmdyaWRXaWR0aC9uLGUucHVzaChhKX1yZXR1cm4gZX19LHtrZXk6XCJ4QXhpc0xhYmVsQ29ycmVjdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIpLGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWcgdGV4dDpub3QoLmFwZXhjaGFydHMteGF4aXMtZ3JvdXAtbGFiZWwpXCIpLHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkIHRleHRcIikscj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteGF4aXMtaW52ZXJzZWQtdGV4dHMtZyB0ZXh0IHRzcGFuXCIpO2lmKHQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzfHx0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlQWx3YXlzKWZvcih2YXIgbz0wO288YS5sZW5ndGg7bysrKXt2YXIgbj1lLnJvdGF0ZUFyb3VuZENlbnRlcihhW29dKTtuLnk9bi55LTEsbi54PW4ueCsxLGFbb10uc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KHQuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUsXCIgXCIpLmNvbmNhdChuLngsXCIgXCIpLmNvbmNhdChuLnksXCIpXCIpKSxhW29dLnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJlbmRcIik7aS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZSgwLCBcIi5jb25jYXQoLTEwLFwiKVwiKSk7dmFyIGw9YVtvXS5jaGlsZE5vZGVzO3QuY29uZmlnLnhheGlzLmxhYmVscy50cmltJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGwsKGZ1bmN0aW9uKGkpe2UucGxhY2VUZXh0V2l0aEVsbGlwc2lzKGksaS50ZXh0Q29udGVudCx0Lmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQtKFwiYm90dG9tXCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24/MjA6MTApKX0pKX1lbHNlIWZ1bmN0aW9uKCl7Zm9yKHZhciBpPXQuZ2xvYmFscy5ncmlkV2lkdGgvKHQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKzEpLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIHI9YVtzXS5jaGlsZE5vZGVzO3QuY29uZmlnLnhheGlzLmxhYmVscy50cmltJiZcImRhdGV0aW1lXCIhPT10LmNvbmZpZy54YXhpcy50eXBlJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHIsKGZ1bmN0aW9uKHQpe2UucGxhY2VUZXh0V2l0aEVsbGlwc2lzKHQsdC50ZXh0Q29udGVudCxpKX0pKX19KCk7aWYocy5sZW5ndGg+MCl7dmFyIGg9c1tzLmxlbmd0aC0xXS5nZXRCQm94KCksYz1zWzBdLmdldEJCb3goKTtoLng8LTIwJiZzW3MubGVuZ3RoLTFdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc1tzLmxlbmd0aC0xXSksYy54K2Mud2lkdGg+dC5nbG9iYWxzLmdyaWRXaWR0aCYmIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnNbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzWzBdKTtmb3IodmFyIGQ9MDtkPHIubGVuZ3RoO2QrKyllLnBsYWNlVGV4dFdpdGhFbGxpcHNpcyhyW2RdLHJbZF0udGV4dENvbnRlbnQsdC5jb25maWcueWF4aXNbMF0ubGFiZWxzLm1heFdpZHRoLSh0LmNvbmZpZy55YXhpc1swXS50aXRsZS50ZXh0PzIqcGFyc2VGbG9hdCh0LmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250U2l6ZSk6MCktMTUpfX19XSksdH0oKSxqPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSx0aGlzLmF4ZXNVdGlscz1uZXcgQihlKSx0aGlzLmlzUmFuZ2VCYXI9aS5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCYmaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCxpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wJiYodGhpcy54YXhpc0xhYmVscz1pLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCkpfXJldHVybiByKHQsW3trZXk6XCJkcmF3R3JpZEFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpO251bGw9PT10JiYodD1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZFwifSkpO3ZhciBhPWkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwsMSxlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxlLmdsb2JhbHMuZ3JpZEhlaWdodCxcInRyYW5zcGFyZW50XCIpLHM9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxlLmdsb2JhbHMuZ3JpZEhlaWdodCxlLmdsb2JhbHMuZ3JpZFdpZHRoLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LFwidHJhbnNwYXJlbnRcIik7cmV0dXJuIHQuYWRkKHMpLHQuYWRkKGEpLHR9fSx7a2V5OlwiZHJhd0dyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW51bGw7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmF4aXNDaGFydHMmJih0PXRoaXMucmVuZGVyR3JpZCgpLHRoaXMuZHJhd0dyaWRBcmVhKHQuZWwpKSx0fX0se2tleTpcImNyZWF0ZUdyaWRNYXNrXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT1uZXcgbSh0aGlzLmN0eCksYT1BcnJheS5pc0FycmF5KHQuY29uZmlnLnN0cm9rZS53aWR0aCk/MDp0LmNvbmZpZy5zdHJva2Uud2lkdGg7aWYoQXJyYXkuaXNBcnJheSh0LmNvbmZpZy5zdHJva2Uud2lkdGgpKXt2YXIgcz0wO3QuY29uZmlnLnN0cm9rZS53aWR0aC5mb3JFYWNoKChmdW5jdGlvbih0KXtzPU1hdGgubWF4KHMsdCl9KSksYT1zfWUuZG9tLmVsR3JpZFJlY3RNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiY2xpcFBhdGhcIiksZS5kb20uZWxHcmlkUmVjdE1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcImdyaWRSZWN0TWFza1wiLmNvbmNhdChlLmN1aWQpKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUyxcImNsaXBQYXRoXCIpLGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQoZS5jdWlkKSksZS5kb20uZWxGb3JlY2FzdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbEZvcmVjYXN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiZm9yZWNhc3RNYXNrXCIuY29uY2F0KGUuY3VpZCkpLGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiY2xpcFBhdGhcIiksZS5kb20uZWxOb25Gb3JlY2FzdE1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcIm5vbkZvcmVjYXN0TWFza1wiLmNvbmNhdChlLmN1aWQpKTt2YXIgcj10LmNvbmZpZy5jaGFydC50eXBlLG89MCxuPTA7KFwiYmFyXCI9PT1yfHxcInJhbmdlQmFyXCI9PT1yfHxcImNhbmRsZXN0aWNrXCI9PT1yfHxcImJveFBsb3RcIj09PXJ8fHQuZ2xvYmFscy5jb21ib0JhckNvdW50PjApJiZ0Lmdsb2JhbHMuaXNYTnVtZXJpYyYmIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihvPXQuY29uZmlnLmdyaWQucGFkZGluZy5sZWZ0LG49dC5jb25maWcuZ3JpZC5wYWRkaW5nLnJpZ2h0LGUuYmFyUGFkRm9yTnVtZXJpY0F4aXM+byYmKG89ZS5iYXJQYWRGb3JOdW1lcmljQXhpcyxuPWUuYmFyUGFkRm9yTnVtZXJpY0F4aXMpKSxlLmRvbS5lbEdyaWRSZWN0PWkuZHJhd1JlY3QoLWEtby0yLDIqLWEtMixlLmdyaWRXaWR0aCthK24rbys0LGUuZ3JpZEhlaWdodCs0KmErNCwwLFwiI2ZmZlwiKTt2YXIgbD10Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZSsxO2UuZG9tLmVsR3JpZFJlY3RNYXJrZXI9aS5kcmF3UmVjdCgyKi1sLDIqLWwsZS5ncmlkV2lkdGgrNCpsLGUuZ3JpZEhlaWdodCs0KmwsMCxcIiNmZmZcIiksZS5kb20uZWxHcmlkUmVjdE1hc2suYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdC5ub2RlKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzay5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0TWFya2VyLm5vZGUpO3ZhciBoPWUuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiZGVmc1wiKTtoLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXNrKSxoLmFwcGVuZENoaWxkKGUuZG9tLmVsRm9yZWNhc3RNYXNrKSxoLmFwcGVuZENoaWxkKGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrKSxoLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrKX19LHtrZXk6XCJfZHJhd0dyaWRMaW5lc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQueDEsYT10LnkxLHM9dC54MixyPXQueTIsbz10LnhDb3VudCxuPXQucGFyZW50LGw9dGhpcy53O2lmKCEoMD09PWUmJmwuZ2xvYmFscy5za2lwRmlyc3RUaW1lbGluZWxhYmVsfHxlPT09by0xJiZsLmdsb2JhbHMuc2tpcExhc3RUaW1lbGluZWxhYmVsJiYhbC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcnx8XCJyYWRhclwiPT09bC5jb25maWcuY2hhcnQudHlwZSkpe2wuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvdyYmdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmUseDE6aSx5MTphLHgyOnMseTI6cix4Q291bnQ6byxwYXJlbnQ6bn0pO3ZhciBoPTA7aWYobC5nbG9iYWxzLmhhc1hheGlzR3JvdXBzJiZcImJldHdlZW5cIj09PWwuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnQpe3ZhciBjPWwuZ2xvYmFscy5ncm91cHM7aWYoYyl7Zm9yKHZhciBkPTAsZz0wO2Q8ZSYmZzxjLmxlbmd0aDtnKyspZCs9Y1tnXS5jb2xzO2Q9PT1lJiYoaD0uNipsLmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQpfX1uZXcgVih0aGlzLmN0eCkuZHJhd1hheGlzVGlja3MoaSxoLGwuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwpfX19LHtrZXk6XCJfZHJhd0dyaWRMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC54MSxhPXQueTEscz10LngyLHI9dC55MixvPXQueENvdW50LG49dC5wYXJlbnQsbD10aGlzLncsaD0hMSxjPW4ubm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy1ob3Jpem9udGFsXCIpLGQ9bC5jb25maWcuZ3JpZC5zdHJva2VEYXNoQXJyYXksZz1sLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7KDA9PT1hJiYwPT09cnx8MD09PWkmJjA9PT1zKSYmKGg9ITApLGE9PT1sLmdsb2JhbHMuZ3JpZEhlaWdodCYmcj09PWwuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoaD0hMCksIWwuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fDAhPT1lJiZlIT09by0xfHwoaD0hMCk7dmFyIHU9bmV3IG0odGhpcykuZHJhd0xpbmUoaS0oYz9nOjApLGEscysoYz9nOjApLHIsbC5jb25maWcuZ3JpZC5ib3JkZXJDb2xvcixkKTt1Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZ3JpZGxpbmVcIiksaCYmbC5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxHcmlkQm9yZGVycy5hZGQodSk6bi5hZGQodSl9fSx7a2V5OlwiX2RyYXdHcmlkQmFuZFJlY3RcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmMsaT10LngxLGE9dC55MSxzPXQueDIscj10LnkyLG89dC50eXBlLG49dGhpcy53LGw9bmV3IG0odGhpcy5jdHgpLGg9bi5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzO2lmKFwiY29sdW1uXCIhPT1vfHxcImRhdGV0aW1lXCIhPT1uLmNvbmZpZy54YXhpcy50eXBlKXt2YXIgYz1uLmNvbmZpZy5ncmlkW29dLmNvbG9yc1tlXSxkPWwuZHJhd1JlY3QoaS0oXCJyb3dcIj09PW8/aDowKSxhLHMrKFwicm93XCI9PT1vPzIqaDowKSxyLDAsYyxuLmNvbmZpZy5ncmlkW29dLm9wYWNpdHkpO3RoaXMuZWxnLmFkZChkKSxkLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KG4uZ2xvYmFscy5jdWlkLFwiKVwiKSksZC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWdyaWQtXCIuY29uY2F0KG8pKX19fSx7a2V5OlwiX2RyYXdYWUxpbmVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQueENvdW50LGE9dC50aWNrQW1vdW50LHM9dGhpcy53O2lmKHMuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvd3x8cy5jb25maWcueGF4aXMuYXhpc1RpY2tzLnNob3cpe3ZhciByLG89cy5nbG9iYWxzLnBhZEhvcml6b250YWwsbj1zLmdsb2JhbHMuZ3JpZEhlaWdodDtzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD9mdW5jdGlvbih0KXtmb3IodmFyIGE9dC54QyxzPXQueDEscj10LnkxLG89dC54MixuPXQueTIsbD0wO2w8YTtsKyspcz1lLnhheGlzTGFiZWxzW2xdLnBvc2l0aW9uLG89ZS54YXhpc0xhYmVsc1tsXS5wb3NpdGlvbixlLl9kcmF3R3JpZExpbmVzKHtpOmwseDE6cyx5MTpyLHgyOm8seTI6bix4Q291bnQ6aSxwYXJlbnQ6ZS5lbGdyaWRMaW5lc1Z9KX0oe3hDOmkseDE6byx5MTowLHgyOnIseTI6bn0pOihzLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9cy5nbG9iYWxzLnhBeGlzU2NhbGUucmVzdWx0Lmxlbmd0aCksZnVuY3Rpb24odCl7Zm9yKHZhciBhPXQueEMscj10LngxLG89dC55MSxuPXQueDIsbD10LnkyLGg9MDtoPGErKHMuZ2xvYmFscy5pc1hOdW1lcmljPzA6MSk7aCsrKTA9PT1oJiYxPT09YSYmMT09PXMuZ2xvYmFscy5kYXRhUG9pbnRzJiYobj1yPXMuZ2xvYmFscy5ncmlkV2lkdGgvMiksZS5fZHJhd0dyaWRMaW5lcyh7aTpoLHgxOnIseTE6byx4MjpuLHkyOmwseENvdW50OmkscGFyZW50OmUuZWxncmlkTGluZXNWfSksbj1yKz1zLmdsb2JhbHMuZ3JpZFdpZHRoLyhzLmdsb2JhbHMuaXNYTnVtZXJpYz9hLTE6YSl9KHt4QzppLHgxOm8seTE6MCx4MjpyLHkyOm59KSl9aWYocy5jb25maWcuZ3JpZC55YXhpcy5saW5lcy5zaG93KXt2YXIgbD0wLGg9MCxjPXMuZ2xvYmFscy5ncmlkV2lkdGgsZD1hKzE7dGhpcy5pc1JhbmdlQmFyJiYoZD1zLmdsb2JhbHMubGFiZWxzLmxlbmd0aCk7Zm9yKHZhciBnPTA7ZzxkKyh0aGlzLmlzUmFuZ2VCYXI/MTowKTtnKyspdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmcseENvdW50OmQrKHRoaXMuaXNSYW5nZUJhcj8xOjApLHgxOjAseTE6bCx4MjpjLHkyOmgscGFyZW50OnRoaXMuZWxncmlkTGluZXNIfSksaD1sKz1zLmdsb2JhbHMuZ3JpZEhlaWdodC8odGhpcy5pc1JhbmdlQmFyP2Q6YSl9fX0se2tleTpcIl9kcmF3SW52ZXJ0ZWRYWUxpbmVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC54Q291bnQsaT10aGlzLnc7aWYoaS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHxpLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdylmb3IodmFyIGEscz1pLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxyPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LG89MDtvPGUrMTtvKyspe2kuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvdyYmdGhpcy5fZHJhd0dyaWRMaW5lKHtpOm8seENvdW50OmUrMSx4MTpzLHkxOjAseDI6YSx5MjpyLHBhcmVudDp0aGlzLmVsZ3JpZExpbmVzVn0pLG5ldyBWKHRoaXMuY3R4KS5kcmF3WGF4aXNUaWNrcyhzLDAsaS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbCksYT1zPXMraS5nbG9iYWxzLmdyaWRXaWR0aC9lKy4zfWlmKGkuY29uZmlnLmdyaWQueWF4aXMubGluZXMuc2hvdylmb3IodmFyIG49MCxsPTAsaD1pLmdsb2JhbHMuZ3JpZFdpZHRoLGM9MDtjPGkuZ2xvYmFscy5kYXRhUG9pbnRzKzE7YysrKXRoaXMuX2RyYXdHcmlkTGluZSh7aTpjLHhDb3VudDppLmdsb2JhbHMuZGF0YVBvaW50cysxLHgxOjAseTE6bix4MjpoLHkyOmwscGFyZW50OnRoaXMuZWxncmlkTGluZXNIfSksbD1uKz1pLmdsb2JhbHMuZ3JpZEhlaWdodC9pLmdsb2JhbHMuZGF0YVBvaW50c319LHtrZXk6XCJyZW5kZXJHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCk7dGhpcy5lbGc9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRcIn0pLHRoaXMuZWxncmlkTGluZXNIPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkbGluZXMtaG9yaXpvbnRhbFwifSksdGhpcy5lbGdyaWRMaW5lc1Y9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy12ZXJ0aWNhbFwifSksdGhpcy5lbEdyaWRCb3JkZXJzPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkLWJvcmRlcnNcIn0pLHRoaXMuZWxnLmFkZCh0aGlzLmVsZ3JpZExpbmVzSCksdGhpcy5lbGcuYWRkKHRoaXMuZWxncmlkTGluZXNWKSx0LmNvbmZpZy5ncmlkLnNob3d8fCh0aGlzLmVsZ3JpZExpbmVzVi5oaWRlKCksdGhpcy5lbGdyaWRMaW5lc0guaGlkZSgpLHRoaXMuZWxHcmlkQm9yZGVycy5oaWRlKCkpO2Zvcih2YXIgaSxhPXQuZ2xvYmFscy55QXhpc1NjYWxlLmxlbmd0aD90Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQubGVuZ3RoLTE6NSxzPTA7czx0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKHZvaWQgMCE9PXQuZ2xvYmFscy55QXhpc1NjYWxlW3NdJiYoYT10Lmdsb2JhbHMueUF4aXNTY2FsZVtzXS5yZXN1bHQubGVuZ3RoLTEpLCEoYT4yKSk7cysrKTtyZXR1cm4hdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8dGhpcy5pc1JhbmdlQmFyPyhpPXRoaXMueGF4aXNMYWJlbHMubGVuZ3RoLHRoaXMuaXNSYW5nZUJhciYmKGktLSxhPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoLHQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJnQuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXImJihpPXQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQpKSx0aGlzLl9kcmF3WFlMaW5lcyh7eENvdW50OmksdGlja0Ftb3VudDphfSkpOihpPWEsYT10Lmdsb2JhbHMueFRpY2tBbW91bnQsdGhpcy5fZHJhd0ludmVydGVkWFlMaW5lcyh7eENvdW50OmksdGlja0Ftb3VudDphfSkpLHRoaXMuZHJhd0dyaWRCYW5kcyhpLGEpLHtlbDp0aGlzLmVsZyxlbEdyaWRCb3JkZXJzOnRoaXMuZWxHcmlkQm9yZGVycyx4QXhpc1RpY2tXaWR0aDp0Lmdsb2JhbHMuZ3JpZFdpZHRoL2l9fX0se2tleTpcImRyYXdHcmlkQmFuZHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZih2b2lkIDAhPT1pLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMmJmkuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGg+MClmb3IodmFyIGE9MCxzPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2Uscj1pLmdsb2JhbHMuZ3JpZFdpZHRoLG89MCxuPTA7bzxlO28rKyxuKyspbj49aS5jb25maWcuZ3JpZC5yb3cuY29sb3JzLmxlbmd0aCYmKG49MCksdGhpcy5fZHJhd0dyaWRCYW5kUmVjdCh7YzpuLHgxOjAseTE6YSx4MjpyLHkyOnMsdHlwZTpcInJvd1wifSksYSs9aS5nbG9iYWxzLmdyaWRIZWlnaHQvZTtpZih2b2lkIDAhPT1pLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMmJmkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycy5sZW5ndGg+MClmb3IodmFyIGw9aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8XCJvblwiIT09aS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudHx8XCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz90OnQtMSxoPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGM9aS5nbG9iYWxzLnBhZEhvcml6b250YWwraS5nbG9iYWxzLmdyaWRXaWR0aC9sLGQ9aS5nbG9iYWxzLmdyaWRIZWlnaHQsZz0wLHU9MDtnPHQ7ZysrLHUrKyl1Pj1pLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMubGVuZ3RoJiYodT0wKSx0aGlzLl9kcmF3R3JpZEJhbmRSZWN0KHtjOnUseDE6aCx5MTowLHgyOmMseTI6ZCx0eXBlOlwiY29sdW1uXCJ9KSxoKz1pLmdsb2JhbHMuZ3JpZFdpZHRoL2x9fV0pLHR9KCksXz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwibmljZVNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MCxzPWFyZ3VtZW50cy5sZW5ndGg+ND9hcmd1bWVudHNbNF06dm9pZCAwLHI9dGhpcy53LG89TWF0aC5hYnMoZS10KTtpZihcImRhdGFQb2ludHNcIj09PShpPXRoaXMuX2FkanVzdFRpY2tzRm9yU21hbGxSYW5nZShpLGEsbykpJiYoaT1yLmdsb2JhbHMuZGF0YVBvaW50cy0xKSx0PT09TnVtYmVyLk1JTl9WQUxVRSYmMD09PWV8fCF4LmlzTnVtYmVyKHQpJiYheC5pc051bWJlcihlKXx8dD09PU51bWJlci5NSU5fVkFMVUUmJmU9PT0tTnVtYmVyLk1BWF9WQUxVRSlyZXR1cm4gdD0wLGU9aSx0aGlzLmxpbmVhclNjYWxlKHQsZSxpKTt0PmU/KGNvbnNvbGUud2FybihcImF4aXMubWluIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gYXhpcy5tYXhcIiksZT10Ky4xKTp0PT09ZSYmKHQ9MD09PXQ/MDp0LS41LGU9MD09PWU/MjplKy41KTt2YXIgbj1bXTtvPDEmJnMmJihcImNhbmRsZXN0aWNrXCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcImNhbmRsZXN0aWNrXCI9PT1yLmNvbmZpZy5zZXJpZXNbYV0udHlwZXx8XCJib3hQbG90XCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PXIuY29uZmlnLnNlcmllc1thXS50eXBlfHxyLmdsb2JhbHMuaXNSYW5nZURhdGEpJiYoZSo9MS4wMSk7dmFyIGw9aSsxO2w8Mj9sPTI6bD4yJiYobC09Mik7dmFyIGg9by9sLGM9TWF0aC5mbG9vcih4LmxvZzEwKGgpKSxkPU1hdGgucG93KDEwLGMpLGc9TWF0aC5yb3VuZChoL2QpO2c8MSYmKGc9MSk7dmFyIHU9ZypkLHA9dSpNYXRoLmZsb29yKHQvdSksZj11Kk1hdGguY2VpbChlL3UpLGI9cDtpZihzJiZvPjIpe2Zvcig7bi5wdXNoKHguc3RyaXBOdW1iZXIoYiw3KSksISgoYis9dSk+Zik7KTtyZXR1cm57cmVzdWx0Om4sbmljZU1pbjpuWzBdLG5pY2VNYXg6bltuLmxlbmd0aC0xXX19dmFyIHY9dDsobj1bXSkucHVzaCh4LnN0cmlwTnVtYmVyKHYsNykpO2Zvcih2YXIgbT1NYXRoLmFicyhlLXQpL2kseT0wO3k8PWk7eSsrKXYrPW0sbi5wdXNoKHYpO3JldHVybiBuW24ubGVuZ3RoLTJdPj1lJiZuLnBvcCgpLHtyZXN1bHQ6bixuaWNlTWluOm5bMF0sbmljZU1heDpuW24ubGVuZ3RoLTFdfX19LHtrZXk6XCJsaW5lYXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjEwLGE9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDAscz1NYXRoLmFicyhlLXQpO1wiZGF0YVBvaW50c1wiPT09KGk9dGhpcy5fYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlKGksYSxzKSkmJihpPXRoaXMudy5nbG9iYWxzLmRhdGFQb2ludHMtMSk7dmFyIHI9cy9pO2k9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoaT0xMCxyPTEpO2Zvcih2YXIgbz1bXSxuPXQ7aT49MDspby5wdXNoKG4pLG4rPXIsaS09MTtyZXR1cm57cmVzdWx0Om8sbmljZU1pbjpvWzBdLG5pY2VNYXg6b1tvLmxlbmd0aC0xXX19fSx7a2V5OlwibG9nYXJpdGhtaWNTY2FsZU5pY2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7ZTw9MCYmKGU9TWF0aC5tYXgodCxpKSksdDw9MCYmKHQ9TWF0aC5taW4oZSxpKSk7Zm9yKHZhciBhPVtdLHM9TWF0aC5jZWlsKE1hdGgubG9nKGUpL01hdGgubG9nKGkpKzEpLHI9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLmxvZyhpKSk7cjxzO3IrKylhLnB1c2goTWF0aC5wb3coaSxyKSk7cmV0dXJue3Jlc3VsdDphLG5pY2VNaW46YVswXSxuaWNlTWF4OmFbYS5sZW5ndGgtMV19fX0se2tleTpcImxvZ2FyaXRobWljU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7ZTw9MCYmKGU9TWF0aC5tYXgodCxpKSksdDw9MCYmKHQ9TWF0aC5taW4oZSxpKSk7Zm9yKHZhciBhPVtdLHM9TWF0aC5sb2coZSkvTWF0aC5sb2coaSkscj1NYXRoLmxvZyh0KS9NYXRoLmxvZyhpKSxvPXMtcixuPU1hdGgucm91bmQobyksbD1vL24saD0wLGM9cjtoPG47aCsrLGMrPWwpYS5wdXNoKE1hdGgucG93KGksYykpO3JldHVybiBhLnB1c2goTWF0aC5wb3coaSxzKSkse3Jlc3VsdDphLG5pY2VNaW46dCxuaWNlTWF4OmV9fX0se2tleTpcIl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dDtpZih2b2lkIDAhPT1lJiZ0aGlzLncuY29uZmlnLnlheGlzW2VdLmxhYmVscy5mb3JtYXR0ZXImJnZvaWQgMD09PXRoaXMudy5jb25maWcueWF4aXNbZV0udGlja0Ftb3VudCl7dmFyIHM9TnVtYmVyKHRoaXMudy5jb25maWcueWF4aXNbZV0ubGFiZWxzLmZvcm1hdHRlcigxKSk7eC5pc051bWJlcihzKSYmMD09PXRoaXMudy5nbG9iYWxzLnlWYWx1ZURlY2ltYWwmJihhPU1hdGguY2VpbChpKSl9cmV0dXJuIGE8dD9hOnR9fSx7a2V5Olwic2V0WVNjYWxlRm9ySW5kZXhcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53Lmdsb2JhbHMscz10aGlzLncuY29uZmlnLHI9YS5pc0Jhckhvcml6b250YWw/cy54YXhpczpzLnlheGlzW3RdO3ZvaWQgMD09PWEueUF4aXNTY2FsZVt0XSYmKGEueUF4aXNTY2FsZVt0XT1bXSk7dmFyIG89TWF0aC5hYnMoaS1lKTtpZihyLmxvZ2FyaXRobWljJiZvPD01JiYoYS5pbnZhbGlkTG9nU2NhbGU9ITApLHIubG9nYXJpdGhtaWMmJm8+NSlhLmFsbFNlcmllc0NvbGxhcHNlZD0hMSxhLnlBeGlzU2NhbGVbdF09dGhpcy5sb2dhcml0aG1pY1NjYWxlKGUsaSxyLmxvZ0Jhc2UpLGEueUF4aXNTY2FsZVt0XT1yLmZvcmNlTmljZVNjYWxlP3RoaXMubG9nYXJpdGhtaWNTY2FsZU5pY2UoZSxpLHIubG9nQmFzZSk6dGhpcy5sb2dhcml0aG1pY1NjYWxlKGUsaSxyLmxvZ0Jhc2UpO2Vsc2UgaWYoaSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZ4LmlzTnVtYmVyKGkpKWlmKGEuYWxsU2VyaWVzQ29sbGFwc2VkPSExLHZvaWQgMD09PXIubWluJiZ2b2lkIDA9PT1yLm1heHx8ci5mb3JjZU5pY2VTY2FsZSl7dmFyIG49dm9pZCAwPT09cy55YXhpc1t0XS5tYXgmJnZvaWQgMD09PXMueWF4aXNbdF0ubWlufHxzLnlheGlzW3RdLmZvcmNlTmljZVNjYWxlO2EueUF4aXNTY2FsZVt0XT10aGlzLm5pY2VTY2FsZShlLGksci50aWNrQW1vdW50P3IudGlja0Ftb3VudDpvPDUmJm8+MT9vKzE6NSx0LG4pfWVsc2UgYS55QXhpc1NjYWxlW3RdPXRoaXMubGluZWFyU2NhbGUoZSxpLHIudGlja0Ftb3VudCx0KTtlbHNlIGEueUF4aXNTY2FsZVt0XT10aGlzLmxpbmVhclNjYWxlKDAsNSw1KX19LHtrZXk6XCJzZXRYU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuZ2xvYmFscyxzPWkuY29uZmlnLnhheGlzLHI9TWF0aC5hYnMoZS10KTtyZXR1cm4gZSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZ4LmlzTnVtYmVyKGUpP2EueEF4aXNTY2FsZT10aGlzLmxpbmVhclNjYWxlKHQsZSxzLnRpY2tBbW91bnQ/cy50aWNrQW1vdW50OnI8NSYmcj4xP3IrMTo1LDApOmEueEF4aXNTY2FsZT10aGlzLmxpbmVhclNjYWxlKDAsNSw1KSxhLnhBeGlzU2NhbGV9fSx7a2V5Olwic2V0TXVsdGlwbGVZU2NhbGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53Lmdsb2JhbHMsaT10aGlzLncuY29uZmlnLGE9ZS5taW5ZQXJyLmNvbmNhdChbXSkscz1lLm1heFlBcnIuY29uY2F0KFtdKSxyPVtdO2kueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxvKXt2YXIgbj1vO2kuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dC5uYW1lPT09ZS5zZXJpZXNOYW1lJiYobj1pLG8hPT1pP3IucHVzaCh7aW5kZXg6aSxzaW1pbGFySW5kZXg6byxhbHJlYWR5RXhpc3RzOiEwfSk6ci5wdXNoKHtpbmRleDppfSkpfSkpO3ZhciBsPWFbbl0saD1zW25dO3Quc2V0WVNjYWxlRm9ySW5kZXgobyxsLGgpfSkpLHRoaXMuc2FtZVNjYWxlSW5NdWx0aXBsZUF4ZXMoYSxzLHIpfX0se2tleTpcInNhbWVTY2FsZUluTXVsdGlwbGVBeGVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncuY29uZmlnLHI9dGhpcy53Lmdsb2JhbHMsbz1bXTtpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuYWxyZWFkeUV4aXN0cyYmKHZvaWQgMD09PW9bdC5pbmRleF0mJihvW3QuaW5kZXhdPVtdKSxvW3QuaW5kZXhdLnB1c2godC5pbmRleCksb1t0LmluZGV4XS5wdXNoKHQuc2ltaWxhckluZGV4KSl9KSksci55QXhpc1NhbWVTY2FsZUluZGljZXM9byxvLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7by5mb3JFYWNoKChmdW5jdGlvbihpLGEpe3ZhciBzLHI7ZSE9PWEmJihzPXQscj1pLHMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXIuaW5kZXhPZih0KX0pKSkubGVuZ3RoPjAmJihvW2VdPW9bZV0uY29uY2F0KG9bYV0pKX0pKX0pKTt2YXIgbj1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbihlLGkpe3JldHVybiB0LmluZGV4T2YoZSk9PT1pfSkpfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc29ydCgpfSkpO289by5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKTt2YXIgbD1uLnNsaWNlKCksaD1sLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfSkpO2w9bC5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGguaW5kZXhPZihKU09OLnN0cmluZ2lmeSh0KSk9PT1lfSkpO3ZhciBjPVtdLGQ9W107dC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2wuZm9yRWFjaCgoZnVuY3Rpb24oYSxzKXthLmluZGV4T2YoaSk+LTEmJih2b2lkIDA9PT1jW3NdJiYoY1tzXT1bXSxkW3NdPVtdKSxjW3NdLnB1c2goe2tleTppLHZhbHVlOnR9KSxkW3NdLnB1c2goe2tleTppLHZhbHVlOmVbaV19KSl9KSl9KSk7dmFyIGc9QXJyYXkuYXBwbHkobnVsbCxBcnJheShsLmxlbmd0aCkpLm1hcChOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YsTnVtYmVyLk1JTl9WQUxVRSksdT1BcnJheS5hcHBseShudWxsLEFycmF5KGwubGVuZ3RoKSkubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwtTnVtYmVyLk1BWF9WQUxVRSk7Yy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtnW2VdPU1hdGgubWluKHQudmFsdWUsZ1tlXSl9KSl9KSksZC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt1W2VdPU1hdGgubWF4KHQudmFsdWUsdVtlXSl9KSl9KSksdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgbz1nW2ldLG49dVtpXTtzLmNoYXJ0LnN0YWNrZWQmJihuPTAsdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QudmFsdWUhPT0tTnVtYmVyLk1BWF9WQUxVRSYmKG4rPXQudmFsdWUpLG8hPT1OdW1iZXIuTUlOX1ZBTFVFJiYobys9Y1tpXVtlXS52YWx1ZSl9KSkpLHQuZm9yRWFjaCgoZnVuY3Rpb24oaSxsKXt0W2xdLmtleT09PWUmJih2b2lkIDAhPT1zLnlheGlzW2VdLm1pbiYmKG89XCJmdW5jdGlvblwiPT10eXBlb2Ygcy55YXhpc1tlXS5taW4/cy55YXhpc1tlXS5taW4oci5taW5ZKTpzLnlheGlzW2VdLm1pbiksdm9pZCAwIT09cy55YXhpc1tlXS5tYXgmJihuPVwiZnVuY3Rpb25cIj09dHlwZW9mIHMueWF4aXNbZV0ubWF4P3MueWF4aXNbZV0ubWF4KHIubWF4WSk6cy55YXhpc1tlXS5tYXgpLGEuc2V0WVNjYWxlRm9ySW5kZXgoZSxvLG4pKX0pKX0pKX0pKX19LHtrZXk6XCJhdXRvU2NhbGVZXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3R8fCh0PXRoaXMpO3ZhciBhPXQudztpZihhLmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzfHxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aClyZXR1cm4gY29uc29sZS53YXJuKFwiYXV0b1NjYWxlWWF4aXMgbm90IHN1cHBvcnRlZCBpbiBhIG11bHRpLXlheGlzIGNoYXJ0LlwiKSxlO3ZhciBzPWEuZ2xvYmFscy5zZXJpZXNYWzBdLHI9YS5jb25maWcuY2hhcnQuc3RhY2tlZDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0LG8pe2Zvcih2YXIgbj0wLGw9MDtsPHMubGVuZ3RoO2wrKylpZihzW2xdPj1pLnhheGlzLm1pbil7bj1sO2JyZWFrfXZhciBoLGMsZD1hLmdsb2JhbHMubWluWUFycltvXSxnPWEuZ2xvYmFscy5tYXhZQXJyW29dLHU9YS5nbG9iYWxzLnN0YWNrZWRTZXJpZXNUb3RhbHM7YS5nbG9iYWxzLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbihvLGwpe3ZhciBwPW9bbl07cj8ocD11W25dLGg9Yz1wLHUuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtzW2VdPD1pLnhheGlzLm1heCYmc1tlXT49aS54YXhpcy5taW4mJih0PmMmJm51bGwhPT10JiYoYz10KSxvW2VdPGgmJm51bGwhPT1vW2VdJiYoaD1vW2VdKSl9KSkpOihoPWM9cCxvLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7aWYoc1tlXTw9aS54YXhpcy5tYXgmJnNbZV0+PWkueGF4aXMubWluKXt2YXIgcj10LG89dDthLmdsb2JhbHMuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7bnVsbCE9PXQmJihyPU1hdGgubWluKGlbZV0sciksbz1NYXRoLm1heChpW2VdLG8pKX0pKSxvPmMmJm51bGwhPT1vJiYoYz1vKSxyPGgmJm51bGwhPT1yJiYoaD1yKX19KSkpLHZvaWQgMD09PWgmJnZvaWQgMD09PWMmJihoPWQsYz1nKSxjKj1jPDA/Ljk6MS4xLDA9PT0oaCo9aDwwPzEuMTouOSkmJjA9PT1jJiYoaD0tMSxjPTEpLGM8MCYmYzxnJiYoYz1nKSxoPDAmJmg+ZCYmKGg9ZCksZS5sZW5ndGg+MT8oZVtsXS5taW49dm9pZCAwPT09dC5taW4/aDp0Lm1pbixlW2xdLm1heD12b2lkIDA9PT10Lm1heD9jOnQubWF4KTooZVswXS5taW49dm9pZCAwPT09dC5taW4/aDp0Lm1pbixlWzBdLm1heD12b2lkIDA9PT10Lm1heD9jOnQubWF4KX0pKX0pKSxlfX1dKSx0fSgpLFU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zY2FsZXM9bmV3IF8oZSl9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0WVJhbmdlKCksdGhpcy5zZXRYUmFuZ2UoKSx0aGlzLnNldFpSYW5nZSgpfX0se2tleTpcImdldE1pbllNYXhZXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOk51bWJlci5NQVhfVkFMVUUsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06LU51bWJlci5NQVhfVkFMVUUsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbCxzPXRoaXMudy5jb25maWcscj10aGlzLncuZ2xvYmFscyxvPS1OdW1iZXIuTUFYX1ZBTFVFLG49TnVtYmVyLk1JTl9WQUxVRTtudWxsPT09YSYmKGE9dCsxKTt2YXIgbD1yLnNlcmllcyxoPWwsYz1sO1wiY2FuZGxlc3RpY2tcIj09PXMuY2hhcnQudHlwZT8oaD1yLnNlcmllc0NhbmRsZUwsYz1yLnNlcmllc0NhbmRsZUgpOlwiYm94UGxvdFwiPT09cy5jaGFydC50eXBlPyhoPXIuc2VyaWVzQ2FuZGxlTyxjPXIuc2VyaWVzQ2FuZGxlQyk6ci5pc1JhbmdlRGF0YSYmKGg9ci5zZXJpZXNSYW5nZVN0YXJ0LGM9ci5zZXJpZXNSYW5nZUVuZCk7Zm9yKHZhciBkPXQ7ZDxhO2QrKyl7ci5kYXRhUG9pbnRzPU1hdGgubWF4KHIuZGF0YVBvaW50cyxsW2RdLmxlbmd0aCksci5jYXRlZ29yeUxhYmVscy5sZW5ndGgmJihyLmRhdGFQb2ludHM9ci5jYXRlZ29yeUxhYmVscy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10fSkpLmxlbmd0aCksci5sYWJlbHMubGVuZ3RoJiZcImRhdGV0aW1lXCIhPT1zLnhheGlzLnR5cGUmJjAhPT1yLnNlcmllcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5sZW5ndGh9KSwwKSYmKHIuZGF0YVBvaW50cz1NYXRoLm1heChyLmRhdGFQb2ludHMsci5sYWJlbHMubGVuZ3RoKSk7Zm9yKHZhciBnPTA7ZzxyLnNlcmllc1tkXS5sZW5ndGg7ZysrKXt2YXIgdT1sW2RdW2ddO251bGwhPT11JiZ4LmlzTnVtYmVyKHUpPyh2b2lkIDAhPT1jW2RdW2ddJiYobz1NYXRoLm1heChvLGNbZF1bZ10pLGU9TWF0aC5taW4oZSxjW2RdW2ddKSksdm9pZCAwIT09aFtkXVtnXSYmKGU9TWF0aC5taW4oZSxoW2RdW2ddKSxpPU1hdGgubWF4KGksaFtkXVtnXSkpLFwiY2FuZGxlc3RpY2tcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwicmFuZ2VBcmVhXCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwicmFuZ2VCYXJcIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZXx8KFwiY2FuZGxlc3RpY2tcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGV8fHZvaWQgMCE9PXIuc2VyaWVzQ2FuZGxlQ1tkXVtnXSYmKG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZU9bZF1bZ10pLG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZUhbZF1bZ10pLG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZUxbZF1bZ10pLG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZUNbZF1bZ10pLFwiYm94UGxvdFwiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiYobz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlTVtkXVtnXSkpKSwhcy5zZXJpZXNbZF0udHlwZXx8XCJjYW5kbGVzdGlja1wiPT09cy5zZXJpZXNbZF0udHlwZSYmXCJib3hQbG90XCI9PT1zLnNlcmllc1tkXS50eXBlJiZcInJhbmdlQXJlYVwiPT09cy5zZXJpZXNbZF0udHlwZSYmXCJyYW5nZUJhclwiPT09cy5zZXJpZXNbZF0udHlwZXx8KG89TWF0aC5tYXgobyxyLnNlcmllc1tkXVtnXSksZT1NYXRoLm1pbihlLHIuc2VyaWVzW2RdW2ddKSksaT1vKSxyLnNlcmllc0dvYWxzW2RdJiZyLnNlcmllc0dvYWxzW2RdW2ddJiZBcnJheS5pc0FycmF5KHIuc2VyaWVzR29hbHNbZF1bZ10pJiZyLnNlcmllc0dvYWxzW2RdW2ddLmZvckVhY2goKGZ1bmN0aW9uKHQpe24hPT1OdW1iZXIuTUlOX1ZBTFVFJiYobj1NYXRoLm1pbihuLHQudmFsdWUpLGU9biksbz1NYXRoLm1heChvLHQudmFsdWUpLGk9b30pKSx4LmlzRmxvYXQodSkmJih1PXgubm9FeHBvbmVudHModSksci55VmFsdWVEZWNpbWFsPU1hdGgubWF4KHIueVZhbHVlRGVjaW1hbCx1LnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdLmxlbmd0aCkpLG4+aFtkXVtnXSYmaFtkXVtnXTwwJiYobj1oW2RdW2ddKSk6ci5oYXNOdWxsVmFsdWVzPSEwfX1yZXR1cm5cInJhbmdlQmFyXCI9PT1zLmNoYXJ0LnR5cGUmJnIuc2VyaWVzUmFuZ2VTdGFydC5sZW5ndGgmJnIuaXNCYXJIb3Jpem9udGFsJiYobj1lKSxcImJhclwiPT09cy5jaGFydC50eXBlJiYobjwwJiZvPDAmJihvPTApLG49PT1OdW1iZXIuTUlOX1ZBTFVFJiYobj0wKSkse21pblk6bixtYXhZOm8sbG93ZXN0WTplLGhpZ2hlc3RZOml9fX0se2tleTpcInNldFlSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnO3QubWF4WT0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblk9TnVtYmVyLk1JTl9WQUxVRTt2YXIgaT1OdW1iZXIuTUFYX1ZBTFVFO2lmKHQuaXNNdWx0aXBsZVlBeGlzKWZvcih2YXIgYT0wO2E8dC5zZXJpZXMubGVuZ3RoO2ErKyl7dmFyIHM9dGhpcy5nZXRNaW5ZTWF4WShhLGksbnVsbCxhKzEpO3QubWluWUFyci5wdXNoKHMubWluWSksdC5tYXhZQXJyLnB1c2gocy5tYXhZKSxpPXMubG93ZXN0WX12YXIgcj10aGlzLmdldE1pbllNYXhZKDAsaSxudWxsLHQuc2VyaWVzLmxlbmd0aCk7aWYodC5taW5ZPXIubWluWSx0Lm1heFk9ci5tYXhZLGk9ci5sb3dlc3RZLGUuY2hhcnQuc3RhY2tlZCYmdGhpcy5fc2V0U3RhY2tlZE1pbk1heCgpLChcImxpbmVcIj09PWUuY2hhcnQudHlwZXx8XCJhcmVhXCI9PT1lLmNoYXJ0LnR5cGV8fFwiY2FuZGxlc3RpY2tcIj09PWUuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1lLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWUuY2hhcnQudHlwZSYmIXQuaXNCYXJIb3Jpem9udGFsKSYmdC5taW5ZPT09TnVtYmVyLk1JTl9WQUxVRSYmaSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZpIT09dC5tYXhZKXt2YXIgbz10Lm1heFktaTsoaT49MCYmaTw9MTB8fHZvaWQgMCE9PWUueWF4aXNbMF0ubWlufHx2b2lkIDAhPT1lLnlheGlzWzBdLm1heCkmJihvPTApLHQubWluWT1pLTUqby8xMDAsaT4wJiZ0Lm1pblk8MCYmKHQubWluWT0wKSx0Lm1heFk9dC5tYXhZKzUqby8xMDB9aWYoZS55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3ZvaWQgMCE9PWUubWF4JiYoXCJudW1iZXJcIj09dHlwZW9mIGUubWF4P3QubWF4WUFycltpXT1lLm1heDpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLm1heCYmKHQubWF4WUFycltpXT1lLm1heCh0LmlzTXVsdGlwbGVZQXhpcz90Lm1heFlBcnJbaV06dC5tYXhZKSksdC5tYXhZPXQubWF4WUFycltpXSksdm9pZCAwIT09ZS5taW4mJihcIm51bWJlclwiPT10eXBlb2YgZS5taW4/dC5taW5ZQXJyW2ldPWUubWluOlwiZnVuY3Rpb25cIj09dHlwZW9mIGUubWluJiYodC5taW5ZQXJyW2ldPWUubWluKHQuaXNNdWx0aXBsZVlBeGlzP3QubWluWUFycltpXT09PU51bWJlci5NSU5fVkFMVUU/MDp0Lm1pbllBcnJbaV06dC5taW5ZKSksdC5taW5ZPXQubWluWUFycltpXSl9KSksdC5pc0Jhckhvcml6b250YWwpe1tcIm1pblwiLFwibWF4XCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZvaWQgMCE9PWUueGF4aXNbaV0mJlwibnVtYmVyXCI9PXR5cGVvZiBlLnhheGlzW2ldJiYoXCJtaW5cIj09PWk/dC5taW5ZPWUueGF4aXNbaV06dC5tYXhZPWUueGF4aXNbaV0pfSkpfXJldHVybiB0LmlzTXVsdGlwbGVZQXhpcz8odGhpcy5zY2FsZXMuc2V0TXVsdGlwbGVZU2NhbGVzKCksdC5taW5ZPWksdC55QXhpc1NjYWxlLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dC5taW5ZQXJyW2ldPWUubmljZU1pbix0Lm1heFlBcnJbaV09ZS5uaWNlTWF4fSkpKToodGhpcy5zY2FsZXMuc2V0WVNjYWxlRm9ySW5kZXgoMCx0Lm1pblksdC5tYXhZKSx0Lm1pblk9dC55QXhpc1NjYWxlWzBdLm5pY2VNaW4sdC5tYXhZPXQueUF4aXNTY2FsZVswXS5uaWNlTWF4LHQubWluWUFyclswXT10LnlBeGlzU2NhbGVbMF0ubmljZU1pbix0Lm1heFlBcnJbMF09dC55QXhpc1NjYWxlWzBdLm5pY2VNYXgpLHttaW5ZOnQubWluWSxtYXhZOnQubWF4WSxtaW5ZQXJyOnQubWluWUFycixtYXhZQXJyOnQubWF4WUFycix5QXhpc1NjYWxlOnQueUF4aXNTY2FsZX19fSx7a2V5Olwic2V0WFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWcsaT1cIm51bWVyaWNcIj09PWUueGF4aXMudHlwZXx8XCJkYXRldGltZVwiPT09ZS54YXhpcy50eXBlfHxcImNhdGVnb3J5XCI9PT1lLnhheGlzLnR5cGUmJiF0Lm5vTGFiZWxzUHJvdmlkZWR8fHQubm9MYWJlbHNQcm92aWRlZHx8dC5pc1hOdW1lcmljO2lmKHQuaXNYTnVtZXJpYyYmZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHQuc2VyaWVzLmxlbmd0aDtlKyspaWYodC5sYWJlbHNbZV0pZm9yKHZhciBpPTA7aTx0LmxhYmVsc1tlXS5sZW5ndGg7aSsrKW51bGwhPT10LmxhYmVsc1tlXVtpXSYmeC5pc051bWJlcih0LmxhYmVsc1tlXVtpXSkmJih0Lm1heFg9TWF0aC5tYXgodC5tYXhYLHQubGFiZWxzW2VdW2ldKSx0LmluaXRpYWxNYXhYPU1hdGgubWF4KHQubWF4WCx0LmxhYmVsc1tlXVtpXSksdC5taW5YPU1hdGgubWluKHQubWluWCx0LmxhYmVsc1tlXVtpXSksdC5pbml0aWFsTWluWD1NYXRoLm1pbih0Lm1pblgsdC5sYWJlbHNbZV1baV0pKX0oKSx0Lm5vTGFiZWxzUHJvdmlkZWQmJjA9PT1lLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoJiYodC5tYXhYPXQubGFiZWxzW3QubGFiZWxzLmxlbmd0aC0xXSx0LmluaXRpYWxNYXhYPXQubGFiZWxzW3QubGFiZWxzLmxlbmd0aC0xXSx0Lm1pblg9MSx0LmluaXRpYWxNaW5YPTEpLHQuaXNYTnVtZXJpY3x8dC5ub0xhYmVsc1Byb3ZpZGVkfHx0LmRhdGFGb3JtYXRYTnVtZXJpYyl7dmFyIGE7aWYodm9pZCAwPT09ZS54YXhpcy50aWNrQW1vdW50PyhhPU1hdGgucm91bmQodC5zdmdXaWR0aC8xNTApLFwibnVtZXJpY1wiPT09ZS54YXhpcy50eXBlJiZ0LmRhdGFQb2ludHM8MzAmJihhPXQuZGF0YVBvaW50cy0xKSxhPnQuZGF0YVBvaW50cyYmMCE9PXQuZGF0YVBvaW50cyYmKGE9dC5kYXRhUG9pbnRzLTEpKTpcImRhdGFQb2ludHNcIj09PWUueGF4aXMudGlja0Ftb3VudD8odC5zZXJpZXMubGVuZ3RoPjEmJihhPXQuc2VyaWVzW3QubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoLTEpLHQuaXNYTnVtZXJpYyYmKGE9dC5tYXhYLXQubWluWC0xKSk6YT1lLnhheGlzLnRpY2tBbW91bnQsdC54VGlja0Ftb3VudD1hLHZvaWQgMCE9PWUueGF4aXMubWF4JiZcIm51bWJlclwiPT10eXBlb2YgZS54YXhpcy5tYXgmJih0Lm1heFg9ZS54YXhpcy5tYXgpLHZvaWQgMCE9PWUueGF4aXMubWluJiZcIm51bWJlclwiPT10eXBlb2YgZS54YXhpcy5taW4mJih0Lm1pblg9ZS54YXhpcy5taW4pLHZvaWQgMCE9PWUueGF4aXMucmFuZ2UmJih0Lm1pblg9dC5tYXhYLWUueGF4aXMucmFuZ2UpLHQubWluWCE9PU51bWJlci5NQVhfVkFMVUUmJnQubWF4WCE9PS1OdW1iZXIuTUFYX1ZBTFVFKWlmKGUueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYhdC5kYXRhRm9ybWF0WE51bWVyaWMpe2Zvcih2YXIgcz1bXSxyPXQubWluWC0xO3I8dC5tYXhYO3IrKylzLnB1c2gocisxKTt0LnhBeGlzU2NhbGU9e3Jlc3VsdDpzLG5pY2VNaW46c1swXSxuaWNlTWF4OnNbcy5sZW5ndGgtMV19fWVsc2UgdC54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLnNldFhTY2FsZSh0Lm1pblgsdC5tYXhYKTtlbHNlIHQueEF4aXNTY2FsZT10aGlzLnNjYWxlcy5saW5lYXJTY2FsZSgwLGEsYSksdC5ub0xhYmVsc1Byb3ZpZGVkJiZ0LmxhYmVscy5sZW5ndGg+MCYmKHQueEF4aXNTY2FsZT10aGlzLnNjYWxlcy5saW5lYXJTY2FsZSgxLHQubGFiZWxzLmxlbmd0aCxhLTEpLHQuc2VyaWVzWD10LmxhYmVscy5zbGljZSgpKTtpJiYodC5sYWJlbHM9dC54QXhpc1NjYWxlLnJlc3VsdC5zbGljZSgpKX1yZXR1cm4gdC5pc0Jhckhvcml6b250YWwmJnQubGFiZWxzLmxlbmd0aCYmKHQueFRpY2tBbW91bnQ9dC5sYWJlbHMubGVuZ3RoKSx0aGlzLl9oYW5kbGVTaW5nbGVEYXRhUG9pbnQoKSx0aGlzLl9nZXRNaW5YRGlmZigpLHttaW5YOnQubWluWCxtYXhYOnQubWF4WH19fSx7a2V5Olwic2V0WlJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscztpZih0LmlzRGF0YVhZWilmb3IodmFyIGU9MDtlPHQuc2VyaWVzLmxlbmd0aDtlKyspaWYodm9pZCAwIT09dC5zZXJpZXNaW2VdKWZvcih2YXIgaT0wO2k8dC5zZXJpZXNaW2VdLmxlbmd0aDtpKyspbnVsbCE9PXQuc2VyaWVzWltlXVtpXSYmeC5pc051bWJlcih0LnNlcmllc1pbZV1baV0pJiYodC5tYXhaPU1hdGgubWF4KHQubWF4Wix0LnNlcmllc1pbZV1baV0pLHQubWluWj1NYXRoLm1pbih0Lm1pblosdC5zZXJpZXNaW2VdW2ldKSl9fSx7a2V5OlwiX2hhbmRsZVNpbmdsZURhdGFQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnO2lmKHQubWluWD09PXQubWF4WCl7dmFyIGk9bmV3IEkodGhpcy5jdHgpO2lmKFwiZGF0ZXRpbWVcIj09PWUueGF4aXMudHlwZSl7dmFyIGE9aS5nZXREYXRlKHQubWluWCk7ZS54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/YS5zZXRVVENEYXRlKGEuZ2V0VVRDRGF0ZSgpLTIpOmEuc2V0RGF0ZShhLmdldERhdGUoKS0yKSx0Lm1pblg9bmV3IERhdGUoYSkuZ2V0VGltZSgpO3ZhciBzPWkuZ2V0RGF0ZSh0Lm1heFgpO2UueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP3Muc2V0VVRDRGF0ZShzLmdldFVUQ0RhdGUoKSsyKTpzLnNldERhdGUocy5nZXREYXRlKCkrMiksdC5tYXhYPW5ldyBEYXRlKHMpLmdldFRpbWUoKX1lbHNlKFwibnVtZXJpY1wiPT09ZS54YXhpcy50eXBlfHxcImNhdGVnb3J5XCI9PT1lLnhheGlzLnR5cGUmJiF0Lm5vTGFiZWxzUHJvdmlkZWQpJiYodC5taW5YPXQubWluWC0yLHQuaW5pdGlhbE1pblg9dC5taW5YLHQubWF4WD10Lm1heFgrMix0LmluaXRpYWxNYXhYPXQubWF4WCl9fX0se2tleTpcIl9nZXRNaW5YRGlmZlwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHM7dC5pc1hOdW1lcmljJiZ0LnNlcmllc1guZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXsxPT09ZS5sZW5ndGgmJmUucHVzaCh0LnNlcmllc1hbdC5tYXhWYWxzSW5BcnJheUluZGV4XVt0LnNlcmllc1hbdC5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMV0pO3ZhciBhPWUuc2xpY2UoKTthLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKSxhLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7aWYoaT4wKXt2YXIgcz1lLWFbaS0xXTtzPjAmJih0Lm1pblhEaWZmPU1hdGgubWluKHMsdC5taW5YRGlmZikpfX0pKSwxIT09dC5kYXRhUG9pbnRzJiZ0Lm1pblhEaWZmIT09TnVtYmVyLk1BWF9WQUxVRXx8KHQubWluWERpZmY9LjUpfSkpfX0se2tleTpcIl9zZXRTdGFja2VkTWluTWF4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53Lmdsb2JhbHM7aWYoZS5zZXJpZXMubGVuZ3RoKXt2YXIgaT1lLnNlcmllc0dyb3VwcztpLmxlbmd0aHx8KGk9W3RoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZX0pKV0pO3ZhciBhPXt9LHM9e307aS5mb3JFYWNoKChmdW5jdGlvbihpKXthW2ldPVtdLHNbaV09W10sdC53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBpLmluZGV4T2YodC5uYW1lKT4tMT9lOm51bGx9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciByPTA7cjxlLnNlcmllc1tlLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDtyKyspdm9pZCAwPT09YVtpXVtyXSYmKGFbaV1bcl09MCxzW2ldW3JdPTApLG51bGwhPT1lLnNlcmllc1t0XVtyXSYmeC5pc051bWJlcihlLnNlcmllc1t0XVtyXSkmJihlLnNlcmllc1t0XVtyXT4wP2FbaV1bcl0rPXBhcnNlRmxvYXQoZS5zZXJpZXNbdF1bcl0pKzFlLTQ6c1tpXVtyXSs9cGFyc2VGbG9hdChlLnNlcmllc1t0XVtyXSkpfSkpfSkpLE9iamVjdC5lbnRyaWVzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPWcodCwxKVswXTthW2ldLmZvckVhY2goKGZ1bmN0aW9uKHQscil7ZS5tYXhZPU1hdGgubWF4KGUubWF4WSxhW2ldW3JdKSxlLm1pblk9TWF0aC5taW4oZS5taW5ZLHNbaV1bcl0pfSkpfSkpfX19XSksdH0oKSxxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuZWxncmlkPWksdGhpcy53PWUudzt2YXIgcz10aGlzLnc7dGhpcy54YXhpc0ZvbnRTaXplPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSx0aGlzLmF4aXNGb250RmFtaWx5PXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LHRoaXMueGF4aXNGb3JlQ29sb3JzPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jb2xvcnMsdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbD1cImJhclwiPT09cy5jb25maWcuY2hhcnQudHlwZSYmcy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsdGhpcy54QXhpc29mZlg9MCxcImJvdHRvbVwiPT09cy5jb25maWcueGF4aXMucG9zaXRpb24mJih0aGlzLnhBeGlzb2ZmWD1zLmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5kcmF3bkxhYmVscz1bXSx0aGlzLmF4ZXNVdGlscz1uZXcgQihlKX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1lheGlzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5zdHlsZSxyPXMuZm9udFNpemUsbz1zLmZvbnRGYW1pbHksbj1zLmZvbnRXZWlnaHQsbD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXNcIixyZWw6dCx0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIraS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XStcIiwgMClcIn0pO2lmKHRoaXMuYXhlc1V0aWxzLmlzWUF4aXNIaWRkZW4odCkpcmV0dXJuIGw7dmFyIGg9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIn0pO2wuYWRkKGgpO3ZhciBjPWkuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5sZW5ndGgtMSxkPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2MsZz1pLmdsb2JhbHMudHJhbnNsYXRlWSx1PWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdLHA9aS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0LnNsaWNlKCk7cD10aGlzLmF4ZXNVdGlscy5jaGVja0ZvclJldmVyc2VkTGFiZWxzKHQscCk7dmFyIGY9XCJcIjtpZihpLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuc2hvdylmb3IodmFyIHg9ZnVuY3Rpb24obCl7dmFyIHg9cFtsXTt4PXUoeCxsLGkpO3ZhciBiPWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5wYWRkaW5nO2kuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYwIT09aS5jb25maWcueWF4aXMubGVuZ3RoJiYoYio9LTEpO3ZhciB2PVwiZW5kXCI7aS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJih2PVwic3RhcnRcIiksXCJsZWZ0XCI9PT1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuYWxpZ24/dj1cInN0YXJ0XCI6XCJjZW50ZXJcIj09PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5hbGlnbj92PVwibWlkZGxlXCI6XCJyaWdodFwiPT09aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLmFsaWduJiYodj1cImVuZFwiKTt2YXIgbT1lLmF4ZXNVdGlscy5nZXRZQXhpc0ZvcmVDb2xvcihzLmNvbG9ycyx0KSx5PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5vZmZzZXRZO1wiaGVhdG1hcFwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmKHktPShpLmdsb2JhbHMuZ3JpZEhlaWdodC9pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xKS8yKTt2YXIgdz1hLmRyYXdUZXh0KHt4OmIseTpnK2MvMTAreSsxLHRleHQ6eCx0ZXh0QW5jaG9yOnYsZm9udFNpemU6cixmb250RmFtaWx5Om8sZm9udFdlaWdodDpuLG1heFdpZHRoOmkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5tYXhXaWR0aCxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShtKT9tW2xdOm0saXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWxhYmVsIFwiK3MuY3NzQ2xhc3N9KTtsPT09YyYmKGY9dyksaC5hZGQodyk7dmFyIGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGkuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2lmKGsudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheSh4KT94LmpvaW4oXCIgXCIpOngsdy5ub2RlLmFwcGVuZENoaWxkKGspLDAhPT1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlKXt2YXIgQT1hLnJvdGF0ZUFyb3VuZENlbnRlcihmLm5vZGUpLFM9YS5yb3RhdGVBcm91bmRDZW50ZXIody5ub2RlKTt3Lm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KGkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUsXCIgXCIpLmNvbmNhdChBLngsXCIgXCIpLmNvbmNhdChTLnksXCIpXCIpKX1nKz1kfSxiPWM7Yj49MDtiLS0peChiKTtpZih2b2lkIDAhPT1pLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0KXt2YXIgdj1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGVcIn0pLHk9MDtpLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKHk9aS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XSk7dmFyIHc9YS5kcmF3VGV4dCh7eDp5LHk6aS5nbG9iYWxzLmdyaWRIZWlnaHQvMitpLmdsb2JhbHMudHJhbnNsYXRlWStpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRZLHRleHQ6aS5jb25maWcueWF4aXNbdF0udGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwiZW5kXCIsZm9yZUNvbG9yOmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmNvbG9yLGZvbnRTaXplOmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRXZWlnaHQ6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb250RmFtaWx5OmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgXCIraS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTt2LmFkZCh3KSxsLmFkZCh2KX12YXIgaz1pLmNvbmZpZy55YXhpc1t0XS5heGlzQm9yZGVyLEE9MzEray5vZmZzZXRYO2lmKGkuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYoQT0tMzEtay5vZmZzZXRYKSxrLnNob3cpe3ZhciBTPWEuZHJhd0xpbmUoQSxpLmdsb2JhbHMudHJhbnNsYXRlWStrLm9mZnNldFktMixBLGkuZ2xvYmFscy5ncmlkSGVpZ2h0K2kuZ2xvYmFscy50cmFuc2xhdGVZK2sub2Zmc2V0WSsyLGsuY29sb3IsMCxrLndpZHRoKTtsLmFkZChTKX1yZXR1cm4gaS5jb25maWcueWF4aXNbdF0uYXhpc1RpY2tzLnNob3cmJnRoaXMuYXhlc1V0aWxzLmRyYXdZQXhpc1RpY2tzKEEsYyxrLGkuY29uZmlnLnlheGlzW3RdLmF4aXNUaWNrcyx0LGQsbCksbH19LHtrZXk6XCJkcmF3WWF4aXNJbnZlcnNlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcyBhcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkXCJ9KSxzPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLmdsb2JhbHMudHJhbnNsYXRlWEF4aXNYLFwiLCBcIikuY29uY2F0KGUuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksXCIpXCIpfSk7YS5hZGQocyk7dmFyIHI9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0Lmxlbmd0aC0xLG89ZS5nbG9iYWxzLmdyaWRXaWR0aC9yKy4xLG49bytlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCxsPWUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsaD1lLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQuc2xpY2UoKSxjPWUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM7Yy5sZW5ndGg+MCYmKHRoaXMueGF4aXNMYWJlbHM9Yy5zbGljZSgpLHI9KGg9Yy5zbGljZSgpKS5sZW5ndGgpLGg9dGhpcy5heGVzVXRpbHMuY2hlY2tGb3JSZXZlcnNlZExhYmVscyh0LGgpO3ZhciBkPWMubGVuZ3RoO2lmKGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KWZvcih2YXIgZz1kPzA6cjtkP2c8ZDpnPj0wO2Q/ZysrOmctLSl7dmFyIHU9aFtnXTt1PWwodSxnLGUpO3ZhciBwPWUuZ2xvYmFscy5ncmlkV2lkdGgrZS5nbG9iYWxzLnBhZEhvcml6b250YWwtKG4tbytlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCk7aWYoYy5sZW5ndGgpe3ZhciBmPXRoaXMuYXhlc1V0aWxzLmdldExhYmVsKGgsYyxwLGcsdGhpcy5kcmF3bkxhYmVscyx0aGlzLnhheGlzRm9udFNpemUpO3A9Zi54LHU9Zi50ZXh0LHRoaXMuZHJhd25MYWJlbHMucHVzaChmLnRleHQpLDA9PT1nJiZlLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbCYmKHU9XCJcIiksZz09PWgubGVuZ3RoLTEmJmUuZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWwmJih1PVwiXCIpfXZhciB4PWkuZHJhd1RleHQoe3g6cCx5OnRoaXMueEF4aXNvZmZYK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRZKzMwLShcInRvcFwiPT09ZS5jb25maWcueGF4aXMucG9zaXRpb24/ZS5nbG9iYWxzLnhBeGlzSGVpZ2h0K2UuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtMjowKSx0ZXh0OnUsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KHRoaXMueGF4aXNGb3JlQ29sb3JzKT90aGlzLnhheGlzRm9yZUNvbG9yc1t0XTp0aGlzLnhheGlzRm9yZUNvbG9ycyxmb250U2l6ZTp0aGlzLnhheGlzRm9udFNpemUsZm9udEZhbWlseTp0aGlzLnhheGlzRm9udEZhbWlseSxmb250V2VpZ2h0OmUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250V2VpZ2h0LGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1sYWJlbCBcIitlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY3NzQ2xhc3N9KTtzLmFkZCh4KSx4LnRzcGFuKHUpO3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsXCJ0aXRsZVwiKTtiLnRleHRDb250ZW50PXUseC5ub2RlLmFwcGVuZENoaWxkKGIpLG4rPW99cmV0dXJuIHRoaXMuaW52ZXJzZWRZQXhpc1RpdGxlVGV4dChhKSx0aGlzLmludmVyc2VkWUF4aXNCb3JkZXIoYSksYX19LHtrZXk6XCJpbnZlcnNlZFlBeGlzQm9yZGVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9ZS5jb25maWcueGF4aXMuYXhpc0JvcmRlcjtpZihhLnNob3cpe3ZhciBzPTA7XCJiYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiYocy09MTUpO3ZhciByPWkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwrcythLm9mZnNldFgsdGhpcy54QXhpc29mZlgsZS5nbG9iYWxzLmdyaWRXaWR0aCx0aGlzLnhBeGlzb2ZmWCxhLmNvbG9yLDAsYS5oZWlnaHQpO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzJiZlLmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQocik6dC5hZGQocil9fX0se2tleTpcImludmVyc2VkWUF4aXNUaXRsZVRleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCk7aWYodm9pZCAwIT09ZS5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlIGFwZXhjaGFydHMteWF4aXMtdGl0bGUtaW52ZXJzZWRcIn0pLHM9aS5kcmF3VGV4dCh7eDplLmdsb2JhbHMuZ3JpZFdpZHRoLzIrZS5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WCx5OnRoaXMueEF4aXNvZmZYK3BhcnNlRmxvYXQodGhpcy54YXhpc0ZvbnRTaXplKStwYXJzZUZsb2F0KGUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKStlLmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRZKzIwLHRleHQ6ZS5jb25maWcueGF4aXMudGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlLXRleHQgXCIrZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTthLmFkZChzKSx0LmFkZChhKX19fSx7a2V5OlwieUF4aXNUaXRsZVJvdGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9e3dpZHRoOjAsaGVpZ2h0OjB9LHI9e3dpZHRoOjAsaGVpZ2h0OjB9LG89aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIiAuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMteWF4aXMtdGV4dHMtZ1wiKSk7bnVsbCE9PW8mJihzPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3ZhciBuPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMteWF4aXMtdGl0bGUgdGV4dFwiKSk7aWYobnVsbCE9PW4mJihyPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLG51bGwhPT1uKXt2YXIgbD10aGlzLnhQYWRkaW5nRm9yWUF4aXNUaXRsZSh0LHMscixlKTtuLnNldEF0dHJpYnV0ZShcInhcIixsLnhQb3MtKGU/MTA6MCkpfWlmKG51bGwhPT1uKXt2YXIgaD1hLnJvdGF0ZUFyb3VuZENlbnRlcihuKTtuLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdChlPy0xKmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnJvdGF0ZTppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5yb3RhdGUsXCIgXCIpLmNvbmNhdChoLngsXCIgXCIpLmNvbmNhdChoLnksXCIpXCIpKX19fSx7a2V5OlwieFBhZGRpbmdGb3JZQXhpc1RpdGxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9MCxvPTAsbj0xMDtyZXR1cm4gdm9pZCAwPT09cy5jb25maWcueWF4aXNbdF0udGl0bGUudGV4dHx8dDwwP3t4UG9zOm8scGFkZDowfTooYT8obz1lLndpZHRoK3MuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFgraS53aWR0aC8yK24vMiwwPT09KHIrPTEpJiYoby09bi8yKSk6KG89LTEqZS53aWR0aCtzLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRYK24vMitpLndpZHRoLzIscy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG49MjUsbz0tMSplLndpZHRoLXMuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFgtbikpLHt4UG9zOm8scGFkZDpufSl9fSx7a2V5Olwic2V0WUF4aXNYUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPTAscz0wLHI9MTgsbz0xO2kuY29uZmlnLnlheGlzLmxlbmd0aD4xJiYodGhpcy5tdWx0aXBsZVlzPSEwKSxpLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKG4sbCl7dmFyIGg9aS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGwpPi0xfHwhbi5zaG93fHxuLmZsb2F0aW5nfHwwPT09dFtsXS53aWR0aCxjPXRbbF0ud2lkdGgrZVtsXS53aWR0aDtuLm9wcG9zaXRlP2kuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KHM9aS5nbG9iYWxzLmdyaWRXaWR0aCtpLmdsb2JhbHMudHJhbnNsYXRlWC0xLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09cy1uLmxhYmVscy5vZmZzZXRYKToocz1pLmdsb2JhbHMuZ3JpZFdpZHRoK2kuZ2xvYmFscy50cmFuc2xhdGVYK28saHx8KG89bytjKzIwKSxpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2xdPXMtbi5sYWJlbHMub2Zmc2V0WCsyMCk6KGE9aS5nbG9iYWxzLnRyYW5zbGF0ZVgtcixofHwocj1yK2MrMjApLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09YStuLmxhYmVscy5vZmZzZXRYKX0pKX19LHtrZXk6XCJzZXRZQXhpc1RleHRBbGlnbm1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy15YXhpc1wiKTsoZT14Lmxpc3RUb0FycmF5KGUpKS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3ZhciBhPXQuY29uZmlnLnlheGlzW2ldO2lmKGEmJiFhLmZsb2F0aW5nJiZ2b2lkIDAhPT1hLmxhYmVscy5hbGlnbil7dmFyIHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGksXCInXSAuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nXCIpKSxyPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdChpLFwiJ10gLmFwZXhjaGFydHMteWF4aXMtbGFiZWxcIikpO3I9eC5saXN0VG9BcnJheShyKTt2YXIgbz1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1wibGVmdFwiPT09YS5sYWJlbHMuYWxpZ24/KHIuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJzdGFydFwiKX0pKSxhLm9wcG9zaXRlfHxzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKC1cIi5jb25jYXQoby53aWR0aCxcIiwgMClcIikpKTpcImNlbnRlclwiPT09YS5sYWJlbHMuYWxpZ24/KHIuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJtaWRkbGVcIil9KSkscy5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZShcIi5jb25jYXQoby53aWR0aC8yKihhLm9wcG9zaXRlPzE6LTEpLFwiLCAwKVwiKSkpOlwicmlnaHRcIj09PWEubGFiZWxzLmFsaWduJiYoci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcImVuZFwiKX0pKSxhLm9wcG9zaXRlJiZzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKFwiLmNvbmNhdChvLndpZHRoLFwiLCAwKVwiKSkpfX0pKX19XSksdH0oKSxaPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuZG9jdW1lbnRFdmVudD14LmJpbmQodGhpcy5kb2N1bWVudEV2ZW50LHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJhZGRFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KT9pLmdsb2JhbHMuZXZlbnRzW3RdLnB1c2goZSk6aS5nbG9iYWxzLmV2ZW50c1t0XT1bZV19fSx7a2V5OlwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKGkuZ2xvYmFscy5ldmVudHMuaGFzT3duUHJvcGVydHkodCkpe3ZhciBhPWkuZ2xvYmFscy5ldmVudHNbdF0uaW5kZXhPZihlKTstMSE9PWEmJmkuZ2xvYmFscy5ldmVudHNbdF0uc3BsaWNlKGEsMSl9fX0se2tleTpcImZpcmVFdmVudFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKGkuZ2xvYmFscy5ldmVudHMuaGFzT3duUHJvcGVydHkodCkpe2UmJmUubGVuZ3RofHwoZT1bXSk7Zm9yKHZhciBhPWkuZ2xvYmFscy5ldmVudHNbdF0scz1hLmxlbmd0aCxyPTA7cjxzO3IrKylhW3JdLmFwcGx5KG51bGwsZSl9fX0se2tleTpcInNldHVwRXZlbnRIYW5kbGVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuY3R4LGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihlLmdsb2JhbHMuY2hhcnRDbGFzcyk7dGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuYWRkRXZlbnRMaXN0ZW5lcih0LChmdW5jdGlvbih0KXt2YXIgYT1PYmplY3QuYXNzaWduKHt9LGUse3Nlcmllc0luZGV4OmUuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4LGRhdGFQb2ludEluZGV4OmUuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4fSk7XCJtb3VzZW1vdmVcIj09PXQudHlwZXx8XCJ0b3VjaG1vdmVcIj09PXQudHlwZT9cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VNb3ZlJiZlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VNb3ZlKHQsaSxhKTpcIm1vdXNlbGVhdmVcIj09PXQudHlwZXx8XCJ0b3VjaGxlYXZlXCI9PT10LnR5cGU/XCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTGVhdmUmJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZUxlYXZlKHQsaSxhKTooXCJtb3VzZXVwXCI9PT10LnR5cGUmJjE9PT10LndoaWNofHxcInRvdWNoZW5kXCI9PT10LnR5cGUpJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLmNsaWNrJiZlLmNvbmZpZy5jaGFydC5ldmVudHMuY2xpY2sodCxpLGEpLGkuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJjbGlja1wiLFt0LGksYV0pKX0pLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pKSx0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24oaSl7ZS5nbG9iYWxzLmRvbS5iYXNlRWwuYWRkRXZlbnRMaXN0ZW5lcihpLHQuZG9jdW1lbnRFdmVudCx7cGFzc2l2ZTohMH0pfSkpLHRoaXMuY3R4LmNvcmUuc2V0dXBCcnVzaEhhbmRsZXIoKX19LHtrZXk6XCJkb2N1bWVudEV2ZW50XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dC50YXJnZXQuY2xhc3NOYW1lO2lmKFwiY2xpY2tcIj09PXQudHlwZSl7dmFyIGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLW1lbnVcIik7YSYmYS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKSYmXCJhcGV4Y2hhcnRzLW1lbnUtaWNvblwiIT09aSYmYS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIil9ZS5nbG9iYWxzLmNsaWVudFg9XCJ0b3VjaG1vdmVcIj09PXQudHlwZT90LnRvdWNoZXNbMF0uY2xpZW50WDp0LmNsaWVudFgsZS5nbG9iYWxzLmNsaWVudFk9XCJ0b3VjaG1vdmVcIj09PXQudHlwZT90LnRvdWNoZXNbMF0uY2xpZW50WTp0LmNsaWVudFl9fV0pLHR9KCksJD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5Olwic2V0Q3VycmVudExvY2FsZVZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5jb25maWcuY2hhcnQubG9jYWxlczt3aW5kb3cuQXBleC5jaGFydCYmd2luZG93LkFwZXguY2hhcnQubG9jYWxlcyYmd2luZG93LkFwZXguY2hhcnQubG9jYWxlcy5sZW5ndGg+MCYmKGU9dGhpcy53LmNvbmZpZy5jaGFydC5sb2NhbGVzLmNvbmNhdCh3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzKSk7dmFyIGk9ZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWU9PT10fSkpWzBdO2lmKCFpKXRocm93IG5ldyBFcnJvcihcIldyb25nIGxvY2FsZSBuYW1lIHByb3ZpZGVkLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBzZXQgdGhlIGNvcnJlY3QgbG9jYWxlIG5hbWUgaW4gb3B0aW9uc1wiKTt2YXIgYT14LmV4dGVuZChDLGkpO3RoaXMudy5nbG9iYWxzLmxvY2FsZT1hLm9wdGlvbnN9fV0pLHR9KCksSj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd0F4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLGEscz10aGlzLHI9dGhpcy53Lmdsb2JhbHMsbz10aGlzLncuY29uZmlnLG49bmV3IFYodGhpcy5jdHgsZSksbD1uZXcgcSh0aGlzLmN0eCxlKTtyLmF4aXNDaGFydHMmJlwicmFkYXJcIiE9PXQmJihyLmlzQmFySG9yaXpvbnRhbD8oYT1sLmRyYXdZYXhpc0ludmVyc2VkKDApLGk9bi5kcmF3WGF4aXNJbnZlcnNlZCgwKSxyLmRvbS5lbEdyYXBoaWNhbC5hZGQoaSksci5kb20uZWxHcmFwaGljYWwuYWRkKGEpKTooaT1uLmRyYXdYYXhpcygpLHIuZG9tLmVsR3JhcGhpY2FsLmFkZChpKSxvLnlheGlzLm1hcCgoZnVuY3Rpb24odCxlKXtpZigtMT09PXIuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkmJihhPWwuZHJhd1lheGlzKGUpLHIuZG9tLlBhcGVyLmFkZChhKSxcImJhY2tcIj09PXMudy5jb25maWcuZ3JpZC5wb3NpdGlvbikpe3ZhciBpPXIuZG9tLlBhcGVyLmNoaWxkcmVuKClbMV07aS5yZW1vdmUoKSxyLmRvbS5QYXBlci5hZGQoaSl9fSkpKSl9fV0pLHR9KCksUT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1hDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT1uZXcgdih0aGlzLmN0eCksYT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwuZ3JhZGllbnQscz10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmRyb3BTaGFkb3cscj10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwudHlwZSxvPWEuY29sb3JGcm9tLG49YS5jb2xvclRvLGw9YS5vcGFjaXR5RnJvbSxoPWEub3BhY2l0eVRvLGM9YS5zdG9wcyxkPXMuZW5hYmxlZCxnPXMubGVmdCx1PXMudG9wLHA9cy5ibHVyLGY9cy5jb2xvcixiPXMub3BhY2l0eSx5PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC5jb2xvcjtpZih0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnNob3cpe1wiZ3JhZGllbnRcIj09PXImJih5PWUuZHJhd0dyYWRpZW50KFwidmVydGljYWxcIixvLG4sbCxoLG51bGwsYyxudWxsKSk7dmFyIHc9ZS5kcmF3UmVjdCgpOzE9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiYodz1lLmRyYXdMaW5lKCkpO3ZhciBrPXQuZ2xvYmFscy5ncmlkSGVpZ2h0OygheC5pc051bWJlcihrKXx8azwwKSYmKGs9MCk7dmFyIEE9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aDsoIXguaXNOdW1iZXIoQSl8fEE8MCkmJihBPTApLHcuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIseDowLHk6MCx5MjprLHdpZHRoOkEsaGVpZ2h0OmssZmlsbDp5LGZpbHRlcjpcIm5vbmVcIixcImZpbGwtb3BhY2l0eVwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMub3BhY2l0eSxzdHJva2U6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2UuY29sb3IsXCJzdHJva2Utd2lkdGhcIjp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS53aWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS5kYXNoQXJyYXl9KSxkJiYodz1pLmRyb3BTaGFkb3codyx7bGVmdDpnLHRvcDp1LGJsdXI6cCxjb2xvcjpmLG9wYWNpdHk6Yn0pKSx0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh3KX19fSx7a2V5OlwiZHJhd1lDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT10LmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLGE9dC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzO2lmKHQuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMuc2hvdyl7dmFyIHM9ZS5kcmF3TGluZSgtYSwwLHQuZ2xvYmFscy5ncmlkV2lkdGgrYSwwLGkuc3Ryb2tlLmNvbG9yLGkuc3Ryb2tlLmRhc2hBcnJheSxpLnN0cm9rZS53aWR0aCk7cy5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteWNyb3NzaGFpcnNcIn0pLHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHMpfXZhciByPWUuZHJhd0xpbmUoLWEsMCx0Lmdsb2JhbHMuZ3JpZFdpZHRoK2EsMCxpLnN0cm9rZS5jb2xvciwwLDApO3IuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlblwifSksdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQocil9fV0pLHR9KCksSz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiY2hlY2tSZXNwb25zaXZlQ29uZmlnXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPWkuY29uZmlnO2lmKDAhPT1hLnJlc3BvbnNpdmUubGVuZ3RoKXt2YXIgcz1hLnJlc3BvbnNpdmUuc2xpY2UoKTtzLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuYnJlYWtwb2ludD5lLmJyZWFrcG9pbnQ/MTplLmJyZWFrcG9pbnQ+dC5icmVha3BvaW50Py0xOjB9KSkucmV2ZXJzZSgpO3ZhciByPW5ldyBFKHt9KSxvPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGE9c1swXS5icmVha3BvaW50LG89d2luZG93LmlubmVyV2lkdGg+MD93aW5kb3cuaW5uZXJXaWR0aDpzY3JlZW4ud2lkdGg7aWYobz5hKXt2YXIgbj15LmV4dGVuZEFycmF5UHJvcHMocixpLmdsb2JhbHMuaW5pdGlhbENvbmZpZyxpKTt0PXguZXh0ZW5kKG4sdCksdD14LmV4dGVuZChpLmNvbmZpZyx0KSxlLm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnModCl9ZWxzZSBmb3IodmFyIGw9MDtsPHMubGVuZ3RoO2wrKylvPHNbbF0uYnJlYWtwb2ludCYmKHQ9eS5leHRlbmRBcnJheVByb3BzKHIsc1tsXS5vcHRpb25zLGkpLHQ9eC5leHRlbmQoaS5jb25maWcsdCksZS5vdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zKHQpKX07aWYodCl7dmFyIG49eS5leHRlbmRBcnJheVByb3BzKHIsdCxpKTtuPXguZXh0ZW5kKGkuY29uZmlnLG4pLG8obj14LmV4dGVuZChuLHQpKX1lbHNlIG8oe30pfX19LHtrZXk6XCJvdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEUodCkuaW5pdCh7cmVzcG9uc2l2ZU92ZXJyaWRlOiEwfSk7dGhpcy53LmNvbmZpZz1lfX1dKSx0fSgpLHR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLmNvbG9ycz1bXSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmlzQ29sb3JGbj0hMSx0aGlzLmlzSGVhdG1hcERpc3RyaWJ1dGVkPVwidHJlZW1hcFwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmaS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC5kaXN0cmlidXRlZHx8XCJoZWF0bWFwXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiZpLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmRpc3RyaWJ1dGVkLHRoaXMuaXNCYXJEaXN0cmlidXRlZD1pLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJihcImJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZSl9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0RGVmYXVsdENvbG9ycygpfX0se2tleTpcInNldERlZmF1bHRDb2xvcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcyxpPXRoaXMudyxhPW5ldyB4O2lmKGkuZ2xvYmFscy5kb20uZWxXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRoZW1lLVwiLmNvbmNhdChpLmNvbmZpZy50aGVtZS5tb2RlKSksdm9pZCAwPT09aS5jb25maWcuY29sb3JzfHwwPT09KG51bGw9PT0odD1pLmNvbmZpZy5jb2xvcnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lmxlbmd0aCk/aS5nbG9iYWxzLmNvbG9ycz10aGlzLnByZWRlZmluZWQoKTooaS5nbG9iYWxzLmNvbG9ycz1pLmNvbmZpZy5jb2xvcnMsQXJyYXkuaXNBcnJheShpLmNvbmZpZy5jb2xvcnMpJiZpLmNvbmZpZy5jb2xvcnMubGVuZ3RoPjAmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNvbG9yc1swXSYmKGkuZ2xvYmFscy5jb2xvcnM9aS5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxhKXt2YXIgcz1pLmNvbmZpZy5jb2xvcnNbYV07cmV0dXJuIHN8fChzPWkuY29uZmlnLmNvbG9yc1swXSksXCJmdW5jdGlvblwiPT10eXBlb2Ygcz8oZS5pc0NvbG9yRm49ITAscyh7dmFsdWU6aS5nbG9iYWxzLmF4aXNDaGFydHM/aS5nbG9iYWxzLnNlcmllc1thXVswXT9pLmdsb2JhbHMuc2VyaWVzW2FdWzBdOjA6aS5nbG9iYWxzLnNlcmllc1thXSxzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OmEsdzppfSkpOnN9KSkpKSxpLmdsb2JhbHMuc2VyaWVzQ29sb3JzLm1hcCgoZnVuY3Rpb24odCxlKXt0JiYoaS5nbG9iYWxzLmNvbG9yc1tlXT10KX0pKSxpLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLmVuYWJsZWQpe3ZhciBzPVtdLHI9aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7KHRoaXMuaXNCYXJEaXN0cmlidXRlZHx8dGhpcy5pc0hlYXRtYXBEaXN0cmlidXRlZCkmJihyPWkuZ2xvYmFscy5zZXJpZXNbMF0ubGVuZ3RoKmkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKTtmb3IodmFyIG89aS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5jb2xvcixuPTEvKHIvaS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5zaGFkZUludGVuc2l0eSksbD1pLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLnNoYWRlVG8saD0wLGM9MDtjPHI7YysrKXt2YXIgZD12b2lkIDA7XCJkYXJrXCI9PT1sPyhkPWEuc2hhZGVDb2xvcigtMSpoLG8pLGgrPW4pOihkPWEuc2hhZGVDb2xvcihoLG8pLGgrPW4pLHMucHVzaChkKX1pLmdsb2JhbHMuY29sb3JzPXMuc2xpY2UoKX12YXIgZz1pLmdsb2JhbHMuY29sb3JzLnNsaWNlKCk7dGhpcy5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzLmNvbG9ycyk7W1wiZmlsbFwiLFwic3Ryb2tlXCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMD09PWkuY29uZmlnW3RdLmNvbG9ycz9pLmdsb2JhbHNbdF0uY29sb3JzPWUuaXNDb2xvckZuP2kuY29uZmlnLmNvbG9yczpnOmkuZ2xvYmFsc1t0XS5jb2xvcnM9aS5jb25maWdbdF0uY29sb3JzLnNsaWNlKCksZS5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzW3RdLmNvbG9ycyl9KSksdm9pZCAwPT09aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM/aS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzPWc6aS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzPWkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzLnNsaWNlKCksdGhpcy5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzLDUwKSx2b2lkIDA9PT1pLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5wb2x5Z29ucy5maWxsLmNvbG9ycz9pLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycz1bXCJkYXJrXCI9PT1pLmNvbmZpZy50aGVtZS5tb2RlP1wiIzQyNDI0MlwiOlwibm9uZVwiXTppLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycz1pLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5wb2x5Z29ucy5maWxsLmNvbG9ycy5zbGljZSgpLHRoaXMucHVzaEV4dHJhQ29sb3JzKGkuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzLDIwKSx2b2lkIDA9PT1pLmNvbmZpZy5tYXJrZXJzLmNvbG9ycz9pLmdsb2JhbHMubWFya2Vycy5jb2xvcnM9ZzppLmdsb2JhbHMubWFya2Vycy5jb2xvcnM9aS5jb25maWcubWFya2Vycy5jb2xvcnMuc2xpY2UoKSx0aGlzLnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHMubWFya2Vycy5jb2xvcnMpfX0se2tleTpcInB1c2hFeHRyYUNvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsYT10aGlzLncscz1lfHxhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtpZihudWxsPT09aSYmKGk9dGhpcy5pc0JhckRpc3RyaWJ1dGVkfHx0aGlzLmlzSGVhdG1hcERpc3RyaWJ1dGVkfHxcImhlYXRtYXBcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUmJmEuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5pbnZlcnNlKSxpJiZhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKHM9YS5nbG9iYWxzLnNlcmllc1thLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoKmEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKSx0Lmxlbmd0aDxzKWZvcih2YXIgcj1zLXQubGVuZ3RoLG89MDtvPHI7bysrKXQucHVzaCh0W29dKX19LHtrZXk6XCJ1cGRhdGVUaGVtZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt0LmNoYXJ0PXQuY2hhcnR8fHt9LHQudG9vbHRpcD10LnRvb2x0aXB8fHt9O3ZhciBlPXQudGhlbWUubW9kZXx8XCJsaWdodFwiLGk9dC50aGVtZS5wYWxldHRlP3QudGhlbWUucGFsZXR0ZTpcImRhcmtcIj09PWU/XCJwYWxldHRlNFwiOlwicGFsZXR0ZTFcIixhPXQuY2hhcnQuZm9yZUNvbG9yP3QuY2hhcnQuZm9yZUNvbG9yOlwiZGFya1wiPT09ZT9cIiNmNmY3ZjhcIjpcIiMzNzNkM2ZcIjtyZXR1cm4gdC50b29sdGlwLnRoZW1lPWUsdC5jaGFydC5mb3JlQ29sb3I9YSx0LnRoZW1lLnBhbGV0dGU9aSx0fX0se2tleTpcInByZWRlZmluZWRcIix2YWx1ZTpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLncuY29uZmlnLnRoZW1lLnBhbGV0dGUpe2Nhc2VcInBhbGV0dGUxXCI6ZGVmYXVsdDp0aGlzLmNvbG9ycz1bXCIjMDA4RkZCXCIsXCIjMDBFMzk2XCIsXCIjRkVCMDE5XCIsXCIjRkY0NTYwXCIsXCIjNzc1REQwXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGUyXCI6dGhpcy5jb2xvcnM9W1wiIzNmNTFiNVwiLFwiIzAzYTlmNFwiLFwiIzRjYWY1MFwiLFwiI2Y5Y2UxZFwiLFwiI0ZGOTgwMFwiXTticmVhaztjYXNlXCJwYWxldHRlM1wiOnRoaXMuY29sb3JzPVtcIiMzM2IyZGZcIixcIiM1NDZFN0FcIixcIiNkNDUyNmVcIixcIiMxM2Q4YWFcIixcIiNBNTk3OEJcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTRcIjp0aGlzLmNvbG9ycz1bXCIjNGVjZGM0XCIsXCIjYzdmNDY0XCIsXCIjODFENEZBXCIsXCIjZmQ2YTZhXCIsXCIjNTQ2RTdBXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU1XCI6dGhpcy5jb2xvcnM9W1wiIzJiOTA4ZlwiLFwiI2Y5YTNhNFwiLFwiIzkwZWU3ZVwiLFwiI2ZhNDQ0M1wiLFwiIzY5ZDJlN1wiXTticmVhaztjYXNlXCJwYWxldHRlNlwiOnRoaXMuY29sb3JzPVtcIiM0NDlERDFcIixcIiNGODY2MjRcIixcIiNFQTM1NDZcIixcIiM2NjJFOUJcIixcIiNDNUQ4NkRcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTdcIjp0aGlzLmNvbG9ycz1bXCIjRDcyNjNEXCIsXCIjMUI5OThCXCIsXCIjMkUyOTRFXCIsXCIjRjQ2MDM2XCIsXCIjRTJDMDQ0XCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU4XCI6dGhpcy5jb2xvcnM9W1wiIzY2MkU5QlwiLFwiI0Y4NjYyNFwiLFwiI0Y5QzgwRVwiLFwiI0VBMzU0NlwiLFwiIzQzQkNDRFwiXTticmVhaztjYXNlXCJwYWxldHRlOVwiOnRoaXMuY29sb3JzPVtcIiM1QzQ3NDJcIixcIiNBNTk3OEJcIixcIiM4RDVCNENcIixcIiM1QTJBMjdcIixcIiNDNEJCQUZcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTEwXCI6dGhpcy5jb2xvcnM9W1wiI0EzMDBENlwiLFwiIzdEMDJFQlwiLFwiIzU2NTNGRVwiLFwiIzI5ODNGRlwiLFwiIzAwQjFGMlwiXX1yZXR1cm4gdGhpcy5jb2xvcnN9fV0pLHR9KCksZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZHJhd1RpdGxlU3VidGl0bGUoXCJ0aXRsZVwiKSx0aGlzLmRyYXdUaXRsZVN1YnRpdGxlKFwic3VidGl0bGVcIil9fSx7a2V5OlwiZHJhd1RpdGxlU3VidGl0bGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1cInRpdGxlXCI9PT10P2UuY29uZmlnLnRpdGxlOmUuY29uZmlnLnN1YnRpdGxlLGE9ZS5nbG9iYWxzLnN2Z1dpZHRoLzIscz1pLm9mZnNldFkscj1cIm1pZGRsZVwiO2lmKFwibGVmdFwiPT09aS5hbGlnbj8oYT0xMCxyPVwic3RhcnRcIik6XCJyaWdodFwiPT09aS5hbGlnbiYmKGE9ZS5nbG9iYWxzLnN2Z1dpZHRoLTEwLHI9XCJlbmRcIiksYSs9aS5vZmZzZXRYLHM9cytwYXJzZUludChpLnN0eWxlLmZvbnRTaXplLDEwKStpLm1hcmdpbi8yLHZvaWQgMCE9PWkudGV4dCl7dmFyIG89bmV3IG0odGhpcy5jdHgpLmRyYXdUZXh0KHt4OmEseTpzLHRleHQ6aS50ZXh0LHRleHRBbmNob3I6cixmb250U2l6ZTppLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6aS5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6aS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjppLnN0eWxlLmNvbG9yLG9wYWNpdHk6MX0pO28ubm9kZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLFwiYXBleGNoYXJ0cy1cIi5jb25jYXQodCxcIi10ZXh0XCIpKSxlLmdsb2JhbHMuZG9tLlBhcGVyLmFkZChvKX19fV0pLHR9KCksaXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuZEN0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXRUaXRsZVN1YnRpdGxlQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9MCxhPTAscz1cInRpdGxlXCI9PT10P2UuY29uZmlnLnRpdGxlLmZsb2F0aW5nOmUuY29uZmlnLnN1YnRpdGxlLmZsb2F0aW5nLHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LFwiLXRleHRcIikpO2lmKG51bGwhPT1yJiYhcyl7dmFyIG89ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpPW8ud2lkdGgsYT1lLmdsb2JhbHMuYXhpc0NoYXJ0cz9vLmhlaWdodCs1Om8uaGVpZ2h0fXJldHVybnt3aWR0aDppLGhlaWdodDphfX19LHtrZXk6XCJnZXRMZWdlbmRzUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXA7dC5jb25maWcubGVnZW5kLmhlaWdodHx8XCJ0b3BcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJib3R0b21cIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8KGUuc3R5bGUubWF4SGVpZ2h0PXQuZ2xvYmFscy5zdmdIZWlnaHQvMitcInB4XCIpO3ZhciBpPU9iamVjdC5hc3NpZ24oe30seC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoZSkpO3JldHVybiBudWxsIT09ZSYmIXQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZyYmdC5jb25maWcubGVnZW5kLnNob3c/dGhpcy5kQ3R4LmxnUmVjdD17eDppLngseTppLnksaGVpZ2h0OmkuaGVpZ2h0LHdpZHRoOjA9PT1pLmhlaWdodD8wOmkud2lkdGh9OnRoaXMuZEN0eC5sZ1JlY3Q9e3g6MCx5OjAsaGVpZ2h0OjAsd2lkdGg6MH0sXCJsZWZ0XCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJlwicmlnaHRcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8MS41KnRoaXMuZEN0eC5sZ1JlY3Qud2lkdGg+dC5nbG9iYWxzLnN2Z1dpZHRoJiYodGhpcy5kQ3R4LmxnUmVjdC53aWR0aD10Lmdsb2JhbHMuc3ZnV2lkdGgvMS41KSx0aGlzLmRDdHgubGdSZWN0fX0se2tleTpcImdldExhcmdlc3RTdHJpbmdGcm9tTXVsdGlBcnJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQ7aWYodGhpcy53Lmdsb2JhbHMuaXNNdWx0aUxpbmVYKXt2YXIgYT1lLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Lmxlbmd0aDoxfSkpLHM9TWF0aC5tYXguYXBwbHkoTWF0aCx1KGEpKTtpPWVbYS5pbmRleE9mKHMpXX1yZXR1cm4gaX19XSksdH0oKSxhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldHhBeGlzTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudyxpPWUuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKTtpZihlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJjA9PT1pLmxlbmd0aCYmKGk9ZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzKSxlLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wKXt2YXIgYT10aGlzLmdldHhBeGlzVGltZVNjYWxlTGFiZWxzQ29vcmRzKCk7dD17d2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHR9LGUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSExfWVsc2V7dGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcz1cImxlZnRcIiE9PWUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJyaWdodFwiIT09ZS5jb25maWcubGVnZW5kLnBvc2l0aW9ufHxlLmNvbmZpZy5sZWdlbmQuZmxvYXRpbmc/MDp0aGlzLmRDdHgubGdSZWN0LndpZHRoO3ZhciBzPWUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIscj14LmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKGkpLG89dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihyLGkpO2UuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihvPXI9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCkpO3ZhciBuPW5ldyBNKHRoaXMuZEN0eC5jdHgpLGw9cjtyPW4ueExhYmVsRm9ybWF0KHMscixsLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuZEN0eC5jdHgpLmZvcm1hdERhdGUsdzplfSksbz1uLnhMYWJlbEZvcm1hdChzLG8sbCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmRDdHguY3R4KS5mb3JtYXREYXRlLHc6ZX0pLChlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJnZvaWQgMD09PXJ8fFwiXCI9PT1TdHJpbmcocikudHJpbSgpKSYmKG89cj1cIjFcIik7dmFyIGg9bmV3IG0odGhpcy5kQ3R4LmN0eCksYz1oLmdldFRleHRSZWN0cyhyLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSksZD1jO2lmKHIhPT1vJiYoZD1oLmdldFRleHRSZWN0cyhvLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSkpLCh0PXt3aWR0aDpjLndpZHRoPj1kLndpZHRoP2Mud2lkdGg6ZC53aWR0aCxoZWlnaHQ6Yy5oZWlnaHQ+PWQuaGVpZ2h0P2MuaGVpZ2h0OmQuaGVpZ2h0fSkud2lkdGgqaS5sZW5ndGg+ZS5nbG9iYWxzLnN2Z1dpZHRoLXRoaXMuZEN0eC5sZ1dpZHRoRm9yU2lkZUxlZ2VuZHMtdGhpcy5kQ3R4LnlBeGlzV2lkdGgtdGhpcy5kQ3R4LmdyaWRQYWQubGVmdC10aGlzLmRDdHguZ3JpZFBhZC5yaWdodCYmMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGV8fGUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGVBbHdheXMpe2lmKCFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXtlLmdsb2JhbHMucm90YXRlWExhYmVscz0hMDt2YXIgZz1mdW5jdGlvbih0KXtyZXR1cm4gaC5nZXRUZXh0UmVjdHModCxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksXCJyb3RhdGUoXCIuY29uY2F0KGUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUsXCIgMCAwKVwiKSwhMSl9O2M9ZyhyKSxyIT09byYmKGQ9ZyhvKSksdC5oZWlnaHQ9KGMuaGVpZ2h0PmQuaGVpZ2h0P2MuaGVpZ2h0OmQuaGVpZ2h0KS8xLjUsdC53aWR0aD1jLndpZHRoPmQud2lkdGg/Yy53aWR0aDpkLndpZHRofX1lbHNlIGUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSExfXJldHVybiBlLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvd3x8KHQ9e3dpZHRoOjAsaGVpZ2h0OjB9KSx7d2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9fX0se2tleTpcImdldHhBeGlzR3JvdXBMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy53O2lmKCFlLmdsb2JhbHMuaGFzWGF4aXNHcm91cHMpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O3ZhciBpLGE9KG51bGw9PT0odD1lLmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZm9udFNpemUpfHxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUscz1lLmdsb2JhbHMuZ3JvdXBzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudGl0bGV9KSkscj14LmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKHMpLG89dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihyLHMpLG49bmV3IG0odGhpcy5kQ3R4LmN0eCksbD1uLmdldFRleHRSZWN0cyhyLGEpLGg9bDtyZXR1cm4gciE9PW8mJihoPW4uZ2V0VGV4dFJlY3RzKG8sYSkpLGk9e3dpZHRoOmwud2lkdGg+PWgud2lkdGg/bC53aWR0aDpoLndpZHRoLGhlaWdodDpsLmhlaWdodD49aC5oZWlnaHQ/bC5oZWlnaHQ6aC5oZWlnaHR9LGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93fHwoaT17d2lkdGg6MCxoZWlnaHQ6MH0pLHt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH19fSx7a2V5OlwiZ2V0eEF4aXNUaXRsZUNvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9MCxpPTA7aWYodm9pZCAwIT09dC5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIGE9bmV3IG0odGhpcy5kQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKHQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQsdC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpO2U9YS53aWR0aCxpPWEuaGVpZ2h0fXJldHVybnt3aWR0aDplLGhlaWdodDppfX19LHtrZXk6XCJnZXR4QXhpc1RpbWVTY2FsZUxhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnc7dGhpcy5kQ3R4LnRpbWVzY2FsZUxhYmVscz1lLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCk7dmFyIGk9dGhpcy5kQ3R4LnRpbWVzY2FsZUxhYmVscy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpLGE9aS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PXQ/KGNvbnNvbGUuZXJyb3IoXCJZb3UgaGF2ZSBwb3NzaWJseSBzdXBwbGllZCBpbnZhbGlkIERhdGUgZm9ybWF0LiBQbGVhc2Ugc3VwcGx5IGEgdmFsaWQgSmF2YVNjcmlwdCBEYXRlXCIpLDApOnQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pLDApO3JldHVybiAxLjA1Kih0PW5ldyBtKHRoaXMuZEN0eC5jdHgpLmdldFRleHRSZWN0cyhhLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSkpLndpZHRoKmkubGVuZ3RoPmUuZ2xvYmFscy5ncmlkV2lkdGgmJjAhPT1lLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlJiYoZS5nbG9iYWxzLm92ZXJsYXBwaW5nWExhYmVscz0hMCksdH19LHtrZXk6XCJhZGRpdGlvbmFsUGFkZGluZ1hMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9aS5nbG9iYWxzLHM9aS5jb25maWcscj1zLnhheGlzLnR5cGUsbz10LndpZHRoO2Euc2tpcExhc3RUaW1lbGluZWxhYmVsPSExLGEuc2tpcEZpcnN0VGltZWxpbmVsYWJlbD0hMTt2YXIgbj1pLmNvbmZpZy55YXhpc1swXS5vcHBvc2l0ZSYmaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCxsPWZ1bmN0aW9uKHQsbil7cy55YXhpcy5sZW5ndGg+MSYmZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1hLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih0KX0obil8fGZ1bmN0aW9uKHQpe2lmKGUuZEN0eC50aW1lc2NhbGVMYWJlbHMmJmUuZEN0eC50aW1lc2NhbGVMYWJlbHMubGVuZ3RoKXt2YXIgbj1lLmRDdHgudGltZXNjYWxlTGFiZWxzWzBdLGw9ZS5kQ3R4LnRpbWVzY2FsZUxhYmVsc1tlLmRDdHgudGltZXNjYWxlTGFiZWxzLmxlbmd0aC0xXS5wb3NpdGlvbitvLzEuNzUtZS5kQ3R4LnlBeGlzV2lkdGhSaWdodCxoPW4ucG9zaXRpb24tby8xLjc1K2UuZEN0eC55QXhpc1dpZHRoTGVmdCxjPVwicmlnaHRcIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmZS5kQ3R4LmxnUmVjdC53aWR0aD4wP2UuZEN0eC5sZ1JlY3Qud2lkdGg6MDtsPmEuc3ZnV2lkdGgtYS50cmFuc2xhdGVYLWMmJihhLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMCksaDwtKHQuc2hvdyYmIXQuZmxvYXRpbmd8fFwiYmFyXCIhPT1zLmNoYXJ0LnR5cGUmJlwiY2FuZGxlc3RpY2tcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09cy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXMuY2hhcnQudHlwZT8xMDpvLzEuNzUpJiYoYS5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSEwKX1lbHNlXCJkYXRldGltZVwiPT09cj9lLmRDdHguZ3JpZFBhZC5yaWdodDxvJiYhYS5yb3RhdGVYTGFiZWxzJiYoYS5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITApOlwiZGF0ZXRpbWVcIiE9PXImJmUuZEN0eC5ncmlkUGFkLnJpZ2h0PG8vMi1lLmRDdHgueUF4aXNXaWR0aFJpZ2h0JiYhYS5yb3RhdGVYTGFiZWxzJiYhaS5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJihcImJldHdlZW5cIiE9PWkuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnR8fGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpJiYoZS5kQ3R4LnhQYWRSaWdodD1vLzIrMSl9KHQpfTtzLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7bj8oZS5kQ3R4LmdyaWRQYWQubGVmdDxvJiYoZS5kQ3R4LnhQYWRMZWZ0PW8vMisxKSxlLmRDdHgueFBhZFJpZ2h0PW8vMisxKTpsKHQsaSl9KSl9fV0pLHR9KCksc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuZEN0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXR5QXhpc0xhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPVtdLGE9MTAscz1uZXcgQih0aGlzLmRDdHguY3R4KTtyZXR1cm4gZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihyLG8pe3ZhciBuPXtzZXJpZXNJbmRleDpvLGRhdGFQb2ludEluZGV4Oi0xLHc6ZX0sbD1lLmdsb2JhbHMueUF4aXNTY2FsZVtvXSxoPTA7aWYoIXMuaXNZQXhpc0hpZGRlbihvKSYmci5sYWJlbHMuc2hvdyYmdm9pZCAwIT09ci5sYWJlbHMubWluV2lkdGgmJihoPXIubGFiZWxzLm1pbldpZHRoKSwhcy5pc1lBeGlzSGlkZGVuKG8pJiZyLmxhYmVscy5zaG93JiZsLnJlc3VsdC5sZW5ndGgpe3ZhciBjPWUuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW29dLGQ9bC5uaWNlTWluPT09TnVtYmVyLk1JTl9WQUxVRT8wOmwubmljZU1pbixnPWwucmVzdWx0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgaSxhO3JldHVybihudWxsPT09KGk9U3RyaW5nKGModCxuKSkpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLmxlbmd0aCk+KG51bGw9PT0oYT1TdHJpbmcoYyhlLG4pKSl8fHZvaWQgMD09PWE/dm9pZCAwOmEubGVuZ3RoKT90OmV9KSxkKSx1PWc9YyhnLG4pO2lmKHZvaWQgMCE9PWcmJjAhPT1nLmxlbmd0aHx8KGc9bC5uaWNlTWF4KSxlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXthPTA7dmFyIHA9ZS5nbG9iYWxzLmxhYmVscy5zbGljZSgpO2c9eC5nZXRMYXJnZXN0U3RyaW5nRnJvbUFycihwKSxnPWMoZyx7c2VyaWVzSW5kZXg6byxkYXRhUG9pbnRJbmRleDotMSx3OmV9KSx1PXQuZEN0eC5kaW1IZWxwZXJzLmdldExhcmdlc3RTdHJpbmdGcm9tTXVsdGlBcnIoZyxwKX12YXIgZj1uZXcgbSh0LmRDdHguY3R4KSxiPVwicm90YXRlKFwiLmNvbmNhdChyLmxhYmVscy5yb3RhdGUsXCIgMCAwKVwiKSx2PWYuZ2V0VGV4dFJlY3RzKGcsci5sYWJlbHMuc3R5bGUuZm9udFNpemUsci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxiLCExKSx5PXY7ZyE9PXUmJih5PWYuZ2V0VGV4dFJlY3RzKHUsci5sYWJlbHMuc3R5bGUuZm9udFNpemUsci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxiLCExKSksaS5wdXNoKHt3aWR0aDooaD55LndpZHRofHxoPnYud2lkdGg/aDp5LndpZHRoPnYud2lkdGg/eS53aWR0aDp2LndpZHRoKSthLGhlaWdodDp5LmhlaWdodD52LmhlaWdodD95LmhlaWdodDp2LmhlaWdodH0pfWVsc2UgaS5wdXNoKHt3aWR0aDowLGhlaWdodDowfSl9KSksaX19LHtrZXk6XCJnZXR5QXhpc1RpdGxlQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9W107cmV0dXJuIGUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24oZSxhKXtpZihlLnNob3cmJnZvaWQgMCE9PWUudGl0bGUudGV4dCl7dmFyIHM9bmV3IG0odC5kQ3R4LmN0eCkscj1cInJvdGF0ZShcIi5jb25jYXQoZS50aXRsZS5yb3RhdGUsXCIgMCAwKVwiKSxvPXMuZ2V0VGV4dFJlY3RzKGUudGl0bGUudGV4dCxlLnRpdGxlLnN0eWxlLmZvbnRTaXplLGUudGl0bGUuc3R5bGUuZm9udEZhbWlseSxyLCExKTtpLnB1c2goe3dpZHRoOm8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0fSl9ZWxzZSBpLnB1c2goe3dpZHRoOjAsaGVpZ2h0OjB9KX0pKSxpfX0se2tleTpcImdldFRvdGFsWUF4aXNXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9MCxpPTAsYT0wLHM9dC5nbG9iYWxzLnlBeGlzU2NhbGUubGVuZ3RoPjE/MTA6MCxyPW5ldyBCKHRoaXMuZEN0eC5jdHgpLG89ZnVuY3Rpb24obyxuKXt2YXIgbD10LmNvbmZpZy55YXhpc1tuXS5mbG9hdGluZyxoPTA7by53aWR0aD4wJiYhbD8oaD1vLndpZHRoK3MsZnVuY3Rpb24oZSl7cmV0dXJuIHQuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihlKT4tMX0obikmJihoPWgtby53aWR0aC1zKSk6aD1sfHxyLmlzWUF4aXNIaWRkZW4obik/MDo1LHQuY29uZmlnLnlheGlzW25dLm9wcG9zaXRlP2ErPWg6aSs9aCxlKz1ofTtyZXR1cm4gdC5nbG9iYWxzLnlMYWJlbHNDb29yZHMubWFwKChmdW5jdGlvbih0LGUpe28odCxlKX0pKSx0Lmdsb2JhbHMueVRpdGxlQ29vcmRzLm1hcCgoZnVuY3Rpb24odCxlKXtvKHQsZSl9KSksdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmIXQuY29uZmlnLnlheGlzWzBdLmZsb2F0aW5nJiYoZT10Lmdsb2JhbHMueUxhYmVsc0Nvb3Jkc1swXS53aWR0aCt0Lmdsb2JhbHMueVRpdGxlQ29vcmRzWzBdLndpZHRoKzE1KSx0aGlzLmRDdHgueUF4aXNXaWR0aExlZnQ9aSx0aGlzLmRDdHgueUF4aXNXaWR0aFJpZ2h0PWEsZX19XSksdH0oKSxydD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdyaWRQYWRGb3JDb2x1bW5zSW5OdW1lcmljQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZihlLmdsb2JhbHMubm9EYXRhfHxlLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKXJldHVybiAwO3ZhciBpPWZ1bmN0aW9uKHQpe3JldHVyblwiYmFyXCI9PT10fHxcInJhbmdlQmFyXCI9PT10fHxcImNhbmRsZXN0aWNrXCI9PT10fHxcImJveFBsb3RcIj09PXR9LGE9ZS5jb25maWcuY2hhcnQudHlwZSxzPTAscj1pKGEpP2UuY29uZmlnLnNlcmllcy5sZW5ndGg6MTtpZihlLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wJiYocj1lLmdsb2JhbHMuY29tYm9CYXJDb3VudCksZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0KXtpKHQudHlwZSkmJihyLT0xKX0pKSxlLmNvbmZpZy5jaGFydC5zdGFja2VkJiYocj0xKSwoaShhKXx8ZS5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MCkmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiYhZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmcj4wKXt2YXIgbyxuLGw9TWF0aC5hYnMoZS5nbG9iYWxzLmluaXRpYWxNYXhYLWUuZ2xvYmFscy5pbml0aWFsTWluWCk7bDw9MyYmKGw9ZS5nbG9iYWxzLmRhdGFQb2ludHMpLG89bC90LGUuZ2xvYmFscy5taW5YRGlmZiYmZS5nbG9iYWxzLm1pblhEaWZmL28+MCYmKG49ZS5nbG9iYWxzLm1pblhEaWZmL28pLG4+dC8yJiYobi89MiksKHM9bi9yKnBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkvMTAwKTwxJiYocz0xKSxzPXMvKHI+MT8xOjEuNSkrNSxlLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM9c31yZXR1cm4gc319LHtrZXk6XCJncmlkUGFkRm9ydGl0bGVTdWJ0aXRsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWUuZ2xvYmFscyxhPXRoaXMuZEN0eC5pc1NwYXJrbGluZXx8IWUuZ2xvYmFscy5heGlzQ2hhcnRzPzA6MTA7W1widGl0bGVcIixcInN1YnRpdGxlXCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZvaWQgMCE9PWUuY29uZmlnW2ldLnRleHQ/YSs9ZS5jb25maWdbaV0ubWFyZ2luOmErPXQuZEN0eC5pc1NwYXJrbGluZXx8IWUuZ2xvYmFscy5heGlzQ2hhcnRzPzA6NX0pKSwhZS5jb25maWcubGVnZW5kLnNob3d8fFwiYm90dG9tXCIhPT1lLmNvbmZpZy5sZWdlbmQucG9zaXRpb258fGUuY29uZmlnLmxlZ2VuZC5mbG9hdGluZ3x8ZS5nbG9iYWxzLmF4aXNDaGFydHN8fChhKz0xMCk7dmFyIHM9dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLHI9dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpO2kuZ3JpZEhlaWdodD1pLmdyaWRIZWlnaHQtcy5oZWlnaHQtci5oZWlnaHQtYSxpLnRyYW5zbGF0ZVk9aS50cmFuc2xhdGVZK3MuaGVpZ2h0K3IuaGVpZ2h0K2F9fSx7a2V5Olwic2V0R3JpZFhQb3NGb3JEdWFsWUF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyBCKHRoaXMuZEN0eC5jdHgpO2kuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24ocyxyKXstMSE9PWkuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihyKXx8cy5mbG9hdGluZ3x8YS5pc1lBeGlzSGlkZGVuKHIpfHwocy5vcHBvc2l0ZSYmKGkuZ2xvYmFscy50cmFuc2xhdGVYPWkuZ2xvYmFscy50cmFuc2xhdGVYLShlW3JdLndpZHRoK3Rbcl0ud2lkdGgpLXBhcnNlSW50KGkuY29uZmlnLnlheGlzW3JdLmxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvMS4yLTEyKSxpLmdsb2JhbHMudHJhbnNsYXRlWDwyJiYoaS5nbG9iYWxzLnRyYW5zbGF0ZVg9MikpfSkpfX1dKSx0fSgpLG90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMubGdSZWN0PXt9LHRoaXMueUF4aXNXaWR0aD0wLHRoaXMueUF4aXNXaWR0aExlZnQ9MCx0aGlzLnlBeGlzV2lkdGhSaWdodD0wLHRoaXMueEF4aXNIZWlnaHQ9MCx0aGlzLmlzU3BhcmtsaW5lPXRoaXMudy5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQsdGhpcy5kaW1IZWxwZXJzPW5ldyBpdCh0aGlzKSx0aGlzLmRpbVlBeGlzPW5ldyBzdCh0aGlzKSx0aGlzLmRpbVhBeGlzPW5ldyBhdCh0aGlzKSx0aGlzLmRpbUdyaWQ9bmV3IHJ0KHRoaXMpLHRoaXMubGdXaWR0aEZvclNpZGVMZWdlbmRzPTAsdGhpcy5ncmlkUGFkPXRoaXMudy5jb25maWcuZ3JpZC5wYWRkaW5nLHRoaXMueFBhZFJpZ2h0PTAsdGhpcy54UGFkTGVmdD0wfXJldHVybiByKHQsW3trZXk6XCJwbG90Q29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzO3RoaXMubGdSZWN0PXRoaXMuZGltSGVscGVycy5nZXRMZWdlbmRzUmVjdCgpLHRoaXMuaXNTcGFya2xpbmUmJigoZS5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5sZW5ndGg+MHx8ZS5jb25maWcubWFya2Vycy5zaXplPjApJiZPYmplY3QuZW50cmllcyh0aGlzLmdyaWRQYWQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBpPWcoZSwyKSxhPWlbMF0scz1pWzFdO3QuZ3JpZFBhZFthXT1NYXRoLm1heChzLHQudy5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUvMS41KX0pKSx0aGlzLmdyaWRQYWQudG9wPU1hdGgubWF4KGUuY29uZmlnLnN0cm9rZS53aWR0aC8yLHRoaXMuZ3JpZFBhZC50b3ApLHRoaXMuZ3JpZFBhZC5ib3R0b209TWF0aC5tYXgoZS5jb25maWcuc3Ryb2tlLndpZHRoLzIsdGhpcy5ncmlkUGFkLmJvdHRvbSkpLGkuYXhpc0NoYXJ0cz90aGlzLnNldERpbWVuc2lvbnNGb3JBeGlzQ2hhcnRzKCk6dGhpcy5zZXREaW1lbnNpb25zRm9yTm9uQXhpc0NoYXJ0cygpLHRoaXMuZGltR3JpZC5ncmlkUGFkRm9ydGl0bGVTdWJ0aXRsZSgpLGkuZ3JpZEhlaWdodD1pLmdyaWRIZWlnaHQtdGhpcy5ncmlkUGFkLnRvcC10aGlzLmdyaWRQYWQuYm90dG9tLGkuZ3JpZFdpZHRoPWkuZ3JpZFdpZHRoLXRoaXMuZ3JpZFBhZC5sZWZ0LXRoaXMuZ3JpZFBhZC5yaWdodC10aGlzLnhQYWRSaWdodC10aGlzLnhQYWRMZWZ0O3ZhciBhPXRoaXMuZGltR3JpZC5ncmlkUGFkRm9yQ29sdW1uc0luTnVtZXJpY0F4aXMoaS5ncmlkV2lkdGgpO2kuZ3JpZFdpZHRoPWkuZ3JpZFdpZHRoLTIqYSxpLnRyYW5zbGF0ZVg9aS50cmFuc2xhdGVYK3RoaXMuZ3JpZFBhZC5sZWZ0K3RoaXMueFBhZExlZnQrKGE+MD9hKzQ6MCksaS50cmFuc2xhdGVZPWkudHJhbnNsYXRlWSt0aGlzLmdyaWRQYWQudG9wfX0se2tleTpcInNldERpbWVuc2lvbnNGb3JBeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzLGE9dGhpcy5kaW1ZQXhpcy5nZXR5QXhpc0xhYmVsc0Nvb3JkcygpLHM9dGhpcy5kaW1ZQXhpcy5nZXR5QXhpc1RpdGxlQ29vcmRzKCk7ZS5nbG9iYWxzLnlMYWJlbHNDb29yZHM9W10sZS5nbG9iYWxzLnlUaXRsZUNvb3Jkcz1bXSxlLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsaSl7ZS5nbG9iYWxzLnlMYWJlbHNDb29yZHMucHVzaCh7d2lkdGg6YVtpXS53aWR0aCxpbmRleDppfSksZS5nbG9iYWxzLnlUaXRsZUNvb3Jkcy5wdXNoKHt3aWR0aDpzW2ldLndpZHRoLGluZGV4Oml9KX0pKSx0aGlzLnlBeGlzV2lkdGg9dGhpcy5kaW1ZQXhpcy5nZXRUb3RhbFlBeGlzV2lkdGgoKTt2YXIgcj10aGlzLmRpbVhBeGlzLmdldHhBeGlzTGFiZWxzQ29vcmRzKCksbz10aGlzLmRpbVhBeGlzLmdldHhBeGlzR3JvdXBMYWJlbHNDb29yZHMoKSxuPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNUaXRsZUNvb3JkcygpO3RoaXMuY29uZGl0aW9uYWxDaGVja3NGb3JBeGlzQ29vcmRzKHIsbixvKSxpLnRyYW5zbGF0ZVhBeGlzWT1lLmdsb2JhbHMucm90YXRlWExhYmVscz90aGlzLnhBeGlzSGVpZ2h0Lzg6LTQsaS50cmFuc2xhdGVYQXhpc1g9ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiZlLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlPD0tNDU/LXRoaXMueEF4aXNXaWR0aC80OjAsZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGkucm90YXRlWExhYmVscz0hMSxpLnRyYW5zbGF0ZVhBeGlzWT1wYXJzZUludChlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLzEuNSotMSksaS50cmFuc2xhdGVYQXhpc1k9aS50cmFuc2xhdGVYQXhpc1krZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFksaS50cmFuc2xhdGVYQXhpc1g9aS50cmFuc2xhdGVYQXhpc1grZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFg7dmFyIGw9dGhpcy55QXhpc1dpZHRoLGg9dGhpcy54QXhpc0hlaWdodDtpLnhBeGlzTGFiZWxzSGVpZ2h0PXRoaXMueEF4aXNIZWlnaHQtbi5oZWlnaHQsaS54QXhpc0dyb3VwTGFiZWxzSGVpZ2h0PWkueEF4aXNMYWJlbHNIZWlnaHQtci5oZWlnaHQsaS54QXhpc0xhYmVsc1dpZHRoPXRoaXMueEF4aXNXaWR0aCxpLnhBeGlzSGVpZ2h0PXRoaXMueEF4aXNIZWlnaHQ7dmFyIGM9MTA7KFwicmFkYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMuaXNTcGFya2xpbmUpJiYobD0wLGg9aS5nb2xkZW5QYWRkaW5nKSx0aGlzLmlzU3BhcmtsaW5lJiYodGhpcy5sZ1JlY3Q9e2hlaWdodDowLHdpZHRoOjB9KSwodGhpcy5pc1NwYXJrbGluZXx8XCJ0cmVlbWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKSYmKGw9MCxoPTAsYz0wKSx0aGlzLmlzU3BhcmtsaW5lfHx0aGlzLmRpbVhBeGlzLmFkZGl0aW9uYWxQYWRkaW5nWExhYmVscyhyKTt2YXIgZD1mdW5jdGlvbigpe2kudHJhbnNsYXRlWD1sLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC10LmxnUmVjdC5oZWlnaHQtaC0odC5pc1NwYXJrbGluZXx8XCJ0cmVlbWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlPzA6ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MTA6MTUpLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtbH07c3dpdGNoKFwidG9wXCI9PT1lLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKGM9aS54QXhpc0hlaWdodC1lLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LTUpLGUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbil7Y2FzZVwiYm90dG9tXCI6aS50cmFuc2xhdGVZPWMsZCgpO2JyZWFrO2Nhc2VcInRvcFwiOmkudHJhbnNsYXRlWT10aGlzLmxnUmVjdC5oZWlnaHQrYyxkKCk7YnJlYWs7Y2FzZVwibGVmdFwiOmkudHJhbnNsYXRlWT1jLGkudHJhbnNsYXRlWD10aGlzLmxnUmVjdC53aWR0aCtsLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC1oLTEyLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtbDticmVhaztjYXNlXCJyaWdodFwiOmkudHJhbnNsYXRlWT1jLGkudHJhbnNsYXRlWD1sLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC1oLTEyLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtbC01O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiTGVnZW5kIHBvc2l0aW9uIG5vdCBzdXBwb3J0ZWRcIil9dGhpcy5kaW1HcmlkLnNldEdyaWRYUG9zRm9yRHVhbFlBeGlzKHMsYSksbmV3IHEodGhpcy5jdHgpLnNldFlBeGlzWFBvc2l0aW9uKGEscyl9fSx7a2V5Olwic2V0RGltZW5zaW9uc0Zvck5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPXQuY29uZmlnLGE9MDt0LmNvbmZpZy5sZWdlbmQuc2hvdyYmIXQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZyYmKGE9MjApO3ZhciBzPVwicGllXCI9PT1pLmNoYXJ0LnR5cGV8fFwicG9sYXJBcmVhXCI9PT1pLmNoYXJ0LnR5cGV8fFwiZG9udXRcIj09PWkuY2hhcnQudHlwZT9cInBpZVwiOlwicmFkaWFsQmFyXCIscj1pLnBsb3RPcHRpb25zW3NdLm9mZnNldFksbz1pLnBsb3RPcHRpb25zW3NdLm9mZnNldFg7aWYoIWkubGVnZW5kLnNob3d8fGkubGVnZW5kLmZsb2F0aW5nKXJldHVybiBlLmdyaWRIZWlnaHQ9ZS5zdmdIZWlnaHQtaS5ncmlkLnBhZGRpbmcubGVmdCtpLmdyaWQucGFkZGluZy5yaWdodCxlLmdyaWRXaWR0aD1lLmdyaWRIZWlnaHQsZS50cmFuc2xhdGVZPXIsdm9pZChlLnRyYW5zbGF0ZVg9bysoZS5zdmdXaWR0aC1lLmdyaWRXaWR0aCkvMik7c3dpdGNoKGkubGVnZW5kLnBvc2l0aW9uKXtjYXNlXCJib3R0b21cIjplLmdyaWRIZWlnaHQ9ZS5zdmdIZWlnaHQtdGhpcy5sZ1JlY3QuaGVpZ2h0LWUuZ29sZGVuUGFkZGluZyxlLmdyaWRXaWR0aD1lLnN2Z1dpZHRoLGUudHJhbnNsYXRlWT1yLTEwLGUudHJhbnNsYXRlWD1vKyhlLnN2Z1dpZHRoLWUuZ3JpZFdpZHRoKS8yO2JyZWFrO2Nhc2VcInRvcFwiOmUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC10aGlzLmxnUmVjdC5oZWlnaHQtZS5nb2xkZW5QYWRkaW5nLGUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgsZS50cmFuc2xhdGVZPXRoaXMubGdSZWN0LmhlaWdodCtyKzEwLGUudHJhbnNsYXRlWD1vKyhlLnN2Z1dpZHRoLWUuZ3JpZFdpZHRoKS8yO2JyZWFrO2Nhc2VcImxlZnRcIjplLmdyaWRXaWR0aD1lLnN2Z1dpZHRoLXRoaXMubGdSZWN0LndpZHRoLWEsZS5ncmlkSGVpZ2h0PVwiYXV0b1wiIT09aS5jaGFydC5oZWlnaHQ/ZS5zdmdIZWlnaHQ6ZS5ncmlkV2lkdGgsZS50cmFuc2xhdGVZPXIsZS50cmFuc2xhdGVYPW8rdGhpcy5sZ1JlY3Qud2lkdGgrYTticmVhaztjYXNlXCJyaWdodFwiOmUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtYS01LGUuZ3JpZEhlaWdodD1cImF1dG9cIiE9PWkuY2hhcnQuaGVpZ2h0P2Uuc3ZnSGVpZ2h0OmUuZ3JpZFdpZHRoLGUudHJhbnNsYXRlWT1yLGUudHJhbnNsYXRlWD1vKzEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiTGVnZW5kIHBvc2l0aW9uIG5vdCBzdXBwb3J0ZWRcIil9fX0se2tleTpcImNvbmRpdGlvbmFsQ2hlY2tzRm9yQXhpc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1hLmdsb2JhbHMuaGFzWGF4aXNHcm91cHM/MjoxLHI9aS5oZWlnaHQrdC5oZWlnaHQrZS5oZWlnaHQsbz1hLmdsb2JhbHMuaXNNdWx0aUxpbmVYPzEuMjphLmdsb2JhbHMuTElORV9IRUlHSFRfUkFUSU8sbj1hLmdsb2JhbHMucm90YXRlWExhYmVscz8yMjoxMCxsPWEuZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZcImJvdHRvbVwiPT09YS5jb25maWcubGVnZW5kLnBvc2l0aW9uPzEwOjA7dGhpcy54QXhpc0hlaWdodD1yKm8rcypuK2wsdGhpcy54QXhpc1dpZHRoPXQud2lkdGgsdGhpcy54QXhpc0hlaWdodC1lLmhlaWdodD5hLmNvbmZpZy54YXhpcy5sYWJlbHMubWF4SGVpZ2h0JiYodGhpcy54QXhpc0hlaWdodD1hLmNvbmZpZy54YXhpcy5sYWJlbHMubWF4SGVpZ2h0KSxhLmNvbmZpZy54YXhpcy5sYWJlbHMubWluSGVpZ2h0JiZ0aGlzLnhBeGlzSGVpZ2h0PGEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQmJih0aGlzLnhBeGlzSGVpZ2h0PWEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQpLGEuY29uZmlnLnhheGlzLmZsb2F0aW5nJiYodGhpcy54QXhpc0hlaWdodD0wKTt2YXIgaD0wLGM9MDthLmNvbmZpZy55YXhpcy5mb3JFYWNoKChmdW5jdGlvbih0KXtoKz10LmxhYmVscy5taW5XaWR0aCxjKz10LmxhYmVscy5tYXhXaWR0aH0pKSx0aGlzLnlBeGlzV2lkdGg8aCYmKHRoaXMueUF4aXNXaWR0aD1oKSx0aGlzLnlBeGlzV2lkdGg+YyYmKHRoaXMueUF4aXNXaWR0aD1jKX19XSksdH0oKSxudD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5sZ0N0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXRMZWdlbmRTdHlsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTt0LnNldEF0dHJpYnV0ZShcInR5cGVcIixcInRleHQvY3NzXCIpO3ZhciBlPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXFx0XFxuICAgIFxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZCB7XFx0XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcdFxcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XFx0XFxuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbSwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wIHtcXHRcXG4gICAgICAgIGZsZXgtd3JhcDogd3JhcFxcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tbGVmdCB7XFx0XFxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcdFxcbiAgICAgICAgYm90dG9tOiAwO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20uYXBleGNoYXJ0cy1hbGlnbi1sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tbGVmdCB7XFx0XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLWNlbnRlciwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wLmFwZXhjaGFydHMtYWxpZ24tY2VudGVyIHtcXHRcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyAgXFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1yaWdodCB7XFx0XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzIHtcXHRcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHRcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbSAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllc3tcXHRcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFx0XFxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCB7XFx0XFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFx0XFxuICAgICAgICBmb250LXNpemU6IDE0cHg7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0ICosIC5hcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXIgKiB7XFx0XFxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciB7XFx0XFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFx0XFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFx0XFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFx0XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcXHRcXG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgICAgfVxcdFxcbiAgICAgIFxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0IC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcGV4Y2hhcnRzLWFsaWduLWxlZnQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllc3tcXHRcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcy5hcGV4Y2hhcnRzLW5vLWNsaWNrIHtcXHRcXG4gICAgICAgIGN1cnNvcjogYXV0bztcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kIC5hcGV4Y2hhcnRzLWhpZGRlbi16ZXJvLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kIC5hcGV4Y2hhcnRzLWhpZGRlbi1udWxsLXNlcmllcyB7XFx0XFxuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZCB7XFx0XFxuICAgICAgICBvcGFjaXR5OiAwLjQ1O1xcdFxcbiAgICAgIH1cIik7cmV0dXJuIHQuYXBwZW5kQ2hpbGQoZSksdH19LHtrZXk6XCJnZXRMZWdlbmRCQm94XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1sZWdlbmRcIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZT10LndpZHRoO3JldHVybntjbHdoOnQuaGVpZ2h0LGNsd3c6ZX19fSx7a2V5OlwiYXBwZW5kVG9Gb3JlaWduT2JqZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLncuZ2xvYmFscy5kb20uZWxMZWdlbmRGb3JlaWduLmFwcGVuZENoaWxkKHRoaXMuZ2V0TGVnZW5kU3R5bGVzKCkpfX0se2tleTpcInRvZ2dsZURhdGFTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT10aGlzLnc7aWYoYS5nbG9iYWxzLmF4aXNDaGFydHN8fFwicmFkaWFsQmFyXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlKXthLmdsb2JhbHMucmVzaXplZD0hMDt2YXIgcz1udWxsLHI9bnVsbDtpZihhLmdsb2JhbHMucmlzaW5nU2VyaWVzPVtdLGEuZ2xvYmFscy5heGlzQ2hhcnRzPyhzPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQodCxcIiddXCIpKSxyPXBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApKToocz1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KHQrMSxcIiddXCIpKSxyPXBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xKSxlKVt7Y3M6YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcyxjc2k6YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXN9LHtjczphLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzLGNzaTphLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlc31dLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kucmlzZUNvbGxhcHNlZFNlcmllcyh0LmNzLHQuY3NpLHIpfSkpO2Vsc2UgdGhpcy5oaWRlU2VyaWVzKHtzZXJpZXNFbDpzLHJlYWxJbmRleDpyfSl9ZWxzZXt2YXIgbz1hLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIiAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQodCsxLFwiJ10gcGF0aFwiKSksbj1hLmNvbmZpZy5jaGFydC50eXBlO2lmKFwicGllXCI9PT1ufHxcInBvbGFyQXJlYVwiPT09bnx8XCJkb251dFwiPT09bil7dmFyIGw9YS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmxhYmVscztuZXcgbSh0aGlzLmxnQ3R4LmN0eCkucGF0aE1vdXNlRG93bihvLm1lbWJlcnNbMF0sbnVsbCksdGhpcy5sZ0N0eC5jdHgucGllLnByaW50RGF0YUxhYmVsc0lubmVyKG8ubWVtYmVyc1swXS5ub2RlLGwpfW8uZmlyZShcImNsaWNrXCIpfX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zZXJpZXNFbCxpPXQucmVhbEluZGV4LGE9dGhpcy53LHM9eC5jbG9uZShhLmNvbmZpZy5zZXJpZXMpO2lmKGEuZ2xvYmFscy5heGlzQ2hhcnRzKXt2YXIgcj0hMTtpZihhLmNvbmZpZy55YXhpc1tpXSYmYS5jb25maWcueWF4aXNbaV0uc2hvdyYmYS5jb25maWcueWF4aXNbaV0uc2hvd0Fsd2F5cyYmKHI9ITAsYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihpKTwwJiYoYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcy5wdXNoKHtpbmRleDppLGRhdGE6c1tpXS5kYXRhLnNsaWNlKCksdHlwZTplLnBhcmVudE5vZGUuY2xhc3NOYW1lLmJhc2VWYWwuc3BsaXQoXCItXCIpWzFdfSksYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMucHVzaChpKSkpLCFyKXthLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmksZGF0YTpzW2ldLmRhdGEuc2xpY2UoKSx0eXBlOmUucGFyZW50Tm9kZS5jbGFzc05hbWUuYmFzZVZhbC5zcGxpdChcIi1cIilbMV19KSxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpO3ZhciBvPWEuZ2xvYmFscy5yaXNpbmdTZXJpZXMuaW5kZXhPZihpKTthLmdsb2JhbHMucmlzaW5nU2VyaWVzLnNwbGljZShvLDEpfX1lbHNlIGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOnNbaV19KSxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpO2Zvcih2YXIgbj1lLmNoaWxkTm9kZXMsbD0wO2w8bi5sZW5ndGg7bCsrKW5bbF0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIpJiYobltsXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWhpZGVcIik/bltsXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1oaWRlXCIpOm5bbF0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZVwiKSk7YS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZD1hLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aD09PWEuY29uZmlnLnNlcmllcy5sZW5ndGgscz10aGlzLl9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGUocyksdGhpcy5sZ0N0eC5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpfX0se2tleTpcInJpc2VDb2xsYXBzZWRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9eC5jbG9uZShhLmNvbmZpZy5zZXJpZXMpO2lmKHQubGVuZ3RoPjApe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXRbcl0uaW5kZXg9PT1pJiYoYS5nbG9iYWxzLmF4aXNDaGFydHM/KHNbaV0uZGF0YT10W3JdLmRhdGEuc2xpY2UoKSx0LnNwbGljZShyLDEpLGUuc3BsaWNlKHIsMSksYS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKTooc1tpXT10W3JdLmRhdGEsdC5zcGxpY2UociwxKSxlLnNwbGljZShyLDEpLGEuZ2xvYmFscy5yaXNpbmdTZXJpZXMucHVzaChpKSkpO3M9dGhpcy5fZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlKHMpLHRoaXMubGdDdHguY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhzLGEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX19fSx7a2V5OlwiX2dldFNlcmllc0Jhc2VkT25Db2xsYXBzZWRTdGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm4gZS5nbG9iYWxzLmF4aXNDaGFydHM/dC5mb3JFYWNoKChmdW5jdGlvbihpLGEpe2UuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSk+LTEmJih0W2FdLmRhdGE9W10pfSkpOnQuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXtlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGEpPi0xJiYodFthXT0wKX0pKSx0fX1dKSx0fSgpLGx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMub25MZWdlbmRDbGljaz10aGlzLm9uTGVnZW5kQ2xpY2suYmluZCh0aGlzKSx0aGlzLm9uTGVnZW5kSG92ZXJlZD10aGlzLm9uTGVnZW5kSG92ZXJlZC5iaW5kKHRoaXMpLHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQ9XCJiYXJcIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJjE9PT10aGlzLncuY29uZmlnLnNlcmllcy5sZW5ndGgsdGhpcy5sZWdlbmRIZWxwZXJzPW5ldyBudCh0aGlzKX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9dC5jb25maWc7aWYoKGkubGVnZW5kLnNob3dGb3JTaW5nbGVTZXJpZXMmJjE9PT1lLnNlcmllcy5sZW5ndGh8fHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWR8fGUuc2VyaWVzLmxlbmd0aD4xfHwhZS5heGlzQ2hhcnRzKSYmaS5sZWdlbmQuc2hvdyl7Zm9yKDtlLmRvbS5lbExlZ2VuZFdyYXAuZmlyc3RDaGlsZDspZS5kb20uZWxMZWdlbmRXcmFwLnJlbW92ZUNoaWxkKGUuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkKTt0aGlzLmRyYXdMZWdlbmRzKCkseC5pc0lFMTEoKT9kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQodGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZFN0eWxlcygpKTp0aGlzLmxlZ2VuZEhlbHBlcnMuYXBwZW5kVG9Gb3JlaWduT2JqZWN0KCksXCJib3R0b21cIj09PWkubGVnZW5kLnBvc2l0aW9ufHxcInRvcFwiPT09aS5sZWdlbmQucG9zaXRpb24/dGhpcy5sZWdlbmRBbGlnbkhvcml6b250YWwoKTpcInJpZ2h0XCIhPT1pLmxlZ2VuZC5wb3NpdGlvbiYmXCJsZWZ0XCIhPT1pLmxlZ2VuZC5wb3NpdGlvbnx8dGhpcy5sZWdlbmRBbGlnblZlcnRpY2FsKCl9fX0se2tleTpcImRyYXdMZWdlbmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5jb25maWcubGVnZW5kLmZvbnRGYW1pbHksYT1lLmdsb2JhbHMuc2VyaWVzTmFtZXMscz1lLmdsb2JhbHMuY29sb3JzLnNsaWNlKCk7aWYoXCJoZWF0bWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKXt2YXIgcj1lLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmNvbG9yU2NhbGUucmFuZ2VzO2E9ci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU/dC5uYW1lOnQuZnJvbStcIiAtIFwiK3QudG99KSkscz1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sb3J9KSl9ZWxzZSB0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkJiYoYT1lLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkpO2UuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcy5sZW5ndGgmJihhPWUuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcyk7Zm9yKHZhciBvPWUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXIsbj1lLmNvbmZpZy5sZWdlbmQuaW52ZXJzZU9yZGVyLGw9bj9hLmxlbmd0aC0xOjA7bj9sPj0wOmw8PWEubGVuZ3RoLTE7bj9sLS06bCsrKXt2YXIgaCxjPW8oYVtsXSx7c2VyaWVzSW5kZXg6bCx3OmV9KSxkPSExLGc9ITE7aWYoZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg+MClmb3IodmFyIHU9MDt1PGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoO3UrKyllLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW3VdLmluZGV4PT09bCYmKGQ9ITApO2lmKGUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aD4wKWZvcih2YXIgcD0wO3A8ZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO3ArKyllLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlc1twXT09PWwmJihnPSEwKTt2YXIgZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtmLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIik7dmFyIGI9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMub2Zmc2V0WCx2PWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLm9mZnNldFksdz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5oZWlnaHQsaz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy53aWR0aCxBPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnN0cm9rZVdpZHRoLFM9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuc3Ryb2tlQ29sb3IsQz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5yYWRpdXMsTD1mLnN0eWxlO0wuYmFja2dyb3VuZD1zW2xdLEwuY29sb3I9c1tsXSxMLnNldFByb3BlcnR5KFwiYmFja2dyb3VuZFwiLHNbbF0sXCJpbXBvcnRhbnRcIiksZS5jb25maWcubGVnZW5kLm1hcmtlcnMuZmlsbENvbG9ycyYmZS5jb25maWcubGVnZW5kLm1hcmtlcnMuZmlsbENvbG9yc1tsXSYmKEwuYmFja2dyb3VuZD1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzW2xdKSx2b2lkIDAhPT1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW2xdJiYoTC5iYWNrZ3JvdW5kPWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0sTC5jb2xvcj1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW2xdKSxMLmhlaWdodD1BcnJheS5pc0FycmF5KHcpP3BhcnNlRmxvYXQod1tsXSkrXCJweFwiOnBhcnNlRmxvYXQodykrXCJweFwiLEwud2lkdGg9QXJyYXkuaXNBcnJheShrKT9wYXJzZUZsb2F0KGtbbF0pK1wicHhcIjpwYXJzZUZsb2F0KGspK1wicHhcIixMLmxlZnQ9KEFycmF5LmlzQXJyYXkoYik/cGFyc2VGbG9hdChiW2xdKTpwYXJzZUZsb2F0KGIpKStcInB4XCIsTC50b3A9KEFycmF5LmlzQXJyYXkodik/cGFyc2VGbG9hdCh2W2xdKTpwYXJzZUZsb2F0KHYpKStcInB4XCIsTC5ib3JkZXJXaWR0aD1BcnJheS5pc0FycmF5KEEpP0FbbF06QSxMLmJvcmRlckNvbG9yPUFycmF5LmlzQXJyYXkoUyk/U1tsXTpTLEwuYm9yZGVyUmFkaXVzPUFycmF5LmlzQXJyYXkoQyk/cGFyc2VGbG9hdChDW2xdKStcInB4XCI6cGFyc2VGbG9hdChDKStcInB4XCIsZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCYmKEFycmF5LmlzQXJyYXkoZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCk/ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTFtsXSYmKGYuaW5uZXJIVE1MPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUxbbF0oKSk6Zi5pbm5lckhUTUw9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCgpKSxtLnNldEF0dHJzKGYse3JlbDpsKzEsXCJkYXRhOmNvbGxhcHNlZFwiOmR8fGd9KSwoZHx8ZykmJmYuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kXCIpO3ZhciBQPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksST1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtJLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpLEkuaW5uZXJIVE1MPUFycmF5LmlzQXJyYXkoYyk/Yy5qb2luKFwiIFwiKTpjO3ZhciBNPWUuY29uZmlnLmxlZ2VuZC5sYWJlbHMudXNlU2VyaWVzQ29sb3JzP2UuZ2xvYmFscy5jb2xvcnNbbF06QXJyYXkuaXNBcnJheShlLmNvbmZpZy5sZWdlbmQubGFiZWxzLmNvbG9ycyk/bnVsbD09PShoPWUuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzKXx8dm9pZCAwPT09aD92b2lkIDA6aFtsXTplLmNvbmZpZy5sZWdlbmQubGFiZWxzLmNvbG9ycztNfHwoTT1lLmNvbmZpZy5jaGFydC5mb3JlQ29sb3IpLEkuc3R5bGUuY29sb3I9TSxJLnN0eWxlLmZvbnRTaXplPXBhcnNlRmxvYXQoZS5jb25maWcubGVnZW5kLmZvbnRTaXplKStcInB4XCIsSS5zdHlsZS5mb250V2VpZ2h0PWUuY29uZmlnLmxlZ2VuZC5mb250V2VpZ2h0LEkuc3R5bGUuZm9udEZhbWlseT1pfHxlLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LG0uc2V0QXR0cnMoSSx7cmVsOmwrMSxpOmwsXCJkYXRhOmRlZmF1bHQtdGV4dFwiOmVuY29kZVVSSUNvbXBvbmVudChjKSxcImRhdGE6Y29sbGFwc2VkXCI6ZHx8Z30pLFAuYXBwZW5kQ2hpbGQoZiksUC5hcHBlbmRDaGlsZChJKTt2YXIgVD1uZXcgeSh0aGlzLmN0eCk7aWYoIWUuY29uZmlnLmxlZ2VuZC5zaG93Rm9yWmVyb1NlcmllcykwPT09VC5nZXRTZXJpZXNUb3RhbEJ5SW5kZXgobCkmJlQuc2VyaWVzSGF2ZVNhbWVWYWx1ZXMobCkmJiFULmlzU2VyaWVzTnVsbChsKSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiYtMT09PWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJlAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLXplcm8tc2VyaWVzXCIpO2UuY29uZmlnLmxlZ2VuZC5zaG93Rm9yTnVsbFNlcmllc3x8VC5pc1Nlcmllc051bGwobCkmJi0xPT09ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihsKSYmLTE9PT1lLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiZQLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGRlbi1udWxsLXNlcmllc1wiKSxlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5hcHBlbmRDaGlsZChQKSxlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbGlnbi1cIi5jb25jYXQoZS5jb25maWcubGVnZW5kLmhvcml6b250YWxBbGlnbikpLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcHgtbGVnZW5kLXBvc2l0aW9uLVwiK2UuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiksUC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzXCIpLFAuc3R5bGUubWFyZ2luPVwiXCIuY29uY2F0KGUuY29uZmlnLmxlZ2VuZC5pdGVtTWFyZ2luLnZlcnRpY2FsLFwicHggXCIpLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaXRlbU1hcmdpbi5ob3Jpem9udGFsLFwicHhcIiksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUud2lkdGg9ZS5jb25maWcubGVnZW5kLndpZHRoP2UuY29uZmlnLmxlZ2VuZC53aWR0aCtcInB4XCI6XCJcIixlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5zdHlsZS5oZWlnaHQ9ZS5jb25maWcubGVnZW5kLmhlaWdodD9lLmNvbmZpZy5sZWdlbmQuaGVpZ2h0K1wicHhcIjpcIlwiLG0uc2V0QXR0cnMoUCx7cmVsOmwrMSxzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGFbbF0pLFwiZGF0YTpjb2xsYXBzZWRcIjpkfHxnfSksKGR8fGcpJiZQLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZFwiKSxlLmNvbmZpZy5sZWdlbmQub25JdGVtQ2xpY2sudG9nZ2xlRGF0YVNlcmllc3x8UC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1uby1jbGlja1wiKX1lLmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0Lm9uTGVnZW5kQ2xpY2ssITApLGUuY29uZmlnLmxlZ2VuZC5vbkl0ZW1Ib3Zlci5oaWdobGlnaHREYXRhU2VyaWVzJiYwPT09ZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKGUuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0Lm9uTGVnZW5kSG92ZXJlZCwhMCksZS5nbG9iYWxzLmRvbS5lbFdyYXAuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3V0XCIsdC5vbkxlZ2VuZEhvdmVyZWQsITApKX19LHtrZXk6XCJzZXRMZWdlbmRXcmFwWFlcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLHM9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPTAsbz0wO2lmKFwiYm90dG9tXCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24pbys9aS5nbG9iYWxzLnN2Z0hlaWdodC1zLmhlaWdodC8yO2Vsc2UgaWYoXCJ0b3BcIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbil7dmFyIG49bmV3IG90KHRoaXMuY3R4KSxsPW4uZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikuaGVpZ2h0LGg9bi5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJzdWJ0aXRsZVwiKS5oZWlnaHQ7bz1vKyhsPjA/bC0xMDowKSsoaD4wP2gtMTA6MCl9YS5zdHlsZS5wb3NpdGlvbj1cImFic29sdXRlXCIscj1yK3QraS5jb25maWcubGVnZW5kLm9mZnNldFgsbz1vK2UraS5jb25maWcubGVnZW5kLm9mZnNldFksYS5zdHlsZS5sZWZ0PXIrXCJweFwiLGEuc3R5bGUudG9wPW8rXCJweFwiLFwiYm90dG9tXCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24/KGEuc3R5bGUudG9wPVwiYXV0b1wiLGEuc3R5bGUuYm90dG9tPTUtaS5jb25maWcubGVnZW5kLm9mZnNldFkrXCJweFwiKTpcInJpZ2h0XCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihhLnN0eWxlLmxlZnQ9XCJhdXRvXCIsYS5zdHlsZS5yaWdodD0yNStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCtcInB4XCIpO1tcIndpZHRoXCIsXCJoZWlnaHRcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5zdHlsZVt0XSYmKGEuc3R5bGVbdF09cGFyc2VJbnQoaS5jb25maWcubGVnZW5kW3RdLDEwKStcInB4XCIpfSkpfX0se2tleTpcImxlZ2VuZEFsaWduSG9yaXpvbnRhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLnJpZ2h0PTA7dmFyIGU9dGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKSxpPW5ldyBvdCh0aGlzLmN0eCksYT1pLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLHM9aS5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJzdWJ0aXRsZVwiKSxyPTA7XCJib3R0b21cIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj9yPS1lLmNsd2gvMS44OlwidG9wXCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihyPWEuaGVpZ2h0K3MuaGVpZ2h0K3QuY29uZmlnLnRpdGxlLm1hcmdpbit0LmNvbmZpZy5zdWJ0aXRsZS5tYXJnaW4tMTApLHRoaXMuc2V0TGVnZW5kV3JhcFhZKDIwLHIpfX0se2tleTpcImxlZ2VuZEFsaWduVmVydGljYWxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCksaT0wO1wibGVmdFwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYoaT0yMCksXCJyaWdodFwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYoaT10Lmdsb2JhbHMuc3ZnV2lkdGgtZS5jbHd3LTEwKSx0aGlzLnNldExlZ2VuZFdyYXBYWShpLDIwKX19LHtrZXk6XCJvbkxlZ2VuZEhvdmVyZWRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXNcIil8fHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKTtpZihcImhlYXRtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQpe2lmKGkpe3ZhciBhPXBhcnNlSW50KHQudGFyZ2V0LmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMTt0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibGVnZW5kSG92ZXJcIixbdGhpcy5jdHgsYSx0aGlzLnddKSxuZXcgTih0aGlzLmN0eCkuaGlnaGxpZ2h0UmFuZ2VJblNlcmllcyh0LHQudGFyZ2V0KX19ZWxzZSF0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZFwiKSYmaSYmbmV3IE4odGhpcy5jdHgpLnRvZ2dsZVNlcmllc09uSG92ZXIodCx0LnRhcmdldCl9fSx7a2V5Olwib25MZWdlbmRDbGlja1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZighZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXNlcmllc1wiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpKSl7dmFyIGk9cGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xLGE9XCJ0cnVlXCI9PT10LnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmNvbGxhcHNlZFwiKSxzPXRoaXMudy5jb25maWcuY2hhcnQuZXZlbnRzLmxlZ2VuZENsaWNrO1wiZnVuY3Rpb25cIj09dHlwZW9mIHMmJnModGhpcy5jdHgsaSx0aGlzLncpLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRDbGlja1wiLFt0aGlzLmN0eCxpLHRoaXMud10pO3ZhciByPXRoaXMudy5jb25maWcubGVnZW5kLm1hcmtlcnMub25DbGljaztcImZ1bmN0aW9uXCI9PXR5cGVvZiByJiZ0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIikmJihyKHRoaXMuY3R4LGksdGhpcy53KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibGVnZW5kTWFya2VyQ2xpY2tcIixbdGhpcy5jdHgsaSx0aGlzLnddKSksXCJ0cmVlbWFwXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiZcImhlYXRtYXBcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGUmJiF0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkJiZlLmNvbmZpZy5sZWdlbmQub25JdGVtQ2xpY2sudG9nZ2xlRGF0YVNlcmllcyYmdGhpcy5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoaSxhKX19fV0pLHR9KCksaHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMuZXY9dGhpcy53LmNvbmZpZy5jaGFydC5ldmVudHMsdGhpcy5zZWxlY3RlZENsYXNzPVwiYXBleGNoYXJ0cy1zZWxlY3RlZFwiLHRoaXMubG9jYWxlVmFsdWVzPXRoaXMudy5nbG9iYWxzLmxvY2FsZS50b29sYmFyLHRoaXMubWluWD1pLmdsb2JhbHMubWluWCx0aGlzLm1heFg9aS5nbG9iYWxzLm1heFh9cmV0dXJuIHIodCxbe2tleTpcImNyZWF0ZVRvb2xiYXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpfSxhPWkoKTtpZihhLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsXCJhcGV4Y2hhcnRzLXRvb2xiYXJcIiksYS5zdHlsZS50b3A9ZS5jb25maWcuY2hhcnQudG9vbGJhci5vZmZzZXRZK1wicHhcIixhLnN0eWxlLnJpZ2h0PTMtZS5jb25maWcuY2hhcnQudG9vbGJhci5vZmZzZXRYK1wicHhcIixlLmdsb2JhbHMuZG9tLmVsV3JhcC5hcHBlbmRDaGlsZChhKSx0aGlzLmVsWm9vbT1pKCksdGhpcy5lbFpvb21Jbj1pKCksdGhpcy5lbFpvb21PdXQ9aSgpLHRoaXMuZWxQYW49aSgpLHRoaXMuZWxTZWxlY3Rpb249aSgpLHRoaXMuZWxab29tUmVzZXQ9aSgpLHRoaXMuZWxNZW51SWNvbj1pKCksdGhpcy5lbE1lbnU9aSgpLHRoaXMuZWxDdXN0b21JY29ucz1bXSx0aGlzLnQ9ZS5jb25maWcuY2hhcnQudG9vbGJhci50b29scyxBcnJheS5pc0FycmF5KHRoaXMudC5jdXN0b21JY29ucykpZm9yKHZhciBzPTA7czx0aGlzLnQuY3VzdG9tSWNvbnMubGVuZ3RoO3MrKyl0aGlzLmVsQ3VzdG9tSWNvbnMucHVzaChpKCkpO3ZhciByPVtdLG89ZnVuY3Rpb24oaSxhLHMpe3ZhciBvPWkudG9Mb3dlckNhc2UoKTt0LnRbb10mJmUuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZCYmci5wdXNoKHtlbDphLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHQudFtvXT90LnRbb106cyx0aXRsZTp0LmxvY2FsZVZhbHVlc1tpXSxjbGFzczpcImFwZXhjaGFydHMtXCIuY29uY2F0KG8sXCItaWNvblwiKX0pfTtvKFwiem9vbUluXCIsdGhpcy5lbFpvb21JbiwnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxcbiAgICA8cGF0aCBkPVwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIi8+XFxuPC9zdmc+XFxuJyksbyhcInpvb21PdXRcIix0aGlzLmVsWm9vbU91dCwnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxcbiAgICA8cGF0aCBkPVwiTTcgMTF2MmgxMHYtMkg3em01LTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwiLz5cXG48L3N2Zz5cXG4nKTt2YXIgbj1mdW5jdGlvbihpKXt0LnRbaV0mJmUuY29uZmlnLmNoYXJ0W2ldLmVuYWJsZWQmJnIucHVzaCh7ZWw6XCJ6b29tXCI9PT1pP3QuZWxab29tOnQuZWxTZWxlY3Rpb24saWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdC50W2ldP3QudFtpXTpcInpvb21cIj09PWk/JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCIjMDAwMDAwXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiPlxcbiAgICA8cGF0aCBkPVwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCIvPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwVjB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMTIgMTBoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXpcIi8+XFxuPC9zdmc+JzonPHN2ZyBmaWxsPVwiIzZFODE5MlwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMyA1aDJWM2MtMS4xIDAtMiAuOS0yIDJ6bTAgOGgydi0ySDN2MnptNCA4aDJ2LTJIN3Yyek0zIDloMlY3SDN2MnptMTAtNmgtMnYyaDJWM3ptNiAwdjJoMmMwLTEuMS0uOS0yLTItMnpNNSAyMXYtMkgzYzAgMS4xLjkgMiAyIDJ6bS0yLTRoMnYtMkgzdjJ6TTkgM0g3djJoMlYzem0yIDE4aDJ2LTJoLTJ2MnptOC04aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6bTAtMTJoMlY3aC0ydjJ6bTAgOGgydi0yaC0ydjJ6bS00IDRoMnYtMmgtMnYyem0wLTE2aDJWM2gtMnYyelwiLz5cXG48L3N2Zz4nLHRpdGxlOnQubG9jYWxlVmFsdWVzW1wiem9vbVwiPT09aT9cInNlbGVjdGlvblpvb21cIjpcInNlbGVjdGlvblwiXSxjbGFzczplLmdsb2JhbHMuaXNUb3VjaERldmljZT9cImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIjpcImFwZXhjaGFydHMtXCIuY29uY2F0KGksXCItaWNvblwiKX0pfTtuKFwiem9vbVwiKSxuKFwic2VsZWN0aW9uXCIpLHRoaXMudC5wYW4mJmUuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZCYmci5wdXNoKHtlbDp0aGlzLmVsUGFuLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMudC5wYW4/dGhpcy50LnBhbjonPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCI+XFxuICAgIDxkZWZzPlxcbiAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBpZD1cImFcIi8+XFxuICAgIDwvZGVmcz5cXG4gICAgPGNsaXBQYXRoIGlkPVwiYlwiPlxcbiAgICAgICAgPHVzZSBvdmVyZmxvdz1cInZpc2libGVcIiB4bGluazpocmVmPVwiI2FcIi8+XFxuICAgIDwvY2xpcFBhdGg+XFxuICAgIDxwYXRoIGNsaXAtcGF0aD1cInVybCgjYilcIiBkPVwiTTIzIDUuNVYyMGMwIDIuMi0xLjggNC00IDRoLTcuM2MtMS4wOCAwLTIuMS0uNDMtMi44NS0xLjE5TDEgMTQuODNzMS4yNi0xLjIzIDEuMy0xLjI1Yy4yMi0uMTkuNDktLjI5Ljc5LS4yOS4yMiAwIC40Mi4wNi42LjE2LjA0LjAxIDQuMzEgMi40NiA0LjMxIDIuNDZWNGMwLS44My42Ny0xLjUgMS41LTEuNVMxMSAzLjE3IDExIDR2N2gxVjEuNWMwLS44My42Ny0xLjUgMS41LTEuNVMxNSAuNjcgMTUgMS41VjExaDFWMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjExaDFWNS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41elwiLz5cXG48L3N2Zz4nLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLnBhbixjbGFzczplLmdsb2JhbHMuaXNUb3VjaERldmljZT9cImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIjpcImFwZXhjaGFydHMtcGFuLWljb25cIn0pLG8oXCJyZXNldFwiLHRoaXMuZWxab29tUmVzZXQsJzxzdmcgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxcbiAgICA8cGF0aCBkPVwiTTEwIDIwdi02aDR2Nmg1di04aDNMMTIgMyAyIDEyaDN2OHpcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuPC9zdmc+JyksdGhpcy50LmRvd25sb2FkJiZyLnB1c2goe2VsOnRoaXMuZWxNZW51SWNvbixpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnQuZG93bmxvYWQ/dGhpcy50LmRvd25sb2FkOic8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPjxwYXRoIGQ9XCJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3pcIi8+PC9zdmc+Jyx0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5tZW51LGNsYXNzOlwiYXBleGNoYXJ0cy1tZW51LWljb25cIn0pO2Zvcih2YXIgbD0wO2w8dGhpcy5lbEN1c3RvbUljb25zLmxlbmd0aDtsKyspci5wdXNoKHtlbDp0aGlzLmVsQ3VzdG9tSWNvbnNbbF0saWNvbjp0aGlzLnQuY3VzdG9tSWNvbnNbbF0uaWNvbix0aXRsZTp0aGlzLnQuY3VzdG9tSWNvbnNbbF0udGl0bGUsaW5kZXg6dGhpcy50LmN1c3RvbUljb25zW2xdLmluZGV4LGNsYXNzOlwiYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uIFwiK3RoaXMudC5jdXN0b21JY29uc1tsXS5jbGFzc30pO3IuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmluZGV4JiZ4Lm1vdmVJbmRleEluQXJyYXkocixlLHQuaW5kZXgpfSkpO2Zvcih2YXIgaD0wO2g8ci5sZW5ndGg7aCsrKW0uc2V0QXR0cnMocltoXS5lbCx7Y2xhc3M6cltoXS5jbGFzcyx0aXRsZTpyW2hdLnRpdGxlfSkscltoXS5lbC5pbm5lckhUTUw9cltoXS5pY29uLGEuYXBwZW5kQ2hpbGQocltoXS5lbCk7dGhpcy5fY3JlYXRlSGFtYnVyZ2VyTWVudShhKSxlLmdsb2JhbHMuem9vbUVuYWJsZWQ/dGhpcy5lbFpvb20uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpOmUuZ2xvYmFscy5wYW5FbmFibGVkP3RoaXMuZWxQYW4uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpOmUuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiZ0aGlzLmVsU2VsZWN0aW9uLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKSx0aGlzLmFkZFRvb2xiYXJFdmVudExpc3RlbmVycygpfX0se2tleTpcIl9jcmVhdGVIYW1idXJnZXJNZW51XCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5lbE1lbnVJdGVtcz1bXSx0LmFwcGVuZENoaWxkKHRoaXMuZWxNZW51KSxtLnNldEF0dHJzKHRoaXMuZWxNZW51LHtjbGFzczpcImFwZXhjaGFydHMtbWVudVwifSk7dmFyIGU9W3tuYW1lOlwiZXhwb3J0U1ZHXCIsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9TVkd9LHtuYW1lOlwiZXhwb3J0UE5HXCIsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9QTkd9LHtuYW1lOlwiZXhwb3J0Q1NWXCIsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9DU1Z9XTt0aGlzLncuZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFh8fGUuc3BsaWNlKDIsMSk7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy5lbE1lbnVJdGVtcy5wdXNoKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLHRoaXMuZWxNZW51SXRlbXNbaV0uaW5uZXJIVE1MPWVbaV0udGl0bGUsbS5zZXRBdHRycyh0aGlzLmVsTWVudUl0ZW1zW2ldLHtjbGFzczpcImFwZXhjaGFydHMtbWVudS1pdGVtIFwiLmNvbmNhdChlW2ldLm5hbWUpLHRpdGxlOmVbaV0udGl0bGV9KSx0aGlzLmVsTWVudS5hcHBlbmRDaGlsZCh0aGlzLmVsTWVudUl0ZW1zW2ldKX19LHtrZXk6XCJhZGRUb29sYmFyRXZlbnRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5lbFpvb21SZXNldC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmhhbmRsZVpvb21SZXNldC5iaW5kKHRoaXMpKSx0aGlzLmVsU2VsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlWm9vbVNlbGVjdGlvbi5iaW5kKHRoaXMsXCJzZWxlY3Rpb25cIikpLHRoaXMuZWxab29tLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlWm9vbVNlbGVjdGlvbi5iaW5kKHRoaXMsXCJ6b29tXCIpKSx0aGlzLmVsWm9vbUluLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbUluLmJpbmQodGhpcykpLHRoaXMuZWxab29tT3V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbU91dC5iaW5kKHRoaXMpKSx0aGlzLmVsUGFuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlUGFubmluZy5iaW5kKHRoaXMpKSx0aGlzLmVsTWVudUljb24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVNZW51LmJpbmQodGhpcykpLHRoaXMuZWxNZW51SXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRTVkdcIik/ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmhhbmRsZURvd25sb2FkLmJpbmQodCxcInN2Z1wiKSk6ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRQTkdcIik/ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmhhbmRsZURvd25sb2FkLmJpbmQodCxcInBuZ1wiKSk6ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRDU1ZcIikmJmUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5oYW5kbGVEb3dubG9hZC5iaW5kKHQsXCJjc3ZcIikpfSkpO2Zvcih2YXIgZT0wO2U8dGhpcy50LmN1c3RvbUljb25zLmxlbmd0aDtlKyspdGhpcy5lbEN1c3RvbUljb25zW2VdLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudC5jdXN0b21JY29uc1tlXS5jbGljay5iaW5kKHRoaXMsdGhpcy5jdHgsdGhpcy5jdHgudykpfX0se2tleTpcInRvZ2dsZVpvb21TZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmN0eC50b29sYmFyLnRvZ2dsZU90aGVyQ29udHJvbHMoKTt2YXIgaT1cInNlbGVjdGlvblwiPT09dD9lLmN0eC50b29sYmFyLmVsU2VsZWN0aW9uOmUuY3R4LnRvb2xiYXIuZWxab29tLGE9XCJzZWxlY3Rpb25cIj09PXQ/XCJzZWxlY3Rpb25FbmFibGVkXCI6XCJ6b29tRW5hYmxlZFwiO2Uudy5nbG9iYWxzW2FdPSFlLncuZ2xvYmFsc1thXSxpLmNsYXNzTGlzdC5jb250YWlucyhlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpP2kuY2xhc3NMaXN0LnJlbW92ZShlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpOmkuY2xhc3NMaXN0LmFkZChlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpfSkpfX0se2tleTpcImdldFRvb2xiYXJJY29uc1JlZmVyZW5jZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3RoaXMuZWxab29tfHwodGhpcy5lbFpvb209dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXpvb20taWNvblwiKSksdGhpcy5lbFBhbnx8KHRoaXMuZWxQYW49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXBhbi1pY29uXCIpKSx0aGlzLmVsU2VsZWN0aW9ufHwodGhpcy5lbFNlbGVjdGlvbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb25cIikpfX0se2tleTpcImVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMudG9nZ2xlT3RoZXJDb250cm9scygpLFwicGFuXCI9PT10P3RoaXMudy5nbG9iYWxzLnBhbkVuYWJsZWQ9ITA6dGhpcy53Lmdsb2JhbHMuem9vbUVuYWJsZWQ9ITA7dmFyIGU9XCJwYW5cIj09PXQ/dGhpcy5lbFBhbjp0aGlzLmVsWm9vbSxpPVwicGFuXCI9PT10P3RoaXMuZWxab29tOnRoaXMuZWxQYW47ZSYmZS5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyksaSYmaS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuc2VsZWN0ZWRDbGFzcyl9fSx7a2V5OlwidG9nZ2xlUGFubmluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jdHgudG9vbGJhci50b2dnbGVPdGhlckNvbnRyb2xzKCksdC53Lmdsb2JhbHMucGFuRW5hYmxlZD0hdC53Lmdsb2JhbHMucGFuRW5hYmxlZCx0LmN0eC50b29sYmFyLmVsUGFuLmNsYXNzTGlzdC5jb250YWlucyh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpP3QuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LnJlbW92ZSh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpOnQuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LmFkZCh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpfSkpfX0se2tleTpcInRvZ2dsZU90aGVyQ29udHJvbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7ZS5nbG9iYWxzLnBhbkVuYWJsZWQ9ITEsZS5nbG9iYWxzLnpvb21FbmFibGVkPSExLGUuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkPSExLHRoaXMuZ2V0VG9vbGJhckljb25zUmVmZXJlbmNlKCksW3RoaXMuZWxQYW4sdGhpcy5lbFNlbGVjdGlvbix0aGlzLmVsWm9vbV0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSYmZS5jbGFzc0xpc3QucmVtb3ZlKHQuc2VsZWN0ZWRDbGFzcyl9KSl9fSx7a2V5OlwiaGFuZGxlWm9vbUluXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLmlzUmFuZ2VCYXImJih0aGlzLm1pblg9dC5nbG9iYWxzLm1pblksdGhpcy5tYXhYPXQuZ2xvYmFscy5tYXhZKTt2YXIgZT0odGhpcy5taW5YK3RoaXMubWF4WCkvMixpPSh0aGlzLm1pblgrZSkvMixhPSh0aGlzLm1heFgrZSkvMixzPXRoaXMuX2dldE5ld01pblhNYXhYKGksYSk7dC5nbG9iYWxzLmRpc2FibGVab29tSW58fHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMocy5taW5YLHMubWF4WCl9fSx7a2V5OlwiaGFuZGxlWm9vbU91dFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5pc1JhbmdlQmFyJiYodGhpcy5taW5YPXQuZ2xvYmFscy5taW5ZLHRoaXMubWF4WD10Lmdsb2JhbHMubWF4WSksIShcImRhdGV0aW1lXCI9PT10LmNvbmZpZy54YXhpcy50eXBlJiZuZXcgRGF0ZSh0aGlzLm1pblgpLmdldFVUQ0Z1bGxZZWFyKCk8MWUzKSl7dmFyIGU9KHRoaXMubWluWCt0aGlzLm1heFgpLzIsaT10aGlzLm1pblgtKGUtdGhpcy5taW5YKSxhPXRoaXMubWF4WC0oZS10aGlzLm1heFgpLHM9dGhpcy5fZ2V0TmV3TWluWE1heFgoaSxhKTt0Lmdsb2JhbHMuZGlzYWJsZVpvb21PdXR8fHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMocy5taW5YLHMubWF4WCl9fX0se2tleTpcIl9nZXROZXdNaW5YTWF4WFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM7cmV0dXJue21pblg6aT9NYXRoLmZsb29yKHQpOnQsbWF4WDppP01hdGguZmxvb3IoZSk6ZX19fSx7a2V5Olwiem9vbVVwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZih2b2lkIDAhPT10fHx2b2lkIDAhPT1lKXtpZighKGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHQ8MSYmKHQ9MSxlPWkuZ2xvYmFscy5kYXRhUG9pbnRzKSxlLXQ8MikpKXt2YXIgYT17bWluOnQsbWF4OmV9LHM9dGhpcy5nZXRCZWZvcmVab29tUmFuZ2UoYSk7cyYmKGE9cy54YXhpcyk7dmFyIHI9e3hheGlzOmF9LG89eC5jbG9uZShpLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcyk7aWYoaS5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcylvPW5ldyBfKHRoaXMuY3R4KS5hdXRvU2NhbGVZKHRoaXMuY3R4LG8se3hheGlzOmF9KTtpLmNvbmZpZy5jaGFydC5ncm91cHx8KHIueWF4aXM9byksdGhpcy53Lmdsb2JhbHMuem9vbWVkPSEwLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMociwhMSx0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSx0aGlzLnpvb21DYWxsYmFjayhhLG8pfX1lbHNlIHRoaXMuaGFuZGxlWm9vbVJlc2V0KCl9fSx7a2V5Olwiem9vbUNhbGxiYWNrXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLmV2Lnpvb21lZCYmdGhpcy5ldi56b29tZWQodGhpcy5jdHgse3hheGlzOnQseWF4aXM6ZX0pfX0se2tleTpcImdldEJlZm9yZVpvb21SYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bnVsbDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLmV2LmJlZm9yZVpvb20mJihpPXRoaXMuZXYuYmVmb3JlWm9vbSh0aGlzLHt4YXhpczp0LHlheGlzOmV9KSksaX19LHtrZXk6XCJ0b2dnbGVNZW51XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3dpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3QuZWxNZW51LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpP3QuZWxNZW51LmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKTp0LmVsTWVudS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIil9KSwwKX19LHtrZXk6XCJoYW5kbGVEb3dubG9hZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBHKHRoaXMuY3R4KTtzd2l0Y2godCl7Y2FzZVwic3ZnXCI6aS5leHBvcnRUb1NWRyh0aGlzLmN0eCk7YnJlYWs7Y2FzZVwicG5nXCI6aS5leHBvcnRUb1BuZyh0aGlzLmN0eCk7YnJlYWs7Y2FzZVwiY3N2XCI6aS5leHBvcnRUb0NTVih7c2VyaWVzOmUuY29uZmlnLnNlcmllcyxjb2x1bW5EZWxpbWl0ZXI6ZS5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmNvbHVtbkRlbGltaXRlcn0pfX19LHtrZXk6XCJoYW5kbGVab29tUmVzZXRcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10Lnc7aWYoZS5nbG9iYWxzLmxhc3RYQXhpcy5taW49ZS5nbG9iYWxzLmluaXRpYWxDb25maWcueGF4aXMubWluLGUuZ2xvYmFscy5sYXN0WEF4aXMubWF4PWUuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnhheGlzLm1heCx0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlUmVzZXRab29tKXt2YXIgaT1lLmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlUmVzZXRab29tKHQsZSk7aSYmdC51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KGkpfVwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQmJnQuY3R4LnRvb2xiYXIuem9vbUNhbGxiYWNrKHttaW46ZS5jb25maWcueGF4aXMubWluLG1heDplLmNvbmZpZy54YXhpcy5tYXh9KSxlLmdsb2JhbHMuem9vbWVkPSExO3ZhciBhPXQuY3R4LnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyh4LmNsb25lKGUuZ2xvYmFscy5pbml0aWFsU2VyaWVzKSk7dC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMoYSxlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9KSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbFpvb209bnVsbCx0aGlzLmVsWm9vbUluPW51bGwsdGhpcy5lbFpvb21PdXQ9bnVsbCx0aGlzLmVsUGFuPW51bGwsdGhpcy5lbFNlbGVjdGlvbj1udWxsLHRoaXMuZWxab29tUmVzZXQ9bnVsbCx0aGlzLmVsTWVudUljb249bnVsbH19XSksdH0oKSxjdD1mdW5jdGlvbih0KXtuKGksaHQpO3ZhciBlPWQoaSk7ZnVuY3Rpb24gaSh0KXt2YXIgcztyZXR1cm4gYSh0aGlzLGkpLChzPWUuY2FsbCh0aGlzLHQpKS5jdHg9dCxzLnc9dC53LHMuZHJhZ2dlZD0hMSxzLmdyYXBoaWNzPW5ldyBtKHMuY3R4KSxzLmV2ZW50TGlzdD1bXCJtb3VzZWRvd25cIixcIm1vdXNlbGVhdmVcIixcIm1vdXNlbW92ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaGVuZFwiXSxzLmNsaWVudFg9MCxzLmNsaWVudFk9MCxzLnN0YXJ0WD0wLHMuZW5kWD0wLHMuZHJhZ1g9MCxzLnN0YXJ0WT0wLHMuZW5kWT0wLHMuZHJhZ1k9MCxzLm1vdmVEaXJlY3Rpb249XCJub25lXCIsc31yZXR1cm4gcihpLFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10Lnh5UmF0aW9zLGE9dGhpcy53LHM9dGhpczt0aGlzLnh5UmF0aW9zPWksdGhpcy56b29tUmVjdD10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsMCwwLDApLHRoaXMuc2VsZWN0aW9uUmVjdD10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsMCwwLDApLHRoaXMuZ3JpZFJlY3Q9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIiksdGhpcy56b29tUmVjdC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXpvb20tcmVjdFwiKSx0aGlzLnNlbGVjdGlvblJlY3Qubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKSxhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh0aGlzLnpvb21SZWN0KSxhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh0aGlzLnNlbGVjdGlvblJlY3QpLFwieFwiPT09YS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGU/dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSh7bWluWDowLG1pblk6MCxtYXhYOmEuZ2xvYmFscy5ncmlkV2lkdGgsbWF4WTphLmdsb2JhbHMuZ3JpZEhlaWdodH0pLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKTpcInlcIj09PWEuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi50eXBlP3RoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoe21pblg6MCxtYXhYOmEuZ2xvYmFscy5ncmlkV2lkdGh9KS5vbihcImRyYWdtb3ZlXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJkcmFnZ2luZ1wiKSk6dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSgpLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKSx0aGlzLnByZXNlbGVjdGVkU2VsZWN0aW9uKCksdGhpcy5ob3ZlckFyZWE9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIlwiLmNvbmNhdChhLmdsb2JhbHMuY2hhcnRDbGFzcyxcIiAuYXBleGNoYXJ0cy1zdmdcIikpLHRoaXMuaG92ZXJBcmVhLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXpvb21hYmxlXCIpLHRoaXMuZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuaG92ZXJBcmVhLmFkZEV2ZW50TGlzdGVuZXIodCxzLnN2Z01vdXNlRXZlbnRzLmJpbmQocyxpKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zbERyYWdnYWJsZVJlY3QmJih0aGlzLnNsRHJhZ2dhYmxlUmVjdC5kcmFnZ2FibGUoITEpLHRoaXMuc2xEcmFnZ2FibGVSZWN0Lm9mZigpLHRoaXMuc2VsZWN0aW9uUmVjdC5vZmYoKSksdGhpcy5zZWxlY3Rpb25SZWN0PW51bGwsdGhpcy56b29tUmVjdD1udWxsLHRoaXMuZ3JpZFJlY3Q9bnVsbH19LHtrZXk6XCJzdmdNb3VzZUV2ZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcyxzPXRoaXMuY3R4LnRvb2xiYXIscj1pLmdsb2JhbHMuem9vbUVuYWJsZWQ/aS5jb25maWcuY2hhcnQuem9vbS50eXBlOmkuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi50eXBlLG89aS5jb25maWcuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQ7aWYoZS5zaGlmdEtleT8odGhpcy5zaGlmdFdhc1ByZXNzZWQ9ITAscy5lbmFibGVab29tUGFuRnJvbVRvb2xiYXIoXCJwYW5cIj09PW8/XCJ6b29tXCI6XCJwYW5cIikpOnRoaXMuc2hpZnRXYXNQcmVzc2VkJiYocy5lbmFibGVab29tUGFuRnJvbVRvb2xiYXIobyksdGhpcy5zaGlmdFdhc1ByZXNzZWQ9ITEpLGUudGFyZ2V0KXt2YXIgbixsPWUudGFyZ2V0LmNsYXNzTGlzdDtpZihlLnRhcmdldC5wYXJlbnROb2RlJiZudWxsIT09ZS50YXJnZXQucGFyZW50Tm9kZSYmKG49ZS50YXJnZXQucGFyZW50Tm9kZS5jbGFzc0xpc3QpLCEobC5jb250YWlucyhcImFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3RcIil8fGwuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIil8fGwuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpfHxuJiZuLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy10b29sYmFyXCIpKSl7aWYoYS5jbGllbnRYPVwidG91Y2htb3ZlXCI9PT1lLnR5cGV8fFwidG91Y2hzdGFydFwiPT09ZS50eXBlP2UudG91Y2hlc1swXS5jbGllbnRYOlwidG91Y2hlbmRcIj09PWUudHlwZT9lLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFg6ZS5jbGllbnRYLGEuY2xpZW50WT1cInRvdWNobW92ZVwiPT09ZS50eXBlfHxcInRvdWNoc3RhcnRcIj09PWUudHlwZT9lLnRvdWNoZXNbMF0uY2xpZW50WTpcInRvdWNoZW5kXCI9PT1lLnR5cGU/ZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZOmUuY2xpZW50WSxcIm1vdXNlZG93blwiPT09ZS50eXBlJiYxPT09ZS53aGljaCl7dmFyIGg9YS5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthLnN0YXJ0WD1hLmNsaWVudFgtaC5sZWZ0LGEuc3RhcnRZPWEuY2xpZW50WS1oLnRvcCxhLmRyYWdnZWQ9ITEsYS53Lmdsb2JhbHMubW91c2Vkb3duPSEwfWlmKChcIm1vdXNlbW92ZVwiPT09ZS50eXBlJiYxPT09ZS53aGljaHx8XCJ0b3VjaG1vdmVcIj09PWUudHlwZSkmJihhLmRyYWdnZWQ9ITAsaS5nbG9iYWxzLnBhbkVuYWJsZWQ/KGkuZ2xvYmFscy5zZWxlY3Rpb249bnVsbCxhLncuZ2xvYmFscy5tb3VzZWRvd24mJmEucGFuRHJhZ2dpbmcoe2NvbnRleHQ6YSx6b29tdHlwZTpyLHh5UmF0aW9zOnR9KSk6KGEudy5nbG9iYWxzLm1vdXNlZG93biYmaS5nbG9iYWxzLnpvb21FbmFibGVkfHxhLncuZ2xvYmFscy5tb3VzZWRvd24mJmkuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSYmKGEuc2VsZWN0aW9uPWEuc2VsZWN0aW9uRHJhd2luZyh7Y29udGV4dDphLHpvb210eXBlOnJ9KSkpLFwibW91c2V1cFwiPT09ZS50eXBlfHxcInRvdWNoZW5kXCI9PT1lLnR5cGV8fFwibW91c2VsZWF2ZVwiPT09ZS50eXBlKXt2YXIgYz1hLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Eudy5nbG9iYWxzLm1vdXNlZG93biYmKGEuZW5kWD1hLmNsaWVudFgtYy5sZWZ0LGEuZW5kWT1hLmNsaWVudFktYy50b3AsYS5kcmFnWD1NYXRoLmFicyhhLmVuZFgtYS5zdGFydFgpLGEuZHJhZ1k9TWF0aC5hYnMoYS5lbmRZLWEuc3RhcnRZKSwoaS5nbG9iYWxzLnpvb21FbmFibGVkfHxpLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCkmJmEuc2VsZWN0aW9uRHJhd24oe2NvbnRleHQ6YSx6b29tdHlwZTpyfSksaS5nbG9iYWxzLnBhbkVuYWJsZWQmJmkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmYS5kZWxheWVkUGFuU2Nyb2xsZWQoKSksaS5nbG9iYWxzLnpvb21FbmFibGVkJiZhLmhpZGVTZWxlY3Rpb25SZWN0KHRoaXMuc2VsZWN0aW9uUmVjdCksYS5kcmFnZ2VkPSExLGEudy5nbG9iYWxzLm1vdXNlZG93bj0hMX10aGlzLm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlKCl9fX19LHtrZXk6XCJtYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHRoaXMuc2VsZWN0aW9uUmVjdCl7dmFyIGU9dGhpcy5zZWxlY3Rpb25SZWN0Lm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZS53aWR0aD4wJiZlLmhlaWdodD4wJiZ0aGlzLnNsRHJhZ2dhYmxlUmVjdC5zZWxlY3RpemUoe3BvaW50czpcImwsIHJcIixwb2ludFNpemU6OCxwb2ludFR5cGU6XCJyZWN0XCJ9KS5yZXNpemUoe2NvbnN0cmFpbnQ6e21pblg6MCxtaW5ZOjAsbWF4WDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLG1heFk6dC5nbG9iYWxzLmdyaWRIZWlnaHR9fSkub24oXCJyZXNpemluZ1wiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwicmVzaXppbmdcIikpfX19LHtrZXk6XCJwcmVzZWxlY3RlZFNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy54eVJhdGlvcztpZighdC5nbG9iYWxzLnpvb21FbmFibGVkKWlmKHZvaWQgMCE9PXQuZ2xvYmFscy5zZWxlY3Rpb24mJm51bGwhPT10Lmdsb2JhbHMuc2VsZWN0aW9uKXRoaXMuZHJhd1NlbGVjdGlvblJlY3QodC5nbG9iYWxzLnNlbGVjdGlvbik7ZWxzZSBpZih2b2lkIDAhPT10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluJiZ2b2lkIDAhPT10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4KXt2YXIgaT0odC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbi10Lmdsb2JhbHMubWluWCkvZS54UmF0aW8sYT17eDppLHk6MCx3aWR0aDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLSh0Lmdsb2JhbHMubWF4WC10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4KS9lLnhSYXRpby1pLGhlaWdodDp0Lmdsb2JhbHMuZ3JpZEhlaWdodCx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHNlbGVjdGlvbkVuYWJsZWQ6ITB9O3RoaXMuZHJhd1NlbGVjdGlvblJlY3QoYSksdGhpcy5tYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZSgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24mJnQuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24odGhpcy5jdHgse3hheGlzOnttaW46dC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbixtYXg6dC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1heH0seWF4aXM6e319KX19fSx7a2V5OlwiZHJhd1NlbGVjdGlvblJlY3RcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LngsaT10LnksYT10LndpZHRoLHM9dC5oZWlnaHQscj10LnRyYW5zbGF0ZVgsbz12b2lkIDA9PT1yPzA6cixuPXQudHJhbnNsYXRlWSxsPXZvaWQgMD09PW4/MDpuLGg9dGhpcy53LGM9dGhpcy56b29tUmVjdCxkPXRoaXMuc2VsZWN0aW9uUmVjdDtpZih0aGlzLmRyYWdnZWR8fG51bGwhPT1oLmdsb2JhbHMuc2VsZWN0aW9uKXt2YXIgZz17dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK28rXCIsIFwiK2wrXCIpXCJ9O2guZ2xvYmFscy56b29tRW5hYmxlZCYmdGhpcy5kcmFnZ2VkJiYoYTwwJiYoYT0xKSxjLmF0dHIoe3g6ZSx5Omksd2lkdGg6YSxoZWlnaHQ6cyxmaWxsOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5maWxsLmNvbG9yLFwiZmlsbC1vcGFjaXR5XCI6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLmZpbGwub3BhY2l0eSxzdHJva2U6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS5jb2xvcixcInN0cm9rZS13aWR0aFwiOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5zdHJva2Uud2lkdGgsXCJzdHJva2Utb3BhY2l0eVwiOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5zdHJva2Uub3BhY2l0eX0pLG0uc2V0QXR0cnMoYy5ub2RlLGcpKSxoLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmKGQuYXR0cih7eDplLHk6aSx3aWR0aDphPjA/YTowLGhlaWdodDpzPjA/czowLGZpbGw6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLmZpbGwuY29sb3IsXCJmaWxsLW9wYWNpdHlcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZmlsbC5vcGFjaXR5LHN0cm9rZTpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS53aWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLmRhc2hBcnJheSxcInN0cm9rZS1vcGFjaXR5XCI6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS5vcGFjaXR5fSksbS5zZXRBdHRycyhkLm5vZGUsZykpfX19LHtrZXk6XCJoaWRlU2VsZWN0aW9uUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3QmJnQuYXR0cih7eDowLHk6MCx3aWR0aDowLGhlaWdodDowfSl9fSx7a2V5Olwic2VsZWN0aW9uRHJhd2luZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxpPXQuem9vbXR5cGUsYT10aGlzLncscz1lLHI9dGhpcy5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXMuc3RhcnRYLTEsbj1zLnN0YXJ0WSxsPSExLGg9ITEsYz1zLmNsaWVudFgtci5sZWZ0LW8sZD1zLmNsaWVudFktci50b3AtbixnPXt9O3JldHVybiBNYXRoLmFicyhjK28pPmEuZ2xvYmFscy5ncmlkV2lkdGg/Yz1hLmdsb2JhbHMuZ3JpZFdpZHRoLW86cy5jbGllbnRYLXIubGVmdDwwJiYoYz1vKSxvPnMuY2xpZW50WC1yLmxlZnQmJihsPSEwLGM9TWF0aC5hYnMoYykpLG4+cy5jbGllbnRZLXIudG9wJiYoaD0hMCxkPU1hdGguYWJzKGQpKSxnPVwieFwiPT09aT97eDpsP28tYzpvLHk6MCx3aWR0aDpjLGhlaWdodDphLmdsb2JhbHMuZ3JpZEhlaWdodH06XCJ5XCI9PT1pP3t4OjAseTpoP24tZDpuLHdpZHRoOmEuZ2xvYmFscy5ncmlkV2lkdGgsaGVpZ2h0OmR9Ont4Omw/by1jOm8seTpoP24tZDpuLHdpZHRoOmMsaGVpZ2h0OmR9LHMuZHJhd1NlbGVjdGlvblJlY3QoZykscy5zZWxlY3Rpb25EcmFnZ2luZyhcInJlc2l6aW5nXCIpLGd9fSx7a2V5Olwic2VsZWN0aW9uRHJhZ2dpbmdcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT10aGlzLncscz10aGlzLnh5UmF0aW9zLHI9dGhpcy5zZWxlY3Rpb25SZWN0LG89MDtcInJlc2l6aW5nXCI9PT10JiYobz0zMCk7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQoci5ub2RlLmdldEF0dHJpYnV0ZSh0KSl9LGw9e3g6bihcInhcIikseTpuKFwieVwiKSx3aWR0aDpuKFwid2lkdGhcIiksaGVpZ2h0Om4oXCJoZWlnaHRcIil9O2EuZ2xvYmFscy5zZWxlY3Rpb249bCxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uJiZhLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmKGNsZWFyVGltZW91dCh0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25SZXNpemVUaW1lciksdGhpcy53Lmdsb2JhbHMuc2VsZWN0aW9uUmVzaXplVGltZXI9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIHQ9aS5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXIubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXt4YXhpczp7bWluOmEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rKGUubGVmdC10LmxlZnQpKnMueFJhdGlvLG1heDphLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluKyhlLnJpZ2h0LXQubGVmdCkqcy54UmF0aW99LHlheGlzOnttaW46YS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbisodC5ib3R0b20tZS5ib3R0b20pKnMueVJhdGlvWzBdLG1heDphLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4LShlLnRvcC10LnRvcCkqcy55UmF0aW9bMF19fTthLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKGkuY3R4LG8pLGEuY29uZmlnLmNoYXJ0LmJydXNoLmVuYWJsZWQmJnZvaWQgMCE9PWEuY29uZmlnLmNoYXJ0LmV2ZW50cy5icnVzaFNjcm9sbGVkJiZhLmNvbmZpZy5jaGFydC5ldmVudHMuYnJ1c2hTY3JvbGxlZChpLmN0eCxvKX0pLG8pKX19LHtrZXk6XCJzZWxlY3Rpb25EcmF3blwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxpPXQuem9vbXR5cGUsYT10aGlzLncscz1lLHI9dGhpcy54eVJhdGlvcyxvPXRoaXMuY3R4LnRvb2xiYXI7aWYocy5zdGFydFg+cy5lbmRYKXt2YXIgbj1zLnN0YXJ0WDtzLnN0YXJ0WD1zLmVuZFgscy5lbmRYPW59aWYocy5zdGFydFk+cy5lbmRZKXt2YXIgbD1zLnN0YXJ0WTtzLnN0YXJ0WT1zLmVuZFkscy5lbmRZPWx9dmFyIGg9dm9pZCAwLGM9dm9pZCAwO2EuZ2xvYmFscy5pc1JhbmdlQmFyPyhoPWEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rcy5zdGFydFgqci5pbnZlcnRlZFlSYXRpbyxjPWEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rcy5lbmRYKnIuaW52ZXJ0ZWRZUmF0aW8pOihoPWEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rcy5zdGFydFgqci54UmF0aW8sYz1hLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluK3MuZW5kWCpyLnhSYXRpbyk7dmFyIGQ9W10sZz1bXTtpZihhLmNvbmZpZy55YXhpcy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2QucHVzaChhLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5uaWNlTWF4LXIueVJhdGlvW2VdKnMuc3RhcnRZKSxnLnB1c2goYS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ubmljZU1heC1yLnlSYXRpb1tlXSpzLmVuZFkpfSkpLHMuZHJhZ2dlZCYmKHMuZHJhZ1g+MTB8fHMuZHJhZ1k+MTApJiZoIT09YylpZihhLmdsb2JhbHMuem9vbUVuYWJsZWQpe3ZhciB1PXguY2xvbmUoYS5nbG9iYWxzLmluaXRpYWxDb25maWcueWF4aXMpLHA9eC5jbG9uZShhLmdsb2JhbHMuaW5pdGlhbENvbmZpZy54YXhpcyk7aWYoYS5nbG9iYWxzLnpvb21lZD0hMCxhLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihoPU1hdGguZmxvb3IoaCksYz1NYXRoLmZsb29yKGMpLGg8MSYmKGg9MSxjPWEuZ2xvYmFscy5kYXRhUG9pbnRzKSxjLWg8MiYmKGM9aCsxKSksXCJ4eVwiIT09aSYmXCJ4XCIhPT1pfHwocD17bWluOmgsbWF4OmN9KSxcInh5XCIhPT1pJiZcInlcIiE9PWl8fHUuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt1W2VdLm1pbj1nW2VdLHVbZV0ubWF4PWRbZV19KSksYS5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcyl7dmFyIGY9bmV3IF8ocy5jdHgpO3U9Zi5hdXRvU2NhbGVZKHMuY3R4LHUse3hheGlzOnB9KX1pZihvKXt2YXIgYj1vLmdldEJlZm9yZVpvb21SYW5nZShwLHUpO2ImJihwPWIueGF4aXM/Yi54YXhpczpwLHU9Yi55YXhpcz9iLnlheGlzOnUpfXZhciB2PXt4YXhpczpwfTthLmNvbmZpZy5jaGFydC5ncm91cHx8KHYueWF4aXM9dSkscy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh2LCExLHMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQmJm8uem9vbUNhbGxiYWNrKHAsdSl9ZWxzZSBpZihhLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCl7dmFyIG0seT1udWxsO209e21pbjpoLG1heDpjfSxcInh5XCIhPT1pJiZcInlcIiE9PWl8fCh5PXguY2xvbmUoYS5jb25maWcueWF4aXMpKS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3lbZV0ubWluPWdbZV0seVtlXS5tYXg9ZFtlXX0pKSxhLmdsb2JhbHMuc2VsZWN0aW9uPXMuc2VsZWN0aW9uLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24mJmEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24ocy5jdHgse3hheGlzOm0seWF4aXM6eX0pfX19LHtrZXk6XCJwYW5EcmFnZ2luZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxpPXRoaXMudyxhPWU7aWYodm9pZCAwIT09aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi54KXt2YXIgcz1pLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLngtYS5jbGllbnRYLHI9aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi55LWEuY2xpZW50WTtNYXRoLmFicyhzKT5NYXRoLmFicyhyKSYmcz4wP3RoaXMubW92ZURpcmVjdGlvbj1cImxlZnRcIjpNYXRoLmFicyhzKT5NYXRoLmFicyhyKSYmczwwP3RoaXMubW92ZURpcmVjdGlvbj1cInJpZ2h0XCI6TWF0aC5hYnMocik+TWF0aC5hYnMocykmJnI+MD90aGlzLm1vdmVEaXJlY3Rpb249XCJ1cFwiOk1hdGguYWJzKHIpPk1hdGguYWJzKHMpJiZyPDAmJih0aGlzLm1vdmVEaXJlY3Rpb249XCJkb3duXCIpfWkuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb249e3g6YS5jbGllbnRYLHk6YS5jbGllbnRZfTt2YXIgbz1pLmdsb2JhbHMuaXNSYW5nZUJhcj9pLmdsb2JhbHMubWluWTppLmdsb2JhbHMubWluWCxuPWkuZ2xvYmFscy5pc1JhbmdlQmFyP2kuZ2xvYmFscy5tYXhZOmkuZ2xvYmFscy5tYXhYO2kuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8YS5wYW5TY3JvbGxlZChvLG4pfX0se2tleTpcImRlbGF5ZWRQYW5TY3JvbGxlZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLm1pblgsaT10Lmdsb2JhbHMubWF4WCxhPSh0Lmdsb2JhbHMubWF4WC10Lmdsb2JhbHMubWluWCkvMjtcImxlZnRcIj09PXRoaXMubW92ZURpcmVjdGlvbj8oZT10Lmdsb2JhbHMubWluWCthLGk9dC5nbG9iYWxzLm1heFgrYSk6XCJyaWdodFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uJiYoZT10Lmdsb2JhbHMubWluWC1hLGk9dC5nbG9iYWxzLm1heFgtYSksZT1NYXRoLmZsb29yKGUpLGk9TWF0aC5mbG9vcihpKSx0aGlzLnVwZGF0ZVNjcm9sbGVkQ2hhcnQoe3hheGlzOnttaW46ZSxtYXg6aX19LGUsaSl9fSx7a2V5OlwicGFuU2Nyb2xsZWRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMueHlSYXRpb3Mscz14LmNsb25lKGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKSxyPWEueFJhdGlvLG89aS5nbG9iYWxzLm1pblgsbj1pLmdsb2JhbHMubWF4WDtpLmdsb2JhbHMuaXNSYW5nZUJhciYmKHI9YS5pbnZlcnRlZFlSYXRpbyxvPWkuZ2xvYmFscy5taW5ZLG49aS5nbG9iYWxzLm1heFkpLFwibGVmdFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uPyh0PW8raS5nbG9iYWxzLmdyaWRXaWR0aC8xNSpyLGU9bitpLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KnIpOlwicmlnaHRcIj09PXRoaXMubW92ZURpcmVjdGlvbiYmKHQ9by1pLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KnIsZT1uLWkuZ2xvYmFscy5ncmlkV2lkdGgvMTUqciksaS5nbG9iYWxzLmlzUmFuZ2VCYXJ8fCh0PGkuZ2xvYmFscy5pbml0aWFsTWluWHx8ZT5pLmdsb2JhbHMuaW5pdGlhbE1heFgpJiYodD1vLGU9bik7dmFyIGw9e21pbjp0LG1heDplfTtpLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzJiYocz1uZXcgXyh0aGlzLmN0eCkuYXV0b1NjYWxlWSh0aGlzLmN0eCxzLHt4YXhpczpsfSkpO3ZhciBoPXt4YXhpczp7bWluOnQsbWF4OmV9fTtpLmNvbmZpZy5jaGFydC5ncm91cHx8KGgueWF4aXM9cyksdGhpcy51cGRhdGVTY3JvbGxlZENoYXJ0KGgsdCxlKX19LHtrZXk6XCJ1cGRhdGVTY3JvbGxlZENoYXJ0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudzt0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHQsITEsITEpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCYmYS5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkKHRoaXMuY3R4LHt4YXhpczp7bWluOmUsbWF4Oml9fSl9fV0pLGl9KCksZHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eH1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0TmVhcmVzdFZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaG92ZXJBcmVhLGk9dC5lbEdyaWQsYT10LmNsaWVudFgscz10LmNsaWVudFkscj10aGlzLncsbz1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49by53aWR0aCxsPW8uaGVpZ2h0LGg9bi8oci5nbG9iYWxzLmRhdGFQb2ludHMtMSksYz1sL3IuZ2xvYmFscy5kYXRhUG9pbnRzLGQ9dGhpcy5oYXNCYXJzKCk7IXIuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIWR8fHIuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8KGg9bi9yLmdsb2JhbHMuZGF0YVBvaW50cyk7dmFyIGc9YS1vLmxlZnQtci5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLHU9cy1vLnRvcDtnPDB8fHU8MHx8Zz5ufHx1Pmw/KGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXpvb21cIiksZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctcGFuXCIpKTpyLmdsb2JhbHMuem9vbUVuYWJsZWQ/KGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXBhblwiKSxlLmNsYXNzTGlzdC5hZGQoXCJob3ZlcmluZy16b29tXCIpKTpyLmdsb2JhbHMucGFuRW5hYmxlZCYmKGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXpvb21cIiksZS5jbGFzc0xpc3QuYWRkKFwiaG92ZXJpbmctcGFuXCIpKTt2YXIgcD1NYXRoLnJvdW5kKGcvaCksZj1NYXRoLmZsb29yKHUvYyk7ZCYmIXIuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHA9TWF0aC5jZWlsKGcvaCkscC09MSk7dmFyIGI9bnVsbCx2PW51bGwsbT1yLmdsb2JhbHMuc2VyaWVzWHZhbHVlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHguaXNOdW1iZXIodCl9KSl9KSkseT1yLmdsb2JhbHMuc2VyaWVzWXZhbHVlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHguaXNOdW1iZXIodCl9KSl9KSk7aWYoci5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciB3PXRoaXMudHRDdHguZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaz1nKih3LndpZHRoL24pLEE9dSoody5oZWlnaHQvbCk7Yj0odj10aGlzLmNsb3Nlc3RJbk11bHRpQXJyYXkoayxBLG0seSkpLmluZGV4LHA9di5qLG51bGwhPT1iJiYobT1yLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tiXSxwPSh2PXRoaXMuY2xvc2VzdEluQXJyYXkoayxtKSkuaW5kZXgpfXJldHVybiByLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1udWxsPT09Yj8tMTpiLCghcHx8cDwxKSYmKHA9MCksci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9yLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1mOnIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PXAse2NhcHR1cmVkU2VyaWVzOmIsajpyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2Y6cCxob3Zlclg6Zyxob3Zlclk6dX19fSx7a2V5OlwiY2xvc2VzdEluTXVsdGlBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPTAsbz1udWxsLG49LTE7cy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MT9yPXRoaXMuZ2V0Rmlyc3RBY3RpdmVYQXJyYXkoaSk6bz0wO3ZhciBsPWlbcl1bMF0saD1NYXRoLmFicyh0LWwpO2lmKGkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3ZhciBhPU1hdGguYWJzKHQtZSk7YTw9aCYmKGg9YSxuPWkpfSkpfSkpLC0xIT09bil7dmFyIGM9YVtyXVtuXSxkPU1hdGguYWJzKGUtYyk7bz1yLGEuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgYT1NYXRoLmFicyhlLXRbbl0pO2E8PWQmJihkPWEsbz1pKX0pKX1yZXR1cm57aW5kZXg6byxqOm59fX0se2tleTpcImdldEZpcnN0QWN0aXZlWEFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTAsYT10Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+MD9lOi0xfSkpLHM9MDtzPGEubGVuZ3RoO3MrKylpZigtMSE9PWFbc10mJi0xPT09ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihzKSYmLTE9PT1lLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHMpKXtpPWFbc107YnJlYWt9cmV0dXJuIGl9fSx7a2V5OlwiY2xvc2VzdEluQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1lWzBdLGE9bnVsbCxzPU1hdGguYWJzKHQtaSkscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1NYXRoLmFicyh0LWVbcl0pO288cyYmKHM9byxhPXIpfXJldHVybntpbmRleDphfX19LHtrZXk6XCJpc1hvdmVybGFwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9W10saT10aGlzLncuZ2xvYmFscy5zZXJpZXNYLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXRbMF19KSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIGE9MDthPGkubGVuZ3RoLTE7YSsrKXZvaWQgMCE9PWlbYV1bdF0mJnZvaWQgMCE9PWlbYSsxXVt0XSYmaVthXVt0XSE9PWlbYSsxXVt0XSYmZS5wdXNoKFwidW5FcXVhbFwiKTtyZXR1cm4gMD09PWUubGVuZ3RofX0se2tleTpcImlzSW5pdGlhbFNlcmllc1NhbWVMZW5cIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD0hMCxlPXRoaXMudy5nbG9iYWxzLmluaXRpYWxTZXJpZXMsaT0wO2k8ZS5sZW5ndGgtMTtpKyspaWYoZVtpXS5kYXRhLmxlbmd0aCE9PWVbaSsxXS5kYXRhLmxlbmd0aCl7dD0hMTticmVha31yZXR1cm4gdH19LHtrZXk6XCJnZXRCYXJzSGVpZ2h0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHUodCkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UuZ2V0QkJveCgpLmhlaWdodH0pLDApfX0se2tleTpcImdldEVsTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0P3RoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCA+ICpcIikpOnRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAgPiAqXCIpfX0se2tleTpcImdldEFsbE1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIik7KHQ9dSh0KSkuc29ydCgoZnVuY3Rpb24odCxlKXt2YXIgaT1OdW1iZXIodC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSksYT1OdW1iZXIoZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSk7cmV0dXJuIGE8aT8xOmE+aT8tMTowfSkpO3ZhciBlPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UucHVzaCh0LnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1tYXJrZXJcIikpfSkpLGV9fSx7a2V5OlwiaGFzTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldEVsTWFya2Vycyh0KS5sZW5ndGg+MH19LHtrZXk6XCJnZXRFbEJhcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzLCAgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzLCAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcywgLmFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzXCIpfX0se2tleTpcImhhc0JhcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEVsQmFycygpLmxlbmd0aD4wfX0se2tleTpcImdldEhvdmVyTWFya2VyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9ZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVt0XStlLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLGl9fSx7a2V5OlwidG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3Vwc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMudHRDdHg7MD09PWkuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcy5sZW5ndGgmJihpLmFsbFRvb2x0aXBTZXJpZXNHcm91cHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpKTtmb3IodmFyIGE9aS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzLHM9MDtzPGEubGVuZ3RoO3MrKylcImVuYWJsZVwiPT09dD8oYVtzXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksYVtzXS5zdHlsZS5kaXNwbGF5PWUuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSk6KGFbc10uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLGFbc10uc3R5bGUuZGlzcGxheT1cIm5vbmVcIil9fV0pLHR9KCksZ3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuY3R4PWUuY3R4LHRoaXMudHRDdHg9ZSx0aGlzLnRvb2x0aXBVdGlsPW5ldyBkdChlKX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1Nlcmllc1RleHRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zaGFyZWQsaT12b2lkIDA9PT1lfHxlLGE9dC50dEl0ZW1zLHM9dC5pLHI9dm9pZCAwPT09cz8wOnMsbz10Lmosbj12b2lkIDA9PT1vP251bGw6byxsPXQueTEsaD10LnkyLGM9dC5lLGQ9dGhpcy53O3ZvaWQgMCE9PWQuY29uZmlnLnRvb2x0aXAuY3VzdG9tP3RoaXMuaGFuZGxlQ3VzdG9tVG9vbHRpcCh7aTpyLGo6bix5MTpsLHkyOmgsdzpkfSk6dGhpcy50b2dnbGVBY3RpdmVJbmFjdGl2ZVNlcmllcyhpKTt2YXIgZz10aGlzLmdldFZhbHVlc1RvUHJpbnQoe2k6cixqOm59KTt0aGlzLnByaW50TGFiZWxzKHtpOnIsajpuLHZhbHVlczpnLHR0SXRlbXM6YSxzaGFyZWQ6aSxlOmN9KTt2YXIgdT10aGlzLnR0Q3R4LmdldEVsVG9vbHRpcCgpO3RoaXMudHRDdHgudG9vbHRpcFJlY3QudHRXaWR0aD11LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLHRoaXMudHRDdHgudG9vbHRpcFJlY3QudHRIZWlnaHQ9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9fSx7a2V5OlwicHJpbnRMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaSxhPXRoaXMscz10Lmkscj10Lmosbz10LnZhbHVlcyxuPXQudHRJdGVtcyxsPXQuc2hhcmVkLGg9dC5lLGM9dGhpcy53LGQ9W10sZz1mdW5jdGlvbih0KXtyZXR1cm4gYy5nbG9iYWxzLnNlcmllc0dvYWxzW3RdJiZjLmdsb2JhbHMuc2VyaWVzR29hbHNbdF1bcl0mJkFycmF5LmlzQXJyYXkoYy5nbG9iYWxzLnNlcmllc0dvYWxzW3RdW3JdKX0sdT1vLnhWYWwscD1vLnpWYWwsZj1vLnhBeGlzVFRWYWwseD1cIlwiLGI9Yy5nbG9iYWxzLmNvbG9yc1tzXTtudWxsIT09ciYmYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkJiYoYj1jLmdsb2JhbHMuY29sb3JzW3JdKTtmb3IodmFyIHY9ZnVuY3Rpb24odCxvKXt2YXIgdj1hLmdldEZvcm1hdHRlcnMocyk7eD1hLmdldFNlcmllc05hbWUoe2ZuOnYueUxiVGl0bGVGb3JtYXR0ZXIsaW5kZXg6cyxzZXJpZXNJbmRleDpzLGo6cn0pLFwidHJlZW1hcFwiPT09Yy5jb25maWcuY2hhcnQudHlwZSYmKHg9di55TGJUaXRsZUZvcm1hdHRlcihTdHJpbmcoYy5jb25maWcuc2VyaWVzW3NdLmRhdGFbcl0ueCkse3NlcmllczpjLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3OmN9KSk7dmFyIG09Yy5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXI/bzp0O2lmKGMuZ2xvYmFscy5heGlzQ2hhcnRzKXt2YXIgeT1mdW5jdGlvbih0KXt2YXIgZSxpLGEscztyZXR1cm4gYy5nbG9iYWxzLmlzUmFuZ2VEYXRhP3YueUxiRm9ybWF0dGVyKG51bGw9PT0oZT1jLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydCl8fHZvaWQgMD09PWV8fG51bGw9PT0oaT1lW3RdKXx8dm9pZCAwPT09aT92b2lkIDA6aVtyXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0LHNlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6cix3OmN9KStcIiAtIFwiK3YueUxiRm9ybWF0dGVyKG51bGw9PT0oYT1jLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQpfHx2b2lkIDA9PT1hfHxudWxsPT09KHM9YVt0XSl8fHZvaWQgMD09PXM/dm9pZCAwOnNbcl0se3NlcmllczpjLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpyLHc6Y30pOnYueUxiRm9ybWF0dGVyKGMuZ2xvYmFscy5zZXJpZXNbdF1bcl0se3NlcmllczpjLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6cix3OmN9KX07aWYobCl2PWEuZ2V0Rm9ybWF0dGVycyhtKSx4PWEuZ2V0U2VyaWVzTmFtZSh7Zm46di55TGJUaXRsZUZvcm1hdHRlcixpbmRleDptLHNlcmllc0luZGV4OnMsajpyfSksYj1jLmdsb2JhbHMuY29sb3JzW21dLGk9eShtKSxnKG0pJiYoZD1jLmdsb2JhbHMuc2VyaWVzR29hbHNbbV1bcl0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm57YXR0cnM6dCx2YWw6di55TGJGb3JtYXR0ZXIodC52YWx1ZSx7c2VyaWVzSW5kZXg6bSxkYXRhUG9pbnRJbmRleDpyLHc6Y30pfX0pKSk7ZWxzZXt2YXIgdyxrPW51bGw9PWh8fG51bGw9PT0odz1oLnRhcmdldCl8fHZvaWQgMD09PXc/dm9pZCAwOncuZ2V0QXR0cmlidXRlKFwiZmlsbFwiKTtrJiYoYj0tMSE9PWsuaW5kZXhPZihcInVybFwiKT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGsuc3Vic3RyKDQpLnNsaWNlKDAsLTEpKS5jaGlsZE5vZGVzWzBdLmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKTprKSxpPXkocyksZyhzKSYmQXJyYXkuaXNBcnJheShjLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0pJiYoZD1jLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm57YXR0cnM6dCx2YWw6di55TGJGb3JtYXR0ZXIodC52YWx1ZSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6Y30pfX0pKSl9fW51bGw9PT1yJiYoaT12LnlMYkZvcm1hdHRlcihjLmdsb2JhbHMuc2VyaWVzW3NdLGUoZSh7fSxjKSx7fSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpzfSkpKSxhLkRPTUhhbmRsaW5nKHtpOnMsdDptLGo6cix0dEl0ZW1zOm4sdmFsdWVzOnt2YWw6aSxnb2FsVmFsczpkLHhWYWw6dSx4QXhpc1RUVmFsOmYselZhbDpwfSxzZXJpZXNOYW1lOngsc2hhcmVkOmwscENvbG9yOmJ9KX0sbT0wLHk9Yy5nbG9iYWxzLnNlcmllcy5sZW5ndGgtMTttPGMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO20rKyx5LS0pdihtLHkpfX0se2tleTpcImdldEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMudyxhPWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdO3JldHVybiB2b2lkIDAhPT1pLmdsb2JhbHMudHRWYWw/QXJyYXkuaXNBcnJheShpLmdsb2JhbHMudHRWYWwpPyhhPWkuZ2xvYmFscy50dFZhbFt0XSYmaS5nbG9iYWxzLnR0VmFsW3RdLmZvcm1hdHRlcixlPWkuZ2xvYmFscy50dFZhbFt0XSYmaS5nbG9iYWxzLnR0VmFsW3RdLnRpdGxlJiZpLmdsb2JhbHMudHRWYWxbdF0udGl0bGUuZm9ybWF0dGVyKTooYT1pLmdsb2JhbHMudHRWYWwuZm9ybWF0dGVyLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuZ2xvYmFscy50dFZhbC50aXRsZS5mb3JtYXR0ZXImJihlPWkuZ2xvYmFscy50dFZhbC50aXRsZS5mb3JtYXR0ZXIpKTplPWkuY29uZmlnLnRvb2x0aXAueS50aXRsZS5mb3JtYXR0ZXIsXCJmdW5jdGlvblwiIT10eXBlb2YgYSYmKGE9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0/aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF06ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiYoZT1mdW5jdGlvbih0KXtyZXR1cm4gdH0pLHt5TGJGb3JtYXR0ZXI6YSx5TGJUaXRsZUZvcm1hdHRlcjplfX19LHtrZXk6XCJnZXRTZXJpZXNOYW1lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5mbixpPXQuaW5kZXgsYT10LnNlcmllc0luZGV4LHM9dC5qLHI9dGhpcy53O3JldHVybiBlKFN0cmluZyhyLmdsb2JhbHMuc2VyaWVzTmFtZXNbaV0pLHtzZXJpZXM6ci5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OnMsdzpyfSl9fSx7a2V5OlwiRE9NSGFuZGxpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt0Lmk7dmFyIGU9dC50LGk9dC5qLGE9dC50dEl0ZW1zLHM9dC52YWx1ZXMscj10LnNlcmllc05hbWUsbz10LnNoYXJlZCxuPXQucENvbG9yLGw9dGhpcy53LGg9dGhpcy50dEN0eCxjPXMudmFsLGQ9cy5nb2FsVmFscyxnPXMueFZhbCx1PXMueEF4aXNUVFZhbCxwPXMuelZhbCxmPW51bGw7Zj1hW2VdLmNoaWxkcmVuLGwuY29uZmlnLnRvb2x0aXAuZmlsbFNlcmllc0NvbG9yJiYoYVtlXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9bixmWzBdLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpLGguc2hvd1Rvb2x0aXBUaXRsZSYmKG51bGw9PT1oLnRvb2x0aXBUaXRsZSYmKGgudG9vbHRpcFRpdGxlPWwuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlXCIpKSxoLnRvb2x0aXBUaXRsZS5pbm5lckhUTUw9ZyksaC5pc1hBeGlzVG9vbHRpcEVuYWJsZWQmJihoLnhheGlzVG9vbHRpcFRleHQuaW5uZXJIVE1MPVwiXCIhPT11P3U6Zyk7dmFyIHg9YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktbGFiZWxcIik7eCYmKHguaW5uZXJIVE1MPXJ8fFwiXCIpO3ZhciBiPWFbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlXCIpO2ImJihiLmlubmVySFRNTD12b2lkIDAhPT1jP2M6XCJcIiksZlswXSYmZlswXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyXCIpJiYobC5jb25maWcudG9vbHRpcC5tYXJrZXIuZmlsbENvbG9ycyYmQXJyYXkuaXNBcnJheShsLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzKSYmKG49bC5jb25maWcudG9vbHRpcC5tYXJrZXIuZmlsbENvbG9yc1tlXSksZlswXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9biksbC5jb25maWcudG9vbHRpcC5tYXJrZXIuc2hvd3x8KGZbMF0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIik7dmFyIHY9YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsXCIpLG09YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlXCIpO2lmKGQubGVuZ3RoJiZsLmdsb2JhbHMuc2VyaWVzR29hbHNbZV0pe3ZhciB5PWZ1bmN0aW9uKCl7dmFyIHQ9XCI8ZGl2ID5cIixlPVwiPGRpdj5cIjtkLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7dCs9JyA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleFwiPjxzcGFuIGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogJy5jb25jYXQoaS5hdHRycy5zdHJva2VDb2xvciwnOyBoZWlnaHQ6IDNweDsgYm9yZGVyLXJhZGl1czogMDsgdG9wOiA1cHg7XCI+PC9zcGFuPiAnKS5jb25jYXQoaS5hdHRycy5uYW1lLFwiPC9kaXY+XCIpLGUrPVwiPGRpdj5cIi5jb25jYXQoaS52YWwsXCI8L2Rpdj5cIil9KSksdi5pbm5lckhUTUw9dCtcIjwvZGl2PlwiLG0uaW5uZXJIVE1MPWUrXCI8L2Rpdj5cIn07bz9sLmdsb2JhbHMuc2VyaWVzR29hbHNbZV1baV0mJkFycmF5LmlzQXJyYXkobC5nbG9iYWxzLnNlcmllc0dvYWxzW2VdW2ldKT95KCk6KHYuaW5uZXJIVE1MPVwiXCIsbS5pbm5lckhUTUw9XCJcIik6eSgpfWVsc2Ugdi5pbm5lckhUTUw9XCJcIixtLmlubmVySFRNTD1cIlwiO251bGwhPT1wJiYoYVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotbGFiZWxcIikuaW5uZXJIVE1MPWwuY29uZmlnLnRvb2x0aXAuei50aXRsZSxhW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZVwiKS5pbm5lckhUTUw9dm9pZCAwIT09cD9wOlwiXCIpO28mJmZbMF0mJihudWxsPT1jfHxsLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xfHxsLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xP2ZbMF0ucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiOmZbMF0ucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PWwuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSl9fSx7a2V5OlwidG9nZ2xlQWN0aXZlSW5hY3RpdmVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7aWYodCl0aGlzLnRvb2x0aXBVdGlsLnRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMoXCJlbmFibGVcIik7ZWxzZXt0aGlzLnRvb2x0aXBVdGlsLnRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMoXCJkaXNhYmxlXCIpO3ZhciBpPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cFwiKTtpJiYoaS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksaS5zdHlsZS5kaXNwbGF5PWUuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSl9fX0se2tleTpcImdldFZhbHVlc1RvUHJpbnRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LmosYT10aGlzLncscz10aGlzLmN0eC5zZXJpZXMuZmlsdGVyZWRTZXJpZXNYKCkscj1cIlwiLG89XCJcIixuPW51bGwsbD1udWxsLGg9e3NlcmllczphLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OmF9LGM9YS5nbG9iYWxzLnR0WkZvcm1hdHRlcjtudWxsPT09aT9sPWEuZ2xvYmFscy5zZXJpZXNbZV06YS5nbG9iYWxzLmlzWE51bWVyaWMmJlwidHJlZW1hcFwiIT09YS5jb25maWcuY2hhcnQudHlwZT8ocj1zW2VdW2ldLDA9PT1zW2VdLmxlbmd0aCYmKHI9c1t0aGlzLnRvb2x0aXBVdGlsLmdldEZpcnN0QWN0aXZlWEFycmF5KHMpXVtpXSkpOnI9dm9pZCAwIT09YS5nbG9iYWxzLmxhYmVsc1tpXT9hLmdsb2JhbHMubGFiZWxzW2ldOlwiXCI7dmFyIGQ9cjthLmdsb2JhbHMuaXNYTnVtZXJpYyYmXCJkYXRldGltZVwiPT09YS5jb25maWcueGF4aXMudHlwZT9yPW5ldyBNKHRoaXMuY3R4KS54TGFiZWxGb3JtYXQoYS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyLGQsZCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmN0eCkuZm9ybWF0RGF0ZSx3OnRoaXMud30pOnI9YS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9hLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXShkLGgpOmEuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIoZCxoKTtyZXR1cm4gdm9pZCAwIT09YS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlciYmKHI9YS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyKGQsaCkpLGEuZ2xvYmFscy5zZXJpZXNaLmxlbmd0aD4wJiZhLmdsb2JhbHMuc2VyaWVzWltlXS5sZW5ndGg+MCYmKG49YyhhLmdsb2JhbHMuc2VyaWVzWltlXVtpXSxhKSksbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlcj9hLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyKGQsaCk6cix7dmFsOkFycmF5LmlzQXJyYXkobCk/bC5qb2luKFwiIFwiKTpsLHhWYWw6QXJyYXkuaXNBcnJheShyKT9yLmpvaW4oXCIgXCIpOnIseEF4aXNUVFZhbDpBcnJheS5pc0FycmF5KG8pP28uam9pbihcIiBcIik6byx6VmFsOm59fX0se2tleTpcImhhbmRsZUN1c3RvbVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LmosYT10LnkxLHM9dC55MixyPXQudyxvPXRoaXMudHRDdHguZ2V0RWxUb29sdGlwKCksbj1yLmNvbmZpZy50b29sdGlwLmN1c3RvbTtBcnJheS5pc0FycmF5KG4pJiZuW2VdJiYobj1uW2VdKSxvLmlubmVySFRNTD1uKHtjdHg6dGhpcy5jdHgsc2VyaWVzOnIuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHkxOmEseTI6cyx3OnJ9KX19XSksdH0oKSx1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eCx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJtb3ZlWENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxpPXRoaXMudHRDdHgsYT10aGlzLncscz1pLmdldEVsWENyb3NzaGFpcnMoKSxyPXQtaS54Y3Jvc3NoYWlyc1dpZHRoLzIsbz1hLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkubGVuZ3RoO2lmKG51bGwhPT1lJiYocj1hLmdsb2JhbHMuZ3JpZFdpZHRoL28qZSksbnVsbD09PXN8fGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fChzLnNldEF0dHJpYnV0ZShcInhcIixyKSxzLnNldEF0dHJpYnV0ZShcIngxXCIscikscy5zZXRBdHRyaWJ1dGUoXCJ4MlwiLHIpLHMuc2V0QXR0cmlidXRlKFwieTJcIixhLmdsb2JhbHMuZ3JpZEhlaWdodCkscy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIikpLHI8MCYmKHI9MCkscj5hLmdsb2JhbHMuZ3JpZFdpZHRoJiYocj1hLmdsb2JhbHMuZ3JpZFdpZHRoKSxpLmlzWEF4aXNUb29sdGlwRW5hYmxlZCl7dmFyIG49cjtcInRpY2tXaWR0aFwiIT09YS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCYmXCJiYXJXaWR0aFwiIT09YS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aHx8KG49citpLnhjcm9zc2hhaXJzV2lkdGgvMiksdGhpcy5tb3ZlWEF4aXNUb29sdGlwKG4pfX19LHtrZXk6XCJtb3ZlWUNyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnR0Q3R4O251bGwhPT1lLnljcm9zc2hhaXJzJiZtLnNldEF0dHJzKGUueWNyb3NzaGFpcnMse3kxOnQseTI6dH0pLG51bGwhPT1lLnljcm9zc2hhaXJzSGlkZGVuJiZtLnNldEF0dHJzKGUueWNyb3NzaGFpcnNIaWRkZW4se3kxOnQseTI6dH0pfX0se2tleTpcIm1vdmVYQXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLnR0Q3R4O2lmKG51bGwhPT1pLnhheGlzVG9vbHRpcCYmMCE9PWkueGNyb3NzaGFpcnNXaWR0aCl7aS54YXhpc1Rvb2x0aXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpO3ZhciBhPWkueGF4aXNPZmZZK2UuY29uZmlnLnhheGlzLnRvb2x0aXAub2Zmc2V0WStlLmdsb2JhbHMudHJhbnNsYXRlWSsxK2UuY29uZmlnLnhheGlzLm9mZnNldFk7aWYodC09aS54YXhpc1Rvb2x0aXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgvMiwhaXNOYU4odCkpe3QrPWUuZ2xvYmFscy50cmFuc2xhdGVYO3ZhciBzO3M9bmV3IG0odGhpcy5jdHgpLmdldFRleHRSZWN0cyhpLnhheGlzVG9vbHRpcFRleHQuaW5uZXJIVE1MKSxpLnhheGlzVG9vbHRpcFRleHQuc3R5bGUubWluV2lkdGg9cy53aWR0aCtcInB4XCIsaS54YXhpc1Rvb2x0aXAuc3R5bGUubGVmdD10K1wicHhcIixpLnhheGlzVG9vbHRpcC5zdHlsZS50b3A9YStcInB4XCJ9fX19LHtrZXk6XCJtb3ZlWUF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy50dEN0eDtudWxsPT09aS55YXhpc1RURWxzJiYoaS55YXhpc1RURWxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXBcIikpO3ZhciBhPXBhcnNlSW50KGkueWNyb3NzaGFpcnNIaWRkZW4uZ2V0QXR0cmlidXRlKFwieTFcIiksMTApLHM9ZS5nbG9iYWxzLnRyYW5zbGF0ZVkrYSxyPWkueWF4aXNUVEVsc1t0XS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsbz1lLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdLTI7ZS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJihvLT0yNikscy09ci8yLC0xPT09ZS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKHQpPyhpLnlheGlzVFRFbHNbdF0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLGkueWF4aXNUVEVsc1t0XS5zdHlsZS50b3A9cytcInB4XCIsaS55YXhpc1RURWxzW3RdLnN0eWxlLmxlZnQ9bytlLmNvbmZpZy55YXhpc1t0XS50b29sdGlwLm9mZnNldFgrXCJweFwiKTppLnlheGlzVFRFbHNbdF0uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpfX0se2tleTpcIm1vdmVUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxhPXRoaXMudyxzPXRoaXMudHRDdHgscj1zLmdldEVsVG9vbHRpcCgpLG89cy50b29sdGlwUmVjdCxuPW51bGwhPT1pP3BhcnNlRmxvYXQoaSk6MSxsPXBhcnNlRmxvYXQodCkrbis1LGg9cGFyc2VGbG9hdChlKStuLzI7aWYobD5hLmdsb2JhbHMuZ3JpZFdpZHRoLzImJihsPWwtby50dFdpZHRoLW4tMTApLGw+YS5nbG9iYWxzLmdyaWRXaWR0aC1vLnR0V2lkdGgtMTAmJihsPWEuZ2xvYmFscy5ncmlkV2lkdGgtby50dFdpZHRoKSxsPC0yMCYmKGw9LTIwKSxhLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIGM9cy5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsobD1zLmUuY2xpZW50WC1jLmxlZnQpPmEuZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGwtPXMudG9vbHRpcFJlY3QudHRXaWR0aCksKGg9cy5lLmNsaWVudFkrYS5nbG9iYWxzLnRyYW5zbGF0ZVktYy50b3ApPmEuZ2xvYmFscy5ncmlkSGVpZ2h0LzImJihoLT1zLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KX1lbHNlIGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fG8udHRIZWlnaHQvMitoPmEuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoaD1hLmdsb2JhbHMuZ3JpZEhlaWdodC1vLnR0SGVpZ2h0K2EuZ2xvYmFscy50cmFuc2xhdGVZKTtpc05hTihsKXx8KGwrPWEuZ2xvYmFscy50cmFuc2xhdGVYLHIuc3R5bGUubGVmdD1sK1wicHhcIixyLnN0eWxlLnRvcD1oK1wicHhcIil9fSx7a2V5OlwibW92ZU1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMudHRDdHg7aWYoaS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVt0XT4wKWZvcih2YXIgcz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMtbWFya2VyXCIpKSxyPTA7cjxzLmxlbmd0aDtyKyspcGFyc2VJbnQoc1tyXS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApPT09ZSYmKGEubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLGEubWFya2VyLmVubGFyZ2VDdXJyZW50UG9pbnQoZSxzW3JdKSk7ZWxzZSBhLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSx0aGlzLm1vdmVEeW5hbWljUG9pbnRPbkhvdmVyKGUsdCl9fSx7a2V5OlwibW92ZUR5bmFtaWNQb2ludE9uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLGEscz10aGlzLncscj10aGlzLnR0Q3R4LG89cy5nbG9iYWxzLnBvaW50c0FycmF5LG49ci50b29sdGlwVXRpbC5nZXRIb3Zlck1hcmtlclNpemUoZSksbD1zLmNvbmZpZy5zZXJpZXNbZV0udHlwZTtpZighbHx8XCJjb2x1bW5cIiE9PWwmJlwiY2FuZGxlc3RpY2tcIiE9PWwmJlwiYm94UGxvdFwiIT09bCl7aT1vW2VdW3RdWzBdLGE9b1tlXVt0XVsxXT9vW2VdW3RdWzFdOjA7dmFyIGg9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChlLFwiJ10gLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgY2lyY2xlXCIpKTtoJiZhPHMuZ2xvYmFscy5ncmlkSGVpZ2h0JiZhPjAmJihoLnNldEF0dHJpYnV0ZShcInJcIixuKSxoLnNldEF0dHJpYnV0ZShcImN4XCIsaSksaC5zZXRBdHRyaWJ1dGUoXCJjeVwiLGEpKSx0aGlzLm1vdmVYQ3Jvc3NoYWlycyhpKSxyLmZpeGVkVG9vbHRpcHx8dGhpcy5tb3ZlVG9vbHRpcChpLGEsbil9fX0se2tleTpcIm1vdmVEeW5hbWljUG9pbnRzT25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy50dEN0eCxhPWkudyxzPTAscj0wLG89YS5nbG9iYWxzLnBvaW50c0FycmF5O2U9bmV3IE4odGhpcy5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiYXNjXCIsW1wibGluZVwiLFwiYXJlYVwiLFwic2NhdHRlclwiLFwiYnViYmxlXCJdKTt2YXIgbj1pLnRvb2x0aXBVdGlsLmdldEhvdmVyTWFya2VyU2l6ZShlKTtvW2VdJiYocz1vW2VdW3RdWzBdLHI9b1tlXVt0XVsxXSk7dmFyIGw9aS50b29sdGlwVXRpbC5nZXRBbGxNYXJrZXJzKCk7aWYobnVsbCE9PWwpZm9yKHZhciBoPTA7aDxhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtoKyspe3ZhciBjPW9baF07aWYoYS5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZ2b2lkIDA9PT1jJiZsLnNwbGljZShoLDAsbnVsbCksYyYmYy5sZW5ndGgpe3ZhciBkPW9baF1bdF1bMV0sZz12b2lkIDA7aWYobFtoXS5zZXRBdHRyaWJ1dGUoXCJjeFwiLHMpLFwicmFuZ2VBcmVhXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlJiYhYS5nbG9iYWxzLmNvbWJvQ2hhcnRzKXt2YXIgdT10K2EuZ2xvYmFscy5zZXJpZXNbaF0ubGVuZ3RoO2c9b1toXVt1XVsxXSxkLT1NYXRoLmFicyhkLWcpLzJ9bnVsbCE9PWQmJiFpc05hTihkKSYmZDxhLmdsb2JhbHMuZ3JpZEhlaWdodCtuJiZkK24+MD8obFtoXSYmbFtoXS5zZXRBdHRyaWJ1dGUoXCJyXCIsbiksbFtoXSYmbFtoXS5zZXRBdHRyaWJ1dGUoXCJjeVwiLGQpKTpsW2hdJiZsW2hdLnNldEF0dHJpYnV0ZShcInJcIiwwKX19dGhpcy5tb3ZlWENyb3NzaGFpcnMocyksaS5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAocyxyfHxhLmdsb2JhbHMuZ3JpZEhlaWdodCxuKX19LHtrZXk6XCJtb3ZlU3RpY2t5VG9vbHRpcE92ZXJCYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLnR0Q3R4LHM9aS5nbG9iYWxzLmNvbHVtblNlcmllcz9pLmdsb2JhbHMuY29sdW1uU2VyaWVzLmxlbmd0aDppLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxyPXM+PTImJnMlMj09MD9NYXRoLmZsb29yKHMvMik6TWF0aC5mbG9vcihzLzIpKzE7aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHI9bmV3IE4odGhpcy5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiZGVzY1wiKSsxKTt2YXIgbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLCAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIpLmNvbmNhdChyLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXVwiKSk7b3x8XCJudW1iZXJcIiE9dHlwZW9mIGV8fChvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChlLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSxcXG4gICAgICAgIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLFxcbiAgICAgICAgLmFwZXhjaGFydHMtYm94UGxvdC1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChlLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSxcXG4gICAgICAgIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddXCIpKSk7dmFyIG49bz9wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwiY3hcIikpOjAsbD1vP3BhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoXCJjeVwiKSk6MCxoPW8/cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTowLGM9YS5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPW8mJihvLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYVwiKXx8by5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWJveFBsb3QtYXJlYVwiKSk7aS5nbG9iYWxzLmlzWE51bWVyaWM/KG8mJiFkJiYobi09cyUyIT0wP2gvMjowKSxvJiZkJiZpLmdsb2JhbHMuY29tYm9DaGFydHMmJihuLT1oLzIpKTppLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwobj1hLnhBeGlzVGlja3NQb3NpdGlvbnNbdC0xXSthLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgvMixpc05hTihuKSYmKG49YS54QXhpc1RpY2tzUG9zaXRpb25zW3RdLWEuZGF0YVBvaW50c0RpdmlkZWRXaWR0aC8yKSksaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9sLT1hLnRvb2x0aXBSZWN0LnR0SGVpZ2h0OmkuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yP2w9YS5lLmNsaWVudFktYy50b3AtYS50b29sdGlwUmVjdC50dEhlaWdodC8yOmwrYS50b29sdGlwUmVjdC50dEhlaWdodCsxNT5pLmdsb2JhbHMuZ3JpZEhlaWdodCYmKGw9aS5nbG9iYWxzLmdyaWRIZWlnaHQpLGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fHRoaXMubW92ZVhDcm9zc2hhaXJzKG4pLGEuZml4ZWRUb29sdGlwfHx0aGlzLm1vdmVUb29sdGlwKG4sbHx8aS5nbG9iYWxzLmdyaWRIZWlnaHQpfX1dKSx0fSgpLHB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWUsdGhpcy5jdHg9ZS5jdHgsdGhpcy50b29sdGlwUG9zaXRpb249bmV3IHV0KGUpfXJldHVybiByKHQsW3trZXk6XCJkcmF3RHluYW1pY1BvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9bmV3IEgodGhpcy5jdHgpLGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1wiKTthPXUoYSksdC5jb25maWcuY2hhcnQuc3RhY2tlZCYmYS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBwYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpLXBhcnNlRmxvYXQoZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSl9KSk7Zm9yKHZhciBzPTA7czxhLmxlbmd0aDtzKyspe3ZhciByPWFbc10ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIik7aWYobnVsbCE9PXIpe3ZhciBvPXZvaWQgMCxuPVwiYXBleGNoYXJ0cy1tYXJrZXIgd1wiLmNvbmNhdCgoTWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDQpKTtcImxpbmVcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJlwiYXJlYVwiIT09dC5jb25maWcuY2hhcnQudHlwZXx8dC5nbG9iYWxzLmNvbWJvQ2hhcnRzfHx0LmNvbmZpZy50b29sdGlwLmludGVyc2VjdHx8KG4rPVwiIG5vLXBvaW50ZXItZXZlbnRzXCIpO3ZhciBsPWkuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpuLHNlcmllc0luZGV4Ok51bWJlcihyLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKX0pOyhvPWUuZHJhd01hcmtlcigwLDAsbCkpLm5vZGUuc2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiLDApO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0Lmdsb2JhbHMuU1ZHTlMsXCJnXCIpO2guY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIiksaC5hcHBlbmRDaGlsZChvLm5vZGUpLHIuYXBwZW5kQ2hpbGQoaCl9fX19LHtrZXk6XCJlbmxhcmdlQ3VycmVudFBvaW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLHM9dGhpcy53O1wiYnViYmxlXCIhPT1zLmNvbmZpZy5jaGFydC50eXBlJiZ0aGlzLm5ld1BvaW50U2l6ZSh0LGUpO3ZhciByPWUuZ2V0QXR0cmlidXRlKFwiY3hcIiksbz1lLmdldEF0dHJpYnV0ZShcImN5XCIpO2lmKG51bGwhPT1pJiZudWxsIT09YSYmKHI9aSxvPWEpLHRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhyKSwhdGhpcy5maXhlZFRvb2x0aXApe2lmKFwicmFkYXJcIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciBuPXRoaXMudHRDdHguZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cj10aGlzLnR0Q3R4LmUuY2xpZW50WC1uLmxlZnR9dGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVRvb2x0aXAocixvLHMuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSl9fX0se2tleTpcImVubGFyZ2VQb2ludHNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9dGhpcyxhPXRoaXMudHRDdHgscz10LHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllczpub3QoLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCkgLmFwZXhjaGFydHMtbWFya2VyXCIpLG89ZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGw9cltuXS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksaD1yW25dLmdldEF0dHJpYnV0ZShcImluZGV4XCIpO2lmKHZvaWQgMD09PW8mJihvPWUuZ2xvYmFscy5tYXJrZXJzLnNpemVbaF0rZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSxzPT09cGFyc2VJbnQobCwxMCkpe2kubmV3UG9pbnRTaXplKHMscltuXSk7dmFyIGM9cltuXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSxkPXJbbl0uZ2V0QXR0cmlidXRlKFwiY3lcIik7aS50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGMpLGEuZml4ZWRUb29sdGlwfHxpLnRvb2x0aXBQb3NpdGlvbi5tb3ZlVG9vbHRpcChjLGQsbyl9ZWxzZSBpLm9sZFBvaW50U2l6ZShyW25dKX19fSx7a2V5OlwibmV3UG9pbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUscz0wPT09dD9lLnBhcmVudE5vZGUuZmlyc3RDaGlsZDplLnBhcmVudE5vZGUubGFzdENoaWxkO2lmKFwiMFwiIT09cy5nZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIpKXt2YXIgcj1wYXJzZUludChzLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKTt2b2lkIDA9PT1hJiYoYT1pLmdsb2JhbHMubWFya2Vycy5zaXplW3JdK2kuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksYTwwJiYoYT0wKSxzLnNldEF0dHJpYnV0ZShcInJcIixhKX19fSx7a2V5Olwib2xkUG9pbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIikpO3Quc2V0QXR0cmlidXRlKFwiclwiLGUpfX0se2tleTpcInJlc2V0UG9pbnRzU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllczpub3QoLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCkgLmFwZXhjaGFydHMtbWFya2VyXCIpLGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIGk9cGFyc2VGbG9hdCh0W2VdLmdldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIikpO3guaXNOdW1iZXIoaSkmJmk+PTA/dFtlXS5zZXRBdHRyaWJ1dGUoXCJyXCIsaSk6dFtlXS5zZXRBdHRyaWJ1dGUoXCJyXCIsMCl9fX1dKSx0fSgpLGZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy50dEN0eD1lLHRoaXMuaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj0haS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmXCJyYW5nZUJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmaS5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzfXJldHVybiByKHQsW3trZXk6XCJnZXRBdHRyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gcGFyc2VGbG9hdCh0LnRhcmdldC5nZXRBdHRyaWJ1dGUoZSkpfX0se2tleTpcImhhbmRsZUhlYXRUcmVlVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZSxpPXQub3B0LGE9dC54LHM9dC55LHI9dC50eXBlLG89dGhpcy50dEN0eCxuPXRoaXMudztpZihlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChyLFwiLXJlY3RcIikpKXt2YXIgbD10aGlzLmdldEF0dHIoZSxcImlcIiksaD10aGlzLmdldEF0dHIoZSxcImpcIiksYz10aGlzLmdldEF0dHIoZSxcImN4XCIpLGQ9dGhpcy5nZXRBdHRyKGUsXCJjeVwiKSxnPXRoaXMuZ2V0QXR0cihlLFwid2lkdGhcIiksdT10aGlzLmdldEF0dHIoZSxcImhlaWdodFwiKTtpZihvLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOmkudHRJdGVtcyxpOmwsajpoLHNoYXJlZDohMSxlOmV9KSxuLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1sLG4uZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PWgsYT1jK28udG9vbHRpcFJlY3QudHRXaWR0aC8yK2cscz1kK28udG9vbHRpcFJlY3QudHRIZWlnaHQvMi11LzIsby50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGMrZy8yKSxhPm4uZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGE9Yy1vLnRvb2x0aXBSZWN0LnR0V2lkdGgvMitnKSxvLncuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgcD1uLmdsb2JhbHMuZG9tLmVsV3JhcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthPW4uZ2xvYmFscy5jbGllbnRYLXAubGVmdC0oYT5uLmdsb2JhbHMuZ3JpZFdpZHRoLzI/by50b29sdGlwUmVjdC50dFdpZHRoOjApLHM9bi5nbG9iYWxzLmNsaWVudFktcC50b3AtKHM+bi5nbG9iYWxzLmdyaWRIZWlnaHQvMj9vLnRvb2x0aXBSZWN0LnR0SGVpZ2h0OjApfX1yZXR1cm57eDphLHk6c319fSx7a2V5OlwiaGFuZGxlTWFya2VyVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10LmUscz10Lm9wdCxyPXQueCxvPXQueSxuPXRoaXMudyxsPXRoaXMudHRDdHg7aWYoYS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1tYXJrZXJcIikpe3ZhciBoPXBhcnNlSW50KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwiY3hcIiksMTApLGM9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJjeVwiKSwxMCksZD1wYXJzZUZsb2F0KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwidmFsXCIpKTtpZihpPXBhcnNlSW50KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKSxlPXBhcnNlSW50KHMucGF0aHMucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xLGwuaW50ZXJzZWN0KXt2YXIgZz14LmZpbmRBbmNlc3RvcihzLnBhdGhzLFwiYXBleGNoYXJ0cy1zZXJpZXNcIik7ZyYmKGU9cGFyc2VJbnQoZy5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCkpfWlmKGwudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6cy50dEl0ZW1zLGk6ZSxqOmksc2hhcmVkOiFsLnNob3dPbkludGVyc2VjdCYmbi5jb25maWcudG9vbHRpcC5zaGFyZWQsZTphfSksXCJtb3VzZXVwXCI9PT1hLnR5cGUmJmwubWFya2VyQ2xpY2soYSxlLGkpLG4uZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PWUsbi5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9aSxyPWgsbz1jK24uZ2xvYmFscy50cmFuc2xhdGVZLTEuNCpsLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LGwudy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciB1PWwuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bz1sLmUuY2xpZW50WStuLmdsb2JhbHMudHJhbnNsYXRlWS11LnRvcH1kPDAmJihvPWMpLGwubWFya2VyLmVubGFyZ2VDdXJyZW50UG9pbnQoaSxzLnBhdGhzLHIsbyl9cmV0dXJue3g6cix5Om99fX0se2tleTpcImhhbmRsZUJhclRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLGE9dC5lLHM9dC5vcHQscj10aGlzLncsbz10aGlzLnR0Q3R4LG49by5nZXRFbFRvb2x0aXAoKSxsPTAsaD0wLGM9MCxkPXRoaXMuZ2V0QmFyVG9vbHRpcFhZKHtlOmEsb3B0OnN9KTtlPWQuaTt2YXIgZz1kLmJhckhlaWdodCx1PWQuajtyLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1lLHIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PXUsci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmby50b29sdGlwVXRpbC5oYXNCYXJzKCl8fCFyLmNvbmZpZy50b29sdGlwLnNoYXJlZD8oaD1kLngsYz1kLnksaT1BcnJheS5pc0FycmF5KHIuY29uZmlnLnN0cm9rZS53aWR0aCk/ci5jb25maWcuc3Ryb2tlLndpZHRoW2VdOnIuY29uZmlnLnN0cm9rZS53aWR0aCxsPWgpOnIuZ2xvYmFscy5jb21ib0NoYXJ0c3x8ci5jb25maWcudG9vbHRpcC5zaGFyZWR8fChsLz0yKSxpc05hTihjKSYmKGM9ci5nbG9iYWxzLnN2Z0hlaWdodC1vLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KTt2YXIgcD1wYXJzZUludChzLnBhdGhzLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApLGY9ci5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcz9yLmNvbmZpZy55YXhpc1twXSYmci5jb25maWcueWF4aXNbcF0ucmV2ZXJzZWQ6ci5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQ7aWYoaCtvLnRvb2x0aXBSZWN0LnR0V2lkdGg+ci5nbG9iYWxzLmdyaWRXaWR0aCYmIWY/aC09by50b29sdGlwUmVjdC50dFdpZHRoOmg8MCYmKGg9MCksby53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIHg9by5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjPW8uZS5jbGllbnRZLXgudG9wfW51bGw9PT1vLnRvb2x0aXAmJihvLnRvb2x0aXA9ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXBcIikpLHIuY29uZmlnLnRvb2x0aXAuc2hhcmVkfHwoci5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MD9vLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMobCtpLzIpOm8udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhsKSksIW8uZml4ZWRUb29sdGlwJiYoIXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkfHxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSkmJihmJiYoaC09by50b29sdGlwUmVjdC50dFdpZHRoKTwwJiYoaD0wKSwhZnx8ci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmby50b29sdGlwVXRpbC5oYXNCYXJzKCl8fChjPWMrZy0yKihyLmdsb2JhbHMuc2VyaWVzW2VdW3VdPDA/ZzowKSksYz1jK3IuZ2xvYmFscy50cmFuc2xhdGVZLW8udG9vbHRpcFJlY3QudHRIZWlnaHQvMixuLnN0eWxlLmxlZnQ9aCtyLmdsb2JhbHMudHJhbnNsYXRlWCtcInB4XCIsbi5zdHlsZS50b3A9YytcInB4XCIpfX0se2tleTpcImdldEJhclRvb2x0aXBYWVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10LmUsYT10Lm9wdCxzPXRoaXMudyxyPW51bGwsbz10aGlzLnR0Q3R4LG49MCxsPTAsaD0wLGM9MCxkPTAsZz1pLnRhcmdldC5jbGFzc0xpc3Q7aWYoZy5jb250YWlucyhcImFwZXhjaGFydHMtYmFyLWFyZWFcIil8fGcuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWFcIil8fGcuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWJveFBsb3QtYXJlYVwiKXx8Zy5jb250YWlucyhcImFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKSl7dmFyIHU9aS50YXJnZXQscD11LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9YS5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseD1wLmhlaWdodDtkPXAuaGVpZ2h0O3ZhciBiPXAud2lkdGgsdj1wYXJzZUludCh1LmdldEF0dHJpYnV0ZShcImN4XCIpLDEwKSxtPXBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKFwiY3lcIiksMTApO2M9cGFyc2VGbG9hdCh1LmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTt2YXIgeT1cInRvdWNobW92ZVwiPT09aS50eXBlP2kudG91Y2hlc1swXS5jbGllbnRYOmkuY2xpZW50WDtyPXBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCksbj1wYXJzZUludCh1LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3ZhciB3PXUuZ2V0QXR0cmlidXRlKFwiZGF0YS1yYW5nZS15MVwiKSxrPXUuZ2V0QXR0cmlidXRlKFwiZGF0YS1yYW5nZS15MlwiKTtzLmdsb2JhbHMuY29tYm9DaGFydHMmJihuPXBhcnNlSW50KHUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCkpO3ZhciBBPWZ1bmN0aW9uKHQpe3JldHVybiBzLmdsb2JhbHMuaXNYTnVtZXJpYz92LWIvMjplLmlzVmVydGljYWxHcm91cGVkUmFuZ2VCYXI/ditiLzI6di1vLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgrYi8yfSxTPWZ1bmN0aW9uKCl7cmV0dXJuIG0tby5kYXRhUG9pbnRzRGl2aWRlZEhlaWdodCt4LzItby50b29sdGlwUmVjdC50dEhlaWdodC8yfTtvLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOmEudHRJdGVtcyxpOm4sajpyLHkxOnc/cGFyc2VJbnQodywxMCk6bnVsbCx5MjprP3BhcnNlSW50KGssMTApOm51bGwsc2hhcmVkOiFvLnNob3dPbkludGVyc2VjdCYmcy5jb25maWcudG9vbHRpcC5zaGFyZWQsZTppfSkscy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3I/cy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8obD15LWYubGVmdCsxNSxoPVMoKSk6KGw9QSgpLGg9aS5jbGllbnRZLWYudG9wLW8udG9vbHRpcFJlY3QudHRIZWlnaHQvMi0xNSk6cy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8oKGw9dik8by54eVJhdGlvcy5iYXNlTGluZUludmVydGVkWSYmKGw9di1vLnRvb2x0aXBSZWN0LnR0V2lkdGgpLGg9UygpKToobD1BKCksaD1tKX1yZXR1cm57eDpsLHk6aCxiYXJIZWlnaHQ6ZCxiYXJXaWR0aDpjLGk6bixqOnJ9fX1dKSx0fSgpLHh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImRyYXdYYXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1cImJvdHRvbVwiPT09dC5jb25maWcueGF4aXMucG9zaXRpb247ZS54YXhpc09mZlk9aT90Lmdsb2JhbHMuZ3JpZEhlaWdodCsxOi10Lmdsb2JhbHMueEF4aXNIZWlnaHQtdC5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCszO3ZhciBhPWk/XCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b21cIjpcImFwZXhjaGFydHMteGF4aXN0b29sdGlwIGFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcFwiLHM9dC5nbG9iYWxzLmRvbS5lbFdyYXA7ZS5pc1hBeGlzVG9vbHRpcEVuYWJsZWQmJihudWxsPT09dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcFwiKSYmKGUueGF4aXNUb29sdGlwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS54YXhpc1Rvb2x0aXAuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixhK1wiIGFwZXhjaGFydHMtdGhlbWUtXCIrdC5jb25maWcudG9vbHRpcC50aGVtZSkscy5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcCksZS54YXhpc1Rvb2x0aXBUZXh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS54YXhpc1Rvb2x0aXBUZXh0LmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10ZXh0XCIpLGUueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5mb250RmFtaWx5PXQuY29uZmlnLnhheGlzLnRvb2x0aXAuc3R5bGUuZm9udEZhbWlseXx8dC5jb25maWcuY2hhcnQuZm9udEZhbWlseSxlLnhheGlzVG9vbHRpcFRleHQuc3R5bGUuZm9udFNpemU9dC5jb25maWcueGF4aXMudG9vbHRpcC5zdHlsZS5mb250U2l6ZSxlLnhheGlzVG9vbHRpcC5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcFRleHQpKSl9fSx7a2V5OlwiZHJhd1lheGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1mdW5jdGlvbihpKXt2YXIgYT10LmNvbmZpZy55YXhpc1tpXS5vcHBvc2l0ZXx8dC5jb25maWcueWF4aXNbaV0uY3Jvc3NoYWlycy5vcHBvc2l0ZTtlLnlheGlzT2ZmWD1hP3QuZ2xvYmFscy5ncmlkV2lkdGgrMToxO3ZhciBzPVwiYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtXCIuY29uY2F0KGksYT9cIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodFwiOlwiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnRcIik7dC5nbG9iYWxzLnlBeGlzU2FtZVNjYWxlSW5kaWNlcy5tYXAoKGZ1bmN0aW9uKGUsYSl7ZS5tYXAoKGZ1bmN0aW9uKGUsYSl7YT09PWkmJihzKz10LmNvbmZpZy55YXhpc1thXS5zaG93P1wiIFwiOlwiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWhpZGRlblwiKX0pKX0pKTt2YXIgcj10Lmdsb2JhbHMuZG9tLmVsV3JhcDtudWxsPT09dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1cIi5jb25jYXQoaSkpJiYoZS55YXhpc1Rvb2x0aXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnlheGlzVG9vbHRpcC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLHMrXCIgYXBleGNoYXJ0cy10aGVtZS1cIit0LmNvbmZpZy50b29sdGlwLnRoZW1lKSxyLmFwcGVuZENoaWxkKGUueWF4aXNUb29sdGlwKSwwPT09aSYmKGUueWF4aXNUb29sdGlwVGV4dD1bXSksZS55YXhpc1Rvb2x0aXBUZXh0W2ldPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS55YXhpc1Rvb2x0aXBUZXh0W2ldLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC10ZXh0XCIpLGUueWF4aXNUb29sdGlwLmFwcGVuZENoaWxkKGUueWF4aXNUb29sdGlwVGV4dFtpXSkpfSxhPTA7YTx0LmNvbmZpZy55YXhpcy5sZW5ndGg7YSsrKWkoYSl9fSx7a2V5Olwic2V0WENyb3NzaGFpcldpZHRoXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnR0Q3R4LGk9ZS5nZXRFbFhDcm9zc2hhaXJzKCk7aWYoZS54Y3Jvc3NoYWlyc1dpZHRoPXBhcnNlSW50KHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgsMTApLHQuZ2xvYmFscy5jb21ib0NoYXJ0cyl7dmFyIGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWJhci1hcmVhXCIpO2lmKG51bGwhPT1hJiZcImJhcldpZHRoXCI9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKXt2YXIgcz1wYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpO2UueGNyb3NzaGFpcnNXaWR0aD1zfWVsc2UgaWYoXCJ0aWNrV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciByPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoO2UueGNyb3NzaGFpcnNXaWR0aD10Lmdsb2JhbHMuZ3JpZFdpZHRoL3J9fWVsc2UgaWYoXCJ0aWNrV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBvPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoO2UueGNyb3NzaGFpcnNXaWR0aD10Lmdsb2JhbHMuZ3JpZFdpZHRoL299ZWxzZSBpZihcImJhcldpZHRoXCI9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKXt2YXIgbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIik7aWYobnVsbCE9PW4pe3ZhciBsPXBhcnNlRmxvYXQobi5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7ZS54Y3Jvc3NoYWlyc1dpZHRoPWx9ZWxzZSBlLnhjcm9zc2hhaXJzV2lkdGg9MX10Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoZS54Y3Jvc3NoYWlyc1dpZHRoPTApLG51bGwhPT1pJiZlLnhjcm9zc2hhaXJzV2lkdGg+MCYmaS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLGUueGNyb3NzaGFpcnNXaWR0aCl9fSx7a2V5OlwiaGFuZGxlWUNyb3NzaGFpclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eDtlLnljcm9zc2hhaXJzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15Y3Jvc3NoYWlyc1wiKSxlLnljcm9zc2hhaXJzSGlkZGVuPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW5cIil9fSx7a2V5OlwiZHJhd1lheGlzVG9vbHRpcFRleHRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy50dEN0eCxzPXRoaXMudyxyPXMuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdO2lmKGEueWF4aXNUb29sdGlwc1t0XSl7dmFyIG89YS5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPShlLW8udG9wKSppLnlSYXRpb1t0XSxsPXMuZ2xvYmFscy5tYXhZQXJyW3RdLXMuZ2xvYmFscy5taW5ZQXJyW3RdLGg9cy5nbG9iYWxzLm1pbllBcnJbdF0rKGwtbik7YS50b29sdGlwUG9zaXRpb24ubW92ZVlDcm9zc2hhaXJzKGUtby50b3ApLGEueWF4aXNUb29sdGlwVGV4dFt0XS5pbm5lckhUTUw9cihoKSxhLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWUF4aXNUb29sdGlwKHQpfX19XSksdH0oKSxidD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy50Q29uZmlnPWkuY29uZmlnLnRvb2x0aXAsdGhpcy50b29sdGlwVXRpbD1uZXcgZHQodGhpcyksdGhpcy50b29sdGlwTGFiZWxzPW5ldyBndCh0aGlzKSx0aGlzLnRvb2x0aXBQb3NpdGlvbj1uZXcgdXQodGhpcyksdGhpcy5tYXJrZXI9bmV3IHB0KHRoaXMpLHRoaXMuaW50ZXJzZWN0PW5ldyBmdCh0aGlzKSx0aGlzLmF4ZXNUb29sdGlwPW5ldyB4dCh0aGlzKSx0aGlzLnNob3dPbkludGVyc2VjdD10aGlzLnRDb25maWcuaW50ZXJzZWN0LHRoaXMuc2hvd1Rvb2x0aXBUaXRsZT10aGlzLnRDb25maWcueC5zaG93LHRoaXMuZml4ZWRUb29sdGlwPXRoaXMudENvbmZpZy5maXhlZC5lbmFibGVkLHRoaXMueGF4aXNUb29sdGlwPW51bGwsdGhpcy55YXhpc1RURWxzPW51bGwsdGhpcy5pc0JhclNoYXJlZD0haS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy50Q29uZmlnLnNoYXJlZCx0aGlzLmxhc3RIb3ZlclRpbWU9RGF0ZS5ub3coKX1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0RWxUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHR8fCh0PXRoaXMpLHQudy5nbG9iYWxzLmRvbS5iYXNlRWw/dC53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcFwiKTpudWxsfX0se2tleTpcImdldEVsWENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14Y3Jvc3NoYWlyc1wiKX19LHtrZXk6XCJnZXRFbEdyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1ncmlkXCIpfX0se2tleTpcImRyYXdUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3RoaXMueHlSYXRpb3M9dCx0aGlzLmlzWEF4aXNUb29sdGlwRW5hYmxlZD1lLmNvbmZpZy54YXhpcy50b29sdGlwLmVuYWJsZWQmJmUuZ2xvYmFscy5heGlzQ2hhcnRzLHRoaXMueWF4aXNUb29sdGlwcz1lLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuISEodC5zaG93JiZ0LnRvb2x0aXAuZW5hYmxlZCYmZS5nbG9iYWxzLmF4aXNDaGFydHMpfSkpLHRoaXMuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcz1bXSxlLmdsb2JhbHMuYXhpc0NoYXJ0c3x8KHRoaXMuc2hvd1Rvb2x0aXBUaXRsZT0hMSk7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtpZihpLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXBcIiksZS5jb25maWcudG9vbHRpcC5jc3NDbGFzcyYmaS5jbGFzc0xpc3QuYWRkKGUuY29uZmlnLnRvb2x0aXAuY3NzQ2xhc3MpLGkuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdGhlbWUtXCIuY29uY2F0KHRoaXMudENvbmZpZy50aGVtZSkpLGUuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGkpLGUuZ2xvYmFscy5heGlzQ2hhcnRzKXt0aGlzLmF4ZXNUb29sdGlwLmRyYXdYYXhpc1Rvb2x0aXAoKSx0aGlzLmF4ZXNUb29sdGlwLmRyYXdZYXhpc1Rvb2x0aXAoKSx0aGlzLmF4ZXNUb29sdGlwLnNldFhDcm9zc2hhaXJXaWR0aCgpLHRoaXMuYXhlc1Rvb2x0aXAuaGFuZGxlWUNyb3NzaGFpcigpO3ZhciBhPW5ldyBWKHRoaXMuY3R4KTt0aGlzLnhBeGlzVGlja3NQb3NpdGlvbnM9YS5nZXRYQXhpc1RpY2tzUG9zaXRpb25zKCl9aWYoIWUuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIXRoaXMudENvbmZpZy5pbnRlcnNlY3QmJlwicmFuZ2VCYXJcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMudENvbmZpZy5zaGFyZWR8fCh0aGlzLnNob3dPbkludGVyc2VjdD0hMCksMCE9PWUuY29uZmlnLm1hcmtlcnMuc2l6ZSYmMCE9PWUuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplfHx0aGlzLm1hcmtlci5kcmF3RHluYW1pY1BvaW50cyh0aGlzKSxlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCE9PWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXt0aGlzLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0PWUuZ2xvYmFscy5ncmlkSGVpZ2h0L2UuZ2xvYmFscy5kYXRhUG9pbnRzLHRoaXMuZGF0YVBvaW50c0RpdmlkZWRXaWR0aD1lLmdsb2JhbHMuZ3JpZFdpZHRoL2UuZ2xvYmFscy5kYXRhUG9pbnRzLHRoaXMuc2hvd1Rvb2x0aXBUaXRsZSYmKHRoaXMudG9vbHRpcFRpdGxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy50b29sdGlwVGl0bGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10aXRsZVwiKSx0aGlzLnRvb2x0aXBUaXRsZS5zdHlsZS5mb250RmFtaWx5PXRoaXMudENvbmZpZy5zdHlsZS5mb250RmFtaWx5fHxlLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LHRoaXMudG9vbHRpcFRpdGxlLnN0eWxlLmZvbnRTaXplPXRoaXMudENvbmZpZy5zdHlsZS5mb250U2l6ZSxpLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcFRpdGxlKSk7dmFyIHM9ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7KGUuZ2xvYmFscy54eUNoYXJ0c3x8ZS5nbG9iYWxzLmNvbWJvQ2hhcnRzKSYmdGhpcy50Q29uZmlnLnNoYXJlZCYmKHM9dGhpcy5zaG93T25JbnRlcnNlY3Q/MTplLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCksdGhpcy5sZWdlbmRMYWJlbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpLHRoaXMudHRJdGVtcz10aGlzLmNyZWF0ZVRURWxlbWVudHMocyksdGhpcy5hZGRTVkdFdmVudHMoKX19fSx7a2V5OlwiY3JlYXRlVFRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLGk9dGhpcy53LGE9W10scz10aGlzLmdldEVsVG9vbHRpcCgpLHI9ZnVuY3Rpb24ocil7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtvLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpLG8uc3R5bGUub3JkZXI9aS5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXI/dC1yOnIrMSxlLnRDb25maWcuc2hhcmVkJiZlLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzJiZBcnJheS5pc0FycmF5KGUudENvbmZpZy5lbmFibGVkT25TZXJpZXMpJiZlLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2Yocik8MCYmby5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW5cIik7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7bi5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiKSxuLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLmdsb2JhbHMuY29sb3JzW3JdLG8uYXBwZW5kQ2hpbGQobik7dmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtsLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dFwiKSxsLnN0eWxlLmZvbnRGYW1pbHk9ZS50Q29uZmlnLnN0eWxlLmZvbnRGYW1pbHl8fGkuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksbC5zdHlsZS5mb250U2l6ZT1lLnRDb25maWcuc3R5bGUuZm9udFNpemUsW1wieVwiLFwiZ29hbHNcIixcInpcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtXCIuY29uY2F0KHQsXCItZ3JvdXBcIikpO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2kuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LVwiLmNvbmNhdCh0LFwiLWxhYmVsXCIpKSxlLmFwcGVuZENoaWxkKGkpO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2EuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LVwiLmNvbmNhdCh0LFwiLXZhbHVlXCIpKSxlLmFwcGVuZENoaWxkKGEpLGwuYXBwZW5kQ2hpbGQoZSl9KSksby5hcHBlbmRDaGlsZChsKSxzLmFwcGVuZENoaWxkKG8pLGEucHVzaChvKX0sbz0wO288dDtvKyspcihvKTtyZXR1cm4gYX19LHtrZXk6XCJhZGRTVkdFdmVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLmNoYXJ0LnR5cGUsaT10aGlzLmdldEVsVG9vbHRpcCgpLGE9IShcImJhclwiIT09ZSYmXCJjYW5kbGVzdGlja1wiIT09ZSYmXCJib3hQbG90XCIhPT1lJiZcInJhbmdlQmFyXCIhPT1lKSxzPVwiYXJlYVwiPT09ZXx8XCJsaW5lXCI9PT1lfHxcInNjYXR0ZXJcIj09PWV8fFwiYnViYmxlXCI9PT1lfHxcInJhZGFyXCI9PT1lLHI9dC5nbG9iYWxzLmRvbS5QYXBlci5ub2RlLG89dGhpcy5nZXRFbEdyaWQoKTtvJiYodGhpcy5zZXJpZXNCb3VuZD1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTt2YXIgbixsPVtdLGg9W10sYz17aG92ZXJBcmVhOnIsZWxHcmlkOm8sdG9vbHRpcEVsOmksdG9vbHRpcFk6bCx0b29sdGlwWDpoLHR0SXRlbXM6dGhpcy50dEl0ZW1zfTtpZih0Lmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHM/bj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOmxvbmdlc3RTZXJpZXM9J3RydWUnXSAuYXBleGNoYXJ0cy1tYXJrZXJcIik6YT9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtYmFyLWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtYm94UGxvdC1hcmVhLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKTpcImhlYXRtYXBcIiE9PWUmJlwidHJlZW1hcFwiIT09ZXx8KG49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1oZWF0bWFwLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtdHJlZW1hcFwiKSksbiYmbi5sZW5ndGgpKWZvcih2YXIgZD0wO2Q8bi5sZW5ndGg7ZCsrKWwucHVzaChuW2RdLmdldEF0dHJpYnV0ZShcImN5XCIpKSxoLnB1c2gobltkXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSk7aWYodC5nbG9iYWxzLnh5Q2hhcnRzJiYhdGhpcy5zaG93T25JbnRlcnNlY3R8fHQuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIXRoaXMuc2hvd09uSW50ZXJzZWN0fHxhJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy50Q29uZmlnLnNoYXJlZCl0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoW3JdLGMpO2Vsc2UgaWYoYSYmIXQuZ2xvYmFscy5jb21ib0NoYXJ0c3x8cyYmdGhpcy5zaG93T25JbnRlcnNlY3QpdGhpcy5hZGREYXRhcG9pbnRFdmVudHNMaXN0ZW5lcnMoYyk7ZWxzZSBpZighdC5nbG9iYWxzLmF4aXNDaGFydHN8fFwiaGVhdG1hcFwiPT09ZXx8XCJ0cmVlbWFwXCI9PT1lKXt2YXIgZz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzXCIpO3RoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyhnLGMpfWlmKHRoaXMuc2hvd09uSW50ZXJzZWN0KXt2YXIgdT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtbGluZS1zZXJpZXMgLmFwZXhjaGFydHMtbWFya2VyLCAuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1tYXJrZXJcIik7dS5sZW5ndGg+MCYmdGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKHUsYyksdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJiF0aGlzLnRDb25maWcuc2hhcmVkJiZ0aGlzLmFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVycyhjKX19fSx7a2V5OlwiZHJhd0ZpeGVkVG9vbHRpcFJlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMuZ2V0RWxUb29sdGlwKCksaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9aS53aWR0aCsxMCxzPWkuaGVpZ2h0KzEwLHI9dGhpcy50Q29uZmlnLmZpeGVkLm9mZnNldFgsbz10aGlzLnRDb25maWcuZml4ZWQub2Zmc2V0WSxuPXRoaXMudENvbmZpZy5maXhlZC5wb3NpdGlvbi50b0xvd2VyQ2FzZSgpO3JldHVybiBuLmluZGV4T2YoXCJyaWdodFwiKT4tMSYmKHI9cit0Lmdsb2JhbHMuc3ZnV2lkdGgtYSsxMCksbi5pbmRleE9mKFwiYm90dG9tXCIpPi0xJiYobz1vK3QuZ2xvYmFscy5zdmdIZWlnaHQtcy0xMCksZS5zdHlsZS5sZWZ0PXIrXCJweFwiLGUuc3R5bGUudG9wPW8rXCJweFwiLHt4OnIseTpvLHR0V2lkdGg6YSx0dEhlaWdodDpzfX19LHtrZXk6XCJhZGREYXRhcG9pbnRFdmVudHNMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIsIC5hcGV4Y2hhcnRzLWJhci1hcmVhLCAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhLCAuYXBleGNoYXJ0cy1ib3hQbG90LWFyZWEsIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLWFyZWFcIik7dGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKGUsdCl9fSx7a2V5OlwiYWRkUGF0aHNFdmVudExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXRoaXMsYT1mdW5jdGlvbihhKXt2YXIgcz17cGF0aHM6dFthXSx0b29sdGlwRWw6ZS50b29sdGlwRWwsdG9vbHRpcFk6ZS50b29sdGlwWSx0b29sdGlwWDplLnRvb2x0aXBYLGVsR3JpZDplLmVsR3JpZCxob3ZlckFyZWE6ZS5ob3ZlckFyZWEsdHRJdGVtczplLnR0SXRlbXN9O1tcIm1vdXNlbW92ZVwiLFwibW91c2V1cFwiLFwidG91Y2htb3ZlXCIsXCJtb3VzZW91dFwiLFwidG91Y2hlbmRcIl0ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFthXS5hZGRFdmVudExpc3RlbmVyKGUsaS5vblNlcmllc0hvdmVyLmJpbmQoaSxzKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KSl9LHM9MDtzPHQubGVuZ3RoO3MrKylhKHMpfX0se2tleTpcIm9uU2VyaWVzSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT1EYXRlLm5vdygpLXRoaXMubGFzdEhvdmVyVGltZTthPj0xMDA/dGhpcy5zZXJpZXNIb3Zlcih0LGUpOihjbGVhclRpbWVvdXQodGhpcy5zZXJpZXNIb3ZlclRpbWVvdXQpLHRoaXMuc2VyaWVzSG92ZXJUaW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5zZXJpZXNIb3Zlcih0LGUpfSksMTAwLWEpKX19LHtrZXk6XCJzZXJpZXNIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt0aGlzLmxhc3RIb3ZlclRpbWU9RGF0ZS5ub3coKTt2YXIgYT1bXSxzPXRoaXMudztzLmNvbmZpZy5jaGFydC5ncm91cCYmKGE9dGhpcy5jdHguZ2V0R3JvdXBlZENoYXJ0cygpKSxzLmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHMuZ2xvYmFscy5taW5YPT09LTEvMCYmcy5nbG9iYWxzLm1heFg9PT0xLzB8fDA9PT1zLmdsb2JhbHMuZGF0YVBvaW50cyl8fChhLmxlbmd0aD9hLmZvckVhY2goKGZ1bmN0aW9uKGEpe3ZhciBzPWkuZ2V0RWxUb29sdGlwKGEpLHI9e3BhdGhzOnQucGF0aHMsdG9vbHRpcEVsOnMsdG9vbHRpcFk6dC50b29sdGlwWSx0b29sdGlwWDp0LnRvb2x0aXBYLGVsR3JpZDp0LmVsR3JpZCxob3ZlckFyZWE6dC5ob3ZlckFyZWEsdHRJdGVtczphLncuZ2xvYmFscy50b29sdGlwLnR0SXRlbXN9O2Eudy5nbG9iYWxzLm1pblg9PT1pLncuZ2xvYmFscy5taW5YJiZhLncuZ2xvYmFscy5tYXhYPT09aS53Lmdsb2JhbHMubWF4WCYmYS53Lmdsb2JhbHMudG9vbHRpcC5zZXJpZXNIb3ZlckJ5Q29udGV4dCh7Y2hhcnRDdHg6YSx0dEN0eDphLncuZ2xvYmFscy50b29sdGlwLG9wdDpyLGU6ZX0pfSkpOnRoaXMuc2VyaWVzSG92ZXJCeUNvbnRleHQoe2NoYXJ0Q3R4OnRoaXMuY3R4LHR0Q3R4OnRoaXMudy5nbG9iYWxzLnRvb2x0aXAsb3B0OnQsZTplfSkpfX0se2tleTpcInNlcmllc0hvdmVyQnlDb250ZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jaGFydEN0eCxpPXQudHRDdHgsYT10Lm9wdCxzPXQuZSxyPWUudyxvPXRoaXMuZ2V0RWxUb29sdGlwKCk7aWYobyl7aWYoaS50b29sdGlwUmVjdD17eDowLHk6MCx0dFdpZHRoOm8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsdHRIZWlnaHQ6by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9LGkuZT1zLGkudG9vbHRpcFV0aWwuaGFzQmFycygpJiYhci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhaS5pc0JhclNoYXJlZClpZih0aGlzLnRDb25maWcub25EYXRhc2V0SG92ZXIuaGlnaGxpZ2h0RGF0YVNlcmllcyluZXcgTihlKS50b2dnbGVTZXJpZXNPbkhvdmVyKHMscy50YXJnZXQucGFyZW50Tm9kZSk7aS5maXhlZFRvb2x0aXAmJmkuZHJhd0ZpeGVkVG9vbHRpcFJlY3QoKSxyLmdsb2JhbHMuYXhpc0NoYXJ0cz9pLmF4aXNDaGFydHNUb29sdGlwcyh7ZTpzLG9wdDphLHRvb2x0aXBSZWN0OmkudG9vbHRpcFJlY3R9KTppLm5vbkF4aXNDaGFydHNUb29sdGlwcyh7ZTpzLG9wdDphLHRvb2x0aXBSZWN0OmkudG9vbHRpcFJlY3R9KX19fSx7a2V5OlwiYXhpc0NoYXJ0c1Rvb2x0aXBzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXQuZSxzPXQub3B0LHI9dGhpcy53LG89cy5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1cInRvdWNobW92ZVwiPT09YS50eXBlP2EudG91Y2hlc1swXS5jbGllbnRYOmEuY2xpZW50WCxsPVwidG91Y2htb3ZlXCI9PT1hLnR5cGU/YS50b3VjaGVzWzBdLmNsaWVudFk6YS5jbGllbnRZO2lmKHRoaXMuY2xpZW50WT1sLHRoaXMuY2xpZW50WD1uLHIuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PS0xLHIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PS0xLGw8by50b3B8fGw+by50b3Arby5oZWlnaHQpdGhpcy5oYW5kbGVNb3VzZU91dChzKTtlbHNle2lmKEFycmF5LmlzQXJyYXkodGhpcy50Q29uZmlnLmVuYWJsZWRPblNlcmllcykmJiFyLmNvbmZpZy50b29sdGlwLnNoYXJlZCl7dmFyIGg9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCk7aWYodGhpcy50Q29uZmlnLmVuYWJsZWRPblNlcmllcy5pbmRleE9mKGgpPDApcmV0dXJuIHZvaWQgdGhpcy5oYW5kbGVNb3VzZU91dChzKX12YXIgYz10aGlzLmdldEVsVG9vbHRpcCgpLGQ9dGhpcy5nZXRFbFhDcm9zc2hhaXJzKCksZz1yLmdsb2JhbHMueHlDaGFydHN8fFwiYmFyXCI9PT1yLmNvbmZpZy5jaGFydC50eXBlJiYhci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJnRoaXMudENvbmZpZy5zaGFyZWR8fHIuZ2xvYmFscy5jb21ib0NoYXJ0cyYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCk7aWYoXCJtb3VzZW1vdmVcIj09PWEudHlwZXx8XCJ0b3VjaG1vdmVcIj09PWEudHlwZXx8XCJtb3VzZXVwXCI9PT1hLnR5cGUpe2lmKHIuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoK3IuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMubGVuZ3RoPT09ci5nbG9iYWxzLnNlcmllcy5sZW5ndGgpcmV0dXJuO251bGwhPT1kJiZkLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKTt2YXIgdT10aGlzLnlheGlzVG9vbHRpcHMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hMD09PXR9KSk7aWYobnVsbCE9PXRoaXMueWNyb3NzaGFpcnMmJnUubGVuZ3RoJiZ0aGlzLnljcm9zc2hhaXJzLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxnJiYhdGhpcy5zaG93T25JbnRlcnNlY3QpdGhpcy5oYW5kbGVTdGlja3lUb29sdGlwKGEsbixsLHMpO2Vsc2UgaWYoXCJoZWF0bWFwXCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcInRyZWVtYXBcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciBwPXRoaXMuaW50ZXJzZWN0LmhhbmRsZUhlYXRUcmVlVG9vbHRpcCh7ZTphLG9wdDpzLHg6ZSx5OmksdHlwZTpyLmNvbmZpZy5jaGFydC50eXBlfSk7ZT1wLngsaT1wLnksYy5zdHlsZS5sZWZ0PWUrXCJweFwiLGMuc3R5bGUudG9wPWkrXCJweFwifWVsc2UgdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJnRoaXMuaW50ZXJzZWN0LmhhbmRsZUJhclRvb2x0aXAoe2U6YSxvcHQ6c30pLHRoaXMudG9vbHRpcFV0aWwuaGFzTWFya2VycygpJiZ0aGlzLmludGVyc2VjdC5oYW5kbGVNYXJrZXJUb29sdGlwKHtlOmEsb3B0OnMseDplLHk6aX0pO2lmKHRoaXMueWF4aXNUb29sdGlwcy5sZW5ndGgpZm9yKHZhciBmPTA7ZjxyLmNvbmZpZy55YXhpcy5sZW5ndGg7ZisrKXRoaXMuYXhlc1Rvb2x0aXAuZHJhd1lheGlzVG9vbHRpcFRleHQoZixsLHRoaXMueHlSYXRpb3MpO3MudG9vbHRpcEVsLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKX1lbHNlXCJtb3VzZW91dFwiIT09YS50eXBlJiZcInRvdWNoZW5kXCIhPT1hLnR5cGV8fHRoaXMuaGFuZGxlTW91c2VPdXQocyl9fX0se2tleTpcIm5vbkF4aXNDaGFydHNUb29sdGlwc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZSxpPXQub3B0LGE9dC50b29sdGlwUmVjdCxzPXRoaXMudyxyPWkucGF0aHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpLG89dGhpcy5nZXRFbFRvb2x0aXAoKSxuPXMuZ2xvYmFscy5kb20uZWxXcmFwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKFwibW91c2Vtb3ZlXCI9PT1lLnR5cGV8fFwidG91Y2htb3ZlXCI9PT1lLnR5cGUpe28uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6cGFyc2VJbnQociwxMCktMSxzaGFyZWQ6ITF9KTt2YXIgbD1zLmdsb2JhbHMuY2xpZW50WC1uLmxlZnQtYS50dFdpZHRoLzIsaD1zLmdsb2JhbHMuY2xpZW50WS1uLnRvcC1hLnR0SGVpZ2h0LTEwO2lmKG8uc3R5bGUubGVmdD1sK1wicHhcIixvLnN0eWxlLnRvcD1oK1wicHhcIixzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKXt2YXIgYz1yLTEsZD0oMCxzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKSh0aGlzLmxlZ2VuZExhYmVsc1tjXS5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKSx7c2VyaWVzSW5kZXg6YyxkYXRhUG9pbnRJbmRleDpjLHc6c30pO3RoaXMubGVnZW5kTGFiZWxzW2NdLmlubmVySFRNTD1kfX1lbHNlXCJtb3VzZW91dFwiIT09ZS50eXBlJiZcInRvdWNoZW5kXCIhPT1lLnR5cGV8fChvLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyJiZ0aGlzLmxlZ2VuZExhYmVscy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpO3QuaW5uZXJIVE1MPWRlY29kZVVSSUNvbXBvbmVudChlKX0pKSl9fSx7a2V5OlwiaGFuZGxlU3RpY2t5VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPXRoaXMudG9vbHRpcFV0aWwuZ2V0TmVhcmVzdFZhbHVlcyh7Y29udGV4dDp0aGlzLGhvdmVyQXJlYTphLmhvdmVyQXJlYSxlbEdyaWQ6YS5lbEdyaWQsY2xpZW50WDplLGNsaWVudFk6aX0pLG89ci5qLG49ci5jYXB0dXJlZFNlcmllcztzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmNsdWRlcyhuKSYmKG49bnVsbCk7dmFyIGw9YS5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoci5ob3Zlclg8MHx8ci5ob3Zlclg+bC53aWR0aCl0aGlzLmhhbmRsZU1vdXNlT3V0KGEpO2Vsc2UgaWYobnVsbCE9PW4pdGhpcy5oYW5kbGVTdGlja3lDYXB0dXJlZFNlcmllcyh0LG4sYSxvKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChvKXx8cy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7dmFyIGg9cy5nbG9iYWxzLnNlcmllcy5maW5kSW5kZXgoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIXMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKGUpfSkpO3RoaXMuY3JlYXRlKHQsdGhpcyxoLG8sYS50dEl0ZW1zKX19fSx7a2V5OlwiaGFuZGxlU3RpY2t5Q2FwdHVyZWRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLnc7aWYoIXRoaXMudENvbmZpZy5zaGFyZWQmJm51bGw9PT1zLmdsb2JhbHMuc2VyaWVzW2VdW2FdKXJldHVybiB2b2lkIHRoaXMuaGFuZGxlTW91c2VPdXQoaSk7aWYodm9pZCAwIT09cy5nbG9iYWxzLnNlcmllc1tlXVthXSl0aGlzLnRDb25maWcuc2hhcmVkJiZ0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAoYSkmJnRoaXMudG9vbHRpcFV0aWwuaXNJbml0aWFsU2VyaWVzU2FtZUxlbigpP3RoaXMuY3JlYXRlKHQsdGhpcyxlLGEsaS50dEl0ZW1zKTp0aGlzLmNyZWF0ZSh0LHRoaXMsZSxhLGkudHRJdGVtcywhMSk7ZWxzZSBpZih0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAoYSkpe3ZhciByPXMuZ2xvYmFscy5zZXJpZXMuZmluZEluZGV4KChmdW5jdGlvbih0LGUpe3JldHVybiFzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmNsdWRlcyhlKX0pKTt0aGlzLmNyZWF0ZSh0LHRoaXMscixhLGkudHRJdGVtcyl9fX0se2tleTpcImRlYWN0aXZhdGVIb3ZlckZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPXQuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIiksYT0wO2E8aS5sZW5ndGg7YSsrKWUucGF0aE1vdXNlTGVhdmUoaVthXSl9fSx7a2V5OlwiaGFuZGxlTW91c2VPdXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLmdldEVsWENyb3NzaGFpcnMoKTtpZih0LnRvb2x0aXBFbC5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy5kZWFjdGl2YXRlSG92ZXJGaWx0ZXIoKSxcImJ1YmJsZVwiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmdGhpcy5tYXJrZXIucmVzZXRQb2ludHNTaXplKCksbnVsbCE9PWkmJmkuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLG51bGwhPT10aGlzLnljcm9zc2hhaXJzJiZ0aGlzLnljcm9zc2hhaXJzLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmdGhpcy54YXhpc1Rvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMueWF4aXNUb29sdGlwcy5sZW5ndGgpe251bGw9PT10aGlzLnlheGlzVFRFbHMmJih0aGlzLnlheGlzVFRFbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcFwiKSk7Zm9yKHZhciBhPTA7YTx0aGlzLnlheGlzVFRFbHMubGVuZ3RoO2ErKyl0aGlzLnlheGlzVFRFbHNbYV0uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpfWUuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXImJnRoaXMubGVnZW5kTGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIik7dC5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KGUpfSkpfX0se2tleTpcIm1hcmtlckNsaWNrXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudztcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMubWFya2VyQ2xpY2smJmEuY29uZmlnLmNoYXJ0LmV2ZW50cy5tYXJrZXJDbGljayh0LHRoaXMuY3R4LHtzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OmksdzphfSksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcIm1hcmtlckNsaWNrXCIsW3QsdGhpcy5jdHgse3Nlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OmF9XSl9fSx7a2V5OlwiY3JlYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEscyxyKXt2YXIgbyxuLGwsaCxjLGQsZyx1LHAsZix4LGIsdix5LHcsayxBPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTpudWxsLFM9dGhpcy53LEM9aTtcIm1vdXNldXBcIj09PXQudHlwZSYmdGhpcy5tYXJrZXJDbGljayh0LGEscyksbnVsbD09PUEmJihBPXRoaXMudENvbmZpZy5zaGFyZWQpO3ZhciBMPXRoaXMudG9vbHRpcFV0aWwuaGFzTWFya2VycyhhKSxQPXRoaXMudG9vbHRpcFV0aWwuZ2V0RWxCYXJzKCk7aWYoUy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlcil7dmFyIEk9Uy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlcixNPUFycmF5LmZyb20odGhpcy5sZWdlbmRMYWJlbHMpO00uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKTt0LmlubmVySFRNTD1kZWNvZGVVUklDb21wb25lbnQoZSl9KSk7Zm9yKHZhciBUPTA7VDxNLmxlbmd0aDtUKyspe3ZhciB6PU1bVF0sWD1wYXJzZUludCh6LmdldEF0dHJpYnV0ZShcImlcIiksMTApLEU9ZGVjb2RlVVJJQ29tcG9uZW50KHouZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIikpLFk9SShFLHtzZXJpZXNJbmRleDpBP1g6YSxkYXRhUG9pbnRJbmRleDpzLHc6U30pO2lmKEEpei5pbm5lckhUTUw9Uy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihYKTwwP1k6RTtlbHNlIGlmKHouaW5uZXJIVE1MPVg9PT1hP1k6RSxhPT09WClicmVha319dmFyIEY9ZShlKHt0dEl0ZW1zOnIsaTphLGo6c30sdm9pZCAwIT09KG51bGw9PT0obz1TLmdsb2JhbHMuc2VyaWVzUmFuZ2UpfHx2b2lkIDA9PT1vfHxudWxsPT09KG49b1thXSl8fHZvaWQgMD09PW58fG51bGw9PT0obD1uW3NdKXx8dm9pZCAwPT09bHx8bnVsbD09PShoPWwueVswXSl8fHZvaWQgMD09PWg/dm9pZCAwOmgueTEpJiZ7eTE6bnVsbD09PShjPVMuZ2xvYmFscy5zZXJpZXNSYW5nZSl8fHZvaWQgMD09PWN8fG51bGw9PT0oZD1jW2FdKXx8dm9pZCAwPT09ZHx8bnVsbD09PShnPWRbc10pfHx2b2lkIDA9PT1nfHxudWxsPT09KHU9Zy55WzBdKXx8dm9pZCAwPT09dT92b2lkIDA6dS55MX0pLHZvaWQgMCE9PShudWxsPT09KHA9Uy5nbG9iYWxzLnNlcmllc1JhbmdlKXx8dm9pZCAwPT09cHx8bnVsbD09PShmPXBbYV0pfHx2b2lkIDA9PT1mfHxudWxsPT09KHg9ZltzXSl8fHZvaWQgMD09PXh8fG51bGw9PT0oYj14LnlbMF0pfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLnkyKSYme3kyOm51bGw9PT0odj1TLmdsb2JhbHMuc2VyaWVzUmFuZ2UpfHx2b2lkIDA9PT12fHxudWxsPT09KHk9dlthXSl8fHZvaWQgMD09PXl8fG51bGw9PT0odz15W3NdKXx8dm9pZCAwPT09d3x8bnVsbD09PShrPXcueVswXSl8fHZvaWQgMD09PWs/dm9pZCAwOmsueTJ9KTtpZihBKXtpZihDLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKGUoZSh7fSxGKSx7fSx7c2hhcmVkOiF0aGlzLnNob3dPbkludGVyc2VjdCYmdGhpcy50Q29uZmlnLnNoYXJlZH0pKSxMKVMuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplPjA/Qy5tYXJrZXIuZW5sYXJnZVBvaW50cyhzKTpDLnRvb2x0aXBQb3NpdGlvbi5tb3ZlRHluYW1pY1BvaW50c09uSG92ZXIocyk7ZWxzZSBpZih0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmKHRoaXMuYmFyU2VyaWVzSGVpZ2h0PXRoaXMudG9vbHRpcFV0aWwuZ2V0QmFyc0hlaWdodChQKSx0aGlzLmJhclNlcmllc0hlaWdodD4wKSl7dmFyIFI9bmV3IG0odGhpcy5jdHgpLEg9Uy5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVtqPSdcIi5jb25jYXQocyxcIiddXCIpKTt0aGlzLmRlYWN0aXZhdGVIb3ZlckZpbHRlcigpLHRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMocyxhKTtmb3IodmFyIEQ9MDtEPEgubGVuZ3RoO0QrKylSLnBhdGhNb3VzZUVudGVyKEhbRF0pfX1lbHNlIEMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoZSh7c2hhcmVkOiExfSxGKSksdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJkMudG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMocyxhKSxMJiZDLnRvb2x0aXBQb3NpdGlvbi5tb3ZlTWFya2VycyhhLHMpfX1dKSx0fSgpLHZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmJhckN0eD1lLHRoaXMudG90YWxGb3JtYXR0ZXI9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy50b3RhbC5mb3JtYXR0ZXIsdGhpcy50b3RhbEZvcm1hdHRlcnx8KHRoaXMudG90YWxGb3JtYXR0ZXI9dGhpcy53LmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcil9cmV0dXJuIHIodCxbe2tleTpcImhhbmRsZUJhckRhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LngsaT10LnksYT10LnkxLHM9dC55MixyPXQuaSxvPXQuaixuPXQucmVhbEluZGV4LGw9dC5ncm91cEluZGV4LGg9dC5zZXJpZXMsYz10LmJhckhlaWdodCxkPXQuYmFyV2lkdGgsZz10LmJhclhQb3NpdGlvbix1PXQuYmFyWVBvc2l0aW9uLHA9dC52aXNpYmxlU2VyaWVzLGY9dC5yZW5kZXJlZFBhdGgseD10aGlzLncsYj1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLHY9QXJyYXkuaXNBcnJheSh0aGlzLmJhckN0eC5zdHJva2VXaWR0aCk/dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGhbbl06dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgseT1lK3BhcnNlRmxvYXQoZCpwKSx3PWkrcGFyc2VGbG9hdChjKnApO3guZ2xvYmFscy5pc1hOdW1lcmljJiYheC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHk9ZStwYXJzZUZsb2F0KGQqKHArMSkpLHc9aStwYXJzZUZsb2F0KGMqKHArMSkpLXYpO3ZhciBrLEE9bnVsbCxTPWUsQz1pLEw9e30sUD14LmNvbmZpZy5kYXRhTGFiZWxzLEk9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLE09dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLnRvdGFsO3ZvaWQgMCE9PXUmJnRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJih3PXUsQz11KSx2b2lkIDAhPT1nJiZ0aGlzLmJhckN0eC5pc1ZlcnRpY2FsR3JvdXBlZFJhbmdlQmFyJiYoeT1nLFM9Zyk7dmFyIFQ9UC5vZmZzZXRYLHo9UC5vZmZzZXRZLFg9e3dpZHRoOjAsaGVpZ2h0OjB9O2lmKHguY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCl7dmFyIEU9dGhpcy5iYXJDdHguc2VyaWVzW3JdW29dO1g9Yi5nZXRUZXh0UmVjdHMoeC5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0oRSkscGFyc2VGbG9hdChQLnN0eWxlLmZvbnRTaXplKSl9dmFyIFk9e3g6ZSx5OmksaTpyLGo6byxyZWFsSW5kZXg6bixncm91cEluZGV4Omx8fC0xLHJlbmRlcmVkUGF0aDpmLGJjeDp5LGJjeTp3LGJhckhlaWdodDpjLGJhcldpZHRoOmQsdGV4dFJlY3RzOlgsc3Ryb2tlV2lkdGg6dixkYXRhTGFiZWxzWDpTLGRhdGFMYWJlbHNZOkMsZGF0YUxhYmVsc0NvbmZpZzpQLGJhckRhdGFMYWJlbHNDb25maWc6SSxiYXJUb3RhbERhdGFMYWJlbHNDb25maWc6TSxvZmZYOlQsb2ZmWTp6fTtyZXR1cm4gTD10aGlzLmJhckN0eC5pc0hvcml6b250YWw/dGhpcy5jYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uKFkpOnRoaXMuY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvbihZKSxmLmF0dHIoe2N5OkwuYmN5LGN4OkwuYmN4LGo6byx2YWw6aFtyXVtvXSxiYXJIZWlnaHQ6YyxiYXJXaWR0aDpkfSksaz10aGlzLmRyYXdDYWxjdWxhdGVkRGF0YUxhYmVscyh7eDpMLmRhdGFMYWJlbHNYLHk6TC5kYXRhTGFiZWxzWSx2YWw6dGhpcy5iYXJDdHguaXNSYW5nZUJhcj9bYSxzXTpoW3JdW29dLGk6bixqOm8sYmFyV2lkdGg6ZCxiYXJIZWlnaHQ6Yyx0ZXh0UmVjdHM6WCxkYXRhTGFiZWxzQ29uZmlnOlB9KSx4LmNvbmZpZy5jaGFydC5zdGFja2VkJiZNLmVuYWJsZWQmJihBPXRoaXMuZHJhd1RvdGFsRGF0YUxhYmVscyh7eDpMLnRvdGFsRGF0YUxhYmVsc1gseTpMLnRvdGFsRGF0YUxhYmVsc1kscmVhbEluZGV4Om4sdGV4dEFuY2hvcjpMLnRvdGFsRGF0YUxhYmVsc0FuY2hvcix2YWw6dGhpcy5nZXRTdGFja2VkVG90YWxEYXRhTGFiZWwoe3JlYWxJbmRleDpuLGo6b30pLGRhdGFMYWJlbHNDb25maWc6UCxiYXJUb3RhbERhdGFMYWJlbHNDb25maWc6TX0pKSx7ZGF0YUxhYmVsczprLHRvdGFsRGF0YUxhYmVsczpBfX19LHtrZXk6XCJnZXRTdGFja2VkVG90YWxEYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LnJlYWxJbmRleCxhPXQuaixzPXRoaXMudyxyPXRoaXMuYmFyQ3R4LnN0YWNrZWRTZXJpZXNUb3RhbHNbYV07cmV0dXJuIHRoaXMudG90YWxGb3JtYXR0ZXImJihyPXRoaXMudG90YWxGb3JtYXR0ZXIocixlKGUoe30scykse30se3Nlcmllc0luZGV4OmksZGF0YVBvaW50SW5kZXg6YSx3OnN9KSkpLHJ9fSx7a2V5OlwiY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10aGlzLncscz10Lmkscj10Lmosbz10LnJlYWxJbmRleCxuPXQuZ3JvdXBJbmRleCxsPXQueSxoPXQuYmN4LGM9dC5iYXJXaWR0aCxkPXQuYmFySGVpZ2h0LGc9dC50ZXh0UmVjdHMsdT10LmRhdGFMYWJlbHNYLHA9dC5kYXRhTGFiZWxzWSxmPXQuZGF0YUxhYmVsc0NvbmZpZyx4PXQuYmFyRGF0YUxhYmVsc0NvbmZpZyxiPXQuYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnLHY9dC5zdHJva2VXaWR0aCx5PXQub2ZmWCx3PXQub2ZmWTtkPU1hdGguYWJzKGQpO3ZhciBrPVwidmVydGljYWxcIj09PWEuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm9yaWVudGF0aW9uLEE9dGhpcy5iYXJDdHguYmFySGVscGVycy5nZXRaZXJvVmFsdWVFbmNvdW50ZXJzKHtpOnMsajpyfSkuemVyb0VuY291bnRlcnM7aD1oLXYvMisoLTEhPT1uP24qYzowKTt2YXIgUz1hLmdsb2JhbHMuZ3JpZFdpZHRoL2EuZ2xvYmFscy5kYXRhUG9pbnRzO2lmKHRoaXMuYmFyQ3R4LmlzVmVydGljYWxHcm91cGVkUmFuZ2VCYXI/dSs9Yy8yOih1PWEuZ2xvYmFscy5pc1hOdW1lcmljP2gtYy8yK3k6aC1TK2MvMit5LEE+MCYmYS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkJiYodS09YypBKSksayl7dT11K2cuaGVpZ2h0LzItdi8yLTJ9dmFyIEM9dGhpcy5iYXJDdHguc2VyaWVzW3NdW3JdPDAsTD1sO3N3aXRjaCh0aGlzLmJhckN0eC5pc1JldmVyc2VkJiYoTD1sLWQrKEM/MipkOjApLGwtPWQpLHgucG9zaXRpb24pe2Nhc2VcImNlbnRlclwiOnA9az9DP0wtZC8yK3c6TCtkLzItdzpDP0wtZC8yK2cuaGVpZ2h0LzIrdzpMK2QvMitnLmhlaWdodC8yLXc7YnJlYWs7Y2FzZVwiYm90dG9tXCI6cD1rP0M/TC1kK3c6TCtkLXc6Qz9MLWQrZy5oZWlnaHQrdit3OkwrZC1nLmhlaWdodC8yK3YtdzticmVhaztjYXNlXCJ0b3BcIjpwPWs/Qz9MK3c6TC13OkM/TC1nLmhlaWdodC8yLXc6TCtnLmhlaWdodCt3fWlmKHRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09byYmYi5lbmFibGVkKXt2YXIgUD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLmdldFRleHRSZWN0cyh0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4Om8sajpyfSksZi5mb250U2l6ZSk7ZT1DP0wtUC5oZWlnaHQvMi13LWIub2Zmc2V0WSsxODpMK1AuaGVpZ2h0K3crYi5vZmZzZXRZLTE4LGk9dStiLm9mZnNldFh9cmV0dXJuIGEuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChwPDA/cD0wK3Y6cCtnLmhlaWdodC8zPmEuZ2xvYmFscy5ncmlkSGVpZ2h0JiYocD1hLmdsb2JhbHMuZ3JpZEhlaWdodC12KSkse2JjeDpoLGJjeTpsLGRhdGFMYWJlbHNYOnUsZGF0YUxhYmVsc1k6cCx0b3RhbERhdGFMYWJlbHNYOmksdG90YWxEYXRhTGFiZWxzWTplLHRvdGFsRGF0YUxhYmVsc0FuY2hvcjpcIm1pZGRsZVwifX19LHtrZXk6XCJjYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dC54LGE9dC5pLHM9dC5qLHI9dC5yZWFsSW5kZXgsbz10Lmdyb3VwSW5kZXgsbj10LmJjeSxsPXQuYmFySGVpZ2h0LGg9dC5iYXJXaWR0aCxjPXQudGV4dFJlY3RzLGQ9dC5kYXRhTGFiZWxzWCxnPXQuc3Ryb2tlV2lkdGgsdT10LmRhdGFMYWJlbHNDb25maWcscD10LmJhckRhdGFMYWJlbHNDb25maWcsZj10LmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyx4PXQub2ZmWCxiPXQub2ZmWSx2PWUuZ2xvYmFscy5ncmlkSGVpZ2h0L2UuZ2xvYmFscy5kYXRhUG9pbnRzO2g9TWF0aC5hYnMoaCk7dmFyIHksdyxrPShuKz0tMSE9PW8/bypsOjApLSh0aGlzLmJhckN0eC5pc1JhbmdlQmFyPzA6dikrbC8yK2MuaGVpZ2h0LzIrYi0zLEE9XCJzdGFydFwiLFM9dGhpcy5iYXJDdHguc2VyaWVzW2FdW3NdPDAsQz1pO3N3aXRjaCh0aGlzLmJhckN0eC5pc1JldmVyc2VkJiYoQz1pK2gtKFM/MipoOjApLGk9ZS5nbG9iYWxzLmdyaWRXaWR0aC1oKSxwLnBvc2l0aW9uKXtjYXNlXCJjZW50ZXJcIjpkPVM/QytoLzIteDpNYXRoLm1heChjLndpZHRoLzIsQy1oLzIpK3g7YnJlYWs7Y2FzZVwiYm90dG9tXCI6ZD1TP0MraC1nLU1hdGgucm91bmQoYy53aWR0aC8yKS14OkMtaCtnK01hdGgucm91bmQoYy53aWR0aC8yKSt4O2JyZWFrO2Nhc2VcInRvcFwiOmQ9Uz9DLWcrTWF0aC5yb3VuZChjLndpZHRoLzIpLXg6Qy1nLU1hdGgucm91bmQoYy53aWR0aC8yKSt4fWlmKHRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09ciYmZi5lbmFibGVkKXt2YXIgTD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLmdldFRleHRSZWN0cyh0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4OnIsajpzfSksdS5mb250U2l6ZSk7Uz8oeT1DLWcrTWF0aC5yb3VuZChMLndpZHRoLzIpLXgtZi5vZmZzZXRYLTE1LEE9XCJlbmRcIik6eT1DLWctTWF0aC5yb3VuZChMLndpZHRoLzIpK3grZi5vZmZzZXRYKzE1LHc9aytmLm9mZnNldFl9cmV0dXJuIGUuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChkPDA/ZD1kK2Mud2lkdGgrZzpkK2Mud2lkdGgvMj5lLmdsb2JhbHMuZ3JpZFdpZHRoJiYoZD1lLmdsb2JhbHMuZ3JpZFdpZHRoLWMud2lkdGgtZykpLHtiY3g6aSxiY3k6bixkYXRhTGFiZWxzWDpkLGRhdGFMYWJlbHNZOmssdG90YWxEYXRhTGFiZWxzWDp5LHRvdGFsRGF0YUxhYmVsc1k6dyx0b3RhbERhdGFMYWJlbHNBbmNob3I6QX19fSx7a2V5OlwiZHJhd0NhbGN1bGF0ZWREYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGk9dC54LGE9dC55LHM9dC52YWwscj10Lmksbz10Lmosbj10LnRleHRSZWN0cyxsPXQuYmFySGVpZ2h0LGg9dC5iYXJXaWR0aCxjPXQuZGF0YUxhYmVsc0NvbmZpZyxkPXRoaXMudyxnPVwicm90YXRlKDApXCI7XCJ2ZXJ0aWNhbFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb24mJihnPVwicm90YXRlKC05MCwgXCIuY29uY2F0KGksXCIsIFwiKS5jb25jYXQoYSxcIilcIikpO3ZhciB1PW5ldyBPKHRoaXMuYmFyQ3R4LmN0eCkscD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLGY9Yy5mb3JtYXR0ZXIseD1udWxsLGI9ZC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihyKT4tMTtpZihjLmVuYWJsZWQmJiFiKXt4PXAuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wiLHRyYW5zZm9ybTpnfSk7dmFyIHY9XCJcIjt2b2lkIDAhPT1zJiYodj1mKHMsZShlKHt9LGQpLHt9LHtzZXJpZXNJbmRleDpyLGRhdGFQb2ludEluZGV4Om8sdzpkfSkpKSwhcyYmZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkJiYodj1cIlwiKTt2YXIgeT1kLmdsb2JhbHMuc2VyaWVzW3JdW29dPDAsdz1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5wb3NpdGlvbjtpZihcInZlcnRpY2FsXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbiYmKFwidG9wXCI9PT13JiYoYy50ZXh0QW5jaG9yPXk/XCJlbmRcIjpcInN0YXJ0XCIpLFwiY2VudGVyXCI9PT13JiYoYy50ZXh0QW5jaG9yPVwibWlkZGxlXCIpLFwiYm90dG9tXCI9PT13JiYoYy50ZXh0QW5jaG9yPXk/XCJlbmRcIjpcInN0YXJ0XCIpKSx0aGlzLmJhckN0eC5pc1JhbmdlQmFyJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMuaGlkZU92ZXJmbG93aW5nTGFiZWxzKWg8cC5nZXRUZXh0UmVjdHModixwYXJzZUZsb2F0KGMuc3R5bGUuZm9udFNpemUpKS53aWR0aCYmKHY9XCJcIik7ZC5jb25maWcuY2hhcnQuc3RhY2tlZCYmdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLmhpZGVPdmVyZmxvd2luZ0xhYmVscyYmKHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD9uLndpZHRoLzEuNj5NYXRoLmFicyhoKSYmKHY9XCJcIik6bi5oZWlnaHQvMS42Pk1hdGguYWJzKGwpJiYodj1cIlwiKSk7dmFyIGs9ZSh7fSxjKTt0aGlzLmJhckN0eC5pc0hvcml6b250YWwmJnM8MCYmKFwic3RhcnRcIj09PWMudGV4dEFuY2hvcj9rLnRleHRBbmNob3I9XCJlbmRcIjpcImVuZFwiPT09Yy50ZXh0QW5jaG9yJiYoay50ZXh0QW5jaG9yPVwic3RhcnRcIikpLHUucGxvdERhdGFMYWJlbHNUZXh0KHt4OmkseTphLHRleHQ6dixpOnIsajpvLHBhcmVudDp4LGRhdGFMYWJlbHNDb25maWc6ayxhbHdheXNEcmF3RGF0YUxhYmVsOiEwLG9mZnNldENvcnJlY3Rpb246ITB9KX1yZXR1cm4geH19LHtrZXk6XCJkcmF3VG90YWxEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LngsYT10Lnkscz10LnZhbCxyPXQucmVhbEluZGV4LG89dC50ZXh0QW5jaG9yLG49dC5iYXJUb3RhbERhdGFMYWJlbHNDb25maWcsbD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpO3JldHVybiBuLmVuYWJsZWQmJnZvaWQgMCE9PWkmJnZvaWQgMCE9PWEmJnRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09ciYmKGU9bC5kcmF3VGV4dCh7eDppLHk6YSxmb3JlQ29sb3I6bi5zdHlsZS5jb2xvcix0ZXh0OnMsdGV4dEFuY2hvcjpvLGZvbnRGYW1pbHk6bi5zdHlsZS5mb250RmFtaWx5LGZvbnRTaXplOm4uc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDpuLnN0eWxlLmZvbnRXZWlnaHR9KSksZX19XSksdH0oKSxtdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5iYXJDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFZhcmlhYmxlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLmJhckN0eC5zZXJpZXM9dCx0aGlzLmJhckN0eC50b3RhbEl0ZW1zPTAsdGhpcy5iYXJDdHguc2VyaWVzTGVuPTAsdGhpcy5iYXJDdHgudmlzaWJsZUk9LTEsdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zPTE7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspaWYodFtpXS5sZW5ndGg+MCYmKHRoaXMuYmFyQ3R4LnNlcmllc0xlbj10aGlzLmJhckN0eC5zZXJpZXNMZW4rMSx0aGlzLmJhckN0eC50b3RhbEl0ZW1zKz10W2ldLmxlbmd0aCksZS5nbG9iYWxzLmlzWE51bWVyaWMpZm9yKHZhciBhPTA7YTx0W2ldLmxlbmd0aDthKyspZS5nbG9iYWxzLnNlcmllc1hbaV1bYV0+ZS5nbG9iYWxzLm1pblgmJmUuZ2xvYmFscy5zZXJpZXNYW2ldW2FdPGUuZ2xvYmFscy5tYXhYJiZ0aGlzLmJhckN0eC52aXNpYmxlSXRlbXMrKztlbHNlIHRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcz1lLmdsb2JhbHMuZGF0YVBvaW50czswPT09dGhpcy5iYXJDdHguc2VyaWVzTGVuJiYodGhpcy5iYXJDdHguc2VyaWVzTGVuPTEpLHRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcz1bXSxlLmdsb2JhbHMuY29tYm9DaGFydHN8fHRoaXMuY2hlY2taZXJvU2VyaWVzKHtzZXJpZXM6dH0pfX0se2tleTpcImluaXRpYWxQb3NpdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxhLHMscixvLG4sbD10aGlzLncsaD1sLmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmJhckN0eC5pc1JhbmdlQmFyJiYoaD1sLmdsb2JhbHMubGFiZWxzLmxlbmd0aCk7dmFyIGM9dGhpcy5iYXJDdHguc2VyaWVzTGVuO2lmKGwuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cyYmKGM9MSksdGhpcy5iYXJDdHguaXNIb3Jpem9udGFsKXM9KGk9bC5nbG9iYWxzLmdyaWRIZWlnaHQvaCkvYyxsLmdsb2JhbHMuaXNYTnVtZXJpYyYmKHM9KGk9bC5nbG9iYWxzLmdyaWRIZWlnaHQvdGhpcy5iYXJDdHgudG90YWxJdGVtcykvdGhpcy5iYXJDdHguc2VyaWVzTGVuKSxzPXMqcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5iYXJIZWlnaHQsMTApLzEwMCwtMT09PVN0cmluZyh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmJhckhlaWdodCkuaW5kZXhPZihcIiVcIikmJihzPXBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0LDEwKSksbj10aGlzLmJhckN0eC5iYXNlTGluZUludmVydGVkWStsLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsodGhpcy5iYXJDdHguaXNSZXZlcnNlZD9sLmdsb2JhbHMuZ3JpZFdpZHRoOjApLSh0aGlzLmJhckN0eC5pc1JldmVyc2VkPzIqdGhpcy5iYXJDdHguYmFzZUxpbmVJbnZlcnRlZFk6MCksdGhpcy5iYXJDdHguaXNGdW5uZWwmJihuPWwuZ2xvYmFscy5ncmlkV2lkdGgvMiksZT0oaS1zKnRoaXMuYmFyQ3R4LnNlcmllc0xlbikvMjtlbHNle2lmKGE9bC5nbG9iYWxzLmdyaWRXaWR0aC90aGlzLmJhckN0eC52aXNpYmxlSXRlbXMsbC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoYT1sLmdsb2JhbHMuZ3JpZFdpZHRoL2wuZ2xvYmFscy5kYXRhUG9pbnRzKSxyPWEvYypwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDAsbC5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBkPXRoaXMuYmFyQ3R4LnhSYXRpbztsLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihkPXRoaXMuYmFyQ3R4LmluaXRpYWxYUmF0aW8pLGwuZ2xvYmFscy5taW5YRGlmZiYmLjUhPT1sLmdsb2JhbHMubWluWERpZmYmJmwuZ2xvYmFscy5taW5YRGlmZi9kPjAmJihhPWwuZ2xvYmFscy5taW5YRGlmZi9kKSwocj1hL2MqcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkvMTAwKTwxJiYocj0xKX0tMT09PVN0cmluZyh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoKS5pbmRleE9mKFwiJVwiKSYmKHI9cGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkpLG89bC5nbG9iYWxzLmdyaWRIZWlnaHQtdGhpcy5iYXJDdHguYmFzZUxpbmVZW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdLSh0aGlzLmJhckN0eC5pc1JldmVyc2VkP2wuZ2xvYmFscy5ncmlkSGVpZ2h0OjApKyh0aGlzLmJhckN0eC5pc1JldmVyc2VkPzIqdGhpcy5iYXJDdHguYmFzZUxpbmVZW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdOjApLHQ9bC5nbG9iYWxzLnBhZEhvcml6b250YWwrKGEtcip0aGlzLmJhckN0eC5zZXJpZXNMZW4pLzJ9cmV0dXJue3g6dCx5OmUseURpdmlzaW9uOmkseERpdmlzaW9uOmEsYmFySGVpZ2h0OnMsYmFyV2lkdGg6cix6ZXJvSDpvLHplcm9XOm59fX0se2tleTpcImluaXRpYWxpemVTdGFja2VkUHJldlZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10Lnc7ZS5nbG9iYWxzLmhhc1Nlcmllc0dyb3Vwcz9lLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV18fCh0W2VdPXt9KSx0W2VdLnByZXZZPVtdLHRbZV0ucHJldlg9W10sdFtlXS5wcmV2WUY9W10sdFtlXS5wcmV2WEY9W10sdFtlXS5wcmV2WVZhbD1bXSx0W2VdLnByZXZYVmFsPVtdfSkpOih0LnByZXZZPVtdLHQucHJldlg9W10sdC5wcmV2WUY9W10sdC5wcmV2WEY9W10sdC5wcmV2WVZhbD1bXSx0LnByZXZYVmFsPVtdKX19LHtrZXk6XCJpbml0aWFsaXplU3RhY2tlZFhZVmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudztlLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzP2UuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXXx8KHRbZV09e30pLHRbZV0ueEFycmo9W10sdFtlXS54QXJyakY9W10sdFtlXS54QXJyalZhbD1bXSx0W2VdLnlBcnJqPVtdLHRbZV0ueUFycmpGPVtdLHRbZV0ueUFycmpWYWw9W119KSk6KHQueEFycmo9W10sdC54QXJyakY9W10sdC54QXJyalZhbD1bXSx0LnlBcnJqPVtdLHQueUFycmpGPVtdLHQueUFycmpWYWw9W10pfX0se2tleTpcImdldFBhdGhGaWxsQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcyxyLG8sbixsPXRoaXMudyxoPW5ldyBSKHRoaXMuYmFyQ3R4LmN0eCksYz1udWxsLGQ9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kaXN0cmlidXRlZD9pOmU7dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMucmFuZ2VzLmxlbmd0aD4wJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5yYW5nZXMubWFwKChmdW5jdGlvbihhKXt0W2VdW2ldPj1hLmZyb20mJnRbZV1baV08PWEudG8mJihjPWEuY29sb3IpfSkpO3JldHVybiBsLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSYmbC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0uZmlsbENvbG9yJiYoYz1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS5maWxsQ29sb3IpLGguZmlsbFBhdGgoe3Nlcmllc051bWJlcjp0aGlzLmJhckN0eC5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP2Q6YSxkYXRhUG9pbnRJbmRleDppLGNvbG9yOmMsdmFsdWU6dFtlXVtpXSxmaWxsQ29uZmlnOm51bGw9PT0ocz1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSl8fHZvaWQgMD09PXM/dm9pZCAwOnMuZmlsbCxmaWxsVHlwZTpudWxsIT09KHI9bC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0pJiZ2b2lkIDAhPT1yJiZudWxsIT09KG89ci5maWxsKSYmdm9pZCAwIT09byYmby50eXBlP251bGw9PT0obj1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZmlsbC50eXBlOmwuY29uZmlnLmZpbGwudHlwZX0pfX0se2tleTpcImdldFN0cm9rZVdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPTAscz10aGlzLnc7cmV0dXJuIHRoaXMuYmFyQ3R4LnNlcmllc1t0XVtlXT90aGlzLmJhckN0eC5pc051bGxWYWx1ZT0hMTp0aGlzLmJhckN0eC5pc051bGxWYWx1ZT0hMCxzLmNvbmZpZy5zdHJva2Uuc2hvdyYmKHRoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlfHwoYT1BcnJheS5pc0FycmF5KHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKT90aGlzLmJhckN0eC5zdHJva2VXaWR0aFtpXTp0aGlzLmJhckN0eC5zdHJva2VXaWR0aCkpLGF9fSx7a2V5Olwic2hvdWxkQXBwbHlSYWRpdXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT0hMTtyZXR1cm4gZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1cz4wJiYoZS5jb25maWcuY2hhcnQuc3RhY2tlZCYmXCJsYXN0XCI9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzV2hlblN0YWNrZWQ/dGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT10JiYoaT0hMCk6aT0hMCksaX19LHtrZXk6XCJiYXJCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5qLGk9dC5pLGE9dC54MSxzPXQueDIscj10LnkxLG89dC55MixuPXQuZWxTZXJpZXMsbD10aGlzLncsaD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLGM9bmV3IE4odGhpcy5iYXJDdHguY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpO2lmKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoPjAmJmM9PT1pKXtlPj10aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzLmxlbmd0aCYmKGUlPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoKTt2YXIgZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzW2VdLGc9aC5kcmF3UmVjdCh2b2lkIDAhPT1hP2E6MCx2b2lkIDAhPT1yP3I6MCx2b2lkIDAhPT1zP3M6bC5nbG9iYWxzLmdyaWRXaWR0aCx2b2lkIDAhPT1vP286bC5nbG9iYWxzLmdyaWRIZWlnaHQsdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhclJhZGl1cyxkLHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJPcGFjaXR5KTtuLmFkZChnKSxnLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYmFja2dyb3VuZEJhclwiKX19fSx7a2V5OlwiZ2V0Q29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuYmFyV2lkdGgsYT10LmJhclhQb3NpdGlvbixzPXQueTEscj10LnkyLG89dC5zdHJva2VXaWR0aCxuPXQuc2VyaWVzR3JvdXAsbD10LnJlYWxJbmRleCxoPXQuaSxjPXQuaixkPXQudyxnPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCk7KG89QXJyYXkuaXNBcnJheShvKT9vW2xdOm8pfHwobz0wKTt2YXIgdT1pLHA9YTtudWxsIT09KGU9ZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10pJiZ2b2lkIDAhPT1lJiZlLmNvbHVtbldpZHRoT2Zmc2V0JiYocD1hLWQuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdLmNvbHVtbldpZHRoT2Zmc2V0LzIsdT1pK2QuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdLmNvbHVtbldpZHRoT2Zmc2V0KTt2YXIgZj1wLHg9cCt1O3MrPS4wMDEscis9LjAwMTt2YXIgYj1nLm1vdmUoZixzKSx2PWcubW92ZShmLHMpLHk9Zy5saW5lKHgtbyxzKTtpZihkLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKHY9dGhpcy5iYXJDdHguZ2V0UHJldmlvdXNQYXRoKGwsYywhMSkpLGI9YitnLmxpbmUoZixyKStnLmxpbmUoeC1vLHIpK2cubGluZSh4LW8scykrKFwiYXJvdW5kXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/XCIgWlwiOlwiIHpcIiksdj12K2cubGluZShmLHMpK3kreSt5K3kreStnLmxpbmUoZixzKSsoXCJhcm91bmRcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKSx0aGlzLnNob3VsZEFwcGx5UmFkaXVzKGwpJiYoYj1nLnJvdW5kUGF0aENvcm5lcnMoYixkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzKSksZC5jb25maWcuY2hhcnQuc3RhY2tlZCl7dmFyIHc9dGhpcy5iYXJDdHg7ZC5nbG9iYWxzLmhhc1Nlcmllc0dyb3VwcyYmbiYmKHc9dGhpcy5iYXJDdHhbbl0pLHcueUFycmoucHVzaChyKSx3LnlBcnJqRi5wdXNoKE1hdGguYWJzKHMtcikpLHcueUFycmpWYWwucHVzaCh0aGlzLmJhckN0eC5zZXJpZXNbaF1bY10pfXJldHVybntwYXRoVG86YixwYXRoRnJvbTp2fX19LHtrZXk6XCJnZXRCYXJwYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5iYXJZUG9zaXRpb24sYT10LmJhckhlaWdodCxzPXQueDEscj10LngyLG89dC5zdHJva2VXaWR0aCxuPXQuc2VyaWVzR3JvdXAsbD10LnJlYWxJbmRleCxoPXQuaSxjPXQuaixkPXQudyxnPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCk7KG89QXJyYXkuaXNBcnJheShvKT9vW2xdOm8pfHwobz0wKTt2YXIgdT1pLHA9YTtudWxsIT09KGU9ZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10pJiZ2b2lkIDAhPT1lJiZlLmJhckhlaWdodE9mZnNldCYmKHU9aS1kLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXS5iYXJIZWlnaHRPZmZzZXQvMixwPWErZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10uYmFySGVpZ2h0T2Zmc2V0KTt2YXIgZj11LHg9dStwO3MrPS4wMDEscis9LjAwMTt2YXIgYj1nLm1vdmUocyxmKSx2PWcubW92ZShzLGYpO2QuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYodj10aGlzLmJhckN0eC5nZXRQcmV2aW91c1BhdGgobCxjLCExKSk7dmFyIHk9Zy5saW5lKHMseC1vKTtpZihiPWIrZy5saW5lKHIsZikrZy5saW5lKHIseC1vKSt5KyhcImFyb3VuZFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uP1wiIFpcIjpcIiB6XCIpLHY9ditnLmxpbmUocyxmKSt5K3kreSt5K3krZy5saW5lKHMsZikrKFwiYXJvdW5kXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/XCIgWlwiOlwiIHpcIiksdGhpcy5zaG91bGRBcHBseVJhZGl1cyhsKSYmKGI9Zy5yb3VuZFBhdGhDb3JuZXJzKGIsZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1cykpLGQuY29uZmlnLmNoYXJ0LnN0YWNrZWQpe3ZhciB3PXRoaXMuYmFyQ3R4O2QuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHMmJm4mJih3PXRoaXMuYmFyQ3R4W25dKSx3LnhBcnJqLnB1c2gociksdy54QXJyakYucHVzaChNYXRoLmFicyhzLXIpKSx3LnhBcnJqVmFsLnB1c2godGhpcy5iYXJDdHguc2VyaWVzW2hdW2NdKX1yZXR1cm57cGF0aFRvOmIscGF0aEZyb206dn19fSx7a2V5OlwiY2hlY2taZXJvU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuc2VyaWVzLGk9dGhpcy53LGE9MDthPGUubGVuZ3RoO2ErKyl7Zm9yKHZhciBzPTAscj0wO3I8ZVtpLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO3IrKylzKz1lW2FdW3JdOzA9PT1zJiZ0aGlzLmJhckN0eC56ZXJvU2VyaWVzZXMucHVzaChhKX19fSx7a2V5OlwiZ2V0WEZvclZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdP2U6bnVsbDtyZXR1cm4gbnVsbCE9dCYmKGk9ZSt0L3RoaXMuYmFyQ3R4LmludmVydGVkWVJhdGlvLTIqKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/dC90aGlzLmJhckN0eC5pbnZlcnRlZFlSYXRpbzowKSksaX19LHtrZXk6XCJnZXRZRm9yVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0/ZTpudWxsO3JldHVybiBudWxsIT10JiYoaT1lLXQvdGhpcy5iYXJDdHgueVJhdGlvW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdKzIqKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/dC90aGlzLmJhckN0eC55UmF0aW9bdGhpcy5iYXJDdHgueWF4aXNJbmRleF06MCkpLGl9fSx7a2V5OlwiZ2V0R29hbFZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSxhLHMscil7dmFyIG49dGhpcyxsPXRoaXMudyxoPVtdLGM9ZnVuY3Rpb24oZSxzKXt2YXIgcjtoLnB1c2goKG8ocj17fSx0LFwieFwiPT09dD9uLmdldFhGb3JWYWx1ZShlLGksITEpOm4uZ2V0WUZvclZhbHVlKGUsYSwhMSkpLG8ocixcImF0dHJzXCIscykscikpfTtpZihsLmdsb2JhbHMuc2VyaWVzR29hbHNbc10mJmwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXSYmQXJyYXkuaXNBcnJheShsLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0pJiZsLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7Yyh0LnZhbHVlLHQpfSkpLHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuaXNEdW1iYmVsbCYmbC5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCl7dmFyIGQ9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kdW1iYmVsbENvbG9ycz90aGlzLmJhckN0eC5iYXJPcHRpb25zLmR1bWJiZWxsQ29sb3JzOmwuZ2xvYmFscy5jb2xvcnMsZz17c3Ryb2tlSGVpZ2h0OlwieFwiPT09dD8wOmwuZ2xvYmFscy5tYXJrZXJzLnNpemVbc10sc3Ryb2tlV2lkdGg6XCJ4XCI9PT10P2wuZ2xvYmFscy5tYXJrZXJzLnNpemVbc106MCxzdHJva2VEYXNoQXJyYXk6MCxzdHJva2VMaW5lQ2FwOlwicm91bmRcIixzdHJva2VDb2xvcjpBcnJheS5pc0FycmF5KGRbc10pP2Rbc11bMF06ZFtzXX07YyhsLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtzXVtyXSxnKSxjKGwuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtzXVtyXSxlKGUoe30sZykse30se3N0cm9rZUNvbG9yOkFycmF5LmlzQXJyYXkoZFtzXSk/ZFtzXVsxXTpkW3NdfSkpfXJldHVybiBofX0se2tleTpcImRyYXdHb2FsTGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuYmFyWFBvc2l0aW9uLGk9dC5iYXJZUG9zaXRpb24sYT10LmdvYWxYLHM9dC5nb2FsWSxyPXQuYmFyV2lkdGgsbz10LmJhckhlaWdodCxuPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksbD1uLmdyb3VwKHtjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLWJhci1nb2Fscy1ncm91cHNcIn0pO2wubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKSx0aGlzLmJhckN0eC53Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOmwubm9kZX0pLGwuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQodGhpcy5iYXJDdHgudy5nbG9iYWxzLmN1aWQsXCIpXCIpKTt2YXIgaD1udWxsO3JldHVybiB0aGlzLmJhckN0eC5pc0hvcml6b250YWw/QXJyYXkuaXNBcnJheShhKSYmYS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT12b2lkIDAhPT10LmF0dHJzLnN0cm9rZUhlaWdodD90LmF0dHJzLnN0cm9rZUhlaWdodDpvLzIsYT1pK2Urby8yO2g9bi5kcmF3TGluZSh0LngsYS0yKmUsdC54LGEsdC5hdHRycy5zdHJva2VDb2xvcj90LmF0dHJzLnN0cm9rZUNvbG9yOnZvaWQgMCx0LmF0dHJzLnN0cm9rZURhc2hBcnJheSx0LmF0dHJzLnN0cm9rZVdpZHRoP3QuYXR0cnMuc3Ryb2tlV2lkdGg6Mix0LmF0dHJzLnN0cm9rZUxpbmVDYXApLGwuYWRkKGgpfSkpOkFycmF5LmlzQXJyYXkocykmJnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9dm9pZCAwIT09dC5hdHRycy5zdHJva2VXaWR0aD90LmF0dHJzLnN0cm9rZVdpZHRoOnIvMixhPWUraStyLzI7aD1uLmRyYXdMaW5lKGEtMippLHQueSxhLHQueSx0LmF0dHJzLnN0cm9rZUNvbG9yP3QuYXR0cnMuc3Ryb2tlQ29sb3I6dm9pZCAwLHQuYXR0cnMuc3Ryb2tlRGFzaEFycmF5LHQuYXR0cnMuc3Ryb2tlSGVpZ2h0P3QuYXR0cnMuc3Ryb2tlSGVpZ2h0OjIsdC5hdHRycy5zdHJva2VMaW5lQ2FwKSxsLmFkZChoKX0pKSxsfX0se2tleTpcImRyYXdCYXJTaGFkb3dcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnByZXZQYXRocyxpPXQuY3VyclBhdGhzLGE9dC5jb2xvcixzPXRoaXMudyxyPWUueCxvPWUueDEsbj1lLmJhcllQb3NpdGlvbixsPWkueCxoPWkueDEsYz1pLmJhcllQb3NpdGlvbixkPW4raS5iYXJIZWlnaHQsZz1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLHU9bmV3IHgscD1nLm1vdmUobyxkKStnLmxpbmUocixkKStnLmxpbmUobCxjKStnLmxpbmUoaCxjKStnLmxpbmUobyxkKSsoXCJhcm91bmRcIj09PXMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKTtyZXR1cm4gZy5kcmF3UGF0aCh7ZDpwLGZpbGw6dS5zaGFkZUNvbG9yKC41LHgucmdiMmhleChhKSksc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOjAsZmlsbE9wYWNpdHk6MSxjbGFzc2VzOlwiYXBleGNoYXJ0cy1iYXItc2hhZG93c1wifSl9fSx7a2V5OlwiZ2V0WmVyb1ZhbHVlRW5jb3VudGVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXRoaXMudyxzPTAscj0wO3JldHVybiBhLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5mb3JFYWNoKChmdW5jdGlvbih0LGEpe3RbaV0mJnMrKyxhPGUmJjA9PT10W2ldJiZyKyt9KSkse25vblplcm9Db2x1bW5zOnMsemVyb0VuY291bnRlcnM6cn19fV0pLHR9KCkseXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgcz10aGlzLnc7dGhpcy5iYXJPcHRpb25zPXMuY29uZmlnLnBsb3RPcHRpb25zLmJhcix0aGlzLmlzSG9yaXpvbnRhbD10aGlzLmJhck9wdGlvbnMuaG9yaXpvbnRhbCx0aGlzLnN0cm9rZVdpZHRoPXMuY29uZmlnLnN0cm9rZS53aWR0aCx0aGlzLmlzTnVsbFZhbHVlPSExLHRoaXMuaXNSYW5nZUJhcj1zLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoJiZ0aGlzLmlzSG9yaXpvbnRhbCx0aGlzLmlzVmVydGljYWxHcm91cGVkUmFuZ2VCYXI9IXMuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnMuZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgmJnMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cyx0aGlzLmlzRnVubmVsPXRoaXMuYmFyT3B0aW9ucy5pc0Z1bm5lbCx0aGlzLnh5UmF0aW9zPWksbnVsbCE9PXRoaXMueHlSYXRpb3MmJih0aGlzLnhSYXRpbz1pLnhSYXRpbyx0aGlzLmluaXRpYWxYUmF0aW89aS5pbml0aWFsWFJhdGlvLHRoaXMueVJhdGlvPWkueVJhdGlvLHRoaXMuaW52ZXJ0ZWRYUmF0aW89aS5pbnZlcnRlZFhSYXRpbyx0aGlzLmludmVydGVkWVJhdGlvPWkuaW52ZXJ0ZWRZUmF0aW8sdGhpcy5iYXNlTGluZVk9aS5iYXNlTGluZVksdGhpcy5iYXNlTGluZUludmVydGVkWT1pLmJhc2VMaW5lSW52ZXJ0ZWRZKSx0aGlzLnlheGlzSW5kZXg9MCx0aGlzLnNlcmllc0xlbj0wLHRoaXMucGF0aEFycj1bXTt2YXIgcj1uZXcgTih0aGlzLmN0eCk7dGhpcy5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD1yLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiZGVzY1wiLFtcImJhclwiLFwiY29sdW1uXCJdKTt2YXIgbz1yLmdldEJhclNlcmllc0luZGljZXMoKSxuPW5ldyB5KHRoaXMuY3R4KTt0aGlzLnN0YWNrZWRTZXJpZXNUb3RhbHM9bi5nZXRTdGFja2VkU2VyaWVzVG90YWxzKHRoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4tMT09PW8uaW5kZXhPZihlKT9lOi0xfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuLTEhPT10fSkpKSx0aGlzLmJhckhlbHBlcnM9bmV3IG10KHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLncscz1uZXcgbSh0aGlzLmN0eCkscj1uZXcgeSh0aGlzLmN0eCxhKTt0PXIuZ2V0TG9nU2VyaWVzKHQpLHRoaXMuc2VyaWVzPXQsdGhpcy55UmF0aW89ci5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KTt2YXIgbz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCJ9KTthLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQmJnRoaXMudG90YWxJdGVtcz50aGlzLmJhck9wdGlvbnMuZGF0YUxhYmVscy5tYXhJdGVtcyYmY29uc29sZS53YXJuKFwiV0FSTklORzogRGF0YUxhYmVscyBhcmUgZW5hYmxlZCBidXQgdGhlcmUgYXJlIHRvbyBtYW55IHRvIGRpc3BsYXkuIFRoaXMgbWF5IGNhdXNlIHBlcmZvcm1hbmNlIGlzc3VlIHdoZW4gcmVuZGVyaW5nIC0gQXBleENoYXJ0c1wiKTtmb3IodmFyIG49MCxsPTA7bjx0Lmxlbmd0aDtuKyssbCsrKXt2YXIgaCxjLGQsZyx1PXZvaWQgMCxwPXZvaWQgMCxmPVtdLGI9W10sdj1hLmdsb2JhbHMuY29tYm9DaGFydHM/aVtuXTpuLHc9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHJlbDpuKzEsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbdl0pLFwiZGF0YTpyZWFsSW5kZXhcIjp2fSk7dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModyx2KSx0W25dLmxlbmd0aD4wJiYodGhpcy52aXNpYmxlST10aGlzLnZpc2libGVJKzEpO3ZhciBrPTAsQT0wO3RoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PXYpLHRoaXMuaXNSZXZlcnNlZD1hLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdJiZhLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdLnJldmVyc2VkO3ZhciBTPXRoaXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7cD1TLnksaz1TLmJhckhlaWdodCxjPVMueURpdmlzaW9uLGc9Uy56ZXJvVyx1PVMueCxBPVMuYmFyV2lkdGgsaD1TLnhEaXZpc2lvbixkPVMuemVyb0gsdGhpcy5ob3Jpem9udGFsfHxiLnB1c2godStBLzIpO3ZhciBDPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTthLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOkMubm9kZX0pLEMubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKTt2YXIgTD1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLWdvYWxzLW1hcmtlcnNcIn0pLFA9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1zaGFkb3dzXCJ9KTthLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOlAubm9kZX0pLFAubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKTtmb3IodmFyIEk9MDtJPGEuZ2xvYmFscy5kYXRhUG9pbnRzO0krKyl7dmFyIE09dGhpcy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKG4sSSx2KSxUPW51bGwsej17aW5kZXhlczp7aTpuLGo6SSxyZWFsSW5kZXg6dixiYzpsfSx4OnUseTpwLHN0cm9rZVdpZHRoOk0sZWxTZXJpZXM6d307dGhpcy5pc0hvcml6b250YWw/KFQ9dGhpcy5kcmF3QmFyUGF0aHMoZShlKHt9LHopLHt9LHtiYXJIZWlnaHQ6ayx6ZXJvVzpnLHlEaXZpc2lvbjpjfSkpLEE9dGhpcy5zZXJpZXNbbl1bSV0vdGhpcy5pbnZlcnRlZFlSYXRpbyk6KFQ9dGhpcy5kcmF3Q29sdW1uUGF0aHMoZShlKHt9LHopLHt9LHt4RGl2aXNpb246aCxiYXJXaWR0aDpBLHplcm9IOmR9KSksaz10aGlzLnNlcmllc1tuXVtJXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdKTt2YXIgWD10aGlzLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcih0LG4sSSx2KTtpZih0aGlzLmlzRnVubmVsJiZ0aGlzLmJhck9wdGlvbnMuaXNGdW5uZWwzZCYmdGhpcy5wYXRoQXJyLmxlbmd0aCYmST4wKXt2YXIgRT10aGlzLmJhckhlbHBlcnMuZHJhd0JhclNoYWRvdyh7Y29sb3I6XCJzdHJpbmdcIj09dHlwZW9mIFgmJi0xPT09KG51bGw9PVg/dm9pZCAwOlguaW5kZXhPZihcInVybFwiKSk/WDp4LmhleFRvUmdiYShhLmdsb2JhbHMuY29sb3JzW25dKSxwcmV2UGF0aHM6dGhpcy5wYXRoQXJyW3RoaXMucGF0aEFyci5sZW5ndGgtMV0sY3VyclBhdGhzOlR9KTtFJiZQLmFkZChFKX10aGlzLnBhdGhBcnIucHVzaChUKTt2YXIgWT10aGlzLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHtiYXJYUG9zaXRpb246VC5iYXJYUG9zaXRpb24sYmFyWVBvc2l0aW9uOlQuYmFyWVBvc2l0aW9uLGdvYWxYOlQuZ29hbFgsZ29hbFk6VC5nb2FsWSxiYXJIZWlnaHQ6ayxiYXJXaWR0aDpBfSk7WSYmTC5hZGQoWSkscD1ULnksdT1ULngsST4wJiZiLnB1c2godStBLzIpLGYucHVzaChwKSx0aGlzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OnYscGF0aEZpbGw6WCxqOkksaTpuLHBhdGhGcm9tOlQucGF0aEZyb20scGF0aFRvOlQucGF0aFRvLHN0cm9rZVdpZHRoOk0sZWxTZXJpZXM6dyx4OnUseTpwLHNlcmllczp0LGJhckhlaWdodDpULmJhckhlaWdodD9ULmJhckhlaWdodDprLGJhcldpZHRoOlQuYmFyV2lkdGg/VC5iYXJXaWR0aDpBLGVsRGF0YUxhYmVsc1dyYXA6QyxlbEdvYWxzTWFya2VyczpMLGVsQmFyU2hhZG93czpQLHZpc2libGVTZXJpZXM6dGhpcy52aXNpYmxlSSx0eXBlOlwiYmFyXCJ9KX1hLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1t2XT1iLGEuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW3ZdPWYsby5hZGQodyl9cmV0dXJuIG99fSx7a2V5OlwicmVuZGVyU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5yZWFsSW5kZXgsaT10LnBhdGhGaWxsLGE9dC5saW5lRmlsbCxzPXQuaixyPXQuaSxvPXQuZ3JvdXBJbmRleCxuPXQucGF0aEZyb20sbD10LnBhdGhUbyxoPXQuc3Ryb2tlV2lkdGgsYz10LmVsU2VyaWVzLGQ9dC54LGc9dC55LHU9dC55MSxwPXQueTIsZj10LnNlcmllcyx4PXQuYmFySGVpZ2h0LGI9dC5iYXJXaWR0aCx5PXQuYmFyWFBvc2l0aW9uLHc9dC5iYXJZUG9zaXRpb24saz10LmVsRGF0YUxhYmVsc1dyYXAsQT10LmVsR29hbHNNYXJrZXJzLFM9dC5lbEJhclNoYWRvd3MsQz10LnZpc2libGVTZXJpZXMsTD10LnR5cGUsUD10aGlzLncsST1uZXcgbSh0aGlzLmN0eCk7YXx8KGE9dGhpcy5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP1AuZ2xvYmFscy5zdHJva2UuY29sb3JzW3NdOlAuZ2xvYmFscy5zdHJva2UuY29sb3JzW2VdKSxQLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtzXSYmUC5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10uc3Ryb2tlQ29sb3ImJihhPVAuY29uZmlnLnNlcmllc1tyXS5kYXRhW3NdLnN0cm9rZUNvbG9yKSx0aGlzLmlzTnVsbFZhbHVlJiYoaT1cIm5vbmVcIik7dmFyIE09cy9QLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZGVsYXkqKFAuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQvUC5nbG9iYWxzLmRhdGFQb2ludHMpLzIuNCxUPUkucmVuZGVyUGF0aHMoe2k6cixqOnMscmVhbEluZGV4OmUscGF0aEZyb206bixwYXRoVG86bCxzdHJva2U6YSxzdHJva2VXaWR0aDpoLHN0cm9rZUxpbmVDYXA6UC5jb25maWcuc3Ryb2tlLmxpbmVDYXAsZmlsbDppLGFuaW1hdGlvbkRlbGF5Ok0saW5pdGlhbFNwZWVkOlAuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOlAuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChMLFwiLWFyZWFcIil9KTtULmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KFAuZ2xvYmFscy5jdWlkLFwiKVwiKSk7dmFyIHo9UC5jb25maWcuZm9yZWNhc3REYXRhUG9pbnRzO3ouY291bnQ+MCYmcz49UC5nbG9iYWxzLmRhdGFQb2ludHMtei5jb3VudCYmKFQubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtZGFzaGFycmF5XCIsei5kYXNoQXJyYXkpLFQubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIix6LnN0cm9rZVdpZHRoKSxULm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsei5maWxsT3BhY2l0eSkpLHZvaWQgMCE9PXUmJnZvaWQgMCE9PXAmJihULmF0dHIoXCJkYXRhLXJhbmdlLXkxXCIsdSksVC5hdHRyKFwiZGF0YS1yYW5nZS15MlwiLHApKSxuZXcgdih0aGlzLmN0eCkuc2V0U2VsZWN0aW9uRmlsdGVyKFQsZSxzKSxjLmFkZChUKTt2YXIgWD1uZXcgdnQodGhpcykuaGFuZGxlQmFyRGF0YUxhYmVscyh7eDpkLHk6Zyx5MTp1LHkyOnAsaTpyLGo6cyxzZXJpZXM6ZixyZWFsSW5kZXg6ZSxncm91cEluZGV4Om8sYmFySGVpZ2h0OngsYmFyV2lkdGg6YixiYXJYUG9zaXRpb246eSxiYXJZUG9zaXRpb246dyxyZW5kZXJlZFBhdGg6VCx2aXNpYmxlU2VyaWVzOkN9KTtyZXR1cm4gbnVsbCE9PVguZGF0YUxhYmVscyYmay5hZGQoWC5kYXRhTGFiZWxzKSxYLnRvdGFsRGF0YUxhYmVscyYmay5hZGQoWC50b3RhbERhdGFMYWJlbHMpLGMuYWRkKGspLEEmJmMuYWRkKEEpLFMmJmMuYWRkKFMpLGN9fSx7a2V5OlwiZHJhd0JhclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmluZGV4ZXMsYT10LmJhckhlaWdodCxzPXQuc3Ryb2tlV2lkdGgscj10Lnplcm9XLG89dC54LG49dC55LGw9dC55RGl2aXNpb24saD10LmVsU2VyaWVzLGM9dGhpcy53LGQ9aS5pLGc9aS5qO2lmKGMuZ2xvYmFscy5pc1hOdW1lcmljKWU9KG49KGMuZ2xvYmFscy5zZXJpZXNYW2RdW2ddLWMuZ2xvYmFscy5taW5YKS90aGlzLmludmVydGVkWFJhdGlvLWEpK2EqdGhpcy52aXNpYmxlSTtlbHNlIGlmKGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5oaWRlWmVyb0JhcnNXaGVuR3JvdXBlZCl7dmFyIHU9MCxwPTA7Yy5nbG9iYWxzLnNlcmllc1BlcmNlbnQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0W2ddJiZ1KyssZTxkJiYwPT09dFtnXSYmcCsrfSkpLHU+MCYmKGE9dGhpcy5zZXJpZXNMZW4qYS91KSxlPW4rYSp0aGlzLnZpc2libGVJLGUtPWEqcH1lbHNlIGU9bithKnRoaXMudmlzaWJsZUk7dGhpcy5pc0Z1bm5lbCYmKHItPSh0aGlzLmJhckhlbHBlcnMuZ2V0WEZvclZhbHVlKHRoaXMuc2VyaWVzW2RdW2ddLHIpLXIpLzIpLG89dGhpcy5iYXJIZWxwZXJzLmdldFhGb3JWYWx1ZSh0aGlzLnNlcmllc1tkXVtnXSxyKTt2YXIgZj10aGlzLmJhckhlbHBlcnMuZ2V0QmFycGF0aHMoe2JhcllQb3NpdGlvbjplLGJhckhlaWdodDphLHgxOnIseDI6byxzdHJva2VXaWR0aDpzLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6aS5yZWFsSW5kZXgsaTpkLGo6Zyx3OmN9KTtyZXR1cm4gYy5nbG9iYWxzLmlzWE51bWVyaWN8fChuKz1sKSx0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7ajpnLGk6ZCx5MTplLWEqdGhpcy52aXNpYmxlSSx5MjphKnRoaXMuc2VyaWVzTGVuLGVsU2VyaWVzOmh9KSx7cGF0aFRvOmYucGF0aFRvLHBhdGhGcm9tOmYucGF0aEZyb20seDE6cix4Om8seTpuLGdvYWxYOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieFwiLHIsbnVsbCxkLGcpLGJhcllQb3NpdGlvbjplLGJhckhlaWdodDphfX19LHtrZXk6XCJkcmF3Q29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuaW5kZXhlcyxhPXQueCxzPXQueSxyPXQueERpdmlzaW9uLG89dC5iYXJXaWR0aCxuPXQuemVyb0gsbD10LnN0cm9rZVdpZHRoLGg9dC5lbFNlcmllcyxjPXRoaXMudyxkPWkucmVhbEluZGV4LGc9aS5pLHU9aS5qLHA9aS5iYztpZihjLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIGY9dGhpcy5nZXRCYXJYRm9yTnVtZXJpY1hBeGlzKHt4OmEsajp1LHJlYWxJbmRleDpkLGJhcldpZHRoOm99KTthPWYueCxlPWYuYmFyWFBvc2l0aW9ufWVsc2UgaWYoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkKXt2YXIgeD10aGlzLmJhckhlbHBlcnMuZ2V0WmVyb1ZhbHVlRW5jb3VudGVycyh7aTpnLGo6dX0pLGI9eC5ub25aZXJvQ29sdW1ucyx2PXguemVyb0VuY291bnRlcnM7Yj4wJiYobz10aGlzLnNlcmllc0xlbipvL2IpLGU9YStvKnRoaXMudmlzaWJsZUksZS09byp2fWVsc2UgZT1hK28qdGhpcy52aXNpYmxlSTtzPXRoaXMuYmFySGVscGVycy5nZXRZRm9yVmFsdWUodGhpcy5zZXJpZXNbZ11bdV0sbik7dmFyIG09dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246ZSxiYXJXaWR0aDpvLHkxOm4seTI6cyxzdHJva2VXaWR0aDpsLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6aS5yZWFsSW5kZXgsaTpnLGo6dSx3OmN9KTtyZXR1cm4gYy5nbG9iYWxzLmlzWE51bWVyaWN8fChhKz1yKSx0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7YmM6cCxqOnUsaTpnLHgxOmUtbC8yLW8qdGhpcy52aXNpYmxlSSx4MjpvKnRoaXMuc2VyaWVzTGVuK2wvMixlbFNlcmllczpofSkse3BhdGhUbzptLnBhdGhUbyxwYXRoRnJvbTptLnBhdGhGcm9tLHg6YSx5OnMsZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxuLGcsdSksYmFyWFBvc2l0aW9uOmUsYmFyV2lkdGg6b319fSx7a2V5OlwiZ2V0QmFyWEZvck51bWVyaWNYQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQuYmFyV2lkdGgsYT10LnJlYWxJbmRleCxzPXQuaixyPXRoaXMudyxvPWE7cmV0dXJuIHIuZ2xvYmFscy5zZXJpZXNYW2FdLmxlbmd0aHx8KG89ci5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXgpLHIuZ2xvYmFscy5zZXJpZXNYW29dW3NdJiYoZT0oci5nbG9iYWxzLnNlcmllc1hbb11bc10tci5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLWkqdGhpcy5zZXJpZXNMZW4vMikse2JhclhQb3NpdGlvbjplK2kqdGhpcy52aXNpYmxlSSx4OmV9fX0se2tleTpcImdldFByZXZpb3VzUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpLGE9dGhpcy53LHM9MDtzPGEuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtzKyspe3ZhciByPWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdO3IucGF0aHMmJnIucGF0aHMubGVuZ3RoPjAmJnBhcnNlSW50KHIucmVhbEluZGV4LDEwKT09PXBhcnNlSW50KHQsMTApJiZ2b2lkIDAhPT1hLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1tlXSYmKGk9YS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc10ucGF0aHNbZV0uZCl9cmV0dXJuIGl9fV0pLHR9KCksd3Q9ZnVuY3Rpb24odCl7bihzLHl0KTt2YXIgaT1kKHMpO2Z1bmN0aW9uIHMoKXtyZXR1cm4gYSh0aGlzLHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiByKHMsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLHM9dGhpcy53O3RoaXMuZ3JhcGhpY3M9bmV3IG0odGhpcy5jdHgpLHRoaXMuYmFyPW5ldyB5dCh0aGlzLmN0eCx0aGlzLnh5UmF0aW9zKTt2YXIgcj1uZXcgeSh0aGlzLmN0eCxzKTt0PXIuZ2V0TG9nU2VyaWVzKHQpLHRoaXMueVJhdGlvPXIuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCksXCIxMDAlXCI9PT1zLmNvbmZpZy5jaGFydC5zdGFja1R5cGUmJih0PXMuZ2xvYmFscy5zZXJpZXNQZXJjZW50LnNsaWNlKCkpLHRoaXMuc2VyaWVzPXQsdGhpcy5iYXJIZWxwZXJzLmluaXRpYWxpemVTdGFja2VkUHJldlZhcnModGhpcyk7Zm9yKHZhciBvPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pLG49MCxsPTAsaD1mdW5jdGlvbihyLGgpe3ZhciBjPXZvaWQgMCxkPXZvaWQgMCxnPXZvaWQgMCx1PXZvaWQgMCxwPS0xO2EuZ3JvdXBDdHg9YSxzLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5pbmRleE9mKHMuY29uZmlnLnNlcmllc1tyXS5uYW1lKT4tMSYmKHA9ZSl9KSksLTEhPT1wJiYoYS5ncm91cEN0eD1hW3MuZ2xvYmFscy5zZXJpZXNHcm91cHNbcF1dKTt2YXIgZj1bXSxiPVtdLHY9cy5nbG9iYWxzLmNvbWJvQ2hhcnRzP2lbcl06cjthLnlSYXRpby5sZW5ndGg+MSYmKGEueWF4aXNJbmRleD12KSxhLmlzUmV2ZXJzZWQ9cy5jb25maWcueWF4aXNbYS55YXhpc0luZGV4XSYmcy5jb25maWcueWF4aXNbYS55YXhpc0luZGV4XS5yZXZlcnNlZDt2YXIgbT1hLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhzLmdsb2JhbHMuc2VyaWVzTmFtZXNbdl0pLHJlbDpyKzEsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTthLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhtLHYpO3ZhciB5PWEuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KSx3PWEuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc1wifSksaz0wLEE9MCxTPWEuaW5pdGlhbFBvc2l0aW9ucyhuLGwsYyxkLGcsdSk7bD1TLnksaz1TLmJhckhlaWdodCxkPVMueURpdmlzaW9uLHU9Uy56ZXJvVyxuPVMueCxBPVMuYmFyV2lkdGgsYz1TLnhEaXZpc2lvbixnPVMuemVyb0gsYS5iYXJIZWxwZXJzLmluaXRpYWxpemVTdGFja2VkWFlWYXJzKGEpLDE9PT1hLmdyb3VwQ3R4LnByZXZZLmxlbmd0aCYmYS5ncm91cEN0eC5wcmV2WVswXS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQpfSkpJiYoYS5ncm91cEN0eC5wcmV2WVswXT1hLmdyb3VwQ3R4LnByZXZZWzBdLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGd9KSksYS5ncm91cEN0eC5wcmV2WUZbMF09YS5ncm91cEN0eC5wcmV2WUZbMF0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gMH0pKSk7Zm9yKHZhciBDPTA7QzxzLmdsb2JhbHMuZGF0YVBvaW50cztDKyspe3ZhciBMPWEuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChyLEMsdiksUD17aW5kZXhlczp7aTpyLGo6QyxyZWFsSW5kZXg6dixiYzpofSxzdHJva2VXaWR0aDpMLHg6bix5OmwsZWxTZXJpZXM6bSxncm91cEluZGV4OnAsc2VyaWVzR3JvdXA6cy5nbG9iYWxzLnNlcmllc0dyb3Vwc1twXX0sST1udWxsO2EuaXNIb3Jpem9udGFsPyhJPWEuZHJhd1N0YWNrZWRCYXJQYXRocyhlKGUoe30sUCkse30se3plcm9XOnUsYmFySGVpZ2h0OmsseURpdmlzaW9uOmR9KSksQT1hLnNlcmllc1tyXVtDXS9hLmludmVydGVkWVJhdGlvKTooST1hLmRyYXdTdGFja2VkQ29sdW1uUGF0aHMoZShlKHt9LFApLHt9LHt4RGl2aXNpb246YyxiYXJXaWR0aDpBLHplcm9IOmd9KSksaz1hLnNlcmllc1tyXVtDXS9hLnlSYXRpb1thLnlheGlzSW5kZXhdKTt2YXIgTT1hLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHtiYXJYUG9zaXRpb246SS5iYXJYUG9zaXRpb24sYmFyWVBvc2l0aW9uOkkuYmFyWVBvc2l0aW9uLGdvYWxYOkkuZ29hbFgsZ29hbFk6SS5nb2FsWSxiYXJIZWlnaHQ6ayxiYXJXaWR0aDpBfSk7TSYmdy5hZGQoTSksbD1JLnksbj1JLngsZi5wdXNoKG4pLGIucHVzaChsKTt2YXIgVD1hLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcih0LHIsQyx2KTttPWEucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dixwYXRoRmlsbDpULGo6QyxpOnIsZ3JvdXBJbmRleDpwLHBhdGhGcm9tOkkucGF0aEZyb20scGF0aFRvOkkucGF0aFRvLHN0cm9rZVdpZHRoOkwsZWxTZXJpZXM6bSx4Om4seTpsLHNlcmllczp0LGJhckhlaWdodDprLGJhcldpZHRoOkEsZWxEYXRhTGFiZWxzV3JhcDp5LGVsR29hbHNNYXJrZXJzOncsdHlwZTpcImJhclwiLHZpc2libGVTZXJpZXM6MH0pfXMuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPWYscy5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09YixhLmdyb3VwQ3R4LnByZXZZLnB1c2goYS5ncm91cEN0eC55QXJyaiksYS5ncm91cEN0eC5wcmV2WUYucHVzaChhLmdyb3VwQ3R4LnlBcnJqRiksYS5ncm91cEN0eC5wcmV2WVZhbC5wdXNoKGEuZ3JvdXBDdHgueUFycmpWYWwpLGEuZ3JvdXBDdHgucHJldlgucHVzaChhLmdyb3VwQ3R4LnhBcnJqKSxhLmdyb3VwQ3R4LnByZXZYRi5wdXNoKGEuZ3JvdXBDdHgueEFycmpGKSxhLmdyb3VwQ3R4LnByZXZYVmFsLnB1c2goYS5ncm91cEN0eC54QXJyalZhbCksby5hZGQobSl9LGM9MCxkPTA7Yzx0Lmxlbmd0aDtjKyssZCsrKWgoYyxkKTtyZXR1cm4gb319LHtrZXk6XCJpbml0aWFsUG9zaXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvLG4sbCxoLGM9dGhpcy53O3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbD8obD0obD1hPWMuZ2xvYmFscy5ncmlkSGVpZ2h0L2MuZ2xvYmFscy5kYXRhUG9pbnRzKSpwYXJzZUludChjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0LDEwKS8xMDAsLTE9PT1TdHJpbmcoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJhckhlaWdodCkuaW5kZXhPZihcIiVcIikmJihsPXBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQsMTApKSxyPXRoaXMuYmFzZUxpbmVJbnZlcnRlZFkrYy5nbG9iYWxzLnBhZEhvcml6b250YWwrKHRoaXMuaXNSZXZlcnNlZD9jLmdsb2JhbHMuZ3JpZFdpZHRoOjApLSh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZOjApLGU9KGEtbCkvMik6KGg9aT1jLmdsb2JhbHMuZ3JpZFdpZHRoL2MuZ2xvYmFscy5kYXRhUG9pbnRzLGg9Yy5nbG9iYWxzLmlzWE51bWVyaWMmJmMuZ2xvYmFscy5kYXRhUG9pbnRzPjE/KGk9Yy5nbG9iYWxzLm1pblhEaWZmL3RoaXMueFJhdGlvKSpwYXJzZUludCh0aGlzLmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApLzEwMDpoKnBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkvMTAwLC0xPT09U3RyaW5nKGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCkuaW5kZXhPZihcIiVcIikmJihoPXBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkpLHM9Yy5nbG9iYWxzLmdyaWRIZWlnaHQtdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XS0odGhpcy5pc1JldmVyc2VkP2MuZ2xvYmFscy5ncmlkSGVpZ2h0OjApKyh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdOjApLHQ9Yy5nbG9iYWxzLnBhZEhvcml6b250YWwrKGktaCkvMikse3g6dCx5OmUseURpdmlzaW9uOmEseERpdmlzaW9uOmksYmFySGVpZ2h0Om51bGwhPT0obz1jLmdsb2JhbHMuc2VyaWVzR3JvdXBzKSYmdm9pZCAwIT09byYmby5sZW5ndGg/bC9jLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aDpsLGJhcldpZHRoOm51bGwhPT0obj1jLmdsb2JhbHMuc2VyaWVzR3JvdXBzKSYmdm9pZCAwIT09biYmbi5sZW5ndGg/aC9jLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aDpoLHplcm9IOnMsemVyb1c6cn19fSx7a2V5OlwiZHJhd1N0YWNrZWRCYXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPXQuaW5kZXhlcyxhPXQuYmFySGVpZ2h0LHM9dC5zdHJva2VXaWR0aCxyPXQuemVyb1csbz10Lngsbj10LnksbD10Lmdyb3VwSW5kZXgsaD10LnNlcmllc0dyb3VwLGM9dC55RGl2aXNpb24sZD10LmVsU2VyaWVzLGc9dGhpcy53LHU9bisoLTEhPT1sP2wqYTowKSxwPWkuaSxmPWkuaix4PTAsYj0wO2I8dGhpcy5ncm91cEN0eC5wcmV2WEYubGVuZ3RoO2IrKyl4Kz10aGlzLmdyb3VwQ3R4LnByZXZYRltiXVtmXTt2YXIgdj1wO2lmKGgmJih2PWguaW5kZXhPZihnLmNvbmZpZy5zZXJpZXNbcF0ubmFtZSkpLHY+MCl7dmFyIG09cjt0aGlzLmdyb3VwQ3R4LnByZXZYVmFsW3YtMV1bZl08MD9tPXRoaXMuc2VyaWVzW3BdW2ZdPj0wP3RoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXSt4LTIqKHRoaXMuaXNSZXZlcnNlZD94OjApOnRoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXTp0aGlzLmdyb3VwQ3R4LnByZXZYVmFsW3YtMV1bZl0+PTAmJihtPXRoaXMuc2VyaWVzW3BdW2ZdPj0wP3RoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXTp0aGlzLmdyb3VwQ3R4LnByZXZYW3YtMV1bZl0teCsyKih0aGlzLmlzUmV2ZXJzZWQ/eDowKSksZT1tfWVsc2UgZT1yO289bnVsbD09PXRoaXMuc2VyaWVzW3BdW2ZdP2U6ZSt0aGlzLnNlcmllc1twXVtmXS90aGlzLmludmVydGVkWVJhdGlvLTIqKHRoaXMuaXNSZXZlcnNlZD90aGlzLnNlcmllc1twXVtmXS90aGlzLmludmVydGVkWVJhdGlvOjApO3ZhciB5PXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOnUsYmFySGVpZ2h0OmEseDE6ZSx4MjpvLHN0cm9rZVdpZHRoOnMsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxzZXJpZXNHcm91cDpoLGk6cCxqOmYsdzpnfSk7cmV0dXJuIHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtqOmYsaTpwLHkxOnUseTI6YSxlbFNlcmllczpkfSksbis9Yyx7cGF0aFRvOnkucGF0aFRvLHBhdGhGcm9tOnkucGF0aEZyb20sZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIscixudWxsLHAsZiksYmFyWVBvc2l0aW9uOnUseDpvLHk6bn19fSx7a2V5OlwiZHJhd1N0YWNrZWRDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueCxhPXQueSxzPXQueERpdmlzaW9uLHI9dC5iYXJXaWR0aCxvPXQuemVyb0gsbj10Lmdyb3VwSW5kZXgsbD10LnNlcmllc0dyb3VwLGg9dC5lbFNlcmllcyxjPXRoaXMudyxkPWUuaSxnPWUuaix1PWUuYmM7aWYoYy5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBwPWMuZ2xvYmFscy5zZXJpZXNYW2RdW2ddO3B8fChwPTApLGk9KHAtYy5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXIvMixjLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aCYmKGk9KHAtYy5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXIvMipjLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aCl9Zm9yKHZhciBmLHg9aSsoLTEhPT1uP24qcjowKSxiPTAsdj0wO3Y8dGhpcy5ncm91cEN0eC5wcmV2WUYubGVuZ3RoO3YrKyliKz1pc05hTih0aGlzLmdyb3VwQ3R4LnByZXZZRlt2XVtnXSk/MDp0aGlzLmdyb3VwQ3R4LnByZXZZRlt2XVtnXTt2YXIgbT1kO2lmKGwmJihtPWwuaW5kZXhPZihjLmNvbmZpZy5zZXJpZXNbZF0ubmFtZSkpLG0+MCYmIWMuZ2xvYmFscy5pc1hOdW1lcmljfHxtPjAmJmMuZ2xvYmFscy5pc1hOdW1lcmljJiZjLmdsb2JhbHMuc2VyaWVzWFtkLTFdW2ddPT09Yy5nbG9iYWxzLnNlcmllc1hbZF1bZ10pe3ZhciB5LHcsayxBPU1hdGgubWluKHRoaXMueVJhdGlvLmxlbmd0aCsxLGQrMSk7aWYodm9pZCAwIT09dGhpcy5ncm91cEN0eC5wcmV2WVttLTFdJiZ0aGlzLmdyb3VwQ3R4LnByZXZZW20tMV0ubGVuZ3RoKWZvcih2YXIgUz0xO1M8QTtTKyspe3ZhciBDO2lmKCFpc05hTihudWxsPT09KEM9dGhpcy5ncm91cEN0eC5wcmV2WVttLVNdKXx8dm9pZCAwPT09Qz92b2lkIDA6Q1tnXSkpe2s9dGhpcy5ncm91cEN0eC5wcmV2WVttLVNdW2ddO2JyZWFrfX1mb3IodmFyIEw9MTtMPEE7TCsrKXt2YXIgUCxJO2lmKChudWxsPT09KFA9dGhpcy5ncm91cEN0eC5wcmV2WVZhbFttLUxdKXx8dm9pZCAwPT09UD92b2lkIDA6UFtnXSk8MCl7dz10aGlzLnNlcmllc1tkXVtnXT49MD9rLWIrMioodGhpcy5pc1JldmVyc2VkP2I6MCk6azticmVha31pZigobnVsbD09PShJPXRoaXMuZ3JvdXBDdHgucHJldllWYWxbbS1MXSl8fHZvaWQgMD09PUk/dm9pZCAwOklbZ10pPj0wKXt3PXRoaXMuc2VyaWVzW2RdW2ddPj0wP2s6aytiLTIqKHRoaXMuaXNSZXZlcnNlZD9iOjApO2JyZWFrfX12b2lkIDA9PT13JiYodz1jLmdsb2JhbHMuZ3JpZEhlaWdodCksZj1udWxsIT09KHk9dGhpcy5ncm91cEN0eC5wcmV2WUZbMF0pJiZ2b2lkIDAhPT15JiZ5LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gMD09PXR9KSkmJnRoaXMuZ3JvdXBDdHgucHJldllGLnNsaWNlKDEsbSkuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odCl9KSl9KSk/bzp3fWVsc2UgZj1vO2E9dGhpcy5zZXJpZXNbZF1bZ10/Zi10aGlzLnNlcmllc1tkXVtnXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdKzIqKHRoaXMuaXNSZXZlcnNlZD90aGlzLnNlcmllc1tkXVtnXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdOjApOmY7dmFyIE09dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246eCxiYXJXaWR0aDpyLHkxOmYseTI6YSx5UmF0aW86dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllcyxzZXJpZXNHcm91cDpsLHJlYWxJbmRleDplLnJlYWxJbmRleCxpOmQsajpnLHc6Y30pO3JldHVybiB0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7YmM6dSxqOmcsaTpkLHgxOngseDI6cixlbFNlcmllczpofSksaSs9cyx7cGF0aFRvOk0ucGF0aFRvLHBhdGhGcm9tOk0ucGF0aEZyb20sZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxvLGQsZyksYmFyWFBvc2l0aW9uOngseDpjLmdsb2JhbHMuaXNYTnVtZXJpYz9pLXM6aSx5OmF9fX1dKSxzfSgpLGt0PWZ1bmN0aW9uKHQpe24ocyx5dCk7dmFyIGk9ZChzKTtmdW5jdGlvbiBzKCl7cmV0dXJuIGEodGhpcyxzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihzLFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSxhKXt2YXIgcz10aGlzLHI9dGhpcy53LG89bmV3IG0odGhpcy5jdHgpLG49ci5nbG9iYWxzLmNvbWJvQ2hhcnRzP2k6ci5jb25maWcuY2hhcnQudHlwZSxsPW5ldyBSKHRoaXMuY3R4KTt0aGlzLmNhbmRsZXN0aWNrT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLHRoaXMuYm94T3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJveFBsb3QsdGhpcy5pc0hvcml6b250YWw9ci5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw7dmFyIGg9bmV3IHkodGhpcy5jdHgscik7dD1oLmdldExvZ1Nlcmllcyh0KSx0aGlzLnNlcmllcz10LHRoaXMueVJhdGlvPWguZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCk7Zm9yKHZhciBjPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobixcIi1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiKX0pLGQ9ZnVuY3Rpb24oaSl7cy5pc0JveFBsb3Q9XCJib3hQbG90XCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PXIuY29uZmlnLnNlcmllc1tpXS50eXBlO3ZhciBuLGgsZCxnLHU9dm9pZCAwLHA9dm9pZCAwLGY9W10sYj1bXSx2PXIuZ2xvYmFscy5jb21ib0NoYXJ0cz9hW2ldOmksbT1vLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhyLmdsb2JhbHMuc2VyaWVzTmFtZXNbdl0pLHJlbDppKzEsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTtzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhtLHYpLHRbaV0ubGVuZ3RoPjAmJihzLnZpc2libGVJPXMudmlzaWJsZUkrMSk7dmFyIHksdztzLnlSYXRpby5sZW5ndGg+MSYmKHMueWF4aXNJbmRleD12KTt2YXIgaz1zLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpO3A9ay55LHk9ay5iYXJIZWlnaHQsaD1rLnlEaXZpc2lvbixnPWsuemVyb1csdT1rLngsdz1rLmJhcldpZHRoLG49ay54RGl2aXNpb24sZD1rLnplcm9ILGIucHVzaCh1K3cvMik7Zm9yKHZhciBBPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KSxTPWZ1bmN0aW9uKGEpe3ZhciBvPXMuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChpLGEsdiksYz1udWxsLHg9e2luZGV4ZXM6e2k6aSxqOmEscmVhbEluZGV4OnZ9LHg6dSx5OnAsc3Ryb2tlV2lkdGg6byxlbFNlcmllczptfTtjPXMuaXNIb3Jpem9udGFsP3MuZHJhd0hvcml6b250YWxCb3hQYXRocyhlKGUoe30seCkse30se3lEaXZpc2lvbjpoLGJhckhlaWdodDp5LHplcm9XOmd9KSk6cy5kcmF3VmVydGljYWxCb3hQYXRocyhlKGUoe30seCkse30se3hEaXZpc2lvbjpuLGJhcldpZHRoOncsemVyb0g6ZH0pKSxwPWMueSx1PWMueCxhPjAmJmIucHVzaCh1K3cvMiksZi5wdXNoKHApLGMucGF0aFRvLmZvckVhY2goKGZ1bmN0aW9uKGUsbil7dmFyIGg9IXMuaXNCb3hQbG90JiZzLmNhbmRsZXN0aWNrT3B0aW9ucy53aWNrLnVzZUZpbGxDb2xvcj9jLmNvbG9yW25dOnIuZ2xvYmFscy5zdHJva2UuY29sb3JzW2ldLGQ9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnYsZGF0YVBvaW50SW5kZXg6YSxjb2xvcjpjLmNvbG9yW25dLHZhbHVlOnRbaV1bYV19KTtzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OnYscGF0aEZpbGw6ZCxsaW5lRmlsbDpoLGo6YSxpOmkscGF0aEZyb206Yy5wYXRoRnJvbSxwYXRoVG86ZSxzdHJva2VXaWR0aDpvLGVsU2VyaWVzOm0seDp1LHk6cCxzZXJpZXM6dCxiYXJIZWlnaHQ6eSxiYXJXaWR0aDp3LGVsRGF0YUxhYmVsc1dyYXA6QSx2aXNpYmxlU2VyaWVzOnMudmlzaWJsZUksdHlwZTpyLmNvbmZpZy5jaGFydC50eXBlfSl9KSl9LEM9MDtDPHIuZ2xvYmFscy5kYXRhUG9pbnRzO0MrKylTKEMpO3IuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPWIsci5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09ZixjLmFkZChtKX0sZz0wO2c8dC5sZW5ndGg7ZysrKWQoZyk7cmV0dXJuIGN9fSx7a2V5OlwiZHJhd1ZlcnRpY2FsQm94UGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10Lng7dC55O3ZhciBhPXQueERpdmlzaW9uLHM9dC5iYXJXaWR0aCxyPXQuemVyb0gsbz10LnN0cm9rZVdpZHRoLG49dGhpcy53LGw9bmV3IG0odGhpcy5jdHgpLGg9ZS5pLGM9ZS5qLGQ9ITAsZz1uLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMudXB3YXJkLHU9bi5jb25maWcucGxvdE9wdGlvbnMuY2FuZGxlc3RpY2suY29sb3JzLmRvd253YXJkLHA9XCJcIjt0aGlzLmlzQm94UGxvdCYmKHA9W3RoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXIsdGhpcy5ib3hPcHRpb25zLmNvbG9ycy51cHBlcl0pO3ZhciBmPXRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0seD1lLnJlYWxJbmRleCxiPXRoaXMuZ2V0T0hMQ1ZhbHVlKHgsYyksdj1yLHk9cjtiLm8+Yi5jJiYoZD0hMSk7dmFyIHc9TWF0aC5taW4oYi5vLGIuYyksaz1NYXRoLm1heChiLm8sYi5jKSxBPWIubTtuLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9KG4uZ2xvYmFscy5zZXJpZXNYW3hdW2NdLW4uZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1zLzIpO3ZhciBTPWkrcyp0aGlzLnZpc2libGVJO3ZvaWQgMD09PXRoaXMuc2VyaWVzW2hdW2NdfHxudWxsPT09dGhpcy5zZXJpZXNbaF1bY10/KHc9cixrPXIpOih3PXItdy9mLGs9ci1rL2Ysdj1yLWIuaC9mLHk9ci1iLmwvZixBPXItYi5tL2YpO3ZhciBDPWwubW92ZShTLHIpLEw9bC5tb3ZlKFMrcy8yLHcpO3JldHVybiBuLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKEw9dGhpcy5nZXRQcmV2aW91c1BhdGgoeCxjLCEwKSksQz10aGlzLmlzQm94UGxvdD9bbC5tb3ZlKFMsdykrbC5saW5lKFMrcy8yLHcpK2wubGluZShTK3MvMix2KStsLmxpbmUoUytzLzQsdikrbC5saW5lKFMrcy1zLzQsdikrbC5saW5lKFMrcy8yLHYpK2wubGluZShTK3MvMix3KStsLmxpbmUoUytzLHcpK2wubGluZShTK3MsQSkrbC5saW5lKFMsQSkrbC5saW5lKFMsdytvLzIpLGwubW92ZShTLEEpK2wubGluZShTK3MsQSkrbC5saW5lKFMrcyxrKStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMrcy8yLHkpK2wubGluZShTK3Mtcy80LHkpK2wubGluZShTK3MvNCx5KStsLmxpbmUoUytzLzIseSkrbC5saW5lKFMrcy8yLGspK2wubGluZShTLGspK2wubGluZShTLEEpK1wielwiXTpbbC5tb3ZlKFMsaykrbC5saW5lKFMrcy8yLGspK2wubGluZShTK3MvMix2KStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMrcyxrKStsLmxpbmUoUytzLHcpK2wubGluZShTK3MvMix3KStsLmxpbmUoUytzLzIseSkrbC5saW5lKFMrcy8yLHcpK2wubGluZShTLHcpK2wubGluZShTLGstby8yKV0sTCs9bC5tb3ZlKFMsdyksbi5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1hKSx7cGF0aFRvOkMscGF0aEZyb206TCx4OmkseTprLGJhclhQb3NpdGlvbjpTLGNvbG9yOnRoaXMuaXNCb3hQbG90P3A6ZD9bZ106W3VdfX19LHtrZXk6XCJkcmF3SG9yaXpvbnRhbEJveFBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzO3QueDt2YXIgaT10LnksYT10LnlEaXZpc2lvbixzPXQuYmFySGVpZ2h0LHI9dC56ZXJvVyxvPXQuc3Ryb2tlV2lkdGgsbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1lLmksYz1lLmosZD10aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyO3RoaXMuaXNCb3hQbG90JiYoZD1bdGhpcy5ib3hPcHRpb25zLmNvbG9ycy5sb3dlcix0aGlzLmJveE9wdGlvbnMuY29sb3JzLnVwcGVyXSk7dmFyIGc9dGhpcy5pbnZlcnRlZFlSYXRpbyx1PWUucmVhbEluZGV4LHA9dGhpcy5nZXRPSExDVmFsdWUodSxjKSxmPXIseD1yLGI9TWF0aC5taW4ocC5vLHAuYyksdj1NYXRoLm1heChwLm8scC5jKSx5PXAubTtuLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9KG4uZ2xvYmFscy5zZXJpZXNYW3VdW2NdLW4uZ2xvYmFscy5taW5YKS90aGlzLmludmVydGVkWFJhdGlvLXMvMik7dmFyIHc9aStzKnRoaXMudmlzaWJsZUk7dm9pZCAwPT09dGhpcy5zZXJpZXNbaF1bY118fG51bGw9PT10aGlzLnNlcmllc1toXVtjXT8oYj1yLHY9cik6KGI9citiL2csdj1yK3YvZyxmPXIrcC5oL2cseD1yK3AubC9nLHk9citwLm0vZyk7dmFyIGs9bC5tb3ZlKHIsdyksQT1sLm1vdmUoYix3K3MvMik7cmV0dXJuIG4uZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoQT10aGlzLmdldFByZXZpb3VzUGF0aCh1LGMsITApKSxrPVtsLm1vdmUoYix3KStsLmxpbmUoYix3K3MvMikrbC5saW5lKGYsdytzLzIpK2wubGluZShmLHcrcy8yLXMvNCkrbC5saW5lKGYsdytzLzIrcy80KStsLmxpbmUoZix3K3MvMikrbC5saW5lKGIsdytzLzIpK2wubGluZShiLHcrcykrbC5saW5lKHksdytzKStsLmxpbmUoeSx3KStsLmxpbmUoYitvLzIsdyksbC5tb3ZlKHksdykrbC5saW5lKHksdytzKStsLmxpbmUodix3K3MpK2wubGluZSh2LHcrcy8yKStsLmxpbmUoeCx3K3MvMikrbC5saW5lKHgsdytzLXMvNCkrbC5saW5lKHgsdytzLzQpK2wubGluZSh4LHcrcy8yKStsLmxpbmUodix3K3MvMikrbC5saW5lKHYsdykrbC5saW5lKHksdykrXCJ6XCJdLEErPWwubW92ZShiLHcpLG4uZ2xvYmFscy5pc1hOdW1lcmljfHwoaSs9YSkse3BhdGhUbzprLHBhdGhGcm9tOkEseDp2LHk6aSxiYXJZUG9zaXRpb246dyxjb2xvcjpkfX19LHtrZXk6XCJnZXRPSExDVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm57bzp0aGlzLmlzQm94UGxvdD9pLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFt0XVtlXTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1t0XVtlXSxoOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW3RdW2VdLG06aS5nbG9iYWxzLnNlcmllc0NhbmRsZU1bdF1bZV0sbDp0aGlzLmlzQm94UGxvdD9pLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1t0XVtlXTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFt0XVtlXSxjOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW3RdW2VdfX19XSksc30oKSxBdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiY2hlY2tDb2xvclJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0hMSxpPXQuY29uZmlnLnBsb3RPcHRpb25zW3QuY29uZmlnLmNoYXJ0LnR5cGVdO3JldHVybiBpLmNvbG9yU2NhbGUucmFuZ2VzLmxlbmd0aD4wJiZpLmNvbG9yU2NhbGUucmFuZ2VzLm1hcCgoZnVuY3Rpb24odCxpKXt0LmZyb208PTAmJihlPSEwKX0pKSxlfX0se2tleTpcImdldFNoYWRlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj0xLG89cy5jb25maWcucGxvdE9wdGlvbnNbdF0uc2hhZGVJbnRlbnNpdHksbj10aGlzLmRldGVybWluZUNvbG9yKHQsZSxpKTtzLmdsb2JhbHMuaGFzTmVnc3x8YT9yPXMuY29uZmlnLnBsb3RPcHRpb25zW3RdLnJldmVyc2VOZWdhdGl2ZVNoYWRlP24ucGVyY2VudDwwP24ucGVyY2VudC8xMDAqKDEuMjUqbyk6KDEtbi5wZXJjZW50LzEwMCkqKDEuMjUqbyk6bi5wZXJjZW50PD0wPzEtKDErbi5wZXJjZW50LzEwMCkqbzooMS1uLnBlcmNlbnQvMTAwKSpvOihyPTEtbi5wZXJjZW50LzEwMCxcInRyZWVtYXBcIj09PXQmJihyPSgxLW4ucGVyY2VudC8xMDApKigxLjI1Km8pKSk7dmFyIGw9bi5jb2xvcixoPW5ldyB4O3JldHVybiBzLmNvbmZpZy5wbG90T3B0aW9uc1t0XS5lbmFibGVTaGFkZXMmJihsPVwiZGFya1wiPT09dGhpcy53LmNvbmZpZy50aGVtZS5tb2RlP3guaGV4VG9SZ2JhKGguc2hhZGVDb2xvcigtMSpyLG4uY29sb3IpLHMuY29uZmlnLmZpbGwub3BhY2l0eSk6eC5oZXhUb1JnYmEoaC5zaGFkZUNvbG9yKHIsbi5jb2xvcikscy5jb25maWcuZmlsbC5vcGFjaXR5KSkse2NvbG9yOmwsY29sb3JQcm9wczpufX19LHtrZXk6XCJkZXRlcm1pbmVDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1hLmdsb2JhbHMuc2VyaWVzW2VdW2ldLHI9YS5jb25maWcucGxvdE9wdGlvbnNbdF0sbz1yLmNvbG9yU2NhbGUuaW52ZXJzZT9pOmU7ci5kaXN0cmlidXRlZCYmXCJ0cmVlbWFwXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlJiYobz1pKTt2YXIgbj1hLmdsb2JhbHMuY29sb3JzW29dLGw9bnVsbCxoPU1hdGgubWluLmFwcGx5KE1hdGgsdShhLmdsb2JhbHMuc2VyaWVzW2VdKSksYz1NYXRoLm1heC5hcHBseShNYXRoLHUoYS5nbG9iYWxzLnNlcmllc1tlXSkpO3IuZGlzdHJpYnV0ZWR8fFwiaGVhdG1hcFwiIT09dHx8KGg9YS5nbG9iYWxzLm1pblksYz1hLmdsb2JhbHMubWF4WSksdm9pZCAwIT09ci5jb2xvclNjYWxlLm1pbiYmKGg9ci5jb2xvclNjYWxlLm1pbjxhLmdsb2JhbHMubWluWT9yLmNvbG9yU2NhbGUubWluOmEuZ2xvYmFscy5taW5ZLGM9ci5jb2xvclNjYWxlLm1heD5hLmdsb2JhbHMubWF4WT9yLmNvbG9yU2NhbGUubWF4OmEuZ2xvYmFscy5tYXhZKTt2YXIgZD1NYXRoLmFicyhjKStNYXRoLmFicyhoKSxnPTEwMCpzLygwPT09ZD9kLTFlLTY6ZCk7ci5jb2xvclNjYWxlLnJhbmdlcy5sZW5ndGg+MCYmci5jb2xvclNjYWxlLnJhbmdlcy5tYXAoKGZ1bmN0aW9uKHQsZSl7aWYocz49dC5mcm9tJiZzPD10LnRvKXtuPXQuY29sb3IsbD10LmZvcmVDb2xvcj90LmZvcmVDb2xvcjpudWxsLGg9dC5mcm9tLGM9dC50bzt2YXIgaT1NYXRoLmFicyhjKStNYXRoLmFicyhoKTtnPTEwMCpzLygwPT09aT9pLTFlLTY6aSl9fSkpO3JldHVybntjb2xvcjpuLGZvcmVDb2xvcjpsLHBlcmNlbnQ6Z319fSx7a2V5OlwiY2FsY3VsYXRlRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGV4dCxpPXQueCxhPXQueSxzPXQuaSxyPXQuaixvPXQuY29sb3JQcm9wcyxuPXQuZm9udFNpemUsbD10aGlzLncuY29uZmlnLmRhdGFMYWJlbHMsaD1uZXcgbSh0aGlzLmN0eCksYz1uZXcgTyh0aGlzLmN0eCksZD1udWxsO2lmKGwuZW5hYmxlZCl7ZD1oLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO3ZhciBnPWwub2Zmc2V0WCx1PWwub2Zmc2V0WSxwPWkrZyxmPWErcGFyc2VGbG9hdChsLnN0eWxlLmZvbnRTaXplKS8zK3U7Yy5wbG90RGF0YUxhYmVsc1RleHQoe3g6cCx5OmYsdGV4dDplLGk6cyxqOnIsY29sb3I6by5mb3JlQ29sb3IscGFyZW50OmQsZm9udFNpemU6bixkYXRhTGFiZWxzQ29uZmlnOmx9KX1yZXR1cm4gZH19LHtrZXk6XCJhZGRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgbSh0aGlzLmN0eCk7dC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsZS5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGUucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGUucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMsdCkpfX1dKSx0fSgpLFN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy54UmF0aW89aS54UmF0aW8sdGhpcy55UmF0aW89aS55UmF0aW8sdGhpcy5keW5hbWljQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbix0aGlzLmhlbHBlcnM9bmV3IEF0KGUpLHRoaXMucmVjdFJhZGl1cz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAucmFkaXVzLHRoaXMuc3Ryb2tlV2lkdGg9dGhpcy53LmNvbmZpZy5zdHJva2Uuc2hvdz90aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aDowfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWhlYXRtYXBcIn0pO2EuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoZS5nbG9iYWxzLmN1aWQsXCIpXCIpKTt2YXIgcz1lLmdsb2JhbHMuZ3JpZFdpZHRoL2UuZ2xvYmFscy5kYXRhUG9pbnRzLHI9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsbz0wLG49ITE7dGhpcy5uZWdSYW5nZT10aGlzLmhlbHBlcnMuY2hlY2tDb2xvclJhbmdlKCk7dmFyIGw9dC5zbGljZSgpO2UuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkJiYobj0hMCxsLnJldmVyc2UoKSk7Zm9yKHZhciBoPW4/MDpsLmxlbmd0aC0xO24/aDxsLmxlbmd0aDpoPj0wO24/aCsrOmgtLSl7dmFyIGM9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLWhlYXRtYXAtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhlLmdsb2JhbHMuc2VyaWVzTmFtZXNbaF0pLHJlbDpoKzEsXCJkYXRhOnJlYWxJbmRleFwiOmh9KTtpZih0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhjLGgpLGUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGQ9ZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztuZXcgdih0aGlzLmN0eCkuZHJvcFNoYWRvdyhjLGQsaCl9Zm9yKHZhciBnPTAsdT1lLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLnNoYWRlSW50ZW5zaXR5LHA9MDtwPGxbaF0ubGVuZ3RoO3ArKyl7dmFyIGY9dGhpcy5oZWxwZXJzLmdldFNoYWRlQ29sb3IoZS5jb25maWcuY2hhcnQudHlwZSxoLHAsdGhpcy5uZWdSYW5nZSksYj1mLmNvbG9yLHk9Zi5jb2xvclByb3BzO2lmKFwiaW1hZ2VcIj09PWUuY29uZmlnLmZpbGwudHlwZSliPW5ldyBSKHRoaXMuY3R4KS5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmgsZGF0YVBvaW50SW5kZXg6cCxvcGFjaXR5OmUuZ2xvYmFscy5oYXNOZWdzP3kucGVyY2VudDwwPzEtKDEreS5wZXJjZW50LzEwMCk6dSt5LnBlcmNlbnQvMTAwOnkucGVyY2VudC8xMDAscGF0dGVybklEOngucmFuZG9tSWQoKSx3aWR0aDplLmNvbmZpZy5maWxsLmltYWdlLndpZHRoP2UuY29uZmlnLmZpbGwuaW1hZ2Uud2lkdGg6cyxoZWlnaHQ6ZS5jb25maWcuZmlsbC5pbWFnZS5oZWlnaHQ/ZS5jb25maWcuZmlsbC5pbWFnZS5oZWlnaHQ6cn0pO3ZhciB3PXRoaXMucmVjdFJhZGl1cyxrPWkuZHJhd1JlY3QoZyxvLHMscix3KTtpZihrLmF0dHIoe2N4OmcsY3k6b30pLGsubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oZWF0bWFwLXJlY3RcIiksYy5hZGQoayksay5hdHRyKHtmaWxsOmIsaTpoLGluZGV4OmgsajpwLHZhbDpsW2hdW3BdLFwic3Ryb2tlLXdpZHRoXCI6dGhpcy5zdHJva2VXaWR0aCxzdHJva2U6ZS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC51c2VGaWxsQ29sb3JBc1N0cm9rZT9iOmUuZ2xvYmFscy5zdHJva2UuY29sb3JzWzBdLGNvbG9yOmJ9KSx0aGlzLmhlbHBlcnMuYWRkTGlzdGVuZXJzKGspLGUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIWUuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIEE9MTtlLmdsb2JhbHMucmVzaXplZHx8KEE9ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksdGhpcy5hbmltYXRlSGVhdE1hcChrLGcsbyxzLHIsQSl9aWYoZS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgUz0xO2lmKHRoaXMuZHluYW1pY0FuaW0uZW5hYmxlZCYmZS5nbG9iYWxzLnNob3VsZEFuaW1hdGUpe1M9dGhpcy5keW5hbWljQW5pbS5zcGVlZDt2YXIgQz1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1toXSYmZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bcF0mJmUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdW3BdLmNvbG9yO0N8fChDPVwicmdiYSgyNTUsIDI1NSwgMjU1LCAwKVwiKSx0aGlzLmFuaW1hdGVIZWF0Q29sb3Ioayx4LmlzQ29sb3JIZXgoQyk/Qzp4LnJnYjJoZXgoQykseC5pc0NvbG9ySGV4KGIpP2I6eC5yZ2IyaGV4KGIpLFMpfX12YXIgTD0oMCxlLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcikoZS5nbG9iYWxzLnNlcmllc1toXVtwXSx7dmFsdWU6ZS5nbG9iYWxzLnNlcmllc1toXVtwXSxzZXJpZXNJbmRleDpoLGRhdGFQb2ludEluZGV4OnAsdzplfSksUD10aGlzLmhlbHBlcnMuY2FsY3VsYXRlRGF0YUxhYmVscyh7dGV4dDpMLHg6ZytzLzIseTpvK3IvMixpOmgsajpwLGNvbG9yUHJvcHM6eSxzZXJpZXM6bH0pO251bGwhPT1QJiZjLmFkZChQKSxnKz1zfW8rPXIsYS5hZGQoYyl9dmFyIEk9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnNsaWNlKCk7cmV0dXJuIGUuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkP0kudW5zaGlmdChcIlwiKTpJLnB1c2goXCJcIiksZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0PUksYX19LHtrZXk6XCJhbmltYXRlSGVhdE1hcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbz1uZXcgYih0aGlzLmN0eCk7by5hbmltYXRlUmVjdCh0LHt4OmUrYS8yLHk6aStzLzIsd2lkdGg6MCxoZWlnaHQ6MH0se3g6ZSx5Omksd2lkdGg6YSxoZWlnaHQ6c30sciwoZnVuY3Rpb24oKXtvLmFuaW1hdGlvbkNvbXBsZXRlZCh0KX0pKX19LHtrZXk6XCJhbmltYXRlSGVhdENvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dC5hdHRyKHtmaWxsOmV9KS5hbmltYXRlKGEpLmF0dHIoe2ZpbGw6aX0pfX1dKSx0fSgpLEN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkcmF3WUF4aXNUZXh0c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPXMuY29uZmlnLnlheGlzWzBdLG89cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF07cmV0dXJuIG5ldyBtKHRoaXMuY3R4KS5kcmF3VGV4dCh7eDp0K3IubGFiZWxzLm9mZnNldFgseTplK3IubGFiZWxzLm9mZnNldFksdGV4dDpvKGEsaSksdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOnIubGFiZWxzLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShyLmxhYmVscy5zdHlsZS5jb2xvcnMpP3IubGFiZWxzLnN0eWxlLmNvbG9yc1tpXTpyLmxhYmVscy5zdHlsZS5jb2xvcnN9KX19XSksdH0oKSxMdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy5jaGFydFR5cGU9dGhpcy53LmNvbmZpZy5jaGFydC50eXBlLHRoaXMuaW5pdGlhbEFuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsdGhpcy5keW5hbWljQW5pbT10aGlzLmluaXRpYWxBbmltJiZ0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkLHRoaXMuYW5pbUJlZ2luQXJyPVswXSx0aGlzLmFuaW1EdXI9MCx0aGlzLmRvbnV0RGF0YUxhYmVscz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5sYWJlbHMsdGhpcy5saW5lQ29sb3JBcnI9dm9pZCAwIT09aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM/aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6aS5nbG9iYWxzLmNvbG9ycyx0aGlzLmRlZmF1bHRTaXplPU1hdGgubWluKGkuZ2xvYmFscy5ncmlkV2lkdGgsaS5nbG9iYWxzLmdyaWRIZWlnaHQpLHRoaXMuY2VudGVyWT10aGlzLmRlZmF1bHRTaXplLzIsdGhpcy5jZW50ZXJYPWkuZ2xvYmFscy5ncmlkV2lkdGgvMixcInJhZGlhbEJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZT90aGlzLmZ1bGxBbmdsZT0zNjA6dGhpcy5mdWxsQW5nbGU9TWF0aC5hYnMoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmVuZEFuZ2xlLWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlKSx0aGlzLmluaXRpYWxBbmdsZT1pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSV0aGlzLmZ1bGxBbmdsZSxpLmdsb2JhbHMucmFkaWFsU2l6ZT10aGlzLmRlZmF1bHRTaXplLzIuMDUtaS5jb25maWcuc3Ryb2tlLndpZHRoLShpLmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8wOmkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1ciksdGhpcy5kb251dFNpemU9aS5nbG9iYWxzLnJhZGlhbFNpemUqcGFyc2VJbnQoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LnNpemUsMTApLzEwMCx0aGlzLm1heFk9MCx0aGlzLnNsaWNlTGFiZWxzPVtdLHRoaXMuc2xpY2VTaXplcz1bXSx0aGlzLnByZXZTZWN0b3JBbmdsZUFycj1bXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCk7aWYodGhpcy5yZXQ9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBpZVwifSksaS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gdGhpcy5yZXQ7Zm9yKHZhciBzPTAscj0wO3I8dC5sZW5ndGg7cisrKXMrPXgubmVnVG9aZXJvKHRbcl0pO3ZhciBvPVtdLG49YS5ncm91cCgpOzA9PT1zJiYocz0xZS01KSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UubWF4WT1NYXRoLm1heChlLm1heFksdCl9KSksaS5jb25maWcueWF4aXNbMF0ubWF4JiYodGhpcy5tYXhZPWkuY29uZmlnLnlheGlzWzBdLm1heCksXCJiYWNrXCI9PT1pLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiZcInBvbGFyQXJlYVwiPT09dGhpcy5jaGFydFR5cGUmJnRoaXMuZHJhd1BvbGFyRWxlbWVudHModGhpcy5yZXQpO2Zvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgaD10aGlzLmZ1bGxBbmdsZSp4Lm5lZ1RvWmVybyh0W2xdKS9zO28ucHVzaChoKSxcInBvbGFyQXJlYVwiPT09dGhpcy5jaGFydFR5cGU/KG9bbF09dGhpcy5mdWxsQW5nbGUvdC5sZW5ndGgsdGhpcy5zbGljZVNpemVzLnB1c2goaS5nbG9iYWxzLnJhZGlhbFNpemUqdFtsXS90aGlzLm1heFkpKTp0aGlzLnNsaWNlU2l6ZXMucHVzaChpLmdsb2JhbHMucmFkaWFsU2l6ZSl9aWYoaS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXtmb3IodmFyIGMsZD0wLGc9MDtnPGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtnKyspZCs9eC5uZWdUb1plcm8oaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbZ10pO2Zvcih2YXIgdT0wO3U8aS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3UrKyljPXRoaXMuZnVsbEFuZ2xlKngubmVnVG9aZXJvKGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3VdKS9kLHRoaXMucHJldlNlY3RvckFuZ2xlQXJyLnB1c2goYyl9dGhpcy5kb251dFNpemU8MCYmKHRoaXMuZG9udXRTaXplPTApO3ZhciBwPWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5jdXN0b21TY2FsZSxmPWkuZ2xvYmFscy5ncmlkV2lkdGgvMixiPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIsdj1mLWkuZ2xvYmFscy5ncmlkV2lkdGgvMipwLHk9Yi1pLmdsb2JhbHMuZ3JpZEhlaWdodC8yKnA7aWYoXCJkb251dFwiPT09dGhpcy5jaGFydFR5cGUpe3ZhciB3PWEuZHJhd0NpcmNsZSh0aGlzLmRvbnV0U2l6ZSk7dy5hdHRyKHtjeDp0aGlzLmNlbnRlclgsY3k6dGhpcy5jZW50ZXJZLGZpbGw6aS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmJhY2tncm91bmQ/aS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwifSksbi5hZGQodyl9dmFyIGs9dGhpcy5kcmF3QXJjcyhvLHQpO2lmKHRoaXMuc2xpY2VMYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ay5hZGQodCl9KSksbi5hdHRyKHt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHYsXCIsIFwiKS5jb25jYXQoeSxcIikgc2NhbGUoXCIpLmNvbmNhdChwLFwiKVwiKX0pLG4uYWRkKGspLHRoaXMucmV0LmFkZChuKSx0aGlzLmRvbnV0RGF0YUxhYmVscy5zaG93KXt2YXIgQT10aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLmRvbnV0RGF0YUxhYmVscyx7aG9sbG93U2l6ZTp0aGlzLmRvbnV0U2l6ZSxjZW50ZXJYOnRoaXMuY2VudGVyWCxjZW50ZXJZOnRoaXMuY2VudGVyWSxvcGFjaXR5OnRoaXMuZG9udXREYXRhTGFiZWxzLnNob3csdHJhbnNsYXRlWDp2LHRyYW5zbGF0ZVk6eX0pO3RoaXMucmV0LmFkZChBKX1yZXR1cm5cImZyb250XCI9PT1pLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiZcInBvbGFyQXJlYVwiPT09dGhpcy5jaGFydFR5cGUmJnRoaXMuZHJhd1BvbGFyRWxlbWVudHModGhpcy5yZXQpLHRoaXMucmV0fX0se2tleTpcImRyYXdBcmNzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgdih0aGlzLmN0eCkscz1uZXcgbSh0aGlzLmN0eCkscj1uZXcgUih0aGlzLmN0eCksbz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2xpY2VzXCJ9KSxuPXRoaXMuaW5pdGlhbEFuZ2xlLGw9dGhpcy5pbml0aWFsQW5nbGUsaD10aGlzLmluaXRpYWxBbmdsZSxjPXRoaXMuaW5pdGlhbEFuZ2xlO3RoaXMuc3Ryb2tlV2lkdGg9aS5jb25maWcuc3Ryb2tlLnNob3c/aS5jb25maWcuc3Ryb2tlLndpZHRoOjA7Zm9yKHZhciBkPTA7ZDx0Lmxlbmd0aDtkKyspe3ZhciBnPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1waWUtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbZF0pLHJlbDpkKzEsXCJkYXRhOnJlYWxJbmRleFwiOmR9KTtvLmFkZChnKSxsPWMsaD0obj1oKSt0W2RdLGM9bCt0aGlzLnByZXZTZWN0b3JBbmdsZUFycltkXTt2YXIgdT1oPG4/dGhpcy5mdWxsQW5nbGUraC1uOmgtbixwPXIuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpkLHNpemU6dGhpcy5zbGljZVNpemVzW2RdLHZhbHVlOmVbZF19KSxmPXRoaXMuZ2V0Q2hhbmdlZFBhdGgobCxjKSxiPXMuZHJhd1BhdGgoe2Q6ZixzdHJva2U6QXJyYXkuaXNBcnJheSh0aGlzLmxpbmVDb2xvckFycik/dGhpcy5saW5lQ29sb3JBcnJbZF06dGhpcy5saW5lQ29sb3JBcnIsc3Ryb2tlV2lkdGg6MCxmaWxsOnAsZmlsbE9wYWNpdHk6aS5jb25maWcuZmlsbC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXBpZS1hcmVhIGFwZXhjaGFydHMtXCIuY29uY2F0KHRoaXMuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCksXCItc2xpY2UtXCIpLmNvbmNhdChkKX0pO2lmKGIuYXR0cih7aW5kZXg6MCxqOmR9KSxhLnNldFNlbGVjdGlvbkZpbHRlcihiLDAsZCksaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgeT1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O2EuZHJvcFNoYWRvdyhiLHksZCl9dGhpcy5hZGRMaXN0ZW5lcnMoYix0aGlzLmRvbnV0RGF0YUxhYmVscyksbS5zZXRBdHRycyhiLm5vZGUse1wiZGF0YTphbmdsZVwiOnUsXCJkYXRhOnN0YXJ0QW5nbGVcIjpuLFwiZGF0YTpzdHJva2VXaWR0aFwiOnRoaXMuc3Ryb2tlV2lkdGgsXCJkYXRhOnZhbHVlXCI6ZVtkXX0pO3ZhciB3PXt4OjAseTowfTtcInBpZVwiPT09dGhpcy5jaGFydFR5cGV8fFwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZT93PXgucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLGkuZ2xvYmFscy5yYWRpYWxTaXplLzEuMjUraS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMub2Zmc2V0LChuK3UvMikldGhpcy5mdWxsQW5nbGUpOlwiZG9udXRcIj09PXRoaXMuY2hhcnRUeXBlJiYodz14LnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWSwoaS5nbG9iYWxzLnJhZGlhbFNpemUrdGhpcy5kb251dFNpemUpLzIraS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMub2Zmc2V0LChuK3UvMikldGhpcy5mdWxsQW5nbGUpKSxnLmFkZChiKTt2YXIgaz0wO2lmKCF0aGlzLmluaXRpYWxBbmltfHxpLmdsb2JhbHMucmVzaXplZHx8aS5nbG9iYWxzLmRhdGFDaGFuZ2VkP3RoaXMuYW5pbUJlZ2luQXJyLnB1c2goMCk6KDA9PT0oaz11L3RoaXMuZnVsbEFuZ2xlKmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpJiYoaz0xKSx0aGlzLmFuaW1EdXI9ayt0aGlzLmFuaW1EdXIsdGhpcy5hbmltQmVnaW5BcnIucHVzaCh0aGlzLmFuaW1EdXIpKSx0aGlzLmR5bmFtaWNBbmltJiZpLmdsb2JhbHMuZGF0YUNoYW5nZWQ/dGhpcy5hbmltYXRlUGF0aHMoYix7c2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZF0sZW5kQW5nbGU6aCxzdGFydEFuZ2xlOm4scHJldlN0YXJ0QW5nbGU6bCxwcmV2RW5kQW5nbGU6YyxhbmltYXRlU3RhcnRpbmdQb3M6ITAsaTpkLGFuaW1CZWdpbkFycjp0aGlzLmFuaW1CZWdpbkFycixzaG91bGRTZXRQcmV2UGF0aHM6ITAsZHVyOmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZH0pOnRoaXMuYW5pbWF0ZVBhdGhzKGIse3NpemU6dGhpcy5zbGljZVNpemVzW2RdLGVuZEFuZ2xlOmgsc3RhcnRBbmdsZTpuLGk6ZCx0b3RhbEl0ZW1zOnQubGVuZ3RoLTEsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLGR1cjprfSksaS5jb25maWcucGxvdE9wdGlvbnMucGllLmV4cGFuZE9uQ2xpY2smJlwicG9sYXJBcmVhXCIhPT10aGlzLmNoYXJ0VHlwZSYmYi5jbGljayh0aGlzLnBpZUNsaWNrZWQuYmluZCh0aGlzLGQpKSx2b2lkIDAhPT1pLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdJiZpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLmluZGV4T2YoZCk+LTEmJnRoaXMucGllQ2xpY2tlZChkKSxpLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQpe3ZhciBBPXcueCxTPXcueSxDPTEwMCp1L3RoaXMuZnVsbEFuZ2xlK1wiJVwiO2lmKDAhPT11JiZpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5taW5BbmdsZVRvU2hvd0xhYmVsPHRbZF0pe3ZhciBMPWkuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyO3ZvaWQgMCE9PUwmJihDPUwoaS5nbG9iYWxzLnNlcmllc1BlcmNlbnRbZF1bMF0se3Nlcmllc0luZGV4OmQsdzppfSkpO3ZhciBQPWkuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tkXSxJPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCJ9KSxNPXMuZHJhd1RleHQoe3g6QSx5OlMsdGV4dDpDLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjpQfSk7aWYoSS5hZGQoTSksaS5jb25maWcuZGF0YUxhYmVscy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBUPWkuY29uZmlnLmRhdGFMYWJlbHMuZHJvcFNoYWRvdzthLmRyb3BTaGFkb3coTSxUKX1NLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtcGllLWxhYmVsXCIpLGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZSYmITE9PT1pLmdsb2JhbHMucmVzaXplZCYmKE0ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1waWUtbGFiZWwtZGVsYXlcIiksTS5ub2RlLnN0eWxlLmFuaW1hdGlvbkRlbGF5PWkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQvOTQwK1wic1wiKSx0aGlzLnNsaWNlTGFiZWxzLnB1c2goSSl9fX1yZXR1cm4gb319LHtrZXk6XCJhZGRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPW5ldyBtKHRoaXMuY3R4KTt0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixpLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHRoaXMucmV2ZXJ0RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyx0Lm5vZGUsZSkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcyx0KSksdGhpcy5kb251dERhdGFMYWJlbHMudG90YWwuc2hvd0Fsd2F5c3x8KHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyx0Lm5vZGUsZSkpKX19LHtrZXk6XCJhbmltYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWUuZW5kQW5nbGU8ZS5zdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK2UuZW5kQW5nbGUtZS5zdGFydEFuZ2xlOmUuZW5kQW5nbGUtZS5zdGFydEFuZ2xlLHM9YSxyPWUuc3RhcnRBbmdsZSxvPWUuc3RhcnRBbmdsZTt2b2lkIDAhPT1lLnByZXZTdGFydEFuZ2xlJiZ2b2lkIDAhPT1lLnByZXZFbmRBbmdsZSYmKHI9ZS5wcmV2RW5kQW5nbGUscz1lLnByZXZFbmRBbmdsZTxlLnByZXZTdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK2UucHJldkVuZEFuZ2xlLWUucHJldlN0YXJ0QW5nbGU6ZS5wcmV2RW5kQW5nbGUtZS5wcmV2U3RhcnRBbmdsZSksZS5pPT09aS5jb25maWcuc2VyaWVzLmxlbmd0aC0xJiYoYStvPnRoaXMuZnVsbEFuZ2xlP2UuZW5kQW5nbGU9ZS5lbmRBbmdsZS0oYStvKTphK288dGhpcy5mdWxsQW5nbGUmJihlLmVuZEFuZ2xlPWUuZW5kQW5nbGUrKHRoaXMuZnVsbEFuZ2xlLShhK28pKSkpLGE9PT10aGlzLmZ1bGxBbmdsZSYmKGE9dGhpcy5mdWxsQW5nbGUtLjAxKSx0aGlzLmFuaW1hdGVBcmModCxyLG8sYSxzLGUpfX0se2tleTpcImFuaW1hdGVBcmNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG8sbj10aGlzLGw9dGhpcy53LGg9bmV3IGIodGhpcy5jdHgpLGM9ci5zaXplOyhpc05hTihlKXx8aXNOYU4ocykpJiYoZT1pLHM9YSxyLmR1cj0wKTt2YXIgZD1hLGc9aSx1PWU8aT90aGlzLmZ1bGxBbmdsZStlLWk6ZS1pO2wuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmci5zaG91bGRTZXRQcmV2UGF0aHMmJnIucHJldkVuZEFuZ2xlJiYobz1uLmdldFBpZVBhdGgoe21lOm4sc3RhcnRBbmdsZTpyLnByZXZTdGFydEFuZ2xlLGFuZ2xlOnIucHJldkVuZEFuZ2xlPHIucHJldlN0YXJ0QW5nbGU/dGhpcy5mdWxsQW5nbGUrci5wcmV2RW5kQW5nbGUtci5wcmV2U3RhcnRBbmdsZTpyLnByZXZFbmRBbmdsZS1yLnByZXZTdGFydEFuZ2xlLHNpemU6Y30pLHQuYXR0cih7ZDpvfSkpLDAhPT1yLmR1cj90LmFuaW1hdGUoci5kdXIsbC5nbG9iYWxzLmVhc2luZyxyLmFuaW1CZWdpbkFycltyLmldKS5hZnRlckFsbCgoZnVuY3Rpb24oKXtcInBpZVwiIT09bi5jaGFydFR5cGUmJlwiZG9udXRcIiE9PW4uY2hhcnRUeXBlJiZcInBvbGFyQXJlYVwiIT09bi5jaGFydFR5cGV8fHRoaXMuYW5pbWF0ZShsLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQpLmF0dHIoe1wic3Ryb2tlLXdpZHRoXCI6bi5zdHJva2VXaWR0aH0pLHIuaT09PWwuY29uZmlnLnNlcmllcy5sZW5ndGgtMSYmaC5hbmltYXRpb25Db21wbGV0ZWQodCl9KSkuZHVyaW5nKChmdW5jdGlvbihsKXtkPXUrKGEtdSkqbCxyLmFuaW1hdGVTdGFydGluZ1BvcyYmKGQ9cysoYS1zKSpsLGc9ZS1zKyhpLShlLXMpKSpsKSxvPW4uZ2V0UGllUGF0aCh7bWU6bixzdGFydEFuZ2xlOmcsYW5nbGU6ZCxzaXplOmN9KSx0Lm5vZGUuc2V0QXR0cmlidXRlKFwiZGF0YTpwYXRoT3JpZ1wiLG8pLHQuYXR0cih7ZDpvfSl9KSk6KG89bi5nZXRQaWVQYXRoKHttZTpuLHN0YXJ0QW5nbGU6ZyxhbmdsZTphLHNpemU6Y30pLHIuaXNUcmFja3x8KGwuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCksdC5ub2RlLnNldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIixvKSx0LmF0dHIoe2Q6byxcInN0cm9rZS13aWR0aFwiOm4uc3Ryb2tlV2lkdGh9KSl9fSx7a2V5OlwicGllQ2xpY2tlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy53LGE9dGhpcyxzPWEuc2xpY2VTaXplc1t0XSsoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmV4cGFuZE9uQ2xpY2s/NDowKSxyPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGEuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCksXCItc2xpY2UtXCIpLmNvbmNhdCh0KSkubWVtYmVyc1swXTtpZihcInRydWVcIiE9PXIuYXR0cihcImRhdGE6cGllQ2xpY2tlZFwiKSl7dmFyIG89aS5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtcGllLWFyZWFcIik7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChvLChmdW5jdGlvbih0KXt0LnNldEF0dHJpYnV0ZShcImRhdGE6cGllQ2xpY2tlZFwiLFwiZmFsc2VcIik7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnBhdGhPcmlnXCIpO2UmJnQuc2V0QXR0cmlidXRlKFwiZFwiLGUpfSkpLHIuYXR0cihcImRhdGE6cGllQ2xpY2tlZFwiLFwidHJ1ZVwiKTt2YXIgbj1wYXJzZUludChyLmF0dHIoXCJkYXRhOnN0YXJ0QW5nbGVcIiksMTApLGw9cGFyc2VJbnQoci5hdHRyKFwiZGF0YTphbmdsZVwiKSwxMCk7ZT1hLmdldFBpZVBhdGgoe21lOmEsc3RhcnRBbmdsZTpuLGFuZ2xlOmwsc2l6ZTpzfSksMzYwIT09bCYmci5wbG90KGUpfWVsc2V7ci5hdHRyKHtcImRhdGE6cGllQ2xpY2tlZFwiOlwiZmFsc2VcIn0pLHRoaXMucmV2ZXJ0RGF0YUxhYmVsc0lubmVyKHIubm9kZSx0aGlzLmRvbnV0RGF0YUxhYmVscyk7dmFyIGg9ci5hdHRyKFwiZGF0YTpwYXRoT3JpZ1wiKTtyLmF0dHIoe2Q6aH0pfX19LHtrZXk6XCJnZXRDaGFuZ2VkUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9XCJcIjtyZXR1cm4gdGhpcy5keW5hbWljQW5pbSYmdGhpcy53Lmdsb2JhbHMuZGF0YUNoYW5nZWQmJihpPXRoaXMuZ2V0UGllUGF0aCh7bWU6dGhpcyxzdGFydEFuZ2xlOnQsYW5nbGU6ZS10LHNpemU6dGhpcy5zaXplfSkpLGl9fSx7a2V5OlwiZ2V0UGllUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubWUsaT10LnN0YXJ0QW5nbGUsYT10LmFuZ2xlLHM9dC5zaXplLHI9aSxvPU1hdGguUEkqKHItOTApLzE4MCxuPWEraTtNYXRoLmNlaWwobik+PXRoaXMuZnVsbEFuZ2xlK3RoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUldGhpcy5mdWxsQW5nbGUmJihuPXRoaXMuZnVsbEFuZ2xlK3RoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUldGhpcy5mdWxsQW5nbGUtLjAxKSxNYXRoLmNlaWwobik+dGhpcy5mdWxsQW5nbGUmJihuLT10aGlzLmZ1bGxBbmdsZSk7dmFyIGw9TWF0aC5QSSoobi05MCkvMTgwLGg9ZS5jZW50ZXJYK3MqTWF0aC5jb3MobyksYz1lLmNlbnRlclkrcypNYXRoLnNpbihvKSxkPWUuY2VudGVyWCtzKk1hdGguY29zKGwpLGc9ZS5jZW50ZXJZK3MqTWF0aC5zaW4obCksdT14LnBvbGFyVG9DYXJ0ZXNpYW4oZS5jZW50ZXJYLGUuY2VudGVyWSxlLmRvbnV0U2l6ZSxuKSxwPXgucG9sYXJUb0NhcnRlc2lhbihlLmNlbnRlclgsZS5jZW50ZXJZLGUuZG9udXRTaXplLHIpLGY9YT4xODA/MTowLGI9W1wiTVwiLGgsYyxcIkFcIixzLHMsMCxmLDEsZCxnXTtyZXR1cm5cImRvbnV0XCI9PT1lLmNoYXJ0VHlwZT9bXS5jb25jYXQoYixbXCJMXCIsdS54LHUueSxcIkFcIixlLmRvbnV0U2l6ZSxlLmRvbnV0U2l6ZSwwLGYsMCxwLngscC55LFwiTFwiLGgsYyxcInpcIl0pLmpvaW4oXCIgXCIpOlwicGllXCI9PT1lLmNoYXJ0VHlwZXx8XCJwb2xhckFyZWFcIj09PWUuY2hhcnRUeXBlP1tdLmNvbmNhdChiLFtcIkxcIixlLmNlbnRlclgsZS5jZW50ZXJZLFwiTFwiLGgsY10pLmpvaW4oXCIgXCIpOltdLmNvbmNhdChiKS5qb2luKFwiIFwiKX19LHtrZXk6XCJkcmF3UG9sYXJFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBfKHRoaXMuY3R4KSxhPW5ldyBtKHRoaXMuY3R4KSxzPW5ldyBDdCh0aGlzLmN0eCkscj1hLmdyb3VwKCksbz1hLmdyb3VwKCksbj1pLm5pY2VTY2FsZSgwLE1hdGguY2VpbCh0aGlzLm1heFkpLGUuY29uZmlnLnlheGlzWzBdLnRpY2tBbW91bnQsMCwhMCksbD1uLnJlc3VsdC5yZXZlcnNlKCksaD1uLnJlc3VsdC5sZW5ndGg7dGhpcy5tYXhZPW4ubmljZU1heDtmb3IodmFyIGM9ZS5nbG9iYWxzLnJhZGlhbFNpemUsZD1jLyhoLTEpLGc9MDtnPGgtMTtnKyspe3ZhciB1PWEuZHJhd0NpcmNsZShjKTtpZih1LmF0dHIoe2N4OnRoaXMuY2VudGVyWCxjeTp0aGlzLmNlbnRlclksZmlsbDpcIm5vbmVcIixcInN0cm9rZS13aWR0aFwiOmUuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5yaW5ncy5zdHJva2VXaWR0aCxzdHJva2U6ZS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnJpbmdzLnN0cm9rZUNvbG9yfSksZS5jb25maWcueWF4aXNbMF0uc2hvdyl7dmFyIHA9cy5kcmF3WUF4aXNUZXh0cyh0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLWMrcGFyc2VJbnQoZS5jb25maWcueWF4aXNbMF0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8yLGcsbFtnXSk7by5hZGQocCl9ci5hZGQodSksYy09ZH10aGlzLmRyYXdTcG9rZXModCksdC5hZGQociksdC5hZGQobyl9fSx7a2V5OlwicmVuZGVySW5uZXJEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoZS50cmFuc2xhdGVYP2UudHJhbnNsYXRlWDowLFwiLCBcIikuY29uY2F0KGUudHJhbnNsYXRlWT9lLnRyYW5zbGF0ZVk6MCxcIikgc2NhbGUoXCIpLmNvbmNhdChpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuY3VzdG9tU2NhbGUsXCIpXCIpfSkscj10LnRvdGFsLnNob3c7cy5ub2RlLnN0eWxlLm9wYWNpdHk9ZS5vcGFjaXR5O3ZhciBvLG4sbD1lLmNlbnRlclgsaD1lLmNlbnRlclk7bz12b2lkIDA9PT10Lm5hbWUuY29sb3I/aS5nbG9iYWxzLmNvbG9yc1swXTp0Lm5hbWUuY29sb3I7dmFyIGM9dC5uYW1lLmZvbnRTaXplLGQ9dC5uYW1lLmZvbnRGYW1pbHksZz10Lm5hbWUuZm9udFdlaWdodDtuPXZvaWQgMD09PXQudmFsdWUuY29sb3I/aS5jb25maWcuY2hhcnQuZm9yZUNvbG9yOnQudmFsdWUuY29sb3I7dmFyIHU9dC52YWx1ZS5mb3JtYXR0ZXIscD1cIlwiLGY9XCJcIjtpZihyPyhvPXQudG90YWwuY29sb3IsYz10LnRvdGFsLmZvbnRTaXplLGQ9dC50b3RhbC5mb250RmFtaWx5LGc9dC50b3RhbC5mb250V2VpZ2h0LGY9dC50b3RhbC5sYWJlbCxwPXQudG90YWwuZm9ybWF0dGVyKGkpKToxPT09aS5nbG9iYWxzLnNlcmllcy5sZW5ndGgmJihwPXUoaS5nbG9iYWxzLnNlcmllc1swXSxpKSxmPWkuZ2xvYmFscy5zZXJpZXNOYW1lc1swXSksZiYmKGY9dC5uYW1lLmZvcm1hdHRlcihmLHQudG90YWwuc2hvdyxpKSksdC5uYW1lLnNob3cpe3ZhciB4PWEuZHJhd1RleHQoe3g6bCx5OmgrcGFyc2VGbG9hdCh0Lm5hbWUub2Zmc2V0WSksdGV4dDpmLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb3JlQ29sb3I6byxmb250U2l6ZTpjLGZvbnRXZWlnaHQ6Zyxmb250RmFtaWx5OmR9KTt4Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsXCIpLHMuYWRkKHgpfWlmKHQudmFsdWUuc2hvdyl7dmFyIGI9dC5uYW1lLnNob3c/cGFyc2VGbG9hdCh0LnZhbHVlLm9mZnNldFkpKzE2OnQudmFsdWUub2Zmc2V0WSx2PWEuZHJhd1RleHQoe3g6bCx5OmgrYix0ZXh0OnAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpuLGZvbnRXZWlnaHQ6dC52YWx1ZS5mb250V2VpZ2h0LGZvbnRTaXplOnQudmFsdWUuZm9udFNpemUsZm9udEZhbWlseTp0LnZhbHVlLmZvbnRGYW1pbHl9KTt2Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlXCIpLHMuYWRkKHYpfXJldHVybiBzfX0se2tleTpcInByaW50SW5uZXJMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcyxyPXRoaXMudzthP3M9dm9pZCAwPT09dC5uYW1lLmNvbG9yP3IuZ2xvYmFscy5jb2xvcnNbcGFyc2VJbnQoYS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMV06dC5uYW1lLmNvbG9yOnIuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJnQudG90YWwuc2hvdyYmKHM9dC50b3RhbC5jb2xvcik7dmFyIG89ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbFwiKSxuPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWVcIik7aT0oMCx0LnZhbHVlLmZvcm1hdHRlcikoaSxyKSxhfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LnRvdGFsLmZvcm1hdHRlcnx8KGk9dC50b3RhbC5mb3JtYXR0ZXIocikpO3ZhciBsPWU9PT10LnRvdGFsLmxhYmVsO2U9dC5uYW1lLmZvcm1hdHRlcihlLGwsciksbnVsbCE9PW8mJihvLnRleHRDb250ZW50PWUpLG51bGwhPT1uJiYobi50ZXh0Q29udGVudD1pKSxudWxsIT09byYmKG8uc3R5bGUuZmlsbD1zKX19LHtrZXk6XCJwcmludERhdGFMYWJlbHNJbm5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnZhbHVlXCIpLHM9aS5nbG9iYWxzLnNlcmllc05hbWVzW3BhcnNlSW50KHQucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTFdO2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJnRoaXMucHJpbnRJbm5lckxhYmVscyhlLHMsYSx0KTt2YXIgcj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiKTtudWxsIT09ciYmKHIuc3R5bGUub3BhY2l0eT0xKX19LHtrZXk6XCJkcmF3U3Bva2VzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPWkuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5zcG9rZXM7aWYoMCE9PXMuc3Ryb2tlV2lkdGgpe2Zvcih2YXIgcj1bXSxvPTM2MC9pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxuPTA7bjxpLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtuKyspci5wdXNoKHgucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLGkuZ2xvYmFscy5yYWRpYWxTaXplLGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlK28qbikpO3IuZm9yRWFjaCgoZnVuY3Rpb24oaSxyKXt2YXIgbz1hLmRyYXdMaW5lKGkueCxpLnksZS5jZW50ZXJYLGUuY2VudGVyWSxBcnJheS5pc0FycmF5KHMuY29ubmVjdG9yQ29sb3JzKT9zLmNvbm5lY3RvckNvbG9yc1tyXTpzLmNvbm5lY3RvckNvbG9ycyk7dC5hZGQobyl9KSl9fX0se2tleTpcInJldmVydERhdGFMYWJlbHNJbm5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLHM9dGhpcy53LHI9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMtZ3JvdXBcIiksbz0hMSxuPXMuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXBpZS1hcmVhXCIpLGw9ZnVuY3Rpb24odCl7dmFyIGk9dC5tYWtlU2xpY2VPdXQscz10LnByaW50TGFiZWw7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChuLChmdW5jdGlvbih0KXtcInRydWVcIj09PXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpwaWVDbGlja2VkXCIpJiYoaSYmKG89ITApLHMmJmEucHJpbnREYXRhTGFiZWxzSW5uZXIodCxlKSl9KSl9O2lmKGwoe21ha2VTbGljZU91dDohMCxwcmludExhYmVsOiExfSksZS50b3RhbC5zaG93JiZzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xKW8mJiFlLnRvdGFsLnNob3dBbHdheXM/bCh7bWFrZVNsaWNlT3V0OiExLHByaW50TGFiZWw6ITB9KTp0aGlzLnByaW50SW5uZXJMYWJlbHMoZSxlLnRvdGFsLmxhYmVsLGUudG90YWwuZm9ybWF0dGVyKHMpKTtlbHNlIGlmKGwoe21ha2VTbGljZU91dDohMSxwcmludExhYmVsOiEwfSksIW8paWYocy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGgmJnMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpaWYocy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGg+MCl7dmFyIGg9cy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXSxjPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KGgpKTt0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyKGMsZSl9ZWxzZSByJiZzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aCYmMD09PXMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0ubGVuZ3RoJiYoci5zdHlsZS5vcGFjaXR5PTApO2Vsc2UgciYmcy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmKHIuc3R5bGUub3BhY2l0eT0wKX19XSksdH0oKSxQdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmNoYXJ0VHlwZT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsdGhpcy5hbmltRHVyPTA7dmFyIGk9dGhpcy53O3RoaXMuZ3JhcGhpY3M9bmV3IG0odGhpcy5jdHgpLHRoaXMubGluZUNvbG9yQXJyPXZvaWQgMCE9PWkuZ2xvYmFscy5zdHJva2UuY29sb3JzP2kuZ2xvYmFscy5zdHJva2UuY29sb3JzOmkuZ2xvYmFscy5jb2xvcnMsdGhpcy5kZWZhdWx0U2l6ZT1pLmdsb2JhbHMuc3ZnSGVpZ2h0PGkuZ2xvYmFscy5zdmdXaWR0aD9pLmdsb2JhbHMuZ3JpZEhlaWdodCsxLjUqaS5nbG9iYWxzLmdvbGRlblBhZGRpbmc6aS5nbG9iYWxzLmdyaWRXaWR0aCx0aGlzLmlzTG9nPWkuY29uZmlnLnlheGlzWzBdLmxvZ2FyaXRobWljLHRoaXMuY29yZVV0aWxzPW5ldyB5KHRoaXMuY3R4KSx0aGlzLm1heFZhbHVlPXRoaXMuaXNMb2c/dGhpcy5jb3JlVXRpbHMuZ2V0TG9nVmFsKGkuZ2xvYmFscy5tYXhZLDApOmkuZ2xvYmFscy5tYXhZLHRoaXMubWluVmFsdWU9dGhpcy5pc0xvZz90aGlzLmNvcmVVdGlscy5nZXRMb2dWYWwodGhpcy53Lmdsb2JhbHMubWluWSwwKTppLmdsb2JhbHMubWluWSx0aGlzLnBvbHlnb25zPWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLHRoaXMuc3Ryb2tlV2lkdGg9aS5jb25maWcuc3Ryb2tlLnNob3c/aS5jb25maWcuc3Ryb2tlLndpZHRoOjAsdGhpcy5zaXplPXRoaXMuZGVmYXVsdFNpemUvMi4xLXRoaXMuc3Ryb2tlV2lkdGgtaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyLGkuY29uZmlnLnhheGlzLmxhYmVscy5zaG93JiYodGhpcy5zaXplPXRoaXMuc2l6ZS1pLmdsb2JhbHMueEF4aXNMYWJlbHNXaWR0aC8xLjc1KSx2b2lkIDAhPT1pLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5zaXplJiYodGhpcy5zaXplPWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnNpemUpLHRoaXMuZGF0YVJhZGl1c09mUGVyY2VudD1bXSx0aGlzLmRhdGFSYWRpdXM9W10sdGhpcy5hbmdsZUFycj1bXSx0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3M9W119cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLGE9dGhpcy53LHM9bmV3IFIodGhpcy5jdHgpLHI9W10sbz1uZXcgTyh0aGlzLmN0eCk7dC5sZW5ndGgmJih0aGlzLmRhdGFQb2ludHNMZW49dFthLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoKSx0aGlzLmRpc0FuZ2xlPTIqTWF0aC5QSS90aGlzLmRhdGFQb2ludHNMZW47dmFyIG49YS5nbG9iYWxzLmdyaWRXaWR0aC8yLGw9YS5nbG9iYWxzLmdyaWRIZWlnaHQvMixoPW4rYS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIub2Zmc2V0WCxjPWwrYS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIub2Zmc2V0WSxkPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoaHx8MCxcIiwgXCIpLmNvbmNhdChjfHwwLFwiKVwiKX0pLGc9W10sdT1udWxsLHA9bnVsbDtpZih0aGlzLnlheGlzTGFiZWxzPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpc1wifSksdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3ZhciBsPXQubGVuZ3RoPT09YS5nbG9iYWxzLmRhdGFQb2ludHMsaD1pLmdyYXBoaWNzLmdyb3VwKCkuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLFwiZGF0YTpsb25nZXN0U2VyaWVzXCI6bCxzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1tuXSkscmVsOm4rMSxcImRhdGE6cmVhbEluZGV4XCI6bn0pO2kuZGF0YVJhZGl1c09mUGVyY2VudFtuXT1bXSxpLmRhdGFSYWRpdXNbbl09W10saS5hbmdsZUFycltuXT1bXSx0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGE9TWF0aC5hYnMoaS5tYXhWYWx1ZS1pLm1pblZhbHVlKTt0Kz1NYXRoLmFicyhpLm1pblZhbHVlKSxpLmlzTG9nJiYodD1pLmNvcmVVdGlscy5nZXRMb2dWYWwodCwwKSksaS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dW2VdPXQvYSxpLmRhdGFSYWRpdXNbbl1bZV09aS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dW2VdKmkuc2l6ZSxpLmFuZ2xlQXJyW25dW2VdPWUqaS5kaXNBbmdsZX0pKSxnPWkuZ2V0RGF0YVBvaW50c1BvcyhpLmRhdGFSYWRpdXNbbl0saS5hbmdsZUFycltuXSk7dmFyIGM9aS5jcmVhdGVQYXRocyhnLHt4OjAseTowfSk7dT1pLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCBhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCJ9KSxwPWkuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOm59KSxhLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOnUubm9kZSxpbmRleDpufSk7dmFyIGQ9e2k6bixyZWFsSW5kZXg6bixhbmltYXRpb25EZWxheTpuLGluaXRpYWxTcGVlZDphLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDphLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1yYWRhclwiLHNob3VsZENsaXBUb0dyaWQ6ITEsYmluZEV2ZW50c09uUGF0aHM6ITEsc3Ryb2tlOmEuZ2xvYmFscy5zdHJva2UuY29sb3JzW25dLHN0cm9rZUxpbmVDYXA6YS5jb25maWcuc3Ryb2tlLmxpbmVDYXB9LGY9bnVsbDthLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKGY9aS5nZXRQcmV2aW91c1BhdGgobikpO2Zvcih2YXIgYj0wO2I8Yy5saW5lUGF0aHNUby5sZW5ndGg7YisrKXt2YXIgbT1pLmdyYXBoaWNzLnJlbmRlclBhdGhzKGUoZSh7fSxkKSx7fSx7cGF0aEZyb206bnVsbD09PWY/Yy5saW5lUGF0aHNGcm9tW2JdOmYscGF0aFRvOmMubGluZVBhdGhzVG9bYl0sc3Ryb2tlV2lkdGg6QXJyYXkuaXNBcnJheShpLnN0cm9rZVdpZHRoKT9pLnN0cm9rZVdpZHRoW25dOmkuc3Ryb2tlV2lkdGgsZmlsbDpcIm5vbmVcIixkcmF3U2hhZG93OiExfSkpO2guYWRkKG0pO3ZhciB5PXMuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpufSksdz1pLmdyYXBoaWNzLnJlbmRlclBhdGhzKGUoZSh7fSxkKSx7fSx7cGF0aEZyb206bnVsbD09PWY/Yy5hcmVhUGF0aHNGcm9tW2JdOmYscGF0aFRvOmMuYXJlYVBhdGhzVG9bYl0sc3Ryb2tlV2lkdGg6MCxmaWxsOnksZHJhd1NoYWRvdzohMX0pKTtpZihhLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBrPW5ldyB2KGkuY3R4KSxBPWEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7ay5kcm9wU2hhZG93KHcsT2JqZWN0LmFzc2lnbih7fSxBLHtub1VzZXJTcGFjZU9uVXNlOiEwfSksbil9aC5hZGQodyl9dC5mb3JFYWNoKChmdW5jdGlvbih0LHMpe3ZhciByPW5ldyBIKGkuY3R4KS5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOlwiYXBleGNoYXJ0cy1tYXJrZXJcIixzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4OnN9KSxsPWkuZ3JhcGhpY3MuZHJhd01hcmtlcihnW3NdLngsZ1tzXS55LHIpO2wuYXR0cihcInJlbFwiLHMpLGwuYXR0cihcImpcIixzKSxsLmF0dHIoXCJpbmRleFwiLG4pLGwubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsci5wU2l6ZSk7dmFyIGM9aS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzXCJ9KTtjJiZjLmFkZChsKSx1LmFkZChjKSxoLmFkZCh1KTt2YXIgZD1hLmNvbmZpZy5kYXRhTGFiZWxzO2lmKGQuZW5hYmxlZCl7dmFyIGY9ZC5mb3JtYXR0ZXIoYS5nbG9iYWxzLnNlcmllc1tuXVtzXSx7c2VyaWVzSW5kZXg6bixkYXRhUG9pbnRJbmRleDpzLHc6YX0pO28ucGxvdERhdGFMYWJlbHNUZXh0KHt4Omdbc10ueCx5Omdbc10ueSx0ZXh0OmYsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGk6bixqOm4scGFyZW50OnAsb2Zmc2V0Q29ycmVjdGlvbjohMSxkYXRhTGFiZWxzQ29uZmlnOmUoe30sZCl9KX1oLmFkZChwKX0pKSxyLnB1c2goaCl9KSksdGhpcy5kcmF3UG9seWdvbnMoe3BhcmVudDpkfSksYS5jb25maWcueGF4aXMubGFiZWxzLnNob3cpe3ZhciBmPXRoaXMuZHJhd1hBeGlzVGV4dHMoKTtkLmFkZChmKX1yZXR1cm4gci5mb3JFYWNoKChmdW5jdGlvbih0KXtkLmFkZCh0KX0pKSxkLmFkZCh0aGlzLnlheGlzTGFiZWxzKSxkfX0se2tleTpcImRyYXdQb2x5Z29uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLGk9dGhpcy53LGE9dC5wYXJlbnQscz1uZXcgQ3QodGhpcy5jdHgpLHI9aS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJldmVyc2UoKSxvPXIubGVuZ3RoLG49W10sbD10aGlzLnNpemUvKG8tMSksaD0wO2g8bztoKyspbltoXT1sKmg7bi5yZXZlcnNlKCk7dmFyIGM9W10sZD1bXTtuLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIGE9eC5nZXRQb2x5Z29uUG9zKHQsZS5kYXRhUG9pbnRzTGVuKSxzPVwiXCI7YS5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2lmKDA9PT1pKXt2YXIgcj1lLmdyYXBoaWNzLmRyYXdMaW5lKHQueCx0LnksMCwwLEFycmF5LmlzQXJyYXkoZS5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnMpP2UucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzW2FdOmUucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzKTtkLnB1c2gocil9MD09PWEmJmUueWF4aXNMYWJlbHNUZXh0c1Bvcy5wdXNoKHt4OnQueCx5OnQueX0pLHMrPXQueCtcIixcIit0LnkrXCIgXCJ9KSksYy5wdXNoKHMpfSkpLGMuZm9yRWFjaCgoZnVuY3Rpb24odCxzKXt2YXIgcj1lLnBvbHlnb25zLnN0cm9rZUNvbG9ycyxvPWUucG9seWdvbnMuc3Ryb2tlV2lkdGgsbj1lLmdyYXBoaWNzLmRyYXdQb2x5Z29uKHQsQXJyYXkuaXNBcnJheShyKT9yW3NdOnIsQXJyYXkuaXNBcnJheShvKT9vW3NdOm8saS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnNbc10pO2EuYWRkKG4pfSkpLGQuZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5hZGQodCl9KSksaS5jb25maWcueWF4aXNbMF0uc2hvdyYmdGhpcy55YXhpc0xhYmVsc1RleHRzUG9zLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIGE9cy5kcmF3WUF4aXNUZXh0cyh0LngsdC55LGkscltpXSk7ZS55YXhpc0xhYmVscy5hZGQoYSl9KSl9fSx7a2V5OlwiZHJhd1hBeGlzVGV4dHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT10aGlzLncsYT1pLmNvbmZpZy54YXhpcy5sYWJlbHMscz10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXNcIn0pLHI9eC5nZXRQb2x5Z29uUG9zKHRoaXMuc2l6ZSx0aGlzLmRhdGFQb2ludHNMZW4pO3JldHVybiBpLmdsb2JhbHMubGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKG8sbil7dmFyIGw9aS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcixoPW5ldyBPKHQuY3R4KTtpZihyW25dKXt2YXIgYz10LmdldFRleHRQb3MocltuXSx0LnNpemUpLGQ9bChvLHtzZXJpZXNJbmRleDotMSxkYXRhUG9pbnRJbmRleDpuLHc6aX0pO2gucGxvdERhdGFMYWJlbHNUZXh0KHt4OmMubmV3WCx5OmMubmV3WSx0ZXh0OmQsdGV4dEFuY2hvcjpjLnRleHRBbmNob3IsaTpuLGo6bixwYXJlbnQ6cyxjb2xvcjpBcnJheS5pc0FycmF5KGEuc3R5bGUuY29sb3JzKSYmYS5zdHlsZS5jb2xvcnNbbl0/YS5zdHlsZS5jb2xvcnNbbl06XCIjYThhOGE4XCIsZGF0YUxhYmVsc0NvbmZpZzplKHt0ZXh0QW5jaG9yOmMudGV4dEFuY2hvcixkcm9wU2hhZG93OntlbmFibGVkOiExfX0sYSksb2Zmc2V0Q29ycmVjdGlvbjohMX0pfX0pKSxzfX0se2tleTpcImNyZWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9W10scz1bXSxyPVtdLG89W107aWYodC5sZW5ndGgpe3M9W3RoaXMuZ3JhcGhpY3MubW92ZShlLngsZS55KV0sbz1bdGhpcy5ncmFwaGljcy5tb3ZlKGUueCxlLnkpXTt2YXIgbj10aGlzLmdyYXBoaWNzLm1vdmUodFswXS54LHRbMF0ueSksbD10aGlzLmdyYXBoaWNzLm1vdmUodFswXS54LHRbMF0ueSk7dC5mb3JFYWNoKChmdW5jdGlvbihlLGEpe24rPWkuZ3JhcGhpY3MubGluZShlLngsZS55KSxsKz1pLmdyYXBoaWNzLmxpbmUoZS54LGUueSksYT09PXQubGVuZ3RoLTEmJihuKz1cIlpcIixsKz1cIlpcIil9KSksYS5wdXNoKG4pLHIucHVzaChsKX1yZXR1cm57bGluZVBhdGhzRnJvbTpzLGxpbmVQYXRoc1RvOmEsYXJlYVBhdGhzRnJvbTpvLGFyZWFQYXRoc1RvOnJ9fX0se2tleTpcImdldFRleHRQb3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPVwibWlkZGxlXCIsYT10Lngscz10Lnk7cmV0dXJuIE1hdGguYWJzKHQueCk+PTEwP3QueD4wPyhpPVwic3RhcnRcIixhKz0xMCk6dC54PDAmJihpPVwiZW5kXCIsYS09MTApOmk9XCJtaWRkbGVcIixNYXRoLmFicyh0LnkpPj1lLTEwJiYodC55PDA/cy09MTA6dC55PjAmJihzKz0xMCkpLHt0ZXh0QW5jaG9yOmksbmV3WDphLG5ld1k6c319fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPW51bGwsYT0wO2E8ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO2ErKyl7dmFyIHM9ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV07cy5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQocy5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQodCwxMCkmJnZvaWQgMCE9PWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdLnBhdGhzWzBdJiYoaT1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXS5wYXRoc1swXS5kKX1yZXR1cm4gaX19LHtrZXk6XCJnZXREYXRhUG9pbnRzUG9zXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5kYXRhUG9pbnRzTGVuO3Q9dHx8W10sZT1lfHxbXTtmb3IodmFyIGE9W10scz0wO3M8aTtzKyspe3ZhciByPXt9O3IueD10W3NdKk1hdGguc2luKGVbc10pLHIueT0tdFtzXSpNYXRoLmNvcyhlW3NdKSxhLnB1c2gocil9cmV0dXJuIGF9fV0pLHR9KCksSXQ9ZnVuY3Rpb24odCl7bihpLEx0KTt2YXIgZT1kKGkpO2Z1bmN0aW9uIGkodCl7dmFyIHM7YSh0aGlzLGkpLChzPWUuY2FsbCh0aGlzLHQpKS5jdHg9dCxzLnc9dC53LHMuYW5pbUJlZ2luQXJyPVswXSxzLmFuaW1EdXI9MDt2YXIgcj1zLnc7cmV0dXJuIHMuc3RhcnRBbmdsZT1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSxzLmVuZEFuZ2xlPXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5lbmRBbmdsZSxzLnRvdGFsQW5nbGU9TWF0aC5hYnMoci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlKSxzLnRyYWNrU3RhcnRBbmdsZT1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suc3RhcnRBbmdsZSxzLnRyYWNrRW5kQW5nbGU9ci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLmVuZEFuZ2xlLHMuZG9udXREYXRhTGFiZWxzPXMudy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmRhdGFMYWJlbHMscy5yYWRpYWxEYXRhTGFiZWxzPXMuZG9udXREYXRhTGFiZWxzLHMudHJhY2tTdGFydEFuZ2xlfHwocy50cmFja1N0YXJ0QW5nbGU9cy5zdGFydEFuZ2xlKSxzLnRyYWNrRW5kQW5nbGV8fChzLnRyYWNrRW5kQW5nbGU9cy5lbmRBbmdsZSksMzYwPT09cy5lbmRBbmdsZSYmKHMuZW5kQW5nbGU9MzU5Ljk5KSxzLm1hcmdpbj1wYXJzZUludChyLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2subWFyZ2luLDEwKSxzfXJldHVybiByKGksW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhclwifSk7aWYoZS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gYTt2YXIgcz1pLmdyb3VwKCkscj10aGlzLmRlZmF1bHRTaXplLzIsbz1lLmdsb2JhbHMuZ3JpZFdpZHRoLzIsbj10aGlzLmRlZmF1bHRTaXplLzIuMDU7ZS5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWR8fChuPW4tZS5jb25maWcuc3Ryb2tlLndpZHRoLWUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1cik7dmFyIGw9ZS5nbG9iYWxzLmZpbGwuY29sb3JzO2lmKGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zaG93KXt2YXIgaD10aGlzLmRyYXdUcmFja3Moe3NpemU6bixjZW50ZXJYOm8sY2VudGVyWTpyLGNvbG9yQXJyOmwsc2VyaWVzOnR9KTtzLmFkZChoKX12YXIgYz10aGlzLmRyYXdBcmNzKHtzaXplOm4sY2VudGVyWDpvLGNlbnRlclk6cixjb2xvckFycjpsLHNlcmllczp0fSksZD0zNjA7ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGU8MCYmKGQ9dGhpcy50b3RhbEFuZ2xlKTt2YXIgZz0oMzYwLWQpLzM2MDtpZihlLmdsb2JhbHMucmFkaWFsU2l6ZT1uLW4qZyx0aGlzLnJhZGlhbERhdGFMYWJlbHMudmFsdWUuc2hvdyl7dmFyIHU9TWF0aC5tYXgodGhpcy5yYWRpYWxEYXRhTGFiZWxzLnZhbHVlLm9mZnNldFksdGhpcy5yYWRpYWxEYXRhTGFiZWxzLm5hbWUub2Zmc2V0WSk7ZS5nbG9iYWxzLnJhZGlhbFNpemUrPXUqZ31yZXR1cm4gcy5hZGQoYy5nKSxcImZyb250XCI9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnBvc2l0aW9uJiYoYy5nLmFkZChjLmVsSG9sbG93KSxjLmRhdGFMYWJlbHMmJmMuZy5hZGQoYy5kYXRhTGFiZWxzKSksYS5hZGQocyksYX19LHtrZXk6XCJkcmF3VHJhY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXRyYWNrc1wifSkscz1uZXcgdih0aGlzLmN0eCkscj1uZXcgUih0aGlzLmN0eCksbz10aGlzLmdldFN0cm9rZVdpZHRoKHQpO3Quc2l6ZT10LnNpemUtby8yO2Zvcih2YXIgbj0wO248dC5zZXJpZXMubGVuZ3RoO24rKyl7dmFyIGw9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci10cmFjayBhcGV4Y2hhcnRzLXRyYWNrXCJ9KTthLmFkZChsKSxsLmF0dHIoe3JlbDpuKzF9KSx0LnNpemU9dC5zaXplLW8tdGhpcy5tYXJnaW47dmFyIGg9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLGM9ci5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOjAsc2l6ZTp0LnNpemUsZmlsbENvbG9yczpBcnJheS5pc0FycmF5KGguYmFja2dyb3VuZCk/aC5iYWNrZ3JvdW5kW25dOmguYmFja2dyb3VuZCxzb2xpZDohMH0pLGQ9dGhpcy50cmFja1N0YXJ0QW5nbGUsZz10aGlzLnRyYWNrRW5kQW5nbGU7TWF0aC5hYnMoZykrTWF0aC5hYnMoZCk+PTM2MCYmKGc9MzYwLU1hdGguYWJzKHRoaXMuc3RhcnRBbmdsZSktLjEpO3ZhciB1PWkuZHJhd1BhdGgoe2Q6XCJcIixzdHJva2U6YyxzdHJva2VXaWR0aDpvKnBhcnNlSW50KGguc3Ryb2tlV2lkdGgsMTApLzEwMCxmaWxsOlwibm9uZVwiLHN0cm9rZU9wYWNpdHk6aC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1hcmVhXCJ9KTtpZihoLmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIHA9aC5kcm9wU2hhZG93O3MuZHJvcFNoYWRvdyh1LHApfWwuYWRkKHUpLHUuYXR0cihcImlkXCIsXCJhcGV4Y2hhcnRzLXJhZGlhbGJhclRyYWNrLVwiK24pLHRoaXMuYW5pbWF0ZVBhdGhzKHUse2NlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGVuZEFuZ2xlOmcsc3RhcnRBbmdsZTpkLHNpemU6dC5zaXplLGk6bix0b3RhbEl0ZW1zOjIsYW5pbUJlZ2luQXJyOjAsZHVyOjAsaXNUcmFjazohMCxlYXNpbmc6ZS5nbG9iYWxzLmVhc2luZ30pfXJldHVybiBhfX0se2tleTpcImRyYXdBcmNzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9bmV3IFIodGhpcy5jdHgpLHM9bmV3IHYodGhpcy5jdHgpLHI9aS5ncm91cCgpLG89dGhpcy5nZXRTdHJva2VXaWR0aCh0KTt0LnNpemU9dC5zaXplLW8vMjt2YXIgbj1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmJhY2tncm91bmQsbD10LnNpemUtbyp0LnNlcmllcy5sZW5ndGgtdGhpcy5tYXJnaW4qdC5zZXJpZXMubGVuZ3RoLW8qcGFyc2VJbnQoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnN0cm9rZVdpZHRoLDEwKS8xMDAvMixoPWwtZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5tYXJnaW47dm9pZCAwIT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZSYmKG49dGhpcy5kcmF3SG9sbG93SW1hZ2UodCxyLGwsbikpO3ZhciBjPXRoaXMuZHJhd0hvbGxvdyh7c2l6ZTpoLGNlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGZpbGw6bnx8XCJ0cmFuc3BhcmVudFwifSk7aWYoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBkPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuZHJvcFNoYWRvdztzLmRyb3BTaGFkb3coYyxkKX12YXIgZz0xOyF0aGlzLnJhZGlhbERhdGFMYWJlbHMudG90YWwuc2hvdyYmZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmKGc9MCk7dmFyIHU9bnVsbDt0aGlzLnJhZGlhbERhdGFMYWJlbHMuc2hvdyYmKHU9dGhpcy5yZW5kZXJJbm5lckRhdGFMYWJlbHModGhpcy5yYWRpYWxEYXRhTGFiZWxzLHtob2xsb3dTaXplOmwsY2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksb3BhY2l0eTpnfSkpLFwiYmFja1wiPT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5wb3NpdGlvbiYmKHIuYWRkKGMpLHUmJnIuYWRkKHUpKTt2YXIgcD0hMTtlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaW52ZXJzZU9yZGVyJiYocD0hMCk7Zm9yKHZhciBmPXA/dC5zZXJpZXMubGVuZ3RoLTE6MDtwP2Y+PTA6Zjx0LnNlcmllcy5sZW5ndGg7cD9mLS06ZisrKXt2YXIgYj1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtcmFkaWFsLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoZS5nbG9iYWxzLnNlcmllc05hbWVzW2ZdKX0pO3IuYWRkKGIpLGIuYXR0cih7cmVsOmYrMSxcImRhdGE6cmVhbEluZGV4XCI6Zn0pLHRoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKGIsZiksdC5zaXplPXQuc2l6ZS1vLXRoaXMubWFyZ2luO3ZhciB5PWEuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpmLHNpemU6dC5zaXplLHZhbHVlOnQuc2VyaWVzW2ZdfSksdz10aGlzLnN0YXJ0QW5nbGUsaz12b2lkIDAsQT14Lm5lZ1RvWmVybyh0LnNlcmllc1tmXT4xMDA/MTAwOnQuc2VyaWVzW2ZdKS8xMDAsUz1NYXRoLnJvdW5kKHRoaXMudG90YWxBbmdsZSpBKSt0aGlzLnN0YXJ0QW5nbGUsQz12b2lkIDA7ZS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiYoaz10aGlzLnN0YXJ0QW5nbGUsQz1NYXRoLnJvdW5kKHRoaXMudG90YWxBbmdsZSp4Lm5lZ1RvWmVybyhlLmdsb2JhbHMucHJldmlvdXNQYXRoc1tmXSkvMTAwKStrKSxNYXRoLmFicyhTKStNYXRoLmFicyh3KT49MzYwJiYoUy09LjAxKSxNYXRoLmFicyhDKStNYXRoLmFicyhrKT49MzYwJiYoQy09LjAxKTt2YXIgTD1TLXcsUD1BcnJheS5pc0FycmF5KGUuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXkpP2UuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXlbZl06ZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSxJPWkuZHJhd1BhdGgoe2Q6XCJcIixzdHJva2U6eSxzdHJva2VXaWR0aDpvLGZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6ZS5jb25maWcuZmlsbC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1hcmVhIGFwZXhjaGFydHMtcmFkaWFsYmFyLXNsaWNlLVwiK2Ysc3Ryb2tlRGFzaEFycmF5OlB9KTtpZihtLnNldEF0dHJzKEkubm9kZSx7XCJkYXRhOmFuZ2xlXCI6TCxcImRhdGE6dmFsdWVcIjp0LnNlcmllc1tmXX0pLGUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIE09ZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztzLmRyb3BTaGFkb3coSSxNLGYpfXMuc2V0U2VsZWN0aW9uRmlsdGVyKEksMCxmKSx0aGlzLmFkZExpc3RlbmVycyhJLHRoaXMucmFkaWFsRGF0YUxhYmVscyksYi5hZGQoSSksSS5hdHRyKHtpbmRleDowLGo6Zn0pO3ZhciBUPTA7IXRoaXMuaW5pdGlhbEFuaW18fGUuZ2xvYmFscy5yZXNpemVkfHxlLmdsb2JhbHMuZGF0YUNoYW5nZWR8fChUPWUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLGUuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKFQ9ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkKSx0aGlzLmFuaW1EdXI9VC8oMS4yKnQuc2VyaWVzLmxlbmd0aCkrdGhpcy5hbmltRHVyLHRoaXMuYW5pbUJlZ2luQXJyLnB1c2godGhpcy5hbmltRHVyKSx0aGlzLmFuaW1hdGVQYXRocyhJLHtjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxlbmRBbmdsZTpTLHN0YXJ0QW5nbGU6dyxwcmV2RW5kQW5nbGU6QyxwcmV2U3RhcnRBbmdsZTprLHNpemU6dC5zaXplLGk6Zix0b3RhbEl0ZW1zOjIsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLGR1cjpULHNob3VsZFNldFByZXZQYXRoczohMCxlYXNpbmc6ZS5nbG9iYWxzLmVhc2luZ30pfXJldHVybntnOnIsZWxIb2xsb3c6YyxkYXRhTGFiZWxzOnV9fX0se2tleTpcImRyYXdIb2xsb3dcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgbSh0aGlzLmN0eCkuZHJhd0NpcmNsZSgyKnQuc2l6ZSk7cmV0dXJuIGUuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1ob2xsb3dcIixjeDp0LmNlbnRlclgsY3k6dC5jZW50ZXJZLHI6dC5zaXplLGZpbGw6dC5maWxsfSksZX19LHtrZXk6XCJkcmF3SG9sbG93SW1hZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj1uZXcgUih0aGlzLmN0eCksbz14LnJhbmRvbUlkKCksbj1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlO2lmKHMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VDbGlwcGVkKXIuY2xpcHBlZEltZ0FyZWEoe3dpZHRoOmksaGVpZ2h0OmksaW1hZ2U6bixwYXR0ZXJuSUQ6XCJwYXR0ZXJuXCIuY29uY2F0KHMuZ2xvYmFscy5jdWlkKS5jb25jYXQobyl9KSxhPVwidXJsKCNwYXR0ZXJuXCIuY29uY2F0KHMuZ2xvYmFscy5jdWlkKS5jb25jYXQobyxcIilcIik7ZWxzZXt2YXIgbD1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlV2lkdGgsaD1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlSGVpZ2h0O2lmKHZvaWQgMD09PWwmJnZvaWQgMD09PWgpe3ZhciBjPXMuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UobikubG9hZGVkKChmdW5jdGlvbihlKXt0aGlzLm1vdmUodC5jZW50ZXJYLWUud2lkdGgvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WCx0LmNlbnRlclktZS5oZWlnaHQvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WSl9KSk7ZS5hZGQoYyl9ZWxzZXt2YXIgZD1zLmdsb2JhbHMuZG9tLlBhcGVyLmltYWdlKG4pLmxvYWRlZCgoZnVuY3Rpb24oZSl7dGhpcy5tb3ZlKHQuY2VudGVyWC1sLzIrcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFgsdC5jZW50ZXJZLWgvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WSksdGhpcy5zaXplKGwsaCl9KSk7ZS5hZGQoZCl9fXJldHVybiBhfX0se2tleTpcImdldFN0cm9rZVdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybiB0LnNpemUqKDEwMC1wYXJzZUludChlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnNpemUsMTApKS8xMDAvKHQuc2VyaWVzLmxlbmd0aCsxKS10aGlzLm1hcmdpbn19XSksaX0oKSxNdD1mdW5jdGlvbih0KXtuKHMseXQpO3ZhciBpPWQocyk7ZnVuY3Rpb24gcygpe3JldHVybiBhKHRoaXMscyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHIocyxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMudyxzPW5ldyBtKHRoaXMuY3R4KTt0aGlzLnJhbmdlQmFyT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnJhbmdlQmFyLHRoaXMuc2VyaWVzPXQsdGhpcy5zZXJpZXNSYW5nZVN0YXJ0PWEuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0LHRoaXMuc2VyaWVzUmFuZ2VFbmQ9YS5nbG9iYWxzLnNlcmllc1JhbmdlRW5kLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpO2Zvcih2YXIgcj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGwsaCxjLGQsZz12b2lkIDAsdT12b2lkIDAscD1hLmdsb2JhbHMuY29tYm9DaGFydHM/aVtuXTpuLGY9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW3BdKSxyZWw6bisxLFwiZGF0YTpyZWFsSW5kZXhcIjpwfSk7dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoZixwKSx0W25dLmxlbmd0aD4wJiYodGhpcy52aXNpYmxlST10aGlzLnZpc2libGVJKzEpO3ZhciBiPTAsdj0wO3RoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PXApO3ZhciB5PXRoaXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7dT15LnksZD15Lnplcm9XLGc9eS54LHY9eS5iYXJXaWR0aCxiPXkuYmFySGVpZ2h0LGw9eS54RGl2aXNpb24saD15LnlEaXZpc2lvbixjPXkuemVyb0g7Zm9yKHZhciB3PXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnB9KSxrPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYW5nZWJhci1nb2Fscy1tYXJrZXJzXCJ9KSxBPTA7QTxhLmdsb2JhbHMuZGF0YVBvaW50cztBKyspe3ZhciBTLEM9dGhpcy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKG4sQSxwKSxMPXRoaXMuc2VyaWVzUmFuZ2VTdGFydFtuXVtBXSxQPXRoaXMuc2VyaWVzUmFuZ2VFbmRbbl1bQV0sST1udWxsLE09bnVsbCxUPW51bGwsej17eDpnLHk6dSxzdHJva2VXaWR0aDpDLGVsU2VyaWVzOmZ9LFg9dGhpcy5zZXJpZXNMZW47aWYoYS5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzJiYoWD0xKSx2b2lkIDA9PT1hLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtBXSlicmVhaztpZih0aGlzLmlzSG9yaXpvbnRhbCl7VD11K2IqdGhpcy52aXNpYmxlSTt2YXIgRT0oaC1iKlgpLzI7aWYoYS5jb25maWcuc2VyaWVzW25dLmRhdGFbQV0ueCl7dmFyIFk9dGhpcy5kZXRlY3RPdmVybGFwcGluZ0JhcnMoe2k6bixqOkEsYmFyWVBvc2l0aW9uOlQsc3J0eTpFLGJhckhlaWdodDpiLHlEaXZpc2lvbjpoLGluaXRQb3NpdGlvbnM6eX0pO2I9WS5iYXJIZWlnaHQsVD1ZLmJhcllQb3NpdGlvbn12PShJPXRoaXMuZHJhd1JhbmdlQmFyUGF0aHMoZSh7aW5kZXhlczp7aTpuLGo6QSxyZWFsSW5kZXg6cH0sYmFySGVpZ2h0OmIsYmFyWVBvc2l0aW9uOlQsemVyb1c6ZCx5RGl2aXNpb246aCx5MTpMLHkyOlB9LHopKSkuYmFyV2lkdGh9ZWxzZXthLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGc9KGEuZ2xvYmFscy5zZXJpZXNYW25dW0FdLWEuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby12LzIpLE09Zyt2KnRoaXMudmlzaWJsZUk7dmFyIEY9KGwtdipYKS8yO2lmKGEuY29uZmlnLnNlcmllc1tuXS5kYXRhW0FdLngpe3ZhciBSPXRoaXMuZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzKHtpOm4sajpBLGJhclhQb3NpdGlvbjpNLHNydHg6RixiYXJXaWR0aDp2LHhEaXZpc2lvbjpsLGluaXRQb3NpdGlvbnM6eX0pO3Y9Ui5iYXJXaWR0aCxNPVIuYmFyWFBvc2l0aW9ufWI9KEk9dGhpcy5kcmF3UmFuZ2VDb2x1bW5QYXRocyhlKHtpbmRleGVzOntpOm4sajpBLHJlYWxJbmRleDpwfSxiYXJXaWR0aDp2LGJhclhQb3NpdGlvbjpNLHplcm9IOmMseERpdmlzaW9uOmx9LHopKSkuYmFySGVpZ2h0fXZhciBIPXRoaXMuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpJLmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246VCxnb2FsWDpJLmdvYWxYLGdvYWxZOkkuZ29hbFksYmFySGVpZ2h0OmIsYmFyV2lkdGg6dn0pO0gmJmsuYWRkKEgpLHU9SS55LGc9SS54O3ZhciBEPXRoaXMuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKHQsbixBLHApLE89YS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbcF07dGhpcy5yZW5kZXJTZXJpZXMoKG8oUz17cmVhbEluZGV4OnAscGF0aEZpbGw6RCxsaW5lRmlsbDpPLGo6QSxpOm4seDpnLHk6dSx5MTpMLHkyOlAscGF0aEZyb206SS5wYXRoRnJvbSxwYXRoVG86SS5wYXRoVG8sc3Ryb2tlV2lkdGg6QyxlbFNlcmllczpmLHNlcmllczp0LGJhckhlaWdodDpiLGJhcldpZHRoOnYsYmFyWFBvc2l0aW9uOk0sYmFyWVBvc2l0aW9uOlR9LFwiYmFyV2lkdGhcIix2KSxvKFMsXCJlbERhdGFMYWJlbHNXcmFwXCIsdyksbyhTLFwiZWxHb2Fsc01hcmtlcnNcIixrKSxvKFMsXCJ2aXNpYmxlU2VyaWVzXCIsdGhpcy52aXNpYmxlSSksbyhTLFwidHlwZVwiLFwicmFuZ2ViYXJcIiksUykpfXIuYWRkKGYpfXJldHVybiByfX0se2tleTpcImRldGVjdE92ZXJsYXBwaW5nQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXQuYmFyWVBvc2l0aW9uLHM9dC5iYXJYUG9zaXRpb24scj10LnNydHksbz10LnNydHgsbj10LmJhckhlaWdodCxsPXQuYmFyV2lkdGgsaD10LnlEaXZpc2lvbixjPXQueERpdmlzaW9uLGQ9dC5pbml0UG9zaXRpb25zLGc9dGhpcy53LHU9W10scD1nLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS5yYW5nZU5hbWUsZj1nLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS54LHg9QXJyYXkuaXNBcnJheShmKT9mLmpvaW4oXCIgXCIpOmYsYj1nLmdsb2JhbHMubGFiZWxzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5qb2luKFwiIFwiKTp0fSkpLmluZGV4T2YoeCksdj1nLmdsb2JhbHMuc2VyaWVzUmFuZ2VbZV0uZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC54PT09eCYmdC5vdmVybGFwcy5sZW5ndGg+MH0pKTtyZXR1cm4gdGhpcy5pc0hvcml6b250YWw/KGE9Zy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzP3IraCpiOnIrbip0aGlzLnZpc2libGVJK2gqYix2Pi0xJiYhZy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyT3ZlcmxhcCYmKHU9Zy5nbG9iYWxzLnNlcmllc1JhbmdlW2VdW3ZdLm92ZXJsYXBzKS5pbmRleE9mKHApPi0xJiYoYT0obj1kLmJhckhlaWdodC91Lmxlbmd0aCkqdGhpcy52aXNpYmxlSStoKigxMDAtcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmJhckhlaWdodCwxMCkpLzEwMC8yK24qKHRoaXMudmlzaWJsZUkrdS5pbmRleE9mKHApKStoKmIpKTooYj4tMSYmKHM9Zy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzP28rYypiOm8rbCp0aGlzLnZpc2libGVJK2MqYiksdj4tMSYmIWcuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhck92ZXJsYXAmJih1PWcuZ2xvYmFscy5zZXJpZXNSYW5nZVtlXVt2XS5vdmVybGFwcykuaW5kZXhPZihwKT4tMSYmKHM9KGw9ZC5iYXJXaWR0aC91Lmxlbmd0aCkqdGhpcy52aXNpYmxlSStjKigxMDAtcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmJhcldpZHRoLDEwKSkvMTAwLzIrbCoodGhpcy52aXNpYmxlSSt1LmluZGV4T2YocCkpK2MqYikpLHtiYXJZUG9zaXRpb246YSxiYXJYUG9zaXRpb246cyxiYXJIZWlnaHQ6bixiYXJXaWR0aDpsfX19LHtrZXk6XCJkcmF3UmFuZ2VDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueCxhPXQueERpdmlzaW9uLHM9dC5iYXJXaWR0aCxyPXQuYmFyWFBvc2l0aW9uLG89dC56ZXJvSCxuPXRoaXMudyxsPWUuaSxoPWUuaixjPXRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sZD1lLnJlYWxJbmRleCxnPXRoaXMuZ2V0UmFuZ2VWYWx1ZShkLGgpLHU9TWF0aC5taW4oZy5zdGFydCxnLmVuZCkscD1NYXRoLm1heChnLnN0YXJ0LGcuZW5kKTt2b2lkIDA9PT10aGlzLnNlcmllc1tsXVtoXXx8bnVsbD09PXRoaXMuc2VyaWVzW2xdW2hdP3U9bzoodT1vLXUvYyxwPW8tcC9jKTt2YXIgZj1NYXRoLmFicyhwLXUpLHg9dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246cixiYXJXaWR0aDpzLHkxOnUseTI6cCxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllc1JhbmdlRW5kLHJlYWxJbmRleDplLnJlYWxJbmRleCxpOmQsajpoLHc6bn0pO2lmKG4uZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgYj10aGlzLmdldEJhclhGb3JOdW1lcmljWEF4aXMoe3g6aSxqOmgscmVhbEluZGV4OmQsYmFyV2lkdGg6c30pO2k9Yi54LHI9Yi5iYXJYUG9zaXRpb259ZWxzZSBpKz1hO3JldHVybntwYXRoVG86eC5wYXRoVG8scGF0aEZyb206eC5wYXRoRnJvbSxiYXJIZWlnaHQ6Zix4OmkseTpwLGdvYWxZOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieVwiLG51bGwsbyxsLGgpLGJhclhQb3NpdGlvbjpyfX19LHtrZXk6XCJkcmF3UmFuZ2VCYXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueSxhPXQueTEscz10LnkyLHI9dC55RGl2aXNpb24sbz10LmJhckhlaWdodCxuPXQuYmFyWVBvc2l0aW9uLGw9dC56ZXJvVyxoPXRoaXMudyxjPWwrYS90aGlzLmludmVydGVkWVJhdGlvLGQ9bCtzL3RoaXMuaW52ZXJ0ZWRZUmF0aW8sZz1NYXRoLmFicyhkLWMpLHU9dGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHtiYXJZUG9zaXRpb246bixiYXJIZWlnaHQ6byx4MTpjLHgyOmQsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzZXJpZXM6dGhpcy5zZXJpZXNSYW5nZUVuZCxpOmUucmVhbEluZGV4LHJlYWxJbmRleDplLnJlYWxJbmRleCxqOmUuaix3Omh9KTtyZXR1cm4gaC5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1yKSx7cGF0aFRvOnUucGF0aFRvLHBhdGhGcm9tOnUucGF0aEZyb20sYmFyV2lkdGg6Zyx4OmQsZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIsbCxudWxsLGUucmVhbEluZGV4LGUuaikseTppfX19LHtrZXk6XCJnZXRSYW5nZVZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJue3N0YXJ0OmkuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3RdW2VdLGVuZDppLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbdF1bZV19fX1dKSxzfSgpLFR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmxpbmVDdHg9ZX1yZXR1cm4gcih0LFt7a2V5Olwic2FtZVZhbHVlU2VyaWVzRml4XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoKFwiZ3JhZGllbnRcIj09PWkuY29uZmlnLmZpbGwudHlwZXx8XCJncmFkaWVudFwiPT09aS5jb25maWcuZmlsbC50eXBlW3RdKSYmbmV3IHkodGhpcy5saW5lQ3R4LmN0eCxpKS5zZXJpZXNIYXZlU2FtZVZhbHVlcyh0KSl7dmFyIGE9ZVt0XS5zbGljZSgpO2FbYS5sZW5ndGgtMV09YVthLmxlbmd0aC0xXSsxZS02LGVbdF09YX1yZXR1cm4gZX19LHtrZXk6XCJjYWxjdWxhdGVQb2ludHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNlcmllcyxpPXQucmVhbEluZGV4LGE9dC54LHM9dC55LHI9dC5pLG89dC5qLG49dC5wcmV2WSxsPXRoaXMudyxoPVtdLGM9W107aWYoMD09PW8pe3ZhciBkPXRoaXMubGluZUN0eC5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WDtsLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGQ9KGwuZ2xvYmFscy5zZXJpZXNYW2ldWzBdLWwuZ2xvYmFscy5taW5YKS90aGlzLmxpbmVDdHgueFJhdGlvK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksaC5wdXNoKGQpLGMucHVzaCh4LmlzTnVtYmVyKGVbcl1bMF0pP24rbC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpLGgucHVzaChhK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksYy5wdXNoKHguaXNOdW1iZXIoZVtyXVtvKzFdKT9zK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKX1lbHNlIGgucHVzaChhK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksYy5wdXNoKHguaXNOdW1iZXIoZVtyXVtvKzFdKT9zK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKTtyZXR1cm57eDpoLHk6Y319fSx7a2V5OlwiY2hlY2tQcmV2aW91c1BhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQucGF0aEZyb21MaW5lLGk9dC5wYXRoRnJvbUFyZWEsYT10LnJlYWxJbmRleCxzPXRoaXMudyxyPTA7cjxzLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7cisrKXt2YXIgbz1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXTsoXCJsaW5lXCI9PT1vLnR5cGV8fFwiYXJlYVwiPT09by50eXBlKSYmby5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQoby5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQoYSwxMCkmJihcImxpbmVcIj09PW8udHlwZT8odGhpcy5saW5lQ3R4LmFwcGVuZFBhdGhGcm9tPSExLGU9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMF0uZCk6XCJhcmVhXCI9PT1vLnR5cGUmJih0aGlzLmxpbmVDdHguYXBwZW5kUGF0aEZyb209ITEsaT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1swXS5kLHMuY29uZmlnLnN0cm9rZS5zaG93JiZzLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1sxXSYmKGU9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMV0uZCkpKX1yZXR1cm57cGF0aEZyb21MaW5lOmUscGF0aEZyb21BcmVhOml9fX0se2tleTpcImRldGVybWluZUZpcnN0UHJldllcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuaSxhPXQuc2VyaWVzLHM9dC5wcmV2WSxyPXQubGluZVlQb3NpdGlvbixvPXRoaXMudztpZih2b2lkIDAhPT0obnVsbD09PShlPWFbaV0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplWzBdKSlzPShyPW8uY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmk+MD90aGlzLmxpbmVDdHgucHJldlNlcmllc1lbaS0xXVswXTp0aGlzLmxpbmVDdHguemVyb1kpLWFbaV1bMF0vdGhpcy5saW5lQ3R4LnlSYXRpb1t0aGlzLmxpbmVDdHgueWF4aXNJbmRleF0rMioodGhpcy5saW5lQ3R4LmlzUmV2ZXJzZWQ/YVtpXVswXS90aGlzLmxpbmVDdHgueVJhdGlvW3RoaXMubGluZUN0eC55YXhpc0luZGV4XTowKTtlbHNlIGlmKG8uY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmk+MCYmdm9pZCAwPT09YVtpXVswXSlmb3IodmFyIG49aS0xO24+PTA7bi0tKWlmKG51bGwhPT1hW25dWzBdJiZ2b2lkIDAhPT1hW25dWzBdKXtzPXI9dGhpcy5saW5lQ3R4LnByZXZTZXJpZXNZW25dWzBdO2JyZWFrfXJldHVybntwcmV2WTpzLGxpbmVZUG9zaXRpb246cn19fV0pLHR9KCksenQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGksYSxzLHI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLGk9dFswXSxhPXRbMV0scz1lWzBdPVl0KGksYSkscj0xLG89dC5sZW5ndGgtMTtyPG87cisrKWk9YSxhPXRbcisxXSxlW3JdPS41KihzKyhzPVl0KGksYSkpKTtyZXR1cm4gZVtyXT1zLGV9KHQpLG89dC5sZW5ndGgtMSxuPVtdLGw9MDtsPG87bCsrKWE9WXQodFtsXSx0W2wrMV0pLE1hdGguYWJzKGEpPDFlLTY/cltsXT1yW2wrMV09MDoocz0oZT1yW2xdL2EpKmUrKGk9cltsKzFdL2EpKmkpPjkmJihzPTMqYS9NYXRoLnNxcnQocykscltsXT1zKmUscltsKzFdPXMqaSk7Zm9yKHZhciBoPTA7aDw9bztoKyspcz0odFtNYXRoLm1pbihvLGgrMSldWzBdLXRbTWF0aC5tYXgoMCxoLTEpXVswXSkvKDYqKDErcltoXSpyW2hdKSksbi5wdXNoKFtzfHwwLHJbaF0qc3x8MF0pO3JldHVybiBufSxYdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9XCJcIixpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPXRbaV0scz10W2ktMV0scj1hLmxlbmd0aCxvPW51bGw9PXM/dm9pZCAwOnMubGVuZ3RoO2k+MSYmTWF0aC5hYnMoYVtyLTJdLXNbby0yXSk8MzA/KGUrPVwiUVwiLmNvbmNhdChhWzBdLFwiLCBcIikuY29uY2F0KGFbMV0pLGUrPVwiLCBcIi5jb25jYXQoYVsyXSxcIiwgXCIpLmNvbmNhdChhWzNdKSk6cj40PyhlKz1cIkNcIi5jb25jYXQoYVswXSxcIiwgXCIpLmNvbmNhdChhWzFdKSxlKz1cIiwgXCIuY29uY2F0KGFbMl0sXCIsIFwiKS5jb25jYXQoYVszXSksZSs9XCIsIFwiLmNvbmNhdChhWzRdLFwiLCBcIikuY29uY2F0KGFbNV0pKTpyPjImJihlKz1cIlNcIi5jb25jYXQoYVswXSxcIiwgXCIpLmNvbmNhdChhWzFdKSxlKz1cIiwgXCIuY29uY2F0KGFbMl0sXCIsIFwiKS5jb25jYXQoYVszXSkpfXJldHVybiBlfSxFdD1mdW5jdGlvbih0KXt2YXIgZT16dCh0KSxpPXRbMV0sYT10WzBdLHM9W10scj1lWzFdLG89ZVswXTtzLnB1c2goYSxbYVswXStvWzBdLGFbMV0rb1sxXSxpWzBdLXJbMF0saVsxXS1yWzFdLGlbMF0saVsxXV0pO2Zvcih2YXIgbj0yLGw9ZS5sZW5ndGg7bjxsO24rKyl7dmFyIGg9dFtuXSxjPWVbbl07cy5wdXNoKFtoWzBdLWNbMF0saFsxXS1jWzFdLGhbMF0saFsxXV0pfXJldHVybiBzfTtmdW5jdGlvbiBZdCh0LGUpe3JldHVybihlWzFdLXRbMV0pLyhlWzBdLXRbMF0pfXZhciBGdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLHMpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy54eVJhdGlvcz1pLHRoaXMucG9pbnRzQ2hhcnQ9IShcImJ1YmJsZVwiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcInNjYXR0ZXJcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSl8fHMsdGhpcy5zY2F0dGVyPW5ldyBEKHRoaXMuY3R4KSx0aGlzLm5vTmVnYXRpdmVzPXRoaXMudy5nbG9iYWxzLm1pblg9PT1OdW1iZXIuTUFYX1ZBTFVFLHRoaXMubGluZUhlbHBlcnM9bmV3IFR0KHRoaXMpLHRoaXMubWFya2Vycz1uZXcgSCh0aGlzLmN0eCksdGhpcy5wcmV2U2VyaWVzWT1bXSx0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb249MCx0aGlzLnlheGlzSW5kZXg9MH1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSxhLHMpe3ZhciByLG89dGhpcy53LG49bmV3IG0odGhpcy5jdHgpLGw9by5nbG9iYWxzLmNvbWJvQ2hhcnRzP2k6by5jb25maWcuY2hhcnQudHlwZSxoPW4uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobCxcIi1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiKX0pLGM9bmV3IHkodGhpcy5jdHgsbyk7dGhpcy55UmF0aW89dGhpcy54eVJhdGlvcy55UmF0aW8sdGhpcy56UmF0aW89dGhpcy54eVJhdGlvcy56UmF0aW8sdGhpcy54UmF0aW89dGhpcy54eVJhdGlvcy54UmF0aW8sdGhpcy5iYXNlTGluZVk9dGhpcy54eVJhdGlvcy5iYXNlTGluZVksdD1jLmdldExvZ1Nlcmllcyh0KSx0aGlzLnlSYXRpbz1jLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pO2Zvcih2YXIgZD1bXSxnPTA7Zzx0Lmxlbmd0aDtnKyspe3Q9dGhpcy5saW5lSGVscGVycy5zYW1lVmFsdWVTZXJpZXNGaXgoZyx0KTt2YXIgdT1vLmdsb2JhbHMuY29tYm9DaGFydHM/YVtnXTpnO3RoaXMuX2luaXRTZXJpZVZhcmlhYmxlcyh0LGcsdSk7dmFyIHA9W10sZj1bXSx4PVtdLGI9by5nbG9iYWxzLnBhZEhvcml6b250YWwrdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uO3RoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKHRoaXMuZWxTZXJpZXMsdSksby5nbG9iYWxzLmlzWE51bWVyaWMmJm8uZ2xvYmFscy5zZXJpZXNYLmxlbmd0aD4wJiYoYj0oby5nbG9iYWxzLnNlcmllc1hbdV1bMF0tby5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvKSx4LnB1c2goYik7dmFyIHY9Yix3PXRoaXMuemVyb1ksaz10aGlzLnplcm9ZO3c9dGhpcy5saW5lSGVscGVycy5kZXRlcm1pbmVGaXJzdFByZXZZKHtpOmcsc2VyaWVzOnQscHJldlk6dyxsaW5lWVBvc2l0aW9uOjB9KS5wcmV2WSxcInNtb290aFwiPT09by5jb25maWcuc3Ryb2tlLmN1cnZlJiZudWxsPT09dFtnXVswXT9wLnB1c2gobnVsbCk6cC5wdXNoKHcpO1wicmFuZ2VBcmVhXCI9PT1sJiYoaz10aGlzLmxpbmVIZWxwZXJzLmRldGVybWluZUZpcnN0UHJldlkoe2k6ZyxzZXJpZXM6cyxwcmV2WTprLGxpbmVZUG9zaXRpb246MH0pLnByZXZZLGYucHVzaChrKSk7dmFyIEE9e3R5cGU6bCxzZXJpZXM6dCxyZWFsSW5kZXg6dSxpOmcseDpiLHk6MSxwYXRoc0Zyb206dGhpcy5fY2FsY3VsYXRlUGF0aHNGcm9tKHt0eXBlOmwsc2VyaWVzOnQsaTpnLHJlYWxJbmRleDp1LHByZXZYOnYscHJldlk6dyxwcmV2WTI6a30pLGxpbmVQYXRoczpbXSxhcmVhUGF0aHM6W10sc2VyaWVzSW5kZXg6YSxsaW5lWVBvc2l0aW9uOjAseEFycmo6eCx5QXJyajpwLHkyQXJyajpmLHNlcmllc1JhbmdlRW5kOnN9LFM9dGhpcy5faXRlcmF0ZU92ZXJEYXRhUG9pbnRzKGUoZSh7fSxBKSx7fSx7aXRlcmF0aW9uczpcInJhbmdlQXJlYVwiPT09bD90W2ddLmxlbmd0aC0xOnZvaWQgMCxpc1JhbmdlU3RhcnQ6ITB9KSk7aWYoXCJyYW5nZUFyZWFcIj09PWwpe3ZhciBDPXRoaXMuX2NhbGN1bGF0ZVBhdGhzRnJvbSh7c2VyaWVzOnMsaTpnLHJlYWxJbmRleDp1LHByZXZYOnYscHJldlk6a30pLEw9dGhpcy5faXRlcmF0ZU92ZXJEYXRhUG9pbnRzKGUoZSh7fSxBKSx7fSx7c2VyaWVzOnMscGF0aHNGcm9tOkMsaXRlcmF0aW9uczpzW2ddLmxlbmd0aC0xLGlzUmFuZ2VTdGFydDohMX0pKTtTLmxpbmVQYXRoc1swXT1MLmxpbmVQYXRoK1MubGluZVBhdGgsUy5wYXRoRnJvbUxpbmU9TC5wYXRoRnJvbUxpbmUrUy5wYXRoRnJvbUxpbmV9dGhpcy5faGFuZGxlUGF0aHMoe3R5cGU6bCxyZWFsSW5kZXg6dSxpOmcscGF0aHM6U30pLHRoaXMuZWxTZXJpZXMuYWRkKHRoaXMuZWxQb2ludHNNYWluKSx0aGlzLmVsU2VyaWVzLmFkZCh0aGlzLmVsRGF0YUxhYmVsc1dyYXApLGQucHVzaCh0aGlzLmVsU2VyaWVzKX1pZih2b2lkIDAhPT0obnVsbD09PShyPW8uY29uZmlnLnNlcmllc1swXSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuekluZGV4KSYmZC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBOdW1iZXIodC5ub2RlLmdldEF0dHJpYnV0ZShcInpJbmRleFwiKSktTnVtYmVyKGUubm9kZS5nZXRBdHRyaWJ1dGUoXCJ6SW5kZXhcIikpfSkpLG8uY29uZmlnLmNoYXJ0LnN0YWNrZWQpZm9yKHZhciBQPWQubGVuZ3RoO1A+MDtQLS0paC5hZGQoZFtQLTFdKTtlbHNlIGZvcih2YXIgST0wO0k8ZC5sZW5ndGg7SSsrKWguYWRkKGRbSV0pO3JldHVybiBofX0se2tleTpcIl9pbml0U2VyaWVWYXJpYWJsZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9bmV3IG0odGhpcy5jdHgpO3RoaXMueERpdmlzaW9uPWEuZ2xvYmFscy5ncmlkV2lkdGgvKGEuZ2xvYmFscy5kYXRhUG9pbnRzLShcIm9uXCI9PT1hLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50PzE6MCkpLHRoaXMuc3Ryb2tlV2lkdGg9QXJyYXkuaXNBcnJheShhLmNvbmZpZy5zdHJva2Uud2lkdGgpP2EuY29uZmlnLnN0cm9rZS53aWR0aFtpXTphLmNvbmZpZy5zdHJva2Uud2lkdGgsdGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9aSksdGhpcy5pc1JldmVyc2VkPWEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0mJmEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0ucmV2ZXJzZWQsdGhpcy56ZXJvWT1hLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdLSh0aGlzLmlzUmV2ZXJzZWQ/YS5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF06MCksdGhpcy5hcmVhQm90dG9tWT10aGlzLnplcm9ZLCh0aGlzLnplcm9ZPmEuZ2xvYmFscy5ncmlkSGVpZ2h0fHxcImVuZFwiPT09YS5jb25maWcucGxvdE9wdGlvbnMuYXJlYS5maWxsVG8pJiYodGhpcy5hcmVhQm90dG9tWT1hLmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uPXRoaXMueERpdmlzaW9uLzIsdGhpcy5lbFNlcmllcz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsekluZGV4OnZvaWQgMCE9PWEuY29uZmlnLnNlcmllc1tpXS56SW5kZXg/YS5jb25maWcuc2VyaWVzW2ldLnpJbmRleDppLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW2ldKX0pLHRoaXMuZWxQb2ludHNNYWluPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIsXCJkYXRhOnJlYWxJbmRleFwiOml9KSx0aGlzLmVsRGF0YUxhYmVsc1dyYXA9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6aX0pO3ZhciByPXRbZV0ubGVuZ3RoPT09YS5nbG9iYWxzLmRhdGFQb2ludHM7dGhpcy5lbFNlcmllcy5hdHRyKHtcImRhdGE6bG9uZ2VzdFNlcmllc1wiOnIscmVsOmUrMSxcImRhdGE6cmVhbEluZGV4XCI6aX0pLHRoaXMuYXBwZW5kUGF0aEZyb209ITB9fSx7a2V5OlwiX2NhbGN1bGF0ZVBhdGhzRnJvbVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYSxzLHI9dC50eXBlLG89dC5zZXJpZXMsbj10LmksbD10LnJlYWxJbmRleCxoPXQucHJldlgsYz10LnByZXZZLGQ9dC5wcmV2WTIsZz10aGlzLncsdT1uZXcgbSh0aGlzLmN0eCk7aWYobnVsbD09PW9bbl1bMF0pe2Zvcih2YXIgcD0wO3A8b1tuXS5sZW5ndGg7cCsrKWlmKG51bGwhPT1vW25dW3BdKXtoPXRoaXMueERpdmlzaW9uKnAsYz10aGlzLnplcm9ZLW9bbl1bcF0vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxlPXUubW92ZShoLGMpLGk9dS5tb3ZlKGgsdGhpcy5hcmVhQm90dG9tWSk7YnJlYWt9fWVsc2UgZT11Lm1vdmUoaCxjKSxcInJhbmdlQXJlYVwiPT09ciYmKGU9dS5tb3ZlKGgsZCkrdS5saW5lKGgsYykpLGk9dS5tb3ZlKGgsdGhpcy5hcmVhQm90dG9tWSkrdS5saW5lKGgsYyk7aWYoYT11Lm1vdmUoLTEsdGhpcy56ZXJvWSkrdS5saW5lKC0xLHRoaXMuemVyb1kpLHM9dS5tb3ZlKC0xLHRoaXMuemVyb1kpK3UubGluZSgtMSx0aGlzLnplcm9ZKSxnLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCl7dmFyIGY9dGhpcy5saW5lSGVscGVycy5jaGVja1ByZXZpb3VzUGF0aHMoe3BhdGhGcm9tTGluZTphLHBhdGhGcm9tQXJlYTpzLHJlYWxJbmRleDpsfSk7YT1mLnBhdGhGcm9tTGluZSxzPWYucGF0aEZyb21BcmVhfXJldHVybntwcmV2WDpoLHByZXZZOmMsbGluZVBhdGg6ZSxhcmVhUGF0aDppLHBhdGhGcm9tTGluZTphLHBhdGhGcm9tQXJlYTpzfX19LHtrZXk6XCJfaGFuZGxlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LnR5cGUsYT10LnJlYWxJbmRleCxzPXQuaSxyPXQucGF0aHMsbz10aGlzLncsbj1uZXcgbSh0aGlzLmN0eCksbD1uZXcgUih0aGlzLmN0eCk7dGhpcy5wcmV2U2VyaWVzWS5wdXNoKHIueUFycmopLG8uZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2FdPXIueEFycmosby5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbYV09ci55QXJyajt2YXIgaD1vLmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHM7aWYoaC5jb3VudD4wJiZcInJhbmdlQXJlYVwiIT09aSl7dmFyIGM9by5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYV1bby5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYV0ubGVuZ3RoLWguY291bnQtMV0sZD1uLmRyYXdSZWN0KGMsMCxvLmdsb2JhbHMuZ3JpZFdpZHRoLG8uZ2xvYmFscy5ncmlkSGVpZ2h0LDApO28uZ2xvYmFscy5kb20uZWxGb3JlY2FzdE1hc2suYXBwZW5kQ2hpbGQoZC5ub2RlKTt2YXIgZz1uLmRyYXdSZWN0KDAsMCxjLG8uZ2xvYmFscy5ncmlkSGVpZ2h0LDApO28uZ2xvYmFscy5kb20uZWxOb25Gb3JlY2FzdE1hc2suYXBwZW5kQ2hpbGQoZy5ub2RlKX10aGlzLnBvaW50c0NoYXJ0fHxvLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOnRoaXMuZWxQb2ludHNNYWluLm5vZGUsaW5kZXg6YX0pO3ZhciB1PXtpOnMscmVhbEluZGV4OmEsYW5pbWF0aW9uRGVsYXk6cyxpbml0aWFsU3BlZWQ6by5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCxkYXRhQ2hhbmdlU3BlZWQ6by5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLGNsYXNzTmFtZTpcImFwZXhjaGFydHMtXCIuY29uY2F0KGkpfTtpZihcImFyZWFcIj09PWkpZm9yKHZhciBwPWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphfSksZj0wO2Y8ci5hcmVhUGF0aHMubGVuZ3RoO2YrKyl7dmFyIHg9bi5yZW5kZXJQYXRocyhlKGUoe30sdSkse30se3BhdGhGcm9tOnIucGF0aEZyb21BcmVhLHBhdGhUbzpyLmFyZWFQYXRoc1tmXSxzdHJva2U6XCJub25lXCIsc3Ryb2tlV2lkdGg6MCxzdHJva2VMaW5lQ2FwOm51bGwsZmlsbDpwfSkpO3RoaXMuZWxTZXJpZXMuYWRkKHgpfWlmKG8uY29uZmlnLnN0cm9rZS5zaG93JiYhdGhpcy5wb2ludHNDaGFydCl7dmFyIGI9bnVsbDtpZihcImxpbmVcIj09PWkpYj1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6YSxpOnN9KTtlbHNlIGlmKFwic29saWRcIj09PW8uY29uZmlnLnN0cm9rZS5maWxsLnR5cGUpYj1vLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1thXTtlbHNle3ZhciB2PW8uY29uZmlnLmZpbGw7by5jb25maWcuZmlsbD1vLmNvbmZpZy5zdHJva2UuZmlsbCxiPWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphLGk6c30pLG8uY29uZmlnLmZpbGw9dn1mb3IodmFyIHk9MDt5PHIubGluZVBhdGhzLmxlbmd0aDt5Kyspe3ZhciB3PWI7XCJyYW5nZUFyZWFcIj09PWkmJih3PWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphfSkpO3ZhciBrPWUoZSh7fSx1KSx7fSx7cGF0aEZyb206ci5wYXRoRnJvbUxpbmUscGF0aFRvOnIubGluZVBhdGhzW3ldLHN0cm9rZTpiLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc3Ryb2tlTGluZUNhcDpvLmNvbmZpZy5zdHJva2UubGluZUNhcCxmaWxsOlwicmFuZ2VBcmVhXCI9PT1pP3c6XCJub25lXCJ9KSxBPW4ucmVuZGVyUGF0aHMoayk7aWYodGhpcy5lbFNlcmllcy5hZGQoQSksQS5hdHRyKFwiZmlsbC1ydWxlXCIsXCJldmVub2RkXCIpLGguY291bnQ+MCYmXCJyYW5nZUFyZWFcIiE9PWkpe3ZhciBTPW4ucmVuZGVyUGF0aHMoayk7Uy5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1kYXNoYXJyYXlcIixoLmRhc2hBcnJheSksaC5zdHJva2VXaWR0aCYmUy5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiLGguc3Ryb2tlV2lkdGgpLHRoaXMuZWxTZXJpZXMuYWRkKFMpLFMuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNmb3JlY2FzdE1hc2tcIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjbm9uRm9yZWNhc3RNYXNrXCIuY29uY2F0KG8uZ2xvYmFscy5jdWlkLFwiKVwiKSl9fX19fSx7a2V5OlwiX2l0ZXJhdGVPdmVyRGF0YVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10LnR5cGUsYT10LnNlcmllcyxzPXQuaXRlcmF0aW9ucyxyPXQucmVhbEluZGV4LG89dC5pLG49dC54LGw9dC55LGg9dC5wYXRoc0Zyb20sYz10LmxpbmVQYXRocyxkPXQuYXJlYVBhdGhzLGc9dC5zZXJpZXNJbmRleCx1PXQubGluZVlQb3NpdGlvbixwPXQueEFycmosZj10LnlBcnJqLGI9dC55MkFycmosdj10LmlzUmFuZ2VTdGFydCx5PXQuc2VyaWVzUmFuZ2VFbmQsdz10aGlzLncsaz1uZXcgbSh0aGlzLmN0eCksQT10aGlzLnlSYXRpbyxTPWgucHJldlksQz1oLmxpbmVQYXRoLEw9aC5hcmVhUGF0aCxQPWgucGF0aEZyb21MaW5lLEk9aC5wYXRoRnJvbUFyZWEsTT14LmlzTnVtYmVyKHcuZ2xvYmFscy5taW5ZQXJyW3JdKT93Lmdsb2JhbHMubWluWUFycltyXTp3Lmdsb2JhbHMubWluWTtzfHwocz13Lmdsb2JhbHMuZGF0YVBvaW50cz4xP3cuZ2xvYmFscy5kYXRhUG9pbnRzLTE6dy5nbG9iYWxzLmRhdGFQb2ludHMpO2Zvcih2YXIgVD1mdW5jdGlvbih0LGkpe3JldHVybiBpLXQvQVtlLnlheGlzSW5kZXhdKzIqKGUuaXNSZXZlcnNlZD90L0FbZS55YXhpc0luZGV4XTowKX0sej1sLFg9MDtYPHM7WCsrKXt2YXIgRT12b2lkIDA9PT1hW29dW1grMV18fG51bGw9PT1hW29dW1grMV07aWYody5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBZPXcuZ2xvYmFscy5zZXJpZXNYW3JdW1grMV07dm9pZCAwPT09dy5nbG9iYWxzLnNlcmllc1hbcl1bWCsxXSYmKFk9dy5nbG9iYWxzLnNlcmllc1hbcl1bcy0xXSksbj0oWS13Lmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW99ZWxzZSBuKz10aGlzLnhEaXZpc2lvbjtpZih3LmNvbmZpZy5jaGFydC5zdGFja2VkKWlmKG8+MCYmdy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg8dy5jb25maWcuc2VyaWVzLmxlbmd0aC0xKXt1PXRoaXMucHJldlNlcmllc1lbZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQsaT0wO2k8dy5nbG9iYWxzLnNlcmllcy5sZW5ndGg7aSsrKWlmKHcuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCk+LTEpe2UtLTticmVha31yZXR1cm4gZT49MD9lOjB9KG8tMSldW1grMV19ZWxzZSB1PXRoaXMuemVyb1k7ZWxzZSB1PXRoaXMuemVyb1k7RT9sPVQoTSx1KToobD1UKGFbb11bWCsxXSx1KSxcInJhbmdlQXJlYVwiPT09aSYmKHo9VCh5W29dW1grMV0sdSkpKSxwLnB1c2gobiksRSYmXCJzbW9vdGhcIj09PXcuY29uZmlnLnN0cm9rZS5jdXJ2ZT9mLnB1c2gobnVsbCk6Zi5wdXNoKGwpLGIucHVzaCh6KTt2YXIgRj10aGlzLmxpbmVIZWxwZXJzLmNhbGN1bGF0ZVBvaW50cyh7c2VyaWVzOmEseDpuLHk6bCxyZWFsSW5kZXg6cixpOm8sajpYLHByZXZZOlN9KSxSPXRoaXMuX2NyZWF0ZVBhdGhzKHt0eXBlOmksc2VyaWVzOmEsaTpvLHJlYWxJbmRleDpyLGo6WCx4Om4seTpsLHkyOnoseEFycmo6cCx5QXJyajpmLHkyQXJyajpiLGxpbmVQYXRoOkMsYXJlYVBhdGg6TCxsaW5lUGF0aHM6YyxhcmVhUGF0aHM6ZCxzZXJpZXNJbmRleDpnLGlzUmFuZ2VTdGFydDp2fSk7ZD1SLmFyZWFQYXRocyxjPVIubGluZVBhdGhzLEw9Ui5hcmVhUGF0aCxDPVIubGluZVBhdGgsIXRoaXMuYXBwZW5kUGF0aEZyb218fFwic21vb3RoXCI9PT13LmNvbmZpZy5zdHJva2UuY3VydmUmJlwicmFuZ2VBcmVhXCI9PT1pfHwoUCs9ay5saW5lKG4sdGhpcy56ZXJvWSksSSs9ay5saW5lKG4sdGhpcy56ZXJvWSkpLHRoaXMuaGFuZGxlTnVsbERhdGFQb2ludHMoYSxGLG8sWCxyKSx0aGlzLl9oYW5kbGVNYXJrZXJzQW5kTGFiZWxzKHt0eXBlOmkscG9pbnRzUG9zOkYsaTpvLGo6WCxyZWFsSW5kZXg6cixpc1JhbmdlU3RhcnQ6dn0pfXJldHVybnt5QXJyajpmLHhBcnJqOnAscGF0aEZyb21BcmVhOkksYXJlYVBhdGhzOmQscGF0aEZyb21MaW5lOlAsbGluZVBhdGhzOmMsbGluZVBhdGg6QyxhcmVhUGF0aDpMfX19LHtrZXk6XCJfaGFuZGxlTWFya2Vyc0FuZExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudHlwZSxpPXQucG9pbnRzUG9zLGE9dC5pc1JhbmdlU3RhcnQscz10Lmkscj10Lmosbz10LnJlYWxJbmRleCxuPXRoaXMudyxsPW5ldyBPKHRoaXMuY3R4KTtpZih0aGlzLnBvaW50c0NoYXJ0KXRoaXMuc2NhdHRlci5kcmF3KHRoaXMuZWxTZXJpZXMscix7cmVhbEluZGV4Om8scG9pbnRzUG9zOmkselJhdGlvOnRoaXMuelJhdGlvLGVsUGFyZW50OnRoaXMuZWxQb2ludHNNYWlufSk7ZWxzZXtuLmdsb2JhbHMuc2VyaWVzW3NdLmxlbmd0aD4xJiZ0aGlzLmVsUG9pbnRzTWFpbi5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpO3ZhciBoPXRoaXMubWFya2Vycy5wbG90Q2hhcnRNYXJrZXJzKGksbyxyKzEpO251bGwhPT1oJiZ0aGlzLmVsUG9pbnRzTWFpbi5hZGQoaCl9dmFyIGM9bC5kcmF3RGF0YUxhYmVsKHt0eXBlOmUsaXNSYW5nZVN0YXJ0OmEscG9zOmksaTpvLGo6cisxfSk7bnVsbCE9PWMmJnRoaXMuZWxEYXRhTGFiZWxzV3JhcC5hZGQoYyl9fSx7a2V5OlwiX2NyZWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLGk9dC5zZXJpZXMsYT10Lmkscz10LnJlYWxJbmRleCxyPXQuaixvPXQueCxuPXQueSxsPXQueEFycmosaD10LnlBcnJqLGM9dC55MixkPXQueTJBcnJqLGc9dC5saW5lUGF0aCx1PXQuYXJlYVBhdGgscD10LmxpbmVQYXRocyxmPXQuYXJlYVBhdGhzLHg9dC5zZXJpZXNJbmRleCxiPXQuaXNSYW5nZVN0YXJ0LHY9dGhpcy53LHk9bmV3IG0odGhpcy5jdHgpLHc9di5jb25maWcuc3Ryb2tlLmN1cnZlLGs9dGhpcy5hcmVhQm90dG9tWTtpZihBcnJheS5pc0FycmF5KHYuY29uZmlnLnN0cm9rZS5jdXJ2ZSkmJih3PUFycmF5LmlzQXJyYXkoeCk/di5jb25maWcuc3Ryb2tlLmN1cnZlW3hbYV1dOnYuY29uZmlnLnN0cm9rZS5jdXJ2ZVthXSksXCJyYW5nZUFyZWFcIj09PWUmJih2Lmdsb2JhbHMuaGFzTnVsbFZhbHVlc3x8di5jb25maWcuZm9yZWNhc3REYXRhUG9pbnRzLmNvdW50PjApJiZcInNtb290aFwiPT09dyYmKHc9XCJzdHJhaWdodFwiKSxcInNtb290aFwiPT09dyl7dmFyIEE9XCJyYW5nZUFyZWFcIj09PWU/bC5sZW5ndGg9PT12Lmdsb2JhbHMuZGF0YVBvaW50czpyPT09aVthXS5sZW5ndGgtMixTPWwubWFwKChmdW5jdGlvbih0LGUpe3JldHVybltsW2VdLGhbZV1dfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10WzFdfSkpO2lmKEEmJlMubGVuZ3RoPjEpe3ZhciBDPUV0KFMpO2lmKGcrPVh0KEMpLG51bGw9PT1pW2FdWzBdP3U9Zzp1Kz1YdChDKSxcInJhbmdlQXJlYVwiPT09ZSYmYil7Zys9eS5saW5lKGxbbC5sZW5ndGgtMV0sZFtkLmxlbmd0aC0xXSk7dmFyIEw9bC5zbGljZSgpLnJldmVyc2UoKSxQPWQuc2xpY2UoKS5yZXZlcnNlKCksST1MLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm5bTFtlXSxQW2VdXX0pKSxNPUV0KEkpO3U9Zys9WHQoTSl9ZWxzZSB1Kz15LmxpbmUoU1tTLmxlbmd0aC0xXVswXSxrKSt5LmxpbmUoU1swXVswXSxrKSt5Lm1vdmUoU1swXVswXSxTWzBdWzFdKStcInpcIjtwLnB1c2goZyksZi5wdXNoKHUpfX1lbHNle2lmKG51bGw9PT1pW2FdW3IrMV0pe2crPXkubW92ZShvLG4pO3ZhciBUPXYuZ2xvYmFscy5pc1hOdW1lcmljPyh2Lmdsb2JhbHMuc2VyaWVzWFtzXVtyXS12Lmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW86by10aGlzLnhEaXZpc2lvbjt1PXUreS5saW5lKFQsaykreS5tb3ZlKG8sbikrXCJ6XCJ9bnVsbD09PWlbYV1bcl0mJihnKz15Lm1vdmUobyxuKSx1Kz15Lm1vdmUobyxrKSksXCJzdGVwbGluZVwiPT09dz8oZz1nK3kubGluZShvLG51bGwsXCJIXCIpK3kubGluZShudWxsLG4sXCJWXCIpLHU9dSt5LmxpbmUobyxudWxsLFwiSFwiKSt5LmxpbmUobnVsbCxuLFwiVlwiKSk6XCJzdHJhaWdodFwiPT09dyYmKGcrPXkubGluZShvLG4pLHUrPXkubGluZShvLG4pKSxyPT09aVthXS5sZW5ndGgtMiYmKHU9dSt5LmxpbmUobyxrKSt5Lm1vdmUobyxuKStcInpcIixcInJhbmdlQXJlYVwiPT09ZSYmYj9nPWcreS5saW5lKG8sYykreS5tb3ZlKG8sYykrXCJ6XCI6KHAucHVzaChnKSxmLnB1c2godSkpKX1yZXR1cm57bGluZVBhdGhzOnAsYXJlYVBhdGhzOmYsbGluZVBhdGg6ZyxhcmVhUGF0aDp1fX19LHtrZXk6XCJoYW5kbGVOdWxsRGF0YVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dmFyIHI9dGhpcy53O2lmKG51bGw9PT10W2ldW2FdJiZyLmNvbmZpZy5tYXJrZXJzLnNob3dOdWxsRGF0YVBvaW50c3x8MT09PXRbaV0ubGVuZ3RoKXt2YXIgbz10aGlzLm1hcmtlcnMucGxvdENoYXJ0TWFya2VycyhlLHMsYSsxLHRoaXMuc3Ryb2tlV2lkdGgtci5jb25maWcubWFya2Vycy5zdHJva2VXaWR0aC8yLCEwKTtudWxsIT09byYmdGhpcy5lbFBvaW50c01haW4uYWRkKG8pfX19XSksdH0oKTt3aW5kb3cuVHJlZW1hcFNxdWFyZWQ9e30sd2luZG93LlRyZWVtYXBTcXVhcmVkLmdlbmVyYXRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksYSxzKXt0aGlzLnhvZmZzZXQ9ZSx0aGlzLnlvZmZzZXQ9aSx0aGlzLmhlaWdodD1zLHRoaXMud2lkdGg9YSx0aGlzLnNob3J0ZXN0RWRnZT1mdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbih0aGlzLmhlaWdodCx0aGlzLndpZHRoKX0sdGhpcy5nZXRDb29yZGluYXRlcz1mdW5jdGlvbih0KXt2YXIgZSxpPVtdLGE9dGhpcy54b2Zmc2V0LHM9dGhpcy55b2Zmc2V0LG89cih0KS90aGlzLmhlaWdodCxuPXIodCkvdGhpcy53aWR0aDtpZih0aGlzLndpZHRoPj10aGlzLmhlaWdodClmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkucHVzaChbYSxzLGErbyxzK3RbZV0vb10pLHMrPXRbZV0vbztlbHNlIGZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaS5wdXNoKFthLHMsYSt0W2VdL24scytuXSksYSs9dFtlXS9uO3JldHVybiBpfSx0aGlzLmN1dEFyZWE9ZnVuY3Rpb24oZSl7dmFyIGk7aWYodGhpcy53aWR0aD49dGhpcy5oZWlnaHQpe3ZhciBhPWUvdGhpcy5oZWlnaHQscz10aGlzLndpZHRoLWE7aT1uZXcgdCh0aGlzLnhvZmZzZXQrYSx0aGlzLnlvZmZzZXQscyx0aGlzLmhlaWdodCl9ZWxzZXt2YXIgcj1lL3RoaXMud2lkdGgsbz10aGlzLmhlaWdodC1yO2k9bmV3IHQodGhpcy54b2Zmc2V0LHRoaXMueW9mZnNldCtyLHRoaXMud2lkdGgsbyl9cmV0dXJuIGl9fWZ1bmN0aW9uIGUoZSxhLHMsbyxuKXtvPXZvaWQgMD09PW8/MDpvLG49dm9pZCAwPT09bj8wOm47dmFyIGw9aShmdW5jdGlvbih0LGUpe3ZhciBpLGE9W10scz1lL3IodCk7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylhW2ldPXRbaV0qcztyZXR1cm4gYX0oZSxhKnMpLFtdLG5ldyB0KG8sbixhLHMpLFtdKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGUsaSxhPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspZm9yKGk9MDtpPHRbZV0ubGVuZ3RoO2krKylhLnB1c2godFtlXVtpXSk7cmV0dXJuIGF9KGwpfWZ1bmN0aW9uIGkodCxlLHMsbyl7dmFyIG4sbCxoO2lmKDAhPT10Lmxlbmd0aClyZXR1cm4gbj1zLnNob3J0ZXN0RWRnZSgpLGZ1bmN0aW9uKHQsZSxpKXt2YXIgcztpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7KHM9dC5zbGljZSgpKS5wdXNoKGUpO3ZhciByPWEodCxpKSxvPWEocyxpKTtyZXR1cm4gcj49b30oZSxsPXRbMF0sbik/KGUucHVzaChsKSxpKHQuc2xpY2UoMSksZSxzLG8pKTooaD1zLmN1dEFyZWEocihlKSxvKSxvLnB1c2gocy5nZXRDb29yZGluYXRlcyhlKSksaSh0LFtdLGgsbykpLG87by5wdXNoKHMuZ2V0Q29vcmRpbmF0ZXMoZSkpfWZ1bmN0aW9uIGEodCxlKXt2YXIgaT1NYXRoLm1pbi5hcHBseShNYXRoLHQpLGE9TWF0aC5tYXguYXBwbHkoTWF0aCx0KSxzPXIodCk7cmV0dXJuIE1hdGgubWF4KE1hdGgucG93KGUsMikqYS9NYXRoLnBvdyhzLDIpLE1hdGgucG93KHMsMikvKE1hdGgucG93KGUsMikqaSkpfWZ1bmN0aW9uIHModCl7cmV0dXJuIHQmJnQuY29uc3RydWN0b3I9PT1BcnJheX1mdW5jdGlvbiByKHQpe3ZhciBlLGk9MDtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkrPXRbZV07cmV0dXJuIGl9ZnVuY3Rpb24gbyh0KXt2YXIgZSxpPTA7aWYocyh0WzBdKSlmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkrPW8odFtlXSk7ZWxzZSBpPXIodCk7cmV0dXJuIGl9cmV0dXJuIGZ1bmN0aW9uIHQoaSxhLHIsbixsKXtuPXZvaWQgMD09PW4/MDpuLGw9dm9pZCAwPT09bD8wOmw7dmFyIGgsYyxkPVtdLGc9W107aWYocyhpWzBdKSl7Zm9yKGM9MDtjPGkubGVuZ3RoO2MrKylkW2NdPW8oaVtjXSk7Zm9yKGg9ZShkLGEscixuLGwpLGM9MDtjPGkubGVuZ3RoO2MrKylnLnB1c2godChpW2NdLGhbY11bMl0taFtjXVswXSxoW2NdWzNdLWhbY11bMV0saFtjXVswXSxoW2NdWzFdKSl9ZWxzZSBnPWUoaSxhLHIsbixsKTtyZXR1cm4gZ319KCk7dmFyIFJ0LEh0LER0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zdHJva2VXaWR0aD10aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aCx0aGlzLmhlbHBlcnM9bmV3IEF0KGUpLHRoaXMuZHluYW1pY0FuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24sdGhpcy5sYWJlbHM9W119cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9bmV3IFIodGhpcy5jdHgpLHI9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXRyZWVtYXBcIn0pO2lmKGkuZ2xvYmFscy5ub0RhdGEpcmV0dXJuIHI7dmFyIG89W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0KX0pKTtvLnB1c2goZSl9KSksdGhpcy5uZWdSYW5nZT10aGlzLmhlbHBlcnMuY2hlY2tDb2xvclJhbmdlKCksaS5jb25maWcuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dC5kYXRhLmZvckVhY2goKGZ1bmN0aW9uKHQpe0FycmF5LmlzQXJyYXkoZS5sYWJlbHNbaV0pfHwoZS5sYWJlbHNbaV09W10pLGUubGFiZWxzW2ldLnB1c2godC54KX0pKX0pKSx3aW5kb3cuVHJlZW1hcFNxdWFyZWQuZ2VuZXJhdGUobyxpLmdsb2JhbHMuZ3JpZFdpZHRoLGkuZ2xvYmFscy5ncmlkSGVpZ2h0KS5mb3JFYWNoKChmdW5jdGlvbihvLG4pe3ZhciBsPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy10cmVlbWFwLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoaS5nbG9iYWxzLnNlcmllc05hbWVzW25dKSxyZWw6bisxLFwiZGF0YTpyZWFsSW5kZXhcIjpufSk7aWYoaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgaD1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O25ldyB2KGUuY3R4KS5kcm9wU2hhZG93KHIsaCxuKX12YXIgYz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO28uZm9yRWFjaCgoZnVuY3Rpb24ocixvKXt2YXIgaD1yWzBdLGM9clsxXSxkPXJbMl0sZz1yWzNdLHU9YS5kcmF3UmVjdChoLGMsZC1oLGctYywwLFwiI2ZmZlwiLDEsZS5zdHJva2VXaWR0aCxpLmNvbmZpZy5wbG90T3B0aW9ucy50cmVlbWFwLnVzZUZpbGxDb2xvckFzU3Ryb2tlP2Y6aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbbl0pO3UuYXR0cih7Y3g6aCxjeTpjLGluZGV4Om4saTpuLGo6byx3aWR0aDpkLWgsaGVpZ2h0OmctY30pO3ZhciBwPWUuaGVscGVycy5nZXRTaGFkZUNvbG9yKGkuY29uZmlnLmNoYXJ0LnR5cGUsbixvLGUubmVnUmFuZ2UpLGY9cC5jb2xvcjt2b2lkIDAhPT1pLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtvXSYmaS5jb25maWcuc2VyaWVzW25dLmRhdGFbb10uZmlsbENvbG9yJiYoZj1pLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtvXS5maWxsQ29sb3IpO3ZhciB4PXMuZmlsbFBhdGgoe2NvbG9yOmYsc2VyaWVzTnVtYmVyOm4sZGF0YVBvaW50SW5kZXg6b30pO3Uubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10cmVlbWFwLXJlY3RcIiksdS5hdHRyKHtmaWxsOnh9KSxlLmhlbHBlcnMuYWRkTGlzdGVuZXJzKHUpO3ZhciBiPXt4OmgrKGQtaCkvMix5OmMrKGctYykvMix3aWR0aDowLGhlaWdodDowfSx2PXt4OmgseTpjLHdpZHRoOmQtaCxoZWlnaHQ6Zy1jfTtpZihpLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQmJiFpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciBtPTE7aS5nbG9iYWxzLnJlc2l6ZWR8fChtPWkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLGUuYW5pbWF0ZVRyZWVtYXAodSxiLHYsbSl9aWYoaS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgeT0xO2UuZHluYW1pY0FuaW0uZW5hYmxlZCYmaS5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJih5PWUuZHluYW1pY0FuaW0uc3BlZWQsaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl0mJmkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dW29dJiZpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXVtvXS5yZWN0JiYoYj1pLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXVtvXS5yZWN0KSxlLmFuaW1hdGVUcmVlbWFwKHUsYix2LHkpKX12YXIgdz1lLmdldEZvbnRTaXplKHIpLGs9aS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXIoZS5sYWJlbHNbbl1bb10se3ZhbHVlOmkuZ2xvYmFscy5zZXJpZXNbbl1bb10sc2VyaWVzSW5kZXg6bixkYXRhUG9pbnRJbmRleDpvLHc6aX0pO1widHJ1bmNhdGVcIj09PWkuY29uZmlnLnBsb3RPcHRpb25zLnRyZWVtYXAuZGF0YUxhYmVscy5mb3JtYXQmJih3PXBhcnNlSW50KGkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLGs9ZS50cnVuY2F0ZUxhYmVscyhrLHcsaCxjLGQsZykpO3ZhciBBPWUuaGVscGVycy5jYWxjdWxhdGVEYXRhTGFiZWxzKHt0ZXh0OmsseDooaCtkKS8yLHk6KGMrZykvMitlLnN0cm9rZVdpZHRoLzIrdy8zLGk6bixqOm8sY29sb3JQcm9wczpwLGZvbnRTaXplOncsc2VyaWVzOnR9KTtpLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQmJkEmJmUucm90YXRlVG9GaXRMYWJlbChBLHcsayxoLGMsZCxnKSxsLmFkZCh1KSxudWxsIT09QSYmbC5hZGQoQSl9KSksbC5hZGQoYyksci5hZGQobCl9KSkscn19LHtrZXk6XCJnZXRGb250U2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt2YXIgaSxhLHMscixvPWZ1bmN0aW9uIHQoZSl7dmFyIGksYT0wO2lmKEFycmF5LmlzQXJyYXkoZVswXSkpZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz10KGVbaV0pO2Vsc2UgZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz1lW2ldLmxlbmd0aDtyZXR1cm4gYX0odGhpcy5sYWJlbHMpL2Z1bmN0aW9uIHQoZSl7dmFyIGksYT0wO2lmKEFycmF5LmlzQXJyYXkoZVswXSkpZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz10KGVbaV0pO2Vsc2UgZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz0xO3JldHVybiBhfSh0aGlzLmxhYmVscyk7cmV0dXJuIGk9dFsyXS10WzBdLGE9dFszXS10WzFdLHM9aSphLHI9TWF0aC5wb3cocywuNSksTWF0aC5taW4oci9vLHBhcnNlSW50KGUuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsMTApKX19LHtrZXk6XCJyb3RhdGVUb0ZpdExhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49bmV3IG0odGhpcy5jdHgpLGw9bi5nZXRUZXh0UmVjdHMoaSxlKTtpZihsLndpZHRoK3RoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoKzU+ci1hJiZsLndpZHRoPD1vLXMpe3ZhciBoPW4ucm90YXRlQXJvdW5kQ2VudGVyKHQubm9kZSk7dC5ub2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKC05MCBcIi5jb25jYXQoaC54LFwiIFwiKS5jb25jYXQoaC55LFwiKSB0cmFuc2xhdGUoXCIpLmNvbmNhdChsLmhlaWdodC8zLFwiKVwiKSl9fX0se2tleTpcInRydW5jYXRlTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvPW5ldyBtKHRoaXMuY3R4KSxuPW8uZ2V0VGV4dFJlY3RzKHQsZSkud2lkdGgrdGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGgrNT5zLWkmJnItYT5zLWk/ci1hOnMtaSxsPW8uZ2V0VGV4dEJhc2VkT25NYXhXaWR0aCh7dGV4dDp0LG1heFdpZHRoOm4sZm9udFNpemU6ZX0pO3JldHVybiB0Lmxlbmd0aCE9PWwubGVuZ3RoJiZuL2U8NT9cIlwiOmx9fSx7a2V5OlwiYW5pbWF0ZVRyZWVtYXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz1uZXcgYih0aGlzLmN0eCk7cy5hbmltYXRlUmVjdCh0LHt4OmUueCx5OmUueSx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH0se3g6aS54LHk6aS55LHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fSxhLChmdW5jdGlvbigpe3MuYW5pbWF0aW9uQ29tcGxldGVkKHQpfSkpfX1dKSx0fSgpLE90PTg2NDAwLE50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMudGltZVNjYWxlQXJyYXk9W10sdGhpcy51dGM9dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEN9cmV0dXJuIHIodCxbe2tleTpcImNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLHM9dGhpcy53O2lmKHMuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpcmV0dXJuIHMuZ2xvYmFscy5sYWJlbHM9W10scy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscz1bXSxbXTt2YXIgcj1uZXcgSSh0aGlzLmN0eCksbz0oaS10KS84NjRlNTt0aGlzLmRldGVybWluZUludGVydmFsKG8pLHMuZ2xvYmFscy5kaXNhYmxlWm9vbUluPSExLHMuZ2xvYmFscy5kaXNhYmxlWm9vbU91dD0hMSxvPC4wMDAxMTU3NDA3NDA3NDA3NDA3NT9zLmdsb2JhbHMuZGlzYWJsZVpvb21Jbj0hMDpvPjVlNCYmKHMuZ2xvYmFscy5kaXNhYmxlWm9vbU91dD0hMCk7dmFyIG49ci5nZXRUaW1lVW5pdHNmcm9tVGltZXN0YW1wKHQsaSx0aGlzLnV0YyksbD1zLmdsb2JhbHMuZ3JpZFdpZHRoL28saD1sLzI0LGM9aC82MCxkPWMvNjAsZz1NYXRoLmZsb29yKDI0Km8pLHU9TWF0aC5mbG9vcigxNDQwKm8pLHA9TWF0aC5mbG9vcihvKk90KSxmPU1hdGguZmxvb3IobykseD1NYXRoLmZsb29yKG8vMzApLGI9TWF0aC5mbG9vcihvLzM2NSksdj17bWluTWlsbGlzZWNvbmQ6bi5taW5NaWxsaXNlY29uZCxtaW5TZWNvbmQ6bi5taW5TZWNvbmQsbWluTWludXRlOm4ubWluTWludXRlLG1pbkhvdXI6bi5taW5Ib3VyLG1pbkRhdGU6bi5taW5EYXRlLG1pbk1vbnRoOm4ubWluTW9udGgsbWluWWVhcjpuLm1pblllYXJ9LG09e2ZpcnN0VmFsOnYsY3VycmVudE1pbGxpc2Vjb25kOnYubWluTWlsbGlzZWNvbmQsY3VycmVudFNlY29uZDp2Lm1pblNlY29uZCxjdXJyZW50TWludXRlOnYubWluTWludXRlLGN1cnJlbnRIb3VyOnYubWluSG91cixjdXJyZW50TW9udGhEYXRlOnYubWluRGF0ZSxjdXJyZW50RGF0ZTp2Lm1pbkRhdGUsY3VycmVudE1vbnRoOnYubWluTW9udGgsY3VycmVudFllYXI6di5taW5ZZWFyLGRheXNXaWR0aE9uWEF4aXM6bCxob3Vyc1dpZHRoT25YQXhpczpoLG1pbnV0ZXNXaWR0aE9uWEF4aXM6YyxzZWNvbmRzV2lkdGhPblhBeGlzOmQsbnVtYmVyT2ZTZWNvbmRzOnAsbnVtYmVyT2ZNaW51dGVzOnUsbnVtYmVyT2ZIb3VyczpnLG51bWJlck9mRGF5czpmLG51bWJlck9mTW9udGhzOngsbnVtYmVyT2ZZZWFyczpifTtzd2l0Y2godGhpcy50aWNrSW50ZXJ2YWwpe2Nhc2VcInllYXJzXCI6dGhpcy5nZW5lcmF0ZVllYXJTY2FsZShtKTticmVhaztjYXNlXCJtb250aHNcIjpjYXNlXCJoYWxmX3llYXJcIjp0aGlzLmdlbmVyYXRlTW9udGhTY2FsZShtKTticmVhaztjYXNlXCJtb250aHNfZGF5c1wiOmNhc2VcIm1vbnRoc19mb3J0bmlnaHRcIjpjYXNlXCJkYXlzXCI6Y2FzZVwid2Vla19kYXlzXCI6dGhpcy5nZW5lcmF0ZURheVNjYWxlKG0pO2JyZWFrO2Nhc2VcImhvdXJzXCI6dGhpcy5nZW5lcmF0ZUhvdXJTY2FsZShtKTticmVhaztjYXNlXCJtaW51dGVzX2ZpdmVzXCI6Y2FzZVwibWludXRlc1wiOnRoaXMuZ2VuZXJhdGVNaW51dGVTY2FsZShtKTticmVhaztjYXNlXCJzZWNvbmRzX3RlbnNcIjpjYXNlXCJzZWNvbmRzX2ZpdmVzXCI6Y2FzZVwic2Vjb25kc1wiOnRoaXMuZ2VuZXJhdGVTZWNvbmRTY2FsZShtKX12YXIgeT10aGlzLnRpbWVTY2FsZUFycmF5Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGk9e3Bvc2l0aW9uOnQucG9zaXRpb24sdW5pdDp0LnVuaXQseWVhcjp0LnllYXIsZGF5OnQuZGF5P3QuZGF5OjEsaG91cjp0LmhvdXI/dC5ob3VyOjAsbW9udGg6dC5tb250aCsxfTtyZXR1cm5cIm1vbnRoXCI9PT10LnVuaXQ/ZShlKHt9LGkpLHt9LHtkYXk6MSx2YWx1ZTp0LnZhbHVlKzF9KTpcImRheVwiPT09dC51bml0fHxcImhvdXJcIj09PXQudW5pdD9lKGUoe30saSkse30se3ZhbHVlOnQudmFsdWV9KTpcIm1pbnV0ZVwiPT09dC51bml0P2UoZSh7fSxpKSx7fSx7dmFsdWU6dC52YWx1ZSxtaW51dGU6dC52YWx1ZX0pOlwic2Vjb25kXCI9PT10LnVuaXQ/ZShlKHt9LGkpLHt9LHt2YWx1ZTp0LnZhbHVlLG1pbnV0ZTp0Lm1pbnV0ZSxzZWNvbmQ6dC5zZWNvbmR9KTp0fSkpO3JldHVybiB5LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGU9MSxpPU1hdGguY2VpbChzLmdsb2JhbHMuZ3JpZFdpZHRoLzEyMCkscj10LnZhbHVlO3ZvaWQgMCE9PXMuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJihpPXMuY29uZmlnLnhheGlzLnRpY2tBbW91bnQpLHkubGVuZ3RoPmkmJihlPU1hdGguZmxvb3IoeS5sZW5ndGgvaSkpO3ZhciBvPSExLG49ITE7c3dpdGNoKGEudGlja0ludGVydmFsKXtjYXNlXCJ5ZWFyc1wiOlwieWVhclwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwiaGFsZl95ZWFyXCI6ZT03LFwieWVhclwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwibW9udGhzXCI6ZT0xLFwieWVhclwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwibW9udGhzX2ZvcnRuaWdodFwiOmU9MTUsXCJ5ZWFyXCIhPT10LnVuaXQmJlwibW9udGhcIiE9PXQudW5pdHx8KG89ITApLDMwPT09ciYmKG49ITApO2JyZWFrO2Nhc2VcIm1vbnRoc19kYXlzXCI6ZT0xMCxcIm1vbnRoXCI9PT10LnVuaXQmJihvPSEwKSwzMD09PXImJihuPSEwKTticmVhaztjYXNlXCJ3ZWVrX2RheXNcIjplPTgsXCJtb250aFwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwiZGF5c1wiOmU9MSxcIm1vbnRoXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJob3Vyc1wiOlwiZGF5XCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJtaW51dGVzX2ZpdmVzXCI6Y2FzZVwic2Vjb25kc19maXZlc1wiOnIlNSE9MCYmKG49ITApO2JyZWFrO2Nhc2VcInNlY29uZHNfdGVuc1wiOnIlMTAhPTAmJihuPSEwKX1pZihcImhvdXJzXCI9PT1hLnRpY2tJbnRlcnZhbHx8XCJtaW51dGVzX2ZpdmVzXCI9PT1hLnRpY2tJbnRlcnZhbHx8XCJzZWNvbmRzX3RlbnNcIj09PWEudGlja0ludGVydmFsfHxcInNlY29uZHNfZml2ZXNcIj09PWEudGlja0ludGVydmFsKXtpZighbilyZXR1cm4hMH1lbHNlIGlmKChyJWU9PTB8fG8pJiYhbilyZXR1cm4hMH0pKX19LHtrZXk6XCJyZWNhbGNEaW1lbnNpb25zQmFzZWRPbkZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy5mb3JtYXREYXRlcyh0KSxzPXRoaXMucmVtb3ZlT3ZlcmxhcHBpbmdUUyhhKTtpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzPXMuc2xpY2UoKSxuZXcgb3QodGhpcy5jdHgpLnBsb3RDb29yZHMoKX19LHtrZXk6XCJkZXRlcm1pbmVJbnRlcnZhbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTI0KnQsaT02MCplO3N3aXRjaCghMCl7Y2FzZSB0LzM2NT41OnRoaXMudGlja0ludGVydmFsPVwieWVhcnNcIjticmVhaztjYXNlIHQ+ODAwOnRoaXMudGlja0ludGVydmFsPVwiaGFsZl95ZWFyXCI7YnJlYWs7Y2FzZSB0PjE4MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc1wiO2JyZWFrO2Nhc2UgdD45MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc19mb3J0bmlnaHRcIjticmVhaztjYXNlIHQ+NjA6dGhpcy50aWNrSW50ZXJ2YWw9XCJtb250aHNfZGF5c1wiO2JyZWFrO2Nhc2UgdD4zMDp0aGlzLnRpY2tJbnRlcnZhbD1cIndlZWtfZGF5c1wiO2JyZWFrO2Nhc2UgdD4yOnRoaXMudGlja0ludGVydmFsPVwiZGF5c1wiO2JyZWFrO2Nhc2UgZT4yLjQ6dGhpcy50aWNrSW50ZXJ2YWw9XCJob3Vyc1wiO2JyZWFrO2Nhc2UgaT4xNTp0aGlzLnRpY2tJbnRlcnZhbD1cIm1pbnV0ZXNfZml2ZXNcIjticmVhaztjYXNlIGk+NTp0aGlzLnRpY2tJbnRlcnZhbD1cIm1pbnV0ZXNcIjticmVhaztjYXNlIGk+MTp0aGlzLnRpY2tJbnRlcnZhbD1cInNlY29uZHNfdGVuc1wiO2JyZWFrO2Nhc2UgNjAqaT4yMDp0aGlzLnRpY2tJbnRlcnZhbD1cInNlY29uZHNfZml2ZXNcIjticmVhaztkZWZhdWx0OnRoaXMudGlja0ludGVydmFsPVwic2Vjb25kc1wifX19LHtrZXk6XCJnZW5lcmF0ZVllYXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnRNb250aCxhPXQuY3VycmVudFllYXIscz10LmRheXNXaWR0aE9uWEF4aXMscj10Lm51bWJlck9mWWVhcnMsbz1lLm1pblllYXIsbj0wLGw9bmV3IEkodGhpcy5jdHgpLGg9XCJ5ZWFyXCI7aWYoZS5taW5EYXRlPjF8fGUubWluTW9udGg+MCl7dmFyIGM9bC5kZXRlcm1pbmVSZW1haW5pbmdEYXlzT2ZZZWFyKGUubWluWWVhcixlLm1pbk1vbnRoLGUubWluRGF0ZSk7bj0obC5kZXRlcm1pbmVEYXlzT2ZZZWFyKGUubWluWWVhciktYysxKSpzLG89ZS5taW5ZZWFyKzEsdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpuLHZhbHVlOm8sdW5pdDpoLHllYXI6byxtb250aDp4Lm1vbnRoTW9kKGkrMSl9KX1lbHNlIDE9PT1lLm1pbkRhdGUmJjA9PT1lLm1pbk1vbnRoJiZ0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOm4sdmFsdWU6byx1bml0OmgseWVhcjphLG1vbnRoOngubW9udGhNb2QoaSsxKX0pO2Zvcih2YXIgZD1vLGc9bix1PTA7dTxyO3UrKylkKyssZz1sLmRldGVybWluZURheXNPZlllYXIoZC0xKSpzK2csdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpnLHZhbHVlOmQsdW5pdDpoLHllYXI6ZCxtb250aDoxfSl9fSx7a2V5OlwiZ2VuZXJhdGVNb250aFNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoRGF0ZSxhPXQuY3VycmVudE1vbnRoLHM9dC5jdXJyZW50WWVhcixyPXQuZGF5c1dpZHRoT25YQXhpcyxvPXQubnVtYmVyT2ZNb250aHMsbj1hLGw9MCxoPW5ldyBJKHRoaXMuY3R4KSxjPVwibW9udGhcIixkPTA7aWYoZS5taW5EYXRlPjEpe2w9KGguZGV0ZXJtaW5lRGF5c09mTW9udGhzKGErMSxlLm1pblllYXIpLWkrMSkqcixuPXgubW9udGhNb2QoYSsxKTt2YXIgZz1zK2QsdT14Lm1vbnRoTW9kKG4pLHA9bjswPT09biYmKGM9XCJ5ZWFyXCIscD1nLHU9MSxnKz1kKz0xKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmwsdmFsdWU6cCx1bml0OmMseWVhcjpnLG1vbnRoOnV9KX1lbHNlIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bCx2YWx1ZTpuLHVuaXQ6Yyx5ZWFyOnMsbW9udGg6eC5tb250aE1vZChhKX0pO2Zvcih2YXIgZj1uKzEsYj1sLHY9MCxtPTE7djxvO3YrKyxtKyspezA9PT0oZj14Lm1vbnRoTW9kKGYpKT8oYz1cInllYXJcIixkKz0xKTpjPVwibW9udGhcIjt2YXIgeT10aGlzLl9nZXRZZWFyKHMsZixkKTtiPWguZGV0ZXJtaW5lRGF5c09mTW9udGhzKGYseSkqcitiO3ZhciB3PTA9PT1mP3k6Zjt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmIsdmFsdWU6dyx1bml0OmMseWVhcjp5LG1vbnRoOjA9PT1mPzE6Zn0pLGYrK319fSx7a2V5OlwiZ2VuZXJhdGVEYXlTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnRNb250aCxhPXQuY3VycmVudFllYXIscz10LmhvdXJzV2lkdGhPblhBeGlzLHI9dC5udW1iZXJPZkRheXMsbz1uZXcgSSh0aGlzLmN0eCksbj1cImRheVwiLGw9ZS5taW5EYXRlKzEsaD1sLGM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0Pm8uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUrMSxpKT8oaD0xLG49XCJtb250aFwiLGc9ZSs9MSxlKTplfSxkPSgyNC1lLm1pbkhvdXIpKnMsZz1sLHU9YyhoLGksYSk7MD09PWUubWluSG91ciYmMT09PWUubWluRGF0ZT8oZD0wLGc9eC5tb250aE1vZChlLm1pbk1vbnRoKSxuPVwibW9udGhcIixoPWUubWluRGF0ZSk6MSE9PWUubWluRGF0ZSYmMD09PWUubWluSG91ciYmMD09PWUubWluTWludXRlJiYoZD0wLGw9ZS5taW5EYXRlLGc9bCx1PWMoaD1sLGksYSkpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246ZCx2YWx1ZTpnLHVuaXQ6bix5ZWFyOnRoaXMuX2dldFllYXIoYSx1LDApLG1vbnRoOngubW9udGhNb2QodSksZGF5Omh9KTtmb3IodmFyIHA9ZCxmPTA7ZjxyO2YrKyl7bj1cImRheVwiLHU9YyhoKz0xLHUsdGhpcy5fZ2V0WWVhcihhLHUsMCkpO3ZhciBiPXRoaXMuX2dldFllYXIoYSx1LDApO3A9MjQqcytwO3ZhciB2PTE9PT1oP3gubW9udGhNb2QodSk6aDt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOnAsdmFsdWU6dix1bml0Om4seWVhcjpiLG1vbnRoOngubW9udGhNb2QodSksZGF5OnZ9KX19fSx7a2V5OlwiZ2VuZXJhdGVIb3VyU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpcnN0VmFsLGk9dC5jdXJyZW50RGF0ZSxhPXQuY3VycmVudE1vbnRoLHM9dC5jdXJyZW50WWVhcixyPXQubWludXRlc1dpZHRoT25YQXhpcyxvPXQubnVtYmVyT2ZIb3VycyxuPW5ldyBJKHRoaXMuY3R4KSxsPVwiaG91clwiLGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD5uLmRldGVybWluZURheXNPZk1vbnRocyhlKzEscykmJihmPTEsZSs9MSkse21vbnRoOmUsZGF0ZTpmfX0sYz1mdW5jdGlvbih0LGUpe3JldHVybiB0Pm4uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUrMSxzKT9lKz0xOmV9LGQ9NjAtKGUubWluTWludXRlK2UubWluU2Vjb25kLzYwKSxnPWQqcix1PWUubWluSG91cisxLHA9dTs2MD09PWQmJihnPTAscD0odT1lLm1pbkhvdXIpKzEpO3ZhciBmPWk7cD49MjQmJihwPTAsZis9MSxsPVwiZGF5XCIpO3ZhciBiPWgoZixhKS5tb250aDtiPWMoZixiKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmcsdmFsdWU6dSx1bml0OmwsZGF5OmYsaG91cjpwLHllYXI6cyxtb250aDp4Lm1vbnRoTW9kKGIpfSkscCsrO2Zvcih2YXIgdj1nLG09MDttPG87bSsrKXtpZihsPVwiaG91clwiLHA+PTI0KXA9MCxsPVwiZGF5XCIsYj1oKGYrPTEsYikubW9udGgsYj1jKGYsYik7dmFyIHk9dGhpcy5fZ2V0WWVhcihzLGIsMCk7dj02MCpyK3Y7dmFyIHc9MD09PXA/ZjpwO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246dix2YWx1ZTp3LHVuaXQ6bCxob3VyOnAsZGF5OmYseWVhcjp5LG1vbnRoOngubW9udGhNb2QoYil9KSxwKyt9fX0se2tleTpcImdlbmVyYXRlTWludXRlU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jdXJyZW50TWlsbGlzZWNvbmQsaT10LmN1cnJlbnRTZWNvbmQsYT10LmN1cnJlbnRNaW51dGUscz10LmN1cnJlbnRIb3VyLHI9dC5jdXJyZW50RGF0ZSxvPXQuY3VycmVudE1vbnRoLG49dC5jdXJyZW50WWVhcixsPXQubWludXRlc1dpZHRoT25YQXhpcyxoPXQuc2Vjb25kc1dpZHRoT25YQXhpcyxjPXQubnVtYmVyT2ZNaW51dGVzLGQ9YSsxLGc9cix1PW8scD1uLGY9cyxiPSg2MC1pLWUvMWUzKSpoLHY9MDt2PGM7disrKWQ+PTYwJiYoZD0wLDI0PT09KGYrPTEpJiYoZj0wKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpiLHZhbHVlOmQsdW5pdDpcIm1pbnV0ZVwiLGhvdXI6ZixtaW51dGU6ZCxkYXk6Zyx5ZWFyOnRoaXMuX2dldFllYXIocCx1LDApLG1vbnRoOngubW9udGhNb2QodSl9KSxiKz1sLGQrK319LHtrZXk6XCJnZW5lcmF0ZVNlY29uZFNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuY3VycmVudE1pbGxpc2Vjb25kLGk9dC5jdXJyZW50U2Vjb25kLGE9dC5jdXJyZW50TWludXRlLHM9dC5jdXJyZW50SG91cixyPXQuY3VycmVudERhdGUsbz10LmN1cnJlbnRNb250aCxuPXQuY3VycmVudFllYXIsbD10LnNlY29uZHNXaWR0aE9uWEF4aXMsaD10Lm51bWJlck9mU2Vjb25kcyxjPWkrMSxkPWEsZz1yLHU9byxwPW4sZj1zLGI9KDFlMy1lKS8xZTMqbCx2PTA7djxoO3YrKyljPj02MCYmKGM9MCwrK2Q+PTYwJiYoZD0wLDI0PT09KytmJiYoZj0wKSkpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Yix2YWx1ZTpjLHVuaXQ6XCJzZWNvbmRcIixob3VyOmYsbWludXRlOmQsc2Vjb25kOmMsZGF5OmcseWVhcjp0aGlzLl9nZXRZZWFyKHAsdSwwKSxtb250aDp4Lm1vbnRoTW9kKHUpfSksYis9bCxjKyt9fSx7a2V5OlwiY3JlYXRlUmF3RGF0ZVN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dC55ZWFyO3JldHVybiAwPT09dC5tb250aCYmKHQubW9udGg9MSksaSs9XCItXCIrKFwiMFwiK3QubW9udGgudG9TdHJpbmcoKSkuc2xpY2UoLTIpLFwiZGF5XCI9PT10LnVuaXQ/aSs9XCJkYXlcIj09PXQudW5pdD9cIi1cIisoXCIwXCIrZSkuc2xpY2UoLTIpOlwiLTAxXCI6aSs9XCItXCIrKFwiMFwiKyh0LmRheT90LmRheTpcIjFcIikpLnNsaWNlKC0yKSxcImhvdXJcIj09PXQudW5pdD9pKz1cImhvdXJcIj09PXQudW5pdD9cIlRcIisoXCIwXCIrZSkuc2xpY2UoLTIpOlwiVDAwXCI6aSs9XCJUXCIrKFwiMFwiKyh0LmhvdXI/dC5ob3VyOlwiMFwiKSkuc2xpY2UoLTIpLFwibWludXRlXCI9PT10LnVuaXQ/aSs9XCI6XCIrKFwiMFwiK2UpLnNsaWNlKC0yKTppKz1cIjpcIisodC5taW51dGU/KFwiMFwiK3QubWludXRlKS5zbGljZSgtMik6XCIwMFwiKSxcInNlY29uZFwiPT09dC51bml0P2krPVwiOlwiKyhcIjBcIitlKS5zbGljZSgtMik6aSs9XCI6MDBcIix0aGlzLnV0YyYmKGkrPVwiLjAwMFpcIiksaX19LHtrZXk6XCJmb3JtYXREYXRlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLnc7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXt2YXIgYT10LnZhbHVlLnRvU3RyaW5nKCkscz1uZXcgSShlLmN0eCkscj1lLmNyZWF0ZVJhd0RhdGVTdHJpbmcodCxhKSxvPXMuZ2V0RGF0ZShzLnBhcnNlRGF0ZShyKSk7aWYoZS51dGN8fChvPXMuZ2V0RGF0ZShzLnBhcnNlRGF0ZVdpdGhUaW1lem9uZShyKSkpLHZvaWQgMD09PWkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXQpe3ZhciBuPVwiZGQgTU1NXCIsbD1pLmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVGb3JtYXR0ZXI7XCJ5ZWFyXCI9PT10LnVuaXQmJihuPWwueWVhciksXCJtb250aFwiPT09dC51bml0JiYobj1sLm1vbnRoKSxcImRheVwiPT09dC51bml0JiYobj1sLmRheSksXCJob3VyXCI9PT10LnVuaXQmJihuPWwuaG91ciksXCJtaW51dGVcIj09PXQudW5pdCYmKG49bC5taW51dGUpLFwic2Vjb25kXCI9PT10LnVuaXQmJihuPWwuc2Vjb25kKSxhPXMuZm9ybWF0RGF0ZShvLG4pfWVsc2UgYT1zLmZvcm1hdERhdGUobyxpLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0KTtyZXR1cm57ZGF0ZVN0cmluZzpyLHBvc2l0aW9uOnQucG9zaXRpb24sdmFsdWU6YSx1bml0OnQudW5pdCx5ZWFyOnQueWVhcixtb250aDp0Lm1vbnRofX0pKX19LHtrZXk6XCJyZW1vdmVPdmVybGFwcGluZ1RTXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLGE9bmV3IG0odGhpcy5jdHgpLHM9ITE7dC5sZW5ndGg+MCYmdFswXS52YWx1ZSYmdC5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWUubGVuZ3RoPT09dFswXS52YWx1ZS5sZW5ndGh9KSkmJihzPSEwLGU9YS5nZXRUZXh0UmVjdHModFswXS52YWx1ZSkud2lkdGgpO3ZhciByPTAsbz10Lm1hcCgoZnVuY3Rpb24obyxuKXtpZihuPjAmJmkudy5jb25maWcueGF4aXMubGFiZWxzLmhpZGVPdmVybGFwcGluZ0xhYmVscyl7dmFyIGw9cz9lOmEuZ2V0VGV4dFJlY3RzKHRbcl0udmFsdWUpLndpZHRoLGg9dFtyXS5wb3NpdGlvbjtyZXR1cm4gby5wb3NpdGlvbj5oK2wrMTA/KHI9bixvKTpudWxsfXJldHVybiBvfSkpO3JldHVybiBvPW8uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSl9fSx7a2V5OlwiX2dldFllYXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQrTWF0aC5mbG9vcihlLzEyKStpfX1dKSx0fSgpLFd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1pLHRoaXMudz1pLncsdGhpcy5lbD1lfXJldHVybiByKHQsW3trZXk6XCJzZXR1cEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWcsaT1lLmNoYXJ0LnR5cGU7dC5heGlzQ2hhcnRzPVtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiY2FuZGxlc3RpY2tcIixcImJveFBsb3RcIixcInNjYXR0ZXJcIixcImJ1YmJsZVwiLFwicmFkYXJcIixcImhlYXRtYXBcIixcInRyZWVtYXBcIl0uaW5kZXhPZihpKT4tMSx0Lnh5Q2hhcnRzPVtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiY2FuZGxlc3RpY2tcIixcImJveFBsb3RcIixcInNjYXR0ZXJcIixcImJ1YmJsZVwiXS5pbmRleE9mKGkpPi0xLHQuaXNCYXJIb3Jpem9udGFsPShcImJhclwiPT09ZS5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1lLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09ZS5jaGFydC50eXBlKSYmZS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCx0LmNoYXJ0Q2xhc3M9XCIuYXBleGNoYXJ0c1wiK3QuY2hhcnRJRCx0LmRvbS5iYXNlRWw9dGhpcy5lbCx0LmRvbS5lbFdyYXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxtLnNldEF0dHJzKHQuZG9tLmVsV3JhcCx7aWQ6dC5jaGFydENsYXNzLnN1YnN0cmluZygxKSxjbGFzczpcImFwZXhjaGFydHMtY2FudmFzIFwiK3QuY2hhcnRDbGFzcy5zdWJzdHJpbmcoMSl9KSx0aGlzLmVsLmFwcGVuZENoaWxkKHQuZG9tLmVsV3JhcCksdC5kb20uUGFwZXI9bmV3IHdpbmRvdy5TVkcuRG9jKHQuZG9tLmVsV3JhcCksdC5kb20uUGFwZXIuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXN2Z1wiLFwieG1sbnM6ZGF0YVwiOlwiQXBleENoYXJ0c05TXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLmNoYXJ0Lm9mZnNldFgsXCIsIFwiKS5jb25jYXQoZS5jaGFydC5vZmZzZXRZLFwiKVwiKX0pLHQuZG9tLlBhcGVyLm5vZGUuc3R5bGUuYmFja2dyb3VuZD1cImRhcmtcIiE9PWUudGhlbWUubW9kZXx8ZS5jaGFydC5iYWNrZ3JvdW5kP2UuY2hhcnQuYmFja2dyb3VuZDpcInJnYmEoMCwgMCwgMCwgMC44KVwiLHRoaXMuc2V0U1ZHRGltZW5zaW9ucygpLHQuZG9tLmVsTGVnZW5kRm9yZWlnbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5TVkdOUyxcImZvcmVpZ25PYmplY3RcIiksbS5zZXRBdHRycyh0LmRvbS5lbExlZ2VuZEZvcmVpZ24se3g6MCx5OjAsd2lkdGg6dC5zdmdXaWR0aCxoZWlnaHQ6dC5zdmdIZWlnaHR9KSx0LmRvbS5lbExlZ2VuZFdyYXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0LmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kXCIpLHQuZG9tLmVsTGVnZW5kV3JhcC5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiKSx0LmRvbS5lbExlZ2VuZEZvcmVpZ24uYXBwZW5kQ2hpbGQodC5kb20uZWxMZWdlbmRXcmFwKSx0LmRvbS5QYXBlci5ub2RlLmFwcGVuZENoaWxkKHQuZG9tLmVsTGVnZW5kRm9yZWlnbiksdC5kb20uZWxHcmFwaGljYWw9dC5kb20uUGFwZXIuZ3JvdXAoKS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtaW5uZXIgYXBleGNoYXJ0cy1ncmFwaGljYWxcIn0pLHQuZG9tLmVsRGVmcz10LmRvbS5QYXBlci5kZWZzKCksdC5kb20uUGFwZXIuYWRkKHQuZG9tLmVsR3JhcGhpY2FsKSx0LmRvbS5lbEdyYXBoaWNhbC5hZGQodC5kb20uZWxEZWZzKX19LHtrZXk6XCJwbG90Q2hhcnRUeXBlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZyxzPWkuZ2xvYmFscyxyPXtzZXJpZXM6W10saTpbXX0sbz17c2VyaWVzOltdLGk6W119LG49e3NlcmllczpbXSxpOltdfSxsPXtzZXJpZXM6W10saTpbXX0saD17c2VyaWVzOltdLGk6W119LGM9e3NlcmllczpbXSxpOltdfSxkPXtzZXJpZXM6W10saTpbXX0sZz17c2VyaWVzOltdLGk6W119LHU9e3NlcmllczpbXSxzZXJpZXNSYW5nZUVuZDpbXSxpOltdfTtzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGUscCl7dmFyIGY9MDt2b2lkIDAhPT10W3BdLnR5cGU/KFwiY29sdW1uXCI9PT10W3BdLnR5cGV8fFwiYmFyXCI9PT10W3BdLnR5cGU/KHMuc2VyaWVzLmxlbmd0aD4xJiZhLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsJiZjb25zb2xlLndhcm4oXCJIb3Jpem9udGFsIGJhcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gYSBtaXhlZC9jb21ibyBjaGFydC4gUGxlYXNlIHR1cm4gb2ZmIGBwbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbGBcIiksaC5zZXJpZXMucHVzaChlKSxoLmkucHVzaChwKSxmKyssaS5nbG9iYWxzLmNvbHVtblNlcmllcz1oLnNlcmllcyk6XCJhcmVhXCI9PT10W3BdLnR5cGU/KG8uc2VyaWVzLnB1c2goZSksby5pLnB1c2gocCksZisrKTpcImxpbmVcIj09PXRbcF0udHlwZT8oci5zZXJpZXMucHVzaChlKSxyLmkucHVzaChwKSxmKyspOlwic2NhdHRlclwiPT09dFtwXS50eXBlPyhuLnNlcmllcy5wdXNoKGUpLG4uaS5wdXNoKHApKTpcImJ1YmJsZVwiPT09dFtwXS50eXBlPyhsLnNlcmllcy5wdXNoKGUpLGwuaS5wdXNoKHApLGYrKyk6XCJjYW5kbGVzdGlja1wiPT09dFtwXS50eXBlPyhjLnNlcmllcy5wdXNoKGUpLGMuaS5wdXNoKHApLGYrKyk6XCJib3hQbG90XCI9PT10W3BdLnR5cGU/KGQuc2VyaWVzLnB1c2goZSksZC5pLnB1c2gocCksZisrKTpcInJhbmdlQmFyXCI9PT10W3BdLnR5cGU/KGcuc2VyaWVzLnB1c2goZSksZy5pLnB1c2gocCksZisrKTpcInJhbmdlQXJlYVwiPT09dFtwXS50eXBlPyh1LnNlcmllcy5wdXNoKHMuc2VyaWVzUmFuZ2VTdGFydFtwXSksdS5zZXJpZXNSYW5nZUVuZC5wdXNoKHMuc2VyaWVzUmFuZ2VFbmRbcF0pLHUuaS5wdXNoKHApLGYrKyk6Y29uc29sZS53YXJuKFwiWW91IGhhdmUgc3BlY2lmaWVkIGFuIHVucmVjb2duaXplZCBjaGFydCB0eXBlLiBBdmFpbGFibGUgdHlwZXMgZm9yIHRoaXMgcHJvcGVydHkgYXJlIGxpbmUvYXJlYS9jb2x1bW4vYmFyL3NjYXR0ZXIvYnViYmxlL2NhbmRsZXN0aWNrL2JveFBsb3QvcmFuZ2VCYXIvcmFuZ2VBcmVhXCIpLGY+MSYmKHMuY29tYm9DaGFydHM9ITApKTooci5zZXJpZXMucHVzaChlKSxyLmkucHVzaChwKSl9KSk7dmFyIHA9bmV3IEZ0KHRoaXMuY3R4LGUpLGY9bmV3IGt0KHRoaXMuY3R4LGUpO3RoaXMuY3R4LnBpZT1uZXcgTHQodGhpcy5jdHgpO3ZhciB4PW5ldyBJdCh0aGlzLmN0eCk7dGhpcy5jdHgucmFuZ2VCYXI9bmV3IE10KHRoaXMuY3R4LGUpO3ZhciBiPW5ldyBQdCh0aGlzLmN0eCksdj1bXTtpZihzLmNvbWJvQ2hhcnRzKXtpZihvLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKHAuZHJhdyhvLnNlcmllcyxcImFyZWFcIixvLmkpKSxoLnNlcmllcy5sZW5ndGg+MClpZihpLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgbT1uZXcgd3QodGhpcy5jdHgsZSk7di5wdXNoKG0uZHJhdyhoLnNlcmllcyxoLmkpKX1lbHNlIHRoaXMuY3R4LmJhcj1uZXcgeXQodGhpcy5jdHgsZSksdi5wdXNoKHRoaXMuY3R4LmJhci5kcmF3KGguc2VyaWVzLGguaSkpO2lmKHUuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2gocC5kcmF3KHUuc2VyaWVzLFwicmFuZ2VBcmVhXCIsdS5pLHUuc2VyaWVzUmFuZ2VFbmQpKSxyLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKHAuZHJhdyhyLnNlcmllcyxcImxpbmVcIixyLmkpKSxjLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKGYuZHJhdyhjLnNlcmllcyxcImNhbmRsZXN0aWNrXCIsYy5pKSksZC5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaChmLmRyYXcoZC5zZXJpZXMsXCJib3hQbG90XCIsZC5pKSksZy5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaCh0aGlzLmN0eC5yYW5nZUJhci5kcmF3KGcuc2VyaWVzLGcuaSkpLG4uc2VyaWVzLmxlbmd0aD4wKXt2YXIgeT1uZXcgRnQodGhpcy5jdHgsZSwhMCk7di5wdXNoKHkuZHJhdyhuLnNlcmllcyxcInNjYXR0ZXJcIixuLmkpKX1pZihsLnNlcmllcy5sZW5ndGg+MCl7dmFyIHc9bmV3IEZ0KHRoaXMuY3R4LGUsITApO3YucHVzaCh3LmRyYXcobC5zZXJpZXMsXCJidWJibGVcIixsLmkpKX19ZWxzZSBzd2l0Y2goYS5jaGFydC50eXBlKXtjYXNlXCJsaW5lXCI6dj1wLmRyYXcocy5zZXJpZXMsXCJsaW5lXCIpO2JyZWFrO2Nhc2VcImFyZWFcIjp2PXAuZHJhdyhzLnNlcmllcyxcImFyZWFcIik7YnJlYWs7Y2FzZVwiYmFyXCI6aWYoYS5jaGFydC5zdGFja2VkKXY9bmV3IHd0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMpO2Vsc2UgdGhpcy5jdHguYmFyPW5ldyB5dCh0aGlzLmN0eCxlKSx2PXRoaXMuY3R4LmJhci5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJjYW5kbGVzdGlja1wiOnY9bmV3IGt0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMsXCJjYW5kbGVzdGlja1wiKTticmVhaztjYXNlXCJib3hQbG90XCI6dj1uZXcga3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyxhLmNoYXJ0LnR5cGUpO2JyZWFrO2Nhc2VcInJhbmdlQmFyXCI6dj10aGlzLmN0eC5yYW5nZUJhci5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJyYW5nZUFyZWFcIjp2PXAuZHJhdyhzLnNlcmllc1JhbmdlU3RhcnQsXCJyYW5nZUFyZWFcIix2b2lkIDAscy5zZXJpZXNSYW5nZUVuZCk7YnJlYWs7Y2FzZVwiaGVhdG1hcFwiOnY9bmV3IFN0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInRyZWVtYXBcIjp2PW5ldyBEdCh0aGlzLmN0eCxlKS5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJwaWVcIjpjYXNlXCJkb251dFwiOmNhc2VcInBvbGFyQXJlYVwiOnY9dGhpcy5jdHgucGllLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhZGlhbEJhclwiOnY9eC5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJyYWRhclwiOnY9Yi5kcmF3KHMuc2VyaWVzKTticmVhaztkZWZhdWx0OnY9cC5kcmF3KHMuc2VyaWVzKX1yZXR1cm4gdn19LHtrZXk6XCJzZXRTVkdEaW1lbnNpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWc7dC5zdmdXaWR0aD1lLmNoYXJ0LndpZHRoLHQuc3ZnSGVpZ2h0PWUuY2hhcnQuaGVpZ2h0O3ZhciBpPXguZ2V0RGltZW5zaW9ucyh0aGlzLmVsKSxhPWUuY2hhcnQud2lkdGgudG9TdHJpbmcoKS5zcGxpdCgvWzAtOV0rL2cpLnBvcCgpO1wiJVwiPT09YT94LmlzTnVtYmVyKGlbMF0pJiYoMD09PWlbMF0ud2lkdGgmJihpPXguZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpKSx0LnN2Z1dpZHRoPWlbMF0qcGFyc2VJbnQoZS5jaGFydC53aWR0aCwxMCkvMTAwKTpcInB4XCIhPT1hJiZcIlwiIT09YXx8KHQuc3ZnV2lkdGg9cGFyc2VJbnQoZS5jaGFydC53aWR0aCwxMCkpO3ZhciBzPWUuY2hhcnQuaGVpZ2h0LnRvU3RyaW5nKCkuc3BsaXQoL1swLTldKy9nKS5wb3AoKTtpZihcImF1dG9cIiE9PXQuc3ZnSGVpZ2h0JiZcIlwiIT09dC5zdmdIZWlnaHQpaWYoXCIlXCI9PT1zKXt2YXIgcj14LmdldERpbWVuc2lvbnModGhpcy5lbC5wYXJlbnROb2RlKTt0LnN2Z0hlaWdodD1yWzFdKnBhcnNlSW50KGUuY2hhcnQuaGVpZ2h0LDEwKS8xMDB9ZWxzZSB0LnN2Z0hlaWdodD1wYXJzZUludChlLmNoYXJ0LmhlaWdodCwxMCk7ZWxzZSB0LmF4aXNDaGFydHM/dC5zdmdIZWlnaHQ9dC5zdmdXaWR0aC8xLjYxOnQuc3ZnSGVpZ2h0PXQuc3ZnV2lkdGgvMS4yO2lmKHQuc3ZnV2lkdGg8MCYmKHQuc3ZnV2lkdGg9MCksdC5zdmdIZWlnaHQ8MCYmKHQuc3ZnSGVpZ2h0PTApLG0uc2V0QXR0cnModC5kb20uUGFwZXIubm9kZSx7d2lkdGg6dC5zdmdXaWR0aCxoZWlnaHQ6dC5zdmdIZWlnaHR9KSxcIiVcIiE9PXMpe3ZhciBvPWUuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQ/MDp0LmF4aXNDaGFydHM/ZS5jaGFydC5wYXJlbnRIZWlnaHRPZmZzZXQ6MDt0LmRvbS5QYXBlci5ub2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9dC5zdmdIZWlnaHQrbytcInB4XCJ9dC5kb20uZWxXcmFwLnN0eWxlLndpZHRoPXQuc3ZnV2lkdGgrXCJweFwiLHQuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQ9dC5zdmdIZWlnaHQrXCJweFwifX0se2tleTpcInNoaWZ0R3JhcGhQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10LnRyYW5zbGF0ZVksaT17dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK3QudHJhbnNsYXRlWCtcIiwgXCIrZStcIilcIn07bS5zZXRBdHRycyh0LmRvbS5lbEdyYXBoaWNhbC5ub2RlLGkpfX0se2tleTpcInJlc2l6ZU5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPTAsYT10LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8xOjE1O2ErPXQuY29uZmlnLmdyaWQucGFkZGluZy5ib3R0b20sXCJ0b3BcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJib3R0b21cIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8IXQuY29uZmlnLmxlZ2VuZC5zaG93fHx0LmNvbmZpZy5sZWdlbmQuZmxvYXRpbmd8fChpPW5ldyBsdCh0aGlzLmN0eCkubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCkuY2x3aCsxMCk7dmFyIHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXJhZGlhbGJhciwgLmFwZXhjaGFydHMtcGllXCIpLHI9Mi4wNSp0Lmdsb2JhbHMucmFkaWFsU2l6ZTtpZihzJiYhdC5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQmJjAhPT10LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSl7dmFyIG89eC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qocyk7cj1vLmJvdHRvbTt2YXIgbj1vLmJvdHRvbS1vLnRvcDtyPU1hdGgubWF4KDIuMDUqdC5nbG9iYWxzLnJhZGlhbFNpemUsbil9dmFyIGw9citlLnRyYW5zbGF0ZVkraSthO2UuZG9tLmVsTGVnZW5kRm9yZWlnbiYmZS5kb20uZWxMZWdlbmRGb3JlaWduLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLGwpLHQuY29uZmlnLmNoYXJ0LmhlaWdodCYmU3RyaW5nKHQuY29uZmlnLmNoYXJ0LmhlaWdodCkuaW5kZXhPZihcIiVcIik+MHx8KGUuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQ9bCtcInB4XCIsbS5zZXRBdHRycyhlLmRvbS5QYXBlci5ub2RlLHtoZWlnaHQ6bH0pLGUuZG9tLlBhcGVyLm5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD1sK1wicHhcIil9fSx7a2V5OlwiY29yZUNhbGN1bGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7bmV3IFUodGhpcy5jdHgpLmluaXQoKX19LHtrZXk6XCJyZXNldEdsb2JhbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1mdW5jdGlvbigpe3JldHVybiB0LncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybltdfSkpfSxpPW5ldyBZLGE9dGhpcy53Lmdsb2JhbHM7aS5pbml0R2xvYmFsVmFycyhhKSxhLnNlcmllc1h2YWx1ZXM9ZSgpLGEuc2VyaWVzWXZhbHVlcz1lKCl9fSx7a2V5OlwiaXNNdWx0aXBsZVlcIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMudy5jb25maWcueWF4aXMuY29uc3RydWN0b3I9PT1BcnJheSYmdGhpcy53LmNvbmZpZy55YXhpcy5sZW5ndGg+MSlyZXR1cm4gdGhpcy53Lmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzPSEwLCEwfX0se2tleTpcInh5U2V0dGluZ3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW51bGwsZT10aGlzLnc7aWYoZS5nbG9iYWxzLmF4aXNDaGFydHMpe2lmKFwiYmFja1wiPT09ZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5wb3NpdGlvbiluZXcgUSh0aGlzLmN0eCkuZHJhd1hDcm9zc2hhaXJzKCk7aWYoXCJiYWNrXCI9PT1lLmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnBvc2l0aW9uKW5ldyBRKHRoaXMuY3R4KS5kcmF3WUNyb3NzaGFpcnMoKTtpZihcImRhdGV0aW1lXCI9PT1lLmNvbmZpZy54YXhpcy50eXBlJiZ2b2lkIDA9PT1lLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyKXt0aGlzLmN0eC50aW1lU2NhbGU9bmV3IE50KHRoaXMuY3R4KTt2YXIgaT1bXTtpc0Zpbml0ZShlLmdsb2JhbHMubWluWCkmJmlzRmluaXRlKGUuZ2xvYmFscy5tYXhYKSYmIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/aT10aGlzLmN0eC50aW1lU2NhbGUuY2FsY3VsYXRlVGltZVNjYWxlVGlja3MoZS5nbG9iYWxzLm1pblgsZS5nbG9iYWxzLm1heFgpOmUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihpPXRoaXMuY3R4LnRpbWVTY2FsZS5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyhlLmdsb2JhbHMubWluWSxlLmdsb2JhbHMubWF4WSkpLHRoaXMuY3R4LnRpbWVTY2FsZS5yZWNhbGNEaW1lbnNpb25zQmFzZWRPbkZvcm1hdChpKX10PW5ldyB5KHRoaXMuY3R4KS5nZXRDYWxjdWxhdGVkUmF0aW9zKCl9cmV0dXJuIHR9fSx7a2V5OlwidXBkYXRlU291cmNlQ2hhcnRcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN0eC53Lmdsb2JhbHMuc2VsZWN0aW9uPXZvaWQgMCx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHtjaGFydDp7c2VsZWN0aW9uOnt4YXhpczp7bWluOnQudy5nbG9iYWxzLm1pblgsbWF4OnQudy5nbG9iYWxzLm1heFh9fX19LCExLCExKX19LHtrZXk6XCJzZXR1cEJydXNoSGFuZGxlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxpPXRoaXMudztpZihpLmNvbmZpZy5jaGFydC5icnVzaC5lbmFibGVkJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKXt2YXIgYT1BcnJheS5pc0FycmF5KGkuY29uZmlnLmNoYXJ0LmJydXNoLnRhcmdldHMpfHxbaS5jb25maWcuY2hhcnQuYnJ1c2gudGFyZ2V0XTthLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBpPUFwZXhDaGFydHMuZ2V0Q2hhcnRCeUlEKGUpO2kudy5nbG9iYWxzLmJydXNoU291cmNlPXQuY3R4LFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCYmKGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZD1mdW5jdGlvbigpe3QudXBkYXRlU291cmNlQ2hhcnQoaSl9KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCYmKGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkPWZ1bmN0aW9uKCl7dC51cGRhdGVTb3VyY2VDaGFydChpKX0pfSkpLGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb249ZnVuY3Rpb24odCxzKXthLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBhPUFwZXhDaGFydHMuZ2V0Q2hhcnRCeUlEKHQpLHI9eC5jbG9uZShpLmNvbmZpZy55YXhpcyk7aWYoaS5jb25maWcuY2hhcnQuYnJ1c2guYXV0b1NjYWxlWWF4aXMmJjE9PT1hLncuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXt2YXIgbz1uZXcgXyhhKTtyPW8uYXV0b1NjYWxlWShhLHIscyl9dmFyIG49YS53LmNvbmZpZy55YXhpcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsaSxzKXtyZXR1cm5bXS5jb25jYXQodSh0KSxbZShlKHt9LGEudy5jb25maWcueWF4aXNbc10pLHt9LHttaW46clswXS5taW4sbWF4OnJbMF0ubWF4fSldKX0pLFtdKTthLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHt4YXhpczp7bWluOnMueGF4aXMubWluLG1heDpzLnhheGlzLm1heH0seWF4aXM6bn0sITEsITEsITEsITEpfSkpfX19fV0pLHR9KCksQnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcIl91cGRhdGVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0scz0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLHI9IShhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXSxvPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdJiZhcmd1bWVudHNbNF07cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXt2YXIgbD1bZS5jdHhdO3ImJihsPWUuY3R4LmdldFN5bmNlZENoYXJ0cygpKSxlLmN0eC53Lmdsb2JhbHMuaXNFeGVjQ2FsbGVkJiYobD1bZS5jdHhdLGUuY3R4LncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQ9ITEpLGwuZm9yRWFjaCgoZnVuY3Rpb24ocixoKXt2YXIgYz1yLnc7aWYoYy5nbG9iYWxzLnNob3VsZEFuaW1hdGU9cyxhfHwoYy5nbG9iYWxzLnJlc2l6ZWQ9ITAsYy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLHMmJnIuc2VyaWVzLmdldFByZXZpb3VzUGF0aHMoKSksdCYmXCJvYmplY3RcIj09PWkodCkmJihyLmNvbmZpZz1uZXcgRSh0KSx0PXkuZXh0ZW5kQXJyYXlQcm9wcyhyLmNvbmZpZyx0LGMpLHIudy5nbG9iYWxzLmNoYXJ0SUQhPT1lLmN0eC53Lmdsb2JhbHMuY2hhcnRJRCYmZGVsZXRlIHQuc2VyaWVzLGMuY29uZmlnPXguZXh0ZW5kKGMuY29uZmlnLHQpLG8mJihjLmdsb2JhbHMubGFzdFhBeGlzPXQueGF4aXM/eC5jbG9uZSh0LnhheGlzKTpbXSxjLmdsb2JhbHMubGFzdFlBeGlzPXQueWF4aXM/eC5jbG9uZSh0LnlheGlzKTpbXSxjLmdsb2JhbHMuaW5pdGlhbENvbmZpZz14LmV4dGVuZCh7fSxjLmNvbmZpZyksYy5nbG9iYWxzLmluaXRpYWxTZXJpZXM9eC5jbG9uZShjLmNvbmZpZy5zZXJpZXMpLHQuc2VyaWVzKSkpe2Zvcih2YXIgZD0wO2Q8Yy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO2QrKyl7dmFyIGc9Yy5jb25maWcuc2VyaWVzW2MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzW2RdXTtjLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW2RdLmRhdGE9Yy5nbG9iYWxzLmF4aXNDaGFydHM/Zy5kYXRhLnNsaWNlKCk6Z31mb3IodmFyIHU9MDt1PGMuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aDt1Kyspe3ZhciBwPWMuY29uZmlnLnNlcmllc1tjLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlc1t1XV07Yy5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc1t1XS5kYXRhPWMuZ2xvYmFscy5heGlzQ2hhcnRzP3AuZGF0YS5zbGljZSgpOnB9ci5zZXJpZXMuZW1wdHlDb2xsYXBzZWRTZXJpZXMoYy5jb25maWcuc2VyaWVzKX1yZXR1cm4gci51cGRhdGUodCkudGhlbigoZnVuY3Rpb24oKXtoPT09bC5sZW5ndGgtMSYmbihyKX0pKX0pKX0pKX19LHtrZXk6XCJfdXBkYXRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHMpe3ZhciByLG89aS53O3JldHVybiBvLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZT1lLG8uZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCxlJiZpLmN0eC5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpLG8uZ2xvYmFscy5heGlzQ2hhcnRzPygwPT09KHI9dC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2V4dGVuZFNlcmllcyh0LGUpfSkpKS5sZW5ndGgmJihyPVt7ZGF0YTpbXX1dKSxvLmNvbmZpZy5zZXJpZXM9cik6by5jb25maWcuc2VyaWVzPXQuc2xpY2UoKSxhJiYoby5nbG9iYWxzLmluaXRpYWxDb25maWcuc2VyaWVzPXguY2xvbmUoby5jb25maWcuc2VyaWVzKSxvLmdsb2JhbHMuaW5pdGlhbFNlcmllcz14LmNsb25lKG8uY29uZmlnLnNlcmllcykpLGkuY3R4LnVwZGF0ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7cyhpLmN0eCl9KSl9KSl9fSx7a2V5OlwiX2V4dGVuZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSl7dmFyIGE9dGhpcy53LHM9YS5jb25maWcuc2VyaWVzW2ldO3JldHVybiBlKGUoe30sYS5jb25maWcuc2VyaWVzW2ldKSx7fSx7bmFtZTp0Lm5hbWU/dC5uYW1lOm51bGw9PXM/dm9pZCAwOnMubmFtZSxjb2xvcjp0LmNvbG9yP3QuY29sb3I6bnVsbD09cz92b2lkIDA6cy5jb2xvcix0eXBlOnQudHlwZT90LnR5cGU6bnVsbD09cz92b2lkIDA6cy50eXBlLGdyb3VwOnQuZ3JvdXA/dC5ncm91cDpudWxsPT1zP3ZvaWQgMDpzLmdyb3VwLGRhdGE6dC5kYXRhP3QuZGF0YTpudWxsPT1zP3ZvaWQgMDpzLmRhdGEsekluZGV4OnZvaWQgMCE9PXQuekluZGV4P3QuekluZGV4Oml9KX19LHtrZXk6XCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW51bGwscz1cIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ11cIik7cmV0dXJuIGkuZ2xvYmFscy5heGlzQ2hhcnRzP2E9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCJcIi5jb25jYXQocyxcIiBwYXRoW2o9J1wiKS5jb25jYXQoZSxcIiddLCBcIikuY29uY2F0KHMsXCIgY2lyY2xlW2o9J1wiKS5jb25jYXQoZSxcIiddLCBcIikuY29uY2F0KHMsXCIgcmVjdFtqPSdcIikuY29uY2F0KGUsXCInXVwiKSkubWVtYmVyc1swXTp2b2lkIDA9PT1lJiYoYT1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIlwiLmNvbmNhdChzLFwiIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ11cIikpLm1lbWJlcnNbMF0sXCJwaWVcIiE9PWkuY29uZmlnLmNoYXJ0LnR5cGUmJlwicG9sYXJBcmVhXCIhPT1pLmNvbmZpZy5jaGFydC50eXBlJiZcImRvbnV0XCIhPT1pLmNvbmZpZy5jaGFydC50eXBlfHx0aGlzLmN0eC5waWUucGllQ2xpY2tlZCh0KSksYT8obmV3IG0odGhpcy5jdHgpLnBhdGhNb3VzZURvd24oYSxudWxsKSxhLm5vZGU/YS5ub2RlOm51bGwpOihjb25zb2xlLndhcm4oXCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb246IEVsZW1lbnQgbm90IGZvdW5kXCIpLG51bGwpfX0se2tleTpcImZvcmNlWEF4aXNVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7aWYoW1wibWluXCIsXCJtYXhcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7dm9pZCAwIT09dC54YXhpc1tpXSYmKGUuY29uZmlnLnhheGlzW2ldPXQueGF4aXNbaV0sZS5nbG9iYWxzLmxhc3RYQXhpc1tpXT10LnhheGlzW2ldKX0pKSx0LnhheGlzLmNhdGVnb3JpZXMmJnQueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgmJihlLmNvbmZpZy54YXhpcy5jYXRlZ29yaWVzPXQueGF4aXMuY2F0ZWdvcmllcyksZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKXt2YXIgaT1uZXcgWCh0KTt0PWkuY29udmVydENhdFRvTnVtZXJpY1hheGlzKHQsdGhpcy5jdHgpfXJldHVybiB0fX0se2tleTpcImZvcmNlWUF4aXNVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFydCYmdC5jaGFydC5zdGFja2VkJiZcIjEwMCVcIj09PXQuY2hhcnQuc3RhY2tUeXBlJiYoQXJyYXkuaXNBcnJheSh0LnlheGlzKT90LnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dC55YXhpc1tpXS5taW49MCx0LnlheGlzW2ldLm1heD0xMDB9KSk6KHQueWF4aXMubWluPTAsdC55YXhpcy5tYXg9MTAwKSksdH19LHtrZXk6XCJyZXZlcnREZWZhdWx0QXhpc01pbk1heFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1pLmdsb2JhbHMubGFzdFhBeGlzLHM9aS5nbG9iYWxzLmxhc3RZQXhpczt0JiZ0LnhheGlzJiYoYT10LnhheGlzKSx0JiZ0LnlheGlzJiYocz10LnlheGlzKSxpLmNvbmZpZy54YXhpcy5taW49YS5taW4saS5jb25maWcueGF4aXMubWF4PWEubWF4O3ZhciByPWZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXNbdF0mJihpLmNvbmZpZy55YXhpc1t0XS5taW49c1t0XS5taW4saS5jb25maWcueWF4aXNbdF0ubWF4PXNbdF0ubWF4KX07aS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LGEpe2kuZ2xvYmFscy56b29tZWR8fHZvaWQgMCE9PXNbYV0/cihhKTp2b2lkIDAhPT1lLmN0eC5vcHRzLnlheGlzW2FdJiYodC5taW49ZS5jdHgub3B0cy55YXhpc1thXS5taW4sdC5tYXg9ZS5jdHgub3B0cy55YXhpc1thXS5tYXgpfSkpfX1dKSx0fSgpO1J0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCxIdD1mdW5jdGlvbih0LGUpe3ZhciBhPSh2b2lkIDAhPT10aGlzP3RoaXM6dCkuU1ZHPWZ1bmN0aW9uKHQpe2lmKGEuc3VwcG9ydGVkKXJldHVybiB0PW5ldyBhLkRvYyh0KSxhLnBhcnNlci5kcmF3fHxhLnByZXBhcmUoKSx0fTtpZihhLm5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixhLnhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIixhLnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLGEuc3ZnanM9XCJodHRwOi8vc3ZnanMuZGV2XCIsYS5zdXBwb3J0ZWQ9ITAsIWEuc3VwcG9ydGVkKXJldHVybiExO2EuZGlkPTFlMyxhLmVpZD1mdW5jdGlvbih0KXtyZXR1cm5cIlN2Z2pzXCIrZCh0KSthLmRpZCsrfSxhLmNyZWF0ZT1mdW5jdGlvbih0KXt2YXIgaT1lLmNyZWF0ZUVsZW1lbnROUyh0aGlzLm5zLHQpO3JldHVybiBpLnNldEF0dHJpYnV0ZShcImlkXCIsdGhpcy5laWQodCkpLGl9LGEuZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIHQsZTtlPSh0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkucG9wKCk7Zm9yKHZhciBpPXQubGVuZ3RoLTE7aT49MDtpLS0paWYodFtpXSlmb3IodmFyIHMgaW4gZSl0W2ldLnByb3RvdHlwZVtzXT1lW3NdO2EuU2V0JiZhLlNldC5pbmhlcml0JiZhLlNldC5pbmhlcml0KCl9LGEuaW52ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY3JlYXRlP3QuY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUodC5jcmVhdGUpKX07cmV0dXJuIHQuaW5oZXJpdCYmKGUucHJvdG90eXBlPW5ldyB0LmluaGVyaXQpLHQuZXh0ZW5kJiZhLmV4dGVuZChlLHQuZXh0ZW5kKSx0LmNvbnN0cnVjdCYmYS5leHRlbmQodC5wYXJlbnR8fGEuQ29udGFpbmVyLHQuY29uc3RydWN0KSxlfSxhLmFkb3B0PWZ1bmN0aW9uKGUpe3JldHVybiBlP2UuaW5zdGFuY2U/ZS5pbnN0YW5jZTooKGk9XCJzdmdcIj09ZS5ub2RlTmFtZT9lLnBhcmVudE5vZGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnQ/bmV3IGEuTmVzdGVkOm5ldyBhLkRvYzpcImxpbmVhckdyYWRpZW50XCI9PWUubm9kZU5hbWU/bmV3IGEuR3JhZGllbnQoXCJsaW5lYXJcIik6XCJyYWRpYWxHcmFkaWVudFwiPT1lLm5vZGVOYW1lP25ldyBhLkdyYWRpZW50KFwicmFkaWFsXCIpOmFbZChlLm5vZGVOYW1lKV0/bmV3KGFbZChlLm5vZGVOYW1lKV0pOm5ldyBhLkVsZW1lbnQoZSkpLnR5cGU9ZS5ub2RlTmFtZSxpLm5vZGU9ZSxlLmluc3RhbmNlPWksaSBpbnN0YW5jZW9mIGEuRG9jJiZpLm5hbWVzcGFjZSgpLmRlZnMoKSxpLnNldERhdGEoSlNPTi5wYXJzZShlLmdldEF0dHJpYnV0ZShcInN2Z2pzOmRhdGFcIikpfHx7fSksaSk6bnVsbDt2YXIgaX0sYS5wcmVwYXJlPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0saT0odD9uZXcgYS5Eb2ModCk6YS5hZG9wdChlLmRvY3VtZW50RWxlbWVudCkubmVzdGVkKCkpLnNpemUoMiwwKTthLnBhcnNlcj17Ym9keTp0fHxlLmRvY3VtZW50RWxlbWVudCxkcmF3Omkuc3R5bGUoXCJvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTAwJTt0b3A6LTEwMCU7b3ZlcmZsb3c6aGlkZGVuXCIpLm5vZGUscG9seTppLnBvbHlsaW5lKCkubm9kZSxwYXRoOmkucGF0aCgpLm5vZGUsbmF0aXZlOmEuY3JlYXRlKFwic3ZnXCIpfX0sYS5wYXJzZXI9e25hdGl2ZTphLmNyZWF0ZShcInN2Z1wiKX0sZS5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLChmdW5jdGlvbigpe2EucGFyc2VyLmRyYXd8fGEucHJlcGFyZSgpfSksITEpLGEucmVnZXg9e251bWJlckFuZFVuaXQ6L14oWystXT8oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/KShbYS16JV0qKSQvaSxoZXg6L14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaSxyZ2I6L3JnYlxcKChcXGQrKSwoXFxkKyksKFxcZCspXFwpLyxyZWZlcmVuY2U6LyMoW2EtejAtOVxcLV9dKykvaSx0cmFuc2Zvcm1zOi9cXClcXHMqLD9cXHMqLyx3aGl0ZXNwYWNlOi9cXHMvZyxpc0hleDovXiNbYS1mMC05XXszLDZ9JC9pLGlzUmdiOi9ecmdiXFwoLyxpc0NzczovW146XSs6W147XSs7Py8saXNCbGFuazovXihcXHMrKT8kLyxpc051bWJlcjovXlsrLV0/KFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKGVbKy1dP1xcZCspPyQvaSxpc1BlcmNlbnQ6L14tP1tcXGRcXC5dKyUkLyxpc0ltYWdlOi9cXC4oanBnfGpwZWd8cG5nfGdpZnxzdmcpKFxcP1tePV0rLiopPy9pLGRlbGltaXRlcjovW1xccyxdKy8saHlwaGVuOi8oW15lXSlcXC0vZ2kscGF0aExldHRlcnM6L1tNTEhWQ1NRVEFaXS9naSxpc1BhdGhMZXR0ZXI6L1tNTEhWQ1NRVEFaXS9pLG51bWJlcnNXaXRoRG90czovKChcXGQ/XFwuXFxkKyg/OmVbKy1dP1xcZCspPykoKD86XFwuXFxkKyg/OmVbKy1dP1xcZCspPykrKSkrL2dpLGRvdHM6L1xcLi9nfSxhLnV0aWxzPXttYXA6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dC5sZW5ndGgsYT1bXSxzPTA7czxpO3MrKylhLnB1c2goZSh0W3NdKSk7cmV0dXJuIGF9LGZpbHRlcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10Lmxlbmd0aCxhPVtdLHM9MDtzPGk7cysrKWUodFtzXSkmJmEucHVzaCh0W3NdKTtyZXR1cm4gYX0sZmlsdGVyU1ZHRWxlbWVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZmlsdGVyKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgdC5TVkdFbGVtZW50fSkpfX0sYS5kZWZhdWx0cz17YXR0cnM6e1wiZmlsbC1vcGFjaXR5XCI6MSxcInN0cm9rZS1vcGFjaXR5XCI6MSxcInN0cm9rZS13aWR0aFwiOjAsXCJzdHJva2UtbGluZWpvaW5cIjpcIm1pdGVyXCIsXCJzdHJva2UtbGluZWNhcFwiOlwiYnV0dFwiLGZpbGw6XCIjMDAwMDAwXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLG9wYWNpdHk6MSx4OjAseTowLGN4OjAsY3k6MCx3aWR0aDowLGhlaWdodDowLHI6MCxyeDowLHJ5OjAsb2Zmc2V0OjAsXCJzdG9wLW9wYWNpdHlcIjoxLFwic3RvcC1jb2xvclwiOlwiIzAwMDAwMFwiLFwiZm9udC1zaXplXCI6MTYsXCJmb250LWZhbWlseVwiOlwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLFwidGV4dC1hbmNob3JcIjpcInN0YXJ0XCJ9fSxhLkNvbG9yPWZ1bmN0aW9uKHQpe3ZhciBlLHM7dGhpcy5yPTAsdGhpcy5nPTAsdGhpcy5iPTAsdCYmKFwic3RyaW5nXCI9PXR5cGVvZiB0P2EucmVnZXguaXNSZ2IudGVzdCh0KT8oZT1hLnJlZ2V4LnJnYi5leGVjKHQucmVwbGFjZShhLnJlZ2V4LndoaXRlc3BhY2UsXCJcIikpLHRoaXMucj1wYXJzZUludChlWzFdKSx0aGlzLmc9cGFyc2VJbnQoZVsyXSksdGhpcy5iPXBhcnNlSW50KGVbM10pKTphLnJlZ2V4LmlzSGV4LnRlc3QodCkmJihlPWEucmVnZXguaGV4LmV4ZWMoND09KHM9dCkubGVuZ3RoP1tcIiNcIixzLnN1YnN0cmluZygxLDIpLHMuc3Vic3RyaW5nKDEsMikscy5zdWJzdHJpbmcoMiwzKSxzLnN1YnN0cmluZygyLDMpLHMuc3Vic3RyaW5nKDMsNCkscy5zdWJzdHJpbmcoMyw0KV0uam9pbihcIlwiKTpzKSx0aGlzLnI9cGFyc2VJbnQoZVsxXSwxNiksdGhpcy5nPXBhcnNlSW50KGVbMl0sMTYpLHRoaXMuYj1wYXJzZUludChlWzNdLDE2KSk6XCJvYmplY3RcIj09PWkodCkmJih0aGlzLnI9dC5yLHRoaXMuZz10LmcsdGhpcy5iPXQuYikpfSxhLmV4dGVuZChhLkNvbG9yLHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvSGV4KCl9LHRvSGV4OmZ1bmN0aW9uKCl7cmV0dXJuXCIjXCIrZyh0aGlzLnIpK2codGhpcy5nKStnKHRoaXMuYil9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJuXCJyZ2IoXCIrW3RoaXMucix0aGlzLmcsdGhpcy5iXS5qb2luKCkrXCIpXCJ9LGJyaWdodG5lc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yLzI1NSouMyt0aGlzLmcvMjU1Ki41OSt0aGlzLmIvMjU1Ki4xMX0sbW9ycGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IGEuQ29sb3IodCksdGhpc30sYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/KHQ9dDwwPzA6dD4xPzE6dCxuZXcgYS5Db2xvcih7cjp+fih0aGlzLnIrKHRoaXMuZGVzdGluYXRpb24uci10aGlzLnIpKnQpLGc6fn4odGhpcy5nKyh0aGlzLmRlc3RpbmF0aW9uLmctdGhpcy5nKSp0KSxiOn5+KHRoaXMuYisodGhpcy5kZXN0aW5hdGlvbi5iLXRoaXMuYikqdCl9KSk6dGhpc319KSxhLkNvbG9yLnRlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQrPVwiXCIsYS5yZWdleC5pc0hleC50ZXN0KHQpfHxhLnJlZ2V4LmlzUmdiLnRlc3QodCl9LGEuQ29sb3IuaXNSZ2I9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwibnVtYmVyXCI9PXR5cGVvZiB0LnImJlwibnVtYmVyXCI9PXR5cGVvZiB0LmcmJlwibnVtYmVyXCI9PXR5cGVvZiB0LmJ9LGEuQ29sb3IuaXNDb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYS5Db2xvci5pc1JnYih0KXx8YS5Db2xvci50ZXN0KHQpfSxhLkFycmF5PWZ1bmN0aW9uKHQsZSl7MD09KHQ9KHR8fFtdKS52YWx1ZU9mKCkpLmxlbmd0aCYmZSYmKHQ9ZS52YWx1ZU9mKCkpLHRoaXMudmFsdWU9dGhpcy5wYXJzZSh0KX0sYS5leHRlbmQoYS5BcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5qb2luKFwiIFwiKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gdD10LnZhbHVlT2YoKSxBcnJheS5pc0FycmF5KHQpP3Q6dGhpcy5zcGxpdCh0KX19KSxhLlBvaW50QXJyYXk9ZnVuY3Rpb24odCxlKXthLkFycmF5LmNhbGwodGhpcyx0LGV8fFtbMCwwXV0pfSxhLlBvaW50QXJyYXkucHJvdG90eXBlPW5ldyBhLkFycmF5LGEuUG9pbnRBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5Qb2ludEFycmF5O2Zvcih2YXIgcz17TTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGUueD1pLng9dFswXSxlLnk9aS55PXRbMV0sW1wiTVwiLGUueCxlLnldfSxMOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzBdLGUueT10WzFdLFtcIkxcIix0WzBdLHRbMV1dfSxIOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzBdLFtcIkhcIix0WzBdXX0sVjpmdW5jdGlvbih0LGUpe3JldHVybiBlLnk9dFswXSxbXCJWXCIsdFswXV19LEM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbNF0sZS55PXRbNV0sW1wiQ1wiLHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdXX0sUTpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFsyXSxlLnk9dFszXSxbXCJRXCIsdFswXSx0WzFdLHRbMl0sdFszXV19LFM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMl0sZS55PXRbM10sW1wiU1wiLHRbMF0sdFsxXSx0WzJdLHRbM11dfSxaOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS54PWkueCxlLnk9aS55LFtcIlpcIl19fSxyPVwibWxodnF0Y3NhelwiLnNwbGl0KFwiXCIpLG89MCxuPXIubGVuZ3RoO288bjsrK28pc1tyW29dXT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxpLGEpe2lmKFwiSFwiPT10KWVbMF09ZVswXStpLng7ZWxzZSBpZihcIlZcIj09dCllWzBdPWVbMF0raS55O2Vsc2UgaWYoXCJBXCI9PXQpZVs1XT1lWzVdK2kueCxlWzZdPWVbNl0raS55O2Vsc2UgZm9yKHZhciByPTAsbz1lLmxlbmd0aDtyPG87KytyKWVbcl09ZVtyXSsociUyP2kueTppLngpO2lmKHMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHNbdF0pcmV0dXJuIHNbdF0oZSxpLGEpfX0ocltvXS50b1VwcGVyQ2FzZSgpKTthLlBhdGhBcnJheT1mdW5jdGlvbih0LGUpe2EuQXJyYXkuY2FsbCh0aGlzLHQsZXx8W1tcIk1cIiwwLDBdXSl9LGEuUGF0aEFycmF5LnByb3RvdHlwZT1uZXcgYS5BcnJheSxhLlBhdGhBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5QYXRoQXJyYXksYS5leHRlbmQoYS5QYXRoQXJyYXkse3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLGk9dC5sZW5ndGgsYT1cIlwiO2U8aTtlKyspYSs9dFtlXVswXSxudWxsIT10W2VdWzFdJiYoYSs9dFtlXVsxXSxudWxsIT10W2VdWzJdJiYoYSs9XCIgXCIsYSs9dFtlXVsyXSxudWxsIT10W2VdWzNdJiYoYSs9XCIgXCIsYSs9dFtlXVszXSxhKz1cIiBcIixhKz10W2VdWzRdLG51bGwhPXRbZV1bNV0mJihhKz1cIiBcIixhKz10W2VdWzVdLGErPVwiIFwiLGErPXRbZV1bNl0sbnVsbCE9dFtlXVs3XSYmKGErPVwiIFwiLGErPXRbZV1bN10pKSkpKTtyZXR1cm4gYStcIiBcIn0odGhpcy52YWx1ZSl9LG1vdmU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmJib3goKTtyZXR1cm4gaS54LGkueSx0aGlzfSxhdDpmdW5jdGlvbih0KXtpZighdGhpcy5kZXN0aW5hdGlvbilyZXR1cm4gdGhpcztmb3IodmFyIGU9dGhpcy52YWx1ZSxpPXRoaXMuZGVzdGluYXRpb24udmFsdWUscz1bXSxyPW5ldyBhLlBhdGhBcnJheSxvPTAsbj1lLmxlbmd0aDtvPG47bysrKXtzW29dPVtlW29dWzBdXTtmb3IodmFyIGw9MSxoPWVbb10ubGVuZ3RoO2w8aDtsKyspc1tvXVtsXT1lW29dW2xdKyhpW29dW2xdLWVbb11bbF0pKnQ7XCJBXCI9PT1zW29dWzBdJiYoc1tvXVs0XT0rKDAhPXNbb11bNF0pLHNbb11bNV09KygwIT1zW29dWzVdKSl9cmV0dXJuIHIudmFsdWU9cyxyfSxwYXJzZTpmdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgYS5QYXRoQXJyYXkpcmV0dXJuIHQudmFsdWVPZigpO3ZhciBlLGk9e006MixMOjIsSDoxLFY6MSxDOjYsUzo0LFE6NCxUOjIsQTo3LFo6MH07dD1cInN0cmluZ1wiPT10eXBlb2YgdD90LnJlcGxhY2UoYS5yZWdleC5udW1iZXJzV2l0aERvdHMsaCkucmVwbGFjZShhLnJlZ2V4LnBhdGhMZXR0ZXJzLFwiICQmIFwiKS5yZXBsYWNlKGEucmVnZXguaHlwaGVuLFwiJDEgLVwiKS50cmltKCkuc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpOnQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybltdLmNvbmNhdC5jYWxsKHQsZSl9KSxbXSk7dmFyIHI9W10sbz1uZXcgYS5Qb2ludCxuPW5ldyBhLlBvaW50LGw9MCxjPXQubGVuZ3RoO2Rve2EucmVnZXguaXNQYXRoTGV0dGVyLnRlc3QodFtsXSk/KGU9dFtsXSwrK2wpOlwiTVwiPT1lP2U9XCJMXCI6XCJtXCI9PWUmJihlPVwibFwiKSxyLnB1c2goc1tlXS5jYWxsKG51bGwsdC5zbGljZShsLGwrPWlbZS50b1VwcGVyQ2FzZSgpXSkubWFwKHBhcnNlRmxvYXQpLG8sbikpfXdoaWxlKGM+bCk7cmV0dXJuIHJ9LGJib3g6ZnVuY3Rpb24oKXtyZXR1cm4gYS5wYXJzZXIuZHJhd3x8YS5wcmVwYXJlKCksYS5wYXJzZXIucGF0aC5zZXRBdHRyaWJ1dGUoXCJkXCIsdGhpcy50b1N0cmluZygpKSxhLnBhcnNlci5wYXRoLmdldEJCb3goKX19KSxhLk51bWJlcj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dGhpcy52YWx1ZT0wLHRoaXMudW5pdD1lfHxcIlwiLFwibnVtYmVyXCI9PXR5cGVvZiB0P3RoaXMudmFsdWU9aXNOYU4odCk/MDppc0Zpbml0ZSh0KT90OnQ8MD8tMzRlMzc6MzRlMzc6XCJzdHJpbmdcIj09dHlwZW9mIHQ/KGU9dC5tYXRjaChhLnJlZ2V4Lm51bWJlckFuZFVuaXQpKSYmKHRoaXMudmFsdWU9cGFyc2VGbG9hdChlWzFdKSxcIiVcIj09ZVs1XT90aGlzLnZhbHVlLz0xMDA6XCJzXCI9PWVbNV0mJih0aGlzLnZhbHVlKj0xZTMpLHRoaXMudW5pdD1lWzVdKTp0IGluc3RhbmNlb2YgYS5OdW1iZXImJih0aGlzLnZhbHVlPXQudmFsdWVPZigpLHRoaXMudW5pdD10LnVuaXQpfSxleHRlbmQ6e3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuKFwiJVwiPT10aGlzLnVuaXQ/fn4oMWU4KnRoaXMudmFsdWUpLzFlNjpcInNcIj09dGhpcy51bml0P3RoaXMudmFsdWUvMWUzOnRoaXMudmFsdWUpK3RoaXMudW5pdH0sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxwbHVzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBhLk51bWJlcih0KSxuZXcgYS5OdW1iZXIodGhpcyt0LHRoaXMudW5pdHx8dC51bml0KX0sbWludXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IGEuTnVtYmVyKHQpLG5ldyBhLk51bWJlcih0aGlzLXQsdGhpcy51bml0fHx0LnVuaXQpfSx0aW1lczpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgYS5OdW1iZXIodCksbmV3IGEuTnVtYmVyKHRoaXMqdCx0aGlzLnVuaXR8fHQudW5pdCl9LGRpdmlkZTpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgYS5OdW1iZXIodCksbmV3IGEuTnVtYmVyKHRoaXMvdCx0aGlzLnVuaXR8fHQudW5pdCl9LHRvOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBhLk51bWJlcih0aGlzKTtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdCYmKGUudW5pdD10KSxlfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5OdW1iZXIodCksdC5yZWxhdGl2ZSYmKHRoaXMuZGVzdGluYXRpb24udmFsdWUrPXRoaXMudmFsdWUpLHRoaXN9LGF0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uP25ldyBhLk51bWJlcih0aGlzLmRlc3RpbmF0aW9uKS5taW51cyh0aGlzKS50aW1lcyh0KS5wbHVzKHRoaXMpOnRoaXN9fX0pLGEuRWxlbWVudD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX3N0cm9rZT1hLmRlZmF1bHRzLmF0dHJzLnN0cm9rZSx0aGlzLl9ldmVudD1udWxsLHRoaXMuZG9tPXt9LCh0aGlzLm5vZGU9dCkmJih0aGlzLnR5cGU9dC5ub2RlTmFtZSx0aGlzLm5vZGUuaW5zdGFuY2U9dGhpcyx0aGlzLl9zdHJva2U9dC5nZXRBdHRyaWJ1dGUoXCJzdHJva2VcIil8fHRoaXMuX3N0cm9rZSl9LGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwieFwiLHQpfSx5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ5XCIsdCl9LGN4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMueCgpK3RoaXMud2lkdGgoKS8yOnRoaXMueCh0LXRoaXMud2lkdGgoKS8yKX0sY3k6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy55KCkrdGhpcy5oZWlnaHQoKS8yOnRoaXMueSh0LXRoaXMuaGVpZ2h0KCkvMil9LG1vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy54KHQpLnkoZSl9LGNlbnRlcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmN4KHQpLmN5KGUpfSx3aWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwid2lkdGhcIix0KX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJoZWlnaHRcIix0KX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLndpZHRoKG5ldyBhLk51bWJlcihpLndpZHRoKSkuaGVpZ2h0KG5ldyBhLk51bWJlcihpLmhlaWdodCkpfSxjbG9uZTpmdW5jdGlvbih0KXt0aGlzLndyaXRlRGF0YVRvRG9tKCk7dmFyIGU9eCh0aGlzLm5vZGUuY2xvbmVOb2RlKCEwKSk7cmV0dXJuIHQ/dC5hZGQoZSk6dGhpcy5hZnRlcihlKSxlfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5yZW1vdmVFbGVtZW50KHRoaXMpLHRoaXN9LHJlcGxhY2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWZ0ZXIodCkucmVtb3ZlKCksdH0sYWRkVG86ZnVuY3Rpb24odCl7cmV0dXJuIHQucHV0KHRoaXMpfSxwdXRJbjpmdW5jdGlvbih0KXtyZXR1cm4gdC5hZGQodGhpcyl9LGlkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJpZFwiLHQpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3R5bGUoXCJkaXNwbGF5XCIsXCJcIil9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZShcImRpc3BsYXlcIixcIm5vbmVcIil9LHZpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm5cIm5vbmVcIiE9dGhpcy5zdHlsZShcImRpc3BsYXlcIil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cihcImlkXCIpfSxjbGFzc2VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hdHRyKFwiY2xhc3NcIik7cmV0dXJuIG51bGw9PXQ/W106dC50cmltKCkuc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpfSxoYXNDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4tMSE9dGhpcy5jbGFzc2VzKCkuaW5kZXhPZih0KX0sYWRkQ2xhc3M6ZnVuY3Rpb24odCl7aWYoIXRoaXMuaGFzQ2xhc3ModCkpe3ZhciBlPXRoaXMuY2xhc3NlcygpO2UucHVzaCh0KSx0aGlzLmF0dHIoXCJjbGFzc1wiLGUuam9pbihcIiBcIikpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNDbGFzcyh0KSYmdGhpcy5hdHRyKFwiY2xhc3NcIix0aGlzLmNsYXNzZXMoKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlIT10fSkpLmpvaW4oXCIgXCIpKSx0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNDbGFzcyh0KT90aGlzLnJlbW92ZUNsYXNzKHQpOnRoaXMuYWRkQ2xhc3ModCl9LHJlZmVyZW5jZTpmdW5jdGlvbih0KXtyZXR1cm4gYS5nZXQodGhpcy5hdHRyKHQpKX0scGFyZW50OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXM7aWYoIWkubm9kZS5wYXJlbnROb2RlKXJldHVybiBudWxsO2lmKGk9YS5hZG9wdChpLm5vZGUucGFyZW50Tm9kZSksIWUpcmV0dXJuIGk7Zm9yKDtpJiZpLm5vZGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnQ7KXtpZihcInN0cmluZ1wiPT10eXBlb2YgZT9pLm1hdGNoZXMoZSk6aSBpbnN0YW5jZW9mIGUpcmV0dXJuIGk7aWYoIWkubm9kZS5wYXJlbnROb2RlfHxcIiNkb2N1bWVudFwiPT1pLm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZSlyZXR1cm4gbnVsbDtpPWEuYWRvcHQoaS5ub2RlLnBhcmVudE5vZGUpfX0sZG9jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhLkRvYz90aGlzOnRoaXMucGFyZW50KGEuRG9jKX0scGFyZW50czpmdW5jdGlvbih0KXt2YXIgZT1bXSxpPXRoaXM7ZG97aWYoIShpPWkucGFyZW50KHQpKXx8IWkubm9kZSlicmVhaztlLnB1c2goaSl9d2hpbGUoaS5wYXJlbnQpO3JldHVybiBlfSxtYXRjaGVzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybih0Lm1hdGNoZXN8fHQubWF0Y2hlc1NlbGVjdG9yfHx0Lm1zTWF0Y2hlc1NlbGVjdG9yfHx0Lm1vek1hdGNoZXNTZWxlY3Rvcnx8dC53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fHQub01hdGNoZXNTZWxlY3RvcikuY2FsbCh0LGUpfSh0aGlzLm5vZGUsdCl9LG5hdGl2ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9LHN2ZzpmdW5jdGlvbih0KXt2YXIgaT1lLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIik7aWYoISh0JiZ0aGlzIGluc3RhbmNlb2YgYS5QYXJlbnQpKXJldHVybiBpLmFwcGVuZENoaWxkKHQ9ZS5jcmVhdGVFbGVtZW50KFwic3ZnXCIpKSx0aGlzLndyaXRlRGF0YVRvRG9tKCksdC5hcHBlbmRDaGlsZCh0aGlzLm5vZGUuY2xvbmVOb2RlKCEwKSksaS5pbm5lckhUTUwucmVwbGFjZSgvXjxzdmc+LyxcIlwiKS5yZXBsYWNlKC88XFwvc3ZnPiQvLFwiXCIpO2kuaW5uZXJIVE1MPVwiPHN2Zz5cIit0LnJlcGxhY2UoL1xcbi8sXCJcIikucmVwbGFjZSgvPChbXFx3Oi1dKykoW148XSs/KVxcLz4vZyxcIjwkMSQyPjwvJDE+XCIpK1wiPC9zdmc+XCI7Zm9yKHZhciBzPTAscj1pLmZpcnN0Q2hpbGQuY2hpbGROb2Rlcy5sZW5ndGg7czxyO3MrKyl0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoaS5maXJzdENoaWxkLmZpcnN0Q2hpbGQpO3JldHVybiB0aGlzfSx3cml0ZURhdGFUb0RvbTpmdW5jdGlvbigpe3JldHVybih0aGlzLmVhY2h8fHRoaXMubGluZXMpJiYodGhpcy5lYWNoP3RoaXM6dGhpcy5saW5lcygpKS5lYWNoKChmdW5jdGlvbigpe3RoaXMud3JpdGVEYXRhVG9Eb20oKX0pKSx0aGlzLm5vZGUucmVtb3ZlQXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiKSxPYmplY3Qua2V5cyh0aGlzLmRvbSkubGVuZ3RoJiZ0aGlzLm5vZGUuc2V0QXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiLEpTT04uc3RyaW5naWZ5KHRoaXMuZG9tKSksdGhpc30sc2V0RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb209dCx0aGlzfSxpczpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV9KHRoaXMsdCl9fX0pLGEuZWFzaW5nPXtcIi1cIjpmdW5jdGlvbih0KXtyZXR1cm4gdH0sXCI8PlwiOmZ1bmN0aW9uKHQpe3JldHVybi1NYXRoLmNvcyh0Kk1hdGguUEkpLzIrLjV9LFwiPlwiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNpbih0Kk1hdGguUEkvMil9LFwiPFwiOmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGguY29zKHQqTWF0aC5QSS8yKX19LGEubW9ycGg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSl7cmV0dXJuIG5ldyBhLk1vcnBoT2JqKGUsaSkuYXQodCl9fSxhLlNpdHVhdGlvbj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuaW5pdD0hMSx0aGlzLnJldmVyc2VkPSExLHRoaXMucmV2ZXJzaW5nPSExLHRoaXMuZHVyYXRpb249bmV3IGEuTnVtYmVyKHQuZHVyYXRpb24pLnZhbHVlT2YoKSx0aGlzLmRlbGF5PW5ldyBhLk51bWJlcih0LmRlbGF5KS52YWx1ZU9mKCksdGhpcy5zdGFydD0rbmV3IERhdGUrdGhpcy5kZWxheSx0aGlzLmZpbmlzaD10aGlzLnN0YXJ0K3RoaXMuZHVyYXRpb24sdGhpcy5lYXNlPXQuZWFzZSx0aGlzLmxvb3A9MCx0aGlzLmxvb3BzPSExLHRoaXMuYW5pbWF0aW9ucz17fSx0aGlzLmF0dHJzPXt9LHRoaXMuc3R5bGVzPXt9LHRoaXMudHJhbnNmb3Jtcz1bXSx0aGlzLm9uY2U9e319fSksYS5GWD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX3RhcmdldD10LHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzLmFjdGl2ZT0hMSx0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXMucGF1c2VkPSExLHRoaXMubGFzdFBvcz0wLHRoaXMucG9zPTAsdGhpcy5hYnNQb3M9MCx0aGlzLl9zcGVlZD0xfSxleHRlbmQ6e2FuaW1hdGU6ZnVuY3Rpb24odCxlLHMpe1wib2JqZWN0XCI9PT1pKHQpJiYoZT10LmVhc2Uscz10LmRlbGF5LHQ9dC5kdXJhdGlvbik7dmFyIHI9bmV3IGEuU2l0dWF0aW9uKHtkdXJhdGlvbjp0fHwxZTMsZGVsYXk6c3x8MCxlYXNlOmEuZWFzaW5nW2V8fFwiLVwiXXx8ZX0pO3JldHVybiB0aGlzLnF1ZXVlKHIpLHRoaXN9LHRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdCBpbnN0YW5jZW9mIGEuRWxlbWVudD8odGhpcy5fdGFyZ2V0PXQsdGhpcyk6dGhpcy5fdGFyZ2V0fSx0aW1lVG9BYnNQb3M6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy5zaXR1YXRpb24uc3RhcnQpLyh0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCl9LGFic1Bvc1RvVGltZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQqdCt0aGlzLnNpdHVhdGlvbi5zdGFydH0sc3RhcnRBbmltRnJhbWU6ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLmFuaW1hdGlvbkZyYW1lPXQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7dGhpcy5zdGVwKCl9LmJpbmQodGhpcykpfSxzdG9wQW5pbUZyYW1lOmZ1bmN0aW9uKCl7dC5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lKX0sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5hY3RpdmUmJnRoaXMuc2l0dWF0aW9uJiYodGhpcy5hY3RpdmU9ITAsdGhpcy5zdGFydEN1cnJlbnQoKSksdGhpc30sc3RhcnRDdXJyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9uLnN0YXJ0PStuZXcgRGF0ZSt0aGlzLnNpdHVhdGlvbi5kZWxheS90aGlzLl9zcGVlZCx0aGlzLnNpdHVhdGlvbi5maW5pc2g9dGhpcy5zaXR1YXRpb24uc3RhcnQrdGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQsdGhpcy5pbml0QW5pbWF0aW9ucygpLnN0ZXAoKX0scXVldWU6ZnVuY3Rpb24odCl7cmV0dXJuKFwiZnVuY3Rpb25cIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBhLlNpdHVhdGlvbikmJnRoaXMuc2l0dWF0aW9ucy5wdXNoKHQpLHRoaXMuc2l0dWF0aW9ufHwodGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCkpLHRoaXN9LGRlcXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9wKCksdGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCksdGhpcy5zaXR1YXRpb24mJih0aGlzLnNpdHVhdGlvbiBpbnN0YW5jZW9mIGEuU2l0dWF0aW9uP3RoaXMuc3RhcnQoKTp0aGlzLnNpdHVhdGlvbi5jYWxsKHRoaXMpKSx0aGlzfSxpbml0QW5pbWF0aW9uczpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5zaXR1YXRpb247aWYoZS5pbml0KXJldHVybiB0aGlzO2Zvcih2YXIgaSBpbiBlLmFuaW1hdGlvbnMpe3Q9dGhpcy50YXJnZXQoKVtpXSgpLEFycmF5LmlzQXJyYXkodCl8fCh0PVt0XSksQXJyYXkuaXNBcnJheShlLmFuaW1hdGlvbnNbaV0pfHwoZS5hbmltYXRpb25zW2ldPVtlLmFuaW1hdGlvbnNbaV1dKTtmb3IodmFyIHM9dC5sZW5ndGg7cy0tOyllLmFuaW1hdGlvbnNbaV1bc11pbnN0YW5jZW9mIGEuTnVtYmVyJiYodFtzXT1uZXcgYS5OdW1iZXIodFtzXSkpLGUuYW5pbWF0aW9uc1tpXVtzXT10W3NdLm1vcnBoKGUuYW5pbWF0aW9uc1tpXVtzXSl9Zm9yKHZhciBpIGluIGUuYXR0cnMpZS5hdHRyc1tpXT1uZXcgYS5Nb3JwaE9iaih0aGlzLnRhcmdldCgpLmF0dHIoaSksZS5hdHRyc1tpXSk7Zm9yKHZhciBpIGluIGUuc3R5bGVzKWUuc3R5bGVzW2ldPW5ldyBhLk1vcnBoT2JqKHRoaXMudGFyZ2V0KCkuc3R5bGUoaSksZS5zdHlsZXNbaV0pO3JldHVybiBlLmluaXRpYWxUcmFuc2Zvcm1hdGlvbj10aGlzLnRhcmdldCgpLm1hdHJpeGlmeSgpLGUuaW5pdD0hMCx0aGlzfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzfSxjbGVhckN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb249bnVsbCx0aGlzfSxzdG9wOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5hY3RpdmU7cmV0dXJuIHRoaXMuYWN0aXZlPSExLGUmJnRoaXMuY2xlYXJRdWV1ZSgpLHQmJnRoaXMuc2l0dWF0aW9uJiYoIWkmJnRoaXMuc3RhcnRDdXJyZW50KCksdGhpcy5hdEVuZCgpKSx0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLmNsZWFyQ3VycmVudCgpfSxhZnRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3QoKTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vbihcImZpbmlzaGVkLmZ4XCIsKGZ1bmN0aW9uIGkoYSl7YS5kZXRhaWwuc2l0dWF0aW9uPT1lJiYodC5jYWxsKHRoaXMsZSksdGhpcy5vZmYoXCJmaW5pc2hlZC5meFwiLGkpKX0pKSx0aGlzLl9jYWxsU3RhcnQoKX0sZHVyaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGFzdCgpLGk9ZnVuY3Rpb24oaSl7aS5kZXRhaWwuc2l0dWF0aW9uPT1lJiZ0LmNhbGwodGhpcyxpLmRldGFpbC5wb3MsYS5tb3JwaChpLmRldGFpbC5wb3MpLGkuZGV0YWlsLmVhc2VkLGUpfTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vZmYoXCJkdXJpbmcuZnhcIixpKS5vbihcImR1cmluZy5meFwiLGkpLHRoaXMuYWZ0ZXIoKGZ1bmN0aW9uKCl7dGhpcy5vZmYoXCJkdXJpbmcuZnhcIixpKX0pKSx0aGlzLl9jYWxsU3RhcnQoKX0sYWZ0ZXJBbGw6ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24gZShpKXt0LmNhbGwodGhpcyksdGhpcy5vZmYoXCJhbGxmaW5pc2hlZC5meFwiLGUpfTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vZmYoXCJhbGxmaW5pc2hlZC5meFwiLGUpLm9uKFwiYWxsZmluaXNoZWQuZnhcIixlKSx0aGlzLl9jYWxsU3RhcnQoKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpdHVhdGlvbnMubGVuZ3RoP3RoaXMuc2l0dWF0aW9uc1t0aGlzLnNpdHVhdGlvbnMubGVuZ3RoLTFdOnRoaXMuc2l0dWF0aW9ufSxhZGQ6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmxhc3QoKVtpfHxcImFuaW1hdGlvbnNcIl1bdF09ZSx0aGlzLl9jYWxsU3RhcnQoKX0sc3RlcDpmdW5jdGlvbih0KXt2YXIgZSxpLGE7dHx8KHRoaXMuYWJzUG9zPXRoaXMudGltZVRvQWJzUG9zKCtuZXcgRGF0ZSkpLCExIT09dGhpcy5zaXR1YXRpb24ubG9vcHM/KGU9TWF0aC5tYXgodGhpcy5hYnNQb3MsMCksaT1NYXRoLmZsb29yKGUpLCEwPT09dGhpcy5zaXR1YXRpb24ubG9vcHN8fGk8dGhpcy5zaXR1YXRpb24ubG9vcHM/KHRoaXMucG9zPWUtaSxhPXRoaXMuc2l0dWF0aW9uLmxvb3AsdGhpcy5zaXR1YXRpb24ubG9vcD1pKToodGhpcy5hYnNQb3M9dGhpcy5zaXR1YXRpb24ubG9vcHMsdGhpcy5wb3M9MSxhPXRoaXMuc2l0dWF0aW9uLmxvb3AtMSx0aGlzLnNpdHVhdGlvbi5sb29wPXRoaXMuc2l0dWF0aW9uLmxvb3BzKSx0aGlzLnNpdHVhdGlvbi5yZXZlcnNpbmcmJih0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZD10aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCE9Qm9vbGVhbigodGhpcy5zaXR1YXRpb24ubG9vcC1hKSUyKSkpOih0aGlzLmFic1Bvcz1NYXRoLm1pbih0aGlzLmFic1BvcywxKSx0aGlzLnBvcz10aGlzLmFic1BvcyksdGhpcy5wb3M8MCYmKHRoaXMucG9zPTApLHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiYodGhpcy5wb3M9MS10aGlzLnBvcyk7dmFyIHM9dGhpcy5zaXR1YXRpb24uZWFzZSh0aGlzLnBvcyk7Zm9yKHZhciByIGluIHRoaXMuc2l0dWF0aW9uLm9uY2Upcj50aGlzLmxhc3RQb3MmJnI8PXMmJih0aGlzLnNpdHVhdGlvbi5vbmNlW3JdLmNhbGwodGhpcy50YXJnZXQoKSx0aGlzLnBvcyxzKSxkZWxldGUgdGhpcy5zaXR1YXRpb24ub25jZVtyXSk7cmV0dXJuIHRoaXMuYWN0aXZlJiZ0aGlzLnRhcmdldCgpLmZpcmUoXCJkdXJpbmdcIix7cG9zOnRoaXMucG9zLGVhc2VkOnMsZng6dGhpcyxzaXR1YXRpb246dGhpcy5zaXR1YXRpb259KSx0aGlzLnNpdHVhdGlvbj8odGhpcy5lYWNoQXQoKSwxPT10aGlzLnBvcyYmIXRoaXMuc2l0dWF0aW9uLnJldmVyc2VkfHx0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCYmMD09dGhpcy5wb3M/KHRoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMudGFyZ2V0KCkuZmlyZShcImZpbmlzaGVkXCIse2Z4OnRoaXMsc2l0dWF0aW9uOnRoaXMuc2l0dWF0aW9ufSksdGhpcy5zaXR1YXRpb25zLmxlbmd0aHx8KHRoaXMudGFyZ2V0KCkuZmlyZShcImFsbGZpbmlzaGVkXCIpLHRoaXMuc2l0dWF0aW9ucy5sZW5ndGh8fCh0aGlzLnRhcmdldCgpLm9mZihcIi5meFwiKSx0aGlzLmFjdGl2ZT0hMSkpLHRoaXMuYWN0aXZlP3RoaXMuZGVxdWV1ZSgpOnRoaXMuY2xlYXJDdXJyZW50KCkpOiF0aGlzLnBhdXNlZCYmdGhpcy5hY3RpdmUmJnRoaXMuc3RhcnRBbmltRnJhbWUoKSx0aGlzLmxhc3RQb3M9cyx0aGlzKTp0aGlzfSxlYWNoQXQ6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsaT10aGlzLnRhcmdldCgpLHM9dGhpcy5zaXR1YXRpb247Zm9yKHZhciByIGluIHMuYW5pbWF0aW9ucyl0PVtdLmNvbmNhdChzLmFuaW1hdGlvbnNbcl0pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIHQmJnQuYXQ/dC5hdChzLmVhc2UoZS5wb3MpLGUucG9zKTp0fSkpLGlbcl0uYXBwbHkoaSx0KTtmb3IodmFyIHIgaW4gcy5hdHRycyl0PVtyXS5jb25jYXQocy5hdHRyc1tyXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmdC5hdD90LmF0KHMuZWFzZShlLnBvcyksZS5wb3MpOnR9KSksaS5hdHRyLmFwcGx5KGksdCk7Zm9yKHZhciByIGluIHMuc3R5bGVzKXQ9W3JdLmNvbmNhdChzLnN0eWxlc1tyXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmdC5hdD90LmF0KHMuZWFzZShlLnBvcyksZS5wb3MpOnR9KSksaS5zdHlsZS5hcHBseShpLHQpO2lmKHMudHJhbnNmb3Jtcy5sZW5ndGgpe3Q9cy5pbml0aWFsVHJhbnNmb3JtYXRpb24scj0wO2Zvcih2YXIgbz1zLnRyYW5zZm9ybXMubGVuZ3RoO3I8bztyKyspe3ZhciBuPXMudHJhbnNmb3Jtc1tyXTtuIGluc3RhbmNlb2YgYS5NYXRyaXg/dD1uLnJlbGF0aXZlP3QubXVsdGlwbHkoKG5ldyBhLk1hdHJpeCkubW9ycGgobikuYXQocy5lYXNlKHRoaXMucG9zKSkpOnQubW9ycGgobikuYXQocy5lYXNlKHRoaXMucG9zKSk6KG4ucmVsYXRpdmV8fG4udW5kbyh0LmV4dHJhY3QoKSksdD10Lm11bHRpcGx5KG4uYXQocy5lYXNlKHRoaXMucG9zKSkpKX1pLm1hdHJpeCh0KX1yZXR1cm4gdGhpc30sb25jZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy5sYXN0KCk7cmV0dXJuIGl8fCh0PWEuZWFzZSh0KSksYS5vbmNlW3RdPWUsdGhpc30sX2NhbGxTdGFydDpmdW5jdGlvbigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5zdGFydCgpfS5iaW5kKHRoaXMpLDApLHRoaXN9fSxwYXJlbnQ6YS5FbGVtZW50LGNvbnN0cnVjdDp7YW5pbWF0ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuKHRoaXMuZnh8fCh0aGlzLmZ4PW5ldyBhLkZYKHRoaXMpKSkuYW5pbWF0ZSh0LGUsaSl9LGRlbGF5OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLmZ4fHwodGhpcy5meD1uZXcgYS5GWCh0aGlzKSkpLmRlbGF5KHQpfSxzdG9wOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZngmJnRoaXMuZnguc3RvcCh0LGUpLHRoaXN9LGZpbmlzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZ4JiZ0aGlzLmZ4LmZpbmlzaCgpLHRoaXN9fX0pLGEuTW9ycGhPYmo9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiBhLkNvbG9yLmlzQ29sb3IoZSk/bmV3IGEuQ29sb3IodCkubW9ycGgoZSk6YS5yZWdleC5kZWxpbWl0ZXIudGVzdCh0KT9hLnJlZ2V4LnBhdGhMZXR0ZXJzLnRlc3QodCk/bmV3IGEuUGF0aEFycmF5KHQpLm1vcnBoKGUpOm5ldyBhLkFycmF5KHQpLm1vcnBoKGUpOmEucmVnZXgubnVtYmVyQW5kVW5pdC50ZXN0KGUpP25ldyBhLk51bWJlcih0KS5tb3JwaChlKToodGhpcy52YWx1ZT10LHZvaWQodGhpcy5kZXN0aW5hdGlvbj1lKSl9LGV4dGVuZDp7YXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZTwxP3RoaXMudmFsdWU6dGhpcy5kZXN0aW5hdGlvbn0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfX19KSxhLmV4dGVuZChhLkZYLHthdHRyOmZ1bmN0aW9uKHQsZSxhKXtpZihcIm9iamVjdFwiPT09aSh0KSlmb3IodmFyIHMgaW4gdCl0aGlzLmF0dHIocyx0W3NdKTtlbHNlIHRoaXMuYWRkKHQsZSxcImF0dHJzXCIpO3JldHVybiB0aGlzfSxwbG90OmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiA0PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMucGxvdChbdCxlLGksYV0pOnRoaXMuYWRkKFwicGxvdFwiLG5ldyh0aGlzLnRhcmdldCgpLm1vcnBoQXJyYXkpKHQpKX19KSxhLkJveD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSxzLHIpe2lmKCEoXCJvYmplY3RcIiE9PWkodCl8fHQgaW5zdGFuY2VvZiBhLkVsZW1lbnQpKXJldHVybiBhLkJveC5jYWxsKHRoaXMsbnVsbCE9dC5sZWZ0P3QubGVmdDp0LngsbnVsbCE9dC50b3A/dC50b3A6dC55LHQud2lkdGgsdC5oZWlnaHQpO3ZhciBvOzQ9PWFyZ3VtZW50cy5sZW5ndGgmJih0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLndpZHRoPXMsdGhpcy5oZWlnaHQ9ciksbnVsbD09KG89dGhpcykueCYmKG8ueD0wLG8ueT0wLG8ud2lkdGg9MCxvLmhlaWdodD0wKSxvLnc9by53aWR0aCxvLmg9by5oZWlnaHQsby54Mj1vLngrby53aWR0aCxvLnkyPW8ueStvLmhlaWdodCxvLmN4PW8ueCtvLndpZHRoLzIsby5jeT1vLnkrby5oZWlnaHQvMn19KSxhLkJCb3g9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXtpZihhLkJveC5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSksdCBpbnN0YW5jZW9mIGEuRWxlbWVudCl7dmFyIGk7dHJ5e2lmKCFlLmRvY3VtZW50RWxlbWVudC5jb250YWlucyl7Zm9yKHZhciBzPXQubm9kZTtzLnBhcmVudE5vZGU7KXM9cy5wYXJlbnROb2RlO2lmKHMhPWUpdGhyb3cgbmV3IEVycm9yKFwiRWxlbWVudCBub3QgaW4gdGhlIGRvbVwiKX1pPXQubm9kZS5nZXRCQm94KCl9Y2F0Y2goZSl7aWYodCBpbnN0YW5jZW9mIGEuU2hhcGUpe2EucGFyc2VyLmRyYXd8fGEucHJlcGFyZSgpO3ZhciByPXQuY2xvbmUoYS5wYXJzZXIuZHJhdy5pbnN0YW5jZSkuc2hvdygpO3ImJnIubm9kZSYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5ub2RlLmdldEJCb3gmJihpPXIubm9kZS5nZXRCQm94KCkpLHImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHIucmVtb3ZlJiZyLnJlbW92ZSgpfWVsc2UgaT17eDp0Lm5vZGUuY2xpZW50TGVmdCx5OnQubm9kZS5jbGllbnRUb3Asd2lkdGg6dC5ub2RlLmNsaWVudFdpZHRoLGhlaWdodDp0Lm5vZGUuY2xpZW50SGVpZ2h0fX1hLkJveC5jYWxsKHRoaXMsaSl9fSxpbmhlcml0OmEuQm94LHBhcmVudDphLkVsZW1lbnQsY29uc3RydWN0OntiYm94OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLkJCb3godGhpcyl9fX0pLGEuQkJveC5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5CQm94LGEuTWF0cml4PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dmFyIGU9ZihbMSwwLDAsMSwwLDBdKTt0PW51bGw9PT10P2U6dCBpbnN0YW5jZW9mIGEuRWxlbWVudD90Lm1hdHJpeGlmeSgpOlwic3RyaW5nXCI9PXR5cGVvZiB0P2YodC5zcGxpdChhLnJlZ2V4LmRlbGltaXRlcikubWFwKHBhcnNlRmxvYXQpKTo2PT1hcmd1bWVudHMubGVuZ3RoP2YoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTpBcnJheS5pc0FycmF5KHQpP2YodCk6dCYmXCJvYmplY3RcIj09PWkodCk/dDplO2Zvcih2YXIgcz12Lmxlbmd0aC0xO3M+PTA7LS1zKXRoaXNbdltzXV09bnVsbCE9dFt2W3NdXT90W3Zbc11dOmVbdltzXV19LGV4dGVuZDp7ZXh0cmFjdDpmdW5jdGlvbigpe3ZhciB0PXAodGhpcywwLDEpO3AodGhpcywxLDApO3ZhciBlPTE4MC9NYXRoLlBJKk1hdGguYXRhbjIodC55LHQueCktOTA7cmV0dXJue3g6dGhpcy5lLHk6dGhpcy5mLHRyYW5zZm9ybWVkWDoodGhpcy5lKk1hdGguY29zKGUqTWF0aC5QSS8xODApK3RoaXMuZipNYXRoLnNpbihlKk1hdGguUEkvMTgwKSkvTWF0aC5zcXJ0KHRoaXMuYSp0aGlzLmErdGhpcy5iKnRoaXMuYiksdHJhbnNmb3JtZWRZOih0aGlzLmYqTWF0aC5jb3MoZSpNYXRoLlBJLzE4MCkrdGhpcy5lKk1hdGguc2luKC1lKk1hdGguUEkvMTgwKSkvTWF0aC5zcXJ0KHRoaXMuYyp0aGlzLmMrdGhpcy5kKnRoaXMuZCkscm90YXRpb246ZSxhOnRoaXMuYSxiOnRoaXMuYixjOnRoaXMuYyxkOnRoaXMuZCxlOnRoaXMuZSxmOnRoaXMuZixtYXRyaXg6bmV3IGEuTWF0cml4KHRoaXMpfX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMpfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5NYXRyaXgodCksdGhpc30sbXVsdGlwbHk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5hdGl2ZSgpLm11bHRpcGx5KGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgYS5NYXRyaXh8fCh0PW5ldyBhLk1hdHJpeCh0KSksdH0odCkubmF0aXZlKCkpKX0saW52ZXJzZTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcy5uYXRpdmUoKS5pbnZlcnNlKCkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubmF0aXZlKCkudHJhbnNsYXRlKHR8fDAsZXx8MCkpfSxuYXRpdmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YS5wYXJzZXIubmF0aXZlLmNyZWF0ZVNWR01hdHJpeCgpLGU9di5sZW5ndGgtMTtlPj0wO2UtLSl0W3ZbZV1dPXRoaXNbdltlXV07cmV0dXJuIHR9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuXCJtYXRyaXgoXCIrYih0aGlzLmEpK1wiLFwiK2IodGhpcy5iKStcIixcIitiKHRoaXMuYykrXCIsXCIrYih0aGlzLmQpK1wiLFwiK2IodGhpcy5lKStcIixcIitiKHRoaXMuZikrXCIpXCJ9fSxwYXJlbnQ6YS5FbGVtZW50LGNvbnN0cnVjdDp7Y3RtOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5vZGUuZ2V0Q1RNKCkpfSxzY3JlZW5DVE06ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgYS5OZXN0ZWQpe3ZhciB0PXRoaXMucmVjdCgxLDEpLGU9dC5ub2RlLmdldFNjcmVlbkNUTSgpO3JldHVybiB0LnJlbW92ZSgpLG5ldyBhLk1hdHJpeChlKX1yZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubm9kZS5nZXRTY3JlZW5DVE0oKSl9fX0pLGEuUG9pbnQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe3ZhciBhO2E9QXJyYXkuaXNBcnJheSh0KT97eDp0WzBdLHk6dFsxXX06XCJvYmplY3RcIj09PWkodCk/e3g6dC54LHk6dC55fTpudWxsIT10P3t4OnQseTpudWxsIT1lP2U6dH06e3g6MCx5OjB9LHRoaXMueD1hLngsdGhpcy55PWEueX0sZXh0ZW5kOntjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5Qb2ludCh0aGlzKX0sbW9ycGg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5Qb2ludCh0LGUpLHRoaXN9fX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7cG9pbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGEuUG9pbnQodCxlKS50cmFuc2Zvcm0odGhpcy5zY3JlZW5DVE0oKS5pbnZlcnNlKCkpfX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7YXR0cjpmdW5jdGlvbih0LGUscyl7aWYobnVsbD09dCl7Zm9yKHQ9e30scz0oZT10aGlzLm5vZGUuYXR0cmlidXRlcykubGVuZ3RoLTE7cz49MDtzLS0pdFtlW3NdLm5vZGVOYW1lXT1hLnJlZ2V4LmlzTnVtYmVyLnRlc3QoZVtzXS5ub2RlVmFsdWUpP3BhcnNlRmxvYXQoZVtzXS5ub2RlVmFsdWUpOmVbc10ubm9kZVZhbHVlO3JldHVybiB0fWlmKFwib2JqZWN0XCI9PT1pKHQpKWZvcih2YXIgciBpbiB0KXRoaXMuYXR0cihyLHRbcl0pO2Vsc2UgaWYobnVsbD09PWUpdGhpcy5ub2RlLnJlbW92ZUF0dHJpYnV0ZSh0KTtlbHNle2lmKG51bGw9PWUpcmV0dXJuIG51bGw9PShlPXRoaXMubm9kZS5nZXRBdHRyaWJ1dGUodCkpP2EuZGVmYXVsdHMuYXR0cnNbdF06YS5yZWdleC5pc051bWJlci50ZXN0KGUpP3BhcnNlRmxvYXQoZSk6ZTtcInN0cm9rZS13aWR0aFwiPT10P3RoaXMuYXR0cihcInN0cm9rZVwiLHBhcnNlRmxvYXQoZSk+MD90aGlzLl9zdHJva2U6bnVsbCk6XCJzdHJva2VcIj09dCYmKHRoaXMuX3N0cm9rZT1lKSxcImZpbGxcIiE9dCYmXCJzdHJva2VcIiE9dHx8KGEucmVnZXguaXNJbWFnZS50ZXN0KGUpJiYoZT10aGlzLmRvYygpLmRlZnMoKS5pbWFnZShlLDAsMCkpLGUgaW5zdGFuY2VvZiBhLkltYWdlJiYoZT10aGlzLmRvYygpLmRlZnMoKS5wYXR0ZXJuKDAsMCwoZnVuY3Rpb24oKXt0aGlzLmFkZChlKX0pKSkpLFwibnVtYmVyXCI9PXR5cGVvZiBlP2U9bmV3IGEuTnVtYmVyKGUpOmEuQ29sb3IuaXNDb2xvcihlKT9lPW5ldyBhLkNvbG9yKGUpOkFycmF5LmlzQXJyYXkoZSkmJihlPW5ldyBhLkFycmF5KGUpKSxcImxlYWRpbmdcIj09dD90aGlzLmxlYWRpbmcmJnRoaXMubGVhZGluZyhlKTpcInN0cmluZ1wiPT10eXBlb2Ygcz90aGlzLm5vZGUuc2V0QXR0cmlidXRlTlMocyx0LGUudG9TdHJpbmcoKSk6dGhpcy5ub2RlLnNldEF0dHJpYnV0ZSh0LGUudG9TdHJpbmcoKSksIXRoaXMucmVidWlsZHx8XCJmb250LXNpemVcIiE9dCYmXCJ4XCIhPXR8fHRoaXMucmVidWlsZCh0LGUpfXJldHVybiB0aGlzfX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7dHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7dmFyIHM7cmV0dXJuXCJvYmplY3RcIiE9PWkodCk/KHM9bmV3IGEuTWF0cml4KHRoaXMpLmV4dHJhY3QoKSxcInN0cmluZ1wiPT10eXBlb2YgdD9zW3RdOnMpOihzPW5ldyBhLk1hdHJpeCh0aGlzKSxlPSEhZXx8ISF0LnJlbGF0aXZlLG51bGwhPXQuYSYmKHM9ZT9zLm11bHRpcGx5KG5ldyBhLk1hdHJpeCh0KSk6bmV3IGEuTWF0cml4KHQpKSx0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIixzKSl9fSksYS5leHRlbmQoYS5FbGVtZW50LHt1bnRyYW5zZm9ybTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIixudWxsKX0sbWF0cml4aWZ5OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuYXR0cihcInRyYW5zZm9ybVwiKXx8XCJcIikuc3BsaXQoYS5yZWdleC50cmFuc2Zvcm1zKS5zbGljZSgwLC0xKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXQudHJpbSgpLnNwbGl0KFwiKFwiKTtyZXR1cm5bZVswXSxlWzFdLnNwbGl0KGEucmVnZXguZGVsaW1pdGVyKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfSkpXX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJtYXRyaXhcIj09ZVswXT90Lm11bHRpcGx5KGYoZVsxXSkpOnRbZVswXV0uYXBwbHkodCxlWzFdKX0pLG5ldyBhLk1hdHJpeCl9LHRvUGFyZW50OmZ1bmN0aW9uKHQpe2lmKHRoaXM9PXQpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5zY3JlZW5DVE0oKSxpPXQuc2NyZWVuQ1RNKCkuaW52ZXJzZSgpO3JldHVybiB0aGlzLmFkZFRvKHQpLnVudHJhbnNmb3JtKCkudHJhbnNmb3JtKGkubXVsdGlwbHkoZSkpLHRoaXN9LHRvRG9jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9QYXJlbnQodGhpcy5kb2MoKSl9fSksYS5UcmFuc2Zvcm1hdGlvbj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiZcImJvb2xlYW5cIiE9dHlwZW9mIGUpcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGE9MCxzPXRoaXMuYXJndW1lbnRzLmxlbmd0aDthPHM7KythKXRoaXNbdGhpcy5hcmd1bWVudHNbYV1dPXRbYV07ZWxzZSBpZih0JiZcIm9iamVjdFwiPT09aSh0KSlmb3IoYT0wLHM9dGhpcy5hcmd1bWVudHMubGVuZ3RoO2E8czsrK2EpdGhpc1t0aGlzLmFyZ3VtZW50c1thXV09dFt0aGlzLmFyZ3VtZW50c1thXV07dGhpcy5pbnZlcnNlZD0hMSwhMD09PWUmJih0aGlzLmludmVyc2VkPSEwKX19KSxhLlRyYW5zbGF0ZT1hLmludmVudCh7cGFyZW50OmEuTWF0cml4LGluaGVyaXQ6YS5UcmFuc2Zvcm1hdGlvbixjcmVhdGU6ZnVuY3Rpb24odCxlKXt0aGlzLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX0sZXh0ZW5kOnthcmd1bWVudHM6W1widHJhbnNmb3JtZWRYXCIsXCJ0cmFuc2Zvcm1lZFlcIl0sbWV0aG9kOlwidHJhbnNsYXRlXCJ9fSksYS5leHRlbmQoYS5FbGVtZW50LHtzdHlsZTpmdW5jdGlvbih0LGUpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMubm9kZS5zdHlsZS5jc3NUZXh0fHxcIlwiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilpZihcIm9iamVjdFwiPT09aSh0KSlmb3IodmFyIHMgaW4gdCl0aGlzLnN0eWxlKHMsdFtzXSk7ZWxzZXtpZighYS5yZWdleC5pc0Nzcy50ZXN0KHQpKXJldHVybiB0aGlzLm5vZGUuc3R5bGVbYyh0KV07Zm9yKHQ9dC5zcGxpdCgvXFxzKjtcXHMqLykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hIXR9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgvXFxzKjpcXHMqLyl9KSk7ZT10LnBvcCgpOyl0aGlzLnN0eWxlKGVbMF0sZVsxXSl9ZWxzZSB0aGlzLm5vZGUuc3R5bGVbYyh0KV09bnVsbD09PWV8fGEucmVnZXguaXNCbGFuay50ZXN0KGUpP1wiXCI6ZTtyZXR1cm4gdGhpc319KSxhLlBhcmVudD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpfSxpbmhlcml0OmEuRWxlbWVudCxleHRlbmQ6e2NoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuIGEudXRpbHMubWFwKGEudXRpbHMuZmlsdGVyU1ZHRWxlbWVudHModGhpcy5ub2RlLmNoaWxkTm9kZXMpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5hZG9wdCh0KX0pKX0sYWRkOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/dGhpcy5ub2RlLmFwcGVuZENoaWxkKHQubm9kZSk6dC5ub2RlIT10aGlzLm5vZGUuY2hpbGROb2Rlc1tlXSYmdGhpcy5ub2RlLmluc2VydEJlZm9yZSh0Lm5vZGUsdGhpcy5ub2RlLmNoaWxkTm9kZXNbZV0pLHRoaXN9LHB1dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFkZCh0LGUpLHR9LGhhczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbmRleCh0KT49MH0saW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuW10uc2xpY2UuY2FsbCh0aGlzLm5vZGUuY2hpbGROb2RlcykuaW5kZXhPZih0Lm5vZGUpfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGEuYWRvcHQodGhpcy5ub2RlLmNoaWxkTm9kZXNbdF0pfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCh0aGlzLm5vZGUuY2hpbGROb2Rlcy5sZW5ndGgtMSl9LGVhY2g6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcy5jaGlsZHJlbigpLHM9MCxyPWkubGVuZ3RoO3M8cjtzKyspaVtzXWluc3RhbmNlb2YgYS5FbGVtZW50JiZ0LmFwcGx5KGlbc10sW3MsaV0pLGUmJmlbc11pbnN0YW5jZW9mIGEuQ29udGFpbmVyJiZpW3NdLmVhY2godCxlKTtyZXR1cm4gdGhpc30scmVtb3ZlRWxlbWVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHQubm9kZSksdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtmb3IoO3RoaXMubm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMubm9kZS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUubGFzdENoaWxkKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2RlZnMsdGhpc30sZGVmczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvYygpLmRlZnMoKX19fSksYS5leHRlbmQoYS5QYXJlbnQse3VuZ3JvdXA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PWV8fHRoaXMgaW5zdGFuY2VvZiBhLkRlZnN8fHRoaXMubm9kZT09YS5wYXJzZXIuZHJhd3x8KHQ9dHx8KHRoaXMgaW5zdGFuY2VvZiBhLkRvYz90aGlzOnRoaXMucGFyZW50KGEuUGFyZW50KSksZT1lfHwxLzAsdGhpcy5lYWNoKChmdW5jdGlvbigpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYS5EZWZzP3RoaXM6dGhpcyBpbnN0YW5jZW9mIGEuUGFyZW50P3RoaXMudW5ncm91cCh0LGUtMSk6dGhpcy50b1BhcmVudCh0KX0pKSx0aGlzLm5vZGUuZmlyc3RDaGlsZHx8dGhpcy5yZW1vdmUoKSksdGhpc30sZmxhdHRlbjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnVuZ3JvdXAodCxlKX19KSxhLkNvbnRhaW5lcj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpfSxpbmhlcml0OmEuUGFyZW50fSksYS5WaWV3Qm94PWEuaW52ZW50KHtwYXJlbnQ6YS5Db250YWluZXIsY29uc3RydWN0Ont9fSksW1wiY2xpY2tcIixcImRibGNsaWNrXCIsXCJtb3VzZWRvd25cIixcIm1vdXNldXBcIixcIm1vdXNlb3ZlclwiLFwibW91c2VvdXRcIixcIm1vdXNlbW92ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJ0b3VjaGxlYXZlXCIsXCJ0b3VjaGVuZFwiLFwidG91Y2hjYW5jZWxcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5FbGVtZW50LnByb3RvdHlwZVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gYS5vbih0aGlzLm5vZGUsdCxlKSx0aGlzfX0pKSxhLmxpc3RlbmVycz1bXSxhLmhhbmRsZXJNYXA9W10sYS5saXN0ZW5lcklkPTAsYS5vbj1mdW5jdGlvbih0LGUsaSxzLHIpe3ZhciBvPWkuYmluZChzfHx0Lmluc3RhbmNlfHx0KSxuPShhLmhhbmRsZXJNYXAuaW5kZXhPZih0KSsxfHxhLmhhbmRsZXJNYXAucHVzaCh0KSktMSxsPWUuc3BsaXQoXCIuXCIpWzBdLGg9ZS5zcGxpdChcIi5cIilbMV18fFwiKlwiO2EubGlzdGVuZXJzW25dPWEubGlzdGVuZXJzW25dfHx7fSxhLmxpc3RlbmVyc1tuXVtsXT1hLmxpc3RlbmVyc1tuXVtsXXx8e30sYS5saXN0ZW5lcnNbbl1bbF1baF09YS5saXN0ZW5lcnNbbl1bbF1baF18fHt9LGkuX3N2Z2pzTGlzdGVuZXJJZHx8KGkuX3N2Z2pzTGlzdGVuZXJJZD0rK2EubGlzdGVuZXJJZCksYS5saXN0ZW5lcnNbbl1bbF1baF1baS5fc3ZnanNMaXN0ZW5lcklkXT1vLHQuYWRkRXZlbnRMaXN0ZW5lcihsLG8scnx8e3Bhc3NpdmU6ITB9KX0sYS5vZmY9ZnVuY3Rpb24odCxlLGkpe3ZhciBzPWEuaGFuZGxlck1hcC5pbmRleE9mKHQpLHI9ZSYmZS5zcGxpdChcIi5cIilbMF0sbz1lJiZlLnNwbGl0KFwiLlwiKVsxXSxuPVwiXCI7aWYoLTEhPXMpaWYoaSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaSYmKGk9aS5fc3ZnanNMaXN0ZW5lcklkKSwhaSlyZXR1cm47YS5saXN0ZW5lcnNbc11bcl0mJmEubGlzdGVuZXJzW3NdW3JdW298fFwiKlwiXSYmKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLGEubGlzdGVuZXJzW3NdW3JdW298fFwiKlwiXVtpXSwhMSksZGVsZXRlIGEubGlzdGVuZXJzW3NdW3JdW298fFwiKlwiXVtpXSl9ZWxzZSBpZihvJiZyKXtpZihhLmxpc3RlbmVyc1tzXVtyXSYmYS5saXN0ZW5lcnNbc11bcl1bb10pe2Zvcih2YXIgbCBpbiBhLmxpc3RlbmVyc1tzXVtyXVtvXSlhLm9mZih0LFtyLG9dLmpvaW4oXCIuXCIpLGwpO2RlbGV0ZSBhLmxpc3RlbmVyc1tzXVtyXVtvXX19ZWxzZSBpZihvKWZvcih2YXIgaCBpbiBhLmxpc3RlbmVyc1tzXSlmb3IodmFyIG4gaW4gYS5saXN0ZW5lcnNbc11baF0pbz09PW4mJmEub2ZmKHQsW2gsb10uam9pbihcIi5cIikpO2Vsc2UgaWYocil7aWYoYS5saXN0ZW5lcnNbc11bcl0pe2Zvcih2YXIgbiBpbiBhLmxpc3RlbmVyc1tzXVtyXSlhLm9mZih0LFtyLG5dLmpvaW4oXCIuXCIpKTtkZWxldGUgYS5saXN0ZW5lcnNbc11bcl19fWVsc2V7Zm9yKHZhciBoIGluIGEubGlzdGVuZXJzW3NdKWEub2ZmKHQsaCk7ZGVsZXRlIGEubGlzdGVuZXJzW3NdLGRlbGV0ZSBhLmhhbmRsZXJNYXBbc119fSxhLmV4dGVuZChhLkVsZW1lbnQse29uOmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiBhLm9uKHRoaXMubm9kZSx0LGUsaSxzKSx0aGlzfSxvZmY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYS5vZmYodGhpcy5ub2RlLHQsZSksdGhpc30sZmlyZTpmdW5jdGlvbihlLGkpe3JldHVybiBlIGluc3RhbmNlb2YgdC5FdmVudD90aGlzLm5vZGUuZGlzcGF0Y2hFdmVudChlKTp0aGlzLm5vZGUuZGlzcGF0Y2hFdmVudChlPW5ldyBhLkN1c3RvbUV2ZW50KGUse2RldGFpbDppLGNhbmNlbGFibGU6ITB9KSksdGhpcy5fZXZlbnQ9ZSx0aGlzfSxldmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudH19KSxhLkRlZnM9YS5pbnZlbnQoe2NyZWF0ZTpcImRlZnNcIixpbmhlcml0OmEuQ29udGFpbmVyfSksYS5HPWEuaW52ZW50KHtjcmVhdGU6XCJnXCIsaW5oZXJpdDphLkNvbnRhaW5lcixleHRlbmQ6e3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy50cmFuc2Zvcm0oXCJ4XCIpOnRoaXMudHJhbnNmb3JtKHt4OnQtdGhpcy54KCl9LCEwKX19LGNvbnN0cnVjdDp7Z3JvdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuRyl9fX0pLGEuRG9jPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dCYmKFwic3ZnXCI9PSh0PVwic3RyaW5nXCI9PXR5cGVvZiB0P2UuZ2V0RWxlbWVudEJ5SWQodCk6dCkubm9kZU5hbWU/dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCk6KHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKFwic3ZnXCIpKSx0LmFwcGVuZENoaWxkKHRoaXMubm9kZSksdGhpcy5zaXplKFwiMTAwJVwiLFwiMTAwJVwiKSksdGhpcy5uYW1lc3BhY2UoKS5kZWZzKCkpfSxpbmhlcml0OmEuQ29udGFpbmVyLGV4dGVuZDp7bmFtZXNwYWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cih7eG1sbnM6YS5ucyx2ZXJzaW9uOlwiMS4xXCJ9KS5hdHRyKFwieG1sbnM6eGxpbmtcIixhLnhsaW5rLGEueG1sbnMpLmF0dHIoXCJ4bWxuczpzdmdqc1wiLGEuc3ZnanMsYS54bWxucyl9LGRlZnM6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdGhpcy5fZGVmc3x8KCh0PXRoaXMubm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImRlZnNcIilbMF0pP3RoaXMuX2RlZnM9YS5hZG9wdCh0KTp0aGlzLl9kZWZzPW5ldyBhLkRlZnMsdGhpcy5ub2RlLmFwcGVuZENoaWxkKHRoaXMuX2RlZnMubm9kZSkpLHRoaXMuX2RlZnN9LHBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUucGFyZW50Tm9kZSYmXCIjZG9jdW1lbnRcIiE9dGhpcy5ub2RlLnBhcmVudE5vZGUubm9kZU5hbWU/dGhpcy5ub2RlLnBhcmVudE5vZGU6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkucmVtb3ZlQ2hpbGQodGhpcy5ub2RlKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe2Zvcig7dGhpcy5ub2RlLmhhc0NoaWxkTm9kZXMoKTspdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHRoaXMubm9kZS5sYXN0Q2hpbGQpO3JldHVybiBkZWxldGUgdGhpcy5fZGVmcyxhLnBhcnNlci5kcmF3JiYhYS5wYXJzZXIuZHJhdy5wYXJlbnROb2RlJiZ0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoYS5wYXJzZXIuZHJhdyksdGhpc30sY2xvbmU6ZnVuY3Rpb24odCl7dGhpcy53cml0ZURhdGFUb0RvbSgpO3ZhciBlPXRoaXMubm9kZSxpPXgoZS5jbG9uZU5vZGUoITApKTtyZXR1cm4gdD8odC5ub2RlfHx0KS5hcHBlbmRDaGlsZChpLm5vZGUpOmUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaS5ub2RlLGUubmV4dFNpYmxpbmcpLGl9fX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7fSksYS5HcmFkaWVudD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKHQrXCJHcmFkaWVudFwiKSksdGhpcy50eXBlPXR9LGluaGVyaXQ6YS5Db250YWluZXIsZXh0ZW5kOnthdDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlN0b3ApLnVwZGF0ZSh0LGUsaSl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbGVhcigpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbCh0aGlzLHRoaXMpLHRoaXN9LGZpbGw6ZnVuY3Rpb24oKXtyZXR1cm5cInVybCgjXCIrdGhpcy5pZCgpK1wiKVwifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwoKX0sYXR0cjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuXCJ0cmFuc2Zvcm1cIj09dCYmKHQ9XCJncmFkaWVudFRyYW5zZm9ybVwiKSxhLkNvbnRhaW5lci5wcm90b3R5cGUuYXR0ci5jYWxsKHRoaXMsdCxlLGkpfX0sY29uc3RydWN0OntncmFkaWVudDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRlZnMoKS5ncmFkaWVudCh0LGUpfX19KSxhLmV4dGVuZChhLkdyYWRpZW50LGEuRlgse2Zyb206ZnVuY3Rpb24odCxlKXtyZXR1cm5cInJhZGlhbFwiPT0odGhpcy5fdGFyZ2V0fHx0aGlzKS50eXBlP3RoaXMuYXR0cih7Zng6bmV3IGEuTnVtYmVyKHQpLGZ5Om5ldyBhLk51bWJlcihlKX0pOnRoaXMuYXR0cih7eDE6bmV3IGEuTnVtYmVyKHQpLHkxOm5ldyBhLk51bWJlcihlKX0pfSx0bzpmdW5jdGlvbih0LGUpe3JldHVyblwicmFkaWFsXCI9PSh0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU/dGhpcy5hdHRyKHtjeDpuZXcgYS5OdW1iZXIodCksY3k6bmV3IGEuTnVtYmVyKGUpfSk6dGhpcy5hdHRyKHt4MjpuZXcgYS5OdW1iZXIodCkseTI6bmV3IGEuTnVtYmVyKGUpfSl9fSksYS5leHRlbmQoYS5EZWZzLHtncmFkaWVudDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgYS5HcmFkaWVudCh0KSkudXBkYXRlKGUpfX0pLGEuU3RvcD1hLmludmVudCh7Y3JlYXRlOlwic3RvcFwiLGluaGVyaXQ6YS5FbGVtZW50LGV4dGVuZDp7dXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybihcIm51bWJlclwiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGEuTnVtYmVyKSYmKHQ9e29mZnNldDphcmd1bWVudHNbMF0sY29sb3I6YXJndW1lbnRzWzFdLG9wYWNpdHk6YXJndW1lbnRzWzJdfSksbnVsbCE9dC5vcGFjaXR5JiZ0aGlzLmF0dHIoXCJzdG9wLW9wYWNpdHlcIix0Lm9wYWNpdHkpLG51bGwhPXQuY29sb3ImJnRoaXMuYXR0cihcInN0b3AtY29sb3JcIix0LmNvbG9yKSxudWxsIT10Lm9mZnNldCYmdGhpcy5hdHRyKFwib2Zmc2V0XCIsbmV3IGEuTnVtYmVyKHQub2Zmc2V0KSksdGhpc319fSksYS5QYXR0ZXJuPWEuaW52ZW50KHtjcmVhdGU6XCJwYXR0ZXJuXCIsaW5oZXJpdDphLkNvbnRhaW5lcixleHRlbmQ6e2ZpbGw6ZnVuY3Rpb24oKXtyZXR1cm5cInVybCgjXCIrdGhpcy5pZCgpK1wiKVwifSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xlYXIoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0LmNhbGwodGhpcyx0aGlzKSx0aGlzfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwoKX0sYXR0cjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuXCJ0cmFuc2Zvcm1cIj09dCYmKHQ9XCJwYXR0ZXJuVHJhbnNmb3JtXCIpLGEuQ29udGFpbmVyLnByb3RvdHlwZS5hdHRyLmNhbGwodGhpcyx0LGUsaSl9fSxjb25zdHJ1Y3Q6e3BhdHRlcm46ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmRlZnMoKS5wYXR0ZXJuKHQsZSxpKX19fSksYS5leHRlbmQoYS5EZWZzLHtwYXR0ZXJuOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUGF0dGVybikudXBkYXRlKGkpLmF0dHIoe3g6MCx5OjAsd2lkdGg6dCxoZWlnaHQ6ZSxwYXR0ZXJuVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwifSl9fSksYS5TaGFwZT1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpfSxpbmhlcml0OmEuRWxlbWVudH0pLGEuU3ltYm9sPWEuaW52ZW50KHtjcmVhdGU6XCJzeW1ib2xcIixpbmhlcml0OmEuQ29udGFpbmVyLGNvbnN0cnVjdDp7c3ltYm9sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlN5bWJvbCl9fX0pLGEuVXNlPWEuaW52ZW50KHtjcmVhdGU6XCJ1c2VcIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOntlbGVtZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cihcImhyZWZcIiwoZXx8XCJcIikrXCIjXCIrdCxhLnhsaW5rKX19LGNvbnN0cnVjdDp7dXNlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlVzZSkuZWxlbWVudCh0LGUpfX19KSxhLlJlY3Q9YS5pbnZlbnQoe2NyZWF0ZTpcInJlY3RcIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0OntyZWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlJlY3QpLnNpemUodCxlKX19fSksYS5DaXJjbGU9YS5pbnZlbnQoe2NyZWF0ZTpcImNpcmNsZVwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e2NpcmNsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuQ2lyY2xlKS5yeChuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKS5tb3ZlKDAsMCl9fX0pLGEuZXh0ZW5kKGEuQ2lyY2xlLGEuRlgse3J4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJyXCIsdCl9LHJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJ4KHQpfX0pLGEuRWxsaXBzZT1hLmludmVudCh7Y3JlYXRlOlwiZWxsaXBzZVwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e2VsbGlwc2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuRWxsaXBzZSkuc2l6ZSh0LGUpLm1vdmUoMCwwKX19fSksYS5leHRlbmQoYS5FbGxpcHNlLGEuUmVjdCxhLkZYLHtyeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwicnhcIix0KX0scnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInJ5XCIsdCl9fSksYS5leHRlbmQoYS5DaXJjbGUsYS5FbGxpcHNlLHt4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuY3goKS10aGlzLnJ4KCk6dGhpcy5jeCh0K3RoaXMucngoKSl9LHk6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5jeSgpLXRoaXMucnkoKTp0aGlzLmN5KHQrdGhpcy5yeSgpKX0sY3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwiY3hcIik6dGhpcy5hdHRyKFwiY3hcIix0KX0sY3k6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwiY3lcIik6dGhpcy5hdHRyKFwiY3lcIix0KX0sd2lkdGg6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/Mip0aGlzLnJ4KCk6dGhpcy5yeChuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10PzIqdGhpcy5yeSgpOnRoaXMucnkobmV3IGEuTnVtYmVyKHQpLmRpdmlkZSgyKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5yeChuZXcgYS5OdW1iZXIoaS53aWR0aCkuZGl2aWRlKDIpKS5yeShuZXcgYS5OdW1iZXIoaS5oZWlnaHQpLmRpdmlkZSgyKSl9fSksYS5MaW5lPWEuaW52ZW50KHtjcmVhdGU6XCJsaW5lXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7YXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuUG9pbnRBcnJheShbW3RoaXMuYXR0cihcIngxXCIpLHRoaXMuYXR0cihcInkxXCIpXSxbdGhpcy5hdHRyKFwieDJcIiksdGhpcy5hdHRyKFwieTJcIildXSl9LHBsb3Q6ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOih0PXZvaWQgMCE9PWU/e3gxOnQseTE6ZSx4MjppLHkyOnN9Om5ldyBhLlBvaW50QXJyYXkodCkudG9MaW5lKCksdGhpcy5hdHRyKHQpKX0sbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmF0dHIodGhpcy5hcnJheSgpLm1vdmUodCxlKS50b0xpbmUoKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5hdHRyKHRoaXMuYXJyYXkoKS5zaXplKGkud2lkdGgsaS5oZWlnaHQpLnRvTGluZSgpKX19LGNvbnN0cnVjdDp7bGluZTpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gYS5MaW5lLnByb3RvdHlwZS5wbG90LmFwcGx5KHRoaXMucHV0KG5ldyBhLkxpbmUpLG51bGwhPXQ/W3QsZSxpLHNdOlswLDAsMCwwXSl9fX0pLGEuUG9seWxpbmU9YS5pbnZlbnQoe2NyZWF0ZTpcInBvbHlsaW5lXCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7cG9seWxpbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlBvbHlsaW5lKS5wbG90KHR8fG5ldyBhLlBvaW50QXJyYXkpfX19KSxhLlBvbHlnb249YS5pbnZlbnQoe2NyZWF0ZTpcInBvbHlnb25cIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0Ontwb2x5Z29uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5Qb2x5Z29uKS5wbG90KHR8fG5ldyBhLlBvaW50QXJyYXkpfX19KSxhLmV4dGVuZChhLlBvbHlsaW5lLGEuUG9seWdvbix7YXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyYXl8fCh0aGlzLl9hcnJheT1uZXcgYS5Qb2ludEFycmF5KHRoaXMuYXR0cihcInBvaW50c1wiKSkpfSxwbG90OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXJyYXkoKTp0aGlzLmNsZWFyKCkuYXR0cihcInBvaW50c1wiLFwic3RyaW5nXCI9PXR5cGVvZiB0P3Q6dGhpcy5fYXJyYXk9bmV3IGEuUG9pbnRBcnJheSh0KSl9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSB0aGlzLl9hcnJheSx0aGlzfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cihcInBvaW50c1wiLHRoaXMuYXJyYXkoKS5tb3ZlKHQsZSkpfSxzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dSh0aGlzLHQsZSk7cmV0dXJuIHRoaXMuYXR0cihcInBvaW50c1wiLHRoaXMuYXJyYXkoKS5zaXplKGkud2lkdGgsaS5oZWlnaHQpKX19KSxhLmV4dGVuZChhLkxpbmUsYS5Qb2x5bGluZSxhLlBvbHlnb24se21vcnBoQXJyYXk6YS5Qb2ludEFycmF5LHg6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5iYm94KCkueDp0aGlzLm1vdmUodCx0aGlzLmJib3goKS55KX0seTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmJib3goKS55OnRoaXMubW92ZSh0aGlzLmJib3goKS54LHQpfSx3aWR0aDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmJib3goKTtyZXR1cm4gbnVsbD09dD9lLndpZHRoOnRoaXMuc2l6ZSh0LGUuaGVpZ2h0KX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYmJveCgpO3JldHVybiBudWxsPT10P2UuaGVpZ2h0OnRoaXMuc2l6ZShlLndpZHRoLHQpfX0pLGEuUGF0aD1hLmludmVudCh7Y3JlYXRlOlwicGF0aFwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e21vcnBoQXJyYXk6YS5QYXRoQXJyYXksYXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyYXl8fCh0aGlzLl9hcnJheT1uZXcgYS5QYXRoQXJyYXkodGhpcy5hdHRyKFwiZFwiKSkpfSxwbG90OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXJyYXkoKTp0aGlzLmNsZWFyKCkuYXR0cihcImRcIixcInN0cmluZ1wiPT10eXBlb2YgdD90OnRoaXMuX2FycmF5PW5ldyBhLlBhdGhBcnJheSh0KSl9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSB0aGlzLl9hcnJheSx0aGlzfX0sY29uc3RydWN0OntwYXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5QYXRoKS5wbG90KHR8fG5ldyBhLlBhdGhBcnJheSl9fX0pLGEuSW1hZ2U9YS5pbnZlbnQoe2NyZWF0ZTpcImltYWdlXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7bG9hZDpmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdGhpczt2YXIgaT10aGlzLHM9bmV3IHQuSW1hZ2U7cmV0dXJuIGEub24ocyxcImxvYWRcIiwoZnVuY3Rpb24oKXthLm9mZihzKTt2YXIgdD1pLnBhcmVudChhLlBhdHRlcm4pO251bGwhPT10JiYoMD09aS53aWR0aCgpJiYwPT1pLmhlaWdodCgpJiZpLnNpemUocy53aWR0aCxzLmhlaWdodCksdCYmMD09dC53aWR0aCgpJiYwPT10LmhlaWdodCgpJiZ0LnNpemUoaS53aWR0aCgpLGkuaGVpZ2h0KCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuX2xvYWRlZCYmaS5fbG9hZGVkLmNhbGwoaSx7d2lkdGg6cy53aWR0aCxoZWlnaHQ6cy5oZWlnaHQscmF0aW86cy53aWR0aC9zLmhlaWdodCx1cmw6ZX0pKX0pKSxhLm9uKHMsXCJlcnJvclwiLChmdW5jdGlvbih0KXthLm9mZihzKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLl9lcnJvciYmaS5fZXJyb3IuY2FsbChpLHQpfSkpLHRoaXMuYXR0cihcImhyZWZcIixzLnNyYz10aGlzLnNyYz1lLGEueGxpbmspfSxsb2FkZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xvYWRlZD10LHRoaXN9LGVycm9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lcnJvcj10LHRoaXN9fSxjb25zdHJ1Y3Q6e2ltYWdlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuSW1hZ2UpLmxvYWQodCkuc2l6ZShlfHwwLGl8fGV8fDApfX19KSxhLlRleHQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKFwidGV4dFwiKSksdGhpcy5kb20ubGVhZGluZz1uZXcgYS5OdW1iZXIoMS4zKSx0aGlzLl9yZWJ1aWxkPSEwLHRoaXMuX2J1aWxkPSExLHRoaXMuYXR0cihcImZvbnQtZmFtaWx5XCIsYS5kZWZhdWx0cy5hdHRyc1tcImZvbnQtZmFtaWx5XCJdKX0saW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJ4XCIpOnRoaXMuYXR0cihcInhcIix0KX0sdGV4dDpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXt0PVwiXCI7Zm9yKHZhciBlPXRoaXMubm9kZS5jaGlsZE5vZGVzLGk9MCxzPWUubGVuZ3RoO2k8czsrK2kpMCE9aSYmMyE9ZVtpXS5ub2RlVHlwZSYmMT09YS5hZG9wdChlW2ldKS5kb20ubmV3TGluZWQmJih0Kz1cIlxcblwiKSx0Kz1lW2ldLnRleHRDb250ZW50O3JldHVybiB0fWlmKHRoaXMuY2xlYXIoKS5idWlsZCghMCksXCJmdW5jdGlvblwiPT10eXBlb2YgdCl0LmNhbGwodGhpcyx0aGlzKTtlbHNle2k9MDtmb3IodmFyIHI9KHQ9dC5zcGxpdChcIlxcblwiKSkubGVuZ3RoO2k8cjtpKyspdGhpcy50c3Bhbih0W2ldKS5uZXdMaW5lKCl9cmV0dXJuIHRoaXMuYnVpbGQoITEpLnJlYnVpbGQoKX0sc2l6ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiZm9udC1zaXplXCIsdCkucmVidWlsZCgpfSxsZWFkaW5nOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuZG9tLmxlYWRpbmc6KHRoaXMuZG9tLmxlYWRpbmc9bmV3IGEuTnVtYmVyKHQpLHRoaXMucmVidWlsZCgpKX0sbGluZXM6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlLGU9YS51dGlscy5tYXAoYS51dGlscy5maWx0ZXJTVkdFbGVtZW50cyh0LmNoaWxkTm9kZXMpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5hZG9wdCh0KX0pKTtyZXR1cm4gbmV3IGEuU2V0KGUpfSxyZWJ1aWxkOmZ1bmN0aW9uKHQpe2lmKFwiYm9vbGVhblwiPT10eXBlb2YgdCYmKHRoaXMuX3JlYnVpbGQ9dCksdGhpcy5fcmVidWlsZCl7dmFyIGU9dGhpcyxpPTAscz10aGlzLmRvbS5sZWFkaW5nKm5ldyBhLk51bWJlcih0aGlzLmF0dHIoXCJmb250LXNpemVcIikpO3RoaXMubGluZXMoKS5lYWNoKChmdW5jdGlvbigpe3RoaXMuZG9tLm5ld0xpbmVkJiYoZS50ZXh0UGF0aCgpfHx0aGlzLmF0dHIoXCJ4XCIsZS5hdHRyKFwieFwiKSksXCJcXG5cIj09dGhpcy50ZXh0KCk/aSs9czoodGhpcy5hdHRyKFwiZHlcIixzK2kpLGk9MCkpfSkpLHRoaXMuZmlyZShcInJlYnVpbGRcIil9cmV0dXJuIHRoaXN9LGJ1aWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9idWlsZD0hIXQsdGhpc30sc2V0RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb209dCx0aGlzLmRvbS5sZWFkaW5nPW5ldyBhLk51bWJlcih0LmxlYWRpbmd8fDEuMyksdGhpc319LGNvbnN0cnVjdDp7dGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuVGV4dCkudGV4dCh0KX0scGxhaW46ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlRleHQpLnBsYWluKHQpfX19KSxhLlRzcGFuPWEuaW52ZW50KHtjcmVhdGU6XCJ0c3BhblwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e3RleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5ub2RlLnRleHRDb250ZW50Kyh0aGlzLmRvbS5uZXdMaW5lZD9cIlxcblwiOlwiXCIpOihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QuY2FsbCh0aGlzLHRoaXMpOnRoaXMucGxhaW4odCksdGhpcyl9LGR4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJkeFwiLHQpfSxkeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiZHlcIix0KX0sbmV3TGluZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50KGEuVGV4dCk7cmV0dXJuIHRoaXMuZG9tLm5ld0xpbmVkPSEwLHRoaXMuZHkodC5kb20ubGVhZGluZyp0LmF0dHIoXCJmb250LXNpemVcIikpLmF0dHIoXCJ4XCIsdC54KCkpfX19KSxhLmV4dGVuZChhLlRleHQsYS5Uc3Bhbix7cGxhaW46ZnVuY3Rpb24odCl7cmV0dXJuITE9PT10aGlzLl9idWlsZCYmdGhpcy5jbGVhcigpLHRoaXMubm9kZS5hcHBlbmRDaGlsZChlLmNyZWF0ZVRleHROb2RlKHQpKSx0aGlzfSx0c3BhbjpmdW5jdGlvbih0KXt2YXIgZT0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlLGk9bmV3IGEuVHNwYW47cmV0dXJuITE9PT10aGlzLl9idWlsZCYmdGhpcy5jbGVhcigpLGUuYXBwZW5kQ2hpbGQoaS5ub2RlKSxpLnRleHQodCl9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGU7dC5oYXNDaGlsZE5vZGVzKCk7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpO3JldHVybiB0aGlzfSxsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpfX0pLGEuVGV4dFBhdGg9YS5pbnZlbnQoe2NyZWF0ZTpcInRleHRQYXRoXCIsaW5oZXJpdDphLlBhcmVudCxwYXJlbnQ6YS5UZXh0LGNvbnN0cnVjdDp7bW9ycGhBcnJheTphLlBhdGhBcnJheSxhcnJheTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudHJhY2soKTtyZXR1cm4gdD90LmFycmF5KCk6bnVsbH0scGxvdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnRyYWNrKCksaT1udWxsO3JldHVybiBlJiYoaT1lLnBsb3QodCkpLG51bGw9PXQ/aTp0aGlzfSx0cmFjazpmdW5jdGlvbigpe3ZhciB0PXRoaXMudGV4dFBhdGgoKTtpZih0KXJldHVybiB0LnJlZmVyZW5jZShcImhyZWZcIil9LHRleHRQYXRoOmZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlLmZpcnN0Q2hpbGQmJlwidGV4dFBhdGhcIj09dGhpcy5ub2RlLmZpcnN0Q2hpbGQubm9kZU5hbWUpcmV0dXJuIGEuYWRvcHQodGhpcy5ub2RlLmZpcnN0Q2hpbGQpfX19KSxhLk5lc3RlZD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUoXCJzdmdcIikpLHRoaXMuc3R5bGUoXCJvdmVyZmxvd1wiLFwidmlzaWJsZVwiKX0saW5oZXJpdDphLkNvbnRhaW5lcixjb25zdHJ1Y3Q6e25lc3RlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgYS5OZXN0ZWQpfX19KTt2YXIgbD17c3Ryb2tlOltcImNvbG9yXCIsXCJ3aWR0aFwiLFwib3BhY2l0eVwiLFwibGluZWNhcFwiLFwibGluZWpvaW5cIixcIm1pdGVybGltaXRcIixcImRhc2hhcnJheVwiLFwiZGFzaG9mZnNldFwiXSxmaWxsOltcImNvbG9yXCIsXCJvcGFjaXR5XCIsXCJydWxlXCJdLHByZWZpeDpmdW5jdGlvbih0LGUpe3JldHVyblwiY29sb3JcIj09ZT90OnQrXCItXCIrZX19O2Z1bmN0aW9uIGgodCxlLGkscyl7cmV0dXJuIGkrcy5yZXBsYWNlKGEucmVnZXguZG90cyxcIiAuXCIpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tKC4pL2csKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudG9VcHBlckNhc2UoKX0pKX1mdW5jdGlvbiBkKHQpe3JldHVybiB0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9ZnVuY3Rpb24gZyh0KXt2YXIgZT10LnRvU3RyaW5nKDE2KTtyZXR1cm4gMT09ZS5sZW5ndGg/XCIwXCIrZTplfWZ1bmN0aW9uIHUodCxlLGkpe2lmKG51bGw9PWV8fG51bGw9PWkpe3ZhciBhPXQuYmJveCgpO251bGw9PWU/ZT1hLndpZHRoL2EuaGVpZ2h0Kmk6bnVsbD09aSYmKGk9YS5oZWlnaHQvYS53aWR0aCplKX1yZXR1cm57d2lkdGg6ZSxoZWlnaHQ6aX19ZnVuY3Rpb24gcCh0LGUsaSl7cmV0dXJue3g6ZSp0LmEraSp0LmMrMCx5OmUqdC5iK2kqdC5kKzB9fWZ1bmN0aW9uIGYodCl7cmV0dXJue2E6dFswXSxiOnRbMV0sYzp0WzJdLGQ6dFszXSxlOnRbNF0sZjp0WzVdfX1mdW5jdGlvbiB4KGUpe2Zvcih2YXIgaT1lLmNoaWxkTm9kZXMubGVuZ3RoLTE7aT49MDtpLS0pZS5jaGlsZE5vZGVzW2ldaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnQmJngoZS5jaGlsZE5vZGVzW2ldKTtyZXR1cm4gYS5hZG9wdChlKS5pZChhLmVpZChlLm5vZGVOYW1lKSl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gTWF0aC5hYnModCk+MWUtMzc/dDowfVtcImZpbGxcIixcInN0cm9rZVwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT17fTtlW3RdPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIHRoaXM7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fGEuQ29sb3IuaXNSZ2IoZSl8fGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuZmlsbCl0aGlzLmF0dHIodCxlKTtlbHNlIGZvcih2YXIgaT1sW3RdLmxlbmd0aC0xO2k+PTA7aS0tKW51bGwhPWVbbFt0XVtpXV0mJnRoaXMuYXR0cihsLnByZWZpeCh0LGxbdF1baV0pLGVbbFt0XVtpXV0pO3JldHVybiB0aGlzfSxhLmV4dGVuZChhLkVsZW1lbnQsYS5GWCxlKX0pKSxhLmV4dGVuZChhLkVsZW1lbnQsYS5GWCx7dHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHt4OnQseTplfSl9LG1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIsbmV3IGEuTWF0cml4KDY9PWFyZ3VtZW50cy5sZW5ndGg/W10uc2xpY2UuY2FsbChhcmd1bWVudHMpOnQpKX0sb3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwib3BhY2l0eVwiLHQpfSxkeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54KG5ldyBhLk51bWJlcih0KS5wbHVzKHRoaXMgaW5zdGFuY2VvZiBhLkZYPzA6dGhpcy54KCkpLCEwKX0sZHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueShuZXcgYS5OdW1iZXIodCkucGx1cyh0aGlzIGluc3RhbmNlb2YgYS5GWD8wOnRoaXMueSgpKSwhMCl9fSksYS5leHRlbmQoYS5QYXRoLHtsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldFRvdGFsTGVuZ3RoKCl9LHBvaW50QXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5nZXRQb2ludEF0TGVuZ3RoKHQpfX0pLGEuU2V0PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7QXJyYXkuaXNBcnJheSh0KT90aGlzLm1lbWJlcnM9dDp0aGlzLmNsZWFyKCl9LGV4dGVuZDp7YWRkOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXRoaXMubWVtYmVycy5wdXNoKHRbZV0pO3JldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbmRleCh0KTtyZXR1cm4gZT4tMSYmdGhpcy5tZW1iZXJzLnNwbGljZShlLDEpLHRoaXN9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT10aGlzLm1lbWJlcnMubGVuZ3RoO2U8aTtlKyspdC5hcHBseSh0aGlzLm1lbWJlcnNbZV0sW2UsdGhpcy5tZW1iZXJzXSk7cmV0dXJuIHRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVycz1bXSx0aGlzfSxsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzLmxlbmd0aH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluZGV4KHQpPj0wfSxpbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tZW1iZXJzLmluZGV4T2YodCl9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tZW1iZXJzW3RdfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCh0aGlzLm1lbWJlcnMubGVuZ3RoLTEpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVyc319LGNvbnN0cnVjdDp7c2V0OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYS5TZXQodCl9fX0pLGEuRlguU2V0PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5zZXQ9dH19KSxhLlNldC5pbmhlcml0PWZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIGEuU2hhcGUucHJvdG90eXBlKVwiZnVuY3Rpb25cIj09dHlwZW9mIGEuU2hhcGUucHJvdG90eXBlW2VdJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLlNldC5wcm90b3R5cGVbZV0mJnQucHVzaChlKTtmb3IodmFyIGUgaW4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXthLlNldC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxpPXRoaXMubWVtYmVycy5sZW5ndGg7ZTxpO2UrKyl0aGlzLm1lbWJlcnNbZV0mJlwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMubWVtYmVyc1tlXVt0XSYmdGhpcy5tZW1iZXJzW2VdW3RdLmFwcGx5KHRoaXMubWVtYmVyc1tlXSxhcmd1bWVudHMpO3JldHVyblwiYW5pbWF0ZVwiPT10P3RoaXMuZnh8fCh0aGlzLmZ4PW5ldyBhLkZYLlNldCh0aGlzKSk6dGhpc319KSksdD1bXSxhLkZYLnByb3RvdHlwZSlcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLkZYLnByb3RvdHlwZVtlXSYmXCJmdW5jdGlvblwiIT10eXBlb2YgYS5GWC5TZXQucHJvdG90eXBlW2VdJiZ0LnB1c2goZSk7dC5mb3JFYWNoKChmdW5jdGlvbih0KXthLkZYLlNldC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxpPXRoaXMuc2V0Lm1lbWJlcnMubGVuZ3RoO2U8aTtlKyspdGhpcy5zZXQubWVtYmVyc1tlXS5meFt0XS5hcHBseSh0aGlzLnNldC5tZW1iZXJzW2VdLmZ4LGFyZ3VtZW50cyk7cmV0dXJuIHRoaXN9fSkpfSxhLmV4dGVuZChhLkVsZW1lbnQse30pLGEuZXh0ZW5kKGEuRWxlbWVudCx7cmVtZW1iZXI6ZnVuY3Rpb24odCxlKXtpZihcIm9iamVjdFwiPT09aShhcmd1bWVudHNbMF0pKWZvcih2YXIgYSBpbiB0KXRoaXMucmVtZW1iZXIoYSx0W2FdKTtlbHNle2lmKDE9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMubWVtb3J5KClbdF07dGhpcy5tZW1vcnkoKVt0XT1lfXJldHVybiB0aGlzfSxmb3JnZXQ6ZnVuY3Rpb24oKXtpZigwPT1hcmd1bWVudHMubGVuZ3RoKXRoaXMuX21lbW9yeT17fTtlbHNlIGZvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTE7dD49MDt0LS0pZGVsZXRlIHRoaXMubWVtb3J5KClbYXJndW1lbnRzW3RdXTtyZXR1cm4gdGhpc30sbWVtb3J5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21lbW9yeXx8KHRoaXMuX21lbW9yeT17fSl9fSksYS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGk9ZS5nZXRFbGVtZW50QnlJZChmdW5jdGlvbih0KXt2YXIgZT0odHx8XCJcIikudG9TdHJpbmcoKS5tYXRjaChhLnJlZ2V4LnJlZmVyZW5jZSk7aWYoZSlyZXR1cm4gZVsxXX0odCl8fHQpO3JldHVybiBhLmFkb3B0KGkpfSxhLnNlbGVjdD1mdW5jdGlvbih0LGkpe3JldHVybiBuZXcgYS5TZXQoYS51dGlscy5tYXAoKGl8fGUpLnF1ZXJ5U2VsZWN0b3JBbGwodCksKGZ1bmN0aW9uKHQpe3JldHVybiBhLmFkb3B0KHQpfSkpKX0sYS5leHRlbmQoYS5QYXJlbnQse3NlbGVjdDpmdW5jdGlvbih0KXtyZXR1cm4gYS5zZWxlY3QodCx0aGlzLm5vZGUpfX0pO3ZhciB2PVwiYWJjZGVmXCIuc3BsaXQoXCJcIik7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdC5DdXN0b21FdmVudCl7dmFyIG09ZnVuY3Rpb24odCxpKXtpPWl8fHtidWJibGVzOiExLGNhbmNlbGFibGU6ITEsZGV0YWlsOnZvaWQgMH07dmFyIGE9ZS5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO3JldHVybiBhLmluaXRDdXN0b21FdmVudCh0LGkuYnViYmxlcyxpLmNhbmNlbGFibGUsaS5kZXRhaWwpLGF9O20ucHJvdG90eXBlPXQuRXZlbnQucHJvdG90eXBlLGEuQ3VzdG9tRXZlbnQ9bX1lbHNlIGEuQ3VzdG9tRXZlbnQ9dC5DdXN0b21FdmVudDtyZXR1cm4gYX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgoZnVuY3Rpb24oKXtyZXR1cm4gSHQoUnQsUnQuZG9jdW1lbnQpfSkpOlwib2JqZWN0XCI9PT0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIGV4cG9ydHM/XCJ1bmRlZmluZWRcIjppKGV4cG9ydHMpKSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1SdC5kb2N1bWVudD9IdChSdCxSdC5kb2N1bWVudCk6ZnVuY3Rpb24odCl7cmV0dXJuIEh0KHQsdC5kb2N1bWVudCl9OlJ0LlNWRz1IdChSdCxSdC5kb2N1bWVudCksXG4vKiEgc3ZnLmZpbHRlci5qcyAtIHYyLjAuMiAtIDIwMTYtMDItMjRcbiogaHR0cHM6Ly9naXRodWIuY29tL3dvdXQvc3ZnLmZpbHRlci5qc1xuKiBDb3B5cmlnaHQgKGMpIDIwMTYgV291dCBGaWVyZW5zOyBMaWNlbnNlZCBNSVQgKi9cbmZ1bmN0aW9uKCl7U1ZHLkZpbHRlcj1TVkcuaW52ZW50KHtjcmVhdGU6XCJmaWx0ZXJcIixpbmhlcml0OlNWRy5QYXJlbnQsZXh0ZW5kOntzb3VyY2U6XCJTb3VyY2VHcmFwaGljXCIsc291cmNlQWxwaGE6XCJTb3VyY2VBbHBoYVwiLGJhY2tncm91bmQ6XCJCYWNrZ3JvdW5kSW1hZ2VcIixiYWNrZ3JvdW5kQWxwaGE6XCJCYWNrZ3JvdW5kQWxwaGFcIixmaWxsOlwiRmlsbFBhaW50XCIsc3Ryb2tlOlwiU3Ryb2tlUGFpbnRcIixhdXRvU2V0SW46ITAscHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKHQsZSksIXQuYXR0cihcImluXCIpJiZ0aGlzLmF1dG9TZXRJbiYmdC5hdHRyKFwiaW5cIix0aGlzLnNvdXJjZSksdC5hdHRyKFwicmVzdWx0XCIpfHx0LmF0dHIoXCJyZXN1bHRcIix0KSx0fSxibGVuZDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQmxlbmRFZmZlY3QodCxlLGkpKX0sY29sb3JNYXRyaXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db2xvck1hdHJpeEVmZmVjdCh0LGUpKX0sY29udm9sdmVNYXRyaXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29udm9sdmVNYXRyaXhFZmZlY3QodCkpfSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db21wb25lbnRUcmFuc2ZlckVmZmVjdCh0KSl9LGNvbXBvc2l0ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29tcG9zaXRlRWZmZWN0KHQsZSxpKSl9LGZsb29kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRmxvb2RFZmZlY3QodCxlKSl9LG9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLk9mZnNldEVmZmVjdCh0LGUpKX0saW1hZ2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuSW1hZ2VFZmZlY3QodCkpfSxtZXJnZTpmdW5jdGlvbigpe3ZhciB0PVt2b2lkIDBdO2Zvcih2YXIgZSBpbiBhcmd1bWVudHMpdC5wdXNoKGFyZ3VtZW50c1tlXSk7cmV0dXJuIHRoaXMucHV0KG5ldyhTVkcuTWVyZ2VFZmZlY3QuYmluZC5hcHBseShTVkcuTWVyZ2VFZmZlY3QsdCkpKX0sZ2F1c3NpYW5CbHVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuR2F1c3NpYW5CbHVyRWZmZWN0KHQsZSkpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuTW9ycGhvbG9neUVmZmVjdCh0LGUpKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5EaWZmdXNlTGlnaHRpbmdFZmZlY3QodCxlLGkpKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHQsZSxpLGEscyl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRGlzcGxhY2VtZW50TWFwRWZmZWN0KHQsZSxpLGEscykpfSxzcGVjdWxhckxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlNwZWN1bGFyTGlnaHRpbmdFZmZlY3QodCxlLGksYSkpfSx0aWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuVGlsZUVmZmVjdCl9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24odCxlLGksYSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5UdXJidWxlbmNlRWZmZWN0KHQsZSxpLGEscykpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmF0dHIoXCJpZFwiKStcIilcIn19fSksU1ZHLmV4dGVuZChTVkcuRGVmcyx7ZmlsdGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucHV0KG5ldyBTVkcuRmlsdGVyKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0LmNhbGwoZSxlKSxlfX0pLFNWRy5leHRlbmQoU1ZHLkNvbnRhaW5lcix7ZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlZnMoKS5maWx0ZXIodCl9fSksU1ZHLmV4dGVuZChTVkcuRWxlbWVudCxTVkcuRyxTVkcuTmVzdGVkLHtmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmlsdGVyZXI9dCBpbnN0YW5jZW9mIFNWRy5FbGVtZW50P3Q6dGhpcy5kb2MoKS5maWx0ZXIodCksdGhpcy5kb2MoKSYmdGhpcy5maWx0ZXJlci5kb2MoKSE9PXRoaXMuZG9jKCkmJnRoaXMuZG9jKCkuZGVmcygpLmFkZCh0aGlzLmZpbHRlcmVyKSx0aGlzLmF0dHIoXCJmaWx0ZXJcIix0aGlzLmZpbHRlcmVyKSx0aGlzLmZpbHRlcmVyfSx1bmZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXJlciYmITA9PT10JiZ0aGlzLmZpbHRlcmVyLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmZpbHRlcmVyLHRoaXMuYXR0cihcImZpbHRlclwiLG51bGwpfX0pLFNWRy5FZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5FbGVtZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zZWxlY3QoJ1tyZXN1bHQ9XCInK3RoaXMuYXR0cihcImluXCIpKydcIl0nKS5nZXQoMCl8fHRoaXMuYXR0cihcImluXCIpOnRoaXMuYXR0cihcImluXCIsdCl9LHJlc3VsdDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJyZXN1bHRcIik6dGhpcy5hdHRyKFwicmVzdWx0XCIsdCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzdWx0KCl9fX0pLFNWRy5QYXJlbnRFZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5QYXJlbnQsZXh0ZW5kOntpbjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW5cIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW5cIik6dGhpcy5hdHRyKFwiaW5cIix0KX0scmVzdWx0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcInJlc3VsdFwiKTp0aGlzLmF0dHIoXCJyZXN1bHRcIix0KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHQoKX19fSk7dmFyIHQ9e2JsZW5kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuYmxlbmQodGhpcyx0LGUpfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbG9yTWF0cml4KHQsZSkuaW4odGhpcyl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbnZvbHZlTWF0cml4KHQpLmluKHRoaXMpfSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb21wb25lbnRUcmFuc2Zlcih0KS5pbih0aGlzKX0sY29tcG9zaXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29tcG9zaXRlKHRoaXMsdCxlKX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5mbG9vZCh0LGUpfSxvZmZzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5vZmZzZXQodCxlKS5pbih0aGlzKX0saW1hZ2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuaW1hZ2UodCl9LG1lcmdlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkubWVyZ2UuYXBwbHkodGhpcy5wYXJlbnQoKSxbdGhpc10uY29uY2F0KGFyZ3VtZW50cykpfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5nYXVzc2lhbkJsdXIodCxlKS5pbih0aGlzKX0sbW9ycGhvbG9neTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm1vcnBob2xvZ3kodCxlKS5pbih0aGlzKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5kaWZmdXNlTGlnaHRpbmcodCxlLGkpLmluKHRoaXMpfSxkaXNwbGFjZW1lbnRNYXA6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuZGlzcGxhY2VtZW50TWFwKHRoaXMsdCxlLGksYSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc3BlY3VsYXJMaWdodGluZyh0LGUsaSxhKS5pbih0aGlzKX0sdGlsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnRpbGUoKS5pbih0aGlzKX0sdHVyYnVsZW5jZTpmdW5jdGlvbih0LGUsaSxhLHMpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnR1cmJ1bGVuY2UodCxlLGksYSxzKS5pbih0aGlzKX19O1NWRy5leHRlbmQoU1ZHLkVmZmVjdCx0KSxTVkcuZXh0ZW5kKFNWRy5QYXJlbnRFZmZlY3QsdCksU1ZHLkNoaWxkRWZmZWN0PVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzKX0saW5oZXJpdDpTVkcuRWxlbWVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHQpe3RoaXMuYXR0cihcImluXCIsdCl9fX0pO3ZhciBlPXtibGVuZDpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHtpbjp0LGluMjplLG1vZGU6aXx8XCJub3JtYWxcIn0pfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpe1wibWF0cml4XCI9PXQmJihlPXMoZSkpLHRoaXMuYXR0cih7dHlwZTp0LHZhbHVlczp2b2lkIDA9PT1lP251bGw6ZX0pfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbih0KXt0PXModCksdGhpcy5hdHRyKHtvcmRlcjpNYXRoLnNxcnQodC5zcGxpdChcIiBcIikubGVuZ3RoKSxrZXJuZWxNYXRyaXg6dH0pfSxjb21wb3NpdGU6ZnVuY3Rpb24odCxlLGkpe3RoaXMuYXR0cih7aW46dCxpbjI6ZSxvcGVyYXRvcjppfSl9LGZsb29kOmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKFwiZmxvb2QtY29sb3JcIix0KSxudWxsIT1lJiZ0aGlzLmF0dHIoXCJmbG9vZC1vcGFjaXR5XCIsZSl9LG9mZnNldDpmdW5jdGlvbih0LGUpe3RoaXMuYXR0cih7ZHg6dCxkeTplfSl9LGltYWdlOmZ1bmN0aW9uKHQpe3RoaXMuYXR0cihcImhyZWZcIix0LFNWRy54bGluayl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbih0LGUsaSxhLHMpe3RoaXMuYXR0cih7aW46dCxpbjI6ZSxzY2FsZTppLHhDaGFubmVsU2VsZWN0b3I6YSx5Q2hhbm5lbFNlbGVjdG9yOnN9KX0sZ2F1c3NpYW5CbHVyOmZ1bmN0aW9uKHQsZSl7bnVsbCE9dHx8bnVsbCE9ZT90aGlzLmF0dHIoXCJzdGREZXZpYXRpb25cIixmdW5jdGlvbih0KXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdDtmb3IodmFyIGU9MCxpPXQubGVuZ3RoLGE9W107ZTxpO2UrKylhLnB1c2godFtlXSk7cmV0dXJuIGEuam9pbihcIiBcIil9KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKTp0aGlzLmF0dHIoXCJzdGREZXZpYXRpb25cIixcIjAgMFwiKX0sbW9ycGhvbG9neTpmdW5jdGlvbih0LGUpe3RoaXMuYXR0cih7b3BlcmF0b3I6dCxyYWRpdXM6ZX0pfSx0aWxlOmZ1bmN0aW9uKCl7fSx0dXJidWxlbmNlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dGhpcy5hdHRyKHtudW1PY3RhdmVzOmUsc2VlZDppLHN0aXRjaFRpbGVzOmEsYmFzZUZyZXF1ZW5jeTp0LHR5cGU6c30pfX0saT17bWVyZ2U6ZnVuY3Rpb24oKXt2YXIgdDtpZihhcmd1bWVudHNbMF1pbnN0YW5jZW9mIFNWRy5TZXQpe3ZhciBlPXRoaXM7YXJndW1lbnRzWzBdLmVhY2goKGZ1bmN0aW9uKHQpe3RoaXMgaW5zdGFuY2VvZiBTVkcuTWVyZ2VOb2RlP2UucHV0KHRoaXMpOih0aGlzIGluc3RhbmNlb2YgU1ZHLkVmZmVjdHx8dGhpcyBpbnN0YW5jZW9mIFNWRy5QYXJlbnRFZmZlY3QpJiZlLnB1dChuZXcgU1ZHLk1lcmdlTm9kZSh0aGlzKSl9KSl9ZWxzZXt0PUFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRbaV1pbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/dGhpcy5wdXQodFtpXSk6dGhpcy5wdXQobmV3IFNWRy5NZXJnZU5vZGUodFtpXSkpfX0sY29tcG9uZW50VHJhbnNmZXI6ZnVuY3Rpb24odCl7aWYodGhpcy5yZ2I9bmV3IFNWRy5TZXQsW1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXNbdF09bmV3KFNWR1tcIkZ1bmNcIit0LnRvVXBwZXJDYXNlKCldKShcImlkZW50aXR5XCIpLHRoaXMucmdiLmFkZCh0aGlzW3RdKSx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodGhpc1t0XS5ub2RlKX0uYmluZCh0aGlzKSksdClmb3IodmFyIGUgaW4gdC5yZ2ImJihbXCJyXCIsXCJnXCIsXCJiXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpc1tlXS5hdHRyKHQucmdiKX0uYmluZCh0aGlzKSksZGVsZXRlIHQucmdiKSx0KXRoaXNbZV0uYXR0cih0W2VdKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe3N1cmZhY2VTY2FsZTp0LGRpZmZ1c2VDb25zdGFudDplLGtlcm5lbFVuaXRMZW5ndGg6aX0pfSxzcGVjdWxhckxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpLGEpe3RoaXMuYXR0cih7c3VyZmFjZVNjYWxlOnQsZGlmZnVzZUNvbnN0YW50OmUsc3BlY3VsYXJFeHBvbmVudDppLGtlcm5lbFVuaXRMZW5ndGg6YX0pfX0sYT17ZGlzdGFudExpZ2h0OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHthemltdXRoOnQsZWxldmF0aW9uOmV9KX0scG9pbnRMaWdodDpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHt4OnQseTplLHo6aX0pfSxzcG90TGlnaHQ6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3RoaXMuYXR0cih7eDp0LHk6ZSx6OmkscG9pbnRzQXRYOmEscG9pbnRzQXRZOnMscG9pbnRzQXRaOnJ9KX0sbWVyZ2VOb2RlOmZ1bmN0aW9uKHQpe3RoaXMuYXR0cihcImluXCIsdCl9fTtmdW5jdGlvbiBzKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYodD1uZXcgU1ZHLkFycmF5KHQpKSx0LnRvU3RyaW5nKCkucmVwbGFjZSgvXlxccysvLFwiXCIpLnJlcGxhY2UoL1xccyskLyxcIlwiKS5yZXBsYWNlKC9cXHMrL2csXCIgXCIpfWZ1bmN0aW9uIHIoKXt2YXIgdD1mdW5jdGlvbigpe307Zm9yKHZhciBlIGluXCJmdW5jdGlvblwiPT10eXBlb2YgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0mJih0PWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhcmd1bWVudHMsYXJndW1lbnRzLmxlbmd0aC0xLDEpKSxhcmd1bWVudHMpZm9yKHZhciBpIGluIGFyZ3VtZW50c1tlXSl0KGFyZ3VtZW50c1tlXVtpXSxpLGFyZ3VtZW50c1tlXSl9W1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthW1wiRnVuY1wiK3QudG9VcHBlckNhc2UoKV09ZnVuY3Rpb24odCl7c3dpdGNoKHRoaXMuYXR0cihcInR5cGVcIix0KSx0KXtjYXNlXCJ0YWJsZVwiOnRoaXMuYXR0cihcInRhYmxlVmFsdWVzXCIsYXJndW1lbnRzWzFdKTticmVhaztjYXNlXCJsaW5lYXJcIjp0aGlzLmF0dHIoXCJzbG9wZVwiLGFyZ3VtZW50c1sxXSksdGhpcy5hdHRyKFwiaW50ZXJjZXB0XCIsYXJndW1lbnRzWzJdKTticmVhaztjYXNlXCJnYW1tYVwiOnRoaXMuYXR0cihcImFtcGxpdHVkZVwiLGFyZ3VtZW50c1sxXSksdGhpcy5hdHRyKFwiZXhwb25lbnRcIixhcmd1bWVudHNbMl0pLHRoaXMuYXR0cihcIm9mZnNldFwiLGFyZ3VtZW50c1syXSl9fX0pKSxyKGUsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO1NWR1tpK1wiRWZmZWN0XCJdPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoXCJmZVwiK2kpKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLnJlc3VsdCh0aGlzLmF0dHIoXCJpZFwiKStcIk91dFwiKX0saW5oZXJpdDpTVkcuRWZmZWN0LGV4dGVuZDp7fX0pfSkpLHIoaSwoZnVuY3Rpb24odCxlKXt2YXIgaT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7U1ZHW2krXCJFZmZlY3RcIl09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIraSkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucmVzdWx0KHRoaXMuYXR0cihcImlkXCIpK1wiT3V0XCIpfSxpbmhlcml0OlNWRy5QYXJlbnRFZmZlY3QsZXh0ZW5kOnt9fSl9KSkscihhLChmdW5jdGlvbih0LGUpe3ZhciBpPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtTVkdbaV09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIraSkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpbmhlcml0OlNWRy5DaGlsZEVmZmVjdCxleHRlbmQ6e319KX0pKSxTVkcuZXh0ZW5kKFNWRy5NZXJnZUVmZmVjdCx7aW46ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBTVkcuTWVyZ2VOb2RlP3RoaXMuYWRkKHQsMCk6dGhpcy5hZGQobmV3IFNWRy5NZXJnZU5vZGUodCksMCksdGhpc319KSxTVkcuZXh0ZW5kKFNWRy5Db21wb3NpdGVFZmZlY3QsU1ZHLkJsZW5kRWZmZWN0LFNWRy5EaXNwbGFjZW1lbnRNYXBFZmZlY3Qse2luMjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW4yXCIpKydcIl0nKS5nZXQoMCl8fHRoaXMuYXR0cihcImluMlwiKTp0aGlzLmF0dHIoXCJpbjJcIix0KX19KSxTVkcuZmlsdGVyPXtzZXBpYXRvbmU6Wy4zNDMsLjY2OSwuMTE5LDAsMCwuMjQ5LC42MjYsLjEzLDAsMCwuMTcyLC4zMzQsLjExMSwwLDAsMCwwLDAsMSwwXX19LmNhbGwodm9pZCAwKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxzLHIsbyxuLGwsaCl7Zm9yKHZhciBjPXQuc2xpY2UocyxyfHxoKSxkPW8uc2xpY2UobixsfHxoKSxnPTAsdT17cG9zOlswLDBdLHN0YXJ0OlswLDBdfSxwPXtwb3M6WzAsMF0sc3RhcnQ6WzAsMF19Ozspe2lmKGNbZ109ZS5jYWxsKHUsY1tnXSksZFtnXT1lLmNhbGwocCxkW2ddKSxjW2ddWzBdIT1kW2ddWzBdfHxcIk1cIj09Y1tnXVswXXx8XCJBXCI9PWNbZ11bMF0mJihjW2ddWzRdIT1kW2ddWzRdfHxjW2ddWzVdIT1kW2ddWzVdKT8oQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShjLFtnLDFdLmNvbmNhdChhLmNhbGwodSxjW2ddKSkpLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoZCxbZywxXS5jb25jYXQoYS5jYWxsKHAsZFtnXSkpKSk6KGNbZ109aS5jYWxsKHUsY1tnXSksZFtnXT1pLmNhbGwocCxkW2ddKSksKytnPT1jLmxlbmd0aCYmZz09ZC5sZW5ndGgpYnJlYWs7Zz09Yy5sZW5ndGgmJmMucHVzaChbXCJDXCIsdS5wb3NbMF0sdS5wb3NbMV0sdS5wb3NbMF0sdS5wb3NbMV0sdS5wb3NbMF0sdS5wb3NbMV1dKSxnPT1kLmxlbmd0aCYmZC5wdXNoKFtcIkNcIixwLnBvc1swXSxwLnBvc1sxXSxwLnBvc1swXSxwLnBvc1sxXSxwLnBvc1swXSxwLnBvc1sxXV0pfXJldHVybntzdGFydDpjLGRlc3Q6ZH19ZnVuY3Rpb24gZSh0KXtzd2l0Y2godFswXSl7Y2FzZVwielwiOmNhc2VcIlpcIjp0WzBdPVwiTFwiLHRbMV09dGhpcy5zdGFydFswXSx0WzJdPXRoaXMuc3RhcnRbMV07YnJlYWs7Y2FzZVwiSFwiOnRbMF09XCJMXCIsdFsyXT10aGlzLnBvc1sxXTticmVhaztjYXNlXCJWXCI6dFswXT1cIkxcIix0WzJdPXRbMV0sdFsxXT10aGlzLnBvc1swXTticmVhaztjYXNlXCJUXCI6dFswXT1cIlFcIix0WzNdPXRbMV0sdFs0XT10WzJdLHRbMV09dGhpcy5yZWZsZWN0aW9uWzFdLHRbMl09dGhpcy5yZWZsZWN0aW9uWzBdO2JyZWFrO2Nhc2VcIlNcIjp0WzBdPVwiQ1wiLHRbNl09dFs0XSx0WzVdPXRbM10sdFs0XT10WzJdLHRbM109dFsxXSx0WzJdPXRoaXMucmVmbGVjdGlvblsxXSx0WzFdPXRoaXMucmVmbGVjdGlvblswXX1yZXR1cm4gdH1mdW5jdGlvbiBpKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiB0aGlzLnBvcz1bdFtlLTJdLHRbZS0xXV0sLTEhPVwiU0NRVFwiLmluZGV4T2YodFswXSkmJih0aGlzLnJlZmxlY3Rpb249WzIqdGhpcy5wb3NbMF0tdFtlLTRdLDIqdGhpcy5wb3NbMV0tdFtlLTNdXSksdH1mdW5jdGlvbiBhKHQpe3ZhciBlPVt0XTtzd2l0Y2godFswXSl7Y2FzZVwiTVwiOnJldHVybiB0aGlzLnBvcz10aGlzLnN0YXJ0PVt0WzFdLHRbMl1dLGU7Y2FzZVwiTFwiOnRbNV09dFszXT10WzFdLHRbNl09dFs0XT10WzJdLHRbMV09dGhpcy5wb3NbMF0sdFsyXT10aGlzLnBvc1sxXTticmVhaztjYXNlXCJRXCI6dFs2XT10WzRdLHRbNV09dFszXSx0WzRdPTEqdFs0XS8zKzIqdFsyXS8zLHRbM109MSp0WzNdLzMrMip0WzFdLzMsdFsyXT0xKnRoaXMucG9zWzFdLzMrMip0WzJdLzMsdFsxXT0xKnRoaXMucG9zWzBdLzMrMip0WzFdLzM7YnJlYWs7Y2FzZVwiQVwiOmU9ZnVuY3Rpb24odCxlKXt2YXIgaSxhLHMscixvLG4sbCxoLGMsZCxnLHUscCxmLHgsYix2LG0seSx3LGssQSxTLEMsTCxQLEk9TWF0aC5hYnMoZVsxXSksTT1NYXRoLmFicyhlWzJdKSxUPWVbM10lMzYwLHo9ZVs0XSxYPWVbNV0sRT1lWzZdLFk9ZVs3XSxGPW5ldyBTVkcuUG9pbnQodCksUj1uZXcgU1ZHLlBvaW50KEUsWSksSD1bXTtpZigwPT09SXx8MD09PU18fEYueD09PVIueCYmRi55PT09Ui55KXJldHVybltbXCJDXCIsRi54LEYueSxSLngsUi55LFIueCxSLnldXTtpPW5ldyBTVkcuUG9pbnQoKEYueC1SLngpLzIsKEYueS1SLnkpLzIpLnRyYW5zZm9ybSgobmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShUKSksKGE9aS54KmkueC8oSSpJKStpLnkqaS55LyhNKk0pKT4xJiYoSSo9YT1NYXRoLnNxcnQoYSksTSo9YSk7cz0obmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShUKS5zY2FsZSgxL0ksMS9NKS5yb3RhdGUoLVQpLEY9Ri50cmFuc2Zvcm0ocyksUj1SLnRyYW5zZm9ybShzKSxyPVtSLngtRi54LFIueS1GLnldLG49clswXSpyWzBdK3JbMV0qclsxXSxvPU1hdGguc3FydChuKSxyWzBdLz1vLHJbMV0vPW8sbD1uPDQ/TWF0aC5zcXJ0KDEtbi80KTowLHo9PT1YJiYobCo9LTEpO2g9bmV3IFNWRy5Qb2ludCgoUi54K0YueCkvMitsKi1yWzFdLChSLnkrRi55KS8yK2wqclswXSksYz1uZXcgU1ZHLlBvaW50KEYueC1oLngsRi55LWgueSksZD1uZXcgU1ZHLlBvaW50KFIueC1oLngsUi55LWgueSksZz1NYXRoLmFjb3MoYy54L01hdGguc3FydChjLngqYy54K2MueSpjLnkpKSxjLnk8MCYmKGcqPS0xKTt1PU1hdGguYWNvcyhkLngvTWF0aC5zcXJ0KGQueCpkLngrZC55KmQueSkpLGQueTwwJiYodSo9LTEpO1gmJmc+dSYmKHUrPTIqTWF0aC5QSSk7IVgmJmc8dSYmKHUtPTIqTWF0aC5QSSk7Zm9yKGY9TWF0aC5jZWlsKDIqTWF0aC5hYnMoZy11KS9NYXRoLlBJKSxiPVtdLHY9ZyxwPSh1LWcpL2YseD00Kk1hdGgudGFuKHAvNCkvMyxrPTA7azw9ZjtrKyspeT1NYXRoLmNvcyh2KSxtPU1hdGguc2luKHYpLHc9bmV3IFNWRy5Qb2ludChoLngreSxoLnkrbSksYltrXT1bbmV3IFNWRy5Qb2ludCh3LngreCptLHcueS14KnkpLHcsbmV3IFNWRy5Qb2ludCh3LngteCptLHcueSt4KnkpXSx2Kz1wO2ZvcihiWzBdWzBdPWJbMF1bMV0uY2xvbmUoKSxiW2IubGVuZ3RoLTFdWzJdPWJbYi5sZW5ndGgtMV1bMV0uY2xvbmUoKSxzPShuZXcgU1ZHLk1hdHJpeCkucm90YXRlKFQpLnNjYWxlKEksTSkucm90YXRlKC1UKSxrPTAsQT1iLmxlbmd0aDtrPEE7aysrKWJba11bMF09YltrXVswXS50cmFuc2Zvcm0ocyksYltrXVsxXT1iW2tdWzFdLnRyYW5zZm9ybShzKSxiW2tdWzJdPWJba11bMl0udHJhbnNmb3JtKHMpO2ZvcihrPTEsQT1iLmxlbmd0aDtrPEE7aysrKVM9KHc9YltrLTFdWzJdKS54LEM9dy55LEw9KHc9YltrXVswXSkueCxQPXcueSxFPSh3PWJba11bMV0pLngsWT13LnksSC5wdXNoKFtcIkNcIixTLEMsTCxQLEUsWV0pO3JldHVybiBIfSh0aGlzLnBvcyx0KSx0PWVbMF19cmV0dXJuIHRbMF09XCJDXCIsdGhpcy5wb3M9W3RbNV0sdFs2XV0sdGhpcy5yZWZsZWN0aW9uPVsyKnRbNV0tdFszXSwyKnRbNl0tdFs0XV0sZX1mdW5jdGlvbiBzKHQsZSl7aWYoITE9PT1lKXJldHVybiExO2Zvcih2YXIgaT1lLGE9dC5sZW5ndGg7aTxhOysraSlpZihcIk1cIj09dFtpXVswXSlyZXR1cm4gaTtyZXR1cm4hMX1TVkcuZXh0ZW5kKFNWRy5QYXRoQXJyYXkse21vcnBoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgaT10aGlzLnZhbHVlLGE9dGhpcy5wYXJzZShlKSxyPTAsbz0wLG49ITEsbD0hMTshMSE9PXJ8fCExIT09bzspe3ZhciBoO249cyhpLCExIT09ciYmcisxKSxsPXMoYSwhMSE9PW8mJm8rMSksITE9PT1yJiYocj0wPT0oaD1uZXcgU1ZHLlBhdGhBcnJheShjLnN0YXJ0KS5iYm94KCkpLmhlaWdodHx8MD09aC53aWR0aD9pLnB1c2goaVswXSktMTppLnB1c2goW1wiTVwiLGgueCtoLndpZHRoLzIsaC55K2guaGVpZ2h0LzJdKS0xKSwhMT09PW8mJihvPTA9PShoPW5ldyBTVkcuUGF0aEFycmF5KGMuZGVzdCkuYmJveCgpKS5oZWlnaHR8fDA9PWgud2lkdGg/YS5wdXNoKGFbMF0pLTE6YS5wdXNoKFtcIk1cIixoLngraC53aWR0aC8yLGgueStoLmhlaWdodC8yXSktMSk7dmFyIGM9dChpLHIsbixhLG8sbCk7aT1pLnNsaWNlKDAscikuY29uY2F0KGMuc3RhcnQsITE9PT1uP1tdOmkuc2xpY2UobikpLGE9YS5zbGljZSgwLG8pLmNvbmNhdChjLmRlc3QsITE9PT1sP1tdOmEuc2xpY2UobCkpLHI9ITEhPT1uJiZyK2Muc3RhcnQubGVuZ3RoLG89ITEhPT1sJiZvK2MuZGVzdC5sZW5ndGh9cmV0dXJuIHRoaXMudmFsdWU9aSx0aGlzLmRlc3RpbmF0aW9uPW5ldyBTVkcuUGF0aEFycmF5LHRoaXMuZGVzdGluYXRpb24udmFsdWU9YSx0aGlzfX0pfSgpLFxuLyohIHN2Zy5kcmFnZ2FibGUuanMgLSB2Mi4yLjIgLSAyMDE5LTAxLTA4XG4qIGh0dHBzOi8vZ2l0aHViLmNvbS9zdmdkb3Rqcy9zdmcuZHJhZ2dhYmxlLmpzXG4qIENvcHlyaWdodCAoYykgMjAxOSBXb3V0IEZpZXJlbnM7IExpY2Vuc2VkIE1JVCAqL1xuZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3QucmVtZW1iZXIoXCJfZHJhZ2dhYmxlXCIsdGhpcyksdGhpcy5lbD10fXQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO3RoaXMuY29uc3RyYWludD10LHRoaXMudmFsdWU9ZSx0aGlzLmVsLm9uKFwibW91c2Vkb3duLmRyYWdcIiwoZnVuY3Rpb24odCl7aS5zdGFydCh0KX0pKSx0aGlzLmVsLm9uKFwidG91Y2hzdGFydC5kcmFnXCIsKGZ1bmN0aW9uKHQpe2kuc3RhcnQodCl9KSl9LHQucHJvdG90eXBlLnRyYW5zZm9ybVBvaW50PWZ1bmN0aW9uKHQsZSl7dmFyIGk9KHQ9dHx8d2luZG93LmV2ZW50KS5jaGFuZ2VkVG91Y2hlcyYmdC5jaGFuZ2VkVG91Y2hlc1swXXx8dDtyZXR1cm4gdGhpcy5wLng9aS5jbGllbnRYLShlfHwwKSx0aGlzLnAueT1pLmNsaWVudFksdGhpcy5wLm1hdHJpeFRyYW5zZm9ybSh0aGlzLm0pfSx0LnByb3RvdHlwZS5nZXRCQm94PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbC5iYm94KCk7cmV0dXJuIHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuTmVzdGVkJiYodD10aGlzLmVsLnJib3goKSksKHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuR3x8dGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5Vc2V8fHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuTmVzdGVkKSYmKHQueD10aGlzLmVsLngoKSx0Lnk9dGhpcy5lbC55KCkpLHR9LHQucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKHQpe2lmKFwiY2xpY2tcIiE9dC50eXBlJiZcIm1vdXNlZG93blwiIT10LnR5cGUmJlwibW91c2Vtb3ZlXCIhPXQudHlwZXx8MT09KHQud2hpY2h8fHQuYnV0dG9ucykpe3ZhciBlPXRoaXM7aWYodGhpcy5lbC5maXJlKFwiYmVmb3JlZHJhZ1wiLHtldmVudDp0LGhhbmRsZXI6dGhpc30pLCF0aGlzLmVsLmV2ZW50KCkuZGVmYXVsdFByZXZlbnRlZCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5wYXJlbnQ9dGhpcy5wYXJlbnR8fHRoaXMuZWwucGFyZW50KFNWRy5OZXN0ZWQpfHx0aGlzLmVsLnBhcmVudChTVkcuRG9jKSx0aGlzLnA9dGhpcy5wYXJlbnQubm9kZS5jcmVhdGVTVkdQb2ludCgpLHRoaXMubT10aGlzLmVsLm5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpO3ZhciBpLGE9dGhpcy5nZXRCQm94KCk7aWYodGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5UZXh0KXN3aXRjaChpPXRoaXMuZWwubm9kZS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSx0aGlzLmVsLmF0dHIoXCJ0ZXh0LWFuY2hvclwiKSl7Y2FzZVwibWlkZGxlXCI6aS89MjticmVhaztjYXNlXCJzdGFydFwiOmk9MH10aGlzLnN0YXJ0UG9pbnRzPXtwb2ludDp0aGlzLnRyYW5zZm9ybVBvaW50KHQsaSksYm94OmEsdHJhbnNmb3JtOnRoaXMuZWwudHJhbnNmb3JtKCl9LFNWRy5vbih3aW5kb3csXCJtb3VzZW1vdmUuZHJhZ1wiLChmdW5jdGlvbih0KXtlLmRyYWcodCl9KSksU1ZHLm9uKHdpbmRvdyxcInRvdWNobW92ZS5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZHJhZyh0KX0pKSxTVkcub24od2luZG93LFwibW91c2V1cC5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZW5kKHQpfSkpLFNWRy5vbih3aW5kb3csXCJ0b3VjaGVuZC5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZW5kKHQpfSkpLHRoaXMuZWwuZmlyZShcImRyYWdzdGFydFwiLHtldmVudDp0LHA6dGhpcy5zdGFydFBvaW50cy5wb2ludCxtOnRoaXMubSxoYW5kbGVyOnRoaXN9KX19fSx0LnByb3RvdHlwZS5kcmFnPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0QkJveCgpLGk9dGhpcy50cmFuc2Zvcm1Qb2ludCh0KSxhPXRoaXMuc3RhcnRQb2ludHMuYm94LngraS54LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueCxzPXRoaXMuc3RhcnRQb2ludHMuYm94LnkraS55LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueSxyPXRoaXMuY29uc3RyYWludCxvPWkueC10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lngsbj1pLnktdGhpcy5zdGFydFBvaW50cy5wb2ludC55O2lmKHRoaXMuZWwuZmlyZShcImRyYWdtb3ZlXCIse2V2ZW50OnQscDppLG06dGhpcy5tLGhhbmRsZXI6dGhpc30pLHRoaXMuZWwuZXZlbnQoKS5kZWZhdWx0UHJldmVudGVkKXJldHVybiBpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpe3ZhciBsPXIuY2FsbCh0aGlzLmVsLGEscyx0aGlzLm0pO1wiYm9vbGVhblwiPT10eXBlb2YgbCYmKGw9e3g6bCx5Omx9KSwhMD09PWwueD90aGlzLmVsLngoYSk6ITEhPT1sLngmJnRoaXMuZWwueChsLngpLCEwPT09bC55P3RoaXMuZWwueShzKTohMSE9PWwueSYmdGhpcy5lbC55KGwueSl9ZWxzZVwib2JqZWN0XCI9PXR5cGVvZiByJiYobnVsbCE9ci5taW5YJiZhPHIubWluWD9vPShhPXIubWluWCktdGhpcy5zdGFydFBvaW50cy5ib3gueDpudWxsIT1yLm1heFgmJmE+ci5tYXhYLWUud2lkdGgmJihvPShhPXIubWF4WC1lLndpZHRoKS10aGlzLnN0YXJ0UG9pbnRzLmJveC54KSxudWxsIT1yLm1pblkmJnM8ci5taW5ZP249KHM9ci5taW5ZKS10aGlzLnN0YXJ0UG9pbnRzLmJveC55Om51bGwhPXIubWF4WSYmcz5yLm1heFktZS5oZWlnaHQmJihuPShzPXIubWF4WS1lLmhlaWdodCktdGhpcy5zdGFydFBvaW50cy5ib3gueSksbnVsbCE9ci5zbmFwVG9HcmlkJiYoYS09YSVyLnNuYXBUb0dyaWQscy09cyVyLnNuYXBUb0dyaWQsby09byVyLnNuYXBUb0dyaWQsbi09biVyLnNuYXBUb0dyaWQpLHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuRz90aGlzLmVsLm1hdHJpeCh0aGlzLnN0YXJ0UG9pbnRzLnRyYW5zZm9ybSkudHJhbnNmb3JtKHt4Om8seTpufSwhMCk6dGhpcy5lbC5tb3ZlKGEscykpO3JldHVybiBpfSx0LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kcmFnKHQpO3RoaXMuZWwuZmlyZShcImRyYWdlbmRcIix7ZXZlbnQ6dCxwOmUsbTp0aGlzLm0saGFuZGxlcjp0aGlzfSksU1ZHLm9mZih3aW5kb3csXCJtb3VzZW1vdmUuZHJhZ1wiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNobW92ZS5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwibW91c2V1cC5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2hlbmQuZHJhZ1wiKX0sU1ZHLmV4dGVuZChTVkcuRWxlbWVudCx7ZHJhZ2dhYmxlOmZ1bmN0aW9uKGUsaSl7XCJmdW5jdGlvblwiIT10eXBlb2YgZSYmXCJvYmplY3RcIiE9dHlwZW9mIGV8fChpPWUsZT0hMCk7dmFyIGE9dGhpcy5yZW1lbWJlcihcIl9kcmFnZ2FibGVcIil8fG5ldyB0KHRoaXMpO3JldHVybihlPXZvaWQgMD09PWV8fGUpP2EuaW5pdChpfHx7fSxlKToodGhpcy5vZmYoXCJtb3VzZWRvd24uZHJhZ1wiKSx0aGlzLm9mZihcInRvdWNoc3RhcnQuZHJhZ1wiKSksdGhpc319KX0uY2FsbCh2b2lkIDApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmVsPXQsdC5yZW1lbWJlcihcIl9zZWxlY3RIYW5kbGVyXCIsdGhpcyksdGhpcy5wb2ludFNlbGVjdGlvbj17aXNTZWxlY3RlZDohMX0sdGhpcy5yZWN0U2VsZWN0aW9uPXtpc1NlbGVjdGVkOiExfSx0aGlzLnBvaW50c0xpc3Q9e2x0OlswLDBdLHJ0OltcIndpZHRoXCIsMF0scmI6W1wid2lkdGhcIixcImhlaWdodFwiXSxsYjpbMCxcImhlaWdodFwiXSx0OltcIndpZHRoXCIsMF0scjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGI6W1wid2lkdGhcIixcImhlaWdodFwiXSxsOlswLFwiaGVpZ2h0XCJdfSx0aGlzLnBvaW50Q29vcmQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBhPVwic3RyaW5nXCIhPXR5cGVvZiB0P3Q6ZVt0XTtyZXR1cm4gaT9hLzI6YX0sdGhpcy5wb2ludENvb3Jkcz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMucG9pbnRzTGlzdFt0XTtyZXR1cm57eDp0aGlzLnBvaW50Q29vcmQoaVswXSxlLFwidFwiPT09dHx8XCJiXCI9PT10KSx5OnRoaXMucG9pbnRDb29yZChpWzFdLGUsXCJyXCI9PT10fHxcImxcIj09PXQpfX19dC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZWwuYmJveCgpO3RoaXMub3B0aW9ucz17fTt2YXIgYT10aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0cy5wb2ludHM7Zm9yKHZhciBzIGluIHRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzKXRoaXMub3B0aW9uc1tzXT10aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0c1tzXSx2b2lkIDAhPT1lW3NdJiYodGhpcy5vcHRpb25zW3NdPWVbc10pO3ZhciByPVtcInBvaW50c1wiLFwicG9pbnRzRXhjbHVkZVwiXTtmb3IodmFyIHMgaW4gcil7dmFyIG89dGhpcy5vcHRpb25zW3Jbc11dO1wic3RyaW5nXCI9PXR5cGVvZiBvP289by5sZW5ndGg+MD9vLnNwbGl0KC9cXHMqLFxccyovaSk6W106XCJib29sZWFuXCI9PXR5cGVvZiBvJiZcInBvaW50c1wiPT09cltzXSYmKG89bz9hOltdKSx0aGlzLm9wdGlvbnNbcltzXV09b310aGlzLm9wdGlvbnMucG9pbnRzPVthLHRoaXMub3B0aW9ucy5wb2ludHNdLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluZGV4T2YodCk+LTF9KSl9KSksdGhpcy5vcHRpb25zLnBvaW50cz1bdGhpcy5vcHRpb25zLnBvaW50cyx0aGlzLm9wdGlvbnMucG9pbnRzRXhjbHVkZV0ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5kZXhPZih0KTwwfSkpfSkpLHRoaXMucGFyZW50PXRoaXMuZWwucGFyZW50KCksdGhpcy5uZXN0ZWQ9dGhpcy5uZXN0ZWR8fHRoaXMucGFyZW50Lmdyb3VwKCksdGhpcy5uZXN0ZWQubWF0cml4KG5ldyBTVkcuTWF0cml4KHRoaXMuZWwpLnRyYW5zbGF0ZShpLngsaS55KSksdGhpcy5vcHRpb25zLmRlZXBTZWxlY3QmJi0xIT09W1wibGluZVwiLFwicG9seWxpbmVcIixcInBvbHlnb25cIl0uaW5kZXhPZih0aGlzLmVsLnR5cGUpP3RoaXMuc2VsZWN0UG9pbnRzKHQpOnRoaXMuc2VsZWN0UmVjdCh0KSx0aGlzLm9ic2VydmUoKSx0aGlzLmNsZWFudXAoKX0sdC5wcm90b3R5cGUuc2VsZWN0UG9pbnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQ9dCx0aGlzLnBvaW50U2VsZWN0aW9uLnNldHx8KHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0PXRoaXMucGFyZW50LnNldCgpLHRoaXMuZHJhd1BvaW50cygpKSx0aGlzfSx0LnByb3RvdHlwZS5nZXRQb2ludEFycmF5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbC5iYm94KCk7cmV0dXJuIHRoaXMuZWwuYXJyYXkoKS52YWx1ZU9mKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZVswXS10LngsZVsxXS10LnldfSkpfSx0LnByb3RvdHlwZS5kcmF3UG9pbnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLmdldFBvaW50QXJyYXkoKSxpPTAsYT1lLmxlbmd0aDtpPGE7KytpKXt2YXIgcz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oaSl7KGk9aXx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9pLnByZXZlbnREZWZhdWx0KCk6aS5yZXR1cm5WYWx1ZT0hMSxpLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBhPWkucGFnZVh8fGkudG91Y2hlc1swXS5wYWdlWCxzPWkucGFnZVl8fGkudG91Y2hlc1swXS5wYWdlWTt0LmVsLmZpcmUoXCJwb2ludFwiLHt4OmEseTpzLGk6ZSxldmVudDppfSl9fShpKSxyPXRoaXMuZHJhd1BvaW50KGVbaV1bMF0sZVtpXVsxXSkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMrXCJfcG9pbnRcIikub24oXCJ0b3VjaHN0YXJ0XCIscykub24oXCJtb3VzZWRvd25cIixzKTt0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5hZGQocil9fSx0LnByb3RvdHlwZS5kcmF3UG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLm9wdGlvbnMucG9pbnRUeXBlO3N3aXRjaChpKXtjYXNlXCJjaXJjbGVcIjpyZXR1cm4gdGhpcy5kcmF3Q2lyY2xlKHQsZSk7Y2FzZVwicmVjdFwiOnJldHVybiB0aGlzLmRyYXdSZWN0KHQsZSk7ZGVmYXVsdDppZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpKXJldHVybiBpLmNhbGwodGhpcyx0LGUpO3Rocm93IG5ldyBFcnJvcihcIlVua25vd24gXCIraStcIiBwb2ludCB0eXBlIVwiKX19LHQucHJvdG90eXBlLmRyYXdDaXJjbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5uZXN0ZWQuY2lyY2xlKHRoaXMub3B0aW9ucy5wb2ludFNpemUpLmNlbnRlcih0LGUpfSx0LnByb3RvdHlwZS5kcmF3UmVjdD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm5lc3RlZC5yZWN0KHRoaXMub3B0aW9ucy5wb2ludFNpemUsdGhpcy5vcHRpb25zLnBvaW50U2l6ZSkuY2VudGVyKHQsZSl9LHQucHJvdG90eXBlLnVwZGF0ZVBvaW50U2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRQb2ludEFycmF5KCk7dGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oZSl7dGhpcy5jeCgpPT09dFtlXVswXSYmdGhpcy5jeSgpPT09dFtlXVsxXXx8dGhpcy5jZW50ZXIodFtlXVswXSx0W2VdWzFdKX0pKX0sdC5wcm90b3R5cGUudXBkYXRlUmVjdFNlbGVjdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLmVsLmJib3goKTtpZih0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgwKS5hdHRyKHt3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH0pLHRoaXMub3B0aW9ucy5wb2ludHMubGVuZ3RoJiZ0aGlzLm9wdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24oaSxhKXt2YXIgcz10LnBvaW50Q29vcmRzKGksZSk7dC5yZWN0U2VsZWN0aW9uLnNldC5nZXQoYSsxKS5jZW50ZXIocy54LHMueSl9KSksdGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQpe3ZhciBpPXRoaXMucmVjdFNlbGVjdGlvbi5zZXQubGVuZ3RoKCk7dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoaS0xKS5jZW50ZXIoZS53aWR0aC8yLDIwKX19LHQucHJvdG90eXBlLnNlbGVjdFJlY3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMuZWwuYmJveCgpO2Z1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKGkpeyhpPWl8fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/aS5wcmV2ZW50RGVmYXVsdCgpOmkucmV0dXJuVmFsdWU9ITEsaS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgYT1pLnBhZ2VYfHxpLnRvdWNoZXNbMF0ucGFnZVgscz1pLnBhZ2VZfHxpLnRvdWNoZXNbMF0ucGFnZVk7ZS5lbC5maXJlKHQse3g6YSx5OnMsZXZlbnQ6aX0pfX1pZih0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZD10LHRoaXMucmVjdFNlbGVjdGlvbi5zZXQ9dGhpcy5yZWN0U2VsZWN0aW9uLnNldHx8dGhpcy5wYXJlbnQuc2V0KCksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMCl8fHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHRoaXMubmVzdGVkLnJlY3QoaS53aWR0aCxpLmhlaWdodCkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUmVjdCkpLHRoaXMub3B0aW9ucy5wb2ludHMubGVuZ3RoJiZ0aGlzLnJlY3RTZWxlY3Rpb24uc2V0Lmxlbmd0aCgpPDIpe3RoaXMub3B0aW9ucy5wb2ludHMubWFwKChmdW5jdGlvbih0LHMpe3ZhciByPWUucG9pbnRDb29yZHModCxpKSxvPWUuZHJhd1BvaW50KHIueCxyLnkpLmF0dHIoXCJjbGFzc1wiLGUub3B0aW9ucy5jbGFzc1BvaW50cytcIl9cIit0KS5vbihcIm1vdXNlZG93blwiLGEodCkpLm9uKFwidG91Y2hzdGFydFwiLGEodCkpO2UucmVjdFNlbGVjdGlvbi5zZXQuYWRkKG8pfSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLmFkZENsYXNzKGUub3B0aW9ucy5jbGFzc1BvaW50cyl9KSl9aWYodGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQmJih0aGlzLm9wdGlvbnMucG9pbnRzJiYhdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoOSl8fCF0aGlzLm9wdGlvbnMucG9pbnRzJiYhdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMSkpKXt2YXIgcz1mdW5jdGlvbih0KXsodD10fHx3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0P3QucHJldmVudERlZmF1bHQoKTp0LnJldHVyblZhbHVlPSExLHQuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGk9dC5wYWdlWHx8dC50b3VjaGVzWzBdLnBhZ2VYLGE9dC5wYWdlWXx8dC50b3VjaGVzWzBdLnBhZ2VZO2UuZWwuZmlyZShcInJvdFwiLHt4OmkseTphLGV2ZW50OnR9KX0scj10aGlzLmRyYXdQb2ludChpLndpZHRoLzIsMjApLmF0dHIoXCJjbGFzc1wiLHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cytcIl9yb3RcIikub24oXCJ0b3VjaHN0YXJ0XCIscykub24oXCJtb3VzZWRvd25cIixzKTt0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZChyKX19LHQucHJvdG90eXBlLmhhbmRsZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTt0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKHQueCx0LnkpKSx0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy51cGRhdGVSZWN0U2VsZWN0aW9uKCksdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnVwZGF0ZVBvaW50U2VsZWN0aW9uKCl9LHQucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKE11dGF0aW9uT2JzZXJ2ZXIpaWYodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCl0aGlzLm9ic2VydmVySW5zdD10aGlzLm9ic2VydmVySW5zdHx8bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKCl7dC5oYW5kbGVyKCl9KSksdGhpcy5vYnNlcnZlckluc3Qub2JzZXJ2ZSh0aGlzLmVsLm5vZGUse2F0dHJpYnV0ZXM6ITB9KTtlbHNlIHRyeXt0aGlzLm9ic2VydmVySW5zdC5kaXNjb25uZWN0KCksZGVsZXRlIHRoaXMub2JzZXJ2ZXJJbnN0fWNhdGNoKHQpe31lbHNlIHRoaXMuZWwub2ZmKFwiRE9NQXR0ck1vZGlmaWVkLnNlbGVjdFwiKSwodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCkmJnRoaXMuZWwub24oXCJET01BdHRyTW9kaWZpZWQuc2VsZWN0XCIsKGZ1bmN0aW9uKCl7dC5oYW5kbGVyKCl9KSl9LHQucHJvdG90eXBlLmNsZWFudXA9ZnVuY3Rpb24oKXshdGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMucmVjdFNlbGVjdGlvbi5zZXQmJih0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmUoKX0pKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmNsZWFyKCksZGVsZXRlIHRoaXMucmVjdFNlbGVjdGlvbi5zZXQpLCF0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMucG9pbnRTZWxlY3Rpb24uc2V0JiYodGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfSkpLHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmNsZWFyKCksZGVsZXRlIHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0KSx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkfHwodGhpcy5uZXN0ZWQucmVtb3ZlKCksZGVsZXRlIHRoaXMubmVzdGVkKX0sU1ZHLmV4dGVuZChTVkcuRWxlbWVudCx7c2VsZWN0aXplOmZ1bmN0aW9uKGUsaSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJihpPWUsZT0hMCksKHRoaXMucmVtZW1iZXIoXCJfc2VsZWN0SGFuZGxlclwiKXx8bmV3IHQodGhpcykpLmluaXQodm9pZCAwPT09ZXx8ZSxpfHx7fSksdGhpc319KSxTVkcuRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0aXplLmRlZmF1bHRzPXtwb2ludHM6W1wibHRcIixcInJ0XCIsXCJyYlwiLFwibGJcIixcInRcIixcInJcIixcImJcIixcImxcIl0scG9pbnRzRXhjbHVkZTpbXSxjbGFzc1JlY3Q6XCJzdmdfc2VsZWN0X2JvdW5kaW5nUmVjdFwiLGNsYXNzUG9pbnRzOlwic3ZnX3NlbGVjdF9wb2ludHNcIixwb2ludFNpemU6Nyxyb3RhdGlvblBvaW50OiEwLGRlZXBTZWxlY3Q6ITEscG9pbnRUeXBlOlwiY2lyY2xlXCJ9fSgpLGZ1bmN0aW9uKCl7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0LnJlbWVtYmVyKFwiX3Jlc2l6ZUhhbmRsZXJcIix0aGlzKSx0aGlzLmVsPXQsdGhpcy5wYXJhbWV0ZXJzPXt9LHRoaXMubGFzdFVwZGF0ZUNhbGw9bnVsbCx0aGlzLnA9dC5kb2MoKS5ub2RlLmNyZWF0ZVNWR1BvaW50KCl9dC5wcm90b3R5cGUudHJhbnNmb3JtUG9pbnQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnAueD10LSh0aGlzLm9mZnNldC54LXdpbmRvdy5wYWdlWE9mZnNldCksdGhpcy5wLnk9ZS0odGhpcy5vZmZzZXQueS13aW5kb3cucGFnZVlPZmZzZXQpLHRoaXMucC5tYXRyaXhUcmFuc2Zvcm0oaXx8dGhpcy5tKX0sdC5wcm90b3R5cGUuX2V4dHJhY3RQb3NpdGlvbj1mdW5jdGlvbih0KXtyZXR1cm57eDpudWxsIT10LmNsaWVudFg/dC5jbGllbnRYOnQudG91Y2hlc1swXS5jbGllbnRYLHk6bnVsbCE9dC5jbGllbnRZP3QuY2xpZW50WTp0LnRvdWNoZXNbMF0uY2xpZW50WX19LHQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0aGlzLnN0b3AoKSxcInN0b3BcIiE9PXQpe2Zvcih2YXIgaSBpbiB0aGlzLm9wdGlvbnM9e30sdGhpcy5lbC5yZXNpemUuZGVmYXVsdHMpdGhpcy5vcHRpb25zW2ldPXRoaXMuZWwucmVzaXplLmRlZmF1bHRzW2ldLHZvaWQgMCE9PXRbaV0mJih0aGlzLm9wdGlvbnNbaV09dFtpXSk7dGhpcy5lbC5vbihcImx0LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJydC5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwicmIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcImxiLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJ0LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJyLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJiLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJsLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJyb3QucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInBvaW50LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMudXBkYXRlKCl9fSx0LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWwub2ZmKFwibHQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicnQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicmIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwibGIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwidC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcImIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwibC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyb3QucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicG9pbnQucmVzaXplXCIpLHRoaXN9LHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMubT10aGlzLmVsLm5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpLHRoaXMub2Zmc2V0PXt4OndpbmRvdy5wYWdlWE9mZnNldCx5OndpbmRvdy5wYWdlWU9mZnNldH07dmFyIGk9dGhpcy5fZXh0cmFjdFBvc2l0aW9uKHQuZGV0YWlsLmV2ZW50KTtpZih0aGlzLnBhcmFtZXRlcnM9e3R5cGU6dGhpcy5lbC50eXBlLHA6dGhpcy50cmFuc2Zvcm1Qb2ludChpLngsaS55KSx4OnQuZGV0YWlsLngseTp0LmRldGFpbC55LGJveDp0aGlzLmVsLmJib3goKSxyb3RhdGlvbjp0aGlzLmVsLnRyYW5zZm9ybSgpLnJvdGF0aW9ufSxcInRleHRcIj09PXRoaXMuZWwudHlwZSYmKHRoaXMucGFyYW1ldGVycy5mb250U2l6ZT10aGlzLmVsLmF0dHIoKVtcImZvbnQtc2l6ZVwiXSksdm9pZCAwIT09dC5kZXRhaWwuaSl7dmFyIGE9dGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKTt0aGlzLnBhcmFtZXRlcnMuaT10LmRldGFpbC5pLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkcz1bYVt0LmRldGFpbC5pXVswXSxhW3QuZGV0YWlsLmldWzFdXX1zd2l0Y2godC50eXBlKXtjYXNlXCJsdFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLWlbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGkpLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJydFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMik7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUraVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSwhMCksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJyYlwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMCk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUraVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZVwibGJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDEpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLWlbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGksITApLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZVwidFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMik7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueStpWzFdKS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJyXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLndpZHRoKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXSl9fTticmVhaztjYXNlXCJiXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlXCJsXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwxKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSkud2lkdGgodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdKX19O2JyZWFrO2Nhc2VcInJvdFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXQrdGhpcy5wYXJhbWV0ZXJzLnAueCxhPWUrdGhpcy5wYXJhbWV0ZXJzLnAueSxzPU1hdGguYXRhbjIodGhpcy5wYXJhbWV0ZXJzLnAueS10aGlzLnBhcmFtZXRlcnMuYm94LnktdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQvMix0aGlzLnBhcmFtZXRlcnMucC54LXRoaXMucGFyYW1ldGVycy5ib3gueC10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLzIpLHI9TWF0aC5hdGFuMihhLXRoaXMucGFyYW1ldGVycy5ib3gueS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC8yLGktdGhpcy5wYXJhbWV0ZXJzLmJveC54LXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvMiksbz10aGlzLnBhcmFtZXRlcnMucm90YXRpb24rMTgwKihyLXMpL01hdGguUEkrdGhpcy5vcHRpb25zLnNuYXBUb0FuZ2xlLzI7dGhpcy5lbC5jZW50ZXIodGhpcy5wYXJhbWV0ZXJzLmJveC5jeCx0aGlzLnBhcmFtZXRlcnMuYm94LmN5KS5yb3RhdGUoby1vJXRoaXMub3B0aW9ucy5zbmFwVG9BbmdsZSx0aGlzLnBhcmFtZXRlcnMuYm94LmN4LHRoaXMucGFyYW1ldGVycy5ib3guY3kpfTticmVhaztjYXNlXCJwb2ludFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzBdLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXSksYT10aGlzLmVsLmFycmF5KCkudmFsdWVPZigpO2FbdGhpcy5wYXJhbWV0ZXJzLmldWzBdPXRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1swXStpWzBdLGFbdGhpcy5wYXJhbWV0ZXJzLmldWzFdPXRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXStpWzFdLHRoaXMuZWwucGxvdChhKX19dGhpcy5lbC5maXJlKFwicmVzaXplc3RhcnRcIix7ZHg6dGhpcy5wYXJhbWV0ZXJzLngsZHk6dGhpcy5wYXJhbWV0ZXJzLnksZXZlbnQ6dH0pLFNWRy5vbih3aW5kb3csXCJ0b3VjaG1vdmUucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UudXBkYXRlKHR8fHdpbmRvdy5ldmVudCl9KSksU1ZHLm9uKHdpbmRvdyxcInRvdWNoZW5kLnJlc2l6ZVwiLChmdW5jdGlvbigpe2UuZG9uZSgpfSkpLFNWRy5vbih3aW5kb3csXCJtb3VzZW1vdmUucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UudXBkYXRlKHR8fHdpbmRvdy5ldmVudCl9KSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNldXAucmVzaXplXCIsKGZ1bmN0aW9uKCl7ZS5kb25lKCl9KSl9LHQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZih0KXt2YXIgZT10aGlzLl9leHRyYWN0UG9zaXRpb24odCksaT10aGlzLnRyYW5zZm9ybVBvaW50KGUueCxlLnkpLGE9aS54LXRoaXMucGFyYW1ldGVycy5wLngscz1pLnktdGhpcy5wYXJhbWV0ZXJzLnAueTt0aGlzLmxhc3RVcGRhdGVDYWxsPVthLHNdLHRoaXMuY2FsYyhhLHMpLHRoaXMuZWwuZmlyZShcInJlc2l6aW5nXCIse2R4OmEsZHk6cyxldmVudDp0fSl9ZWxzZSB0aGlzLmxhc3RVcGRhdGVDYWxsJiZ0aGlzLmNhbGModGhpcy5sYXN0VXBkYXRlQ2FsbFswXSx0aGlzLmxhc3RVcGRhdGVDYWxsWzFdKX0sdC5wcm90b3R5cGUuZG9uZT1mdW5jdGlvbigpe3RoaXMubGFzdFVwZGF0ZUNhbGw9bnVsbCxTVkcub2ZmKHdpbmRvdyxcIm1vdXNlbW92ZS5yZXNpemVcIiksU1ZHLm9mZih3aW5kb3csXCJtb3VzZXVwLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNobW92ZS5yZXNpemVcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaGVuZC5yZXNpemVcIiksdGhpcy5lbC5maXJlKFwicmVzaXplZG9uZVwiKX0sdC5wcm90b3R5cGUuc25hcFRvR3JpZD1mdW5jdGlvbih0LGUsaSxhKXt2YXIgcztyZXR1cm4gdm9pZCAwIT09YT9zPVsoaSt0KSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCwoYStlKSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZF06KGk9bnVsbD09aT8zOmkscz1bKHRoaXMucGFyYW1ldGVycy5ib3gueCt0KygxJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWQsKHRoaXMucGFyYW1ldGVycy5ib3gueStlKygyJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCkpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkXSksdDwwJiYoc1swXS09dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLGU8MCYmKHNbMV0tPXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSx0LT1NYXRoLmFicyhzWzBdKTx0aGlzLm9wdGlvbnMuc25hcFRvR3JpZC8yP3NbMF06c1swXS0odDwwPy10aGlzLm9wdGlvbnMuc25hcFRvR3JpZDp0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksZS09TWF0aC5hYnMoc1sxXSk8dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQvMj9zWzFdOnNbMV0tKGU8MD8tdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQ6dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLHRoaXMuY29uc3RyYWludFRvQm94KHQsZSxpLGEpfSx0LnByb3RvdHlwZS5jb25zdHJhaW50VG9Cb3g9ZnVuY3Rpb24odCxlLGksYSl7dmFyIHMscixvPXRoaXMub3B0aW9ucy5jb25zdHJhaW50fHx7fTtyZXR1cm4gdm9pZCAwIT09YT8ocz1pLHI9YSk6KHM9dGhpcy5wYXJhbWV0ZXJzLmJveC54KygxJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSxyPXRoaXMucGFyYW1ldGVycy5ib3gueSsoMiZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQpKSx2b2lkIDAhPT1vLm1pblgmJnMrdDxvLm1pblgmJih0PW8ubWluWC1zKSx2b2lkIDAhPT1vLm1heFgmJnMrdD5vLm1heFgmJih0PW8ubWF4WC1zKSx2b2lkIDAhPT1vLm1pblkmJnIrZTxvLm1pblkmJihlPW8ubWluWS1yKSx2b2lkIDAhPT1vLm1heFkmJnIrZT5vLm1heFkmJihlPW8ubWF4WS1yKSxbdCxlXX0sdC5wcm90b3R5cGUuY2hlY2tBc3BlY3RSYXRpbz1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLm9wdGlvbnMuc2F2ZUFzcGVjdFJhdGlvKXJldHVybiB0O3ZhciBpPXQuc2xpY2UoKSxhPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQscz10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK3RbMF0scj10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC10WzFdLG89cy9yO3JldHVybiBvPGE/KGlbMV09cy9hLXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LGUmJihpWzFdPS1pWzFdKSk6bz5hJiYoaVswXT10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLXIqYSxlJiYoaVswXT0taVswXSkpLGl9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse3Jlc2l6ZTpmdW5jdGlvbihlKXtyZXR1cm4odGhpcy5yZW1lbWJlcihcIl9yZXNpemVIYW5kbGVyXCIpfHxuZXcgdCh0aGlzKSkuaW5pdChlfHx7fSksdGhpc319KSxTVkcuRWxlbWVudC5wcm90b3R5cGUucmVzaXplLmRlZmF1bHRzPXtzbmFwVG9BbmdsZTouMSxzbmFwVG9HcmlkOjEsY29uc3RyYWludDp7fSxzYXZlQXNwZWN0UmF0aW86ITF9fSkuY2FsbCh0aGlzKX0oKSx2b2lkIDA9PT13aW5kb3cuQXBleCYmKHdpbmRvdy5BcGV4PXt9KTt2YXIgR3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImluaXRNb2R1bGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmN0eC5wdWJsaWNNZXRob2RzPVtcInVwZGF0ZU9wdGlvbnNcIixcInVwZGF0ZVNlcmllc1wiLFwiYXBwZW5kRGF0YVwiLFwiYXBwZW5kU2VyaWVzXCIsXCJpc1Nlcmllc0hpZGRlblwiLFwidG9nZ2xlU2VyaWVzXCIsXCJzaG93U2VyaWVzXCIsXCJoaWRlU2VyaWVzXCIsXCJzZXRMb2NhbGVcIixcInJlc2V0U2VyaWVzXCIsXCJ6b29tWFwiLFwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCIsXCJkYXRhVVJJXCIsXCJleHBvcnRUb0NTVlwiLFwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsXCJhZGRZYXhpc0Fubm90YXRpb25cIixcImFkZFBvaW50QW5ub3RhdGlvblwiLFwiY2xlYXJBbm5vdGF0aW9uc1wiLFwicmVtb3ZlQW5ub3RhdGlvblwiLFwicGFwZXJcIixcImRlc3Ryb3lcIl0sdGhpcy5jdHguZXZlbnRMaXN0PVtcImNsaWNrXCIsXCJtb3VzZWRvd25cIixcIm1vdXNlbW92ZVwiLFwibW91c2VsZWF2ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJ0b3VjaGxlYXZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaGVuZFwiXSx0aGlzLmN0eC5hbmltYXRpb25zPW5ldyBiKHRoaXMuY3R4KSx0aGlzLmN0eC5heGVzPW5ldyBKKHRoaXMuY3R4KSx0aGlzLmN0eC5jb3JlPW5ldyBXdCh0aGlzLmN0eC5lbCx0aGlzLmN0eCksdGhpcy5jdHguY29uZmlnPW5ldyBFKHt9KSx0aGlzLmN0eC5kYXRhPW5ldyBXKHRoaXMuY3R4KSx0aGlzLmN0eC5ncmlkPW5ldyBqKHRoaXMuY3R4KSx0aGlzLmN0eC5ncmFwaGljcz1uZXcgbSh0aGlzLmN0eCksdGhpcy5jdHguY29yZVV0aWxzPW5ldyB5KHRoaXMuY3R4KSx0aGlzLmN0eC5jcm9zc2hhaXJzPW5ldyBRKHRoaXMuY3R4KSx0aGlzLmN0eC5ldmVudHM9bmV3IFoodGhpcy5jdHgpLHRoaXMuY3R4LmV4cG9ydHM9bmV3IEcodGhpcy5jdHgpLHRoaXMuY3R4LmxvY2FsaXphdGlvbj1uZXcgJCh0aGlzLmN0eCksdGhpcy5jdHgub3B0aW9ucz1uZXcgTCx0aGlzLmN0eC5yZXNwb25zaXZlPW5ldyBLKHRoaXMuY3R4KSx0aGlzLmN0eC5zZXJpZXM9bmV3IE4odGhpcy5jdHgpLHRoaXMuY3R4LnRoZW1lPW5ldyB0dCh0aGlzLmN0eCksdGhpcy5jdHguZm9ybWF0dGVycz1uZXcgTSh0aGlzLmN0eCksdGhpcy5jdHgudGl0bGVTdWJ0aXRsZT1uZXcgZXQodGhpcy5jdHgpLHRoaXMuY3R4LmxlZ2VuZD1uZXcgbHQodGhpcy5jdHgpLHRoaXMuY3R4LnRvb2xiYXI9bmV3IGh0KHRoaXMuY3R4KSx0aGlzLmN0eC50b29sdGlwPW5ldyBidCh0aGlzLmN0eCksdGhpcy5jdHguZGltZW5zaW9ucz1uZXcgb3QodGhpcy5jdHgpLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnM9bmV3IEJ0KHRoaXMuY3R4KSx0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uPW5ldyBjdCh0aGlzLmN0eCksdGhpcy5jdHgudy5nbG9iYWxzLnRvb2x0aXA9bmV3IGJ0KHRoaXMuY3R4KX19XSksdH0oKSxWdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiY2xlYXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmlzVXBkYXRpbmc7dGhpcy5jdHguem9vbVBhblNlbGVjdGlvbiYmdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbi5kZXN0cm95KCksdGhpcy5jdHgudG9vbGJhciYmdGhpcy5jdHgudG9vbGJhci5kZXN0cm95KCksdGhpcy5jdHguYW5pbWF0aW9ucz1udWxsLHRoaXMuY3R4LmF4ZXM9bnVsbCx0aGlzLmN0eC5hbm5vdGF0aW9ucz1udWxsLHRoaXMuY3R4LmNvcmU9bnVsbCx0aGlzLmN0eC5kYXRhPW51bGwsdGhpcy5jdHguZ3JpZD1udWxsLHRoaXMuY3R4LnNlcmllcz1udWxsLHRoaXMuY3R4LnJlc3BvbnNpdmU9bnVsbCx0aGlzLmN0eC50aGVtZT1udWxsLHRoaXMuY3R4LmZvcm1hdHRlcnM9bnVsbCx0aGlzLmN0eC50aXRsZVN1YnRpdGxlPW51bGwsdGhpcy5jdHgubGVnZW5kPW51bGwsdGhpcy5jdHguZGltZW5zaW9ucz1udWxsLHRoaXMuY3R4Lm9wdGlvbnM9bnVsbCx0aGlzLmN0eC5jcm9zc2hhaXJzPW51bGwsdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbj1udWxsLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnM9bnVsbCx0aGlzLmN0eC50b29sYmFyPW51bGwsdGhpcy5jdHgubG9jYWxpemF0aW9uPW51bGwsdGhpcy5jdHgudy5nbG9iYWxzLnRvb2x0aXA9bnVsbCx0aGlzLmNsZWFyRG9tRWxlbWVudHMoe2lzVXBkYXRpbmc6ZX0pfX0se2tleTpcImtpbGxTVkdcIix2YWx1ZTpmdW5jdGlvbih0KXt0LmVhY2goKGZ1bmN0aW9uKHQsZSl7dGhpcy5yZW1vdmVDbGFzcyhcIipcIiksdGhpcy5vZmYoKSx0aGlzLnN0b3AoKX0pLCEwKSx0LnVuZ3JvdXAoKSx0LmNsZWFyKCl9fSx7a2V5OlwiY2xlYXJEb21FbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10LmlzVXBkYXRpbmcsYT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIubm9kZTthLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5wYXJlbnROb2RlJiYhaSYmKGEucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD1cInVuc2V0XCIpO3ZhciBzPXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWw7cyYmdGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3MucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUuY3R4LmV2ZW50cy5kb2N1bWVudEV2ZW50KX0pKTt2YXIgcj10aGlzLncuZ2xvYmFscy5kb207aWYobnVsbCE9PXRoaXMuY3R4LmVsKWZvcig7dGhpcy5jdHguZWwuZmlyc3RDaGlsZDspdGhpcy5jdHguZWwucmVtb3ZlQ2hpbGQodGhpcy5jdHguZWwuZmlyc3RDaGlsZCk7dGhpcy5raWxsU1ZHKHIuUGFwZXIpLHIuUGFwZXIucmVtb3ZlKCksci5lbFdyYXA9bnVsbCxyLmVsR3JhcGhpY2FsPW51bGwsci5lbExlZ2VuZFdyYXA9bnVsbCxyLmVsTGVnZW5kRm9yZWlnbj1udWxsLHIuYmFzZUVsPW51bGwsci5lbEdyaWRSZWN0PW51bGwsci5lbEdyaWRSZWN0TWFzaz1udWxsLHIuZWxHcmlkUmVjdE1hcmtlck1hc2s9bnVsbCxyLmVsRm9yZWNhc3RNYXNrPW51bGwsci5lbE5vbkZvcmVjYXN0TWFzaz1udWxsLHIuZWxEZWZzPW51bGx9fV0pLHR9KCksanQ9bmV3IFdlYWtNYXA7dmFyIF90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLm9wdHM9aSx0aGlzLmN0eD10aGlzLHRoaXMudz1uZXcgRihpKS5pbml0KCksdGhpcy5lbD1lLHRoaXMudy5nbG9iYWxzLmN1aWQ9eC5yYW5kb21JZCgpLHRoaXMudy5nbG9iYWxzLmNoYXJ0SUQ9dGhpcy53LmNvbmZpZy5jaGFydC5pZD94LmVzY2FwZVN0cmluZyh0aGlzLncuY29uZmlnLmNoYXJ0LmlkKTp0aGlzLncuZ2xvYmFscy5jdWlkLG5ldyBHdCh0aGlzKS5pbml0TW9kdWxlcygpLHRoaXMuY3JlYXRlPXguYmluZCh0aGlzLmNyZWF0ZSx0aGlzKSx0aGlzLndpbmRvd1Jlc2l6ZUhhbmRsZXI9dGhpcy5fd2luZG93UmVzaXplSGFuZGxlci5iaW5kKHRoaXMpLHRoaXMucGFyZW50UmVzaXplSGFuZGxlcj10aGlzLl9wYXJlbnRSZXNpemVDYWxsYmFjay5iaW5kKHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpe2lmKG51bGwhPT10LmVsKXt2b2lkIDA9PT1BcGV4Ll9jaGFydEluc3RhbmNlcyYmKEFwZXguX2NoYXJ0SW5zdGFuY2VzPVtdKSx0LncuY29uZmlnLmNoYXJ0LmlkJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5wdXNoKHtpZDp0LncuZ2xvYmFscy5jaGFydElELGdyb3VwOnQudy5jb25maWcuY2hhcnQuZ3JvdXAsY2hhcnQ6dH0pLHQuc2V0TG9jYWxlKHQudy5jb25maWcuY2hhcnQuZGVmYXVsdExvY2FsZSk7dmFyIGE9dC53LmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlTW91bnQ7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYSYmYSh0LHQudyksdC5ldmVudHMuZmlyZUV2ZW50KFwiYmVmb3JlTW91bnRcIixbdCx0LnddKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHQud2luZG93UmVzaXplSGFuZGxlciksZnVuY3Rpb24odCxlKXt2YXIgaT0hMTtpZih0Lm5vZGVUeXBlIT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXt2YXIgYT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1wibm9uZVwiIT09dC5zdHlsZS5kaXNwbGF5JiYwIT09YS53aWR0aHx8KGk9ITApfXZhciBzPW5ldyBSZXNpemVPYnNlcnZlcigoZnVuY3Rpb24oYSl7aSYmZS5jYWxsKHQsYSksaT0hMH0pKTt0Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFP0FycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHMub2JzZXJ2ZSh0KX0pKTpzLm9ic2VydmUodCksanQuc2V0KGUscyl9KHQuZWwucGFyZW50Tm9kZSx0LnBhcmVudFJlc2l6ZUhhbmRsZXIpLCF0LmNzcyl7dmFyIHM9dC5lbC5nZXRSb290Tm9kZSYmdC5lbC5nZXRSb290Tm9kZSgpLHI9eC5pcyhcIlNoYWRvd1Jvb3RcIixzKSxvPXQuZWwub3duZXJEb2N1bWVudCxuPW8uZ2V0RWxlbWVudEJ5SWQoXCJhcGV4Y2hhcnRzLWNzc1wiKTshciYmbnx8KHQuY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKSx0LmNzcy5pZD1cImFwZXhjaGFydHMtY3NzXCIsdC5jc3MudGV4dENvbnRlbnQ9J0BrZXlmcmFtZXMgb3BhcXVlIHtcXG4gIDAlIHtcXG4gICAgICBvcGFjaXR5OiAwXFxuICB9XFxuXFxuICB0byB7XFxuICAgICAgb3BhY2l0eTogMVxcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHJlc2l6ZWFuaW0ge1xcbiAgMCUsdG8ge1xcbiAgICAgIG9wYWNpdHk6IDBcXG4gIH1cXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHVzZXItc2VsZWN0OiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gIHdpZHRoOiA2cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuNSk7XFxuICBib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpO1xcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLWlubmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10ZXh0IHRzcGFuIHtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0XFxufVxcblxcbi5sZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGw7XFxuICBvcGFjaXR5OiAuMlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCB7XFxuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XFxuICBtYXJnaW4tbGVmdDogLTE1cHg7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWQge1xcbiAgb3BhY2l0eTogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwIHtcXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gIGJveC1zaGFkb3c6IDJweCAycHggNnB4IC00cHggIzk5OTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIGxlZnQ6IDYycHg7XFxuICBvcGFjaXR5OiAwO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDIwcHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgei1pbmRleDogMTI7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xcbiAgb3BhY2l0eTogMTtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlM2UzZTM7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC45NilcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDMwLDMwLDMwLC44KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwICoge1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXRcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XFxuICBwYWRkaW5nOiA2cHg7XFxuICBmb250LXNpemU6IDE1cHg7XFxuICBtYXJnaW4tYm90dG9tOiA0cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xcbiAgYmFja2dyb3VuZDogI2VjZWZmMTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzM1xcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktdmFsdWUsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotdmFsdWUge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgbWFyZ2luLWxlZnQ6IDVweDtcXG4gIGZvbnQtd2VpZ2h0OiA2MDBcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS1sYWJlbDplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlOmVtcHR5IHtcXG4gIGRpc3BsYXk6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSB7XFxuICBwYWRkaW5nOiA2cHggMCA1cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1nb2Fscy1ncm91cCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIHtcXG4gIGRpc3BsYXk6IGZsZXhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsOm5vdCg6ZW1wdHkpLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZTpub3QoOmVtcHR5KSB7XFxuICBtYXJnaW4tdG9wOiAtNnB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcXG4gIHdpZHRoOiAxMnB4O1xcbiAgaGVpZ2h0OiAxMnB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdG9wOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwIHtcXG4gIHBhZGRpbmc6IDAgMTBweDtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC5hcGV4Y2hhcnRzLWFjdGl2ZSAuYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlciB7XFxuICBvcGFjaXR5OiAxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLmFwZXhjaGFydHMtYWN0aXZlLC5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwOmxhc3QtY2hpbGQge1xcbiAgcGFkZGluZy1ib3R0b206IDRweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW4ge1xcbiAgb3BhY2l0eTogMDtcXG4gIGhlaWdodDogMDtcXG4gIGxpbmUtaGVpZ2h0OiAwO1xcbiAgcGFkZGluZzogMCFpbXBvcnRhbnRcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC15LWdyb3VwIHtcXG4gIHBhZGRpbmc6IDZweCAwIDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jdXN0b20tdG9vbHRpcCwuYXBleGNoYXJ0cy10b29sdGlwLWJveCB7XFxuICBwYWRkaW5nOiA0cHggOHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94UGxvdCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94PmRpdiB7XFxuICBtYXJnaW46IDRweCAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94IHNwYW4udmFsdWUge1xcbiAgZm9udC13ZWlnaHQ6IDcwMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIHtcXG4gIHBhZGRpbmc6IDVweCA4cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuY2F0ZWdvcnkge1xcbiAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gIGNvbG9yOiAjNzc3XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIgLnNlcmllcy1uYW1lIHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG1hcmdpbi1ib3R0b206IDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGNvbG9yOiAjMzczZDNmO1xcbiAgZm9udC1zaXplOiAxM3B4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMTA7XFxuICBiYWNrZ3JvdW5kOiAjZWNlZmYxO1xcbiAgYm9yZGVyOiAxcHggc29saWQgIzkwYTRhZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAge1xcbiAgcGFkZGluZzogOXB4IDEwcHg7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC41KTtcXG4gIGNvbG9yOiAjZmZmXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG4gIGxlZnQ6IDUwJTtcXG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XFxuICBjb250ZW50OiBcIiBcIjtcXG4gIGhlaWdodDogMDtcXG4gIHdpZHRoOiAwO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItd2lkdGg6IDZweDtcXG4gIG1hcmdpbi1sZWZ0OiAtNnB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogN3B4O1xcbiAgbWFyZ2luLWxlZnQ6IC03cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmJlZm9yZSB7XFxuICBib3R0b206IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmJlZm9yZSB7XFxuICB0b3A6IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTphZnRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjZWNlZmYxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbS5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbS5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YWZ0ZXIge1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2VjZWZmMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmJlZm9yZSB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3AuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3AuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XFxuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsMCwwLC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xcbiAgb3BhY2l0eTogMTtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIHtcXG4gIHBhZGRpbmc6IDRweCAxMHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC41KTtcXG4gIGNvbG9yOiAjZmZmXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG4gIHRvcDogNTAlO1xcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGNvbnRlbnQ6IFwiIFwiO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogNnB4O1xcbiAgbWFyZ2luLXRvcDogLTZweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItd2lkdGg6IDdweDtcXG4gIG1hcmdpbi10b3A6IC03cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YmVmb3JlIHtcXG4gIGxlZnQ6IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDpiZWZvcmUge1xcbiAgcmlnaHQ6IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YWZ0ZXIge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNlY2VmZjFcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YmVmb3JlIHtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0LmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsMCwwLC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YWZ0ZXIge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZWNlZmYxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDpiZWZvcmUge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0LmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xcbiAgb3BhY2l0eTogMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtaGlkZGVuIHtcXG4gIGRpc3BsYXk6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMteGNyb3NzaGFpcnMsLmFwZXhjaGFydHMteWNyb3NzaGFpcnMge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycy5hcGV4Y2hhcnRzLWFjdGl2ZSwuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW4ge1xcbiAgb3BhY2l0eTogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCB7XFxuICBjdXJzb3I6IG1vdmVcXG59XFxuXFxuLnN2Z19zZWxlY3RfYm91bmRpbmdSZWN0LC5zdmdfc2VsZWN0X3BvaW50c19yb3Qge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBvcGFjaXR5OiAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuXFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfYm91bmRpbmdSZWN0LC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfcG9pbnRzX3JvdCB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuXFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfcG9pbnRzX2wsLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfciB7XFxuICBjdXJzb3I6IGV3LXJlc2l6ZTtcXG4gIG9wYWNpdHk6IDE7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlXFxufVxcblxcbi5zdmdfc2VsZWN0X3BvaW50cyB7XFxuICBmaWxsOiAjZWZlZmVmO1xcbiAgc3Ryb2tlOiAjMzMzO1xcbiAgcng6IDJcXG59XFxuXFxuLmFwZXhjaGFydHMtc3ZnLmFwZXhjaGFydHMtem9vbWFibGUuaG92ZXJpbmctem9vbSB7XFxuICBjdXJzb3I6IGNyb3NzaGFpclxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zdmcuYXBleGNoYXJ0cy16b29tYWJsZS5ob3ZlcmluZy1wYW4ge1xcbiAgY3Vyc29yOiBtb3ZlXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUtaWNvbiwuYXBleGNoYXJ0cy1wYW4taWNvbiwuYXBleGNoYXJ0cy1yZXNldC1pY29uLC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uLC5hcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24sLmFwZXhjaGFydHMtem9vbS1pY29uLC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xcbiAgY29sb3I6ICM2ZTgxOTI7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXJcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uIHN2ZywuYXBleGNoYXJ0cy1yZXNldC1pY29uIHN2ZywuYXBleGNoYXJ0cy16b29tLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uIHN2ZywuYXBleGNoYXJ0cy16b29tb3V0LWljb24gc3ZnIHtcXG4gIGZpbGw6ICM2ZTgxOTJcXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24gc3ZnIHtcXG4gIGZpbGw6ICM0NDQ7XFxuICB0cmFuc2Zvcm06IHNjYWxlKC43NilcXG59XFxuXFxuLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtcGFuLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtcmVzZXQtaWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb20taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy16b29taW4taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy16b29tb3V0LWljb24gc3ZnIHtcXG4gIGZpbGw6ICNmM2Y0ZjVcXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXJlc2V0LXpvb20taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZywuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcsLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXpvb20taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZyB7XFxuICBmaWxsOiAjMDA4ZmZiXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLW1lbnUtaWNvbjpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtcmVzZXQtaWNvbjpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtem9vbS1pY29uOm5vdCguYXBleGNoYXJ0cy1zZWxlY3RlZCk6aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29tb3V0LWljb246aG92ZXIgc3ZnIHtcXG4gIGZpbGw6ICMzMzNcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1yZXNldC1pY29uIHtcXG4gIG1hcmdpbi1sZWZ0OiA1cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24sLmFwZXhjaGFydHMtem9vbS1pY29uIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjg1KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy16b29taW4taWNvbiwuYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSguNylcXG59XFxuXFxuLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcXG4gIG1hcmdpbi1yaWdodDogM3B4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjYyKTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGxlZnQ6IDFweDtcXG4gIHRvcDogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcge1xcbiAgZmlsbDogI2ZmZjtcXG4gIHN0cm9rZTogIzZlODE5MjtcXG4gIHN0cm9rZS13aWR0aDogMlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1wYW4taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZyB7XFxuICBzdHJva2U6ICMwMDhmZmJcXG59XFxuXFxuLmFwZXhjaGFydHMtcGFuLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcge1xcbiAgc3Ryb2tlOiAjMzMzXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2xiYXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMTE7XFxuICBtYXgtd2lkdGg6IDE3NnB4O1xcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICBwYWRkaW5nOiAwIDZweCAycHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51IHtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDEwMCU7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xcbiAgcGFkZGluZzogM3B4O1xcbiAgcmlnaHQ6IDEwcHg7XFxuICBvcGFjaXR5OiAwO1xcbiAgbWluLXdpZHRoOiAxMTBweDtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGw7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LmFwZXhjaGFydHMtbWVudS1vcGVuIHtcXG4gIG9wYWNpdHk6IDE7XFxuICBwb2ludGVyLWV2ZW50czogYWxsO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWl0ZW0ge1xcbiAgcGFkZGluZzogNnB4IDdweDtcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIGN1cnNvcjogcG9pbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1tZW51LWl0ZW06aG92ZXIge1xcbiAgYmFja2dyb3VuZDogI2VlZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLW1lbnUge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBjb2xvcjogI2ZmZlxcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KSB7XFxuICAuYXBleGNoYXJ0cy1jYW52YXM6aG92ZXIgLmFwZXhjaGFydHMtdG9vbGJhciB7XFxuICAgICAgb3BhY2l0eTogMVxcbiAgfVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4sLmFwZXhjaGFydHMtZGF0YWxhYmVsLmFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4sLmFwZXhjaGFydHMtaGlkZSAuYXBleGNoYXJ0cy1zZXJpZXMtcG9pbnRzIHtcXG4gIG9wYWNpdHk6IDBcXG59XFxuXFxuLmFwZXhjaGFydHMtaGlkZGVuLWVsZW1lbnQtc2hvd24ge1xcbiAgb3BhY2l0eTogMTtcXG4gIHRyYW5zaXRpb246IDAuMjVzIGVhc2UgYWxsO1xcbn1cXG4uYXBleGNoYXJ0cy1kYXRhbGFiZWwsLmFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZSwuYXBleGNoYXJ0cy1kYXRhbGFiZWxzLC5hcGV4Y2hhcnRzLXBpZS1sYWJlbCB7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1waWUtbGFiZWwtZGVsYXkge1xcbiAgb3BhY2l0eTogMDtcXG4gIGFuaW1hdGlvbi1uYW1lOiBvcGFxdWU7XFxuICBhbmltYXRpb24tZHVyYXRpb246IC4zcztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3QsLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtYXJlYSwuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIubm8tcG9pbnRlci1ldmVudHMsLmFwZXhjaGFydHMtZ3JpZGxpbmUsLmFwZXhjaGFydHMtbGluZSwuYXBleGNoYXJ0cy1saW5lLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIubm8tcG9pbnRlci1ldmVudHMsLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1sYWJlbCwuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcGF0aCwuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcG9seWdvbiwuYXBleGNoYXJ0cy10b29sYmFyIHN2ZywuYXBleGNoYXJ0cy10b29sdGlwIC5hcGV4Y2hhcnRzLW1hcmtlciwuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsLC5hcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb24tbGFiZWwsLmFwZXhjaGFydHMtem9vbS1yZWN0IHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1hcmtlciB7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5yZXNpemUtdHJpZ2dlcnMge1xcbiAgYW5pbWF0aW9uOiAxbXMgcmVzaXplYW5pbTtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIG9wYWNpdHk6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW5cXG59XFxuXFxuLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlLC5yZXNpemUtdHJpZ2dlcnMsLnJlc2l6ZS10cmlnZ2Vycz5kaXYge1xcbiAgY29udGVudDogXCIgXCI7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDBcXG59XFxuXFxuLnJlc2l6ZS10cmlnZ2Vycz5kaXYge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBiYWNrZ3JvdW5kOiAjZWVlO1xcbiAgb3ZlcmZsb3c6IGF1dG9cXG59XFxuXFxuLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aWR0aDogMjAwJTtcXG4gIGhlaWdodDogMjAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc3tcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLWJhci1zaGFkb3dze1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtcmFuZ2ViYXItZ29hbHMtbWFya2Vyc3tcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufScscj9zLnByZXBlbmQodC5jc3MpOm8uaGVhZC5hcHBlbmRDaGlsZCh0LmNzcykpfXZhciBsPXQuY3JlYXRlKHQudy5jb25maWcuc2VyaWVzLHt9KTtpZighbClyZXR1cm4gZSh0KTt0Lm1vdW50KGwpLnRoZW4oKGZ1bmN0aW9uKCl7XCJmdW5jdGlvblwiPT10eXBlb2YgdC53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZCYmdC53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZCh0LHQudyksdC5ldmVudHMuZmlyZUV2ZW50KFwibW91bnRlZFwiLFt0LHQud10pLGUobCl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe2kodCl9KSl9ZWxzZSBpKG5ldyBFcnJvcihcIkVsZW1lbnQgbm90IGZvdW5kXCIpKX0pKX19LHtrZXk6XCJjcmVhdGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztuZXcgR3QodGhpcykuaW5pdE1vZHVsZXMoKTt2YXIgYT10aGlzLncuZ2xvYmFsczsoYS5ub0RhdGE9ITEsYS5hbmltYXRpb25FbmRlZD0hMSx0aGlzLnJlc3BvbnNpdmUuY2hlY2tSZXNwb25zaXZlQ29uZmlnKGUpLGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYykmJm5ldyBYKGkuY29uZmlnKS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXMoaS5jb25maWcsdGhpcy5jdHgpO2lmKG51bGw9PT10aGlzLmVsKXJldHVybiBhLmFuaW1hdGlvbkVuZGVkPSEwLG51bGw7aWYodGhpcy5jb3JlLnNldHVwRWxlbWVudHMoKSxcInRyZWVtYXBcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUmJihpLmNvbmZpZy5ncmlkLnNob3c9ITEsaS5jb25maWcueWF4aXNbMF0uc2hvdz0hMSksMD09PWEuc3ZnV2lkdGgpcmV0dXJuIGEuYW5pbWF0aW9uRW5kZWQ9ITAsbnVsbDt2YXIgcz15LmNoZWNrQ29tYm9TZXJpZXModCk7YS5jb21ib0NoYXJ0cz1zLmNvbWJvQ2hhcnRzLGEuY29tYm9CYXJDb3VudD1zLmNvbWJvQmFyQ291bnQ7dmFyIHI9dC5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YSYmMD09PXQuZGF0YS5sZW5ndGh9KSk7KDA9PT10Lmxlbmd0aHx8cikmJnRoaXMuc2VyaWVzLmhhbmRsZU5vRGF0YSgpLHRoaXMuZXZlbnRzLnNldHVwRXZlbnRIYW5kbGVycygpLHRoaXMuZGF0YS5wYXJzZURhdGEodCksdGhpcy50aGVtZS5pbml0KCksbmV3IEgodGhpcykuc2V0R2xvYmFsTWFya2VyU2l6ZSgpLHRoaXMuZm9ybWF0dGVycy5zZXRMYWJlbEZvcm1hdHRlcnMoKSx0aGlzLnRpdGxlU3VidGl0bGUuZHJhdygpLGEubm9EYXRhJiZhLmNvbGxhcHNlZFNlcmllcy5sZW5ndGghPT1hLnNlcmllcy5sZW5ndGgmJiFpLmNvbmZpZy5sZWdlbmQuc2hvd0ZvclNpbmdsZVNlcmllc3x8dGhpcy5sZWdlbmQuaW5pdCgpLHRoaXMuc2VyaWVzLmhhc0FsbFNlcmllc0VxdWFsWCgpLGEuYXhpc0NoYXJ0cyYmKHRoaXMuY29yZS5jb3JlQ2FsY3VsYXRpb25zKCksXCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmdGhpcy5mb3JtYXR0ZXJzLnNldExhYmVsRm9ybWF0dGVycygpLHRoaXMuY3R4LnRvb2xiYXIubWluWD1pLmdsb2JhbHMubWluWCx0aGlzLmN0eC50b29sYmFyLm1heFg9aS5nbG9iYWxzLm1heFgpLHRoaXMuZm9ybWF0dGVycy5oZWF0bWFwTGFiZWxGb3JtYXR0ZXJzKCksbmV3IHkodGhpcykuZ2V0TGFyZ2VzdE1hcmtlclNpemUoKSx0aGlzLmRpbWVuc2lvbnMucGxvdENvb3JkcygpO3ZhciBvPXRoaXMuY29yZS54eVNldHRpbmdzKCk7dGhpcy5ncmlkLmNyZWF0ZUdyaWRNYXNrKCk7dmFyIG49dGhpcy5jb3JlLnBsb3RDaGFydFR5cGUodCxvKSxsPW5ldyBPKHRoaXMpO3JldHVybiBsLmJyaW5nRm9yd2FyZCgpLGkuY29uZmlnLmRhdGFMYWJlbHMuYmFja2dyb3VuZC5lbmFibGVkJiZsLmRhdGFMYWJlbHNCYWNrZ3JvdW5kKCksdGhpcy5jb3JlLnNoaWZ0R3JhcGhQb3NpdGlvbigpLHtlbEdyYXBoOm4seHlSYXRpb3M6byxkaW1lbnNpb25zOntwbG90OntsZWZ0OmkuZ2xvYmFscy50cmFuc2xhdGVYLHRvcDppLmdsb2JhbHMudHJhbnNsYXRlWSx3aWR0aDppLmdsb2JhbHMuZ3JpZFdpZHRoLGhlaWdodDppLmdsb2JhbHMuZ3JpZEhlaWdodH19fX19LHtrZXk6XCJtb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGk9dGhpcyxhPWkudztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHMscil7aWYobnVsbD09PWkuZWwpcmV0dXJuIHIobmV3IEVycm9yKFwiTm90IGVub3VnaCBkYXRhIHRvIGRpc3BsYXkgb3IgdGFyZ2V0IGVsZW1lbnQgbm90IGZvdW5kXCIpKTsobnVsbD09PWV8fGEuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpJiZpLnNlcmllcy5oYW5kbGVOb0RhdGEoKSxpLmdyaWQ9bmV3IGooaSk7dmFyIG8sbixsPWkuZ3JpZC5kcmF3R3JpZCgpOyhpLmFubm90YXRpb25zPW5ldyBQKGkpLGkuYW5ub3RhdGlvbnMuZHJhd0ltYWdlQW5ub3MoKSxpLmFubm90YXRpb25zLmRyYXdUZXh0QW5ub3MoKSxcImJhY2tcIj09PWEuY29uZmlnLmdyaWQucG9zaXRpb24pJiYobCYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQobC5lbCksbnVsbCE9bCYmbnVsbCE9PShvPWwuZWxHcmlkQm9yZGVycykmJnZvaWQgMCE9PW8mJm8ubm9kZSYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQobC5lbEdyaWRCb3JkZXJzKSk7aWYoQXJyYXkuaXNBcnJheShlLmVsR3JhcGgpKWZvcih2YXIgaD0wO2g8ZS5lbEdyYXBoLmxlbmd0aDtoKyspYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoZS5lbEdyYXBoW2hdKTtlbHNlIGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGUuZWxHcmFwaCk7XCJmcm9udFwiPT09YS5jb25maWcuZ3JpZC5wb3NpdGlvbiYmKGwmJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGwuZWwpLG51bGwhPWwmJm51bGwhPT0obj1sLmVsR3JpZEJvcmRlcnMpJiZ2b2lkIDAhPT1uJiZuLm5vZGUmJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGwuZWxHcmlkQm9yZGVycykpO1wiZnJvbnRcIj09PWEuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMucG9zaXRpb24mJmkuY3Jvc3NoYWlycy5kcmF3WENyb3NzaGFpcnMoKSxcImZyb250XCI9PT1hLmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnBvc2l0aW9uJiZpLmNyb3NzaGFpcnMuZHJhd1lDcm9zc2hhaXJzKCksXCJ0cmVlbWFwXCIhPT1hLmNvbmZpZy5jaGFydC50eXBlJiZpLmF4ZXMuZHJhd0F4aXMoYS5jb25maWcuY2hhcnQudHlwZSxsKTt2YXIgYz1uZXcgVih0LmN0eCxsKSxkPW5ldyBxKHQuY3R4LGwpO2lmKG51bGwhPT1sJiYoYy54QXhpc0xhYmVsQ29ycmVjdGlvbnMobC54QXhpc1RpY2tXaWR0aCksZC5zZXRZQXhpc1RleHRBbGlnbm1lbnRzKCksYS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LGUpey0xPT09YS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGUpJiZkLnlBeGlzVGl0bGVSb3RhdGUoZSx0Lm9wcG9zaXRlKX0pKSksaS5hbm5vdGF0aW9ucy5kcmF3QXhlc0Fubm90YXRpb25zKCksIWEuZ2xvYmFscy5ub0RhdGEpe2lmKGEuY29uZmlnLnRvb2x0aXAuZW5hYmxlZCYmIWEuZ2xvYmFscy5ub0RhdGEmJmkudy5nbG9iYWxzLnRvb2x0aXAuZHJhd1Rvb2x0aXAoZS54eVJhdGlvcyksYS5nbG9iYWxzLmF4aXNDaGFydHMmJihhLmdsb2JhbHMuaXNYTnVtZXJpY3x8YS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHxhLmdsb2JhbHMuaXNSYW5nZUJhcikpKGEuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZHx8YS5jb25maWcuY2hhcnQuc2VsZWN0aW9uJiZhLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZW5hYmxlZHx8YS5jb25maWcuY2hhcnQucGFuJiZhLmNvbmZpZy5jaGFydC5wYW4uZW5hYmxlZCkmJmkuem9vbVBhblNlbGVjdGlvbi5pbml0KHt4eVJhdGlvczplLnh5UmF0aW9zfSk7ZWxzZXt2YXIgZz1hLmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzO1tcInpvb21cIixcInpvb21pblwiLFwiem9vbW91dFwiLFwic2VsZWN0aW9uXCIsXCJwYW5cIixcInJlc2V0XCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2dbdF09ITF9KSl9YS5jb25maWcuY2hhcnQudG9vbGJhci5zaG93JiYhYS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZCYmaS50b29sYmFyLmNyZWF0ZVRvb2xiYXIoKX1hLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMubGVuZ3RoPjAmJmEuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5mb3JFYWNoKChmdW5jdGlvbih0KXt0Lm1ldGhvZCh0LnBhcmFtcywhMSx0LmNvbnRleHQpfSkpLGEuZ2xvYmFscy5heGlzQ2hhcnRzfHxhLmdsb2JhbHMubm9EYXRhfHxpLmNvcmUucmVzaXplTm9uQXhpc0NoYXJ0cygpLHMoaSl9KSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHRoaXMud2luZG93UmVzaXplSGFuZGxlciksdGhpcy5lbC5wYXJlbnROb2RlLHQ9dGhpcy5wYXJlbnRSZXNpemVIYW5kbGVyLChlPWp0LmdldCh0KSkmJihlLmRpc2Nvbm5lY3QoKSxqdC5kZWxldGUodCkpO3ZhciBpPXRoaXMudy5jb25maWcuY2hhcnQuaWQ7aSYmQXBleC5fY2hhcnRJbnN0YW5jZXMuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmlkPT09eC5lc2NhcGVTdHJpbmcoaSkmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLnNwbGljZShlLDEpfSkpLG5ldyBWdCh0aGlzLmN0eCkuY2xlYXIoe2lzVXBkYXRpbmc6ITF9KX19LHtrZXk6XCJ1cGRhdGVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sYT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLHM9IShhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXSxyPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0sbz10aGlzLnc7cmV0dXJuIG8uZ2xvYmFscy5zZWxlY3Rpb249dm9pZCAwLHQuc2VyaWVzJiYodGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoITEsITAsITEpLHQuc2VyaWVzLmxlbmd0aCYmdC5zZXJpZXNbMF0uZGF0YSYmKHQuc2VyaWVzPXQuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gZS51cGRhdGVIZWxwZXJzLl9leHRlbmRTZXJpZXModCxpKX0pKSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCkpLHQueGF4aXMmJih0PXRoaXMudXBkYXRlSGVscGVycy5mb3JjZVhBeGlzVXBkYXRlKHQpKSx0LnlheGlzJiYodD10aGlzLnVwZGF0ZUhlbHBlcnMuZm9yY2VZQXhpc1VwZGF0ZSh0KSksby5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoPjAmJnRoaXMuc2VyaWVzLmNsZWFyUHJldmlvdXNQYXRocygpLHQudGhlbWUmJih0PXRoaXMudGhlbWUudXBkYXRlVGhlbWVPcHRpb25zKHQpKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnModCxpLGEscyxyKX19LHtrZXk6XCJ1cGRhdGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3JldHVybiB0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXModCxlLGkpfX0se2tleTpcImFwcGVuZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGE9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKTtyZXR1cm4gYS5wdXNoKHQpLHRoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKCExKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhhLGUsaSl9fSx7a2V5OlwiYXBwZW5kRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT10aGlzO2kudy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLGkuc2VyaWVzLmdldFByZXZpb3VzUGF0aHMoKTtmb3IodmFyIGE9aS53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxzPTA7czxhLmxlbmd0aDtzKyspaWYobnVsbCE9PXRbc10mJnZvaWQgMCE9PXRbc10pZm9yKHZhciByPTA7cjx0W3NdLmRhdGEubGVuZ3RoO3IrKylhW3NdLmRhdGEucHVzaCh0W3NdLmRhdGFbcl0pO3JldHVybiBpLncuY29uZmlnLnNlcmllcz1hLGUmJihpLncuZ2xvYmFscy5pbml0aWFsU2VyaWVzPXguY2xvbmUoaS53LmNvbmZpZy5zZXJpZXMpKSx0aGlzLnVwZGF0ZSgpfX0se2tleTpcInVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihpLGEpe25ldyBWdChlLmN0eCkuY2xlYXIoe2lzVXBkYXRpbmc6ITB9KTt2YXIgcz1lLmNyZWF0ZShlLncuY29uZmlnLnNlcmllcyx0KTtpZighcylyZXR1cm4gaShlKTtlLm1vdW50KHMpLnRoZW4oKGZ1bmN0aW9uKCl7XCJmdW5jdGlvblwiPT10eXBlb2YgZS53LmNvbmZpZy5jaGFydC5ldmVudHMudXBkYXRlZCYmZS53LmNvbmZpZy5jaGFydC5ldmVudHMudXBkYXRlZChlLGUudyksZS5ldmVudHMuZmlyZUV2ZW50KFwidXBkYXRlZFwiLFtlLGUud10pLGUudy5nbG9iYWxzLmlzRGlydHk9ITAsaShlKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7YSh0KX0pKX0pKX19LHtrZXk6XCJnZXRTeW5jZWRDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0R3JvdXBlZENoYXJ0cygpLGU9W3RoaXNdO3JldHVybiB0Lmxlbmd0aCYmKGU9W10sdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLnB1c2godCl9KSkpLGV9fSx7a2V5OlwiZ2V0R3JvdXBlZENoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gQXBleC5fY2hhcnRJbnN0YW5jZXMuZmlsdGVyKChmdW5jdGlvbih0KXtpZih0Lmdyb3VwKXJldHVybiEwfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQudy5jb25maWcuY2hhcnQuZ3JvdXA9PT1lLmdyb3VwP2UuY2hhcnQ6dH0pKX19LHtrZXk6XCJ0b2dnbGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZXJpZXMudG9nZ2xlU2VyaWVzKHQpfX0se2tleTpcImhpZ2hsaWdodFNlcmllc09uTGVnZW5kSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNlcmllcy50b2dnbGVTZXJpZXNPbkhvdmVyKHQsZSl9fSx7a2V5Olwic2hvd1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2VyaWVzLnNob3dTZXJpZXModCl9fSx7a2V5OlwiaGlkZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2VyaWVzLmhpZGVTZXJpZXModCl9fSx7a2V5OlwiaXNTZXJpZXNIaWRkZW5cIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnNlcmllcy5pc1Nlcmllc0hpZGRlbih0KX19LHtrZXk6XCJyZXNldFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07dGhpcy5zZXJpZXMucmVzZXRTZXJpZXModCxlKX19LHtrZXk6XCJhZGRFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmV2ZW50cy5hZGRFdmVudExpc3RlbmVyKHQsZSl9fSx7a2V5OlwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5ldmVudHMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUpfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcztpJiYoYT1pKSxhLmFubm90YXRpb25zLmFkZFhheGlzQW5ub3RhdGlvbkV4dGVybmFsKHQsZSxhKX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnZvaWQgMCxhPXRoaXM7aSYmKGE9aSksYS5hbm5vdGF0aW9ucy5hZGRZYXhpc0Fubm90YXRpb25FeHRlcm5hbCh0LGUsYSl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp2b2lkIDAsYT10aGlzO2kmJihhPWkpLGEuYW5ub3RhdGlvbnMuYWRkUG9pbnRBbm5vdGF0aW9uRXh0ZXJuYWwodCxlLGEpfX0se2tleTpcImNsZWFyQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp2b2lkIDAsZT10aGlzO3QmJihlPXQpLGUuYW5ub3RhdGlvbnMuY2xlYXJBbm5vdGF0aW9ucyhlKX19LHtrZXk6XCJyZW1vdmVBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnZvaWQgMCxpPXRoaXM7ZSYmKGk9ZSksaS5hbm5vdGF0aW9ucy5yZW1vdmVBbm5vdGF0aW9uKGksdCl9fSx7a2V5OlwiZ2V0Q2hhcnRBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtaW5uZXJcIil9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxYUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNvcmVVdGlscy5nZXRTZXJpZXNUb3RhbHNYUmFuZ2UodCxlKX19LHtrZXk6XCJnZXRIaWdoZXN0VmFsdWVJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjA7cmV0dXJuIG5ldyBVKHRoaXMuY3R4KS5nZXRNaW5ZTWF4WSh0KS5oaWdoZXN0WX19LHtrZXk6XCJnZXRMb3dlc3RWYWx1ZUluU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MDtyZXR1cm4gbmV3IFUodGhpcy5jdHgpLmdldE1pbllNYXhZKHQpLmxvd2VzdFl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5zZXJpZXNUb3RhbHN9fSx7a2V5OlwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy51cGRhdGVIZWxwZXJzLnRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbih0LGUpfX0se2tleTpcInpvb21YXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmN0eC50b29sYmFyLnpvb21VcGRhdGVPcHRpb25zKHQsZSl9fSx7a2V5Olwic2V0TG9jYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5sb2NhbGl6YXRpb24uc2V0Q3VycmVudExvY2FsZVZhbHVlcyh0KX19LHtrZXk6XCJkYXRhVVJJXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBHKHRoaXMuY3R4KS5kYXRhVVJJKHQpfX0se2tleTpcImV4cG9ydFRvQ1NWXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIG5ldyBHKHRoaXMuY3R4KS5leHBvcnRUb0NTVih0KX19LHtrZXk6XCJwYXBlclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlcn19LHtrZXk6XCJfcGFyZW50UmVzaXplQ2FsbGJhY2tcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkJiZ0aGlzLncuY29uZmlnLmNoYXJ0LnJlZHJhd09uUGFyZW50UmVzaXplJiZ0aGlzLl93aW5kb3dSZXNpemUoKX19LHtrZXk6XCJfd2luZG93UmVzaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2NsZWFyVGltZW91dCh0aGlzLncuZ2xvYmFscy5yZXNpemVUaW1lciksdGhpcy53Lmdsb2JhbHMucmVzaXplVGltZXI9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC53Lmdsb2JhbHMucmVzaXplZD0hMCx0LncuZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMSx0LmN0eC51cGRhdGUoKX0pLDE1MCl9fSx7a2V5OlwiX3dpbmRvd1Jlc2l6ZUhhbmRsZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5jb25maWcuY2hhcnQucmVkcmF3T25XaW5kb3dSZXNpemU7XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHQ9dCgpKSx0JiZ0aGlzLl93aW5kb3dSZXNpemUoKX19XSxbe2tleTpcImdldENoYXJ0QnlJRFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXguZXNjYXBlU3RyaW5nKHQpO2lmKEFwZXguX2NoYXJ0SW5zdGFuY2VzKXt2YXIgaT1BcGV4Ll9jaGFydEluc3RhbmNlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09ZX0pKVswXTtyZXR1cm4gaSYmaS5jaGFydH19fSx7a2V5OlwiaW5pdE9uTG9hZFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1hcGV4Y2hhcnRzXVwiKSxpPTA7aTxlLmxlbmd0aDtpKyspe25ldyB0KGVbaV0sSlNPTi5wYXJzZShlW2ldLmdldEF0dHJpYnV0ZShcImRhdGEtb3B0aW9uc1wiKSkpLnJlbmRlcigpfX19LHtrZXk6XCJleGVjXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmdldENoYXJ0QnlJRCh0KTtpZihpKXtpLncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQ9ITA7dmFyIGE9bnVsbDtpZigtMSE9PWkucHVibGljTWV0aG9kcy5pbmRleE9mKGUpKXtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShzPjI/cy0yOjApLG89MjtvPHM7bysrKXJbby0yXT1hcmd1bWVudHNbb107YT1pW2VdLmFwcGx5KGkscil9cmV0dXJuIGF9fX0se2tleTpcIm1lcmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4geC5leHRlbmQodCxlKX19XSksdH0oKTttb2R1bGUuZXhwb3J0cz1fdDtcbiIsICJpbXBvcnQgQXBleENoYXJ0cyBmcm9tICdhcGV4Y2hhcnRzJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhcGV4Y2hhcnRzKHtcbiAgICBvcHRpb25zLFxuICAgIGNoYXJ0SWQsXG4gICAgdGhlbWUsXG4gICAgZXh0cmFKc09wdGlvbnNcbn0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBjaGFydDogbnVsbCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgY2hhcnRJZCxcbiAgICAgICAgdGhlbWUsXG4gICAgICAgIGV4dHJhSnNPcHRpb25zLFxuICAgICAgICBpbml0OiBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIHRoaXMuJHdpcmUuJG9uKCd1cGRhdGVPcHRpb25zJywgKHsgb3B0aW9ucyB9KSA9PiB7XG5cbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmV4dHJhSnNPcHRpb25zXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhcnQob3B0aW9ucylcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIEFscGluZS5lZmZlY3QoKCkgPT4ge1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGhlbWUgPSBBbHBpbmUuc3RvcmUoJ3RoZW1lJylcblxuICAgICAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGFydCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0Q2hhcnQoKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYXJ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZTogeyBtb2RlOiB0aGVtZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdpbmhlcml0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgaW5pdENoYXJ0OiBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy50aGVtZSA9IHsgbW9kZTogdGhpcy50aGVtZSB9XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuY2hhcnQuYmFja2dyb3VuZCA9ICdpbmhlcml0J1xuXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZXh0cmFKc09wdGlvbnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaGFydCA9IG5ldyBBcGV4Q2hhcnRzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jaGFydElkKSwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgdGhpcy5jaGFydC5yZW5kZXIoKVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVDaGFydDogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnQudXBkYXRlT3B0aW9ucyhvcHRpb25zLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSlcbiAgICAgICAgfSxcbiAgICB9XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBS2EsYUFBUyxFQUFFQSxJQUFFQyxJQUFFO0FBQUMsVUFBSUMsS0FBRSxPQUFPLEtBQUtGLEVBQUM7QUFBRSxVQUFHLE9BQU8sdUJBQXNCO0FBQUMsWUFBSUcsS0FBRSxPQUFPLHNCQUFzQkgsRUFBQztBQUFFLFFBQUFDLE9BQUlFLEtBQUVBLEdBQUUsT0FBUSxTQUFTRixJQUFFO0FBQUMsaUJBQU8sT0FBTyx5QkFBeUJELElBQUVDLEVBQUMsRUFBRTtBQUFBLFFBQVUsQ0FBRSxJQUFH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QVUsQ0FBQyxJQUFFLFdBQVVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsTUFBS0MsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFO0FBQU8sZUFBTyxLQUFLLEVBQUUsUUFBUSxJQUFJLE1BQU0sS0FBSyxFQUFFLEtBQUssRUFBQyxJQUFHUCxJQUFFLElBQUdDLElBQUUsSUFBR0MsSUFBRSxJQUFHQyxJQUFFLFFBQU9DLElBQUUsb0JBQW1CQyxJQUFFLGdCQUFlQyxJQUFFLGtCQUFpQkMsR0FBQyxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFlBQVcsT0FBTSxXQUFVO0FBQUMsWUFBSVAsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsR0FBRUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsV0FBVUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxNQUFLQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsTUFBS0MsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxNQUFNLEtBQUs7QUFBRSxlQUFPQSxHQUFFLEtBQUssRUFBQyxHQUFFVixJQUFFLEdBQUVDLElBQUUsT0FBTUMsS0FBRSxJQUFFQSxLQUFFLEdBQUUsUUFBT0MsS0FBRSxJQUFFQSxLQUFFLEdBQUUsSUFBR0MsSUFBRSxJQUFHQSxJQUFFLFNBQVFFLElBQUUsZ0JBQWUsU0FBT0MsS0FBRUEsS0FBRSxHQUFFLFFBQU8sU0FBT0MsS0FBRUEsS0FBRSxRQUFPLG9CQUFtQkMsR0FBQyxDQUFDLEdBQUVDLEdBQUUsS0FBSyxhQUFhLFFBQU9MLEVBQUMsR0FBRUs7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksZUFBYyxPQUFNLFNBQVNWLElBQUU7QUFBQyxZQUFJQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsV0FBVUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRTtBQUFPLGVBQU8sS0FBSyxFQUFFLFFBQVEsSUFBSSxNQUFNLFFBQVFILEVBQUMsRUFBRSxLQUFLLEVBQUMsTUFBS0csSUFBRSxRQUFPRixJQUFFLGdCQUFlQyxHQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksY0FBYSxPQUFNLFNBQVNGLElBQUU7QUFBQyxZQUFJQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUU7QUFBSyxRQUFBRCxLQUFFLE1BQUlBLEtBQUU7QUFBRyxZQUFJRSxLQUFFLEtBQUss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UyxPQUFHLFVBQVMsT0FBRyxhQUFZLE9BQUcsU0FBUSxJQUFHLFlBQVcsUUFBTyxnQkFBZSxPQUFHLEtBQUksUUFBTyxLQUFJLFFBQU8sVUFBUyxPQUFHLGlCQUFnQixRQUFPLFFBQU8sRUFBQyxNQUFLLE1BQUcsVUFBUyxHQUFFLFVBQVMsS0FBSSxTQUFRLEdBQUUsU0FBUSxHQUFFLE9BQU0sUUFBTyxRQUFPLEdBQUUsU0FBUSxJQUFHLE9BQU0sRUFBQyxRQUFPLENBQUMsR0FBRSxVQUFTLFFBQU8sWUFBVyxLQUFJLFlBQVcsUUFBTyxVQUFTLEdBQUUsR0FBRSxXQUFVLE9BQU0sR0FBRSxZQUFXLEVBQUMsTUFBSyxPQUFHLE9BQU0sV0FBVSxPQUFNLEdBQUUsU0FBUSxHQUFFLFNBQVEsRUFBQyxHQUFFLFdBQVUsRUFBQyxNQUFLLE9BQUcsT0FBTSxXQUFVLE9BQU0sR0FBRSxTQUFRLEdBQUUsU0FBUSxFQUFDLEdBQUUsT0FBTSxFQUFDLE1BQUssUUFBTyxRQUFPLEtBQUksU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLEVBQUMsT0FBTSxRQUFPLFVBQVMsUUFBTyxZQUFXLEtBQUksWUFBVyxRQUFPLFVBQVMsR0FBRSxFQUFDLEdBQUUsU0FBUSxFQUFDLFNBQVEsT0FBRyxTQUFRLEVBQUMsR0FBRSxZQUFXLEVBQUMsTUFBSyxNQUFHLFVBQVMsU0FBUSxRQUFPLEVBQUMsT0FBTSxXQUFVLE9BQU0sR0FBRSxXQUFVLEVBQUMsRUFBQyxFQUFDLEdBQUUsS0FBSyxrQkFBZ0IsRUFBQyxJQUFHLFFBQU8sR0FBRSxHQUFFLEdBQUUsTUFBSyxZQUFXLEdBQUUsYUFBWSxHQUFFLFlBQVcsUUFBTyxZQUFXLFFBQU8sT0FBTSxRQUFPLFFBQU8sRUFBQyxNQUFLLEdBQUUsV0FBVSxRQUFPLGFBQVksR0FBRSxhQUFZLFFBQU8sT0FBTSxVQUFTLFNBQVEsR0FBRSxTQUFRLEdBQUUsUUFBTyxHQUFFLFVBQVMsR0FBRSxHQUFFLE9BQU0sRUFBQyxhQUFZLFdBQVUsYUFBWSxHQUFFLGNBQWEsR0FBRSxNQUFLLFFBQU8sWUFBVyxVQUFTLFNBQVEsR0FBRSxTQUFRLEdBQUUsWUFBVyxRQUFPLFlBQVcsUUFBTyxPQUFNLFFBQU8sT0FBTSxFQUFDLFlBQVcsUUFBTyxPQUFNLFFBQU8sVUFBUyxRQUFPLFlBQVcsUUFBTyxZQUFXLEtBQUksVUFBUyxJQUFHLFNBQVEsRUFBQyxNQUFLLEdBQUUsT0FBTSxHQUFFLEtBQUksR0FBRSxRQUFPLEVBQUMsRUFBQyxFQUFDLEdBQUUsV0FBVSxFQUFDLEtBQUksUUFBTyxVQUFTLFFBQU8sU0FBUSxHQUFFLFNBQVEsRUFBQyxHQUFFLE9BQU0sRUFBQyxNQUFLLFFBQU8sT0FBTSxJQUFHLFFBQU8sSUFBRyxTQUFRLEdBQUUsU0FBUSxFQUFDLEVBQUMsR0FBRSxLQUFLLGtCQUFnQixFQUFDLElBQUcsUUFBTyxHQUFFLEdBQUUsSUFBRyxNQUFLLGlCQUFnQixHQUFFLFdBQVUsV0FBVSxhQUFZLFdBQVUsYUFBWSxHQUFFLFNBQVEsS0FBRyxTQUFRLEdBQUUsU0FBUSxHQUFFLE9BQU0sUUFBTyxZQUFXLEdBQUUsT0FBTSxFQUFDLGFBQVksV0FBVSxhQUFZLEdBQUUsY0FBYSxHQUFFLE1BQUssUUFBTyxZQUFXLE9BQU0sVUFBUyxTQUFRLFNBQVEsR0FBRSxTQUFRLElBQUcsWUFBVyxRQUFPLFlBQVcsUUFBTyxPQUFNLFFBQU8sT0FBTSxFQUFDLFlBQVcsUUFBTyxPQUFNLFFBQU8sVUFBUyxRQUFPLFlBQVcsUUFBTyxZQUFXLEtBQUksVUFBUyxJQUFHLFNBQVEsRUFBQyxNQUFLLEdBQUUsT0FBTSxHQUFFLEtBQUksR0FBRSxRQUFPLEVBQUMsRUFBQyxFQUFDLEVBQUMsR0FBRSxLQUFLLGtCQUFnQixFQUFDLElBQUcsUUFBTyxHQUFFLEdBQUUsSUFBRyxNQUFLLGlCQUFnQixHQUFFLFdBQVUsV0FBVSxhQUFZLFdBQVUsYUFBWSxHQUFFLFNBQVEsS0FBRyxTQUFRLEdBQUUsU0FBUSxHQUFFLE9BQU0sRUFBQyxhQUFZLFdBQVUsYUFBWSxHQUFFLGNBQWEsR0FBRSxNQUFLLFFBQU8sWUFBVyxVQUFTLGFBQVks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QU8sb0JBQW1CLE1BQUcsT0FBTSxFQUFDLE1BQUssUUFBTyxZQUFXLEVBQUMsRUFBQyxHQUFFLFFBQU8sRUFBQyxNQUFLLFFBQU8sT0FBTSxVQUFTLGVBQWMsVUFBUyxTQUFRLEdBQUUsU0FBUSxHQUFFLE9BQU0sRUFBQyxPQUFNLFFBQU8sVUFBUyxRQUFPLFlBQVcsT0FBTSxFQUFDLEdBQUUsWUFBVyxDQUFDLEdBQUUsUUFBTyxRQUFPLFFBQU8sRUFBQyxRQUFPLEVBQUMsUUFBTyxFQUFDLE1BQUssUUFBTyxPQUFNLEVBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxRQUFPLEVBQUMsTUFBSyxXQUFVLE9BQU0sSUFBRSxFQUFDLEdBQUUsUUFBTyxFQUFDLGtDQUFpQyxPQUFHLFFBQU8sRUFBQyxNQUFLLFVBQVMsT0FBTSxJQUFFLEVBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxNQUFLLFFBQU8sT0FBTSxRQUFPLFFBQU8sR0FBRSxTQUFRLEdBQUUsU0FBUSxHQUFFLFVBQVMsT0FBRyxPQUFNLEVBQUMsVUFBUyxRQUFPLFlBQVcsS0FBSSxZQUFXLFFBQU8sT0FBTSxPQUFNLEVBQUMsR0FBRSxVQUFTLEVBQUMsTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLEdBQUUsU0FBUSxHQUFFLFNBQVEsSUFBRyxVQUFTLE9BQUcsT0FBTSxFQUFDLFVBQVMsUUFBTyxZQUFXLEtBQUksWUFBVyxRQUFPLE9BQU0sT0FBTSxFQUFDLEdBQUUsUUFBTyxFQUFDLE1BQUssTUFBRyxPQUFNLFVBQVMsU0FBUSxRQUFPLE9BQU0sR0FBRSxRQUFPLFFBQU8sV0FBVSxHQUFFLE1BQUssRUFBQyxNQUFLLFNBQVEsUUFBTyxRQUFPLFNBQVEsTUFBSSxVQUFTLEVBQUMsT0FBTSxRQUFPLE1BQUssY0FBYSxnQkFBZSxLQUFHLGtCQUFpQixRQUFPLGVBQWMsTUFBRyxhQUFZLEdBQUUsV0FBVSxHQUFFLE9BQU0sQ0FBQyxHQUFFLElBQUcsR0FBRyxHQUFFLFlBQVcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxTQUFRLE1BQUcsaUJBQWdCLFFBQU8sUUFBTyxNQUFHLGNBQWEsT0FBRyxXQUFVLE9BQUcsY0FBYSxPQUFHLFFBQU8sUUFBTyxpQkFBZ0IsT0FBRyxPQUFNLFNBQVEsVUFBUyxJQUFHLE9BQU0sRUFBQyxVQUFTLFFBQU8sWUFBVyxPQUFNLEdBQUUsZ0JBQWUsRUFBQyxxQkFBb0IsTUFBRSxHQUFFLEdBQUUsRUFBQyxNQUFLLE1BQUcsUUFBTyxVQUFTLFdBQVUsT0FBTSxHQUFFLEdBQUUsRUFBQyxXQUFVLFFBQU8sT0FBTSxFQUFDLFdBQVUsU0FBU0EsSUFBRTtBQUFDLGlCQUFPQSxLQUFFQSxLQUFFLE9BQUs7QUFBQSxRQUFFLEVBQUMsRUFBQyxHQUFFLEdBQUUsRUFBQyxXQUFVLFFBQU8sT0FBTSxTQUFRLEdBQUUsUUFBTyxFQUFDLE1BQUssTUFBRyxZQUFXLE9BQU0sR0FBRSxPQUFNLEVBQUMsU0FBUSxPQUFNLEdBQUUsT0FBTSxFQUFDLFNBQVEsT0FBRyxVQUFTLFlBQVcsU0FBUSxHQUFFLFNBQVEsRUFBQyxFQUFDLEdBQUUsT0FBTSxFQUFDLE1BQUssWUFBVyxZQUFXLENBQUMsR0FBRSx1QkFBc0IsT0FBRyxTQUFRLEdBQUUsU0FBUSxHQUFFLHFCQUFvQixRQUFPLFFBQU8sRUFBQyxNQUFLLE1BQUcsUUFBTyxLQUFJLGNBQWEsT0FBRyx1QkFBc0IsTUFBRyxNQUFLLE9BQUcsV0FBVSxRQUFPLFdBQVUsS0FBSSxnQkFBZSxNQUFHLE9BQU0sRUFBQyxRQUFPLENBQUMsR0FBRSxVQUFTLFFBQU8sWUFBVyxLQUFJLFlBQVcsUUFBTyxVQUFTLEdBQUUsR0FBRSxTQUFRLEdBQUUsU0FBUSxHQUFFLFFBQU8sUUFBTyxXQUFVLFFBQU8sYUFBWSxNQUFHLG1CQUFrQixFQUFDLE1BQUssUUFBTyxPQUFNLFdBQVUsS0FBSSxVQUFTLE1BQUssU0FBUSxRQUFPLFlBQVcsUUFBTyxXQUFVLEVBQUMsR0FBRSxPQUFNLEVBQUMsUUFBTyxDQUFDLEdBQUUsT0FBTSxFQUFDLFFBQU8sQ0FBQyxHQUFFLFVBQVMsUUFBTyxZQUFXLEtBQUksWUFBVyxRQUFPLFVBQVMsR0FBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLE1BQUssTUFBRyxPQUFNLFdBQVUsT0FBTSxRQUFPLFFBQU8sR0FBRSxTQUFRLEdBQUUsU0FBUSxFQUFDLEdBQUUsV0FBVSxFQUFDLE1BQUssTUFBRyxPQUFNLFdBQVUsUUFBTyxHQUFFLFNBQVEsR0FBRSxTQUFRLEVBQUMsR0FBRSxZQUFXLFFBQU8sZUFBYyxNQUFLLEtBQUksUUFBTyxLQUFJLFFBQU8sT0FBTSxRQUFPLFVBQVMsT0FBRyxpQkFBZ0IsUUFBTyxVQUFTLFVBQVMsT0FBTSxFQUFDLE1BQUssUUFBTyxTQUFRLEdBQUUsU0FBUSxHQUFFLE9BQU0sRUFBQyxPQUFNLFFBQU8sVUFBUyxRQUFPLFlBQVcsS0FBSSxZQUFXLFFBQU8sVUFBUyxHQUFFLEVBQUMsR0FBRSxZQUFXLEVBQUMsTUFBSyxNQUFHLE9BQU0sR0FBRSxVQUFTLFFBQU8sU0FBUSxLQUFHLFFBQU8sRUFBQyxPQUFNLFdBQVUsT0FBTSxHQUFFLFdBQVUsRUFBQyxHQUFFLE1BQUssRUFBQyxNQUFLLFNBQVEsT0FBTSxXQUFVLFVBQVMsRUFBQyxXQUFVLFdBQVUsU0FBUSxXQUFVLE9BQU0sQ0FBQyxHQUFFLEdBQUcsR0FBRSxhQUFZLEtBQUcsV0FBVSxJQUFFLEVBQUMsR0FBRSxZQUFXLEVBQUMsU0FBUSxPQUFHLE1BQUssR0FBRSxLQUFJLEdBQUUsTUFBSyxHQUFFLFNBQVEsSUFBRSxFQUFDLEdBQUUsU0FBUSxFQUFDLFNBQVEsTUFBRyxTQUFRLEdBQUUsV0FBVSxRQUFPLE9BQU0sRUFBQyxVQUFTLFFBQU8sWUFBVyxPQUFNLEVBQUMsRUFBQyxHQUFFLE9BQU0sS0FBSyxPQUFNLE9BQU0sRUFBQyxNQUFLLFNBQVEsU0FBUSxZQUFXLFlBQVcsRUFBQyxTQUFRLE9BQUcsT0FBTSxXQUFVLFNBQVEsU0FBUSxnQkFBZSxLQUFHLEVBQUMsRUFBQztBQUFBLE1BQUMsRUFBQyxDQUFDLENBQUMsR0FBRUE7QUFBQSxJQUFDLEVBQUU7QUFBbHhaLFFBQW94WixJQUFFLFdBQVU7QUFBQyxlQUFTQSxHQUFFQyxJQUFFO0FBQUMsVUFBRSxNQUFLRCxFQUFDLEdBQUUsS0FBSyxNQUFJQyxJQUFFLEtBQUssSUFBRUEsR0FBRSxHQUFFLEtBQUssV0FBUyxJQUFJLEVBQUUsS0FBSyxHQUFHLEdBQUUsS0FBSyxFQUFFLFFBQVEsb0JBQWtCLEtBQUssYUFBVyxPQUFJLEtBQUssVUFBUSxJQUFJLEVBQUUsSUFBSSxHQUFFLEtBQUssbUJBQWlCLElBQUksRUFBRSxJQUFJLEdBQUUsS0FBSyxtQkFBaUIsSUFBSSxFQUFFLElBQUksR0FBRSxLQUFLLG9CQUFrQixJQUFJLEVBQUUsSUFBSSxHQUFFLEtBQUssRUFBRSxRQUFRLG1CQUFpQixLQUFLLEVBQUUsT0FBTyxNQUFNLENBQUMsRUFBRSxhQUFXLEtBQUssdUJBQXFCLE9BQUksS0FBSyxZQUFVLEtBQUssRUFBRSxRQUFRLFlBQVUsS0FBSyxFQUFFLFFBQVE7QUFBQSxNQUFVO0FBQUMsYUFBTyxFQUFFRCxJQUFFLENBQUMsRUFBQyxLQUFJLHVCQUFzQixPQUFNLFdBQVU7QUFBQyxZQUFJQSxLQUFFLEtBQUs7QUFBRSxZQUFHQSxHQUFFLFFBQVEsWUFBVztBQUFDLG1CQUFRQyxLQUFFLEtBQUssaUJBQWlCLHFCQUFxQixHQUFFQyxLQUFFLEtBQUssaUJBQWlCLHFCQUFxQixHQUFFQyxLQUFFLEtBQUssa0JBQWtCLHFCQUFxQixHQUFFQyxLQUFFSixHQUFFLE9BQU8sTUFBTSxXQUFXLFNBQVFLLEtBQUUsQ0FBQ0osSUFBRUMsSUFBRUMsRUFBQyxHQUFFRyxLQUFFLENBQUNKLEdBQUUsTUFBS0QsR0FBRSxNQUFLRSxHQUFFLElBQUksR0FBRUksS0FBRSxHQUFFQSxLQUFFLEdBQUVBO0FBQUksWUFBQVAsR0FBRSxRQUFRLElBQUksWUFBWSxJQUFJSyxHQUFFRSxFQUFDLENBQUMsR0FBRSxDQUFDSCxNQUFHSixHQUFFLFFBQVEsV0FBU0EsR0FBRSxRQUFRLGVBQWEsY0FBWUEsR0FBRSxPQUFPLE1BQU0sUUFBTSxhQUFXQSxHQUFFLE9BQU8sTUFBTSxRQUFNQSxHQUFFLFFBQVEsYUFBVyxLQUFHTSxHQUFFQyxFQUFDLEVBQUUsVUFBVSxJQUFJLDJCQUEyQixHQUFFUCxHQUFFLFFBQVEsZ0JBQWdCLEtBQUssRUFBQyxJQUFHTSxHQUFFQyxFQUFDLEdBQUUsT0FBTSxFQUFDLENBQUM7QUFBRSxlQUFLLFFBQVEsc0JBQXNCO0FBQUEsUUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxrQkFBaUIsT0FBTSxXQUFVO0FBQUMsWUFBSVAsS0FBRTtBQUFLLGFBQUssRUFBRSxPQUFPLFlBQVksT0FBTyxJQUFLLFNBQVNDLElBQUVDLElBQUU7QUFBQyxVQUFBRixHQUFFLFNBQVNDLElBQUVDLEVBQUM7QUFBQSxRQUFDLENBQUU7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksaUJBQWdCLE9BQU0sV0FBVTtBQUFDLFlBQUlGLEtBQUU7QUFBSyxhQUFLLEVBQUUsT0FBTyxZQUFZLE1BQU0sSUFBSyxTQUFTQyxJQUFFQyxJQUFFO0FBQUMsVUFBQUYsR0FBRSxRQUFRQyxJQUFFQyxFQUFDO0FBQUEsUUFBQyxDQUFFO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHNCQUFxQixPQUFNLFNBQVNGLElBQUVDLElBQUVDLElBQUU7QUFBQyxhQUFLLGlCQUFpQixtQkFBbUJGLElBQUVDLElBQUVDLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksc0JBQXFCLE9BQU0sU0FBU0YsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGFBQUssaUJBQWlCLG1CQUFtQkYsSUFBRUMsSUFBRUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxzQkFBcUIsT0FBTSxTQUFTRixJQUFFQyxJQUFFQyxJQUFFO0FBQUMsYUFBSyxrQkFBa0IsbUJBQW1CRixJQUFFQyxJQUFFQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFdBQVUsT0FBTSxTQUFTRixJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRUYsR0FBRSxHQUFFRyxLQUFFSCxHQUFFLEdBQUVJLEtBQUVKLEdBQUUsTUFBS0ssS0FBRUwsR0FBRSxZQUFXTSxLQUFFTixHQUFFLFdBQVVPLEtBQUVQLEdBQUUsVUFBU1EsS0FBRVIsR0FBRSxZQUFXUyxLQUFFVCxHQUFFLFlBQVdVLEtBQUVWLEdBQUUsVUFBU1csS0FBRVgsR0FBRSxpQkFBZ0JZLEtBQUVaLEdBQUUsYUFBWWEsS0FBRWIsR0FBRSxpQkFBZ0JjLEtBQUVkLEdBQUUsY0FBYWUsS0FBRWYsR0FBRSxhQUFZZ0IsS0FBRWhCLEdBQUUsVUFBU2lCLEtBQUUsV0FBU0QsS0FBRSw0QkFBMEJBLElBQUVFLEtBQUVsQixHQUFFLGFBQVltQixLQUFFLFdBQVNELEtBQUUsSUFBRUEsSUFBRUUsS0FBRXBCLEdBQUUsY0FBYXFCLEtBQUUsV0FBU0QsS0FBRSxJQUFFQSxJQUFFRSxLQUFFdEIsR0FBRSxlQUFjdUIsS0FBRSxXQUFTRCxLQUFFLElBQUVBLElBQUVFLEtBQUV4QixHQUFFLFlBQVd5QixLQUFFLFdBQVNELEtBQUUsSUFBRUEsSUFBRUUsS0FBRSxLQUFLLEdBQUVDLEtBQUUsS0FBSyxTQUFTLFNBQVMsRUFBQyxHQUFFekIsSUFBRSxHQUFFQyxJQUFFLE1BQUtDLElBQUUsWUFBV0MsTUFBRyxTQUFRLFVBQVNFLE1BQUcsUUFBTyxZQUFXRSxNQUFHLFdBQVUsWUFBV0QsTUFBR2tCLEdBQUUsT0FBTyxNQUFNLFlBQVcsV0FBVXBCLE1BQUdvQixHQUFFLE9BQU8sTUFBTSxXQUFVLFVBQVNoQixHQUFDLENBQUMsR0FBRWtCLEtBQUVGLEdBQUUsUUFBUSxJQUFJLE9BQU8sY0FBY1QsRUFBQztBQUFFLFFBQUFXLE1BQUdBLEdBQUUsWUFBWUQsR0FBRSxJQUFJO0FBQUUsWUFBSUUsS0FBRUYsR0FBRSxLQUFLO0FBQUUsWUFBR3ZCLElBQUU7QUFBQyxjQUFJMEIsS0FBRSxLQUFLLFNBQVMsU0FBU0QsR0FBRSxJQUFFVixJQUFFVSxHQUFFLElBQUVKLElBQUVJLEdBQUUsUUFBTVYsS0FBRUUsSUFBRVEsR0FBRSxTQUFPTixLQUFFRSxJQUFFWCxJQUFFSCxNQUFHLGVBQWMsR0FBRUMsSUFBRUcsSUFBRUYsRUFBQztBQUFFLFVBQUFlLEdBQUUsYUFBYUUsR0FBRSxNQUFLSCxHQUFFLElBQUk7QUFBQSxRQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFlBQVcsT0FBTSxTQUFTM0IsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxHQUFFQyxLQUFFSCxHQUFFLE1BQUtJLEtBQUVKLEdBQUUsR0FBRUssS0FBRSxXQUFTRCxLQUFFLElBQUVBLElBQUVFLEtBQUVOLEdBQUUsR0FBRU8sS0FBRSxXQUFTRCxLQUFFLElBQUVBLElBQUVFLEtBQUVSLEdBQUUsT0FBTVMsS0FBRSxXQUFTRCxLQUFFLEtBQUdBLElBQUVFLEtBQUVWLEdBQUUsUUFBT1csS0FBRSxXQUFTRCxLQUFFLEtBQUdBLElBQUVFLEtBQUVaLEdBQUUsVUFBU2EsS0FBRSxXQUFTRCxLQUFFLDRCQUEwQkEsSUFBRUUsS0FBRVosR0FBRSxRQUFRLElBQUksTUFBTSxNQUFNQyxFQUFDO0FBQUUsUUFBQVcsR0FBRSxLQUFLTCxJQUFFRSxFQUFDLEVBQUUsS0FBS04sSUFBRUUsRUFBQztBQUFFLFlBQUlRLEtBQUViLEdBQUUsUUFBUSxJQUFJLE9BQU8sY0FBY1csRUFBQztBQUFFLGVBQU9FLE1BQUdBLEdBQUUsWUFBWUQsR0FBRSxJQUFJLEdBQUVBO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDhCQUE2QixPQUFNLFNBQVNkLElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssc0JBQXNCLEVBQUMsUUFBT0YsSUFBRSxjQUFhQyxJQUFFLFNBQVFDLElBQUUsTUFBSyxTQUFRLGVBQWNBLEdBQUUsbUJBQWtCLENBQUMsR0FBRUE7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksOEJBQTZCLE9BQU0sU0FBU0YsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxzQkFBc0IsRUFBQyxRQUFPRixJQUFFLGNBQWFDLElBQUUsU0FBUUMsSUFBRSxNQUFLLFNBQVEsZUFBY0EsR0FBRSxtQkFBa0IsQ0FBQyxHQUFFQTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSw4QkFBNkIsT0FBTSxTQUFTRixJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBTyxXQUFTLEtBQUssZUFBYSxLQUFLLGFBQVdBLEdBQUUsRUFBRSxRQUFRLGtCQUFpQixLQUFLLHNCQUFzQixFQUFDLFFBQU9GLElBQUUsY0FBYUMsSUFBRSxTQUFRQyxJQUFFLE1BQUssU0FBUSxlQUFjQSxHQUFFLG1CQUFrQixDQUFDLEdBQUVBO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHlCQUF3QixPQUFNLFNBQVNGLElBQUU7QUFBQyxZQUFJQyxLQUFFRCxHQUFFLFFBQU9FLEtBQUVGLEdBQUUsY0FBYUcsS0FBRUgsR0FBRSxTQUFRSSxLQUFFSixHQUFFLE1BQUtLLEtBQUVMLEdBQUUsZUFBY00sS0FBRUgsSUFBRUksS0FBRUQsR0FBRSxHQUFFRSxLQUFFRCxHQUFFLFFBQVEsSUFBSSxPQUFPLGNBQWMsZUFBZSxPQUFPSCxJQUFFLGNBQWMsQ0FBQyxHQUFFSyxLQUFFRCxHQUFFLFdBQVcsU0FBTyxHQUFFRSxLQUFFLElBQUksS0FBRUMsS0FBRSxPQUFPLE9BQU8sQ0FBQyxHQUFFLFlBQVVQLEtBQUVNLEdBQUUsa0JBQWdCLFlBQVVOLEtBQUVNLEdBQUUsa0JBQWdCQSxHQUFFLGVBQWUsR0FBRUUsS0FBRSxFQUFFLE9BQU9ELElBQUVWLEVBQUM7QUFBRSxnQkFBT0csSUFBRTtBQUFBLFVBQUMsS0FBSTtBQUFRLGlCQUFLLG1CQUFtQlEsSUFBRUosSUFBRUMsRUFBQztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVEsaUJBQUssbUJBQW1CRyxJQUFFSixJQUFFQyxFQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBUSxpQkFBSyxtQkFBbUJHLElBQUVKLElBQUVDLEVBQUM7QUFBQSxRQUFDO0FBQUMsWUFBSUksS0FBRU4sR0FBRSxRQUFRLElBQUksT0FBTyxjQUFjLGVBQWUsT0FBT0gsSUFBRSwyQkFBMkIsRUFBRSxPQUFPQSxJQUFFLHlCQUF5QixFQUFFLE9BQU9LLElBQUUsSUFBSSxDQUFDLEdBQUVLLEtBQUUsS0FBSyxRQUFRLG9CQUFvQkQsSUFBRUQsRUFBQztBQUFFLGVBQU9FLE1BQUdOLEdBQUUsYUFBYU0sR0FBRSxNQUFLRCxFQUFDLEdBQUVYLE1BQUdLLEdBQUUsUUFBUSxPQUFPLGNBQWMsS0FBSyxFQUFDLFNBQVFELElBQUUsSUFBR00sR0FBRSxLQUFHQSxHQUFFLEtBQUcsRUFBRSxTQUFTLEdBQUUsUUFBT1AsSUFBRSxPQUFNLGlCQUFnQixRQUFPSixHQUFDLENBQUMsR0FBRUU7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksb0JBQW1CLE9BQU0sU0FBU0gsSUFBRTtBQUFDLFlBQUlDLEtBQUVELEdBQUUsR0FBRUUsS0FBRUQsR0FBRSxRQUFRLElBQUksT0FBTyxpQkFBaUIsNkZBQTZGO0FBQUUsUUFBQUEsR0FBRSxRQUFRLE9BQU8sY0FBYyxJQUFLLFNBQVNELElBQUVFLElBQUU7QUFBQyx3QkFBWUYsR0FBRSxTQUFPLG9CQUFrQkEsR0FBRSxTQUFPQyxHQUFFLFFBQVEsT0FBTyxjQUFjLE9BQU9DLElBQUUsQ0FBQztBQUFBLFFBQUMsQ0FBRSxHQUFFQSxLQUFFLEVBQUUsWUFBWUEsRUFBQyxHQUFFLE1BQU0sVUFBVSxRQUFRLEtBQUtBLElBQUcsU0FBU0YsSUFBRTtBQUFDLGlCQUFLQSxHQUFFO0FBQVksWUFBQUEsR0FBRSxZQUFZQSxHQUFFLFVBQVU7QUFBQSxRQUFDLENBQUU7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksb0JBQW1CLE9BQU0sU0FBU0EsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUVGLEdBQUUsR0FBRUcsS0FBRUQsR0FBRSxRQUFRLElBQUksT0FBTyxpQkFBaUIsSUFBSSxPQUFPRCxFQUFDLENBQUM7QUFBRSxRQUFBRSxPQUFJRCxHQUFFLFFBQVEsT0FBTyxjQUFjLElBQUssU0FBU0YsSUFBRUcsSUFBRTtBQUFDLFVBQUFILEdBQUUsT0FBS0MsTUFBR0MsR0FBRSxRQUFRLE9BQU8sY0FBYyxPQUFPQyxJQUFFLENBQUM7QUFBQSxRQUFDLENBQUUsR0FBRSxNQUFNLFVBQVUsUUFBUSxLQUFLQSxJQUFHLFNBQVNILElBQUU7QUFBQyxVQUFBQSxHQUFFLGNBQWMsWUFBWUEsRUFBQztBQUFBLFFBQUMsQ0FBRTtBQUFBLE1BQUUsRUFBQyxDQUFDLENBQUMsR0FBRUE7QUFBQSxJQUFDLEVBQUU7QUFBN3BqQixRQUErcGpCLElBQUUsV0FBVTtBQUFDLGVBQVNBLEdBQUVDLElBQUU7QUFBQyxVQUFFLE1BQUtELEVBQUMsR0FBRSxLQUFLLE1BQUlDLElBQUUsS0FBSyxJQUFFQSxHQUFFLEdBQUUsS0FBSyxXQUFTLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLElBQUcsRUFBRSxHQUFFLEtBQUssV0FBUyxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsRUFBRSxHQUFFLEtBQUssZ0JBQWMsQ0FBQyxHQUFFLElBQUcsSUFBRyxJQUFHLEtBQUksS0FBSSxLQUFJLEtBQUksS0FBSSxLQUFJLEtBQUksR0FBRztBQUFBLE1BQUM7QUFBQyxhQUFPLEVBQUVELElBQUUsQ0FBQyxFQUFDLEtBQUksZUFBYyxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFNLENBQUMsTUFBTSxLQUFLLFVBQVVBLEVBQUMsQ0FBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxnQkFBZSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssTUFBTUEsRUFBQyxJQUFFLEtBQUssRUFBRSxPQUFPLE1BQU0sT0FBTyxjQUFZLElBQUksS0FBSyxJQUFJLEtBQUtBLEVBQUMsRUFBRSxZQUFZLEVBQUUsT0FBTyxHQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsSUFBRSxJQUFJLEtBQUtBLEVBQUMsRUFBRSxRQUFRLElBQUVBO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFdBQVUsT0FBTSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEVBQUUsT0FBTyxNQUFNLE9BQU8sY0FBWSxJQUFJLEtBQUssSUFBSSxLQUFLQSxFQUFDLEVBQUUsWUFBWSxDQUFDLElBQUUsSUFBSSxLQUFLQSxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGFBQVksT0FBTSxTQUFTQSxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLE1BQU1ELEVBQUM7QUFBRSxZQUFHLENBQUMsTUFBTUMsRUFBQztBQUFFLGlCQUFPLEtBQUssYUFBYUQsRUFBQztBQUFFLFlBQUlFLEtBQUUsS0FBSyxNQUFNRixHQUFFLFFBQVEsTUFBSyxHQUFHLEVBQUUsUUFBUSxZQUFXLEdBQUcsQ0FBQztBQUFFLGVBQU9FLEtBQUUsS0FBSyxhQUFhQSxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHlCQUF3QixPQUFNLFNBQVNGLElBQUU7QUFBQyxlQUFPLEtBQUssTUFBTUEsR0FBRSxRQUFRLE1BQUssR0FBRyxFQUFFLFFBQVEsWUFBVyxHQUFHLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksY0FBYSxPQUFNLFNBQVNBLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssRUFBRSxRQUFRLFFBQU9DLEtBQUUsS0FBSyxFQUFFLE9BQU8sTUFBTSxPQUFPLGFBQVlDLEtBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFRixHQUFFLE1BQU0sQ0FBQyxHQUFFRyxLQUFFLENBQUMsR0FBTSxFQUFFLE9BQU8sRUFBRUgsR0FBRSxXQUFXLENBQUMsR0FBRUksS0FBRSxDQUFDLEdBQU0sRUFBRSxPQUFPLEVBQUVKLEdBQUUsSUFBSSxDQUFDLEdBQUVLLEtBQUUsQ0FBQyxHQUFNLEVBQUUsT0FBTyxFQUFFTCxHQUFFLFNBQVMsQ0FBQztBQUFFLGlCQUFTTSxHQUFFUixJQUFFQyxJQUFFO0FBQUMsY0FBSUMsS0FBRUYsS0FBRTtBQUFHLGVBQUlDLEtBQUVBLE1BQUcsR0FBRUMsR0FBRSxTQUFPRDtBQUFHLFlBQUFDLEtBQUUsTUFBSUE7QUFBRSxpQkFBT0E7QUFBQSxRQUFDO0FBQUMsWUFBSU8sS0FBRU4sS0FBRUgsR0FBRSxlQUFlLElBQUVBLEdBQUUsWUFBWTtBQUFFLFFBQUFDLE1BQUdBLE1BQUdBLEtBQUVBLEdBQUUsUUFBUSxtQkFBa0IsT0FBS1EsRUFBQyxHQUFHLFFBQVEsZ0JBQWUsT0FBS0EsR0FBRSxTQUFTLEVBQUUsT0FBTyxHQUFFLENBQUMsQ0FBQyxHQUFHLFFBQVEsZUFBYyxPQUFLQSxFQUFDO0FBQUUsWUFBSUMsTUFBR1AsS0FBRUgsR0FBRSxZQUFZLElBQUVBLEdBQUUsU0FBUyxLQUFHO0FBQUUsUUFBQUMsTUFBR0EsTUFBR0EsTUFBR0EsS0FBRUEsR0FBRSxRQUFRLG1CQUFrQixPQUFLRyxHQUFFLENBQUMsQ0FBQyxHQUFHLFFBQVEsaUJBQWdCLE9BQUtDLEdBQUUsQ0FBQyxDQUFDLEdBQUcsUUFBUSxnQkFBZSxPQUFLRyxHQUFFRSxFQUFDLENBQUMsR0FBRyxRQUFRLGVBQWMsT0FBS0EsRUFBQztBQUFFLFlBQUlDLEtBQUVSLEtBQUVILEdBQUUsV0FBVyxJQUFFQSxHQUFFLFFBQVE7QUFBRSxRQUFBQyxNQUFHQSxNQUFHQSxNQUFHQSxLQUFFQSxHQUFFLFFBQVEsbUJBQWtCLE9BQUtLLEdBQUUsQ0FBQyxDQUFDLEdBQUcsUUFBUSxpQkFBZ0IsT0FBS0MsR0FBRSxDQUFDLENBQUMsR0FBRyxRQUFRLGdCQUFlLE9BQUtDLEdBQUVHLEVBQUMsQ0FBQyxHQUFHLFFBQVEsZUFBYyxPQUFLQSxFQUFDO0FBQUUsWUFBSUMsS0FBRVQsS0FBRUgsR0FBRSxZQUFZLElBQUVBLEdBQUUsU0FBUyxHQUFFYyxLQUFFRixLQUFFLEtBQUdBLEtBQUUsS0FBRyxNQUFJQSxLQUFFLEtBQUdBO0FBQUUsUUFBQVgsTUFBR0EsTUFBR0EsTUFBR0EsS0FBRUEsR0FBRSxRQUFRLGlCQUFnQixPQUFLTyxHQUFFSSxFQUFDLENBQUMsR0FBRyxRQUFRLGVBQWMsT0FBS0EsRUFBQyxHQUFHLFFBQVEsaUJBQWdCLE9BQUtKLEdBQUVNLEVBQUMsQ0FBQyxHQUFHLFFBQVEsZUFBYyxPQUFLQSxFQUFDO0FBQUUsWUFBSUMsS0FBRVosS0FBRUgsR0FBRSxjQUFjLElBQUVBLEdBQUUsV0FBVztBQUFFLFFBQUFDLE1BQUdBLEtBQUVBLEdBQUUsUUFBUSxpQkFBZ0IsT0FBS08sR0FBRU8sRUFBQyxDQUFDLEdBQUcsUUFBUSxlQUFjLE9BQUtBLEVBQUM7QUFBRSxZQUFJQyxLQUFFYixLQUFFSCxHQUFFLGNBQWMsSUFBRUEsR0FBRSxXQUFXO0FBQUUsUUFBQUMsTUFBR0EsS0FBRUEsR0FBRSxRQUFRLGlCQUFnQixPQUFLTyxHQUFFUSxFQUFDLENBQUMsR0FBRyxRQUFRLGVBQWMsT0FBS0EsRUFBQztBQUFFLFlBQUlDLEtBQUVkLEtBQUVILEdBQUUsbUJBQW1CLElBQUVBLEdBQUUsZ0JBQWdCO0FBQUUsUUFBQUMsS0FBRUEsR0FBRSxRQUFRLGtCQUFpQixPQUFLTyxHQUFFUyxJQUFFLENBQUMsQ0FBQyxHQUFFQSxLQUFFLEtBQUssTUFBTUEsS0FBRSxFQUFFLEdBQUVoQixLQUFFQSxHQUFFLFFBQVEsZ0JBQWUsT0FBS08sR0FBRVMsRUFBQyxDQUFDLEdBQUVBLEtBQUUsS0FBSyxNQUFNQSxLQUFFLEVBQUU7QUFBRSxZQUFJQyxLQUFFTixLQUFFLEtBQUcsT0FBSztBQUFLLFFBQUFYLE1BQUdBLE1BQUdBLEtBQUVBLEdBQUUsUUFBUSxlQUFjLE9BQUtnQixFQUFDLEdBQUcsUUFBUSxpQkFBZ0IsT0FBS0MsRUFBQyxHQUFHLFFBQVEsZUFBYyxPQUFLQSxHQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQUUsWUFBSUMsS0FBRUQsR0FBRSxZQUFZO0FBQUUsUUFBQWpCLE1BQUdBLEtBQUVBLEdBQUUsUUFBUSxpQkFBZ0IsT0FBS2tCLEVBQUMsR0FBRyxRQUFRLGVBQWMsT0FBS0EsR0FBRSxPQUFPLENBQUMsQ0FBQztBQUFFLFlBQUlDLEtBQUUsQ0FBQ3BCLEdBQUUsa0JBQWtCLEdBQUVxQixLQUFFbEIsTUFBRyxDQUFDaUIsS0FBRSxNQUFJQSxLQUFFLElBQUUsTUFBSTtBQUFJLFlBQUcsQ0FBQ2pCLElBQUU7QUFBQyxjQUFJbUIsTUFBR0YsS0FBRSxLQUFLLElBQUlBLEVBQUMsS0FBRztBQUFHLFVBQUFDLE1BQUdiLEdBQUUsS0FBSyxNQUFNWSxLQUFFLEVBQUUsQ0FBQyxJQUFFLE1BQUlaLEdBQUVjLEVBQUM7QUFBQSxRQUFDO0FBQUMsUUFBQXJCLEtBQUVBLEdBQUUsUUFBUSxlQUFjLE9BQUtvQixFQUFDO0FBQUUsWUFBSUUsTUFBR3BCLEtBQUVILEdBQUUsVUFBVSxJQUFFQSxHQUFFLE9BQU8sS0FBRztBQUFFLGVBQU9DLE1BQUdBLE1BQUdBLE1BQUdBLE1BQUdBLEtBQUVBLEdBQUUsUUFBUSxJQUFJLE9BQU9LLEdBQUUsQ0FBQyxHQUFFLEdBQUcsR0FBRUEsR0FBRWlCLEVBQUMsQ0FBQyxHQUFHLFFBQVEsSUFBSSxPQUFPaEIsR0FBRSxDQUFDLEdBQUUsR0FBRyxHQUFFQSxHQUFFZ0IsRUFBQyxDQUFDLEdBQUcsUUFBUSxJQUFJLE9BQU9uQixHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUVBLEdBQUVNLEVBQUMsQ0FBQyxHQUFHLFFBQVEsSUFBSSxPQUFPTCxHQUFFLENBQUMsR0FBRSxHQUFHLEdBQUVBLEdBQUVLLEVBQUMsQ0FBQyxHQUFHLFFBQVEsVUFBUyxJQUFJO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDZCQUE0QixPQUFNLFNBQVNWLElBQUVDLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUs7QUFBRSxtQkFBU0EsR0FBRSxPQUFPLE1BQU0sUUFBTUgsS0FBRUcsR0FBRSxPQUFPLE1BQU0sTUFBSyxXQUFTQSxHQUFFLE9BQU8sTUFBTSxRQUFNRixLQUFFRSxHQUFFLE9BQU8sTUFBTTtBQUFLLFlBQUlDLEtBQUUsS0FBSyxRQUFRSixFQUFDLEdBQUVLLEtBQUUsS0FBSyxRQUFRSixFQUFDLEdBQUVLLEtBQUUsS0FBSyxXQUFXRixJQUFFLHlCQUF5QixFQUFFLE1BQU0sR0FBRyxHQUFFRyxLQUFFLEtBQUssV0FBV0YsSUFBRSx5QkFBeUIsRUFBRSxNQUFNLEdBQUc7QUFBRSxlQUFNLEVBQUMsZ0JBQWUsU0FBU0MsR0FBRSxDQUFDLEdBQUUsRUFBRSxHQUFFLGdCQUFlLFNBQVNDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxXQUFVLFNBQVNELEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxXQUFVLFNBQVNDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxXQUFVLFNBQVNELEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxXQUFVLFNBQVNDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFRLFNBQVNELEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFRLFNBQVNDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFRLFNBQVNELEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxTQUFRLFNBQVNDLEdBQUUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxVQUFTLFNBQVNELEdBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBRSxHQUFFLFVBQVMsU0FBU0MsR0FBRSxDQUFDLEdBQUUsRUFBRSxJQUFFLEdBQUUsU0FBUSxTQUFTRCxHQUFFLENBQUMsR0FBRSxFQUFFLEdBQUUsU0FBUSxTQUFTQyxHQUFFLENBQUMsR0FBRSxFQUFFLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksY0FBYSxPQUFNLFNBQVNQLElBQUU7QUFBQyxlQUFPQSxLQUFFLEtBQUcsS0FBR0EsS0FBRSxPQUFLLEtBQUdBLEtBQUUsT0FBSztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSw2QkFBNEIsT0FBTSxTQUFTQSxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLHNCQUFzQkYsSUFBRUMsRUFBQyxJQUFFQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSx1QkFBc0IsT0FBTSxTQUFTRixJQUFFO0FBQUMsWUFBSUMsS0FBRTtBQUFJLGVBQU8sS0FBSyxXQUFXRCxFQUFDLE1BQUlDLEtBQUUsTUFBS0E7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksZ0NBQStCLE9BQU0sU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxjQUFjRixFQUFDLElBQUVDO0FBQUUsZUFBT0QsS0FBRSxLQUFHLEtBQUssV0FBVyxLQUFHRSxNQUFJQTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSx5QkFBd0IsT0FBTSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRTtBQUFHLGdCQUFPRixLQUFFLEVBQUUsU0FBU0EsRUFBQyxHQUFFLE1BQUc7QUFBQSxVQUFDLEtBQUssS0FBSyxTQUFTLFFBQVFBLEVBQUMsSUFBRTtBQUFHLGtCQUFJQSxPQUFJRSxLQUFFLEtBQUssV0FBV0QsRUFBQyxJQUFFLEtBQUc7QUFBSTtBQUFBLFVBQU0sS0FBSyxLQUFLLFNBQVMsUUFBUUQsRUFBQyxJQUFFO0FBQUEsVUFBRztBQUFRLFlBQUFFLEtBQUU7QUFBQSxRQUFFO0FBQUMsZUFBT0E7QUFBQSxNQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUVGO0FBQUEsSUFBQyxFQUFFO0FBQXgyckIsUUFBMDJyQixJQUFFLFdBQVU7QUFBQyxlQUFTQSxHQUFFQyxJQUFFO0FBQUMsVUFBRSxNQUFLRCxFQUFDLEdBQUUsS0FBSyxNQUFJQyxJQUFFLEtBQUssSUFBRUEsR0FBRSxHQUFFLEtBQUssbUJBQWlCO0FBQUEsTUFBUTtBQUFDLGFBQU8sRUFBRUQsSUFBRSxDQUFDLEVBQUMsS0FBSSxnQkFBZSxPQUFNLFNBQVNBLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUs7QUFBRSxZQUFHLGVBQWFBLEdBQUUsT0FBTyxNQUFNLFFBQU0sV0FBU0EsR0FBRSxPQUFPLE1BQU0sT0FBTyxhQUFXLFdBQVNBLEdBQUUsT0FBTyxRQUFRLEVBQUUsV0FBVTtBQUFDLGNBQUlDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRztBQUFFLGlCQUFPQSxHQUFFLFdBQVdBLEdBQUUsUUFBUUosRUFBQyxHQUFFRyxHQUFFLE9BQU8sUUFBUSxFQUFFLE1BQU07QUFBQSxRQUFDO0FBQUMsZUFBT0osR0FBRUMsSUFBRUMsSUFBRUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSwyQkFBMEIsT0FBTSxTQUFTSCxJQUFFO0FBQUMsZUFBTyxNQUFNLFFBQVFBLEVBQUMsSUFBRUEsR0FBRSxJQUFLLFNBQVNBLElBQUU7QUFBQyxpQkFBT0E7QUFBQSxRQUFDLENBQUUsSUFBRUE7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUkscUJBQW9CLE9BQU0sU0FBU0EsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSztBQUFFLGVBQU8sRUFBRSxTQUFTSCxFQUFDLE1BQUlBLEtBQUUsTUFBSUcsR0FBRSxRQUFRLGdCQUFjSCxHQUFFLFFBQVEsV0FBU0MsR0FBRSxrQkFBZ0JBLEdBQUUsa0JBQWdCRSxHQUFFLFFBQVEsYUFBYSxJQUFFQSxHQUFFLFFBQVEsUUFBUUQsRUFBQyxJQUFFQyxHQUFFLFFBQVEsUUFBUUQsRUFBQyxJQUFFLElBQUVGLEdBQUUsUUFBUSxDQUFDLElBQUVBLEdBQUUsUUFBUSxDQUFDLElBQUdBO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHNCQUFxQixPQUFNLFdBQVU7QUFBQyxZQUFJQSxLQUFFLE1BQUtDLEtBQUUsS0FBSztBQUFFLGVBQU9BLEdBQUUsUUFBUSx3QkFBc0IsU0FBU0EsSUFBRTtBQUFDLGlCQUFPRCxHQUFFLHdCQUF3QkMsRUFBQztBQUFBLFFBQUMsR0FBRUEsR0FBRSxRQUFRLGlCQUFlLFNBQVNBLElBQUU7QUFBQyxpQkFBT0QsR0FBRSx3QkFBd0JDLEVBQUM7QUFBQSxRQUFDLEdBQUVBLEdBQUUsUUFBUSxlQUFhLFNBQVNELElBQUU7QUFBQyxpQkFBT0E7QUFBQSxRQUFDLEdBQUVDLEdBQUUsUUFBUSxrQkFBZ0IsU0FBU0EsSUFBRTtBQUFDLGlCQUFPRCxHQUFFLHdCQUF3QkMsRUFBQztBQUFBLFFBQUMsR0FBRSxXQUFTQSxHQUFFLE9BQU8sTUFBTSxPQUFPLFlBQVVBLEdBQUUsUUFBUSxrQkFBZ0JBLEdBQUUsT0FBTyxNQUFNLE9BQU8sWUFBVUEsR0FBRSxRQUFRLGtCQUFnQixTQUFTRCxJQUFFO0FBQUMsY0FBRyxFQUFFLFNBQVNBLEVBQUMsR0FBRTtBQUFDLGdCQUFHLENBQUNDLEdBQUUsT0FBTyxNQUFNLHlCQUF1QixjQUFZQSxHQUFFLE9BQU8sTUFBTSxNQUFLO0FBQUMsa0JBQUcsRUFBRSxTQUFTQSxHQUFFLE9BQU8sTUFBTSxlQUFlO0FBQUUsdUJBQU9ELEdBQUUsUUFBUUMsR0FBRSxPQUFPLE1BQU0sZUFBZTtBQUFFLGtCQUFJQyxLQUFFRCxHQUFFLFFBQVEsT0FBS0EsR0FBRSxRQUFRO0FBQUsscUJBQU9DLEtBQUUsS0FBR0EsS0FBRSxNQUFJRixHQUFFLFFBQVEsQ0FBQyxJQUFFQSxHQUFFLFFBQVEsQ0FBQztBQUFBLFlBQUM7QUFBQyxnQkFBR0MsR0FBRSxRQUFRO0FBQWdCLGtCQUFHQSxHQUFFLFFBQVEsT0FBS0EsR0FBRSxRQUFRLFVBQVE7QUFBRSx1QkFBT0QsR0FBRSxRQUFRLENBQUM7QUFBQTtBQUFFLG1CQUFPQSxHQUFFLFFBQVEsQ0FBQztBQUFBLFVBQUM7QUFBQyxpQkFBT0E7QUFBQSxRQUFDLEdBQUUsY0FBWSxPQUFPQyxHQUFFLE9BQU8sUUFBUSxFQUFFLFlBQVVBLEdBQUUsUUFBUSxpQkFBZUEsR0FBRSxPQUFPLFFBQVEsRUFBRSxZQUFVQSxHQUFFLFFBQVEsaUJBQWVBLEdBQUUsUUFBUSxpQkFBZ0IsY0FBWSxPQUFPQSxHQUFFLE9BQU8sTUFBTSxRQUFRLGNBQVlBLEdBQUUsUUFBUSx3QkFBc0JBLEdBQUUsT0FBTyxNQUFNLFFBQVEsYUFBWSxNQUFNLFFBQVFBLEdBQUUsT0FBTyxRQUFRLENBQUMsS0FBRyxXQUFTQSxHQUFFLE9BQU8sUUFBUSxFQUFFLGVBQWFBLEdBQUUsUUFBUSxRQUFNQSxHQUFFLE9BQU8sUUFBUSxJQUFHLFdBQVNBLEdBQUUsT0FBTyxRQUFRLEVBQUUsY0FBWUEsR0FBRSxRQUFRLGVBQWFBLEdBQUUsT0FBTyxRQUFRLEVBQUUsWUFBVyxXQUFTQSxHQUFFLE9BQU8sT0FBTyxjQUFZQSxHQUFFLFFBQVEsa0JBQWdCQSxHQUFFLE9BQU8sT0FBTyxZQUFXQSxHQUFFLE9BQU8sTUFBTSxRQUFTLFNBQVNDLElBQUVDLElBQUU7QUFBQyxxQkFBU0QsR0FBRSxPQUFPLFlBQVVELEdBQUUsUUFBUSxpQkFBaUJFLEVBQUMsSUFBRUQsR0FBRSxPQUFPLFlBQVVELEdBQUUsUUFBUSxpQkFBaUJFLEVBQUMsSUFBRSxTQUFTQyxJQUFFO0FBQUMsbUJBQU9ILEdBQUUsUUFBUSxXQUFTLE1BQU0sUUFBUUcsRUFBQyxJQUFFQSxHQUFFLElBQUssU0FBU0gsSUFBRTtBQUFDLHFCQUFPRCxHQUFFLGtCQUFrQkMsSUFBRUMsSUFBRUMsRUFBQztBQUFBLFlBQUMsQ0FBRSxJQUFFSCxHQUFFLGtCQUFrQkksSUFBRUYsSUFBRUMsRUFBQyxJQUFFQztBQUFBLFVBQUM7QUFBQSxRQUFDLENBQUUsR0FBRUgsR0FBRTtBQUFBLE1BQU8sRUFBQyxHQUFFLEVBQUMsS0FBSSwwQkFBeUIsT0FBTSxXQUFVO0FBQUMsWUFBSUQsS0FBRSxLQUFLO0FBQUUsWUFBRyxjQUFZQSxHQUFFLE9BQU8sTUFBTSxNQUFLO0FBQUMsVUFBQUEsR0FBRSxRQUFRLFdBQVcsQ0FBQyxFQUFFLFNBQU9BLEdBQUUsUUFBUSxZQUFZLE1BQU07QUFBRSxjQUFJQyxLQUFFRCxHQUFFLFFBQVEsWUFBWSxPQUFRLFNBQVNBLElBQUVDLElBQUU7QUFBQyxtQkFBT0QsR0FBRSxTQUFPQyxHQUFFLFNBQU9ELEtBQUVDO0FBQUEsVUFBQyxHQUFHLENBQUM7QUFBRSxVQUFBRCxHQUFFLFFBQVEsV0FBVyxDQUFDLEVBQUUsVUFBUUMsSUFBRUQsR0FBRSxRQUFRLFdBQVcsQ0FBQyxFQUFFLFVBQVFDO0FBQUEsUUFBQztBQUFBLE1BQUMsRUFBQyxDQUFDLENBQUMsR0FBRUQ7QUFBQSxJQUFDLEVBQUU7QUFBam14QixRQUFtbXhCLElBQUUsU0FBU0EsSUFBRTtBQUFDLFVBQUlDLElBQUVDLEtBQUVGLEdBQUUsWUFBV0csS0FBRUgsR0FBRSxLQUFJSSxLQUFFSixHQUFFLGFBQVlLLEtBQUVMLEdBQUUsZ0JBQWVNLEtBQUVOLEdBQUUsSUFBR08sS0FBRVAsR0FBRSxJQUFHUSxLQUFFUixHQUFFLEdBQUVTLEtBQUVELEdBQUUsUUFBUSxpQkFBaUJKLEVBQUMsRUFBRUMsRUFBQyxHQUFFSyxLQUFFRixHQUFFLFFBQVEsZUFBZUosRUFBQyxFQUFFQyxFQUFDLEdBQUVNLEtBQUVILEdBQUUsUUFBUSxPQUFPSCxFQUFDLEdBQUVPLEtBQUVKLEdBQUUsT0FBTyxPQUFPSixFQUFDLEVBQUUsT0FBS0ksR0FBRSxPQUFPLE9BQU9KLEVBQUMsRUFBRSxPQUFLLElBQUdTLEtBQUVMLEdBQUUsUUFBUSxnQkFBZU0sS0FBRU4sR0FBRSxPQUFPLFFBQVEsRUFBRSxNQUFNLFdBQVVPLEtBQUUsRUFBQyxHQUFFUCxJQUFFLGFBQVlKLElBQUUsZ0JBQWVDLElBQUUsT0FBTUksSUFBRSxLQUFJQyxHQUFDO0FBQUUsT0FBQyxjQUFZLE9BQU9JLE9BQUlGLEtBQUVFLEdBQUVGLElBQUVHLEVBQUMsSUFBRyxVQUFRZCxLQUFFTyxHQUFFLE9BQU8sT0FBT0osRUFBQyxFQUFFLEtBQUtDLEVBQUMsTUFBSSxXQUFTSixNQUFHQSxHQUFFLE1BQUlVLEtBQUVILEdBQUUsT0FBTyxPQUFPSixFQUFDLEVBQUUsS0FBS0MsRUFBQyxFQUFFLElBQUdILE9BQUksZUFBYU0sR0FBRSxPQUFPLE1BQU0sU0FBT0csS0FBRSxJQUFJLEVBQUVSLEVBQUMsRUFBRSxhQUFhSyxHQUFFLFFBQVEsZ0JBQWVHLElBQUVBLElBQUUsRUFBQyxHQUFFLFFBQU8sZUFBYyxJQUFJLEVBQUVSLEVBQUMsRUFBRSxZQUFXLEdBQUVLLEdBQUMsQ0FBQztBQUFHLG9CQUFZLE9BQU9LLE9BQUlGLEtBQUVFLEdBQUVGLElBQUVJLEVBQUMsSUFBRyxPQUFPLFNBQVNULEVBQUMsS0FBRyxPQUFPLFNBQVNDLEVBQUMsTUFBSUUsS0FBRUgsSUFBRUksS0FBRUg7QUFBRyxVQUFJUyxLQUFFLElBQUdDLEtBQUUsSUFBR0MsS0FBRVYsR0FBRSxRQUFRLE9BQU9KLEVBQUM7QUFBRSxVQUFHLFdBQVNJLEdBQUUsT0FBTyxRQUFRLEVBQUU7QUFBVSxZQUFHLGVBQWFBLEdBQUUsT0FBTyxNQUFNLE1BQUs7QUFBQyxjQUFJVyxLQUFFLElBQUksRUFBRWhCLEVBQUM7QUFBRSxVQUFBYSxLQUFFRyxHQUFFLFdBQVdBLEdBQUUsUUFBUVYsRUFBQyxHQUFFRCxHQUFFLE9BQU8sUUFBUSxFQUFFLE1BQU0sR0FBRVMsS0FBRUUsR0FBRSxXQUFXQSxHQUFFLFFBQVFULEVBQUMsR0FBRUYsR0FBRSxPQUFPLFFBQVEsRUFBRSxNQUFNO0FBQUEsUUFBQztBQUFNLFVBQUFRLEtBQUVQLElBQUVRLEtBQUVQO0FBQUE7QUFBTyxRQUFBTSxLQUFFUixHQUFFLE9BQU8sUUFBUSxFQUFFLFVBQVVDLEVBQUMsR0FBRVEsS0FBRVQsR0FBRSxPQUFPLFFBQVEsRUFBRSxVQUFVRSxFQUFDO0FBQUUsYUFBTSxFQUFDLE9BQU1ELElBQUUsS0FBSUMsSUFBRSxVQUFTTSxJQUFFLFFBQU9DLElBQUUsUUFBT04sSUFBRSxPQUFNTyxJQUFFLFlBQVdOLEdBQUM7QUFBQSxJQUFDO0FBQWxyekIsUUFBb3J6QixJQUFFLFNBQVNaLElBQUU7QUFBQyxVQUFJQyxLQUFFRCxHQUFFLE9BQU1FLEtBQUVGLEdBQUUsWUFBV0csS0FBRUgsR0FBRSxRQUFPSSxLQUFFSixHQUFFLE9BQU1LLEtBQUVMLEdBQUUsS0FBSU0sS0FBRU4sR0FBRSxhQUFZTyxLQUFFUCxHQUFFLGdCQUFlUSxLQUFFUixHQUFFLElBQUksUUFBUSxjQUFjLGNBQWNNLEVBQUM7QUFBRSxNQUFBRixLQUFFSSxHQUFFLGFBQWFKLEVBQUMsR0FBRUMsS0FBRUcsR0FBRSxhQUFhSCxFQUFDO0FBQUUsVUFBSUksS0FBRUQsR0FBRSxhQUFhUixHQUFFLEVBQUUsUUFBUSxPQUFPTSxFQUFDLEVBQUVDLEVBQUMsQ0FBQyxHQUFFRyxLQUFFLHVDQUF1QyxPQUFPTixJQUFFLGlGQUFpRixFQUFFLE9BQU9DLElBQUUsYUFBYTtBQUFFLGFBQU0sNEZBQTBGSixLQUFFLFFBQU1DLE1BQUcsTUFBSSwrQ0FBNkNDLEtBQUUsZ0JBQWNILEdBQUUsRUFBRSxRQUFRLGNBQVksZ0JBQWNBLEdBQUUsRUFBRSxPQUFPLE9BQU9NLEVBQUMsRUFBRSxRQUFNLGVBQWFOLEdBQUUsRUFBRSxPQUFPLE9BQU9NLEVBQUMsRUFBRSxPQUFLSSxLQUFFLFNBQVMsT0FBT0QsSUFBRSxTQUFTLElBQUVDLE1BQUc7QUFBQSxJQUFlO0FBQXY0MEIsUUFBeTQwQixJQUFFLFdBQVU7QUFBQyxlQUFTVixHQUFFQyxJQUFFO0FBQUMsVUFBRSxNQUFLRCxFQUFDLEdBQUUsS0FBSyxPQUFLQztBQUFBLE1BQUM7QUFBQyxhQUFPLEVBQUVELElBQUUsQ0FBQyxFQUFDLEtBQUksYUFBWSxPQUFNLFdBQVU7QUFBQyxhQUFLLEtBQUssTUFBTSxDQUFDLEVBQUUsT0FBSyxPQUFHLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxNQUFNLE9BQUssSUFBRyxLQUFLLEtBQUssTUFBTSxDQUFDLEVBQUUsV0FBVyxPQUFLLE9BQUcsS0FBSyxLQUFLLE1BQU0sQ0FBQyxFQUFFLFVBQVUsT0FBSyxPQUFHLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxXQUFTO0FBQUEsTUFBRSxFQUFDLEdBQUUsRUFBQyxLQUFJLFFBQU8sT0FBTSxXQUFVO0FBQUMsZUFBTSxFQUFDLE9BQU0sRUFBQyxZQUFXLEVBQUMsUUFBTyxRQUFPLEVBQUMsR0FBRSxZQUFXLEVBQUMsU0FBUSxNQUFFLEdBQUUsUUFBTyxFQUFDLE9BQU0sR0FBRSxPQUFNLFdBQVUsR0FBRSxTQUFRLEVBQUMsTUFBSyxHQUFFLE9BQU0sRUFBQyxZQUFXLEVBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxZQUFXLEVBQUMsT0FBTSxFQUFDLEVBQUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxhQUFZLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGFBQUssVUFBVTtBQUFFLGVBQU8sRUFBRSxPQUFPQSxJQUFFLEVBQUMsTUFBSyxFQUFDLE1BQUssT0FBRyxTQUFRLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxLQUFJLEdBQUUsUUFBTyxFQUFDLEVBQUMsR0FBRSxRQUFPLEVBQUMsTUFBSyxNQUFFLEdBQUUsT0FBTSxFQUFDLFFBQU8sRUFBQyxNQUFLLE1BQUUsR0FBRSxTQUFRLEVBQUMsU0FBUSxNQUFFLEdBQUUsWUFBVyxFQUFDLE1BQUssTUFBRSxHQUFFLFdBQVUsRUFBQyxNQUFLLE1BQUUsRUFBQyxHQUFFLE9BQU0sRUFBQyxTQUFRLEVBQUMsTUFBSyxNQUFFLEdBQUUsTUFBSyxFQUFDLFNBQVEsTUFBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLFNBQVEsTUFBRSxFQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksT0FBTSxPQUFNLFdBQVU7QUFBQyxlQUFNLEVBQUMsT0FBTSxFQUFDLFNBQVEsT0FBRyxZQUFXLEVBQUMsUUFBTyxRQUFPLEVBQUMsR0FBRSxhQUFZLEVBQUMsS0FBSSxFQUFDLFlBQVcsRUFBQyxVQUFTLFNBQVEsRUFBQyxFQUFDLEdBQUUsWUFBVyxFQUFDLE9BQU0sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsWUFBVyxFQUFDLFNBQVEsTUFBRSxFQUFDLEdBQUUsUUFBTyxFQUFDLE9BQU0sR0FBRSxTQUFRLFFBQU8sR0FBRSxNQUFLLEVBQUMsU0FBUSxLQUFHLEdBQUUsUUFBTyxFQUFDLFNBQVEsRUFBQyxPQUFNLFVBQVMsUUFBTyxHQUFFLE1BQUssRUFBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLFFBQU8sT0FBRyxXQUFVLEtBQUUsR0FBRSxPQUFNLEVBQUMsU0FBUSxFQUFDLFNBQVEsTUFBRSxHQUFFLGVBQWMsV0FBVSxZQUFXLEVBQUMsT0FBTSxZQUFXLFVBQVMsUUFBTyxNQUFLLEVBQUMsTUFBSyxXQUFVLEdBQUUsWUFBVyxFQUFDLFNBQVEsTUFBRSxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUMsRUFBQyxFQUFDLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksVUFBUyxPQUFNLFdBQVU7QUFBQyxlQUFPLEtBQUssVUFBVSxHQUFF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LElBQUUsT0FBTUMsSUFBRSxLQUFJQyxHQUFDLENBQUMsQ0FBQztBQUFBLFVBQUMsRUFBRVAsRUFBQztBQUFBLFFBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxlQUFjLFdBQVUsU0FBUSxFQUFDLFNBQVEsTUFBRSxHQUFFLFlBQVcsRUFBQyxRQUFPLEVBQUMsT0FBTSxFQUFDLEVBQUMsRUFBQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFlBQVcsT0FBTSxTQUFTQSxJQUFFO0FBQUMsWUFBSUMsSUFBRUM7QUFBRSxlQUFPLFVBQVFELEtBQUVELEdBQUUsWUFBWSxRQUFNLFdBQVNDLE1BQUdBLEdBQUUsY0FBWUQsR0FBRSxZQUFZLElBQUksWUFBVSxJQUFHLFVBQVFFLEtBQUVGLEdBQUUsWUFBWSxRQUFNLFdBQVNFLE1BQUdBLEdBQUUsZ0JBQWNGLEdBQUUsWUFBWSxJQUFJLGNBQVksSUFBR0E7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksUUFBTyxPQUFNLFdBQVU7QUFBQyxlQUFNLEVBQUMsUUFBTyxFQUFDLE9BQU0sR0FBRSxNQUFLLEVBQUMsTUFBSyxTQUFRLFVBQVMsRUFBQyxlQUFjLE9BQUcsT0FBTSxTQUFRLE1BQUssWUFBVyxhQUFZLE1BQUksV0FBVSxLQUFHLE9BQU0sQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQUssRUFBQyxNQUFLLFlBQVcsVUFBUyxFQUFDLGVBQWMsT0FBRyxPQUFNLFNBQVEsTUFBSyxZQUFXLGFBQVksTUFBSSxXQUFVLEtBQUcsT0FBTSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxNQUFLLEdBQUUsT0FBTSxFQUFDLFlBQVcsRUFBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLGNBQWEsTUFBRSxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGFBQVksT0FBTSxXQUFVO0FBQUMsZUFBTSxFQUFDLFFBQU8sRUFBQyxPQUFNLFlBQVcsT0FBTSxFQUFDLEdBQUUsTUFBSyxF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USxFQUFDLE1BQUssR0FBRSxhQUFZLEdBQUUsT0FBTSxFQUFDLFlBQVcsRUFBQyxFQUFDLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksV0FBVSxPQUFNLFdBQVU7QUFBQyxlQUFNLEVBQUMsT0FBTSxFQUFDLFNBQVEsTUFBRSxHQUFFLE1BQUssRUFBQyxTQUFRLEVBQUMsR0FBRSxZQUFXLEVBQUMsT0FBTSxFQUFDLFFBQU8sQ0FBQyxNQUFNLEVBQUMsRUFBQyxHQUFFLFFBQU8sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsU0FBUSxFQUFDLGNBQWEsTUFBRyxRQUFPLEVBQUMsTUFBSyxNQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssTUFBRSxFQUFDLEdBQUUsUUFBTyxFQUFDLFVBQVMsT0FBTSxTQUFRLEVBQUMsT0FBTSxVQUFTLE1BQUssSUFBRyxTQUFRLEVBQUMsRUFBQyxHQUFFLE1BQUssRUFBQyxTQUFRLEVBQUMsT0FBTSxHQUFFLEVBQUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxXQUFVLE9BQU0sV0FBVTtBQUFDLGVBQU0sRUFBQyxPQUFNLEVBQUMsTUFBSyxFQUFDLFNBQVEsTUFBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLE9BQU0sRUFBQyxVQUFTLElBQUcsWUFBVyxLQUFJLFFBQU8sQ0FBQyxNQUFNLEVBQUMsRUFBQyxHQUFFLFFBQU8sRUFBQyxNQUFLLE1BQUcsT0FBTSxHQUFFLFFBQU8sQ0FBQyxNQUFNLEVBQUMsR0FBRSxRQUFPLEVBQUMsTUFBSyxNQUFFLEdBQUUsTUFBSyxFQUFDLFVBQVMsRUFBQyxPQUFNLENBQUMsR0FBRSxHQUFHLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxjQUFhLE1BQUcsR0FBRSxFQUFDLE1BQUssTUFBRSxFQUFDLEdBQUUsTUFBSyxFQUFDLFNBQVEsRUFBQyxNQUFLLEdBQUUsT0FBTSxFQUFDLEVBQUMsR0FBRSxPQUFNLEVBQUMsWUFBVyxFQUFDLE1BQUssTUFBRSxHQUFFLFNBQVEsRUFBQyxTQUFRLE1BQUUsRUFBQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLE9BQU0sT0FBTSxXQUFVO0FBQUMsZUFBTSxFQUFDLE9BQU0sRUFBQyxTQUFRLEVBQUMsTUFBSyxNQUFFLEVBQUMsR0FBRSxhQUFZLEVBQUMsS0FBSSxFQUFDLE9BQU0sRUFBQyxRQUFPLEVBQUMsTUFBSyxNQUFFLEVBQUMsRUFBQyxFQUFDLEdBQUUsWUFBVyxFQUFDLFdBQVUsU0FBU0EsSUFBRTtBQUFDLGlCQUFPQSxHQUFFLFFBQVEsQ0FBQyxJQUFFO0FBQUEsUUFBRyxHQUFFLE9BQU0sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsWUFBVyxFQUFDLFNBQVEsTUFBRSxHQUFFLFlBQVcsRUFBQyxTQUFRLEtBQUUsRUFBQyxHQUFFLFFBQU8sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsTUFBSyxFQUFDLFNBQVEsR0FBRSxVQUFTLEVBQUMsT0FBTSxTQUFRLE9BQU0sQ0FBQyxHQUFFLEdBQUcsRUFBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLE9BQU0sUUFBTyxpQkFBZ0IsS0FBRSxHQUFFLFFBQU8sRUFBQyxVQUFTLFFBQU8sRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxTQUFRLE9BQU0sV0FBVTtBQUFDLGVBQU0sRUFBQyxPQUFNLEVBQUMsU0FBUSxFQUFDLE1BQUssTUFBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLFdBQVUsU0FBU0EsSUFBRTtBQUFDLGlCQUFPQSxHQUFFLFFBQVEsQ0FBQyxJQUFFO0FBQUEsUUFBRyxHQUFFLE9BQU0sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsWUFBVyxFQUFDLFNBQVEsTUFBRSxHQUFFLFlBQVcsRUFBQyxTQUFRLEtBQUUsRUFBQyxHQUFFLFFBQU8sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsTUFBSyxFQUFDLFNBQVEsR0FBRSxVQUFTLEVBQUMsT0FBTSxTQUFRLGdCQUFlLE1BQUksT0FBTSxDQUFDLElBQUcsR0FBRyxHQUFFLGFBQVksR0FBRSxXQUFVLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxPQUFNLFFBQU8saUJBQWdCLEtBQUUsR0FBRSxRQUFPLEVBQUMsVUFBUyxRQUFPLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksYUFBWSxPQUFNLFdBQVU7QUFBQyxlQUFPLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxhQUFXLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxhQUFXLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxhQUFXLEdBQUUsRUFBQyxPQUFNLEVBQUMsU0FBUSxFQUFDLE1BQUssTUFBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLFdBQVUsU0FBU0EsSUFBRTtBQUFDLGlCQUFPQSxHQUFFLFFBQVEsQ0FBQyxJQUFFO0FBQUEsUUFBRyxHQUFFLFNBQVEsTUFBRSxHQUFFLFFBQU8sRUFBQyxNQUFLLE1BQUcsT0FBTSxFQUFDLEdBQUUsTUFBSyxFQUFDLFNBQVEsSUFBRSxHQUFFLFNBQVEsRUFBQyxPQUFNLFFBQU8saUJBQWdCLEtBQUUsR0FBRSxRQUFPLEVBQUMsVUFBUyxRQUFPLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksU0FBUSxPQUFNLFdBQVU7QUFBQyxlQUFPLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxPQUFPLFVBQVEsS0FBSyxLQUFLLE1BQU0sQ0FBQyxFQUFFLE9BQU8sVUFBUSxLQUFLLEtBQUssTUFBTSxDQUFDLEVBQUUsT0FBTyxVQUFRLEdBQUUsRUFBQyxZQUFXLEVBQUMsU0FBUSxPQUFHLE9BQU0sRUFBQyxVQUFTLE9BQU0sRUFBQyxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUMsR0FBRSxTQUFRLEVBQUMsTUFBSyxHQUFFLGFBQVksR0FBRSxlQUFjLEVBQUMsR0FBRSxNQUFLLEVBQUMsU0FBUSxJQUFFLEdBQUUsU0FBUSxFQUFDLFFBQU8sT0FBRyxXQUFVLE1BQUcsY0FBYSxLQUFFLEdBQUUsTUFBSyxFQUFDLE1BQUssTUFBRSxHQUFFLE9BQU0sRUFBQyxRQUFPLEVBQUMsV0FBVSxTQUFTQSxJ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QVEsS0FBSyxnRkFBZ0YsR0FBRUE7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUkscUJBQW9CLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU8sV0FBU0EsR0FBRSxnQkFBY0EsR0FBRSxjQUFZLENBQUMsR0FBRUEsR0FBRSxZQUFZLFFBQU0sQ0FBQyxHQUFFQSxHQUFFLFlBQVksUUFBTSxDQUFDLEdBQUVBLEdBQUUsWUFBWSxTQUFPLENBQUMsSUFBR0EsS0FBRSxLQUFLLHVCQUF1QkEsRUFBQyxHQUFFQSxLQUFFLEtBQUssdUJBQXVCQSxFQUFDLEdBQUVBLEtBQUUsS0FBSyx1QkFBdUJBLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMEJBQXlCLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsSUFBSTtBQUFFLGVBQU9ELEdBQUUsWUFBWSxRQUFNLEVBQUUsWUFBWSxXQUFTQSxHQUFFLFlBQVksUUFBTUEsR0FBRSxZQUFZLFFBQU0sQ0FBQyxHQUFFQyxHQUFFLGVBQWUsR0FBRUQ7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMEJBQXlCLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsSUFBSTtBQUFFLGVBQU9ELEdBQUUsWUFBWSxRQUFNLEVBQUUsWUFBWSxXQUFTQSxHQUFFLFlBQVksUUFBTUEsR0FBRSxZQUFZLFFBQU0sQ0FBQyxHQUFFQyxHQUFFLGVBQWUsR0FBRUQ7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMEJBQXlCLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsSUFBSTtBQUFFLGVBQU9ELEdBQUUsWUFBWSxTQUFPLEVBQUUsWUFBWSxXQUFTQSxHQUFFLFlBQVksU0FBT0EsR0FBRSxZQUFZLFNBQU8sQ0FBQyxHQUFFQyxHQUFFLGVBQWUsR0FBRUQ7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUkscUJBQW9CLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFFBQUFBLEdBQUUsU0FBTyxXQUFTQSxHQUFFLE1BQU0sU0FBT0Es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QUFLLEVBQUUsT0FBTyxNQUFNLFFBQU0sZ0JBQWMsS0FBSyxFQUFFLE9BQU8sTUFBTSxRQUFNLGVBQWEsS0FBSyxFQUFFLE9BQU8sTUFBTSxTQUFPLGtCQUFnQixLQUFLLEVBQUUsT0FBTyxNQUFNLFFBQU0sY0FBWSxLQUFLLEVBQUUsT0FBTyxNQUFNLFFBQU0sV0FBU1AsR0FBRSxjQUFjTSxFQUFDLEVBQUVDLEVBQUMsTUFBSU4sS0FBRSxLQUFLLElBQUlBLElBQUVELEdBQUUsY0FBY00sRUFBQyxFQUFFQyxFQUFDLENBQUMsR0FBRU4sS0FBRSxLQUFLLElBQUlBLElBQUVELEdBQUUsY0FBY00sRUFBQyxFQUFFQyxFQUFDLENBQUMsR0FBRU4sS0FBRSxLQUFLLElBQUlBLElBQUVELEdBQUUsY0FBY00sRUFBQyxFQUFFQyxFQUFDLENBQUMsR0FBRU4sS0FBRSxLQUFLLElBQUlBLElBQUVELEdBQUUsY0FBY00sRUFBQyxFQUFFQyxFQUFDLENBQUMsR0FBRSxjQUFZLEtBQUssRUFBRSxPQUFPLE1BQU0sU0FBT04sS0FBRSxLQUFLLElBQUlBLElBQUVELEdBQUUsY0FBY00sRUFBQyxFQUFFQyxFQUFDLENBQUMsS0FBSSxDQUFDUixHQUFFLE9BQU9PLEVBQUMsRUFBRSxRQUFNLGtCQUFnQlAsR0FBRSxPQUFPTyxFQUFDLEVBQUUsUUFBTSxjQUFZUCxHQUFFLE9BQU9PLEVBQUMsRUFBRSxRQUFNLGdCQUFjUCxHQUFFLE9BQU9PLEVBQUMsRUFBRSxRQUFNLGVBQWFQLEdBQUUsT0FBT08sRUFBQyxFQUFFLFNBQU9MLEtBQUUsS0FBSyxJQUFJQSxJQUFFRCxHQUFFLE9BQU9NLEVBQUMsRUFBRUMsRUFBQyxDQUFDLEdBQUVYLEtBQUUsS0FBSyxJQUFJQSxJQUFFSSxHQUFFLE9BQU9NLEVBQUMsRUFBRUMsRUFBQyxDQUFDLElBQUdWLEtBQUVJLEtBQUdELEdBQUUsWUFBWU0sRUFBQyxLQUFHTixHQUFFLFlBQVlNLEVBQUMsRUFBRUMsRUFBQyxLQUFHLE1BQU0sUUFBUVAsR0FBRSxZQUFZTSxFQUFDLEVBQUVDLEVB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QUVELEdBQUUsTUFBTSxZQUFVRyxJQUFFSCxHQUFFLE1BQU0sVUFBUUUsSUFBRUY7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksY0FBYSxPQUFNLFdBQVU7QUFBQyxnQkFBTyxLQUFLLEVBQUUsT0FBTyxNQUFNLFNBQVE7QUFBQSxVQUFDLEtBQUk7QUFBQSxVQUFXO0FBQVEsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVksaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFBLFFBQUM7QUFBQyxlQUFPLEtBQUs7QUFBQSxNQUFNLEVBQUMsQ0FBQyxDQUFDLEdBQUVBO0FBQUEsSUFBQyxFQUFFO0FBQWgwNEksUUFBazA0SSxLQUFHLFdBQVU7QUFBQyxlQUFT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Q0FBQyxLQUFJQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBT0EsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRSxDQUFDLEtBQUlBLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLEdBQUUsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU9BLEdBQUUsSUFBRUQsR0FBRSxDQUFDLEdBQUUsQ0FBQyxLQUFJQSxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFQyxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFLENBQUMsS0FBSUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFQyxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFLENBQUMsS0FBSUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBT0EsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRUMsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRSxDQUFDLEtBQUlBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLEdBQUUsU0FBU0EsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQU9ELEdBQUUsSUFBRUMsR0FBRSxHQUFFRCxHQUFFLElBQUVDLEdBQUUsR0FBRSxDQUFD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QUksT0FBS0EsR0FBRSxDQUFDLE1BQUksS0FBSyxTQUFPLE1BQUssS0FBSyxPQUFLQSxHQUFFLENBQUMsS0FBR0QsY0FBYUcsR0FBRSxXQUFTLEtBQUssUUFBTUgsR0FBRSxRQUFRLEdBQUUsS0FBSyxPQUFLQSxHQUFFO0FBQUEsTUFBSyxHQUFFLFFBQU8sRUFBQyxVQUFTLFdBQVU7QUFBQyxnQkFBTyxPQUFLLEtBQUssT0FBSyxDQUFDLEVBQUUsTUFBSSxLQUFLLFNBQU8sTUFBSSxPQUFLLEtBQUssT0FBSyxLQUFLLFFBQU0sTUFBSSxLQUFLLFNBQU8sS0FBSztBQUFBLE1BQUksR0FBRSxRQUFPLFdBQVU7QUFBQyxlQUFPLEtBQUssU0FBUztBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxlQUFPLEtBQUs7QUFBQSxNQUFLLEdBQUUsTUFBSyxTQUFTQSxJQUFFO0FBQUMsZUFBT0EsS0FBRSxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsR0FBRSxJQUFJRyxHQUFFLE9BQU8sT0FBS0gsSUFBRSxLQUFLLFFBQU1BLEdBQUUsSUFBSTtBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPQSxLQUFFLElBQUlHLEdBQUUsT0FBT0gsRUFBQyxHQUFFLElBQUlHLEdBQUUsT0FBTyxPQUFLSCxJQUFFLEtBQUssUUFBTUEsR0FBRSxJQUFJO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU9BLEtBQUUsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEdBQUUsSUFBSUcsR0FBRSxPQUFPLE9BQUtILElBQUUsS0FBSyxRQUFNQSxHQUFFLElBQUk7QUFBQSxNQUFDLEdBQUUsUUFBTyxTQUFTQSxJQUFFO0FBQUMsZUFBT0EsS0FBRSxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsR0FBRSxJQUFJRyxHQUFFLE9BQU8sT0FBS0gsSUFBRSxLQUFLLFFBQU1BLEdBQUUsSUFBSTtBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLElBQUlFLEdBQUUsT0FBTyxJQUFJO0FBQUUsZUFBTSxZQUFVLE9BQU9ILE9BQUlDLEdBQUUsT0FBS0QsS0FBR0M7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTRCxJQUFFO0FBQUMsZUFBTyxLQUFLLGNBQVksSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEdBQUVBLEdBQUUsYUFBVyxLQUFLLFlBQVksU0FBTyxLQUFLLFFBQU87QUFBQSxNQUFJLEdBQUUsSUFBRyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLGNBQVksSUFBSUcsR0FBRSxPQUFPLEtBQUssV0FBVyxFQUFFLE1BQU0sSUFBSSxFQUFFLE1BQU1ILEVBQUMsRUFBRSxLQUFLLElBQUksSUFBRTtBQUFBLE1BQUksRUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxVQUFRQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUU7QUFBQyxhQUFLLFVBQVFHLEdBQUUsU0FBUyxNQUFNLFFBQU8sS0FBSyxTQUFPLE1BQUssS0FBSyxNQUFJLENBQUMsSUFBRyxLQUFLLE9BQUtILFFBQUssS0FBSyxPQUFLQSxHQUFFLFVBQVMsS0FBSyxLQUFLLFdBQVMsTUFBSyxLQUFLLFVBQVFBLEdBQUUsYUFBYSxRQUFRLEtBQUcsS0FBSztBQUFBLE1BQVEsR0FBRSxRQUFPLEVBQUMsR0FBRSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssS0FBSUEsRUFBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxLQUFJQSxFQUFDO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEVBQUUsSUFBRSxLQUFLLE1BQU0sSUFBRSxJQUFFLEtBQUssRUFBRUEsS0FBRSxLQUFLLE1BQU0sSUFBRSxDQUFDO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEVBQUUsSUFBRSxLQUFLLE9BQU8sSUFBRSxJQUFFLEtBQUssRUFBRUEsS0FBRSxLQUFLLE9BQU8sSUFBRSxDQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxFQUFFRCxFQUFDLEVBQUUsRUFBRUMsRUFBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFNBQVNELElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssR0FBR0QsRUFBQyxFQUFFLEdBQUdDLEVBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTRCxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssU0FBUUEsRUFBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxVQUFTQSxFQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUVXLEdBQUUsTUFBS2IsSUFBRUMsRUFBQztBQUFFLGVBQU8sS0FBSyxNQUFNLElBQUlFLEdBQUUsT0FBT0QsR0FBRSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUlDLEdBQUUsT0FBT0QsR0FBRSxNQUFNLENBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTRixJQUFFO0FBQUMsYUFBSyxlQUFlO0FBQUUsWUFBSUMsS0FBRWUsR0FBRSxLQUFLLEtBQUssVUFBVSxJQUFFLENBQUM7QUFBRSxlQUFPaEIsS0FBRUEsR0FBRSxJQUFJQyxFQUFDLElBQUUsS0FBSyxNQUFNQSxFQUFDLEdBQUVBO0FBQUEsTUFBQyxHQUFFLFFBQU8sV0FBVTtBQUFDLGVBQU8sS0FBSyxPQUFPLEtBQUcsS0FBSyxPQUFPLEVBQUUsY0FBYyxJQUFJLEdBQUU7QUFBQSxNQUFJLEdBQUUsU0FBUSxTQUFTRCxJQUFFO0FBQUMsZUFBTyxLQUFLLE1BQU1BLEVBQUMsRUFBRSxPQUFPLEdBQUVBO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU9BLEdBQUUsSUFBSSxJQUFJO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU9BLEdBQUUsSUFBSSxJQUFJO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLE1BQUtBLEVBQUM7QUFBQSxNQUFDLEdBQUUsTUFBSyxXQUFVO0FBQUMsZUFBTyxLQUFLLE1BQU0sV0FBVSxFQUFFO0FBQUEsTUFBQyxHQUFFLE1BQUssV0FBVTtBQUFDLGVBQU8sS0FBSyxNQUFNLFdBQVUsTUFBTTtBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxlQUFNLFVBQVEsS0FBSyxNQUFNLFNBQVM7QUFBQSxNQUFDLEdBQUUsVUFBUyxXQUFVO0FBQUMsZUFBTyxLQUFLLEtBQUssSUFBSTtBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxZQUFJQSxLQUFFLEtBQUssS0FBSyxPQUFPO0FBQUUsZUFBTyxRQUFNQSxLQUFFLENBQUMsSUFBRUEsR0FBRSxLQUFLLEVBQUUsTUFBTUcsR0FBRSxNQUFNLFNBQVM7QUFBQSxNQUFDLEdBQUUsVUFBUyxTQUFTSCxJQUFFO0FBQUMsZUFBTSxNQUFJLEtBQUssUUFBUSxFQUFFLFFBQVFBLEVBQUM7QUFBQSxNQUFDLEdBQUUsVUFBUyxTQUFTQSxJQUFFO0FBQUMsWUFBRyxDQUFDLEtBQUssU0FBU0EsRUFBQyxHQUFFO0FBQUMsY0FBSUMsS0FBRSxLQUFLLFFBQVE7QUFBRSxVQUFBQSxHQUFFLEtBQUtELEVBQUMsR0FBRSxLQUFLLEtBQUssU0FBUUMsR0FBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLFFBQUM7QUFBQyxlQUFPO0FBQUEsTUFBSSxHQUFFLGFBQVksU0FBU0QsSUFBRTtBQUFDLGVBQU8sS0FBSyxTQUFTQSxFQUFDLEtBQUcsS0FBSyxLQUFLLFNBQVEsS0FBSyxRQUFRLEVBQUUsT0FBUSxTQUFTQyxJQUFFO0FBQUMsaUJBQU9BLE1BQUdEO0FBQUEsUUFBQyxDQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBRTtBQUFBLE1BQUksR0FBRSxhQUFZLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssU0FBU0EsRUFBQyxJQUFFLEtBQUssWUFBWUEsRUFBQyxJQUFFLEtBQUssU0FBU0EsRUFBQztBQUFB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QUFJLElBQUcsVUFBSyxLQUFLLFVBQVUsU0FBT0MsS0FBRSxLQUFLLElBQUksS0FBSyxRQUFPLENBQUMsR0FBRUMsS0FBRSxLQUFLLE1BQU1ELEVBQUMsR0FBRSxTQUFLLEtBQUssVUFBVSxTQUFPQyxLQUFFLEtBQUssVUFBVSxTQUFPLEtBQUssTUFBSUQsS0FBRUMsSUFBRUMsS0FBRSxLQUFLLFVBQVUsTUFBSyxLQUFLLFVBQVUsT0FBS0QsT0FBSSxLQUFLLFNBQU8sS0FBSyxVQUFVLE9BQU0sS0FBSyxNQUFJLEdBQUVDLEtBQUUsS0FBSyxVQUFVLE9BQUssR0FBRSxLQUFLLFVBQVUsT0FBSyxLQUFLLFVBQVUsUUFBTyxLQUFLLFVBQVUsY0FBWSxLQUFLLFVBQVUsV0FBUyxLQUFLLFVBQVUsWUFBVSxTQUFTLEtBQUssVUFBVSxPQUFLQSxNQUFHLENBQUMsT0FBSyxLQUFLLFNBQU8sS0FBSyxJQUFJLEtBQUssUUFBTyxDQUFDLEdBQUUsS0FBSyxNQUFJLEtBQUssU0FBUSxLQUFLLE1BQUksTUFBSSxLQUFLLE1BQUksSUFBRyxLQUFLLFVBQVUsYUFBVyxLQUFLLE1BQUksSUFBRSxLQUFLO0FBQUssWUFBSUMsS0FBRSxLQUFLLFVBQVUsS0FBSyxLQUFLLEdBQUc7QUFBRSxpQkFBUUMsTUFBSyxLQUFLLFVBQVU7QUFBSyxVQUFBQSxLQUFFLEtBQUssV0FBU0EsTUFBR0QsT0FBSSxLQUFLLFVBQVUsS0FBS0MsRUFBQyxFQUFFLEtBQUssS0FBSyxPQUFPLEdBQUUsS0FBSyxLQUFJRCxFQUFDLEdBQUUsT0FBTyxLQUFLLFVBQVUsS0FBS0MsRUFBQztBQUFHLGVBQU8sS0FBSyxVQUFRLEtBQUssT0FBTyxFQUFFLEtBQUssVUFBUyxFQUFDLEtBQUksS0FBSyxLQUFJLE9BQU1ELElBQUUsSUFBRyxNQUFLLFdBQVUsS0FBSyxVQUFTLENBQUMsR0FBRSxLQUFLLGFBQVcsS0FBSyxPQUFPLEdBQUUsS0FBRyxLQUFLLE9BQUssQ0FBQyxLQUFLLFVBQVUsWUFBVSxLQUFLLFVBQVUsWUFBVSxLQUFHLEtBQUssT0FBSyxL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QUMsRUFBRSxLQUFLLElBQUksR0FBRSxDQUFDLEdBQUU7QUFBQSxNQUFJLEVBQUMsR0FBRSxRQUFPRSxHQUFFLFNBQVEsV0FBVSxFQUFDLFNBQVEsU0FBU0gsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGdCQUFPLEtBQUssT0FBSyxLQUFLLEtBQUcsSUFBSUMsR0FBRSxHQUFHLElBQUksSUFBSSxRQUFRSCxJQUFFQyxJQUFFQyxFQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0YsSUFBRTtBQUFDLGdCQUFPLEtBQUssT0FBSyxLQUFLLEtBQUcsSUFBSUcsR0FBRSxHQUFHLElBQUksSUFBSSxNQUFNSCxFQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxNQUFJLEtBQUssR0FBRyxLQUFLRCxJQUFFQyxFQUFDLEdBQUU7QUFBQSxNQUFJLEdBQUUsUUFBTyxXQUFVO0FBQUMsZUFBTyxLQUFLLE1BQUksS0FBSyxHQUFHLE9BQU8sR0FBRTtBQUFBLE1BQUksRUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxXQUFTQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUVDLElBQUU7QUFBQyxlQUFPRSxHQUFFLE1BQU0sUUFBUUYsRUFBQyxJQUFFLElBQUlFLEdBQUUsTUFBTUgsRUFBQyxFQUFFLE1BQU1DLEVBQUMsSUFBRUUsR0FBRSxNQUFNLFVBQVUsS0FBS0gsRUFBQyxJQUFFRyxHQUFFLE1BQU0sWUFBWSxLQUFLSCxFQUFDLElBQUUsSUFBSUcsR0FBRSxVQUFVSCxFQUFDLEVBQUUsTUFBTUMsRUFBQyxJQUFFLElBQUlFLEdBQUUsTUFBTUgsRUFBQyxFQUFFLE1BQU1DLEVBQUMsSUFBRUUsR0FBRSxNQUFNLGNBQWMsS0FBS0YsRUFBQyxJQUFFLElBQUlFLEdBQUUsT0FBT0gsRUFBQyxFQUFFLE1BQU1DLEVBQUMsS0FBRyxLQUFLLFFBQU1ELElBQUUsTUFBSyxLQUFLLGNBQVlDO0FBQUEsTUFBRyxHQUFFLFFBQU8sRUFBQyxJQUFHLFNBQVNELElBQUVDLElB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TUFBSSxLQUFLLEtBQUcsS0FBSyxNQUFNRCxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxJQUFFO0FBQUcsZUFBTSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLGVBQWMsS0FBSyxJQUFFLEtBQUssSUFBSUMsS0FBRSxLQUFLLEtBQUcsR0FBRyxJQUFFLEtBQUssSUFBRSxLQUFLLElBQUlBLEtBQUUsS0FBSyxLQUFHLEdBQUcsS0FBRyxLQUFLLEtBQUssS0FBSyxJQUFFLEtBQUssSUFBRSxLQUFLLElBQUUsS0FBSyxDQUFDLEdBQUUsZUFBYyxLQUFLLElBQUUsS0FBSyxJQUFJQSxLQUFFLEtBQUssS0FBRyxHQUFHLElBQUUsS0FBSyxJQUFFLEtBQUssSUFBSSxDQUFDQSxLQUFFLEtBQUssS0FBRyxHQUFHLEtBQUcsS0FBSyxLQUFLLEtBQUssSUFBRSxLQUFLLElBQUUsS0FBSyxJQUFFLEtBQUssQ0FBQyxHQUFFLFVBQVNBLElBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsUUFBTyxJQUFJRSxHQUFFLE9BQU8sSUFBSSxFQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sV0FBVTtBQUFDLGVBQU8sSUFBSUEsR0FBRSxPQUFPLElBQUk7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLGNBQVksSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEdBQUU7QUFBQSxNQUFJLEdBQUUsVUFBUyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxJQUFJRyxHQUFFLE9BQU8sS0FBSyxPQUFPLEVBQUUsU0FBUyxTQUFTSCxJQUFFO0FBQUMsaUJBQU9BLGNBQWFHLEdBQUUsV0FBU0gsS0FBRSxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsSUFBR0E7QUFBQSxRQUFDLEVBQUVBLEVBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxlQUFPLElBQUlHLEdBQUUsT0FBTyxLQUFLLE9BQU8sRUFBRSxRQUFRLENBQUM7QUFBQSxNQUFDLEdBQUUsV0FBVSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxJQUFJRSxHQUFFLE9BQU8sS0FBSyxPQUFPLEVBQUUsVUFBVUgsTUFBRyxHQUFFQyxNQUFHLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFdBQVU7QUFBQyxpQkFBUUQsS0FBRUcsR0FBRSxPQUFPLE9BQU8sZ0JBQWdCLEdBQUVGLEtBQUVpQixHQUFFLFNBQU8sR0FBRWpCLE1BQUcsR0FBRUE7QUFBSSxVQUFBRCxHQUFFa0IsR0FBRWpCLEVBQUMsQ0FBQyxJQUFFLEtBQUtpQixHQUFFakIsRUFBQyxDQUFDO0FBQUUsZUFBT0Q7QUFBQSxNQUFDLEdBQUUsVUFBUyxXQUFVO0FBQUMsZUFBTSxZQUFVaUIsR0FBRSxLQUFLLENBQUMsSUFBRSxNQUFJQSxHQUFFLEtBQUssQ0FBQyxJQUFFLE1BQUlBLEdBQUUsS0FBSyxDQUFDLElBQUUsTUFBSUEsR0FBRSxLQUFLLENBQUMsSUFBRSxNQUFJQSxHQUFFLEtBQUssQ0FBQyxJQUFFLE1BQUlBLEdBQUUsS0FBSyxDQUFDLElBQUU7QUFBQSxNQUFHLEVBQUMsR0FBRSxRQUFPZCxHQUFFLFNBQVEsV0FBVSxFQUFDLEtBQUksV0FBVTtBQUFDLGVBQU8sSUFBSUEsR0FBRSxPQUFPLEtBQUssS0FBSyxPQUFPLENBQUM7QUFBQSxNQUFDLEdBQUUsV0FBVSxXQUFVO0FBQUMsWUFBRyxnQkFBZ0JBLEdBQUUsUUFBTztBQUFDLGNBQUlILEtBQUUsS0FBSyxLQUFLLEdBQUUsQ0FBQyxHQUFFQyxLQUFFRCxHQUFFLEtBQUssYUFBYTtBQUFFLGlCQUFPQSxHQUFFLE9BQU8sR0FBRSxJQUFJRyxHQUFFLE9BQU9GLEVBQUM7QUFBQSxRQUFDO0FBQUMsZUFBTyxJQUFJRSxHQUFFLE9BQU8sS0FBSyxLQUFLLGFBQWEsQ0FBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUEsR0FBRSxRQUFNQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUVDLElBQUU7QUFBQyxZQUFJRTtBQUFFLFFBQUFBLEtBQUUsTUFBTSxRQUFRSCxFQUFDLElBQUUsRUFBQyxHQUFFQSxHQUFFLENBQUMsR0FBRSxHQUFFQSxHQUFFLENBQUMsRUFBQyxJQUFFLGFBQVcsRUFBRUEsRUFBQyxJQUFFLEVBQUMsR0FBRUEsR0FBRSxHQUFFLEdBQUVBLEdBQUUsRUFBQyxJQUFFLFFBQU1BLEtBQUUsRUFBQyxHQUFFQSxJQUFFLEdBQUUsUUFBTUMsS0FBRUEsS0FBRUQsR0FBQyxJQUFFLEVBQUMsR0FBRSxHQUFFLEdBQUUsRUFBQyxHQUFFLEtBQUssSUFBRUcsR0FBRSxHQUFFLEtBQUssSUFBRUEsR0FBRTtBQUFBLE1BQUMsR0FBRSxRQUFPLEVBQUMsT0FBTSxXQUFVO0FBQUMsZUFBTyxJQUFJQSxHQUFFLE1BQU0sSUFBSTtBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNILElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssY0FBWSxJQUFJRSxHQUFFLE1BQU1ILElBQUVDLEVBQUMsR0FBRTtBQUFBLE1BQUksRUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFPQSxHQUFFLFNBQVEsRUFBQyxPQUFNLFNBQVNILElBQUVDLElBQUU7QUFBQyxlQUFPLElBQUlFLEdBQUUsTUFBTUgsSUFBRUMsRUFBQyxFQUFFLFVBQVUsS0FBSyxVQUFVLEVBQUUsUUFBUSxDQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFPQSxHQUFFLFNBQVEsRUFBQyxNQUFLLFNBQVNILElBQUVDLElBQUVHLElBQUU7QUFBQyxZQUFHLFFBQU1KLElBQUU7QUFBQyxlQUFJQSxLQUFFLENBQUMsR0FBRUksTUFBR0gsS0FBRSxLQUFLLEtBQUssWUFBWSxTQUFPLEdBQUVHLE1BQUcsR0FBRUE7QUFBSSxZQUFBSixHQUFFQyxHQUFFRyxFQUFDLEVBQUUsUUFBUSxJQUFFRCxHQUFFLE1BQU0sU0FBUyxLQUFLRixHQUFFRyxFQUFDLEVBQUUsU0FBUyxJQUFFLFdBQVdILEdBQUVH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QU8sU0FBU0gsSUFBRTtBQUFDLGFBQUssWUFBWSxLQUFLLE1BQUtBLEVBQUM7QUFBQSxNQUFDLEdBQUUsU0FBUUcsR0FBRSxRQUFPLENBQUMsR0FBRUEsR0FBRSxTQUFPQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFVBQVMsU0FBUUEsR0FBRSxXQUFVLFdBQVUsRUFBQyxRQUFPLFdBQVU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJQSxHQUFFLFFBQU07QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVBLEdBQUUsTUFBSUEsR0FBRSxPQUFPLEVBQUMsUUFBTyxPQUFNLFNBQVFBLEdBQUUsT0FBTSxRQUFPLEVBQUMsU0FBUSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssU0FBUUEsTUFBRyxNQUFJLE1BQUlELElBQUVHLEdBQUUsS0FBSztBQUFBLE1BQUMsRUFBQyxHQUFFLFdBQVUsRUFBQyxLQUFJLFNBQVNILElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJRSxHQUFFLEtBQUcsRUFBRSxRQUFRSCxJQUFFQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFRSxHQUFFLE9BQUtBLEdBQUUsT0FBTyxFQUFDLFFBQU8sUUFBTyxTQUFRQSxHQUFFLE9BQU0sV0FBVSxFQUFDLE1BQUssU0FBU0gsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxJQUFJLElBQUlFLEdBQUUsTUFBSSxFQUFFLEtBQUtILElBQUVDLEVBQUM7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVFLEdBQUUsU0FBT0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxVQUFTLFNBQVFBLEdBQUUsT0FBTSxXQUFVLEVBQUMsUUFBTyxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUcsR0FBRSxRQUFNLEVBQUUsR0FBRyxJQUFJQSxHQUFFLE9BQU9ILEVBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRSxDQUFDO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLE9BQU9BLEdBQUUsUUFBT0EsR0FBRSxJQUFHLEVBQUMsSUFBRyxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssS0FBSUEsRUFBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssR0FBR0EsRUFBQztBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUVHLEdBQUUsVUFBUUEsR0FBRSxPQUFPLEVBQUMsUUFBTyxXQUFVLFNBQVFBLEdBQUUsT0FBTSxXQUFVLEVBQUMsU0FBUSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUUsR0FBRSxTQUFPLEVBQUUsS0FBS0gsSUFBRUMsRUFBQyxFQUFFLEtBQUssR0FBRSxDQUFDO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFRSxHQUFFLE9BQU9BLEdBQUUsU0FBUUEsR0FBRSxNQUFLQSxHQUFFLElBQUcsRUFBQyxJQUFHLFNBQVNILElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLE1BQUtBLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLE9BQU9BLEdBQUUsUUFBT0EsR0FBRSxTQUFRLEVBQUMsR0FBRSxTQUFTSCxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssR0FBRyxJQUFFLEtBQUssR0FBRyxJQUFFLEtBQUssR0FBR0EsS0FBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxHQUFHLElBQUUsS0FBSyxHQUFHLElBQUUsS0FBSyxHQUFHQSxLQUFFLEtBQUssR0FBRyxDQUFDO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEtBQUssSUFBSSxJQUFFLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEtBQUssSUFBSSxJQUFFLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxJQUFFLEtBQUssR0FBRyxJQUFFLEtBQUssR0FBRyxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsSUFBRSxLQUFLLEdBQUcsSUFBRSxLQUFLLEdBQUcsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsTUFBSyxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRVcsR0FBRSxNQUFLYixJQUFFQyxFQUFDO0FBQUUsZUFBTyxLQUFLLEdBQUcsSUFBSUUsR0FBRSxPQUFPRCxHQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSUMsR0FBRSxPQUFPRCxHQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUVDLEdBQUUsT0FBS0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxRQUFPLFNBQVFBLEdBQUUsT0FBTSxRQUFPLEVBQUMsT0FBTSxXQUFVO0FBQUMsZUFBTyxJQUFJQSxHQUFFLFdBQVcsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLEdBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFFLENBQUMsS0FBSyxLQUFLLElBQUksR0FBRSxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNILElBQUVDLElBQUVDLElBQUVFLElBQUU7QUFBQyxlQUFPLFFBQU1KLEtBQUUsS0FBSyxNQUFNLEtBQUdBLEtBQUUsV0FBU0MsS0FBRSxFQUFDLElBQUdELElBQUUsSUFBR0MsSUFBRSxJQUFHQyxJQUFFLElBQUdFLEdBQUMsSUFBRSxJQUFJRCxHQUFFLFdBQVdILEVBQUMsRUFBRSxPQUFPLEdBQUUsS0FBSyxLQUFLQSxFQUFDO0FBQUEsTUFBRSxHQUFFLE1BQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLEtBQUssTUFBTSxFQUFFLEtBQUtELElBQUVDLEVBQUMsRUFBRSxPQUFPLENBQUM7QUFBQSxNQUFDLEdBQUUsTUFBSyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRVcsR0FBRSxNQUFLYixJQUFFQyxFQUFDO0FBQUUsZUFBTyxLQUFLLEtBQUssS0FBSyxNQUFNLEVBQUUsS0FBS0MsR0FBRSxPQUFNQSxHQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxXQUFVLEVBQUMsTUFBSyxTQUFTRixJQUFFQyxJQUFFQyxJQUFFRSxJQUFFO0FBQUMsZUFBT0QsR0FBRSxLQUFLLFVBQVUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJQSxHQUFFLE1BQUksR0FBRSxRQUFNSCxLQUFFLENBQUNBLElBQUVDLElBQUVDLElBQUVFLEVBQUMsSUFBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUQsR0FBRSxXQUFTQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFlBQVcsU0FBUUEsR0FBRSxPQUFNLFdBQVUsRUFBQyxVQUFTLFNBQVNILElBQUU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJRyxHQUFFLFVBQVEsRUFBRSxLQUFLSCxNQUFHLElBQUlHLEdBQUUsWUFBVTtBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUEsR0FBRSxVQUFRQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFdBQVUsU0FBUUEsR0FBRSxPQUFNLFdBQVUsRUFBQyxTQUFRLFNBQVNILElBQUU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJRyxHQUFFLFNBQU8sRUFBRSxLQUFLSCxNQUFHLElBQUlHLEdBQUUsWUFBVTtBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUEsR0FBRSxPQUFPQSxHQUFFLFVBQVNBLEdBQUUsU0FBUSxFQUFDLE9BQU0sV0FBVTtBQUFDLGVBQU8sS0FBSyxXQUFTLEtBQUssU0FBTyxJQUFJQSxHQUFFLFdBQVcsS0FBSyxLQUFLLFFBQVEsQ0FBQztBQUFBLE1BQUUsR0FBRSxNQUFLLFNBQVNILElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxNQUFNLElBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxVQUFTLFlBQVUsT0FBT0EsS0FBRUEsS0FBRSxLQUFLLFNBQU8sSUFBSUcsR0FBRSxXQUFXSCxFQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxXQUFVO0FBQUMsZUFBTyxPQUFPLEtBQUssUUFBTztBQUFBLE1BQUksR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxVQUFTLEtBQUssTUFBTSxFQUFFLEtBQUtELElBQUVDLEVBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNELElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFVyxHQUFFLE1BQUtiLElBQUVDLEVBQUM7QUFBRSxlQUFPLEtBQUssS0FBSyxVQUFTLEtBQUssTUFBTSxFQUFFLEtBQUtDLEdBQUUsT0FBTUEsR0FBRSxNQUFNLENBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFQyxHQUFFLE9BQU9BLEdBQUUsTUFBS0EsR0FBRSxVQUFTQSxHQUFFLFNBQVEsRUFBQyxZQUFXQSxHQUFFLFlBQVcsR0FBRSxTQUFTSCxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssS0FBSyxFQUFFLElBQUUsS0FBSyxLQUFLQSxJQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssS0FBSyxFQUFFLElBQUUsS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEdBQUVBLEVBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTQSxJQUFFO0FB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QUFJLFVBQVEsSUFBSUcsR0FBRSxPQUFPSCxHQUFFLFdBQVMsR0FBRyxHQUFFO0FBQUEsTUFBSSxFQUFDLEdBQUUsV0FBVSxFQUFDLE1BQUssU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxJQUFJLElBQUlHLEdBQUUsTUFBSSxFQUFFLEtBQUtILEVBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUcsR0FBRSxNQUFJLEVBQUUsTUFBTUgsRUFBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxRQUFNQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVEsU0FBUUEsR0FBRSxPQUFNLFFBQU8sRUFBQyxNQUFLLFNBQVNILElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxLQUFLLGVBQWEsS0FBSyxJQUFJLFdBQVMsT0FBSyxPQUFLLGNBQVksT0FBT0EsS0FBRUEsR0FBRSxLQUFLLE1BQUssSUFBSSxJQUFFLEtBQUssTUFBTUEsRUFBQyxHQUFFO0FBQUEsTUFBSyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLE1BQUtBLEVBQUM7QUFBQSxNQUFDLEdBQUUsSUFBRyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxZQUFJQSxLQUFFLEtBQUssT0FBT0csR0FBRSxJQUFJO0FBQUUsZUFBTyxLQUFLLElBQUksV0FBUyxNQUFHLEtBQUssR0FBR0gsR0FBRSxJQUFJLFVBQVFBLEdBQUUsS0FBSyxXQUFXLENBQUMsRUFBRSxLQUFLLEtBQUlBLEdBQUUsRUFBRSxDQUFDO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLE9BQU9BLEdBQUUsTUFBS0EsR0FBRSxPQUFNLEVBQUMsT0FBTSxTQUFTSCxJQUFFO0FBQUMsZUFBTSxVQUFLLEtBQUssVUFBUSxLQUFLLE1BQU0sR0FBRSxLQUFLLEtBQUssWUFBWUMsR0FBRSxl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LFdBQVUsRUFBQyxRQUFPLFNBQVNELElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxFQUFFLE9BQU9BLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFLElBQUksT0FBTyxJQUFJLFNBQVEsSUFBSSxHQUFFLElBQUksUUFBTyxFQUFDLFFBQU8sU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxXQUFTQSxjQUFhLElBQUksVUFBUUEsS0FBRSxLQUFLLElBQUksRUFBRSxPQUFPQSxFQUFDLEdBQUUsS0FBSyxJQUFJLEtBQUcsS0FBSyxTQUFTLElBQUksTUFBSSxLQUFLLElBQUksS0FBRyxLQUFLLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLFFBQVEsR0FBRSxLQUFLLEtBQUssVUFBUyxLQUFLLFFBQVEsR0FBRSxLQUFLO0FBQUEsTUFBUSxHQUFFLFVBQVMsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxZQUFVLFNBQUtBLE1BQUcsS0FBSyxTQUFTLE9BQU8sR0FBRSxPQUFPLEtBQUssVUFBUyxLQUFLLEtBQUssVUFBUyxJQUFJO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRSxJQUFJLFNBQU8sSUFBSSxPQUFPLEVBQUMsUUFBTyxXQUFVO0FBQUMsYUFBSyxZQUFZLEtBQUssSUFBSTtBQUFBLE1BQUMsR0FBRSxTQUFRLElBQUksU0FBUSxRQUFPLEVBQUMsSUFBRyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssT0FBTyxLQUFHLEtBQUssT0FBTyxFQUFFLE9BQU8sY0FBWSxLQUFLLEtBQUssSUFBSSxJQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBRyxLQUFLLEtBQUssSUFBSSxJQUFFLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLFFBQU8sU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEtBQUssUUFBUSxJQUFFLEtBQUssS0FBSyxVQUFTQSxFQUFDO0FBQUEsTUFBQyxHQUFFLFVBQVMsV0FBVTtBQUFDLGVBQU8sS0FBSyxPQUFPO0FBQUEs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LEVBQUMsR0FBRUUsS0FBRUwsR0FBRSxNQUFNQyxJQUFFQyxNQUFHQyxFQUFDLEdBQUVHLEtBQUUsR0FBRUMsS0FBRSxFQUFDLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFNLENBQUMsR0FBRSxDQUFDLEVBQUMsR0FBRUMsS0FBRSxFQUFDLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFNLENBQUMsR0FBRSxDQUFDLEVBQUMsT0FBSTtBQUFDLGNBQUdKLEdBQUVFLEVBQUMsSUFBRVgsR0FBRSxLQUFLWSxJQUFFSCxHQUFFRSxFQUFDLENBQUMsR0FBRUQsR0FBRUMsRUFBQyxJQUFFWCxHQUFFLEtBQUthLElBQUVILEdBQUVDLEVBQUMsQ0FBQyxHQUFFRixHQUFFRSxFQUFDLEVBQUUsQ0FBQyxLQUFHRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxLQUFHLE9BQUtGLEdBQUVFLEVBQUMsRUFBRSxDQUFDLEtBQUcsT0FBS0YsR0FBRUUsRUFBQyxFQUFFLENBQUMsTUFBSUYsR0FBRUUsRUFBQyxFQUFFLENBQUMsS0FBR0QsR0FBRUMsRUFBQyxFQUFFLENBQUMsS0FBR0YsR0FBRUUsRUFBQyxFQUFFLENBQUMsS0FBR0QsR0FBRUMsRUFBQyxFQUFFLENBQUMsTUFBSSxNQUFNLFVBQVUsT0FBTyxNQUFNRixJQUFFLENBQUNFLElBQUUsQ0FBQyxFQUFFLE9BQU9ULEdBQUUsS0FBS1UsSUFBRUgsR0FBRUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLE1BQU0sVUFBVSxPQUFPLE1BQU1ELElBQUUsQ0FBQ0MsSUFBRSxDQUFDLEVBQUUsT0FBT1QsR0FBRSxLQUFLVyxJQUFFSCxHQUFFQyxFQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUlGLEdBQUVFLEVBQUMsSUFBRVYsR0FBRSxLQUFLVyxJQUFFSCxHQUFFRSxFQUFDLENBQUMsR0FBRUQsR0FBRUMsRUFBQyxJQUFFVixHQUFFLEtBQUtZLElBQUVILEdBQUVDLEVBQUMsQ0FBQyxJQUFHLEVBQUVBLE1BQUdGLEdBQUUsVUFBUUUsTUFBR0QsR0FBRTtBQUFPO0FBQU0sVUFBQUMsTUFBR0YsR0FBRSxVQUFRQSxHQUFFLEtBQUssQ0FBQyxLQUFJRyxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRUQsTUFBR0QsR0FBRSxVQUFRQSxHQUFFLEtBQUssQ0FBQyxLQUFJRyxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFBQSxRQUFDO0FBQUMsZUFBTSxFQUFDLE9BQU1KLElBQUUsTUFBS0MsR0FBQztBQUFBLE1BQUM7QUFBQyxlQUFTVixHQUFFRCxJQUFFO0FBQUMsZ0JBQU9BLEdBQUUsQ0FBQyxHQUFFO0FBQUEsVUFBQyxLQUFJO0FBQUEsVUFBSSxLQUFJO0FBQUksWUFBQUEsR0FBRSxDQUFDLElBQUUsS0FBSUEsR0FBRSxDQUFDLElBQUUsS0FBSyxNQUFNLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxNQUFNLENBQUM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFJLFlBQUFBLEdBQUUsQ0FBQyxJQUFFLEtBQUlBLEdBQUUsQ0FBQyxJQUFFLEtBQUssSUFBSSxDQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQSxHQUFFLENBQUMsSUFBRSxLQUFJQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssSUFBSSxDQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQSxHQUFFLENBQUMsSUFBRSxLQUFJQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxXQUFXLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxXQUFXLENBQUM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFJLFlBQUFBLEdBQUUsQ0FBQyxJQUFFLEtBQUlBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxXQUFXLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxXQUFXLENBQUM7QUFBQSxRQUFDO0FBQUMsZUFBT0E7QUFBQSxNQUFDO0FBQUMsZUFBU0UsR0FBRUYsSUFBRTtBQUFDLFlBQUlDLEtBQUVELEdBQUU7QUFBTyxlQUFPLEtBQUssTUFBSSxDQUFDQSxHQUFFQyxLQUFFLENBQUMsR0FBRUQsR0FBRUMsS0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLE9BQU8sUUFBUUQsR0FBRSxDQUFDLENBQUMsTUFBSSxLQUFLLGFBQVcsQ0FBQyxJQUFFLEtBQUssSUFBSSxDQUFDLElBQUVBLEdBQUVDLEtBQUUsQ0FBQyxHQUFFLElBQUUsS0FBSyxJQUFJLENBQUMsSUFBRUQsR0FBRUMsS0FBRSxDQUFDLENBQUMsSUFBR0Q7QUFBQSxNQUFDO0FBQUMsZUFBU0csR0FBRUgsSUFBRTtBQUFDLFlBQUlDLEtBQUUsQ0FBQ0QsRUFBQztBQUFFLGdCQUFPQSxHQUFFLENBQUMsR0FBRTtBQUFBLFVBQUMsS0FBSTtBQUFJLG1CQUFPLEtBQUssTUFBSSxLQUFLLFFBQU0sQ0FBQ0EsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUVDO0FBQUEsVUFBRSxLQUFJO0FBQUksWUFBQUQsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxJQUFJLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxJQUFJLENBQUM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFJLFlBQUFBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRSxJQUFFQSxHQUFFLENBQUMsSUFBRSxJQUFFLElBQUVBLEdBQUUsQ0FBQyxJQUFFLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLElBQUVBLEdBQUUsQ0FBQyxJQUFFLElBQUUsSUFBRUEsR0FBRSxDQUFDLElBQUUsR0FBRUEsR0FBRSxDQUFDLElBQUUsSUFBRSxLQUFLLElBQUksQ0FBQyxJQUFFLElBQUUsSUFBRUEsR0FBRSxDQUFDLElBQUUsR0FBRUEsR0FBRSxDQUFDLElBQUUsSUFBRSxLQUFLLElBQUksQ0FBQyxJQUFFLElBQUUsSUFBRUEsR0FBRSxDQUFDLElBQUU7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFJLFlBQUFDLEtBQUUsU0FBU0QsSUFBRUMsSUFBRTtBQUFDLGtCQUFJQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxLQUFFLEtBQUssSUFBSTNCLEdBQUUsQ0FBQyxDQUFDLEdBQUU0QixLQUFFLEtBQUssSUFBSTVCLEdBQUUsQ0FBQyxDQUFDLEdBQUU2QixLQUFFN0IsR0FBRSxDQUFDLElBQUUsS0FBSThCLEtBQUU5QixHQUFFLENBQUMsR0FBRStCLEtBQUUvQixHQUFFLENBQUMsR0FBRWdDLEtBQUVoQyxHQUFFLENBQUMsR0FBRWlDLEtBQUVqQyxHQUFFLENBQUMsR0FBRWtDLEtBQUUsSUFBSSxJQUFJLE1BQU1uQyxFQUFDLEdBQUVvQyxLQUFF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WUFBQyxDQUFFLEdBQUUsS0FBSyxHQUFHLEtBQUssYUFBWSxFQUFDLE9BQU1BLElBQUUsR0FBRSxLQUFLLFlBQVksT0FBTSxHQUFFLEtBQUssR0FBRSxTQUFRLEtBQUksQ0FBQztBQUFBLFVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxHQUFFQSxHQUFFLFVBQVUsT0FBSyxTQUFTQSxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLFFBQVEsR0FBRUMsS0FBRSxLQUFLLGVBQWVGLEVBQUMsR0FBRUcsS0FBRSxLQUFLLFlBQVksSUFBSSxJQUFFRCxHQUFFLElBQUUsS0FBSyxZQUFZLE1BQU0sR0FBRUUsS0FBRSxLQUFLLFlBQVksSUFBSSxJQUFFRixHQUFFLElBQUUsS0FBSyxZQUFZLE1BQU0sR0FBRUcsS0FBRSxLQUFLLFlBQVdDLEtBQUVKLEdBQUUsSUFBRSxLQUFLLFlBQVksTUFBTSxHQUFFSyxLQUFFTCxHQUFFLElBQUUsS0FBSyxZQUFZLE1BQU07QUFBRSxZQUFHLEtBQUssR0FBRyxLQUFLLFlBQVcsRUFBQyxPQUFNRixJQUFFLEdBQUVFLElBQUUsR0FBRSxLQUFLLEdBQUUsU0FBUSxLQUFJLENBQUMsR0FBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQWlCLGlCQUFPQTtBQUFFLFlBQUcsY0FBWSxPQUFPRyxJQUFFO0FBQUMsY0FBSUcsS0FBRUgsR0FBRSxLQUFLLEtBQUssSUFBR0YsSUFBRUMsSUFBRSxLQUFLLENBQUM7QUFBRSx1QkFBVyxPQUFPSSxPQUFJQSxLQUFFLEVBQUMsR0FBRUEsSUFBRSxHQUFFQSxHQUFDLElBQUcsU0FBS0EsR0FBRSxJQUFFLEtBQUssR0FBRyxFQUFFTCxFQUFDLElBQUUsVUFBS0ssR0FBRSxLQUFHLEtBQUssR0FBRyxFQUFFQSxHQUFFLENBQUMsR0FBRSxTQUFLQSxHQUFFLElBQUUsS0FBSyxHQUFHLEVBQUVKLEVBQUMsSUFBRSxVQUFLSSxHQUFFLEtBQUcsS0FBSyxHQUFHLEVBQUVBLEdBQUUsQ0FBQztBQUFBLFFBQUM7QUFBSyxzQkFBVSxPQUFPSCxPQUFJLFFBQU1B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LEVBQUMsR0FBRSxHQUFFLEtBQUssV0FBV0UsR0FBRSxDQUFDLEdBQUVELElBQUUsUUFBTUQsTUFBRyxRQUFNQSxFQUFDLEVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQztBQUFDLE1BQUFBLEdBQUUsVUFBVSxPQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssR0FBRyxLQUFLO0FBQUUsYUFBSyxVQUFRLENBQUM7QUFBRSxZQUFJQyxLQUFFLEtBQUssR0FBRyxVQUFVLFNBQVM7QUFBTyxpQkFBUUMsTUFBSyxLQUFLLEdBQUcsVUFBVTtBQUFTLGVBQUssUUFBUUEsRUFBQyxJQUFFLEtBQUssR0FBRyxVQUFVLFNBQVNBLEVBQUMsR0FBRSxXQUFTSCxHQUFFRyxFQUFDLE1BQUksS0FBSyxRQUFRQSxFQUFDLElBQUVILEdBQUVHLEVBQUM7QUFBRyxZQUFJQyxLQUFFLENBQUMsVUFBUyxlQUFlO0FBQUUsaUJBQVFELE1BQUtDLElBQUU7QUFBQyxjQUFJQyxLQUFFLEtBQUssUUFBUUQsR0FBRUQsRUFBQyxDQUFDO0FBQUUsc0JBQVUsT0FBT0UsS0FBRUEsS0FBRUEsR0FBRSxTQUFPLElBQUVBLEdBQUUsTUFBTSxVQUFVLElBQUUsQ0FBQyxJQUFFLGFBQVcsT0FBT0EsTUFBRyxhQUFXRCxHQUFFRCxFQUFDLE1BQUlFLEtBQUVBLEtBQUVILEtBQUUsQ0FBQyxJQUFHLEtBQUssUUFBUUUsR0FBRUQsRUFBQyxDQUFDLElBQUVFO0FBQUEsUUFBQztBQUFDLGFBQUssUUFBUSxTQUFPLENBQUNILElBQUUsS0FBSyxRQUFRLE1BQU0sRUFBRSxPQUFRLFNBQVNILElBQUVDLElBQUU7QUFBQyxpQkFBT0QsR0FBRSxPQUFRLFNBQVNBLElBQUU7QUFBQyxtQkFBT0MsR0FBRSxRQUFRRCxFQUFDLElBQUU7QUFBQSxVQUFFLENBQUU7QUFBQSxRQUFDLENBQUUsR0FBRSxLQUFLLFFBQVEsU0FBTyxDQUFDLEtBQUssUUFBUSxRQUFPLEtBQUssUUFBUSxhQUFhLEVBQUUsT0FBUSxTQUFTQSxJQUFFQyxJQUFF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O0FBQUksbUJBQUssT0FBSyxTQUFTRixJQUFFQyxJQUFFO0FBQUMsb0JBQUlDLEtBQUUsS0FBSyxXQUFXRixJQUFFQyxJQUFFLENBQUM7QUFBRSxvQkFBRyxLQUFLLFdBQVcsSUFBSSxRQUFNQyxHQUFFLENBQUMsSUFBRSxHQUFFO0FBQUMsc0JBQUcsV0FBUyxLQUFLLFdBQVc7QUFBSztBQUFPLHVCQUFLLEdBQUcsS0FBSyxLQUFLLFdBQVcsSUFBSSxJQUFFQSxHQUFFLENBQUMsR0FBRSxLQUFLLFdBQVcsSUFBSSxDQUFDLEVBQUUsTUFBTSxLQUFLLFdBQVcsSUFBSSxRQUFNQSxHQUFFLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFFO0FBQUEsWUFBTSxLQUFJO0FBQU0sbUJBQUssT0FBSyxTQUFTRixJQUFFQyxJQUFFO0FBQUMsb0JBQUlDLEtBQUVGLEtBQUUsS0FBSyxXQUFXLEVBQUUsR0FBRUcsS0FBRUYsS0FBRSxLQUFLLFdBQVcsRUFBRSxHQUFFRyxLQUFFLEtBQUssTUFBTSxLQUFLLFdBQVcsRUFBRSxJQUFFLEtBQUssV0FBVyxJQUFJLElBQUUsS0FBSyxXQUFXLElBQUksU0FBTyxHQUFFLEtBQUssV0FBVyxFQUFFLElBQUUsS0FBSyxXQUFXLElBQUksSUFBRSxLQUFLLFdBQVcsSUFBSSxRQUFNLENBQUMsR0FBRUMsS0FBRSxLQUFLLE1BQU1GLEtBQUUsS0FBSyxXQUFXLElBQUksSUFBRSxLQUFLLFdBQVcsSUFBSSxTQUFPLEdBQUVELEtBQUUsS0FBSyxXQUFXLElBQUksSUFBRSxLQUFLLFdBQVcsSUFBSSxRQUFNLENBQUMsR0FBRUksS0FBRSxLQUFLLFdBQVcsV0FBUyxPQUFLRCxLQUFFRCxNQUFHLEtBQUssS0FBRyxLQUFLLFFBQVEsY0FBWTtBQUFFLHFCQUFLLEdBQUcsT0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFHLEtBQUssV0FBVyxJQUFJLEVBQUUsRUFBRSxPQUFPRSxLQUFFQSxLQUFFLEtBQUssUUFBUSxhQUFZLEtBQUssV0FBVyxJQUFJLElBQUcsS0FBSyxXQUFXLElB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QUMsZUFBTyxFQUFFLE9BQU9ELElBQUVDLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUVEO0FBQUEsSUFBQyxFQUFFO0FBQUUsV0FBTyxVQUFRO0FBQUE7QUFBQTs7O0FDYjVtOUMsd0JBQXVCO0FBRVIsU0FBUixXQUE0QjtBQUFBLEVBQy9CO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0osR0FBRztBQUNDLFNBQU87QUFBQSxJQUNILE9BQU87QUFBQSxJQUNQO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxNQUFNLFdBQVk7QUFFZCxXQUFLLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLFNBQUF3QyxTQUFRLE1BQU07QUFFN0MsUUFBQUEsV0FBVTtBQUFBLFVBQ04sR0FBR0E7QUFBQSxVQUNILEdBQUcsS0FBSztBQUFBLFFBQ1o7QUFDQSxhQUFLLFlBQVlBLFFBQU87QUFBQSxNQUM1QixDQUFDO0FBRUQsYUFBTyxPQUFPLE1BQU07QUFFaEIsY0FBTUMsU0FBUSxPQUFPLE1BQU0sT0FBTztBQUVsQyxhQUFLLFVBQVUsTUFBTTtBQUVqQixjQUFJLEtBQUssVUFBVSxNQUFNO0FBQ3JCLGlCQUFLLFVBQVU7QUFBQSxVQUNuQixPQUFPO0FBRUgsaUJBQUssWUFBWTtBQUFBLGNBQ2IsT0FBTyxFQUFFLE1BQU1BLE9BQU07QUFBQSxjQUNyQixPQUFPO0FBQUEsZ0JBQ0gsWUFBWTtBQUFBLGNBQ2hCO0FBQUEsWUFDSixDQUFDO0FBQUEsVUFDTDtBQUFBLFFBQ0osQ0FBQztBQUFBLE1BQ0wsQ0FBQztBQUFBLElBQ0w7QUFBQSxJQUNBLFdBQVcsV0FBWTtBQUVuQixXQUFLLFFBQVEsUUFBUSxFQUFFLE1BQU0sS0FBSyxNQUFNO0FBQ3hDLFdBQUssUUFBUSxNQUFNLGFBQWE7QUFFaEMsV0FBSyxVQUFVO0FBQUEsUUFDWCxHQUFHLEtBQUs7QUFBQSxRQUNSLEdBQUcsS0FBSztBQUFBLE1BQ1o7QUFFQSxXQUFLLFFBQVEsSUFBSSxrQkFBQUMsUUFBVyxTQUFTLGNBQWMsS0FBSyxPQUFPLEdBQUcsS0FBSyxPQUFPO0FBQzlFLFdBQUssTUFBTSxPQUFPO0FBQUEsSUFDdEI7QUFBQSxJQUNBLGFBQWEsU0FBVUYsVUFBUztBQUM1QixXQUFLLE1BQU0sY0FBY0EsVUFBUyxPQUFPLE1BQU0sSUFBSTtBQUFBLElBQ3ZEO0FBQUEsRUFDSjtBQUNKOyIsCiAgIm5hbWVzIjogWyJ0IiwgImUiLCAiaSIsICJhIiwgInMiLCAiciIsICJvIiwgIm4iLCAibCIsICJoIiwgImMiLCAiZCIsICJnIiwgInUiLCAicCIsICJmIiwgIngiLCAiYiIsICJ2IiwgIm0iLCAieSIsICJ3IiwgImsiLCAiQSIsICJTIiwgIkMiLCAiTCIsICJQIiwgIkkiLCAiTSIsICJUIiwgInoiLCAiWCIsICJFIiwgIlkiLCAiRiIsICJSIiwgIkgiLCAiRCIsICJPIiwgIm9wdGlvbnMiLCAidGhlbWUiLCAiQXBleENoYXJ0cyJdCn0K diff --git a/resources/views/widgets/apex-chart-widget.blade.php b/resources/views/widgets/apex-chart-widget.blade.php index fd36688..7d8e40f 100644 --- a/resources/views/widgets/apex-chart-widget.blade.php +++ b/resources/views/widgets/apex-chart-widget.blade.php @@ -14,11 +14,11 @@ $deferLoading = $this->getDeferLoading(); $footer = $this->getFooter(); $readyToLoad = $this->readyToLoad; + $extraJsOptions = $this->extraJsOptions(); @endphp -
+
@@ -28,7 +28,7 @@ + :$darkMode :$deferLoading :$readyToLoad :$extraJsOptions /> @if ($footer)
diff --git a/resources/views/widgets/components/chart.blade.php b/resources/views/widgets/components/chart.blade.php index 77d3724..9b707e0 100644 --- a/resources/views/widgets/components/chart.blade.php +++ b/resources/views/widgets/components/chart.blade.php @@ -1,27 +1,34 @@ -@props(['chartId', 'chartOptions', 'contentHeight', 'pollingInterval', 'loadingIndicator', 'deferLoading', 'readyToLoad', 'darkMode']) +@props([ + 'chartId', + 'chartOptions', + 'contentHeight', + 'pollingInterval', + 'loadingIndicator', + 'deferLoading', + 'readyToLoad', + 'darkMode', + 'extraJsOptions', +])
@if ($readyToLoad) -
-
-
+
+
+
-
+
diff --git a/src/Widgets/ApexChartWidget.php b/src/Widgets/ApexChartWidget.php index 92f5cbe..b3c230d 100644 --- a/src/Widgets/ApexChartWidget.php +++ b/src/Widgets/ApexChartWidget.php @@ -3,6 +3,7 @@ namespace Leandrocfe\FilamentApexCharts\Widgets; use Filament\Forms\Contracts\HasForms; +use Filament\Support\RawJs; use Filament\Widgets\Concerns\CanPoll; use Filament\Widgets\Widget; use Illuminate\Contracts\View\View; @@ -91,4 +92,12 @@ public function updateOptions(): void } } } + + /** + * Returns extra JavaScript options. + */ + protected function extraJsOptions(): ?RawJs + { + return null; + } } From 1c052c1c29cf3edc40ef150ee12ab3951f73400b Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Thu, 11 Jan 2024 11:04:03 -0300 Subject: [PATCH 05/11] recursively merges --- apexcharts.js | 11 +- dist/apexcharts.js | 735 +++++++++++++++++- package-lock.json | 8 +- package.json | 5 +- .../views/widgets/components/chart.blade.php | 2 +- 5 files changed, 740 insertions(+), 21 deletions(-) diff --git a/apexcharts.js b/apexcharts.js index 893653e..ed7809b 100644 --- a/apexcharts.js +++ b/apexcharts.js @@ -1,4 +1,5 @@ import ApexCharts from 'apexcharts' +var merge = require('lodash.merge'); export default function apexcharts({ options, @@ -16,10 +17,7 @@ export default function apexcharts({ this.$wire.$on('updateOptions', ({ options }) => { - options = { - ...options, - ...this.extraJsOptions - } + options = merge(options, this.extraJsOptions) this.updateChart(options) }) @@ -48,10 +46,7 @@ export default function apexcharts({ this.options.theme = { mode: this.theme } this.options.chart.background = 'inherit' - this.options = { - ...this.options, - ...this.extraJsOptions - } + this.options = merge(this.options, this.extraJsOptions) this.chart = new ApexCharts(document.querySelector(this.chartId), this.options) this.chart.render() diff --git a/dist/apexcharts.js b/dist/apexcharts.js index 12ccf10..7fcd13c 100644 --- a/dist/apexcharts.js +++ b/dist/apexcharts.js @@ -8275,8 +8275,731 @@ var require_apexcharts_common = __commonJS({ } }); +// node_modules/lodash.merge/index.js +var require_lodash = __commonJS({ + "node_modules/lodash.merge/index.js"(exports, module) { + var LARGE_ARRAY_SIZE = 200; + var HASH_UNDEFINED = "__lodash_hash_undefined__"; + var HOT_COUNT = 800; + var HOT_SPAN = 16; + var MAX_SAFE_INTEGER = 9007199254740991; + var argsTag = "[object Arguments]"; + var arrayTag = "[object Array]"; + var asyncTag = "[object AsyncFunction]"; + var boolTag = "[object Boolean]"; + var dateTag = "[object Date]"; + var errorTag = "[object Error]"; + var funcTag = "[object Function]"; + var genTag = "[object GeneratorFunction]"; + var mapTag = "[object Map]"; + var numberTag = "[object Number]"; + var nullTag = "[object Null]"; + var objectTag = "[object Object]"; + var proxyTag = "[object Proxy]"; + var regexpTag = "[object RegExp]"; + var setTag = "[object Set]"; + var stringTag = "[object String]"; + var undefinedTag = "[object Undefined]"; + var weakMapTag = "[object WeakMap]"; + var arrayBufferTag = "[object ArrayBuffer]"; + var dataViewTag = "[object DataView]"; + var float32Tag = "[object Float32Array]"; + var float64Tag = "[object Float64Array]"; + var int8Tag = "[object Int8Array]"; + var int16Tag = "[object Int16Array]"; + var int32Tag = "[object Int32Array]"; + var uint8Tag = "[object Uint8Array]"; + var uint8ClampedTag = "[object Uint8ClampedArray]"; + var uint16Tag = "[object Uint16Array]"; + var uint32Tag = "[object Uint32Array]"; + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var reIsUint = /^(?:0|[1-9]\d*)$/; + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + var freeGlobal = typeof global == "object" && global && global.Object === Object && global; + var freeSelf = typeof self == "object" && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function("return this")(); + var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module; + var moduleExports = freeModule && freeModule.exports === freeExports; + var freeProcess = moduleExports && freeGlobal.process; + var nodeUtil = function() { + try { + var types = freeModule && freeModule.require && freeModule.require("util").types; + if (types) { + return types; + } + return freeProcess && freeProcess.binding && freeProcess.binding("util"); + } catch (e) { + } + }(); + var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + function apply(func, thisArg, args) { + switch (args.length) { + case 0: + return func.call(thisArg); + case 1: + return func.call(thisArg, args[0]); + case 2: + return func.call(thisArg, args[0], args[1]); + case 3: + return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + function baseTimes(n, iteratee) { + var index = -1, result = Array(n); + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + function getValue(object, key) { + return object == null ? void 0 : object[key]; + } + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + var arrayProto = Array.prototype; + var funcProto = Function.prototype; + var objectProto = Object.prototype; + var coreJsData = root["__core-js_shared__"]; + var funcToString = funcProto.toString; + var hasOwnProperty = objectProto.hasOwnProperty; + var maskSrcKey = function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); + return uid ? "Symbol(src)_1." + uid : ""; + }(); + var nativeObjectToString = objectProto.toString; + var objectCtorString = funcToString.call(Object); + var reIsNative = RegExp( + "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" + ); + var Buffer2 = moduleExports ? root.Buffer : void 0; + var Symbol2 = root.Symbol; + var Uint8Array2 = root.Uint8Array; + var allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0; + var getPrototype = overArg(Object.getPrototypeOf, Object); + var objectCreate = Object.create; + var propertyIsEnumerable = objectProto.propertyIsEnumerable; + var splice = arrayProto.splice; + var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0; + var defineProperty = function() { + try { + var func = getNative(Object, "defineProperty"); + func({}, "", {}); + return func; + } catch (e) { + } + }(); + var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0; + var nativeMax = Math.max; + var nativeNow = Date.now; + var Map = getNative(root, "Map"); + var nativeCreate = getNative(Object, "create"); + var baseCreate = /* @__PURE__ */ function() { + function object() { + } + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object(); + object.prototype = void 0; + return result; + }; + }(); + function Hash(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? void 0 : result; + } + return hasOwnProperty.call(data, key) ? data[key] : void 0; + } + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key); + } + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value; + return this; + } + Hash.prototype.clear = hashClear; + Hash.prototype["delete"] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + function ListCache(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + function listCacheDelete(key) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + function listCacheGet(key) { + var data = this.__data__, index = assocIndexOf(data, key); + return index < 0 ? void 0 : data[index][1]; + } + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + function listCacheSet(key, value) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + ListCache.prototype.clear = listCacheClear; + ListCache.prototype["delete"] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + function MapCache(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function mapCacheClear() { + this.size = 0; + this.__data__ = { + "hash": new Hash(), + "map": new (Map || ListCache)(), + "string": new Hash() + }; + } + function mapCacheDelete(key) { + var result = getMapData(this, key)["delete"](key); + this.size -= result ? 1 : 0; + return result; + } + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + function mapCacheSet(key, value) { + var data = getMapData(this, key), size = data.size; + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype["delete"] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + function stackClear() { + this.__data__ = new ListCache(); + this.size = 0; + } + function stackDelete(key) { + var data = this.__data__, result = data["delete"](key); + this.size = data.size; + return result; + } + function stackGet(key) { + return this.__data__.get(key); + } + function stackHas(key) { + return this.__data__.has(key); + } + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + Stack.prototype.clear = stackClear; + Stack.prototype["delete"] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length; + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode. + (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. + isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. + isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties. + isIndex(key, length)))) { + result.push(key); + } + } + return result; + } + function assignMergeValue(object, key, value) { + if (value !== void 0 && !eq(object[key], value) || value === void 0 && !(key in object)) { + baseAssignValue(object, key, value); + } + } + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) { + baseAssignValue(object, key, value); + } + } + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + function baseAssignValue(object, key, value) { + if (key == "__proto__" && defineProperty) { + defineProperty(object, key, { + "configurable": true, + "enumerable": true, + "value": value, + "writable": true + }); + } else { + object[key] = value; + } + } + var baseFor = createBaseFor(); + function baseGetTag(value) { + if (value == null) { + return value === void 0 ? undefinedTag : nullTag; + } + return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); + } + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + function baseIsTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), result = []; + for (var key in object) { + if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack()); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } else { + var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : void 0; + if (newValue === void 0) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue); + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : void 0; + var isCommon = newValue === void 0; + if (isCommon) { + var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue); + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } else { + newValue = []; + } + } else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } else { + isCommon = false; + } + } + if (isCommon) { + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack["delete"](srcValue); + } + assignMergeValue(object, key, newValue); + } + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ""); + } + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, "toString", { + "configurable": true, + "enumerable": false, + "value": constant(string), + "writable": true + }); + }; + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + buffer.copy(result); + return result; + } + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array2(result).set(new Uint8Array2(arrayBuffer)); + return result; + } + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + function copyArray(source, array) { + var index = -1, length = source.length; + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + var index = -1, length = props.length; + while (++index < length) { + var key = props[index]; + var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0; + if (newValue === void 0) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0; + customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : void 0; + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? void 0 : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length; + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; + } + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : void 0; + } + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; + try { + value[symToStringTag] = void 0; + var unmasked = true; + } catch (e) { + } + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + function initCloneObject(object) { + return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; + } + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); + } + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) { + return eq(object[index], value); + } + return false; + } + function isKeyable(value) { + var type = typeof value; + return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; + } + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + function isPrototype(value) { + var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; + return value === proto; + } + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + function objectToString(value) { + return nativeObjectToString.call(value); + } + function overRest(func, start, transform) { + start = nativeMax(start === void 0 ? func.length - 1 : start, 0); + return function() { + var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length); + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + function safeGet(object, key) { + if (key === "constructor" && typeof object[key] === "function") { + return; + } + if (key == "__proto__") { + return; + } + return object[key]; + } + var setToString = shortOut(baseSetToString); + function shortOut(func) { + var count = 0, lastCalled = 0; + return function() { + var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(void 0, arguments); + }; + } + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) { + } + try { + return func + ""; + } catch (e) { + } + } + return ""; + } + function eq(value, other) { + return value === other || value !== value && other !== other; + } + var isArguments = baseIsArguments(/* @__PURE__ */ function() { + return arguments; + }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); + }; + var isArray = Array.isArray; + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + var isBuffer = nativeIsBuffer || stubFalse; + function isFunction(value) { + if (!isObject(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + function isLength(value) { + return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + function isObject(value) { + var type = typeof value; + return value != null && (type == "object" || type == "function"); + } + function isObjectLike(value) { + return value != null && typeof value == "object"; + } + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; + } + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + var merge2 = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + function constant(value) { + return function() { + return value; + }; + } + function identity(value) { + return value; + } + function stubFalse() { + return false; + } + module.exports = merge2; + } +}); + // apexcharts.js var import_apexcharts = __toESM(require_apexcharts_common(), 1); +var merge = require_lodash(); function apexcharts({ options, chartId, @@ -8291,10 +9014,7 @@ function apexcharts({ extraJsOptions, init: function() { this.$wire.$on("updateOptions", ({ options: options2 }) => { - options2 = { - ...options2, - ...this.extraJsOptions - }; + options2 = merge(options2, this.extraJsOptions); this.updateChart(options2); }); Alpine.effect(() => { @@ -8316,10 +9036,7 @@ function apexcharts({ initChart: function() { this.options.theme = { mode: this.theme }; this.options.chart.background = "inherit"; - this.options = { - ...this.options, - ...this.extraJsOptions - }; + this.options = merge(this.options, this.extraJsOptions); this.chart = new import_apexcharts.default(document.querySelector(this.chartId), this.options); this.chart.render(); }, @@ -8340,4 +9057,4 @@ apexcharts/dist/apexcharts.common.js: * Released under the MIT License. *) */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzL2FwZXhjaGFydHMvZGlzdC9hcGV4Y2hhcnRzLmNvbW1vbi5qcyIsICIuLi9hcGV4Y2hhcnRzLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiFcbiAqIEFwZXhDaGFydHMgdjMuNDQuMFxuICogKGMpIDIwMTgtMjAyMyBBcGV4Q2hhcnRzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblwidXNlIHN0cmljdFwiO2Z1bmN0aW9uIHQodCxlKXt2YXIgaT1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihhPWEuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLGkucHVzaC5hcHBseShpLGEpfXJldHVybiBpfWZ1bmN0aW9uIGUoZSl7Zm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIGE9bnVsbCE9YXJndW1lbnRzW2ldP2FyZ3VtZW50c1tpXTp7fTtpJTI/dChPYmplY3QoYSksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe28oZSx0LGFbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYSkpOnQoT2JqZWN0KGEpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSx0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiB0fSxpKHQpfWZ1bmN0aW9uIGEodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIHModCxlKXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGE9ZVtpXTthLmVudW1lcmFibGU9YS5lbnVtZXJhYmxlfHwhMSxhLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBhJiYoYS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsYS5rZXksYSl9fWZ1bmN0aW9uIHIodCxlLGkpe3JldHVybiBlJiZzKHQucHJvdG90eXBlLGUpLGkmJnModCxpKSx0fWZ1bmN0aW9uIG8odCxlLGkpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6aSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09aSx0fWZ1bmN0aW9uIG4odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJmgodCxlKX1mdW5jdGlvbiBsKHQpe3JldHVybiBsPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LGwodCl9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxoKHQsZSl9ZnVuY3Rpb24gYyh0LGUpe2lmKGUmJihcIm9iamVjdFwiPT10eXBlb2YgZXx8XCJmdW5jdGlvblwiPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiB0fSh0KX1mdW5jdGlvbiBkKHQpe3ZhciBlPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGksYT1sKHQpO2lmKGUpe3ZhciBzPWwodGhpcykuY29uc3RydWN0b3I7aT1SZWZsZWN0LmNvbnN0cnVjdChhLGFyZ3VtZW50cyxzKX1lbHNlIGk9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGModGhpcyxpKX19ZnVuY3Rpb24gZyh0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgaT1udWxsPT10P251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdfHx0W1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1pKXJldHVybjt2YXIgYSxzLHI9W10sbz0hMCxuPSExO3RyeXtmb3IoaT1pLmNhbGwodCk7IShvPShhPWkubmV4dCgpKS5kb25lKSYmKHIucHVzaChhLnZhbHVlKSwhZXx8ci5sZW5ndGghPT1lKTtvPSEwKTt9Y2F0Y2godCl7bj0hMCxzPXR9ZmluYWxseXt0cnl7b3x8bnVsbD09aS5yZXR1cm58fGkucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IHN9fXJldHVybiByfSh0LGUpfHxwKHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiB1KHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBmKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9dFtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT10W1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fHAodCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gcCh0LGUpe2lmKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXJldHVybiBmKHQsZSk7dmFyIGk9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1pJiZ0LmNvbnN0cnVjdG9yJiYoaT10LmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1pfHxcIlNldFwiPT09aT9BcnJheS5mcm9tKHQpOlwiQXJndW1lbnRzXCI9PT1pfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChpKT9mKHQsZSk6dm9pZCAwfX1mdW5jdGlvbiBmKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBpPTAsYT1uZXcgQXJyYXkoZSk7aTxlO2krKylhW2ldPXRbaV07cmV0dXJuIGF9dmFyIHg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7YSh0aGlzLHQpfXJldHVybiByKHQsW3trZXk6XCJzaGFkZVJHQkNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLnNwbGl0KFwiLFwiKSxhPXQ8MD8wOjI1NSxzPXQ8MD8tMSp0OnQscj1wYXJzZUludChpWzBdLnNsaWNlKDQpLDEwKSxvPXBhcnNlSW50KGlbMV0sMTApLG49cGFyc2VJbnQoaVsyXSwxMCk7cmV0dXJuXCJyZ2IoXCIrKE1hdGgucm91bmQoKGEtcikqcykrcikrXCIsXCIrKE1hdGgucm91bmQoKGEtbykqcykrbykrXCIsXCIrKE1hdGgucm91bmQoKGEtbikqcykrbikrXCIpXCJ9fSx7a2V5Olwic2hhZGVIZXhDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9cGFyc2VJbnQoZS5zbGljZSgxKSwxNiksYT10PDA/MDoyNTUscz10PDA/LTEqdDp0LHI9aT4+MTYsbz1pPj44JjI1NSxuPTI1NSZpO3JldHVyblwiI1wiKygxNjc3NzIxNis2NTUzNiooTWF0aC5yb3VuZCgoYS1yKSpzKStyKSsyNTYqKE1hdGgucm91bmQoKGEtbykqcykrbykrKE1hdGgucm91bmQoKGEtbikqcykrbikpLnRvU3RyaW5nKDE2KS5zbGljZSgxKX19LHtrZXk6XCJzaGFkZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24oZSxpKXtyZXR1cm4gdC5pc0NvbG9ySGV4KGkpP3RoaXMuc2hhZGVIZXhDb2xvcihlLGkpOnRoaXMuc2hhZGVSR0JDb2xvcihlLGkpfX1dLFt7a2V5OlwiYmluZFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LHtrZXk6XCJpc09iamVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcIm9iamVjdFwiPT09aSh0KSYmIUFycmF5LmlzQXJyYXkodCkmJm51bGwhPXR9fSx7a2V5OlwiaXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk9PT1cIltvYmplY3QgXCIrdCtcIl1cIn19LHtrZXk6XCJsaXN0VG9BcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpW2VdPXRbZV07cmV0dXJuIGl9fSx7a2V5OlwiZXh0ZW5kXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO1wiZnVuY3Rpb25cIiE9dHlwZW9mIE9iamVjdC5hc3NpZ24mJihPYmplY3QuYXNzaWduPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdFwiKTtmb3IodmFyIGU9T2JqZWN0KHQpLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgYT1hcmd1bWVudHNbaV07aWYobnVsbCE9YSlmb3IodmFyIHMgaW4gYSlhLmhhc093blByb3BlcnR5KHMpJiYoZVtzXT1hW3NdKX1yZXR1cm4gZX0pO3ZhciBhPU9iamVjdC5hc3NpZ24oe30sdCk7cmV0dXJuIHRoaXMuaXNPYmplY3QodCkmJnRoaXMuaXNPYmplY3QoZSkmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHMpe2kuaXNPYmplY3QoZVtzXSkmJnMgaW4gdD9hW3NdPWkuZXh0ZW5kKHRbc10sZVtzXSk6T2JqZWN0LmFzc2lnbihhLG8oe30scyxlW3NdKSl9KSksYX19LHtrZXk6XCJleHRlbmRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKGUsaSl7dmFyIGE9W107cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXthLnB1c2godC5leHRlbmQoaSxlKSl9KSksZT1hfX0se2tleTpcIm1vbnRoTW9kXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQlMTJ9fSx7a2V5OlwiY2xvbmVcIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0LmlzKFwiQXJyYXlcIixlKSl7Zm9yKHZhciBhPVtdLHM9MDtzPGUubGVuZ3RoO3MrKylhW3NdPXRoaXMuY2xvbmUoZVtzXSk7cmV0dXJuIGF9aWYodC5pcyhcIk51bGxcIixlKSlyZXR1cm4gbnVsbDtpZih0LmlzKFwiRGF0ZVwiLGUpKXJldHVybiBlO2lmKFwib2JqZWN0XCI9PT1pKGUpKXt2YXIgcj17fTtmb3IodmFyIG8gaW4gZSllLmhhc093blByb3BlcnR5KG8pJiYocltvXT10aGlzLmNsb25lKGVbb10pKTtyZXR1cm4gcn1yZXR1cm4gZX19LHtrZXk6XCJsb2cxMFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLkxOMTB9fSx7a2V5Olwicm91bmRUb0Jhc2UxMFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nMTAodCkpKX19LHtrZXk6XCJyb3VuZFRvQmFzZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgucG93KGUsTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLmxvZyhlKSkpfX0se2tleTpcInBhcnNlTnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10P3Q6cGFyc2VGbG9hdCh0KX19LHtrZXk6XCJzdHJpcE51bWJlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToyO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHQpP3Q6cGFyc2VGbG9hdCh0LnRvUHJlY2lzaW9uKGUpKX19LHtrZXk6XCJyYW5kb21JZFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKE1hdGgucmFuZG9tKCkrMSkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg0KX19LHtrZXk6XCJub0V4cG9uZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyh0KS5zcGxpdCgvW2VFXS8pO2lmKDE9PT1lLmxlbmd0aClyZXR1cm4gZVswXTt2YXIgaT1cIlwiLGE9dDwwP1wiLVwiOlwiXCIscz1lWzBdLnJlcGxhY2UoXCIuXCIsXCJcIikscj1OdW1iZXIoZVsxXSkrMTtpZihyPDApe2ZvcihpPWErXCIwLlwiO3IrKzspaSs9XCIwXCI7cmV0dXJuIGkrcy5yZXBsYWNlKC9eLS8sXCJcIil9Zm9yKHItPXMubGVuZ3RoO3ItLTspaSs9XCIwXCI7cmV0dXJuIHMraX19LHtrZXk6XCJnZXREaW1lbnNpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9Z2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLGk9dC5jbGllbnRIZWlnaHQsYT10LmNsaWVudFdpZHRoO3JldHVybiBpLT1wYXJzZUZsb2F0KGUucGFkZGluZ1RvcCkrcGFyc2VGbG9hdChlLnBhZGRpbmdCb3R0b20pLFthLT1wYXJzZUZsb2F0KGUucGFkZGluZ0xlZnQpK3BhcnNlRmxvYXQoZS5wYWRkaW5nUmlnaHQpLGldfX0se2tleTpcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3RvcDplLnRvcCxyaWdodDplLnJpZ2h0LGJvdHRvbTplLmJvdHRvbSxsZWZ0OmUubGVmdCx3aWR0aDp0LmNsaWVudFdpZHRoLGhlaWdodDp0LmNsaWVudEhlaWdodCx4OmUubGVmdCx5OmUudG9wfX19LHtrZXk6XCJnZXRMYXJnZXN0U3RyaW5nRnJvbUFyclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmKGU9ZS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pKSksdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCl9fSx7a2V5OlwiaGV4VG9SZ2JhXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCIjOTk5OTk5XCIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06LjY7XCIjXCIhPT10LnN1YnN0cmluZygwLDEpJiYodD1cIiM5OTk5OTlcIik7dmFyIGk9dC5yZXBsYWNlKFwiI1wiLFwiXCIpO2k9aS5tYXRjaChuZXcgUmVnRXhwKFwiKC57XCIraS5sZW5ndGgvMytcIn0pXCIsXCJnXCIpKTtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylpW2FdPXBhcnNlSW50KDE9PT1pW2FdLmxlbmd0aD9pW2FdK2lbYV06aVthXSwxNik7cmV0dXJuIHZvaWQgMCE9PWUmJmkucHVzaChlKSxcInJnYmEoXCIraS5qb2luKFwiLFwiKStcIilcIn19LHtrZXk6XCJnZXRPcGFjaXR5RnJvbVJHQkFcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0LnJlcGxhY2UoL14uKiwoLispXFwpLyxcIiQxXCIpKX19LHtrZXk6XCJyZ2IyaGV4XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dC5tYXRjaCgvXnJnYmE/W1xccytdP1xcKFtcXHMrXT8oXFxkKylbXFxzK10/LFtcXHMrXT8oXFxkKylbXFxzK10/LFtcXHMrXT8oXFxkKylbXFxzK10/L2kpKSYmND09PXQubGVuZ3RoP1wiI1wiKyhcIjBcIitwYXJzZUludCh0WzFdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSsoXCIwXCIrcGFyc2VJbnQodFsyXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikrKFwiMFwiK3BhcnNlSW50KHRbM10sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpOlwiXCJ9fSx7a2V5OlwiaXNDb2xvckhleFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybi8oXiNbMC05QS1GXXs2fSQpfCheI1swLTlBLUZdezN9JCl8KF4jWzAtOUEtRl17OH0kKS9pLnRlc3QodCl9fSx7a2V5OlwiZ2V0UG9seWdvblBvc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPVtdLGE9MipNYXRoLlBJL2Uscz0wO3M8ZTtzKyspe3ZhciByPXt9O3IueD10Kk1hdGguc2luKHMqYSksci55PS10Kk1hdGguY29zKHMqYSksaS5wdXNoKHIpfXJldHVybiBpfX0se2tleTpcInBvbGFyVG9DYXJ0ZXNpYW5cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz0oYS05MCkqTWF0aC5QSS8xODA7cmV0dXJue3g6dCtpKk1hdGguY29zKHMpLHk6ZStpKk1hdGguc2luKHMpfX19LHtrZXk6XCJlc2NhcGVTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06XCJ4XCIsaT10LnRvU3RyaW5nKCkuc2xpY2UoKTtyZXR1cm4gaT1pLnJlcGxhY2UoL1tgIH4hQCMkJV4mKigpfCtcXD0/OzonXCIsLjw+e31bXFxdXFxcXC9dL2dpLGUpfX0se2tleTpcIm5lZ1RvWmVyb1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0PDA/MDp0fX0se2tleTpcIm1vdmVJbmRleEluQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoaT49dC5sZW5ndGgpZm9yKHZhciBhPWktdC5sZW5ndGgrMTthLS07KXQucHVzaCh2b2lkIDApO3JldHVybiB0LnNwbGljZShpLDAsdC5zcGxpY2UoZSwxKVswXSksdH19LHtrZXk6XCJleHRyYWN0TnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodC5yZXBsYWNlKC9bXlxcZC5dKi9nLFwiXCIpKX19LHtrZXk6XCJmaW5kQW5jZXN0b3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcig7KHQ9dC5wYXJlbnRFbGVtZW50KSYmIXQuY2xhc3NMaXN0LmNvbnRhaW5zKGUpOyk7cmV0dXJuIHR9fSx7a2V5Olwic2V0RUxzdHlsZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJih0LnN0eWxlLmtleT1lW2ldKX19LHtrZXk6XCJpc051bWJlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiFpc05hTih0KSYmcGFyc2VGbG9hdChOdW1iZXIodCkpPT09dCYmIWlzTmFOKHBhcnNlSW50KHQsMTApKX19LHtrZXk6XCJpc0Zsb2F0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE51bWJlcih0KT09PXQmJnQlMSE9MH19LHtrZXk6XCJpc1NhZmFyaVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KX19LHtrZXk6XCJpc0ZpcmVmb3hcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImZpcmVmb3hcIik+LTF9fSx7a2V5OlwiaXNJRTExXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZigtMSE9PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJNU0lFXCIpfHx3aW5kb3cubmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIlRyaWRlbnQvXCIpPi0xKXJldHVybiEwfX0se2tleTpcImlzSUVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LGU9dC5pbmRleE9mKFwiTVNJRSBcIik7aWYoZT4wKXJldHVybiBwYXJzZUludCh0LnN1YnN0cmluZyhlKzUsdC5pbmRleE9mKFwiLlwiLGUpKSwxMCk7aWYodC5pbmRleE9mKFwiVHJpZGVudC9cIik+MCl7dmFyIGk9dC5pbmRleE9mKFwicnY6XCIpO3JldHVybiBwYXJzZUludCh0LnN1YnN0cmluZyhpKzMsdC5pbmRleE9mKFwiLlwiLGkpKSwxMCl9dmFyIGE9dC5pbmRleE9mKFwiRWRnZS9cIik7cmV0dXJuIGE+MCYmcGFyc2VJbnQodC5zdWJzdHJpbmcoYSs1LHQuaW5kZXhPZihcIi5cIixhKSksMTApfX1dKSx0fSgpLGI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zZXRFYXNpbmdGdW5jdGlvbnMoKX1yZXR1cm4gcih0LFt7a2V5Olwic2V0RWFzaW5nRnVuY3Rpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtpZighdGhpcy53Lmdsb2JhbHMuZWFzaW5nKXtzd2l0Y2godGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVhc2luZyl7Y2FzZVwibGluZWFyXCI6dD1cIi1cIjticmVhaztjYXNlXCJlYXNlaW5cIjp0PVwiPFwiO2JyZWFrO2Nhc2VcImVhc2VvdXRcIjp0PVwiPlwiO2JyZWFrO2Nhc2VcImVhc2Vpbm91dFwiOmRlZmF1bHQ6dD1cIjw+XCI7YnJlYWs7Y2FzZVwic3dpbmdcIjp0PWZ1bmN0aW9uKHQpe3ZhciBlPTEuNzAxNTg7cmV0dXJuKHQtPTEpKnQqKChlKzEpKnQrZSkrMX07YnJlYWs7Y2FzZVwiYm91bmNlXCI6dD1mdW5jdGlvbih0KXtyZXR1cm4gdDwxLzIuNzU/Ny41NjI1KnQqdDp0PDIvMi43NT83LjU2MjUqKHQtPTEuNS8yLjc1KSp0Ky43NTp0PDIuNS8yLjc1PzcuNTYyNSoodC09Mi4yNS8yLjc1KSp0Ky45Mzc1OjcuNTYyNSoodC09Mi42MjUvMi43NSkqdCsuOTg0Mzc1fTticmVhaztjYXNlXCJlbGFzdGljXCI6dD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PSEhdD90Ok1hdGgucG93KDIsLTEwKnQpKk1hdGguc2luKCh0LS4wNzUpKigyKk1hdGguUEkpLy4zKSsxfX10aGlzLncuZ2xvYmFscy5lYXNpbmc9dH19fSx7a2V5OlwiYW5pbWF0ZUxpbmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt0LmF0dHIoZSkuYW5pbWF0ZShhKS5hdHRyKGkpfX0se2tleTpcImFuaW1hdGVNYXJrZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7ZXx8KGU9MCksdC5hdHRyKHtyOmUsd2lkdGg6ZSxoZWlnaHQ6ZX0pLmFuaW1hdGUoYSxzKS5hdHRyKHtyOmksd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9KS5hZnRlckFsbCgoZnVuY3Rpb24oKXtyKCl9KSl9fSx7a2V5OlwiYW5pbWF0ZUNpcmNsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dC5hdHRyKHtyOmUucixjeDplLmN4LGN5OmUuY3l9KS5hbmltYXRlKGEscykuYXR0cih7cjppLnIsY3g6aS5jeCxjeTppLmN5fSl9fSx7a2V5OlwiYW5pbWF0ZVJlY3RcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3QuYXR0cihlKS5hbmltYXRlKGEpLmF0dHIoaSkuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCl7cmV0dXJuIHMoKX0pKX19LHtrZXk6XCJhbmltYXRlUGF0aHNHcmFkdWFsbHlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmVsLGk9dC5yZWFsSW5kZXgsYT10Lmoscz10LmZpbGwscj10LnBhdGhGcm9tLG89dC5wYXRoVG8sbj10LnNwZWVkLGw9dC5kZWxheSxoPXRoaXMudyxjPTA7aC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmVuYWJsZWQmJihjPWguY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSksaC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQmJmguZ2xvYmFscy5kYXRhQ2hhbmdlZCYmXCJiYXJcIiE9PWguY29uZmlnLmNoYXJ0LnR5cGUmJihjPTApLHRoaXMubW9ycGhTVkcoZSxpLGEsXCJsaW5lXCIhPT1oLmNvbmZpZy5jaGFydC50eXBlfHxoLmdsb2JhbHMuY29tYm9DaGFydHM/czpcInN0cm9rZVwiLHIsbyxuLGwqYyl9fSx7a2V5Olwic2hvd0RlbGF5ZWRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZWw7ZS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKSxlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGRlbi1lbGVtZW50LXNob3duXCIpfSkpfX0se2tleTpcImFuaW1hdGlvbkNvbXBsZXRlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztlLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWR8fChlLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITAsdGhpcy5zaG93RGVsYXllZEVsZW1lbnRzKCksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLmFuaW1hdGlvbkVuZCYmZS5jb25maWcuY2hhcnQuZXZlbnRzLmFuaW1hdGlvbkVuZCh0aGlzLmN0eCx7ZWw6dCx3OmV9KSl9fSx7a2V5OlwibW9ycGhTVkdcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvLG4pe3ZhciBsPXRoaXMsaD10aGlzLnc7c3x8KHM9dC5hdHRyKFwicGF0aEZyb21cIikpLHJ8fChyPXQuYXR0cihcInBhdGhUb1wiKSk7dmFyIGM9ZnVuY3Rpb24odCl7cmV0dXJuXCJyYWRhclwiPT09aC5jb25maWcuY2hhcnQudHlwZSYmKG89MSksXCJNIDAgXCIuY29uY2F0KGguZ2xvYmFscy5ncmlkSGVpZ2h0KX07KCFzfHxzLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fHMuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihzPWMoKSksKCFyfHxyLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fHIuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihyPWMoKSksaC5nbG9iYWxzLnNob3VsZEFuaW1hdGV8fChvPTEpLHQucGxvdChzKS5hbmltYXRlKDEsaC5nbG9iYWxzLmVhc2luZyxuKS5wbG90KHMpLmFuaW1hdGUobyxoLmdsb2JhbHMuZWFzaW5nLG4pLnBsb3QocikuYWZ0ZXJBbGwoKGZ1bmN0aW9uKCl7eC5pc051bWJlcihpKT9pPT09aC5nbG9iYWxzLnNlcmllc1toLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoLTImJmguZ2xvYmFscy5zaG91bGRBbmltYXRlJiZsLmFuaW1hdGlvbkNvbXBsZXRlZCh0KTpcIm5vbmVcIiE9PWEmJmguZ2xvYmFscy5zaG91bGRBbmltYXRlJiYoIWguZ2xvYmFscy5jb21ib0NoYXJ0cyYmZT09PWguZ2xvYmFscy5zZXJpZXMubGVuZ3RoLTF8fGguZ2xvYmFscy5jb21ib0NoYXJ0cykmJmwuYW5pbWF0aW9uQ29tcGxldGVkKHQpLGwuc2hvd0RlbGF5ZWRFbGVtZW50cygpfSkpfX1dKSx0fSgpLHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImdldERlZmF1bHRGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudzt0LnVuZmlsdGVyKCEwKSwobmV3IHdpbmRvdy5TVkcuRmlsdGVyKS5zaXplKFwiMTIwJVwiLFwiMTgwJVwiLFwiLTUlXCIsXCItNDAlXCIpLFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXI/dGhpcy5hcHBseUZpbHRlcih0LGUsaS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudHlwZSxpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci52YWx1ZSk6aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiZ0aGlzLmRyb3BTaGFkb3codCxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LGUpfX0se2tleTpcImFkZE5vcm1hbEZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2kuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmIXQubm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSYmdGhpcy5kcm9wU2hhZG93KHQsaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdyxlKX19LHtrZXk6XCJhZGRMaWdodGVuRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1pLmludGVuc2l0eTt0LnVuZmlsdGVyKCEwKTtuZXcgd2luZG93LlNWRy5GaWx0ZXI7dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBpPXMuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7KGkuZW5hYmxlZD9hLmFkZFNoYWRvdyh0LGUsaSk6dCkuY29tcG9uZW50VHJhbnNmZXIoe3JnYjp7dHlwZTpcImxpbmVhclwiLHNsb3BlOjEuNSxpbnRlcmNlcHQ6cn19KX0pKSx0LmZpbHRlcmVyLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsdGVyVW5pdHNcIixcInVzZXJTcGFjZU9uVXNlXCIpLHRoaXMuX3NjYWxlRmlsdGVyU2l6ZSh0LmZpbHRlcmVyLm5vZGUpfX0se2tleTpcImFkZERhcmtlbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLHM9dGhpcy53LHI9aS5pbnRlbnNpdHk7dC51bmZpbHRlcighMCk7bmV3IHdpbmRvdy5TVkcuRmlsdGVyO3QuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgaT1zLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93OyhpLmVuYWJsZWQ/YS5hZGRTaGFkb3codCxlLGkpOnQpLmNvbXBvbmVudFRyYW5zZmVyKHtyZ2I6e3R5cGU6XCJsaW5lYXJcIixzbG9wZTpyfX0pfSkpLHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSl9fSx7a2V5OlwiYXBwbHlGaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOi41O3N3aXRjaChpKXtjYXNlXCJub25lXCI6dGhpcy5hZGROb3JtYWxGaWx0ZXIodCxlKTticmVhaztjYXNlXCJsaWdodGVuXCI6dGhpcy5hZGRMaWdodGVuRmlsdGVyKHQsZSx7aW50ZW5zaXR5OmF9KTticmVhaztjYXNlXCJkYXJrZW5cIjp0aGlzLmFkZERhcmtlbkZpbHRlcih0LGUse2ludGVuc2l0eTphfSl9fX0se2tleTpcImFkZFNoYWRvd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1pLmJsdXIscz1pLnRvcCxyPWkubGVmdCxvPWkuY29sb3Isbj1pLm9wYWNpdHksbD10LmZsb29kKEFycmF5LmlzQXJyYXkobyk/b1tlXTpvLG4pLmNvbXBvc2l0ZSh0LnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHIscykuZ2F1c3NpYW5CbHVyKGEpLm1lcmdlKHQuc291cmNlKTtyZXR1cm4gdC5ibGVuZCh0LnNvdXJjZSxsKX19LHtrZXk6XCJkcm9wU2hhZG93XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxhPWUudG9wLHM9ZS5sZWZ0LHI9ZS5ibHVyLG89ZS5jb2xvcixuPWUub3BhY2l0eSxsPWUubm9Vc2VyU3BhY2VPblVzZSxoPXRoaXMudztyZXR1cm4gdC51bmZpbHRlcighMCkseC5pc0lFKCkmJlwicmFkaWFsQmFyXCI9PT1oLmNvbmZpZy5jaGFydC50eXBlfHwobz1BcnJheS5pc0FycmF5KG8pP29baV06byx0LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGU9bnVsbDtlPXguaXNTYWZhcmkoKXx8eC5pc0ZpcmVmb3goKXx8eC5pc0lFKCk/dC5mbG9vZChvLG4pLmNvbXBvc2l0ZSh0LnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHMsYSkuZ2F1c3NpYW5CbHVyKHIpOnQuZmxvb2QobyxuKS5jb21wb3NpdGUodC5zb3VyY2VBbHBoYSxcImluXCIpLm9mZnNldChzLGEpLmdhdXNzaWFuQmx1cihyKS5tZXJnZSh0LnNvdXJjZSksdC5ibGVuZCh0LnNvdXJjZSxlKX0pKSxsfHx0LmZpbHRlcmVyLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsdGVyVW5pdHNcIixcInVzZXJTcGFjZU9uVXNlXCIpLHRoaXMuX3NjYWxlRmlsdGVyU2l6ZSh0LmZpbHRlcmVyLm5vZGUpKSx0fX0se2tleTpcInNldFNlbGVjdGlvbkZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnc7aWYodm9pZCAwIT09YS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tlXSYmYS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tlXS5pbmRleE9mKGkpPi0xKXt0Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIiwhMCk7dmFyIHM9YS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXI7XCJub25lXCIhPT1zJiZ0aGlzLmFwcGx5RmlsdGVyKHQsZSxzLnR5cGUscy52YWx1ZSl9fX0se2tleTpcIl9zY2FsZUZpbHRlclNpemVcIix2YWx1ZTpmdW5jdGlvbih0KXshZnVuY3Rpb24oZSl7Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmdC5zZXRBdHRyaWJ1dGUoaSxlW2ldKX0oe3dpZHRoOlwiMjAwJVwiLGhlaWdodDpcIjIwMCVcIix4OlwiLTUwJVwiLHk6XCItNTAlXCJ9KX19XSksdH0oKSxtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJyb3VuZFBhdGhDb3JuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQsZSxpKXt2YXIgcz1lLngtdC54LHI9ZS55LXQueSxvPU1hdGguc3FydChzKnMrcipyKTtyZXR1cm4gYSh0LGUsTWF0aC5taW4oMSxpL28pKX1mdW5jdGlvbiBhKHQsZSxpKXtyZXR1cm57eDp0LngrKGUueC10LngpKmkseTp0LnkrKGUueS10LnkpKml9fWZ1bmN0aW9uIHModCxlKXt0Lmxlbmd0aD4yJiYodFt0Lmxlbmd0aC0yXT1lLngsdFt0Lmxlbmd0aC0xXT1lLnkpfWZ1bmN0aW9uIHIodCl7cmV0dXJue3g6cGFyc2VGbG9hdCh0W3QubGVuZ3RoLTJdKSx5OnBhcnNlRmxvYXQodFt0Lmxlbmd0aC0xXSl9fXQuaW5kZXhPZihcIk5hTlwiKT4tMSYmKHQ9XCJcIik7dmFyIG89dC5zcGxpdCgvWyxcXHNdLykucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBpPWUubWF0Y2goXCIoW2EtekEtWl0pKC4rKVwiKTtyZXR1cm4gaT8odC5wdXNoKGlbMV0pLHQucHVzaChpWzJdKSk6dC5wdXNoKGUpLHR9KSxbXSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBwYXJzZUZsb2F0KGUpPT1lJiZ0Lmxlbmd0aD90W3QubGVuZ3RoLTFdLnB1c2goZSk6dC5wdXNoKFtlXSksdH0pLFtdKSxuPVtdO2lmKG8ubGVuZ3RoPjEpe3ZhciBsPXIob1swXSksaD1udWxsO1wiWlwiPT1vW28ubGVuZ3RoLTFdWzBdJiZvWzBdLmxlbmd0aD4yJiYoaD1bXCJMXCIsbC54LGwueV0sb1tvLmxlbmd0aC0xXT1oKSxuLnB1c2gob1swXSk7Zm9yKHZhciBjPTE7YzxvLmxlbmd0aDtjKyspe3ZhciBkPW5bbi5sZW5ndGgtMV0sZz1vW2NdLHU9Zz09aD9vWzFdOm9bYysxXTtpZih1JiZkJiZkLmxlbmd0aD4yJiZcIkxcIj09Z1swXSYmdS5sZW5ndGg+MiYmXCJMXCI9PXVbMF0pe3ZhciBwLGYseD1yKGQpLGI9cihnKSx2PXIodSk7cD1pKGIseCxlKSxmPWkoYix2LGUpLHMoZyxwKSxnLm9yaWdQb2ludD1iLG4ucHVzaChnKTt2YXIgbT1hKHAsYiwuNSkseT1hKGIsZiwuNSksdz1bXCJDXCIsbS54LG0ueSx5LngseS55LGYueCxmLnldO3cub3JpZ1BvaW50PWIsbi5wdXNoKHcpfWVsc2Ugbi5wdXNoKGcpfWlmKGgpe3ZhciBrPXIobltuLmxlbmd0aC0xXSk7bi5wdXNoKFtcIlpcIl0pLHMoblswXSxrKX19ZWxzZSBuPW87cmV0dXJuIG4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2Uuam9pbihcIiBcIikrXCIgXCJ9KSxcIlwiKX19LHtrZXk6XCJkcmF3TGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTpcIiNhOGE4YThcIixyPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTowLG89YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOm51bGwsbj1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XT9hcmd1bWVudHNbN106XCJidXR0XCI7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5saW5lKCkuYXR0cih7eDE6dCx5MTplLHgyOmkseTI6YSxzdHJva2U6cyxcInN0cm9rZS1kYXNoYXJyYXlcIjpyLFwic3Ryb2tlLXdpZHRoXCI6byxcInN0cm9rZS1saW5lY2FwXCI6bn0pfX0se2tleTpcImRyYXdSZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjAsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MCxzPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowLHI9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOlwiI2ZlZmVmZVwiLG89YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOjEsbj1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XT9hcmd1bWVudHNbN106bnVsbCxsPWFyZ3VtZW50cy5sZW5ndGg+OCYmdm9pZCAwIT09YXJndW1lbnRzWzhdP2FyZ3VtZW50c1s4XTpudWxsLGg9YXJndW1lbnRzLmxlbmd0aD45JiZ2b2lkIDAhPT1hcmd1bWVudHNbOV0/YXJndW1lbnRzWzldOjAsYz10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIucmVjdCgpO3JldHVybiBjLmF0dHIoe3g6dCx5OmUsd2lkdGg6aT4wP2k6MCxoZWlnaHQ6YT4wP2E6MCxyeDpzLHJ5OnMsb3BhY2l0eTpvLFwic3Ryb2tlLXdpZHRoXCI6bnVsbCE9PW4/bjowLHN0cm9rZTpudWxsIT09bD9sOlwibm9uZVwiLFwic3Ryb2tlLWRhc2hhcnJheVwiOmh9KSxjLm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbFwiLHIpLGN9fSx7a2V5OlwiZHJhd1BvbHlnb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06XCIjZTFlMWUxXCIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MSxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpcIm5vbmVcIjtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnBvbHlnb24odCkuYXR0cih7ZmlsbDphLHN0cm9rZTplLFwic3Ryb2tlLXdpZHRoXCI6aX0pfX0se2tleTpcImRyYXdDaXJjbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDt0PDAmJih0PTApO3ZhciBpPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5jaXJjbGUoMip0KTtyZXR1cm4gbnVsbCE9PWUmJmkuYXR0cihlKSxpfX0se2tleTpcImRyYXdQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5kLGk9dm9pZCAwPT09ZT9cIlwiOmUsYT10LnN0cm9rZSxzPXZvaWQgMD09PWE/XCIjYThhOGE4XCI6YSxyPXQuc3Ryb2tlV2lkdGgsbz12b2lkIDA9PT1yPzE6cixuPXQuZmlsbCxsPXQuZmlsbE9wYWNpdHksaD12b2lkIDA9PT1sPzE6bCxjPXQuc3Ryb2tlT3BhY2l0eSxkPXZvaWQgMD09PWM/MTpjLGc9dC5jbGFzc2VzLHU9dC5zdHJva2VMaW5lY2FwLHA9dm9pZCAwPT09dT9udWxsOnUsZj10LnN0cm9rZURhc2hBcnJheSx4PXZvaWQgMD09PWY/MDpmLGI9dGhpcy53O3JldHVybiBudWxsPT09cCYmKHA9Yi5jb25maWcuc3Ryb2tlLmxpbmVDYXApLChpLmluZGV4T2YoXCJ1bmRlZmluZWRcIik+LTF8fGkuaW5kZXhPZihcIk5hTlwiKT4tMSkmJihpPVwiTSAwIFwiLmNvbmNhdChiLmdsb2JhbHMuZ3JpZEhlaWdodCkpLGIuZ2xvYmFscy5kb20uUGFwZXIucGF0aChpKS5hdHRyKHtmaWxsOm4sXCJmaWxsLW9wYWNpdHlcIjpoLHN0cm9rZTpzLFwic3Ryb2tlLW9wYWNpdHlcIjpkLFwic3Ryb2tlLWxpbmVjYXBcIjpwLFwic3Ryb2tlLXdpZHRoXCI6byxcInN0cm9rZS1kYXNoYXJyYXlcIjp4LGNsYXNzOmd9KX19LHtrZXk6XCJncm91cFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIuZ3JvdXAoKTtyZXR1cm4gbnVsbCE9PXQmJmUuYXR0cih0KSxlfX0se2tleTpcIm1vdmVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPVtcIk1cIix0LGVdLmpvaW4oXCIgXCIpO3JldHVybiBpfX0se2tleTpcImxpbmVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGE9bnVsbDtyZXR1cm4gbnVsbD09PWk/YT1bXCIgTFwiLHQsZV0uam9pbihcIiBcIik6XCJIXCI9PT1pP2E9W1wiIEhcIix0XS5qb2luKFwiIFwiKTpcIlZcIj09PWkmJihhPVtcIiBWXCIsZV0uam9pbihcIiBcIikpLGF9fSx7a2V5OlwiY3VydmVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG89W1wiQ1wiLHQsZSxpLGEscyxyXS5qb2luKFwiIFwiKTtyZXR1cm4gb319LHtrZXk6XCJxdWFkcmF0aWNDdXJ2ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybltcIlFcIix0LGUsaSxhXS5qb2luKFwiIFwiKX19LHtrZXk6XCJhcmNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj1cIkFcIjthcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XSYmYXJndW1lbnRzWzddJiYobj1cImFcIik7dmFyIGw9W24sdCxlLGksYSxzLHIsb10uam9pbihcIiBcIik7cmV0dXJuIGx9fSx7a2V5OlwicmVuZGVyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaSxhPXQuaixzPXQucmVhbEluZGV4LHI9dC5wYXRoRnJvbSxvPXQucGF0aFRvLG49dC5zdHJva2UsbD10LnN0cm9rZVdpZHRoLGg9dC5zdHJva2VMaW5lY2FwLGM9dC5maWxsLGQ9dC5hbmltYXRpb25EZWxheSxnPXQuaW5pdGlhbFNwZWVkLHU9dC5kYXRhQ2hhbmdlU3BlZWQscD10LmNsYXNzTmFtZSxmPXQuc2hvdWxkQ2xpcFRvR3JpZCx4PXZvaWQgMD09PWZ8fGYsbT10LmJpbmRFdmVudHNPblBhdGhzLHk9dm9pZCAwPT09bXx8bSx3PXQuZHJhd1NoYWRvdyxrPXZvaWQgMD09PXd8fHcsQT10aGlzLncsUz1uZXcgdih0aGlzLmN0eCksQz1uZXcgYih0aGlzLmN0eCksTD10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCxQPUwmJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsST0hIShMJiYhQS5nbG9iYWxzLnJlc2l6ZWR8fFAmJkEuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmQS5nbG9iYWxzLnNob3VsZEFuaW1hdGUpO0k/aT1yOihpPW8sQS5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwKTt2YXIgTT1BLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5LFQ9MDtUPUFycmF5LmlzQXJyYXkoTSk/TVtzXTpBLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5O3ZhciB6PXRoaXMuZHJhd1BhdGgoe2Q6aSxzdHJva2U6bixzdHJva2VXaWR0aDpsLGZpbGw6YyxmaWxsT3BhY2l0eToxLGNsYXNzZXM6cCxzdHJva2VMaW5lY2FwOmgsc3Ryb2tlRGFzaEFycmF5OlR9KTtpZih6LmF0dHIoXCJpbmRleFwiLHMpLHgmJnouYXR0cih7XCJjbGlwLXBhdGhcIjpcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KEEuZ2xvYmFscy5jdWlkLFwiKVwiKX0pLFwibm9uZVwiIT09QS5jb25maWcuc3RhdGVzLm5vcm1hbC5maWx0ZXIudHlwZSlTLmdldERlZmF1bHRGaWx0ZXIoeixzKTtlbHNlIGlmKEEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCYmayYmKCFBLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllc3x8QS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkT25TZXJpZXMmJi0xIT09QS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihzKSkpe3ZhciBYPUEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7Uy5kcm9wU2hhZG93KHosWCxzKX15JiYoei5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsdGhpcy5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMseikpLHoubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHRoaXMucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLHopKSx6Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLHRoaXMucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMseikpKSx6LmF0dHIoe3BhdGhUbzpvLHBhdGhGcm9tOnJ9KTt2YXIgRT17ZWw6eixqOmEscmVhbEluZGV4OnMscGF0aEZyb206cixwYXRoVG86byxmaWxsOmMsc3Ryb2tlV2lkdGg6bCxkZWxheTpkfTtyZXR1cm4hTHx8QS5nbG9iYWxzLnJlc2l6ZWR8fEEuZ2xvYmFscy5kYXRhQ2hhbmdlZD8hQS5nbG9iYWxzLnJlc2l6ZWQmJkEuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8Qy5zaG93RGVsYXllZEVsZW1lbnRzKCk6Qy5hbmltYXRlUGF0aHNHcmFkdWFsbHkoZShlKHt9LEUpLHt9LHtzcGVlZDpnfSkpLEEuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmUCYmSSYmQy5hbmltYXRlUGF0aHNHcmFkdWFsbHkoZShlKHt9LEUpLHt9LHtzcGVlZDp1fSkpLHp9fSx7a2V5OlwiZHJhd1BhdHRlcm5cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOlwiI2E4YThhOFwiLHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjA7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5wYXR0ZXJuKGUsaSwoZnVuY3Rpb24ocil7XCJob3Jpem9udGFsTGluZXNcIj09PXQ/ci5saW5lKDAsMCxpLDApLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzKzF9KTpcInZlcnRpY2FsTGluZXNcIj09PXQ/ci5saW5lKDAsMCwwLGUpLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzKzF9KTpcInNsYW50ZWRMaW5lc1wiPT09dD9yLmxpbmUoMCwwLGUsaSkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnN9KTpcInNxdWFyZXNcIj09PXQ/ci5yZWN0KGUsaSkuZmlsbChcIm5vbmVcIikuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnN9KTpcImNpcmNsZXNcIj09PXQmJnIuY2lyY2xlKGUpLmZpbGwoXCJub25lXCIpLnN0cm9rZSh7Y29sb3I6YSx3aWR0aDpzfSl9KSl9fSx7a2V5OlwiZHJhd0dyYWRpZW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt2YXIgcixvPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTpudWxsLG49YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOm51bGwsbD1hcmd1bWVudHMubGVuZ3RoPjcmJnZvaWQgMCE9PWFyZ3VtZW50c1s3XT9hcmd1bWVudHNbN106bnVsbCxoPWFyZ3VtZW50cy5sZW5ndGg+OCYmdm9pZCAwIT09YXJndW1lbnRzWzhdP2FyZ3VtZW50c1s4XTowLGM9dGhpcy53O2UubGVuZ3RoPDkmJjA9PT1lLmluZGV4T2YoXCIjXCIpJiYoZT14LmhleFRvUmdiYShlLGEpKSxpLmxlbmd0aDw5JiYwPT09aS5pbmRleE9mKFwiI1wiKSYmKGk9eC5oZXhUb1JnYmEoaSxzKSk7dmFyIGQ9MCxnPTEsdT0xLHA9bnVsbDtudWxsIT09biYmKGQ9dm9pZCAwIT09blswXT9uWzBdLzEwMDowLGc9dm9pZCAwIT09blsxXT9uWzFdLzEwMDoxLHU9dm9pZCAwIT09blsyXT9uWzJdLzEwMDoxLHA9dm9pZCAwIT09blszXT9uWzNdLzEwMDpudWxsKTt2YXIgZj0hKFwiZG9udXRcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUmJlwicGllXCIhPT1jLmNvbmZpZy5jaGFydC50eXBlJiZcInBvbGFyQXJlYVwiIT09Yy5jb25maWcuY2hhcnQudHlwZSYmXCJidWJibGVcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUpO2lmKHI9bnVsbD09PWx8fDA9PT1sLmxlbmd0aD9jLmdsb2JhbHMuZG9tLlBhcGVyLmdyYWRpZW50KGY/XCJyYWRpYWxcIjpcImxpbmVhclwiLChmdW5jdGlvbih0KXt0LmF0KGQsZSxhKSx0LmF0KGcsaSxzKSx0LmF0KHUsaSxzKSxudWxsIT09cCYmdC5hdChwLGUsYSl9KSk6Yy5nbG9iYWxzLmRvbS5QYXBlci5ncmFkaWVudChmP1wicmFkaWFsXCI6XCJsaW5lYXJcIiwoZnVuY3Rpb24odCl7KEFycmF5LmlzQXJyYXkobFtoXSk/bFtoXTpsKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmF0KGUub2Zmc2V0LzEwMCxlLmNvbG9yLGUub3BhY2l0eSl9KSl9KSksZil7dmFyIGI9Yy5nbG9iYWxzLmdyaWRXaWR0aC8yLHY9Yy5nbG9iYWxzLmdyaWRIZWlnaHQvMjtcImJ1YmJsZVwiIT09Yy5jb25maWcuY2hhcnQudHlwZT9yLmF0dHIoe2dyYWRpZW50VW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLGN4OmIsY3k6dixyOm99KTpyLmF0dHIoe2N4Oi41LGN5Oi41LHI6LjgsZng6LjIsZnk6LjJ9KX1lbHNlXCJ2ZXJ0aWNhbFwiPT09dD9yLmZyb20oMCwwKS50bygwLDEpOlwiZGlhZ29uYWxcIj09PXQ/ci5mcm9tKDAsMCkudG8oMSwxKTpcImhvcml6b250YWxcIj09PXQ/ci5mcm9tKDAsMSkudG8oMSwxKTpcImRpYWdvbmFsMlwiPT09dCYmci5mcm9tKDEsMCkudG8oMCwxKTtyZXR1cm4gcn19LHtrZXk6XCJnZXRUZXh0QmFzZWRPbk1heFdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50ZXh0LGk9dC5tYXhXaWR0aCxhPXQuZm9udFNpemUscz10LmZvbnRGYW1pbHkscj10aGlzLmdldFRleHRSZWN0cyhlLGEscyksbz1yLndpZHRoL2UubGVuZ3RoLG49TWF0aC5mbG9vcihpL28pO3JldHVybiBpPHIud2lkdGg/ZS5zbGljZSgwLG4tMykrXCIuLi5cIjplfX0se2tleTpcImRyYXdUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcyxhPXQueCxzPXQueSxyPXQudGV4dCxvPXQudGV4dEFuY2hvcixuPXQuZm9udFNpemUsbD10LmZvbnRGYW1pbHksaD10LmZvbnRXZWlnaHQsYz10LmZvcmVDb2xvcixkPXQub3BhY2l0eSxnPXQubWF4V2lkdGgsdT10LmNzc0NsYXNzLHA9dm9pZCAwPT09dT9cIlwiOnUsZj10LmlzUGxhaW5UZXh0LHg9dm9pZCAwPT09Znx8ZixiPXRoaXMudzt2b2lkIDA9PT1yJiYocj1cIlwiKTt2YXIgdj1yO298fChvPVwic3RhcnRcIiksYyYmYy5sZW5ndGh8fChjPWIuY29uZmlnLmNoYXJ0LmZvcmVDb2xvciksbD1sfHxiLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGg9aHx8XCJyZWd1bGFyXCI7dmFyIG0seT17bWF4V2lkdGg6Zyxmb250U2l6ZTpuPW58fFwiMTFweFwiLGZvbnRGYW1pbHk6bH07cmV0dXJuIEFycmF5LmlzQXJyYXkocik/bT1iLmdsb2JhbHMuZG9tLlBhcGVyLnRleHQoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgYT0wO2E8ci5sZW5ndGg7YSsrKXY9clthXSxnJiYodj1pLmdldFRleHRCYXNlZE9uTWF4V2lkdGgoZSh7dGV4dDpyW2FdfSx5KSkpLDA9PT1hP3QudHNwYW4odik6dC50c3Bhbih2KS5uZXdMaW5lKCl9KSk6KGcmJih2PXRoaXMuZ2V0VGV4dEJhc2VkT25NYXhXaWR0aChlKHt0ZXh0OnJ9LHkpKSksbT14P2IuZ2xvYmFscy5kb20uUGFwZXIucGxhaW4ocik6Yi5nbG9iYWxzLmRvbS5QYXBlci50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gdC50c3Bhbih2KX0pKSksbS5hdHRyKHt4OmEseTpzLFwidGV4dC1hbmNob3JcIjpvLFwiZG9taW5hbnQtYmFzZWxpbmVcIjpcImF1dG9cIixcImZvbnQtc2l6ZVwiOm4sXCJmb250LWZhbWlseVwiOmwsXCJmb250LXdlaWdodFwiOmgsZmlsbDpjLGNsYXNzOlwiYXBleGNoYXJ0cy10ZXh0IFwiK3B9KSxtLm5vZGUuc3R5bGUuZm9udEZhbWlseT1sLG0ubm9kZS5zdHlsZS5vcGFjaXR5PWQsbX19LHtrZXk6XCJkcmF3TWFya2VyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3Q9dHx8MDt2YXIgYT1pLnBTaXplfHwwLHM9bnVsbDtpZihcInNxdWFyZVwiPT09aS5zaGFwZXx8XCJyZWN0XCI9PT1pLnNoYXBlKXt2YXIgcj12b2lkIDA9PT1pLnBSYWRpdXM/YS8yOmkucFJhZGl1cztudWxsIT09ZSYmYXx8KGE9MCxyPTApO3ZhciBvPTEuMiphK3Isbj10aGlzLmRyYXdSZWN0KG8sbyxvLG8scik7bi5hdHRyKHt4OnQtby8yLHk6ZS1vLzIsY3g6dCxjeTplLGNsYXNzOmkuY2xhc3M/aS5jbGFzczpcIlwiLGZpbGw6aS5wb2ludEZpbGxDb2xvcixcImZpbGwtb3BhY2l0eVwiOmkucG9pbnRGaWxsT3BhY2l0eT9pLnBvaW50RmlsbE9wYWNpdHk6MSxzdHJva2U6aS5wb2ludFN0cm9rZUNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6aS5wb2ludFN0cm9rZVdpZHRoP2kucG9pbnRTdHJva2VXaWR0aDowLFwic3Ryb2tlLW9wYWNpdHlcIjppLnBvaW50U3Ryb2tlT3BhY2l0eT9pLnBvaW50U3Ryb2tlT3BhY2l0eToxfSkscz1ufWVsc2VcImNpcmNsZVwiIT09aS5zaGFwZSYmaS5zaGFwZXx8KHguaXNOdW1iZXIoZSl8fChhPTAsZT0wKSxzPXRoaXMuZHJhd0NpcmNsZShhLHtjeDp0LGN5OmUsY2xhc3M6aS5jbGFzcz9pLmNsYXNzOlwiXCIsc3Ryb2tlOmkucG9pbnRTdHJva2VDb2xvcixmaWxsOmkucG9pbnRGaWxsQ29sb3IsXCJmaWxsLW9wYWNpdHlcIjppLnBvaW50RmlsbE9wYWNpdHk/aS5wb2ludEZpbGxPcGFjaXR5OjEsXCJzdHJva2Utd2lkdGhcIjppLnBvaW50U3Ryb2tlV2lkdGg/aS5wb2ludFN0cm9rZVdpZHRoOjAsXCJzdHJva2Utb3BhY2l0eVwiOmkucG9pbnRTdHJva2VPcGFjaXR5P2kucG9pbnRTdHJva2VPcGFjaXR5OjF9KSk7cmV0dXJuIHN9fSx7a2V5OlwicGF0aE1vdXNlRW50ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyB2KHRoaXMuY3R4KSxzPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCkscj1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlRW50ZXImJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUVudGVyKGUsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiZGF0YVBvaW50TW91c2VFbnRlclwiLFtlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pLChcIm5vbmVcIj09PWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyLnR5cGV8fFwidHJ1ZVwiIT09dC5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpKSYmXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyLnR5cGUmJiFpLmdsb2JhbHMuaXNUb3VjaERldmljZSl7dmFyIG89aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKHQscyxvLnR5cGUsby52YWx1ZSl9fX0se2tleTpcInBhdGhNb3VzZUxlYXZlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgdih0aGlzLmN0eCkscz1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApLHI9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImpcIiksMTApO1wiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUxlYXZlJiZpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VMZWF2ZShlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfSksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImRhdGFQb2ludE1vdXNlTGVhdmVcIixbZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX1dKSxcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyLnR5cGUmJlwidHJ1ZVwiPT09dC5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpfHxcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZSYmYS5nZXREZWZhdWx0RmlsdGVyKHQscyl9fSx7a2V5OlwicGF0aE1vdXNlRG93blwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IHYodGhpcy5jdHgpLHM9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKSxyPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKSxvPVwiZmFsc2VcIjtpZihcInRydWVcIj09PXQubm9kZS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKSl7aWYodC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJmYWxzZVwiKSxpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLmluZGV4T2Yocik+LTEpe3ZhciBuPWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10uaW5kZXhPZihyKTtpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLnNwbGljZShuLDEpfX1lbHNle2lmKCFpLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmFsbG93TXVsdGlwbGVEYXRhUG9pbnRzU2VsZWN0aW9uJiZpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aD4wKXtpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzPVtdO3ZhciBsPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtc2VyaWVzIHBhdGhcIikubWVtYmVycyxoPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtc2VyaWVzIGNpcmNsZSwgLmFwZXhjaGFydHMtc2VyaWVzIHJlY3RcIikubWVtYmVycyxjPWZ1bmN0aW9uKHQpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodCwoZnVuY3Rpb24odCl7dC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJmYWxzZVwiKSxhLmdldERlZmF1bHRGaWx0ZXIodCxzKX0pKX07YyhsKSxjKGgpfXQubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLFwidHJ1ZVwiKSxvPVwidHJ1ZVwiLHZvaWQgMD09PWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10mJihpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdPVtdKSxpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW3NdLnB1c2gocil9aWYoXCJ0cnVlXCI9PT1vKXt2YXIgZD1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlcjtpZihcIm5vbmVcIiE9PWQpYS5hcHBseUZpbHRlcih0LHMsZC50eXBlLGQudmFsdWUpO2Vsc2UgaWYoXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyJiYhaS5nbG9iYWxzLmlzVG91Y2hEZXZpY2Upe3ZhciBnPWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXI7YS5hcHBseUZpbHRlcih0LHMsZy50eXBlLGcudmFsdWUpfX1lbHNlIGlmKFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSlpZihcIm5vbmVcIj09PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZXx8aS5nbG9iYWxzLmlzVG91Y2hEZXZpY2UpYS5nZXREZWZhdWx0RmlsdGVyKHQscyk7ZWxzZXtnPWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXI7YS5hcHBseUZpbHRlcih0LHMsZy50eXBlLGcudmFsdWUpfVwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRTZWxlY3Rpb24mJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRTZWxlY3Rpb24oZSx0aGlzLmN0eCx7c2VsZWN0ZWREYXRhUG9pbnRzOmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX0pLGUmJnRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJkYXRhUG9pbnRTZWxlY3Rpb25cIixbZSx0aGlzLmN0eCx7c2VsZWN0ZWREYXRhUG9pbnRzOmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX1dKX19LHtrZXk6XCJyb3RhdGVBcm91bmRDZW50ZXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT17fTtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXRCQm94JiYoZT10LmdldEJCb3goKSkse3g6ZS54K2Uud2lkdGgvMix5OmUueStlLmhlaWdodC8yfX19LHtrZXk6XCJnZXRUZXh0UmVjdHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz0hKGFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdKXx8YXJndW1lbnRzWzRdLHI9dGhpcy53LG89dGhpcy5kcmF3VGV4dCh7eDotMjAwLHk6LTIwMCx0ZXh0OnQsdGV4dEFuY2hvcjpcInN0YXJ0XCIsZm9udFNpemU6ZSxmb250RmFtaWx5OmksZm9yZUNvbG9yOlwiI2ZmZlwiLG9wYWNpdHk6MH0pO2EmJm8uYXR0cihcInRyYW5zZm9ybVwiLGEpLHIuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG8pO3ZhciBuPW8uYmJveCgpO3JldHVybiBzfHwobj1vLm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLG8ucmVtb3ZlKCkse3dpZHRoOm4ud2lkdGgsaGVpZ2h0Om4uaGVpZ2h0fX19LHtrZXk6XCJwbGFjZVRleHRXaXRoRWxsaXBzaXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXRDb21wdXRlZFRleHRMZW5ndGgmJih0LnRleHRDb250ZW50PWUsZS5sZW5ndGg+MCYmdC5nZXRDb21wdXRlZFRleHRMZW5ndGgoKT49aS8xLjEpKXtmb3IodmFyIGE9ZS5sZW5ndGgtMzthPjA7YS09MylpZih0LmdldFN1YlN0cmluZ0xlbmd0aCgwLGEpPD1pLzEuMSlyZXR1cm4gdm9pZCh0LnRleHRDb250ZW50PWUuc3Vic3RyaW5nKDAsYSkrXCIuLi5cIik7dC50ZXh0Q29udGVudD1cIi5cIn19fV0sW3trZXk6XCJzZXRBdHRyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmdC5zZXRBdHRyaWJ1dGUoaSxlW2ldKX19XSksdH0oKSx5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJnZXRTdGFja2VkU2VyaWVzVG90YWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W10sZT10aGlzLncsaT1bXTtpZigwPT09ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpcmV0dXJuIGk7Zm9yKHZhciBhPTA7YTxlLmdsb2JhbHMuc2VyaWVzW2UuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7YSsrKXtmb3IodmFyIHM9MCxyPTA7cjxlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtyKyspdm9pZCAwIT09ZS5nbG9iYWxzLnNlcmllc1tyXVthXSYmLTE9PT10LmluZGV4T2YocikmJihzKz1lLmdsb2JhbHMuc2VyaWVzW3JdW2FdKTtpLnB1c2gocyl9cmV0dXJuIGl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxCeUluZGV4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtyZXR1cm4gbnVsbD09PXQ/dGhpcy53LmNvbmZpZy5zZXJpZXMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKTp0aGlzLncuZ2xvYmFscy5zZXJpZXNbdF0ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKX19LHtrZXk6XCJpc1Nlcmllc051bGxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiAwPT09KG51bGw9PT10P3RoaXMudy5jb25maWcuc2VyaWVzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10fSkpOnRoaXMudy5jb25maWcuc2VyaWVzW3RdLmRhdGEuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSkpLmxlbmd0aH19LHtrZXk6XCJzZXJpZXNIYXZlU2FtZVZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLncuZ2xvYmFscy5zZXJpZXNbdF0uZXZlcnkoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD09PWlbMF19KSl9fSx7a2V5OlwiZ2V0Q2F0ZWdvcnlMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LnNsaWNlKCk7cmV0dXJuIGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGk9dC5tYXAoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIodC1lLmdsb2JhbHMubWluWCsxKX0pKSksaX19LHtrZXk6XCJnZXRMYXJnZXN0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXg9dC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKS5pbmRleE9mKE1hdGgubWF4LmFwcGx5KE1hdGgsdC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0pKSkpfX0se2tleTpcImdldExhcmdlc3RNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wO3JldHVybiB0Lmdsb2JhbHMubWFya2Vycy5zaXplLmZvckVhY2goKGZ1bmN0aW9uKHQpe2U9TWF0aC5tYXgoZSx0KX0pKSx0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlJiZ0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmxlbmd0aCYmdC5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5mb3JFYWNoKChmdW5jdGlvbih0KXtlPU1hdGgubWF4KGUsdC5zaXplKX0pKSxlPjAmJihlKz10LmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQrMSksdC5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemU9ZSxlfX0se2tleTpcImdldFNlcmllc1RvdGFsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5zZXJpZXNUb3RhbHM9dC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9MDtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKWkrPXRbYV07ZWxzZSBpKz10O3JldHVybiBpfSkpfX0se2tleTpcImdldFNlcmllc1RvdGFsc1hSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybiBpLmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24oYSxzKXtmb3IodmFyIHI9MCxvPTA7bzxhLmxlbmd0aDtvKyspaS5nbG9iYWxzLnNlcmllc1hbc11bb10+dCYmaS5nbG9iYWxzLnNlcmllc1hbc11bb108ZSYmKHIrPWFbb10pO3JldHVybiByfSkpfX0se2tleTpcImdldFBlcmNlbnRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMuc2VyaWVzUGVyY2VudD10Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSxpKXt2YXIgYT1bXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcz0wO3M8ZS5sZW5ndGg7cysrKXt2YXIgcj10Lmdsb2JhbHMuc3RhY2tlZFNlcmllc1RvdGFsc1tzXSxvPTA7ciYmKG89MTAwKmVbc10vciksYS5wdXNoKG8pfWVsc2V7dmFyIG49MTAwKmUvdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApO2EucHVzaChuKX1yZXR1cm4gYX0pKX19LHtrZXk6XCJnZXRDYWxjdWxhdGVkUmF0aW9zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksYSxzPXRoaXMudy5nbG9iYWxzLHI9W10sbz0wLG49W10sbD0uMSxoPTA7aWYocy55UmFuZ2U9W10scy5pc011bHRpcGxlWUF4aXMpZm9yKHZhciBjPTA7YzxzLm1pbllBcnIubGVuZ3RoO2MrKylzLnlSYW5nZS5wdXNoKE1hdGguYWJzKHMubWluWUFycltjXS1zLm1heFlBcnJbY10pKSxuLnB1c2goMCk7ZWxzZSBzLnlSYW5nZS5wdXNoKE1hdGguYWJzKHMubWluWS1zLm1heFkpKTtzLnhSYW5nZT1NYXRoLmFicyhzLm1heFgtcy5taW5YKSxzLnpSYW5nZT1NYXRoLmFicyhzLm1heFotcy5taW5aKTtmb3IodmFyIGQ9MDtkPHMueVJhbmdlLmxlbmd0aDtkKyspci5wdXNoKHMueVJhbmdlW2RdL3MuZ3JpZEhlaWdodCk7aWYoZT1zLnhSYW5nZS9zLmdyaWRXaWR0aCxpPU1hdGguYWJzKHMuaW5pdGlhbE1heFgtcy5pbml0aWFsTWluWCkvcy5ncmlkV2lkdGgsdD1zLnlSYW5nZS9zLmdyaWRXaWR0aCxhPXMueFJhbmdlL3MuZ3JpZEhlaWdodCwobz1zLnpSYW5nZS9zLmdyaWRIZWlnaHQqMTYpfHwobz0xKSxzLm1pblkhPT1OdW1iZXIuTUlOX1ZBTFVFJiYwIT09TWF0aC5hYnMocy5taW5ZKSYmKHMuaGFzTmVncz0hMCkscy5pc011bHRpcGxlWUF4aXMpe249W107Zm9yKHZhciBnPTA7ZzxyLmxlbmd0aDtnKyspbi5wdXNoKC1zLm1pbllBcnJbZ10vcltnXSl9ZWxzZSBuLnB1c2goLXMubWluWS9yWzBdKSxzLm1pblkhPT1OdW1iZXIuTUlOX1ZBTFVFJiYwIT09TWF0aC5hYnMocy5taW5ZKSYmKGw9LXMubWluWS90LGg9cy5taW5YL2UpO3JldHVybnt5UmF0aW86cixpbnZlcnRlZFlSYXRpbzp0LHpSYXRpbzpvLHhSYXRpbzplLGluaXRpYWxYUmF0aW86aSxpbnZlcnRlZFhSYXRpbzphLGJhc2VMaW5lSW52ZXJ0ZWRZOmwsYmFzZUxpbmVZOm4sYmFzZUxpbmVYOmh9fX0se2tleTpcImdldExvZ1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLnc7cmV0dXJuIGkuZ2xvYmFscy5zZXJpZXNMb2c9dC5tYXAoKGZ1bmN0aW9uKHQsYSl7cmV0dXJuIGkuY29uZmlnLnlheGlzW2FdJiZpLmNvbmZpZy55YXhpc1thXS5sb2dhcml0aG1pYz90Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10P251bGw6ZS5nZXRMb2dWYWwoaS5jb25maWcueWF4aXNbYV0ubG9nQmFzZSx0LGEpfSkpOnR9KSksaS5nbG9iYWxzLmludmFsaWRMb2dTY2FsZT90OmkuZ2xvYmFscy5zZXJpZXNMb2d9fSx7a2V5OlwiZ2V0QmFzZUxvZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubG9nKGUpL01hdGgubG9nKHQpfX0se2tleTpcImdldExvZ1ZhbFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZigwPT09ZSlyZXR1cm4gMDt2YXIgYT10aGlzLncscz0wPT09YS5nbG9iYWxzLm1pbllBcnJbaV0/LTE6dGhpcy5nZXRCYXNlTG9nKHQsYS5nbG9iYWxzLm1pbllBcnJbaV0pLHI9KDA9PT1hLmdsb2JhbHMubWF4WUFycltpXT8wOnRoaXMuZ2V0QmFzZUxvZyh0LGEuZ2xvYmFscy5tYXhZQXJyW2ldKSktcztyZXR1cm4gZTwxP2UvcjoodGhpcy5nZXRCYXNlTG9nKHQsZSktcykvcn19LHtrZXk6XCJnZXRMb2dZUmF0aW9zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPXRoaXMudy5nbG9iYWxzO3JldHVybiBhLnlMb2dSYXRpbz10LnNsaWNlKCksYS5sb2dZUmFuZ2U9YS55UmFuZ2UubWFwKChmdW5jdGlvbih0LHMpe2lmKGkuY29uZmlnLnlheGlzW3NdJiZlLncuY29uZmlnLnlheGlzW3NdLmxvZ2FyaXRobWljKXt2YXIgcixvPS1OdW1iZXIuTUFYX1ZBTFVFLG49TnVtYmVyLk1JTl9WQUxVRTtyZXR1cm4gYS5zZXJpZXNMb2cuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kuY29uZmlnLnlheGlzW2VdJiZpLmNvbmZpZy55YXhpc1tlXS5sb2dhcml0aG1pYyYmKG89TWF0aC5tYXgodCxvKSxuPU1hdGgubWluKHQsbikpfSkpfSkpLHI9TWF0aC5wb3coYS55UmFuZ2Vbc10sTWF0aC5hYnMobi1vKS9hLnlSYW5nZVtzXSksYS55TG9nUmF0aW9bc109ci9hLmdyaWRIZWlnaHQscn19KSksYS5pbnZhbGlkTG9nU2NhbGU/dC5zbGljZSgpOmEueUxvZ1JhdGlvfX1dLFt7a2V5OlwiY2hlY2tDb21ib1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSExLGk9MCxhPTA7cmV0dXJuIHQubGVuZ3RoJiZ2b2lkIDAhPT10WzBdLnR5cGUmJnQuZm9yRWFjaCgoZnVuY3Rpb24odCl7XCJiYXJcIiE9PXQudHlwZSYmXCJjb2x1bW5cIiE9PXQudHlwZSYmXCJjYW5kbGVzdGlja1wiIT09dC50eXBlJiZcImJveFBsb3RcIiE9PXQudHlwZXx8aSsrLHZvaWQgMCE9PXQudHlwZSYmYSsrfSkpLGE+MCYmKGU9ITApLHtjb21ib0JhckNvdW50OmksY29tYm9DaGFydHM6ZX19fSx7a2V5OlwiZXh0ZW5kQXJyYXlQcm9wc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS55YXhpcyYmKGU9dC5leHRlbmRZQXhpcyhlLGkpKSxlLmFubm90YXRpb25zJiYoZS5hbm5vdGF0aW9ucy55YXhpcyYmKGU9dC5leHRlbmRZQXhpc0Fubm90YXRpb25zKGUpKSxlLmFubm90YXRpb25zLnhheGlzJiYoZT10LmV4dGVuZFhBeGlzQW5ub3RhdGlvbnMoZSkpLGUuYW5ub3RhdGlvbnMucG9pbnRzJiYoZT10LmV4dGVuZFBvaW50QW5ub3RhdGlvbnMoZSkpKSxlfX1dKSx0fSgpLHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lfXJldHVybiByKHQsW3trZXk6XCJzZXRPcmllbnRhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxpPXRoaXMudztpZihcInZlcnRpY2FsXCI9PT10LmxhYmVsLm9yaWVudGF0aW9uKXt2YXIgYT1udWxsIT09ZT9lOjAscz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiLmNvbmNhdChhLFwiJ11cIikpO2lmKG51bGwhPT1zKXt2YXIgcj1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3Muc2V0QXR0cmlidXRlKFwieFwiLHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ4XCIpKS1yLmhlaWdodCs0KSxcInRvcFwiPT09dC5sYWJlbC5wb3NpdGlvbj9zLnNldEF0dHJpYnV0ZShcInlcIixwYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieVwiKSkrci53aWR0aCk6cy5zZXRBdHRyaWJ1dGUoXCJ5XCIscGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInlcIikpLXIud2lkdGgpO3ZhciBvPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5yb3RhdGVBcm91bmRDZW50ZXIocyksbj1vLngsbD1vLnk7cy5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZSgtOTAgXCIuY29uY2F0KG4sXCIgXCIpLmNvbmNhdChsLFwiKVwiKSl9fX19LHtrZXk6XCJhZGRCYWNrZ3JvdW5kVG9Bbm5vXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoIXR8fHZvaWQgMD09PWUubGFiZWwudGV4dHx8dm9pZCAwIT09ZS5sYWJlbC50ZXh0JiYhU3RyaW5nKGUubGFiZWwudGV4dCkudHJpbSgpKXJldHVybiBudWxsO3ZhciBhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1ncmlkXCIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPWUubGFiZWwuc3R5bGUucGFkZGluZy5sZWZ0LG89ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnJpZ2h0LG49ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLnRvcCxsPWUubGFiZWwuc3R5bGUucGFkZGluZy5ib3R0b207XCJ2ZXJ0aWNhbFwiPT09ZS5sYWJlbC5vcmllbnRhdGlvbiYmKG49ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmxlZnQsbD1lLmxhYmVsLnN0eWxlLnBhZGRpbmcucmlnaHQscj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcudG9wLG89ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmJvdHRvbSk7dmFyIGg9cy5sZWZ0LWEubGVmdC1yLGM9cy50b3AtYS50b3AtbixkPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdChoLWkuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcyxjLHMud2lkdGgrcitvLHMuaGVpZ2h0K24rbCxlLmxhYmVsLmJvcmRlclJhZGl1cyxlLmxhYmVsLnN0eWxlLmJhY2tncm91bmQsMSxlLmxhYmVsLmJvcmRlcldpZHRoLGUubGFiZWwuYm9yZGVyQ29sb3IsMCk7cmV0dXJuIGUuaWQmJmQubm9kZS5jbGFzc0xpc3QuYWRkKGUuaWQpLGR9fSx7a2V5OlwiYW5ub3RhdGlvbnNCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZnVuY3Rpb24oaSxhLHMpe3ZhciByPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQocyxcIi1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy1cIikuY29uY2F0KHMsXCItYW5ub3RhdGlvbi1sYWJlbFtyZWw9J1wiKS5jb25jYXQoYSxcIiddXCIpKTtpZihyKXt2YXIgbz1yLnBhcmVudE5vZGUsbj10LmFkZEJhY2tncm91bmRUb0Fubm8ocixpKTtuJiYoby5pbnNlcnRCZWZvcmUobi5ub2RlLHIpLGkubGFiZWwubW91c2VFbnRlciYmbi5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsaS5sYWJlbC5tb3VzZUVudGVyLmJpbmQodCxpKSksaS5sYWJlbC5tb3VzZUxlYXZlJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixpLmxhYmVsLm1vdXNlTGVhdmUuYmluZCh0LGkpKSxpLmxhYmVsLmNsaWNrJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsaS5sYWJlbC5jbGljay5iaW5kKHQsaSkpKX19O2UuY29uZmlnLmFubm90YXRpb25zLnhheGlzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSxcInhheGlzXCIpfSkpLGUuY29uZmlnLmFubm90YXRpb25zLnlheGlzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSxcInlheGlzXCIpfSkpLGUuY29uZmlnLmFubm90YXRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKHQsZSl7aSh0LGUsXCJwb2ludFwiKX0pKX19LHtrZXk6XCJnZXRZMVkyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaSxhPVwieTFcIj09PXQ/ZS55OmUueTIscz10aGlzLnc7aWYodGhpcy5hbm5vQ3R4LmludmVydEF4aXMpe3ZhciByPXMuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZihhKTtzLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihyPXMuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5pbmRleE9mKGEpKTt2YXIgbz1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXMtdGV4dHMtZyB0ZXh0Om50aC1jaGlsZChcIisocisxKStcIilcIik7byYmKGk9cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcInlcIikpKX1lbHNle3ZhciBuO2lmKHMuY29uZmlnLnlheGlzW2UueUF4aXNJbmRleF0ubG9nYXJpdGhtaWMpbj0oYT1uZXcgeSh0aGlzLmFubm9DdHguY3R4KS5nZXRMb2dWYWwoYSxlLnlBeGlzSW5kZXgpKS9zLmdsb2JhbHMueUxvZ1JhdGlvW2UueUF4aXNJbmRleF07ZWxzZSBuPShhLXMuZ2xvYmFscy5taW5ZQXJyW2UueUF4aXNJbmRleF0pLyhzLmdsb2JhbHMueVJhbmdlW2UueUF4aXNJbmRleF0vcy5nbG9iYWxzLmdyaWRIZWlnaHQpO2k9cy5nbG9iYWxzLmdyaWRIZWlnaHQtbiwhZS5tYXJrZXJ8fHZvaWQgMCE9PWUueSYmbnVsbCE9PWUueXx8KGk9MCkscy5jb25maWcueWF4aXNbZS55QXhpc0luZGV4XSYmcy5jb25maWcueWF4aXNbZS55QXhpc0luZGV4XS5yZXZlcnNlZCYmKGk9bil9cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGEmJmEuaW5kZXhPZihcInB4XCIpPi0xJiYoaT1wYXJzZUZsb2F0KGEpKSxpfX0se2tleTpcImdldFgxWDJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzP2kuZ2xvYmFscy5taW5ZOmkuZ2xvYmFscy5taW5YLHM9dGhpcy5hbm5vQ3R4LmludmVydEF4aXM/aS5nbG9iYWxzLm1heFk6aS5nbG9iYWxzLm1heFgscj10aGlzLmFubm9DdHguaW52ZXJ0QXhpcz9pLmdsb2JhbHMueVJhbmdlWzBdOmkuZ2xvYmFscy54UmFuZ2Usbz0oZS54LWEpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpO3RoaXMuYW5ub0N0eC5pbnZlcnNlZFJldmVyc2VkQXhpcyYmKG89KHMtZS54KS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKSksXCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8dGhpcy5hbm5vQ3R4LmludmVydEF4aXN8fGkuZ2xvYmFscy5kYXRhRm9ybWF0WE51bWVyaWN8fChvPXRoaXMuZ2V0U3RyaW5nWChlLngpKTt2YXIgbj0oZS54Mi1hKS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKTtyZXR1cm4gdGhpcy5hbm5vQ3R4LmludmVyc2VkUmV2ZXJzZWRBeGlzJiYobj0ocy1lLngyKS8oci9pLmdsb2JhbHMuZ3JpZFdpZHRoKSksXCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8dGhpcy5hbm5vQ3R4LmludmVydEF4aXN8fGkuZ2xvYmFscy5kYXRhRm9ybWF0WE51bWVyaWN8fChuPXRoaXMuZ2V0U3RyaW5nWChlLngyKSksdm9pZCAwIT09ZS54JiZudWxsIT09ZS54fHwhZS5tYXJrZXJ8fChvPWkuZ2xvYmFscy5ncmlkV2lkdGgpLFwieDFcIj09PXQmJlwic3RyaW5nXCI9PXR5cGVvZiBlLngmJmUueC5pbmRleE9mKFwicHhcIik+LTEmJihvPXBhcnNlRmxvYXQoZS54KSksXCJ4MlwiPT09dCYmXCJzdHJpbmdcIj09dHlwZW9mIGUueDImJmUueDIuaW5kZXhPZihcInB4XCIpPi0xJiYobj1wYXJzZUZsb2F0KGUueDIpKSxcIngxXCI9PT10P286bn19LHtrZXk6XCJnZXRTdHJpbmdYXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dDtlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJmUuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5sZW5ndGgmJih0PWUuZ2xvYmFscy5jYXRlZ29yeUxhYmVscy5pbmRleE9mKHQpKzEpO3ZhciBhPWUuZ2xvYmFscy5sYWJlbHMuaW5kZXhPZih0KSxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nIHRleHQ6bnRoLWNoaWxkKFwiKyhhKzEpK1wiKVwiKTtyZXR1cm4gcyYmKGk9cGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInhcIikpKSxpfX1dKSx0fSgpLGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lLHRoaXMuaW52ZXJ0QXhpcz10aGlzLmFubm9DdHguaW52ZXJ0QXhpcyx0aGlzLmhlbHBlcnM9bmV3IHcodGhpcy5hbm5vQ3R4KX1yZXR1cm4gcih0LFt7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhLHM9dGhpcy53LHI9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MVwiLHQpLG89dC5sYWJlbC50ZXh0LG49dC5zdHJva2VEYXNoQXJyYXk7aWYoeC5pc051bWJlcihyKSl7aWYobnVsbD09PXQueDJ8fHZvaWQgMD09PXQueDIpe3ZhciBsPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3TGluZShyK3Qub2Zmc2V0WCwwK3Qub2Zmc2V0WSxyK3Qub2Zmc2V0WCxzLmdsb2JhbHMuZ3JpZEhlaWdodCt0Lm9mZnNldFksdC5ib3JkZXJDb2xvcixuLHQuYm9yZGVyV2lkdGgpO2UuYXBwZW5kQ2hpbGQobC5ub2RlKSx0LmlkJiZsLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX1lbHNle2lmKChhPXRoaXMuaGVscGVycy5nZXRYMVgyKFwieDJcIix0KSk8cil7dmFyIGg9cjtyPWEsYT1ofXZhciBjPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdChyK3Qub2Zmc2V0WCwwK3Qub2Zmc2V0WSxhLXIscy5nbG9iYWxzLmdyaWRIZWlnaHQrdC5vZmZzZXRZLDAsdC5maWxsQ29sb3IsdC5vcGFjaXR5LDEsdC5ib3JkZXJDb2xvcixuKTtjLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0XCIpLGMuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQocy5nbG9iYWxzLmN1aWQsXCIpXCIpKSxlLmFwcGVuZENoaWxkKGMubm9kZSksdC5pZCYmYy5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9dmFyIGQ9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdldFRleHRSZWN0cyhvLHBhcnNlRmxvYXQodC5sYWJlbC5zdHlsZS5mb250U2l6ZSkpLGc9XCJ0b3BcIj09PXQubGFiZWwucG9zaXRpb24/NDpcImNlbnRlclwiPT09dC5sYWJlbC5wb3NpdGlvbj9zLmdsb2JhbHMuZ3JpZEhlaWdodC8yKyhcInZlcnRpY2FsXCI9PT10LmxhYmVsLm9yaWVudGF0aW9uP2Qud2lkdGgvMjowKTpzLmdsb2JhbHMuZ3JpZEhlaWdodCx1PXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDpyK3QubGFiZWwub2Zmc2V0WCx5OmcrdC5sYWJlbC5vZmZzZXRZLShcInZlcnRpY2FsXCI9PT10LmxhYmVsLm9yaWVudGF0aW9uP1widG9wXCI9PT10LmxhYmVsLnBvc2l0aW9uP2Qud2lkdGgvMi0xMjotZC53aWR0aC8yOjApLHRleHQ6byx0ZXh0QW5jaG9yOnQubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTp0LmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSk7dS5hdHRyKHtyZWw6aX0pLGUuYXBwZW5kQ2hpbGQodS5ub2RlKSx0aGlzLmFubm9DdHguaGVscGVycy5zZXRPcmllbnRhdGlvbnModCxpKX19fSx7a2V5OlwiZHJhd1hBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uc1wifSk7cmV0dXJuIGUuY29uZmlnLmFubm90YXRpb25zLnhheGlzLm1hcCgoZnVuY3Rpb24oZSxhKXt0LmFkZFhheGlzQW5ub3RhdGlvbihlLGkubm9kZSxhKX0pKSxpfX1dKSx0fSgpLEE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYW5ub0N0eD1lLHRoaXMuaGVscGVycz1uZXcgdyh0aGlzLmFubm9DdHgpfXJldHVybiByKHQsW3trZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGEscz10aGlzLncscj10LnN0cm9rZURhc2hBcnJheSxvPXRoaXMuaGVscGVycy5nZXRZMVkyKFwieTFcIix0KSxuPXQubGFiZWwudGV4dDtpZihudWxsPT09dC55Mnx8dm9pZCAwPT09dC55Mil7dmFyIGw9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKDArdC5vZmZzZXRYLG8rdC5vZmZzZXRZLHRoaXMuX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoKHQpLG8rdC5vZmZzZXRZLHQuYm9yZGVyQ29sb3Iscix0LmJvcmRlcldpZHRoKTtlLmFwcGVuZENoaWxkKGwubm9kZSksdC5pZCYmbC5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9ZWxzZXtpZigoYT10aGlzLmhlbHBlcnMuZ2V0WTFZMihcInkyXCIsdCkpPm8pe3ZhciBoPW87bz1hLGE9aH12YXIgYz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1JlY3QoMCt0Lm9mZnNldFgsYSt0Lm9mZnNldFksdGhpcy5fZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGgodCksby1hLDAsdC5maWxsQ29sb3IsdC5vcGFjaXR5LDEsdC5ib3JkZXJDb2xvcixyKTtjLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYW5ub3RhdGlvbi1yZWN0XCIpLGMuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQocy5nbG9iYWxzLmN1aWQsXCIpXCIpKSxlLmFwcGVuZENoaWxkKGMubm9kZSksdC5pZCYmYy5ub2RlLmNsYXNzTGlzdC5hZGQodC5pZCl9dmFyIGQ9XCJyaWdodFwiPT09dC5sYWJlbC5wb3NpdGlvbj9zLmdsb2JhbHMuZ3JpZFdpZHRoOlwiY2VudGVyXCI9PT10LmxhYmVsLnBvc2l0aW9uP3MuZ2xvYmFscy5ncmlkV2lkdGgvMjowLGc9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHt4OmQrdC5sYWJlbC5vZmZzZXRYLHk6KG51bGwhPWE/YTpvKSt0LmxhYmVsLm9mZnNldFktMyx0ZXh0Om4sdGV4dEFuY2hvcjp0LmxhYmVsLnRleHRBbmNob3IsZm9udFNpemU6dC5sYWJlbC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQubGFiZWwuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnQubGFiZWwuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6dC5sYWJlbC5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbi1sYWJlbCBcIi5jb25jYXQodC5sYWJlbC5zdHlsZS5jc3NDbGFzcyxcIiBcIikuY29uY2F0KHQuaWQ/dC5pZDpcIlwiKX0pO2cuYXR0cih7cmVsOml9KSxlLmFwcGVuZENoaWxkKGcubm9kZSl9fSx7a2V5OlwiX2dldFlBeGlzQW5ub3RhdGlvbldpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2UuZ2xvYmFscy5ncmlkV2lkdGg7cmV0dXJuKHQud2lkdGguaW5kZXhPZihcIiVcIik+LTE/ZS5nbG9iYWxzLmdyaWRXaWR0aCpwYXJzZUludCh0LndpZHRoLDEwKS8xMDA6cGFyc2VJbnQodC53aWR0aCwxMCkpK3Qub2Zmc2V0WH19LHtrZXk6XCJkcmF3WUF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKChmdW5jdGlvbihlLGEpe3QuYWRkWWF4aXNBbm5vdGF0aW9uKGUsaS5ub2RlLGEpfSkpLGl9fV0pLHR9KCksUz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5oZWxwZXJzPW5ldyB3KHRoaXMuYW5ub0N0eCl9cmV0dXJuIHIodCxbe2tleTpcImFkZFBvaW50QW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnc7dmFyIGE9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MVwiLHQpLHM9dGhpcy5oZWxwZXJzLmdldFkxWTIoXCJ5MVwiLHQpO2lmKHguaXNOdW1iZXIoYSkpe3ZhciByPXtwU2l6ZTp0Lm1hcmtlci5zaXplLHBvaW50U3Ryb2tlV2lkdGg6dC5tYXJrZXIuc3Ryb2tlV2lkdGgscG9pbnRGaWxsQ29sb3I6dC5tYXJrZXIuZmlsbENvbG9yLHBvaW50U3Ryb2tlQ29sb3I6dC5tYXJrZXIuc3Ryb2tlQ29sb3Isc2hhcGU6dC5tYXJrZXIuc2hhcGUscFJhZGl1czp0Lm1hcmtlci5yYWRpdXMsY2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbWFya2VyIFwiLmNvbmNhdCh0Lm1hcmtlci5jc3NDbGFzcyxcIiBcIikuY29uY2F0KHQuaWQ/dC5pZDpcIlwiKX0sbz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd01hcmtlcihhK3QubWFya2VyLm9mZnNldFgscyt0Lm1hcmtlci5vZmZzZXRZLHIpO2UuYXBwZW5kQ2hpbGQoby5ub2RlKTt2YXIgbj10LmxhYmVsLnRleHQ/dC5sYWJlbC50ZXh0OlwiXCIsbD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoe3g6YSt0LmxhYmVsLm9mZnNldFgseTpzK3QubGFiZWwub2Zmc2V0WS10Lm1hcmtlci5zaXplLXBhcnNlRmxvYXQodC5sYWJlbC5zdHlsZS5mb250U2l6ZSkvMS42LHRleHQ6bix0ZXh0QW5jaG9yOnQubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTp0LmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSk7aWYobC5hdHRyKHtyZWw6aX0pLGUuYXBwZW5kQ2hpbGQobC5ub2RlKSx0LmN1c3RvbVNWRy5TVkcpe3ZhciBoPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zLWN1c3RvbS1zdmcgXCIrdC5jdXN0b21TVkcuY3NzQ2xhc3N9KTtoLmF0dHIoe3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoYSt0LmN1c3RvbVNWRy5vZmZzZXRYLFwiLCBcIikuY29uY2F0KHMrdC5jdXN0b21TVkcub2Zmc2V0WSxcIilcIil9KSxoLm5vZGUuaW5uZXJIVE1MPXQuY3VzdG9tU1ZHLlNWRyxlLmFwcGVuZENoaWxkKGgubm9kZSl9aWYodC5pbWFnZS5wYXRoKXt2YXIgYz10LmltYWdlLndpZHRoP3QuaW1hZ2Uud2lkdGg6MjAsZD10LmltYWdlLmhlaWdodD90LmltYWdlLmhlaWdodDoyMDtvPXRoaXMuYW5ub0N0eC5hZGRJbWFnZSh7eDphK3QuaW1hZ2Uub2Zmc2V0WC1jLzIseTpzK3QuaW1hZ2Uub2Zmc2V0WS1kLzIsd2lkdGg6YyxoZWlnaHQ6ZCxwYXRoOnQuaW1hZ2UucGF0aCxhcHBlbmRUbzpcIi5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCJ9KX10Lm1vdXNlRW50ZXImJm8ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHQubW91c2VFbnRlci5iaW5kKHRoaXMsdCkpLHQubW91c2VMZWF2ZSYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdC5tb3VzZUxlYXZlLmJpbmQodGhpcyx0KSksdC5jbGljayYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuY2xpY2suYmluZCh0aGlzLHQpKX19fSx7a2V5OlwiZHJhd1BvaW50QW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uc1wifSk7cmV0dXJuIGUuY29uZmlnLmFubm90YXRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKGUsYSl7dC5hZGRQb2ludEFubm90YXRpb24oZSxpLm5vZGUsYSl9KSksaX19XSksdH0oKTt2YXIgQz17bmFtZTpcImVuXCIsb3B0aW9uczp7bW9udGhzOltcIkphbnVhcnlcIixcIkZlYnJ1YXJ5XCIsXCJNYXJjaFwiLFwiQXByaWxcIixcIk1heVwiLFwiSnVuZVwiLFwiSnVseVwiLFwiQXVndXN0XCIsXCJTZXB0ZW1iZXJcIixcIk9jdG9iZXJcIixcIk5vdmVtYmVyXCIsXCJEZWNlbWJlclwiXSxzaG9ydE1vbnRoczpbXCJKYW5cIixcIkZlYlwiLFwiTWFyXCIsXCJBcHJcIixcIk1heVwiLFwiSnVuXCIsXCJKdWxcIixcIkF1Z1wiLFwiU2VwXCIsXCJPY3RcIixcIk5vdlwiLFwiRGVjXCJdLGRheXM6W1wiU3VuZGF5XCIsXCJNb25kYXlcIixcIlR1ZXNkYXlcIixcIldlZG5lc2RheVwiLFwiVGh1cnNkYXlcIixcIkZyaWRheVwiLFwiU2F0dXJkYXlcIl0sc2hvcnREYXlzOltcIlN1blwiLFwiTW9uXCIsXCJUdWVcIixcIldlZFwiLFwiVGh1XCIsXCJGcmlcIixcIlNhdFwiXSx0b29sYmFyOntleHBvcnRUb1NWRzpcIkRvd25sb2FkIFNWR1wiLGV4cG9ydFRvUE5HOlwiRG93bmxvYWQgUE5HXCIsZXhwb3J0VG9DU1Y6XCJEb3dubG9hZCBDU1ZcIixtZW51OlwiTWVudVwiLHNlbGVjdGlvbjpcIlNlbGVjdGlvblwiLHNlbGVjdGlvblpvb206XCJTZWxlY3Rpb24gWm9vbVwiLHpvb21JbjpcIlpvb20gSW5cIix6b29tT3V0OlwiWm9vbSBPdXRcIixwYW46XCJQYW5uaW5nXCIscmVzZXQ6XCJSZXNldCBab29tXCJ9fX0sTD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXthKHRoaXMsdCksdGhpcy55QXhpcz17c2hvdzohMCxzaG93QWx3YXlzOiExLHNob3dGb3JOdWxsU2VyaWVzOiEwLHNlcmllc05hbWU6dm9pZCAwLG9wcG9zaXRlOiExLHJldmVyc2VkOiExLGxvZ2FyaXRobWljOiExLGxvZ0Jhc2U6MTAsdGlja0Ftb3VudDp2b2lkIDAsZm9yY2VOaWNlU2NhbGU6ITEsbWF4OnZvaWQgMCxtaW46dm9pZCAwLGZsb2F0aW5nOiExLGRlY2ltYWxzSW5GbG9hdDp2b2lkIDAsbGFiZWxzOntzaG93OiEwLG1pbldpZHRoOjAsbWF4V2lkdGg6MTYwLG9mZnNldFg6MCxvZmZzZXRZOjAsYWxpZ246dm9pZCAwLHJvdGF0ZTowLHBhZGRpbmc6MjAsc3R5bGU6e2NvbG9yczpbXSxmb250U2l6ZTpcIjExcHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifSxmb3JtYXR0ZXI6dm9pZCAwfSxheGlzQm9yZGVyOntzaG93OiExLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOjEsb2Zmc2V0WDowLG9mZnNldFk6MH0sYXhpc1RpY2tzOntzaG93OiExLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOjYsb2Zmc2V0WDowLG9mZnNldFk6MH0sdGl0bGU6e3RleHQ6dm9pZCAwLHJvdGF0ZTotOTAsb2Zmc2V0WTowLG9mZnNldFg6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRXZWlnaHQ6OTAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSx0b29sdGlwOntlbmFibGVkOiExLG9mZnNldFg6MH0sY3Jvc3NoYWlyczp7c2hvdzohMCxwb3NpdGlvbjpcImZyb250XCIsc3Ryb2tlOntjb2xvcjpcIiNiNmI2YjZcIix3aWR0aDoxLGRhc2hBcnJheTowfX19LHRoaXMucG9pbnRBbm5vdGF0aW9uPXtpZDp2b2lkIDAseDowLHk6bnVsbCx5QXhpc0luZGV4OjAsc2VyaWVzSW5kZXg6MCxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsbWFya2VyOntzaXplOjQsZmlsbENvbG9yOlwiI2ZmZlwiLHN0cm9rZVdpZHRoOjIsc3Ryb2tlQ29sb3I6XCIjMzMzXCIsc2hhcGU6XCJjaXJjbGVcIixvZmZzZXRYOjAsb2Zmc2V0WTowLHJhZGl1czoyLGNzc0NsYXNzOlwiXCJ9LGxhYmVsOntib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6XCJtaWRkbGVcIixvZmZzZXRYOjAsb2Zmc2V0WTowLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxzdHlsZTp7YmFja2dyb3VuZDpcIiNmZmZcIixjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6XCJcIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6Mixib3R0b206Mn19fSxjdXN0b21TVkc6e1NWRzp2b2lkIDAsY3NzQ2xhc3M6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjB9LGltYWdlOntwYXRoOnZvaWQgMCx3aWR0aDoyMCxoZWlnaHQ6MjAsb2Zmc2V0WDowLG9mZnNldFk6MH19LHRoaXMueUF4aXNBbm5vdGF0aW9uPXtpZDp2b2lkIDAseTowLHkyOm51bGwsc3Ryb2tlRGFzaEFycmF5OjEsZmlsbENvbG9yOlwiI2MyYzJjMlwiLGJvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsb3BhY2l0eTouMyxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOlwiMTAwJVwiLHlBeGlzSW5kZXg6MCxsYWJlbDp7Ym9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxib3JkZXJSYWRpdXM6Mix0ZXh0OnZvaWQgMCx0ZXh0QW5jaG9yOlwiZW5kXCIscG9zaXRpb246XCJyaWdodFwiLG9mZnNldFg6MCxvZmZzZXRZOi0zLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxzdHlsZTp7YmFja2dyb3VuZDpcIiNmZmZcIixjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY3NzQ2xhc3M6XCJcIixwYWRkaW5nOntsZWZ0OjUscmlnaHQ6NSx0b3A6Mixib3R0b206Mn19fX0sdGhpcy54QXhpc0Fubm90YXRpb249e2lkOnZvaWQgMCx4OjAseDI6bnVsbCxzdHJva2VEYXNoQXJyYXk6MSxmaWxsQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxvcGFjaXR5Oi4zLG9mZnNldFg6MCxvZmZzZXRZOjAsbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOjIsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLG9yaWVudGF0aW9uOlwidmVydGljYWxcIixwb3NpdGlvbjpcInRvcFwiLG9mZnNldFg6MCxvZmZzZXRZOjAsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19fSx0aGlzLnRleHQ9e3g6MCx5OjAsdGV4dDpcIlwiLHRleHRBbmNob3I6XCJzdGFydFwiLGZvcmVDb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxM3B4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsYXBwZW5kVG86XCIuYXBleGNoYXJ0cy1hbm5vdGF0aW9uc1wiLGJhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyUmFkaXVzOjAsYm9yZGVyV2lkdGg6MCxwYWRkaW5nTGVmdDo0LHBhZGRpbmdSaWdodDo0LHBhZGRpbmdUb3A6MixwYWRkaW5nQm90dG9tOjJ9fXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57YW5ub3RhdGlvbnM6e3lheGlzOlt0aGlzLnlBeGlzQW5ub3RhdGlvbl0seGF4aXM6W3RoaXMueEF4aXNBbm5vdGF0aW9uXSxwb2ludHM6W3RoaXMucG9pbnRBbm5vdGF0aW9uXSx0ZXh0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdfSxjaGFydDp7YW5pbWF0aW9uczp7ZW5hYmxlZDohMCxlYXNpbmc6XCJlYXNlaW5vdXRcIixzcGVlZDo4MDAsYW5pbWF0ZUdyYWR1YWxseTp7ZGVsYXk6MTUwLGVuYWJsZWQ6ITB9LGR5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITAsc3BlZWQ6MzUwfX0sYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsbG9jYWxlczpbQ10sZGVmYXVsdExvY2FsZTpcImVuXCIsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSxlbmFibGVkT25TZXJpZXM6dm9pZCAwLHRvcDoyLGxlZnQ6MixibHVyOjQsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouMzV9LGV2ZW50czp7YW5pbWF0aW9uRW5kOnZvaWQgMCxiZWZvcmVNb3VudDp2b2lkIDAsbW91bnRlZDp2b2lkIDAsdXBkYXRlZDp2b2lkIDAsY2xpY2s6dm9pZCAwLG1vdXNlTW92ZTp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAseEF4aXNMYWJlbENsaWNrOnZvaWQgMCxsZWdlbmRDbGljazp2b2lkIDAsbWFya2VyQ2xpY2s6dm9pZCAwLHNlbGVjdGlvbjp2b2lkIDAsZGF0YVBvaW50U2VsZWN0aW9uOnZvaWQgMCxkYXRhUG9pbnRNb3VzZUVudGVyOnZvaWQgMCxkYXRhUG9pbnRNb3VzZUxlYXZlOnZvaWQgMCxiZWZvcmVab29tOnZvaWQgMCxiZWZvcmVSZXNldFpvb206dm9pZCAwLHpvb21lZDp2b2lkIDAsc2Nyb2xsZWQ6dm9pZCAwLGJydXNoU2Nyb2xsZWQ6dm9pZCAwfSxmb3JlQ29sb3I6XCIjMzczZDNmXCIsZm9udEZhbWlseTpcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIixoZWlnaHQ6XCJhdXRvXCIscGFyZW50SGVpZ2h0T2Zmc2V0OjE1LHJlZHJhd09uUGFyZW50UmVzaXplOiEwLHJlZHJhd09uV2luZG93UmVzaXplOiEwLGlkOnZvaWQgMCxncm91cDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxzZWxlY3Rpb246e2VuYWJsZWQ6ITEsdHlwZTpcInhcIixmaWxsOntjb2xvcjpcIiMyNDI5MmVcIixvcGFjaXR5Oi4xfSxzdHJva2U6e3dpZHRoOjEsY29sb3I6XCIjMjQyOTJlXCIsb3BhY2l0eTouNCxkYXNoQXJyYXk6M30seGF4aXM6e21pbjp2b2lkIDAsbWF4OnZvaWQgMH0seWF4aXM6e21pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHNwYXJrbGluZTp7ZW5hYmxlZDohMX0sYnJ1c2g6e2VuYWJsZWQ6ITEsYXV0b1NjYWxlWWF4aXM6ITAsdGFyZ2V0OnZvaWQgMCx0YXJnZXRzOnZvaWQgMH0sc3RhY2tlZDohMSxzdGFja1R5cGU6XCJub3JtYWxcIix0b29sYmFyOntzaG93OiEwLG9mZnNldFg6MCxvZmZzZXRZOjAsdG9vbHM6e2Rvd25sb2FkOiEwLHNlbGVjdGlvbjohMCx6b29tOiEwLHpvb21pbjohMCx6b29tb3V0OiEwLHBhbjohMCxyZXNldDohMCxjdXN0b21JY29uczpbXX0sZXhwb3J0Ontjc3Y6e2ZpbGVuYW1lOnZvaWQgMCxjb2x1bW5EZWxpbWl0ZXI6XCIsXCIsaGVhZGVyQ2F0ZWdvcnk6XCJjYXRlZ29yeVwiLGhlYWRlclZhbHVlOlwidmFsdWVcIixkYXRlRm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh0KS50b0RhdGVTdHJpbmcoKX19LHBuZzp7ZmlsZW5hbWU6dm9pZCAwfSxzdmc6e2ZpbGVuYW1lOnZvaWQgMH19LGF1dG9TZWxlY3RlZDpcInpvb21cIn0sdHlwZTpcImxpbmVcIix3aWR0aDpcIjEwMCVcIix6b29tOntlbmFibGVkOiEwLHR5cGU6XCJ4XCIsYXV0b1NjYWxlWWF4aXM6ITEsem9vbWVkQXJlYTp7ZmlsbDp7Y29sb3I6XCIjOTBDQUY5XCIsb3BhY2l0eTouNH0sc3Ryb2tlOntjb2xvcjpcIiMwRDQ3QTFcIixvcGFjaXR5Oi40LHdpZHRoOjF9fX19LHBsb3RPcHRpb25zOnthcmVhOntmaWxsVG86XCJvcmlnaW5cIn0sYmFyOntob3Jpem9udGFsOiExLGNvbHVtbldpZHRoOlwiNzAlXCIsYmFySGVpZ2h0OlwiNzAlXCIsZGlzdHJpYnV0ZWQ6ITEsYm9yZGVyUmFkaXVzOjAsYm9yZGVyUmFkaXVzQXBwbGljYXRpb246XCJhcm91bmRcIixib3JkZXJSYWRpdXNXaGVuU3RhY2tlZDpcImxhc3RcIixyYW5nZUJhck92ZXJsYXA6ITAscmFuZ2VCYXJHcm91cFJvd3M6ITEsaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQ6ITEsaXNEdW1iYmVsbDohMSxkdW1iYmVsbENvbG9yczp2b2lkIDAsaXNGdW5uZWw6ITEsaXNGdW5uZWwzZDohMCxjb2xvcnM6e3JhbmdlczpbXSxiYWNrZ3JvdW5kQmFyQ29sb3JzOltdLGJhY2tncm91bmRCYXJPcGFjaXR5OjEsYmFja2dyb3VuZEJhclJhZGl1czowfSxkYXRhTGFiZWxzOntwb3NpdGlvbjpcInRvcFwiLG1heEl0ZW1zOjEwMCxoaWRlT3ZlcmZsb3dpbmdMYWJlbHM6ITAsb3JpZW50YXRpb246XCJob3Jpem9udGFsXCIsdG90YWw6e2VuYWJsZWQ6ITEsZm9ybWF0dGVyOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntjb2xvcjpcIiMzNzNkM2ZcIixmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMH19fX0sYnViYmxlOnt6U2NhbGluZzohMCxtaW5CdWJibGVSYWRpdXM6dm9pZCAwLG1heEJ1YmJsZVJhZGl1czp2b2lkIDB9LGNhbmRsZXN0aWNrOntjb2xvcnM6e3Vwd2FyZDpcIiMwMEI3NDZcIixkb3dud2FyZDpcIiNFRjQwM0NcIn0sd2ljazp7dXNlRmlsbENvbG9yOiEwfX0sYm94UGxvdDp7Y29sb3JzOnt1cHBlcjpcIiMwMEUzOTZcIixsb3dlcjpcIiMwMDhGRkJcIn19LGhlYXRtYXA6e3JhZGl1czoyLGVuYWJsZVNoYWRlczohMCxzaGFkZUludGVuc2l0eTouNSxyZXZlcnNlTmVnYXRpdmVTaGFkZTohMSxkaXN0cmlidXRlZDohMSx1c2VGaWxsQ29sb3JBc1N0cm9rZTohMSxjb2xvclNjYWxlOntpbnZlcnNlOiExLHJhbmdlczpbXSxtaW46dm9pZCAwLG1heDp2b2lkIDB9fSx0cmVlbWFwOntlbmFibGVTaGFkZXM6ITAsc2hhZGVJbnRlbnNpdHk6LjUsZGlzdHJpYnV0ZWQ6ITEscmV2ZXJzZU5lZ2F0aXZlU2hhZGU6ITEsdXNlRmlsbENvbG9yQXNTdHJva2U6ITEsZGF0YUxhYmVsczp7Zm9ybWF0Olwic2NhbGVcIn0sY29sb3JTY2FsZTp7aW52ZXJzZTohMSxyYW5nZXM6W10sbWluOnZvaWQgMCxtYXg6dm9pZCAwfX0scmFkaWFsQmFyOntpbnZlcnNlT3JkZXI6ITEsc3RhcnRBbmdsZTowLGVuZEFuZ2xlOjM2MCxvZmZzZXRYOjAsb2Zmc2V0WTowLGhvbGxvdzp7bWFyZ2luOjUsc2l6ZTpcIjUwJVwiLGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGltYWdlOnZvaWQgMCxpbWFnZVdpZHRoOjE1MCxpbWFnZUhlaWdodDoxNTAsaW1hZ2VPZmZzZXRYOjAsaW1hZ2VPZmZzZXRZOjAsaW1hZ2VDbGlwcGVkOiEwLHBvc2l0aW9uOlwiZnJvbnRcIixkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDowLGxlZnQ6MCxibHVyOjMsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNX19LHRyYWNrOntzaG93OiEwLHN0YXJ0QW5nbGU6dm9pZCAwLGVuZEFuZ2xlOnZvaWQgMCxiYWNrZ3JvdW5kOlwiI2YyZjJmMlwiLHN0cm9rZVdpZHRoOlwiOTclXCIsb3BhY2l0eToxLG1hcmdpbjo1LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjAsbGVmdDowLGJsdXI6Myxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi41fX0sZGF0YUxhYmVsczp7c2hvdzohMCxuYW1lOntzaG93OiEwLGZvbnRTaXplOlwiMTZweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOjAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sdmFsdWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNHB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MTYsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0K1wiJVwifX0sdG90YWw6e3Nob3c6ITEsbGFiZWw6XCJUb3RhbFwiLGZvbnRTaXplOlwiMTZweFwiLGZvbnRXZWlnaHQ6NjAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy5zZXJpZXNUb3RhbHMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKS90Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCtcIiVcIn19fX0scGllOntjdXN0b21TY2FsZToxLG9mZnNldFg6MCxvZmZzZXRZOjAsc3RhcnRBbmdsZTowLGVuZEFuZ2xlOjM2MCxleHBhbmRPbkNsaWNrOiEwLGRhdGFMYWJlbHM6e29mZnNldDowLG1pbkFuZ2xlVG9TaG93TGFiZWw6MTB9LGRvbnV0OntzaXplOlwiNjUlXCIsYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsbGFiZWxzOntzaG93OiExLG5hbWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6LTEwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHZhbHVlOntzaG93OiEwLGZvbnRTaXplOlwiMjBweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNvbG9yOnZvaWQgMCxvZmZzZXRZOjEwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdH19LHRvdGFsOntzaG93OiExLHNob3dBbHdheXM6ITEsbGFiZWw6XCJUb3RhbFwiLGZvbnRTaXplOlwiMTZweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2xvYmFscy5zZXJpZXNUb3RhbHMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSwwKX19fX19LHBvbGFyQXJlYTp7cmluZ3M6e3N0cm9rZVdpZHRoOjEsc3Ryb2tlQ29sb3I6XCIjZThlOGU4XCJ9LHNwb2tlczp7c3Ryb2tlV2lkdGg6MSxjb25uZWN0b3JDb2xvcnM6XCIjZThlOGU4XCJ9fSxyYWRhcjp7c2l6ZTp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxwb2x5Z29uczp7c3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcnM6XCIjZThlOGU4XCIsY29ubmVjdG9yQ29sb3JzOlwiI2U4ZThlOFwiLGZpbGw6e2NvbG9yczp2b2lkIDB9fX19LGNvbG9yczp2b2lkIDAsZGF0YUxhYmVsczp7ZW5hYmxlZDohMCxlbmFibGVkT25TZXJpZXM6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXQ/dDpcIlwifSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZGlzdHJpYnV0ZWQ6ITEsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3JzOnZvaWQgMH0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMCxmb3JlQ29sb3I6XCIjZmZmXCIsYm9yZGVyUmFkaXVzOjIscGFkZGluZzo0LG9wYWNpdHk6LjksYm9yZGVyV2lkdGg6MSxib3JkZXJDb2xvcjpcIiNmZmZcIixkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDoxLGxlZnQ6MSxibHVyOjEsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNDV9fSxkcm9wU2hhZG93OntlbmFibGVkOiExLHRvcDoxLGxlZnQ6MSxibHVyOjEsY29sb3I6XCIjMDAwXCIsb3BhY2l0eTouNDV9fSxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZTpcImRhcmtcIix0eXBlOlwiaG9yaXpvbnRhbFwiLHNoYWRlSW50ZW5zaXR5Oi41LGdyYWRpZW50VG9Db2xvcnM6dm9pZCAwLGludmVyc2VDb2xvcnM6ITAsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbMCw1MCwxMDBdLGNvbG9yU3RvcHM6W119LGltYWdlOntzcmM6W10sd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDB9LHBhdHRlcm46e3N0eWxlOlwic3F1YXJlc1wiLHdpZHRoOjYsaGVpZ2h0OjYsc3Ryb2tlV2lkdGg6Mn19LGZvcmVjYXN0RGF0YVBvaW50czp7Y291bnQ6MCxmaWxsT3BhY2l0eTouNSxzdHJva2VXaWR0aDp2b2lkIDAsZGFzaEFycmF5OjR9LGdyaWQ6e3Nob3c6ITAsYm9yZGVyQ29sb3I6XCIjZTBlMGUwXCIsc3Ryb2tlRGFzaEFycmF5OjAscG9zaXRpb246XCJiYWNrXCIseGF4aXM6e2xpbmVzOntzaG93OiExfX0seWF4aXM6e2xpbmVzOntzaG93OiEwfX0scm93Ontjb2xvcnM6dm9pZCAwLG9wYWNpdHk6LjV9LGNvbHVtbjp7Y29sb3JzOnZvaWQgMCxvcGFjaXR5Oi41fSxwYWRkaW5nOnt0b3A6MCxyaWdodDoxMCxib3R0b206MCxsZWZ0OjEyfX0sbGFiZWxzOltdLGxlZ2VuZDp7c2hvdzohMCxzaG93Rm9yU2luZ2xlU2VyaWVzOiExLHNob3dGb3JOdWxsU2VyaWVzOiEwLHNob3dGb3JaZXJvU2VyaWVzOiEwLGZsb2F0aW5nOiExLHBvc2l0aW9uOlwiYm90dG9tXCIsaG9yaXpvbnRhbEFsaWduOlwiY2VudGVyXCIsaW52ZXJzZU9yZGVyOiExLGZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGZvcm1hdHRlcjp2b2lkIDAsdG9vbHRpcEhvdmVyRm9ybWF0dGVyOnZvaWQgMCxvZmZzZXRYOi0yMCxvZmZzZXRZOjQsY3VzdG9tTGVnZW5kSXRlbXM6W10sbGFiZWxzOntjb2xvcnM6dm9pZCAwLHVzZVNlcmllc0NvbG9yczohMX0sbWFya2Vyczp7d2lkdGg6MTIsaGVpZ2h0OjEyLHN0cm9rZVdpZHRoOjAsZmlsbENvbG9yczp2b2lkIDAsc3Ryb2tlQ29sb3I6XCIjZmZmXCIscmFkaXVzOjEyLGN1c3RvbUhUTUw6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsb25DbGljazp2b2lkIDB9LGl0ZW1NYXJnaW46e2hvcml6b250YWw6NSx2ZXJ0aWNhbDoyfSxvbkl0ZW1DbGljazp7dG9nZ2xlRGF0YVNlcmllczohMH0sb25JdGVtSG92ZXI6e2hpZ2hsaWdodERhdGFTZXJpZXM6ITB9fSxtYXJrZXJzOntkaXNjcmV0ZTpbXSxzaXplOjAsY29sb3JzOnZvaWQgMCxzdHJva2VDb2xvcnM6XCIjZmZmXCIsc3Ryb2tlV2lkdGg6MixzdHJva2VPcGFjaXR5Oi45LHN0cm9rZURhc2hBcnJheTowLGZpbGxPcGFjaXR5OjEsc2hhcGU6XCJjaXJjbGVcIix3aWR0aDo4LGhlaWdodDo4LHJhZGl1czoyLG9mZnNldFg6MCxvZmZzZXRZOjAsb25DbGljazp2b2lkIDAsb25EYmxDbGljazp2b2lkIDAsc2hvd051bGxEYXRhUG9pbnRzOiEwLGhvdmVyOntzaXplOnZvaWQgMCxzaXplT2Zmc2V0OjN9fSxub0RhdGE6e3RleHQ6dm9pZCAwLGFsaWduOlwiY2VudGVyXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjE0cHhcIixmb250RmFtaWx5OnZvaWQgMH19LHJlc3BvbnNpdmU6W10sc2VyaWVzOnZvaWQgMCxzdGF0ZXM6e25vcm1hbDp7ZmlsdGVyOnt0eXBlOlwibm9uZVwiLHZhbHVlOjB9fSxob3Zlcjp7ZmlsdGVyOnt0eXBlOlwibGlnaHRlblwiLHZhbHVlOi4xfX0sYWN0aXZlOnthbGxvd011bHRpcGxlRGF0YVBvaW50c1NlbGVjdGlvbjohMSxmaWx0ZXI6e3R5cGU6XCJkYXJrZW5cIix2YWx1ZTouNX19fSx0aXRsZTp7dGV4dDp2b2lkIDAsYWxpZ246XCJsZWZ0XCIsbWFyZ2luOjUsb2Zmc2V0WDowLG9mZnNldFk6MCxmbG9hdGluZzohMSxzdHlsZTp7Zm9udFNpemU6XCIxNHB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwfX0sc3VidGl0bGU6e3RleHQ6dm9pZCAwLGFsaWduOlwibGVmdFwiLG1hcmdpbjo1LG9mZnNldFg6MCxvZmZzZXRZOjMwLGZsb2F0aW5nOiExLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdHJva2U6e3Nob3c6ITAsY3VydmU6XCJzbW9vdGhcIixsaW5lQ2FwOlwiYnV0dFwiLHdpZHRoOjIsY29sb3JzOnZvaWQgMCxkYXNoQXJyYXk6MCxmaWxsOnt0eXBlOlwic29saWRcIixjb2xvcnM6dm9pZCAwLG9wYWNpdHk6Ljg1LGdyYWRpZW50OntzaGFkZTpcImRhcmtcIix0eXBlOlwiaG9yaXpvbnRhbFwiLHNoYWRlSW50ZW5zaXR5Oi41LGdyYWRpZW50VG9Db2xvcnM6dm9pZCAwLGludmVyc2VDb2xvcnM6ITAsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbMCw1MCwxMDBdLGNvbG9yU3RvcHM6W119fX0sdG9vbHRpcDp7ZW5hYmxlZDohMCxlbmFibGVkT25TZXJpZXM6dm9pZCAwLHNoYXJlZDohMCxmb2xsb3dDdXJzb3I6ITEsaW50ZXJzZWN0OiExLGludmVyc2VPcmRlcjohMSxjdXN0b206dm9pZCAwLGZpbGxTZXJpZXNDb2xvcjohMSx0aGVtZTpcImxpZ2h0XCIsY3NzQ2xhc3M6XCJcIixzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDB9LG9uRGF0YXNldEhvdmVyOntoaWdobGlnaHREYXRhU2VyaWVzOiExfSx4OntzaG93OiEwLGZvcm1hdDpcImRkIE1NTVwiLGZvcm1hdHRlcjp2b2lkIDB9LHk6e2Zvcm1hdHRlcjp2b2lkIDAsdGl0bGU6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD90K1wiOiBcIjpcIlwifX19LHo6e2Zvcm1hdHRlcjp2b2lkIDAsdGl0bGU6XCJTaXplOiBcIn0sbWFya2VyOntzaG93OiEwLGZpbGxDb2xvcnM6dm9pZCAwfSxpdGVtczp7ZGlzcGxheTpcImZsZXhcIn0sZml4ZWQ6e2VuYWJsZWQ6ITEscG9zaXRpb246XCJ0b3BSaWdodFwiLG9mZnNldFg6MCxvZmZzZXRZOjB9fSx4YXhpczp7dHlwZTpcImNhdGVnb3J5XCIsY2F0ZWdvcmllczpbXSxjb252ZXJ0ZWRDYXRUb051bWVyaWM6ITEsb2Zmc2V0WDowLG9mZnNldFk6MCxvdmVyd3JpdGVDYXRlZ29yaWVzOnZvaWQgMCxsYWJlbHM6e3Nob3c6ITAscm90YXRlOi00NSxyb3RhdGVBbHdheXM6ITEsaGlkZU92ZXJsYXBwaW5nTGFiZWxzOiEwLHRyaW06ITEsbWluSGVpZ2h0OnZvaWQgMCxtYXhIZWlnaHQ6MTIwLHNob3dEdXBsaWNhdGVzOiEwLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn0sb2Zmc2V0WDowLG9mZnNldFk6MCxmb3JtYXQ6dm9pZCAwLGZvcm1hdHRlcjp2b2lkIDAsZGF0ZXRpbWVVVEM6ITAsZGF0ZXRpbWVGb3JtYXR0ZXI6e3llYXI6XCJ5eXl5XCIsbW9udGg6XCJNTU0gJ3l5XCIsZGF5OlwiZGQgTU1NXCIsaG91cjpcIkhIOm1tXCIsbWludXRlOlwiSEg6bW06c3NcIixzZWNvbmQ6XCJISDptbTpzc1wifX0sZ3JvdXA6e2dyb3VwczpbXSxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSxheGlzQm9yZGVyOntzaG93OiEwLGNvbG9yOlwiI2UwZTBlMFwiLHdpZHRoOlwiMTAwJVwiLGhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjB9LGF4aXNUaWNrczp7c2hvdzohMCxjb2xvcjpcIiNlMGUwZTBcIixoZWlnaHQ6NixvZmZzZXRYOjAsb2Zmc2V0WTowfSx0aWNrQW1vdW50OnZvaWQgMCx0aWNrUGxhY2VtZW50Olwib25cIixtaW46dm9pZCAwLG1heDp2b2lkIDAscmFuZ2U6dm9pZCAwLGZsb2F0aW5nOiExLGRlY2ltYWxzSW5GbG9hdDp2b2lkIDAscG9zaXRpb246XCJib3R0b21cIix0aXRsZTp7dGV4dDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6OTAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9fSxjcm9zc2hhaXJzOntzaG93OiEwLHdpZHRoOjEscG9zaXRpb246XCJiYWNrXCIsb3BhY2l0eTouOSxzdHJva2U6e2NvbG9yOlwiI2I2YjZiNlwiLHdpZHRoOjEsZGFzaEFycmF5OjN9LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yOlwiI0IxQjlDNFwiLGdyYWRpZW50Ontjb2xvckZyb206XCIjRDhFM0YwXCIsY29sb3JUbzpcIiNCRUQxRTZcIixzdG9wczpbMCwxMDBdLG9wYWNpdHlGcm9tOi40LG9wYWNpdHlUbzouNX19LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsbGVmdDowLHRvcDowLGJsdXI6MSxvcGFjaXR5Oi40fX0sdG9vbHRpcDp7ZW5hYmxlZDohMCxvZmZzZXRZOjAsZm9ybWF0dGVyOnZvaWQgMCxzdHlsZTp7Zm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDB9fX0seWF4aXM6dGhpcy55QXhpcyx0aGVtZTp7bW9kZTpcImxpZ2h0XCIscGFsZXR0ZTpcInBhbGV0dGUxXCIsbW9ub2Nocm9tZTp7ZW5hYmxlZDohMSxjb2xvcjpcIiMwMDhGRkJcIixzaGFkZVRvOlwibGlnaHRcIixzaGFkZUludGVuc2l0eTouNjV9fX19fV0pLHR9KCksUD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmdyYXBoaWNzPW5ldyBtKHRoaXMuY3R4KSx0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJih0aGlzLmludmVydEF4aXM9ITApLHRoaXMuaGVscGVycz1uZXcgdyh0aGlzKSx0aGlzLnhBeGlzQW5ub3RhdGlvbnM9bmV3IGsodGhpcyksdGhpcy55QXhpc0Fubm90YXRpb25zPW5ldyBBKHRoaXMpLHRoaXMucG9pbnRzQW5ub3RhdGlvbnM9bmV3IFModGhpcyksdGhpcy53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLncuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkJiYodGhpcy5pbnZlcnNlZFJldmVyc2VkQXhpcz0hMCksdGhpcy54RGl2aXNpb249dGhpcy53Lmdsb2JhbHMuZ3JpZFdpZHRoL3RoaXMudy5nbG9iYWxzLmRhdGFQb2ludHN9cmV0dXJuIHIodCxbe2tleTpcImRyYXdBeGVzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZih0Lmdsb2JhbHMuYXhpc0NoYXJ0cyl7Zm9yKHZhciBlPXRoaXMueUF4aXNBbm5vdGF0aW9ucy5kcmF3WUF4aXNBbm5vdGF0aW9ucygpLGk9dGhpcy54QXhpc0Fubm90YXRpb25zLmRyYXdYQXhpc0Fubm90YXRpb25zKCksYT10aGlzLnBvaW50c0Fubm90YXRpb25zLmRyYXdQb2ludEFubm90YXRpb25zKCkscz10LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQscj1bZSxpLGFdLG89W2kubm9kZSxlLm5vZGUsYS5ub2RlXSxuPTA7bjwzO24rKyl0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChyW25dKSwhc3x8dC5nbG9iYWxzLnJlc2l6ZWR8fHQuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8XCJzY2F0dGVyXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiZcImJ1YmJsZVwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmdC5nbG9iYWxzLmRhdGFQb2ludHM+MSYmb1tuXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKSx0Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOm9bbl0saW5kZXg6MH0pO3RoaXMuaGVscGVycy5hbm5vdGF0aW9uc0JhY2tncm91bmQoKX19fSx7a2V5OlwiZHJhd0ltYWdlQW5ub3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy53LmNvbmZpZy5hbm5vdGF0aW9ucy5pbWFnZXMubWFwKChmdW5jdGlvbihlLGkpe3QuYWRkSW1hZ2UoZSxpKX0pKX19LHtrZXk6XCJkcmF3VGV4dEFubm9zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMudy5jb25maWcuYW5ub3RhdGlvbnMudGV4dHMubWFwKChmdW5jdGlvbihlLGkpe3QuYWRkVGV4dChlLGkpfSkpfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnhBeGlzQW5ub3RhdGlvbnMuYWRkWGF4aXNBbm5vdGF0aW9uKHQsZSxpKX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy55QXhpc0Fubm90YXRpb25zLmFkZFlheGlzQW5ub3RhdGlvbih0LGUsaSl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMucG9pbnRzQW5ub3RhdGlvbnMuYWRkUG9pbnRBbm5vdGF0aW9uKHQsZSxpKX19LHtrZXk6XCJhZGRUZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10LngsYT10Lnkscz10LnRleHQscj10LnRleHRBbmNob3Isbz10LmZvcmVDb2xvcixuPXQuZm9udFNpemUsbD10LmZvbnRGYW1pbHksaD10LmZvbnRXZWlnaHQsYz10LmNzc0NsYXNzLGQ9dC5iYWNrZ3JvdW5kQ29sb3IsZz10LmJvcmRlcldpZHRoLHU9dC5zdHJva2VEYXNoQXJyYXkscD10LmJvcmRlclJhZGl1cyxmPXQuYm9yZGVyQ29sb3IseD10LmFwcGVuZFRvLGI9dm9pZCAwPT09eD9cIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zXCI6eCx2PXQucGFkZGluZ0xlZnQsbT12b2lkIDA9PT12PzQ6dix5PXQucGFkZGluZ1JpZ2h0LHc9dm9pZCAwPT09eT80Onksaz10LnBhZGRpbmdCb3R0b20sQT12b2lkIDA9PT1rPzI6ayxTPXQucGFkZGluZ1RvcCxDPXZvaWQgMD09PVM/MjpTLEw9dGhpcy53LFA9dGhpcy5ncmFwaGljcy5kcmF3VGV4dCh7eDppLHk6YSx0ZXh0OnMsdGV4dEFuY2hvcjpyfHxcInN0YXJ0XCIsZm9udFNpemU6bnx8XCIxMnB4XCIsZm9udFdlaWdodDpofHxcInJlZ3VsYXJcIixmb250RmFtaWx5Omx8fEwuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksZm9yZUNvbG9yOm98fEwuY29uZmlnLmNoYXJ0LmZvcmVDb2xvcixjc3NDbGFzczpjfSksST1MLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKGIpO0kmJkkuYXBwZW5kQ2hpbGQoUC5ub2RlKTt2YXIgTT1QLmJib3goKTtpZihzKXt2YXIgVD10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KE0ueC1tLE0ueS1DLE0ud2lkdGgrbSt3LE0uaGVpZ2h0K0ErQyxwLGR8fFwidHJhbnNwYXJlbnRcIiwxLGcsZix1KTtJLmluc2VydEJlZm9yZShULm5vZGUsUC5ub2RlKX19fSx7a2V5OlwiYWRkSW1hZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXQucGF0aCxzPXQueCxyPXZvaWQgMD09PXM/MDpzLG89dC55LG49dm9pZCAwPT09bz8wOm8sbD10LndpZHRoLGg9dm9pZCAwPT09bD8yMDpsLGM9dC5oZWlnaHQsZD12b2lkIDA9PT1jPzIwOmMsZz10LmFwcGVuZFRvLHU9dm9pZCAwPT09Zz9cIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zXCI6ZyxwPWkuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UoYSk7cC5zaXplKGgsZCkubW92ZShyLG4pO3ZhciBmPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IodSk7cmV0dXJuIGYmJmYuYXBwZW5kQ2hpbGQocC5ub2RlKSxwfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7cGFyYW1zOnQscHVzaFRvTWVtb3J5OmUsY29udGV4dDppLHR5cGU6XCJ4YXhpc1wiLGNvbnRleHRNZXRob2Q6aS5hZGRYYXhpc0Fubm90YXRpb259KSxpfX0se2tleTpcImFkZFlheGlzQW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7cGFyYW1zOnQscHVzaFRvTWVtb3J5OmUsY29udGV4dDppLHR5cGU6XCJ5YXhpc1wiLGNvbnRleHRNZXRob2Q6aS5hZGRZYXhpc0Fubm90YXRpb259KSxpfX0se2tleTpcImFkZFBvaW50QW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB2b2lkIDA9PT10aGlzLmludmVydEF4aXMmJih0aGlzLmludmVydEF4aXM9aS53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKSx0aGlzLmFkZEFubm90YXRpb25FeHRlcm5hbCh7cGFyYW1zOnQscHVzaFRvTWVtb3J5OmUsY29udGV4dDppLHR5cGU6XCJwb2ludFwiLGNvbnRleHRNZXRob2Q6aS5hZGRQb2ludEFubm90YXRpb259KSxpfX0se2tleTpcImFkZEFubm90YXRpb25FeHRlcm5hbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQucGFyYW1zLGk9dC5wdXNoVG9NZW1vcnksYT10LmNvbnRleHQscz10LnR5cGUscj10LmNvbnRleHRNZXRob2Qsbz1hLG49by53LGw9bi5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChzLFwiLWFubm90YXRpb25zXCIpKSxoPWwuY2hpbGROb2Rlcy5sZW5ndGgrMSxjPW5ldyBMLGQ9T2JqZWN0LmFzc2lnbih7fSxcInhheGlzXCI9PT1zP2MueEF4aXNBbm5vdGF0aW9uOlwieWF4aXNcIj09PXM/Yy55QXhpc0Fubm90YXRpb246Yy5wb2ludEFubm90YXRpb24pLGc9eC5leHRlbmQoZCxlKTtzd2l0Y2gocyl7Y2FzZVwieGF4aXNcIjp0aGlzLmFkZFhheGlzQW5ub3RhdGlvbihnLGwsaCk7YnJlYWs7Y2FzZVwieWF4aXNcIjp0aGlzLmFkZFlheGlzQW5ub3RhdGlvbihnLGwsaCk7YnJlYWs7Y2FzZVwicG9pbnRcIjp0aGlzLmFkZFBvaW50QW5ub3RhdGlvbihnLGwsaCl9dmFyIHU9bi5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChzLFwiLWFubm90YXRpb25zIC5hcGV4Y2hhcnRzLVwiKS5jb25jYXQocyxcIi1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIpLmNvbmNhdChoLFwiJ11cIikpLHA9dGhpcy5oZWxwZXJzLmFkZEJhY2tncm91bmRUb0Fubm8odSxnKTtyZXR1cm4gcCYmbC5pbnNlcnRCZWZvcmUocC5ub2RlLHUpLGkmJm4uZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5wdXNoKHtjb250ZXh0Om8saWQ6Zy5pZD9nLmlkOngucmFuZG9tSWQoKSxtZXRob2Q6cixsYWJlbDpcImFkZEFubm90YXRpb25cIixwYXJhbXM6ZX0pLGF9fSx7a2V5OlwiY2xlYXJBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudyxpPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9ucywgLmFwZXhjaGFydHMteGF4aXMtYW5ub3RhdGlvbnMsIC5hcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCIpO2UuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5tYXAoKGZ1bmN0aW9uKHQsaSl7XCJhZGRUZXh0XCIhPT10LmxhYmVsJiZcImFkZEFubm90YXRpb25cIiE9PXQubGFiZWx8fGUuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5zcGxpY2UoaSwxKX0pKSxpPXgubGlzdFRvQXJyYXkoaSksQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChpLChmdW5jdGlvbih0KXtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpfSkpfX0se2tleTpcInJlbW92ZUFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQudyxhPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuXCIuY29uY2F0KGUpKTthJiYoaS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLm1hcCgoZnVuY3Rpb24odCxhKXt0LmlkPT09ZSYmaS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnNwbGljZShhLDEpfSkpLEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSwoZnVuY3Rpb24odCl7dC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHQpfSkpKX19XSksdH0oKSxJPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMubW9udGhzMzE9WzEsMyw1LDcsOCwxMCwxMl0sdGhpcy5tb250aHMzMD1bMiw0LDYsOSwxMV0sdGhpcy5kYXlzQ250T2ZZZWFyPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzRdfXJldHVybiByKHQsW3trZXk6XCJpc1ZhbGlkRGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiFpc05hTih0aGlzLnBhcnNlRGF0ZSh0KSl9fSx7a2V5OlwiZ2V0VGltZVN0YW1wXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIERhdGUucGFyc2UodCk/dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/bmV3IERhdGUobmV3IERhdGUodCkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwyNSkpLmdldFRpbWUoKTpuZXcgRGF0ZSh0KS5nZXRUaW1lKCk6dH19LHtrZXk6XCJnZXREYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudy5jb25maWcueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP25ldyBEYXRlKG5ldyBEYXRlKHQpLnRvVVRDU3RyaW5nKCkpOm5ldyBEYXRlKHQpfX0se2tleTpcInBhcnNlRGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPURhdGUucGFyc2UodCk7aWYoIWlzTmFOKGUpKXJldHVybiB0aGlzLmdldFRpbWVTdGFtcCh0KTt2YXIgaT1EYXRlLnBhcnNlKHQucmVwbGFjZSgvLS9nLFwiL1wiKS5yZXBsYWNlKC9bYS16XSsvZ2ksXCIgXCIpKTtyZXR1cm4gaT10aGlzLmdldFRpbWVTdGFtcChpKX19LHtrZXk6XCJwYXJzZURhdGVXaXRoVGltZXpvbmVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gRGF0ZS5wYXJzZSh0LnJlcGxhY2UoLy0vZyxcIi9cIikucmVwbGFjZSgvW2Etel0rL2dpLFwiIFwiKSl9fSx7a2V5OlwiZm9ybWF0RGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMubG9jYWxlLGE9dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEMscz1bXCJcXDBcIl0uY29uY2F0KHUoaS5tb250aHMpKSxyPVtcIlxceDAxXCJdLmNvbmNhdCh1KGkuc2hvcnRNb250aHMpKSxvPVtcIlxceDAyXCJdLmNvbmNhdCh1KGkuZGF5cykpLG49W1wiXFx4MDNcIl0uY29uY2F0KHUoaS5zaG9ydERheXMpKTtmdW5jdGlvbiBsKHQsZSl7dmFyIGk9dCtcIlwiO2ZvcihlPWV8fDI7aS5sZW5ndGg8ZTspaT1cIjBcIitpO3JldHVybiBpfXZhciBoPWE/dC5nZXRVVENGdWxsWWVhcigpOnQuZ2V0RnVsbFllYXIoKTtlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSl5eXl5Ky9nLFwiJDFcIitoKSkucmVwbGFjZSgvKF58W15cXFxcXSl5eS9nLFwiJDFcIitoLnRvU3RyaW5nKCkuc3Vic3RyKDIsMikpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXkvZyxcIiQxXCIraCk7dmFyIGM9KGE/dC5nZXRVVENNb250aCgpOnQuZ2V0TW9udGgoKSkrMTtlPShlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlNTU1NKy9nLFwiJDFcIitzWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlNTU0vZyxcIiQxXCIrclswXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pTU0vZyxcIiQxXCIrbChjKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pTS9nLFwiJDFcIitjKTt2YXIgZD1hP3QuZ2V0VVRDRGF0ZSgpOnQuZ2V0RGF0ZSgpO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkZGQrL2csXCIkMVwiK29bMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkZC9nLFwiJDFcIituWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlkZC9nLFwiJDFcIitsKGQpKSkucmVwbGFjZSgvKF58W15cXFxcXSlkL2csXCIkMVwiK2QpO3ZhciBnPWE/dC5nZXRVVENIb3VycygpOnQuZ2V0SG91cnMoKSxwPWc+MTI/Zy0xMjowPT09Zz8xMjpnO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKUhIKy9nLFwiJDFcIitsKGcpKSkucmVwbGFjZSgvKF58W15cXFxcXSlIL2csXCIkMVwiK2cpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWhoKy9nLFwiJDFcIitsKHApKSkucmVwbGFjZSgvKF58W15cXFxcXSloL2csXCIkMVwiK3ApO3ZhciBmPWE/dC5nZXRVVENNaW51dGVzKCk6dC5nZXRNaW51dGVzKCk7ZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pbW0rL2csXCIkMVwiK2woZikpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKW0vZyxcIiQxXCIrZik7dmFyIHg9YT90LmdldFVUQ1NlY29uZHMoKTp0LmdldFNlY29uZHMoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlzcysvZyxcIiQxXCIrbCh4KSkpLnJlcGxhY2UoLyhefFteXFxcXF0pcy9nLFwiJDFcIit4KTt2YXIgYj1hP3QuZ2V0VVRDTWlsbGlzZWNvbmRzKCk6dC5nZXRNaWxsaXNlY29uZHMoKTtlPWUucmVwbGFjZSgvKF58W15cXFxcXSlmZmYrL2csXCIkMVwiK2woYiwzKSksYj1NYXRoLnJvdW5kKGIvMTApLGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWZmL2csXCIkMVwiK2woYikpLGI9TWF0aC5yb3VuZChiLzEwKTt2YXIgdj1nPDEyP1wiQU1cIjpcIlBNXCI7ZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZi9nLFwiJDFcIitiKSkucmVwbGFjZSgvKF58W15cXFxcXSlUVCsvZyxcIiQxXCIrdikpLnJlcGxhY2UoLyhefFteXFxcXF0pVC9nLFwiJDFcIit2LmNoYXJBdCgwKSk7dmFyIG09di50b0xvd2VyQ2FzZSgpO2U9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXR0Ky9nLFwiJDFcIittKSkucmVwbGFjZSgvKF58W15cXFxcXSl0L2csXCIkMVwiK20uY2hhckF0KDApKTt2YXIgeT0tdC5nZXRUaW1lem9uZU9mZnNldCgpLHc9YXx8IXk/XCJaXCI6eT4wP1wiK1wiOlwiLVwiO2lmKCFhKXt2YXIgaz0oeT1NYXRoLmFicyh5KSklNjA7dys9bChNYXRoLmZsb29yKHkvNjApKStcIjpcIitsKGspfWU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKUsvZyxcIiQxXCIrdyk7dmFyIEE9KGE/dC5nZXRVVENEYXkoKTp0LmdldERheSgpKSsxO3JldHVybiBlPShlPShlPShlPShlPWUucmVwbGFjZShuZXcgUmVnRXhwKG9bMF0sXCJnXCIpLG9bQV0pKS5yZXBsYWNlKG5ldyBSZWdFeHAoblswXSxcImdcIiksbltBXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChzWzBdLFwiZ1wiKSxzW2NdKSkucmVwbGFjZShuZXcgUmVnRXhwKHJbMF0sXCJnXCIpLHJbY10pKS5yZXBsYWNlKC9cXFxcKC4pL2csXCIkMVwiKX19LHtrZXk6XCJnZXRUaW1lVW5pdHNmcm9tVGltZXN0YW1wXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudzt2b2lkIDAhPT1hLmNvbmZpZy54YXhpcy5taW4mJih0PWEuY29uZmlnLnhheGlzLm1pbiksdm9pZCAwIT09YS5jb25maWcueGF4aXMubWF4JiYoZT1hLmNvbmZpZy54YXhpcy5tYXgpO3ZhciBzPXRoaXMuZ2V0RGF0ZSh0KSxyPXRoaXMuZ2V0RGF0ZShlKSxvPXRoaXMuZm9ybWF0RGF0ZShzLFwieXl5eSBNTSBkZCBISCBtbSBzcyBmZmZcIikuc3BsaXQoXCIgXCIpLG49dGhpcy5mb3JtYXREYXRlKHIsXCJ5eXl5IE1NIGRkIEhIIG1tIHNzIGZmZlwiKS5zcGxpdChcIiBcIik7cmV0dXJue21pbk1pbGxpc2Vjb25kOnBhcnNlSW50KG9bNl0sMTApLG1heE1pbGxpc2Vjb25kOnBhcnNlSW50KG5bNl0sMTApLG1pblNlY29uZDpwYXJzZUludChvWzVdLDEwKSxtYXhTZWNvbmQ6cGFyc2VJbnQobls1XSwxMCksbWluTWludXRlOnBhcnNlSW50KG9bNF0sMTApLG1heE1pbnV0ZTpwYXJzZUludChuWzRdLDEwKSxtaW5Ib3VyOnBhcnNlSW50KG9bM10sMTApLG1heEhvdXI6cGFyc2VJbnQoblszXSwxMCksbWluRGF0ZTpwYXJzZUludChvWzJdLDEwKSxtYXhEYXRlOnBhcnNlSW50KG5bMl0sMTApLG1pbk1vbnRoOnBhcnNlSW50KG9bMV0sMTApLTEsbWF4TW9udGg6cGFyc2VJbnQoblsxXSwxMCktMSxtaW5ZZWFyOnBhcnNlSW50KG9bMF0sMTApLG1heFllYXI6cGFyc2VJbnQoblswXSwxMCl9fX0se2tleTpcImlzTGVhcFllYXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCU0PT0wJiZ0JTEwMCE9MHx8dCU0MDA9PTB9fSx7a2V5OlwiY2FsY3VsY2F0ZUxhc3REYXlzT2ZNb250aFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5kZXRlcm1pbmVEYXlzT2ZNb250aHModCxlKS1pfX0se2tleTpcImRldGVybWluZURheXNPZlllYXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0zNjU7cmV0dXJuIHRoaXMuaXNMZWFwWWVhcih0KSYmKGU9MzY2KSxlfX0se2tleTpcImRldGVybWluZVJlbWFpbmluZ0RheXNPZlllYXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy5kYXlzQ250T2ZZZWFyW2VdK2k7cmV0dXJuIGU+MSYmdGhpcy5pc0xlYXBZZWFyKCkmJmErKyxhfX0se2tleTpcImRldGVybWluZURheXNPZk1vbnRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9MzA7c3dpdGNoKHQ9eC5tb250aE1vZCh0KSwhMCl7Y2FzZSB0aGlzLm1vbnRoczMwLmluZGV4T2YodCk+LTE6Mj09PXQmJihpPXRoaXMuaXNMZWFwWWVhcihlKT8yOToyOCk7YnJlYWs7Y2FzZSB0aGlzLm1vbnRoczMxLmluZGV4T2YodCk+LTE6ZGVmYXVsdDppPTMxfXJldHVybiBpfX1dKSx0fSgpLE09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50b29sdGlwS2V5Rm9ybWF0PVwiZGQgTU1NXCJ9cmV0dXJuIHIodCxbe2tleTpcInhMYWJlbEZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudztpZihcImRhdGV0aW1lXCI9PT1zLmNvbmZpZy54YXhpcy50eXBlJiZ2b2lkIDA9PT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyJiZ2b2lkIDA9PT1zLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKXt2YXIgcj1uZXcgSSh0aGlzLmN0eCk7cmV0dXJuIHIuZm9ybWF0RGF0ZShyLmdldERhdGUoZSkscy5jb25maWcudG9vbHRpcC54LmZvcm1hdCl9cmV0dXJuIHQoZSxpLGEpfX0se2tleTpcImRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpOnR9fSx7a2V5OlwiZGVmYXVsdFlGb3JtYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O3JldHVybiB4LmlzTnVtYmVyKHQpJiYodD0wIT09YS5nbG9iYWxzLnlWYWx1ZURlY2ltYWw/dC50b0ZpeGVkKHZvaWQgMCE9PWUuZGVjaW1hbHNJbkZsb2F0P2UuZGVjaW1hbHNJbkZsb2F0OmEuZ2xvYmFscy55VmFsdWVEZWNpbWFsKTphLmdsb2JhbHMubWF4WUFycltpXS1hLmdsb2JhbHMubWluWUFycltpXTw1P3QudG9GaXhlZCgxKTp0LnRvRml4ZWQoMCkpLHR9fSx7a2V5Olwic2V0TGFiZWxGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53O3JldHVybiBlLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0LmRlZmF1bHRHZW5lcmFsRm9ybWF0dGVyKGUpfSxlLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LGUuZ2xvYmFscy50dFpGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LHZvaWQgMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI/ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcj1lLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyOmUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7aWYoeC5pc051bWJlcih0KSl7aWYoIWUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmXCJudW1lcmljXCI9PT1lLmNvbmZpZy54YXhpcy50eXBlKXtpZih4LmlzTnVtYmVyKGUuY29uZmlnLnhheGlzLmRlY2ltYWxzSW5GbG9hdCkpcmV0dXJuIHQudG9GaXhlZChlLmNvbmZpZy54YXhpcy5kZWNpbWFsc0luRmxvYXQpO3ZhciBpPWUuZ2xvYmFscy5tYXhYLWUuZ2xvYmFscy5taW5YO3JldHVybiBpPjAmJmk8MTAwP3QudG9GaXhlZCgxKTp0LnRvRml4ZWQoMCl9aWYoZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbClpZihlLmdsb2JhbHMubWF4WS1lLmdsb2JhbHMubWluWUFycjw0KXJldHVybiB0LnRvRml4ZWQoMSk7cmV0dXJuIHQudG9GaXhlZCgwKX1yZXR1cm4gdH0sXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcj9lLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcjplLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXI9ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlciYmKGUuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXI9ZS5jb25maWcueGF4aXMudG9vbHRpcC5mb3JtYXR0ZXIpLChBcnJheS5pc0FycmF5KGUuY29uZmlnLnRvb2x0aXAueSl8fHZvaWQgMCE9PWUuY29uZmlnLnRvb2x0aXAueS5mb3JtYXR0ZXIpJiYoZS5nbG9iYWxzLnR0VmFsPWUuY29uZmlnLnRvb2x0aXAueSksdm9pZCAwIT09ZS5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciYmKGUuZ2xvYmFscy50dFpGb3JtYXR0ZXI9ZS5jb25maWcudG9vbHRpcC56LmZvcm1hdHRlciksdm9pZCAwIT09ZS5jb25maWcubGVnZW5kLmZvcm1hdHRlciYmKGUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXI9ZS5jb25maWcubGVnZW5kLmZvcm1hdHRlciksZS5jb25maWcueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXt2b2lkIDAhPT1pLmxhYmVscy5mb3JtYXR0ZXI/ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbYV09aS5sYWJlbHMuZm9ybWF0dGVyOmUuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW2FdPWZ1bmN0aW9uKHMpe3JldHVybiBlLmdsb2JhbHMueHlDaGFydHM/QXJyYXkuaXNBcnJheShzKT9zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdFlGb3JtYXR0ZXIoZSxpLGEpfSkpOnQuZGVmYXVsdFlGb3JtYXR0ZXIocyxpLGEpOnN9fSkpLGUuZ2xvYmFsc319LHtrZXk6XCJoZWF0bWFwTGFiZWxGb3JtYXR0ZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYoXCJoZWF0bWFwXCI9PT10LmNvbmZpZy5jaGFydC50eXBlKXt0Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQ9dC5nbG9iYWxzLnNlcmllc05hbWVzLnNsaWNlKCk7dmFyIGU9dC5nbG9iYWxzLnNlcmllc05hbWVzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCk7dC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1heD1lLHQuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW49ZX19fV0pLHR9KCksVD1mdW5jdGlvbih0KXt2YXIgZSxpPXQuaXNUaW1lbGluZSxhPXQuY3R4LHM9dC5zZXJpZXNJbmRleCxyPXQuZGF0YVBvaW50SW5kZXgsbz10LnkxLG49dC55MixsPXQudyxoPWwuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3NdW3JdLGM9bC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3NdW3JdLGQ9bC5nbG9iYWxzLmxhYmVsc1tyXSxnPWwuY29uZmlnLnNlcmllc1tzXS5uYW1lP2wuY29uZmlnLnNlcmllc1tzXS5uYW1lOlwiXCIsdT1sLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIscD1sLmNvbmZpZy50b29sdGlwLnkudGl0bGUuZm9ybWF0dGVyLGY9e3c6bCxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsc3RhcnQ6aCxlbmQ6Y307KFwiZnVuY3Rpb25cIj09dHlwZW9mIHAmJihnPXAoZyxmKSksbnVsbCE9PShlPWwuY29uZmlnLnNlcmllc1tzXS5kYXRhW3JdKSYmdm9pZCAwIT09ZSYmZS54JiYoZD1sLmNvbmZpZy5zZXJpZXNbc10uZGF0YVtyXS54KSxpKXx8XCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSYmKGQ9bmV3IE0oYSkueExhYmVsRm9ybWF0KGwuZ2xvYmFscy50dEtleUZvcm1hdHRlcixkLGQse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEkoYSkuZm9ybWF0RGF0ZSx3Omx9KSk7XCJmdW5jdGlvblwiPT10eXBlb2YgdSYmKGQ9dShkLGYpKSxOdW1iZXIuaXNGaW5pdGUobykmJk51bWJlci5pc0Zpbml0ZShuKSYmKGg9byxjPW4pO3ZhciB4PVwiXCIsYj1cIlwiLHY9bC5nbG9iYWxzLmNvbG9yc1tzXTtpZih2b2lkIDA9PT1sLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKWlmKFwiZGF0ZXRpbWVcIj09PWwuY29uZmlnLnhheGlzLnR5cGUpe3ZhciBtPW5ldyBJKGEpO3g9bS5mb3JtYXREYXRlKG0uZ2V0RGF0ZShoKSxsLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KSxiPW0uZm9ybWF0RGF0ZShtLmdldERhdGUoYyksbC5jb25maWcudG9vbHRpcC54LmZvcm1hdCl9ZWxzZSB4PWgsYj1jO2Vsc2UgeD1sLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKGgpLGI9bC5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlcihjKTtyZXR1cm57c3RhcnQ6aCxlbmQ6YyxzdGFydFZhbDp4LGVuZFZhbDpiLHlsYWJlbDpkLGNvbG9yOnYsc2VyaWVzTmFtZTpnfX0sej1mdW5jdGlvbih0KXt2YXIgZT10LmNvbG9yLGk9dC5zZXJpZXNOYW1lLGE9dC55bGFiZWwscz10LnN0YXJ0LHI9dC5lbmQsbz10LnNlcmllc0luZGV4LG49dC5kYXRhUG9pbnRJbmRleCxsPXQuY3R4LnRvb2x0aXAudG9vbHRpcExhYmVscy5nZXRGb3JtYXR0ZXJzKG8pO3M9bC55TGJGb3JtYXR0ZXIocykscj1sLnlMYkZvcm1hdHRlcihyKTt2YXIgaD1sLnlMYkZvcm1hdHRlcih0LncuZ2xvYmFscy5zZXJpZXNbb11bbl0pLGM9JzxzcGFuIGNsYXNzPVwidmFsdWUgc3RhcnQtdmFsdWVcIj5cXG4gICcuY29uY2F0KHMsJ1xcbiAgPC9zcGFuPiA8c3BhbiBjbGFzcz1cInNlcGFyYXRvclwiPi08L3NwYW4+IDxzcGFuIGNsYXNzPVwidmFsdWUgZW5kLXZhbHVlXCI+XFxuICAnKS5jb25jYXQocixcIlxcbiAgPC9zcGFuPlwiKTtyZXR1cm4nPGRpdiBjbGFzcz1cImFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhclwiPjxkaXY+IDxzcGFuIGNsYXNzPVwic2VyaWVzLW5hbWVcIiBzdHlsZT1cImNvbG9yOiAnK2UrJ1wiPicrKGl8fFwiXCIpKyc8L3NwYW4+PC9kaXY+PGRpdj4gPHNwYW4gY2xhc3M9XCJjYXRlZ29yeVwiPicrYStcIjogPC9zcGFuPiBcIisodC53Lmdsb2JhbHMuY29tYm9DaGFydHM/XCJyYW5nZUFyZWFcIj09PXQudy5jb25maWcuc2VyaWVzW29dLnR5cGV8fFwicmFuZ2VCYXJcIj09PXQudy5jb25maWcuc2VyaWVzW29dLnR5cGU/YzpcIjxzcGFuPlwiLmNvbmNhdChoLFwiPC9zcGFuPlwiKTpjKStcIiA8L2Rpdj48L2Rpdj5cIn0sWD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMub3B0cz1lfXJldHVybiByKHQsW3trZXk6XCJoaWRlWUF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMub3B0cy55YXhpc1swXS5zaG93PSExLHRoaXMub3B0cy55YXhpc1swXS50aXRsZS50ZXh0PVwiXCIsdGhpcy5vcHRzLnlheGlzWzBdLmF4aXNCb3JkZXIuc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0uYXhpc1RpY2tzLnNob3c9ITEsdGhpcy5vcHRzLnlheGlzWzBdLmZsb2F0aW5nPSEwfX0se2tleTpcImxpbmVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7ZWFzaW5nOlwic3dpbmdcIn19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6NSxjdXJ2ZTpcInN0cmFpZ2h0XCJ9LG1hcmtlcnM6e3NpemU6MCxob3Zlcjp7c2l6ZU9mZnNldDo2fX0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5Olwic3BhcmtsaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5oaWRlWUF4aXMoKTtyZXR1cm4geC5leHRlbmQodCx7Z3JpZDp7c2hvdzohMSxwYWRkaW5nOntsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH19LGxlZ2VuZDp7c2hvdzohMX0seGF4aXM6e2xhYmVsczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0sYXhpc0JvcmRlcjp7c2hvdzohMX0sYXhpc1RpY2tzOntzaG93OiExfX0sY2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfX0pfX0se2tleTpcImJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OntzdGFja2VkOiExLGFuaW1hdGlvbnM6e2Vhc2luZzpcInN3aW5nXCJ9fSxwbG90T3B0aW9uczp7YmFyOntkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX19LHN0cm9rZTp7d2lkdGg6MCxsaW5lQ2FwOlwicm91bmRcIn0sZmlsbDp7b3BhY2l0eTouODV9LGxlZ2VuZDp7bWFya2Vyczp7c2hhcGU6XCJzcXVhcmVcIixyYWRpdXM6MixzaXplOjh9fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7dG9vbHRpcDp7ZW5hYmxlZDohMX0sdGlja1BsYWNlbWVudDpcImJldHdlZW5cIixjcm9zc2hhaXJzOnt3aWR0aDpcImJhcldpZHRoXCIscG9zaXRpb246XCJiYWNrXCIsZmlsbDp7dHlwZTpcImdyYWRpZW50XCJ9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6MH19fX19fSx7a2V5OlwiZnVubmVsXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWRlWUF4aXMoKSxlKGUoe30sdGhpcy5iYXIoKSkse30se2NoYXJ0OnthbmltYXRpb25zOntlYXNpbmc6XCJsaW5lYXJcIixzcGVlZDo4MDAsYW5pbWF0ZUdyYWR1YWxseTp7ZW5hYmxlZDohMX19fSxwbG90T3B0aW9uczp7YmFyOntob3Jpem9udGFsOiEwLGJvcmRlclJhZGl1c0FwcGxpY2F0aW9uOlwiYXJvdW5kXCIsYm9yZGVyUmFkaXVzOjAsZGF0YUxhYmVsczp7cG9zaXRpb246XCJjZW50ZXJcIn19fSxncmlkOntzaG93OiExLHBhZGRpbmc6e2xlZnQ6MCxyaWdodDowfX0seGF4aXM6e2xhYmVsczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0sYXhpc0JvcmRlcjp7c2hvdzohMX0sYXhpc1RpY2tzOntzaG93OiExfX19KX19LHtrZXk6XCJjYW5kbGVzdGlja1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm57c3Ryb2tlOnt3aWR0aDoxLGNvbG9yczpbXCIjMzMzXCJdfSxmaWxsOntvcGFjaXR5OjF9LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHRvb2x0aXA6e3NoYXJlZDohMCxjdXN0b206ZnVuY3Rpb24oZSl7dmFyIGk9ZS5zZXJpZXNJbmRleCxhPWUuZGF0YVBvaW50SW5kZXgscz1lLnc7cmV0dXJuIHQuX2dldEJveFRvb2x0aXAocyxpLGEsW1wiT3BlblwiLFwiSGlnaFwiLFwiXCIsXCJMb3dcIixcIkNsb3NlXCJdLFwiY2FuZGxlc3RpY2tcIil9fSxzdGF0ZXM6e2FjdGl2ZTp7ZmlsdGVyOnt0eXBlOlwibm9uZVwifX19LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDoxfX19fX0se2tleTpcImJveFBsb3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntkeW5hbWljQW5pbWF0aW9uOntlbmFibGVkOiExfX19LHN0cm9rZTp7d2lkdGg6MSxjb2xvcnM6W1wiIzI0MjkyZVwiXX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiEwLGN1c3RvbTpmdW5jdGlvbihlKXt2YXIgaT1lLnNlcmllc0luZGV4LGE9ZS5kYXRhUG9pbnRJbmRleCxzPWUudztyZXR1cm4gdC5fZ2V0Qm94VG9vbHRpcChzLGksYSxbXCJNaW5pbXVtXCIsXCJRMVwiLFwiTWVkaWFuXCIsXCJRM1wiLFwiTWF4aW11bVwiXSxcImJveFBsb3RcIil9fSxtYXJrZXJzOntzaXplOjUsc3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcnM6XCIjMTExXCJ9LHhheGlzOntjcm9zc2hhaXJzOnt3aWR0aDoxfX19fX0se2tleTpcInJhbmdlQmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2FuaW1hdGVHcmFkdWFsbHk6ITF9fSxzdHJva2U6e3dpZHRoOjAsbGluZUNhcDpcInNxdWFyZVwifSxwbG90T3B0aW9uczp7YmFyOntib3JkZXJSYWRpdXM6MCxkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsZm9ybWF0dGVyOmZ1bmN0aW9uKHQsZSl7ZS5jdHg7dmFyIGk9ZS5zZXJpZXNJbmRleCxhPWUuZGF0YVBvaW50SW5kZXgscz1lLncscj1mdW5jdGlvbigpe3ZhciB0PXMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W2ldW2FdO3JldHVybiBzLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbaV1bYV0tdH07cmV0dXJuIHMuZ2xvYmFscy5jb21ib0NoYXJ0cz9cInJhbmdlQmFyXCI9PT1zLmNvbmZpZy5zZXJpZXNbaV0udHlwZXx8XCJyYW5nZUFyZWFcIj09PXMuY29uZmlnLnNlcmllc1tpXS50eXBlP3IoKTp0OnIoKX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfX0sbWFya2Vyczp7c2l6ZToxMH0sdG9vbHRpcDp7c2hhcmVkOiExLGZvbGxvd0N1cnNvcjohMCxjdXN0b206ZnVuY3Rpb24odCl7cmV0dXJuIHQudy5jb25maWcucGxvdE9wdGlvbnMmJnQudy5jb25maWcucGxvdE9wdGlvbnMuYmFyJiZ0LncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsP2Z1bmN0aW9uKHQpe3ZhciBpPVQoZShlKHt9LHQpLHt9LHtpc1RpbWVsaW5lOiEwfSkpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG89aS5zdGFydFZhbCxuPWkuZW5kVmFsO3JldHVybiB6KGUoZSh7fSx0KSx7fSx7Y29sb3I6YSxzZXJpZXNOYW1lOnMseWxhYmVsOnIsc3RhcnQ6byxlbmQ6bn0pKX0odCk6ZnVuY3Rpb24odCl7dmFyIGk9VCh0KSxhPWkuY29sb3Iscz1pLnNlcmllc05hbWUscj1pLnlsYWJlbCxvPWkuc3RhcnQsbj1pLmVuZDtyZXR1cm4geihlKGUoe30sdCkse30se2NvbG9yOmEsc2VyaWVzTmFtZTpzLHlsYWJlbDpyLHN0YXJ0Om8sZW5kOm59KSl9KHQpfX0seGF4aXM6e3RpY2tQbGFjZW1lbnQ6XCJiZXR3ZWVuXCIsdG9vbHRpcDp7ZW5hYmxlZDohMX0sY3Jvc3NoYWlyczp7c3Ryb2tlOnt3aWR0aDowfX19fX19LHtrZXk6XCJkdW1iYmVsbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk7cmV0dXJuIG51bGwhPT0oZT10LnBsb3RPcHRpb25zLmJhcikmJnZvaWQgMCE9PWUmJmUuYmFySGVpZ2h0fHwodC5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0PTIpLG51bGwhPT0oaT10LnBsb3RPcHRpb25zLmJhcikmJnZvaWQgMCE9PWkmJmkuY29sdW1uV2lkdGh8fCh0LnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aD0yKSx0fX0se2tleTpcImFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntzdHJva2U6e3dpZHRoOjQsZmlsbDp7dHlwZTpcInNvbGlkXCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6XCJsaWdodFwiLHR5cGU6XCJ2ZXJ0aWNhbFwiLG9wYWNpdHlGcm9tOi42NSxvcGFjaXR5VG86LjUsc3RvcHM6WzAsMTAwLDEwMF19fX0sZmlsbDp7dHlwZTpcImdyYWRpZW50XCIsZ3JhZGllbnQ6e2ludmVyc2VDb2xvcnM6ITEsc2hhZGU6XCJsaWdodFwiLHR5cGU6XCJ2ZXJ0aWNhbFwiLG9wYWNpdHlGcm9tOi42NSxvcGFjaXR5VG86LjUsc3RvcHM6WzAsMTAwLDEwMF19fSxtYXJrZXJzOntzaXplOjAsaG92ZXI6e3NpemVPZmZzZXQ6Nn19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMX19fX0se2tleTpcInJhbmdlQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7Y3VydmU6XCJzdHJhaWdodFwiLHdpZHRoOjB9LGZpbGw6e3R5cGU6XCJzb2xpZFwiLG9wYWNpdHk6LjZ9LG1hcmtlcnM6e3NpemU6MH0sc3RhdGVzOntob3Zlcjp7ZmlsdGVyOnt0eXBlOlwibm9uZVwifX0sYWN0aXZlOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fX0sdG9vbHRpcDp7aW50ZXJzZWN0OiExLHNoYXJlZDohMCxmb2xsb3dDdXJzb3I6ITAsY3VzdG9tOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgaT1UKHQpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG89aS5zdGFydCxuPWkuZW5kO3JldHVybiB6KGUoZSh7fSx0KSx7fSx7Y29sb3I6YSxzZXJpZXNOYW1lOnMseWxhYmVsOnIsc3RhcnQ6byxlbmQ6bn0pKX0odCl9fX19fSx7a2V5OlwiYnJ1c2hcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4geC5leHRlbmQodCx7Y2hhcnQ6e3Rvb2xiYXI6e2F1dG9TZWxlY3RlZDpcInNlbGVjdGlvblwiLHNob3c6ITF9LHpvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSxzdHJva2U6e3dpZHRoOjF9LHRvb2x0aXA6e2VuYWJsZWQ6ITF9LHhheGlzOnt0b29sdGlwOntlbmFibGVkOiExfX19KX19LHtrZXk6XCJzdGFja2VkMTAwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5kYXRhTGFiZWxzPXQuZGF0YUxhYmVsc3x8e30sdC5kYXRhTGFiZWxzLmZvcm1hdHRlcj10LmRhdGFMYWJlbHMuZm9ybWF0dGVyfHx2b2lkIDA7dmFyIGU9dC5kYXRhTGFiZWxzLmZvcm1hdHRlcjtyZXR1cm4gdC55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3QueWF4aXNbaV0ubWluPTAsdC55YXhpc1tpXS5tYXg9MTAwfSkpLFwiYmFyXCI9PT10LmNoYXJ0LnR5cGUmJih0LmRhdGFMYWJlbHMuZm9ybWF0dGVyPWV8fGZ1bmN0aW9uKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0P3QudG9GaXhlZCgwKStcIiVcIjp0fSksdH19LHtrZXk6XCJzdGFja2VkQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5iYXIoKTtyZXR1cm4gZShlKHt9LHQpLHt9LHtwbG90T3B0aW9uczplKGUoe30sdC5wbG90T3B0aW9ucykse30se2JhcjplKGUoe30sdC5wbG90T3B0aW9ucy5iYXIpLHt9LHtib3JkZXJSYWRpdXNBcHBsaWNhdGlvbjpcImVuZFwiLGJvcmRlclJhZGl1c1doZW5TdGFja2VkOlwibGFzdFwifSl9KX0pfX0se2tleTpcImNvbnZlcnRDYXRUb051bWVyaWNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM9ITAsdH19LHtrZXk6XCJjb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dC54YXhpcy50eXBlPVwibnVtZXJpY1wiLHQueGF4aXMubGFiZWxzPXQueGF4aXMubGFiZWxzfHx7fSx0LnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9dC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyfHxmdW5jdGlvbih0KXtyZXR1cm4geC5pc051bWJlcih0KT9NYXRoLmZsb29yKHQpOnR9O3ZhciBhPXQueGF4aXMubGFiZWxzLmZvcm1hdHRlcixzPXQueGF4aXMuY2F0ZWdvcmllcyYmdC54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD90LnhheGlzLmNhdGVnb3JpZXM6dC5sYWJlbHM7cmV0dXJuIGkmJmkubGVuZ3RoJiYocz1pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dDpTdHJpbmcodCl9KSkpLHMmJnMubGVuZ3RoJiYodC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiB4LmlzTnVtYmVyKHQpP2Eoc1tNYXRoLmZsb29yKHQpLTFdKTphKHQpfSksdC54YXhpcy5jYXRlZ29yaWVzPVtdLHQubGFiZWxzPVtdLHQueGF4aXMudGlja0Ftb3VudD10LnhheGlzLnRpY2tBbW91bnR8fFwiZGF0YVBvaW50c1wiLHR9fSx7a2V5OlwiYnViYmxlXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfX0sdG9vbHRpcDp7c2hhcmVkOiExLGludGVyc2VjdDohMH0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjB9fSxmaWxsOnt0eXBlOlwic29saWRcIixncmFkaWVudDp7c2hhZGU6XCJsaWdodFwiLGludmVyc2U6ITAsc2hhZGVJbnRlbnNpdHk6LjU1LG9wYWNpdHlGcm9tOi40LG9wYWNpdHlUbzouOH19fX19LHtrZXk6XCJzY2F0dGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiExLGludGVyc2VjdDohMH0sbWFya2Vyczp7c2l6ZTo2LHN0cm9rZVdpZHRoOjEsaG92ZXI6e3NpemVPZmZzZXQ6Mn19fX19LHtrZXk6XCJoZWF0bWFwXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3N0YWNrZWQ6ITF9LGZpbGw6e29wYWNpdHk6MX0sZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfX0sc3Ryb2tlOntjb2xvcnM6W1wiI2ZmZlwiXX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiEwLG1hcmtlcjp7c2hvdzohMX0seDp7c2hvdzohMX19LGxlZ2VuZDp7cG9zaXRpb246XCJ0b3BcIixtYXJrZXJzOntzaGFwZTpcInNxdWFyZVwiLHNpemU6MTAsb2Zmc2V0WToyfX0sZ3JpZDp7cGFkZGluZzp7cmlnaHQ6MjB9fX19fSx7a2V5OlwidHJlZW1hcFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0Ont6b29tOntlbmFibGVkOiExfX0sZGF0YUxhYmVsczp7c3R5bGU6e2ZvbnRTaXplOjE0LGZvbnRXZWlnaHQ6NjAwLGNvbG9yczpbXCIjZmZmXCJdfX0sc3Ryb2tlOntzaG93OiEwLHdpZHRoOjIsY29sb3JzOltcIiNmZmZcIl19LGxlZ2VuZDp7c2hvdzohMX0sZmlsbDp7Z3JhZGllbnQ6e3N0b3BzOlswLDEwMF19fSx0b29sdGlwOntmb2xsb3dDdXJzb3I6ITAseDp7c2hvdzohMX19LGdyaWQ6e3BhZGRpbmc6e2xlZnQ6MCxyaWdodDowfX0seGF4aXM6e2Nyb3NzaGFpcnM6e3Nob3c6ITF9LHRvb2x0aXA6e2VuYWJsZWQ6ITF9fX19fSx7a2V5OlwicGllXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxwbG90T3B0aW9uczp7cGllOntkb251dDp7bGFiZWxzOntzaG93OiExfX19fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9GaXhlZCgxKStcIiVcIn0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxkcm9wU2hhZG93OntlbmFibGVkOiEwfX0sc3Ryb2tlOntjb2xvcnM6W1wiI2ZmZlwiXX0sZmlsbDp7b3BhY2l0eToxLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsc3RvcHM6WzAsMTAwXX19LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJkb251dFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0Ont0b29sYmFyOntzaG93OiExfX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvRml4ZWQoMSkrXCIlXCJ9LHN0eWxlOntjb2xvcnM6W1wiI2ZmZlwiXX0sYmFja2dyb3VuZDp7ZW5hYmxlZDohMX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMH19LHN0cm9rZTp7Y29sb3JzOltcIiNmZmZcIl19LGZpbGw6e29wYWNpdHk6MSxncmFkaWVudDp7c2hhZGU6XCJsaWdodFwiLHNoYWRlSW50ZW5zaXR5Oi4zNSxzdG9wczpbODAsMTAwXSxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxfX0sdG9vbHRpcDp7dGhlbWU6XCJkYXJrXCIsZmlsbFNlcmllc0NvbG9yOiEwfSxsZWdlbmQ6e3Bvc2l0aW9uOlwicmlnaHRcIn19fX0se2tleTpcInBvbGFyQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0cy55YXhpc1swXS50aWNrQW1vdW50PXRoaXMub3B0cy55YXhpc1swXS50aWNrQW1vdW50P3RoaXMub3B0cy55YXhpc1swXS50aWNrQW1vdW50OjYse2NoYXJ0Ont0b29sYmFyOntzaG93OiExfX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvRml4ZWQoMSkrXCIlXCJ9LGVuYWJsZWQ6ITF9LHN0cm9rZTp7c2hvdzohMCx3aWR0aDoyfSxmaWxsOntvcGFjaXR5Oi43fSx0b29sdGlwOnt0aGVtZTpcImRhcmtcIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246XCJyaWdodFwifX19fSx7a2V5OlwicmFkYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk9dGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZP3RoaXMub3B0cy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WTo2LHtkYXRhTGFiZWxzOntlbmFibGVkOiExLHN0eWxlOntmb250U2l6ZTpcIjExcHhcIn19LHN0cm9rZTp7d2lkdGg6Mn0sbWFya2Vyczp7c2l6ZTozLHN0cm9rZVdpZHRoOjEsc3Ryb2tlT3BhY2l0eToxfSxmaWxsOntvcGFjaXR5Oi4yfSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwLGZvbGxvd0N1cnNvcjohMH0sZ3JpZDp7c2hvdzohMX0seGF4aXM6e2xhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxzdHlsZTp7Y29sb3JzOltcIiNhOGE4YThcIl0sZm9udFNpemU6XCIxMXB4XCJ9fSx0b29sdGlwOntlbmFibGVkOiExfSxjcm9zc2hhaXJzOntzaG93OiExfX19fX0se2tleTpcInJhZGlhbEJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntkeW5hbWljQW5pbWF0aW9uOntlbmFibGVkOiEwLHNwZWVkOjgwMH19LHRvb2xiYXI6e3Nob3c6ITF9fSxmaWxsOntncmFkaWVudDp7c2hhZGU6XCJkYXJrXCIsc2hhZGVJbnRlbnNpdHk6LjQsaW52ZXJzZUNvbG9yczohMSx0eXBlOlwiZGlhZ29uYWwyXCIsb3BhY2l0eUZyb206MSxvcGFjaXR5VG86MSxzdG9wczpbNzAsOTgsMTAwXX19LGxlZ2VuZDp7c2hvdzohMSxwb3NpdGlvbjpcInJpZ2h0XCJ9LHRvb2x0aXA6e2VuYWJsZWQ6ITEsZmlsbFNlcmllc0NvbG9yOiEwfX19fSx7a2V5OlwiX2dldEJveFRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3ZhciByPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2VdW2ldLG89dC5nbG9iYWxzLnNlcmllc0NhbmRsZUhbZV1baV0sbj10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVtlXVtpXSxsPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW2ldLGg9dC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1baV07cmV0dXJuIHQuY29uZmlnLnNlcmllc1tlXS50eXBlJiZ0LmNvbmZpZy5zZXJpZXNbZV0udHlwZSE9PXM/JzxkaXYgY2xhc3M9XCJhcGV4Y2hhcnRzLWN1c3RvbS10b29sdGlwXCI+XFxuICAgICAgICAgICcuY29uY2F0KHQuY29uZmlnLnNlcmllc1tlXS5uYW1lP3QuY29uZmlnLnNlcmllc1tlXS5uYW1lOlwic2VyaWVzLVwiKyhlKzEpLFwiOiA8c3Ryb25nPlwiKS5jb25jYXQodC5nbG9iYWxzLnNlcmllc1tlXVtpXSxcIjwvc3Ryb25nPlxcbiAgICAgICAgPC9kaXY+XCIpOic8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLWJveCBhcGV4Y2hhcnRzLXRvb2x0aXAtJy5jb25jYXQodC5jb25maWcuY2hhcnQudHlwZSwnXCI+JykrXCI8ZGl2PlwiLmNvbmNhdChhWzBdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStyK1wiPC9zcGFuPjwvZGl2PlwiK1wiPGRpdj5cIi5jb25jYXQoYVsxXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrbytcIjwvc3Bhbj48L2Rpdj5cIisobj9cIjxkaXY+XCIuY29uY2F0KGFbMl0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK24rXCI8L3NwYW4+PC9kaXY+XCI6XCJcIikrXCI8ZGl2PlwiLmNvbmNhdChhWzNdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStsK1wiPC9zcGFuPjwvZGl2PlwiK1wiPGRpdj5cIi5jb25jYXQoYVs0XSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykraCtcIjwvc3Bhbj48L2Rpdj48L2Rpdj5cIn19XSksdH0oKSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5vcHRzPWV9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnJlc3BvbnNpdmVPdmVycmlkZSxhPXRoaXMub3B0cyxzPW5ldyBMLHI9bmV3IFgoYSk7dGhpcy5jaGFydFR5cGU9YS5jaGFydC50eXBlLGE9dGhpcy5leHRlbmRZQXhpcyhhKSxhPXRoaXMuZXh0ZW5kQW5ub3RhdGlvbnMoYSk7dmFyIG89cy5pbml0KCksbj17fTtpZihhJiZcIm9iamVjdFwiPT09aShhKSl7dmFyIGwsaCxjLGQsZyx1LHAsZixiLHYsbT17fTttPS0xIT09W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiYnViYmxlXCIsXCJzY2F0dGVyXCIsXCJoZWF0bWFwXCIsXCJ0cmVlbWFwXCIsXCJwaWVcIixcInBvbGFyQXJlYVwiLFwiZG9udXRcIixcInJhZGFyXCIsXCJyYWRpYWxCYXJcIl0uaW5kZXhPZihhLmNoYXJ0LnR5cGUpP3JbYS5jaGFydC50eXBlXSgpOnIubGluZSgpLG51bGwhPT0obD1hLnBsb3RPcHRpb25zKSYmdm9pZCAwIT09bCYmbnVsbCE9PShoPWwuYmFyKSYmdm9pZCAwIT09aCYmaC5pc0Z1bm5lbCYmKG09ci5mdW5uZWwoKSksYS5jaGFydC5zdGFja2VkJiZcImJhclwiPT09YS5jaGFydC50eXBlJiYobT1yLnN0YWNrZWRCYXJzKCkpLG51bGwhPT0oYz1hLmNoYXJ0LmJydXNoKSYmdm9pZCAwIT09YyYmYy5lbmFibGVkJiYobT1yLmJydXNoKG0pKSxhLmNoYXJ0LnN0YWNrZWQmJlwiMTAwJVwiPT09YS5jaGFydC5zdGFja1R5cGUmJihhPXIuc3RhY2tlZDEwMChhKSksbnVsbCE9PShkPWEucGxvdE9wdGlvbnMpJiZ2b2lkIDAhPT1kJiZudWxsIT09KGc9ZC5iYXIpJiZ2b2lkIDAhPT1nJiZnLmlzRHVtYmJlbGwmJihhPXIuZHVtYmJlbGwoYSkpLFwibW9ub3RvbmVDdWJpY1wiPT09KG51bGw9PT0odT1hKXx8dm9pZCAwPT09dXx8bnVsbD09PShwPXUuc3Ryb2tlKXx8dm9pZCAwPT09cD92b2lkIDA6cC5jdXJ2ZSkmJihhLnN0cm9rZS5jdXJ2ZT1cInNtb290aFwiKSx0aGlzLmNoZWNrRm9yRGFya1RoZW1lKHdpbmRvdy5BcGV4KSx0aGlzLmNoZWNrRm9yRGFya1RoZW1lKGEpLGEueGF4aXM9YS54YXhpc3x8d2luZG93LkFwZXgueGF4aXN8fHt9LGV8fChhLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz0hMSksKG51bGwhPT0oZj0oYT10aGlzLmNoZWNrRm9yQ2F0VG9OdW1lcmljWEF4aXModGhpcy5jaGFydFR5cGUsbSxhKSkuY2hhcnQuc3BhcmtsaW5lKSYmdm9pZCAwIT09ZiYmZi5lbmFibGVkfHxudWxsIT09KGI9d2luZG93LkFwZXguY2hhcnQpJiZ2b2lkIDAhPT1iJiZudWxsIT09KHY9Yi5zcGFya2xpbmUpJiZ2b2lkIDAhPT12JiZ2LmVuYWJsZWQpJiYobT1yLnNwYXJrbGluZShtKSksbj14LmV4dGVuZChvLG0pfXZhciB5PXguZXh0ZW5kKG4sd2luZG93LkFwZXgpO3JldHVybiBvPXguZXh0ZW5kKHksYSksbz10aGlzLmhhbmRsZVVzZXJJbnB1dEVycm9ycyhvKX19LHtrZXk6XCJjaGVja0ZvckNhdFRvTnVtZXJpY1hBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhLHMscj1uZXcgWChpKSxvPShcImJhclwiPT09dHx8XCJib3hQbG90XCI9PT10KSYmKG51bGw9PT0oYT1pLnBsb3RPcHRpb25zKXx8dm9pZCAwPT09YXx8bnVsbD09PShzPWEuYmFyKXx8dm9pZCAwPT09cz92b2lkIDA6cy5ob3Jpem9udGFsKSxuPVwicGllXCI9PT10fHxcInBvbGFyQXJlYVwiPT09dHx8XCJkb251dFwiPT09dHx8XCJyYWRhclwiPT09dHx8XCJyYWRpYWxCYXJcIj09PXR8fFwiaGVhdG1hcFwiPT09dCxsPVwiZGF0ZXRpbWVcIiE9PWkueGF4aXMudHlwZSYmXCJudW1lcmljXCIhPT1pLnhheGlzLnR5cGUsaD1pLnhheGlzLnRpY2tQbGFjZW1lbnQ/aS54YXhpcy50aWNrUGxhY2VtZW50OmUueGF4aXMmJmUueGF4aXMudGlja1BsYWNlbWVudDtyZXR1cm4gb3x8bnx8IWx8fFwiYmV0d2VlblwiPT09aHx8KGk9ci5jb252ZXJ0Q2F0VG9OdW1lcmljKGkpKSxpfX0se2tleTpcImV4dGVuZFlBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1uZXcgTDsodm9pZCAwPT09dC55YXhpc3x8IXQueWF4aXN8fEFycmF5LmlzQXJyYXkodC55YXhpcykmJjA9PT10LnlheGlzLmxlbmd0aCkmJih0LnlheGlzPXt9KSx0LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXkmJndpbmRvdy5BcGV4LnlheGlzJiZ3aW5kb3cuQXBleC55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5JiYodC55YXhpcz14LmV4dGVuZCh0LnlheGlzLHdpbmRvdy5BcGV4LnlheGlzKSksdC55YXhpcy5jb25zdHJ1Y3RvciE9PUFycmF5P3QueWF4aXM9W3guZXh0ZW5kKGkueUF4aXMsdC55YXhpcyldOnQueWF4aXM9eC5leHRlbmRBcnJheSh0LnlheGlzLGkueUF4aXMpO3ZhciBhPSExO3QueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5sb2dhcml0aG1pYyYmKGE9ITApfSkpO3ZhciBzPXQuc2VyaWVzO3JldHVybiBlJiYhcyYmKHM9ZS5jb25maWcuc2VyaWVzKSxhJiZzLmxlbmd0aCE9PXQueWF4aXMubGVuZ3RoJiZzLmxlbmd0aCYmKHQueWF4aXM9cy5tYXAoKGZ1bmN0aW9uKGUsYSl7aWYoZS5uYW1lfHwoc1thXS5uYW1lPVwic2VyaWVzLVwiLmNvbmNhdChhKzEpKSx0LnlheGlzW2FdKXJldHVybiB0LnlheGlzW2FdLnNlcmllc05hbWU9c1thXS5uYW1lLHQueWF4aXNbYV07dmFyIHI9eC5leHRlbmQoaS55QXhpcyx0LnlheGlzWzBdKTtyZXR1cm4gci5zaG93PSExLHJ9KSkpLGEmJnMubGVuZ3RoPjEmJnMubGVuZ3RoIT09dC55YXhpcy5sZW5ndGgmJmNvbnNvbGUud2FybihcIkEgbXVsdGktc2VyaWVzIGxvZ2FyaXRobWljIGNoYXJ0IHNob3VsZCBoYXZlIGVxdWFsIG51bWJlciBvZiBzZXJpZXMgYW5kIHktYXhlc1wiKSx0fX0se2tleTpcImV4dGVuZEFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQuYW5ub3RhdGlvbnMmJih0LmFubm90YXRpb25zPXt9LHQuYW5ub3RhdGlvbnMueWF4aXM9W10sdC5hbm5vdGF0aW9ucy54YXhpcz1bXSx0LmFubm90YXRpb25zLnBvaW50cz1bXSksdD10aGlzLmV4dGVuZFlBeGlzQW5ub3RhdGlvbnModCksdD10aGlzLmV4dGVuZFhBeGlzQW5ub3RhdGlvbnModCksdD10aGlzLmV4dGVuZFBvaW50QW5ub3RhdGlvbnModCl9fSx7a2V5OlwiZXh0ZW5kWUF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBMO3JldHVybiB0LmFubm90YXRpb25zLnlheGlzPXguZXh0ZW5kQXJyYXkodm9pZCAwIT09dC5hbm5vdGF0aW9ucy55YXhpcz90LmFubm90YXRpb25zLnlheGlzOltdLGUueUF4aXNBbm5vdGF0aW9uKSx0fX0se2tleTpcImV4dGVuZFhBeGlzQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgTDtyZXR1cm4gdC5hbm5vdGF0aW9ucy54YXhpcz14LmV4dGVuZEFycmF5KHZvaWQgMCE9PXQuYW5ub3RhdGlvbnMueGF4aXM/dC5hbm5vdGF0aW9ucy54YXhpczpbXSxlLnhBeGlzQW5ub3RhdGlvbiksdH19LHtrZXk6XCJleHRlbmRQb2ludEFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEw7cmV0dXJuIHQuYW5ub3RhdGlvbnMucG9pbnRzPXguZXh0ZW5kQXJyYXkodm9pZCAwIT09dC5hbm5vdGF0aW9ucy5wb2ludHM/dC5hbm5vdGF0aW9ucy5wb2ludHM6W10sZS5wb2ludEFubm90YXRpb24pLHR9fSx7a2V5OlwiY2hlY2tGb3JEYXJrVGhlbWVcIix2YWx1ZTpmdW5jdGlvbih0KXt0LnRoZW1lJiZcImRhcmtcIj09PXQudGhlbWUubW9kZSYmKHQudG9vbHRpcHx8KHQudG9vbHRpcD17fSksXCJsaWdodFwiIT09dC50b29sdGlwLnRoZW1lJiYodC50b29sdGlwLnRoZW1lPVwiZGFya1wiKSx0LmNoYXJ0LmZvcmVDb2xvcnx8KHQuY2hhcnQuZm9yZUNvbG9yPVwiI2Y2ZjdmOFwiKSx0LmNoYXJ0LmJhY2tncm91bmR8fCh0LmNoYXJ0LmJhY2tncm91bmQ9XCIjNDI0MjQyXCIpLHQudGhlbWUucGFsZXR0ZXx8KHQudGhlbWUucGFsZXR0ZT1cInBhbGV0dGU0XCIpKX19LHtrZXk6XCJoYW5kbGVVc2VySW5wdXRFcnJvcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10O2lmKGUudG9vbHRpcC5zaGFyZWQmJmUudG9vbHRpcC5pbnRlcnNlY3QpdGhyb3cgbmV3IEVycm9yKFwidG9vbHRpcC5zaGFyZWQgY2Fubm90IGJlIGVuYWJsZWQgd2hlbiB0b29sdGlwLmludGVyc2VjdCBpcyB0cnVlLiBUdXJuIG9mZiBhbnkgb3RoZXIgb3B0aW9uIGJ5IHNldHRpbmcgaXQgdG8gZmFsc2UuXCIpO2lmKFwiYmFyXCI9PT1lLmNoYXJ0LnR5cGUmJmUucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwpe2lmKGUueWF4aXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKFwiTXVsdGlwbGUgWSBBeGlzIGZvciBiYXJzIGFyZSBub3Qgc3VwcG9ydGVkLiBTd2l0Y2ggdG8gY29sdW1uIGNoYXJ0IGJ5IHNldHRpbmcgcGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw9ZmFsc2VcIik7ZS55YXhpc1swXS5yZXZlcnNlZCYmKGUueWF4aXNbMF0ub3Bwb3NpdGU9ITApLGUueGF4aXMudG9vbHRpcC5lbmFibGVkPSExLGUueWF4aXNbMF0udG9vbHRpcC5lbmFibGVkPSExLGUuY2hhcnQuem9vbS5lbmFibGVkPSExfXJldHVyblwiYmFyXCIhPT1lLmNoYXJ0LnR5cGUmJlwicmFuZ2VCYXJcIiE9PWUuY2hhcnQudHlwZXx8ZS50b29sdGlwLnNoYXJlZCYmXCJiYXJXaWR0aFwiPT09ZS54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiZlLnNlcmllcy5sZW5ndGg+MSYmKGUueGF4aXMuY3Jvc3NoYWlycy53aWR0aD1cInRpY2tXaWR0aFwiKSxcImNhbmRsZXN0aWNrXCIhPT1lLmNoYXJ0LnR5cGUmJlwiYm94UGxvdFwiIT09ZS5jaGFydC50eXBlfHxlLnlheGlzWzBdLnJldmVyc2VkJiYoY29uc29sZS53YXJuKFwiUmV2ZXJzZWQgeS1heGlzIGluIFwiLmNvbmNhdChlLmNoYXJ0LnR5cGUsXCIgY2hhcnQgaXMgbm90IHN1cHBvcnRlZC5cIikpLGUueWF4aXNbMF0ucmV2ZXJzZWQ9ITEpLGV9fV0pLHR9KCksWT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXthKHRoaXMsdCl9cmV0dXJuIHIodCxbe2tleTpcImluaXRHbG9iYWxWYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC5zZXJpZXM9W10sdC5zZXJpZXNDYW5kbGVPPVtdLHQuc2VyaWVzQ2FuZGxlSD1bXSx0LnNlcmllc0NhbmRsZU09W10sdC5zZXJpZXNDYW5kbGVMPVtdLHQuc2VyaWVzQ2FuZGxlQz1bXSx0LnNlcmllc1JhbmdlU3RhcnQ9W10sdC5zZXJpZXNSYW5nZUVuZD1bXSx0LnNlcmllc1JhbmdlPVtdLHQuc2VyaWVzUGVyY2VudD1bXSx0LnNlcmllc0dvYWxzPVtdLHQuc2VyaWVzWD1bXSx0LnNlcmllc1o9W10sdC5zZXJpZXNOYW1lcz1bXSx0LnNlcmllc1RvdGFscz1bXSx0LnNlcmllc0xvZz1bXSx0LnNlcmllc0NvbG9ycz1bXSx0LnN0YWNrZWRTZXJpZXNUb3RhbHM9W10sdC5zZXJpZXNYdmFsdWVzPVtdLHQuc2VyaWVzWXZhbHVlcz1bXSx0LmxhYmVscz1bXSx0Lmhhc1hheGlzR3JvdXBzPSExLHQuZ3JvdXBzPVtdLHQuaGFzU2VyaWVzR3JvdXBzPSExLHQuc2VyaWVzR3JvdXBzPVtdLHQuY2F0ZWdvcnlMYWJlbHM9W10sdC50aW1lc2NhbGVMYWJlbHM9W10sdC5ub0xhYmVsc1Byb3ZpZGVkPSExLHQucmVzaXplVGltZXI9bnVsbCx0LnNlbGVjdGlvblJlc2l6ZVRpbWVyPW51bGwsdC5kZWxheWVkRWxlbWVudHM9W10sdC5wb2ludHNBcnJheT1bXSx0LmRhdGFMYWJlbHNSZWN0cz1bXSx0LmlzWE51bWVyaWM9ITEsdC5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITEsdC5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSExLHQuaXNEYXRhWFlaPSExLHQuaXNNdWx0aUxpbmVYPSExLHQuaXNNdWx0aXBsZVlBeGlzPSExLHQubWF4WT0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblk9TnVtYmVyLk1JTl9WQUxVRSx0Lm1pbllBcnI9W10sdC5tYXhZQXJyPVtdLHQubWF4WD0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblg9TnVtYmVyLk1BWF9WQUxVRSx0LmluaXRpYWxNYXhYPS1OdW1iZXIuTUFYX1ZBTFVFLHQuaW5pdGlhbE1pblg9TnVtYmVyLk1BWF9WQUxVRSx0Lm1heERhdGU9MCx0Lm1pbkRhdGU9TnVtYmVyLk1BWF9WQUxVRSx0Lm1pblo9TnVtYmVyLk1BWF9WQUxVRSx0Lm1heFo9LU51bWJlci5NQVhfVkFMVUUsdC5taW5YRGlmZj1OdW1iZXIuTUFYX1ZBTFVFLHQueUF4aXNTY2FsZT1bXSx0LnhBeGlzU2NhbGU9bnVsbCx0LnhBeGlzVGlja3NQb3NpdGlvbnM9W10sdC55TGFiZWxzQ29vcmRzPVtdLHQueVRpdGxlQ29vcmRzPVtdLHQuYmFyUGFkRm9yTnVtZXJpY0F4aXM9MCx0LnBhZEhvcml6b250YWw9MCx0LnhSYW5nZT0wLHQueVJhbmdlPVtdLHQuelJhbmdlPTAsdC5kYXRhUG9pbnRzPTAsdC54VGlja0Ftb3VudD0wfX0se2tleTpcImdsb2JhbFZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm57Y2hhcnRJRDpudWxsLGN1aWQ6bnVsbCxldmVudHM6e2JlZm9yZU1vdW50OltdLG1vdW50ZWQ6W10sdXBkYXRlZDpbXSxjbGlja2VkOltdLHNlbGVjdGlvbjpbXSxkYXRhUG9pbnRTZWxlY3Rpb246W10sem9vbWVkOltdLHNjcm9sbGVkOltdfSxjb2xvcnM6W10sY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxmaWxsOntjb2xvcnM6W119LHN0cm9rZTp7Y29sb3JzOltdfSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltdfX0scmFkYXJQb2x5Z29uczp7ZmlsbDp7Y29sb3JzOltdfX0sbWFya2Vyczp7Y29sb3JzOltdLHNpemU6dC5tYXJrZXJzLnNpemUsbGFyZ2VzdFNpemU6MH0sYW5pbWF0aW9uRW5kZWQ6ITEsaXNUb3VjaERldmljZTpcIm9udG91Y2hzdGFydFwiaW4gd2luZG93fHxuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyxpc0RpcnR5OiExLGlzRXhlY0NhbGxlZDohMSxpbml0aWFsQ29uZmlnOm51bGwsaW5pdGlhbFNlcmllczpbXSxsYXN0WEF4aXM6W10sbGFzdFlBeGlzOltdLGNvbHVtblNlcmllczpudWxsLGxhYmVsczpbXSx0aW1lc2NhbGVMYWJlbHM6W10sbm9MYWJlbHNQcm92aWRlZDohMSxhbGxTZXJpZXNDb2xsYXBzZWQ6ITEsY29sbGFwc2VkU2VyaWVzOltdLGNvbGxhcHNlZFNlcmllc0luZGljZXM6W10sYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzOltdLGFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXM6W10scmlzaW5nU2VyaWVzOltdLGRhdGFGb3JtYXRYTnVtZXJpYzohMSxjYXB0dXJlZFNlcmllc0luZGV4Oi0xLGNhcHR1cmVkRGF0YVBvaW50SW5kZXg6LTEsc2VsZWN0ZWREYXRhUG9pbnRzOltdLGdvbGRlblBhZGRpbmc6MzUsaW52YWxpZExvZ1NjYWxlOiExLGlnbm9yZVlBeGlzSW5kZXhlczpbXSx5QXhpc1NhbWVTY2FsZUluZGljZXM6W10sbWF4VmFsc0luQXJyYXlJbmRleDowLHJhZGlhbFNpemU6MCxzZWxlY3Rpb246dm9pZCAwLHpvb21FbmFibGVkOlwiem9vbVwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnpvb20mJnQuY2hhcnQuem9vbS5lbmFibGVkLHBhbkVuYWJsZWQ6XCJwYW5cIj09PXQuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQmJnQuY2hhcnQudG9vbGJhci50b29scy5wYW4sc2VsZWN0aW9uRW5hYmxlZDpcInNlbGVjdGlvblwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnNlbGVjdGlvbix5YXhpczpudWxsLG1vdXNlZG93bjohMSxsYXN0Q2xpZW50UG9zaXRpb246e30sdmlzaWJsZVhSYW5nZTp2b2lkIDAseVZhbHVlRGVjaW1hbDowLHRvdGFsOjAsU1ZHTlM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHN2Z1dpZHRoOjAsc3ZnSGVpZ2h0OjAsbm9EYXRhOiExLGxvY2FsZTp7fSxkb206e30sbWVtb3J5OnttZXRob2RzVG9FeGVjOltdfSxzaG91bGRBbmltYXRlOiEwLHNraXBMYXN0VGltZWxpbmVsYWJlbDohMSxza2lwRmlyc3RUaW1lbGluZWxhYmVsOiExLGRlbGF5ZWRFbGVtZW50czpbXSxheGlzQ2hhcnRzOiEwLGlzRGF0YVhZWjohMSxyZXNpemVkOiExLHJlc2l6ZVRpbWVyOm51bGwsY29tYm9DaGFydHM6ITEsZGF0YUNoYW5nZWQ6ITEscHJldmlvdXNQYXRoczpbXSxhbGxTZXJpZXNIYXNFcXVhbFg6ITAscG9pbnRzQXJyYXk6W10sZGF0YUxhYmVsc1JlY3RzOltdLGxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzOltdLGhhc051bGxWYWx1ZXM6ITEsZWFzaW5nOm51bGwsem9vbWVkOiExLGdyaWRXaWR0aDowLGdyaWRIZWlnaHQ6MCxyb3RhdGVYTGFiZWxzOiExLGRlZmF1bHRMYWJlbHM6ITEseExhYmVsRm9ybWF0dGVyOnZvaWQgMCx5TGFiZWxGb3JtYXR0ZXJzOltdLHhheGlzVG9vbHRpcEZvcm1hdHRlcjp2b2lkIDAsdHRLZXlGb3JtYXR0ZXI6dm9pZCAwLHR0VmFsOnZvaWQgMCx0dFpGb3JtYXR0ZXI6dm9pZCAwLExJTkVfSEVJR0hUX1JBVElPOjEuNjE4LHhBeGlzTGFiZWxzSGVpZ2h0OjAseEF4aXNHcm91cExhYmVsc0hlaWdodDowLHhBeGlzTGFiZWxzV2lkdGg6MCx5QXhpc0xhYmVsc1dpZHRoOjAsc2NhbGVYOjEsc2NhbGVZOjEsdHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCx0cmFuc2xhdGVZQXhpc1g6W10seUF4aXNXaWR0aHM6W10sdHJhbnNsYXRlWEF4aXNZOjAsdHJhbnNsYXRlWEF4aXNYOjAsdG9vbHRpcDpudWxsfX19LHtrZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nbG9iYWxWYXJzKHQpO3JldHVybiB0aGlzLmluaXRHbG9iYWxWYXJzKGUpLGUuaW5pdGlhbENvbmZpZz14LmV4dGVuZCh7fSx0KSxlLmluaXRpYWxTZXJpZXM9eC5jbG9uZSh0LnNlcmllcyksZS5sYXN0WEF4aXM9eC5jbG9uZShlLmluaXRpYWxDb25maWcueGF4aXMpLGUubGFzdFlBeGlzPXguY2xvbmUoZS5pbml0aWFsQ29uZmlnLnlheGlzKSxlfX1dKSx0fSgpLEY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLm9wdHM9ZX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEUodGhpcy5vcHRzKS5pbml0KHtyZXNwb25zaXZlT3ZlcnJpZGU6ITF9KTtyZXR1cm57Y29uZmlnOnQsZ2xvYmFsczoobmV3IFkpLmluaXQodCl9fX1dKSx0fSgpLFI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5vcHRzPW51bGwsdGhpcy5zZXJpZXNJbmRleD0wfXJldHVybiByKHQsW3trZXk6XCJjbGlwcGVkSW1nQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuY29uZmlnLGE9cGFyc2VJbnQoZS5nbG9iYWxzLmdyaWRXaWR0aCwxMCkscz1wYXJzZUludChlLmdsb2JhbHMuZ3JpZEhlaWdodCwxMCkscj1hPnM/YTpzLG89dC5pbWFnZSxuPTAsbD0wO3ZvaWQgMD09PXQud2lkdGgmJnZvaWQgMD09PXQuaGVpZ2h0P3ZvaWQgMCE9PWkuZmlsbC5pbWFnZS53aWR0aCYmdm9pZCAwIT09aS5maWxsLmltYWdlLmhlaWdodD8obj1pLmZpbGwuaW1hZ2Uud2lkdGgrMSxsPWkuZmlsbC5pbWFnZS5oZWlnaHQpOihuPXIrMSxsPXIpOihuPXQud2lkdGgsbD10LmhlaWdodCk7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcInBhdHRlcm5cIik7bS5zZXRBdHRycyhoLHtpZDp0LnBhdHRlcm5JRCxwYXR0ZXJuVW5pdHM6dC5wYXR0ZXJuVW5pdHM/dC5wYXR0ZXJuVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHdpZHRoOm4rXCJweFwiLGhlaWdodDpsK1wicHhcIn0pO3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsXCJpbWFnZVwiKTtoLmFwcGVuZENoaWxkKGMpLGMuc2V0QXR0cmlidXRlTlMod2luZG93LlNWRy54bGluayxcImhyZWZcIixvKSxtLnNldEF0dHJzKGMse3g6MCx5OjAscHJlc2VydmVBc3BlY3RSYXRpbzpcIm5vbmVcIix3aWR0aDpuK1wicHhcIixoZWlnaHQ6bCtcInB4XCJ9KSxjLnN0eWxlLm9wYWNpdHk9dC5vcGFjaXR5LGUuZ2xvYmFscy5kb20uZWxEZWZzLm5vZGUuYXBwZW5kQ2hpbGQoaCl9fSx7a2V5OlwiZ2V0U2VyaWVzSW5kZXhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmNvbmZpZy5jaGFydC50eXBlO3JldHVybihcImJhclwiPT09aXx8XCJyYW5nZUJhclwiPT09aSkmJmUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZHx8XCJoZWF0bWFwXCI9PT1pfHxcInRyZWVtYXBcIj09PWk/dGhpcy5zZXJpZXNJbmRleD10LnNlcmllc051bWJlcjp0aGlzLnNlcmllc0luZGV4PXQuc2VyaWVzTnVtYmVyJWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLHRoaXMuc2VyaWVzSW5kZXh9fSx7a2V5OlwiZmlsbFBhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7dGhpcy5vcHRzPXQ7dmFyIGksYSxzLHI9dGhpcy53LmNvbmZpZzt0aGlzLnNlcmllc0luZGV4PXRoaXMuZ2V0U2VyaWVzSW5kZXgodCk7dmFyIG89dGhpcy5nZXRGaWxsQ29sb3JzKClbdGhpcy5zZXJpZXNJbmRleF07dm9pZCAwIT09ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSYmKG89ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1t0aGlzLnNlcmllc0luZGV4XSksXCJmdW5jdGlvblwiPT10eXBlb2YgbyYmKG89byh7c2VyaWVzSW5kZXg6dGhpcy5zZXJpZXNJbmRleCxkYXRhUG9pbnRJbmRleDp0LmRhdGFQb2ludEluZGV4LHZhbHVlOnQudmFsdWUsdzplfSkpO3ZhciBuPXQuZmlsbFR5cGU/dC5maWxsVHlwZTp0aGlzLmdldEZpbGxUeXBlKHRoaXMuc2VyaWVzSW5kZXgpLGw9QXJyYXkuaXNBcnJheShyLmZpbGwub3BhY2l0eSk/ci5maWxsLm9wYWNpdHlbdGhpcy5zZXJpZXNJbmRleF06ci5maWxsLm9wYWNpdHk7dC5jb2xvciYmKG89dC5jb2xvciksb3x8KG89XCIjZmZmXCIsY29uc29sZS53YXJuKFwidW5kZWZpbmVkIGNvbG9yIC0gQXBleENoYXJ0c1wiKSk7dmFyIGg9bztpZigtMT09PW8uaW5kZXhPZihcInJnYlwiKT9vLmxlbmd0aDw5JiYoaD14LmhleFRvUmdiYShvLGwpKTpvLmluZGV4T2YoXCJyZ2JhXCIpPi0xJiYobD14LmdldE9wYWNpdHlGcm9tUkdCQShvKSksdC5vcGFjaXR5JiYobD10Lm9wYWNpdHkpLFwicGF0dGVyblwiPT09biYmKGE9dGhpcy5oYW5kbGVQYXR0ZXJuRmlsbCh7ZmlsbENvbmZpZzp0LmZpbGxDb25maWcscGF0dGVybkZpbGw6YSxmaWxsQ29sb3I6byxmaWxsT3BhY2l0eTpsLGRlZmF1bHRDb2xvcjpofSkpLFwiZ3JhZGllbnRcIj09PW4mJihzPXRoaXMuaGFuZGxlR3JhZGllbnRGaWxsKHtmaWxsQ29uZmlnOnQuZmlsbENvbmZpZyxmaWxsQ29sb3I6byxmaWxsT3BhY2l0eTpsLGk6dGhpcy5zZXJpZXNJbmRleH0pKSxcImltYWdlXCI9PT1uKXt2YXIgYz1yLmZpbGwuaW1hZ2Uuc3JjLGQ9dC5wYXR0ZXJuSUQ/dC5wYXR0ZXJuSUQ6XCJcIjt0aGlzLmNsaXBwZWRJbWdBcmVhKHtvcGFjaXR5OmwsaW1hZ2U6QXJyYXkuaXNBcnJheShjKT90LnNlcmllc051bWJlcjxjLmxlbmd0aD9jW3Quc2VyaWVzTnVtYmVyXTpjWzBdOmMsd2lkdGg6dC53aWR0aD90LndpZHRoOnZvaWQgMCxoZWlnaHQ6dC5oZWlnaHQ/dC5oZWlnaHQ6dm9pZCAwLHBhdHRlcm5Vbml0czp0LnBhdHRlcm5Vbml0cyxwYXR0ZXJuSUQ6XCJwYXR0ZXJuXCIuY29uY2F0KGUuZ2xvYmFscy5jdWlkKS5jb25jYXQodC5zZXJpZXNOdW1iZXIrMSkuY29uY2F0KGQpfSksaT1cInVybCgjcGF0dGVyblwiLmNvbmNhdChlLmdsb2JhbHMuY3VpZCkuY29uY2F0KHQuc2VyaWVzTnVtYmVyKzEpLmNvbmNhdChkLFwiKVwiKX1lbHNlIGk9XCJncmFkaWVudFwiPT09bj9zOlwicGF0dGVyblwiPT09bj9hOmg7cmV0dXJuIHQuc29saWQmJihpPWgpLGl9fSx7a2V5OlwiZ2V0RmlsbFR5cGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIEFycmF5LmlzQXJyYXkoZS5jb25maWcuZmlsbC50eXBlKT9lLmNvbmZpZy5maWxsLnR5cGVbdF06ZS5jb25maWcuZmlsbC50eXBlfX0se2tleTpcImdldEZpbGxDb2xvcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLGk9dGhpcy5vcHRzLGE9W107cmV0dXJuIHQuZ2xvYmFscy5jb21ib0NoYXJ0cz9cImxpbmVcIj09PXQuY29uZmlnLnNlcmllc1t0aGlzLnNlcmllc0luZGV4XS50eXBlP0FycmF5LmlzQXJyYXkodC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpP2E9dC5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6YS5wdXNoKHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKTpBcnJheS5pc0FycmF5KHQuZ2xvYmFscy5maWxsLmNvbG9ycyk/YT10Lmdsb2JhbHMuZmlsbC5jb2xvcnM6YS5wdXNoKHQuZ2xvYmFscy5maWxsLmNvbG9ycyk6XCJsaW5lXCI9PT1lLmNoYXJ0LnR5cGU/QXJyYXkuaXNBcnJheSh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk/YT10Lmdsb2JhbHMuc3Ryb2tlLmNvbG9yczphLnB1c2godC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpOkFycmF5LmlzQXJyYXkodC5nbG9iYWxzLmZpbGwuY29sb3JzKT9hPXQuZ2xvYmFscy5maWxsLmNvbG9yczphLnB1c2godC5nbG9iYWxzLmZpbGwuY29sb3JzKSx2b2lkIDAhPT1pLmZpbGxDb2xvcnMmJihhPVtdLEFycmF5LmlzQXJyYXkoaS5maWxsQ29sb3JzKT9hPWkuZmlsbENvbG9ycy5zbGljZSgpOmEucHVzaChpLmZpbGxDb2xvcnMpKSxhfX0se2tleTpcImhhbmRsZVBhdHRlcm5GaWxsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maWxsQ29uZmlnLGk9dC5wYXR0ZXJuRmlsbCxhPXQuZmlsbENvbG9yLHM9dC5maWxsT3BhY2l0eSxyPXQuZGVmYXVsdENvbG9yLG89dGhpcy53LmNvbmZpZy5maWxsO2UmJihvPWUpO3ZhciBuPXRoaXMub3B0cyxsPW5ldyBtKHRoaXMuY3R4KSxoPUFycmF5LmlzQXJyYXkoby5wYXR0ZXJuLnN0cm9rZVdpZHRoKT9vLnBhdHRlcm4uc3Ryb2tlV2lkdGhbdGhpcy5zZXJpZXNJbmRleF06by5wYXR0ZXJuLnN0cm9rZVdpZHRoLGM9YTtBcnJheS5pc0FycmF5KG8ucGF0dGVybi5zdHlsZSk/aT12b2lkIDAhPT1vLnBhdHRlcm4uc3R5bGVbbi5zZXJpZXNOdW1iZXJdP2wuZHJhd1BhdHRlcm4oby5wYXR0ZXJuLnN0eWxlW24uc2VyaWVzTnVtYmVyXSxvLnBhdHRlcm4ud2lkdGgsby5wYXR0ZXJuLmhlaWdodCxjLGgscyk6cjppPWwuZHJhd1BhdHRlcm4oby5wYXR0ZXJuLnN0eWxlLG8ucGF0dGVybi53aWR0aCxvLnBhdHRlcm4uaGVpZ2h0LGMsaCxzKTtyZXR1cm4gaX19LHtrZXk6XCJoYW5kbGVHcmFkaWVudEZpbGxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LmZpbGxDb2xvcixhPXQuZmlsbE9wYWNpdHkscz10LmZpbGxDb25maWcscj10Lmksbz10aGlzLncuY29uZmlnLmZpbGw7cyYmKG89ZShlKHt9LG8pLHMpKTt2YXIgbixsPXRoaXMub3B0cyxoPW5ldyBtKHRoaXMuY3R4KSxjPW5ldyB4LGQ9by5ncmFkaWVudC50eXBlLGc9aSx1PXZvaWQgMD09PW8uZ3JhZGllbnQub3BhY2l0eUZyb20/YTpBcnJheS5pc0FycmF5KG8uZ3JhZGllbnQub3BhY2l0eUZyb20pP28uZ3JhZGllbnQub3BhY2l0eUZyb21bcl06by5ncmFkaWVudC5vcGFjaXR5RnJvbTtnLmluZGV4T2YoXCJyZ2JhXCIpPi0xJiYodT14LmdldE9wYWNpdHlGcm9tUkdCQShnKSk7dmFyIHA9dm9pZCAwPT09by5ncmFkaWVudC5vcGFjaXR5VG8/YTpBcnJheS5pc0FycmF5KG8uZ3JhZGllbnQub3BhY2l0eVRvKT9vLmdyYWRpZW50Lm9wYWNpdHlUb1tyXTpvLmdyYWRpZW50Lm9wYWNpdHlUbztpZih2b2lkIDA9PT1vLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnN8fDA9PT1vLmdyYWRpZW50LmdyYWRpZW50VG9Db2xvcnMubGVuZ3RoKW49XCJkYXJrXCI9PT1vLmdyYWRpZW50LnNoYWRlP2Muc2hhZGVDb2xvcigtMSpwYXJzZUZsb2F0KG8uZ3JhZGllbnQuc2hhZGVJbnRlbnNpdHkpLGkuaW5kZXhPZihcInJnYlwiKT4tMT94LnJnYjJoZXgoaSk6aSk6Yy5zaGFkZUNvbG9yKHBhcnNlRmxvYXQoby5ncmFkaWVudC5zaGFkZUludGVuc2l0eSksaS5pbmRleE9mKFwicmdiXCIpPi0xP3gucmdiMmhleChpKTppKTtlbHNlIGlmKG8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc1tsLnNlcmllc051bWJlcl0pe3ZhciBmPW8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc1tsLnNlcmllc051bWJlcl07bj1mLGYuaW5kZXhPZihcInJnYmFcIik+LTEmJihwPXguZ2V0T3BhY2l0eUZyb21SR0JBKGYpKX1lbHNlIG49aTtpZihvLmdyYWRpZW50LmdyYWRpZW50RnJvbSYmKGc9by5ncmFkaWVudC5ncmFkaWVudEZyb20pLG8uZ3JhZGllbnQuZ3JhZGllbnRUbyYmKG49by5ncmFkaWVudC5ncmFkaWVudFRvKSxvLmdyYWRpZW50LmludmVyc2VDb2xvcnMpe3ZhciBiPWc7Zz1uLG49Yn1yZXR1cm4gZy5pbmRleE9mKFwicmdiXCIpPi0xJiYoZz14LnJnYjJoZXgoZykpLG4uaW5kZXhPZihcInJnYlwiKT4tMSYmKG49eC5yZ2IyaGV4KG4pKSxoLmRyYXdHcmFkaWVudChkLGcsbix1LHAsbC5zaXplLG8uZ3JhZGllbnQuc3RvcHMsby5ncmFkaWVudC5jb2xvclN0b3BzLHIpfX1dKSx0fSgpLEg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5Olwic2V0R2xvYmFsTWFya2VyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5tYXJrZXJzLnNpemU9QXJyYXkuaXNBcnJheSh0LmNvbmZpZy5tYXJrZXJzLnNpemUpP3QuY29uZmlnLm1hcmtlcnMuc2l6ZTpbdC5jb25maWcubWFya2Vycy5zaXplXSx0Lmdsb2JhbHMubWFya2Vycy5zaXplLmxlbmd0aD4wKXtpZih0Lmdsb2JhbHMubWFya2Vycy5zaXplLmxlbmd0aDx0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCsxKWZvcih2YXIgZT0wO2U8PXQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2UrKyl2b2lkIDA9PT10Lmdsb2JhbHMubWFya2Vycy5zaXplW2VdJiZ0Lmdsb2JhbHMubWFya2Vycy5zaXplLnB1c2godC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVswXSl9ZWxzZSB0Lmdsb2JhbHMubWFya2Vycy5zaXplPXQuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNvbmZpZy5tYXJrZXJzLnNpemV9KSl9fSx7a2V5OlwicGxvdENoYXJ0TWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzLHI9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0mJmFyZ3VtZW50c1s0XSxvPXRoaXMudyxuPWUsbD10LGg9bnVsbCxjPW5ldyBtKHRoaXMuY3R4KSxkPW8uY29uZmlnLm1hcmtlcnMuZGlzY3JldGUmJm8uY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoO2lmKChvLmdsb2JhbHMubWFya2Vycy5zaXplW2VdPjB8fHJ8fGQpJiYoaD1jLmdyb3VwKHtjbGFzczpyfHxkP1wiXCI6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzXCJ9KSkuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBcnJheS5pc0FycmF5KGwueCkpZm9yKHZhciBnPTA7ZzxsLngubGVuZ3RoO2crKyl7dmFyIHU9aTsxPT09aSYmMD09PWcmJih1PTApLDE9PT1pJiYxPT09ZyYmKHU9MSk7dmFyIHA9XCJhcGV4Y2hhcnRzLW1hcmtlclwiO2lmKFwibGluZVwiIT09by5jb25maWcuY2hhcnQudHlwZSYmXCJhcmVhXCIhPT1vLmNvbmZpZy5jaGFydC50eXBlfHxvLmdsb2JhbHMuY29tYm9DaGFydHN8fG8uY29uZmlnLnRvb2x0aXAuaW50ZXJzZWN0fHwocCs9XCIgbm8tcG9pbnRlci1ldmVudHNcIiksKEFycmF5LmlzQXJyYXkoby5jb25maWcubWFya2Vycy5zaXplKT9vLmdsb2JhbHMubWFya2Vycy5zaXplW2VdPjA6by5jb25maWcubWFya2Vycy5zaXplPjApfHxyfHxkKXt4LmlzTnVtYmVyKGwueVtnXSk/cCs9XCIgd1wiLmNvbmNhdCh4LnJhbmRvbUlkKCkpOnA9XCJhcGV4Y2hhcnRzLW51bGxwb2ludFwiO3ZhciBmPXRoaXMuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpwLHNlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6dX0pO28uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdJiYoby5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uZmlsbENvbG9yJiYoZi5wb2ludEZpbGxDb2xvcj1vLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVt1XS5maWxsQ29sb3IpLG8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLnN0cm9rZUNvbG9yJiYoZi5wb2ludFN0cm9rZUNvbG9yPW8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLnN0cm9rZUNvbG9yKSksYSYmKGYucFNpemU9YSksKGwueFtnXTwwfHxsLnhbZ10+by5nbG9iYWxzLmdyaWRXaWR0aHx8bC55W2ddPC1vLmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZXx8bC55W2ddPm8uZ2xvYmFscy5ncmlkSGVpZ2h0K28uZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplKSYmKGYucFNpemU9MCksKHM9Yy5kcmF3TWFya2VyKGwueFtnXSxsLnlbZ10sZikpLmF0dHIoXCJyZWxcIix1KSxzLmF0dHIoXCJqXCIsdSkscy5hdHRyKFwiaW5kZXhcIixlKSxzLm5vZGUuc2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiLGYucFNpemUpLG5ldyB2KHRoaXMuY3R4KS5zZXRTZWxlY3Rpb25GaWx0ZXIocyxlLHUpLHRoaXMuYWRkRXZlbnRzKHMpLGgmJmguYWRkKHMpfWVsc2Ugdm9pZCAwPT09by5nbG9iYWxzLnBvaW50c0FycmF5W2VdJiYoby5nbG9iYWxzLnBvaW50c0FycmF5W2VdPVtdKSxvLmdsb2JhbHMucG9pbnRzQXJyYXlbZV0ucHVzaChbbC54W2ddLGwueVtnXV0pfXJldHVybiBofX0se2tleTpcImdldE1hcmtlckNvbmZpZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY3NzQ2xhc3MsaT10LnNlcmllc0luZGV4LGE9dC5kYXRhUG9pbnRJbmRleCxzPXZvaWQgMD09PWE/bnVsbDphLHI9dC5maW5pc2hSYWRpdXMsbz12b2lkIDA9PT1yP251bGw6cixuPXRoaXMudyxsPXRoaXMuZ2V0TWFya2VyU3R5bGUoaSksaD1uLmdsb2JhbHMubWFya2Vycy5zaXplW2ldLGM9bi5jb25maWcubWFya2VycztyZXR1cm4gbnVsbCE9PXMmJmMuZGlzY3JldGUubGVuZ3RoJiZjLmRpc2NyZXRlLm1hcCgoZnVuY3Rpb24odCl7dC5zZXJpZXNJbmRleD09PWkmJnQuZGF0YVBvaW50SW5kZXg9PT1zJiYobC5wb2ludFN0cm9rZUNvbG9yPXQuc3Ryb2tlQ29sb3IsbC5wb2ludEZpbGxDb2xvcj10LmZpbGxDb2xvcixoPXQuc2l6ZSxsLnBvaW50U2hhcGU9dC5zaGFwZSl9KSkse3BTaXplOm51bGw9PT1vP2g6byxwUmFkaXVzOmMucmFkaXVzLHdpZHRoOkFycmF5LmlzQXJyYXkoYy53aWR0aCk/Yy53aWR0aFtpXTpjLndpZHRoLGhlaWdodDpBcnJheS5pc0FycmF5KGMuaGVpZ2h0KT9jLmhlaWdodFtpXTpjLmhlaWdodCxwb2ludFN0cm9rZVdpZHRoOkFycmF5LmlzQXJyYXkoYy5zdHJva2VXaWR0aCk/Yy5zdHJva2VXaWR0aFtpXTpjLnN0cm9rZVdpZHRoLHBvaW50U3Ryb2tlQ29sb3I6bC5wb2ludFN0cm9rZUNvbG9yLHBvaW50RmlsbENvbG9yOmwucG9pbnRGaWxsQ29sb3Isc2hhcGU6bC5wb2ludFNoYXBlfHwoQXJyYXkuaXNBcnJheShjLnNoYXBlKT9jLnNoYXBlW2ldOmMuc2hhcGUpLGNsYXNzOmUscG9pbnRTdHJva2VPcGFjaXR5OkFycmF5LmlzQXJyYXkoYy5zdHJva2VPcGFjaXR5KT9jLnN0cm9rZU9wYWNpdHlbaV06Yy5zdHJva2VPcGFjaXR5LHBvaW50U3Ryb2tlRGFzaEFycmF5OkFycmF5LmlzQXJyYXkoYy5zdHJva2VEYXNoQXJyYXkpP2Muc3Ryb2tlRGFzaEFycmF5W2ldOmMuc3Ryb2tlRGFzaEFycmF5LHBvaW50RmlsbE9wYWNpdHk6QXJyYXkuaXNBcnJheShjLmZpbGxPcGFjaXR5KT9jLmZpbGxPcGFjaXR5W2ldOmMuZmlsbE9wYWNpdHksc2VyaWVzSW5kZXg6aX19fSx7a2V5OlwiYWRkRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpO3Qubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLmN0eCx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZS5jb25maWcubWFya2Vycy5vbkNsaWNrKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImRibGNsaWNrXCIsZS5jb25maWcubWFya2Vycy5vbkRibENsaWNrKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLmN0eCx0KSx7cGFzc2l2ZTohMH0pfX0se2tleTpcImdldE1hcmtlclN0eWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5nbG9iYWxzLm1hcmtlcnMuY29sb3JzLGE9ZS5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnx8ZS5jb25maWcubWFya2Vycy5zdHJva2VDb2xvcnM7cmV0dXJue3BvaW50U3Ryb2tlQ29sb3I6QXJyYXkuaXNBcnJheShhKT9hW3RdOmEscG9pbnRGaWxsQ29sb3I6QXJyYXkuaXNBcnJheShpKT9pW3RdOml9fX1dKSx0fSgpLEQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWR9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9bmV3IG0odGhpcy5jdHgpLHI9aS5yZWFsSW5kZXgsbz1pLnBvaW50c1BvcyxuPWkuelJhdGlvLGw9aS5lbFBhcmVudCxoPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyBhcGV4Y2hhcnRzLXNlcmllcy1cIi5jb25jYXQoYS5jb25maWcuY2hhcnQudHlwZSl9KTtpZihoLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXJrZXJNYXNrXCIuY29uY2F0KGEuZ2xvYmFscy5jdWlkLFwiKVwiKSksQXJyYXkuaXNBcnJheShvLngpKWZvcih2YXIgYz0wO2M8by54Lmxlbmd0aDtjKyspe3ZhciBkPWUrMSxnPSEwOzA9PT1lJiYwPT09YyYmKGQ9MCksMD09PWUmJjE9PT1jJiYoZD0xKTt2YXIgdT0wLHA9YS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtyXTtpZihuIT09MS8wKXt2YXIgZj1hLmNvbmZpZy5wbG90T3B0aW9ucy5idWJibGU7cD1hLmdsb2JhbHMuc2VyaWVzWltyXVtkXSxmLnpTY2FsaW5nJiYocC89biksZi5taW5CdWJibGVSYWRpdXMmJnA8Zi5taW5CdWJibGVSYWRpdXMmJihwPWYubWluQnViYmxlUmFkaXVzKSxmLm1heEJ1YmJsZVJhZGl1cyYmcD5mLm1heEJ1YmJsZVJhZGl1cyYmKHA9Zi5tYXhCdWJibGVSYWRpdXMpfWEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZHx8KHU9cCk7dmFyIHg9by54W2NdLGI9by55W2NdO2lmKHU9dXx8MCxudWxsIT09YiYmdm9pZCAwIT09YS5nbG9iYWxzLnNlcmllc1tyXVtkXXx8KGc9ITEpLGcpe3ZhciB2PXRoaXMuZHJhd1BvaW50KHgsYix1LHAscixkLGUpO2guYWRkKHYpfWwuYWRkKGgpfX19LHtrZXk6XCJkcmF3UG9pbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj10aGlzLncsbD1zLGg9bmV3IGIodGhpcy5jdHgpLGM9bmV3IHYodGhpcy5jdHgpLGQ9bmV3IFIodGhpcy5jdHgpLGc9bmV3IEgodGhpcy5jdHgpLHU9bmV3IG0odGhpcy5jdHgpLHA9Zy5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOlwiYXBleGNoYXJ0cy1tYXJrZXJcIixzZXJpZXNJbmRleDpsLGRhdGFQb2ludEluZGV4OnIsZmluaXNoUmFkaXVzOlwiYnViYmxlXCI9PT1uLmNvbmZpZy5jaGFydC50eXBlfHxuLmdsb2JhbHMuY29tYm9DaGFydHMmJm4uY29uZmlnLnNlcmllc1tzXSYmXCJidWJibGVcIj09PW4uY29uZmlnLnNlcmllc1tzXS50eXBlP2E6bnVsbH0pO2E9cC5wU2l6ZTt2YXIgZix4PWQuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpzLGRhdGFQb2ludEluZGV4OnIsY29sb3I6cC5wb2ludEZpbGxDb2xvcixwYXR0ZXJuVW5pdHM6XCJvYmplY3RCb3VuZGluZ0JveFwiLHZhbHVlOm4uZ2xvYmFscy5zZXJpZXNbc11bb119KTtpZihcImNpcmNsZVwiPT09cC5zaGFwZT9mPXUuZHJhd0NpcmNsZShpKTpcInNxdWFyZVwiIT09cC5zaGFwZSYmXCJyZWN0XCIhPT1wLnNoYXBlfHwoZj11LmRyYXdSZWN0KDAsMCxwLndpZHRoLXAucG9pbnRTdHJva2VXaWR0aC8yLHAuaGVpZ2h0LXAucG9pbnRTdHJva2VXaWR0aC8yLHAucFJhZGl1cykpLG4uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdJiZuLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtyXS5maWxsQ29sb3ImJih4PW4uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdLmZpbGxDb2xvciksZi5hdHRyKHt4OnQtcC53aWR0aC8yLXAucG9pbnRTdHJva2VXaWR0aC8yLHk6ZS1wLmhlaWdodC8yLXAucG9pbnRTdHJva2VXaWR0aC8yLGN4OnQsY3k6ZSxmaWxsOngsXCJmaWxsLW9wYWNpdHlcIjpwLnBvaW50RmlsbE9wYWNpdHksc3Ryb2tlOnAucG9pbnRTdHJva2VDb2xvcixyOmEsXCJzdHJva2Utd2lkdGhcIjpwLnBvaW50U3Ryb2tlV2lkdGgsXCJzdHJva2UtZGFzaGFycmF5XCI6cC5wb2ludFN0cm9rZURhc2hBcnJheSxcInN0cm9rZS1vcGFjaXR5XCI6cC5wb2ludFN0cm9rZU9wYWNpdHl9KSxuLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciB5PW4uY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7Yy5kcm9wU2hhZG93KGYseSxzKX1pZighdGhpcy5pbml0aWFsQW5pbXx8bi5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxuLmdsb2JhbHMucmVzaXplZCluLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITA7ZWxzZXt2YXIgdz1uLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkO2guYW5pbWF0ZU1hcmtlcihmLDAsXCJjaXJjbGVcIj09PXAuc2hhcGU/YTp7d2lkdGg6cC53aWR0aCxoZWlnaHQ6cC5oZWlnaHR9LHcsbi5nbG9iYWxzLmVhc2luZywoZnVuY3Rpb24oKXt3aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtoLmFuaW1hdGlvbkNvbXBsZXRlZChmKX0pLDEwMCl9KSl9aWYobi5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZcImNpcmNsZVwiPT09cC5zaGFwZSlpZih0aGlzLmR5bmFtaWNBbmltKXt2YXIgayxBLFMsQyxMPW4uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZDtudWxsIT0oQz1uLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXSYmbi5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc11bb10pJiYoaz1DLngsQT1DLnksUz12b2lkIDAhPT1DLnI/Qy5yOmEpO2Zvcih2YXIgUD0wO1A8bi5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg7UCsrKW4uZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbUF0uaW5kZXg9PT1zJiYoTD0xLGE9MCk7MD09PXQmJjA9PT1lJiYoYT0wKSxoLmFuaW1hdGVDaXJjbGUoZix7Y3g6ayxjeTpBLHI6U30se2N4OnQsY3k6ZSxyOmF9LEwsbi5nbG9iYWxzLmVhc2luZyl9ZWxzZSBmLmF0dHIoe3I6YX0pO3JldHVybiBmLmF0dHIoe3JlbDpyLGo6cixpbmRleDpzLFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiOmF9KSxjLnNldFNlbGVjdGlvbkZpbHRlcihmLHMsciksZy5hZGRFdmVudHMoZiksZi5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSxmfX0se2tleTpcImNlbnRlclRleHRJbkJ1YmJsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm57eTp0Kz1wYXJzZUludChlLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS80fX19XSksdH0oKSxPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkYXRhTGFiZWxzQ29ycmVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPXRoaXMudyxsPSExLGg9bmV3IG0odGhpcy5jdHgpLmdldFRleHRSZWN0cyhpLG8pLGM9aC53aWR0aCxkPWguaGVpZ2h0O2U8MCYmKGU9MCksZT5uLmdsb2JhbHMuZ3JpZEhlaWdodCtkJiYoZT1uLmdsb2JhbHMuZ3JpZEhlaWdodCtkLzIpLHZvaWQgMD09PW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV0mJihuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdPVtdKSxuLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdLnB1c2goe3g6dCx5OmUsd2lkdGg6YyxoZWlnaHQ6ZH0pO3ZhciBnPW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV0ubGVuZ3RoLTIsdT12b2lkIDAhPT1uLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbYV0/bi5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW2FdW24uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXS5sZW5ndGgtMV06MDtpZih2b2lkIDAhPT1uLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdW2ddKXt2YXIgcD1uLmdsb2JhbHMuZGF0YUxhYmVsc1JlY3RzW2FdW3VdOyh0PnAueCtwLndpZHRofHxlPnAueStwLmhlaWdodHx8ZStkPHAueXx8dCtjPHAueCkmJihsPSEwKX1yZXR1cm4oMD09PXN8fHIpJiYobD0hMCkse3g6dCx5OmUsdGV4dFJlY3RzOmgsZHJhd25leHRMYWJlbDpsfX19LHtrZXk6XCJkcmF3RGF0YUxhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQudHlwZSxhPXQucG9zLHM9dC5pLHI9dC5qLG89dC5pc1JhbmdlU3RhcnQsbj10LnN0cm9rZVdpZHRoLGw9dm9pZCAwPT09bj8yOm4saD10aGlzLncsYz1uZXcgbSh0aGlzLmN0eCksZD1oLmNvbmZpZy5kYXRhTGFiZWxzLGc9MCx1PTAscD1yLGY9bnVsbDtpZighZC5lbmFibGVkfHwhQXJyYXkuaXNBcnJheShhLngpKXJldHVybiBmO2Y9Yy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCJ9KTtmb3IodmFyIHg9MDt4PGEueC5sZW5ndGg7eCsrKWlmKGc9YS54W3hdK2Qub2Zmc2V0WCx1PWEueVt4XStkLm9mZnNldFkrbCwhaXNOYU4oZykpezE9PT1yJiYwPT09eCYmKHA9MCksMT09PXImJjE9PT14JiYocD0xKTt2YXIgYj1oLmdsb2JhbHMuc2VyaWVzW3NdW3BdO1wicmFuZ2VBcmVhXCI9PT1pJiYoYj1vP2guZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3NdW3BdOmguZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtzXVtwXSk7dmFyIHY9XCJcIix5PWZ1bmN0aW9uKHQpe3JldHVybiBoLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcih0LHtjdHg6ZS5jdHgsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpwLHc6aH0pfTtpZihcImJ1YmJsZVwiPT09aC5jb25maWcuY2hhcnQudHlwZSl2PXkoYj1oLmdsb2JhbHMuc2VyaWVzWltzXVtwXSksdT1hLnlbeF0sdT1uZXcgRCh0aGlzLmN0eCkuY2VudGVyVGV4dEluQnViYmxlKHUscyxwKS55O2Vsc2Ugdm9pZCAwIT09YiYmKHY9eShiKSk7dGhpcy5wbG90RGF0YUxhYmVsc1RleHQoe3g6Zyx5OnUsdGV4dDp2LGk6cyxqOnAscGFyZW50OmYsb2Zmc2V0Q29ycmVjdGlvbjohMCxkYXRhTGFiZWxzQ29uZmlnOmguY29uZmlnLmRhdGFMYWJlbHN9KX1yZXR1cm4gZn19LHtrZXk6XCJwbG90RGF0YUxhYmVsc1RleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT10Lngscz10Lnkscj10Lmksbz10Lmosbj10LnRleHQsbD10LnRleHRBbmNob3IsaD10LmZvbnRTaXplLGM9dC5wYXJlbnQsZD10LmRhdGFMYWJlbHNDb25maWcsZz10LmNvbG9yLHU9dC5hbHdheXNEcmF3RGF0YUxhYmVsLHA9dC5vZmZzZXRDb3JyZWN0aW9uO2lmKCEoQXJyYXkuaXNBcnJheShlLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWRPblNlcmllcykmJmUuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2Yocik8MCkpe3ZhciBmPXt4OmEseTpzLGRyYXduZXh0TGFiZWw6ITAsdGV4dFJlY3RzOm51bGx9O3AmJihmPXRoaXMuZGF0YUxhYmVsc0NvcnJlY3Rpb24oYSxzLG4scixvLHUscGFyc2VJbnQoZC5zdHlsZS5mb250U2l6ZSwxMCkpKSxlLmdsb2JhbHMuem9vbWVkfHwoYT1mLngscz1mLnkpLGYudGV4dFJlY3RzJiYoYTwtMTAtZi50ZXh0UmVjdHMud2lkdGh8fGE+ZS5nbG9iYWxzLmdyaWRXaWR0aCtmLnRleHRSZWN0cy53aWR0aCsxMCkmJihuPVwiXCIpO3ZhciB4PWUuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tyXTsoKFwiYmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKSYmZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkfHxlLmNvbmZpZy5kYXRhTGFiZWxzLmRpc3RyaWJ1dGVkKSYmKHg9ZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW29dKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB4JiYoeD14KHtzZXJpZXM6ZS5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDpyLGRhdGFQb2ludEluZGV4Om8sdzplfSkpLGcmJih4PWcpO3ZhciBiPWQub2Zmc2V0WCx5PWQub2Zmc2V0WTtpZihcImJhclwiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09ZS5jb25maWcuY2hhcnQudHlwZXx8KGI9MCx5PTApLGYuZHJhd25leHRMYWJlbCl7dmFyIHc9aS5kcmF3VGV4dCh7d2lkdGg6MTAwLGhlaWdodDpwYXJzZUludChkLnN0eWxlLmZvbnRTaXplLDEwKSx4OmErYix5OnMreSxmb3JlQ29sb3I6eCx0ZXh0QW5jaG9yOmx8fGQudGV4dEFuY2hvcix0ZXh0Om4sZm9udFNpemU6aHx8ZC5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmQuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OmQuc3R5bGUuZm9udFdlaWdodHx8XCJub3JtYWxcIn0pO2lmKHcuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbFwiLGN4OmEsY3k6c30pLGQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgaz1kLmRyb3BTaGFkb3c7bmV3IHYodGhpcy5jdHgpLmRyb3BTaGFkb3codyxrKX1jLmFkZCh3KSx2b2lkIDA9PT1lLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbcl0mJihlLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbcl09W10pLGUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXS5wdXNoKG8pfX19fSx7a2V5OlwiYWRkQmFja2dyb3VuZFRvRGF0YUxhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQscz1hLnBhZGRpbmcscj1hLnBhZGRpbmcvMixvPWUud2lkdGgsbj1lLmhlaWdodCxsPW5ldyBtKHRoaXMuY3R4KS5kcmF3UmVjdChlLngtcyxlLnktci8yLG8rMipzLG4rcixhLmJvcmRlclJhZGl1cyxcInRyYW5zcGFyZW50XCI9PT1pLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kP1wiI2ZmZlwiOmkuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQsYS5vcGFjaXR5LGEuYm9yZGVyV2lkdGgsYS5ib3JkZXJDb2xvcik7YS5kcm9wU2hhZG93LmVuYWJsZWQmJm5ldyB2KHRoaXMuY3R4KS5kcm9wU2hhZG93KGwsYS5kcm9wU2hhZG93KTtyZXR1cm4gbH19LHtrZXk6XCJkYXRhTGFiZWxzQmFja2dyb3VuZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKFwiYnViYmxlXCIhPT10LmNvbmZpZy5jaGFydC50eXBlKWZvcih2YXIgZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscyB0ZXh0XCIpLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGE9ZVtpXSxzPWEuZ2V0QkJveCgpLHI9bnVsbDtpZihzLndpZHRoJiZzLmhlaWdodCYmKHI9dGhpcy5hZGRCYWNrZ3JvdW5kVG9EYXRhTGFiZWwoYSxzKSkscil7YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLm5vZGUsYSk7dmFyIG89YS5nZXRBdHRyaWJ1dGUoXCJmaWxsXCIpO3QuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIXQuZ2xvYmFscy5yZXNpemVkJiYhdC5nbG9iYWxzLmRhdGFDaGFuZ2VkP3IuYW5pbWF0ZSgpLmF0dHIoe2ZpbGw6b30pOnIuYXR0cih7ZmlsbDpvfSksYS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsdC5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmZvcmVDb2xvcil9fX19LHtrZXk6XCJicmluZ0ZvcndhcmRcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsc1wiKSxpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1wbG90LXNlcmllczpsYXN0LWNoaWxkXCIpLGE9MDthPGUubGVuZ3RoO2ErKylpJiZpLmluc2VydEJlZm9yZShlW2FdLGkubmV4dFNpYmxpbmcpfX1dKSx0fSgpLE49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzPVwibGVnZW5kLW1vdXNlb3Zlci1pbmFjdGl2ZVwifXJldHVybiByKHQsW3trZXk6XCJnZXRBbGxTZXJpZXNFbHNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXNlcmllc1wiKX19LHtrZXk6XCJnZXRTZXJpZXNCeU5hbWVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtaW5uZXIgLmFwZXhjaGFydHMtc2VyaWVzW3Nlcmllc05hbWU9J1wiLmNvbmNhdCh4LmVzY2FwZVN0cmluZyh0KSxcIiddXCIpKX19LHtrZXk6XCJpc1Nlcmllc0hpZGRlblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0U2VyaWVzQnlOYW1lKHQpLGk9cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCk7cmV0dXJue2lzSGlkZGVuOmUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkXCIpLHJlYWxJbmRleDppfX19LHtrZXk6XCJhZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7ZnVuY3Rpb24gYShpKXtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylpW2FdLmluZGV4PT09ZSYmdC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWRcIil9YShpLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzKSxhKGkuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMpfX0se2tleTpcInRvZ2dsZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaXNTZXJpZXNIaWRkZW4odCk7cmV0dXJuIHRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsZS5pc0hpZGRlbiksZS5pc0hpZGRlbn19LHtrZXk6XCJzaG93U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtlLmlzSGlkZGVuJiZ0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGUucmVhbEluZGV4LCEwKX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtlLmlzSGlkZGVufHx0aGlzLmN0eC5sZWdlbmQubGVnZW5kSGVscGVycy50b2dnbGVEYXRhU2VyaWVzKGUucmVhbEluZGV4LCExKX19LHtrZXk6XCJyZXNldFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGE9dGhpcy53LHM9eC5jbG9uZShhLmdsb2JhbHMuaW5pdGlhbFNlcmllcyk7YS5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W10saT8oYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcz1bXSxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzPVtdLGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzPVtdLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzPVtdKTpzPXRoaXMuZW1wdHlDb2xsYXBzZWRTZXJpZXMocyksYS5jb25maWcuc2VyaWVzPXMsdCYmKGUmJihhLmdsb2JhbHMuem9vbWVkPSExLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpKX19LHtrZXk6XCJlbXB0eUNvbGxhcHNlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT0wO2k8dC5sZW5ndGg7aSsrKWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoaSk+LTEmJih0W2ldLmRhdGE9W10pO3JldHVybiB0fX0se2tleTpcInRvZ2dsZVNlcmllc09uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztlfHwoZT10LnRhcmdldCk7dmFyIGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcywgLmFwZXhjaGFydHMtZGF0YWxhYmVsc1wiKTtpZihcIm1vdXNlbW92ZVwiPT09dC50eXBlKXt2YXIgcz1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMSxyPW51bGwsbz1udWxsO2kuZ2xvYmFscy5heGlzQ2hhcnRzfHxcInJhZGlhbEJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZT9pLmdsb2JhbHMuYXhpc0NoYXJ0cz8ocj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHMsXCInXVwiKSksbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChzLFwiJ11cIikpKTpyPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQocysxLFwiJ11cIikpOnI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChzKzEsXCInXSBwYXRoXCIpKTtmb3IodmFyIG49MDtuPGEubGVuZ3RoO24rKylhW25dLmNsYXNzTGlzdC5hZGQodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKTtudWxsIT09ciYmKGkuZ2xvYmFscy5heGlzQ2hhcnRzfHxyLnBhcmVudE5vZGUuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpLHIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpLG51bGwhPT1vJiZvLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKSl9ZWxzZSBpZihcIm1vdXNlb3V0XCI9PT10LnR5cGUpZm9yKHZhciBsPTA7bDxhLmxlbmd0aDtsKyspYVtsXS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyl9fSx7a2V5OlwiaGlnaGxpZ2h0UmFuZ2VJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPXRoaXMudyxzPWEuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLWhlYXRtYXAtcmVjdFwiKSxyPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8cy5sZW5ndGg7ZSsrKXNbZV0uY2xhc3NMaXN0W3RdKGkubGVnZW5kSW5hY3RpdmVDbGFzcyl9O2lmKFwibW91c2Vtb3ZlXCI9PT10LnR5cGUpe3ZhciBvPXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3IoXCJhZGRcIiksZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxzLmxlbmd0aDtlKyspe3ZhciBhPXBhcnNlSW50KHNbZV0uZ2V0QXR0cmlidXRlKFwidmFsXCIpLDEwKTthPj10LmZyb20mJmE8PXQudG8mJnNbZV0uY2xhc3NMaXN0LnJlbW92ZShpLmxlZ2VuZEluYWN0aXZlQ2xhc3MpfX0oYS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLnJhbmdlc1tvXSl9ZWxzZVwibW91c2VvdXRcIj09PXQudHlwZSYmcihcInJlbW92ZVwiKX19LHtrZXk6XCJnZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlwiYXNjXCIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10saT10aGlzLncsYT0wO2lmKGkuY29uZmlnLnNlcmllcy5sZW5ndGg+MSlmb3IodmFyIHM9aS5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxhKXtyZXR1cm4gdC5kYXRhJiZ0LmRhdGEubGVuZ3RoPjAmJi0xPT09aS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKSYmKCFpLmdsb2JhbHMuY29tYm9DaGFydHN8fDA9PT1lLmxlbmd0aHx8ZS5sZW5ndGgmJmUuaW5kZXhPZihpLmNvbmZpZy5zZXJpZXNbYV0udHlwZSk+LTEpP2E6LTF9KSkscj1cImFzY1wiPT09dD8wOnMubGVuZ3RoLTE7XCJhc2NcIj09PXQ/cjxzLmxlbmd0aDpyPj0wO1wiYXNjXCI9PT10P3IrKzpyLS0paWYoLTEhPT1zW3JdKXthPXNbcl07YnJlYWt9cmV0dXJuIGF9fSx7a2V5OlwiZ2V0QmFyU2VyaWVzSW5kaWNlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmNvbWJvQ2hhcnRzP3RoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm5cImJhclwiPT09dC50eXBlfHxcImNvbHVtblwiPT09dC50eXBlP2U6LTF9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXR9KSk6dGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlfSkpfX0se2tleTpcImdldFByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztmdW5jdGlvbiBlKGUsaSxhKXtmb3IodmFyIHM9ZVtpXS5jaGlsZE5vZGVzLHI9e3R5cGU6YSxwYXRoczpbXSxyZWFsSW5kZXg6ZVtpXS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKX0sbz0wO288cy5sZW5ndGg7bysrKWlmKHNbb10uaGFzQXR0cmlidXRlKFwicGF0aFRvXCIpKXt2YXIgbj1zW29dLmdldEF0dHJpYnV0ZShcInBhdGhUb1wiKTtyLnBhdGhzLnB1c2goe2Q6bn0pfXQuZ2xvYmFscy5wcmV2aW91c1BhdGhzLnB1c2gocil9dC5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W107W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZWJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwicmFkYXJcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7Zm9yKHZhciBhLHM9KGE9aSx0Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGEsXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1wiKSkpLHI9MDtyPHMubGVuZ3RoO3IrKyllKHMscixpKX0pKSx0aGlzLmhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHMoXCJidWJibGVcIiksdGhpcy5oYW5kbGVQcmV2QnViYmxlU2NhdHRlclBhdGhzKFwic2NhdHRlclwiKTt2YXIgaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsXCIgLmFwZXhjaGFydHMtc2VyaWVzXCIpKTtpZihpLmxlbmd0aD4wKWZvcih2YXIgYT1mdW5jdGlvbihlKXtmb3IodmFyIGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LmNvbmZpZy5jaGFydC50eXBlLFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoZSxcIiddIHJlY3RcIikpLGE9W10scz1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4gaVt0XS5nZXRBdHRyaWJ1dGUoZSl9LHM9e3g6cGFyc2VGbG9hdChlKFwieFwiKSkseTpwYXJzZUZsb2F0KGUoXCJ5XCIpKSx3aWR0aDpwYXJzZUZsb2F0KGUoXCJ3aWR0aFwiKSksaGVpZ2h0OnBhcnNlRmxvYXQoZShcImhlaWdodFwiKSl9O2EucHVzaCh7cmVjdDpzLGNvbG9yOmlbdF0uZ2V0QXR0cmlidXRlKFwiY29sb3JcIil9KX0scj0wO3I8aS5sZW5ndGg7cisrKXMocik7dC5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChhKX0scz0wO3M8aS5sZW5ndGg7cysrKWEocyk7dC5nbG9iYWxzLmF4aXNDaGFydHN8fCh0Lmdsb2JhbHMucHJldmlvdXNQYXRocz10Lmdsb2JhbHMuc2VyaWVzKX19LHtrZXk6XCJoYW5kbGVQcmV2QnViYmxlU2NhdHRlclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LFwiLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNcIikpO2lmKGkubGVuZ3RoPjApZm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspe2Zvcih2YXIgcz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoYSxcIiddIGNpcmNsZVwiKSkscj1bXSxvPTA7bzxzLmxlbmd0aDtvKyspci5wdXNoKHt4OnNbb10uZ2V0QXR0cmlidXRlKFwiY3hcIikseTpzW29dLmdldEF0dHJpYnV0ZShcImN5XCIpLHI6c1tvXS5nZXRBdHRyaWJ1dGUoXCJyXCIpfSk7ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChyKX19fSx7a2V5OlwiY2xlYXJQcmV2aW91c1BhdGhzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLnByZXZpb3VzUGF0aHM9W10sdC5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZD0hMX19LHtrZXk6XCJoYW5kbGVOb0RhdGFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLm5vRGF0YSxpPW5ldyBtKHRoaXMuY3R4KSxhPXQuZ2xvYmFscy5zdmdXaWR0aC8yLHM9dC5nbG9iYWxzLnN2Z0hlaWdodC8yLHI9XCJtaWRkbGVcIjtpZih0Lmdsb2JhbHMubm9EYXRhPSEwLHQuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCxcImxlZnRcIj09PWUuYWxpZ24/KGE9MTAscj1cInN0YXJ0XCIpOlwicmlnaHRcIj09PWUuYWxpZ24mJihhPXQuZ2xvYmFscy5zdmdXaWR0aC0xMCxyPVwiZW5kXCIpLFwidG9wXCI9PT1lLnZlcnRpY2FsQWxpZ24/cz01MDpcImJvdHRvbVwiPT09ZS52ZXJ0aWNhbEFsaWduJiYocz10Lmdsb2JhbHMuc3ZnSGVpZ2h0LTUwKSxhKz1lLm9mZnNldFgscz1zK3BhcnNlSW50KGUuc3R5bGUuZm9udFNpemUsMTApKzIrZS5vZmZzZXRZLHZvaWQgMCE9PWUudGV4dCYmXCJcIiE9PWUudGV4dCl7dmFyIG89aS5kcmF3VGV4dCh7eDphLHk6cyx0ZXh0OmUudGV4dCx0ZXh0QW5jaG9yOnIsZm9udFNpemU6ZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmUuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6ZS5zdHlsZS5jb2xvcixvcGFjaXR5OjEsY2xhc3M6XCJhcGV4Y2hhcnRzLXRleHQtbm9kYXRhXCJ9KTt0Lmdsb2JhbHMuZG9tLlBhcGVyLmFkZChvKX19fSx7a2V5Olwic2V0TnVsbFNlcmllc1RvWmVyb1ZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT0wO2k8dC5sZW5ndGg7aSsrKWlmKDA9PT10W2ldLmxlbmd0aClmb3IodmFyIGE9MDthPHRbZS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDthKyspdFtpXS5wdXNoKDApO3JldHVybiB0fX0se2tleTpcImhhc0FsbFNlcmllc0VxdWFsWFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSEwLGU9dGhpcy53LGk9dGhpcy5maWx0ZXJlZFNlcmllc1goKSxhPTA7YTxpLmxlbmd0aC0xO2ErKylpZihpW2FdWzBdIT09aVthKzFdWzBdKXt0PSExO2JyZWFrfXJldHVybiBlLmdsb2JhbHMuYWxsU2VyaWVzSGFzRXF1YWxYPXQsdH19LHtrZXk6XCJmaWx0ZXJlZFNlcmllc1hcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLnNlcmllc1gubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg+MD90OltdfSkpO3JldHVybiB0fX1dKSx0fSgpLFc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50d29EU2VyaWVzPVtdLHRoaXMudGhyZWVEU2VyaWVzPVtdLHRoaXMudHdvRFNlcmllc1g9W10sdGhpcy5zZXJpZXNHb2Fscz1bXSx0aGlzLmNvcmVVdGlscz1uZXcgeSh0aGlzLmN0eCl9cmV0dXJuIHIodCxbe2tleTpcImlzTXVsdGlGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzRm9ybWF0WFkoKXx8dGhpcy5pc0Zvcm1hdDJEQXJyYXkoKX19LHtrZXk6XCJpc0Zvcm1hdFhZXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpLGU9bmV3IE4odGhpcy5jdHgpO2lmKHRoaXMuYWN0aXZlU2VyaWVzSW5kZXg9ZS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpLHZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YSYmdFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhLmxlbmd0aD4wJiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZ2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0ueCYmbnVsbCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSlyZXR1cm4hMH19LHtrZXk6XCJpc0Zvcm1hdDJEQXJyYXlcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5jb25maWcuc2VyaWVzLnNsaWNlKCksZT1uZXcgTih0aGlzLmN0eCk7aWYodGhpcy5hY3RpdmVTZXJpZXNJbmRleD1lLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCksdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEubGVuZ3RoPjAmJnZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSYmbnVsbCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXSYmdFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdLmNvbnN0cnVjdG9yPT09QXJyYXkpcmV0dXJuITB9fSx7a2V5OlwiaGFuZGxlRm9ybWF0MkRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXRoaXMudy5jb25maWcsYT10aGlzLncuZ2xvYmFscyxzPVwiYm94UGxvdFwiPT09aS5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PWkuc2VyaWVzW2VdLnR5cGUscj0wO3I8dFtlXS5kYXRhLmxlbmd0aDtyKyspaWYodm9pZCAwIT09dFtlXS5kYXRhW3JdWzFdJiYoQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbcl1bMV0pJiY0PT09dFtlXS5kYXRhW3JdWzFdLmxlbmd0aCYmIXM/dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbcl1bMV1bM10pKTp0W2VdLmRhdGFbcl0ubGVuZ3RoPj01P3RoaXMudHdvRFNlcmllcy5wdXNoKHgucGFyc2VOdW1iZXIodFtlXS5kYXRhW3JdWzRdKSk6dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbcl1bMV0pKSxhLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCksXCJkYXRldGltZVwiPT09aS54YXhpcy50eXBlKXt2YXIgbz1uZXcgRGF0ZSh0W2VdLmRhdGFbcl1bMF0pO289bmV3IERhdGUobykuZ2V0VGltZSgpLHRoaXMudHdvRFNlcmllc1gucHVzaChvKX1lbHNlIHRoaXMudHdvRFNlcmllc1gucHVzaCh0W2VdLmRhdGFbcl1bMF0pO2Zvcih2YXIgbj0wO248dFtlXS5kYXRhLmxlbmd0aDtuKyspdm9pZCAwIT09dFtlXS5kYXRhW25dWzJdJiYodGhpcy50aHJlZURTZXJpZXMucHVzaCh0W2VdLmRhdGFbbl1bMl0pLGEuaXNEYXRhWFlaPSEwKX19LHtrZXk6XCJoYW5kbGVGb3JtYXRYWVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LmNvbmZpZyxhPXRoaXMudy5nbG9iYWxzLHM9bmV3IEkodGhpcy5jdHgpLHI9ZTthLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKT4tMSYmKHI9dGhpcy5hY3RpdmVTZXJpZXNJbmRleCk7Zm9yKHZhciBvPTA7bzx0W2VdLmRhdGEubGVuZ3RoO28rKyl2b2lkIDAhPT10W2VdLmRhdGFbb10ueSYmKEFycmF5LmlzQXJyYXkodFtlXS5kYXRhW29dLnkpP3RoaXMudHdvRFNlcmllcy5wdXNoKHgucGFyc2VOdW1iZXIodFtlXS5kYXRhW29dLnlbdFtlXS5kYXRhW29dLnkubGVuZ3RoLTFdKSk6dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbb10ueSkpKSx2b2lkIDAhPT10W2VdLmRhdGFbb10uZ29hbHMmJkFycmF5LmlzQXJyYXkodFtlXS5kYXRhW29dLmdvYWxzKT8odm9pZCAwPT09dGhpcy5zZXJpZXNHb2Fsc1tlXSYmKHRoaXMuc2VyaWVzR29hbHNbZV09W10pLHRoaXMuc2VyaWVzR29hbHNbZV0ucHVzaCh0W2VdLmRhdGFbb10uZ29hbHMpKToodm9pZCAwPT09dGhpcy5zZXJpZXNHb2Fsc1tlXSYmKHRoaXMuc2VyaWVzR29hbHNbZV09W10pLHRoaXMuc2VyaWVzR29hbHNbZV0ucHVzaChudWxsKSk7Zm9yKHZhciBuPTA7bjx0W3JdLmRhdGEubGVuZ3RoO24rKyl7dmFyIGw9XCJzdHJpbmdcIj09dHlwZW9mIHRbcl0uZGF0YVtuXS54LGg9QXJyYXkuaXNBcnJheSh0W3JdLmRhdGFbbl0ueCksYz0haCYmISFzLmlzVmFsaWREYXRlKHRbcl0uZGF0YVtuXS54LnRvU3RyaW5nKCkpO2lmKGx8fGMpaWYobHx8aS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpe3ZhciBkPWEuaXNCYXJIb3Jpem9udGFsJiZhLmlzUmFuZ2VEYXRhO1wiZGF0ZXRpbWVcIiE9PWkueGF4aXMudHlwZXx8ZD8odGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbcl0uZGF0YVtuXS54KSxpc05hTih0W3JdLmRhdGFbbl0ueCl8fFwiY2F0ZWdvcnlcIj09PXRoaXMudy5jb25maWcueGF4aXMudHlwZXx8XCJzdHJpbmdcIj09dHlwZW9mIHRbcl0uZGF0YVtuXS54fHwoYS5pc1hOdW1lcmljPSEwKSk6dGhpcy50d29EU2VyaWVzWC5wdXNoKHMucGFyc2VEYXRlKHRbcl0uZGF0YVtuXS54KSl9ZWxzZVwiZGF0ZXRpbWVcIj09PWkueGF4aXMudHlwZT90aGlzLnR3b0RTZXJpZXNYLnB1c2gocy5wYXJzZURhdGUodFtyXS5kYXRhW25dLngudG9TdHJpbmcoKSkpOihhLmRhdGFGb3JtYXRYTnVtZXJpYz0hMCxhLmlzWE51bWVyaWM9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHBhcnNlRmxvYXQodFtyXS5kYXRhW25dLngpKSk7ZWxzZSBoPyh0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeT0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2godFtyXS5kYXRhW25dLngpKTooYS5pc1hOdW1lcmljPSEwLGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwLHRoaXMudHdvRFNlcmllc1gucHVzaCh0W3JdLmRhdGFbbl0ueCkpfWlmKHRbZV0uZGF0YVswXSYmdm9pZCAwIT09dFtlXS5kYXRhWzBdLnope2Zvcih2YXIgZz0wO2c8dFtlXS5kYXRhLmxlbmd0aDtnKyspdGhpcy50aHJlZURTZXJpZXMucHVzaCh0W2VdLmRhdGFbZ10ueik7YS5pc0RhdGFYWVo9ITB9fX0se2tleTpcImhhbmRsZVJhbmdlRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMsYT17fTtyZXR1cm4gdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT9hPXRoaXMuaGFuZGxlUmFuZ2VEYXRhRm9ybWF0KFwiYXJyYXlcIix0LGUpOnRoaXMuaXNGb3JtYXRYWSgpJiYoYT10aGlzLmhhbmRsZVJhbmdlRGF0YUZvcm1hdChcInh5XCIsdCxlKSksaS5zZXJpZXNSYW5nZVN0YXJ0LnB1c2goYS5zdGFydCksaS5zZXJpZXNSYW5nZUVuZC5wdXNoKGEuZW5kKSxpLnNlcmllc1JhbmdlLnB1c2goYS5yYW5nZVVuaXF1ZXMpLGkuc2VyaWVzUmFuZ2UuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0JiZ0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC55LmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7Zm9yKHZhciBhPTA7YTx0LnkubGVuZ3RoO2ErKylpZihpIT09YSl7dmFyIHM9ZS55MSxyPWUueTIsbz10LnlbYV0ueTE7czw9dC55W2FdLnkyJiZvPD1yJiYodC5vdmVybGFwcy5pbmRleE9mKGUucmFuZ2VOYW1lKTwwJiZ0Lm92ZXJsYXBzLnB1c2goZS5yYW5nZU5hbWUpLHQub3ZlcmxhcHMuaW5kZXhPZih0LnlbYV0ucmFuZ2VOYW1lKTwwJiZ0Lm92ZXJsYXBzLnB1c2godC55W2FdLnJhbmdlTmFtZSkpfX0pKX0pKX0pKSxhfX0se2tleTpcImhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53Lmdsb2JhbHMsYT17fTtyZXR1cm4gdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT9hPXRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0KFwiYXJyYXlcIix0LGUpOnRoaXMuaXNGb3JtYXRYWSgpJiYoYT10aGlzLmhhbmRsZUNhbmRsZVN0aWNrQm94RGF0YUZvcm1hdChcInh5XCIsdCxlKSksaS5zZXJpZXNDYW5kbGVPW2VdPWEubyxpLnNlcmllc0NhbmRsZUhbZV09YS5oLGkuc2VyaWVzQ2FuZGxlTVtlXT1hLm0saS5zZXJpZXNDYW5kbGVMW2VdPWEubCxpLnNlcmllc0NhbmRsZUNbZV09YS5jLGF9fSx7a2V5OlwiaGFuZGxlUmFuZ2VEYXRhRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPVtdLHM9W10scj1lW2ldLmRhdGEuZmlsdGVyKChmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGU9PT1pLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUueD09PXQueH0pKX0pKS5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3g6dC54LG92ZXJsYXBzOltdLHk6W119fSkpO2lmKFwiYXJyYXlcIj09PXQpZm9yKHZhciBvPTA7bzxlW2ldLmRhdGEubGVuZ3RoO28rKylBcnJheS5pc0FycmF5KGVbaV0uZGF0YVtvXSk/KGEucHVzaChlW2ldLmRhdGFbb11bMV1bMF0pLHMucHVzaChlW2ldLmRhdGFbb11bMV1bMV0pKTooYS5wdXNoKGVbaV0uZGF0YVtvXSkscy5wdXNoKGVbaV0uZGF0YVtvXSkpO2Vsc2UgaWYoXCJ4eVwiPT09dClmb3IodmFyIG49ZnVuY3Rpb24odCl7dmFyIG89QXJyYXkuaXNBcnJheShlW2ldLmRhdGFbdF0ueSksbj14LnJhbmRvbUlkKCksbD1lW2ldLmRhdGFbdF0ueCxoPXt5MTpvP2VbaV0uZGF0YVt0XS55WzBdOmVbaV0uZGF0YVt0XS55LHkyOm8/ZVtpXS5kYXRhW3RdLnlbMV06ZVtpXS5kYXRhW3RdLnkscmFuZ2VOYW1lOm59O2VbaV0uZGF0YVt0XS5yYW5nZU5hbWU9bjt2YXIgYz1yLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQueD09PWx9KSk7cltjXS55LnB1c2goaCksYS5wdXNoKGgueTEpLHMucHVzaChoLnkyKX0sbD0wO2w8ZVtpXS5kYXRhLmxlbmd0aDtsKyspbihsKTtyZXR1cm57c3RhcnQ6YSxlbmQ6cyxyYW5nZVVuaXF1ZXM6cn19fSx7a2V5OlwiaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPVwiYm94UGxvdFwiPT09YS5jb25maWcuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1hLmNvbmZpZy5zZXJpZXNbaV0udHlwZSxyPVtdLG89W10sbj1bXSxsPVtdLGg9W107aWYoXCJhcnJheVwiPT09dClpZihzJiY2PT09ZVtpXS5kYXRhWzBdLmxlbmd0aHx8IXMmJjU9PT1lW2ldLmRhdGFbMF0ubGVuZ3RoKWZvcih2YXIgYz0wO2M8ZVtpXS5kYXRhLmxlbmd0aDtjKyspci5wdXNoKGVbaV0uZGF0YVtjXVsxXSksby5wdXNoKGVbaV0uZGF0YVtjXVsyXSkscz8obi5wdXNoKGVbaV0uZGF0YVtjXVszXSksbC5wdXNoKGVbaV0uZGF0YVtjXVs0XSksaC5wdXNoKGVbaV0uZGF0YVtjXVs1XSkpOihsLnB1c2goZVtpXS5kYXRhW2NdWzNdKSxoLnB1c2goZVtpXS5kYXRhW2NdWzRdKSk7ZWxzZSBmb3IodmFyIGQ9MDtkPGVbaV0uZGF0YS5sZW5ndGg7ZCsrKUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW2RdWzFdKSYmKHIucHVzaChlW2ldLmRhdGFbZF1bMV1bMF0pLG8ucHVzaChlW2ldLmRhdGFbZF1bMV1bMV0pLHM/KG4ucHVzaChlW2ldLmRhdGFbZF1bMV1bMl0pLGwucHVzaChlW2ldLmRhdGFbZF1bMV1bM10pLGgucHVzaChlW2ldLmRhdGFbZF1bMV1bNF0pKToobC5wdXNoKGVbaV0uZGF0YVtkXVsxXVsyXSksaC5wdXNoKGVbaV0uZGF0YVtkXVsxXVszXSkpKTtlbHNlIGlmKFwieHlcIj09PXQpZm9yKHZhciBnPTA7ZzxlW2ldLmRhdGEubGVuZ3RoO2crKylBcnJheS5pc0FycmF5KGVbaV0uZGF0YVtnXS55KSYmKHIucHVzaChlW2ldLmRhdGFbZ10ueVswXSksby5wdXNoKGVbaV0uZGF0YVtnXS55WzFdKSxzPyhuLnB1c2goZVtpXS5kYXRhW2ddLnlbMl0pLGwucHVzaChlW2ldLmRhdGFbZ10ueVszXSksaC5wdXNoKGVbaV0uZGF0YVtnXS55WzRdKSk6KGwucHVzaChlW2ldLmRhdGFbZ10ueVsyXSksaC5wdXNoKGVbaV0uZGF0YVtnXS55WzNdKSkpO3JldHVybntvOnIsaDpvLG06bixsOmwsYzpofX19LHtrZXk6XCJwYXJzZURhdGFBeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnRoaXMuY3R4LHM9dGhpcy53LmNvbmZpZyxyPXRoaXMudy5nbG9iYWxzLG89bmV3IEkoYSksbj1zLmxhYmVscy5sZW5ndGg+MD9zLmxhYmVscy5zbGljZSgpOnMueGF4aXMuY2F0ZWdvcmllcy5zbGljZSgpO2lmKHIuaXNSYW5nZUJhcj1cInJhbmdlQmFyXCI9PT1zLmNoYXJ0LnR5cGUmJnIuaXNCYXJIb3Jpem9udGFsLHIuaGFzWGF4aXNHcm91cHM9XCJjYXRlZ29yeVwiPT09cy54YXhpcy50eXBlJiZzLnhheGlzLmdyb3VwLmdyb3Vwcy5sZW5ndGg+MCxyLmhhc1hheGlzR3JvdXBzJiYoci5ncm91cHM9cy54YXhpcy5ncm91cC5ncm91cHMpLHIuaGFzU2VyaWVzR3JvdXBzPW51bGw9PT0oZT10WzBdKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5ncm91cCxyLmhhc1Nlcmllc0dyb3Vwcyl7dmFyIGw9W10saD11KG5ldyBTZXQodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmdyb3VwfSkpKSk7dC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3ZhciBpPWguaW5kZXhPZih0Lmdyb3VwKTtsW2ldfHwobFtpXT1bXSksbFtpXS5wdXNoKHQubmFtZSl9KSksci5zZXJpZXNHcm91cHM9bH1mb3IodmFyIGM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKylpZihcInN0cmluZ1wiPT10eXBlb2Ygblt0XSl7aWYoIW8uaXNWYWxpZERhdGUoblt0XSkpdGhyb3cgbmV3IEVycm9yKFwiWW91IGhhdmUgcHJvdmlkZWQgaW52YWxpZCBEYXRlIGZvcm1hdC4gUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBKYXZhU2NyaXB0IERhdGVcIik7aS50d29EU2VyaWVzWC5wdXNoKG8ucGFyc2VEYXRlKG5bdF0pKX1lbHNlIGkudHdvRFNlcmllc1gucHVzaChuW3RdKX0sZD0wO2Q8dC5sZW5ndGg7ZCsrKXtpZih0aGlzLnR3b0RTZXJpZXM9W10sdGhpcy50d29EU2VyaWVzWD1bXSx0aGlzLnRocmVlRFNlcmllcz1bXSx2b2lkIDA9PT10W2RdLmRhdGEpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcihcIkl0IGlzIGEgcG9zc2liaWxpdHkgdGhhdCB5b3UgbWF5IGhhdmUgbm90IGluY2x1ZGVkICdkYXRhJyBwcm9wZXJ0eSBpbiBzZXJpZXMuXCIpO2lmKFwicmFuZ2VCYXJcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUFyZWFcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09dFtkXS50eXBlJiZcInJhbmdlQXJlYVwiIT09dFtkXS50eXBlfHwoci5pc1JhbmdlRGF0YT0hMCxyLmlzQ29tYm9DaGFydHM/XCJyYW5nZUJhclwiIT09dFtkXS50eXBlJiZcInJhbmdlQXJlYVwiIT09dFtkXS50eXBlfHx0aGlzLmhhbmRsZVJhbmdlRGF0YSh0LGQpOlwicmFuZ2VCYXJcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUFyZWFcIiE9PXMuY2hhcnQudHlwZXx8dGhpcy5oYW5kbGVSYW5nZURhdGEodCxkKSksdGhpcy5pc011bHRpRm9ybWF0KCkpdGhpcy5pc0Zvcm1hdDJEQXJyYXkoKT90aGlzLmhhbmRsZUZvcm1hdDJEQXJyYXkodCxkKTp0aGlzLmlzRm9ybWF0WFkoKSYmdGhpcy5oYW5kbGVGb3JtYXRYWSh0LGQpLFwiY2FuZGxlc3RpY2tcIiE9PXMuY2hhcnQudHlwZSYmXCJjYW5kbGVzdGlja1wiIT09dFtkXS50eXBlJiZcImJveFBsb3RcIiE9PXMuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT10W2RdLnR5cGV8fHRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhKHQsZCksci5zZXJpZXMucHVzaCh0aGlzLnR3b0RTZXJpZXMpLHIubGFiZWxzLnB1c2godGhpcy50d29EU2VyaWVzWCksci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCksci5zZXJpZXNHb2Fscz10aGlzLnNlcmllc0dvYWxzLGQhPT10aGlzLmFjdGl2ZVNlcmllc0luZGV4fHx0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeXx8KHIuaXNYTnVtZXJpYz0hMCk7ZWxzZXtcImRhdGV0aW1lXCI9PT1zLnhheGlzLnR5cGU/KHIuaXNYTnVtZXJpYz0hMCxjKCksci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCkpOlwibnVtZXJpY1wiPT09cy54YXhpcy50eXBlJiYoci5pc1hOdW1lcmljPSEwLG4ubGVuZ3RoPjAmJih0aGlzLnR3b0RTZXJpZXNYPW4sci5zZXJpZXNYLnB1c2godGhpcy50d29EU2VyaWVzWCkpKSxyLmxhYmVscy5wdXNoKHRoaXMudHdvRFNlcmllc1gpO3ZhciBnPXRbZF0uZGF0YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB4LnBhcnNlTnVtYmVyKHQpfSkpO3Iuc2VyaWVzLnB1c2goZyl9ci5zZXJpZXNaLnB1c2godGhpcy50aHJlZURTZXJpZXMpLHZvaWQgMCE9PXRbZF0ubmFtZT9yLnNlcmllc05hbWVzLnB1c2godFtkXS5uYW1lKTpyLnNlcmllc05hbWVzLnB1c2goXCJzZXJpZXMtXCIrcGFyc2VJbnQoZCsxLDEwKSksdm9pZCAwIT09dFtkXS5jb2xvcj9yLnNlcmllc0NvbG9ycy5wdXNoKHRbZF0uY29sb3IpOnIuc2VyaWVzQ29sb3JzLnB1c2godm9pZCAwKX1yZXR1cm4gdGhpcy53fX0se2tleTpcInBhcnNlRGF0YU5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWc7ZS5zZXJpZXM9dC5zbGljZSgpLGUuc2VyaWVzTmFtZXM9aS5sYWJlbHMuc2xpY2UoKTtmb3IodmFyIGE9MDthPGUuc2VyaWVzLmxlbmd0aDthKyspdm9pZCAwPT09ZS5zZXJpZXNOYW1lc1thXSYmZS5zZXJpZXNOYW1lcy5wdXNoKFwic2VyaWVzLVwiKyhhKzEpKTtyZXR1cm4gdGhpcy53fX0se2tleTpcImhhbmRsZUV4dGVybmFsTGFiZWxzRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5jb25maWcsaT10aGlzLncuZ2xvYmFscztpZihlLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoPjApaS5sYWJlbHM9ZS54YXhpcy5jYXRlZ29yaWVzO2Vsc2UgaWYoZS5sYWJlbHMubGVuZ3RoPjApaS5sYWJlbHM9ZS5sYWJlbHMuc2xpY2UoKTtlbHNlIGlmKHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5KXtpZihpLmxhYmVscz1pLmxhYmVsc1swXSxpLnNlcmllc1JhbmdlLmxlbmd0aCYmKGkuc2VyaWVzUmFuZ2UubWFwKChmdW5jdGlvbih0KXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kubGFiZWxzLmluZGV4T2YodC54KTwwJiZ0LngmJmkubGFiZWxzLnB1c2godC54KX0pKX0pKSxpLmxhYmVscz1BcnJheS5mcm9tKG5ldyBTZXQoaS5sYWJlbHMubWFwKEpTT04uc3RyaW5naWZ5KSksSlNPTi5wYXJzZSkpLGUueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKW5ldyBYKGUpLmNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyhlLHRoaXMuY3R4LGkuc2VyaWVzWFswXSksdGhpcy5fZ2VuZXJhdGVFeHRlcm5hbExhYmVscyh0KX1lbHNlIHRoaXMuX2dlbmVyYXRlRXh0ZXJuYWxMYWJlbHModCl9fSx7a2V5OlwiX2dlbmVyYXRlRXh0ZXJuYWxMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcsYT1bXTtpZihlLmF4aXNDaGFydHMpe2lmKGUuc2VyaWVzLmxlbmd0aD4wKWlmKHRoaXMuaXNGb3JtYXRYWSgpKWZvcih2YXIgcz1pLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gaS5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpe3JldHVybiBlLng9PT10Lnh9KSk9PT1lfSkpfSkpLHI9cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiBhW3RdLmxlbmd0aD5lLmxlbmd0aD90Oml9KSwwKSxvPTA7bzxzW3JdLmxlbmd0aDtvKyspYS5wdXNoKG8rMSk7ZWxzZSBmb3IodmFyIG49MDtuPGUuc2VyaWVzW2UubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO24rKylhLnB1c2gobisxKTtlLnNlcmllc1g9W107Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspZS5zZXJpZXNYLnB1c2goYSk7dGhpcy53Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwoZS5pc1hOdW1lcmljPSEwKX1pZigwPT09YS5sZW5ndGgpe2E9ZS5heGlzQ2hhcnRzP1tdOmUuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsxfSkpO2Zvcih2YXIgaD0wO2g8dC5sZW5ndGg7aCsrKWUuc2VyaWVzWC5wdXNoKGEpfWUubGFiZWxzPWEsaS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihlLmNhdGVnb3J5TGFiZWxzPWEubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gaS54YXhpcy5sYWJlbHMuZm9ybWF0dGVyKHQpfSkpKSxlLm5vTGFiZWxzUHJvdmlkZWQ9ITB9fSx7a2V5OlwicGFyc2VEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcsYT1lLmdsb2JhbHM7aWYodGhpcy5leGNsdWRlQ29sbGFwc2VkU2VyaWVzSW5ZQXhpcygpLHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSExLHRoaXMuY3R4LmNvcmUucmVzZXRHbG9iYWxzKCksdGhpcy5jdHguY29yZS5pc011bHRpcGxlWSgpLGEuYXhpc0NoYXJ0cz8odGhpcy5wYXJzZURhdGFBeGlzQ2hhcnRzKHQpLHRoaXMuY29yZVV0aWxzLmdldExhcmdlc3RTZXJpZXMoKSk6dGhpcy5wYXJzZURhdGFOb25BeGlzQ2hhcnRzKHQpLGkuY2hhcnQuc3RhY2tlZCl7dmFyIHM9bmV3IE4odGhpcy5jdHgpO2Euc2VyaWVzPXMuc2V0TnVsbFNlcmllc1RvWmVyb1ZhbHVlcyhhLnNlcmllcyl9dGhpcy5jb3JlVXRpbHMuZ2V0U2VyaWVzVG90YWxzKCksYS5heGlzQ2hhcnRzJiYoYS5zdGFja2VkU2VyaWVzVG90YWxzPXRoaXMuY29yZVV0aWxzLmdldFN0YWNrZWRTZXJpZXNUb3RhbHMoKSksdGhpcy5jb3JlVXRpbHMuZ2V0UGVyY2VudFNlcmllcygpLGEuZGF0YUZvcm1hdFhOdW1lcmljfHxhLmlzWE51bWVyaWMmJihcIm51bWVyaWNcIiE9PWkueGF4aXMudHlwZXx8MCE9PWkubGFiZWxzLmxlbmd0aHx8MCE9PWkueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgpfHx0aGlzLmhhbmRsZUV4dGVybmFsTGFiZWxzRGF0YSh0KTtmb3IodmFyIHI9dGhpcy5jb3JlVXRpbHMuZ2V0Q2F0ZWdvcnlMYWJlbHMoYS5sYWJlbHMpLG89MDtvPHIubGVuZ3RoO28rKylpZihBcnJheS5pc0FycmF5KHJbb10pKXthLmlzTXVsdGlMaW5lWD0hMDticmVha319fSx7a2V5OlwiZXhjbHVkZUNvbGxhcHNlZFNlcmllc0luWUF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7ZS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcz1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLm1hcCgoZnVuY3Rpb24oaSxhKXtpZih0LncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXMmJiFlLmNvbmZpZy5jaGFydC5zdGFja2VkKXJldHVybiBpLmluZGV4fSkpfX1dKSx0fSgpLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImdldExhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOltdLHI9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOlwiMTJweFwiLG89IShhcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XSl8fGFyZ3VtZW50c1s2XSxuPXRoaXMudyxsPXZvaWQgMD09PXRbYV0/XCJcIjp0W2FdLGg9bCxjPW4uZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsZD1uLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLGc9ITEsdT1uZXcgTSh0aGlzLmN0eCkscD1sO28mJihoPXUueExhYmVsRm9ybWF0KGMsbCxwLHtpOmEsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmN0eCkuZm9ybWF0RGF0ZSx3Om59KSx2b2lkIDAhPT1kJiYoaD1kKGwsdFthXSx7aTphLGRhdGVGb3JtYXR0ZXI6bmV3IEkodGhpcy5jdHgpLmZvcm1hdERhdGUsdzpufSkpKTt2YXIgZix4O2UubGVuZ3RoPjA/KGY9ZVthXS51bml0LHg9bnVsbCxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe1wibW9udGhcIj09PXQudW5pdD94PVwieWVhclwiOlwiZGF5XCI9PT10LnVuaXQ/eD1cIm1vbnRoXCI6XCJob3VyXCI9PT10LnVuaXQ/eD1cImRheVwiOlwibWludXRlXCI9PT10LnVuaXQmJih4PVwiaG91clwiKX0pKSxnPXg9PT1mLGk9ZVthXS5wb3NpdGlvbixoPWVbYV0udmFsdWUpOlwiZGF0ZXRpbWVcIj09PW4uY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PWQmJihoPVwiXCIpLHZvaWQgMD09PWgmJihoPVwiXCIpLGg9QXJyYXkuaXNBcnJheShoKT9oOmgudG9TdHJpbmcoKTt2YXIgYj1uZXcgbSh0aGlzLmN0eCksdj17fTt2PW4uZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZvP2IuZ2V0VGV4dFJlY3RzKGgscGFyc2VJbnQociwxMCksbnVsbCxcInJvdGF0ZShcIi5jb25jYXQobi5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLCExKTpiLmdldFRleHRSZWN0cyhoLHBhcnNlSW50KHIsMTApKTt2YXIgeT0hbi5jb25maWcueGF4aXMubGFiZWxzLnNob3dEdXBsaWNhdGVzJiZ0aGlzLmN0eC50aW1lU2NhbGU7cmV0dXJuIUFycmF5LmlzQXJyYXkoaCkmJigwPT09aC5pbmRleE9mKFwiTmFOXCIpfHwwPT09aC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJpbnZhbGlkXCIpfHxoLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImluZmluaXR5XCIpPj0wfHxzLmluZGV4T2YoaCk+PTAmJnkpJiYoaD1cIlwiKSx7eDppLHRleHQ6aCx0ZXh0UmVjdDp2LGlzQm9sZDpnfX19LHtrZXk6XCJjaGVja0xhYmVsQmFzZWRPblRpY2thbW91bnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9YS5jb25maWcueGF4aXMudGlja0Ftb3VudDtyZXR1cm5cImRhdGFQb2ludHNcIj09PXMmJihzPU1hdGgucm91bmQoYS5nbG9iYWxzLmdyaWRXaWR0aC8xMjApKSxzPml8fHQlTWF0aC5yb3VuZChpLyhzKzEpKT09MHx8KGUudGV4dD1cIlwiKSxlfX0se2tleTpcImNoZWNrRm9yT3ZlcmZsb3dpbmdMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3ZhciByPXRoaXMudztpZigwPT09dCYmci5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWwmJihlLnRleHQ9XCJcIiksdD09PWktMSYmci5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmKGUudGV4dD1cIlwiKSxyLmNvbmZpZy54YXhpcy5sYWJlbHMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzJiZhLmxlbmd0aD4wKXt2YXIgbz1zW3MubGVuZ3RoLTFdO2UueDxvLnRleHRSZWN0LndpZHRoLyhyLmdsb2JhbHMucm90YXRlWExhYmVscz9NYXRoLmFicyhyLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlKS8xMjoxLjAxKStvLngmJihlLnRleHQ9XCJcIil9cmV0dXJuIGV9fSx7a2V5OlwiY2hlY2tGb3JSZXZlcnNlZExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybiBpLmNvbmZpZy55YXhpc1t0XSYmaS5jb25maWcueWF4aXNbdF0ucmV2ZXJzZWQmJmUucmV2ZXJzZSgpLGV9fSx7a2V5OlwiaXNZQXhpc0hpZGRlblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyB5KHRoaXMuY3R4KTtyZXR1cm4hZS5jb25maWcueWF4aXNbdF0uc2hvd3x8IWUuY29uZmlnLnlheGlzW3RdLnNob3dGb3JOdWxsU2VyaWVzJiZpLmlzU2VyaWVzTnVsbCh0KSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpfX0se2tleTpcImdldFlBeGlzRm9yZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJmkuZ2xvYmFscy55QXhpc1NjYWxlW2VdJiZ0aGlzLmN0eC50aGVtZS5wdXNoRXh0cmFDb2xvcnModCxpLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5yZXN1bHQubGVuZ3RoLCExKSx0fX0se2tleTpcImRyYXdZQXhpc1RpY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49dGhpcy53LGw9bmV3IG0odGhpcy5jdHgpLGg9bi5nbG9iYWxzLnRyYW5zbGF0ZVk7aWYoYS5zaG93JiZlPjApeyEwPT09bi5jb25maWcueWF4aXNbc10ub3Bwb3NpdGUmJih0Kz1hLndpZHRoKTtmb3IodmFyIGM9ZTtjPj0wO2MtLSl7dmFyIGQ9aCtlLzEwK24uY29uZmlnLnlheGlzW3NdLmxhYmVscy5vZmZzZXRZLTE7bi5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGQ9cipjKSxcImhlYXRtYXBcIj09PW4uY29uZmlnLmNoYXJ0LnR5cGUmJihkKz1yLzIpO3ZhciBnPWwuZHJhd0xpbmUodCtpLm9mZnNldFgtYS53aWR0aCthLm9mZnNldFgsZCthLm9mZnNldFksdCtpLm9mZnNldFgrYS5vZmZzZXRYLGQrYS5vZmZzZXRZLGEuY29sb3IpO28uYWRkKGcpLGgrPXJ9fX19XSksdH0oKSxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJzY2FsZVN2Z05vZGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGVOUyhudWxsLFwid2lkdGhcIikpLGE9cGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZU5TKG51bGwsXCJoZWlnaHRcIikpO3Quc2V0QXR0cmlidXRlTlMobnVsbCxcIndpZHRoXCIsaSplKSx0LnNldEF0dHJpYnV0ZU5TKG51bGwsXCJoZWlnaHRcIixhKmUpLHQuc2V0QXR0cmlidXRlTlMobnVsbCxcInZpZXdCb3hcIixcIjAgMCBcIitpK1wiIFwiK2EpfX0se2tleTpcImZpeFN2Z1N0cmluZ0ZvckllMTFcIix2YWx1ZTpmdW5jdGlvbih0KXtpZigheC5pc0lFMTEoKSlyZXR1cm4gdC5yZXBsYWNlKC8mbmJzcDsvZyxcIiYjMTYwO1wiKTt2YXIgZT0wLGk9dC5yZXBsYWNlKC94bWxucz1cImh0dHA6XFwvXFwvd3d3LnczLm9yZ1xcLzIwMDBcXC9zdmdcIi9nLChmdW5jdGlvbih0KXtyZXR1cm4gMj09PSsrZT8neG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeG1sbnM6c3ZnanM9XCJodHRwOi8vc3ZnanMuZGV2XCInOnR9KSk7cmV0dXJuIGk9KGk9aS5yZXBsYWNlKC94bWxuczpOU1xcZCs9XCJcIi9nLFwiXCIpKS5yZXBsYWNlKC9OU1xcZCs6KFxcdys6XFx3Kz1cIikvZyxcIiQxXCIpfX0se2tleTpcImdldFN2Z1N0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe251bGw9PXQmJih0PTEpO3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5zdmcoKTtpZigxIT09dCl7dmFyIGk9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGUuY2xvbmVOb2RlKCEwKTt0aGlzLnNjYWxlU3ZnTm9kZShpLHQpLGU9KG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyhpKX1yZXR1cm4gdGhpcy5maXhTdmdTdHJpbmdGb3JJZTExKGUpfX0se2tleTpcImNsZWFudXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMteWNyb3NzaGFpcnNcIiksYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtem9vbS1yZWN0LCAuYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsKGZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKFwid2lkdGhcIiwwKX0pKSxlJiZlWzBdJiYoZVswXS5zZXRBdHRyaWJ1dGUoXCJ4XCIsLTUwMCksZVswXS5zZXRBdHRyaWJ1dGUoXCJ4MVwiLC01MDApLGVbMF0uc2V0QXR0cmlidXRlKFwieDJcIiwtNTAwKSksaSYmaVswXSYmKGlbMF0uc2V0QXR0cmlidXRlKFwieVwiLC0xMDApLGlbMF0uc2V0QXR0cmlidXRlKFwieTFcIiwtMTAwKSxpWzBdLnNldEF0dHJpYnV0ZShcInkyXCIsLTEwMCkpfX0se2tleTpcInN2Z1VybFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jbGVhbnVwKCk7dmFyIHQ9dGhpcy5nZXRTdmdTdHJpbmcoKSxlPW5ldyBCbG9iKFt0XSx7dHlwZTpcImltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOFwifSk7cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoZSl9fSx7a2V5OlwiZGF0YVVSSVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihpKXt2YXIgYT1lLncscz10P3Quc2NhbGV8fHQud2lkdGgvYS5nbG9iYWxzLnN2Z1dpZHRoOjE7ZS5jbGVhbnVwKCk7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtyLndpZHRoPWEuZ2xvYmFscy5zdmdXaWR0aCpzLHIuaGVpZ2h0PXBhcnNlSW50KGEuZ2xvYmFscy5kb20uZWxXcmFwLnN0eWxlLmhlaWdodCwxMCkqczt2YXIgbz1cInRyYW5zcGFyZW50XCI9PT1hLmNvbmZpZy5jaGFydC5iYWNrZ3JvdW5kP1wiI2ZmZlwiOmEuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQsbj1yLmdldENvbnRleHQoXCIyZFwiKTtuLmZpbGxTdHlsZT1vLG4uZmlsbFJlY3QoMCwwLHIud2lkdGgqcyxyLmhlaWdodCpzKTt2YXIgbD1lLmdldFN2Z1N0cmluZyhzKTtpZih3aW5kb3cuY2FudmcmJnguaXNJRTExKCkpe3ZhciBoPXdpbmRvdy5jYW52Zy5DYW52Zy5mcm9tU3RyaW5nKG4sbCx7aWdub3JlQ2xlYXI6ITAsaWdub3JlRGltZW5zaW9uczohMH0pO2guc3RhcnQoKTt2YXIgYz1yLm1zVG9CbG9iKCk7aC5zdG9wKCksaSh7YmxvYjpjfSl9ZWxzZXt2YXIgZD1cImRhdGE6aW1hZ2Uvc3ZnK3htbCxcIitlbmNvZGVVUklDb21wb25lbnQobCksZz1uZXcgSW1hZ2U7Zy5jcm9zc09yaWdpbj1cImFub255bW91c1wiLGcub25sb2FkPWZ1bmN0aW9uKCl7aWYobi5kcmF3SW1hZ2UoZywwLDApLHIubXNUb0Jsb2Ipe3ZhciB0PXIubXNUb0Jsb2IoKTtpKHtibG9iOnR9KX1lbHNle3ZhciBlPXIudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO2koe2ltZ1VSSTplfSl9fSxnLnNyYz1kfX0pKX19LHtrZXk6XCJleHBvcnRUb1NWR1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyRG93bmxvYWQodGhpcy5zdmdVcmwoKSx0aGlzLncuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LnN2Zy5maWxlbmFtZSxcIi5zdmdcIil9fSx7a2V5OlwiZXhwb3J0VG9QbmdcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kYXRhVVJJKCkudGhlbigoZnVuY3Rpb24oZSl7dmFyIGk9ZS5pbWdVUkksYT1lLmJsb2I7YT9uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihhLHQudy5nbG9iYWxzLmNoYXJ0SUQrXCIucG5nXCIpOnQudHJpZ2dlckRvd25sb2FkKGksdC53LmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5wbmcuZmlsZW5hbWUsXCIucG5nXCIpfSkpfX0se2tleTpcImV4cG9ydFRvQ1NWXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQuc2VyaWVzLGE9dC5maWxlTmFtZSxzPXQuY29sdW1uRGVsaW1pdGVyLHI9dm9pZCAwPT09cz9cIixcIjpzLG89dC5saW5lRGVsaW1pdGVyLG49dm9pZCAwPT09bz9cIlxcblwiOm8sbD10aGlzLnc7aXx8KGk9bC5jb25maWcuc2VyaWVzKTt2YXIgaD1bXSxjPVtdLGQ9XCJcIixnPWwuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybi0xPT09bC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihlKT90OltdfSkpLHA9TWF0aC5tYXguYXBwbHkoTWF0aCx1KGkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhP3QuZGF0YS5sZW5ndGg6MH0pKSkpLGY9bmV3IFcodGhpcy5jdHgpLGI9bmV3IEIodGhpcy5jdHgpLHY9ZnVuY3Rpb24odCl7dmFyIGk9XCJcIjtpZihsLmdsb2JhbHMuYXhpc0NoYXJ0cyl7aWYoXCJjYXRlZ29yeVwiPT09bC5jb25maWcueGF4aXMudHlwZXx8bC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKWlmKGwuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe3ZhciBhPWwuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdLHM9bmV3IE4oZS5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCk7aT1hKGwuZ2xvYmFscy5sYWJlbHNbdF0se3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6dCx3Omx9KX1lbHNlIGk9Yi5nZXRMYWJlbChsLmdsb2JhbHMubGFiZWxzLGwuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMsMCx0KS50ZXh0O1wiZGF0ZXRpbWVcIj09PWwuY29uZmlnLnhheGlzLnR5cGUmJihsLmNvbmZpZy54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aD9pPWwuY29uZmlnLnhheGlzLmNhdGVnb3JpZXNbdF06bC5jb25maWcubGFiZWxzLmxlbmd0aCYmKGk9bC5jb25maWcubGFiZWxzW3RdKSl9ZWxzZSBpPWwuY29uZmlnLmxhYmVsc1t0XTtyZXR1cm4gQXJyYXkuaXNBcnJheShpKSYmKGk9aS5qb2luKFwiIFwiKSkseC5pc051bWJlcihpKT9pOmkuc3BsaXQocikuam9pbihcIlwiKX0sbT1mdW5jdGlvbih0LGUpe2lmKGgubGVuZ3RoJiYwPT09ZSYmYy5wdXNoKGguam9pbihyKSksdC5kYXRhKXt0LmRhdGE9dC5kYXRhLmxlbmd0aCYmdC5kYXRhfHx1KEFycmF5KHApKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuXCJcIn0pKTtmb3IodmFyIGE9MDthPHQuZGF0YS5sZW5ndGg7YSsrKXtoPVtdO3ZhciBzPXYoYSk7aWYoc3x8KGYuaXNGb3JtYXRYWSgpP3M9aVtlXS5kYXRhW2FdLng6Zi5pc0Zvcm1hdDJEQXJyYXkoKSYmKHM9aVtlXS5kYXRhW2FdP2lbZV0uZGF0YVthXVswXTpcIlwiKSksMD09PWUpe2gucHVzaCgoZD1zLFwiZGF0ZXRpbWVcIj09PWwuY29uZmlnLnhheGlzLnR5cGUmJlN0cmluZyhkKS5sZW5ndGg+PTEwP2wuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5kYXRlRm9ybWF0dGVyKHMpOnguaXNOdW1iZXIocyk/czpzLnNwbGl0KHIpLmpvaW4oXCJcIikpKTtmb3IodmFyIG89MDtvPGwuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO28rKyl7dmFyIG47aWYoZi5pc0Zvcm1hdFhZKCkpaC5wdXNoKG51bGw9PT0obj1pW29dLmRhdGFbYV0pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnkpO2Vsc2UgaC5wdXNoKGdbb11bYV0pfX0oXCJjYW5kbGVzdGlja1wiPT09bC5jb25maWcuY2hhcnQudHlwZXx8dC50eXBlJiZcImNhbmRsZXN0aWNrXCI9PT10LnR5cGUpJiYoaC5wb3AoKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1bYV0pKSwoXCJib3hQbG90XCI9PT1sLmNvbmZpZy5jaGFydC50eXBlfHx0LnR5cGUmJlwiYm94UGxvdFwiPT09dC50eXBlKSYmKGgucG9wKCksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUhbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUNbZV1bYV0pKSxcInJhbmdlQmFyXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlJiYoaC5wb3AoKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbZV1bYV0pKSxoLmxlbmd0aCYmYy5wdXNoKGguam9pbihyKSl9fXZhciBkfTtoLnB1c2gobC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmhlYWRlckNhdGVnb3J5KSxcImJveFBsb3RcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGgucHVzaChcIm1pbmltdW1cIiksaC5wdXNoKFwicTFcIiksaC5wdXNoKFwibWVkaWFuXCIpLGgucHVzaChcInEzXCIpLGgucHVzaChcIm1heGltdW1cIikpOlwiY2FuZGxlc3RpY2tcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGgucHVzaChcIm9wZW5cIiksaC5wdXNoKFwiaGlnaFwiKSxoLnB1c2goXCJsb3dcIiksaC5wdXNoKFwiY2xvc2VcIikpOlwicmFuZ2VCYXJcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGU/KGgucHVzaChcIm1pbmltdW1cIiksaC5wdXNoKFwibWF4aW11bVwiKSk6aS5tYXAoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9KHQubmFtZT90Lm5hbWU6XCJzZXJpZXMtXCIuY29uY2F0KGUpKStcIlwiO2wuZ2xvYmFscy5heGlzQ2hhcnRzJiZoLnB1c2goaS5zcGxpdChyKS5qb2luKFwiXCIpP2kuc3BsaXQocikuam9pbihcIlwiKTpcInNlcmllcy1cIi5jb25jYXQoZSkpfSkpLGwuZ2xvYmFscy5heGlzQ2hhcnRzfHwoaC5wdXNoKGwuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5oZWFkZXJWYWx1ZSksYy5wdXNoKGguam9pbihyKSkpLGkubWFwKChmdW5jdGlvbih0LGUpe2wuZ2xvYmFscy5heGlzQ2hhcnRzP20odCxlKTooKGg9W10pLnB1c2gobC5nbG9iYWxzLmxhYmVsc1tlXS5zcGxpdChyKS5qb2luKFwiXCIpKSxoLnB1c2goZ1tlXSksYy5wdXNoKGguam9pbihyKSkpfSkpLGQrPWMuam9pbihuKSx0aGlzLnRyaWdnZXJEb3dubG9hZChcImRhdGE6dGV4dC9jc3Y7IGNoYXJzZXQ9dXRmLTgsXCIrZW5jb2RlVVJJQ29tcG9uZW50KFwiXFx1ZmVmZlwiK2QpLGF8fGwuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LmNzdi5maWxlbmFtZSxcIi5jc3ZcIil9fSx7a2V5OlwidHJpZ2dlckRvd25sb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO2EuaHJlZj10LGEuZG93bmxvYWQ9KGV8fHRoaXMudy5nbG9iYWxzLmNoYXJ0SUQpK2ksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKSxhLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKX19XSksdH0oKSxWPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuZWxncmlkPWksdGhpcy53PWUudzt2YXIgcz10aGlzLnc7dGhpcy5heGVzVXRpbHM9bmV3IEIoZSksdGhpcy54YXhpc0xhYmVscz1zLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkscy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MCYmIXMuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJih0aGlzLnhheGlzTGFiZWxzPXMuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKSkscy5jb25maWcueGF4aXMub3ZlcndyaXRlQ2F0ZWdvcmllcyYmKHRoaXMueGF4aXNMYWJlbHM9cy5jb25maWcueGF4aXMub3ZlcndyaXRlQ2F0ZWdvcmllcyksdGhpcy5kcmF3bkxhYmVscz1bXSx0aGlzLmRyYXduTGFiZWxzUmVjdHM9W10sXCJ0b3BcIj09PXMuY29uZmlnLnhheGlzLnBvc2l0aW9uP3RoaXMub2ZmWT0wOnRoaXMub2ZmWT1zLmdsb2JhbHMuZ3JpZEhlaWdodCsxLHRoaXMub2ZmWT10aGlzLm9mZlkrcy5jb25maWcueGF4aXMuYXhpc0JvcmRlci5vZmZzZXRZLHRoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWw9XCJiYXJcIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHRoaXMueGF4aXNGb250U2l6ZT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsdGhpcy54YXhpc0ZvbnRGYW1pbHk9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksdGhpcy54YXhpc0ZvcmVDb2xvcnM9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNvbG9ycyx0aGlzLnhheGlzQm9yZGVyV2lkdGg9cy5jb25maWcueGF4aXMuYXhpc0JvcmRlci53aWR0aCx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsJiYodGhpcy54YXhpc0JvcmRlcldpZHRoPXMuY29uZmlnLnlheGlzWzBdLmF4aXNCb3JkZXIud2lkdGgudG9TdHJpbmcoKSksdGhpcy54YXhpc0JvcmRlcldpZHRoLmluZGV4T2YoXCIlXCIpPi0xP3RoaXMueGF4aXNCb3JkZXJXaWR0aD1zLmdsb2JhbHMuZ3JpZFdpZHRoKnBhcnNlSW50KHRoaXMueGF4aXNCb3JkZXJXaWR0aCwxMCkvMTAwOnRoaXMueGF4aXNCb3JkZXJXaWR0aD1wYXJzZUludCh0aGlzLnhheGlzQm9yZGVyV2lkdGgsMTApLHRoaXMueGF4aXNCb3JkZXJIZWlnaHQ9cy5jb25maWcueGF4aXMuYXhpc0JvcmRlci5oZWlnaHQsdGhpcy55YXhpcz1zLmNvbmZpZy55YXhpc1swXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1hheGlzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXNcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHQuY29uZmlnLnhheGlzLm9mZnNldFgsXCIsIFwiKS5jb25jYXQodC5jb25maWcueGF4aXMub2Zmc2V0WSxcIilcIil9KSxhPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdCh0Lmdsb2JhbHMudHJhbnNsYXRlWEF4aXNYLFwiLCBcIikuY29uY2F0KHQuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksXCIpXCIpfSk7aS5hZGQoYSk7Zm9yKHZhciBzPVtdLHI9MDtyPHRoaXMueGF4aXNMYWJlbHMubGVuZ3RoO3IrKylzLnB1c2godGhpcy54YXhpc0xhYmVsc1tyXSk7aWYodGhpcy5kcmF3WEF4aXNMYWJlbEFuZEdyb3VwKCEwLGUsYSxzLHQuZ2xvYmFscy5pc1hOdW1lcmljLChmdW5jdGlvbih0LGUpe3JldHVybiBlfSkpLHQuZ2xvYmFscy5oYXNYYXhpc0dyb3Vwcyl7dmFyIG89dC5nbG9iYWxzLmdyb3VwcztzPVtdO2Zvcih2YXIgbj0wO248by5sZW5ndGg7bisrKXMucHVzaChvW25dLnRpdGxlKTt2YXIgbD17fTt0LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZSYmKGwueGF4aXNGb250U2l6ZT10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250U2l6ZSxsLnhheGlzRm9udEZhbWlseT10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250RmFtaWx5LGwueGF4aXNGb3JlQ29sb3JzPXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmNvbG9ycyxsLmZvbnRXZWlnaHQ9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuZm9udFdlaWdodCxsLmNzc0NsYXNzPXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmNzc0NsYXNzKSx0aGlzLmRyYXdYQXhpc0xhYmVsQW5kR3JvdXAoITEsZSxhLHMsITEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bdF0uY29scyplfSksbCl9aWYodm9pZCAwIT09dC5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIGg9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlXCJ9KSxjPWUuZHJhd1RleHQoe3g6dC5nbG9iYWxzLmdyaWRXaWR0aC8yK3QuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFgseTp0aGlzLm9mZlkrcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpKyhcImJvdHRvbVwiPT09dC5jb25maWcueGF4aXMucG9zaXRpb24/dC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0Oi10Lmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQtMTApK3QuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFksdGV4dDp0LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCBcIit0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2guYWRkKGMpLGkuYWRkKGgpfWlmKHQuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuc2hvdyl7dmFyIGQ9dC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLGc9ZS5kcmF3TGluZSh0Lmdsb2JhbHMucGFkSG9yaXpvbnRhbCt0LmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFgtZCx0aGlzLm9mZlksdGhpcy54YXhpc0JvcmRlcldpZHRoK2QsdGhpcy5vZmZZLHQuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIuY29sb3IsMCx0aGlzLnhheGlzQm9yZGVySGVpZ2h0KTt0aGlzLmVsZ3JpZCYmdGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycyYmdC5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMuYWRkKGcpOmkuYWRkKGcpfXJldHVybiBpfX0se2tleTpcImRyYXdYQXhpc0xhYmVsQW5kR3JvdXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG8sbj10aGlzLGw9YXJndW1lbnRzLmxlbmd0aD42JiZ2b2lkIDAhPT1hcmd1bWVudHNbNl0/YXJndW1lbnRzWzZdOnt9LGg9W10sYz1bXSxkPXRoaXMudyxnPWwueGF4aXNGb250U2l6ZXx8dGhpcy54YXhpc0ZvbnRTaXplLHU9bC54YXhpc0ZvbnRGYW1pbHl8fHRoaXMueGF4aXNGb250RmFtaWx5LHA9bC54YXhpc0ZvcmVDb2xvcnN8fHRoaXMueGF4aXNGb3JlQ29sb3JzLGY9bC5mb250V2VpZ2h0fHxkLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFdlaWdodCx4PWwuY3NzQ2xhc3N8fGQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jc3NDbGFzcyxiPWQuZ2xvYmFscy5wYWRIb3Jpem9udGFsLHY9YS5sZW5ndGgsbT1cImNhdGVnb3J5XCI9PT1kLmNvbmZpZy54YXhpcy50eXBlP2QuZ2xvYmFscy5kYXRhUG9pbnRzOnY7aWYoMD09PW0mJnY+bSYmKG09dikscyl7dmFyIHk9bT4xP20tMTptO289ZC5nbG9iYWxzLmdyaWRXaWR0aC9NYXRoLm1pbih5LHYtMSksYj1iK3IoMCxvKS8yK2QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYfWVsc2Ugbz1kLmdsb2JhbHMuZ3JpZFdpZHRoL20sYj1iK3IoMCxvKStkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDtmb3IodmFyIHc9ZnVuY3Rpb24ocyl7dmFyIGw9Yi1yKHMsbykvMitkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDswPT09cyYmMT09PXYmJm8vMj09PWImJjE9PT1tJiYobD1kLmdsb2JhbHMuZ3JpZFdpZHRoLzIpO3ZhciB5PW4uYXhlc1V0aWxzLmdldExhYmVsKGEsZC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscyxsLHMsaCxnLHQpLHc9Mjg7ZC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJnQmJih3PTIyKSxkLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0JiZcInRvcFwiPT09ZC5jb25maWcueGF4aXMucG9zaXRpb24mJih3Kz1wYXJzZUZsb2F0KGQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKSsyKSx0fHwodz13K3BhcnNlRmxvYXQoZykrKGQuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC1kLmdsb2JhbHMueEF4aXNHcm91cExhYmVsc0hlaWdodCkrKGQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzEwOjApKSx5PXZvaWQgMCE9PWQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJlwiZGF0YVBvaW50c1wiIT09ZC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmXCJkYXRldGltZVwiIT09ZC5jb25maWcueGF4aXMudHlwZT9uLmF4ZXNVdGlscy5jaGVja0xhYmVsQmFzZWRPblRpY2thbW91bnQocyx5LHYpOm4uYXhlc1V0aWxzLmNoZWNrRm9yT3ZlcmZsb3dpbmdMYWJlbHMocyx5LHYsaCxjKTtpZihkLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdyl7dmFyIGs9ZS5kcmF3VGV4dCh7eDp5LngseTpuLm9mZlkrZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkrdy0oXCJ0b3BcIj09PWQuY29uZmlnLnhheGlzLnBvc2l0aW9uP2QuZ2xvYmFscy54QXhpc0hlaWdodCtkLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LTI6MCksdGV4dDp5LnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRXZWlnaHQ6eS5pc0JvbGQ/NjAwOmYsZm9udFNpemU6Zyxmb250RmFtaWx5OnUsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkocCk/dCYmZC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljP3BbZC5nbG9iYWxzLm1pblgrcy0xXTpwW3NdOnAsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6KHQ/XCJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsIFwiOlwiYXBleGNoYXJ0cy14YXhpcy1ncm91cC1sYWJlbCBcIikreH0pO2lmKGkuYWRkKGspLGsub24oXCJjbGlja1wiLChmdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKXt2YXIgZT1PYmplY3QuYXNzaWduKHt9LGQse2xhYmVsSW5kZXg6c30pO2QuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2sodCxuLmN0eCxlKX19KSksdCl7dmFyIEE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGQuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO0EudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheSh5LnRleHQpP3kudGV4dC5qb2luKFwiIFwiKTp5LnRleHQsay5ub2RlLmFwcGVuZENoaWxkKEEpLFwiXCIhPT15LnRleHQmJihoLnB1c2goeS50ZXh0KSxjLnB1c2goeSkpfX1zPHYtMSYmKGIrPXIocysxLG8pKX0saz0wO2s8PXYtMTtrKyspdyhrKX19LHtrZXk6XCJkcmF3WGF4aXNJbnZlcnNlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10aGlzLHM9dGhpcy53LHI9bmV3IG0odGhpcy5jdHgpLG89cy5jb25maWcueWF4aXNbMF0ub3Bwb3NpdGU/cy5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XTowLG49ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzIGFwZXhjaGFydHMteGF4aXMtaW52ZXJzZWRcIixyZWw6dH0pLGw9ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRleHRzLWcgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZC10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK28rXCIsIDApXCJ9KTtuLmFkZChsKTt2YXIgaD1bXTtpZihzLmNvbmZpZy55YXhpc1t0XS5zaG93KWZvcih2YXIgYz0wO2M8dGhpcy54YXhpc0xhYmVscy5sZW5ndGg7YysrKWgucHVzaCh0aGlzLnhheGlzTGFiZWxzW2NdKTtlPXMuZ2xvYmFscy5ncmlkSGVpZ2h0L2gubGVuZ3RoLGk9LWUvMi4yO3ZhciBkPXMuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdLGc9cy5jb25maWcueWF4aXNbMF0ubGFiZWxzO2lmKGcuc2hvdylmb3IodmFyIHU9ZnVuY3Rpb24obyl7dmFyIG49dm9pZCAwPT09aFtvXT9cIlwiOmhbb107bj1kKG4se3Nlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6byx3OnN9KTt2YXIgYz1hLmF4ZXNVdGlscy5nZXRZQXhpc0ZvcmVDb2xvcihnLnN0eWxlLmNvbG9ycyx0KSx1PTA7QXJyYXkuaXNBcnJheShuKSYmKHU9bi5sZW5ndGgvMipwYXJzZUludChnLnN0eWxlLmZvbnRTaXplLDEwKSk7dmFyIHA9Zy5vZmZzZXRYLTE1LGY9XCJlbmRcIjthLnlheGlzLm9wcG9zaXRlJiYoZj1cInN0YXJ0XCIpLFwibGVmdFwiPT09cy5jb25maWcueWF4aXNbMF0ubGFiZWxzLmFsaWduPyhwPWcub2Zmc2V0WCxmPVwic3RhcnRcIik6XCJjZW50ZXJcIj09PXMuY29uZmlnLnlheGlzWzBdLmxhYmVscy5hbGlnbj8ocD1nLm9mZnNldFgsZj1cIm1pZGRsZVwiKTpcInJpZ2h0XCI9PT1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuYWxpZ24mJihmPVwiZW5kXCIpO3ZhciB4PXIuZHJhd1RleHQoe3g6cCx5OmkrZStnLm9mZnNldFktdSx0ZXh0Om4sdGV4dEFuY2hvcjpmLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KGMpP2Nbb106Yyxmb250U2l6ZTpnLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6Zy5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6Zy5zdHlsZS5mb250V2VpZ2h0LGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1sYWJlbCBcIitnLnN0eWxlLmNzc0NsYXNzLG1heFdpZHRoOmcubWF4V2lkdGh9KTtsLmFkZCh4KSx4Lm9uKFwiY2xpY2tcIiwoZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcy5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljayl7dmFyIGU9T2JqZWN0LmFzc2lnbih7fSxzLHtsYWJlbEluZGV4Om99KTtzLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKHQsYS5jdHgsZSl9fSkpO3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzLmdsb2JhbHMuU1ZHTlMsXCJ0aXRsZVwiKTtpZihiLnRleHRDb250ZW50PUFycmF5LmlzQXJyYXkobik/bi5qb2luKFwiIFwiKTpuLHgubm9kZS5hcHBlbmRDaGlsZChiKSwwIT09cy5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSl7dmFyIHY9ci5yb3RhdGVBcm91bmRDZW50ZXIoeC5ub2RlKTt4Lm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KHMuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUsXCIgMCBcIikuY29uY2F0KHYueSxcIilcIikpfWkrPWV9LHA9MDtwPD1oLmxlbmd0aC0xO3ArKyl1KHApO2lmKHZvaWQgMCE9PXMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQpe3ZhciBmPXIuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZSBhcGV4Y2hhcnRzLXhheGlzLXRpdGxlLWludmVyc2VkXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK28rXCIsIDApXCJ9KSx4PXIuZHJhd1RleHQoe3g6cy5jb25maWcueWF4aXNbMF0udGl0bGUub2Zmc2V0WCx5OnMuZ2xvYmFscy5ncmlkSGVpZ2h0LzIrcy5jb25maWcueWF4aXNbMF0udGl0bGUub2Zmc2V0WSx0ZXh0OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5jb2xvcixmb250U2l6ZTpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250V2VpZ2h0OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9udEZhbWlseTpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250RmFtaWx5LGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZS10ZXh0IFwiK3MuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7Zi5hZGQoeCksbi5hZGQoZil9dmFyIGI9MDt0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsJiZzLmNvbmZpZy55YXhpc1swXS5vcHBvc2l0ZSYmKGI9cy5nbG9iYWxzLmdyaWRXaWR0aCk7dmFyIHY9cy5jb25maWcueGF4aXMuYXhpc0JvcmRlcjtpZih2LnNob3cpe3ZhciB5PXIuZHJhd0xpbmUocy5nbG9iYWxzLnBhZEhvcml6b250YWwrdi5vZmZzZXRYK2IsMSt2Lm9mZnNldFkscy5nbG9iYWxzLnBhZEhvcml6b250YWwrdi5vZmZzZXRYK2Iscy5nbG9iYWxzLmdyaWRIZWlnaHQrdi5vZmZzZXRZLHYuY29sb3IsMCk7dGhpcy5lbGdyaWQmJnRoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMmJnMuY29uZmlnLmdyaWQuc2hvdz90aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzLmFkZCh5KTpuLmFkZCh5KX1yZXR1cm4gcy5jb25maWcueWF4aXNbMF0uYXhpc1RpY2tzLnNob3cmJnRoaXMuYXhlc1V0aWxzLmRyYXdZQXhpc1RpY2tzKGIsaC5sZW5ndGgscy5jb25maWcueWF4aXNbMF0uYXhpc0JvcmRlcixzLmNvbmZpZy55YXhpc1swXS5heGlzVGlja3MsMCxlLG4pLG59fSx7a2V5OlwiZHJhd1hheGlzVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9dDtpZighKHQ8MHx8dC0yPmEuZ2xvYmFscy5ncmlkV2lkdGgpKXt2YXIgcj10aGlzLm9mZlkrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFk7aWYoZT1lK3IrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCxcInRvcFwiPT09YS5jb25maWcueGF4aXMucG9zaXRpb24mJihlPXItYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCksYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLnNob3cpe3ZhciBvPW5ldyBtKHRoaXMuY3R4KS5kcmF3TGluZSh0K2EuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5vZmZzZXRYLHIrYS5jb25maWcueGF4aXMub2Zmc2V0WSxzK2EuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5vZmZzZXRYLGUrYS5jb25maWcueGF4aXMub2Zmc2V0WSxhLmNvbmZpZy54YXhpcy5heGlzVGlja3MuY29sb3IpO2kuYWRkKG8pLG8ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy14YXhpcy10aWNrXCIpfX19fSx7a2V5OlwiZ2V0WEF4aXNUaWNrc1Bvc2l0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9W10saT10aGlzLnhheGlzTGFiZWxzLmxlbmd0aCxhPXQuZ2xvYmFscy5wYWRIb3Jpem9udGFsO2lmKHQuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjApZm9yKHZhciBzPTA7czxpO3MrKylhPXRoaXMueGF4aXNMYWJlbHNbc10ucG9zaXRpb24sZS5wdXNoKGEpO2Vsc2UgZm9yKHZhciByPWksbz0wO288cjtvKyspe3ZhciBuPXI7dC5nbG9iYWxzLmlzWE51bWVyaWMmJlwiYmFyXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiYobi09MSksYSs9dC5nbG9iYWxzLmdyaWRXaWR0aC9uLGUucHVzaChhKX1yZXR1cm4gZX19LHtrZXk6XCJ4QXhpc0xhYmVsQ29ycmVjdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIpLGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWcgdGV4dDpub3QoLmFwZXhjaGFydHMteGF4aXMtZ3JvdXAtbGFiZWwpXCIpLHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkIHRleHRcIikscj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteGF4aXMtaW52ZXJzZWQtdGV4dHMtZyB0ZXh0IHRzcGFuXCIpO2lmKHQuZ2xvYmFscy5yb3RhdGVYTGFiZWxzfHx0LmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlQWx3YXlzKWZvcih2YXIgbz0wO288YS5sZW5ndGg7bysrKXt2YXIgbj1lLnJvdGF0ZUFyb3VuZENlbnRlcihhW29dKTtuLnk9bi55LTEsbi54PW4ueCsxLGFbb10uc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KHQuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUsXCIgXCIpLmNvbmNhdChuLngsXCIgXCIpLmNvbmNhdChuLnksXCIpXCIpKSxhW29dLnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJlbmRcIik7aS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZSgwLCBcIi5jb25jYXQoLTEwLFwiKVwiKSk7dmFyIGw9YVtvXS5jaGlsZE5vZGVzO3QuY29uZmlnLnhheGlzLmxhYmVscy50cmltJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGwsKGZ1bmN0aW9uKGkpe2UucGxhY2VUZXh0V2l0aEVsbGlwc2lzKGksaS50ZXh0Q29udGVudCx0Lmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQtKFwiYm90dG9tXCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24/MjA6MTApKX0pKX1lbHNlIWZ1bmN0aW9uKCl7Zm9yKHZhciBpPXQuZ2xvYmFscy5ncmlkV2lkdGgvKHQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKzEpLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIHI9YVtzXS5jaGlsZE5vZGVzO3QuY29uZmlnLnhheGlzLmxhYmVscy50cmltJiZcImRhdGV0aW1lXCIhPT10LmNvbmZpZy54YXhpcy50eXBlJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHIsKGZ1bmN0aW9uKHQpe2UucGxhY2VUZXh0V2l0aEVsbGlwc2lzKHQsdC50ZXh0Q29udGVudCxpKX0pKX19KCk7aWYocy5sZW5ndGg+MCl7dmFyIGg9c1tzLmxlbmd0aC0xXS5nZXRCQm94KCksYz1zWzBdLmdldEJCb3goKTtoLng8LTIwJiZzW3MubGVuZ3RoLTFdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc1tzLmxlbmd0aC0xXSksYy54K2Mud2lkdGg+dC5nbG9iYWxzLmdyaWRXaWR0aCYmIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnNbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzWzBdKTtmb3IodmFyIGQ9MDtkPHIubGVuZ3RoO2QrKyllLnBsYWNlVGV4dFdpdGhFbGxpcHNpcyhyW2RdLHJbZF0udGV4dENvbnRlbnQsdC5jb25maWcueWF4aXNbMF0ubGFiZWxzLm1heFdpZHRoLSh0LmNvbmZpZy55YXhpc1swXS50aXRsZS50ZXh0PzIqcGFyc2VGbG9hdCh0LmNvbmZpZy55YXhpc1swXS50aXRsZS5zdHlsZS5mb250U2l6ZSk6MCktMTUpfX19XSksdH0oKSxqPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSx0aGlzLmF4ZXNVdGlscz1uZXcgQihlKSx0aGlzLmlzUmFuZ2VCYXI9aS5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCYmaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCxpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wJiYodGhpcy54YXhpc0xhYmVscz1pLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCkpfXJldHVybiByKHQsW3trZXk6XCJkcmF3R3JpZEFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpO251bGw9PT10JiYodD1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZFwifSkpO3ZhciBhPWkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwsMSxlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxlLmdsb2JhbHMuZ3JpZEhlaWdodCxcInRyYW5zcGFyZW50XCIpLHM9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxlLmdsb2JhbHMuZ3JpZEhlaWdodCxlLmdsb2JhbHMuZ3JpZFdpZHRoLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LFwidHJhbnNwYXJlbnRcIik7cmV0dXJuIHQuYWRkKHMpLHQuYWRkKGEpLHR9fSx7a2V5OlwiZHJhd0dyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW51bGw7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmF4aXNDaGFydHMmJih0PXRoaXMucmVuZGVyR3JpZCgpLHRoaXMuZHJhd0dyaWRBcmVhKHQuZWwpKSx0fX0se2tleTpcImNyZWF0ZUdyaWRNYXNrXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT1uZXcgbSh0aGlzLmN0eCksYT1BcnJheS5pc0FycmF5KHQuY29uZmlnLnN0cm9rZS53aWR0aCk/MDp0LmNvbmZpZy5zdHJva2Uud2lkdGg7aWYoQXJyYXkuaXNBcnJheSh0LmNvbmZpZy5zdHJva2Uud2lkdGgpKXt2YXIgcz0wO3QuY29uZmlnLnN0cm9rZS53aWR0aC5mb3JFYWNoKChmdW5jdGlvbih0KXtzPU1hdGgubWF4KHMsdCl9KSksYT1zfWUuZG9tLmVsR3JpZFJlY3RNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiY2xpcFBhdGhcIiksZS5kb20uZWxHcmlkUmVjdE1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcImdyaWRSZWN0TWFza1wiLmNvbmNhdChlLmN1aWQpKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUyxcImNsaXBQYXRoXCIpLGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQoZS5jdWlkKSksZS5kb20uZWxGb3JlY2FzdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbEZvcmVjYXN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiZm9yZWNhc3RNYXNrXCIuY29uY2F0KGUuY3VpZCkpLGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiY2xpcFBhdGhcIiksZS5kb20uZWxOb25Gb3JlY2FzdE1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcIm5vbkZvcmVjYXN0TWFza1wiLmNvbmNhdChlLmN1aWQpKTt2YXIgcj10LmNvbmZpZy5jaGFydC50eXBlLG89MCxuPTA7KFwiYmFyXCI9PT1yfHxcInJhbmdlQmFyXCI9PT1yfHxcImNhbmRsZXN0aWNrXCI9PT1yfHxcImJveFBsb3RcIj09PXJ8fHQuZ2xvYmFscy5jb21ib0JhckNvdW50PjApJiZ0Lmdsb2JhbHMuaXNYTnVtZXJpYyYmIXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihvPXQuY29uZmlnLmdyaWQucGFkZGluZy5sZWZ0LG49dC5jb25maWcuZ3JpZC5wYWRkaW5nLnJpZ2h0LGUuYmFyUGFkRm9yTnVtZXJpY0F4aXM+byYmKG89ZS5iYXJQYWRGb3JOdW1lcmljQXhpcyxuPWUuYmFyUGFkRm9yTnVtZXJpY0F4aXMpKSxlLmRvbS5lbEdyaWRSZWN0PWkuZHJhd1JlY3QoLWEtby0yLDIqLWEtMixlLmdyaWRXaWR0aCthK24rbys0LGUuZ3JpZEhlaWdodCs0KmErNCwwLFwiI2ZmZlwiKTt2YXIgbD10Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZSsxO2UuZG9tLmVsR3JpZFJlY3RNYXJrZXI9aS5kcmF3UmVjdCgyKi1sLDIqLWwsZS5ncmlkV2lkdGgrNCpsLGUuZ3JpZEhlaWdodCs0KmwsMCxcIiNmZmZcIiksZS5kb20uZWxHcmlkUmVjdE1hc2suYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdC5ub2RlKSxlLmRvbS5lbEdyaWRSZWN0TWFya2VyTWFzay5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0TWFya2VyLm5vZGUpO3ZhciBoPWUuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiZGVmc1wiKTtoLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXNrKSxoLmFwcGVuZENoaWxkKGUuZG9tLmVsRm9yZWNhc3RNYXNrKSxoLmFwcGVuZENoaWxkKGUuZG9tLmVsTm9uRm9yZWNhc3RNYXNrKSxoLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrKX19LHtrZXk6XCJfZHJhd0dyaWRMaW5lc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQueDEsYT10LnkxLHM9dC54MixyPXQueTIsbz10LnhDb3VudCxuPXQucGFyZW50LGw9dGhpcy53O2lmKCEoMD09PWUmJmwuZ2xvYmFscy5za2lwRmlyc3RUaW1lbGluZWxhYmVsfHxlPT09by0xJiZsLmdsb2JhbHMuc2tpcExhc3RUaW1lbGluZWxhYmVsJiYhbC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcnx8XCJyYWRhclwiPT09bC5jb25maWcuY2hhcnQudHlwZSkpe2wuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvdyYmdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmUseDE6aSx5MTphLHgyOnMseTI6cix4Q291bnQ6byxwYXJlbnQ6bn0pO3ZhciBoPTA7aWYobC5nbG9iYWxzLmhhc1hheGlzR3JvdXBzJiZcImJldHdlZW5cIj09PWwuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnQpe3ZhciBjPWwuZ2xvYmFscy5ncm91cHM7aWYoYyl7Zm9yKHZhciBkPTAsZz0wO2Q8ZSYmZzxjLmxlbmd0aDtnKyspZCs9Y1tnXS5jb2xzO2Q9PT1lJiYoaD0uNipsLmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQpfX1uZXcgVih0aGlzLmN0eCkuZHJhd1hheGlzVGlja3MoaSxoLGwuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwpfX19LHtrZXk6XCJfZHJhd0dyaWRMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC54MSxhPXQueTEscz10LngyLHI9dC55MixvPXQueENvdW50LG49dC5wYXJlbnQsbD10aGlzLncsaD0hMSxjPW4ubm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy1ob3Jpem9udGFsXCIpLGQ9bC5jb25maWcuZ3JpZC5zdHJva2VEYXNoQXJyYXksZz1sLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7KDA9PT1hJiYwPT09cnx8MD09PWkmJjA9PT1zKSYmKGg9ITApLGE9PT1sLmdsb2JhbHMuZ3JpZEhlaWdodCYmcj09PWwuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoaD0hMCksIWwuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fDAhPT1lJiZlIT09by0xfHwoaD0hMCk7dmFyIHU9bmV3IG0odGhpcykuZHJhd0xpbmUoaS0oYz9nOjApLGEscysoYz9nOjApLHIsbC5jb25maWcuZ3JpZC5ib3JkZXJDb2xvcixkKTt1Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZ3JpZGxpbmVcIiksaCYmbC5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxHcmlkQm9yZGVycy5hZGQodSk6bi5hZGQodSl9fSx7a2V5OlwiX2RyYXdHcmlkQmFuZFJlY3RcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmMsaT10LngxLGE9dC55MSxzPXQueDIscj10LnkyLG89dC50eXBlLG49dGhpcy53LGw9bmV3IG0odGhpcy5jdHgpLGg9bi5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzO2lmKFwiY29sdW1uXCIhPT1vfHxcImRhdGV0aW1lXCIhPT1uLmNvbmZpZy54YXhpcy50eXBlKXt2YXIgYz1uLmNvbmZpZy5ncmlkW29dLmNvbG9yc1tlXSxkPWwuZHJhd1JlY3QoaS0oXCJyb3dcIj09PW8/aDowKSxhLHMrKFwicm93XCI9PT1vPzIqaDowKSxyLDAsYyxuLmNvbmZpZy5ncmlkW29dLm9wYWNpdHkpO3RoaXMuZWxnLmFkZChkKSxkLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KG4uZ2xvYmFscy5jdWlkLFwiKVwiKSksZC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWdyaWQtXCIuY29uY2F0KG8pKX19fSx7a2V5OlwiX2RyYXdYWUxpbmVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQueENvdW50LGE9dC50aWNrQW1vdW50LHM9dGhpcy53O2lmKHMuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvd3x8cy5jb25maWcueGF4aXMuYXhpc1RpY2tzLnNob3cpe3ZhciByLG89cy5nbG9iYWxzLnBhZEhvcml6b250YWwsbj1zLmdsb2JhbHMuZ3JpZEhlaWdodDtzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD9mdW5jdGlvbih0KXtmb3IodmFyIGE9dC54QyxzPXQueDEscj10LnkxLG89dC54MixuPXQueTIsbD0wO2w8YTtsKyspcz1lLnhheGlzTGFiZWxzW2xdLnBvc2l0aW9uLG89ZS54YXhpc0xhYmVsc1tsXS5wb3NpdGlvbixlLl9kcmF3R3JpZExpbmVzKHtpOmwseDE6cyx5MTpyLHgyOm8seTI6bix4Q291bnQ6aSxwYXJlbnQ6ZS5lbGdyaWRMaW5lc1Z9KX0oe3hDOmkseDE6byx5MTowLHgyOnIseTI6bn0pOihzLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9cy5nbG9iYWxzLnhBeGlzU2NhbGUucmVzdWx0Lmxlbmd0aCksZnVuY3Rpb24odCl7Zm9yKHZhciBhPXQueEMscj10LngxLG89dC55MSxuPXQueDIsbD10LnkyLGg9MDtoPGErKHMuZ2xvYmFscy5pc1hOdW1lcmljPzA6MSk7aCsrKTA9PT1oJiYxPT09YSYmMT09PXMuZ2xvYmFscy5kYXRhUG9pbnRzJiYobj1yPXMuZ2xvYmFscy5ncmlkV2lkdGgvMiksZS5fZHJhd0dyaWRMaW5lcyh7aTpoLHgxOnIseTE6byx4MjpuLHkyOmwseENvdW50OmkscGFyZW50OmUuZWxncmlkTGluZXNWfSksbj1yKz1zLmdsb2JhbHMuZ3JpZFdpZHRoLyhzLmdsb2JhbHMuaXNYTnVtZXJpYz9hLTE6YSl9KHt4QzppLHgxOm8seTE6MCx4MjpyLHkyOm59KSl9aWYocy5jb25maWcuZ3JpZC55YXhpcy5saW5lcy5zaG93KXt2YXIgbD0wLGg9MCxjPXMuZ2xvYmFscy5ncmlkV2lkdGgsZD1hKzE7dGhpcy5pc1JhbmdlQmFyJiYoZD1zLmdsb2JhbHMubGFiZWxzLmxlbmd0aCk7Zm9yKHZhciBnPTA7ZzxkKyh0aGlzLmlzUmFuZ2VCYXI/MTowKTtnKyspdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmcseENvdW50OmQrKHRoaXMuaXNSYW5nZUJhcj8xOjApLHgxOjAseTE6bCx4MjpjLHkyOmgscGFyZW50OnRoaXMuZWxncmlkTGluZXNIfSksaD1sKz1zLmdsb2JhbHMuZ3JpZEhlaWdodC8odGhpcy5pc1JhbmdlQmFyP2Q6YSl9fX0se2tleTpcIl9kcmF3SW52ZXJ0ZWRYWUxpbmVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC54Q291bnQsaT10aGlzLnc7aWYoaS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHxpLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdylmb3IodmFyIGEscz1pLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxyPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LG89MDtvPGUrMTtvKyspe2kuY29uZmlnLmdyaWQueGF4aXMubGluZXMuc2hvdyYmdGhpcy5fZHJhd0dyaWRMaW5lKHtpOm8seENvdW50OmUrMSx4MTpzLHkxOjAseDI6YSx5MjpyLHBhcmVudDp0aGlzLmVsZ3JpZExpbmVzVn0pLG5ldyBWKHRoaXMuY3R4KS5kcmF3WGF4aXNUaWNrcyhzLDAsaS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbCksYT1zPXMraS5nbG9iYWxzLmdyaWRXaWR0aC9lKy4zfWlmKGkuY29uZmlnLmdyaWQueWF4aXMubGluZXMuc2hvdylmb3IodmFyIG49MCxsPTAsaD1pLmdsb2JhbHMuZ3JpZFdpZHRoLGM9MDtjPGkuZ2xvYmFscy5kYXRhUG9pbnRzKzE7YysrKXRoaXMuX2RyYXdHcmlkTGluZSh7aTpjLHhDb3VudDppLmdsb2JhbHMuZGF0YVBvaW50cysxLHgxOjAseTE6bix4MjpoLHkyOmwscGFyZW50OnRoaXMuZWxncmlkTGluZXNIfSksbD1uKz1pLmdsb2JhbHMuZ3JpZEhlaWdodC9pLmdsb2JhbHMuZGF0YVBvaW50c319LHtrZXk6XCJyZW5kZXJHcmlkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCk7dGhpcy5lbGc9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRcIn0pLHRoaXMuZWxncmlkTGluZXNIPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkbGluZXMtaG9yaXpvbnRhbFwifSksdGhpcy5lbGdyaWRMaW5lc1Y9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy12ZXJ0aWNhbFwifSksdGhpcy5lbEdyaWRCb3JkZXJzPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkLWJvcmRlcnNcIn0pLHRoaXMuZWxnLmFkZCh0aGlzLmVsZ3JpZExpbmVzSCksdGhpcy5lbGcuYWRkKHRoaXMuZWxncmlkTGluZXNWKSx0LmNvbmZpZy5ncmlkLnNob3d8fCh0aGlzLmVsZ3JpZExpbmVzVi5oaWRlKCksdGhpcy5lbGdyaWRMaW5lc0guaGlkZSgpLHRoaXMuZWxHcmlkQm9yZGVycy5oaWRlKCkpO2Zvcih2YXIgaSxhPXQuZ2xvYmFscy55QXhpc1NjYWxlLmxlbmd0aD90Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQubGVuZ3RoLTE6NSxzPTA7czx0Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKHZvaWQgMCE9PXQuZ2xvYmFscy55QXhpc1NjYWxlW3NdJiYoYT10Lmdsb2JhbHMueUF4aXNTY2FsZVtzXS5yZXN1bHQubGVuZ3RoLTEpLCEoYT4yKSk7cysrKTtyZXR1cm4hdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8dGhpcy5pc1JhbmdlQmFyPyhpPXRoaXMueGF4aXNMYWJlbHMubGVuZ3RoLHRoaXMuaXNSYW5nZUJhciYmKGktLSxhPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoLHQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJnQuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXImJihpPXQuY29uZmlnLnhheGlzLnRpY2tBbW91bnQpKSx0aGlzLl9kcmF3WFlMaW5lcyh7eENvdW50OmksdGlja0Ftb3VudDphfSkpOihpPWEsYT10Lmdsb2JhbHMueFRpY2tBbW91bnQsdGhpcy5fZHJhd0ludmVydGVkWFlMaW5lcyh7eENvdW50OmksdGlja0Ftb3VudDphfSkpLHRoaXMuZHJhd0dyaWRCYW5kcyhpLGEpLHtlbDp0aGlzLmVsZyxlbEdyaWRCb3JkZXJzOnRoaXMuZWxHcmlkQm9yZGVycyx4QXhpc1RpY2tXaWR0aDp0Lmdsb2JhbHMuZ3JpZFdpZHRoL2l9fX0se2tleTpcImRyYXdHcmlkQmFuZHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZih2b2lkIDAhPT1pLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMmJmkuY29uZmlnLmdyaWQucm93LmNvbG9ycy5sZW5ndGg+MClmb3IodmFyIGE9MCxzPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2Uscj1pLmdsb2JhbHMuZ3JpZFdpZHRoLG89MCxuPTA7bzxlO28rKyxuKyspbj49aS5jb25maWcuZ3JpZC5yb3cuY29sb3JzLmxlbmd0aCYmKG49MCksdGhpcy5fZHJhd0dyaWRCYW5kUmVjdCh7YzpuLHgxOjAseTE6YSx4MjpyLHkyOnMsdHlwZTpcInJvd1wifSksYSs9aS5nbG9iYWxzLmdyaWRIZWlnaHQvZTtpZih2b2lkIDAhPT1pLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMmJmkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycy5sZW5ndGg+MClmb3IodmFyIGw9aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8XCJvblwiIT09aS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudHx8XCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmIWkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz90OnQtMSxoPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGM9aS5nbG9iYWxzLnBhZEhvcml6b250YWwraS5nbG9iYWxzLmdyaWRXaWR0aC9sLGQ9aS5nbG9iYWxzLmdyaWRIZWlnaHQsZz0wLHU9MDtnPHQ7ZysrLHUrKyl1Pj1pLmNvbmZpZy5ncmlkLmNvbHVtbi5jb2xvcnMubGVuZ3RoJiYodT0wKSx0aGlzLl9kcmF3R3JpZEJhbmRSZWN0KHtjOnUseDE6aCx5MTowLHgyOmMseTI6ZCx0eXBlOlwiY29sdW1uXCJ9KSxoKz1pLmdsb2JhbHMuZ3JpZFdpZHRoL2x9fV0pLHR9KCksXz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwibmljZVNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MCxzPWFyZ3VtZW50cy5sZW5ndGg+ND9hcmd1bWVudHNbNF06dm9pZCAwLHI9dGhpcy53LG89TWF0aC5hYnMoZS10KTtpZihcImRhdGFQb2ludHNcIj09PShpPXRoaXMuX2FkanVzdFRpY2tzRm9yU21hbGxSYW5nZShpLGEsbykpJiYoaT1yLmdsb2JhbHMuZGF0YVBvaW50cy0xKSx0PT09TnVtYmVyLk1JTl9WQUxVRSYmMD09PWV8fCF4LmlzTnVtYmVyKHQpJiYheC5pc051bWJlcihlKXx8dD09PU51bWJlci5NSU5fVkFMVUUmJmU9PT0tTnVtYmVyLk1BWF9WQUxVRSlyZXR1cm4gdD0wLGU9aSx0aGlzLmxpbmVhclNjYWxlKHQsZSxpKTt0PmU/KGNvbnNvbGUud2FybihcImF4aXMubWluIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gYXhpcy5tYXhcIiksZT10Ky4xKTp0PT09ZSYmKHQ9MD09PXQ/MDp0LS41LGU9MD09PWU/MjplKy41KTt2YXIgbj1bXTtvPDEmJnMmJihcImNhbmRsZXN0aWNrXCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcImNhbmRsZXN0aWNrXCI9PT1yLmNvbmZpZy5zZXJpZXNbYV0udHlwZXx8XCJib3hQbG90XCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PXIuY29uZmlnLnNlcmllc1thXS50eXBlfHxyLmdsb2JhbHMuaXNSYW5nZURhdGEpJiYoZSo9MS4wMSk7dmFyIGw9aSsxO2w8Mj9sPTI6bD4yJiYobC09Mik7dmFyIGg9by9sLGM9TWF0aC5mbG9vcih4LmxvZzEwKGgpKSxkPU1hdGgucG93KDEwLGMpLGc9TWF0aC5yb3VuZChoL2QpO2c8MSYmKGc9MSk7dmFyIHU9ZypkLHA9dSpNYXRoLmZsb29yKHQvdSksZj11Kk1hdGguY2VpbChlL3UpLGI9cDtpZihzJiZvPjIpe2Zvcig7bi5wdXNoKHguc3RyaXBOdW1iZXIoYiw3KSksISgoYis9dSk+Zik7KTtyZXR1cm57cmVzdWx0Om4sbmljZU1pbjpuWzBdLG5pY2VNYXg6bltuLmxlbmd0aC0xXX19dmFyIHY9dDsobj1bXSkucHVzaCh4LnN0cmlwTnVtYmVyKHYsNykpO2Zvcih2YXIgbT1NYXRoLmFicyhlLXQpL2kseT0wO3k8PWk7eSsrKXYrPW0sbi5wdXNoKHYpO3JldHVybiBuW24ubGVuZ3RoLTJdPj1lJiZuLnBvcCgpLHtyZXN1bHQ6bixuaWNlTWluOm5bMF0sbmljZU1heDpuW24ubGVuZ3RoLTFdfX19LHtrZXk6XCJsaW5lYXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjEwLGE9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDAscz1NYXRoLmFicyhlLXQpO1wiZGF0YVBvaW50c1wiPT09KGk9dGhpcy5fYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlKGksYSxzKSkmJihpPXRoaXMudy5nbG9iYWxzLmRhdGFQb2ludHMtMSk7dmFyIHI9cy9pO2k9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoaT0xMCxyPTEpO2Zvcih2YXIgbz1bXSxuPXQ7aT49MDspby5wdXNoKG4pLG4rPXIsaS09MTtyZXR1cm57cmVzdWx0Om8sbmljZU1pbjpvWzBdLG5pY2VNYXg6b1tvLmxlbmd0aC0xXX19fSx7a2V5OlwibG9nYXJpdGhtaWNTY2FsZU5pY2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7ZTw9MCYmKGU9TWF0aC5tYXgodCxpKSksdDw9MCYmKHQ9TWF0aC5taW4oZSxpKSk7Zm9yKHZhciBhPVtdLHM9TWF0aC5jZWlsKE1hdGgubG9nKGUpL01hdGgubG9nKGkpKzEpLHI9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLmxvZyhpKSk7cjxzO3IrKylhLnB1c2goTWF0aC5wb3coaSxyKSk7cmV0dXJue3Jlc3VsdDphLG5pY2VNaW46YVswXSxuaWNlTWF4OmFbYS5sZW5ndGgtMV19fX0se2tleTpcImxvZ2FyaXRobWljU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7ZTw9MCYmKGU9TWF0aC5tYXgodCxpKSksdDw9MCYmKHQ9TWF0aC5taW4oZSxpKSk7Zm9yKHZhciBhPVtdLHM9TWF0aC5sb2coZSkvTWF0aC5sb2coaSkscj1NYXRoLmxvZyh0KS9NYXRoLmxvZyhpKSxvPXMtcixuPU1hdGgucm91bmQobyksbD1vL24saD0wLGM9cjtoPG47aCsrLGMrPWwpYS5wdXNoKE1hdGgucG93KGksYykpO3JldHVybiBhLnB1c2goTWF0aC5wb3coaSxzKSkse3Jlc3VsdDphLG5pY2VNaW46dCxuaWNlTWF4OmV9fX0se2tleTpcIl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dDtpZih2b2lkIDAhPT1lJiZ0aGlzLncuY29uZmlnLnlheGlzW2VdLmxhYmVscy5mb3JtYXR0ZXImJnZvaWQgMD09PXRoaXMudy5jb25maWcueWF4aXNbZV0udGlja0Ftb3VudCl7dmFyIHM9TnVtYmVyKHRoaXMudy5jb25maWcueWF4aXNbZV0ubGFiZWxzLmZvcm1hdHRlcigxKSk7eC5pc051bWJlcihzKSYmMD09PXRoaXMudy5nbG9iYWxzLnlWYWx1ZURlY2ltYWwmJihhPU1hdGguY2VpbChpKSl9cmV0dXJuIGE8dD9hOnR9fSx7a2V5Olwic2V0WVNjYWxlRm9ySW5kZXhcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53Lmdsb2JhbHMscz10aGlzLncuY29uZmlnLHI9YS5pc0Jhckhvcml6b250YWw/cy54YXhpczpzLnlheGlzW3RdO3ZvaWQgMD09PWEueUF4aXNTY2FsZVt0XSYmKGEueUF4aXNTY2FsZVt0XT1bXSk7dmFyIG89TWF0aC5hYnMoaS1lKTtpZihyLmxvZ2FyaXRobWljJiZvPD01JiYoYS5pbnZhbGlkTG9nU2NhbGU9ITApLHIubG9nYXJpdGhtaWMmJm8+NSlhLmFsbFNlcmllc0NvbGxhcHNlZD0hMSxhLnlBeGlzU2NhbGVbdF09dGhpcy5sb2dhcml0aG1pY1NjYWxlKGUsaSxyLmxvZ0Jhc2UpLGEueUF4aXNTY2FsZVt0XT1yLmZvcmNlTmljZVNjYWxlP3RoaXMubG9nYXJpdGhtaWNTY2FsZU5pY2UoZSxpLHIubG9nQmFzZSk6dGhpcy5sb2dhcml0aG1pY1NjYWxlKGUsaSxyLmxvZ0Jhc2UpO2Vsc2UgaWYoaSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZ4LmlzTnVtYmVyKGkpKWlmKGEuYWxsU2VyaWVzQ29sbGFwc2VkPSExLHZvaWQgMD09PXIubWluJiZ2b2lkIDA9PT1yLm1heHx8ci5mb3JjZU5pY2VTY2FsZSl7dmFyIG49dm9pZCAwPT09cy55YXhpc1t0XS5tYXgmJnZvaWQgMD09PXMueWF4aXNbdF0ubWlufHxzLnlheGlzW3RdLmZvcmNlTmljZVNjYWxlO2EueUF4aXNTY2FsZVt0XT10aGlzLm5pY2VTY2FsZShlLGksci50aWNrQW1vdW50P3IudGlja0Ftb3VudDpvPDUmJm8+MT9vKzE6NSx0LG4pfWVsc2UgYS55QXhpc1NjYWxlW3RdPXRoaXMubGluZWFyU2NhbGUoZSxpLHIudGlja0Ftb3VudCx0KTtlbHNlIGEueUF4aXNTY2FsZVt0XT10aGlzLmxpbmVhclNjYWxlKDAsNSw1KX19LHtrZXk6XCJzZXRYU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuZ2xvYmFscyxzPWkuY29uZmlnLnhheGlzLHI9TWF0aC5hYnMoZS10KTtyZXR1cm4gZSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZ4LmlzTnVtYmVyKGUpP2EueEF4aXNTY2FsZT10aGlzLmxpbmVhclNjYWxlKHQsZSxzLnRpY2tBbW91bnQ/cy50aWNrQW1vdW50OnI8NSYmcj4xP3IrMTo1LDApOmEueEF4aXNTY2FsZT10aGlzLmxpbmVhclNjYWxlKDAsNSw1KSxhLnhBeGlzU2NhbGV9fSx7a2V5Olwic2V0TXVsdGlwbGVZU2NhbGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53Lmdsb2JhbHMsaT10aGlzLncuY29uZmlnLGE9ZS5taW5ZQXJyLmNvbmNhdChbXSkscz1lLm1heFlBcnIuY29uY2F0KFtdKSxyPVtdO2kueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxvKXt2YXIgbj1vO2kuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dC5uYW1lPT09ZS5zZXJpZXNOYW1lJiYobj1pLG8hPT1pP3IucHVzaCh7aW5kZXg6aSxzaW1pbGFySW5kZXg6byxhbHJlYWR5RXhpc3RzOiEwfSk6ci5wdXNoKHtpbmRleDppfSkpfSkpO3ZhciBsPWFbbl0saD1zW25dO3Quc2V0WVNjYWxlRm9ySW5kZXgobyxsLGgpfSkpLHRoaXMuc2FtZVNjYWxlSW5NdWx0aXBsZUF4ZXMoYSxzLHIpfX0se2tleTpcInNhbWVTY2FsZUluTXVsdGlwbGVBeGVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncuY29uZmlnLHI9dGhpcy53Lmdsb2JhbHMsbz1bXTtpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuYWxyZWFkeUV4aXN0cyYmKHZvaWQgMD09PW9bdC5pbmRleF0mJihvW3QuaW5kZXhdPVtdKSxvW3QuaW5kZXhdLnB1c2godC5pbmRleCksb1t0LmluZGV4XS5wdXNoKHQuc2ltaWxhckluZGV4KSl9KSksci55QXhpc1NhbWVTY2FsZUluZGljZXM9byxvLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7by5mb3JFYWNoKChmdW5jdGlvbihpLGEpe3ZhciBzLHI7ZSE9PWEmJihzPXQscj1pLHMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXIuaW5kZXhPZih0KX0pKSkubGVuZ3RoPjAmJihvW2VdPW9bZV0uY29uY2F0KG9bYV0pKX0pKX0pKTt2YXIgbj1vLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbihlLGkpe3JldHVybiB0LmluZGV4T2YoZSk9PT1pfSkpfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc29ydCgpfSkpO289by5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKTt2YXIgbD1uLnNsaWNlKCksaD1sLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfSkpO2w9bC5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGguaW5kZXhPZihKU09OLnN0cmluZ2lmeSh0KSk9PT1lfSkpO3ZhciBjPVtdLGQ9W107dC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2wuZm9yRWFjaCgoZnVuY3Rpb24oYSxzKXthLmluZGV4T2YoaSk+LTEmJih2b2lkIDA9PT1jW3NdJiYoY1tzXT1bXSxkW3NdPVtdKSxjW3NdLnB1c2goe2tleTppLHZhbHVlOnR9KSxkW3NdLnB1c2goe2tleTppLHZhbHVlOmVbaV19KSl9KSl9KSk7dmFyIGc9QXJyYXkuYXBwbHkobnVsbCxBcnJheShsLmxlbmd0aCkpLm1hcChOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YsTnVtYmVyLk1JTl9WQUxVRSksdT1BcnJheS5hcHBseShudWxsLEFycmF5KGwubGVuZ3RoKSkubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwtTnVtYmVyLk1BWF9WQUxVRSk7Yy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtnW2VdPU1hdGgubWluKHQudmFsdWUsZ1tlXSl9KSl9KSksZC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt1W2VdPU1hdGgubWF4KHQudmFsdWUsdVtlXSl9KSl9KSksdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgbz1nW2ldLG49dVtpXTtzLmNoYXJ0LnN0YWNrZWQmJihuPTAsdC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QudmFsdWUhPT0tTnVtYmVyLk1BWF9WQUxVRSYmKG4rPXQudmFsdWUpLG8hPT1OdW1iZXIuTUlOX1ZBTFVFJiYobys9Y1tpXVtlXS52YWx1ZSl9KSkpLHQuZm9yRWFjaCgoZnVuY3Rpb24oaSxsKXt0W2xdLmtleT09PWUmJih2b2lkIDAhPT1zLnlheGlzW2VdLm1pbiYmKG89XCJmdW5jdGlvblwiPT10eXBlb2Ygcy55YXhpc1tlXS5taW4/cy55YXhpc1tlXS5taW4oci5taW5ZKTpzLnlheGlzW2VdLm1pbiksdm9pZCAwIT09cy55YXhpc1tlXS5tYXgmJihuPVwiZnVuY3Rpb25cIj09dHlwZW9mIHMueWF4aXNbZV0ubWF4P3MueWF4aXNbZV0ubWF4KHIubWF4WSk6cy55YXhpc1tlXS5tYXgpLGEuc2V0WVNjYWxlRm9ySW5kZXgoZSxvLG4pKX0pKX0pKX0pKX19LHtrZXk6XCJhdXRvU2NhbGVZXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3R8fCh0PXRoaXMpO3ZhciBhPXQudztpZihhLmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzfHxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aClyZXR1cm4gY29uc29sZS53YXJuKFwiYXV0b1NjYWxlWWF4aXMgbm90IHN1cHBvcnRlZCBpbiBhIG11bHRpLXlheGlzIGNoYXJ0LlwiKSxlO3ZhciBzPWEuZ2xvYmFscy5zZXJpZXNYWzBdLHI9YS5jb25maWcuY2hhcnQuc3RhY2tlZDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0LG8pe2Zvcih2YXIgbj0wLGw9MDtsPHMubGVuZ3RoO2wrKylpZihzW2xdPj1pLnhheGlzLm1pbil7bj1sO2JyZWFrfXZhciBoLGMsZD1hLmdsb2JhbHMubWluWUFycltvXSxnPWEuZ2xvYmFscy5tYXhZQXJyW29dLHU9YS5nbG9iYWxzLnN0YWNrZWRTZXJpZXNUb3RhbHM7YS5nbG9iYWxzLnNlcmllcy5mb3JFYWNoKChmdW5jdGlvbihvLGwpe3ZhciBwPW9bbl07cj8ocD11W25dLGg9Yz1wLHUuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtzW2VdPD1pLnhheGlzLm1heCYmc1tlXT49aS54YXhpcy5taW4mJih0PmMmJm51bGwhPT10JiYoYz10KSxvW2VdPGgmJm51bGwhPT1vW2VdJiYoaD1vW2VdKSl9KSkpOihoPWM9cCxvLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7aWYoc1tlXTw9aS54YXhpcy5tYXgmJnNbZV0+PWkueGF4aXMubWluKXt2YXIgcj10LG89dDthLmdsb2JhbHMuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7bnVsbCE9PXQmJihyPU1hdGgubWluKGlbZV0sciksbz1NYXRoLm1heChpW2VdLG8pKX0pKSxvPmMmJm51bGwhPT1vJiYoYz1vKSxyPGgmJm51bGwhPT1yJiYoaD1yKX19KSkpLHZvaWQgMD09PWgmJnZvaWQgMD09PWMmJihoPWQsYz1nKSxjKj1jPDA/Ljk6MS4xLDA9PT0oaCo9aDwwPzEuMTouOSkmJjA9PT1jJiYoaD0tMSxjPTEpLGM8MCYmYzxnJiYoYz1nKSxoPDAmJmg+ZCYmKGg9ZCksZS5sZW5ndGg+MT8oZVtsXS5taW49dm9pZCAwPT09dC5taW4/aDp0Lm1pbixlW2xdLm1heD12b2lkIDA9PT10Lm1heD9jOnQubWF4KTooZVswXS5taW49dm9pZCAwPT09dC5taW4/aDp0Lm1pbixlWzBdLm1heD12b2lkIDA9PT10Lm1heD9jOnQubWF4KX0pKX0pKSxlfX1dKSx0fSgpLFU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zY2FsZXM9bmV3IF8oZSl9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0WVJhbmdlKCksdGhpcy5zZXRYUmFuZ2UoKSx0aGlzLnNldFpSYW5nZSgpfX0se2tleTpcImdldE1pbllNYXhZXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOk51bWJlci5NQVhfVkFMVUUsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06LU51bWJlci5NQVhfVkFMVUUsYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbCxzPXRoaXMudy5jb25maWcscj10aGlzLncuZ2xvYmFscyxvPS1OdW1iZXIuTUFYX1ZBTFVFLG49TnVtYmVyLk1JTl9WQUxVRTtudWxsPT09YSYmKGE9dCsxKTt2YXIgbD1yLnNlcmllcyxoPWwsYz1sO1wiY2FuZGxlc3RpY2tcIj09PXMuY2hhcnQudHlwZT8oaD1yLnNlcmllc0NhbmRsZUwsYz1yLnNlcmllc0NhbmRsZUgpOlwiYm94UGxvdFwiPT09cy5jaGFydC50eXBlPyhoPXIuc2VyaWVzQ2FuZGxlTyxjPXIuc2VyaWVzQ2FuZGxlQyk6ci5pc1JhbmdlRGF0YSYmKGg9ci5zZXJpZXNSYW5nZVN0YXJ0LGM9ci5zZXJpZXNSYW5nZUVuZCk7Zm9yKHZhciBkPXQ7ZDxhO2QrKyl7ci5kYXRhUG9pbnRzPU1hdGgubWF4KHIuZGF0YVBvaW50cyxsW2RdLmxlbmd0aCksci5jYXRlZ29yeUxhYmVscy5sZW5ndGgmJihyLmRhdGFQb2ludHM9ci5jYXRlZ29yeUxhYmVscy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10fSkpLmxlbmd0aCksci5sYWJlbHMubGVuZ3RoJiZcImRhdGV0aW1lXCIhPT1zLnhheGlzLnR5cGUmJjAhPT1yLnNlcmllcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5sZW5ndGh9KSwwKSYmKHIuZGF0YVBvaW50cz1NYXRoLm1heChyLmRhdGFQb2ludHMsci5sYWJlbHMubGVuZ3RoKSk7Zm9yKHZhciBnPTA7ZzxyLnNlcmllc1tkXS5sZW5ndGg7ZysrKXt2YXIgdT1sW2RdW2ddO251bGwhPT11JiZ4LmlzTnVtYmVyKHUpPyh2b2lkIDAhPT1jW2RdW2ddJiYobz1NYXRoLm1heChvLGNbZF1bZ10pLGU9TWF0aC5taW4oZSxjW2RdW2ddKSksdm9pZCAwIT09aFtkXVtnXSYmKGU9TWF0aC5taW4oZSxoW2RdW2ddKSxpPU1hdGgubWF4KGksaFtkXVtnXSkpLFwiY2FuZGxlc3RpY2tcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwicmFuZ2VBcmVhXCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwicmFuZ2VCYXJcIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZXx8KFwiY2FuZGxlc3RpY2tcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGV8fHZvaWQgMCE9PXIuc2VyaWVzQ2FuZGxlQ1tkXVtnXSYmKG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZU9bZF1bZ10pLG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZUhbZF1bZ10pLG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZUxbZF1bZ10pLG89TWF0aC5tYXgobyxyLnNlcmllc0NhbmRsZUNbZF1bZ10pLFwiYm94UGxvdFwiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiYobz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlTVtkXVtnXSkpKSwhcy5zZXJpZXNbZF0udHlwZXx8XCJjYW5kbGVzdGlja1wiPT09cy5zZXJpZXNbZF0udHlwZSYmXCJib3hQbG90XCI9PT1zLnNlcmllc1tkXS50eXBlJiZcInJhbmdlQXJlYVwiPT09cy5zZXJpZXNbZF0udHlwZSYmXCJyYW5nZUJhclwiPT09cy5zZXJpZXNbZF0udHlwZXx8KG89TWF0aC5tYXgobyxyLnNlcmllc1tkXVtnXSksZT1NYXRoLm1pbihlLHIuc2VyaWVzW2RdW2ddKSksaT1vKSxyLnNlcmllc0dvYWxzW2RdJiZyLnNlcmllc0dvYWxzW2RdW2ddJiZBcnJheS5pc0FycmF5KHIuc2VyaWVzR29hbHNbZF1bZ10pJiZyLnNlcmllc0dvYWxzW2RdW2ddLmZvckVhY2goKGZ1bmN0aW9uKHQpe24hPT1OdW1iZXIuTUlOX1ZBTFVFJiYobj1NYXRoLm1pbihuLHQudmFsdWUpLGU9biksbz1NYXRoLm1heChvLHQudmFsdWUpLGk9b30pKSx4LmlzRmxvYXQodSkmJih1PXgubm9FeHBvbmVudHModSksci55VmFsdWVEZWNpbWFsPU1hdGgubWF4KHIueVZhbHVlRGVjaW1hbCx1LnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdLmxlbmd0aCkpLG4+aFtkXVtnXSYmaFtkXVtnXTwwJiYobj1oW2RdW2ddKSk6ci5oYXNOdWxsVmFsdWVzPSEwfX1yZXR1cm5cInJhbmdlQmFyXCI9PT1zLmNoYXJ0LnR5cGUmJnIuc2VyaWVzUmFuZ2VTdGFydC5sZW5ndGgmJnIuaXNCYXJIb3Jpem9udGFsJiYobj1lKSxcImJhclwiPT09cy5jaGFydC50eXBlJiYobjwwJiZvPDAmJihvPTApLG49PT1OdW1iZXIuTUlOX1ZBTFVFJiYobj0wKSkse21pblk6bixtYXhZOm8sbG93ZXN0WTplLGhpZ2hlc3RZOml9fX0se2tleTpcInNldFlSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnO3QubWF4WT0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblk9TnVtYmVyLk1JTl9WQUxVRTt2YXIgaT1OdW1iZXIuTUFYX1ZBTFVFO2lmKHQuaXNNdWx0aXBsZVlBeGlzKWZvcih2YXIgYT0wO2E8dC5zZXJpZXMubGVuZ3RoO2ErKyl7dmFyIHM9dGhpcy5nZXRNaW5ZTWF4WShhLGksbnVsbCxhKzEpO3QubWluWUFyci5wdXNoKHMubWluWSksdC5tYXhZQXJyLnB1c2gocy5tYXhZKSxpPXMubG93ZXN0WX12YXIgcj10aGlzLmdldE1pbllNYXhZKDAsaSxudWxsLHQuc2VyaWVzLmxlbmd0aCk7aWYodC5taW5ZPXIubWluWSx0Lm1heFk9ci5tYXhZLGk9ci5sb3dlc3RZLGUuY2hhcnQuc3RhY2tlZCYmdGhpcy5fc2V0U3RhY2tlZE1pbk1heCgpLChcImxpbmVcIj09PWUuY2hhcnQudHlwZXx8XCJhcmVhXCI9PT1lLmNoYXJ0LnR5cGV8fFwiY2FuZGxlc3RpY2tcIj09PWUuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1lLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWUuY2hhcnQudHlwZSYmIXQuaXNCYXJIb3Jpem9udGFsKSYmdC5taW5ZPT09TnVtYmVyLk1JTl9WQUxVRSYmaSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiZpIT09dC5tYXhZKXt2YXIgbz10Lm1heFktaTsoaT49MCYmaTw9MTB8fHZvaWQgMCE9PWUueWF4aXNbMF0ubWlufHx2b2lkIDAhPT1lLnlheGlzWzBdLm1heCkmJihvPTApLHQubWluWT1pLTUqby8xMDAsaT4wJiZ0Lm1pblk8MCYmKHQubWluWT0wKSx0Lm1heFk9dC5tYXhZKzUqby8xMDB9aWYoZS55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3ZvaWQgMCE9PWUubWF4JiYoXCJudW1iZXJcIj09dHlwZW9mIGUubWF4P3QubWF4WUFycltpXT1lLm1heDpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLm1heCYmKHQubWF4WUFycltpXT1lLm1heCh0LmlzTXVsdGlwbGVZQXhpcz90Lm1heFlBcnJbaV06dC5tYXhZKSksdC5tYXhZPXQubWF4WUFycltpXSksdm9pZCAwIT09ZS5taW4mJihcIm51bWJlclwiPT10eXBlb2YgZS5taW4/dC5taW5ZQXJyW2ldPWUubWluOlwiZnVuY3Rpb25cIj09dHlwZW9mIGUubWluJiYodC5taW5ZQXJyW2ldPWUubWluKHQuaXNNdWx0aXBsZVlBeGlzP3QubWluWUFycltpXT09PU51bWJlci5NSU5fVkFMVUU/MDp0Lm1pbllBcnJbaV06dC5taW5ZKSksdC5taW5ZPXQubWluWUFycltpXSl9KSksdC5pc0Jhckhvcml6b250YWwpe1tcIm1pblwiLFwibWF4XCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZvaWQgMCE9PWUueGF4aXNbaV0mJlwibnVtYmVyXCI9PXR5cGVvZiBlLnhheGlzW2ldJiYoXCJtaW5cIj09PWk/dC5taW5ZPWUueGF4aXNbaV06dC5tYXhZPWUueGF4aXNbaV0pfSkpfXJldHVybiB0LmlzTXVsdGlwbGVZQXhpcz8odGhpcy5zY2FsZXMuc2V0TXVsdGlwbGVZU2NhbGVzKCksdC5taW5ZPWksdC55QXhpc1NjYWxlLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dC5taW5ZQXJyW2ldPWUubmljZU1pbix0Lm1heFlBcnJbaV09ZS5uaWNlTWF4fSkpKToodGhpcy5zY2FsZXMuc2V0WVNjYWxlRm9ySW5kZXgoMCx0Lm1pblksdC5tYXhZKSx0Lm1pblk9dC55QXhpc1NjYWxlWzBdLm5pY2VNaW4sdC5tYXhZPXQueUF4aXNTY2FsZVswXS5uaWNlTWF4LHQubWluWUFyclswXT10LnlBeGlzU2NhbGVbMF0ubmljZU1pbix0Lm1heFlBcnJbMF09dC55QXhpc1NjYWxlWzBdLm5pY2VNYXgpLHttaW5ZOnQubWluWSxtYXhZOnQubWF4WSxtaW5ZQXJyOnQubWluWUFycixtYXhZQXJyOnQubWF4WUFycix5QXhpc1NjYWxlOnQueUF4aXNTY2FsZX19fSx7a2V5Olwic2V0WFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWcsaT1cIm51bWVyaWNcIj09PWUueGF4aXMudHlwZXx8XCJkYXRldGltZVwiPT09ZS54YXhpcy50eXBlfHxcImNhdGVnb3J5XCI9PT1lLnhheGlzLnR5cGUmJiF0Lm5vTGFiZWxzUHJvdmlkZWR8fHQubm9MYWJlbHNQcm92aWRlZHx8dC5pc1hOdW1lcmljO2lmKHQuaXNYTnVtZXJpYyYmZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHQuc2VyaWVzLmxlbmd0aDtlKyspaWYodC5sYWJlbHNbZV0pZm9yKHZhciBpPTA7aTx0LmxhYmVsc1tlXS5sZW5ndGg7aSsrKW51bGwhPT10LmxhYmVsc1tlXVtpXSYmeC5pc051bWJlcih0LmxhYmVsc1tlXVtpXSkmJih0Lm1heFg9TWF0aC5tYXgodC5tYXhYLHQubGFiZWxzW2VdW2ldKSx0LmluaXRpYWxNYXhYPU1hdGgubWF4KHQubWF4WCx0LmxhYmVsc1tlXVtpXSksdC5taW5YPU1hdGgubWluKHQubWluWCx0LmxhYmVsc1tlXVtpXSksdC5pbml0aWFsTWluWD1NYXRoLm1pbih0Lm1pblgsdC5sYWJlbHNbZV1baV0pKX0oKSx0Lm5vTGFiZWxzUHJvdmlkZWQmJjA9PT1lLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoJiYodC5tYXhYPXQubGFiZWxzW3QubGFiZWxzLmxlbmd0aC0xXSx0LmluaXRpYWxNYXhYPXQubGFiZWxzW3QubGFiZWxzLmxlbmd0aC0xXSx0Lm1pblg9MSx0LmluaXRpYWxNaW5YPTEpLHQuaXNYTnVtZXJpY3x8dC5ub0xhYmVsc1Byb3ZpZGVkfHx0LmRhdGFGb3JtYXRYTnVtZXJpYyl7dmFyIGE7aWYodm9pZCAwPT09ZS54YXhpcy50aWNrQW1vdW50PyhhPU1hdGgucm91bmQodC5zdmdXaWR0aC8xNTApLFwibnVtZXJpY1wiPT09ZS54YXhpcy50eXBlJiZ0LmRhdGFQb2ludHM8MzAmJihhPXQuZGF0YVBvaW50cy0xKSxhPnQuZGF0YVBvaW50cyYmMCE9PXQuZGF0YVBvaW50cyYmKGE9dC5kYXRhUG9pbnRzLTEpKTpcImRhdGFQb2ludHNcIj09PWUueGF4aXMudGlja0Ftb3VudD8odC5zZXJpZXMubGVuZ3RoPjEmJihhPXQuc2VyaWVzW3QubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoLTEpLHQuaXNYTnVtZXJpYyYmKGE9dC5tYXhYLXQubWluWC0xKSk6YT1lLnhheGlzLnRpY2tBbW91bnQsdC54VGlja0Ftb3VudD1hLHZvaWQgMCE9PWUueGF4aXMubWF4JiZcIm51bWJlclwiPT10eXBlb2YgZS54YXhpcy5tYXgmJih0Lm1heFg9ZS54YXhpcy5tYXgpLHZvaWQgMCE9PWUueGF4aXMubWluJiZcIm51bWJlclwiPT10eXBlb2YgZS54YXhpcy5taW4mJih0Lm1pblg9ZS54YXhpcy5taW4pLHZvaWQgMCE9PWUueGF4aXMucmFuZ2UmJih0Lm1pblg9dC5tYXhYLWUueGF4aXMucmFuZ2UpLHQubWluWCE9PU51bWJlci5NQVhfVkFMVUUmJnQubWF4WCE9PS1OdW1iZXIuTUFYX1ZBTFVFKWlmKGUueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYhdC5kYXRhRm9ybWF0WE51bWVyaWMpe2Zvcih2YXIgcz1bXSxyPXQubWluWC0xO3I8dC5tYXhYO3IrKylzLnB1c2gocisxKTt0LnhBeGlzU2NhbGU9e3Jlc3VsdDpzLG5pY2VNaW46c1swXSxuaWNlTWF4OnNbcy5sZW5ndGgtMV19fWVsc2UgdC54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLnNldFhTY2FsZSh0Lm1pblgsdC5tYXhYKTtlbHNlIHQueEF4aXNTY2FsZT10aGlzLnNjYWxlcy5saW5lYXJTY2FsZSgwLGEsYSksdC5ub0xhYmVsc1Byb3ZpZGVkJiZ0LmxhYmVscy5sZW5ndGg+MCYmKHQueEF4aXNTY2FsZT10aGlzLnNjYWxlcy5saW5lYXJTY2FsZSgxLHQubGFiZWxzLmxlbmd0aCxhLTEpLHQuc2VyaWVzWD10LmxhYmVscy5zbGljZSgpKTtpJiYodC5sYWJlbHM9dC54QXhpc1NjYWxlLnJlc3VsdC5zbGljZSgpKX1yZXR1cm4gdC5pc0Jhckhvcml6b250YWwmJnQubGFiZWxzLmxlbmd0aCYmKHQueFRpY2tBbW91bnQ9dC5sYWJlbHMubGVuZ3RoKSx0aGlzLl9oYW5kbGVTaW5nbGVEYXRhUG9pbnQoKSx0aGlzLl9nZXRNaW5YRGlmZigpLHttaW5YOnQubWluWCxtYXhYOnQubWF4WH19fSx7a2V5Olwic2V0WlJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscztpZih0LmlzRGF0YVhZWilmb3IodmFyIGU9MDtlPHQuc2VyaWVzLmxlbmd0aDtlKyspaWYodm9pZCAwIT09dC5zZXJpZXNaW2VdKWZvcih2YXIgaT0wO2k8dC5zZXJpZXNaW2VdLmxlbmd0aDtpKyspbnVsbCE9PXQuc2VyaWVzWltlXVtpXSYmeC5pc051bWJlcih0LnNlcmllc1pbZV1baV0pJiYodC5tYXhaPU1hdGgubWF4KHQubWF4Wix0LnNlcmllc1pbZV1baV0pLHQubWluWj1NYXRoLm1pbih0Lm1pblosdC5zZXJpZXNaW2VdW2ldKSl9fSx7a2V5OlwiX2hhbmRsZVNpbmdsZURhdGFQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10aGlzLncuY29uZmlnO2lmKHQubWluWD09PXQubWF4WCl7dmFyIGk9bmV3IEkodGhpcy5jdHgpO2lmKFwiZGF0ZXRpbWVcIj09PWUueGF4aXMudHlwZSl7dmFyIGE9aS5nZXREYXRlKHQubWluWCk7ZS54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/YS5zZXRVVENEYXRlKGEuZ2V0VVRDRGF0ZSgpLTIpOmEuc2V0RGF0ZShhLmdldERhdGUoKS0yKSx0Lm1pblg9bmV3IERhdGUoYSkuZ2V0VGltZSgpO3ZhciBzPWkuZ2V0RGF0ZSh0Lm1heFgpO2UueGF4aXMubGFiZWxzLmRhdGV0aW1lVVRDP3Muc2V0VVRDRGF0ZShzLmdldFVUQ0RhdGUoKSsyKTpzLnNldERhdGUocy5nZXREYXRlKCkrMiksdC5tYXhYPW5ldyBEYXRlKHMpLmdldFRpbWUoKX1lbHNlKFwibnVtZXJpY1wiPT09ZS54YXhpcy50eXBlfHxcImNhdGVnb3J5XCI9PT1lLnhheGlzLnR5cGUmJiF0Lm5vTGFiZWxzUHJvdmlkZWQpJiYodC5taW5YPXQubWluWC0yLHQuaW5pdGlhbE1pblg9dC5taW5YLHQubWF4WD10Lm1heFgrMix0LmluaXRpYWxNYXhYPXQubWF4WCl9fX0se2tleTpcIl9nZXRNaW5YRGlmZlwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHM7dC5pc1hOdW1lcmljJiZ0LnNlcmllc1guZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXsxPT09ZS5sZW5ndGgmJmUucHVzaCh0LnNlcmllc1hbdC5tYXhWYWxzSW5BcnJheUluZGV4XVt0LnNlcmllc1hbdC5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMV0pO3ZhciBhPWUuc2xpY2UoKTthLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX0pKSxhLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7aWYoaT4wKXt2YXIgcz1lLWFbaS0xXTtzPjAmJih0Lm1pblhEaWZmPU1hdGgubWluKHMsdC5taW5YRGlmZikpfX0pKSwxIT09dC5kYXRhUG9pbnRzJiZ0Lm1pblhEaWZmIT09TnVtYmVyLk1BWF9WQUxVRXx8KHQubWluWERpZmY9LjUpfSkpfX0se2tleTpcIl9zZXRTdGFja2VkTWluTWF4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53Lmdsb2JhbHM7aWYoZS5zZXJpZXMubGVuZ3RoKXt2YXIgaT1lLnNlcmllc0dyb3VwcztpLmxlbmd0aHx8KGk9W3RoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZX0pKV0pO3ZhciBhPXt9LHM9e307aS5mb3JFYWNoKChmdW5jdGlvbihpKXthW2ldPVtdLHNbaV09W10sdC53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBpLmluZGV4T2YodC5uYW1lKT4tMT9lOm51bGx9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciByPTA7cjxlLnNlcmllc1tlLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDtyKyspdm9pZCAwPT09YVtpXVtyXSYmKGFbaV1bcl09MCxzW2ldW3JdPTApLG51bGwhPT1lLnNlcmllc1t0XVtyXSYmeC5pc051bWJlcihlLnNlcmllc1t0XVtyXSkmJihlLnNlcmllc1t0XVtyXT4wP2FbaV1bcl0rPXBhcnNlRmxvYXQoZS5zZXJpZXNbdF1bcl0pKzFlLTQ6c1tpXVtyXSs9cGFyc2VGbG9hdChlLnNlcmllc1t0XVtyXSkpfSkpfSkpLE9iamVjdC5lbnRyaWVzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPWcodCwxKVswXTthW2ldLmZvckVhY2goKGZ1bmN0aW9uKHQscil7ZS5tYXhZPU1hdGgubWF4KGUubWF4WSxhW2ldW3JdKSxlLm1pblk9TWF0aC5taW4oZS5taW5ZLHNbaV1bcl0pfSkpfSkpfX19XSksdH0oKSxxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuZWxncmlkPWksdGhpcy53PWUudzt2YXIgcz10aGlzLnc7dGhpcy54YXhpc0ZvbnRTaXplPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSx0aGlzLmF4aXNGb250RmFtaWx5PXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LHRoaXMueGF4aXNGb3JlQ29sb3JzPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jb2xvcnMsdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbD1cImJhclwiPT09cy5jb25maWcuY2hhcnQudHlwZSYmcy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsdGhpcy54QXhpc29mZlg9MCxcImJvdHRvbVwiPT09cy5jb25maWcueGF4aXMucG9zaXRpb24mJih0aGlzLnhBeGlzb2ZmWD1zLmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5kcmF3bkxhYmVscz1bXSx0aGlzLmF4ZXNVdGlscz1uZXcgQihlKX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1lheGlzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5zdHlsZSxyPXMuZm9udFNpemUsbz1zLmZvbnRGYW1pbHksbj1zLmZvbnRXZWlnaHQsbD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXNcIixyZWw6dCx0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIraS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XStcIiwgMClcIn0pO2lmKHRoaXMuYXhlc1V0aWxzLmlzWUF4aXNIaWRkZW4odCkpcmV0dXJuIGw7dmFyIGg9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIn0pO2wuYWRkKGgpO3ZhciBjPWkuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5sZW5ndGgtMSxkPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2MsZz1pLmdsb2JhbHMudHJhbnNsYXRlWSx1PWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdLHA9aS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0LnNsaWNlKCk7cD10aGlzLmF4ZXNVdGlscy5jaGVja0ZvclJldmVyc2VkTGFiZWxzKHQscCk7dmFyIGY9XCJcIjtpZihpLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuc2hvdylmb3IodmFyIHg9ZnVuY3Rpb24obCl7dmFyIHg9cFtsXTt4PXUoeCxsLGkpO3ZhciBiPWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5wYWRkaW5nO2kuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYwIT09aS5jb25maWcueWF4aXMubGVuZ3RoJiYoYio9LTEpO3ZhciB2PVwiZW5kXCI7aS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJih2PVwic3RhcnRcIiksXCJsZWZ0XCI9PT1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuYWxpZ24/dj1cInN0YXJ0XCI6XCJjZW50ZXJcIj09PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5hbGlnbj92PVwibWlkZGxlXCI6XCJyaWdodFwiPT09aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLmFsaWduJiYodj1cImVuZFwiKTt2YXIgbT1lLmF4ZXNVdGlscy5nZXRZQXhpc0ZvcmVDb2xvcihzLmNvbG9ycyx0KSx5PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5vZmZzZXRZO1wiaGVhdG1hcFwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmKHktPShpLmdsb2JhbHMuZ3JpZEhlaWdodC9pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xKS8yKTt2YXIgdz1hLmRyYXdUZXh0KHt4OmIseTpnK2MvMTAreSsxLHRleHQ6eCx0ZXh0QW5jaG9yOnYsZm9udFNpemU6cixmb250RmFtaWx5Om8sZm9udFdlaWdodDpuLG1heFdpZHRoOmkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5tYXhXaWR0aCxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShtKT9tW2xdOm0saXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWxhYmVsIFwiK3MuY3NzQ2xhc3N9KTtsPT09YyYmKGY9dyksaC5hZGQodyk7dmFyIGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGkuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2lmKGsudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheSh4KT94LmpvaW4oXCIgXCIpOngsdy5ub2RlLmFwcGVuZENoaWxkKGspLDAhPT1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlKXt2YXIgQT1hLnJvdGF0ZUFyb3VuZENlbnRlcihmLm5vZGUpLFM9YS5yb3RhdGVBcm91bmRDZW50ZXIody5ub2RlKTt3Lm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KGkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUsXCIgXCIpLmNvbmNhdChBLngsXCIgXCIpLmNvbmNhdChTLnksXCIpXCIpKX1nKz1kfSxiPWM7Yj49MDtiLS0peChiKTtpZih2b2lkIDAhPT1pLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0KXt2YXIgdj1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGVcIn0pLHk9MDtpLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKHk9aS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFt0XSk7dmFyIHc9YS5kcmF3VGV4dCh7eDp5LHk6aS5nbG9iYWxzLmdyaWRIZWlnaHQvMitpLmdsb2JhbHMudHJhbnNsYXRlWStpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRZLHRleHQ6aS5jb25maWcueWF4aXNbdF0udGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwiZW5kXCIsZm9yZUNvbG9yOmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmNvbG9yLGZvbnRTaXplOmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRXZWlnaHQ6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb250RmFtaWx5OmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgXCIraS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTt2LmFkZCh3KSxsLmFkZCh2KX12YXIgaz1pLmNvbmZpZy55YXhpc1t0XS5heGlzQm9yZGVyLEE9MzEray5vZmZzZXRYO2lmKGkuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYoQT0tMzEtay5vZmZzZXRYKSxrLnNob3cpe3ZhciBTPWEuZHJhd0xpbmUoQSxpLmdsb2JhbHMudHJhbnNsYXRlWStrLm9mZnNldFktMixBLGkuZ2xvYmFscy5ncmlkSGVpZ2h0K2kuZ2xvYmFscy50cmFuc2xhdGVZK2sub2Zmc2V0WSsyLGsuY29sb3IsMCxrLndpZHRoKTtsLmFkZChTKX1yZXR1cm4gaS5jb25maWcueWF4aXNbdF0uYXhpc1RpY2tzLnNob3cmJnRoaXMuYXhlc1V0aWxzLmRyYXdZQXhpc1RpY2tzKEEsYyxrLGkuY29uZmlnLnlheGlzW3RdLmF4aXNUaWNrcyx0LGQsbCksbH19LHtrZXk6XCJkcmF3WWF4aXNJbnZlcnNlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcyBhcGV4Y2hhcnRzLXlheGlzLWludmVyc2VkXCJ9KSxzPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10ZXh0cy1nXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLmdsb2JhbHMudHJhbnNsYXRlWEF4aXNYLFwiLCBcIikuY29uY2F0KGUuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1ksXCIpXCIpfSk7YS5hZGQocyk7dmFyIHI9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0Lmxlbmd0aC0xLG89ZS5nbG9iYWxzLmdyaWRXaWR0aC9yKy4xLG49bytlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCxsPWUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIsaD1lLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQuc2xpY2UoKSxjPWUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM7Yy5sZW5ndGg+MCYmKHRoaXMueGF4aXNMYWJlbHM9Yy5zbGljZSgpLHI9KGg9Yy5zbGljZSgpKS5sZW5ndGgpLGg9dGhpcy5heGVzVXRpbHMuY2hlY2tGb3JSZXZlcnNlZExhYmVscyh0LGgpO3ZhciBkPWMubGVuZ3RoO2lmKGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KWZvcih2YXIgZz1kPzA6cjtkP2c8ZDpnPj0wO2Q/ZysrOmctLSl7dmFyIHU9aFtnXTt1PWwodSxnLGUpO3ZhciBwPWUuZ2xvYmFscy5ncmlkV2lkdGgrZS5nbG9iYWxzLnBhZEhvcml6b250YWwtKG4tbytlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WCk7aWYoYy5sZW5ndGgpe3ZhciBmPXRoaXMuYXhlc1V0aWxzLmdldExhYmVsKGgsYyxwLGcsdGhpcy5kcmF3bkxhYmVscyx0aGlzLnhheGlzRm9udFNpemUpO3A9Zi54LHU9Zi50ZXh0LHRoaXMuZHJhd25MYWJlbHMucHVzaChmLnRleHQpLDA9PT1nJiZlLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbCYmKHU9XCJcIiksZz09PWgubGVuZ3RoLTEmJmUuZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWwmJih1PVwiXCIpfXZhciB4PWkuZHJhd1RleHQoe3g6cCx5OnRoaXMueEF4aXNvZmZYK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRZKzMwLShcInRvcFwiPT09ZS5jb25maWcueGF4aXMucG9zaXRpb24/ZS5nbG9iYWxzLnhBeGlzSGVpZ2h0K2UuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtMjowKSx0ZXh0OnUsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KHRoaXMueGF4aXNGb3JlQ29sb3JzKT90aGlzLnhheGlzRm9yZUNvbG9yc1t0XTp0aGlzLnhheGlzRm9yZUNvbG9ycyxmb250U2l6ZTp0aGlzLnhheGlzRm9udFNpemUsZm9udEZhbWlseTp0aGlzLnhheGlzRm9udEZhbWlseSxmb250V2VpZ2h0OmUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250V2VpZ2h0LGlzUGxhaW5UZXh0OiExLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy1sYWJlbCBcIitlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY3NzQ2xhc3N9KTtzLmFkZCh4KSx4LnRzcGFuKHUpO3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLmdsb2JhbHMuU1ZHTlMsXCJ0aXRsZVwiKTtiLnRleHRDb250ZW50PXUseC5ub2RlLmFwcGVuZENoaWxkKGIpLG4rPW99cmV0dXJuIHRoaXMuaW52ZXJzZWRZQXhpc1RpdGxlVGV4dChhKSx0aGlzLmludmVyc2VkWUF4aXNCb3JkZXIoYSksYX19LHtrZXk6XCJpbnZlcnNlZFlBeGlzQm9yZGVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9ZS5jb25maWcueGF4aXMuYXhpc0JvcmRlcjtpZihhLnNob3cpe3ZhciBzPTA7XCJiYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiYocy09MTUpO3ZhciByPWkuZHJhd0xpbmUoZS5nbG9iYWxzLnBhZEhvcml6b250YWwrcythLm9mZnNldFgsdGhpcy54QXhpc29mZlgsZS5nbG9iYWxzLmdyaWRXaWR0aCx0aGlzLnhBeGlzb2ZmWCxhLmNvbG9yLDAsYS5oZWlnaHQpO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzJiZlLmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQocik6dC5hZGQocil9fX0se2tleTpcImludmVyc2VkWUF4aXNUaXRsZVRleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCk7aWYodm9pZCAwIT09ZS5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlIGFwZXhjaGFydHMteWF4aXMtdGl0bGUtaW52ZXJzZWRcIn0pLHM9aS5kcmF3VGV4dCh7eDplLmdsb2JhbHMuZ3JpZFdpZHRoLzIrZS5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WCx5OnRoaXMueEF4aXNvZmZYK3BhcnNlRmxvYXQodGhpcy54YXhpc0ZvbnRTaXplKStwYXJzZUZsb2F0KGUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplKStlLmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRZKzIwLHRleHQ6ZS5jb25maWcueGF4aXMudGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb3JlQ29sb3I6ZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRpdGxlLXRleHQgXCIrZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTthLmFkZChzKSx0LmFkZChhKX19fSx7a2V5OlwieUF4aXNUaXRsZVJvdGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9e3dpZHRoOjAsaGVpZ2h0OjB9LHI9e3dpZHRoOjAsaGVpZ2h0OjB9LG89aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIiAuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMteWF4aXMtdGV4dHMtZ1wiKSk7bnVsbCE9PW8mJihzPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3ZhciBuPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMteWF4aXMtdGl0bGUgdGV4dFwiKSk7aWYobnVsbCE9PW4mJihyPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLG51bGwhPT1uKXt2YXIgbD10aGlzLnhQYWRkaW5nRm9yWUF4aXNUaXRsZSh0LHMscixlKTtuLnNldEF0dHJpYnV0ZShcInhcIixsLnhQb3MtKGU/MTA6MCkpfWlmKG51bGwhPT1uKXt2YXIgaD1hLnJvdGF0ZUFyb3VuZENlbnRlcihuKTtuLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKFwiLmNvbmNhdChlPy0xKmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnJvdGF0ZTppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5yb3RhdGUsXCIgXCIpLmNvbmNhdChoLngsXCIgXCIpLmNvbmNhdChoLnksXCIpXCIpKX19fSx7a2V5OlwieFBhZGRpbmdGb3JZQXhpc1RpdGxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9MCxvPTAsbj0xMDtyZXR1cm4gdm9pZCAwPT09cy5jb25maWcueWF4aXNbdF0udGl0bGUudGV4dHx8dDwwP3t4UG9zOm8scGFkZDowfTooYT8obz1lLndpZHRoK3MuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFgraS53aWR0aC8yK24vMiwwPT09KHIrPTEpJiYoby09bi8yKSk6KG89LTEqZS53aWR0aCtzLmNvbmZpZy55YXhpc1t0XS50aXRsZS5vZmZzZXRYK24vMitpLndpZHRoLzIscy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG49MjUsbz0tMSplLndpZHRoLXMuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFgtbikpLHt4UG9zOm8scGFkZDpufSl9fSx7a2V5Olwic2V0WUF4aXNYUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPTAscz0wLHI9MTgsbz0xO2kuY29uZmlnLnlheGlzLmxlbmd0aD4xJiYodGhpcy5tdWx0aXBsZVlzPSEwKSxpLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKG4sbCl7dmFyIGg9aS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGwpPi0xfHwhbi5zaG93fHxuLmZsb2F0aW5nfHwwPT09dFtsXS53aWR0aCxjPXRbbF0ud2lkdGgrZVtsXS53aWR0aDtuLm9wcG9zaXRlP2kuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/KHM9aS5nbG9iYWxzLmdyaWRXaWR0aCtpLmdsb2JhbHMudHJhbnNsYXRlWC0xLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09cy1uLmxhYmVscy5vZmZzZXRYKToocz1pLmdsb2JhbHMuZ3JpZFdpZHRoK2kuZ2xvYmFscy50cmFuc2xhdGVYK28saHx8KG89bytjKzIwKSxpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW2xdPXMtbi5sYWJlbHMub2Zmc2V0WCsyMCk6KGE9aS5nbG9iYWxzLnRyYW5zbGF0ZVgtcixofHwocj1yK2MrMjApLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09YStuLmxhYmVscy5vZmZzZXRYKX0pKX19LHtrZXk6XCJzZXRZQXhpc1RleHRBbGlnbm1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy15YXhpc1wiKTsoZT14Lmxpc3RUb0FycmF5KGUpKS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3ZhciBhPXQuY29uZmlnLnlheGlzW2ldO2lmKGEmJiFhLmZsb2F0aW5nJiZ2b2lkIDAhPT1hLmxhYmVscy5hbGlnbil7dmFyIHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGksXCInXSAuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nXCIpKSxyPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc1tyZWw9J1wiLmNvbmNhdChpLFwiJ10gLmFwZXhjaGFydHMteWF4aXMtbGFiZWxcIikpO3I9eC5saXN0VG9BcnJheShyKTt2YXIgbz1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1wibGVmdFwiPT09YS5sYWJlbHMuYWxpZ24/KHIuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJzdGFydFwiKX0pKSxhLm9wcG9zaXRlfHxzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKC1cIi5jb25jYXQoby53aWR0aCxcIiwgMClcIikpKTpcImNlbnRlclwiPT09YS5sYWJlbHMuYWxpZ24/KHIuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsXCJtaWRkbGVcIil9KSkscy5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZShcIi5jb25jYXQoby53aWR0aC8yKihhLm9wcG9zaXRlPzE6LTEpLFwiLCAwKVwiKSkpOlwicmlnaHRcIj09PWEubGFiZWxzLmFsaWduJiYoci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcImVuZFwiKX0pKSxhLm9wcG9zaXRlJiZzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKFwiLmNvbmNhdChvLndpZHRoLFwiLCAwKVwiKSkpfX0pKX19XSksdH0oKSxaPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuZG9jdW1lbnRFdmVudD14LmJpbmQodGhpcy5kb2N1bWVudEV2ZW50LHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJhZGRFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KT9pLmdsb2JhbHMuZXZlbnRzW3RdLnB1c2goZSk6aS5nbG9iYWxzLmV2ZW50c1t0XT1bZV19fSx7a2V5OlwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKGkuZ2xvYmFscy5ldmVudHMuaGFzT3duUHJvcGVydHkodCkpe3ZhciBhPWkuZ2xvYmFscy5ldmVudHNbdF0uaW5kZXhPZihlKTstMSE9PWEmJmkuZ2xvYmFscy5ldmVudHNbdF0uc3BsaWNlKGEsMSl9fX0se2tleTpcImZpcmVFdmVudFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKGkuZ2xvYmFscy5ldmVudHMuaGFzT3duUHJvcGVydHkodCkpe2UmJmUubGVuZ3RofHwoZT1bXSk7Zm9yKHZhciBhPWkuZ2xvYmFscy5ldmVudHNbdF0scz1hLmxlbmd0aCxyPTA7cjxzO3IrKylhW3JdLmFwcGx5KG51bGwsZSl9fX0se2tleTpcInNldHVwRXZlbnRIYW5kbGVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuY3R4LGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihlLmdsb2JhbHMuY2hhcnRDbGFzcyk7dGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuYWRkRXZlbnRMaXN0ZW5lcih0LChmdW5jdGlvbih0KXt2YXIgYT1PYmplY3QuYXNzaWduKHt9LGUse3Nlcmllc0luZGV4OmUuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4LGRhdGFQb2ludEluZGV4OmUuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4fSk7XCJtb3VzZW1vdmVcIj09PXQudHlwZXx8XCJ0b3VjaG1vdmVcIj09PXQudHlwZT9cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VNb3ZlJiZlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VNb3ZlKHQsaSxhKTpcIm1vdXNlbGVhdmVcIj09PXQudHlwZXx8XCJ0b3VjaGxlYXZlXCI9PT10LnR5cGU/XCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTGVhdmUmJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZUxlYXZlKHQsaSxhKTooXCJtb3VzZXVwXCI9PT10LnR5cGUmJjE9PT10LndoaWNofHxcInRvdWNoZW5kXCI9PT10LnR5cGUpJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLmNsaWNrJiZlLmNvbmZpZy5jaGFydC5ldmVudHMuY2xpY2sodCxpLGEpLGkuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJjbGlja1wiLFt0LGksYV0pKX0pLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pKSx0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24oaSl7ZS5nbG9iYWxzLmRvbS5iYXNlRWwuYWRkRXZlbnRMaXN0ZW5lcihpLHQuZG9jdW1lbnRFdmVudCx7cGFzc2l2ZTohMH0pfSkpLHRoaXMuY3R4LmNvcmUuc2V0dXBCcnVzaEhhbmRsZXIoKX19LHtrZXk6XCJkb2N1bWVudEV2ZW50XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dC50YXJnZXQuY2xhc3NOYW1lO2lmKFwiY2xpY2tcIj09PXQudHlwZSl7dmFyIGE9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLW1lbnVcIik7YSYmYS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKSYmXCJhcGV4Y2hhcnRzLW1lbnUtaWNvblwiIT09aSYmYS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIil9ZS5nbG9iYWxzLmNsaWVudFg9XCJ0b3VjaG1vdmVcIj09PXQudHlwZT90LnRvdWNoZXNbMF0uY2xpZW50WDp0LmNsaWVudFgsZS5nbG9iYWxzLmNsaWVudFk9XCJ0b3VjaG1vdmVcIj09PXQudHlwZT90LnRvdWNoZXNbMF0uY2xpZW50WTp0LmNsaWVudFl9fV0pLHR9KCksJD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5Olwic2V0Q3VycmVudExvY2FsZVZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5jb25maWcuY2hhcnQubG9jYWxlczt3aW5kb3cuQXBleC5jaGFydCYmd2luZG93LkFwZXguY2hhcnQubG9jYWxlcyYmd2luZG93LkFwZXguY2hhcnQubG9jYWxlcy5sZW5ndGg+MCYmKGU9dGhpcy53LmNvbmZpZy5jaGFydC5sb2NhbGVzLmNvbmNhdCh3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzKSk7dmFyIGk9ZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWU9PT10fSkpWzBdO2lmKCFpKXRocm93IG5ldyBFcnJvcihcIldyb25nIGxvY2FsZSBuYW1lIHByb3ZpZGVkLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBzZXQgdGhlIGNvcnJlY3QgbG9jYWxlIG5hbWUgaW4gb3B0aW9uc1wiKTt2YXIgYT14LmV4dGVuZChDLGkpO3RoaXMudy5nbG9iYWxzLmxvY2FsZT1hLm9wdGlvbnN9fV0pLHR9KCksSj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd0F4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLGEscz10aGlzLHI9dGhpcy53Lmdsb2JhbHMsbz10aGlzLncuY29uZmlnLG49bmV3IFYodGhpcy5jdHgsZSksbD1uZXcgcSh0aGlzLmN0eCxlKTtyLmF4aXNDaGFydHMmJlwicmFkYXJcIiE9PXQmJihyLmlzQmFySG9yaXpvbnRhbD8oYT1sLmRyYXdZYXhpc0ludmVyc2VkKDApLGk9bi5kcmF3WGF4aXNJbnZlcnNlZCgwKSxyLmRvbS5lbEdyYXBoaWNhbC5hZGQoaSksci5kb20uZWxHcmFwaGljYWwuYWRkKGEpKTooaT1uLmRyYXdYYXhpcygpLHIuZG9tLmVsR3JhcGhpY2FsLmFkZChpKSxvLnlheGlzLm1hcCgoZnVuY3Rpb24odCxlKXtpZigtMT09PXIuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkmJihhPWwuZHJhd1lheGlzKGUpLHIuZG9tLlBhcGVyLmFkZChhKSxcImJhY2tcIj09PXMudy5jb25maWcuZ3JpZC5wb3NpdGlvbikpe3ZhciBpPXIuZG9tLlBhcGVyLmNoaWxkcmVuKClbMV07aS5yZW1vdmUoKSxyLmRvbS5QYXBlci5hZGQoaSl9fSkpKSl9fV0pLHR9KCksUT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1hDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT1uZXcgdih0aGlzLmN0eCksYT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwuZ3JhZGllbnQscz10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmRyb3BTaGFkb3cscj10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLmZpbGwudHlwZSxvPWEuY29sb3JGcm9tLG49YS5jb2xvclRvLGw9YS5vcGFjaXR5RnJvbSxoPWEub3BhY2l0eVRvLGM9YS5zdG9wcyxkPXMuZW5hYmxlZCxnPXMubGVmdCx1PXMudG9wLHA9cy5ibHVyLGY9cy5jb2xvcixiPXMub3BhY2l0eSx5PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC5jb2xvcjtpZih0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnNob3cpe1wiZ3JhZGllbnRcIj09PXImJih5PWUuZHJhd0dyYWRpZW50KFwidmVydGljYWxcIixvLG4sbCxoLG51bGwsYyxudWxsKSk7dmFyIHc9ZS5kcmF3UmVjdCgpOzE9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiYodz1lLmRyYXdMaW5lKCkpO3ZhciBrPXQuZ2xvYmFscy5ncmlkSGVpZ2h0OygheC5pc051bWJlcihrKXx8azwwKSYmKGs9MCk7dmFyIEE9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aDsoIXguaXNOdW1iZXIoQSl8fEE8MCkmJihBPTApLHcuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIseDowLHk6MCx5MjprLHdpZHRoOkEsaGVpZ2h0OmssZmlsbDp5LGZpbHRlcjpcIm5vbmVcIixcImZpbGwtb3BhY2l0eVwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMub3BhY2l0eSxzdHJva2U6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5zdHJva2UuY29sb3IsXCJzdHJva2Utd2lkdGhcIjp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS53aWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS5kYXNoQXJyYXl9KSxkJiYodz1pLmRyb3BTaGFkb3codyx7bGVmdDpnLHRvcDp1LGJsdXI6cCxjb2xvcjpmLG9wYWNpdHk6Yn0pKSx0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh3KX19fSx7a2V5OlwiZHJhd1lDcm9zc2hhaXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT10LmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLGE9dC5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzO2lmKHQuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMuc2hvdyl7dmFyIHM9ZS5kcmF3TGluZSgtYSwwLHQuZ2xvYmFscy5ncmlkV2lkdGgrYSwwLGkuc3Ryb2tlLmNvbG9yLGkuc3Ryb2tlLmRhc2hBcnJheSxpLnN0cm9rZS53aWR0aCk7cy5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteWNyb3NzaGFpcnNcIn0pLHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHMpfXZhciByPWUuZHJhd0xpbmUoLWEsMCx0Lmdsb2JhbHMuZ3JpZFdpZHRoK2EsMCxpLnN0cm9rZS5jb2xvciwwLDApO3IuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlblwifSksdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQocil9fV0pLHR9KCksSz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiY2hlY2tSZXNwb25zaXZlQ29uZmlnXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPWkuY29uZmlnO2lmKDAhPT1hLnJlc3BvbnNpdmUubGVuZ3RoKXt2YXIgcz1hLnJlc3BvbnNpdmUuc2xpY2UoKTtzLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuYnJlYWtwb2ludD5lLmJyZWFrcG9pbnQ/MTplLmJyZWFrcG9pbnQ+dC5icmVha3BvaW50Py0xOjB9KSkucmV2ZXJzZSgpO3ZhciByPW5ldyBFKHt9KSxvPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LGE9c1swXS5icmVha3BvaW50LG89d2luZG93LmlubmVyV2lkdGg+MD93aW5kb3cuaW5uZXJXaWR0aDpzY3JlZW4ud2lkdGg7aWYobz5hKXt2YXIgbj15LmV4dGVuZEFycmF5UHJvcHMocixpLmdsb2JhbHMuaW5pdGlhbENvbmZpZyxpKTt0PXguZXh0ZW5kKG4sdCksdD14LmV4dGVuZChpLmNvbmZpZyx0KSxlLm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnModCl9ZWxzZSBmb3IodmFyIGw9MDtsPHMubGVuZ3RoO2wrKylvPHNbbF0uYnJlYWtwb2ludCYmKHQ9eS5leHRlbmRBcnJheVByb3BzKHIsc1tsXS5vcHRpb25zLGkpLHQ9eC5leHRlbmQoaS5jb25maWcsdCksZS5vdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zKHQpKX07aWYodCl7dmFyIG49eS5leHRlbmRBcnJheVByb3BzKHIsdCxpKTtuPXguZXh0ZW5kKGkuY29uZmlnLG4pLG8obj14LmV4dGVuZChuLHQpKX1lbHNlIG8oe30pfX19LHtrZXk6XCJvdmVycmlkZVJlc3BvbnNpdmVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEUodCkuaW5pdCh7cmVzcG9uc2l2ZU92ZXJyaWRlOiEwfSk7dGhpcy53LmNvbmZpZz1lfX1dKSx0fSgpLHR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLmNvbG9ycz1bXSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmlzQ29sb3JGbj0hMSx0aGlzLmlzSGVhdG1hcERpc3RyaWJ1dGVkPVwidHJlZW1hcFwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmaS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC5kaXN0cmlidXRlZHx8XCJoZWF0bWFwXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiZpLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmRpc3RyaWJ1dGVkLHRoaXMuaXNCYXJEaXN0cmlidXRlZD1pLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJihcImJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZSl9cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0RGVmYXVsdENvbG9ycygpfX0se2tleTpcInNldERlZmF1bHRDb2xvcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcyxpPXRoaXMudyxhPW5ldyB4O2lmKGkuZ2xvYmFscy5kb20uZWxXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRoZW1lLVwiLmNvbmNhdChpLmNvbmZpZy50aGVtZS5tb2RlKSksdm9pZCAwPT09aS5jb25maWcuY29sb3JzfHwwPT09KG51bGw9PT0odD1pLmNvbmZpZy5jb2xvcnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lmxlbmd0aCk/aS5nbG9iYWxzLmNvbG9ycz10aGlzLnByZWRlZmluZWQoKTooaS5nbG9iYWxzLmNvbG9ycz1pLmNvbmZpZy5jb2xvcnMsQXJyYXkuaXNBcnJheShpLmNvbmZpZy5jb2xvcnMpJiZpLmNvbmZpZy5jb2xvcnMubGVuZ3RoPjAmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29uZmlnLmNvbG9yc1swXSYmKGkuZ2xvYmFscy5jb2xvcnM9aS5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxhKXt2YXIgcz1pLmNvbmZpZy5jb2xvcnNbYV07cmV0dXJuIHN8fChzPWkuY29uZmlnLmNvbG9yc1swXSksXCJmdW5jdGlvblwiPT10eXBlb2Ygcz8oZS5pc0NvbG9yRm49ITAscyh7dmFsdWU6aS5nbG9iYWxzLmF4aXNDaGFydHM/aS5nbG9iYWxzLnNlcmllc1thXVswXT9pLmdsb2JhbHMuc2VyaWVzW2FdWzBdOjA6aS5nbG9iYWxzLnNlcmllc1thXSxzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OmEsdzppfSkpOnN9KSkpKSxpLmdsb2JhbHMuc2VyaWVzQ29sb3JzLm1hcCgoZnVuY3Rpb24odCxlKXt0JiYoaS5nbG9iYWxzLmNvbG9yc1tlXT10KX0pKSxpLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLmVuYWJsZWQpe3ZhciBzPVtdLHI9aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7KHRoaXMuaXNCYXJEaXN0cmlidXRlZHx8dGhpcy5pc0hlYXRtYXBEaXN0cmlidXRlZCkmJihyPWkuZ2xvYmFscy5zZXJpZXNbMF0ubGVuZ3RoKmkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKTtmb3IodmFyIG89aS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5jb2xvcixuPTEvKHIvaS5jb25maWcudGhlbWUubW9ub2Nocm9tZS5zaGFkZUludGVuc2l0eSksbD1pLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLnNoYWRlVG8saD0wLGM9MDtjPHI7YysrKXt2YXIgZD12b2lkIDA7XCJkYXJrXCI9PT1sPyhkPWEuc2hhZGVDb2xvcigtMSpoLG8pLGgrPW4pOihkPWEuc2hhZGVDb2xvcihoLG8pLGgrPW4pLHMucHVzaChkKX1pLmdsb2JhbHMuY29sb3JzPXMuc2xpY2UoKX12YXIgZz1pLmdsb2JhbHMuY29sb3JzLnNsaWNlKCk7dGhpcy5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzLmNvbG9ycyk7W1wiZmlsbFwiLFwic3Ryb2tlXCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZvaWQgMD09PWkuY29uZmlnW3RdLmNvbG9ycz9pLmdsb2JhbHNbdF0uY29sb3JzPWUuaXNDb2xvckZuP2kuY29uZmlnLmNvbG9yczpnOmkuZ2xvYmFsc1t0XS5jb2xvcnM9aS5jb25maWdbdF0uY29sb3JzLnNsaWNlKCksZS5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzW3RdLmNvbG9ycyl9KSksdm9pZCAwPT09aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM/aS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzPWc6aS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzPWkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzLnNsaWNlKCksdGhpcy5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzLDUwKSx2b2lkIDA9PT1pLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5wb2x5Z29ucy5maWxsLmNvbG9ycz9pLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycz1bXCJkYXJrXCI9PT1pLmNvbmZpZy50aGVtZS5tb2RlP1wiIzQyNDI0MlwiOlwibm9uZVwiXTppLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9ycz1pLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5wb2x5Z29ucy5maWxsLmNvbG9ycy5zbGljZSgpLHRoaXMucHVzaEV4dHJhQ29sb3JzKGkuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzLDIwKSx2b2lkIDA9PT1pLmNvbmZpZy5tYXJrZXJzLmNvbG9ycz9pLmdsb2JhbHMubWFya2Vycy5jb2xvcnM9ZzppLmdsb2JhbHMubWFya2Vycy5jb2xvcnM9aS5jb25maWcubWFya2Vycy5jb2xvcnMuc2xpY2UoKSx0aGlzLnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHMubWFya2Vycy5jb2xvcnMpfX0se2tleTpcInB1c2hFeHRyYUNvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsYT10aGlzLncscz1lfHxhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtpZihudWxsPT09aSYmKGk9dGhpcy5pc0JhckRpc3RyaWJ1dGVkfHx0aGlzLmlzSGVhdG1hcERpc3RyaWJ1dGVkfHxcImhlYXRtYXBcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUmJmEuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5pbnZlcnNlKSxpJiZhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKHM9YS5nbG9iYWxzLnNlcmllc1thLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoKmEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKSx0Lmxlbmd0aDxzKWZvcih2YXIgcj1zLXQubGVuZ3RoLG89MDtvPHI7bysrKXQucHVzaCh0W29dKX19LHtrZXk6XCJ1cGRhdGVUaGVtZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt0LmNoYXJ0PXQuY2hhcnR8fHt9LHQudG9vbHRpcD10LnRvb2x0aXB8fHt9O3ZhciBlPXQudGhlbWUubW9kZXx8XCJsaWdodFwiLGk9dC50aGVtZS5wYWxldHRlP3QudGhlbWUucGFsZXR0ZTpcImRhcmtcIj09PWU/XCJwYWxldHRlNFwiOlwicGFsZXR0ZTFcIixhPXQuY2hhcnQuZm9yZUNvbG9yP3QuY2hhcnQuZm9yZUNvbG9yOlwiZGFya1wiPT09ZT9cIiNmNmY3ZjhcIjpcIiMzNzNkM2ZcIjtyZXR1cm4gdC50b29sdGlwLnRoZW1lPWUsdC5jaGFydC5mb3JlQ29sb3I9YSx0LnRoZW1lLnBhbGV0dGU9aSx0fX0se2tleTpcInByZWRlZmluZWRcIix2YWx1ZTpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLncuY29uZmlnLnRoZW1lLnBhbGV0dGUpe2Nhc2VcInBhbGV0dGUxXCI6ZGVmYXVsdDp0aGlzLmNvbG9ycz1bXCIjMDA4RkZCXCIsXCIjMDBFMzk2XCIsXCIjRkVCMDE5XCIsXCIjRkY0NTYwXCIsXCIjNzc1REQwXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGUyXCI6dGhpcy5jb2xvcnM9W1wiIzNmNTFiNVwiLFwiIzAzYTlmNFwiLFwiIzRjYWY1MFwiLFwiI2Y5Y2UxZFwiLFwiI0ZGOTgwMFwiXTticmVhaztjYXNlXCJwYWxldHRlM1wiOnRoaXMuY29sb3JzPVtcIiMzM2IyZGZcIixcIiM1NDZFN0FcIixcIiNkNDUyNmVcIixcIiMxM2Q4YWFcIixcIiNBNTk3OEJcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTRcIjp0aGlzLmNvbG9ycz1bXCIjNGVjZGM0XCIsXCIjYzdmNDY0XCIsXCIjODFENEZBXCIsXCIjZmQ2YTZhXCIsXCIjNTQ2RTdBXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU1XCI6dGhpcy5jb2xvcnM9W1wiIzJiOTA4ZlwiLFwiI2Y5YTNhNFwiLFwiIzkwZWU3ZVwiLFwiI2ZhNDQ0M1wiLFwiIzY5ZDJlN1wiXTticmVhaztjYXNlXCJwYWxldHRlNlwiOnRoaXMuY29sb3JzPVtcIiM0NDlERDFcIixcIiNGODY2MjRcIixcIiNFQTM1NDZcIixcIiM2NjJFOUJcIixcIiNDNUQ4NkRcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTdcIjp0aGlzLmNvbG9ycz1bXCIjRDcyNjNEXCIsXCIjMUI5OThCXCIsXCIjMkUyOTRFXCIsXCIjRjQ2MDM2XCIsXCIjRTJDMDQ0XCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU4XCI6dGhpcy5jb2xvcnM9W1wiIzY2MkU5QlwiLFwiI0Y4NjYyNFwiLFwiI0Y5QzgwRVwiLFwiI0VBMzU0NlwiLFwiIzQzQkNDRFwiXTticmVhaztjYXNlXCJwYWxldHRlOVwiOnRoaXMuY29sb3JzPVtcIiM1QzQ3NDJcIixcIiNBNTk3OEJcIixcIiM4RDVCNENcIixcIiM1QTJBMjdcIixcIiNDNEJCQUZcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTEwXCI6dGhpcy5jb2xvcnM9W1wiI0EzMDBENlwiLFwiIzdEMDJFQlwiLFwiIzU2NTNGRVwiLFwiIzI5ODNGRlwiLFwiIzAwQjFGMlwiXX1yZXR1cm4gdGhpcy5jb2xvcnN9fV0pLHR9KCksZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZHJhd1RpdGxlU3VidGl0bGUoXCJ0aXRsZVwiKSx0aGlzLmRyYXdUaXRsZVN1YnRpdGxlKFwic3VidGl0bGVcIil9fSx7a2V5OlwiZHJhd1RpdGxlU3VidGl0bGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1cInRpdGxlXCI9PT10P2UuY29uZmlnLnRpdGxlOmUuY29uZmlnLnN1YnRpdGxlLGE9ZS5nbG9iYWxzLnN2Z1dpZHRoLzIscz1pLm9mZnNldFkscj1cIm1pZGRsZVwiO2lmKFwibGVmdFwiPT09aS5hbGlnbj8oYT0xMCxyPVwic3RhcnRcIik6XCJyaWdodFwiPT09aS5hbGlnbiYmKGE9ZS5nbG9iYWxzLnN2Z1dpZHRoLTEwLHI9XCJlbmRcIiksYSs9aS5vZmZzZXRYLHM9cytwYXJzZUludChpLnN0eWxlLmZvbnRTaXplLDEwKStpLm1hcmdpbi8yLHZvaWQgMCE9PWkudGV4dCl7dmFyIG89bmV3IG0odGhpcy5jdHgpLmRyYXdUZXh0KHt4OmEseTpzLHRleHQ6aS50ZXh0LHRleHRBbmNob3I6cixmb250U2l6ZTppLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6aS5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6aS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjppLnN0eWxlLmNvbG9yLG9wYWNpdHk6MX0pO28ubm9kZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLFwiYXBleGNoYXJ0cy1cIi5jb25jYXQodCxcIi10ZXh0XCIpKSxlLmdsb2JhbHMuZG9tLlBhcGVyLmFkZChvKX19fV0pLHR9KCksaXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuZEN0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXRUaXRsZVN1YnRpdGxlQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9MCxhPTAscz1cInRpdGxlXCI9PT10P2UuY29uZmlnLnRpdGxlLmZsb2F0aW5nOmUuY29uZmlnLnN1YnRpdGxlLmZsb2F0aW5nLHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LFwiLXRleHRcIikpO2lmKG51bGwhPT1yJiYhcyl7dmFyIG89ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpPW8ud2lkdGgsYT1lLmdsb2JhbHMuYXhpc0NoYXJ0cz9vLmhlaWdodCs1Om8uaGVpZ2h0fXJldHVybnt3aWR0aDppLGhlaWdodDphfX19LHtrZXk6XCJnZXRMZWdlbmRzUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXA7dC5jb25maWcubGVnZW5kLmhlaWdodHx8XCJ0b3BcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJib3R0b21cIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8KGUuc3R5bGUubWF4SGVpZ2h0PXQuZ2xvYmFscy5zdmdIZWlnaHQvMitcInB4XCIpO3ZhciBpPU9iamVjdC5hc3NpZ24oe30seC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoZSkpO3JldHVybiBudWxsIT09ZSYmIXQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZyYmdC5jb25maWcubGVnZW5kLnNob3c/dGhpcy5kQ3R4LmxnUmVjdD17eDppLngseTppLnksaGVpZ2h0OmkuaGVpZ2h0LHdpZHRoOjA9PT1pLmhlaWdodD8wOmkud2lkdGh9OnRoaXMuZEN0eC5sZ1JlY3Q9e3g6MCx5OjAsaGVpZ2h0OjAsd2lkdGg6MH0sXCJsZWZ0XCIhPT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJlwicmlnaHRcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8MS41KnRoaXMuZEN0eC5sZ1JlY3Qud2lkdGg+dC5nbG9iYWxzLnN2Z1dpZHRoJiYodGhpcy5kQ3R4LmxnUmVjdC53aWR0aD10Lmdsb2JhbHMuc3ZnV2lkdGgvMS41KSx0aGlzLmRDdHgubGdSZWN0fX0se2tleTpcImdldExhcmdlc3RTdHJpbmdGcm9tTXVsdGlBcnJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQ7aWYodGhpcy53Lmdsb2JhbHMuaXNNdWx0aUxpbmVYKXt2YXIgYT1lLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Lmxlbmd0aDoxfSkpLHM9TWF0aC5tYXguYXBwbHkoTWF0aCx1KGEpKTtpPWVbYS5pbmRleE9mKHMpXX1yZXR1cm4gaX19XSksdH0oKSxhdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldHhBeGlzTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudyxpPWUuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKTtpZihlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJjA9PT1pLmxlbmd0aCYmKGk9ZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzKSxlLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wKXt2YXIgYT10aGlzLmdldHhBeGlzVGltZVNjYWxlTGFiZWxzQ29vcmRzKCk7dD17d2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHR9LGUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSExfWVsc2V7dGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcz1cImxlZnRcIiE9PWUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJyaWdodFwiIT09ZS5jb25maWcubGVnZW5kLnBvc2l0aW9ufHxlLmNvbmZpZy5sZWdlbmQuZmxvYXRpbmc/MDp0aGlzLmRDdHgubGdSZWN0LndpZHRoO3ZhciBzPWUuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIscj14LmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKGkpLG89dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihyLGkpO2UuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihvPXI9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCkpO3ZhciBuPW5ldyBNKHRoaXMuZEN0eC5jdHgpLGw9cjtyPW4ueExhYmVsRm9ybWF0KHMscixsLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuZEN0eC5jdHgpLmZvcm1hdERhdGUsdzplfSksbz1uLnhMYWJlbEZvcm1hdChzLG8sbCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmRDdHguY3R4KS5mb3JtYXREYXRlLHc6ZX0pLChlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJnZvaWQgMD09PXJ8fFwiXCI9PT1TdHJpbmcocikudHJpbSgpKSYmKG89cj1cIjFcIik7dmFyIGg9bmV3IG0odGhpcy5kQ3R4LmN0eCksYz1oLmdldFRleHRSZWN0cyhyLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSksZD1jO2lmKHIhPT1vJiYoZD1oLmdldFRleHRSZWN0cyhvLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSkpLCh0PXt3aWR0aDpjLndpZHRoPj1kLndpZHRoP2Mud2lkdGg6ZC53aWR0aCxoZWlnaHQ6Yy5oZWlnaHQ+PWQuaGVpZ2h0P2MuaGVpZ2h0OmQuaGVpZ2h0fSkud2lkdGgqaS5sZW5ndGg+ZS5nbG9iYWxzLnN2Z1dpZHRoLXRoaXMuZEN0eC5sZ1dpZHRoRm9yU2lkZUxlZ2VuZHMtdGhpcy5kQ3R4LnlBeGlzV2lkdGgtdGhpcy5kQ3R4LmdyaWRQYWQubGVmdC10aGlzLmRDdHguZ3JpZFBhZC5yaWdodCYmMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGV8fGUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGVBbHdheXMpe2lmKCFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXtlLmdsb2JhbHMucm90YXRlWExhYmVscz0hMDt2YXIgZz1mdW5jdGlvbih0KXtyZXR1cm4gaC5nZXRUZXh0UmVjdHModCxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksXCJyb3RhdGUoXCIuY29uY2F0KGUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUsXCIgMCAwKVwiKSwhMSl9O2M9ZyhyKSxyIT09byYmKGQ9ZyhvKSksdC5oZWlnaHQ9KGMuaGVpZ2h0PmQuaGVpZ2h0P2MuaGVpZ2h0OmQuaGVpZ2h0KS8xLjUsdC53aWR0aD1jLndpZHRoPmQud2lkdGg/Yy53aWR0aDpkLndpZHRofX1lbHNlIGUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSExfXJldHVybiBlLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvd3x8KHQ9e3dpZHRoOjAsaGVpZ2h0OjB9KSx7d2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9fX0se2tleTpcImdldHhBeGlzR3JvdXBMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy53O2lmKCFlLmdsb2JhbHMuaGFzWGF4aXNHcm91cHMpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O3ZhciBpLGE9KG51bGw9PT0odD1lLmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZm9udFNpemUpfHxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUscz1lLmdsb2JhbHMuZ3JvdXBzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudGl0bGV9KSkscj14LmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKHMpLG89dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihyLHMpLG49bmV3IG0odGhpcy5kQ3R4LmN0eCksbD1uLmdldFRleHRSZWN0cyhyLGEpLGg9bDtyZXR1cm4gciE9PW8mJihoPW4uZ2V0VGV4dFJlY3RzKG8sYSkpLGk9e3dpZHRoOmwud2lkdGg+PWgud2lkdGg/bC53aWR0aDpoLndpZHRoLGhlaWdodDpsLmhlaWdodD49aC5oZWlnaHQ/bC5oZWlnaHQ6aC5oZWlnaHR9LGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93fHwoaT17d2lkdGg6MCxoZWlnaHQ6MH0pLHt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH19fSx7a2V5OlwiZ2V0eEF4aXNUaXRsZUNvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9MCxpPTA7aWYodm9pZCAwIT09dC5jb25maWcueGF4aXMudGl0bGUudGV4dCl7dmFyIGE9bmV3IG0odGhpcy5kQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKHQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQsdC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpO2U9YS53aWR0aCxpPWEuaGVpZ2h0fXJldHVybnt3aWR0aDplLGhlaWdodDppfX19LHtrZXk6XCJnZXR4QXhpc1RpbWVTY2FsZUxhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnc7dGhpcy5kQ3R4LnRpbWVzY2FsZUxhYmVscz1lLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLnNsaWNlKCk7dmFyIGk9dGhpcy5kQ3R4LnRpbWVzY2FsZUxhYmVscy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpLGE9aS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PXQ/KGNvbnNvbGUuZXJyb3IoXCJZb3UgaGF2ZSBwb3NzaWJseSBzdXBwbGllZCBpbnZhbGlkIERhdGUgZm9ybWF0LiBQbGVhc2Ugc3VwcGx5IGEgdmFsaWQgSmF2YVNjcmlwdCBEYXRlXCIpLDApOnQubGVuZ3RoPmUubGVuZ3RoP3Q6ZX0pLDApO3JldHVybiAxLjA1Kih0PW5ldyBtKHRoaXMuZEN0eC5jdHgpLmdldFRleHRSZWN0cyhhLGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSkpLndpZHRoKmkubGVuZ3RoPmUuZ2xvYmFscy5ncmlkV2lkdGgmJjAhPT1lLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlJiYoZS5nbG9iYWxzLm92ZXJsYXBwaW5nWExhYmVscz0hMCksdH19LHtrZXk6XCJhZGRpdGlvbmFsUGFkZGluZ1hMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9aS5nbG9iYWxzLHM9aS5jb25maWcscj1zLnhheGlzLnR5cGUsbz10LndpZHRoO2Euc2tpcExhc3RUaW1lbGluZWxhYmVsPSExLGEuc2tpcEZpcnN0VGltZWxpbmVsYWJlbD0hMTt2YXIgbj1pLmNvbmZpZy55YXhpc1swXS5vcHBvc2l0ZSYmaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCxsPWZ1bmN0aW9uKHQsbil7cy55YXhpcy5sZW5ndGg+MSYmZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1hLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih0KX0obil8fGZ1bmN0aW9uKHQpe2lmKGUuZEN0eC50aW1lc2NhbGVMYWJlbHMmJmUuZEN0eC50aW1lc2NhbGVMYWJlbHMubGVuZ3RoKXt2YXIgbj1lLmRDdHgudGltZXNjYWxlTGFiZWxzWzBdLGw9ZS5kQ3R4LnRpbWVzY2FsZUxhYmVsc1tlLmRDdHgudGltZXNjYWxlTGFiZWxzLmxlbmd0aC0xXS5wb3NpdGlvbitvLzEuNzUtZS5kQ3R4LnlBeGlzV2lkdGhSaWdodCxoPW4ucG9zaXRpb24tby8xLjc1K2UuZEN0eC55QXhpc1dpZHRoTGVmdCxjPVwicmlnaHRcIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmZS5kQ3R4LmxnUmVjdC53aWR0aD4wP2UuZEN0eC5sZ1JlY3Qud2lkdGg6MDtsPmEuc3ZnV2lkdGgtYS50cmFuc2xhdGVYLWMmJihhLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMCksaDwtKHQuc2hvdyYmIXQuZmxvYXRpbmd8fFwiYmFyXCIhPT1zLmNoYXJ0LnR5cGUmJlwiY2FuZGxlc3RpY2tcIiE9PXMuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09cy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXMuY2hhcnQudHlwZT8xMDpvLzEuNzUpJiYoYS5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSEwKX1lbHNlXCJkYXRldGltZVwiPT09cj9lLmRDdHguZ3JpZFBhZC5yaWdodDxvJiYhYS5yb3RhdGVYTGFiZWxzJiYoYS5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITApOlwiZGF0ZXRpbWVcIiE9PXImJmUuZEN0eC5ncmlkUGFkLnJpZ2h0PG8vMi1lLmRDdHgueUF4aXNXaWR0aFJpZ2h0JiYhYS5yb3RhdGVYTGFiZWxzJiYhaS5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJihcImJldHdlZW5cIiE9PWkuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnR8fGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpJiYoZS5kQ3R4LnhQYWRSaWdodD1vLzIrMSl9KHQpfTtzLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7bj8oZS5kQ3R4LmdyaWRQYWQubGVmdDxvJiYoZS5kQ3R4LnhQYWRMZWZ0PW8vMisxKSxlLmRDdHgueFBhZFJpZ2h0PW8vMisxKTpsKHQsaSl9KSl9fV0pLHR9KCksc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuZEN0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXR5QXhpc0xhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPVtdLGE9MTAscz1uZXcgQih0aGlzLmRDdHguY3R4KTtyZXR1cm4gZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihyLG8pe3ZhciBuPXtzZXJpZXNJbmRleDpvLGRhdGFQb2ludEluZGV4Oi0xLHc6ZX0sbD1lLmdsb2JhbHMueUF4aXNTY2FsZVtvXSxoPTA7aWYoIXMuaXNZQXhpc0hpZGRlbihvKSYmci5sYWJlbHMuc2hvdyYmdm9pZCAwIT09ci5sYWJlbHMubWluV2lkdGgmJihoPXIubGFiZWxzLm1pbldpZHRoKSwhcy5pc1lBeGlzSGlkZGVuKG8pJiZyLmxhYmVscy5zaG93JiZsLnJlc3VsdC5sZW5ndGgpe3ZhciBjPWUuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW29dLGQ9bC5uaWNlTWluPT09TnVtYmVyLk1JTl9WQUxVRT8wOmwubmljZU1pbixnPWwucmVzdWx0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgaSxhO3JldHVybihudWxsPT09KGk9U3RyaW5nKGModCxuKSkpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLmxlbmd0aCk+KG51bGw9PT0oYT1TdHJpbmcoYyhlLG4pKSl8fHZvaWQgMD09PWE/dm9pZCAwOmEubGVuZ3RoKT90OmV9KSxkKSx1PWc9YyhnLG4pO2lmKHZvaWQgMCE9PWcmJjAhPT1nLmxlbmd0aHx8KGc9bC5uaWNlTWF4KSxlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXthPTA7dmFyIHA9ZS5nbG9iYWxzLmxhYmVscy5zbGljZSgpO2c9eC5nZXRMYXJnZXN0U3RyaW5nRnJvbUFycihwKSxnPWMoZyx7c2VyaWVzSW5kZXg6byxkYXRhUG9pbnRJbmRleDotMSx3OmV9KSx1PXQuZEN0eC5kaW1IZWxwZXJzLmdldExhcmdlc3RTdHJpbmdGcm9tTXVsdGlBcnIoZyxwKX12YXIgZj1uZXcgbSh0LmRDdHguY3R4KSxiPVwicm90YXRlKFwiLmNvbmNhdChyLmxhYmVscy5yb3RhdGUsXCIgMCAwKVwiKSx2PWYuZ2V0VGV4dFJlY3RzKGcsci5sYWJlbHMuc3R5bGUuZm9udFNpemUsci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxiLCExKSx5PXY7ZyE9PXUmJih5PWYuZ2V0VGV4dFJlY3RzKHUsci5sYWJlbHMuc3R5bGUuZm9udFNpemUsci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxiLCExKSksaS5wdXNoKHt3aWR0aDooaD55LndpZHRofHxoPnYud2lkdGg/aDp5LndpZHRoPnYud2lkdGg/eS53aWR0aDp2LndpZHRoKSthLGhlaWdodDp5LmhlaWdodD52LmhlaWdodD95LmhlaWdodDp2LmhlaWdodH0pfWVsc2UgaS5wdXNoKHt3aWR0aDowLGhlaWdodDowfSl9KSksaX19LHtrZXk6XCJnZXR5QXhpc1RpdGxlQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9W107cmV0dXJuIGUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24oZSxhKXtpZihlLnNob3cmJnZvaWQgMCE9PWUudGl0bGUudGV4dCl7dmFyIHM9bmV3IG0odC5kQ3R4LmN0eCkscj1cInJvdGF0ZShcIi5jb25jYXQoZS50aXRsZS5yb3RhdGUsXCIgMCAwKVwiKSxvPXMuZ2V0VGV4dFJlY3RzKGUudGl0bGUudGV4dCxlLnRpdGxlLnN0eWxlLmZvbnRTaXplLGUudGl0bGUuc3R5bGUuZm9udEZhbWlseSxyLCExKTtpLnB1c2goe3dpZHRoOm8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0fSl9ZWxzZSBpLnB1c2goe3dpZHRoOjAsaGVpZ2h0OjB9KX0pKSxpfX0se2tleTpcImdldFRvdGFsWUF4aXNXaWR0aFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9MCxpPTAsYT0wLHM9dC5nbG9iYWxzLnlBeGlzU2NhbGUubGVuZ3RoPjE/MTA6MCxyPW5ldyBCKHRoaXMuZEN0eC5jdHgpLG89ZnVuY3Rpb24obyxuKXt2YXIgbD10LmNvbmZpZy55YXhpc1tuXS5mbG9hdGluZyxoPTA7by53aWR0aD4wJiYhbD8oaD1vLndpZHRoK3MsZnVuY3Rpb24oZSl7cmV0dXJuIHQuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihlKT4tMX0obikmJihoPWgtby53aWR0aC1zKSk6aD1sfHxyLmlzWUF4aXNIaWRkZW4obik/MDo1LHQuY29uZmlnLnlheGlzW25dLm9wcG9zaXRlP2ErPWg6aSs9aCxlKz1ofTtyZXR1cm4gdC5nbG9iYWxzLnlMYWJlbHNDb29yZHMubWFwKChmdW5jdGlvbih0LGUpe28odCxlKX0pKSx0Lmdsb2JhbHMueVRpdGxlQ29vcmRzLm1hcCgoZnVuY3Rpb24odCxlKXtvKHQsZSl9KSksdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmIXQuY29uZmlnLnlheGlzWzBdLmZsb2F0aW5nJiYoZT10Lmdsb2JhbHMueUxhYmVsc0Nvb3Jkc1swXS53aWR0aCt0Lmdsb2JhbHMueVRpdGxlQ29vcmRzWzBdLndpZHRoKzE1KSx0aGlzLmRDdHgueUF4aXNXaWR0aExlZnQ9aSx0aGlzLmRDdHgueUF4aXNXaWR0aFJpZ2h0PWEsZX19XSksdH0oKSxydD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdyaWRQYWRGb3JDb2x1bW5zSW5OdW1lcmljQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZihlLmdsb2JhbHMubm9EYXRhfHxlLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkKXJldHVybiAwO3ZhciBpPWZ1bmN0aW9uKHQpe3JldHVyblwiYmFyXCI9PT10fHxcInJhbmdlQmFyXCI9PT10fHxcImNhbmRsZXN0aWNrXCI9PT10fHxcImJveFBsb3RcIj09PXR9LGE9ZS5jb25maWcuY2hhcnQudHlwZSxzPTAscj1pKGEpP2UuY29uZmlnLnNlcmllcy5sZW5ndGg6MTtpZihlLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wJiYocj1lLmdsb2JhbHMuY29tYm9CYXJDb3VudCksZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5mb3JFYWNoKChmdW5jdGlvbih0KXtpKHQudHlwZSkmJihyLT0xKX0pKSxlLmNvbmZpZy5jaGFydC5zdGFja2VkJiYocj0xKSwoaShhKXx8ZS5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MCkmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiYhZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmcj4wKXt2YXIgbyxuLGw9TWF0aC5hYnMoZS5nbG9iYWxzLmluaXRpYWxNYXhYLWUuZ2xvYmFscy5pbml0aWFsTWluWCk7bDw9MyYmKGw9ZS5nbG9iYWxzLmRhdGFQb2ludHMpLG89bC90LGUuZ2xvYmFscy5taW5YRGlmZiYmZS5nbG9iYWxzLm1pblhEaWZmL28+MCYmKG49ZS5nbG9iYWxzLm1pblhEaWZmL28pLG4+dC8yJiYobi89MiksKHM9bi9yKnBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkvMTAwKTwxJiYocz0xKSxzPXMvKHI+MT8xOjEuNSkrNSxlLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM9c31yZXR1cm4gc319LHtrZXk6XCJncmlkUGFkRm9ydGl0bGVTdWJ0aXRsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWUuZ2xvYmFscyxhPXRoaXMuZEN0eC5pc1NwYXJrbGluZXx8IWUuZ2xvYmFscy5heGlzQ2hhcnRzPzA6MTA7W1widGl0bGVcIixcInN1YnRpdGxlXCJdLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZvaWQgMCE9PWUuY29uZmlnW2ldLnRleHQ/YSs9ZS5jb25maWdbaV0ubWFyZ2luOmErPXQuZEN0eC5pc1NwYXJrbGluZXx8IWUuZ2xvYmFscy5heGlzQ2hhcnRzPzA6NX0pKSwhZS5jb25maWcubGVnZW5kLnNob3d8fFwiYm90dG9tXCIhPT1lLmNvbmZpZy5sZWdlbmQucG9zaXRpb258fGUuY29uZmlnLmxlZ2VuZC5mbG9hdGluZ3x8ZS5nbG9iYWxzLmF4aXNDaGFydHN8fChhKz0xMCk7dmFyIHM9dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLHI9dGhpcy5kQ3R4LmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpO2kuZ3JpZEhlaWdodD1pLmdyaWRIZWlnaHQtcy5oZWlnaHQtci5oZWlnaHQtYSxpLnRyYW5zbGF0ZVk9aS50cmFuc2xhdGVZK3MuaGVpZ2h0K3IuaGVpZ2h0K2F9fSx7a2V5Olwic2V0R3JpZFhQb3NGb3JEdWFsWUF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyBCKHRoaXMuZEN0eC5jdHgpO2kuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24ocyxyKXstMSE9PWkuZ2xvYmFscy5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihyKXx8cy5mbG9hdGluZ3x8YS5pc1lBeGlzSGlkZGVuKHIpfHwocy5vcHBvc2l0ZSYmKGkuZ2xvYmFscy50cmFuc2xhdGVYPWkuZ2xvYmFscy50cmFuc2xhdGVYLShlW3JdLndpZHRoK3Rbcl0ud2lkdGgpLXBhcnNlSW50KGkuY29uZmlnLnlheGlzW3JdLmxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvMS4yLTEyKSxpLmdsb2JhbHMudHJhbnNsYXRlWDwyJiYoaS5nbG9iYWxzLnRyYW5zbGF0ZVg9MikpfSkpfX1dKSx0fSgpLG90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMubGdSZWN0PXt9LHRoaXMueUF4aXNXaWR0aD0wLHRoaXMueUF4aXNXaWR0aExlZnQ9MCx0aGlzLnlBeGlzV2lkdGhSaWdodD0wLHRoaXMueEF4aXNIZWlnaHQ9MCx0aGlzLmlzU3BhcmtsaW5lPXRoaXMudy5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQsdGhpcy5kaW1IZWxwZXJzPW5ldyBpdCh0aGlzKSx0aGlzLmRpbVlBeGlzPW5ldyBzdCh0aGlzKSx0aGlzLmRpbVhBeGlzPW5ldyBhdCh0aGlzKSx0aGlzLmRpbUdyaWQ9bmV3IHJ0KHRoaXMpLHRoaXMubGdXaWR0aEZvclNpZGVMZWdlbmRzPTAsdGhpcy5ncmlkUGFkPXRoaXMudy5jb25maWcuZ3JpZC5wYWRkaW5nLHRoaXMueFBhZFJpZ2h0PTAsdGhpcy54UGFkTGVmdD0wfXJldHVybiByKHQsW3trZXk6XCJwbG90Q29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzO3RoaXMubGdSZWN0PXRoaXMuZGltSGVscGVycy5nZXRMZWdlbmRzUmVjdCgpLHRoaXMuaXNTcGFya2xpbmUmJigoZS5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5sZW5ndGg+MHx8ZS5jb25maWcubWFya2Vycy5zaXplPjApJiZPYmplY3QuZW50cmllcyh0aGlzLmdyaWRQYWQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBpPWcoZSwyKSxhPWlbMF0scz1pWzFdO3QuZ3JpZFBhZFthXT1NYXRoLm1heChzLHQudy5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUvMS41KX0pKSx0aGlzLmdyaWRQYWQudG9wPU1hdGgubWF4KGUuY29uZmlnLnN0cm9rZS53aWR0aC8yLHRoaXMuZ3JpZFBhZC50b3ApLHRoaXMuZ3JpZFBhZC5ib3R0b209TWF0aC5tYXgoZS5jb25maWcuc3Ryb2tlLndpZHRoLzIsdGhpcy5ncmlkUGFkLmJvdHRvbSkpLGkuYXhpc0NoYXJ0cz90aGlzLnNldERpbWVuc2lvbnNGb3JBeGlzQ2hhcnRzKCk6dGhpcy5zZXREaW1lbnNpb25zRm9yTm9uQXhpc0NoYXJ0cygpLHRoaXMuZGltR3JpZC5ncmlkUGFkRm9ydGl0bGVTdWJ0aXRsZSgpLGkuZ3JpZEhlaWdodD1pLmdyaWRIZWlnaHQtdGhpcy5ncmlkUGFkLnRvcC10aGlzLmdyaWRQYWQuYm90dG9tLGkuZ3JpZFdpZHRoPWkuZ3JpZFdpZHRoLXRoaXMuZ3JpZFBhZC5sZWZ0LXRoaXMuZ3JpZFBhZC5yaWdodC10aGlzLnhQYWRSaWdodC10aGlzLnhQYWRMZWZ0O3ZhciBhPXRoaXMuZGltR3JpZC5ncmlkUGFkRm9yQ29sdW1uc0luTnVtZXJpY0F4aXMoaS5ncmlkV2lkdGgpO2kuZ3JpZFdpZHRoPWkuZ3JpZFdpZHRoLTIqYSxpLnRyYW5zbGF0ZVg9aS50cmFuc2xhdGVYK3RoaXMuZ3JpZFBhZC5sZWZ0K3RoaXMueFBhZExlZnQrKGE+MD9hKzQ6MCksaS50cmFuc2xhdGVZPWkudHJhbnNsYXRlWSt0aGlzLmdyaWRQYWQudG9wfX0se2tleTpcInNldERpbWVuc2lvbnNGb3JBeGlzQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzLGE9dGhpcy5kaW1ZQXhpcy5nZXR5QXhpc0xhYmVsc0Nvb3JkcygpLHM9dGhpcy5kaW1ZQXhpcy5nZXR5QXhpc1RpdGxlQ29vcmRzKCk7ZS5nbG9iYWxzLnlMYWJlbHNDb29yZHM9W10sZS5nbG9iYWxzLnlUaXRsZUNvb3Jkcz1bXSxlLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsaSl7ZS5nbG9iYWxzLnlMYWJlbHNDb29yZHMucHVzaCh7d2lkdGg6YVtpXS53aWR0aCxpbmRleDppfSksZS5nbG9iYWxzLnlUaXRsZUNvb3Jkcy5wdXNoKHt3aWR0aDpzW2ldLndpZHRoLGluZGV4Oml9KX0pKSx0aGlzLnlBeGlzV2lkdGg9dGhpcy5kaW1ZQXhpcy5nZXRUb3RhbFlBeGlzV2lkdGgoKTt2YXIgcj10aGlzLmRpbVhBeGlzLmdldHhBeGlzTGFiZWxzQ29vcmRzKCksbz10aGlzLmRpbVhBeGlzLmdldHhBeGlzR3JvdXBMYWJlbHNDb29yZHMoKSxuPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNUaXRsZUNvb3JkcygpO3RoaXMuY29uZGl0aW9uYWxDaGVja3NGb3JBeGlzQ29vcmRzKHIsbixvKSxpLnRyYW5zbGF0ZVhBeGlzWT1lLmdsb2JhbHMucm90YXRlWExhYmVscz90aGlzLnhBeGlzSGVpZ2h0Lzg6LTQsaS50cmFuc2xhdGVYQXhpc1g9ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJmUuZ2xvYmFscy5pc1hOdW1lcmljJiZlLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlPD0tNDU/LXRoaXMueEF4aXNXaWR0aC80OjAsZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGkucm90YXRlWExhYmVscz0hMSxpLnRyYW5zbGF0ZVhBeGlzWT1wYXJzZUludChlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLzEuNSotMSksaS50cmFuc2xhdGVYQXhpc1k9aS50cmFuc2xhdGVYQXhpc1krZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFksaS50cmFuc2xhdGVYQXhpc1g9aS50cmFuc2xhdGVYQXhpc1grZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFg7dmFyIGw9dGhpcy55QXhpc1dpZHRoLGg9dGhpcy54QXhpc0hlaWdodDtpLnhBeGlzTGFiZWxzSGVpZ2h0PXRoaXMueEF4aXNIZWlnaHQtbi5oZWlnaHQsaS54QXhpc0dyb3VwTGFiZWxzSGVpZ2h0PWkueEF4aXNMYWJlbHNIZWlnaHQtci5oZWlnaHQsaS54QXhpc0xhYmVsc1dpZHRoPXRoaXMueEF4aXNXaWR0aCxpLnhBeGlzSGVpZ2h0PXRoaXMueEF4aXNIZWlnaHQ7dmFyIGM9MTA7KFwicmFkYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMuaXNTcGFya2xpbmUpJiYobD0wLGg9aS5nb2xkZW5QYWRkaW5nKSx0aGlzLmlzU3BhcmtsaW5lJiYodGhpcy5sZ1JlY3Q9e2hlaWdodDowLHdpZHRoOjB9KSwodGhpcy5pc1NwYXJrbGluZXx8XCJ0cmVlbWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKSYmKGw9MCxoPTAsYz0wKSx0aGlzLmlzU3BhcmtsaW5lfHx0aGlzLmRpbVhBeGlzLmFkZGl0aW9uYWxQYWRkaW5nWExhYmVscyhyKTt2YXIgZD1mdW5jdGlvbigpe2kudHJhbnNsYXRlWD1sLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC10LmxnUmVjdC5oZWlnaHQtaC0odC5pc1NwYXJrbGluZXx8XCJ0cmVlbWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlPzA6ZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MTA6MTUpLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtbH07c3dpdGNoKFwidG9wXCI9PT1lLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKGM9aS54QXhpc0hlaWdodC1lLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LTUpLGUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbil7Y2FzZVwiYm90dG9tXCI6aS50cmFuc2xhdGVZPWMsZCgpO2JyZWFrO2Nhc2VcInRvcFwiOmkudHJhbnNsYXRlWT10aGlzLmxnUmVjdC5oZWlnaHQrYyxkKCk7YnJlYWs7Y2FzZVwibGVmdFwiOmkudHJhbnNsYXRlWT1jLGkudHJhbnNsYXRlWD10aGlzLmxnUmVjdC53aWR0aCtsLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC1oLTEyLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtbDticmVhaztjYXNlXCJyaWdodFwiOmkudHJhbnNsYXRlWT1jLGkudHJhbnNsYXRlWD1sLGkuZ3JpZEhlaWdodD1pLnN2Z0hlaWdodC1oLTEyLGkuZ3JpZFdpZHRoPWkuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtbC01O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiTGVnZW5kIHBvc2l0aW9uIG5vdCBzdXBwb3J0ZWRcIil9dGhpcy5kaW1HcmlkLnNldEdyaWRYUG9zRm9yRHVhbFlBeGlzKHMsYSksbmV3IHEodGhpcy5jdHgpLnNldFlBeGlzWFBvc2l0aW9uKGEscyl9fSx7a2V5Olwic2V0RGltZW5zaW9uc0Zvck5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPXQuY29uZmlnLGE9MDt0LmNvbmZpZy5sZWdlbmQuc2hvdyYmIXQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZyYmKGE9MjApO3ZhciBzPVwicGllXCI9PT1pLmNoYXJ0LnR5cGV8fFwicG9sYXJBcmVhXCI9PT1pLmNoYXJ0LnR5cGV8fFwiZG9udXRcIj09PWkuY2hhcnQudHlwZT9cInBpZVwiOlwicmFkaWFsQmFyXCIscj1pLnBsb3RPcHRpb25zW3NdLm9mZnNldFksbz1pLnBsb3RPcHRpb25zW3NdLm9mZnNldFg7aWYoIWkubGVnZW5kLnNob3d8fGkubGVnZW5kLmZsb2F0aW5nKXJldHVybiBlLmdyaWRIZWlnaHQ9ZS5zdmdIZWlnaHQtaS5ncmlkLnBhZGRpbmcubGVmdCtpLmdyaWQucGFkZGluZy5yaWdodCxlLmdyaWRXaWR0aD1lLmdyaWRIZWlnaHQsZS50cmFuc2xhdGVZPXIsdm9pZChlLnRyYW5zbGF0ZVg9bysoZS5zdmdXaWR0aC1lLmdyaWRXaWR0aCkvMik7c3dpdGNoKGkubGVnZW5kLnBvc2l0aW9uKXtjYXNlXCJib3R0b21cIjplLmdyaWRIZWlnaHQ9ZS5zdmdIZWlnaHQtdGhpcy5sZ1JlY3QuaGVpZ2h0LWUuZ29sZGVuUGFkZGluZyxlLmdyaWRXaWR0aD1lLnN2Z1dpZHRoLGUudHJhbnNsYXRlWT1yLTEwLGUudHJhbnNsYXRlWD1vKyhlLnN2Z1dpZHRoLWUuZ3JpZFdpZHRoKS8yO2JyZWFrO2Nhc2VcInRvcFwiOmUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC10aGlzLmxnUmVjdC5oZWlnaHQtZS5nb2xkZW5QYWRkaW5nLGUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgsZS50cmFuc2xhdGVZPXRoaXMubGdSZWN0LmhlaWdodCtyKzEwLGUudHJhbnNsYXRlWD1vKyhlLnN2Z1dpZHRoLWUuZ3JpZFdpZHRoKS8yO2JyZWFrO2Nhc2VcImxlZnRcIjplLmdyaWRXaWR0aD1lLnN2Z1dpZHRoLXRoaXMubGdSZWN0LndpZHRoLWEsZS5ncmlkSGVpZ2h0PVwiYXV0b1wiIT09aS5jaGFydC5oZWlnaHQ/ZS5zdmdIZWlnaHQ6ZS5ncmlkV2lkdGgsZS50cmFuc2xhdGVZPXIsZS50cmFuc2xhdGVYPW8rdGhpcy5sZ1JlY3Qud2lkdGgrYTticmVhaztjYXNlXCJyaWdodFwiOmUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtYS01LGUuZ3JpZEhlaWdodD1cImF1dG9cIiE9PWkuY2hhcnQuaGVpZ2h0P2Uuc3ZnSGVpZ2h0OmUuZ3JpZFdpZHRoLGUudHJhbnNsYXRlWT1yLGUudHJhbnNsYXRlWD1vKzEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiTGVnZW5kIHBvc2l0aW9uIG5vdCBzdXBwb3J0ZWRcIil9fX0se2tleTpcImNvbmRpdGlvbmFsQ2hlY2tzRm9yQXhpc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1hLmdsb2JhbHMuaGFzWGF4aXNHcm91cHM/MjoxLHI9aS5oZWlnaHQrdC5oZWlnaHQrZS5oZWlnaHQsbz1hLmdsb2JhbHMuaXNNdWx0aUxpbmVYPzEuMjphLmdsb2JhbHMuTElORV9IRUlHSFRfUkFUSU8sbj1hLmdsb2JhbHMucm90YXRlWExhYmVscz8yMjoxMCxsPWEuZ2xvYmFscy5yb3RhdGVYTGFiZWxzJiZcImJvdHRvbVwiPT09YS5jb25maWcubGVnZW5kLnBvc2l0aW9uPzEwOjA7dGhpcy54QXhpc0hlaWdodD1yKm8rcypuK2wsdGhpcy54QXhpc1dpZHRoPXQud2lkdGgsdGhpcy54QXhpc0hlaWdodC1lLmhlaWdodD5hLmNvbmZpZy54YXhpcy5sYWJlbHMubWF4SGVpZ2h0JiYodGhpcy54QXhpc0hlaWdodD1hLmNvbmZpZy54YXhpcy5sYWJlbHMubWF4SGVpZ2h0KSxhLmNvbmZpZy54YXhpcy5sYWJlbHMubWluSGVpZ2h0JiZ0aGlzLnhBeGlzSGVpZ2h0PGEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQmJih0aGlzLnhBeGlzSGVpZ2h0PWEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQpLGEuY29uZmlnLnhheGlzLmZsb2F0aW5nJiYodGhpcy54QXhpc0hlaWdodD0wKTt2YXIgaD0wLGM9MDthLmNvbmZpZy55YXhpcy5mb3JFYWNoKChmdW5jdGlvbih0KXtoKz10LmxhYmVscy5taW5XaWR0aCxjKz10LmxhYmVscy5tYXhXaWR0aH0pKSx0aGlzLnlBeGlzV2lkdGg8aCYmKHRoaXMueUF4aXNXaWR0aD1oKSx0aGlzLnlBeGlzV2lkdGg+YyYmKHRoaXMueUF4aXNXaWR0aD1jKX19XSksdH0oKSxudD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5sZ0N0eD1lfXJldHVybiByKHQsW3trZXk6XCJnZXRMZWdlbmRTdHlsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTt0LnNldEF0dHJpYnV0ZShcInR5cGVcIixcInRleHQvY3NzXCIpO3ZhciBlPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXFx0XFxuICAgIFxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZCB7XFx0XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcdFxcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XFx0XFxuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbSwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wIHtcXHRcXG4gICAgICAgIGZsZXgtd3JhcDogd3JhcFxcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tbGVmdCB7XFx0XFxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcdFxcbiAgICAgICAgYm90dG9tOiAwO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1ib3R0b20uYXBleGNoYXJ0cy1hbGlnbi1sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1sZWZ0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1yaWdodCwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tbGVmdCB7XFx0XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLWNlbnRlciwgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tdG9wLmFwZXhjaGFydHMtYWxpZ24tY2VudGVyIHtcXHRcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyAgXFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1yaWdodCB7XFx0XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzIHtcXHRcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHRcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbSAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllc3tcXHRcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFx0XFxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCB7XFx0XFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFx0XFxuICAgICAgICBmb250LXNpemU6IDE0cHg7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0ICosIC5hcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXIgKiB7XFx0XFxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciB7XFx0XFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFx0XFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFx0XFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFx0XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcXHRcXG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICAgICAgfVxcdFxcbiAgICAgIFxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0IC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcGV4Y2hhcnRzLWFsaWduLWxlZnQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllc3tcXHRcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcy5hcGV4Y2hhcnRzLW5vLWNsaWNrIHtcXHRcXG4gICAgICAgIGN1cnNvcjogYXV0bztcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kIC5hcGV4Y2hhcnRzLWhpZGRlbi16ZXJvLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kIC5hcGV4Y2hhcnRzLWhpZGRlbi1udWxsLXNlcmllcyB7XFx0XFxuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZCB7XFx0XFxuICAgICAgICBvcGFjaXR5OiAwLjQ1O1xcdFxcbiAgICAgIH1cIik7cmV0dXJuIHQuYXBwZW5kQ2hpbGQoZSksdH19LHtrZXk6XCJnZXRMZWdlbmRCQm94XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1sZWdlbmRcIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZT10LndpZHRoO3JldHVybntjbHdoOnQuaGVpZ2h0LGNsd3c6ZX19fSx7a2V5OlwiYXBwZW5kVG9Gb3JlaWduT2JqZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLncuZ2xvYmFscy5kb20uZWxMZWdlbmRGb3JlaWduLmFwcGVuZENoaWxkKHRoaXMuZ2V0TGVnZW5kU3R5bGVzKCkpfX0se2tleTpcInRvZ2dsZURhdGFTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT10aGlzLnc7aWYoYS5nbG9iYWxzLmF4aXNDaGFydHN8fFwicmFkaWFsQmFyXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlKXthLmdsb2JhbHMucmVzaXplZD0hMDt2YXIgcz1udWxsLHI9bnVsbDtpZihhLmdsb2JhbHMucmlzaW5nU2VyaWVzPVtdLGEuZ2xvYmFscy5heGlzQ2hhcnRzPyhzPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQodCxcIiddXCIpKSxyPXBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApKToocz1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KHQrMSxcIiddXCIpKSxyPXBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xKSxlKVt7Y3M6YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcyxjc2k6YS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXN9LHtjczphLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzLGNzaTphLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlc31dLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kucmlzZUNvbGxhcHNlZFNlcmllcyh0LmNzLHQuY3NpLHIpfSkpO2Vsc2UgdGhpcy5oaWRlU2VyaWVzKHtzZXJpZXNFbDpzLHJlYWxJbmRleDpyfSl9ZWxzZXt2YXIgbz1hLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIiAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQodCsxLFwiJ10gcGF0aFwiKSksbj1hLmNvbmZpZy5jaGFydC50eXBlO2lmKFwicGllXCI9PT1ufHxcInBvbGFyQXJlYVwiPT09bnx8XCJkb251dFwiPT09bil7dmFyIGw9YS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmxhYmVscztuZXcgbSh0aGlzLmxnQ3R4LmN0eCkucGF0aE1vdXNlRG93bihvLm1lbWJlcnNbMF0sbnVsbCksdGhpcy5sZ0N0eC5jdHgucGllLnByaW50RGF0YUxhYmVsc0lubmVyKG8ubWVtYmVyc1swXS5ub2RlLGwpfW8uZmlyZShcImNsaWNrXCIpfX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zZXJpZXNFbCxpPXQucmVhbEluZGV4LGE9dGhpcy53LHM9eC5jbG9uZShhLmNvbmZpZy5zZXJpZXMpO2lmKGEuZ2xvYmFscy5heGlzQ2hhcnRzKXt2YXIgcj0hMTtpZihhLmNvbmZpZy55YXhpc1tpXSYmYS5jb25maWcueWF4aXNbaV0uc2hvdyYmYS5jb25maWcueWF4aXNbaV0uc2hvd0Fsd2F5cyYmKHI9ITAsYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihpKTwwJiYoYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcy5wdXNoKHtpbmRleDppLGRhdGE6c1tpXS5kYXRhLnNsaWNlKCksdHlwZTplLnBhcmVudE5vZGUuY2xhc3NOYW1lLmJhc2VWYWwuc3BsaXQoXCItXCIpWzFdfSksYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMucHVzaChpKSkpLCFyKXthLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmksZGF0YTpzW2ldLmRhdGEuc2xpY2UoKSx0eXBlOmUucGFyZW50Tm9kZS5jbGFzc05hbWUuYmFzZVZhbC5zcGxpdChcIi1cIilbMV19KSxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpO3ZhciBvPWEuZ2xvYmFscy5yaXNpbmdTZXJpZXMuaW5kZXhPZihpKTthLmdsb2JhbHMucmlzaW5nU2VyaWVzLnNwbGljZShvLDEpfX1lbHNlIGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOnNbaV19KSxhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpO2Zvcih2YXIgbj1lLmNoaWxkTm9kZXMsbD0wO2w8bi5sZW5ndGg7bCsrKW5bbF0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIpJiYobltsXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWhpZGVcIik/bltsXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1oaWRlXCIpOm5bbF0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZVwiKSk7YS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZD1hLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aD09PWEuY29uZmlnLnNlcmllcy5sZW5ndGgscz10aGlzLl9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGUocyksdGhpcy5sZ0N0eC5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpfX0se2tleTpcInJpc2VDb2xsYXBzZWRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9eC5jbG9uZShhLmNvbmZpZy5zZXJpZXMpO2lmKHQubGVuZ3RoPjApe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXRbcl0uaW5kZXg9PT1pJiYoYS5nbG9iYWxzLmF4aXNDaGFydHM/KHNbaV0uZGF0YT10W3JdLmRhdGEuc2xpY2UoKSx0LnNwbGljZShyLDEpLGUuc3BsaWNlKHIsMSksYS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKTooc1tpXT10W3JdLmRhdGEsdC5zcGxpY2UociwxKSxlLnNwbGljZShyLDEpLGEuZ2xvYmFscy5yaXNpbmdTZXJpZXMucHVzaChpKSkpO3M9dGhpcy5fZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlKHMpLHRoaXMubGdDdHguY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhzLGEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX19fSx7a2V5OlwiX2dldFNlcmllc0Jhc2VkT25Db2xsYXBzZWRTdGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm4gZS5nbG9iYWxzLmF4aXNDaGFydHM/dC5mb3JFYWNoKChmdW5jdGlvbihpLGEpe2UuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSk+LTEmJih0W2FdLmRhdGE9W10pfSkpOnQuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXtlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGEpPi0xJiYodFthXT0wKX0pKSx0fX1dKSx0fSgpLGx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMub25MZWdlbmRDbGljaz10aGlzLm9uTGVnZW5kQ2xpY2suYmluZCh0aGlzKSx0aGlzLm9uTGVnZW5kSG92ZXJlZD10aGlzLm9uTGVnZW5kSG92ZXJlZC5iaW5kKHRoaXMpLHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQ9XCJiYXJcIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJjE9PT10aGlzLncuY29uZmlnLnNlcmllcy5sZW5ndGgsdGhpcy5sZWdlbmRIZWxwZXJzPW5ldyBudCh0aGlzKX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9dC5jb25maWc7aWYoKGkubGVnZW5kLnNob3dGb3JTaW5nbGVTZXJpZXMmJjE9PT1lLnNlcmllcy5sZW5ndGh8fHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWR8fGUuc2VyaWVzLmxlbmd0aD4xfHwhZS5heGlzQ2hhcnRzKSYmaS5sZWdlbmQuc2hvdyl7Zm9yKDtlLmRvbS5lbExlZ2VuZFdyYXAuZmlyc3RDaGlsZDspZS5kb20uZWxMZWdlbmRXcmFwLnJlbW92ZUNoaWxkKGUuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkKTt0aGlzLmRyYXdMZWdlbmRzKCkseC5pc0lFMTEoKT9kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQodGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZFN0eWxlcygpKTp0aGlzLmxlZ2VuZEhlbHBlcnMuYXBwZW5kVG9Gb3JlaWduT2JqZWN0KCksXCJib3R0b21cIj09PWkubGVnZW5kLnBvc2l0aW9ufHxcInRvcFwiPT09aS5sZWdlbmQucG9zaXRpb24/dGhpcy5sZWdlbmRBbGlnbkhvcml6b250YWwoKTpcInJpZ2h0XCIhPT1pLmxlZ2VuZC5wb3NpdGlvbiYmXCJsZWZ0XCIhPT1pLmxlZ2VuZC5wb3NpdGlvbnx8dGhpcy5sZWdlbmRBbGlnblZlcnRpY2FsKCl9fX0se2tleTpcImRyYXdMZWdlbmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5jb25maWcubGVnZW5kLmZvbnRGYW1pbHksYT1lLmdsb2JhbHMuc2VyaWVzTmFtZXMscz1lLmdsb2JhbHMuY29sb3JzLnNsaWNlKCk7aWYoXCJoZWF0bWFwXCI9PT1lLmNvbmZpZy5jaGFydC50eXBlKXt2YXIgcj1lLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmNvbG9yU2NhbGUucmFuZ2VzO2E9ci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU/dC5uYW1lOnQuZnJvbStcIiAtIFwiK3QudG99KSkscz1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29sb3J9KSl9ZWxzZSB0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkJiYoYT1lLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkpO2UuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcy5sZW5ndGgmJihhPWUuY29uZmlnLmxlZ2VuZC5jdXN0b21MZWdlbmRJdGVtcyk7Zm9yKHZhciBvPWUuZ2xvYmFscy5sZWdlbmRGb3JtYXR0ZXIsbj1lLmNvbmZpZy5sZWdlbmQuaW52ZXJzZU9yZGVyLGw9bj9hLmxlbmd0aC0xOjA7bj9sPj0wOmw8PWEubGVuZ3RoLTE7bj9sLS06bCsrKXt2YXIgaCxjPW8oYVtsXSx7c2VyaWVzSW5kZXg6bCx3OmV9KSxkPSExLGc9ITE7aWYoZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg+MClmb3IodmFyIHU9MDt1PGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoO3UrKyllLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW3VdLmluZGV4PT09bCYmKGQ9ITApO2lmKGUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aD4wKWZvcih2YXIgcD0wO3A8ZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO3ArKyllLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlc1twXT09PWwmJihnPSEwKTt2YXIgZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtmLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIik7dmFyIGI9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMub2Zmc2V0WCx2PWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLm9mZnNldFksdz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5oZWlnaHQsaz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy53aWR0aCxBPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnN0cm9rZVdpZHRoLFM9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuc3Ryb2tlQ29sb3IsQz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5yYWRpdXMsTD1mLnN0eWxlO0wuYmFja2dyb3VuZD1zW2xdLEwuY29sb3I9c1tsXSxMLnNldFByb3BlcnR5KFwiYmFja2dyb3VuZFwiLHNbbF0sXCJpbXBvcnRhbnRcIiksZS5jb25maWcubGVnZW5kLm1hcmtlcnMuZmlsbENvbG9ycyYmZS5jb25maWcubGVnZW5kLm1hcmtlcnMuZmlsbENvbG9yc1tsXSYmKEwuYmFja2dyb3VuZD1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzW2xdKSx2b2lkIDAhPT1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW2xdJiYoTC5iYWNrZ3JvdW5kPWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0sTC5jb2xvcj1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW2xdKSxMLmhlaWdodD1BcnJheS5pc0FycmF5KHcpP3BhcnNlRmxvYXQod1tsXSkrXCJweFwiOnBhcnNlRmxvYXQodykrXCJweFwiLEwud2lkdGg9QXJyYXkuaXNBcnJheShrKT9wYXJzZUZsb2F0KGtbbF0pK1wicHhcIjpwYXJzZUZsb2F0KGspK1wicHhcIixMLmxlZnQ9KEFycmF5LmlzQXJyYXkoYik/cGFyc2VGbG9hdChiW2xdKTpwYXJzZUZsb2F0KGIpKStcInB4XCIsTC50b3A9KEFycmF5LmlzQXJyYXkodik/cGFyc2VGbG9hdCh2W2xdKTpwYXJzZUZsb2F0KHYpKStcInB4XCIsTC5ib3JkZXJXaWR0aD1BcnJheS5pc0FycmF5KEEpP0FbbF06QSxMLmJvcmRlckNvbG9yPUFycmF5LmlzQXJyYXkoUyk/U1tsXTpTLEwuYm9yZGVyUmFkaXVzPUFycmF5LmlzQXJyYXkoQyk/cGFyc2VGbG9hdChDW2xdKStcInB4XCI6cGFyc2VGbG9hdChDKStcInB4XCIsZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCYmKEFycmF5LmlzQXJyYXkoZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCk/ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTFtsXSYmKGYuaW5uZXJIVE1MPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmN1c3RvbUhUTUxbbF0oKSk6Zi5pbm5lckhUTUw9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTCgpKSxtLnNldEF0dHJzKGYse3JlbDpsKzEsXCJkYXRhOmNvbGxhcHNlZFwiOmR8fGd9KSwoZHx8ZykmJmYuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kXCIpO3ZhciBQPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksST1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtJLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpLEkuaW5uZXJIVE1MPUFycmF5LmlzQXJyYXkoYyk/Yy5qb2luKFwiIFwiKTpjO3ZhciBNPWUuY29uZmlnLmxlZ2VuZC5sYWJlbHMudXNlU2VyaWVzQ29sb3JzP2UuZ2xvYmFscy5jb2xvcnNbbF06QXJyYXkuaXNBcnJheShlLmNvbmZpZy5sZWdlbmQubGFiZWxzLmNvbG9ycyk/bnVsbD09PShoPWUuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzKXx8dm9pZCAwPT09aD92b2lkIDA6aFtsXTplLmNvbmZpZy5sZWdlbmQubGFiZWxzLmNvbG9ycztNfHwoTT1lLmNvbmZpZy5jaGFydC5mb3JlQ29sb3IpLEkuc3R5bGUuY29sb3I9TSxJLnN0eWxlLmZvbnRTaXplPXBhcnNlRmxvYXQoZS5jb25maWcubGVnZW5kLmZvbnRTaXplKStcInB4XCIsSS5zdHlsZS5mb250V2VpZ2h0PWUuY29uZmlnLmxlZ2VuZC5mb250V2VpZ2h0LEkuc3R5bGUuZm9udEZhbWlseT1pfHxlLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LG0uc2V0QXR0cnMoSSx7cmVsOmwrMSxpOmwsXCJkYXRhOmRlZmF1bHQtdGV4dFwiOmVuY29kZVVSSUNvbXBvbmVudChjKSxcImRhdGE6Y29sbGFwc2VkXCI6ZHx8Z30pLFAuYXBwZW5kQ2hpbGQoZiksUC5hcHBlbmRDaGlsZChJKTt2YXIgVD1uZXcgeSh0aGlzLmN0eCk7aWYoIWUuY29uZmlnLmxlZ2VuZC5zaG93Rm9yWmVyb1NlcmllcykwPT09VC5nZXRTZXJpZXNUb3RhbEJ5SW5kZXgobCkmJlQuc2VyaWVzSGF2ZVNhbWVWYWx1ZXMobCkmJiFULmlzU2VyaWVzTnVsbChsKSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiYtMT09PWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJlAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLXplcm8tc2VyaWVzXCIpO2UuY29uZmlnLmxlZ2VuZC5zaG93Rm9yTnVsbFNlcmllc3x8VC5pc1Nlcmllc051bGwobCkmJi0xPT09ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihsKSYmLTE9PT1lLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiZQLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhpZGRlbi1udWxsLXNlcmllc1wiKSxlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5hcHBlbmRDaGlsZChQKSxlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbGlnbi1cIi5jb25jYXQoZS5jb25maWcubGVnZW5kLmhvcml6b250YWxBbGlnbikpLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcHgtbGVnZW5kLXBvc2l0aW9uLVwiK2UuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiksUC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzXCIpLFAuc3R5bGUubWFyZ2luPVwiXCIuY29uY2F0KGUuY29uZmlnLmxlZ2VuZC5pdGVtTWFyZ2luLnZlcnRpY2FsLFwicHggXCIpLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaXRlbU1hcmdpbi5ob3Jpem9udGFsLFwicHhcIiksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUud2lkdGg9ZS5jb25maWcubGVnZW5kLndpZHRoP2UuY29uZmlnLmxlZ2VuZC53aWR0aCtcInB4XCI6XCJcIixlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5zdHlsZS5oZWlnaHQ9ZS5jb25maWcubGVnZW5kLmhlaWdodD9lLmNvbmZpZy5sZWdlbmQuaGVpZ2h0K1wicHhcIjpcIlwiLG0uc2V0QXR0cnMoUCx7cmVsOmwrMSxzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGFbbF0pLFwiZGF0YTpjb2xsYXBzZWRcIjpkfHxnfSksKGR8fGcpJiZQLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZFwiKSxlLmNvbmZpZy5sZWdlbmQub25JdGVtQ2xpY2sudG9nZ2xlRGF0YVNlcmllc3x8UC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1uby1jbGlja1wiKX1lLmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0Lm9uTGVnZW5kQ2xpY2ssITApLGUuY29uZmlnLmxlZ2VuZC5vbkl0ZW1Ib3Zlci5oaWdobGlnaHREYXRhU2VyaWVzJiYwPT09ZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKGUuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0Lm9uTGVnZW5kSG92ZXJlZCwhMCksZS5nbG9iYWxzLmRvbS5lbFdyYXAuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3V0XCIsdC5vbkxlZ2VuZEhvdmVyZWQsITApKX19LHtrZXk6XCJzZXRMZWdlbmRXcmFwWFlcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLHM9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPTAsbz0wO2lmKFwiYm90dG9tXCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24pbys9aS5nbG9iYWxzLnN2Z0hlaWdodC1zLmhlaWdodC8yO2Vsc2UgaWYoXCJ0b3BcIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbil7dmFyIG49bmV3IG90KHRoaXMuY3R4KSxsPW4uZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikuaGVpZ2h0LGg9bi5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJzdWJ0aXRsZVwiKS5oZWlnaHQ7bz1vKyhsPjA/bC0xMDowKSsoaD4wP2gtMTA6MCl9YS5zdHlsZS5wb3NpdGlvbj1cImFic29sdXRlXCIscj1yK3QraS5jb25maWcubGVnZW5kLm9mZnNldFgsbz1vK2UraS5jb25maWcubGVnZW5kLm9mZnNldFksYS5zdHlsZS5sZWZ0PXIrXCJweFwiLGEuc3R5bGUudG9wPW8rXCJweFwiLFwiYm90dG9tXCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24/KGEuc3R5bGUudG9wPVwiYXV0b1wiLGEuc3R5bGUuYm90dG9tPTUtaS5jb25maWcubGVnZW5kLm9mZnNldFkrXCJweFwiKTpcInJpZ2h0XCI9PT1pLmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihhLnN0eWxlLmxlZnQ9XCJhdXRvXCIsYS5zdHlsZS5yaWdodD0yNStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCtcInB4XCIpO1tcIndpZHRoXCIsXCJoZWlnaHRcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5zdHlsZVt0XSYmKGEuc3R5bGVbdF09cGFyc2VJbnQoaS5jb25maWcubGVnZW5kW3RdLDEwKStcInB4XCIpfSkpfX0se2tleTpcImxlZ2VuZEFsaWduSG9yaXpvbnRhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLnJpZ2h0PTA7dmFyIGU9dGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKSxpPW5ldyBvdCh0aGlzLmN0eCksYT1pLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInRpdGxlXCIpLHM9aS5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJzdWJ0aXRsZVwiKSxyPTA7XCJib3R0b21cIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj9yPS1lLmNsd2gvMS44OlwidG9wXCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihyPWEuaGVpZ2h0K3MuaGVpZ2h0K3QuY29uZmlnLnRpdGxlLm1hcmdpbit0LmNvbmZpZy5zdWJ0aXRsZS5tYXJnaW4tMTApLHRoaXMuc2V0TGVnZW5kV3JhcFhZKDIwLHIpfX0se2tleTpcImxlZ2VuZEFsaWduVmVydGljYWxcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCksaT0wO1wibGVmdFwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYoaT0yMCksXCJyaWdodFwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiYoaT10Lmdsb2JhbHMuc3ZnV2lkdGgtZS5jbHd3LTEwKSx0aGlzLnNldExlZ2VuZFdyYXBYWShpLDIwKX19LHtrZXk6XCJvbkxlZ2VuZEhvdmVyZWRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXNcIil8fHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKTtpZihcImhlYXRtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQpe2lmKGkpe3ZhciBhPXBhcnNlSW50KHQudGFyZ2V0LmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMTt0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibGVnZW5kSG92ZXJcIixbdGhpcy5jdHgsYSx0aGlzLnddKSxuZXcgTih0aGlzLmN0eCkuaGlnaGxpZ2h0UmFuZ2VJblNlcmllcyh0LHQudGFyZ2V0KX19ZWxzZSF0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWluYWN0aXZlLWxlZ2VuZFwiKSYmaSYmbmV3IE4odGhpcy5jdHgpLnRvZ2dsZVNlcmllc09uSG92ZXIodCx0LnRhcmdldCl9fSx7a2V5Olwib25MZWdlbmRDbGlja1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZighZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKHQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXNlcmllc1wiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpKSl7dmFyIGk9cGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xLGE9XCJ0cnVlXCI9PT10LnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmNvbGxhcHNlZFwiKSxzPXRoaXMudy5jb25maWcuY2hhcnQuZXZlbnRzLmxlZ2VuZENsaWNrO1wiZnVuY3Rpb25cIj09dHlwZW9mIHMmJnModGhpcy5jdHgsaSx0aGlzLncpLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRDbGlja1wiLFt0aGlzLmN0eCxpLHRoaXMud10pO3ZhciByPXRoaXMudy5jb25maWcubGVnZW5kLm1hcmtlcnMub25DbGljaztcImZ1bmN0aW9uXCI9PXR5cGVvZiByJiZ0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIikmJihyKHRoaXMuY3R4LGksdGhpcy53KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibGVnZW5kTWFya2VyQ2xpY2tcIixbdGhpcy5jdHgsaSx0aGlzLnddKSksXCJ0cmVlbWFwXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiZcImhlYXRtYXBcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGUmJiF0aGlzLmlzQmFyc0Rpc3RyaWJ1dGVkJiZlLmNvbmZpZy5sZWdlbmQub25JdGVtQ2xpY2sudG9nZ2xlRGF0YVNlcmllcyYmdGhpcy5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoaSxhKX19fV0pLHR9KCksaHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMuZXY9dGhpcy53LmNvbmZpZy5jaGFydC5ldmVudHMsdGhpcy5zZWxlY3RlZENsYXNzPVwiYXBleGNoYXJ0cy1zZWxlY3RlZFwiLHRoaXMubG9jYWxlVmFsdWVzPXRoaXMudy5nbG9iYWxzLmxvY2FsZS50b29sYmFyLHRoaXMubWluWD1pLmdsb2JhbHMubWluWCx0aGlzLm1heFg9aS5nbG9iYWxzLm1heFh9cmV0dXJuIHIodCxbe2tleTpcImNyZWF0ZVRvb2xiYXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpfSxhPWkoKTtpZihhLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsXCJhcGV4Y2hhcnRzLXRvb2xiYXJcIiksYS5zdHlsZS50b3A9ZS5jb25maWcuY2hhcnQudG9vbGJhci5vZmZzZXRZK1wicHhcIixhLnN0eWxlLnJpZ2h0PTMtZS5jb25maWcuY2hhcnQudG9vbGJhci5vZmZzZXRYK1wicHhcIixlLmdsb2JhbHMuZG9tLmVsV3JhcC5hcHBlbmRDaGlsZChhKSx0aGlzLmVsWm9vbT1pKCksdGhpcy5lbFpvb21Jbj1pKCksdGhpcy5lbFpvb21PdXQ9aSgpLHRoaXMuZWxQYW49aSgpLHRoaXMuZWxTZWxlY3Rpb249aSgpLHRoaXMuZWxab29tUmVzZXQ9aSgpLHRoaXMuZWxNZW51SWNvbj1pKCksdGhpcy5lbE1lbnU9aSgpLHRoaXMuZWxDdXN0b21JY29ucz1bXSx0aGlzLnQ9ZS5jb25maWcuY2hhcnQudG9vbGJhci50b29scyxBcnJheS5pc0FycmF5KHRoaXMudC5jdXN0b21JY29ucykpZm9yKHZhciBzPTA7czx0aGlzLnQuY3VzdG9tSWNvbnMubGVuZ3RoO3MrKyl0aGlzLmVsQ3VzdG9tSWNvbnMucHVzaChpKCkpO3ZhciByPVtdLG89ZnVuY3Rpb24oaSxhLHMpe3ZhciBvPWkudG9Mb3dlckNhc2UoKTt0LnRbb10mJmUuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZCYmci5wdXNoKHtlbDphLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHQudFtvXT90LnRbb106cyx0aXRsZTp0LmxvY2FsZVZhbHVlc1tpXSxjbGFzczpcImFwZXhjaGFydHMtXCIuY29uY2F0KG8sXCItaWNvblwiKX0pfTtvKFwiem9vbUluXCIsdGhpcy5lbFpvb21JbiwnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxcbiAgICA8cGF0aCBkPVwiTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpcIi8+XFxuPC9zdmc+XFxuJyksbyhcInpvb21PdXRcIix0aGlzLmVsWm9vbU91dCwnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxcbiAgICA8cGF0aCBkPVwiTTcgMTF2MmgxMHYtMkg3em01LTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwiLz5cXG48L3N2Zz5cXG4nKTt2YXIgbj1mdW5jdGlvbihpKXt0LnRbaV0mJmUuY29uZmlnLmNoYXJ0W2ldLmVuYWJsZWQmJnIucHVzaCh7ZWw6XCJ6b29tXCI9PT1pP3QuZWxab29tOnQuZWxTZWxlY3Rpb24saWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdC50W2ldP3QudFtpXTpcInpvb21cIj09PWk/JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCIjMDAwMDAwXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiPlxcbiAgICA8cGF0aCBkPVwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCIvPlxcbiAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwVjB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMTIgMTBoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXpcIi8+XFxuPC9zdmc+JzonPHN2ZyBmaWxsPVwiIzZFODE5MlwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMyA1aDJWM2MtMS4xIDAtMiAuOS0yIDJ6bTAgOGgydi0ySDN2MnptNCA4aDJ2LTJIN3Yyek0zIDloMlY3SDN2MnptMTAtNmgtMnYyaDJWM3ptNiAwdjJoMmMwLTEuMS0uOS0yLTItMnpNNSAyMXYtMkgzYzAgMS4xLjkgMiAyIDJ6bS0yLTRoMnYtMkgzdjJ6TTkgM0g3djJoMlYzem0yIDE4aDJ2LTJoLTJ2MnptOC04aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6bTAtMTJoMlY3aC0ydjJ6bTAgOGgydi0yaC0ydjJ6bS00IDRoMnYtMmgtMnYyem0wLTE2aDJWM2gtMnYyelwiLz5cXG48L3N2Zz4nLHRpdGxlOnQubG9jYWxlVmFsdWVzW1wiem9vbVwiPT09aT9cInNlbGVjdGlvblpvb21cIjpcInNlbGVjdGlvblwiXSxjbGFzczplLmdsb2JhbHMuaXNUb3VjaERldmljZT9cImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIjpcImFwZXhjaGFydHMtXCIuY29uY2F0KGksXCItaWNvblwiKX0pfTtuKFwiem9vbVwiKSxuKFwic2VsZWN0aW9uXCIpLHRoaXMudC5wYW4mJmUuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZCYmci5wdXNoKHtlbDp0aGlzLmVsUGFuLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMudC5wYW4/dGhpcy50LnBhbjonPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCI+XFxuICAgIDxkZWZzPlxcbiAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBpZD1cImFcIi8+XFxuICAgIDwvZGVmcz5cXG4gICAgPGNsaXBQYXRoIGlkPVwiYlwiPlxcbiAgICAgICAgPHVzZSBvdmVyZmxvdz1cInZpc2libGVcIiB4bGluazpocmVmPVwiI2FcIi8+XFxuICAgIDwvY2xpcFBhdGg+XFxuICAgIDxwYXRoIGNsaXAtcGF0aD1cInVybCgjYilcIiBkPVwiTTIzIDUuNVYyMGMwIDIuMi0xLjggNC00IDRoLTcuM2MtMS4wOCAwLTIuMS0uNDMtMi44NS0xLjE5TDEgMTQuODNzMS4yNi0xLjIzIDEuMy0xLjI1Yy4yMi0uMTkuNDktLjI5Ljc5LS4yOS4yMiAwIC40Mi4wNi42LjE2LjA0LjAxIDQuMzEgMi40NiA0LjMxIDIuNDZWNGMwLS44My42Ny0xLjUgMS41LTEuNVMxMSAzLjE3IDExIDR2N2gxVjEuNWMwLS44My42Ny0xLjUgMS41LTEuNVMxNSAuNjcgMTUgMS41VjExaDFWMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjExaDFWNS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41elwiLz5cXG48L3N2Zz4nLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLnBhbixjbGFzczplLmdsb2JhbHMuaXNUb3VjaERldmljZT9cImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIjpcImFwZXhjaGFydHMtcGFuLWljb25cIn0pLG8oXCJyZXNldFwiLHRoaXMuZWxab29tUmVzZXQsJzxzdmcgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxcbiAgICA8cGF0aCBkPVwiTTEwIDIwdi02aDR2Nmg1di04aDNMMTIgMyAyIDEyaDN2OHpcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuPC9zdmc+JyksdGhpcy50LmRvd25sb2FkJiZyLnB1c2goe2VsOnRoaXMuZWxNZW51SWNvbixpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0aGlzLnQuZG93bmxvYWQ/dGhpcy50LmRvd25sb2FkOic8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPjxwYXRoIGQ9XCJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3pcIi8+PC9zdmc+Jyx0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5tZW51LGNsYXNzOlwiYXBleGNoYXJ0cy1tZW51LWljb25cIn0pO2Zvcih2YXIgbD0wO2w8dGhpcy5lbEN1c3RvbUljb25zLmxlbmd0aDtsKyspci5wdXNoKHtlbDp0aGlzLmVsQ3VzdG9tSWNvbnNbbF0saWNvbjp0aGlzLnQuY3VzdG9tSWNvbnNbbF0uaWNvbix0aXRsZTp0aGlzLnQuY3VzdG9tSWNvbnNbbF0udGl0bGUsaW5kZXg6dGhpcy50LmN1c3RvbUljb25zW2xdLmluZGV4LGNsYXNzOlwiYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uIFwiK3RoaXMudC5jdXN0b21JY29uc1tsXS5jbGFzc30pO3IuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmluZGV4JiZ4Lm1vdmVJbmRleEluQXJyYXkocixlLHQuaW5kZXgpfSkpO2Zvcih2YXIgaD0wO2g8ci5sZW5ndGg7aCsrKW0uc2V0QXR0cnMocltoXS5lbCx7Y2xhc3M6cltoXS5jbGFzcyx0aXRsZTpyW2hdLnRpdGxlfSkscltoXS5lbC5pbm5lckhUTUw9cltoXS5pY29uLGEuYXBwZW5kQ2hpbGQocltoXS5lbCk7dGhpcy5fY3JlYXRlSGFtYnVyZ2VyTWVudShhKSxlLmdsb2JhbHMuem9vbUVuYWJsZWQ/dGhpcy5lbFpvb20uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpOmUuZ2xvYmFscy5wYW5FbmFibGVkP3RoaXMuZWxQYW4uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpOmUuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiZ0aGlzLmVsU2VsZWN0aW9uLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKSx0aGlzLmFkZFRvb2xiYXJFdmVudExpc3RlbmVycygpfX0se2tleTpcIl9jcmVhdGVIYW1idXJnZXJNZW51XCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5lbE1lbnVJdGVtcz1bXSx0LmFwcGVuZENoaWxkKHRoaXMuZWxNZW51KSxtLnNldEF0dHJzKHRoaXMuZWxNZW51LHtjbGFzczpcImFwZXhjaGFydHMtbWVudVwifSk7dmFyIGU9W3tuYW1lOlwiZXhwb3J0U1ZHXCIsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9TVkd9LHtuYW1lOlwiZXhwb3J0UE5HXCIsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9QTkd9LHtuYW1lOlwiZXhwb3J0Q1NWXCIsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMuZXhwb3J0VG9DU1Z9XTt0aGlzLncuZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFh8fGUuc3BsaWNlKDIsMSk7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspdGhpcy5lbE1lbnVJdGVtcy5wdXNoKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLHRoaXMuZWxNZW51SXRlbXNbaV0uaW5uZXJIVE1MPWVbaV0udGl0bGUsbS5zZXRBdHRycyh0aGlzLmVsTWVudUl0ZW1zW2ldLHtjbGFzczpcImFwZXhjaGFydHMtbWVudS1pdGVtIFwiLmNvbmNhdChlW2ldLm5hbWUpLHRpdGxlOmVbaV0udGl0bGV9KSx0aGlzLmVsTWVudS5hcHBlbmRDaGlsZCh0aGlzLmVsTWVudUl0ZW1zW2ldKX19LHtrZXk6XCJhZGRUb29sYmFyRXZlbnRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5lbFpvb21SZXNldC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmhhbmRsZVpvb21SZXNldC5iaW5kKHRoaXMpKSx0aGlzLmVsU2VsZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlWm9vbVNlbGVjdGlvbi5iaW5kKHRoaXMsXCJzZWxlY3Rpb25cIikpLHRoaXMuZWxab29tLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlWm9vbVNlbGVjdGlvbi5iaW5kKHRoaXMsXCJ6b29tXCIpKSx0aGlzLmVsWm9vbUluLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbUluLmJpbmQodGhpcykpLHRoaXMuZWxab29tT3V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbU91dC5iaW5kKHRoaXMpKSx0aGlzLmVsUGFuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudG9nZ2xlUGFubmluZy5iaW5kKHRoaXMpKSx0aGlzLmVsTWVudUljb24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVNZW51LmJpbmQodGhpcykpLHRoaXMuZWxNZW51SXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRTVkdcIik/ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmhhbmRsZURvd25sb2FkLmJpbmQodCxcInN2Z1wiKSk6ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRQTkdcIik/ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmhhbmRsZURvd25sb2FkLmJpbmQodCxcInBuZ1wiKSk6ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJleHBvcnRDU1ZcIikmJmUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5oYW5kbGVEb3dubG9hZC5iaW5kKHQsXCJjc3ZcIikpfSkpO2Zvcih2YXIgZT0wO2U8dGhpcy50LmN1c3RvbUljb25zLmxlbmd0aDtlKyspdGhpcy5lbEN1c3RvbUljb25zW2VdLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMudC5jdXN0b21JY29uc1tlXS5jbGljay5iaW5kKHRoaXMsdGhpcy5jdHgsdGhpcy5jdHgudykpfX0se2tleTpcInRvZ2dsZVpvb21TZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmN0eC50b29sYmFyLnRvZ2dsZU90aGVyQ29udHJvbHMoKTt2YXIgaT1cInNlbGVjdGlvblwiPT09dD9lLmN0eC50b29sYmFyLmVsU2VsZWN0aW9uOmUuY3R4LnRvb2xiYXIuZWxab29tLGE9XCJzZWxlY3Rpb25cIj09PXQ/XCJzZWxlY3Rpb25FbmFibGVkXCI6XCJ6b29tRW5hYmxlZFwiO2Uudy5nbG9iYWxzW2FdPSFlLncuZ2xvYmFsc1thXSxpLmNsYXNzTGlzdC5jb250YWlucyhlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpP2kuY2xhc3NMaXN0LnJlbW92ZShlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpOmkuY2xhc3NMaXN0LmFkZChlLmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpfSkpfX0se2tleTpcImdldFRvb2xiYXJJY29uc1JlZmVyZW5jZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3RoaXMuZWxab29tfHwodGhpcy5lbFpvb209dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXpvb20taWNvblwiKSksdGhpcy5lbFBhbnx8KHRoaXMuZWxQYW49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXBhbi1pY29uXCIpKSx0aGlzLmVsU2VsZWN0aW9ufHwodGhpcy5lbFNlbGVjdGlvbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb25cIikpfX0se2tleTpcImVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMudG9nZ2xlT3RoZXJDb250cm9scygpLFwicGFuXCI9PT10P3RoaXMudy5nbG9iYWxzLnBhbkVuYWJsZWQ9ITA6dGhpcy53Lmdsb2JhbHMuem9vbUVuYWJsZWQ9ITA7dmFyIGU9XCJwYW5cIj09PXQ/dGhpcy5lbFBhbjp0aGlzLmVsWm9vbSxpPVwicGFuXCI9PT10P3RoaXMuZWxab29tOnRoaXMuZWxQYW47ZSYmZS5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyksaSYmaS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuc2VsZWN0ZWRDbGFzcyl9fSx7a2V5OlwidG9nZ2xlUGFubmluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdHguZ2V0U3luY2VkQ2hhcnRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jdHgudG9vbGJhci50b2dnbGVPdGhlckNvbnRyb2xzKCksdC53Lmdsb2JhbHMucGFuRW5hYmxlZD0hdC53Lmdsb2JhbHMucGFuRW5hYmxlZCx0LmN0eC50b29sYmFyLmVsUGFuLmNsYXNzTGlzdC5jb250YWlucyh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpP3QuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LnJlbW92ZSh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpOnQuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LmFkZCh0LmN0eC50b29sYmFyLnNlbGVjdGVkQ2xhc3MpfSkpfX0se2tleTpcInRvZ2dsZU90aGVyQ29udHJvbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7ZS5nbG9iYWxzLnBhbkVuYWJsZWQ9ITEsZS5nbG9iYWxzLnpvb21FbmFibGVkPSExLGUuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkPSExLHRoaXMuZ2V0VG9vbGJhckljb25zUmVmZXJlbmNlKCksW3RoaXMuZWxQYW4sdGhpcy5lbFNlbGVjdGlvbix0aGlzLmVsWm9vbV0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSYmZS5jbGFzc0xpc3QucmVtb3ZlKHQuc2VsZWN0ZWRDbGFzcyl9KSl9fSx7a2V5OlwiaGFuZGxlWm9vbUluXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLmlzUmFuZ2VCYXImJih0aGlzLm1pblg9dC5nbG9iYWxzLm1pblksdGhpcy5tYXhYPXQuZ2xvYmFscy5tYXhZKTt2YXIgZT0odGhpcy5taW5YK3RoaXMubWF4WCkvMixpPSh0aGlzLm1pblgrZSkvMixhPSh0aGlzLm1heFgrZSkvMixzPXRoaXMuX2dldE5ld01pblhNYXhYKGksYSk7dC5nbG9iYWxzLmRpc2FibGVab29tSW58fHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMocy5taW5YLHMubWF4WCl9fSx7a2V5OlwiaGFuZGxlWm9vbU91dFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5pc1JhbmdlQmFyJiYodGhpcy5taW5YPXQuZ2xvYmFscy5taW5ZLHRoaXMubWF4WD10Lmdsb2JhbHMubWF4WSksIShcImRhdGV0aW1lXCI9PT10LmNvbmZpZy54YXhpcy50eXBlJiZuZXcgRGF0ZSh0aGlzLm1pblgpLmdldFVUQ0Z1bGxZZWFyKCk8MWUzKSl7dmFyIGU9KHRoaXMubWluWCt0aGlzLm1heFgpLzIsaT10aGlzLm1pblgtKGUtdGhpcy5taW5YKSxhPXRoaXMubWF4WC0oZS10aGlzLm1heFgpLHM9dGhpcy5fZ2V0TmV3TWluWE1heFgoaSxhKTt0Lmdsb2JhbHMuZGlzYWJsZVpvb21PdXR8fHRoaXMuem9vbVVwZGF0ZU9wdGlvbnMocy5taW5YLHMubWF4WCl9fX0se2tleTpcIl9nZXROZXdNaW5YTWF4WFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM7cmV0dXJue21pblg6aT9NYXRoLmZsb29yKHQpOnQsbWF4WDppP01hdGguZmxvb3IoZSk6ZX19fSx7a2V5Olwiem9vbVVwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZih2b2lkIDAhPT10fHx2b2lkIDAhPT1lKXtpZighKGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHQ8MSYmKHQ9MSxlPWkuZ2xvYmFscy5kYXRhUG9pbnRzKSxlLXQ8MikpKXt2YXIgYT17bWluOnQsbWF4OmV9LHM9dGhpcy5nZXRCZWZvcmVab29tUmFuZ2UoYSk7cyYmKGE9cy54YXhpcyk7dmFyIHI9e3hheGlzOmF9LG89eC5jbG9uZShpLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcyk7aWYoaS5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcylvPW5ldyBfKHRoaXMuY3R4KS5hdXRvU2NhbGVZKHRoaXMuY3R4LG8se3hheGlzOmF9KTtpLmNvbmZpZy5jaGFydC5ncm91cHx8KHIueWF4aXM9byksdGhpcy53Lmdsb2JhbHMuem9vbWVkPSEwLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMociwhMSx0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKSx0aGlzLnpvb21DYWxsYmFjayhhLG8pfX1lbHNlIHRoaXMuaGFuZGxlWm9vbVJlc2V0KCl9fSx7a2V5Olwiem9vbUNhbGxiYWNrXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLmV2Lnpvb21lZCYmdGhpcy5ldi56b29tZWQodGhpcy5jdHgse3hheGlzOnQseWF4aXM6ZX0pfX0se2tleTpcImdldEJlZm9yZVpvb21SYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bnVsbDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLmV2LmJlZm9yZVpvb20mJihpPXRoaXMuZXYuYmVmb3JlWm9vbSh0aGlzLHt4YXhpczp0LHlheGlzOmV9KSksaX19LHtrZXk6XCJ0b2dnbGVNZW51XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3dpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3QuZWxNZW51LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpP3QuZWxNZW51LmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKTp0LmVsTWVudS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIil9KSwwKX19LHtrZXk6XCJoYW5kbGVEb3dubG9hZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBHKHRoaXMuY3R4KTtzd2l0Y2godCl7Y2FzZVwic3ZnXCI6aS5leHBvcnRUb1NWRyh0aGlzLmN0eCk7YnJlYWs7Y2FzZVwicG5nXCI6aS5leHBvcnRUb1BuZyh0aGlzLmN0eCk7YnJlYWs7Y2FzZVwiY3N2XCI6aS5leHBvcnRUb0NTVih7c2VyaWVzOmUuY29uZmlnLnNlcmllcyxjb2x1bW5EZWxpbWl0ZXI6ZS5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmNvbHVtbkRlbGltaXRlcn0pfX19LHtrZXk6XCJoYW5kbGVab29tUmVzZXRcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10Lnc7aWYoZS5nbG9iYWxzLmxhc3RYQXhpcy5taW49ZS5nbG9iYWxzLmluaXRpYWxDb25maWcueGF4aXMubWluLGUuZ2xvYmFscy5sYXN0WEF4aXMubWF4PWUuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnhheGlzLm1heCx0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlUmVzZXRab29tKXt2YXIgaT1lLmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlUmVzZXRab29tKHQsZSk7aSYmdC51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KGkpfVwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQmJnQuY3R4LnRvb2xiYXIuem9vbUNhbGxiYWNrKHttaW46ZS5jb25maWcueGF4aXMubWluLG1heDplLmNvbmZpZy54YXhpcy5tYXh9KSxlLmdsb2JhbHMuem9vbWVkPSExO3ZhciBhPXQuY3R4LnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyh4LmNsb25lKGUuZ2xvYmFscy5pbml0aWFsU2VyaWVzKSk7dC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMoYSxlLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9KSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5lbFpvb209bnVsbCx0aGlzLmVsWm9vbUluPW51bGwsdGhpcy5lbFpvb21PdXQ9bnVsbCx0aGlzLmVsUGFuPW51bGwsdGhpcy5lbFNlbGVjdGlvbj1udWxsLHRoaXMuZWxab29tUmVzZXQ9bnVsbCx0aGlzLmVsTWVudUljb249bnVsbH19XSksdH0oKSxjdD1mdW5jdGlvbih0KXtuKGksaHQpO3ZhciBlPWQoaSk7ZnVuY3Rpb24gaSh0KXt2YXIgcztyZXR1cm4gYSh0aGlzLGkpLChzPWUuY2FsbCh0aGlzLHQpKS5jdHg9dCxzLnc9dC53LHMuZHJhZ2dlZD0hMSxzLmdyYXBoaWNzPW5ldyBtKHMuY3R4KSxzLmV2ZW50TGlzdD1bXCJtb3VzZWRvd25cIixcIm1vdXNlbGVhdmVcIixcIm1vdXNlbW92ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaGVuZFwiXSxzLmNsaWVudFg9MCxzLmNsaWVudFk9MCxzLnN0YXJ0WD0wLHMuZW5kWD0wLHMuZHJhZ1g9MCxzLnN0YXJ0WT0wLHMuZW5kWT0wLHMuZHJhZ1k9MCxzLm1vdmVEaXJlY3Rpb249XCJub25lXCIsc31yZXR1cm4gcihpLFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10Lnh5UmF0aW9zLGE9dGhpcy53LHM9dGhpczt0aGlzLnh5UmF0aW9zPWksdGhpcy56b29tUmVjdD10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsMCwwLDApLHRoaXMuc2VsZWN0aW9uUmVjdD10aGlzLmdyYXBoaWNzLmRyYXdSZWN0KDAsMCwwLDApLHRoaXMuZ3JpZFJlY3Q9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIiksdGhpcy56b29tUmVjdC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXpvb20tcmVjdFwiKSx0aGlzLnNlbGVjdGlvblJlY3Qubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKSxhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh0aGlzLnpvb21SZWN0KSxhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZCh0aGlzLnNlbGVjdGlvblJlY3QpLFwieFwiPT09YS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGU/dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSh7bWluWDowLG1pblk6MCxtYXhYOmEuZ2xvYmFscy5ncmlkV2lkdGgsbWF4WTphLmdsb2JhbHMuZ3JpZEhlaWdodH0pLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKTpcInlcIj09PWEuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi50eXBlP3RoaXMuc2xEcmFnZ2FibGVSZWN0PXRoaXMuc2VsZWN0aW9uUmVjdC5kcmFnZ2FibGUoe21pblg6MCxtYXhYOmEuZ2xvYmFscy5ncmlkV2lkdGh9KS5vbihcImRyYWdtb3ZlXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJkcmFnZ2luZ1wiKSk6dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSgpLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKSx0aGlzLnByZXNlbGVjdGVkU2VsZWN0aW9uKCksdGhpcy5ob3ZlckFyZWE9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIlwiLmNvbmNhdChhLmdsb2JhbHMuY2hhcnRDbGFzcyxcIiAuYXBleGNoYXJ0cy1zdmdcIikpLHRoaXMuaG92ZXJBcmVhLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXpvb21hYmxlXCIpLHRoaXMuZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuaG92ZXJBcmVhLmFkZEV2ZW50TGlzdGVuZXIodCxzLnN2Z01vdXNlRXZlbnRzLmJpbmQocyxpKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zbERyYWdnYWJsZVJlY3QmJih0aGlzLnNsRHJhZ2dhYmxlUmVjdC5kcmFnZ2FibGUoITEpLHRoaXMuc2xEcmFnZ2FibGVSZWN0Lm9mZigpLHRoaXMuc2VsZWN0aW9uUmVjdC5vZmYoKSksdGhpcy5zZWxlY3Rpb25SZWN0PW51bGwsdGhpcy56b29tUmVjdD1udWxsLHRoaXMuZ3JpZFJlY3Q9bnVsbH19LHtrZXk6XCJzdmdNb3VzZUV2ZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcyxzPXRoaXMuY3R4LnRvb2xiYXIscj1pLmdsb2JhbHMuem9vbUVuYWJsZWQ/aS5jb25maWcuY2hhcnQuem9vbS50eXBlOmkuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi50eXBlLG89aS5jb25maWcuY2hhcnQudG9vbGJhci5hdXRvU2VsZWN0ZWQ7aWYoZS5zaGlmdEtleT8odGhpcy5zaGlmdFdhc1ByZXNzZWQ9ITAscy5lbmFibGVab29tUGFuRnJvbVRvb2xiYXIoXCJwYW5cIj09PW8/XCJ6b29tXCI6XCJwYW5cIikpOnRoaXMuc2hpZnRXYXNQcmVzc2VkJiYocy5lbmFibGVab29tUGFuRnJvbVRvb2xiYXIobyksdGhpcy5zaGlmdFdhc1ByZXNzZWQ9ITEpLGUudGFyZ2V0KXt2YXIgbixsPWUudGFyZ2V0LmNsYXNzTGlzdDtpZihlLnRhcmdldC5wYXJlbnROb2RlJiZudWxsIT09ZS50YXJnZXQucGFyZW50Tm9kZSYmKG49ZS50YXJnZXQucGFyZW50Tm9kZS5jbGFzc0xpc3QpLCEobC5jb250YWlucyhcImFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3RcIil8fGwuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIil8fGwuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpfHxuJiZuLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy10b29sYmFyXCIpKSl7aWYoYS5jbGllbnRYPVwidG91Y2htb3ZlXCI9PT1lLnR5cGV8fFwidG91Y2hzdGFydFwiPT09ZS50eXBlP2UudG91Y2hlc1swXS5jbGllbnRYOlwidG91Y2hlbmRcIj09PWUudHlwZT9lLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFg6ZS5jbGllbnRYLGEuY2xpZW50WT1cInRvdWNobW92ZVwiPT09ZS50eXBlfHxcInRvdWNoc3RhcnRcIj09PWUudHlwZT9lLnRvdWNoZXNbMF0uY2xpZW50WTpcInRvdWNoZW5kXCI9PT1lLnR5cGU/ZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZOmUuY2xpZW50WSxcIm1vdXNlZG93blwiPT09ZS50eXBlJiYxPT09ZS53aGljaCl7dmFyIGg9YS5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthLnN0YXJ0WD1hLmNsaWVudFgtaC5sZWZ0LGEuc3RhcnRZPWEuY2xpZW50WS1oLnRvcCxhLmRyYWdnZWQ9ITEsYS53Lmdsb2JhbHMubW91c2Vkb3duPSEwfWlmKChcIm1vdXNlbW92ZVwiPT09ZS50eXBlJiYxPT09ZS53aGljaHx8XCJ0b3VjaG1vdmVcIj09PWUudHlwZSkmJihhLmRyYWdnZWQ9ITAsaS5nbG9iYWxzLnBhbkVuYWJsZWQ/KGkuZ2xvYmFscy5zZWxlY3Rpb249bnVsbCxhLncuZ2xvYmFscy5tb3VzZWRvd24mJmEucGFuRHJhZ2dpbmcoe2NvbnRleHQ6YSx6b29tdHlwZTpyLHh5UmF0aW9zOnR9KSk6KGEudy5nbG9iYWxzLm1vdXNlZG93biYmaS5nbG9iYWxzLnpvb21FbmFibGVkfHxhLncuZ2xvYmFscy5tb3VzZWRvd24mJmkuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSYmKGEuc2VsZWN0aW9uPWEuc2VsZWN0aW9uRHJhd2luZyh7Y29udGV4dDphLHpvb210eXBlOnJ9KSkpLFwibW91c2V1cFwiPT09ZS50eXBlfHxcInRvdWNoZW5kXCI9PT1lLnR5cGV8fFwibW91c2VsZWF2ZVwiPT09ZS50eXBlKXt2YXIgYz1hLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Eudy5nbG9iYWxzLm1vdXNlZG93biYmKGEuZW5kWD1hLmNsaWVudFgtYy5sZWZ0LGEuZW5kWT1hLmNsaWVudFktYy50b3AsYS5kcmFnWD1NYXRoLmFicyhhLmVuZFgtYS5zdGFydFgpLGEuZHJhZ1k9TWF0aC5hYnMoYS5lbmRZLWEuc3RhcnRZKSwoaS5nbG9iYWxzLnpvb21FbmFibGVkfHxpLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCkmJmEuc2VsZWN0aW9uRHJhd24oe2NvbnRleHQ6YSx6b29tdHlwZTpyfSksaS5nbG9iYWxzLnBhbkVuYWJsZWQmJmkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmYS5kZWxheWVkUGFuU2Nyb2xsZWQoKSksaS5nbG9iYWxzLnpvb21FbmFibGVkJiZhLmhpZGVTZWxlY3Rpb25SZWN0KHRoaXMuc2VsZWN0aW9uUmVjdCksYS5kcmFnZ2VkPSExLGEudy5nbG9iYWxzLm1vdXNlZG93bj0hMX10aGlzLm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlKCl9fX19LHtrZXk6XCJtYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHRoaXMuc2VsZWN0aW9uUmVjdCl7dmFyIGU9dGhpcy5zZWxlY3Rpb25SZWN0Lm5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZS53aWR0aD4wJiZlLmhlaWdodD4wJiZ0aGlzLnNsRHJhZ2dhYmxlUmVjdC5zZWxlY3RpemUoe3BvaW50czpcImwsIHJcIixwb2ludFNpemU6OCxwb2ludFR5cGU6XCJyZWN0XCJ9KS5yZXNpemUoe2NvbnN0cmFpbnQ6e21pblg6MCxtaW5ZOjAsbWF4WDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLG1heFk6dC5nbG9iYWxzLmdyaWRIZWlnaHR9fSkub24oXCJyZXNpemluZ1wiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwicmVzaXppbmdcIikpfX19LHtrZXk6XCJwcmVzZWxlY3RlZFNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy54eVJhdGlvcztpZighdC5nbG9iYWxzLnpvb21FbmFibGVkKWlmKHZvaWQgMCE9PXQuZ2xvYmFscy5zZWxlY3Rpb24mJm51bGwhPT10Lmdsb2JhbHMuc2VsZWN0aW9uKXRoaXMuZHJhd1NlbGVjdGlvblJlY3QodC5nbG9iYWxzLnNlbGVjdGlvbik7ZWxzZSBpZih2b2lkIDAhPT10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluJiZ2b2lkIDAhPT10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4KXt2YXIgaT0odC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbi10Lmdsb2JhbHMubWluWCkvZS54UmF0aW8sYT17eDppLHk6MCx3aWR0aDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLSh0Lmdsb2JhbHMubWF4WC10LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4KS9lLnhSYXRpby1pLGhlaWdodDp0Lmdsb2JhbHMuZ3JpZEhlaWdodCx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHNlbGVjdGlvbkVuYWJsZWQ6ITB9O3RoaXMuZHJhd1NlbGVjdGlvblJlY3QoYSksdGhpcy5tYWtlU2VsZWN0aW9uUmVjdERyYWdnYWJsZSgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24mJnQuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24odGhpcy5jdHgse3hheGlzOnttaW46dC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1pbixtYXg6dC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnhheGlzLm1heH0seWF4aXM6e319KX19fSx7a2V5OlwiZHJhd1NlbGVjdGlvblJlY3RcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LngsaT10LnksYT10LndpZHRoLHM9dC5oZWlnaHQscj10LnRyYW5zbGF0ZVgsbz12b2lkIDA9PT1yPzA6cixuPXQudHJhbnNsYXRlWSxsPXZvaWQgMD09PW4/MDpuLGg9dGhpcy53LGM9dGhpcy56b29tUmVjdCxkPXRoaXMuc2VsZWN0aW9uUmVjdDtpZih0aGlzLmRyYWdnZWR8fG51bGwhPT1oLmdsb2JhbHMuc2VsZWN0aW9uKXt2YXIgZz17dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK28rXCIsIFwiK2wrXCIpXCJ9O2guZ2xvYmFscy56b29tRW5hYmxlZCYmdGhpcy5kcmFnZ2VkJiYoYTwwJiYoYT0xKSxjLmF0dHIoe3g6ZSx5Omksd2lkdGg6YSxoZWlnaHQ6cyxmaWxsOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5maWxsLmNvbG9yLFwiZmlsbC1vcGFjaXR5XCI6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLmZpbGwub3BhY2l0eSxzdHJva2U6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS5jb2xvcixcInN0cm9rZS13aWR0aFwiOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5zdHJva2Uud2lkdGgsXCJzdHJva2Utb3BhY2l0eVwiOmguY29uZmlnLmNoYXJ0Lnpvb20uem9vbWVkQXJlYS5zdHJva2Uub3BhY2l0eX0pLG0uc2V0QXR0cnMoYy5ub2RlLGcpKSxoLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmKGQuYXR0cih7eDplLHk6aSx3aWR0aDphPjA/YTowLGhlaWdodDpzPjA/czowLGZpbGw6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLmZpbGwuY29sb3IsXCJmaWxsLW9wYWNpdHlcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZmlsbC5vcGFjaXR5LHN0cm9rZTpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS53aWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLmRhc2hBcnJheSxcInN0cm9rZS1vcGFjaXR5XCI6aC5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnN0cm9rZS5vcGFjaXR5fSksbS5zZXRBdHRycyhkLm5vZGUsZykpfX19LHtrZXk6XCJoaWRlU2VsZWN0aW9uUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3QmJnQuYXR0cih7eDowLHk6MCx3aWR0aDowLGhlaWdodDowfSl9fSx7a2V5Olwic2VsZWN0aW9uRHJhd2luZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxpPXQuem9vbXR5cGUsYT10aGlzLncscz1lLHI9dGhpcy5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXMuc3RhcnRYLTEsbj1zLnN0YXJ0WSxsPSExLGg9ITEsYz1zLmNsaWVudFgtci5sZWZ0LW8sZD1zLmNsaWVudFktci50b3AtbixnPXt9O3JldHVybiBNYXRoLmFicyhjK28pPmEuZ2xvYmFscy5ncmlkV2lkdGg/Yz1hLmdsb2JhbHMuZ3JpZFdpZHRoLW86cy5jbGllbnRYLXIubGVmdDwwJiYoYz1vKSxvPnMuY2xpZW50WC1yLmxlZnQmJihsPSEwLGM9TWF0aC5hYnMoYykpLG4+cy5jbGllbnRZLXIudG9wJiYoaD0hMCxkPU1hdGguYWJzKGQpKSxnPVwieFwiPT09aT97eDpsP28tYzpvLHk6MCx3aWR0aDpjLGhlaWdodDphLmdsb2JhbHMuZ3JpZEhlaWdodH06XCJ5XCI9PT1pP3t4OjAseTpoP24tZDpuLHdpZHRoOmEuZ2xvYmFscy5ncmlkV2lkdGgsaGVpZ2h0OmR9Ont4Omw/by1jOm8seTpoP24tZDpuLHdpZHRoOmMsaGVpZ2h0OmR9LHMuZHJhd1NlbGVjdGlvblJlY3QoZykscy5zZWxlY3Rpb25EcmFnZ2luZyhcInJlc2l6aW5nXCIpLGd9fSx7a2V5Olwic2VsZWN0aW9uRHJhZ2dpbmdcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT10aGlzLncscz10aGlzLnh5UmF0aW9zLHI9dGhpcy5zZWxlY3Rpb25SZWN0LG89MDtcInJlc2l6aW5nXCI9PT10JiYobz0zMCk7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQoci5ub2RlLmdldEF0dHJpYnV0ZSh0KSl9LGw9e3g6bihcInhcIikseTpuKFwieVwiKSx3aWR0aDpuKFwid2lkdGhcIiksaGVpZ2h0Om4oXCJoZWlnaHRcIil9O2EuZ2xvYmFscy5zZWxlY3Rpb249bCxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uJiZhLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCYmKGNsZWFyVGltZW91dCh0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25SZXNpemVUaW1lciksdGhpcy53Lmdsb2JhbHMuc2VsZWN0aW9uUmVzaXplVGltZXI9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIHQ9aS5ncmlkUmVjdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXIubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXt4YXhpczp7bWluOmEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rKGUubGVmdC10LmxlZnQpKnMueFJhdGlvLG1heDphLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluKyhlLnJpZ2h0LXQubGVmdCkqcy54UmF0aW99LHlheGlzOnttaW46YS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbisodC5ib3R0b20tZS5ib3R0b20pKnMueVJhdGlvWzBdLG1heDphLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4LShlLnRvcC10LnRvcCkqcy55UmF0aW9bMF19fTthLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKGkuY3R4LG8pLGEuY29uZmlnLmNoYXJ0LmJydXNoLmVuYWJsZWQmJnZvaWQgMCE9PWEuY29uZmlnLmNoYXJ0LmV2ZW50cy5icnVzaFNjcm9sbGVkJiZhLmNvbmZpZy5jaGFydC5ldmVudHMuYnJ1c2hTY3JvbGxlZChpLmN0eCxvKX0pLG8pKX19LHtrZXk6XCJzZWxlY3Rpb25EcmF3blwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxpPXQuem9vbXR5cGUsYT10aGlzLncscz1lLHI9dGhpcy54eVJhdGlvcyxvPXRoaXMuY3R4LnRvb2xiYXI7aWYocy5zdGFydFg+cy5lbmRYKXt2YXIgbj1zLnN0YXJ0WDtzLnN0YXJ0WD1zLmVuZFgscy5lbmRYPW59aWYocy5zdGFydFk+cy5lbmRZKXt2YXIgbD1zLnN0YXJ0WTtzLnN0YXJ0WT1zLmVuZFkscy5lbmRZPWx9dmFyIGg9dm9pZCAwLGM9dm9pZCAwO2EuZ2xvYmFscy5pc1JhbmdlQmFyPyhoPWEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rcy5zdGFydFgqci5pbnZlcnRlZFlSYXRpbyxjPWEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNaW4rcy5lbmRYKnIuaW52ZXJ0ZWRZUmF0aW8pOihoPWEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rcy5zdGFydFgqci54UmF0aW8sYz1hLmdsb2JhbHMueEF4aXNTY2FsZS5uaWNlTWluK3MuZW5kWCpyLnhSYXRpbyk7dmFyIGQ9W10sZz1bXTtpZihhLmNvbmZpZy55YXhpcy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2QucHVzaChhLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5uaWNlTWF4LXIueVJhdGlvW2VdKnMuc3RhcnRZKSxnLnB1c2goYS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0ubmljZU1heC1yLnlSYXRpb1tlXSpzLmVuZFkpfSkpLHMuZHJhZ2dlZCYmKHMuZHJhZ1g+MTB8fHMuZHJhZ1k+MTApJiZoIT09YylpZihhLmdsb2JhbHMuem9vbUVuYWJsZWQpe3ZhciB1PXguY2xvbmUoYS5nbG9iYWxzLmluaXRpYWxDb25maWcueWF4aXMpLHA9eC5jbG9uZShhLmdsb2JhbHMuaW5pdGlhbENvbmZpZy54YXhpcyk7aWYoYS5nbG9iYWxzLnpvb21lZD0hMCxhLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihoPU1hdGguZmxvb3IoaCksYz1NYXRoLmZsb29yKGMpLGg8MSYmKGg9MSxjPWEuZ2xvYmFscy5kYXRhUG9pbnRzKSxjLWg8MiYmKGM9aCsxKSksXCJ4eVwiIT09aSYmXCJ4XCIhPT1pfHwocD17bWluOmgsbWF4OmN9KSxcInh5XCIhPT1pJiZcInlcIiE9PWl8fHUuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt1W2VdLm1pbj1nW2VdLHVbZV0ubWF4PWRbZV19KSksYS5jb25maWcuY2hhcnQuem9vbS5hdXRvU2NhbGVZYXhpcyl7dmFyIGY9bmV3IF8ocy5jdHgpO3U9Zi5hdXRvU2NhbGVZKHMuY3R4LHUse3hheGlzOnB9KX1pZihvKXt2YXIgYj1vLmdldEJlZm9yZVpvb21SYW5nZShwLHUpO2ImJihwPWIueGF4aXM/Yi54YXhpczpwLHU9Yi55YXhpcz9iLnlheGlzOnUpfXZhciB2PXt4YXhpczpwfTthLmNvbmZpZy5jaGFydC5ncm91cHx8KHYueWF4aXM9dSkscy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh2LCExLHMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy56b29tZWQmJm8uem9vbUNhbGxiYWNrKHAsdSl9ZWxzZSBpZihhLmdsb2JhbHMuc2VsZWN0aW9uRW5hYmxlZCl7dmFyIG0seT1udWxsO209e21pbjpoLG1heDpjfSxcInh5XCIhPT1pJiZcInlcIiE9PWl8fCh5PXguY2xvbmUoYS5jb25maWcueWF4aXMpKS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3lbZV0ubWluPWdbZV0seVtlXS5tYXg9ZFtlXX0pKSxhLmdsb2JhbHMuc2VsZWN0aW9uPXMuc2VsZWN0aW9uLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24mJmEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24ocy5jdHgse3hheGlzOm0seWF4aXM6eX0pfX19LHtrZXk6XCJwYW5EcmFnZ2luZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY29udGV4dCxpPXRoaXMudyxhPWU7aWYodm9pZCAwIT09aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi54KXt2YXIgcz1pLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLngtYS5jbGllbnRYLHI9aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbi55LWEuY2xpZW50WTtNYXRoLmFicyhzKT5NYXRoLmFicyhyKSYmcz4wP3RoaXMubW92ZURpcmVjdGlvbj1cImxlZnRcIjpNYXRoLmFicyhzKT5NYXRoLmFicyhyKSYmczwwP3RoaXMubW92ZURpcmVjdGlvbj1cInJpZ2h0XCI6TWF0aC5hYnMocik+TWF0aC5hYnMocykmJnI+MD90aGlzLm1vdmVEaXJlY3Rpb249XCJ1cFwiOk1hdGguYWJzKHIpPk1hdGguYWJzKHMpJiZyPDAmJih0aGlzLm1vdmVEaXJlY3Rpb249XCJkb3duXCIpfWkuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb249e3g6YS5jbGllbnRYLHk6YS5jbGllbnRZfTt2YXIgbz1pLmdsb2JhbHMuaXNSYW5nZUJhcj9pLmdsb2JhbHMubWluWTppLmdsb2JhbHMubWluWCxuPWkuZ2xvYmFscy5pc1JhbmdlQmFyP2kuZ2xvYmFscy5tYXhZOmkuZ2xvYmFscy5tYXhYO2kuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8YS5wYW5TY3JvbGxlZChvLG4pfX0se2tleTpcImRlbGF5ZWRQYW5TY3JvbGxlZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLm1pblgsaT10Lmdsb2JhbHMubWF4WCxhPSh0Lmdsb2JhbHMubWF4WC10Lmdsb2JhbHMubWluWCkvMjtcImxlZnRcIj09PXRoaXMubW92ZURpcmVjdGlvbj8oZT10Lmdsb2JhbHMubWluWCthLGk9dC5nbG9iYWxzLm1heFgrYSk6XCJyaWdodFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uJiYoZT10Lmdsb2JhbHMubWluWC1hLGk9dC5nbG9iYWxzLm1heFgtYSksZT1NYXRoLmZsb29yKGUpLGk9TWF0aC5mbG9vcihpKSx0aGlzLnVwZGF0ZVNjcm9sbGVkQ2hhcnQoe3hheGlzOnttaW46ZSxtYXg6aX19LGUsaSl9fSx7a2V5OlwicGFuU2Nyb2xsZWRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMueHlSYXRpb3Mscz14LmNsb25lKGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKSxyPWEueFJhdGlvLG89aS5nbG9iYWxzLm1pblgsbj1pLmdsb2JhbHMubWF4WDtpLmdsb2JhbHMuaXNSYW5nZUJhciYmKHI9YS5pbnZlcnRlZFlSYXRpbyxvPWkuZ2xvYmFscy5taW5ZLG49aS5nbG9iYWxzLm1heFkpLFwibGVmdFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uPyh0PW8raS5nbG9iYWxzLmdyaWRXaWR0aC8xNSpyLGU9bitpLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KnIpOlwicmlnaHRcIj09PXRoaXMubW92ZURpcmVjdGlvbiYmKHQ9by1pLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KnIsZT1uLWkuZ2xvYmFscy5ncmlkV2lkdGgvMTUqciksaS5nbG9iYWxzLmlzUmFuZ2VCYXJ8fCh0PGkuZ2xvYmFscy5pbml0aWFsTWluWHx8ZT5pLmdsb2JhbHMuaW5pdGlhbE1heFgpJiYodD1vLGU9bik7dmFyIGw9e21pbjp0LG1heDplfTtpLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzJiYocz1uZXcgXyh0aGlzLmN0eCkuYXV0b1NjYWxlWSh0aGlzLmN0eCxzLHt4YXhpczpsfSkpO3ZhciBoPXt4YXhpczp7bWluOnQsbWF4OmV9fTtpLmNvbmZpZy5jaGFydC5ncm91cHx8KGgueWF4aXM9cyksdGhpcy51cGRhdGVTY3JvbGxlZENoYXJ0KGgsdCxlKX19LHtrZXk6XCJ1cGRhdGVTY3JvbGxlZENoYXJ0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudzt0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHQsITEsITEpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCYmYS5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkKHRoaXMuY3R4LHt4YXhpczp7bWluOmUsbWF4Oml9fSl9fV0pLGl9KCksZHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eH1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0TmVhcmVzdFZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaG92ZXJBcmVhLGk9dC5lbEdyaWQsYT10LmNsaWVudFgscz10LmNsaWVudFkscj10aGlzLncsbz1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49by53aWR0aCxsPW8uaGVpZ2h0LGg9bi8oci5nbG9iYWxzLmRhdGFQb2ludHMtMSksYz1sL3IuZ2xvYmFscy5kYXRhUG9pbnRzLGQ9dGhpcy5oYXNCYXJzKCk7IXIuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIWR8fHIuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpY3x8KGg9bi9yLmdsb2JhbHMuZGF0YVBvaW50cyk7dmFyIGc9YS1vLmxlZnQtci5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLHU9cy1vLnRvcDtnPDB8fHU8MHx8Zz5ufHx1Pmw/KGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXpvb21cIiksZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctcGFuXCIpKTpyLmdsb2JhbHMuem9vbUVuYWJsZWQ/KGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXBhblwiKSxlLmNsYXNzTGlzdC5hZGQoXCJob3ZlcmluZy16b29tXCIpKTpyLmdsb2JhbHMucGFuRW5hYmxlZCYmKGUuY2xhc3NMaXN0LnJlbW92ZShcImhvdmVyaW5nLXpvb21cIiksZS5jbGFzc0xpc3QuYWRkKFwiaG92ZXJpbmctcGFuXCIpKTt2YXIgcD1NYXRoLnJvdW5kKGcvaCksZj1NYXRoLmZsb29yKHUvYyk7ZCYmIXIuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHA9TWF0aC5jZWlsKGcvaCkscC09MSk7dmFyIGI9bnVsbCx2PW51bGwsbT1yLmdsb2JhbHMuc2VyaWVzWHZhbHVlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHguaXNOdW1iZXIodCl9KSl9KSkseT1yLmdsb2JhbHMuc2VyaWVzWXZhbHVlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHguaXNOdW1iZXIodCl9KSl9KSk7aWYoci5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciB3PXRoaXMudHRDdHguZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaz1nKih3LndpZHRoL24pLEE9dSoody5oZWlnaHQvbCk7Yj0odj10aGlzLmNsb3Nlc3RJbk11bHRpQXJyYXkoayxBLG0seSkpLmluZGV4LHA9di5qLG51bGwhPT1iJiYobT1yLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1tiXSxwPSh2PXRoaXMuY2xvc2VzdEluQXJyYXkoayxtKSkuaW5kZXgpfXJldHVybiByLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1udWxsPT09Yj8tMTpiLCghcHx8cDwxKSYmKHA9MCksci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9yLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1mOnIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PXAse2NhcHR1cmVkU2VyaWVzOmIsajpyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2Y6cCxob3Zlclg6Zyxob3Zlclk6dX19fSx7a2V5OlwiY2xvc2VzdEluTXVsdGlBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPTAsbz1udWxsLG49LTE7cy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MT9yPXRoaXMuZ2V0Rmlyc3RBY3RpdmVYQXJyYXkoaSk6bz0wO3ZhciBsPWlbcl1bMF0saD1NYXRoLmFicyh0LWwpO2lmKGkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe3ZhciBhPU1hdGguYWJzKHQtZSk7YTw9aCYmKGg9YSxuPWkpfSkpfSkpLC0xIT09bil7dmFyIGM9YVtyXVtuXSxkPU1hdGguYWJzKGUtYyk7bz1yLGEuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgYT1NYXRoLmFicyhlLXRbbl0pO2E8PWQmJihkPWEsbz1pKX0pKX1yZXR1cm57aW5kZXg6byxqOm59fX0se2tleTpcImdldEZpcnN0QWN0aXZlWEFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTAsYT10Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+MD9lOi0xfSkpLHM9MDtzPGEubGVuZ3RoO3MrKylpZigtMSE9PWFbc10mJi0xPT09ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihzKSYmLTE9PT1lLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHMpKXtpPWFbc107YnJlYWt9cmV0dXJuIGl9fSx7a2V5OlwiY2xvc2VzdEluQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1lWzBdLGE9bnVsbCxzPU1hdGguYWJzKHQtaSkscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1NYXRoLmFicyh0LWVbcl0pO288cyYmKHM9byxhPXIpfXJldHVybntpbmRleDphfX19LHtrZXk6XCJpc1hvdmVybGFwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9W10saT10aGlzLncuZ2xvYmFscy5zZXJpZXNYLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXRbMF19KSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIGE9MDthPGkubGVuZ3RoLTE7YSsrKXZvaWQgMCE9PWlbYV1bdF0mJnZvaWQgMCE9PWlbYSsxXVt0XSYmaVthXVt0XSE9PWlbYSsxXVt0XSYmZS5wdXNoKFwidW5FcXVhbFwiKTtyZXR1cm4gMD09PWUubGVuZ3RofX0se2tleTpcImlzSW5pdGlhbFNlcmllc1NhbWVMZW5cIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD0hMCxlPXRoaXMudy5nbG9iYWxzLmluaXRpYWxTZXJpZXMsaT0wO2k8ZS5sZW5ndGgtMTtpKyspaWYoZVtpXS5kYXRhLmxlbmd0aCE9PWVbaSsxXS5kYXRhLmxlbmd0aCl7dD0hMTticmVha31yZXR1cm4gdH19LHtrZXk6XCJnZXRCYXJzSGVpZ2h0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHUodCkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UuZ2V0QkJveCgpLmhlaWdodH0pLDApfX0se2tleTpcImdldEVsTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0P3RoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCA+ICpcIikpOnRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXAgPiAqXCIpfX0se2tleTpcImdldEFsbE1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIik7KHQ9dSh0KSkuc29ydCgoZnVuY3Rpb24odCxlKXt2YXIgaT1OdW1iZXIodC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSksYT1OdW1iZXIoZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSk7cmV0dXJuIGE8aT8xOmE+aT8tMTowfSkpO3ZhciBlPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UucHVzaCh0LnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1tYXJrZXJcIikpfSkpLGV9fSx7a2V5OlwiaGFzTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldEVsTWFya2Vycyh0KS5sZW5ndGg+MH19LHtrZXk6XCJnZXRFbEJhcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzLCAgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzLCAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcywgLmFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzXCIpfX0se2tleTpcImhhc0JhcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEVsQmFycygpLmxlbmd0aD4wfX0se2tleTpcImdldEhvdmVyTWFya2VyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9ZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVt0XStlLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLGl9fSx7a2V5OlwidG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3Vwc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMudHRDdHg7MD09PWkuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcy5sZW5ndGgmJihpLmFsbFRvb2x0aXBTZXJpZXNHcm91cHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpKTtmb3IodmFyIGE9aS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzLHM9MDtzPGEubGVuZ3RoO3MrKylcImVuYWJsZVwiPT09dD8oYVtzXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksYVtzXS5zdHlsZS5kaXNwbGF5PWUuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSk6KGFbc10uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLGFbc10uc3R5bGUuZGlzcGxheT1cIm5vbmVcIil9fV0pLHR9KCksZ3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuY3R4PWUuY3R4LHRoaXMudHRDdHg9ZSx0aGlzLnRvb2x0aXBVdGlsPW5ldyBkdChlKX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1Nlcmllc1RleHRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zaGFyZWQsaT12b2lkIDA9PT1lfHxlLGE9dC50dEl0ZW1zLHM9dC5pLHI9dm9pZCAwPT09cz8wOnMsbz10Lmosbj12b2lkIDA9PT1vP251bGw6byxsPXQueTEsaD10LnkyLGM9dC5lLGQ9dGhpcy53O3ZvaWQgMCE9PWQuY29uZmlnLnRvb2x0aXAuY3VzdG9tP3RoaXMuaGFuZGxlQ3VzdG9tVG9vbHRpcCh7aTpyLGo6bix5MTpsLHkyOmgsdzpkfSk6dGhpcy50b2dnbGVBY3RpdmVJbmFjdGl2ZVNlcmllcyhpKTt2YXIgZz10aGlzLmdldFZhbHVlc1RvUHJpbnQoe2k6cixqOm59KTt0aGlzLnByaW50TGFiZWxzKHtpOnIsajpuLHZhbHVlczpnLHR0SXRlbXM6YSxzaGFyZWQ6aSxlOmN9KTt2YXIgdT10aGlzLnR0Q3R4LmdldEVsVG9vbHRpcCgpO3RoaXMudHRDdHgudG9vbHRpcFJlY3QudHRXaWR0aD11LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLHRoaXMudHRDdHgudG9vbHRpcFJlY3QudHRIZWlnaHQ9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9fSx7a2V5OlwicHJpbnRMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaSxhPXRoaXMscz10Lmkscj10Lmosbz10LnZhbHVlcyxuPXQudHRJdGVtcyxsPXQuc2hhcmVkLGg9dC5lLGM9dGhpcy53LGQ9W10sZz1mdW5jdGlvbih0KXtyZXR1cm4gYy5nbG9iYWxzLnNlcmllc0dvYWxzW3RdJiZjLmdsb2JhbHMuc2VyaWVzR29hbHNbdF1bcl0mJkFycmF5LmlzQXJyYXkoYy5nbG9iYWxzLnNlcmllc0dvYWxzW3RdW3JdKX0sdT1vLnhWYWwscD1vLnpWYWwsZj1vLnhBeGlzVFRWYWwseD1cIlwiLGI9Yy5nbG9iYWxzLmNvbG9yc1tzXTtudWxsIT09ciYmYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkJiYoYj1jLmdsb2JhbHMuY29sb3JzW3JdKTtmb3IodmFyIHY9ZnVuY3Rpb24odCxvKXt2YXIgdj1hLmdldEZvcm1hdHRlcnMocyk7eD1hLmdldFNlcmllc05hbWUoe2ZuOnYueUxiVGl0bGVGb3JtYXR0ZXIsaW5kZXg6cyxzZXJpZXNJbmRleDpzLGo6cn0pLFwidHJlZW1hcFwiPT09Yy5jb25maWcuY2hhcnQudHlwZSYmKHg9di55TGJUaXRsZUZvcm1hdHRlcihTdHJpbmcoYy5jb25maWcuc2VyaWVzW3NdLmRhdGFbcl0ueCkse3NlcmllczpjLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3OmN9KSk7dmFyIG09Yy5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXI/bzp0O2lmKGMuZ2xvYmFscy5heGlzQ2hhcnRzKXt2YXIgeT1mdW5jdGlvbih0KXt2YXIgZSxpLGEscztyZXR1cm4gYy5nbG9iYWxzLmlzUmFuZ2VEYXRhP3YueUxiRm9ybWF0dGVyKG51bGw9PT0oZT1jLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydCl8fHZvaWQgMD09PWV8fG51bGw9PT0oaT1lW3RdKXx8dm9pZCAwPT09aT92b2lkIDA6aVtyXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0LHNlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6cix3OmN9KStcIiAtIFwiK3YueUxiRm9ybWF0dGVyKG51bGw9PT0oYT1jLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQpfHx2b2lkIDA9PT1hfHxudWxsPT09KHM9YVt0XSl8fHZvaWQgMD09PXM/dm9pZCAwOnNbcl0se3NlcmllczpjLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpyLHc6Y30pOnYueUxiRm9ybWF0dGVyKGMuZ2xvYmFscy5zZXJpZXNbdF1bcl0se3NlcmllczpjLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnQsZGF0YVBvaW50SW5kZXg6cix3OmN9KX07aWYobCl2PWEuZ2V0Rm9ybWF0dGVycyhtKSx4PWEuZ2V0U2VyaWVzTmFtZSh7Zm46di55TGJUaXRsZUZvcm1hdHRlcixpbmRleDptLHNlcmllc0luZGV4OnMsajpyfSksYj1jLmdsb2JhbHMuY29sb3JzW21dLGk9eShtKSxnKG0pJiYoZD1jLmdsb2JhbHMuc2VyaWVzR29hbHNbbV1bcl0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm57YXR0cnM6dCx2YWw6di55TGJGb3JtYXR0ZXIodC52YWx1ZSx7c2VyaWVzSW5kZXg6bSxkYXRhUG9pbnRJbmRleDpyLHc6Y30pfX0pKSk7ZWxzZXt2YXIgdyxrPW51bGw9PWh8fG51bGw9PT0odz1oLnRhcmdldCl8fHZvaWQgMD09PXc/dm9pZCAwOncuZ2V0QXR0cmlidXRlKFwiZmlsbFwiKTtrJiYoYj0tMSE9PWsuaW5kZXhPZihcInVybFwiKT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGsuc3Vic3RyKDQpLnNsaWNlKDAsLTEpKS5jaGlsZE5vZGVzWzBdLmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKTprKSxpPXkocyksZyhzKSYmQXJyYXkuaXNBcnJheShjLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0pJiYoZD1jLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm57YXR0cnM6dCx2YWw6di55TGJGb3JtYXR0ZXIodC52YWx1ZSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6Y30pfX0pKSl9fW51bGw9PT1yJiYoaT12LnlMYkZvcm1hdHRlcihjLmdsb2JhbHMuc2VyaWVzW3NdLGUoZSh7fSxjKSx7fSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpzfSkpKSxhLkRPTUhhbmRsaW5nKHtpOnMsdDptLGo6cix0dEl0ZW1zOm4sdmFsdWVzOnt2YWw6aSxnb2FsVmFsczpkLHhWYWw6dSx4QXhpc1RUVmFsOmYselZhbDpwfSxzZXJpZXNOYW1lOngsc2hhcmVkOmwscENvbG9yOmJ9KX0sbT0wLHk9Yy5nbG9iYWxzLnNlcmllcy5sZW5ndGgtMTttPGMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO20rKyx5LS0pdihtLHkpfX0se2tleTpcImdldEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMudyxhPWkuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdO3JldHVybiB2b2lkIDAhPT1pLmdsb2JhbHMudHRWYWw/QXJyYXkuaXNBcnJheShpLmdsb2JhbHMudHRWYWwpPyhhPWkuZ2xvYmFscy50dFZhbFt0XSYmaS5nbG9iYWxzLnR0VmFsW3RdLmZvcm1hdHRlcixlPWkuZ2xvYmFscy50dFZhbFt0XSYmaS5nbG9iYWxzLnR0VmFsW3RdLnRpdGxlJiZpLmdsb2JhbHMudHRWYWxbdF0udGl0bGUuZm9ybWF0dGVyKTooYT1pLmdsb2JhbHMudHRWYWwuZm9ybWF0dGVyLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuZ2xvYmFscy50dFZhbC50aXRsZS5mb3JtYXR0ZXImJihlPWkuZ2xvYmFscy50dFZhbC50aXRsZS5mb3JtYXR0ZXIpKTplPWkuY29uZmlnLnRvb2x0aXAueS50aXRsZS5mb3JtYXR0ZXIsXCJmdW5jdGlvblwiIT10eXBlb2YgYSYmKGE9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0/aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF06ZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiYoZT1mdW5jdGlvbih0KXtyZXR1cm4gdH0pLHt5TGJGb3JtYXR0ZXI6YSx5TGJUaXRsZUZvcm1hdHRlcjplfX19LHtrZXk6XCJnZXRTZXJpZXNOYW1lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5mbixpPXQuaW5kZXgsYT10LnNlcmllc0luZGV4LHM9dC5qLHI9dGhpcy53O3JldHVybiBlKFN0cmluZyhyLmdsb2JhbHMuc2VyaWVzTmFtZXNbaV0pLHtzZXJpZXM6ci5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDphLGRhdGFQb2ludEluZGV4OnMsdzpyfSl9fSx7a2V5OlwiRE9NSGFuZGxpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt0Lmk7dmFyIGU9dC50LGk9dC5qLGE9dC50dEl0ZW1zLHM9dC52YWx1ZXMscj10LnNlcmllc05hbWUsbz10LnNoYXJlZCxuPXQucENvbG9yLGw9dGhpcy53LGg9dGhpcy50dEN0eCxjPXMudmFsLGQ9cy5nb2FsVmFscyxnPXMueFZhbCx1PXMueEF4aXNUVFZhbCxwPXMuelZhbCxmPW51bGw7Zj1hW2VdLmNoaWxkcmVuLGwuY29uZmlnLnRvb2x0aXAuZmlsbFNlcmllc0NvbG9yJiYoYVtlXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9bixmWzBdLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpLGguc2hvd1Rvb2x0aXBUaXRsZSYmKG51bGw9PT1oLnRvb2x0aXBUaXRsZSYmKGgudG9vbHRpcFRpdGxlPWwuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlXCIpKSxoLnRvb2x0aXBUaXRsZS5pbm5lckhUTUw9ZyksaC5pc1hBeGlzVG9vbHRpcEVuYWJsZWQmJihoLnhheGlzVG9vbHRpcFRleHQuaW5uZXJIVE1MPVwiXCIhPT11P3U6Zyk7dmFyIHg9YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktbGFiZWxcIik7eCYmKHguaW5uZXJIVE1MPXJ8fFwiXCIpO3ZhciBiPWFbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlXCIpO2ImJihiLmlubmVySFRNTD12b2lkIDAhPT1jP2M6XCJcIiksZlswXSYmZlswXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyXCIpJiYobC5jb25maWcudG9vbHRpcC5tYXJrZXIuZmlsbENvbG9ycyYmQXJyYXkuaXNBcnJheShsLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzKSYmKG49bC5jb25maWcudG9vbHRpcC5tYXJrZXIuZmlsbENvbG9yc1tlXSksZlswXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9biksbC5jb25maWcudG9vbHRpcC5tYXJrZXIuc2hvd3x8KGZbMF0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIik7dmFyIHY9YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsXCIpLG09YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlXCIpO2lmKGQubGVuZ3RoJiZsLmdsb2JhbHMuc2VyaWVzR29hbHNbZV0pe3ZhciB5PWZ1bmN0aW9uKCl7dmFyIHQ9XCI8ZGl2ID5cIixlPVwiPGRpdj5cIjtkLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7dCs9JyA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleFwiPjxzcGFuIGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogJy5jb25jYXQoaS5hdHRycy5zdHJva2VDb2xvciwnOyBoZWlnaHQ6IDNweDsgYm9yZGVyLXJhZGl1czogMDsgdG9wOiA1cHg7XCI+PC9zcGFuPiAnKS5jb25jYXQoaS5hdHRycy5uYW1lLFwiPC9kaXY+XCIpLGUrPVwiPGRpdj5cIi5jb25jYXQoaS52YWwsXCI8L2Rpdj5cIil9KSksdi5pbm5lckhUTUw9dCtcIjwvZGl2PlwiLG0uaW5uZXJIVE1MPWUrXCI8L2Rpdj5cIn07bz9sLmdsb2JhbHMuc2VyaWVzR29hbHNbZV1baV0mJkFycmF5LmlzQXJyYXkobC5nbG9iYWxzLnNlcmllc0dvYWxzW2VdW2ldKT95KCk6KHYuaW5uZXJIVE1MPVwiXCIsbS5pbm5lckhUTUw9XCJcIik6eSgpfWVsc2Ugdi5pbm5lckhUTUw9XCJcIixtLmlubmVySFRNTD1cIlwiO251bGwhPT1wJiYoYVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotbGFiZWxcIikuaW5uZXJIVE1MPWwuY29uZmlnLnRvb2x0aXAuei50aXRsZSxhW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZVwiKS5pbm5lckhUTUw9dm9pZCAwIT09cD9wOlwiXCIpO28mJmZbMF0mJihudWxsPT1jfHxsLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xfHxsLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xP2ZbMF0ucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiOmZbMF0ucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5PWwuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSl9fSx7a2V5OlwidG9nZ2xlQWN0aXZlSW5hY3RpdmVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7aWYodCl0aGlzLnRvb2x0aXBVdGlsLnRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMoXCJlbmFibGVcIik7ZWxzZXt0aGlzLnRvb2x0aXBVdGlsLnRvZ2dsZUFsbFRvb2x0aXBTZXJpZXNHcm91cHMoXCJkaXNhYmxlXCIpO3ZhciBpPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cFwiKTtpJiYoaS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksaS5zdHlsZS5kaXNwbGF5PWUuY29uZmlnLnRvb2x0aXAuaXRlbXMuZGlzcGxheSl9fX0se2tleTpcImdldFZhbHVlc1RvUHJpbnRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LmosYT10aGlzLncscz10aGlzLmN0eC5zZXJpZXMuZmlsdGVyZWRTZXJpZXNYKCkscj1cIlwiLG89XCJcIixuPW51bGwsbD1udWxsLGg9e3NlcmllczphLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OmF9LGM9YS5nbG9iYWxzLnR0WkZvcm1hdHRlcjtudWxsPT09aT9sPWEuZ2xvYmFscy5zZXJpZXNbZV06YS5nbG9iYWxzLmlzWE51bWVyaWMmJlwidHJlZW1hcFwiIT09YS5jb25maWcuY2hhcnQudHlwZT8ocj1zW2VdW2ldLDA9PT1zW2VdLmxlbmd0aCYmKHI9c1t0aGlzLnRvb2x0aXBVdGlsLmdldEZpcnN0QWN0aXZlWEFycmF5KHMpXVtpXSkpOnI9dm9pZCAwIT09YS5nbG9iYWxzLmxhYmVsc1tpXT9hLmdsb2JhbHMubGFiZWxzW2ldOlwiXCI7dmFyIGQ9cjthLmdsb2JhbHMuaXNYTnVtZXJpYyYmXCJkYXRldGltZVwiPT09YS5jb25maWcueGF4aXMudHlwZT9yPW5ldyBNKHRoaXMuY3R4KS54TGFiZWxGb3JtYXQoYS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyLGQsZCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmN0eCkuZm9ybWF0RGF0ZSx3OnRoaXMud30pOnI9YS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9hLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXShkLGgpOmEuZ2xvYmFscy54TGFiZWxGb3JtYXR0ZXIoZCxoKTtyZXR1cm4gdm9pZCAwIT09YS5jb25maWcudG9vbHRpcC54LmZvcm1hdHRlciYmKHI9YS5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyKGQsaCkpLGEuZ2xvYmFscy5zZXJpZXNaLmxlbmd0aD4wJiZhLmdsb2JhbHMuc2VyaWVzWltlXS5sZW5ndGg+MCYmKG49YyhhLmdsb2JhbHMuc2VyaWVzWltlXVtpXSxhKSksbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlcj9hLmdsb2JhbHMueGF4aXNUb29sdGlwRm9ybWF0dGVyKGQsaCk6cix7dmFsOkFycmF5LmlzQXJyYXkobCk/bC5qb2luKFwiIFwiKTpsLHhWYWw6QXJyYXkuaXNBcnJheShyKT9yLmpvaW4oXCIgXCIpOnIseEF4aXNUVFZhbDpBcnJheS5pc0FycmF5KG8pP28uam9pbihcIiBcIik6byx6VmFsOm59fX0se2tleTpcImhhbmRsZUN1c3RvbVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LmosYT10LnkxLHM9dC55MixyPXQudyxvPXRoaXMudHRDdHguZ2V0RWxUb29sdGlwKCksbj1yLmNvbmZpZy50b29sdGlwLmN1c3RvbTtBcnJheS5pc0FycmF5KG4pJiZuW2VdJiYobj1uW2VdKSxvLmlubmVySFRNTD1uKHtjdHg6dGhpcy5jdHgsc2VyaWVzOnIuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHkxOmEseTI6cyx3OnJ9KX19XSksdH0oKSx1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eCx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJtb3ZlWENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxpPXRoaXMudHRDdHgsYT10aGlzLncscz1pLmdldEVsWENyb3NzaGFpcnMoKSxyPXQtaS54Y3Jvc3NoYWlyc1dpZHRoLzIsbz1hLmdsb2JhbHMubGFiZWxzLnNsaWNlKCkubGVuZ3RoO2lmKG51bGwhPT1lJiYocj1hLmdsb2JhbHMuZ3JpZFdpZHRoL28qZSksbnVsbD09PXN8fGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fChzLnNldEF0dHJpYnV0ZShcInhcIixyKSxzLnNldEF0dHJpYnV0ZShcIngxXCIscikscy5zZXRBdHRyaWJ1dGUoXCJ4MlwiLHIpLHMuc2V0QXR0cmlidXRlKFwieTJcIixhLmdsb2JhbHMuZ3JpZEhlaWdodCkscy5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIikpLHI8MCYmKHI9MCkscj5hLmdsb2JhbHMuZ3JpZFdpZHRoJiYocj1hLmdsb2JhbHMuZ3JpZFdpZHRoKSxpLmlzWEF4aXNUb29sdGlwRW5hYmxlZCl7dmFyIG49cjtcInRpY2tXaWR0aFwiIT09YS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCYmXCJiYXJXaWR0aFwiIT09YS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aHx8KG49citpLnhjcm9zc2hhaXJzV2lkdGgvMiksdGhpcy5tb3ZlWEF4aXNUb29sdGlwKG4pfX19LHtrZXk6XCJtb3ZlWUNyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnR0Q3R4O251bGwhPT1lLnljcm9zc2hhaXJzJiZtLnNldEF0dHJzKGUueWNyb3NzaGFpcnMse3kxOnQseTI6dH0pLG51bGwhPT1lLnljcm9zc2hhaXJzSGlkZGVuJiZtLnNldEF0dHJzKGUueWNyb3NzaGFpcnNIaWRkZW4se3kxOnQseTI6dH0pfX0se2tleTpcIm1vdmVYQXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLnR0Q3R4O2lmKG51bGwhPT1pLnhheGlzVG9vbHRpcCYmMCE9PWkueGNyb3NzaGFpcnNXaWR0aCl7aS54YXhpc1Rvb2x0aXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpO3ZhciBhPWkueGF4aXNPZmZZK2UuY29uZmlnLnhheGlzLnRvb2x0aXAub2Zmc2V0WStlLmdsb2JhbHMudHJhbnNsYXRlWSsxK2UuY29uZmlnLnhheGlzLm9mZnNldFk7aWYodC09aS54YXhpc1Rvb2x0aXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgvMiwhaXNOYU4odCkpe3QrPWUuZ2xvYmFscy50cmFuc2xhdGVYO3ZhciBzO3M9bmV3IG0odGhpcy5jdHgpLmdldFRleHRSZWN0cyhpLnhheGlzVG9vbHRpcFRleHQuaW5uZXJIVE1MKSxpLnhheGlzVG9vbHRpcFRleHQuc3R5bGUubWluV2lkdGg9cy53aWR0aCtcInB4XCIsaS54YXhpc1Rvb2x0aXAuc3R5bGUubGVmdD10K1wicHhcIixpLnhheGlzVG9vbHRpcC5zdHlsZS50b3A9YStcInB4XCJ9fX19LHtrZXk6XCJtb3ZlWUF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy50dEN0eDtudWxsPT09aS55YXhpc1RURWxzJiYoaS55YXhpc1RURWxzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXBcIikpO3ZhciBhPXBhcnNlSW50KGkueWNyb3NzaGFpcnNIaWRkZW4uZ2V0QXR0cmlidXRlKFwieTFcIiksMTApLHM9ZS5nbG9iYWxzLnRyYW5zbGF0ZVkrYSxyPWkueWF4aXNUVEVsc1t0XS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsbz1lLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdLTI7ZS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJihvLT0yNikscy09ci8yLC0xPT09ZS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKHQpPyhpLnlheGlzVFRFbHNbdF0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLGkueWF4aXNUVEVsc1t0XS5zdHlsZS50b3A9cytcInB4XCIsaS55YXhpc1RURWxzW3RdLnN0eWxlLmxlZnQ9bytlLmNvbmZpZy55YXhpc1t0XS50b29sdGlwLm9mZnNldFgrXCJweFwiKTppLnlheGlzVFRFbHNbdF0uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpfX0se2tleTpcIm1vdmVUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxhPXRoaXMudyxzPXRoaXMudHRDdHgscj1zLmdldEVsVG9vbHRpcCgpLG89cy50b29sdGlwUmVjdCxuPW51bGwhPT1pP3BhcnNlRmxvYXQoaSk6MSxsPXBhcnNlRmxvYXQodCkrbis1LGg9cGFyc2VGbG9hdChlKStuLzI7aWYobD5hLmdsb2JhbHMuZ3JpZFdpZHRoLzImJihsPWwtby50dFdpZHRoLW4tMTApLGw+YS5nbG9iYWxzLmdyaWRXaWR0aC1vLnR0V2lkdGgtMTAmJihsPWEuZ2xvYmFscy5ncmlkV2lkdGgtby50dFdpZHRoKSxsPC0yMCYmKGw9LTIwKSxhLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIGM9cy5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsobD1zLmUuY2xpZW50WC1jLmxlZnQpPmEuZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGwtPXMudG9vbHRpcFJlY3QudHRXaWR0aCksKGg9cy5lLmNsaWVudFkrYS5nbG9iYWxzLnRyYW5zbGF0ZVktYy50b3ApPmEuZ2xvYmFscy5ncmlkSGVpZ2h0LzImJihoLT1zLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KX1lbHNlIGEuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fG8udHRIZWlnaHQvMitoPmEuZ2xvYmFscy5ncmlkSGVpZ2h0JiYoaD1hLmdsb2JhbHMuZ3JpZEhlaWdodC1vLnR0SGVpZ2h0K2EuZ2xvYmFscy50cmFuc2xhdGVZKTtpc05hTihsKXx8KGwrPWEuZ2xvYmFscy50cmFuc2xhdGVYLHIuc3R5bGUubGVmdD1sK1wicHhcIixyLnN0eWxlLnRvcD1oK1wicHhcIil9fSx7a2V5OlwibW92ZU1hcmtlcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMudHRDdHg7aWYoaS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVt0XT4wKWZvcih2YXIgcz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ10gLmFwZXhjaGFydHMtbWFya2VyXCIpKSxyPTA7cjxzLmxlbmd0aDtyKyspcGFyc2VJbnQoc1tyXS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApPT09ZSYmKGEubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLGEubWFya2VyLmVubGFyZ2VDdXJyZW50UG9pbnQoZSxzW3JdKSk7ZWxzZSBhLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSx0aGlzLm1vdmVEeW5hbWljUG9pbnRPbkhvdmVyKGUsdCl9fSx7a2V5OlwibW92ZUR5bmFtaWNQb2ludE9uSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLGEscz10aGlzLncscj10aGlzLnR0Q3R4LG89cy5nbG9iYWxzLnBvaW50c0FycmF5LG49ci50b29sdGlwVXRpbC5nZXRIb3Zlck1hcmtlclNpemUoZSksbD1zLmNvbmZpZy5zZXJpZXNbZV0udHlwZTtpZighbHx8XCJjb2x1bW5cIiE9PWwmJlwiY2FuZGxlc3RpY2tcIiE9PWwmJlwiYm94UGxvdFwiIT09bCl7aT1vW2VdW3RdWzBdLGE9b1tlXVt0XVsxXT9vW2VdW3RdWzFdOjA7dmFyIGg9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChlLFwiJ10gLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMgY2lyY2xlXCIpKTtoJiZhPHMuZ2xvYmFscy5ncmlkSGVpZ2h0JiZhPjAmJihoLnNldEF0dHJpYnV0ZShcInJcIixuKSxoLnNldEF0dHJpYnV0ZShcImN4XCIsaSksaC5zZXRBdHRyaWJ1dGUoXCJjeVwiLGEpKSx0aGlzLm1vdmVYQ3Jvc3NoYWlycyhpKSxyLmZpeGVkVG9vbHRpcHx8dGhpcy5tb3ZlVG9vbHRpcChpLGEsbil9fX0se2tleTpcIm1vdmVEeW5hbWljUG9pbnRzT25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy50dEN0eCxhPWkudyxzPTAscj0wLG89YS5nbG9iYWxzLnBvaW50c0FycmF5O2U9bmV3IE4odGhpcy5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiYXNjXCIsW1wibGluZVwiLFwiYXJlYVwiLFwic2NhdHRlclwiLFwiYnViYmxlXCJdKTt2YXIgbj1pLnRvb2x0aXBVdGlsLmdldEhvdmVyTWFya2VyU2l6ZShlKTtvW2VdJiYocz1vW2VdW3RdWzBdLHI9b1tlXVt0XVsxXSk7dmFyIGw9aS50b29sdGlwVXRpbC5nZXRBbGxNYXJrZXJzKCk7aWYobnVsbCE9PWwpZm9yKHZhciBoPTA7aDxhLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtoKyspe3ZhciBjPW9baF07aWYoYS5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZ2b2lkIDA9PT1jJiZsLnNwbGljZShoLDAsbnVsbCksYyYmYy5sZW5ndGgpe3ZhciBkPW9baF1bdF1bMV0sZz12b2lkIDA7aWYobFtoXS5zZXRBdHRyaWJ1dGUoXCJjeFwiLHMpLFwicmFuZ2VBcmVhXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlJiYhYS5nbG9iYWxzLmNvbWJvQ2hhcnRzKXt2YXIgdT10K2EuZ2xvYmFscy5zZXJpZXNbaF0ubGVuZ3RoO2c9b1toXVt1XVsxXSxkLT1NYXRoLmFicyhkLWcpLzJ9bnVsbCE9PWQmJiFpc05hTihkKSYmZDxhLmdsb2JhbHMuZ3JpZEhlaWdodCtuJiZkK24+MD8obFtoXSYmbFtoXS5zZXRBdHRyaWJ1dGUoXCJyXCIsbiksbFtoXSYmbFtoXS5zZXRBdHRyaWJ1dGUoXCJjeVwiLGQpKTpsW2hdJiZsW2hdLnNldEF0dHJpYnV0ZShcInJcIiwwKX19dGhpcy5tb3ZlWENyb3NzaGFpcnMocyksaS5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAocyxyfHxhLmdsb2JhbHMuZ3JpZEhlaWdodCxuKX19LHtrZXk6XCJtb3ZlU3RpY2t5VG9vbHRpcE92ZXJCYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLnR0Q3R4LHM9aS5nbG9iYWxzLmNvbHVtblNlcmllcz9pLmdsb2JhbHMuY29sdW1uU2VyaWVzLmxlbmd0aDppLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxyPXM+PTImJnMlMj09MD9NYXRoLmZsb29yKHMvMik6TWF0aC5mbG9vcihzLzIpKzE7aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHI9bmV3IE4odGhpcy5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiZGVzY1wiKSsxKTt2YXIgbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLCAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIpLmNvbmNhdChyLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXVwiKSk7b3x8XCJudW1iZXJcIiE9dHlwZW9mIGV8fChvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdChlLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSxcXG4gICAgICAgIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLFxcbiAgICAgICAgLmFwZXhjaGFydHMtYm94UGxvdC1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChlLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSxcXG4gICAgICAgIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddXCIpKSk7dmFyIG49bz9wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwiY3hcIikpOjAsbD1vP3BhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoXCJjeVwiKSk6MCxoPW8/cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTowLGM9YS5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPW8mJihvLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYVwiKXx8by5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWJveFBsb3QtYXJlYVwiKSk7aS5nbG9iYWxzLmlzWE51bWVyaWM/KG8mJiFkJiYobi09cyUyIT0wP2gvMjowKSxvJiZkJiZpLmdsb2JhbHMuY29tYm9DaGFydHMmJihuLT1oLzIpKTppLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHwobj1hLnhBeGlzVGlja3NQb3NpdGlvbnNbdC0xXSthLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgvMixpc05hTihuKSYmKG49YS54QXhpc1RpY2tzUG9zaXRpb25zW3RdLWEuZGF0YVBvaW50c0RpdmlkZWRXaWR0aC8yKSksaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9sLT1hLnRvb2x0aXBSZWN0LnR0SGVpZ2h0OmkuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yP2w9YS5lLmNsaWVudFktYy50b3AtYS50b29sdGlwUmVjdC50dEhlaWdodC8yOmwrYS50b29sdGlwUmVjdC50dEhlaWdodCsxNT5pLmdsb2JhbHMuZ3JpZEhlaWdodCYmKGw9aS5nbG9iYWxzLmdyaWRIZWlnaHQpLGkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fHRoaXMubW92ZVhDcm9zc2hhaXJzKG4pLGEuZml4ZWRUb29sdGlwfHx0aGlzLm1vdmVUb29sdGlwKG4sbHx8aS5nbG9iYWxzLmdyaWRIZWlnaHQpfX1dKSx0fSgpLHB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWUsdGhpcy5jdHg9ZS5jdHgsdGhpcy50b29sdGlwUG9zaXRpb249bmV3IHV0KGUpfXJldHVybiByKHQsW3trZXk6XCJkcmF3RHluYW1pY1BvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9bmV3IEgodGhpcy5jdHgpLGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllc1wiKTthPXUoYSksdC5jb25maWcuY2hhcnQuc3RhY2tlZCYmYS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBwYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpLXBhcnNlRmxvYXQoZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSl9KSk7Zm9yKHZhciBzPTA7czxhLmxlbmd0aDtzKyspe3ZhciByPWFbc10ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIik7aWYobnVsbCE9PXIpe3ZhciBvPXZvaWQgMCxuPVwiYXBleGNoYXJ0cy1tYXJrZXIgd1wiLmNvbmNhdCgoTWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDQpKTtcImxpbmVcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJlwiYXJlYVwiIT09dC5jb25maWcuY2hhcnQudHlwZXx8dC5nbG9iYWxzLmNvbWJvQ2hhcnRzfHx0LmNvbmZpZy50b29sdGlwLmludGVyc2VjdHx8KG4rPVwiIG5vLXBvaW50ZXItZXZlbnRzXCIpO3ZhciBsPWkuZ2V0TWFya2VyQ29uZmlnKHtjc3NDbGFzczpuLHNlcmllc0luZGV4Ok51bWJlcihyLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKX0pOyhvPWUuZHJhd01hcmtlcigwLDAsbCkpLm5vZGUuc2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiLDApO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0Lmdsb2JhbHMuU1ZHTlMsXCJnXCIpO2guY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIiksaC5hcHBlbmRDaGlsZChvLm5vZGUpLHIuYXBwZW5kQ2hpbGQoaCl9fX19LHtrZXk6XCJlbmxhcmdlQ3VycmVudFBvaW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLHM9dGhpcy53O1wiYnViYmxlXCIhPT1zLmNvbmZpZy5jaGFydC50eXBlJiZ0aGlzLm5ld1BvaW50U2l6ZSh0LGUpO3ZhciByPWUuZ2V0QXR0cmlidXRlKFwiY3hcIiksbz1lLmdldEF0dHJpYnV0ZShcImN5XCIpO2lmKG51bGwhPT1pJiZudWxsIT09YSYmKHI9aSxvPWEpLHRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhyKSwhdGhpcy5maXhlZFRvb2x0aXApe2lmKFwicmFkYXJcIj09PXMuY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciBuPXRoaXMudHRDdHguZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cj10aGlzLnR0Q3R4LmUuY2xpZW50WC1uLmxlZnR9dGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVRvb2x0aXAocixvLHMuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSl9fX0se2tleTpcImVubGFyZ2VQb2ludHNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9dGhpcyxhPXRoaXMudHRDdHgscz10LHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllczpub3QoLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCkgLmFwZXhjaGFydHMtbWFya2VyXCIpLG89ZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGw9cltuXS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksaD1yW25dLmdldEF0dHJpYnV0ZShcImluZGV4XCIpO2lmKHZvaWQgMD09PW8mJihvPWUuZ2xvYmFscy5tYXJrZXJzLnNpemVbaF0rZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSxzPT09cGFyc2VJbnQobCwxMCkpe2kubmV3UG9pbnRTaXplKHMscltuXSk7dmFyIGM9cltuXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSxkPXJbbl0uZ2V0QXR0cmlidXRlKFwiY3lcIik7aS50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGMpLGEuZml4ZWRUb29sdGlwfHxpLnRvb2x0aXBQb3NpdGlvbi5tb3ZlVG9vbHRpcChjLGQsbyl9ZWxzZSBpLm9sZFBvaW50U2l6ZShyW25dKX19fSx7a2V5OlwibmV3UG9pbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUscz0wPT09dD9lLnBhcmVudE5vZGUuZmlyc3RDaGlsZDplLnBhcmVudE5vZGUubGFzdENoaWxkO2lmKFwiMFwiIT09cy5nZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIpKXt2YXIgcj1wYXJzZUludChzLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKTt2b2lkIDA9PT1hJiYoYT1pLmdsb2JhbHMubWFya2Vycy5zaXplW3JdK2kuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksYTwwJiYoYT0wKSxzLnNldEF0dHJpYnV0ZShcInJcIixhKX19fSx7a2V5Olwib2xkUG9pbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIikpO3Quc2V0QXR0cmlidXRlKFwiclwiLGUpfX0se2tleTpcInJlc2V0UG9pbnRzU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllczpub3QoLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCkgLmFwZXhjaGFydHMtbWFya2VyXCIpLGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIGk9cGFyc2VGbG9hdCh0W2VdLmdldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIikpO3guaXNOdW1iZXIoaSkmJmk+PTA/dFtlXS5zZXRBdHRyaWJ1dGUoXCJyXCIsaSk6dFtlXS5zZXRBdHRyaWJ1dGUoXCJyXCIsMCl9fX1dKSx0fSgpLGZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy50dEN0eD1lLHRoaXMuaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj0haS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmXCJyYW5nZUJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmaS5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzfXJldHVybiByKHQsW3trZXk6XCJnZXRBdHRyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gcGFyc2VGbG9hdCh0LnRhcmdldC5nZXRBdHRyaWJ1dGUoZSkpfX0se2tleTpcImhhbmRsZUhlYXRUcmVlVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZSxpPXQub3B0LGE9dC54LHM9dC55LHI9dC50eXBlLG89dGhpcy50dEN0eCxuPXRoaXMudztpZihlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChyLFwiLXJlY3RcIikpKXt2YXIgbD10aGlzLmdldEF0dHIoZSxcImlcIiksaD10aGlzLmdldEF0dHIoZSxcImpcIiksYz10aGlzLmdldEF0dHIoZSxcImN4XCIpLGQ9dGhpcy5nZXRBdHRyKGUsXCJjeVwiKSxnPXRoaXMuZ2V0QXR0cihlLFwid2lkdGhcIiksdT10aGlzLmdldEF0dHIoZSxcImhlaWdodFwiKTtpZihvLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOmkudHRJdGVtcyxpOmwsajpoLHNoYXJlZDohMSxlOmV9KSxuLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1sLG4uZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PWgsYT1jK28udG9vbHRpcFJlY3QudHRXaWR0aC8yK2cscz1kK28udG9vbHRpcFJlY3QudHRIZWlnaHQvMi11LzIsby50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGMrZy8yKSxhPm4uZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGE9Yy1vLnRvb2x0aXBSZWN0LnR0V2lkdGgvMitnKSxvLncuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgcD1uLmdsb2JhbHMuZG9tLmVsV3JhcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTthPW4uZ2xvYmFscy5jbGllbnRYLXAubGVmdC0oYT5uLmdsb2JhbHMuZ3JpZFdpZHRoLzI/by50b29sdGlwUmVjdC50dFdpZHRoOjApLHM9bi5nbG9iYWxzLmNsaWVudFktcC50b3AtKHM+bi5nbG9iYWxzLmdyaWRIZWlnaHQvMj9vLnRvb2x0aXBSZWN0LnR0SGVpZ2h0OjApfX1yZXR1cm57eDphLHk6c319fSx7a2V5OlwiaGFuZGxlTWFya2VyVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10LmUscz10Lm9wdCxyPXQueCxvPXQueSxuPXRoaXMudyxsPXRoaXMudHRDdHg7aWYoYS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1tYXJrZXJcIikpe3ZhciBoPXBhcnNlSW50KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwiY3hcIiksMTApLGM9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJjeVwiKSwxMCksZD1wYXJzZUZsb2F0KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwidmFsXCIpKTtpZihpPXBhcnNlSW50KHMucGF0aHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKSxlPXBhcnNlSW50KHMucGF0aHMucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xLGwuaW50ZXJzZWN0KXt2YXIgZz14LmZpbmRBbmNlc3RvcihzLnBhdGhzLFwiYXBleGNoYXJ0cy1zZXJpZXNcIik7ZyYmKGU9cGFyc2VJbnQoZy5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCkpfWlmKGwudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6cy50dEl0ZW1zLGk6ZSxqOmksc2hhcmVkOiFsLnNob3dPbkludGVyc2VjdCYmbi5jb25maWcudG9vbHRpcC5zaGFyZWQsZTphfSksXCJtb3VzZXVwXCI9PT1hLnR5cGUmJmwubWFya2VyQ2xpY2soYSxlLGkpLG4uZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PWUsbi5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9aSxyPWgsbz1jK24uZ2xvYmFscy50cmFuc2xhdGVZLTEuNCpsLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LGwudy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciB1PWwuZ2V0RWxHcmlkKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bz1sLmUuY2xpZW50WStuLmdsb2JhbHMudHJhbnNsYXRlWS11LnRvcH1kPDAmJihvPWMpLGwubWFya2VyLmVubGFyZ2VDdXJyZW50UG9pbnQoaSxzLnBhdGhzLHIsbyl9cmV0dXJue3g6cix5Om99fX0se2tleTpcImhhbmRsZUJhclRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLGE9dC5lLHM9dC5vcHQscj10aGlzLncsbz10aGlzLnR0Q3R4LG49by5nZXRFbFRvb2x0aXAoKSxsPTAsaD0wLGM9MCxkPXRoaXMuZ2V0QmFyVG9vbHRpcFhZKHtlOmEsb3B0OnN9KTtlPWQuaTt2YXIgZz1kLmJhckhlaWdodCx1PWQuajtyLmdsb2JhbHMuY2FwdHVyZWRTZXJpZXNJbmRleD1lLHIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PXUsci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmby50b29sdGlwVXRpbC5oYXNCYXJzKCl8fCFyLmNvbmZpZy50b29sdGlwLnNoYXJlZD8oaD1kLngsYz1kLnksaT1BcnJheS5pc0FycmF5KHIuY29uZmlnLnN0cm9rZS53aWR0aCk/ci5jb25maWcuc3Ryb2tlLndpZHRoW2VdOnIuY29uZmlnLnN0cm9rZS53aWR0aCxsPWgpOnIuZ2xvYmFscy5jb21ib0NoYXJ0c3x8ci5jb25maWcudG9vbHRpcC5zaGFyZWR8fChsLz0yKSxpc05hTihjKSYmKGM9ci5nbG9iYWxzLnN2Z0hlaWdodC1vLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KTt2YXIgcD1wYXJzZUludChzLnBhdGhzLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIiksMTApLGY9ci5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcz9yLmNvbmZpZy55YXhpc1twXSYmci5jb25maWcueWF4aXNbcF0ucmV2ZXJzZWQ6ci5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQ7aWYoaCtvLnRvb2x0aXBSZWN0LnR0V2lkdGg+ci5nbG9iYWxzLmdyaWRXaWR0aCYmIWY/aC09by50b29sdGlwUmVjdC50dFdpZHRoOmg8MCYmKGg9MCksby53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIHg9by5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjPW8uZS5jbGllbnRZLXgudG9wfW51bGw9PT1vLnRvb2x0aXAmJihvLnRvb2x0aXA9ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXBcIikpLHIuY29uZmlnLnRvb2x0aXAuc2hhcmVkfHwoci5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MD9vLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMobCtpLzIpOm8udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhsKSksIW8uZml4ZWRUb29sdGlwJiYoIXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkfHxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSkmJihmJiYoaC09by50b29sdGlwUmVjdC50dFdpZHRoKTwwJiYoaD0wKSwhZnx8ci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmby50b29sdGlwVXRpbC5oYXNCYXJzKCl8fChjPWMrZy0yKihyLmdsb2JhbHMuc2VyaWVzW2VdW3VdPDA/ZzowKSksYz1jK3IuZ2xvYmFscy50cmFuc2xhdGVZLW8udG9vbHRpcFJlY3QudHRIZWlnaHQvMixuLnN0eWxlLmxlZnQ9aCtyLmdsb2JhbHMudHJhbnNsYXRlWCtcInB4XCIsbi5zdHlsZS50b3A9YytcInB4XCIpfX0se2tleTpcImdldEJhclRvb2x0aXBYWVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10LmUsYT10Lm9wdCxzPXRoaXMudyxyPW51bGwsbz10aGlzLnR0Q3R4LG49MCxsPTAsaD0wLGM9MCxkPTAsZz1pLnRhcmdldC5jbGFzc0xpc3Q7aWYoZy5jb250YWlucyhcImFwZXhjaGFydHMtYmFyLWFyZWFcIil8fGcuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWFcIil8fGcuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWJveFBsb3QtYXJlYVwiKXx8Zy5jb250YWlucyhcImFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKSl7dmFyIHU9aS50YXJnZXQscD11LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9YS5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseD1wLmhlaWdodDtkPXAuaGVpZ2h0O3ZhciBiPXAud2lkdGgsdj1wYXJzZUludCh1LmdldEF0dHJpYnV0ZShcImN4XCIpLDEwKSxtPXBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKFwiY3lcIiksMTApO2M9cGFyc2VGbG9hdCh1LmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTt2YXIgeT1cInRvdWNobW92ZVwiPT09aS50eXBlP2kudG91Y2hlc1swXS5jbGllbnRYOmkuY2xpZW50WDtyPXBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCksbj1wYXJzZUludCh1LnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3ZhciB3PXUuZ2V0QXR0cmlidXRlKFwiZGF0YS1yYW5nZS15MVwiKSxrPXUuZ2V0QXR0cmlidXRlKFwiZGF0YS1yYW5nZS15MlwiKTtzLmdsb2JhbHMuY29tYm9DaGFydHMmJihuPXBhcnNlSW50KHUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCkpO3ZhciBBPWZ1bmN0aW9uKHQpe3JldHVybiBzLmdsb2JhbHMuaXNYTnVtZXJpYz92LWIvMjplLmlzVmVydGljYWxHcm91cGVkUmFuZ2VCYXI/ditiLzI6di1vLmRhdGFQb2ludHNEaXZpZGVkV2lkdGgrYi8yfSxTPWZ1bmN0aW9uKCl7cmV0dXJuIG0tby5kYXRhUG9pbnRzRGl2aWRlZEhlaWdodCt4LzItby50b29sdGlwUmVjdC50dEhlaWdodC8yfTtvLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKHt0dEl0ZW1zOmEudHRJdGVtcyxpOm4sajpyLHkxOnc/cGFyc2VJbnQodywxMCk6bnVsbCx5MjprP3BhcnNlSW50KGssMTApOm51bGwsc2hhcmVkOiFvLnNob3dPbkludGVyc2VjdCYmcy5jb25maWcudG9vbHRpcC5zaGFyZWQsZTppfSkscy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3I/cy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8obD15LWYubGVmdCsxNSxoPVMoKSk6KGw9QSgpLGg9aS5jbGllbnRZLWYudG9wLW8udG9vbHRpcFJlY3QudHRIZWlnaHQvMi0xNSk6cy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8oKGw9dik8by54eVJhdGlvcy5iYXNlTGluZUludmVydGVkWSYmKGw9di1vLnRvb2x0aXBSZWN0LnR0V2lkdGgpLGg9UygpKToobD1BKCksaD1tKX1yZXR1cm57eDpsLHk6aCxiYXJIZWlnaHQ6ZCxiYXJXaWR0aDpjLGk6bixqOnJ9fX1dKSx0fSgpLHh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLnR0Q3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImRyYXdYYXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1cImJvdHRvbVwiPT09dC5jb25maWcueGF4aXMucG9zaXRpb247ZS54YXhpc09mZlk9aT90Lmdsb2JhbHMuZ3JpZEhlaWdodCsxOi10Lmdsb2JhbHMueEF4aXNIZWlnaHQtdC5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodCszO3ZhciBhPWk/XCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b21cIjpcImFwZXhjaGFydHMteGF4aXN0b29sdGlwIGFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcFwiLHM9dC5nbG9iYWxzLmRvbS5lbFdyYXA7ZS5pc1hBeGlzVG9vbHRpcEVuYWJsZWQmJihudWxsPT09dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcFwiKSYmKGUueGF4aXNUb29sdGlwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS54YXhpc1Rvb2x0aXAuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixhK1wiIGFwZXhjaGFydHMtdGhlbWUtXCIrdC5jb25maWcudG9vbHRpcC50aGVtZSkscy5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcCksZS54YXhpc1Rvb2x0aXBUZXh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS54YXhpc1Rvb2x0aXBUZXh0LmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10ZXh0XCIpLGUueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5mb250RmFtaWx5PXQuY29uZmlnLnhheGlzLnRvb2x0aXAuc3R5bGUuZm9udEZhbWlseXx8dC5jb25maWcuY2hhcnQuZm9udEZhbWlseSxlLnhheGlzVG9vbHRpcFRleHQuc3R5bGUuZm9udFNpemU9dC5jb25maWcueGF4aXMudG9vbHRpcC5zdHlsZS5mb250U2l6ZSxlLnhheGlzVG9vbHRpcC5hcHBlbmRDaGlsZChlLnhheGlzVG9vbHRpcFRleHQpKSl9fSx7a2V5OlwiZHJhd1lheGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1mdW5jdGlvbihpKXt2YXIgYT10LmNvbmZpZy55YXhpc1tpXS5vcHBvc2l0ZXx8dC5jb25maWcueWF4aXNbaV0uY3Jvc3NoYWlycy5vcHBvc2l0ZTtlLnlheGlzT2ZmWD1hP3QuZ2xvYmFscy5ncmlkV2lkdGgrMToxO3ZhciBzPVwiYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtXCIuY29uY2F0KGksYT9cIiBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodFwiOlwiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnRcIik7dC5nbG9iYWxzLnlBeGlzU2FtZVNjYWxlSW5kaWNlcy5tYXAoKGZ1bmN0aW9uKGUsYSl7ZS5tYXAoKGZ1bmN0aW9uKGUsYSl7YT09PWkmJihzKz10LmNvbmZpZy55YXhpc1thXS5zaG93P1wiIFwiOlwiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLWhpZGRlblwiKX0pKX0pKTt2YXIgcj10Lmdsb2JhbHMuZG9tLmVsV3JhcDtudWxsPT09dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1cIi5jb25jYXQoaSkpJiYoZS55YXhpc1Rvb2x0aXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnlheGlzVG9vbHRpcC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLHMrXCIgYXBleGNoYXJ0cy10aGVtZS1cIit0LmNvbmZpZy50b29sdGlwLnRoZW1lKSxyLmFwcGVuZENoaWxkKGUueWF4aXNUb29sdGlwKSwwPT09aSYmKGUueWF4aXNUb29sdGlwVGV4dD1bXSksZS55YXhpc1Rvb2x0aXBUZXh0W2ldPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS55YXhpc1Rvb2x0aXBUZXh0W2ldLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC10ZXh0XCIpLGUueWF4aXNUb29sdGlwLmFwcGVuZENoaWxkKGUueWF4aXNUb29sdGlwVGV4dFtpXSkpfSxhPTA7YTx0LmNvbmZpZy55YXhpcy5sZW5ndGg7YSsrKWkoYSl9fSx7a2V5Olwic2V0WENyb3NzaGFpcldpZHRoXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnR0Q3R4LGk9ZS5nZXRFbFhDcm9zc2hhaXJzKCk7aWYoZS54Y3Jvc3NoYWlyc1dpZHRoPXBhcnNlSW50KHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgsMTApLHQuZ2xvYmFscy5jb21ib0NoYXJ0cyl7dmFyIGE9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWJhci1hcmVhXCIpO2lmKG51bGwhPT1hJiZcImJhcldpZHRoXCI9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKXt2YXIgcz1wYXJzZUZsb2F0KGEuZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpO2UueGNyb3NzaGFpcnNXaWR0aD1zfWVsc2UgaWYoXCJ0aWNrV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciByPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoO2UueGNyb3NzaGFpcnNXaWR0aD10Lmdsb2JhbHMuZ3JpZFdpZHRoL3J9fWVsc2UgaWYoXCJ0aWNrV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBvPXQuZ2xvYmFscy5sYWJlbHMubGVuZ3RoO2UueGNyb3NzaGFpcnNXaWR0aD10Lmdsb2JhbHMuZ3JpZFdpZHRoL299ZWxzZSBpZihcImJhcldpZHRoXCI9PT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoKXt2YXIgbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIik7aWYobnVsbCE9PW4pe3ZhciBsPXBhcnNlRmxvYXQobi5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7ZS54Y3Jvc3NoYWlyc1dpZHRoPWx9ZWxzZSBlLnhjcm9zc2hhaXJzV2lkdGg9MX10Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoZS54Y3Jvc3NoYWlyc1dpZHRoPTApLG51bGwhPT1pJiZlLnhjcm9zc2hhaXJzV2lkdGg+MCYmaS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLGUueGNyb3NzaGFpcnNXaWR0aCl9fSx7a2V5OlwiaGFuZGxlWUNyb3NzaGFpclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eDtlLnljcm9zc2hhaXJzPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15Y3Jvc3NoYWlyc1wiKSxlLnljcm9zc2hhaXJzSGlkZGVuPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW5cIil9fSx7a2V5OlwiZHJhd1lheGlzVG9vbHRpcFRleHRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy50dEN0eCxzPXRoaXMudyxyPXMuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzW3RdO2lmKGEueWF4aXNUb29sdGlwc1t0XSl7dmFyIG89YS5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPShlLW8udG9wKSppLnlSYXRpb1t0XSxsPXMuZ2xvYmFscy5tYXhZQXJyW3RdLXMuZ2xvYmFscy5taW5ZQXJyW3RdLGg9cy5nbG9iYWxzLm1pbllBcnJbdF0rKGwtbik7YS50b29sdGlwUG9zaXRpb24ubW92ZVlDcm9zc2hhaXJzKGUtby50b3ApLGEueWF4aXNUb29sdGlwVGV4dFt0XS5pbm5lckhUTUw9cihoKSxhLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWUF4aXNUb29sdGlwKHQpfX19XSksdH0oKSxidD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy50Q29uZmlnPWkuY29uZmlnLnRvb2x0aXAsdGhpcy50b29sdGlwVXRpbD1uZXcgZHQodGhpcyksdGhpcy50b29sdGlwTGFiZWxzPW5ldyBndCh0aGlzKSx0aGlzLnRvb2x0aXBQb3NpdGlvbj1uZXcgdXQodGhpcyksdGhpcy5tYXJrZXI9bmV3IHB0KHRoaXMpLHRoaXMuaW50ZXJzZWN0PW5ldyBmdCh0aGlzKSx0aGlzLmF4ZXNUb29sdGlwPW5ldyB4dCh0aGlzKSx0aGlzLnNob3dPbkludGVyc2VjdD10aGlzLnRDb25maWcuaW50ZXJzZWN0LHRoaXMuc2hvd1Rvb2x0aXBUaXRsZT10aGlzLnRDb25maWcueC5zaG93LHRoaXMuZml4ZWRUb29sdGlwPXRoaXMudENvbmZpZy5maXhlZC5lbmFibGVkLHRoaXMueGF4aXNUb29sdGlwPW51bGwsdGhpcy55YXhpc1RURWxzPW51bGwsdGhpcy5pc0JhclNoYXJlZD0haS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy50Q29uZmlnLnNoYXJlZCx0aGlzLmxhc3RIb3ZlclRpbWU9RGF0ZS5ub3coKX1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0RWxUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHR8fCh0PXRoaXMpLHQudy5nbG9iYWxzLmRvbS5iYXNlRWw/dC53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcFwiKTpudWxsfX0se2tleTpcImdldEVsWENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14Y3Jvc3NoYWlyc1wiKX19LHtrZXk6XCJnZXRFbEdyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1ncmlkXCIpfX0se2tleTpcImRyYXdUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3RoaXMueHlSYXRpb3M9dCx0aGlzLmlzWEF4aXNUb29sdGlwRW5hYmxlZD1lLmNvbmZpZy54YXhpcy50b29sdGlwLmVuYWJsZWQmJmUuZ2xvYmFscy5heGlzQ2hhcnRzLHRoaXMueWF4aXNUb29sdGlwcz1lLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuISEodC5zaG93JiZ0LnRvb2x0aXAuZW5hYmxlZCYmZS5nbG9iYWxzLmF4aXNDaGFydHMpfSkpLHRoaXMuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcz1bXSxlLmdsb2JhbHMuYXhpc0NoYXJ0c3x8KHRoaXMuc2hvd1Rvb2x0aXBUaXRsZT0hMSk7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtpZihpLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXBcIiksZS5jb25maWcudG9vbHRpcC5jc3NDbGFzcyYmaS5jbGFzc0xpc3QuYWRkKGUuY29uZmlnLnRvb2x0aXAuY3NzQ2xhc3MpLGkuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdGhlbWUtXCIuY29uY2F0KHRoaXMudENvbmZpZy50aGVtZSkpLGUuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGkpLGUuZ2xvYmFscy5heGlzQ2hhcnRzKXt0aGlzLmF4ZXNUb29sdGlwLmRyYXdYYXhpc1Rvb2x0aXAoKSx0aGlzLmF4ZXNUb29sdGlwLmRyYXdZYXhpc1Rvb2x0aXAoKSx0aGlzLmF4ZXNUb29sdGlwLnNldFhDcm9zc2hhaXJXaWR0aCgpLHRoaXMuYXhlc1Rvb2x0aXAuaGFuZGxlWUNyb3NzaGFpcigpO3ZhciBhPW5ldyBWKHRoaXMuY3R4KTt0aGlzLnhBeGlzVGlja3NQb3NpdGlvbnM9YS5nZXRYQXhpc1RpY2tzUG9zaXRpb25zKCl9aWYoIWUuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIXRoaXMudENvbmZpZy5pbnRlcnNlY3QmJlwicmFuZ2VCYXJcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMudENvbmZpZy5zaGFyZWR8fCh0aGlzLnNob3dPbkludGVyc2VjdD0hMCksMCE9PWUuY29uZmlnLm1hcmtlcnMuc2l6ZSYmMCE9PWUuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplfHx0aGlzLm1hcmtlci5kcmF3RHluYW1pY1BvaW50cyh0aGlzKSxlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCE9PWUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXt0aGlzLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0PWUuZ2xvYmFscy5ncmlkSGVpZ2h0L2UuZ2xvYmFscy5kYXRhUG9pbnRzLHRoaXMuZGF0YVBvaW50c0RpdmlkZWRXaWR0aD1lLmdsb2JhbHMuZ3JpZFdpZHRoL2UuZ2xvYmFscy5kYXRhUG9pbnRzLHRoaXMuc2hvd1Rvb2x0aXBUaXRsZSYmKHRoaXMudG9vbHRpcFRpdGxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy50b29sdGlwVGl0bGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10aXRsZVwiKSx0aGlzLnRvb2x0aXBUaXRsZS5zdHlsZS5mb250RmFtaWx5PXRoaXMudENvbmZpZy5zdHlsZS5mb250RmFtaWx5fHxlLmNvbmZpZy5jaGFydC5mb250RmFtaWx5LHRoaXMudG9vbHRpcFRpdGxlLnN0eWxlLmZvbnRTaXplPXRoaXMudENvbmZpZy5zdHlsZS5mb250U2l6ZSxpLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcFRpdGxlKSk7dmFyIHM9ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg7KGUuZ2xvYmFscy54eUNoYXJ0c3x8ZS5nbG9iYWxzLmNvbWJvQ2hhcnRzKSYmdGhpcy50Q29uZmlnLnNoYXJlZCYmKHM9dGhpcy5zaG93T25JbnRlcnNlY3Q/MTplLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCksdGhpcy5sZWdlbmRMYWJlbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpLHRoaXMudHRJdGVtcz10aGlzLmNyZWF0ZVRURWxlbWVudHMocyksdGhpcy5hZGRTVkdFdmVudHMoKX19fSx7a2V5OlwiY3JlYXRlVFRFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLGk9dGhpcy53LGE9W10scz10aGlzLmdldEVsVG9vbHRpcCgpLHI9ZnVuY3Rpb24ocil7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtvLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpLG8uc3R5bGUub3JkZXI9aS5jb25maWcudG9vbHRpcC5pbnZlcnNlT3JkZXI/dC1yOnIrMSxlLnRDb25maWcuc2hhcmVkJiZlLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzJiZBcnJheS5pc0FycmF5KGUudENvbmZpZy5lbmFibGVkT25TZXJpZXMpJiZlLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2Yocik8MCYmby5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW5cIik7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7bi5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlclwiKSxuLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLmdsb2JhbHMuY29sb3JzW3JdLG8uYXBwZW5kQ2hpbGQobik7dmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtsLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dFwiKSxsLnN0eWxlLmZvbnRGYW1pbHk9ZS50Q29uZmlnLnN0eWxlLmZvbnRGYW1pbHl8fGkuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksbC5zdHlsZS5mb250U2l6ZT1lLnRDb25maWcuc3R5bGUuZm9udFNpemUsW1wieVwiLFwiZ29hbHNcIixcInpcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtXCIuY29uY2F0KHQsXCItZ3JvdXBcIikpO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2kuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LVwiLmNvbmNhdCh0LFwiLWxhYmVsXCIpKSxlLmFwcGVuZENoaWxkKGkpO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2EuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LVwiLmNvbmNhdCh0LFwiLXZhbHVlXCIpKSxlLmFwcGVuZENoaWxkKGEpLGwuYXBwZW5kQ2hpbGQoZSl9KSksby5hcHBlbmRDaGlsZChsKSxzLmFwcGVuZENoaWxkKG8pLGEucHVzaChvKX0sbz0wO288dDtvKyspcihvKTtyZXR1cm4gYX19LHtrZXk6XCJhZGRTVkdFdmVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuY29uZmlnLmNoYXJ0LnR5cGUsaT10aGlzLmdldEVsVG9vbHRpcCgpLGE9IShcImJhclwiIT09ZSYmXCJjYW5kbGVzdGlja1wiIT09ZSYmXCJib3hQbG90XCIhPT1lJiZcInJhbmdlQmFyXCIhPT1lKSxzPVwiYXJlYVwiPT09ZXx8XCJsaW5lXCI9PT1lfHxcInNjYXR0ZXJcIj09PWV8fFwiYnViYmxlXCI9PT1lfHxcInJhZGFyXCI9PT1lLHI9dC5nbG9iYWxzLmRvbS5QYXBlci5ub2RlLG89dGhpcy5nZXRFbEdyaWQoKTtvJiYodGhpcy5zZXJpZXNCb3VuZD1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTt2YXIgbixsPVtdLGg9W10sYz17aG92ZXJBcmVhOnIsZWxHcmlkOm8sdG9vbHRpcEVsOmksdG9vbHRpcFk6bCx0b29sdGlwWDpoLHR0SXRlbXM6dGhpcy50dEl0ZW1zfTtpZih0Lmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHM/bj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOmxvbmdlc3RTZXJpZXM9J3RydWUnXSAuYXBleGNoYXJ0cy1tYXJrZXJcIik6YT9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtYmFyLWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtYm94UGxvdC1hcmVhLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKTpcImhlYXRtYXBcIiE9PWUmJlwidHJlZW1hcFwiIT09ZXx8KG49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1oZWF0bWFwLCAuYXBleGNoYXJ0cy1zZXJpZXMgLmFwZXhjaGFydHMtdHJlZW1hcFwiKSksbiYmbi5sZW5ndGgpKWZvcih2YXIgZD0wO2Q8bi5sZW5ndGg7ZCsrKWwucHVzaChuW2RdLmdldEF0dHJpYnV0ZShcImN5XCIpKSxoLnB1c2gobltkXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSk7aWYodC5nbG9iYWxzLnh5Q2hhcnRzJiYhdGhpcy5zaG93T25JbnRlcnNlY3R8fHQuZ2xvYmFscy5jb21ib0NoYXJ0cyYmIXRoaXMuc2hvd09uSW50ZXJzZWN0fHxhJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy50Q29uZmlnLnNoYXJlZCl0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoW3JdLGMpO2Vsc2UgaWYoYSYmIXQuZ2xvYmFscy5jb21ib0NoYXJ0c3x8cyYmdGhpcy5zaG93T25JbnRlcnNlY3QpdGhpcy5hZGREYXRhcG9pbnRFdmVudHNMaXN0ZW5lcnMoYyk7ZWxzZSBpZighdC5nbG9iYWxzLmF4aXNDaGFydHN8fFwiaGVhdG1hcFwiPT09ZXx8XCJ0cmVlbWFwXCI9PT1lKXt2YXIgZz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzXCIpO3RoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyhnLGMpfWlmKHRoaXMuc2hvd09uSW50ZXJzZWN0KXt2YXIgdT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtbGluZS1zZXJpZXMgLmFwZXhjaGFydHMtbWFya2VyLCAuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1tYXJrZXJcIik7dS5sZW5ndGg+MCYmdGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKHUsYyksdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJiF0aGlzLnRDb25maWcuc2hhcmVkJiZ0aGlzLmFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVycyhjKX19fSx7a2V5OlwiZHJhd0ZpeGVkVG9vbHRpcFJlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMuZ2V0RWxUb29sdGlwKCksaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9aS53aWR0aCsxMCxzPWkuaGVpZ2h0KzEwLHI9dGhpcy50Q29uZmlnLmZpeGVkLm9mZnNldFgsbz10aGlzLnRDb25maWcuZml4ZWQub2Zmc2V0WSxuPXRoaXMudENvbmZpZy5maXhlZC5wb3NpdGlvbi50b0xvd2VyQ2FzZSgpO3JldHVybiBuLmluZGV4T2YoXCJyaWdodFwiKT4tMSYmKHI9cit0Lmdsb2JhbHMuc3ZnV2lkdGgtYSsxMCksbi5pbmRleE9mKFwiYm90dG9tXCIpPi0xJiYobz1vK3QuZ2xvYmFscy5zdmdIZWlnaHQtcy0xMCksZS5zdHlsZS5sZWZ0PXIrXCJweFwiLGUuc3R5bGUudG9wPW8rXCJweFwiLHt4OnIseTpvLHR0V2lkdGg6YSx0dEhlaWdodDpzfX19LHtrZXk6XCJhZGREYXRhcG9pbnRFdmVudHNMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIsIC5hcGV4Y2hhcnRzLWJhci1hcmVhLCAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhLCAuYXBleGNoYXJ0cy1ib3hQbG90LWFyZWEsIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLWFyZWFcIik7dGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKGUsdCl9fSx7a2V5OlwiYWRkUGF0aHNFdmVudExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXRoaXMsYT1mdW5jdGlvbihhKXt2YXIgcz17cGF0aHM6dFthXSx0b29sdGlwRWw6ZS50b29sdGlwRWwsdG9vbHRpcFk6ZS50b29sdGlwWSx0b29sdGlwWDplLnRvb2x0aXBYLGVsR3JpZDplLmVsR3JpZCxob3ZlckFyZWE6ZS5ob3ZlckFyZWEsdHRJdGVtczplLnR0SXRlbXN9O1tcIm1vdXNlbW92ZVwiLFwibW91c2V1cFwiLFwidG91Y2htb3ZlXCIsXCJtb3VzZW91dFwiLFwidG91Y2hlbmRcIl0ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFthXS5hZGRFdmVudExpc3RlbmVyKGUsaS5vblNlcmllc0hvdmVyLmJpbmQoaSxzKSx7Y2FwdHVyZTohMSxwYXNzaXZlOiEwfSl9KSl9LHM9MDtzPHQubGVuZ3RoO3MrKylhKHMpfX0se2tleTpcIm9uU2VyaWVzSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT1EYXRlLm5vdygpLXRoaXMubGFzdEhvdmVyVGltZTthPj0xMDA/dGhpcy5zZXJpZXNIb3Zlcih0LGUpOihjbGVhclRpbWVvdXQodGhpcy5zZXJpZXNIb3ZlclRpbWVvdXQpLHRoaXMuc2VyaWVzSG92ZXJUaW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5zZXJpZXNIb3Zlcih0LGUpfSksMTAwLWEpKX19LHtrZXk6XCJzZXJpZXNIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt0aGlzLmxhc3RIb3ZlclRpbWU9RGF0ZS5ub3coKTt2YXIgYT1bXSxzPXRoaXMudztzLmNvbmZpZy5jaGFydC5ncm91cCYmKGE9dGhpcy5jdHguZ2V0R3JvdXBlZENoYXJ0cygpKSxzLmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHMuZ2xvYmFscy5taW5YPT09LTEvMCYmcy5nbG9iYWxzLm1heFg9PT0xLzB8fDA9PT1zLmdsb2JhbHMuZGF0YVBvaW50cyl8fChhLmxlbmd0aD9hLmZvckVhY2goKGZ1bmN0aW9uKGEpe3ZhciBzPWkuZ2V0RWxUb29sdGlwKGEpLHI9e3BhdGhzOnQucGF0aHMsdG9vbHRpcEVsOnMsdG9vbHRpcFk6dC50b29sdGlwWSx0b29sdGlwWDp0LnRvb2x0aXBYLGVsR3JpZDp0LmVsR3JpZCxob3ZlckFyZWE6dC5ob3ZlckFyZWEsdHRJdGVtczphLncuZ2xvYmFscy50b29sdGlwLnR0SXRlbXN9O2Eudy5nbG9iYWxzLm1pblg9PT1pLncuZ2xvYmFscy5taW5YJiZhLncuZ2xvYmFscy5tYXhYPT09aS53Lmdsb2JhbHMubWF4WCYmYS53Lmdsb2JhbHMudG9vbHRpcC5zZXJpZXNIb3ZlckJ5Q29udGV4dCh7Y2hhcnRDdHg6YSx0dEN0eDphLncuZ2xvYmFscy50b29sdGlwLG9wdDpyLGU6ZX0pfSkpOnRoaXMuc2VyaWVzSG92ZXJCeUNvbnRleHQoe2NoYXJ0Q3R4OnRoaXMuY3R4LHR0Q3R4OnRoaXMudy5nbG9iYWxzLnRvb2x0aXAsb3B0OnQsZTplfSkpfX0se2tleTpcInNlcmllc0hvdmVyQnlDb250ZXh0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jaGFydEN0eCxpPXQudHRDdHgsYT10Lm9wdCxzPXQuZSxyPWUudyxvPXRoaXMuZ2V0RWxUb29sdGlwKCk7aWYobyl7aWYoaS50b29sdGlwUmVjdD17eDowLHk6MCx0dFdpZHRoOm8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsdHRIZWlnaHQ6by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9LGkuZT1zLGkudG9vbHRpcFV0aWwuaGFzQmFycygpJiYhci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhaS5pc0JhclNoYXJlZClpZih0aGlzLnRDb25maWcub25EYXRhc2V0SG92ZXIuaGlnaGxpZ2h0RGF0YVNlcmllcyluZXcgTihlKS50b2dnbGVTZXJpZXNPbkhvdmVyKHMscy50YXJnZXQucGFyZW50Tm9kZSk7aS5maXhlZFRvb2x0aXAmJmkuZHJhd0ZpeGVkVG9vbHRpcFJlY3QoKSxyLmdsb2JhbHMuYXhpc0NoYXJ0cz9pLmF4aXNDaGFydHNUb29sdGlwcyh7ZTpzLG9wdDphLHRvb2x0aXBSZWN0OmkudG9vbHRpcFJlY3R9KTppLm5vbkF4aXNDaGFydHNUb29sdGlwcyh7ZTpzLG9wdDphLHRvb2x0aXBSZWN0OmkudG9vbHRpcFJlY3R9KX19fSx7a2V5OlwiYXhpc0NoYXJ0c1Rvb2x0aXBzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXQuZSxzPXQub3B0LHI9dGhpcy53LG89cy5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1cInRvdWNobW92ZVwiPT09YS50eXBlP2EudG91Y2hlc1swXS5jbGllbnRYOmEuY2xpZW50WCxsPVwidG91Y2htb3ZlXCI9PT1hLnR5cGU/YS50b3VjaGVzWzBdLmNsaWVudFk6YS5jbGllbnRZO2lmKHRoaXMuY2xpZW50WT1sLHRoaXMuY2xpZW50WD1uLHIuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PS0xLHIuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PS0xLGw8by50b3B8fGw+by50b3Arby5oZWlnaHQpdGhpcy5oYW5kbGVNb3VzZU91dChzKTtlbHNle2lmKEFycmF5LmlzQXJyYXkodGhpcy50Q29uZmlnLmVuYWJsZWRPblNlcmllcykmJiFyLmNvbmZpZy50b29sdGlwLnNoYXJlZCl7dmFyIGg9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCk7aWYodGhpcy50Q29uZmlnLmVuYWJsZWRPblNlcmllcy5pbmRleE9mKGgpPDApcmV0dXJuIHZvaWQgdGhpcy5oYW5kbGVNb3VzZU91dChzKX12YXIgYz10aGlzLmdldEVsVG9vbHRpcCgpLGQ9dGhpcy5nZXRFbFhDcm9zc2hhaXJzKCksZz1yLmdsb2JhbHMueHlDaGFydHN8fFwiYmFyXCI9PT1yLmNvbmZpZy5jaGFydC50eXBlJiYhci5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJnRoaXMudENvbmZpZy5zaGFyZWR8fHIuZ2xvYmFscy5jb21ib0NoYXJ0cyYmdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCk7aWYoXCJtb3VzZW1vdmVcIj09PWEudHlwZXx8XCJ0b3VjaG1vdmVcIj09PWEudHlwZXx8XCJtb3VzZXVwXCI9PT1hLnR5cGUpe2lmKHIuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoK3IuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMubGVuZ3RoPT09ci5nbG9iYWxzLnNlcmllcy5sZW5ndGgpcmV0dXJuO251bGwhPT1kJiZkLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKTt2YXIgdT10aGlzLnlheGlzVG9vbHRpcHMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hMD09PXR9KSk7aWYobnVsbCE9PXRoaXMueWNyb3NzaGFpcnMmJnUubGVuZ3RoJiZ0aGlzLnljcm9zc2hhaXJzLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxnJiYhdGhpcy5zaG93T25JbnRlcnNlY3QpdGhpcy5oYW5kbGVTdGlja3lUb29sdGlwKGEsbixsLHMpO2Vsc2UgaWYoXCJoZWF0bWFwXCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcInRyZWVtYXBcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciBwPXRoaXMuaW50ZXJzZWN0LmhhbmRsZUhlYXRUcmVlVG9vbHRpcCh7ZTphLG9wdDpzLHg6ZSx5OmksdHlwZTpyLmNvbmZpZy5jaGFydC50eXBlfSk7ZT1wLngsaT1wLnksYy5zdHlsZS5sZWZ0PWUrXCJweFwiLGMuc3R5bGUudG9wPWkrXCJweFwifWVsc2UgdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJnRoaXMuaW50ZXJzZWN0LmhhbmRsZUJhclRvb2x0aXAoe2U6YSxvcHQ6c30pLHRoaXMudG9vbHRpcFV0aWwuaGFzTWFya2VycygpJiZ0aGlzLmludGVyc2VjdC5oYW5kbGVNYXJrZXJUb29sdGlwKHtlOmEsb3B0OnMseDplLHk6aX0pO2lmKHRoaXMueWF4aXNUb29sdGlwcy5sZW5ndGgpZm9yKHZhciBmPTA7ZjxyLmNvbmZpZy55YXhpcy5sZW5ndGg7ZisrKXRoaXMuYXhlc1Rvb2x0aXAuZHJhd1lheGlzVG9vbHRpcFRleHQoZixsLHRoaXMueHlSYXRpb3MpO3MudG9vbHRpcEVsLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKX1lbHNlXCJtb3VzZW91dFwiIT09YS50eXBlJiZcInRvdWNoZW5kXCIhPT1hLnR5cGV8fHRoaXMuaGFuZGxlTW91c2VPdXQocyl9fX0se2tleTpcIm5vbkF4aXNDaGFydHNUb29sdGlwc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZSxpPXQub3B0LGE9dC50b29sdGlwUmVjdCxzPXRoaXMudyxyPWkucGF0aHMuZ2V0QXR0cmlidXRlKFwicmVsXCIpLG89dGhpcy5nZXRFbFRvb2x0aXAoKSxuPXMuZ2xvYmFscy5kb20uZWxXcmFwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKFwibW91c2Vtb3ZlXCI9PT1lLnR5cGV8fFwidG91Y2htb3ZlXCI9PT1lLnR5cGUpe28uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6cGFyc2VJbnQociwxMCktMSxzaGFyZWQ6ITF9KTt2YXIgbD1zLmdsb2JhbHMuY2xpZW50WC1uLmxlZnQtYS50dFdpZHRoLzIsaD1zLmdsb2JhbHMuY2xpZW50WS1uLnRvcC1hLnR0SGVpZ2h0LTEwO2lmKG8uc3R5bGUubGVmdD1sK1wicHhcIixvLnN0eWxlLnRvcD1oK1wicHhcIixzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKXt2YXIgYz1yLTEsZD0oMCxzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKSh0aGlzLmxlZ2VuZExhYmVsc1tjXS5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKSx7c2VyaWVzSW5kZXg6YyxkYXRhUG9pbnRJbmRleDpjLHc6c30pO3RoaXMubGVnZW5kTGFiZWxzW2NdLmlubmVySFRNTD1kfX1lbHNlXCJtb3VzZW91dFwiIT09ZS50eXBlJiZcInRvdWNoZW5kXCIhPT1lLnR5cGV8fChvLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxzLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyJiZ0aGlzLmxlZ2VuZExhYmVscy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpO3QuaW5uZXJIVE1MPWRlY29kZVVSSUNvbXBvbmVudChlKX0pKSl9fSx7a2V5OlwiaGFuZGxlU3RpY2t5VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPXRoaXMudG9vbHRpcFV0aWwuZ2V0TmVhcmVzdFZhbHVlcyh7Y29udGV4dDp0aGlzLGhvdmVyQXJlYTphLmhvdmVyQXJlYSxlbEdyaWQ6YS5lbEdyaWQsY2xpZW50WDplLGNsaWVudFk6aX0pLG89ci5qLG49ci5jYXB0dXJlZFNlcmllcztzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmNsdWRlcyhuKSYmKG49bnVsbCk7dmFyIGw9YS5lbEdyaWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoci5ob3Zlclg8MHx8ci5ob3Zlclg+bC53aWR0aCl0aGlzLmhhbmRsZU1vdXNlT3V0KGEpO2Vsc2UgaWYobnVsbCE9PW4pdGhpcy5oYW5kbGVTdGlja3lDYXB0dXJlZFNlcmllcyh0LG4sYSxvKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChvKXx8cy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7dmFyIGg9cy5nbG9iYWxzLnNlcmllcy5maW5kSW5kZXgoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIXMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKGUpfSkpO3RoaXMuY3JlYXRlKHQsdGhpcyxoLG8sYS50dEl0ZW1zKX19fSx7a2V5OlwiaGFuZGxlU3RpY2t5Q2FwdHVyZWRTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLnc7aWYoIXRoaXMudENvbmZpZy5zaGFyZWQmJm51bGw9PT1zLmdsb2JhbHMuc2VyaWVzW2VdW2FdKXJldHVybiB2b2lkIHRoaXMuaGFuZGxlTW91c2VPdXQoaSk7aWYodm9pZCAwIT09cy5nbG9iYWxzLnNlcmllc1tlXVthXSl0aGlzLnRDb25maWcuc2hhcmVkJiZ0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAoYSkmJnRoaXMudG9vbHRpcFV0aWwuaXNJbml0aWFsU2VyaWVzU2FtZUxlbigpP3RoaXMuY3JlYXRlKHQsdGhpcyxlLGEsaS50dEl0ZW1zKTp0aGlzLmNyZWF0ZSh0LHRoaXMsZSxhLGkudHRJdGVtcywhMSk7ZWxzZSBpZih0aGlzLnRvb2x0aXBVdGlsLmlzWG92ZXJsYXAoYSkpe3ZhciByPXMuZ2xvYmFscy5zZXJpZXMuZmluZEluZGV4KChmdW5jdGlvbih0LGUpe3JldHVybiFzLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmNsdWRlcyhlKX0pKTt0aGlzLmNyZWF0ZSh0LHRoaXMscixhLGkudHRJdGVtcyl9fX0se2tleTpcImRlYWN0aXZhdGVIb3ZlckZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPXQuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIiksYT0wO2E8aS5sZW5ndGg7YSsrKWUucGF0aE1vdXNlTGVhdmUoaVthXSl9fSx7a2V5OlwiaGFuZGxlTW91c2VPdXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLmdldEVsWENyb3NzaGFpcnMoKTtpZih0LnRvb2x0aXBFbC5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy5kZWFjdGl2YXRlSG92ZXJGaWx0ZXIoKSxcImJ1YmJsZVwiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmdGhpcy5tYXJrZXIucmVzZXRQb2ludHNTaXplKCksbnVsbCE9PWkmJmkuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLG51bGwhPT10aGlzLnljcm9zc2hhaXJzJiZ0aGlzLnljcm9zc2hhaXJzLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmdGhpcy54YXhpc1Rvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMueWF4aXNUb29sdGlwcy5sZW5ndGgpe251bGw9PT10aGlzLnlheGlzVFRFbHMmJih0aGlzLnlheGlzVFRFbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcFwiKSk7Zm9yKHZhciBhPTA7YTx0aGlzLnlheGlzVFRFbHMubGVuZ3RoO2ErKyl0aGlzLnlheGlzVFRFbHNbYV0uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpfWUuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXImJnRoaXMubGVnZW5kTGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIik7dC5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KGUpfSkpfX0se2tleTpcIm1hcmtlckNsaWNrXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudztcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbmZpZy5jaGFydC5ldmVudHMubWFya2VyQ2xpY2smJmEuY29uZmlnLmNoYXJ0LmV2ZW50cy5tYXJrZXJDbGljayh0LHRoaXMuY3R4LHtzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OmksdzphfSksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcIm1hcmtlckNsaWNrXCIsW3QsdGhpcy5jdHgse3Nlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OmF9XSl9fSx7a2V5OlwiY3JlYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEscyxyKXt2YXIgbyxuLGwsaCxjLGQsZyx1LHAsZix4LGIsdix5LHcsayxBPWFyZ3VtZW50cy5sZW5ndGg+NSYmdm9pZCAwIT09YXJndW1lbnRzWzVdP2FyZ3VtZW50c1s1XTpudWxsLFM9dGhpcy53LEM9aTtcIm1vdXNldXBcIj09PXQudHlwZSYmdGhpcy5tYXJrZXJDbGljayh0LGEscyksbnVsbD09PUEmJihBPXRoaXMudENvbmZpZy5zaGFyZWQpO3ZhciBMPXRoaXMudG9vbHRpcFV0aWwuaGFzTWFya2VycyhhKSxQPXRoaXMudG9vbHRpcFV0aWwuZ2V0RWxCYXJzKCk7aWYoUy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlcil7dmFyIEk9Uy5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlcixNPUFycmF5LmZyb20odGhpcy5sZWdlbmRMYWJlbHMpO00uZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKTt0LmlubmVySFRNTD1kZWNvZGVVUklDb21wb25lbnQoZSl9KSk7Zm9yKHZhciBUPTA7VDxNLmxlbmd0aDtUKyspe3ZhciB6PU1bVF0sWD1wYXJzZUludCh6LmdldEF0dHJpYnV0ZShcImlcIiksMTApLEU9ZGVjb2RlVVJJQ29tcG9uZW50KHouZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIikpLFk9SShFLHtzZXJpZXNJbmRleDpBP1g6YSxkYXRhUG9pbnRJbmRleDpzLHc6U30pO2lmKEEpei5pbm5lckhUTUw9Uy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihYKTwwP1k6RTtlbHNlIGlmKHouaW5uZXJIVE1MPVg9PT1hP1k6RSxhPT09WClicmVha319dmFyIEY9ZShlKHt0dEl0ZW1zOnIsaTphLGo6c30sdm9pZCAwIT09KG51bGw9PT0obz1TLmdsb2JhbHMuc2VyaWVzUmFuZ2UpfHx2b2lkIDA9PT1vfHxudWxsPT09KG49b1thXSl8fHZvaWQgMD09PW58fG51bGw9PT0obD1uW3NdKXx8dm9pZCAwPT09bHx8bnVsbD09PShoPWwueVswXSl8fHZvaWQgMD09PWg/dm9pZCAwOmgueTEpJiZ7eTE6bnVsbD09PShjPVMuZ2xvYmFscy5zZXJpZXNSYW5nZSl8fHZvaWQgMD09PWN8fG51bGw9PT0oZD1jW2FdKXx8dm9pZCAwPT09ZHx8bnVsbD09PShnPWRbc10pfHx2b2lkIDA9PT1nfHxudWxsPT09KHU9Zy55WzBdKXx8dm9pZCAwPT09dT92b2lkIDA6dS55MX0pLHZvaWQgMCE9PShudWxsPT09KHA9Uy5nbG9iYWxzLnNlcmllc1JhbmdlKXx8dm9pZCAwPT09cHx8bnVsbD09PShmPXBbYV0pfHx2b2lkIDA9PT1mfHxudWxsPT09KHg9ZltzXSl8fHZvaWQgMD09PXh8fG51bGw9PT0oYj14LnlbMF0pfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLnkyKSYme3kyOm51bGw9PT0odj1TLmdsb2JhbHMuc2VyaWVzUmFuZ2UpfHx2b2lkIDA9PT12fHxudWxsPT09KHk9dlthXSl8fHZvaWQgMD09PXl8fG51bGw9PT0odz15W3NdKXx8dm9pZCAwPT09d3x8bnVsbD09PShrPXcueVswXSl8fHZvaWQgMD09PWs/dm9pZCAwOmsueTJ9KTtpZihBKXtpZihDLnRvb2x0aXBMYWJlbHMuZHJhd1Nlcmllc1RleHRzKGUoZSh7fSxGKSx7fSx7c2hhcmVkOiF0aGlzLnNob3dPbkludGVyc2VjdCYmdGhpcy50Q29uZmlnLnNoYXJlZH0pKSxMKVMuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplPjA/Qy5tYXJrZXIuZW5sYXJnZVBvaW50cyhzKTpDLnRvb2x0aXBQb3NpdGlvbi5tb3ZlRHluYW1pY1BvaW50c09uSG92ZXIocyk7ZWxzZSBpZih0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmKHRoaXMuYmFyU2VyaWVzSGVpZ2h0PXRoaXMudG9vbHRpcFV0aWwuZ2V0QmFyc0hlaWdodChQKSx0aGlzLmJhclNlcmllc0hlaWdodD4wKSl7dmFyIFI9bmV3IG0odGhpcy5jdHgpLEg9Uy5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVtqPSdcIi5jb25jYXQocyxcIiddXCIpKTt0aGlzLmRlYWN0aXZhdGVIb3ZlckZpbHRlcigpLHRoaXMudG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMocyxhKTtmb3IodmFyIEQ9MDtEPEgubGVuZ3RoO0QrKylSLnBhdGhNb3VzZUVudGVyKEhbRF0pfX1lbHNlIEMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoZSh7c2hhcmVkOiExfSxGKSksdGhpcy50b29sdGlwVXRpbC5oYXNCYXJzKCkmJkMudG9vbHRpcFBvc2l0aW9uLm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnMocyxhKSxMJiZDLnRvb2x0aXBQb3NpdGlvbi5tb3ZlTWFya2VycyhhLHMpfX1dKSx0fSgpLHZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmJhckN0eD1lLHRoaXMudG90YWxGb3JtYXR0ZXI9dGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy50b3RhbC5mb3JtYXR0ZXIsdGhpcy50b3RhbEZvcm1hdHRlcnx8KHRoaXMudG90YWxGb3JtYXR0ZXI9dGhpcy53LmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcil9cmV0dXJuIHIodCxbe2tleTpcImhhbmRsZUJhckRhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LngsaT10LnksYT10LnkxLHM9dC55MixyPXQuaSxvPXQuaixuPXQucmVhbEluZGV4LGw9dC5ncm91cEluZGV4LGg9dC5zZXJpZXMsYz10LmJhckhlaWdodCxkPXQuYmFyV2lkdGgsZz10LmJhclhQb3NpdGlvbix1PXQuYmFyWVBvc2l0aW9uLHA9dC52aXNpYmxlU2VyaWVzLGY9dC5yZW5kZXJlZFBhdGgseD10aGlzLncsYj1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLHY9QXJyYXkuaXNBcnJheSh0aGlzLmJhckN0eC5zdHJva2VXaWR0aCk/dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGhbbl06dGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgseT1lK3BhcnNlRmxvYXQoZCpwKSx3PWkrcGFyc2VGbG9hdChjKnApO3guZ2xvYmFscy5pc1hOdW1lcmljJiYheC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHk9ZStwYXJzZUZsb2F0KGQqKHArMSkpLHc9aStwYXJzZUZsb2F0KGMqKHArMSkpLXYpO3ZhciBrLEE9bnVsbCxTPWUsQz1pLEw9e30sUD14LmNvbmZpZy5kYXRhTGFiZWxzLEk9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLE09dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLnRvdGFsO3ZvaWQgMCE9PXUmJnRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJih3PXUsQz11KSx2b2lkIDAhPT1nJiZ0aGlzLmJhckN0eC5pc1ZlcnRpY2FsR3JvdXBlZFJhbmdlQmFyJiYoeT1nLFM9Zyk7dmFyIFQ9UC5vZmZzZXRYLHo9UC5vZmZzZXRZLFg9e3dpZHRoOjAsaGVpZ2h0OjB9O2lmKHguY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCl7dmFyIEU9dGhpcy5iYXJDdHguc2VyaWVzW3JdW29dO1g9Yi5nZXRUZXh0UmVjdHMoeC5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0oRSkscGFyc2VGbG9hdChQLnN0eWxlLmZvbnRTaXplKSl9dmFyIFk9e3g6ZSx5OmksaTpyLGo6byxyZWFsSW5kZXg6bixncm91cEluZGV4Omx8fC0xLHJlbmRlcmVkUGF0aDpmLGJjeDp5LGJjeTp3LGJhckhlaWdodDpjLGJhcldpZHRoOmQsdGV4dFJlY3RzOlgsc3Ryb2tlV2lkdGg6dixkYXRhTGFiZWxzWDpTLGRhdGFMYWJlbHNZOkMsZGF0YUxhYmVsc0NvbmZpZzpQLGJhckRhdGFMYWJlbHNDb25maWc6SSxiYXJUb3RhbERhdGFMYWJlbHNDb25maWc6TSxvZmZYOlQsb2ZmWTp6fTtyZXR1cm4gTD10aGlzLmJhckN0eC5pc0hvcml6b250YWw/dGhpcy5jYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uKFkpOnRoaXMuY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvbihZKSxmLmF0dHIoe2N5OkwuYmN5LGN4OkwuYmN4LGo6byx2YWw6aFtyXVtvXSxiYXJIZWlnaHQ6YyxiYXJXaWR0aDpkfSksaz10aGlzLmRyYXdDYWxjdWxhdGVkRGF0YUxhYmVscyh7eDpMLmRhdGFMYWJlbHNYLHk6TC5kYXRhTGFiZWxzWSx2YWw6dGhpcy5iYXJDdHguaXNSYW5nZUJhcj9bYSxzXTpoW3JdW29dLGk6bixqOm8sYmFyV2lkdGg6ZCxiYXJIZWlnaHQ6Yyx0ZXh0UmVjdHM6WCxkYXRhTGFiZWxzQ29uZmlnOlB9KSx4LmNvbmZpZy5jaGFydC5zdGFja2VkJiZNLmVuYWJsZWQmJihBPXRoaXMuZHJhd1RvdGFsRGF0YUxhYmVscyh7eDpMLnRvdGFsRGF0YUxhYmVsc1gseTpMLnRvdGFsRGF0YUxhYmVsc1kscmVhbEluZGV4Om4sdGV4dEFuY2hvcjpMLnRvdGFsRGF0YUxhYmVsc0FuY2hvcix2YWw6dGhpcy5nZXRTdGFja2VkVG90YWxEYXRhTGFiZWwoe3JlYWxJbmRleDpuLGo6b30pLGRhdGFMYWJlbHNDb25maWc6UCxiYXJUb3RhbERhdGFMYWJlbHNDb25maWc6TX0pKSx7ZGF0YUxhYmVsczprLHRvdGFsRGF0YUxhYmVsczpBfX19LHtrZXk6XCJnZXRTdGFja2VkVG90YWxEYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LnJlYWxJbmRleCxhPXQuaixzPXRoaXMudyxyPXRoaXMuYmFyQ3R4LnN0YWNrZWRTZXJpZXNUb3RhbHNbYV07cmV0dXJuIHRoaXMudG90YWxGb3JtYXR0ZXImJihyPXRoaXMudG90YWxGb3JtYXR0ZXIocixlKGUoe30scykse30se3Nlcmllc0luZGV4OmksZGF0YVBvaW50SW5kZXg6YSx3OnN9KSkpLHJ9fSx7a2V5OlwiY2FsY3VsYXRlQ29sdW1uc0RhdGFMYWJlbHNQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10aGlzLncscz10Lmkscj10Lmosbz10LnJlYWxJbmRleCxuPXQuZ3JvdXBJbmRleCxsPXQueSxoPXQuYmN4LGM9dC5iYXJXaWR0aCxkPXQuYmFySGVpZ2h0LGc9dC50ZXh0UmVjdHMsdT10LmRhdGFMYWJlbHNYLHA9dC5kYXRhTGFiZWxzWSxmPXQuZGF0YUxhYmVsc0NvbmZpZyx4PXQuYmFyRGF0YUxhYmVsc0NvbmZpZyxiPXQuYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnLHY9dC5zdHJva2VXaWR0aCx5PXQub2ZmWCx3PXQub2ZmWTtkPU1hdGguYWJzKGQpO3ZhciBrPVwidmVydGljYWxcIj09PWEuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm9yaWVudGF0aW9uLEE9dGhpcy5iYXJDdHguYmFySGVscGVycy5nZXRaZXJvVmFsdWVFbmNvdW50ZXJzKHtpOnMsajpyfSkuemVyb0VuY291bnRlcnM7aD1oLXYvMisoLTEhPT1uP24qYzowKTt2YXIgUz1hLmdsb2JhbHMuZ3JpZFdpZHRoL2EuZ2xvYmFscy5kYXRhUG9pbnRzO2lmKHRoaXMuYmFyQ3R4LmlzVmVydGljYWxHcm91cGVkUmFuZ2VCYXI/dSs9Yy8yOih1PWEuZ2xvYmFscy5pc1hOdW1lcmljP2gtYy8yK3k6aC1TK2MvMit5LEE+MCYmYS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkJiYodS09YypBKSksayl7dT11K2cuaGVpZ2h0LzItdi8yLTJ9dmFyIEM9dGhpcy5iYXJDdHguc2VyaWVzW3NdW3JdPDAsTD1sO3N3aXRjaCh0aGlzLmJhckN0eC5pc1JldmVyc2VkJiYoTD1sLWQrKEM/MipkOjApLGwtPWQpLHgucG9zaXRpb24pe2Nhc2VcImNlbnRlclwiOnA9az9DP0wtZC8yK3c6TCtkLzItdzpDP0wtZC8yK2cuaGVpZ2h0LzIrdzpMK2QvMitnLmhlaWdodC8yLXc7YnJlYWs7Y2FzZVwiYm90dG9tXCI6cD1rP0M/TC1kK3c6TCtkLXc6Qz9MLWQrZy5oZWlnaHQrdit3OkwrZC1nLmhlaWdodC8yK3YtdzticmVhaztjYXNlXCJ0b3BcIjpwPWs/Qz9MK3c6TC13OkM/TC1nLmhlaWdodC8yLXc6TCtnLmhlaWdodCt3fWlmKHRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09byYmYi5lbmFibGVkKXt2YXIgUD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLmdldFRleHRSZWN0cyh0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4Om8sajpyfSksZi5mb250U2l6ZSk7ZT1DP0wtUC5oZWlnaHQvMi13LWIub2Zmc2V0WSsxODpMK1AuaGVpZ2h0K3crYi5vZmZzZXRZLTE4LGk9dStiLm9mZnNldFh9cmV0dXJuIGEuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChwPDA/cD0wK3Y6cCtnLmhlaWdodC8zPmEuZ2xvYmFscy5ncmlkSGVpZ2h0JiYocD1hLmdsb2JhbHMuZ3JpZEhlaWdodC12KSkse2JjeDpoLGJjeTpsLGRhdGFMYWJlbHNYOnUsZGF0YUxhYmVsc1k6cCx0b3RhbERhdGFMYWJlbHNYOmksdG90YWxEYXRhTGFiZWxzWTplLHRvdGFsRGF0YUxhYmVsc0FuY2hvcjpcIm1pZGRsZVwifX19LHtrZXk6XCJjYWxjdWxhdGVCYXJzRGF0YUxhYmVsc1Bvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dC54LGE9dC5pLHM9dC5qLHI9dC5yZWFsSW5kZXgsbz10Lmdyb3VwSW5kZXgsbj10LmJjeSxsPXQuYmFySGVpZ2h0LGg9dC5iYXJXaWR0aCxjPXQudGV4dFJlY3RzLGQ9dC5kYXRhTGFiZWxzWCxnPXQuc3Ryb2tlV2lkdGgsdT10LmRhdGFMYWJlbHNDb25maWcscD10LmJhckRhdGFMYWJlbHNDb25maWcsZj10LmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyx4PXQub2ZmWCxiPXQub2ZmWSx2PWUuZ2xvYmFscy5ncmlkSGVpZ2h0L2UuZ2xvYmFscy5kYXRhUG9pbnRzO2g9TWF0aC5hYnMoaCk7dmFyIHksdyxrPShuKz0tMSE9PW8/bypsOjApLSh0aGlzLmJhckN0eC5pc1JhbmdlQmFyPzA6dikrbC8yK2MuaGVpZ2h0LzIrYi0zLEE9XCJzdGFydFwiLFM9dGhpcy5iYXJDdHguc2VyaWVzW2FdW3NdPDAsQz1pO3N3aXRjaCh0aGlzLmJhckN0eC5pc1JldmVyc2VkJiYoQz1pK2gtKFM/MipoOjApLGk9ZS5nbG9iYWxzLmdyaWRXaWR0aC1oKSxwLnBvc2l0aW9uKXtjYXNlXCJjZW50ZXJcIjpkPVM/QytoLzIteDpNYXRoLm1heChjLndpZHRoLzIsQy1oLzIpK3g7YnJlYWs7Y2FzZVwiYm90dG9tXCI6ZD1TP0MraC1nLU1hdGgucm91bmQoYy53aWR0aC8yKS14OkMtaCtnK01hdGgucm91bmQoYy53aWR0aC8yKSt4O2JyZWFrO2Nhc2VcInRvcFwiOmQ9Uz9DLWcrTWF0aC5yb3VuZChjLndpZHRoLzIpLXg6Qy1nLU1hdGgucm91bmQoYy53aWR0aC8yKSt4fWlmKHRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09ciYmZi5lbmFibGVkKXt2YXIgTD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLmdldFRleHRSZWN0cyh0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4OnIsajpzfSksdS5mb250U2l6ZSk7Uz8oeT1DLWcrTWF0aC5yb3VuZChMLndpZHRoLzIpLXgtZi5vZmZzZXRYLTE1LEE9XCJlbmRcIik6eT1DLWctTWF0aC5yb3VuZChMLndpZHRoLzIpK3grZi5vZmZzZXRYKzE1LHc9aytmLm9mZnNldFl9cmV0dXJuIGUuY29uZmlnLmNoYXJ0LnN0YWNrZWR8fChkPDA/ZD1kK2Mud2lkdGgrZzpkK2Mud2lkdGgvMj5lLmdsb2JhbHMuZ3JpZFdpZHRoJiYoZD1lLmdsb2JhbHMuZ3JpZFdpZHRoLWMud2lkdGgtZykpLHtiY3g6aSxiY3k6bixkYXRhTGFiZWxzWDpkLGRhdGFMYWJlbHNZOmssdG90YWxEYXRhTGFiZWxzWDp5LHRvdGFsRGF0YUxhYmVsc1k6dyx0b3RhbERhdGFMYWJlbHNBbmNob3I6QX19fSx7a2V5OlwiZHJhd0NhbGN1bGF0ZWREYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGk9dC54LGE9dC55LHM9dC52YWwscj10Lmksbz10Lmosbj10LnRleHRSZWN0cyxsPXQuYmFySGVpZ2h0LGg9dC5iYXJXaWR0aCxjPXQuZGF0YUxhYmVsc0NvbmZpZyxkPXRoaXMudyxnPVwicm90YXRlKDApXCI7XCJ2ZXJ0aWNhbFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb24mJihnPVwicm90YXRlKC05MCwgXCIuY29uY2F0KGksXCIsIFwiKS5jb25jYXQoYSxcIilcIikpO3ZhciB1PW5ldyBPKHRoaXMuYmFyQ3R4LmN0eCkscD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLGY9Yy5mb3JtYXR0ZXIseD1udWxsLGI9ZC5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihyKT4tMTtpZihjLmVuYWJsZWQmJiFiKXt4PXAuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wiLHRyYW5zZm9ybTpnfSk7dmFyIHY9XCJcIjt2b2lkIDAhPT1zJiYodj1mKHMsZShlKHt9LGQpLHt9LHtzZXJpZXNJbmRleDpyLGRhdGFQb2ludEluZGV4Om8sdzpkfSkpKSwhcyYmZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkJiYodj1cIlwiKTt2YXIgeT1kLmdsb2JhbHMuc2VyaWVzW3JdW29dPDAsdz1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5wb3NpdGlvbjtpZihcInZlcnRpY2FsXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbiYmKFwidG9wXCI9PT13JiYoYy50ZXh0QW5jaG9yPXk/XCJlbmRcIjpcInN0YXJ0XCIpLFwiY2VudGVyXCI9PT13JiYoYy50ZXh0QW5jaG9yPVwibWlkZGxlXCIpLFwiYm90dG9tXCI9PT13JiYoYy50ZXh0QW5jaG9yPXk/XCJlbmRcIjpcInN0YXJ0XCIpKSx0aGlzLmJhckN0eC5pc1JhbmdlQmFyJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMuaGlkZU92ZXJmbG93aW5nTGFiZWxzKWg8cC5nZXRUZXh0UmVjdHModixwYXJzZUZsb2F0KGMuc3R5bGUuZm9udFNpemUpKS53aWR0aCYmKHY9XCJcIik7ZC5jb25maWcuY2hhcnQuc3RhY2tlZCYmdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kYXRhTGFiZWxzLmhpZGVPdmVyZmxvd2luZ0xhYmVscyYmKHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD9uLndpZHRoLzEuNj5NYXRoLmFicyhoKSYmKHY9XCJcIik6bi5oZWlnaHQvMS42Pk1hdGguYWJzKGwpJiYodj1cIlwiKSk7dmFyIGs9ZSh7fSxjKTt0aGlzLmJhckN0eC5pc0hvcml6b250YWwmJnM8MCYmKFwic3RhcnRcIj09PWMudGV4dEFuY2hvcj9rLnRleHRBbmNob3I9XCJlbmRcIjpcImVuZFwiPT09Yy50ZXh0QW5jaG9yJiYoay50ZXh0QW5jaG9yPVwic3RhcnRcIikpLHUucGxvdERhdGFMYWJlbHNUZXh0KHt4OmkseTphLHRleHQ6dixpOnIsajpvLHBhcmVudDp4LGRhdGFMYWJlbHNDb25maWc6ayxhbHdheXNEcmF3RGF0YUxhYmVsOiEwLG9mZnNldENvcnJlY3Rpb246ITB9KX1yZXR1cm4geH19LHtrZXk6XCJkcmF3VG90YWxEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LngsYT10Lnkscz10LnZhbCxyPXQucmVhbEluZGV4LG89dC50ZXh0QW5jaG9yLG49dC5iYXJUb3RhbERhdGFMYWJlbHNDb25maWcsbD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpO3JldHVybiBuLmVuYWJsZWQmJnZvaWQgMCE9PWkmJnZvaWQgMCE9PWEmJnRoaXMuYmFyQ3R4Lmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PT09ciYmKGU9bC5kcmF3VGV4dCh7eDppLHk6YSxmb3JlQ29sb3I6bi5zdHlsZS5jb2xvcix0ZXh0OnMsdGV4dEFuY2hvcjpvLGZvbnRGYW1pbHk6bi5zdHlsZS5mb250RmFtaWx5LGZvbnRTaXplOm4uc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDpuLnN0eWxlLmZvbnRXZWlnaHR9KSksZX19XSksdH0oKSxtdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5iYXJDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFZhcmlhYmxlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLmJhckN0eC5zZXJpZXM9dCx0aGlzLmJhckN0eC50b3RhbEl0ZW1zPTAsdGhpcy5iYXJDdHguc2VyaWVzTGVuPTAsdGhpcy5iYXJDdHgudmlzaWJsZUk9LTEsdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zPTE7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspaWYodFtpXS5sZW5ndGg+MCYmKHRoaXMuYmFyQ3R4LnNlcmllc0xlbj10aGlzLmJhckN0eC5zZXJpZXNMZW4rMSx0aGlzLmJhckN0eC50b3RhbEl0ZW1zKz10W2ldLmxlbmd0aCksZS5nbG9iYWxzLmlzWE51bWVyaWMpZm9yKHZhciBhPTA7YTx0W2ldLmxlbmd0aDthKyspZS5nbG9iYWxzLnNlcmllc1hbaV1bYV0+ZS5nbG9iYWxzLm1pblgmJmUuZ2xvYmFscy5zZXJpZXNYW2ldW2FdPGUuZ2xvYmFscy5tYXhYJiZ0aGlzLmJhckN0eC52aXNpYmxlSXRlbXMrKztlbHNlIHRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcz1lLmdsb2JhbHMuZGF0YVBvaW50czswPT09dGhpcy5iYXJDdHguc2VyaWVzTGVuJiYodGhpcy5iYXJDdHguc2VyaWVzTGVuPTEpLHRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcz1bXSxlLmdsb2JhbHMuY29tYm9DaGFydHN8fHRoaXMuY2hlY2taZXJvU2VyaWVzKHtzZXJpZXM6dH0pfX0se2tleTpcImluaXRpYWxQb3NpdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxhLHMscixvLG4sbD10aGlzLncsaD1sLmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmJhckN0eC5pc1JhbmdlQmFyJiYoaD1sLmdsb2JhbHMubGFiZWxzLmxlbmd0aCk7dmFyIGM9dGhpcy5iYXJDdHguc2VyaWVzTGVuO2lmKGwuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cyYmKGM9MSksdGhpcy5iYXJDdHguaXNIb3Jpem9udGFsKXM9KGk9bC5nbG9iYWxzLmdyaWRIZWlnaHQvaCkvYyxsLmdsb2JhbHMuaXNYTnVtZXJpYyYmKHM9KGk9bC5nbG9iYWxzLmdyaWRIZWlnaHQvdGhpcy5iYXJDdHgudG90YWxJdGVtcykvdGhpcy5iYXJDdHguc2VyaWVzTGVuKSxzPXMqcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5iYXJIZWlnaHQsMTApLzEwMCwtMT09PVN0cmluZyh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmJhckhlaWdodCkuaW5kZXhPZihcIiVcIikmJihzPXBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0LDEwKSksbj10aGlzLmJhckN0eC5iYXNlTGluZUludmVydGVkWStsLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsodGhpcy5iYXJDdHguaXNSZXZlcnNlZD9sLmdsb2JhbHMuZ3JpZFdpZHRoOjApLSh0aGlzLmJhckN0eC5pc1JldmVyc2VkPzIqdGhpcy5iYXJDdHguYmFzZUxpbmVJbnZlcnRlZFk6MCksdGhpcy5iYXJDdHguaXNGdW5uZWwmJihuPWwuZ2xvYmFscy5ncmlkV2lkdGgvMiksZT0oaS1zKnRoaXMuYmFyQ3R4LnNlcmllc0xlbikvMjtlbHNle2lmKGE9bC5nbG9iYWxzLmdyaWRXaWR0aC90aGlzLmJhckN0eC52aXNpYmxlSXRlbXMsbC5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoYT1sLmdsb2JhbHMuZ3JpZFdpZHRoL2wuZ2xvYmFscy5kYXRhUG9pbnRzKSxyPWEvYypwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDAsbC5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBkPXRoaXMuYmFyQ3R4LnhSYXRpbztsLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihkPXRoaXMuYmFyQ3R4LmluaXRpYWxYUmF0aW8pLGwuZ2xvYmFscy5taW5YRGlmZiYmLjUhPT1sLmdsb2JhbHMubWluWERpZmYmJmwuZ2xvYmFscy5taW5YRGlmZi9kPjAmJihhPWwuZ2xvYmFscy5taW5YRGlmZi9kKSwocj1hL2MqcGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkvMTAwKTwxJiYocj0xKX0tMT09PVN0cmluZyh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoKS5pbmRleE9mKFwiJVwiKSYmKHI9cGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkpLG89bC5nbG9iYWxzLmdyaWRIZWlnaHQtdGhpcy5iYXJDdHguYmFzZUxpbmVZW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdLSh0aGlzLmJhckN0eC5pc1JldmVyc2VkP2wuZ2xvYmFscy5ncmlkSGVpZ2h0OjApKyh0aGlzLmJhckN0eC5pc1JldmVyc2VkPzIqdGhpcy5iYXJDdHguYmFzZUxpbmVZW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdOjApLHQ9bC5nbG9iYWxzLnBhZEhvcml6b250YWwrKGEtcip0aGlzLmJhckN0eC5zZXJpZXNMZW4pLzJ9cmV0dXJue3g6dCx5OmUseURpdmlzaW9uOmkseERpdmlzaW9uOmEsYmFySGVpZ2h0OnMsYmFyV2lkdGg6cix6ZXJvSDpvLHplcm9XOm59fX0se2tleTpcImluaXRpYWxpemVTdGFja2VkUHJldlZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10Lnc7ZS5nbG9iYWxzLmhhc1Nlcmllc0dyb3Vwcz9lLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV18fCh0W2VdPXt9KSx0W2VdLnByZXZZPVtdLHRbZV0ucHJldlg9W10sdFtlXS5wcmV2WUY9W10sdFtlXS5wcmV2WEY9W10sdFtlXS5wcmV2WVZhbD1bXSx0W2VdLnByZXZYVmFsPVtdfSkpOih0LnByZXZZPVtdLHQucHJldlg9W10sdC5wcmV2WUY9W10sdC5wcmV2WEY9W10sdC5wcmV2WVZhbD1bXSx0LnByZXZYVmFsPVtdKX19LHtrZXk6XCJpbml0aWFsaXplU3RhY2tlZFhZVmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudztlLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzP2UuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXXx8KHRbZV09e30pLHRbZV0ueEFycmo9W10sdFtlXS54QXJyakY9W10sdFtlXS54QXJyalZhbD1bXSx0W2VdLnlBcnJqPVtdLHRbZV0ueUFycmpGPVtdLHRbZV0ueUFycmpWYWw9W119KSk6KHQueEFycmo9W10sdC54QXJyakY9W10sdC54QXJyalZhbD1bXSx0LnlBcnJqPVtdLHQueUFycmpGPVtdLHQueUFycmpWYWw9W10pfX0se2tleTpcImdldFBhdGhGaWxsQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcyxyLG8sbixsPXRoaXMudyxoPW5ldyBSKHRoaXMuYmFyQ3R4LmN0eCksYz1udWxsLGQ9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kaXN0cmlidXRlZD9pOmU7dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMucmFuZ2VzLmxlbmd0aD4wJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5yYW5nZXMubWFwKChmdW5jdGlvbihhKXt0W2VdW2ldPj1hLmZyb20mJnRbZV1baV08PWEudG8mJihjPWEuY29sb3IpfSkpO3JldHVybiBsLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSYmbC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0uZmlsbENvbG9yJiYoYz1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS5maWxsQ29sb3IpLGguZmlsbFBhdGgoe3Nlcmllc051bWJlcjp0aGlzLmJhckN0eC5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP2Q6YSxkYXRhUG9pbnRJbmRleDppLGNvbG9yOmMsdmFsdWU6dFtlXVtpXSxmaWxsQ29uZmlnOm51bGw9PT0ocz1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSl8fHZvaWQgMD09PXM/dm9pZCAwOnMuZmlsbCxmaWxsVHlwZTpudWxsIT09KHI9bC5jb25maWcuc2VyaWVzW2VdLmRhdGFbaV0pJiZ2b2lkIDAhPT1yJiZudWxsIT09KG89ci5maWxsKSYmdm9pZCAwIT09byYmby50eXBlP251bGw9PT0obj1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZmlsbC50eXBlOmwuY29uZmlnLmZpbGwudHlwZX0pfX0se2tleTpcImdldFN0cm9rZVdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPTAscz10aGlzLnc7cmV0dXJuIHRoaXMuYmFyQ3R4LnNlcmllc1t0XVtlXT90aGlzLmJhckN0eC5pc051bGxWYWx1ZT0hMTp0aGlzLmJhckN0eC5pc051bGxWYWx1ZT0hMCxzLmNvbmZpZy5zdHJva2Uuc2hvdyYmKHRoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlfHwoYT1BcnJheS5pc0FycmF5KHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKT90aGlzLmJhckN0eC5zdHJva2VXaWR0aFtpXTp0aGlzLmJhckN0eC5zdHJva2VXaWR0aCkpLGF9fSx7a2V5Olwic2hvdWxkQXBwbHlSYWRpdXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT0hMTtyZXR1cm4gZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1cz4wJiYoZS5jb25maWcuY2hhcnQuc3RhY2tlZCYmXCJsYXN0XCI9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzV2hlblN0YWNrZWQ/dGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT10JiYoaT0hMCk6aT0hMCksaX19LHtrZXk6XCJiYXJCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5qLGk9dC5pLGE9dC54MSxzPXQueDIscj10LnkxLG89dC55MixuPXQuZWxTZXJpZXMsbD10aGlzLncsaD1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLGM9bmV3IE4odGhpcy5iYXJDdHguY3R4KS5nZXRBY3RpdmVDb25maWdTZXJpZXNJbmRleCgpO2lmKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoPjAmJmM9PT1pKXtlPj10aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzLmxlbmd0aCYmKGUlPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoKTt2YXIgZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyQ29sb3JzW2VdLGc9aC5kcmF3UmVjdCh2b2lkIDAhPT1hP2E6MCx2b2lkIDAhPT1yP3I6MCx2b2lkIDAhPT1zP3M6bC5nbG9iYWxzLmdyaWRXaWR0aCx2b2lkIDAhPT1vP286bC5nbG9iYWxzLmdyaWRIZWlnaHQsdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhclJhZGl1cyxkLHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJPcGFjaXR5KTtuLmFkZChnKSxnLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYmFja2dyb3VuZEJhclwiKX19fSx7a2V5OlwiZ2V0Q29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuYmFyV2lkdGgsYT10LmJhclhQb3NpdGlvbixzPXQueTEscj10LnkyLG89dC5zdHJva2VXaWR0aCxuPXQuc2VyaWVzR3JvdXAsbD10LnJlYWxJbmRleCxoPXQuaSxjPXQuaixkPXQudyxnPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCk7KG89QXJyYXkuaXNBcnJheShvKT9vW2xdOm8pfHwobz0wKTt2YXIgdT1pLHA9YTtudWxsIT09KGU9ZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10pJiZ2b2lkIDAhPT1lJiZlLmNvbHVtbldpZHRoT2Zmc2V0JiYocD1hLWQuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdLmNvbHVtbldpZHRoT2Zmc2V0LzIsdT1pK2QuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdLmNvbHVtbldpZHRoT2Zmc2V0KTt2YXIgZj1wLHg9cCt1O3MrPS4wMDEscis9LjAwMTt2YXIgYj1nLm1vdmUoZixzKSx2PWcubW92ZShmLHMpLHk9Zy5saW5lKHgtbyxzKTtpZihkLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKHY9dGhpcy5iYXJDdHguZ2V0UHJldmlvdXNQYXRoKGwsYywhMSkpLGI9YitnLmxpbmUoZixyKStnLmxpbmUoeC1vLHIpK2cubGluZSh4LW8scykrKFwiYXJvdW5kXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/XCIgWlwiOlwiIHpcIiksdj12K2cubGluZShmLHMpK3kreSt5K3kreStnLmxpbmUoZixzKSsoXCJhcm91bmRcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKSx0aGlzLnNob3VsZEFwcGx5UmFkaXVzKGwpJiYoYj1nLnJvdW5kUGF0aENvcm5lcnMoYixkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzKSksZC5jb25maWcuY2hhcnQuc3RhY2tlZCl7dmFyIHc9dGhpcy5iYXJDdHg7ZC5nbG9iYWxzLmhhc1Nlcmllc0dyb3VwcyYmbiYmKHc9dGhpcy5iYXJDdHhbbl0pLHcueUFycmoucHVzaChyKSx3LnlBcnJqRi5wdXNoKE1hdGguYWJzKHMtcikpLHcueUFycmpWYWwucHVzaCh0aGlzLmJhckN0eC5zZXJpZXNbaF1bY10pfXJldHVybntwYXRoVG86YixwYXRoRnJvbTp2fX19LHtrZXk6XCJnZXRCYXJwYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5iYXJZUG9zaXRpb24sYT10LmJhckhlaWdodCxzPXQueDEscj10LngyLG89dC5zdHJva2VXaWR0aCxuPXQuc2VyaWVzR3JvdXAsbD10LnJlYWxJbmRleCxoPXQuaSxjPXQuaixkPXQudyxnPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCk7KG89QXJyYXkuaXNBcnJheShvKT9vW2xdOm8pfHwobz0wKTt2YXIgdT1pLHA9YTtudWxsIT09KGU9ZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10pJiZ2b2lkIDAhPT1lJiZlLmJhckhlaWdodE9mZnNldCYmKHU9aS1kLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXS5iYXJIZWlnaHRPZmZzZXQvMixwPWErZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10uYmFySGVpZ2h0T2Zmc2V0KTt2YXIgZj11LHg9dStwO3MrPS4wMDEscis9LjAwMTt2YXIgYj1nLm1vdmUocyxmKSx2PWcubW92ZShzLGYpO2QuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYodj10aGlzLmJhckN0eC5nZXRQcmV2aW91c1BhdGgobCxjLCExKSk7dmFyIHk9Zy5saW5lKHMseC1vKTtpZihiPWIrZy5saW5lKHIsZikrZy5saW5lKHIseC1vKSt5KyhcImFyb3VuZFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uP1wiIFpcIjpcIiB6XCIpLHY9ditnLmxpbmUocyxmKSt5K3kreSt5K3krZy5saW5lKHMsZikrKFwiYXJvdW5kXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/XCIgWlwiOlwiIHpcIiksdGhpcy5zaG91bGRBcHBseVJhZGl1cyhsKSYmKGI9Zy5yb3VuZFBhdGhDb3JuZXJzKGIsZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1cykpLGQuY29uZmlnLmNoYXJ0LnN0YWNrZWQpe3ZhciB3PXRoaXMuYmFyQ3R4O2QuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHMmJm4mJih3PXRoaXMuYmFyQ3R4W25dKSx3LnhBcnJqLnB1c2gociksdy54QXJyakYucHVzaChNYXRoLmFicyhzLXIpKSx3LnhBcnJqVmFsLnB1c2godGhpcy5iYXJDdHguc2VyaWVzW2hdW2NdKX1yZXR1cm57cGF0aFRvOmIscGF0aEZyb206dn19fSx7a2V5OlwiY2hlY2taZXJvU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuc2VyaWVzLGk9dGhpcy53LGE9MDthPGUubGVuZ3RoO2ErKyl7Zm9yKHZhciBzPTAscj0wO3I8ZVtpLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO3IrKylzKz1lW2FdW3JdOzA9PT1zJiZ0aGlzLmJhckN0eC56ZXJvU2VyaWVzZXMucHVzaChhKX19fSx7a2V5OlwiZ2V0WEZvclZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdP2U6bnVsbDtyZXR1cm4gbnVsbCE9dCYmKGk9ZSt0L3RoaXMuYmFyQ3R4LmludmVydGVkWVJhdGlvLTIqKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/dC90aGlzLmJhckN0eC5pbnZlcnRlZFlSYXRpbzowKSksaX19LHtrZXk6XCJnZXRZRm9yVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0/ZTpudWxsO3JldHVybiBudWxsIT10JiYoaT1lLXQvdGhpcy5iYXJDdHgueVJhdGlvW3RoaXMuYmFyQ3R4LnlheGlzSW5kZXhdKzIqKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/dC90aGlzLmJhckN0eC55UmF0aW9bdGhpcy5iYXJDdHgueWF4aXNJbmRleF06MCkpLGl9fSx7a2V5OlwiZ2V0R29hbFZhbHVlc1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSxhLHMscil7dmFyIG49dGhpcyxsPXRoaXMudyxoPVtdLGM9ZnVuY3Rpb24oZSxzKXt2YXIgcjtoLnB1c2goKG8ocj17fSx0LFwieFwiPT09dD9uLmdldFhGb3JWYWx1ZShlLGksITEpOm4uZ2V0WUZvclZhbHVlKGUsYSwhMSkpLG8ocixcImF0dHJzXCIscykscikpfTtpZihsLmdsb2JhbHMuc2VyaWVzR29hbHNbc10mJmwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXSYmQXJyYXkuaXNBcnJheShsLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0pJiZsLmdsb2JhbHMuc2VyaWVzR29hbHNbc11bcl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7Yyh0LnZhbHVlLHQpfSkpLHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuaXNEdW1iYmVsbCYmbC5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCl7dmFyIGQ9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5kdW1iYmVsbENvbG9ycz90aGlzLmJhckN0eC5iYXJPcHRpb25zLmR1bWJiZWxsQ29sb3JzOmwuZ2xvYmFscy5jb2xvcnMsZz17c3Ryb2tlSGVpZ2h0OlwieFwiPT09dD8wOmwuZ2xvYmFscy5tYXJrZXJzLnNpemVbc10sc3Ryb2tlV2lkdGg6XCJ4XCI9PT10P2wuZ2xvYmFscy5tYXJrZXJzLnNpemVbc106MCxzdHJva2VEYXNoQXJyYXk6MCxzdHJva2VMaW5lQ2FwOlwicm91bmRcIixzdHJva2VDb2xvcjpBcnJheS5pc0FycmF5KGRbc10pP2Rbc11bMF06ZFtzXX07YyhsLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtzXVtyXSxnKSxjKGwuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtzXVtyXSxlKGUoe30sZykse30se3N0cm9rZUNvbG9yOkFycmF5LmlzQXJyYXkoZFtzXSk/ZFtzXVsxXTpkW3NdfSkpfXJldHVybiBofX0se2tleTpcImRyYXdHb2FsTGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuYmFyWFBvc2l0aW9uLGk9dC5iYXJZUG9zaXRpb24sYT10LmdvYWxYLHM9dC5nb2FsWSxyPXQuYmFyV2lkdGgsbz10LmJhckhlaWdodCxuPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksbD1uLmdyb3VwKHtjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLWJhci1nb2Fscy1ncm91cHNcIn0pO2wubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKSx0aGlzLmJhckN0eC53Lmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOmwubm9kZX0pLGwuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQodGhpcy5iYXJDdHgudy5nbG9iYWxzLmN1aWQsXCIpXCIpKTt2YXIgaD1udWxsO3JldHVybiB0aGlzLmJhckN0eC5pc0hvcml6b250YWw/QXJyYXkuaXNBcnJheShhKSYmYS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT12b2lkIDAhPT10LmF0dHJzLnN0cm9rZUhlaWdodD90LmF0dHJzLnN0cm9rZUhlaWdodDpvLzIsYT1pK2Urby8yO2g9bi5kcmF3TGluZSh0LngsYS0yKmUsdC54LGEsdC5hdHRycy5zdHJva2VDb2xvcj90LmF0dHJzLnN0cm9rZUNvbG9yOnZvaWQgMCx0LmF0dHJzLnN0cm9rZURhc2hBcnJheSx0LmF0dHJzLnN0cm9rZVdpZHRoP3QuYXR0cnMuc3Ryb2tlV2lkdGg6Mix0LmF0dHJzLnN0cm9rZUxpbmVDYXApLGwuYWRkKGgpfSkpOkFycmF5LmlzQXJyYXkocykmJnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9dm9pZCAwIT09dC5hdHRycy5zdHJva2VXaWR0aD90LmF0dHJzLnN0cm9rZVdpZHRoOnIvMixhPWUraStyLzI7aD1uLmRyYXdMaW5lKGEtMippLHQueSxhLHQueSx0LmF0dHJzLnN0cm9rZUNvbG9yP3QuYXR0cnMuc3Ryb2tlQ29sb3I6dm9pZCAwLHQuYXR0cnMuc3Ryb2tlRGFzaEFycmF5LHQuYXR0cnMuc3Ryb2tlSGVpZ2h0P3QuYXR0cnMuc3Ryb2tlSGVpZ2h0OjIsdC5hdHRycy5zdHJva2VMaW5lQ2FwKSxsLmFkZChoKX0pKSxsfX0se2tleTpcImRyYXdCYXJTaGFkb3dcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnByZXZQYXRocyxpPXQuY3VyclBhdGhzLGE9dC5jb2xvcixzPXRoaXMudyxyPWUueCxvPWUueDEsbj1lLmJhcllQb3NpdGlvbixsPWkueCxoPWkueDEsYz1pLmJhcllQb3NpdGlvbixkPW4raS5iYXJIZWlnaHQsZz1uZXcgbSh0aGlzLmJhckN0eC5jdHgpLHU9bmV3IHgscD1nLm1vdmUobyxkKStnLmxpbmUocixkKStnLmxpbmUobCxjKStnLmxpbmUoaCxjKStnLmxpbmUobyxkKSsoXCJhcm91bmRcIj09PXMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKTtyZXR1cm4gZy5kcmF3UGF0aCh7ZDpwLGZpbGw6dS5zaGFkZUNvbG9yKC41LHgucmdiMmhleChhKSksc3Ryb2tlOlwibm9uZVwiLHN0cm9rZVdpZHRoOjAsZmlsbE9wYWNpdHk6MSxjbGFzc2VzOlwiYXBleGNoYXJ0cy1iYXItc2hhZG93c1wifSl9fSx7a2V5OlwiZ2V0WmVyb1ZhbHVlRW5jb3VudGVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXRoaXMudyxzPTAscj0wO3JldHVybiBhLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5mb3JFYWNoKChmdW5jdGlvbih0LGEpe3RbaV0mJnMrKyxhPGUmJjA9PT10W2ldJiZyKyt9KSkse25vblplcm9Db2x1bW5zOnMsemVyb0VuY291bnRlcnM6cn19fV0pLHR9KCkseXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgcz10aGlzLnc7dGhpcy5iYXJPcHRpb25zPXMuY29uZmlnLnBsb3RPcHRpb25zLmJhcix0aGlzLmlzSG9yaXpvbnRhbD10aGlzLmJhck9wdGlvbnMuaG9yaXpvbnRhbCx0aGlzLnN0cm9rZVdpZHRoPXMuY29uZmlnLnN0cm9rZS53aWR0aCx0aGlzLmlzTnVsbFZhbHVlPSExLHRoaXMuaXNSYW5nZUJhcj1zLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoJiZ0aGlzLmlzSG9yaXpvbnRhbCx0aGlzLmlzVmVydGljYWxHcm91cGVkUmFuZ2VCYXI9IXMuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnMuZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgmJnMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhckdyb3VwUm93cyx0aGlzLmlzRnVubmVsPXRoaXMuYmFyT3B0aW9ucy5pc0Z1bm5lbCx0aGlzLnh5UmF0aW9zPWksbnVsbCE9PXRoaXMueHlSYXRpb3MmJih0aGlzLnhSYXRpbz1pLnhSYXRpbyx0aGlzLmluaXRpYWxYUmF0aW89aS5pbml0aWFsWFJhdGlvLHRoaXMueVJhdGlvPWkueVJhdGlvLHRoaXMuaW52ZXJ0ZWRYUmF0aW89aS5pbnZlcnRlZFhSYXRpbyx0aGlzLmludmVydGVkWVJhdGlvPWkuaW52ZXJ0ZWRZUmF0aW8sdGhpcy5iYXNlTGluZVk9aS5iYXNlTGluZVksdGhpcy5iYXNlTGluZUludmVydGVkWT1pLmJhc2VMaW5lSW52ZXJ0ZWRZKSx0aGlzLnlheGlzSW5kZXg9MCx0aGlzLnNlcmllc0xlbj0wLHRoaXMucGF0aEFycj1bXTt2YXIgcj1uZXcgTih0aGlzLmN0eCk7dGhpcy5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD1yLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KFwiZGVzY1wiLFtcImJhclwiLFwiY29sdW1uXCJdKTt2YXIgbz1yLmdldEJhclNlcmllc0luZGljZXMoKSxuPW5ldyB5KHRoaXMuY3R4KTt0aGlzLnN0YWNrZWRTZXJpZXNUb3RhbHM9bi5nZXRTdGFja2VkU2VyaWVzVG90YWxzKHRoaXMudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4tMT09PW8uaW5kZXhPZihlKT9lOi0xfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuLTEhPT10fSkpKSx0aGlzLmJhckhlbHBlcnM9bmV3IG10KHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLncscz1uZXcgbSh0aGlzLmN0eCkscj1uZXcgeSh0aGlzLmN0eCxhKTt0PXIuZ2V0TG9nU2VyaWVzKHQpLHRoaXMuc2VyaWVzPXQsdGhpcy55UmF0aW89ci5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KTt2YXIgbz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCJ9KTthLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQmJnRoaXMudG90YWxJdGVtcz50aGlzLmJhck9wdGlvbnMuZGF0YUxhYmVscy5tYXhJdGVtcyYmY29uc29sZS53YXJuKFwiV0FSTklORzogRGF0YUxhYmVscyBhcmUgZW5hYmxlZCBidXQgdGhlcmUgYXJlIHRvbyBtYW55IHRvIGRpc3BsYXkuIFRoaXMgbWF5IGNhdXNlIHBlcmZvcm1hbmNlIGlzc3VlIHdoZW4gcmVuZGVyaW5nIC0gQXBleENoYXJ0c1wiKTtmb3IodmFyIG49MCxsPTA7bjx0Lmxlbmd0aDtuKyssbCsrKXt2YXIgaCxjLGQsZyx1PXZvaWQgMCxwPXZvaWQgMCxmPVtdLGI9W10sdj1hLmdsb2JhbHMuY29tYm9DaGFydHM/aVtuXTpuLHc9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHJlbDpuKzEsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbdl0pLFwiZGF0YTpyZWFsSW5kZXhcIjp2fSk7dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModyx2KSx0W25dLmxlbmd0aD4wJiYodGhpcy52aXNpYmxlST10aGlzLnZpc2libGVJKzEpO3ZhciBrPTAsQT0wO3RoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PXYpLHRoaXMuaXNSZXZlcnNlZD1hLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdJiZhLmNvbmZpZy55YXhpc1t0aGlzLnlheGlzSW5kZXhdLnJldmVyc2VkO3ZhciBTPXRoaXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7cD1TLnksaz1TLmJhckhlaWdodCxjPVMueURpdmlzaW9uLGc9Uy56ZXJvVyx1PVMueCxBPVMuYmFyV2lkdGgsaD1TLnhEaXZpc2lvbixkPVMuemVyb0gsdGhpcy5ob3Jpem9udGFsfHxiLnB1c2godStBLzIpO3ZhciBDPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTthLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOkMubm9kZX0pLEMubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKTt2YXIgTD1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLWdvYWxzLW1hcmtlcnNcIn0pLFA9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1zaGFkb3dzXCJ9KTthLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOlAubm9kZX0pLFAubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiKTtmb3IodmFyIEk9MDtJPGEuZ2xvYmFscy5kYXRhUG9pbnRzO0krKyl7dmFyIE09dGhpcy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKG4sSSx2KSxUPW51bGwsej17aW5kZXhlczp7aTpuLGo6SSxyZWFsSW5kZXg6dixiYzpsfSx4OnUseTpwLHN0cm9rZVdpZHRoOk0sZWxTZXJpZXM6d307dGhpcy5pc0hvcml6b250YWw/KFQ9dGhpcy5kcmF3QmFyUGF0aHMoZShlKHt9LHopLHt9LHtiYXJIZWlnaHQ6ayx6ZXJvVzpnLHlEaXZpc2lvbjpjfSkpLEE9dGhpcy5zZXJpZXNbbl1bSV0vdGhpcy5pbnZlcnRlZFlSYXRpbyk6KFQ9dGhpcy5kcmF3Q29sdW1uUGF0aHMoZShlKHt9LHopLHt9LHt4RGl2aXNpb246aCxiYXJXaWR0aDpBLHplcm9IOmR9KSksaz10aGlzLnNlcmllc1tuXVtJXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdKTt2YXIgWD10aGlzLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcih0LG4sSSx2KTtpZih0aGlzLmlzRnVubmVsJiZ0aGlzLmJhck9wdGlvbnMuaXNGdW5uZWwzZCYmdGhpcy5wYXRoQXJyLmxlbmd0aCYmST4wKXt2YXIgRT10aGlzLmJhckhlbHBlcnMuZHJhd0JhclNoYWRvdyh7Y29sb3I6XCJzdHJpbmdcIj09dHlwZW9mIFgmJi0xPT09KG51bGw9PVg/dm9pZCAwOlguaW5kZXhPZihcInVybFwiKSk/WDp4LmhleFRvUmdiYShhLmdsb2JhbHMuY29sb3JzW25dKSxwcmV2UGF0aHM6dGhpcy5wYXRoQXJyW3RoaXMucGF0aEFyci5sZW5ndGgtMV0sY3VyclBhdGhzOlR9KTtFJiZQLmFkZChFKX10aGlzLnBhdGhBcnIucHVzaChUKTt2YXIgWT10aGlzLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHtiYXJYUG9zaXRpb246VC5iYXJYUG9zaXRpb24sYmFyWVBvc2l0aW9uOlQuYmFyWVBvc2l0aW9uLGdvYWxYOlQuZ29hbFgsZ29hbFk6VC5nb2FsWSxiYXJIZWlnaHQ6ayxiYXJXaWR0aDpBfSk7WSYmTC5hZGQoWSkscD1ULnksdT1ULngsST4wJiZiLnB1c2godStBLzIpLGYucHVzaChwKSx0aGlzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OnYscGF0aEZpbGw6WCxqOkksaTpuLHBhdGhGcm9tOlQucGF0aEZyb20scGF0aFRvOlQucGF0aFRvLHN0cm9rZVdpZHRoOk0sZWxTZXJpZXM6dyx4OnUseTpwLHNlcmllczp0LGJhckhlaWdodDpULmJhckhlaWdodD9ULmJhckhlaWdodDprLGJhcldpZHRoOlQuYmFyV2lkdGg/VC5iYXJXaWR0aDpBLGVsRGF0YUxhYmVsc1dyYXA6QyxlbEdvYWxzTWFya2VyczpMLGVsQmFyU2hhZG93czpQLHZpc2libGVTZXJpZXM6dGhpcy52aXNpYmxlSSx0eXBlOlwiYmFyXCJ9KX1hLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1t2XT1iLGEuZ2xvYmFscy5zZXJpZXNZdmFsdWVzW3ZdPWYsby5hZGQodyl9cmV0dXJuIG99fSx7a2V5OlwicmVuZGVyU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5yZWFsSW5kZXgsaT10LnBhdGhGaWxsLGE9dC5saW5lRmlsbCxzPXQuaixyPXQuaSxvPXQuZ3JvdXBJbmRleCxuPXQucGF0aEZyb20sbD10LnBhdGhUbyxoPXQuc3Ryb2tlV2lkdGgsYz10LmVsU2VyaWVzLGQ9dC54LGc9dC55LHU9dC55MSxwPXQueTIsZj10LnNlcmllcyx4PXQuYmFySGVpZ2h0LGI9dC5iYXJXaWR0aCx5PXQuYmFyWFBvc2l0aW9uLHc9dC5iYXJZUG9zaXRpb24saz10LmVsRGF0YUxhYmVsc1dyYXAsQT10LmVsR29hbHNNYXJrZXJzLFM9dC5lbEJhclNoYWRvd3MsQz10LnZpc2libGVTZXJpZXMsTD10LnR5cGUsUD10aGlzLncsST1uZXcgbSh0aGlzLmN0eCk7YXx8KGE9dGhpcy5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP1AuZ2xvYmFscy5zdHJva2UuY29sb3JzW3NdOlAuZ2xvYmFscy5zdHJva2UuY29sb3JzW2VdKSxQLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtzXSYmUC5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10uc3Ryb2tlQ29sb3ImJihhPVAuY29uZmlnLnNlcmllc1tyXS5kYXRhW3NdLnN0cm9rZUNvbG9yKSx0aGlzLmlzTnVsbFZhbHVlJiYoaT1cIm5vbmVcIik7dmFyIE09cy9QLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZGVsYXkqKFAuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQvUC5nbG9iYWxzLmRhdGFQb2ludHMpLzIuNCxUPUkucmVuZGVyUGF0aHMoe2k6cixqOnMscmVhbEluZGV4OmUscGF0aEZyb206bixwYXRoVG86bCxzdHJva2U6YSxzdHJva2VXaWR0aDpoLHN0cm9rZUxpbmVDYXA6UC5jb25maWcuc3Ryb2tlLmxpbmVDYXAsZmlsbDppLGFuaW1hdGlvbkRlbGF5Ok0saW5pdGlhbFNwZWVkOlAuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOlAuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChMLFwiLWFyZWFcIil9KTtULmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjZ3JpZFJlY3RNYXNrXCIuY29uY2F0KFAuZ2xvYmFscy5jdWlkLFwiKVwiKSk7dmFyIHo9UC5jb25maWcuZm9yZWNhc3REYXRhUG9pbnRzO3ouY291bnQ+MCYmcz49UC5nbG9iYWxzLmRhdGFQb2ludHMtei5jb3VudCYmKFQubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtZGFzaGFycmF5XCIsei5kYXNoQXJyYXkpLFQubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIix6LnN0cm9rZVdpZHRoKSxULm5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsei5maWxsT3BhY2l0eSkpLHZvaWQgMCE9PXUmJnZvaWQgMCE9PXAmJihULmF0dHIoXCJkYXRhLXJhbmdlLXkxXCIsdSksVC5hdHRyKFwiZGF0YS1yYW5nZS15MlwiLHApKSxuZXcgdih0aGlzLmN0eCkuc2V0U2VsZWN0aW9uRmlsdGVyKFQsZSxzKSxjLmFkZChUKTt2YXIgWD1uZXcgdnQodGhpcykuaGFuZGxlQmFyRGF0YUxhYmVscyh7eDpkLHk6Zyx5MTp1LHkyOnAsaTpyLGo6cyxzZXJpZXM6ZixyZWFsSW5kZXg6ZSxncm91cEluZGV4Om8sYmFySGVpZ2h0OngsYmFyV2lkdGg6YixiYXJYUG9zaXRpb246eSxiYXJZUG9zaXRpb246dyxyZW5kZXJlZFBhdGg6VCx2aXNpYmxlU2VyaWVzOkN9KTtyZXR1cm4gbnVsbCE9PVguZGF0YUxhYmVscyYmay5hZGQoWC5kYXRhTGFiZWxzKSxYLnRvdGFsRGF0YUxhYmVscyYmay5hZGQoWC50b3RhbERhdGFMYWJlbHMpLGMuYWRkKGspLEEmJmMuYWRkKEEpLFMmJmMuYWRkKFMpLGN9fSx7a2V5OlwiZHJhd0JhclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmluZGV4ZXMsYT10LmJhckhlaWdodCxzPXQuc3Ryb2tlV2lkdGgscj10Lnplcm9XLG89dC54LG49dC55LGw9dC55RGl2aXNpb24saD10LmVsU2VyaWVzLGM9dGhpcy53LGQ9aS5pLGc9aS5qO2lmKGMuZ2xvYmFscy5pc1hOdW1lcmljKWU9KG49KGMuZ2xvYmFscy5zZXJpZXNYW2RdW2ddLWMuZ2xvYmFscy5taW5YKS90aGlzLmludmVydGVkWFJhdGlvLWEpK2EqdGhpcy52aXNpYmxlSTtlbHNlIGlmKGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5oaWRlWmVyb0JhcnNXaGVuR3JvdXBlZCl7dmFyIHU9MCxwPTA7Yy5nbG9iYWxzLnNlcmllc1BlcmNlbnQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0W2ddJiZ1KyssZTxkJiYwPT09dFtnXSYmcCsrfSkpLHU+MCYmKGE9dGhpcy5zZXJpZXNMZW4qYS91KSxlPW4rYSp0aGlzLnZpc2libGVJLGUtPWEqcH1lbHNlIGU9bithKnRoaXMudmlzaWJsZUk7dGhpcy5pc0Z1bm5lbCYmKHItPSh0aGlzLmJhckhlbHBlcnMuZ2V0WEZvclZhbHVlKHRoaXMuc2VyaWVzW2RdW2ddLHIpLXIpLzIpLG89dGhpcy5iYXJIZWxwZXJzLmdldFhGb3JWYWx1ZSh0aGlzLnNlcmllc1tkXVtnXSxyKTt2YXIgZj10aGlzLmJhckhlbHBlcnMuZ2V0QmFycGF0aHMoe2JhcllQb3NpdGlvbjplLGJhckhlaWdodDphLHgxOnIseDI6byxzdHJva2VXaWR0aDpzLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6aS5yZWFsSW5kZXgsaTpkLGo6Zyx3OmN9KTtyZXR1cm4gYy5nbG9iYWxzLmlzWE51bWVyaWN8fChuKz1sKSx0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7ajpnLGk6ZCx5MTplLWEqdGhpcy52aXNpYmxlSSx5MjphKnRoaXMuc2VyaWVzTGVuLGVsU2VyaWVzOmh9KSx7cGF0aFRvOmYucGF0aFRvLHBhdGhGcm9tOmYucGF0aEZyb20seDE6cix4Om8seTpuLGdvYWxYOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieFwiLHIsbnVsbCxkLGcpLGJhcllQb3NpdGlvbjplLGJhckhlaWdodDphfX19LHtrZXk6XCJkcmF3Q29sdW1uUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuaW5kZXhlcyxhPXQueCxzPXQueSxyPXQueERpdmlzaW9uLG89dC5iYXJXaWR0aCxuPXQuemVyb0gsbD10LnN0cm9rZVdpZHRoLGg9dC5lbFNlcmllcyxjPXRoaXMudyxkPWkucmVhbEluZGV4LGc9aS5pLHU9aS5qLHA9aS5iYztpZihjLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIGY9dGhpcy5nZXRCYXJYRm9yTnVtZXJpY1hBeGlzKHt4OmEsajp1LHJlYWxJbmRleDpkLGJhcldpZHRoOm99KTthPWYueCxlPWYuYmFyWFBvc2l0aW9ufWVsc2UgaWYoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkKXt2YXIgeD10aGlzLmJhckhlbHBlcnMuZ2V0WmVyb1ZhbHVlRW5jb3VudGVycyh7aTpnLGo6dX0pLGI9eC5ub25aZXJvQ29sdW1ucyx2PXguemVyb0VuY291bnRlcnM7Yj4wJiYobz10aGlzLnNlcmllc0xlbipvL2IpLGU9YStvKnRoaXMudmlzaWJsZUksZS09byp2fWVsc2UgZT1hK28qdGhpcy52aXNpYmxlSTtzPXRoaXMuYmFySGVscGVycy5nZXRZRm9yVmFsdWUodGhpcy5zZXJpZXNbZ11bdV0sbik7dmFyIG09dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246ZSxiYXJXaWR0aDpvLHkxOm4seTI6cyxzdHJva2VXaWR0aDpsLHNlcmllczp0aGlzLnNlcmllcyxyZWFsSW5kZXg6aS5yZWFsSW5kZXgsaTpnLGo6dSx3OmN9KTtyZXR1cm4gYy5nbG9iYWxzLmlzWE51bWVyaWN8fChhKz1yKSx0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7YmM6cCxqOnUsaTpnLHgxOmUtbC8yLW8qdGhpcy52aXNpYmxlSSx4MjpvKnRoaXMuc2VyaWVzTGVuK2wvMixlbFNlcmllczpofSkse3BhdGhUbzptLnBhdGhUbyxwYXRoRnJvbTptLnBhdGhGcm9tLHg6YSx5OnMsZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxuLGcsdSksYmFyWFBvc2l0aW9uOmUsYmFyV2lkdGg6b319fSx7a2V5OlwiZ2V0QmFyWEZvck51bWVyaWNYQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQuYmFyV2lkdGgsYT10LnJlYWxJbmRleCxzPXQuaixyPXRoaXMudyxvPWE7cmV0dXJuIHIuZ2xvYmFscy5zZXJpZXNYW2FdLmxlbmd0aHx8KG89ci5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXgpLHIuZ2xvYmFscy5zZXJpZXNYW29dW3NdJiYoZT0oci5nbG9iYWxzLnNlcmllc1hbb11bc10tci5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLWkqdGhpcy5zZXJpZXNMZW4vMikse2JhclhQb3NpdGlvbjplK2kqdGhpcy52aXNpYmxlSSx4OmV9fX0se2tleTpcImdldFByZXZpb3VzUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpLGE9dGhpcy53LHM9MDtzPGEuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtzKyspe3ZhciByPWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdO3IucGF0aHMmJnIucGF0aHMubGVuZ3RoPjAmJnBhcnNlSW50KHIucmVhbEluZGV4LDEwKT09PXBhcnNlSW50KHQsMTApJiZ2b2lkIDAhPT1hLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1tlXSYmKGk9YS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc10ucGF0aHNbZV0uZCl9cmV0dXJuIGl9fV0pLHR9KCksd3Q9ZnVuY3Rpb24odCl7bihzLHl0KTt2YXIgaT1kKHMpO2Z1bmN0aW9uIHMoKXtyZXR1cm4gYSh0aGlzLHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiByKHMsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLHM9dGhpcy53O3RoaXMuZ3JhcGhpY3M9bmV3IG0odGhpcy5jdHgpLHRoaXMuYmFyPW5ldyB5dCh0aGlzLmN0eCx0aGlzLnh5UmF0aW9zKTt2YXIgcj1uZXcgeSh0aGlzLmN0eCxzKTt0PXIuZ2V0TG9nU2VyaWVzKHQpLHRoaXMueVJhdGlvPXIuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCksXCIxMDAlXCI9PT1zLmNvbmZpZy5jaGFydC5zdGFja1R5cGUmJih0PXMuZ2xvYmFscy5zZXJpZXNQZXJjZW50LnNsaWNlKCkpLHRoaXMuc2VyaWVzPXQsdGhpcy5iYXJIZWxwZXJzLmluaXRpYWxpemVTdGFja2VkUHJldlZhcnModGhpcyk7Zm9yKHZhciBvPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pLG49MCxsPTAsaD1mdW5jdGlvbihyLGgpe3ZhciBjPXZvaWQgMCxkPXZvaWQgMCxnPXZvaWQgMCx1PXZvaWQgMCxwPS0xO2EuZ3JvdXBDdHg9YSxzLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5pbmRleE9mKHMuY29uZmlnLnNlcmllc1tyXS5uYW1lKT4tMSYmKHA9ZSl9KSksLTEhPT1wJiYoYS5ncm91cEN0eD1hW3MuZ2xvYmFscy5zZXJpZXNHcm91cHNbcF1dKTt2YXIgZj1bXSxiPVtdLHY9cy5nbG9iYWxzLmNvbWJvQ2hhcnRzP2lbcl06cjthLnlSYXRpby5sZW5ndGg+MSYmKGEueWF4aXNJbmRleD12KSxhLmlzUmV2ZXJzZWQ9cy5jb25maWcueWF4aXNbYS55YXhpc0luZGV4XSYmcy5jb25maWcueWF4aXNbYS55YXhpc0luZGV4XS5yZXZlcnNlZDt2YXIgbT1hLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhzLmdsb2JhbHMuc2VyaWVzTmFtZXNbdl0pLHJlbDpyKzEsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTthLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhtLHYpO3ZhciB5PWEuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KSx3PWEuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc1wifSksaz0wLEE9MCxTPWEuaW5pdGlhbFBvc2l0aW9ucyhuLGwsYyxkLGcsdSk7bD1TLnksaz1TLmJhckhlaWdodCxkPVMueURpdmlzaW9uLHU9Uy56ZXJvVyxuPVMueCxBPVMuYmFyV2lkdGgsYz1TLnhEaXZpc2lvbixnPVMuemVyb0gsYS5iYXJIZWxwZXJzLmluaXRpYWxpemVTdGFja2VkWFlWYXJzKGEpLDE9PT1hLmdyb3VwQ3R4LnByZXZZLmxlbmd0aCYmYS5ncm91cEN0eC5wcmV2WVswXS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQpfSkpJiYoYS5ncm91cEN0eC5wcmV2WVswXT1hLmdyb3VwQ3R4LnByZXZZWzBdLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGd9KSksYS5ncm91cEN0eC5wcmV2WUZbMF09YS5ncm91cEN0eC5wcmV2WUZbMF0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gMH0pKSk7Zm9yKHZhciBDPTA7QzxzLmdsb2JhbHMuZGF0YVBvaW50cztDKyspe3ZhciBMPWEuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChyLEMsdiksUD17aW5kZXhlczp7aTpyLGo6QyxyZWFsSW5kZXg6dixiYzpofSxzdHJva2VXaWR0aDpMLHg6bix5OmwsZWxTZXJpZXM6bSxncm91cEluZGV4OnAsc2VyaWVzR3JvdXA6cy5nbG9iYWxzLnNlcmllc0dyb3Vwc1twXX0sST1udWxsO2EuaXNIb3Jpem9udGFsPyhJPWEuZHJhd1N0YWNrZWRCYXJQYXRocyhlKGUoe30sUCkse30se3plcm9XOnUsYmFySGVpZ2h0OmsseURpdmlzaW9uOmR9KSksQT1hLnNlcmllc1tyXVtDXS9hLmludmVydGVkWVJhdGlvKTooST1hLmRyYXdTdGFja2VkQ29sdW1uUGF0aHMoZShlKHt9LFApLHt9LHt4RGl2aXNpb246YyxiYXJXaWR0aDpBLHplcm9IOmd9KSksaz1hLnNlcmllc1tyXVtDXS9hLnlSYXRpb1thLnlheGlzSW5kZXhdKTt2YXIgTT1hLmJhckhlbHBlcnMuZHJhd0dvYWxMaW5lKHtiYXJYUG9zaXRpb246SS5iYXJYUG9zaXRpb24sYmFyWVBvc2l0aW9uOkkuYmFyWVBvc2l0aW9uLGdvYWxYOkkuZ29hbFgsZ29hbFk6SS5nb2FsWSxiYXJIZWlnaHQ6ayxiYXJXaWR0aDpBfSk7TSYmdy5hZGQoTSksbD1JLnksbj1JLngsZi5wdXNoKG4pLGIucHVzaChsKTt2YXIgVD1hLmJhckhlbHBlcnMuZ2V0UGF0aEZpbGxDb2xvcih0LHIsQyx2KTttPWEucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dixwYXRoRmlsbDpULGo6QyxpOnIsZ3JvdXBJbmRleDpwLHBhdGhGcm9tOkkucGF0aEZyb20scGF0aFRvOkkucGF0aFRvLHN0cm9rZVdpZHRoOkwsZWxTZXJpZXM6bSx4Om4seTpsLHNlcmllczp0LGJhckhlaWdodDprLGJhcldpZHRoOkEsZWxEYXRhTGFiZWxzV3JhcDp5LGVsR29hbHNNYXJrZXJzOncsdHlwZTpcImJhclwiLHZpc2libGVTZXJpZXM6MH0pfXMuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPWYscy5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09YixhLmdyb3VwQ3R4LnByZXZZLnB1c2goYS5ncm91cEN0eC55QXJyaiksYS5ncm91cEN0eC5wcmV2WUYucHVzaChhLmdyb3VwQ3R4LnlBcnJqRiksYS5ncm91cEN0eC5wcmV2WVZhbC5wdXNoKGEuZ3JvdXBDdHgueUFycmpWYWwpLGEuZ3JvdXBDdHgucHJldlgucHVzaChhLmdyb3VwQ3R4LnhBcnJqKSxhLmdyb3VwQ3R4LnByZXZYRi5wdXNoKGEuZ3JvdXBDdHgueEFycmpGKSxhLmdyb3VwQ3R4LnByZXZYVmFsLnB1c2goYS5ncm91cEN0eC54QXJyalZhbCksby5hZGQobSl9LGM9MCxkPTA7Yzx0Lmxlbmd0aDtjKyssZCsrKWgoYyxkKTtyZXR1cm4gb319LHtrZXk6XCJpbml0aWFsUG9zaXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvLG4sbCxoLGM9dGhpcy53O3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbD8obD0obD1hPWMuZ2xvYmFscy5ncmlkSGVpZ2h0L2MuZ2xvYmFscy5kYXRhUG9pbnRzKSpwYXJzZUludChjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0LDEwKS8xMDAsLTE9PT1TdHJpbmcoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJhckhlaWdodCkuaW5kZXhPZihcIiVcIikmJihsPXBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQsMTApKSxyPXRoaXMuYmFzZUxpbmVJbnZlcnRlZFkrYy5nbG9iYWxzLnBhZEhvcml6b250YWwrKHRoaXMuaXNSZXZlcnNlZD9jLmdsb2JhbHMuZ3JpZFdpZHRoOjApLSh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZOjApLGU9KGEtbCkvMik6KGg9aT1jLmdsb2JhbHMuZ3JpZFdpZHRoL2MuZ2xvYmFscy5kYXRhUG9pbnRzLGg9Yy5nbG9iYWxzLmlzWE51bWVyaWMmJmMuZ2xvYmFscy5kYXRhUG9pbnRzPjE/KGk9Yy5nbG9iYWxzLm1pblhEaWZmL3RoaXMueFJhdGlvKSpwYXJzZUludCh0aGlzLmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApLzEwMDpoKnBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkvMTAwLC0xPT09U3RyaW5nKGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCkuaW5kZXhPZihcIiVcIikmJihoPXBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5jb2x1bW5XaWR0aCwxMCkpLHM9Yy5nbG9iYWxzLmdyaWRIZWlnaHQtdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XS0odGhpcy5pc1JldmVyc2VkP2MuZ2xvYmFscy5ncmlkSGVpZ2h0OjApKyh0aGlzLmlzUmV2ZXJzZWQ/Mip0aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdOjApLHQ9Yy5nbG9iYWxzLnBhZEhvcml6b250YWwrKGktaCkvMikse3g6dCx5OmUseURpdmlzaW9uOmEseERpdmlzaW9uOmksYmFySGVpZ2h0Om51bGwhPT0obz1jLmdsb2JhbHMuc2VyaWVzR3JvdXBzKSYmdm9pZCAwIT09byYmby5sZW5ndGg/bC9jLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aDpsLGJhcldpZHRoOm51bGwhPT0obj1jLmdsb2JhbHMuc2VyaWVzR3JvdXBzKSYmdm9pZCAwIT09biYmbi5sZW5ndGg/aC9jLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aDpoLHplcm9IOnMsemVyb1c6cn19fSx7a2V5OlwiZHJhd1N0YWNrZWRCYXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxpPXQuaW5kZXhlcyxhPXQuYmFySGVpZ2h0LHM9dC5zdHJva2VXaWR0aCxyPXQuemVyb1csbz10Lngsbj10LnksbD10Lmdyb3VwSW5kZXgsaD10LnNlcmllc0dyb3VwLGM9dC55RGl2aXNpb24sZD10LmVsU2VyaWVzLGc9dGhpcy53LHU9bisoLTEhPT1sP2wqYTowKSxwPWkuaSxmPWkuaix4PTAsYj0wO2I8dGhpcy5ncm91cEN0eC5wcmV2WEYubGVuZ3RoO2IrKyl4Kz10aGlzLmdyb3VwQ3R4LnByZXZYRltiXVtmXTt2YXIgdj1wO2lmKGgmJih2PWguaW5kZXhPZihnLmNvbmZpZy5zZXJpZXNbcF0ubmFtZSkpLHY+MCl7dmFyIG09cjt0aGlzLmdyb3VwQ3R4LnByZXZYVmFsW3YtMV1bZl08MD9tPXRoaXMuc2VyaWVzW3BdW2ZdPj0wP3RoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXSt4LTIqKHRoaXMuaXNSZXZlcnNlZD94OjApOnRoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXTp0aGlzLmdyb3VwQ3R4LnByZXZYVmFsW3YtMV1bZl0+PTAmJihtPXRoaXMuc2VyaWVzW3BdW2ZdPj0wP3RoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXTp0aGlzLmdyb3VwQ3R4LnByZXZYW3YtMV1bZl0teCsyKih0aGlzLmlzUmV2ZXJzZWQ/eDowKSksZT1tfWVsc2UgZT1yO289bnVsbD09PXRoaXMuc2VyaWVzW3BdW2ZdP2U6ZSt0aGlzLnNlcmllc1twXVtmXS90aGlzLmludmVydGVkWVJhdGlvLTIqKHRoaXMuaXNSZXZlcnNlZD90aGlzLnNlcmllc1twXVtmXS90aGlzLmludmVydGVkWVJhdGlvOjApO3ZhciB5PXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOnUsYmFySGVpZ2h0OmEseDE6ZSx4MjpvLHN0cm9rZVdpZHRoOnMsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxzZXJpZXNHcm91cDpoLGk6cCxqOmYsdzpnfSk7cmV0dXJuIHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtqOmYsaTpwLHkxOnUseTI6YSxlbFNlcmllczpkfSksbis9Yyx7cGF0aFRvOnkucGF0aFRvLHBhdGhGcm9tOnkucGF0aEZyb20sZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIscixudWxsLHAsZiksYmFyWVBvc2l0aW9uOnUseDpvLHk6bn19fSx7a2V5OlwiZHJhd1N0YWNrZWRDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueCxhPXQueSxzPXQueERpdmlzaW9uLHI9dC5iYXJXaWR0aCxvPXQuemVyb0gsbj10Lmdyb3VwSW5kZXgsbD10LnNlcmllc0dyb3VwLGg9dC5lbFNlcmllcyxjPXRoaXMudyxkPWUuaSxnPWUuaix1PWUuYmM7aWYoYy5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBwPWMuZ2xvYmFscy5zZXJpZXNYW2RdW2ddO3B8fChwPTApLGk9KHAtYy5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXIvMixjLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aCYmKGk9KHAtYy5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXIvMipjLmdsb2JhbHMuc2VyaWVzR3JvdXBzLmxlbmd0aCl9Zm9yKHZhciBmLHg9aSsoLTEhPT1uP24qcjowKSxiPTAsdj0wO3Y8dGhpcy5ncm91cEN0eC5wcmV2WUYubGVuZ3RoO3YrKyliKz1pc05hTih0aGlzLmdyb3VwQ3R4LnByZXZZRlt2XVtnXSk/MDp0aGlzLmdyb3VwQ3R4LnByZXZZRlt2XVtnXTt2YXIgbT1kO2lmKGwmJihtPWwuaW5kZXhPZihjLmNvbmZpZy5zZXJpZXNbZF0ubmFtZSkpLG0+MCYmIWMuZ2xvYmFscy5pc1hOdW1lcmljfHxtPjAmJmMuZ2xvYmFscy5pc1hOdW1lcmljJiZjLmdsb2JhbHMuc2VyaWVzWFtkLTFdW2ddPT09Yy5nbG9iYWxzLnNlcmllc1hbZF1bZ10pe3ZhciB5LHcsayxBPU1hdGgubWluKHRoaXMueVJhdGlvLmxlbmd0aCsxLGQrMSk7aWYodm9pZCAwIT09dGhpcy5ncm91cEN0eC5wcmV2WVttLTFdJiZ0aGlzLmdyb3VwQ3R4LnByZXZZW20tMV0ubGVuZ3RoKWZvcih2YXIgUz0xO1M8QTtTKyspe3ZhciBDO2lmKCFpc05hTihudWxsPT09KEM9dGhpcy5ncm91cEN0eC5wcmV2WVttLVNdKXx8dm9pZCAwPT09Qz92b2lkIDA6Q1tnXSkpe2s9dGhpcy5ncm91cEN0eC5wcmV2WVttLVNdW2ddO2JyZWFrfX1mb3IodmFyIEw9MTtMPEE7TCsrKXt2YXIgUCxJO2lmKChudWxsPT09KFA9dGhpcy5ncm91cEN0eC5wcmV2WVZhbFttLUxdKXx8dm9pZCAwPT09UD92b2lkIDA6UFtnXSk8MCl7dz10aGlzLnNlcmllc1tkXVtnXT49MD9rLWIrMioodGhpcy5pc1JldmVyc2VkP2I6MCk6azticmVha31pZigobnVsbD09PShJPXRoaXMuZ3JvdXBDdHgucHJldllWYWxbbS1MXSl8fHZvaWQgMD09PUk/dm9pZCAwOklbZ10pPj0wKXt3PXRoaXMuc2VyaWVzW2RdW2ddPj0wP2s6aytiLTIqKHRoaXMuaXNSZXZlcnNlZD9iOjApO2JyZWFrfX12b2lkIDA9PT13JiYodz1jLmdsb2JhbHMuZ3JpZEhlaWdodCksZj1udWxsIT09KHk9dGhpcy5ncm91cEN0eC5wcmV2WUZbMF0pJiZ2b2lkIDAhPT15JiZ5LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gMD09PXR9KSkmJnRoaXMuZ3JvdXBDdHgucHJldllGLnNsaWNlKDEsbSkuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odCl9KSl9KSk/bzp3fWVsc2UgZj1vO2E9dGhpcy5zZXJpZXNbZF1bZ10/Zi10aGlzLnNlcmllc1tkXVtnXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdKzIqKHRoaXMuaXNSZXZlcnNlZD90aGlzLnNlcmllc1tkXVtnXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdOjApOmY7dmFyIE09dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246eCxiYXJXaWR0aDpyLHkxOmYseTI6YSx5UmF0aW86dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllcyxzZXJpZXNHcm91cDpsLHJlYWxJbmRleDplLnJlYWxJbmRleCxpOmQsajpnLHc6Y30pO3JldHVybiB0aGlzLmJhckhlbHBlcnMuYmFyQmFja2dyb3VuZCh7YmM6dSxqOmcsaTpkLHgxOngseDI6cixlbFNlcmllczpofSksaSs9cyx7cGF0aFRvOk0ucGF0aFRvLHBhdGhGcm9tOk0ucGF0aEZyb20sZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxvLGQsZyksYmFyWFBvc2l0aW9uOngseDpjLmdsb2JhbHMuaXNYTnVtZXJpYz9pLXM6aSx5OmF9fX1dKSxzfSgpLGt0PWZ1bmN0aW9uKHQpe24ocyx5dCk7dmFyIGk9ZChzKTtmdW5jdGlvbiBzKCl7cmV0dXJuIGEodGhpcyxzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihzLFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSxhKXt2YXIgcz10aGlzLHI9dGhpcy53LG89bmV3IG0odGhpcy5jdHgpLG49ci5nbG9iYWxzLmNvbWJvQ2hhcnRzP2k6ci5jb25maWcuY2hhcnQudHlwZSxsPW5ldyBSKHRoaXMuY3R4KTt0aGlzLmNhbmRsZXN0aWNrT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLHRoaXMuYm94T3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJveFBsb3QsdGhpcy5pc0hvcml6b250YWw9ci5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw7dmFyIGg9bmV3IHkodGhpcy5jdHgscik7dD1oLmdldExvZ1Nlcmllcyh0KSx0aGlzLnNlcmllcz10LHRoaXMueVJhdGlvPWguZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyksdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCk7Zm9yKHZhciBjPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobixcIi1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiKX0pLGQ9ZnVuY3Rpb24oaSl7cy5pc0JveFBsb3Q9XCJib3hQbG90XCI9PT1yLmNvbmZpZy5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PXIuY29uZmlnLnNlcmllc1tpXS50eXBlO3ZhciBuLGgsZCxnLHU9dm9pZCAwLHA9dm9pZCAwLGY9W10sYj1bXSx2PXIuZ2xvYmFscy5jb21ib0NoYXJ0cz9hW2ldOmksbT1vLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhyLmdsb2JhbHMuc2VyaWVzTmFtZXNbdl0pLHJlbDppKzEsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTtzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhtLHYpLHRbaV0ubGVuZ3RoPjAmJihzLnZpc2libGVJPXMudmlzaWJsZUkrMSk7dmFyIHksdztzLnlSYXRpby5sZW5ndGg+MSYmKHMueWF4aXNJbmRleD12KTt2YXIgaz1zLmJhckhlbHBlcnMuaW5pdGlhbFBvc2l0aW9ucygpO3A9ay55LHk9ay5iYXJIZWlnaHQsaD1rLnlEaXZpc2lvbixnPWsuemVyb1csdT1rLngsdz1rLmJhcldpZHRoLG49ay54RGl2aXNpb24sZD1rLnplcm9ILGIucHVzaCh1K3cvMik7Zm9yKHZhciBBPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnZ9KSxTPWZ1bmN0aW9uKGEpe3ZhciBvPXMuYmFySGVscGVycy5nZXRTdHJva2VXaWR0aChpLGEsdiksYz1udWxsLHg9e2luZGV4ZXM6e2k6aSxqOmEscmVhbEluZGV4OnZ9LHg6dSx5OnAsc3Ryb2tlV2lkdGg6byxlbFNlcmllczptfTtjPXMuaXNIb3Jpem9udGFsP3MuZHJhd0hvcml6b250YWxCb3hQYXRocyhlKGUoe30seCkse30se3lEaXZpc2lvbjpoLGJhckhlaWdodDp5LHplcm9XOmd9KSk6cy5kcmF3VmVydGljYWxCb3hQYXRocyhlKGUoe30seCkse30se3hEaXZpc2lvbjpuLGJhcldpZHRoOncsemVyb0g6ZH0pKSxwPWMueSx1PWMueCxhPjAmJmIucHVzaCh1K3cvMiksZi5wdXNoKHApLGMucGF0aFRvLmZvckVhY2goKGZ1bmN0aW9uKGUsbil7dmFyIGg9IXMuaXNCb3hQbG90JiZzLmNhbmRsZXN0aWNrT3B0aW9ucy53aWNrLnVzZUZpbGxDb2xvcj9jLmNvbG9yW25dOnIuZ2xvYmFscy5zdHJva2UuY29sb3JzW2ldLGQ9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnYsZGF0YVBvaW50SW5kZXg6YSxjb2xvcjpjLmNvbG9yW25dLHZhbHVlOnRbaV1bYV19KTtzLnJlbmRlclNlcmllcyh7cmVhbEluZGV4OnYscGF0aEZpbGw6ZCxsaW5lRmlsbDpoLGo6YSxpOmkscGF0aEZyb206Yy5wYXRoRnJvbSxwYXRoVG86ZSxzdHJva2VXaWR0aDpvLGVsU2VyaWVzOm0seDp1LHk6cCxzZXJpZXM6dCxiYXJIZWlnaHQ6eSxiYXJXaWR0aDp3LGVsRGF0YUxhYmVsc1dyYXA6QSx2aXNpYmxlU2VyaWVzOnMudmlzaWJsZUksdHlwZTpyLmNvbmZpZy5jaGFydC50eXBlfSl9KSl9LEM9MDtDPHIuZ2xvYmFscy5kYXRhUG9pbnRzO0MrKylTKEMpO3IuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPWIsci5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09ZixjLmFkZChtKX0sZz0wO2c8dC5sZW5ndGg7ZysrKWQoZyk7cmV0dXJuIGN9fSx7a2V5OlwiZHJhd1ZlcnRpY2FsQm94UGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXMsaT10Lng7dC55O3ZhciBhPXQueERpdmlzaW9uLHM9dC5iYXJXaWR0aCxyPXQuemVyb0gsbz10LnN0cm9rZVdpZHRoLG49dGhpcy53LGw9bmV3IG0odGhpcy5jdHgpLGg9ZS5pLGM9ZS5qLGQ9ITAsZz1uLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMudXB3YXJkLHU9bi5jb25maWcucGxvdE9wdGlvbnMuY2FuZGxlc3RpY2suY29sb3JzLmRvd253YXJkLHA9XCJcIjt0aGlzLmlzQm94UGxvdCYmKHA9W3RoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXIsdGhpcy5ib3hPcHRpb25zLmNvbG9ycy51cHBlcl0pO3ZhciBmPXRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0seD1lLnJlYWxJbmRleCxiPXRoaXMuZ2V0T0hMQ1ZhbHVlKHgsYyksdj1yLHk9cjtiLm8+Yi5jJiYoZD0hMSk7dmFyIHc9TWF0aC5taW4oYi5vLGIuYyksaz1NYXRoLm1heChiLm8sYi5jKSxBPWIubTtuLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9KG4uZ2xvYmFscy5zZXJpZXNYW3hdW2NdLW4uZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby1zLzIpO3ZhciBTPWkrcyp0aGlzLnZpc2libGVJO3ZvaWQgMD09PXRoaXMuc2VyaWVzW2hdW2NdfHxudWxsPT09dGhpcy5zZXJpZXNbaF1bY10/KHc9cixrPXIpOih3PXItdy9mLGs9ci1rL2Ysdj1yLWIuaC9mLHk9ci1iLmwvZixBPXItYi5tL2YpO3ZhciBDPWwubW92ZShTLHIpLEw9bC5tb3ZlKFMrcy8yLHcpO3JldHVybiBuLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKEw9dGhpcy5nZXRQcmV2aW91c1BhdGgoeCxjLCEwKSksQz10aGlzLmlzQm94UGxvdD9bbC5tb3ZlKFMsdykrbC5saW5lKFMrcy8yLHcpK2wubGluZShTK3MvMix2KStsLmxpbmUoUytzLzQsdikrbC5saW5lKFMrcy1zLzQsdikrbC5saW5lKFMrcy8yLHYpK2wubGluZShTK3MvMix3KStsLmxpbmUoUytzLHcpK2wubGluZShTK3MsQSkrbC5saW5lKFMsQSkrbC5saW5lKFMsdytvLzIpLGwubW92ZShTLEEpK2wubGluZShTK3MsQSkrbC5saW5lKFMrcyxrKStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMrcy8yLHkpK2wubGluZShTK3Mtcy80LHkpK2wubGluZShTK3MvNCx5KStsLmxpbmUoUytzLzIseSkrbC5saW5lKFMrcy8yLGspK2wubGluZShTLGspK2wubGluZShTLEEpK1wielwiXTpbbC5tb3ZlKFMsaykrbC5saW5lKFMrcy8yLGspK2wubGluZShTK3MvMix2KStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMrcyxrKStsLmxpbmUoUytzLHcpK2wubGluZShTK3MvMix3KStsLmxpbmUoUytzLzIseSkrbC5saW5lKFMrcy8yLHcpK2wubGluZShTLHcpK2wubGluZShTLGstby8yKV0sTCs9bC5tb3ZlKFMsdyksbi5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1hKSx7cGF0aFRvOkMscGF0aEZyb206TCx4OmkseTprLGJhclhQb3NpdGlvbjpTLGNvbG9yOnRoaXMuaXNCb3hQbG90P3A6ZD9bZ106W3VdfX19LHtrZXk6XCJkcmF3SG9yaXpvbnRhbEJveFBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzO3QueDt2YXIgaT10LnksYT10LnlEaXZpc2lvbixzPXQuYmFySGVpZ2h0LHI9dC56ZXJvVyxvPXQuc3Ryb2tlV2lkdGgsbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1lLmksYz1lLmosZD10aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyO3RoaXMuaXNCb3hQbG90JiYoZD1bdGhpcy5ib3hPcHRpb25zLmNvbG9ycy5sb3dlcix0aGlzLmJveE9wdGlvbnMuY29sb3JzLnVwcGVyXSk7dmFyIGc9dGhpcy5pbnZlcnRlZFlSYXRpbyx1PWUucmVhbEluZGV4LHA9dGhpcy5nZXRPSExDVmFsdWUodSxjKSxmPXIseD1yLGI9TWF0aC5taW4ocC5vLHAuYyksdj1NYXRoLm1heChwLm8scC5jKSx5PXAubTtuLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGk9KG4uZ2xvYmFscy5zZXJpZXNYW3VdW2NdLW4uZ2xvYmFscy5taW5YKS90aGlzLmludmVydGVkWFJhdGlvLXMvMik7dmFyIHc9aStzKnRoaXMudmlzaWJsZUk7dm9pZCAwPT09dGhpcy5zZXJpZXNbaF1bY118fG51bGw9PT10aGlzLnNlcmllc1toXVtjXT8oYj1yLHY9cik6KGI9citiL2csdj1yK3YvZyxmPXIrcC5oL2cseD1yK3AubC9nLHk9citwLm0vZyk7dmFyIGs9bC5tb3ZlKHIsdyksQT1sLm1vdmUoYix3K3MvMik7cmV0dXJuIG4uZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoQT10aGlzLmdldFByZXZpb3VzUGF0aCh1LGMsITApKSxrPVtsLm1vdmUoYix3KStsLmxpbmUoYix3K3MvMikrbC5saW5lKGYsdytzLzIpK2wubGluZShmLHcrcy8yLXMvNCkrbC5saW5lKGYsdytzLzIrcy80KStsLmxpbmUoZix3K3MvMikrbC5saW5lKGIsdytzLzIpK2wubGluZShiLHcrcykrbC5saW5lKHksdytzKStsLmxpbmUoeSx3KStsLmxpbmUoYitvLzIsdyksbC5tb3ZlKHksdykrbC5saW5lKHksdytzKStsLmxpbmUodix3K3MpK2wubGluZSh2LHcrcy8yKStsLmxpbmUoeCx3K3MvMikrbC5saW5lKHgsdytzLXMvNCkrbC5saW5lKHgsdytzLzQpK2wubGluZSh4LHcrcy8yKStsLmxpbmUodix3K3MvMikrbC5saW5lKHYsdykrbC5saW5lKHksdykrXCJ6XCJdLEErPWwubW92ZShiLHcpLG4uZ2xvYmFscy5pc1hOdW1lcmljfHwoaSs9YSkse3BhdGhUbzprLHBhdGhGcm9tOkEseDp2LHk6aSxiYXJZUG9zaXRpb246dyxjb2xvcjpkfX19LHtrZXk6XCJnZXRPSExDVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm57bzp0aGlzLmlzQm94UGxvdD9pLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFt0XVtlXTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1t0XVtlXSxoOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW3RdW2VdLG06aS5nbG9iYWxzLnNlcmllc0NhbmRsZU1bdF1bZV0sbDp0aGlzLmlzQm94UGxvdD9pLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1t0XVtlXTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTFt0XVtlXSxjOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW3RdW2VdfX19XSksc30oKSxBdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiY2hlY2tDb2xvclJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0hMSxpPXQuY29uZmlnLnBsb3RPcHRpb25zW3QuY29uZmlnLmNoYXJ0LnR5cGVdO3JldHVybiBpLmNvbG9yU2NhbGUucmFuZ2VzLmxlbmd0aD4wJiZpLmNvbG9yU2NhbGUucmFuZ2VzLm1hcCgoZnVuY3Rpb24odCxpKXt0LmZyb208PTAmJihlPSEwKX0pKSxlfX0se2tleTpcImdldFNoYWRlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj0xLG89cy5jb25maWcucGxvdE9wdGlvbnNbdF0uc2hhZGVJbnRlbnNpdHksbj10aGlzLmRldGVybWluZUNvbG9yKHQsZSxpKTtzLmdsb2JhbHMuaGFzTmVnc3x8YT9yPXMuY29uZmlnLnBsb3RPcHRpb25zW3RdLnJldmVyc2VOZWdhdGl2ZVNoYWRlP24ucGVyY2VudDwwP24ucGVyY2VudC8xMDAqKDEuMjUqbyk6KDEtbi5wZXJjZW50LzEwMCkqKDEuMjUqbyk6bi5wZXJjZW50PD0wPzEtKDErbi5wZXJjZW50LzEwMCkqbzooMS1uLnBlcmNlbnQvMTAwKSpvOihyPTEtbi5wZXJjZW50LzEwMCxcInRyZWVtYXBcIj09PXQmJihyPSgxLW4ucGVyY2VudC8xMDApKigxLjI1Km8pKSk7dmFyIGw9bi5jb2xvcixoPW5ldyB4O3JldHVybiBzLmNvbmZpZy5wbG90T3B0aW9uc1t0XS5lbmFibGVTaGFkZXMmJihsPVwiZGFya1wiPT09dGhpcy53LmNvbmZpZy50aGVtZS5tb2RlP3guaGV4VG9SZ2JhKGguc2hhZGVDb2xvcigtMSpyLG4uY29sb3IpLHMuY29uZmlnLmZpbGwub3BhY2l0eSk6eC5oZXhUb1JnYmEoaC5zaGFkZUNvbG9yKHIsbi5jb2xvcikscy5jb25maWcuZmlsbC5vcGFjaXR5KSkse2NvbG9yOmwsY29sb3JQcm9wczpufX19LHtrZXk6XCJkZXRlcm1pbmVDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1hLmdsb2JhbHMuc2VyaWVzW2VdW2ldLHI9YS5jb25maWcucGxvdE9wdGlvbnNbdF0sbz1yLmNvbG9yU2NhbGUuaW52ZXJzZT9pOmU7ci5kaXN0cmlidXRlZCYmXCJ0cmVlbWFwXCI9PT1hLmNvbmZpZy5jaGFydC50eXBlJiYobz1pKTt2YXIgbj1hLmdsb2JhbHMuY29sb3JzW29dLGw9bnVsbCxoPU1hdGgubWluLmFwcGx5KE1hdGgsdShhLmdsb2JhbHMuc2VyaWVzW2VdKSksYz1NYXRoLm1heC5hcHBseShNYXRoLHUoYS5nbG9iYWxzLnNlcmllc1tlXSkpO3IuZGlzdHJpYnV0ZWR8fFwiaGVhdG1hcFwiIT09dHx8KGg9YS5nbG9iYWxzLm1pblksYz1hLmdsb2JhbHMubWF4WSksdm9pZCAwIT09ci5jb2xvclNjYWxlLm1pbiYmKGg9ci5jb2xvclNjYWxlLm1pbjxhLmdsb2JhbHMubWluWT9yLmNvbG9yU2NhbGUubWluOmEuZ2xvYmFscy5taW5ZLGM9ci5jb2xvclNjYWxlLm1heD5hLmdsb2JhbHMubWF4WT9yLmNvbG9yU2NhbGUubWF4OmEuZ2xvYmFscy5tYXhZKTt2YXIgZD1NYXRoLmFicyhjKStNYXRoLmFicyhoKSxnPTEwMCpzLygwPT09ZD9kLTFlLTY6ZCk7ci5jb2xvclNjYWxlLnJhbmdlcy5sZW5ndGg+MCYmci5jb2xvclNjYWxlLnJhbmdlcy5tYXAoKGZ1bmN0aW9uKHQsZSl7aWYocz49dC5mcm9tJiZzPD10LnRvKXtuPXQuY29sb3IsbD10LmZvcmVDb2xvcj90LmZvcmVDb2xvcjpudWxsLGg9dC5mcm9tLGM9dC50bzt2YXIgaT1NYXRoLmFicyhjKStNYXRoLmFicyhoKTtnPTEwMCpzLygwPT09aT9pLTFlLTY6aSl9fSkpO3JldHVybntjb2xvcjpuLGZvcmVDb2xvcjpsLHBlcmNlbnQ6Z319fSx7a2V5OlwiY2FsY3VsYXRlRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGV4dCxpPXQueCxhPXQueSxzPXQuaSxyPXQuaixvPXQuY29sb3JQcm9wcyxuPXQuZm9udFNpemUsbD10aGlzLncuY29uZmlnLmRhdGFMYWJlbHMsaD1uZXcgbSh0aGlzLmN0eCksYz1uZXcgTyh0aGlzLmN0eCksZD1udWxsO2lmKGwuZW5hYmxlZCl7ZD1oLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO3ZhciBnPWwub2Zmc2V0WCx1PWwub2Zmc2V0WSxwPWkrZyxmPWErcGFyc2VGbG9hdChsLnN0eWxlLmZvbnRTaXplKS8zK3U7Yy5wbG90RGF0YUxhYmVsc1RleHQoe3g6cCx5OmYsdGV4dDplLGk6cyxqOnIsY29sb3I6by5mb3JlQ29sb3IscGFyZW50OmQsZm9udFNpemU6bixkYXRhTGFiZWxzQ29uZmlnOmx9KX1yZXR1cm4gZH19LHtrZXk6XCJhZGRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgbSh0aGlzLmN0eCk7dC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsZS5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGUucGF0aE1vdXNlTGVhdmUuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGUucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMsdCkpfX1dKSx0fSgpLFN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy54UmF0aW89aS54UmF0aW8sdGhpcy55UmF0aW89aS55UmF0aW8sdGhpcy5keW5hbWljQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbix0aGlzLmhlbHBlcnM9bmV3IEF0KGUpLHRoaXMucmVjdFJhZGl1cz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAucmFkaXVzLHRoaXMuc3Ryb2tlV2lkdGg9dGhpcy53LmNvbmZpZy5zdHJva2Uuc2hvdz90aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aDowfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWhlYXRtYXBcIn0pO2EuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoZS5nbG9iYWxzLmN1aWQsXCIpXCIpKTt2YXIgcz1lLmdsb2JhbHMuZ3JpZFdpZHRoL2UuZ2xvYmFscy5kYXRhUG9pbnRzLHI9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsbz0wLG49ITE7dGhpcy5uZWdSYW5nZT10aGlzLmhlbHBlcnMuY2hlY2tDb2xvclJhbmdlKCk7dmFyIGw9dC5zbGljZSgpO2UuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkJiYobj0hMCxsLnJldmVyc2UoKSk7Zm9yKHZhciBoPW4/MDpsLmxlbmd0aC0xO24/aDxsLmxlbmd0aDpoPj0wO24/aCsrOmgtLSl7dmFyIGM9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLWhlYXRtYXAtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhlLmdsb2JhbHMuc2VyaWVzTmFtZXNbaF0pLHJlbDpoKzEsXCJkYXRhOnJlYWxJbmRleFwiOmh9KTtpZih0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhjLGgpLGUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGQ9ZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztuZXcgdih0aGlzLmN0eCkuZHJvcFNoYWRvdyhjLGQsaCl9Zm9yKHZhciBnPTAsdT1lLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLnNoYWRlSW50ZW5zaXR5LHA9MDtwPGxbaF0ubGVuZ3RoO3ArKyl7dmFyIGY9dGhpcy5oZWxwZXJzLmdldFNoYWRlQ29sb3IoZS5jb25maWcuY2hhcnQudHlwZSxoLHAsdGhpcy5uZWdSYW5nZSksYj1mLmNvbG9yLHk9Zi5jb2xvclByb3BzO2lmKFwiaW1hZ2VcIj09PWUuY29uZmlnLmZpbGwudHlwZSliPW5ldyBSKHRoaXMuY3R4KS5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmgsZGF0YVBvaW50SW5kZXg6cCxvcGFjaXR5OmUuZ2xvYmFscy5oYXNOZWdzP3kucGVyY2VudDwwPzEtKDEreS5wZXJjZW50LzEwMCk6dSt5LnBlcmNlbnQvMTAwOnkucGVyY2VudC8xMDAscGF0dGVybklEOngucmFuZG9tSWQoKSx3aWR0aDplLmNvbmZpZy5maWxsLmltYWdlLndpZHRoP2UuY29uZmlnLmZpbGwuaW1hZ2Uud2lkdGg6cyxoZWlnaHQ6ZS5jb25maWcuZmlsbC5pbWFnZS5oZWlnaHQ/ZS5jb25maWcuZmlsbC5pbWFnZS5oZWlnaHQ6cn0pO3ZhciB3PXRoaXMucmVjdFJhZGl1cyxrPWkuZHJhd1JlY3QoZyxvLHMscix3KTtpZihrLmF0dHIoe2N4OmcsY3k6b30pLGsubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oZWF0bWFwLXJlY3RcIiksYy5hZGQoayksay5hdHRyKHtmaWxsOmIsaTpoLGluZGV4OmgsajpwLHZhbDpsW2hdW3BdLFwic3Ryb2tlLXdpZHRoXCI6dGhpcy5zdHJva2VXaWR0aCxzdHJva2U6ZS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC51c2VGaWxsQ29sb3JBc1N0cm9rZT9iOmUuZ2xvYmFscy5zdHJva2UuY29sb3JzWzBdLGNvbG9yOmJ9KSx0aGlzLmhlbHBlcnMuYWRkTGlzdGVuZXJzKGspLGUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIWUuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIEE9MTtlLmdsb2JhbHMucmVzaXplZHx8KEE9ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksdGhpcy5hbmltYXRlSGVhdE1hcChrLGcsbyxzLHIsQSl9aWYoZS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgUz0xO2lmKHRoaXMuZHluYW1pY0FuaW0uZW5hYmxlZCYmZS5nbG9iYWxzLnNob3VsZEFuaW1hdGUpe1M9dGhpcy5keW5hbWljQW5pbS5zcGVlZDt2YXIgQz1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1toXSYmZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bcF0mJmUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdW3BdLmNvbG9yO0N8fChDPVwicmdiYSgyNTUsIDI1NSwgMjU1LCAwKVwiKSx0aGlzLmFuaW1hdGVIZWF0Q29sb3Ioayx4LmlzQ29sb3JIZXgoQyk/Qzp4LnJnYjJoZXgoQykseC5pc0NvbG9ySGV4KGIpP2I6eC5yZ2IyaGV4KGIpLFMpfX12YXIgTD0oMCxlLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcikoZS5nbG9iYWxzLnNlcmllc1toXVtwXSx7dmFsdWU6ZS5nbG9iYWxzLnNlcmllc1toXVtwXSxzZXJpZXNJbmRleDpoLGRhdGFQb2ludEluZGV4OnAsdzplfSksUD10aGlzLmhlbHBlcnMuY2FsY3VsYXRlRGF0YUxhYmVscyh7dGV4dDpMLHg6ZytzLzIseTpvK3IvMixpOmgsajpwLGNvbG9yUHJvcHM6eSxzZXJpZXM6bH0pO251bGwhPT1QJiZjLmFkZChQKSxnKz1zfW8rPXIsYS5hZGQoYyl9dmFyIEk9ZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnNsaWNlKCk7cmV0dXJuIGUuY29uZmlnLnlheGlzWzBdLnJldmVyc2VkP0kudW5zaGlmdChcIlwiKTpJLnB1c2goXCJcIiksZS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0PUksYX19LHtrZXk6XCJhbmltYXRlSGVhdE1hcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbz1uZXcgYih0aGlzLmN0eCk7by5hbmltYXRlUmVjdCh0LHt4OmUrYS8yLHk6aStzLzIsd2lkdGg6MCxoZWlnaHQ6MH0se3g6ZSx5Omksd2lkdGg6YSxoZWlnaHQ6c30sciwoZnVuY3Rpb24oKXtvLmFuaW1hdGlvbkNvbXBsZXRlZCh0KX0pKX19LHtrZXk6XCJhbmltYXRlSGVhdENvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dC5hdHRyKHtmaWxsOmV9KS5hbmltYXRlKGEpLmF0dHIoe2ZpbGw6aX0pfX1dKSx0fSgpLEN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkcmF3WUF4aXNUZXh0c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPXMuY29uZmlnLnlheGlzWzBdLG89cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF07cmV0dXJuIG5ldyBtKHRoaXMuY3R4KS5kcmF3VGV4dCh7eDp0K3IubGFiZWxzLm9mZnNldFgseTplK3IubGFiZWxzLm9mZnNldFksdGV4dDpvKGEsaSksdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOnIubGFiZWxzLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ci5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShyLmxhYmVscy5zdHlsZS5jb2xvcnMpP3IubGFiZWxzLnN0eWxlLmNvbG9yc1tpXTpyLmxhYmVscy5zdHlsZS5jb2xvcnN9KX19XSksdH0oKSxMdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy5jaGFydFR5cGU9dGhpcy53LmNvbmZpZy5jaGFydC50eXBlLHRoaXMuaW5pdGlhbEFuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQsdGhpcy5keW5hbWljQW5pbT10aGlzLmluaXRpYWxBbmltJiZ0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkLHRoaXMuYW5pbUJlZ2luQXJyPVswXSx0aGlzLmFuaW1EdXI9MCx0aGlzLmRvbnV0RGF0YUxhYmVscz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kb251dC5sYWJlbHMsdGhpcy5saW5lQ29sb3JBcnI9dm9pZCAwIT09aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM/aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6aS5nbG9iYWxzLmNvbG9ycyx0aGlzLmRlZmF1bHRTaXplPU1hdGgubWluKGkuZ2xvYmFscy5ncmlkV2lkdGgsaS5nbG9iYWxzLmdyaWRIZWlnaHQpLHRoaXMuY2VudGVyWT10aGlzLmRlZmF1bHRTaXplLzIsdGhpcy5jZW50ZXJYPWkuZ2xvYmFscy5ncmlkV2lkdGgvMixcInJhZGlhbEJhclwiPT09aS5jb25maWcuY2hhcnQudHlwZT90aGlzLmZ1bGxBbmdsZT0zNjA6dGhpcy5mdWxsQW5nbGU9TWF0aC5hYnMoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmVuZEFuZ2xlLWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlKSx0aGlzLmluaXRpYWxBbmdsZT1pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSV0aGlzLmZ1bGxBbmdsZSxpLmdsb2JhbHMucmFkaWFsU2l6ZT10aGlzLmRlZmF1bHRTaXplLzIuMDUtaS5jb25maWcuc3Ryb2tlLndpZHRoLShpLmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8wOmkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1ciksdGhpcy5kb251dFNpemU9aS5nbG9iYWxzLnJhZGlhbFNpemUqcGFyc2VJbnQoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LnNpemUsMTApLzEwMCx0aGlzLm1heFk9MCx0aGlzLnNsaWNlTGFiZWxzPVtdLHRoaXMuc2xpY2VTaXplcz1bXSx0aGlzLnByZXZTZWN0b3JBbmdsZUFycj1bXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCk7aWYodGhpcy5yZXQ9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBpZVwifSksaS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gdGhpcy5yZXQ7Zm9yKHZhciBzPTAscj0wO3I8dC5sZW5ndGg7cisrKXMrPXgubmVnVG9aZXJvKHRbcl0pO3ZhciBvPVtdLG49YS5ncm91cCgpOzA9PT1zJiYocz0xZS01KSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UubWF4WT1NYXRoLm1heChlLm1heFksdCl9KSksaS5jb25maWcueWF4aXNbMF0ubWF4JiYodGhpcy5tYXhZPWkuY29uZmlnLnlheGlzWzBdLm1heCksXCJiYWNrXCI9PT1pLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiZcInBvbGFyQXJlYVwiPT09dGhpcy5jaGFydFR5cGUmJnRoaXMuZHJhd1BvbGFyRWxlbWVudHModGhpcy5yZXQpO2Zvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgaD10aGlzLmZ1bGxBbmdsZSp4Lm5lZ1RvWmVybyh0W2xdKS9zO28ucHVzaChoKSxcInBvbGFyQXJlYVwiPT09dGhpcy5jaGFydFR5cGU/KG9bbF09dGhpcy5mdWxsQW5nbGUvdC5sZW5ndGgsdGhpcy5zbGljZVNpemVzLnB1c2goaS5nbG9iYWxzLnJhZGlhbFNpemUqdFtsXS90aGlzLm1heFkpKTp0aGlzLnNsaWNlU2l6ZXMucHVzaChpLmdsb2JhbHMucmFkaWFsU2l6ZSl9aWYoaS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXtmb3IodmFyIGMsZD0wLGc9MDtnPGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtnKyspZCs9eC5uZWdUb1plcm8oaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbZ10pO2Zvcih2YXIgdT0wO3U8aS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3UrKyljPXRoaXMuZnVsbEFuZ2xlKngubmVnVG9aZXJvKGkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3VdKS9kLHRoaXMucHJldlNlY3RvckFuZ2xlQXJyLnB1c2goYyl9dGhpcy5kb251dFNpemU8MCYmKHRoaXMuZG9udXRTaXplPTApO3ZhciBwPWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5jdXN0b21TY2FsZSxmPWkuZ2xvYmFscy5ncmlkV2lkdGgvMixiPWkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIsdj1mLWkuZ2xvYmFscy5ncmlkV2lkdGgvMipwLHk9Yi1pLmdsb2JhbHMuZ3JpZEhlaWdodC8yKnA7aWYoXCJkb251dFwiPT09dGhpcy5jaGFydFR5cGUpe3ZhciB3PWEuZHJhd0NpcmNsZSh0aGlzLmRvbnV0U2l6ZSk7dy5hdHRyKHtjeDp0aGlzLmNlbnRlclgsY3k6dGhpcy5jZW50ZXJZLGZpbGw6aS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmJhY2tncm91bmQ/aS5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwifSksbi5hZGQodyl9dmFyIGs9dGhpcy5kcmF3QXJjcyhvLHQpO2lmKHRoaXMuc2xpY2VMYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ay5hZGQodCl9KSksbi5hdHRyKHt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHYsXCIsIFwiKS5jb25jYXQoeSxcIikgc2NhbGUoXCIpLmNvbmNhdChwLFwiKVwiKX0pLG4uYWRkKGspLHRoaXMucmV0LmFkZChuKSx0aGlzLmRvbnV0RGF0YUxhYmVscy5zaG93KXt2YXIgQT10aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLmRvbnV0RGF0YUxhYmVscyx7aG9sbG93U2l6ZTp0aGlzLmRvbnV0U2l6ZSxjZW50ZXJYOnRoaXMuY2VudGVyWCxjZW50ZXJZOnRoaXMuY2VudGVyWSxvcGFjaXR5OnRoaXMuZG9udXREYXRhTGFiZWxzLnNob3csdHJhbnNsYXRlWDp2LHRyYW5zbGF0ZVk6eX0pO3RoaXMucmV0LmFkZChBKX1yZXR1cm5cImZyb250XCI9PT1pLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiZcInBvbGFyQXJlYVwiPT09dGhpcy5jaGFydFR5cGUmJnRoaXMuZHJhd1BvbGFyRWxlbWVudHModGhpcy5yZXQpLHRoaXMucmV0fX0se2tleTpcImRyYXdBcmNzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgdih0aGlzLmN0eCkscz1uZXcgbSh0aGlzLmN0eCkscj1uZXcgUih0aGlzLmN0eCksbz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2xpY2VzXCJ9KSxuPXRoaXMuaW5pdGlhbEFuZ2xlLGw9dGhpcy5pbml0aWFsQW5nbGUsaD10aGlzLmluaXRpYWxBbmdsZSxjPXRoaXMuaW5pdGlhbEFuZ2xlO3RoaXMuc3Ryb2tlV2lkdGg9aS5jb25maWcuc3Ryb2tlLnNob3c/aS5jb25maWcuc3Ryb2tlLndpZHRoOjA7Zm9yKHZhciBkPTA7ZDx0Lmxlbmd0aDtkKyspe3ZhciBnPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1waWUtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbZF0pLHJlbDpkKzEsXCJkYXRhOnJlYWxJbmRleFwiOmR9KTtvLmFkZChnKSxsPWMsaD0obj1oKSt0W2RdLGM9bCt0aGlzLnByZXZTZWN0b3JBbmdsZUFycltkXTt2YXIgdT1oPG4/dGhpcy5mdWxsQW5nbGUraC1uOmgtbixwPXIuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpkLHNpemU6dGhpcy5zbGljZVNpemVzW2RdLHZhbHVlOmVbZF19KSxmPXRoaXMuZ2V0Q2hhbmdlZFBhdGgobCxjKSxiPXMuZHJhd1BhdGgoe2Q6ZixzdHJva2U6QXJyYXkuaXNBcnJheSh0aGlzLmxpbmVDb2xvckFycik/dGhpcy5saW5lQ29sb3JBcnJbZF06dGhpcy5saW5lQ29sb3JBcnIsc3Ryb2tlV2lkdGg6MCxmaWxsOnAsZmlsbE9wYWNpdHk6aS5jb25maWcuZmlsbC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXBpZS1hcmVhIGFwZXhjaGFydHMtXCIuY29uY2F0KHRoaXMuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCksXCItc2xpY2UtXCIpLmNvbmNhdChkKX0pO2lmKGIuYXR0cih7aW5kZXg6MCxqOmR9KSxhLnNldFNlbGVjdGlvbkZpbHRlcihiLDAsZCksaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgeT1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O2EuZHJvcFNoYWRvdyhiLHksZCl9dGhpcy5hZGRMaXN0ZW5lcnMoYix0aGlzLmRvbnV0RGF0YUxhYmVscyksbS5zZXRBdHRycyhiLm5vZGUse1wiZGF0YTphbmdsZVwiOnUsXCJkYXRhOnN0YXJ0QW5nbGVcIjpuLFwiZGF0YTpzdHJva2VXaWR0aFwiOnRoaXMuc3Ryb2tlV2lkdGgsXCJkYXRhOnZhbHVlXCI6ZVtkXX0pO3ZhciB3PXt4OjAseTowfTtcInBpZVwiPT09dGhpcy5jaGFydFR5cGV8fFwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZT93PXgucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLGkuZ2xvYmFscy5yYWRpYWxTaXplLzEuMjUraS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMub2Zmc2V0LChuK3UvMikldGhpcy5mdWxsQW5nbGUpOlwiZG9udXRcIj09PXRoaXMuY2hhcnRUeXBlJiYodz14LnBvbGFyVG9DYXJ0ZXNpYW4odGhpcy5jZW50ZXJYLHRoaXMuY2VudGVyWSwoaS5nbG9iYWxzLnJhZGlhbFNpemUrdGhpcy5kb251dFNpemUpLzIraS5jb25maWcucGxvdE9wdGlvbnMucGllLmRhdGFMYWJlbHMub2Zmc2V0LChuK3UvMikldGhpcy5mdWxsQW5nbGUpKSxnLmFkZChiKTt2YXIgaz0wO2lmKCF0aGlzLmluaXRpYWxBbmltfHxpLmdsb2JhbHMucmVzaXplZHx8aS5nbG9iYWxzLmRhdGFDaGFuZ2VkP3RoaXMuYW5pbUJlZ2luQXJyLnB1c2goMCk6KDA9PT0oaz11L3RoaXMuZnVsbEFuZ2xlKmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpJiYoaz0xKSx0aGlzLmFuaW1EdXI9ayt0aGlzLmFuaW1EdXIsdGhpcy5hbmltQmVnaW5BcnIucHVzaCh0aGlzLmFuaW1EdXIpKSx0aGlzLmR5bmFtaWNBbmltJiZpLmdsb2JhbHMuZGF0YUNoYW5nZWQ/dGhpcy5hbmltYXRlUGF0aHMoYix7c2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZF0sZW5kQW5nbGU6aCxzdGFydEFuZ2xlOm4scHJldlN0YXJ0QW5nbGU6bCxwcmV2RW5kQW5nbGU6YyxhbmltYXRlU3RhcnRpbmdQb3M6ITAsaTpkLGFuaW1CZWdpbkFycjp0aGlzLmFuaW1CZWdpbkFycixzaG91bGRTZXRQcmV2UGF0aHM6ITAsZHVyOmkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZH0pOnRoaXMuYW5pbWF0ZVBhdGhzKGIse3NpemU6dGhpcy5zbGljZVNpemVzW2RdLGVuZEFuZ2xlOmgsc3RhcnRBbmdsZTpuLGk6ZCx0b3RhbEl0ZW1zOnQubGVuZ3RoLTEsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLGR1cjprfSksaS5jb25maWcucGxvdE9wdGlvbnMucGllLmV4cGFuZE9uQ2xpY2smJlwicG9sYXJBcmVhXCIhPT10aGlzLmNoYXJ0VHlwZSYmYi5jbGljayh0aGlzLnBpZUNsaWNrZWQuYmluZCh0aGlzLGQpKSx2b2lkIDAhPT1pLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdJiZpLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLmluZGV4T2YoZCk+LTEmJnRoaXMucGllQ2xpY2tlZChkKSxpLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQpe3ZhciBBPXcueCxTPXcueSxDPTEwMCp1L3RoaXMuZnVsbEFuZ2xlK1wiJVwiO2lmKDAhPT11JiZpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5taW5BbmdsZVRvU2hvd0xhYmVsPHRbZF0pe3ZhciBMPWkuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyO3ZvaWQgMCE9PUwmJihDPUwoaS5nbG9iYWxzLnNlcmllc1BlcmNlbnRbZF1bMF0se3Nlcmllc0luZGV4OmQsdzppfSkpO3ZhciBQPWkuZ2xvYmFscy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9yc1tkXSxJPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCJ9KSxNPXMuZHJhd1RleHQoe3g6QSx5OlMsdGV4dDpDLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjpQfSk7aWYoSS5hZGQoTSksaS5jb25maWcuZGF0YUxhYmVscy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBUPWkuY29uZmlnLmRhdGFMYWJlbHMuZHJvcFNoYWRvdzthLmRyb3BTaGFkb3coTSxUKX1NLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtcGllLWxhYmVsXCIpLGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZSYmITE9PT1pLmdsb2JhbHMucmVzaXplZCYmKE0ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1waWUtbGFiZWwtZGVsYXlcIiksTS5ub2RlLnN0eWxlLmFuaW1hdGlvbkRlbGF5PWkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQvOTQwK1wic1wiKSx0aGlzLnNsaWNlTGFiZWxzLnB1c2goSSl9fX1yZXR1cm4gb319LHtrZXk6XCJhZGRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPW5ldyBtKHRoaXMuY3R4KTt0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixpLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsaS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHRoaXMucmV2ZXJ0RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyx0Lm5vZGUsZSkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcyx0KSksdGhpcy5kb251dERhdGFMYWJlbHMudG90YWwuc2hvd0Fsd2F5c3x8KHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIix0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyLmJpbmQodGhpcyx0Lm5vZGUsZSkpKX19LHtrZXk6XCJhbmltYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWUuZW5kQW5nbGU8ZS5zdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK2UuZW5kQW5nbGUtZS5zdGFydEFuZ2xlOmUuZW5kQW5nbGUtZS5zdGFydEFuZ2xlLHM9YSxyPWUuc3RhcnRBbmdsZSxvPWUuc3RhcnRBbmdsZTt2b2lkIDAhPT1lLnByZXZTdGFydEFuZ2xlJiZ2b2lkIDAhPT1lLnByZXZFbmRBbmdsZSYmKHI9ZS5wcmV2RW5kQW5nbGUscz1lLnByZXZFbmRBbmdsZTxlLnByZXZTdGFydEFuZ2xlP3RoaXMuZnVsbEFuZ2xlK2UucHJldkVuZEFuZ2xlLWUucHJldlN0YXJ0QW5nbGU6ZS5wcmV2RW5kQW5nbGUtZS5wcmV2U3RhcnRBbmdsZSksZS5pPT09aS5jb25maWcuc2VyaWVzLmxlbmd0aC0xJiYoYStvPnRoaXMuZnVsbEFuZ2xlP2UuZW5kQW5nbGU9ZS5lbmRBbmdsZS0oYStvKTphK288dGhpcy5mdWxsQW5nbGUmJihlLmVuZEFuZ2xlPWUuZW5kQW5nbGUrKHRoaXMuZnVsbEFuZ2xlLShhK28pKSkpLGE9PT10aGlzLmZ1bGxBbmdsZSYmKGE9dGhpcy5mdWxsQW5nbGUtLjAxKSx0aGlzLmFuaW1hdGVBcmModCxyLG8sYSxzLGUpfX0se2tleTpcImFuaW1hdGVBcmNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG8sbj10aGlzLGw9dGhpcy53LGg9bmV3IGIodGhpcy5jdHgpLGM9ci5zaXplOyhpc05hTihlKXx8aXNOYU4ocykpJiYoZT1pLHM9YSxyLmR1cj0wKTt2YXIgZD1hLGc9aSx1PWU8aT90aGlzLmZ1bGxBbmdsZStlLWk6ZS1pO2wuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmci5zaG91bGRTZXRQcmV2UGF0aHMmJnIucHJldkVuZEFuZ2xlJiYobz1uLmdldFBpZVBhdGgoe21lOm4sc3RhcnRBbmdsZTpyLnByZXZTdGFydEFuZ2xlLGFuZ2xlOnIucHJldkVuZEFuZ2xlPHIucHJldlN0YXJ0QW5nbGU/dGhpcy5mdWxsQW5nbGUrci5wcmV2RW5kQW5nbGUtci5wcmV2U3RhcnRBbmdsZTpyLnByZXZFbmRBbmdsZS1yLnByZXZTdGFydEFuZ2xlLHNpemU6Y30pLHQuYXR0cih7ZDpvfSkpLDAhPT1yLmR1cj90LmFuaW1hdGUoci5kdXIsbC5nbG9iYWxzLmVhc2luZyxyLmFuaW1CZWdpbkFycltyLmldKS5hZnRlckFsbCgoZnVuY3Rpb24oKXtcInBpZVwiIT09bi5jaGFydFR5cGUmJlwiZG9udXRcIiE9PW4uY2hhcnRUeXBlJiZcInBvbGFyQXJlYVwiIT09bi5jaGFydFR5cGV8fHRoaXMuYW5pbWF0ZShsLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQpLmF0dHIoe1wic3Ryb2tlLXdpZHRoXCI6bi5zdHJva2VXaWR0aH0pLHIuaT09PWwuY29uZmlnLnNlcmllcy5sZW5ndGgtMSYmaC5hbmltYXRpb25Db21wbGV0ZWQodCl9KSkuZHVyaW5nKChmdW5jdGlvbihsKXtkPXUrKGEtdSkqbCxyLmFuaW1hdGVTdGFydGluZ1BvcyYmKGQ9cysoYS1zKSpsLGc9ZS1zKyhpLShlLXMpKSpsKSxvPW4uZ2V0UGllUGF0aCh7bWU6bixzdGFydEFuZ2xlOmcsYW5nbGU6ZCxzaXplOmN9KSx0Lm5vZGUuc2V0QXR0cmlidXRlKFwiZGF0YTpwYXRoT3JpZ1wiLG8pLHQuYXR0cih7ZDpvfSl9KSk6KG89bi5nZXRQaWVQYXRoKHttZTpuLHN0YXJ0QW5nbGU6ZyxhbmdsZTphLHNpemU6Y30pLHIuaXNUcmFja3x8KGwuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCksdC5ub2RlLnNldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIixvKSx0LmF0dHIoe2Q6byxcInN0cm9rZS13aWR0aFwiOm4uc3Ryb2tlV2lkdGh9KSl9fSx7a2V5OlwicGllQ2xpY2tlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy53LGE9dGhpcyxzPWEuc2xpY2VTaXplc1t0XSsoaS5jb25maWcucGxvdE9wdGlvbnMucGllLmV4cGFuZE9uQ2xpY2s/NDowKSxyPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KGEuY2hhcnRUeXBlLnRvTG93ZXJDYXNlKCksXCItc2xpY2UtXCIpLmNvbmNhdCh0KSkubWVtYmVyc1swXTtpZihcInRydWVcIiE9PXIuYXR0cihcImRhdGE6cGllQ2xpY2tlZFwiKSl7dmFyIG89aS5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtcGllLWFyZWFcIik7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChvLChmdW5jdGlvbih0KXt0LnNldEF0dHJpYnV0ZShcImRhdGE6cGllQ2xpY2tlZFwiLFwiZmFsc2VcIik7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnBhdGhPcmlnXCIpO2UmJnQuc2V0QXR0cmlidXRlKFwiZFwiLGUpfSkpLHIuYXR0cihcImRhdGE6cGllQ2xpY2tlZFwiLFwidHJ1ZVwiKTt2YXIgbj1wYXJzZUludChyLmF0dHIoXCJkYXRhOnN0YXJ0QW5nbGVcIiksMTApLGw9cGFyc2VJbnQoci5hdHRyKFwiZGF0YTphbmdsZVwiKSwxMCk7ZT1hLmdldFBpZVBhdGgoe21lOmEsc3RhcnRBbmdsZTpuLGFuZ2xlOmwsc2l6ZTpzfSksMzYwIT09bCYmci5wbG90KGUpfWVsc2V7ci5hdHRyKHtcImRhdGE6cGllQ2xpY2tlZFwiOlwiZmFsc2VcIn0pLHRoaXMucmV2ZXJ0RGF0YUxhYmVsc0lubmVyKHIubm9kZSx0aGlzLmRvbnV0RGF0YUxhYmVscyk7dmFyIGg9ci5hdHRyKFwiZGF0YTpwYXRoT3JpZ1wiKTtyLmF0dHIoe2Q6aH0pfX19LHtrZXk6XCJnZXRDaGFuZ2VkUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9XCJcIjtyZXR1cm4gdGhpcy5keW5hbWljQW5pbSYmdGhpcy53Lmdsb2JhbHMuZGF0YUNoYW5nZWQmJihpPXRoaXMuZ2V0UGllUGF0aCh7bWU6dGhpcyxzdGFydEFuZ2xlOnQsYW5nbGU6ZS10LHNpemU6dGhpcy5zaXplfSkpLGl9fSx7a2V5OlwiZ2V0UGllUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubWUsaT10LnN0YXJ0QW5nbGUsYT10LmFuZ2xlLHM9dC5zaXplLHI9aSxvPU1hdGguUEkqKHItOTApLzE4MCxuPWEraTtNYXRoLmNlaWwobik+PXRoaXMuZnVsbEFuZ2xlK3RoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUldGhpcy5mdWxsQW5nbGUmJihuPXRoaXMuZnVsbEFuZ2xlK3RoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUldGhpcy5mdWxsQW5nbGUtLjAxKSxNYXRoLmNlaWwobik+dGhpcy5mdWxsQW5nbGUmJihuLT10aGlzLmZ1bGxBbmdsZSk7dmFyIGw9TWF0aC5QSSoobi05MCkvMTgwLGg9ZS5jZW50ZXJYK3MqTWF0aC5jb3MobyksYz1lLmNlbnRlclkrcypNYXRoLnNpbihvKSxkPWUuY2VudGVyWCtzKk1hdGguY29zKGwpLGc9ZS5jZW50ZXJZK3MqTWF0aC5zaW4obCksdT14LnBvbGFyVG9DYXJ0ZXNpYW4oZS5jZW50ZXJYLGUuY2VudGVyWSxlLmRvbnV0U2l6ZSxuKSxwPXgucG9sYXJUb0NhcnRlc2lhbihlLmNlbnRlclgsZS5jZW50ZXJZLGUuZG9udXRTaXplLHIpLGY9YT4xODA/MTowLGI9W1wiTVwiLGgsYyxcIkFcIixzLHMsMCxmLDEsZCxnXTtyZXR1cm5cImRvbnV0XCI9PT1lLmNoYXJ0VHlwZT9bXS5jb25jYXQoYixbXCJMXCIsdS54LHUueSxcIkFcIixlLmRvbnV0U2l6ZSxlLmRvbnV0U2l6ZSwwLGYsMCxwLngscC55LFwiTFwiLGgsYyxcInpcIl0pLmpvaW4oXCIgXCIpOlwicGllXCI9PT1lLmNoYXJ0VHlwZXx8XCJwb2xhckFyZWFcIj09PWUuY2hhcnRUeXBlP1tdLmNvbmNhdChiLFtcIkxcIixlLmNlbnRlclgsZS5jZW50ZXJZLFwiTFwiLGgsY10pLmpvaW4oXCIgXCIpOltdLmNvbmNhdChiKS5qb2luKFwiIFwiKX19LHtrZXk6XCJkcmF3UG9sYXJFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBfKHRoaXMuY3R4KSxhPW5ldyBtKHRoaXMuY3R4KSxzPW5ldyBDdCh0aGlzLmN0eCkscj1hLmdyb3VwKCksbz1hLmdyb3VwKCksbj1pLm5pY2VTY2FsZSgwLE1hdGguY2VpbCh0aGlzLm1heFkpLGUuY29uZmlnLnlheGlzWzBdLnRpY2tBbW91bnQsMCwhMCksbD1uLnJlc3VsdC5yZXZlcnNlKCksaD1uLnJlc3VsdC5sZW5ndGg7dGhpcy5tYXhZPW4ubmljZU1heDtmb3IodmFyIGM9ZS5nbG9iYWxzLnJhZGlhbFNpemUsZD1jLyhoLTEpLGc9MDtnPGgtMTtnKyspe3ZhciB1PWEuZHJhd0NpcmNsZShjKTtpZih1LmF0dHIoe2N4OnRoaXMuY2VudGVyWCxjeTp0aGlzLmNlbnRlclksZmlsbDpcIm5vbmVcIixcInN0cm9rZS13aWR0aFwiOmUuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5yaW5ncy5zdHJva2VXaWR0aCxzdHJva2U6ZS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnJpbmdzLnN0cm9rZUNvbG9yfSksZS5jb25maWcueWF4aXNbMF0uc2hvdyl7dmFyIHA9cy5kcmF3WUF4aXNUZXh0cyh0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLWMrcGFyc2VJbnQoZS5jb25maWcueWF4aXNbMF0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8yLGcsbFtnXSk7by5hZGQocCl9ci5hZGQodSksYy09ZH10aGlzLmRyYXdTcG9rZXModCksdC5hZGQociksdC5hZGQobyl9fSx7a2V5OlwicmVuZGVySW5uZXJEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoZS50cmFuc2xhdGVYP2UudHJhbnNsYXRlWDowLFwiLCBcIikuY29uY2F0KGUudHJhbnNsYXRlWT9lLnRyYW5zbGF0ZVk6MCxcIikgc2NhbGUoXCIpLmNvbmNhdChpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuY3VzdG9tU2NhbGUsXCIpXCIpfSkscj10LnRvdGFsLnNob3c7cy5ub2RlLnN0eWxlLm9wYWNpdHk9ZS5vcGFjaXR5O3ZhciBvLG4sbD1lLmNlbnRlclgsaD1lLmNlbnRlclk7bz12b2lkIDA9PT10Lm5hbWUuY29sb3I/aS5nbG9iYWxzLmNvbG9yc1swXTp0Lm5hbWUuY29sb3I7dmFyIGM9dC5uYW1lLmZvbnRTaXplLGQ9dC5uYW1lLmZvbnRGYW1pbHksZz10Lm5hbWUuZm9udFdlaWdodDtuPXZvaWQgMD09PXQudmFsdWUuY29sb3I/aS5jb25maWcuY2hhcnQuZm9yZUNvbG9yOnQudmFsdWUuY29sb3I7dmFyIHU9dC52YWx1ZS5mb3JtYXR0ZXIscD1cIlwiLGY9XCJcIjtpZihyPyhvPXQudG90YWwuY29sb3IsYz10LnRvdGFsLmZvbnRTaXplLGQ9dC50b3RhbC5mb250RmFtaWx5LGc9dC50b3RhbC5mb250V2VpZ2h0LGY9dC50b3RhbC5sYWJlbCxwPXQudG90YWwuZm9ybWF0dGVyKGkpKToxPT09aS5nbG9iYWxzLnNlcmllcy5sZW5ndGgmJihwPXUoaS5nbG9iYWxzLnNlcmllc1swXSxpKSxmPWkuZ2xvYmFscy5zZXJpZXNOYW1lc1swXSksZiYmKGY9dC5uYW1lLmZvcm1hdHRlcihmLHQudG90YWwuc2hvdyxpKSksdC5uYW1lLnNob3cpe3ZhciB4PWEuZHJhd1RleHQoe3g6bCx5OmgrcGFyc2VGbG9hdCh0Lm5hbWUub2Zmc2V0WSksdGV4dDpmLHRleHRBbmNob3I6XCJtaWRkbGVcIixmb3JlQ29sb3I6byxmb250U2l6ZTpjLGZvbnRXZWlnaHQ6Zyxmb250RmFtaWx5OmR9KTt4Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsXCIpLHMuYWRkKHgpfWlmKHQudmFsdWUuc2hvdyl7dmFyIGI9dC5uYW1lLnNob3c/cGFyc2VGbG9hdCh0LnZhbHVlLm9mZnNldFkpKzE2OnQudmFsdWUub2Zmc2V0WSx2PWEuZHJhd1RleHQoe3g6bCx5OmgrYix0ZXh0OnAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpuLGZvbnRXZWlnaHQ6dC52YWx1ZS5mb250V2VpZ2h0LGZvbnRTaXplOnQudmFsdWUuZm9udFNpemUsZm9udEZhbWlseTp0LnZhbHVlLmZvbnRGYW1pbHl9KTt2Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlXCIpLHMuYWRkKHYpfXJldHVybiBzfX0se2tleTpcInByaW50SW5uZXJMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcyxyPXRoaXMudzthP3M9dm9pZCAwPT09dC5uYW1lLmNvbG9yP3IuZ2xvYmFscy5jb2xvcnNbcGFyc2VJbnQoYS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMV06dC5uYW1lLmNvbG9yOnIuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJnQudG90YWwuc2hvdyYmKHM9dC50b3RhbC5jb2xvcik7dmFyIG89ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC1sYWJlbFwiKSxuPXIuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWVcIik7aT0oMCx0LnZhbHVlLmZvcm1hdHRlcikoaSxyKSxhfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LnRvdGFsLmZvcm1hdHRlcnx8KGk9dC50b3RhbC5mb3JtYXR0ZXIocikpO3ZhciBsPWU9PT10LnRvdGFsLmxhYmVsO2U9dC5uYW1lLmZvcm1hdHRlcihlLGwsciksbnVsbCE9PW8mJihvLnRleHRDb250ZW50PWUpLG51bGwhPT1uJiYobi50ZXh0Q29udGVudD1pKSxudWxsIT09byYmKG8uc3R5bGUuZmlsbD1zKX19LHtrZXk6XCJwcmludERhdGFMYWJlbHNJbm5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnZhbHVlXCIpLHM9aS5nbG9iYWxzLnNlcmllc05hbWVzW3BhcnNlSW50KHQucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTFdO2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEmJnRoaXMucHJpbnRJbm5lckxhYmVscyhlLHMsYSx0KTt2YXIgcj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiKTtudWxsIT09ciYmKHIuc3R5bGUub3BhY2l0eT0xKX19LHtrZXk6XCJkcmF3U3Bva2VzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPWkuY29uZmlnLnBsb3RPcHRpb25zLnBvbGFyQXJlYS5zcG9rZXM7aWYoMCE9PXMuc3Ryb2tlV2lkdGgpe2Zvcih2YXIgcj1bXSxvPTM2MC9pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxuPTA7bjxpLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtuKyspci5wdXNoKHgucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLGkuZ2xvYmFscy5yYWRpYWxTaXplLGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlK28qbikpO3IuZm9yRWFjaCgoZnVuY3Rpb24oaSxyKXt2YXIgbz1hLmRyYXdMaW5lKGkueCxpLnksZS5jZW50ZXJYLGUuY2VudGVyWSxBcnJheS5pc0FycmF5KHMuY29ubmVjdG9yQ29sb3JzKT9zLmNvbm5lY3RvckNvbG9yc1tyXTpzLmNvbm5lY3RvckNvbG9ycyk7dC5hZGQobyl9KSl9fX0se2tleTpcInJldmVydERhdGFMYWJlbHNJbm5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLHM9dGhpcy53LHI9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMtZ3JvdXBcIiksbz0hMSxuPXMuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXBpZS1hcmVhXCIpLGw9ZnVuY3Rpb24odCl7dmFyIGk9dC5tYWtlU2xpY2VPdXQscz10LnByaW50TGFiZWw7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChuLChmdW5jdGlvbih0KXtcInRydWVcIj09PXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpwaWVDbGlja2VkXCIpJiYoaSYmKG89ITApLHMmJmEucHJpbnREYXRhTGFiZWxzSW5uZXIodCxlKSl9KSl9O2lmKGwoe21ha2VTbGljZU91dDohMCxwcmludExhYmVsOiExfSksZS50b3RhbC5zaG93JiZzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xKW8mJiFlLnRvdGFsLnNob3dBbHdheXM/bCh7bWFrZVNsaWNlT3V0OiExLHByaW50TGFiZWw6ITB9KTp0aGlzLnByaW50SW5uZXJMYWJlbHMoZSxlLnRvdGFsLmxhYmVsLGUudG90YWwuZm9ybWF0dGVyKHMpKTtlbHNlIGlmKGwoe21ha2VTbGljZU91dDohMSxwcmludExhYmVsOiEwfSksIW8paWYocy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cy5sZW5ndGgmJnMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpaWYocy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGg+MCl7dmFyIGg9cy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXSxjPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KGgpKTt0aGlzLnByaW50RGF0YUxhYmVsc0lubmVyKGMsZSl9ZWxzZSByJiZzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aCYmMD09PXMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0ubGVuZ3RoJiYoci5zdHlsZS5vcGFjaXR5PTApO2Vsc2UgciYmcy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmKHIuc3R5bGUub3BhY2l0eT0wKX19XSksdH0oKSxQdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmNoYXJ0VHlwZT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsdGhpcy5hbmltRHVyPTA7dmFyIGk9dGhpcy53O3RoaXMuZ3JhcGhpY3M9bmV3IG0odGhpcy5jdHgpLHRoaXMubGluZUNvbG9yQXJyPXZvaWQgMCE9PWkuZ2xvYmFscy5zdHJva2UuY29sb3JzP2kuZ2xvYmFscy5zdHJva2UuY29sb3JzOmkuZ2xvYmFscy5jb2xvcnMsdGhpcy5kZWZhdWx0U2l6ZT1pLmdsb2JhbHMuc3ZnSGVpZ2h0PGkuZ2xvYmFscy5zdmdXaWR0aD9pLmdsb2JhbHMuZ3JpZEhlaWdodCsxLjUqaS5nbG9iYWxzLmdvbGRlblBhZGRpbmc6aS5nbG9iYWxzLmdyaWRXaWR0aCx0aGlzLmlzTG9nPWkuY29uZmlnLnlheGlzWzBdLmxvZ2FyaXRobWljLHRoaXMuY29yZVV0aWxzPW5ldyB5KHRoaXMuY3R4KSx0aGlzLm1heFZhbHVlPXRoaXMuaXNMb2c/dGhpcy5jb3JlVXRpbHMuZ2V0TG9nVmFsKGkuZ2xvYmFscy5tYXhZLDApOmkuZ2xvYmFscy5tYXhZLHRoaXMubWluVmFsdWU9dGhpcy5pc0xvZz90aGlzLmNvcmVVdGlscy5nZXRMb2dWYWwodGhpcy53Lmdsb2JhbHMubWluWSwwKTppLmdsb2JhbHMubWluWSx0aGlzLnBvbHlnb25zPWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLHRoaXMuc3Ryb2tlV2lkdGg9aS5jb25maWcuc3Ryb2tlLnNob3c/aS5jb25maWcuc3Ryb2tlLndpZHRoOjAsdGhpcy5zaXplPXRoaXMuZGVmYXVsdFNpemUvMi4xLXRoaXMuc3Ryb2tlV2lkdGgtaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyLGkuY29uZmlnLnhheGlzLmxhYmVscy5zaG93JiYodGhpcy5zaXplPXRoaXMuc2l6ZS1pLmdsb2JhbHMueEF4aXNMYWJlbHNXaWR0aC8xLjc1KSx2b2lkIDAhPT1pLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5zaXplJiYodGhpcy5zaXplPWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnNpemUpLHRoaXMuZGF0YVJhZGl1c09mUGVyY2VudD1bXSx0aGlzLmRhdGFSYWRpdXM9W10sdGhpcy5hbmdsZUFycj1bXSx0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3M9W119cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLGE9dGhpcy53LHM9bmV3IFIodGhpcy5jdHgpLHI9W10sbz1uZXcgTyh0aGlzLmN0eCk7dC5sZW5ndGgmJih0aGlzLmRhdGFQb2ludHNMZW49dFthLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoKSx0aGlzLmRpc0FuZ2xlPTIqTWF0aC5QSS90aGlzLmRhdGFQb2ludHNMZW47dmFyIG49YS5nbG9iYWxzLmdyaWRXaWR0aC8yLGw9YS5nbG9iYWxzLmdyaWRIZWlnaHQvMixoPW4rYS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIub2Zmc2V0WCxjPWwrYS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIub2Zmc2V0WSxkPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQoaHx8MCxcIiwgXCIpLmNvbmNhdChjfHwwLFwiKVwiKX0pLGc9W10sdT1udWxsLHA9bnVsbDtpZih0aGlzLnlheGlzTGFiZWxzPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpc1wifSksdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3ZhciBsPXQubGVuZ3RoPT09YS5nbG9iYWxzLmRhdGFQb2ludHMsaD1pLmdyYXBoaWNzLmdyb3VwKCkuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLFwiZGF0YTpsb25nZXN0U2VyaWVzXCI6bCxzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1tuXSkscmVsOm4rMSxcImRhdGE6cmVhbEluZGV4XCI6bn0pO2kuZGF0YVJhZGl1c09mUGVyY2VudFtuXT1bXSxpLmRhdGFSYWRpdXNbbl09W10saS5hbmdsZUFycltuXT1bXSx0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGE9TWF0aC5hYnMoaS5tYXhWYWx1ZS1pLm1pblZhbHVlKTt0Kz1NYXRoLmFicyhpLm1pblZhbHVlKSxpLmlzTG9nJiYodD1pLmNvcmVVdGlscy5nZXRMb2dWYWwodCwwKSksaS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dW2VdPXQvYSxpLmRhdGFSYWRpdXNbbl1bZV09aS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dW2VdKmkuc2l6ZSxpLmFuZ2xlQXJyW25dW2VdPWUqaS5kaXNBbmdsZX0pKSxnPWkuZ2V0RGF0YVBvaW50c1BvcyhpLmRhdGFSYWRpdXNbbl0saS5hbmdsZUFycltuXSk7dmFyIGM9aS5jcmVhdGVQYXRocyhnLHt4OjAseTowfSk7dT1pLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCBhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCJ9KSxwPWkuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOm59KSxhLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOnUubm9kZSxpbmRleDpufSk7dmFyIGQ9e2k6bixyZWFsSW5kZXg6bixhbmltYXRpb25EZWxheTpuLGluaXRpYWxTcGVlZDphLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDphLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1yYWRhclwiLHNob3VsZENsaXBUb0dyaWQ6ITEsYmluZEV2ZW50c09uUGF0aHM6ITEsc3Ryb2tlOmEuZ2xvYmFscy5zdHJva2UuY29sb3JzW25dLHN0cm9rZUxpbmVDYXA6YS5jb25maWcuc3Ryb2tlLmxpbmVDYXB9LGY9bnVsbDthLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCYmKGY9aS5nZXRQcmV2aW91c1BhdGgobikpO2Zvcih2YXIgYj0wO2I8Yy5saW5lUGF0aHNUby5sZW5ndGg7YisrKXt2YXIgbT1pLmdyYXBoaWNzLnJlbmRlclBhdGhzKGUoZSh7fSxkKSx7fSx7cGF0aEZyb206bnVsbD09PWY/Yy5saW5lUGF0aHNGcm9tW2JdOmYscGF0aFRvOmMubGluZVBhdGhzVG9bYl0sc3Ryb2tlV2lkdGg6QXJyYXkuaXNBcnJheShpLnN0cm9rZVdpZHRoKT9pLnN0cm9rZVdpZHRoW25dOmkuc3Ryb2tlV2lkdGgsZmlsbDpcIm5vbmVcIixkcmF3U2hhZG93OiExfSkpO2guYWRkKG0pO3ZhciB5PXMuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpufSksdz1pLmdyYXBoaWNzLnJlbmRlclBhdGhzKGUoZSh7fSxkKSx7fSx7cGF0aEZyb206bnVsbD09PWY/Yy5hcmVhUGF0aHNGcm9tW2JdOmYscGF0aFRvOmMuYXJlYVBhdGhzVG9bYl0sc3Ryb2tlV2lkdGg6MCxmaWxsOnksZHJhd1NoYWRvdzohMX0pKTtpZihhLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBrPW5ldyB2KGkuY3R4KSxBPWEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7ay5kcm9wU2hhZG93KHcsT2JqZWN0LmFzc2lnbih7fSxBLHtub1VzZXJTcGFjZU9uVXNlOiEwfSksbil9aC5hZGQodyl9dC5mb3JFYWNoKChmdW5jdGlvbih0LHMpe3ZhciByPW5ldyBIKGkuY3R4KS5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOlwiYXBleGNoYXJ0cy1tYXJrZXJcIixzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4OnN9KSxsPWkuZ3JhcGhpY3MuZHJhd01hcmtlcihnW3NdLngsZ1tzXS55LHIpO2wuYXR0cihcInJlbFwiLHMpLGwuYXR0cihcImpcIixzKSxsLmF0dHIoXCJpbmRleFwiLG4pLGwubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsci5wU2l6ZSk7dmFyIGM9aS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzXCJ9KTtjJiZjLmFkZChsKSx1LmFkZChjKSxoLmFkZCh1KTt2YXIgZD1hLmNvbmZpZy5kYXRhTGFiZWxzO2lmKGQuZW5hYmxlZCl7dmFyIGY9ZC5mb3JtYXR0ZXIoYS5nbG9iYWxzLnNlcmllc1tuXVtzXSx7c2VyaWVzSW5kZXg6bixkYXRhUG9pbnRJbmRleDpzLHc6YX0pO28ucGxvdERhdGFMYWJlbHNUZXh0KHt4Omdbc10ueCx5Omdbc10ueSx0ZXh0OmYsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGk6bixqOm4scGFyZW50OnAsb2Zmc2V0Q29ycmVjdGlvbjohMSxkYXRhTGFiZWxzQ29uZmlnOmUoe30sZCl9KX1oLmFkZChwKX0pKSxyLnB1c2goaCl9KSksdGhpcy5kcmF3UG9seWdvbnMoe3BhcmVudDpkfSksYS5jb25maWcueGF4aXMubGFiZWxzLnNob3cpe3ZhciBmPXRoaXMuZHJhd1hBeGlzVGV4dHMoKTtkLmFkZChmKX1yZXR1cm4gci5mb3JFYWNoKChmdW5jdGlvbih0KXtkLmFkZCh0KX0pKSxkLmFkZCh0aGlzLnlheGlzTGFiZWxzKSxkfX0se2tleTpcImRyYXdQb2x5Z29uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLGk9dGhpcy53LGE9dC5wYXJlbnQscz1uZXcgQ3QodGhpcy5jdHgpLHI9aS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ucmVzdWx0LnJldmVyc2UoKSxvPXIubGVuZ3RoLG49W10sbD10aGlzLnNpemUvKG8tMSksaD0wO2g8bztoKyspbltoXT1sKmg7bi5yZXZlcnNlKCk7dmFyIGM9W10sZD1bXTtuLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIGE9eC5nZXRQb2x5Z29uUG9zKHQsZS5kYXRhUG9pbnRzTGVuKSxzPVwiXCI7YS5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2lmKDA9PT1pKXt2YXIgcj1lLmdyYXBoaWNzLmRyYXdMaW5lKHQueCx0LnksMCwwLEFycmF5LmlzQXJyYXkoZS5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnMpP2UucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzW2FdOmUucG9seWdvbnMuY29ubmVjdG9yQ29sb3JzKTtkLnB1c2gocil9MD09PWEmJmUueWF4aXNMYWJlbHNUZXh0c1Bvcy5wdXNoKHt4OnQueCx5OnQueX0pLHMrPXQueCtcIixcIit0LnkrXCIgXCJ9KSksYy5wdXNoKHMpfSkpLGMuZm9yRWFjaCgoZnVuY3Rpb24odCxzKXt2YXIgcj1lLnBvbHlnb25zLnN0cm9rZUNvbG9ycyxvPWUucG9seWdvbnMuc3Ryb2tlV2lkdGgsbj1lLmdyYXBoaWNzLmRyYXdQb2x5Z29uKHQsQXJyYXkuaXNBcnJheShyKT9yW3NdOnIsQXJyYXkuaXNBcnJheShvKT9vW3NdOm8saS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnNbc10pO2EuYWRkKG4pfSkpLGQuZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5hZGQodCl9KSksaS5jb25maWcueWF4aXNbMF0uc2hvdyYmdGhpcy55YXhpc0xhYmVsc1RleHRzUG9zLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIGE9cy5kcmF3WUF4aXNUZXh0cyh0LngsdC55LGkscltpXSk7ZS55YXhpc0xhYmVscy5hZGQoYSl9KSl9fSx7a2V5OlwiZHJhd1hBeGlzVGV4dHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT10aGlzLncsYT1pLmNvbmZpZy54YXhpcy5sYWJlbHMscz10aGlzLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXNcIn0pLHI9eC5nZXRQb2x5Z29uUG9zKHRoaXMuc2l6ZSx0aGlzLmRhdGFQb2ludHNMZW4pO3JldHVybiBpLmdsb2JhbHMubGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKG8sbil7dmFyIGw9aS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcixoPW5ldyBPKHQuY3R4KTtpZihyW25dKXt2YXIgYz10LmdldFRleHRQb3MocltuXSx0LnNpemUpLGQ9bChvLHtzZXJpZXNJbmRleDotMSxkYXRhUG9pbnRJbmRleDpuLHc6aX0pO2gucGxvdERhdGFMYWJlbHNUZXh0KHt4OmMubmV3WCx5OmMubmV3WSx0ZXh0OmQsdGV4dEFuY2hvcjpjLnRleHRBbmNob3IsaTpuLGo6bixwYXJlbnQ6cyxjb2xvcjpBcnJheS5pc0FycmF5KGEuc3R5bGUuY29sb3JzKSYmYS5zdHlsZS5jb2xvcnNbbl0/YS5zdHlsZS5jb2xvcnNbbl06XCIjYThhOGE4XCIsZGF0YUxhYmVsc0NvbmZpZzplKHt0ZXh0QW5jaG9yOmMudGV4dEFuY2hvcixkcm9wU2hhZG93OntlbmFibGVkOiExfX0sYSksb2Zmc2V0Q29ycmVjdGlvbjohMX0pfX0pKSxzfX0se2tleTpcImNyZWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9W10scz1bXSxyPVtdLG89W107aWYodC5sZW5ndGgpe3M9W3RoaXMuZ3JhcGhpY3MubW92ZShlLngsZS55KV0sbz1bdGhpcy5ncmFwaGljcy5tb3ZlKGUueCxlLnkpXTt2YXIgbj10aGlzLmdyYXBoaWNzLm1vdmUodFswXS54LHRbMF0ueSksbD10aGlzLmdyYXBoaWNzLm1vdmUodFswXS54LHRbMF0ueSk7dC5mb3JFYWNoKChmdW5jdGlvbihlLGEpe24rPWkuZ3JhcGhpY3MubGluZShlLngsZS55KSxsKz1pLmdyYXBoaWNzLmxpbmUoZS54LGUueSksYT09PXQubGVuZ3RoLTEmJihuKz1cIlpcIixsKz1cIlpcIil9KSksYS5wdXNoKG4pLHIucHVzaChsKX1yZXR1cm57bGluZVBhdGhzRnJvbTpzLGxpbmVQYXRoc1RvOmEsYXJlYVBhdGhzRnJvbTpvLGFyZWFQYXRoc1RvOnJ9fX0se2tleTpcImdldFRleHRQb3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPVwibWlkZGxlXCIsYT10Lngscz10Lnk7cmV0dXJuIE1hdGguYWJzKHQueCk+PTEwP3QueD4wPyhpPVwic3RhcnRcIixhKz0xMCk6dC54PDAmJihpPVwiZW5kXCIsYS09MTApOmk9XCJtaWRkbGVcIixNYXRoLmFicyh0LnkpPj1lLTEwJiYodC55PDA/cy09MTA6dC55PjAmJihzKz0xMCkpLHt0ZXh0QW5jaG9yOmksbmV3WDphLG5ld1k6c319fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPW51bGwsYT0wO2E8ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO2ErKyl7dmFyIHM9ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV07cy5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQocy5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQodCwxMCkmJnZvaWQgMCE9PWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdLnBhdGhzWzBdJiYoaT1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXS5wYXRoc1swXS5kKX1yZXR1cm4gaX19LHtrZXk6XCJnZXREYXRhUG9pbnRzUG9zXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dGhpcy5kYXRhUG9pbnRzTGVuO3Q9dHx8W10sZT1lfHxbXTtmb3IodmFyIGE9W10scz0wO3M8aTtzKyspe3ZhciByPXt9O3IueD10W3NdKk1hdGguc2luKGVbc10pLHIueT0tdFtzXSpNYXRoLmNvcyhlW3NdKSxhLnB1c2gocil9cmV0dXJuIGF9fV0pLHR9KCksSXQ9ZnVuY3Rpb24odCl7bihpLEx0KTt2YXIgZT1kKGkpO2Z1bmN0aW9uIGkodCl7dmFyIHM7YSh0aGlzLGkpLChzPWUuY2FsbCh0aGlzLHQpKS5jdHg9dCxzLnc9dC53LHMuYW5pbUJlZ2luQXJyPVswXSxzLmFuaW1EdXI9MDt2YXIgcj1zLnc7cmV0dXJuIHMuc3RhcnRBbmdsZT1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSxzLmVuZEFuZ2xlPXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5lbmRBbmdsZSxzLnRvdGFsQW5nbGU9TWF0aC5hYnMoci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlKSxzLnRyYWNrU3RhcnRBbmdsZT1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suc3RhcnRBbmdsZSxzLnRyYWNrRW5kQW5nbGU9ci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLmVuZEFuZ2xlLHMuZG9udXREYXRhTGFiZWxzPXMudy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmRhdGFMYWJlbHMscy5yYWRpYWxEYXRhTGFiZWxzPXMuZG9udXREYXRhTGFiZWxzLHMudHJhY2tTdGFydEFuZ2xlfHwocy50cmFja1N0YXJ0QW5nbGU9cy5zdGFydEFuZ2xlKSxzLnRyYWNrRW5kQW5nbGV8fChzLnRyYWNrRW5kQW5nbGU9cy5lbmRBbmdsZSksMzYwPT09cy5lbmRBbmdsZSYmKHMuZW5kQW5nbGU9MzU5Ljk5KSxzLm1hcmdpbj1wYXJzZUludChyLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2subWFyZ2luLDEwKSxzfXJldHVybiByKGksW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhclwifSk7aWYoZS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gYTt2YXIgcz1pLmdyb3VwKCkscj10aGlzLmRlZmF1bHRTaXplLzIsbz1lLmdsb2JhbHMuZ3JpZFdpZHRoLzIsbj10aGlzLmRlZmF1bHRTaXplLzIuMDU7ZS5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWR8fChuPW4tZS5jb25maWcuc3Ryb2tlLndpZHRoLWUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuYmx1cik7dmFyIGw9ZS5nbG9iYWxzLmZpbGwuY29sb3JzO2lmKGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zaG93KXt2YXIgaD10aGlzLmRyYXdUcmFja3Moe3NpemU6bixjZW50ZXJYOm8sY2VudGVyWTpyLGNvbG9yQXJyOmwsc2VyaWVzOnR9KTtzLmFkZChoKX12YXIgYz10aGlzLmRyYXdBcmNzKHtzaXplOm4sY2VudGVyWDpvLGNlbnRlclk6cixjb2xvckFycjpsLHNlcmllczp0fSksZD0zNjA7ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGU8MCYmKGQ9dGhpcy50b3RhbEFuZ2xlKTt2YXIgZz0oMzYwLWQpLzM2MDtpZihlLmdsb2JhbHMucmFkaWFsU2l6ZT1uLW4qZyx0aGlzLnJhZGlhbERhdGFMYWJlbHMudmFsdWUuc2hvdyl7dmFyIHU9TWF0aC5tYXgodGhpcy5yYWRpYWxEYXRhTGFiZWxzLnZhbHVlLm9mZnNldFksdGhpcy5yYWRpYWxEYXRhTGFiZWxzLm5hbWUub2Zmc2V0WSk7ZS5nbG9iYWxzLnJhZGlhbFNpemUrPXUqZ31yZXR1cm4gcy5hZGQoYy5nKSxcImZyb250XCI9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnBvc2l0aW9uJiYoYy5nLmFkZChjLmVsSG9sbG93KSxjLmRhdGFMYWJlbHMmJmMuZy5hZGQoYy5kYXRhTGFiZWxzKSksYS5hZGQocyksYX19LHtrZXk6XCJkcmF3VHJhY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXRyYWNrc1wifSkscz1uZXcgdih0aGlzLmN0eCkscj1uZXcgUih0aGlzLmN0eCksbz10aGlzLmdldFN0cm9rZVdpZHRoKHQpO3Quc2l6ZT10LnNpemUtby8yO2Zvcih2YXIgbj0wO248dC5zZXJpZXMubGVuZ3RoO24rKyl7dmFyIGw9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci10cmFjayBhcGV4Y2hhcnRzLXRyYWNrXCJ9KTthLmFkZChsKSxsLmF0dHIoe3JlbDpuKzF9KSx0LnNpemU9dC5zaXplLW8tdGhpcy5tYXJnaW47dmFyIGg9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLGM9ci5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOjAsc2l6ZTp0LnNpemUsZmlsbENvbG9yczpBcnJheS5pc0FycmF5KGguYmFja2dyb3VuZCk/aC5iYWNrZ3JvdW5kW25dOmguYmFja2dyb3VuZCxzb2xpZDohMH0pLGQ9dGhpcy50cmFja1N0YXJ0QW5nbGUsZz10aGlzLnRyYWNrRW5kQW5nbGU7TWF0aC5hYnMoZykrTWF0aC5hYnMoZCk+PTM2MCYmKGc9MzYwLU1hdGguYWJzKHRoaXMuc3RhcnRBbmdsZSktLjEpO3ZhciB1PWkuZHJhd1BhdGgoe2Q6XCJcIixzdHJva2U6YyxzdHJva2VXaWR0aDpvKnBhcnNlSW50KGguc3Ryb2tlV2lkdGgsMTApLzEwMCxmaWxsOlwibm9uZVwiLHN0cm9rZU9wYWNpdHk6aC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1hcmVhXCJ9KTtpZihoLmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIHA9aC5kcm9wU2hhZG93O3MuZHJvcFNoYWRvdyh1LHApfWwuYWRkKHUpLHUuYXR0cihcImlkXCIsXCJhcGV4Y2hhcnRzLXJhZGlhbGJhclRyYWNrLVwiK24pLHRoaXMuYW5pbWF0ZVBhdGhzKHUse2NlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGVuZEFuZ2xlOmcsc3RhcnRBbmdsZTpkLHNpemU6dC5zaXplLGk6bix0b3RhbEl0ZW1zOjIsYW5pbUJlZ2luQXJyOjAsZHVyOjAsaXNUcmFjazohMCxlYXNpbmc6ZS5nbG9iYWxzLmVhc2luZ30pfXJldHVybiBhfX0se2tleTpcImRyYXdBcmNzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9bmV3IFIodGhpcy5jdHgpLHM9bmV3IHYodGhpcy5jdHgpLHI9aS5ncm91cCgpLG89dGhpcy5nZXRTdHJva2VXaWR0aCh0KTt0LnNpemU9dC5zaXplLW8vMjt2YXIgbj1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmJhY2tncm91bmQsbD10LnNpemUtbyp0LnNlcmllcy5sZW5ndGgtdGhpcy5tYXJnaW4qdC5zZXJpZXMubGVuZ3RoLW8qcGFyc2VJbnQoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnN0cm9rZVdpZHRoLDEwKS8xMDAvMixoPWwtZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5tYXJnaW47dm9pZCAwIT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZSYmKG49dGhpcy5kcmF3SG9sbG93SW1hZ2UodCxyLGwsbikpO3ZhciBjPXRoaXMuZHJhd0hvbGxvdyh7c2l6ZTpoLGNlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGZpbGw6bnx8XCJ0cmFuc3BhcmVudFwifSk7aWYoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBkPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuZHJvcFNoYWRvdztzLmRyb3BTaGFkb3coYyxkKX12YXIgZz0xOyF0aGlzLnJhZGlhbERhdGFMYWJlbHMudG90YWwuc2hvdyYmZS5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmKGc9MCk7dmFyIHU9bnVsbDt0aGlzLnJhZGlhbERhdGFMYWJlbHMuc2hvdyYmKHU9dGhpcy5yZW5kZXJJbm5lckRhdGFMYWJlbHModGhpcy5yYWRpYWxEYXRhTGFiZWxzLHtob2xsb3dTaXplOmwsY2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksb3BhY2l0eTpnfSkpLFwiYmFja1wiPT09ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5wb3NpdGlvbiYmKHIuYWRkKGMpLHUmJnIuYWRkKHUpKTt2YXIgcD0hMTtlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaW52ZXJzZU9yZGVyJiYocD0hMCk7Zm9yKHZhciBmPXA/dC5zZXJpZXMubGVuZ3RoLTE6MDtwP2Y+PTA6Zjx0LnNlcmllcy5sZW5ndGg7cD9mLS06ZisrKXt2YXIgYj1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtcmFkaWFsLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoZS5nbG9iYWxzLnNlcmllc05hbWVzW2ZdKX0pO3IuYWRkKGIpLGIuYXR0cih7cmVsOmYrMSxcImRhdGE6cmVhbEluZGV4XCI6Zn0pLHRoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKGIsZiksdC5zaXplPXQuc2l6ZS1vLXRoaXMubWFyZ2luO3ZhciB5PWEuZmlsbFBhdGgoe3Nlcmllc051bWJlcjpmLHNpemU6dC5zaXplLHZhbHVlOnQuc2VyaWVzW2ZdfSksdz10aGlzLnN0YXJ0QW5nbGUsaz12b2lkIDAsQT14Lm5lZ1RvWmVybyh0LnNlcmllc1tmXT4xMDA/MTAwOnQuc2VyaWVzW2ZdKS8xMDAsUz1NYXRoLnJvdW5kKHRoaXMudG90YWxBbmdsZSpBKSt0aGlzLnN0YXJ0QW5nbGUsQz12b2lkIDA7ZS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiYoaz10aGlzLnN0YXJ0QW5nbGUsQz1NYXRoLnJvdW5kKHRoaXMudG90YWxBbmdsZSp4Lm5lZ1RvWmVybyhlLmdsb2JhbHMucHJldmlvdXNQYXRoc1tmXSkvMTAwKStrKSxNYXRoLmFicyhTKStNYXRoLmFicyh3KT49MzYwJiYoUy09LjAxKSxNYXRoLmFicyhDKStNYXRoLmFicyhrKT49MzYwJiYoQy09LjAxKTt2YXIgTD1TLXcsUD1BcnJheS5pc0FycmF5KGUuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXkpP2UuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXlbZl06ZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSxJPWkuZHJhd1BhdGgoe2Q6XCJcIixzdHJva2U6eSxzdHJva2VXaWR0aDpvLGZpbGw6XCJub25lXCIsZmlsbE9wYWNpdHk6ZS5jb25maWcuZmlsbC5vcGFjaXR5LGNsYXNzZXM6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1hcmVhIGFwZXhjaGFydHMtcmFkaWFsYmFyLXNsaWNlLVwiK2Ysc3Ryb2tlRGFzaEFycmF5OlB9KTtpZihtLnNldEF0dHJzKEkubm9kZSx7XCJkYXRhOmFuZ2xlXCI6TCxcImRhdGE6dmFsdWVcIjp0LnNlcmllc1tmXX0pLGUuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIE09ZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztzLmRyb3BTaGFkb3coSSxNLGYpfXMuc2V0U2VsZWN0aW9uRmlsdGVyKEksMCxmKSx0aGlzLmFkZExpc3RlbmVycyhJLHRoaXMucmFkaWFsRGF0YUxhYmVscyksYi5hZGQoSSksSS5hdHRyKHtpbmRleDowLGo6Zn0pO3ZhciBUPTA7IXRoaXMuaW5pdGlhbEFuaW18fGUuZ2xvYmFscy5yZXNpemVkfHxlLmdsb2JhbHMuZGF0YUNoYW5nZWR8fChUPWUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLGUuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKFQ9ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkKSx0aGlzLmFuaW1EdXI9VC8oMS4yKnQuc2VyaWVzLmxlbmd0aCkrdGhpcy5hbmltRHVyLHRoaXMuYW5pbUJlZ2luQXJyLnB1c2godGhpcy5hbmltRHVyKSx0aGlzLmFuaW1hdGVQYXRocyhJLHtjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxlbmRBbmdsZTpTLHN0YXJ0QW5nbGU6dyxwcmV2RW5kQW5nbGU6QyxwcmV2U3RhcnRBbmdsZTprLHNpemU6dC5zaXplLGk6Zix0b3RhbEl0ZW1zOjIsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLGR1cjpULHNob3VsZFNldFByZXZQYXRoczohMCxlYXNpbmc6ZS5nbG9iYWxzLmVhc2luZ30pfXJldHVybntnOnIsZWxIb2xsb3c6YyxkYXRhTGFiZWxzOnV9fX0se2tleTpcImRyYXdIb2xsb3dcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgbSh0aGlzLmN0eCkuZHJhd0NpcmNsZSgyKnQuc2l6ZSk7cmV0dXJuIGUuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGlhbGJhci1ob2xsb3dcIixjeDp0LmNlbnRlclgsY3k6dC5jZW50ZXJZLHI6dC5zaXplLGZpbGw6dC5maWxsfSksZX19LHtrZXk6XCJkcmF3SG9sbG93SW1hZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj1uZXcgUih0aGlzLmN0eCksbz14LnJhbmRvbUlkKCksbj1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlO2lmKHMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VDbGlwcGVkKXIuY2xpcHBlZEltZ0FyZWEoe3dpZHRoOmksaGVpZ2h0OmksaW1hZ2U6bixwYXR0ZXJuSUQ6XCJwYXR0ZXJuXCIuY29uY2F0KHMuZ2xvYmFscy5jdWlkKS5jb25jYXQobyl9KSxhPVwidXJsKCNwYXR0ZXJuXCIuY29uY2F0KHMuZ2xvYmFscy5jdWlkKS5jb25jYXQobyxcIilcIik7ZWxzZXt2YXIgbD1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlV2lkdGgsaD1zLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlSGVpZ2h0O2lmKHZvaWQgMD09PWwmJnZvaWQgMD09PWgpe3ZhciBjPXMuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UobikubG9hZGVkKChmdW5jdGlvbihlKXt0aGlzLm1vdmUodC5jZW50ZXJYLWUud2lkdGgvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WCx0LmNlbnRlclktZS5oZWlnaHQvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WSl9KSk7ZS5hZGQoYyl9ZWxzZXt2YXIgZD1zLmdsb2JhbHMuZG9tLlBhcGVyLmltYWdlKG4pLmxvYWRlZCgoZnVuY3Rpb24oZSl7dGhpcy5tb3ZlKHQuY2VudGVyWC1sLzIrcy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZU9mZnNldFgsdC5jZW50ZXJZLWgvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WSksdGhpcy5zaXplKGwsaCl9KSk7ZS5hZGQoZCl9fXJldHVybiBhfX0se2tleTpcImdldFN0cm9rZVdpZHRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybiB0LnNpemUqKDEwMC1wYXJzZUludChlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnNpemUsMTApKS8xMDAvKHQuc2VyaWVzLmxlbmd0aCsxKS10aGlzLm1hcmdpbn19XSksaX0oKSxNdD1mdW5jdGlvbih0KXtuKHMseXQpO3ZhciBpPWQocyk7ZnVuY3Rpb24gcygpe3JldHVybiBhKHRoaXMscyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHIocyxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMudyxzPW5ldyBtKHRoaXMuY3R4KTt0aGlzLnJhbmdlQmFyT3B0aW9ucz10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLnJhbmdlQmFyLHRoaXMuc2VyaWVzPXQsdGhpcy5zZXJpZXNSYW5nZVN0YXJ0PWEuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0LHRoaXMuc2VyaWVzUmFuZ2VFbmQ9YS5nbG9iYWxzLnNlcmllc1JhbmdlRW5kLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpO2Zvcih2YXIgcj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGwsaCxjLGQsZz12b2lkIDAsdT12b2lkIDAscD1hLmdsb2JhbHMuY29tYm9DaGFydHM/aVtuXTpuLGY9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW3BdKSxyZWw6bisxLFwiZGF0YTpyZWFsSW5kZXhcIjpwfSk7dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoZixwKSx0W25dLmxlbmd0aD4wJiYodGhpcy52aXNpYmxlST10aGlzLnZpc2libGVJKzEpO3ZhciBiPTAsdj0wO3RoaXMueVJhdGlvLmxlbmd0aD4xJiYodGhpcy55YXhpc0luZGV4PXApO3ZhciB5PXRoaXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7dT15LnksZD15Lnplcm9XLGc9eS54LHY9eS5iYXJXaWR0aCxiPXkuYmFySGVpZ2h0LGw9eS54RGl2aXNpb24saD15LnlEaXZpc2lvbixjPXkuemVyb0g7Zm9yKHZhciB3PXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIsXCJkYXRhOnJlYWxJbmRleFwiOnB9KSxrPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYW5nZWJhci1nb2Fscy1tYXJrZXJzXCJ9KSxBPTA7QTxhLmdsb2JhbHMuZGF0YVBvaW50cztBKyspe3ZhciBTLEM9dGhpcy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKG4sQSxwKSxMPXRoaXMuc2VyaWVzUmFuZ2VTdGFydFtuXVtBXSxQPXRoaXMuc2VyaWVzUmFuZ2VFbmRbbl1bQV0sST1udWxsLE09bnVsbCxUPW51bGwsej17eDpnLHk6dSxzdHJva2VXaWR0aDpDLGVsU2VyaWVzOmZ9LFg9dGhpcy5zZXJpZXNMZW47aWYoYS5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzJiYoWD0xKSx2b2lkIDA9PT1hLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtBXSlicmVhaztpZih0aGlzLmlzSG9yaXpvbnRhbCl7VD11K2IqdGhpcy52aXNpYmxlSTt2YXIgRT0oaC1iKlgpLzI7aWYoYS5jb25maWcuc2VyaWVzW25dLmRhdGFbQV0ueCl7dmFyIFk9dGhpcy5kZXRlY3RPdmVybGFwcGluZ0JhcnMoe2k6bixqOkEsYmFyWVBvc2l0aW9uOlQsc3J0eTpFLGJhckhlaWdodDpiLHlEaXZpc2lvbjpoLGluaXRQb3NpdGlvbnM6eX0pO2I9WS5iYXJIZWlnaHQsVD1ZLmJhcllQb3NpdGlvbn12PShJPXRoaXMuZHJhd1JhbmdlQmFyUGF0aHMoZSh7aW5kZXhlczp7aTpuLGo6QSxyZWFsSW5kZXg6cH0sYmFySGVpZ2h0OmIsYmFyWVBvc2l0aW9uOlQsemVyb1c6ZCx5RGl2aXNpb246aCx5MTpMLHkyOlB9LHopKSkuYmFyV2lkdGh9ZWxzZXthLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGc9KGEuZ2xvYmFscy5zZXJpZXNYW25dW0FdLWEuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpby12LzIpLE09Zyt2KnRoaXMudmlzaWJsZUk7dmFyIEY9KGwtdipYKS8yO2lmKGEuY29uZmlnLnNlcmllc1tuXS5kYXRhW0FdLngpe3ZhciBSPXRoaXMuZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzKHtpOm4sajpBLGJhclhQb3NpdGlvbjpNLHNydHg6RixiYXJXaWR0aDp2LHhEaXZpc2lvbjpsLGluaXRQb3NpdGlvbnM6eX0pO3Y9Ui5iYXJXaWR0aCxNPVIuYmFyWFBvc2l0aW9ufWI9KEk9dGhpcy5kcmF3UmFuZ2VDb2x1bW5QYXRocyhlKHtpbmRleGVzOntpOm4sajpBLHJlYWxJbmRleDpwfSxiYXJXaWR0aDp2LGJhclhQb3NpdGlvbjpNLHplcm9IOmMseERpdmlzaW9uOmx9LHopKSkuYmFySGVpZ2h0fXZhciBIPXRoaXMuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpJLmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246VCxnb2FsWDpJLmdvYWxYLGdvYWxZOkkuZ29hbFksYmFySGVpZ2h0OmIsYmFyV2lkdGg6dn0pO0gmJmsuYWRkKEgpLHU9SS55LGc9SS54O3ZhciBEPXRoaXMuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKHQsbixBLHApLE89YS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbcF07dGhpcy5yZW5kZXJTZXJpZXMoKG8oUz17cmVhbEluZGV4OnAscGF0aEZpbGw6RCxsaW5lRmlsbDpPLGo6QSxpOm4seDpnLHk6dSx5MTpMLHkyOlAscGF0aEZyb206SS5wYXRoRnJvbSxwYXRoVG86SS5wYXRoVG8sc3Ryb2tlV2lkdGg6QyxlbFNlcmllczpmLHNlcmllczp0LGJhckhlaWdodDpiLGJhcldpZHRoOnYsYmFyWFBvc2l0aW9uOk0sYmFyWVBvc2l0aW9uOlR9LFwiYmFyV2lkdGhcIix2KSxvKFMsXCJlbERhdGFMYWJlbHNXcmFwXCIsdyksbyhTLFwiZWxHb2Fsc01hcmtlcnNcIixrKSxvKFMsXCJ2aXNpYmxlU2VyaWVzXCIsdGhpcy52aXNpYmxlSSksbyhTLFwidHlwZVwiLFwicmFuZ2ViYXJcIiksUykpfXIuYWRkKGYpfXJldHVybiByfX0se2tleTpcImRldGVjdE92ZXJsYXBwaW5nQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXQuYmFyWVBvc2l0aW9uLHM9dC5iYXJYUG9zaXRpb24scj10LnNydHksbz10LnNydHgsbj10LmJhckhlaWdodCxsPXQuYmFyV2lkdGgsaD10LnlEaXZpc2lvbixjPXQueERpdmlzaW9uLGQ9dC5pbml0UG9zaXRpb25zLGc9dGhpcy53LHU9W10scD1nLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS5yYW5nZU5hbWUsZj1nLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS54LHg9QXJyYXkuaXNBcnJheShmKT9mLmpvaW4oXCIgXCIpOmYsYj1nLmdsb2JhbHMubGFiZWxzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5qb2luKFwiIFwiKTp0fSkpLmluZGV4T2YoeCksdj1nLmdsb2JhbHMuc2VyaWVzUmFuZ2VbZV0uZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC54PT09eCYmdC5vdmVybGFwcy5sZW5ndGg+MH0pKTtyZXR1cm4gdGhpcy5pc0hvcml6b250YWw/KGE9Zy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzP3IraCpiOnIrbip0aGlzLnZpc2libGVJK2gqYix2Pi0xJiYhZy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyT3ZlcmxhcCYmKHU9Zy5nbG9iYWxzLnNlcmllc1JhbmdlW2VdW3ZdLm92ZXJsYXBzKS5pbmRleE9mKHApPi0xJiYoYT0obj1kLmJhckhlaWdodC91Lmxlbmd0aCkqdGhpcy52aXNpYmxlSStoKigxMDAtcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmJhckhlaWdodCwxMCkpLzEwMC8yK24qKHRoaXMudmlzaWJsZUkrdS5pbmRleE9mKHApKStoKmIpKTooYj4tMSYmKHM9Zy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzP28rYypiOm8rbCp0aGlzLnZpc2libGVJK2MqYiksdj4tMSYmIWcuY29uZmlnLnBsb3RPcHRpb25zLmJhci5yYW5nZUJhck92ZXJsYXAmJih1PWcuZ2xvYmFscy5zZXJpZXNSYW5nZVtlXVt2XS5vdmVybGFwcykuaW5kZXhPZihwKT4tMSYmKHM9KGw9ZC5iYXJXaWR0aC91Lmxlbmd0aCkqdGhpcy52aXNpYmxlSStjKigxMDAtcGFyc2VJbnQodGhpcy5iYXJPcHRpb25zLmJhcldpZHRoLDEwKSkvMTAwLzIrbCoodGhpcy52aXNpYmxlSSt1LmluZGV4T2YocCkpK2MqYikpLHtiYXJZUG9zaXRpb246YSxiYXJYUG9zaXRpb246cyxiYXJIZWlnaHQ6bixiYXJXaWR0aDpsfX19LHtrZXk6XCJkcmF3UmFuZ2VDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueCxhPXQueERpdmlzaW9uLHM9dC5iYXJXaWR0aCxyPXQuYmFyWFBvc2l0aW9uLG89dC56ZXJvSCxuPXRoaXMudyxsPWUuaSxoPWUuaixjPXRoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0sZD1lLnJlYWxJbmRleCxnPXRoaXMuZ2V0UmFuZ2VWYWx1ZShkLGgpLHU9TWF0aC5taW4oZy5zdGFydCxnLmVuZCkscD1NYXRoLm1heChnLnN0YXJ0LGcuZW5kKTt2b2lkIDA9PT10aGlzLnNlcmllc1tsXVtoXXx8bnVsbD09PXRoaXMuc2VyaWVzW2xdW2hdP3U9bzoodT1vLXUvYyxwPW8tcC9jKTt2YXIgZj1NYXRoLmFicyhwLXUpLHg9dGhpcy5iYXJIZWxwZXJzLmdldENvbHVtblBhdGhzKHtiYXJYUG9zaXRpb246cixiYXJXaWR0aDpzLHkxOnUseTI6cCxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllc1JhbmdlRW5kLHJlYWxJbmRleDplLnJlYWxJbmRleCxpOmQsajpoLHc6bn0pO2lmKG4uZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgYj10aGlzLmdldEJhclhGb3JOdW1lcmljWEF4aXMoe3g6aSxqOmgscmVhbEluZGV4OmQsYmFyV2lkdGg6c30pO2k9Yi54LHI9Yi5iYXJYUG9zaXRpb259ZWxzZSBpKz1hO3JldHVybntwYXRoVG86eC5wYXRoVG8scGF0aEZyb206eC5wYXRoRnJvbSxiYXJIZWlnaHQ6Zix4OmkseTpwLGdvYWxZOnRoaXMuYmFySGVscGVycy5nZXRHb2FsVmFsdWVzKFwieVwiLG51bGwsbyxsLGgpLGJhclhQb3NpdGlvbjpyfX19LHtrZXk6XCJkcmF3UmFuZ2VCYXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueSxhPXQueTEscz10LnkyLHI9dC55RGl2aXNpb24sbz10LmJhckhlaWdodCxuPXQuYmFyWVBvc2l0aW9uLGw9dC56ZXJvVyxoPXRoaXMudyxjPWwrYS90aGlzLmludmVydGVkWVJhdGlvLGQ9bCtzL3RoaXMuaW52ZXJ0ZWRZUmF0aW8sZz1NYXRoLmFicyhkLWMpLHU9dGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHtiYXJZUG9zaXRpb246bixiYXJIZWlnaHQ6byx4MTpjLHgyOmQsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzZXJpZXM6dGhpcy5zZXJpZXNSYW5nZUVuZCxpOmUucmVhbEluZGV4LHJlYWxJbmRleDplLnJlYWxJbmRleCxqOmUuaix3Omh9KTtyZXR1cm4gaC5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1yKSx7cGF0aFRvOnUucGF0aFRvLHBhdGhGcm9tOnUucGF0aEZyb20sYmFyV2lkdGg6Zyx4OmQsZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIsbCxudWxsLGUucmVhbEluZGV4LGUuaikseTppfX19LHtrZXk6XCJnZXRSYW5nZVZhbHVlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJue3N0YXJ0OmkuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3RdW2VdLGVuZDppLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbdF1bZV19fX1dKSxzfSgpLFR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmxpbmVDdHg9ZX1yZXR1cm4gcih0LFt7a2V5Olwic2FtZVZhbHVlU2VyaWVzRml4XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoKFwiZ3JhZGllbnRcIj09PWkuY29uZmlnLmZpbGwudHlwZXx8XCJncmFkaWVudFwiPT09aS5jb25maWcuZmlsbC50eXBlW3RdKSYmbmV3IHkodGhpcy5saW5lQ3R4LmN0eCxpKS5zZXJpZXNIYXZlU2FtZVZhbHVlcyh0KSl7dmFyIGE9ZVt0XS5zbGljZSgpO2FbYS5sZW5ndGgtMV09YVthLmxlbmd0aC0xXSsxZS02LGVbdF09YX1yZXR1cm4gZX19LHtrZXk6XCJjYWxjdWxhdGVQb2ludHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNlcmllcyxpPXQucmVhbEluZGV4LGE9dC54LHM9dC55LHI9dC5pLG89dC5qLG49dC5wcmV2WSxsPXRoaXMudyxoPVtdLGM9W107aWYoMD09PW8pe3ZhciBkPXRoaXMubGluZUN0eC5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WDtsLmdsb2JhbHMuaXNYTnVtZXJpYyYmKGQ9KGwuZ2xvYmFscy5zZXJpZXNYW2ldWzBdLWwuZ2xvYmFscy5taW5YKS90aGlzLmxpbmVDdHgueFJhdGlvK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksaC5wdXNoKGQpLGMucHVzaCh4LmlzTnVtYmVyKGVbcl1bMF0pP24rbC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpLGgucHVzaChhK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksYy5wdXNoKHguaXNOdW1iZXIoZVtyXVtvKzFdKT9zK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKX1lbHNlIGgucHVzaChhK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WCksYy5wdXNoKHguaXNOdW1iZXIoZVtyXVtvKzFdKT9zK2wuY29uZmlnLm1hcmtlcnMub2Zmc2V0WTpudWxsKTtyZXR1cm57eDpoLHk6Y319fSx7a2V5OlwiY2hlY2tQcmV2aW91c1BhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQucGF0aEZyb21MaW5lLGk9dC5wYXRoRnJvbUFyZWEsYT10LnJlYWxJbmRleCxzPXRoaXMudyxyPTA7cjxzLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7cisrKXt2YXIgbz1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXTsoXCJsaW5lXCI9PT1vLnR5cGV8fFwiYXJlYVwiPT09by50eXBlKSYmby5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQoby5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQoYSwxMCkmJihcImxpbmVcIj09PW8udHlwZT8odGhpcy5saW5lQ3R4LmFwcGVuZFBhdGhGcm9tPSExLGU9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMF0uZCk6XCJhcmVhXCI9PT1vLnR5cGUmJih0aGlzLmxpbmVDdHguYXBwZW5kUGF0aEZyb209ITEsaT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1swXS5kLHMuY29uZmlnLnN0cm9rZS5zaG93JiZzLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1sxXSYmKGU9cy5nbG9iYWxzLnByZXZpb3VzUGF0aHNbcl0ucGF0aHNbMV0uZCkpKX1yZXR1cm57cGF0aEZyb21MaW5lOmUscGF0aEZyb21BcmVhOml9fX0se2tleTpcImRldGVybWluZUZpcnN0UHJldllcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuaSxhPXQuc2VyaWVzLHM9dC5wcmV2WSxyPXQubGluZVlQb3NpdGlvbixvPXRoaXMudztpZih2b2lkIDAhPT0obnVsbD09PShlPWFbaV0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplWzBdKSlzPShyPW8uY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmk+MD90aGlzLmxpbmVDdHgucHJldlNlcmllc1lbaS0xXVswXTp0aGlzLmxpbmVDdHguemVyb1kpLWFbaV1bMF0vdGhpcy5saW5lQ3R4LnlSYXRpb1t0aGlzLmxpbmVDdHgueWF4aXNJbmRleF0rMioodGhpcy5saW5lQ3R4LmlzUmV2ZXJzZWQ/YVtpXVswXS90aGlzLmxpbmVDdHgueVJhdGlvW3RoaXMubGluZUN0eC55YXhpc0luZGV4XTowKTtlbHNlIGlmKG8uY29uZmlnLmNoYXJ0LnN0YWNrZWQmJmk+MCYmdm9pZCAwPT09YVtpXVswXSlmb3IodmFyIG49aS0xO24+PTA7bi0tKWlmKG51bGwhPT1hW25dWzBdJiZ2b2lkIDAhPT1hW25dWzBdKXtzPXI9dGhpcy5saW5lQ3R4LnByZXZTZXJpZXNZW25dWzBdO2JyZWFrfXJldHVybntwcmV2WTpzLGxpbmVZUG9zaXRpb246cn19fV0pLHR9KCksenQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGksYSxzLHI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLGk9dFswXSxhPXRbMV0scz1lWzBdPVl0KGksYSkscj0xLG89dC5sZW5ndGgtMTtyPG87cisrKWk9YSxhPXRbcisxXSxlW3JdPS41KihzKyhzPVl0KGksYSkpKTtyZXR1cm4gZVtyXT1zLGV9KHQpLG89dC5sZW5ndGgtMSxuPVtdLGw9MDtsPG87bCsrKWE9WXQodFtsXSx0W2wrMV0pLE1hdGguYWJzKGEpPDFlLTY/cltsXT1yW2wrMV09MDoocz0oZT1yW2xdL2EpKmUrKGk9cltsKzFdL2EpKmkpPjkmJihzPTMqYS9NYXRoLnNxcnQocykscltsXT1zKmUscltsKzFdPXMqaSk7Zm9yKHZhciBoPTA7aDw9bztoKyspcz0odFtNYXRoLm1pbihvLGgrMSldWzBdLXRbTWF0aC5tYXgoMCxoLTEpXVswXSkvKDYqKDErcltoXSpyW2hdKSksbi5wdXNoKFtzfHwwLHJbaF0qc3x8MF0pO3JldHVybiBufSxYdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9XCJcIixpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPXRbaV0scz10W2ktMV0scj1hLmxlbmd0aCxvPW51bGw9PXM/dm9pZCAwOnMubGVuZ3RoO2k+MSYmTWF0aC5hYnMoYVtyLTJdLXNbby0yXSk8MzA/KGUrPVwiUVwiLmNvbmNhdChhWzBdLFwiLCBcIikuY29uY2F0KGFbMV0pLGUrPVwiLCBcIi5jb25jYXQoYVsyXSxcIiwgXCIpLmNvbmNhdChhWzNdKSk6cj40PyhlKz1cIkNcIi5jb25jYXQoYVswXSxcIiwgXCIpLmNvbmNhdChhWzFdKSxlKz1cIiwgXCIuY29uY2F0KGFbMl0sXCIsIFwiKS5jb25jYXQoYVszXSksZSs9XCIsIFwiLmNvbmNhdChhWzRdLFwiLCBcIikuY29uY2F0KGFbNV0pKTpyPjImJihlKz1cIlNcIi5jb25jYXQoYVswXSxcIiwgXCIpLmNvbmNhdChhWzFdKSxlKz1cIiwgXCIuY29uY2F0KGFbMl0sXCIsIFwiKS5jb25jYXQoYVszXSkpfXJldHVybiBlfSxFdD1mdW5jdGlvbih0KXt2YXIgZT16dCh0KSxpPXRbMV0sYT10WzBdLHM9W10scj1lWzFdLG89ZVswXTtzLnB1c2goYSxbYVswXStvWzBdLGFbMV0rb1sxXSxpWzBdLXJbMF0saVsxXS1yWzFdLGlbMF0saVsxXV0pO2Zvcih2YXIgbj0yLGw9ZS5sZW5ndGg7bjxsO24rKyl7dmFyIGg9dFtuXSxjPWVbbl07cy5wdXNoKFtoWzBdLWNbMF0saFsxXS1jWzFdLGhbMF0saFsxXV0pfXJldHVybiBzfTtmdW5jdGlvbiBZdCh0LGUpe3JldHVybihlWzFdLXRbMV0pLyhlWzBdLXRbMF0pfXZhciBGdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpLHMpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy54eVJhdGlvcz1pLHRoaXMucG9pbnRzQ2hhcnQ9IShcImJ1YmJsZVwiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcInNjYXR0ZXJcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSl8fHMsdGhpcy5zY2F0dGVyPW5ldyBEKHRoaXMuY3R4KSx0aGlzLm5vTmVnYXRpdmVzPXRoaXMudy5nbG9iYWxzLm1pblg9PT1OdW1iZXIuTUFYX1ZBTFVFLHRoaXMubGluZUhlbHBlcnM9bmV3IFR0KHRoaXMpLHRoaXMubWFya2Vycz1uZXcgSCh0aGlzLmN0eCksdGhpcy5wcmV2U2VyaWVzWT1bXSx0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb249MCx0aGlzLnlheGlzSW5kZXg9MH1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSxhLHMpe3ZhciByLG89dGhpcy53LG49bmV3IG0odGhpcy5jdHgpLGw9by5nbG9iYWxzLmNvbWJvQ2hhcnRzP2k6by5jb25maWcuY2hhcnQudHlwZSxoPW4uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobCxcIi1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wiKX0pLGM9bmV3IHkodGhpcy5jdHgsbyk7dGhpcy55UmF0aW89dGhpcy54eVJhdGlvcy55UmF0aW8sdGhpcy56UmF0aW89dGhpcy54eVJhdGlvcy56UmF0aW8sdGhpcy54UmF0aW89dGhpcy54eVJhdGlvcy54UmF0aW8sdGhpcy5iYXNlTGluZVk9dGhpcy54eVJhdGlvcy5iYXNlTGluZVksdD1jLmdldExvZ1Nlcmllcyh0KSx0aGlzLnlSYXRpbz1jLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pO2Zvcih2YXIgZD1bXSxnPTA7Zzx0Lmxlbmd0aDtnKyspe3Q9dGhpcy5saW5lSGVscGVycy5zYW1lVmFsdWVTZXJpZXNGaXgoZyx0KTt2YXIgdT1vLmdsb2JhbHMuY29tYm9DaGFydHM/YVtnXTpnO3RoaXMuX2luaXRTZXJpZVZhcmlhYmxlcyh0LGcsdSk7dmFyIHA9W10sZj1bXSx4PVtdLGI9by5nbG9iYWxzLnBhZEhvcml6b250YWwrdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uO3RoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKHRoaXMuZWxTZXJpZXMsdSksby5nbG9iYWxzLmlzWE51bWVyaWMmJm8uZ2xvYmFscy5zZXJpZXNYLmxlbmd0aD4wJiYoYj0oby5nbG9iYWxzLnNlcmllc1hbdV1bMF0tby5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvKSx4LnB1c2goYik7dmFyIHY9Yix3PXRoaXMuemVyb1ksaz10aGlzLnplcm9ZO3c9dGhpcy5saW5lSGVscGVycy5kZXRlcm1pbmVGaXJzdFByZXZZKHtpOmcsc2VyaWVzOnQscHJldlk6dyxsaW5lWVBvc2l0aW9uOjB9KS5wcmV2WSxcInNtb290aFwiPT09by5jb25maWcuc3Ryb2tlLmN1cnZlJiZudWxsPT09dFtnXVswXT9wLnB1c2gobnVsbCk6cC5wdXNoKHcpO1wicmFuZ2VBcmVhXCI9PT1sJiYoaz10aGlzLmxpbmVIZWxwZXJzLmRldGVybWluZUZpcnN0UHJldlkoe2k6ZyxzZXJpZXM6cyxwcmV2WTprLGxpbmVZUG9zaXRpb246MH0pLnByZXZZLGYucHVzaChrKSk7dmFyIEE9e3R5cGU6bCxzZXJpZXM6dCxyZWFsSW5kZXg6dSxpOmcseDpiLHk6MSxwYXRoc0Zyb206dGhpcy5fY2FsY3VsYXRlUGF0aHNGcm9tKHt0eXBlOmwsc2VyaWVzOnQsaTpnLHJlYWxJbmRleDp1LHByZXZYOnYscHJldlk6dyxwcmV2WTI6a30pLGxpbmVQYXRoczpbXSxhcmVhUGF0aHM6W10sc2VyaWVzSW5kZXg6YSxsaW5lWVBvc2l0aW9uOjAseEFycmo6eCx5QXJyajpwLHkyQXJyajpmLHNlcmllc1JhbmdlRW5kOnN9LFM9dGhpcy5faXRlcmF0ZU92ZXJEYXRhUG9pbnRzKGUoZSh7fSxBKSx7fSx7aXRlcmF0aW9uczpcInJhbmdlQXJlYVwiPT09bD90W2ddLmxlbmd0aC0xOnZvaWQgMCxpc1JhbmdlU3RhcnQ6ITB9KSk7aWYoXCJyYW5nZUFyZWFcIj09PWwpe3ZhciBDPXRoaXMuX2NhbGN1bGF0ZVBhdGhzRnJvbSh7c2VyaWVzOnMsaTpnLHJlYWxJbmRleDp1LHByZXZYOnYscHJldlk6a30pLEw9dGhpcy5faXRlcmF0ZU92ZXJEYXRhUG9pbnRzKGUoZSh7fSxBKSx7fSx7c2VyaWVzOnMscGF0aHNGcm9tOkMsaXRlcmF0aW9uczpzW2ddLmxlbmd0aC0xLGlzUmFuZ2VTdGFydDohMX0pKTtTLmxpbmVQYXRoc1swXT1MLmxpbmVQYXRoK1MubGluZVBhdGgsUy5wYXRoRnJvbUxpbmU9TC5wYXRoRnJvbUxpbmUrUy5wYXRoRnJvbUxpbmV9dGhpcy5faGFuZGxlUGF0aHMoe3R5cGU6bCxyZWFsSW5kZXg6dSxpOmcscGF0aHM6U30pLHRoaXMuZWxTZXJpZXMuYWRkKHRoaXMuZWxQb2ludHNNYWluKSx0aGlzLmVsU2VyaWVzLmFkZCh0aGlzLmVsRGF0YUxhYmVsc1dyYXApLGQucHVzaCh0aGlzLmVsU2VyaWVzKX1pZih2b2lkIDAhPT0obnVsbD09PShyPW8uY29uZmlnLnNlcmllc1swXSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuekluZGV4KSYmZC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBOdW1iZXIodC5ub2RlLmdldEF0dHJpYnV0ZShcInpJbmRleFwiKSktTnVtYmVyKGUubm9kZS5nZXRBdHRyaWJ1dGUoXCJ6SW5kZXhcIikpfSkpLG8uY29uZmlnLmNoYXJ0LnN0YWNrZWQpZm9yKHZhciBQPWQubGVuZ3RoO1A+MDtQLS0paC5hZGQoZFtQLTFdKTtlbHNlIGZvcih2YXIgST0wO0k8ZC5sZW5ndGg7SSsrKWguYWRkKGRbSV0pO3JldHVybiBofX0se2tleTpcIl9pbml0U2VyaWVWYXJpYWJsZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9bmV3IG0odGhpcy5jdHgpO3RoaXMueERpdmlzaW9uPWEuZ2xvYmFscy5ncmlkV2lkdGgvKGEuZ2xvYmFscy5kYXRhUG9pbnRzLShcIm9uXCI9PT1hLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50PzE6MCkpLHRoaXMuc3Ryb2tlV2lkdGg9QXJyYXkuaXNBcnJheShhLmNvbmZpZy5zdHJva2Uud2lkdGgpP2EuY29uZmlnLnN0cm9rZS53aWR0aFtpXTphLmNvbmZpZy5zdHJva2Uud2lkdGgsdGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9aSksdGhpcy5pc1JldmVyc2VkPWEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0mJmEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0ucmV2ZXJzZWQsdGhpcy56ZXJvWT1hLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdLSh0aGlzLmlzUmV2ZXJzZWQ/YS5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF06MCksdGhpcy5hcmVhQm90dG9tWT10aGlzLnplcm9ZLCh0aGlzLnplcm9ZPmEuZ2xvYmFscy5ncmlkSGVpZ2h0fHxcImVuZFwiPT09YS5jb25maWcucGxvdE9wdGlvbnMuYXJlYS5maWxsVG8pJiYodGhpcy5hcmVhQm90dG9tWT1hLmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5jYXRlZ29yeUF4aXNDb3JyZWN0aW9uPXRoaXMueERpdmlzaW9uLzIsdGhpcy5lbFNlcmllcz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsekluZGV4OnZvaWQgMCE9PWEuY29uZmlnLnNlcmllc1tpXS56SW5kZXg/YS5jb25maWcuc2VyaWVzW2ldLnpJbmRleDppLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW2ldKX0pLHRoaXMuZWxQb2ludHNNYWluPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwXCIsXCJkYXRhOnJlYWxJbmRleFwiOml9KSx0aGlzLmVsRGF0YUxhYmVsc1dyYXA9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6aX0pO3ZhciByPXRbZV0ubGVuZ3RoPT09YS5nbG9iYWxzLmRhdGFQb2ludHM7dGhpcy5lbFNlcmllcy5hdHRyKHtcImRhdGE6bG9uZ2VzdFNlcmllc1wiOnIscmVsOmUrMSxcImRhdGE6cmVhbEluZGV4XCI6aX0pLHRoaXMuYXBwZW5kUGF0aEZyb209ITB9fSx7a2V5OlwiX2NhbGN1bGF0ZVBhdGhzRnJvbVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYSxzLHI9dC50eXBlLG89dC5zZXJpZXMsbj10LmksbD10LnJlYWxJbmRleCxoPXQucHJldlgsYz10LnByZXZZLGQ9dC5wcmV2WTIsZz10aGlzLncsdT1uZXcgbSh0aGlzLmN0eCk7aWYobnVsbD09PW9bbl1bMF0pe2Zvcih2YXIgcD0wO3A8b1tuXS5sZW5ndGg7cCsrKWlmKG51bGwhPT1vW25dW3BdKXtoPXRoaXMueERpdmlzaW9uKnAsYz10aGlzLnplcm9ZLW9bbl1bcF0vdGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxlPXUubW92ZShoLGMpLGk9dS5tb3ZlKGgsdGhpcy5hcmVhQm90dG9tWSk7YnJlYWt9fWVsc2UgZT11Lm1vdmUoaCxjKSxcInJhbmdlQXJlYVwiPT09ciYmKGU9dS5tb3ZlKGgsZCkrdS5saW5lKGgsYykpLGk9dS5tb3ZlKGgsdGhpcy5hcmVhQm90dG9tWSkrdS5saW5lKGgsYyk7aWYoYT11Lm1vdmUoLTEsdGhpcy56ZXJvWSkrdS5saW5lKC0xLHRoaXMuemVyb1kpLHM9dS5tb3ZlKC0xLHRoaXMuemVyb1kpK3UubGluZSgtMSx0aGlzLnplcm9ZKSxnLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg+MCl7dmFyIGY9dGhpcy5saW5lSGVscGVycy5jaGVja1ByZXZpb3VzUGF0aHMoe3BhdGhGcm9tTGluZTphLHBhdGhGcm9tQXJlYTpzLHJlYWxJbmRleDpsfSk7YT1mLnBhdGhGcm9tTGluZSxzPWYucGF0aEZyb21BcmVhfXJldHVybntwcmV2WDpoLHByZXZZOmMsbGluZVBhdGg6ZSxhcmVhUGF0aDppLHBhdGhGcm9tTGluZTphLHBhdGhGcm9tQXJlYTpzfX19LHtrZXk6XCJfaGFuZGxlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LnR5cGUsYT10LnJlYWxJbmRleCxzPXQuaSxyPXQucGF0aHMsbz10aGlzLncsbj1uZXcgbSh0aGlzLmN0eCksbD1uZXcgUih0aGlzLmN0eCk7dGhpcy5wcmV2U2VyaWVzWS5wdXNoKHIueUFycmopLG8uZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2FdPXIueEFycmosby5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbYV09ci55QXJyajt2YXIgaD1vLmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHM7aWYoaC5jb3VudD4wJiZcInJhbmdlQXJlYVwiIT09aSl7dmFyIGM9by5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYV1bby5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYV0ubGVuZ3RoLWguY291bnQtMV0sZD1uLmRyYXdSZWN0KGMsMCxvLmdsb2JhbHMuZ3JpZFdpZHRoLG8uZ2xvYmFscy5ncmlkSGVpZ2h0LDApO28uZ2xvYmFscy5kb20uZWxGb3JlY2FzdE1hc2suYXBwZW5kQ2hpbGQoZC5ub2RlKTt2YXIgZz1uLmRyYXdSZWN0KDAsMCxjLG8uZ2xvYmFscy5ncmlkSGVpZ2h0LDApO28uZ2xvYmFscy5kb20uZWxOb25Gb3JlY2FzdE1hc2suYXBwZW5kQ2hpbGQoZy5ub2RlKX10aGlzLnBvaW50c0NoYXJ0fHxvLmdsb2JhbHMuZGVsYXllZEVsZW1lbnRzLnB1c2goe2VsOnRoaXMuZWxQb2ludHNNYWluLm5vZGUsaW5kZXg6YX0pO3ZhciB1PXtpOnMscmVhbEluZGV4OmEsYW5pbWF0aW9uRGVsYXk6cyxpbml0aWFsU3BlZWQ6by5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCxkYXRhQ2hhbmdlU3BlZWQ6by5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLGNsYXNzTmFtZTpcImFwZXhjaGFydHMtXCIuY29uY2F0KGkpfTtpZihcImFyZWFcIj09PWkpZm9yKHZhciBwPWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphfSksZj0wO2Y8ci5hcmVhUGF0aHMubGVuZ3RoO2YrKyl7dmFyIHg9bi5yZW5kZXJQYXRocyhlKGUoe30sdSkse30se3BhdGhGcm9tOnIucGF0aEZyb21BcmVhLHBhdGhUbzpyLmFyZWFQYXRoc1tmXSxzdHJva2U6XCJub25lXCIsc3Ryb2tlV2lkdGg6MCxzdHJva2VMaW5lQ2FwOm51bGwsZmlsbDpwfSkpO3RoaXMuZWxTZXJpZXMuYWRkKHgpfWlmKG8uY29uZmlnLnN0cm9rZS5zaG93JiYhdGhpcy5wb2ludHNDaGFydCl7dmFyIGI9bnVsbDtpZihcImxpbmVcIj09PWkpYj1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6YSxpOnN9KTtlbHNlIGlmKFwic29saWRcIj09PW8uY29uZmlnLnN0cm9rZS5maWxsLnR5cGUpYj1vLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1thXTtlbHNle3ZhciB2PW8uY29uZmlnLmZpbGw7by5jb25maWcuZmlsbD1vLmNvbmZpZy5zdHJva2UuZmlsbCxiPWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphLGk6c30pLG8uY29uZmlnLmZpbGw9dn1mb3IodmFyIHk9MDt5PHIubGluZVBhdGhzLmxlbmd0aDt5Kyspe3ZhciB3PWI7XCJyYW5nZUFyZWFcIj09PWkmJih3PWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphfSkpO3ZhciBrPWUoZSh7fSx1KSx7fSx7cGF0aEZyb206ci5wYXRoRnJvbUxpbmUscGF0aFRvOnIubGluZVBhdGhzW3ldLHN0cm9rZTpiLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc3Ryb2tlTGluZUNhcDpvLmNvbmZpZy5zdHJva2UubGluZUNhcCxmaWxsOlwicmFuZ2VBcmVhXCI9PT1pP3c6XCJub25lXCJ9KSxBPW4ucmVuZGVyUGF0aHMoayk7aWYodGhpcy5lbFNlcmllcy5hZGQoQSksQS5hdHRyKFwiZmlsbC1ydWxlXCIsXCJldmVub2RkXCIpLGguY291bnQ+MCYmXCJyYW5nZUFyZWFcIiE9PWkpe3ZhciBTPW4ucmVuZGVyUGF0aHMoayk7Uy5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1kYXNoYXJyYXlcIixoLmRhc2hBcnJheSksaC5zdHJva2VXaWR0aCYmUy5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiLGguc3Ryb2tlV2lkdGgpLHRoaXMuZWxTZXJpZXMuYWRkKFMpLFMuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNmb3JlY2FzdE1hc2tcIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBLmF0dHIoXCJjbGlwLXBhdGhcIixcInVybCgjbm9uRm9yZWNhc3RNYXNrXCIuY29uY2F0KG8uZ2xvYmFscy5jdWlkLFwiKVwiKSl9fX19fSx7a2V5OlwiX2l0ZXJhdGVPdmVyRGF0YVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10LnR5cGUsYT10LnNlcmllcyxzPXQuaXRlcmF0aW9ucyxyPXQucmVhbEluZGV4LG89dC5pLG49dC54LGw9dC55LGg9dC5wYXRoc0Zyb20sYz10LmxpbmVQYXRocyxkPXQuYXJlYVBhdGhzLGc9dC5zZXJpZXNJbmRleCx1PXQubGluZVlQb3NpdGlvbixwPXQueEFycmosZj10LnlBcnJqLGI9dC55MkFycmosdj10LmlzUmFuZ2VTdGFydCx5PXQuc2VyaWVzUmFuZ2VFbmQsdz10aGlzLncsaz1uZXcgbSh0aGlzLmN0eCksQT10aGlzLnlSYXRpbyxTPWgucHJldlksQz1oLmxpbmVQYXRoLEw9aC5hcmVhUGF0aCxQPWgucGF0aEZyb21MaW5lLEk9aC5wYXRoRnJvbUFyZWEsTT14LmlzTnVtYmVyKHcuZ2xvYmFscy5taW5ZQXJyW3JdKT93Lmdsb2JhbHMubWluWUFycltyXTp3Lmdsb2JhbHMubWluWTtzfHwocz13Lmdsb2JhbHMuZGF0YVBvaW50cz4xP3cuZ2xvYmFscy5kYXRhUG9pbnRzLTE6dy5nbG9iYWxzLmRhdGFQb2ludHMpO2Zvcih2YXIgVD1mdW5jdGlvbih0LGkpe3JldHVybiBpLXQvQVtlLnlheGlzSW5kZXhdKzIqKGUuaXNSZXZlcnNlZD90L0FbZS55YXhpc0luZGV4XTowKX0sej1sLFg9MDtYPHM7WCsrKXt2YXIgRT12b2lkIDA9PT1hW29dW1grMV18fG51bGw9PT1hW29dW1grMV07aWYody5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBZPXcuZ2xvYmFscy5zZXJpZXNYW3JdW1grMV07dm9pZCAwPT09dy5nbG9iYWxzLnNlcmllc1hbcl1bWCsxXSYmKFk9dy5nbG9iYWxzLnNlcmllc1hbcl1bcy0xXSksbj0oWS13Lmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW99ZWxzZSBuKz10aGlzLnhEaXZpc2lvbjtpZih3LmNvbmZpZy5jaGFydC5zdGFja2VkKWlmKG8+MCYmdy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg8dy5jb25maWcuc2VyaWVzLmxlbmd0aC0xKXt1PXRoaXMucHJldlNlcmllc1lbZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQsaT0wO2k8dy5nbG9iYWxzLnNlcmllcy5sZW5ndGg7aSsrKWlmKHcuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCk+LTEpe2UtLTticmVha31yZXR1cm4gZT49MD9lOjB9KG8tMSldW1grMV19ZWxzZSB1PXRoaXMuemVyb1k7ZWxzZSB1PXRoaXMuemVyb1k7RT9sPVQoTSx1KToobD1UKGFbb11bWCsxXSx1KSxcInJhbmdlQXJlYVwiPT09aSYmKHo9VCh5W29dW1grMV0sdSkpKSxwLnB1c2gobiksRSYmXCJzbW9vdGhcIj09PXcuY29uZmlnLnN0cm9rZS5jdXJ2ZT9mLnB1c2gobnVsbCk6Zi5wdXNoKGwpLGIucHVzaCh6KTt2YXIgRj10aGlzLmxpbmVIZWxwZXJzLmNhbGN1bGF0ZVBvaW50cyh7c2VyaWVzOmEseDpuLHk6bCxyZWFsSW5kZXg6cixpOm8sajpYLHByZXZZOlN9KSxSPXRoaXMuX2NyZWF0ZVBhdGhzKHt0eXBlOmksc2VyaWVzOmEsaTpvLHJlYWxJbmRleDpyLGo6WCx4Om4seTpsLHkyOnoseEFycmo6cCx5QXJyajpmLHkyQXJyajpiLGxpbmVQYXRoOkMsYXJlYVBhdGg6TCxsaW5lUGF0aHM6YyxhcmVhUGF0aHM6ZCxzZXJpZXNJbmRleDpnLGlzUmFuZ2VTdGFydDp2fSk7ZD1SLmFyZWFQYXRocyxjPVIubGluZVBhdGhzLEw9Ui5hcmVhUGF0aCxDPVIubGluZVBhdGgsIXRoaXMuYXBwZW5kUGF0aEZyb218fFwic21vb3RoXCI9PT13LmNvbmZpZy5zdHJva2UuY3VydmUmJlwicmFuZ2VBcmVhXCI9PT1pfHwoUCs9ay5saW5lKG4sdGhpcy56ZXJvWSksSSs9ay5saW5lKG4sdGhpcy56ZXJvWSkpLHRoaXMuaGFuZGxlTnVsbERhdGFQb2ludHMoYSxGLG8sWCxyKSx0aGlzLl9oYW5kbGVNYXJrZXJzQW5kTGFiZWxzKHt0eXBlOmkscG9pbnRzUG9zOkYsaTpvLGo6WCxyZWFsSW5kZXg6cixpc1JhbmdlU3RhcnQ6dn0pfXJldHVybnt5QXJyajpmLHhBcnJqOnAscGF0aEZyb21BcmVhOkksYXJlYVBhdGhzOmQscGF0aEZyb21MaW5lOlAsbGluZVBhdGhzOmMsbGluZVBhdGg6QyxhcmVhUGF0aDpMfX19LHtrZXk6XCJfaGFuZGxlTWFya2Vyc0FuZExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudHlwZSxpPXQucG9pbnRzUG9zLGE9dC5pc1JhbmdlU3RhcnQscz10Lmkscj10Lmosbz10LnJlYWxJbmRleCxuPXRoaXMudyxsPW5ldyBPKHRoaXMuY3R4KTtpZih0aGlzLnBvaW50c0NoYXJ0KXRoaXMuc2NhdHRlci5kcmF3KHRoaXMuZWxTZXJpZXMscix7cmVhbEluZGV4Om8scG9pbnRzUG9zOmkselJhdGlvOnRoaXMuelJhdGlvLGVsUGFyZW50OnRoaXMuZWxQb2ludHNNYWlufSk7ZWxzZXtuLmdsb2JhbHMuc2VyaWVzW3NdLmxlbmd0aD4xJiZ0aGlzLmVsUG9pbnRzTWFpbi5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpO3ZhciBoPXRoaXMubWFya2Vycy5wbG90Q2hhcnRNYXJrZXJzKGksbyxyKzEpO251bGwhPT1oJiZ0aGlzLmVsUG9pbnRzTWFpbi5hZGQoaCl9dmFyIGM9bC5kcmF3RGF0YUxhYmVsKHt0eXBlOmUsaXNSYW5nZVN0YXJ0OmEscG9zOmksaTpvLGo6cisxfSk7bnVsbCE9PWMmJnRoaXMuZWxEYXRhTGFiZWxzV3JhcC5hZGQoYyl9fSx7a2V5OlwiX2NyZWF0ZVBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLGk9dC5zZXJpZXMsYT10Lmkscz10LnJlYWxJbmRleCxyPXQuaixvPXQueCxuPXQueSxsPXQueEFycmosaD10LnlBcnJqLGM9dC55MixkPXQueTJBcnJqLGc9dC5saW5lUGF0aCx1PXQuYXJlYVBhdGgscD10LmxpbmVQYXRocyxmPXQuYXJlYVBhdGhzLHg9dC5zZXJpZXNJbmRleCxiPXQuaXNSYW5nZVN0YXJ0LHY9dGhpcy53LHk9bmV3IG0odGhpcy5jdHgpLHc9di5jb25maWcuc3Ryb2tlLmN1cnZlLGs9dGhpcy5hcmVhQm90dG9tWTtpZihBcnJheS5pc0FycmF5KHYuY29uZmlnLnN0cm9rZS5jdXJ2ZSkmJih3PUFycmF5LmlzQXJyYXkoeCk/di5jb25maWcuc3Ryb2tlLmN1cnZlW3hbYV1dOnYuY29uZmlnLnN0cm9rZS5jdXJ2ZVthXSksXCJyYW5nZUFyZWFcIj09PWUmJih2Lmdsb2JhbHMuaGFzTnVsbFZhbHVlc3x8di5jb25maWcuZm9yZWNhc3REYXRhUG9pbnRzLmNvdW50PjApJiZcInNtb290aFwiPT09dyYmKHc9XCJzdHJhaWdodFwiKSxcInNtb290aFwiPT09dyl7dmFyIEE9XCJyYW5nZUFyZWFcIj09PWU/bC5sZW5ndGg9PT12Lmdsb2JhbHMuZGF0YVBvaW50czpyPT09aVthXS5sZW5ndGgtMixTPWwubWFwKChmdW5jdGlvbih0LGUpe3JldHVybltsW2VdLGhbZV1dfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10WzFdfSkpO2lmKEEmJlMubGVuZ3RoPjEpe3ZhciBDPUV0KFMpO2lmKGcrPVh0KEMpLG51bGw9PT1pW2FdWzBdP3U9Zzp1Kz1YdChDKSxcInJhbmdlQXJlYVwiPT09ZSYmYil7Zys9eS5saW5lKGxbbC5sZW5ndGgtMV0sZFtkLmxlbmd0aC0xXSk7dmFyIEw9bC5zbGljZSgpLnJldmVyc2UoKSxQPWQuc2xpY2UoKS5yZXZlcnNlKCksST1MLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm5bTFtlXSxQW2VdXX0pKSxNPUV0KEkpO3U9Zys9WHQoTSl9ZWxzZSB1Kz15LmxpbmUoU1tTLmxlbmd0aC0xXVswXSxrKSt5LmxpbmUoU1swXVswXSxrKSt5Lm1vdmUoU1swXVswXSxTWzBdWzFdKStcInpcIjtwLnB1c2goZyksZi5wdXNoKHUpfX1lbHNle2lmKG51bGw9PT1pW2FdW3IrMV0pe2crPXkubW92ZShvLG4pO3ZhciBUPXYuZ2xvYmFscy5pc1hOdW1lcmljPyh2Lmdsb2JhbHMuc2VyaWVzWFtzXVtyXS12Lmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW86by10aGlzLnhEaXZpc2lvbjt1PXUreS5saW5lKFQsaykreS5tb3ZlKG8sbikrXCJ6XCJ9bnVsbD09PWlbYV1bcl0mJihnKz15Lm1vdmUobyxuKSx1Kz15Lm1vdmUobyxrKSksXCJzdGVwbGluZVwiPT09dz8oZz1nK3kubGluZShvLG51bGwsXCJIXCIpK3kubGluZShudWxsLG4sXCJWXCIpLHU9dSt5LmxpbmUobyxudWxsLFwiSFwiKSt5LmxpbmUobnVsbCxuLFwiVlwiKSk6XCJzdHJhaWdodFwiPT09dyYmKGcrPXkubGluZShvLG4pLHUrPXkubGluZShvLG4pKSxyPT09aVthXS5sZW5ndGgtMiYmKHU9dSt5LmxpbmUobyxrKSt5Lm1vdmUobyxuKStcInpcIixcInJhbmdlQXJlYVwiPT09ZSYmYj9nPWcreS5saW5lKG8sYykreS5tb3ZlKG8sYykrXCJ6XCI6KHAucHVzaChnKSxmLnB1c2godSkpKX1yZXR1cm57bGluZVBhdGhzOnAsYXJlYVBhdGhzOmYsbGluZVBhdGg6ZyxhcmVhUGF0aDp1fX19LHtrZXk6XCJoYW5kbGVOdWxsRGF0YVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dmFyIHI9dGhpcy53O2lmKG51bGw9PT10W2ldW2FdJiZyLmNvbmZpZy5tYXJrZXJzLnNob3dOdWxsRGF0YVBvaW50c3x8MT09PXRbaV0ubGVuZ3RoKXt2YXIgbz10aGlzLm1hcmtlcnMucGxvdENoYXJ0TWFya2VycyhlLHMsYSsxLHRoaXMuc3Ryb2tlV2lkdGgtci5jb25maWcubWFya2Vycy5zdHJva2VXaWR0aC8yLCEwKTtudWxsIT09byYmdGhpcy5lbFBvaW50c01haW4uYWRkKG8pfX19XSksdH0oKTt3aW5kb3cuVHJlZW1hcFNxdWFyZWQ9e30sd2luZG93LlRyZWVtYXBTcXVhcmVkLmdlbmVyYXRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksYSxzKXt0aGlzLnhvZmZzZXQ9ZSx0aGlzLnlvZmZzZXQ9aSx0aGlzLmhlaWdodD1zLHRoaXMud2lkdGg9YSx0aGlzLnNob3J0ZXN0RWRnZT1mdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbih0aGlzLmhlaWdodCx0aGlzLndpZHRoKX0sdGhpcy5nZXRDb29yZGluYXRlcz1mdW5jdGlvbih0KXt2YXIgZSxpPVtdLGE9dGhpcy54b2Zmc2V0LHM9dGhpcy55b2Zmc2V0LG89cih0KS90aGlzLmhlaWdodCxuPXIodCkvdGhpcy53aWR0aDtpZih0aGlzLndpZHRoPj10aGlzLmhlaWdodClmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkucHVzaChbYSxzLGErbyxzK3RbZV0vb10pLHMrPXRbZV0vbztlbHNlIGZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaS5wdXNoKFthLHMsYSt0W2VdL24scytuXSksYSs9dFtlXS9uO3JldHVybiBpfSx0aGlzLmN1dEFyZWE9ZnVuY3Rpb24oZSl7dmFyIGk7aWYodGhpcy53aWR0aD49dGhpcy5oZWlnaHQpe3ZhciBhPWUvdGhpcy5oZWlnaHQscz10aGlzLndpZHRoLWE7aT1uZXcgdCh0aGlzLnhvZmZzZXQrYSx0aGlzLnlvZmZzZXQscyx0aGlzLmhlaWdodCl9ZWxzZXt2YXIgcj1lL3RoaXMud2lkdGgsbz10aGlzLmhlaWdodC1yO2k9bmV3IHQodGhpcy54b2Zmc2V0LHRoaXMueW9mZnNldCtyLHRoaXMud2lkdGgsbyl9cmV0dXJuIGl9fWZ1bmN0aW9uIGUoZSxhLHMsbyxuKXtvPXZvaWQgMD09PW8/MDpvLG49dm9pZCAwPT09bj8wOm47dmFyIGw9aShmdW5jdGlvbih0LGUpe3ZhciBpLGE9W10scz1lL3IodCk7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylhW2ldPXRbaV0qcztyZXR1cm4gYX0oZSxhKnMpLFtdLG5ldyB0KG8sbixhLHMpLFtdKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGUsaSxhPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspZm9yKGk9MDtpPHRbZV0ubGVuZ3RoO2krKylhLnB1c2godFtlXVtpXSk7cmV0dXJuIGF9KGwpfWZ1bmN0aW9uIGkodCxlLHMsbyl7dmFyIG4sbCxoO2lmKDAhPT10Lmxlbmd0aClyZXR1cm4gbj1zLnNob3J0ZXN0RWRnZSgpLGZ1bmN0aW9uKHQsZSxpKXt2YXIgcztpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7KHM9dC5zbGljZSgpKS5wdXNoKGUpO3ZhciByPWEodCxpKSxvPWEocyxpKTtyZXR1cm4gcj49b30oZSxsPXRbMF0sbik/KGUucHVzaChsKSxpKHQuc2xpY2UoMSksZSxzLG8pKTooaD1zLmN1dEFyZWEocihlKSxvKSxvLnB1c2gocy5nZXRDb29yZGluYXRlcyhlKSksaSh0LFtdLGgsbykpLG87by5wdXNoKHMuZ2V0Q29vcmRpbmF0ZXMoZSkpfWZ1bmN0aW9uIGEodCxlKXt2YXIgaT1NYXRoLm1pbi5hcHBseShNYXRoLHQpLGE9TWF0aC5tYXguYXBwbHkoTWF0aCx0KSxzPXIodCk7cmV0dXJuIE1hdGgubWF4KE1hdGgucG93KGUsMikqYS9NYXRoLnBvdyhzLDIpLE1hdGgucG93KHMsMikvKE1hdGgucG93KGUsMikqaSkpfWZ1bmN0aW9uIHModCl7cmV0dXJuIHQmJnQuY29uc3RydWN0b3I9PT1BcnJheX1mdW5jdGlvbiByKHQpe3ZhciBlLGk9MDtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkrPXRbZV07cmV0dXJuIGl9ZnVuY3Rpb24gbyh0KXt2YXIgZSxpPTA7aWYocyh0WzBdKSlmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWkrPW8odFtlXSk7ZWxzZSBpPXIodCk7cmV0dXJuIGl9cmV0dXJuIGZ1bmN0aW9uIHQoaSxhLHIsbixsKXtuPXZvaWQgMD09PW4/MDpuLGw9dm9pZCAwPT09bD8wOmw7dmFyIGgsYyxkPVtdLGc9W107aWYocyhpWzBdKSl7Zm9yKGM9MDtjPGkubGVuZ3RoO2MrKylkW2NdPW8oaVtjXSk7Zm9yKGg9ZShkLGEscixuLGwpLGM9MDtjPGkubGVuZ3RoO2MrKylnLnB1c2godChpW2NdLGhbY11bMl0taFtjXVswXSxoW2NdWzNdLWhbY11bMV0saFtjXVswXSxoW2NdWzFdKSl9ZWxzZSBnPWUoaSxhLHIsbixsKTtyZXR1cm4gZ319KCk7dmFyIFJ0LEh0LER0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5zdHJva2VXaWR0aD10aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aCx0aGlzLmhlbHBlcnM9bmV3IEF0KGUpLHRoaXMuZHluYW1pY0FuaW09dGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24sdGhpcy5sYWJlbHM9W119cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9bmV3IFIodGhpcy5jdHgpLHI9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXRyZWVtYXBcIn0pO2lmKGkuZ2xvYmFscy5ub0RhdGEpcmV0dXJuIHI7dmFyIG89W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0KX0pKTtvLnB1c2goZSl9KSksdGhpcy5uZWdSYW5nZT10aGlzLmhlbHBlcnMuY2hlY2tDb2xvclJhbmdlKCksaS5jb25maWcuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dC5kYXRhLmZvckVhY2goKGZ1bmN0aW9uKHQpe0FycmF5LmlzQXJyYXkoZS5sYWJlbHNbaV0pfHwoZS5sYWJlbHNbaV09W10pLGUubGFiZWxzW2ldLnB1c2godC54KX0pKX0pKSx3aW5kb3cuVHJlZW1hcFNxdWFyZWQuZ2VuZXJhdGUobyxpLmdsb2JhbHMuZ3JpZFdpZHRoLGkuZ2xvYmFscy5ncmlkSGVpZ2h0KS5mb3JFYWNoKChmdW5jdGlvbihvLG4pe3ZhciBsPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy10cmVlbWFwLXNlcmllc1wiLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoaS5nbG9iYWxzLnNlcmllc05hbWVzW25dKSxyZWw6bisxLFwiZGF0YTpyZWFsSW5kZXhcIjpufSk7aWYoaS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgaD1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O25ldyB2KGUuY3R4KS5kcm9wU2hhZG93KHIsaCxuKX12YXIgYz1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO28uZm9yRWFjaCgoZnVuY3Rpb24ocixvKXt2YXIgaD1yWzBdLGM9clsxXSxkPXJbMl0sZz1yWzNdLHU9YS5kcmF3UmVjdChoLGMsZC1oLGctYywwLFwiI2ZmZlwiLDEsZS5zdHJva2VXaWR0aCxpLmNvbmZpZy5wbG90T3B0aW9ucy50cmVlbWFwLnVzZUZpbGxDb2xvckFzU3Ryb2tlP2Y6aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbbl0pO3UuYXR0cih7Y3g6aCxjeTpjLGluZGV4Om4saTpuLGo6byx3aWR0aDpkLWgsaGVpZ2h0OmctY30pO3ZhciBwPWUuaGVscGVycy5nZXRTaGFkZUNvbG9yKGkuY29uZmlnLmNoYXJ0LnR5cGUsbixvLGUubmVnUmFuZ2UpLGY9cC5jb2xvcjt2b2lkIDAhPT1pLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtvXSYmaS5jb25maWcuc2VyaWVzW25dLmRhdGFbb10uZmlsbENvbG9yJiYoZj1pLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtvXS5maWxsQ29sb3IpO3ZhciB4PXMuZmlsbFBhdGgoe2NvbG9yOmYsc2VyaWVzTnVtYmVyOm4sZGF0YVBvaW50SW5kZXg6b30pO3Uubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10cmVlbWFwLXJlY3RcIiksdS5hdHRyKHtmaWxsOnh9KSxlLmhlbHBlcnMuYWRkTGlzdGVuZXJzKHUpO3ZhciBiPXt4OmgrKGQtaCkvMix5OmMrKGctYykvMix3aWR0aDowLGhlaWdodDowfSx2PXt4OmgseTpjLHdpZHRoOmQtaCxoZWlnaHQ6Zy1jfTtpZihpLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmVuYWJsZWQmJiFpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciBtPTE7aS5nbG9iYWxzLnJlc2l6ZWR8fChtPWkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQpLGUuYW5pbWF0ZVRyZWVtYXAodSxiLHYsbSl9aWYoaS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgeT0xO2UuZHluYW1pY0FuaW0uZW5hYmxlZCYmaS5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJih5PWUuZHluYW1pY0FuaW0uc3BlZWQsaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl0mJmkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dW29dJiZpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXVtvXS5yZWN0JiYoYj1pLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXVtvXS5yZWN0KSxlLmFuaW1hdGVUcmVlbWFwKHUsYix2LHkpKX12YXIgdz1lLmdldEZvbnRTaXplKHIpLGs9aS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXIoZS5sYWJlbHNbbl1bb10se3ZhbHVlOmkuZ2xvYmFscy5zZXJpZXNbbl1bb10sc2VyaWVzSW5kZXg6bixkYXRhUG9pbnRJbmRleDpvLHc6aX0pO1widHJ1bmNhdGVcIj09PWkuY29uZmlnLnBsb3RPcHRpb25zLnRyZWVtYXAuZGF0YUxhYmVscy5mb3JtYXQmJih3PXBhcnNlSW50KGkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLGs9ZS50cnVuY2F0ZUxhYmVscyhrLHcsaCxjLGQsZykpO3ZhciBBPWUuaGVscGVycy5jYWxjdWxhdGVEYXRhTGFiZWxzKHt0ZXh0OmsseDooaCtkKS8yLHk6KGMrZykvMitlLnN0cm9rZVdpZHRoLzIrdy8zLGk6bixqOm8sY29sb3JQcm9wczpwLGZvbnRTaXplOncsc2VyaWVzOnR9KTtpLmNvbmZpZy5kYXRhTGFiZWxzLmVuYWJsZWQmJkEmJmUucm90YXRlVG9GaXRMYWJlbChBLHcsayxoLGMsZCxnKSxsLmFkZCh1KSxudWxsIT09QSYmbC5hZGQoQSl9KSksbC5hZGQoYyksci5hZGQobCl9KSkscn19LHtrZXk6XCJnZXRGb250U2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt2YXIgaSxhLHMscixvPWZ1bmN0aW9uIHQoZSl7dmFyIGksYT0wO2lmKEFycmF5LmlzQXJyYXkoZVswXSkpZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz10KGVbaV0pO2Vsc2UgZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz1lW2ldLmxlbmd0aDtyZXR1cm4gYX0odGhpcy5sYWJlbHMpL2Z1bmN0aW9uIHQoZSl7dmFyIGksYT0wO2lmKEFycmF5LmlzQXJyYXkoZVswXSkpZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz10KGVbaV0pO2Vsc2UgZm9yKGk9MDtpPGUubGVuZ3RoO2krKylhKz0xO3JldHVybiBhfSh0aGlzLmxhYmVscyk7cmV0dXJuIGk9dFsyXS10WzBdLGE9dFszXS10WzFdLHM9aSphLHI9TWF0aC5wb3cocywuNSksTWF0aC5taW4oci9vLHBhcnNlSW50KGUuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsMTApKX19LHtrZXk6XCJyb3RhdGVUb0ZpdExhYmVsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49bmV3IG0odGhpcy5jdHgpLGw9bi5nZXRUZXh0UmVjdHMoaSxlKTtpZihsLndpZHRoK3RoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoKzU+ci1hJiZsLndpZHRoPD1vLXMpe3ZhciBoPW4ucm90YXRlQXJvdW5kQ2VudGVyKHQubm9kZSk7dC5ub2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKC05MCBcIi5jb25jYXQoaC54LFwiIFwiKS5jb25jYXQoaC55LFwiKSB0cmFuc2xhdGUoXCIpLmNvbmNhdChsLmhlaWdodC8zLFwiKVwiKSl9fX0se2tleTpcInRydW5jYXRlTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvPW5ldyBtKHRoaXMuY3R4KSxuPW8uZ2V0VGV4dFJlY3RzKHQsZSkud2lkdGgrdGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGgrNT5zLWkmJnItYT5zLWk/ci1hOnMtaSxsPW8uZ2V0VGV4dEJhc2VkT25NYXhXaWR0aCh7dGV4dDp0LG1heFdpZHRoOm4sZm9udFNpemU6ZX0pO3JldHVybiB0Lmxlbmd0aCE9PWwubGVuZ3RoJiZuL2U8NT9cIlwiOmx9fSx7a2V5OlwiYW5pbWF0ZVRyZWVtYXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz1uZXcgYih0aGlzLmN0eCk7cy5hbmltYXRlUmVjdCh0LHt4OmUueCx5OmUueSx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH0se3g6aS54LHk6aS55LHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fSxhLChmdW5jdGlvbigpe3MuYW5pbWF0aW9uQ29tcGxldGVkKHQpfSkpfX1dKSx0fSgpLE90PTg2NDAwLE50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMudGltZVNjYWxlQXJyYXk9W10sdGhpcy51dGM9dGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEN9cmV0dXJuIHIodCxbe2tleTpcImNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzXCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLHM9dGhpcy53O2lmKHMuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpcmV0dXJuIHMuZ2xvYmFscy5sYWJlbHM9W10scy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscz1bXSxbXTt2YXIgcj1uZXcgSSh0aGlzLmN0eCksbz0oaS10KS84NjRlNTt0aGlzLmRldGVybWluZUludGVydmFsKG8pLHMuZ2xvYmFscy5kaXNhYmxlWm9vbUluPSExLHMuZ2xvYmFscy5kaXNhYmxlWm9vbU91dD0hMSxvPC4wMDAxMTU3NDA3NDA3NDA3NDA3NT9zLmdsb2JhbHMuZGlzYWJsZVpvb21Jbj0hMDpvPjVlNCYmKHMuZ2xvYmFscy5kaXNhYmxlWm9vbU91dD0hMCk7dmFyIG49ci5nZXRUaW1lVW5pdHNmcm9tVGltZXN0YW1wKHQsaSx0aGlzLnV0YyksbD1zLmdsb2JhbHMuZ3JpZFdpZHRoL28saD1sLzI0LGM9aC82MCxkPWMvNjAsZz1NYXRoLmZsb29yKDI0Km8pLHU9TWF0aC5mbG9vcigxNDQwKm8pLHA9TWF0aC5mbG9vcihvKk90KSxmPU1hdGguZmxvb3IobykseD1NYXRoLmZsb29yKG8vMzApLGI9TWF0aC5mbG9vcihvLzM2NSksdj17bWluTWlsbGlzZWNvbmQ6bi5taW5NaWxsaXNlY29uZCxtaW5TZWNvbmQ6bi5taW5TZWNvbmQsbWluTWludXRlOm4ubWluTWludXRlLG1pbkhvdXI6bi5taW5Ib3VyLG1pbkRhdGU6bi5taW5EYXRlLG1pbk1vbnRoOm4ubWluTW9udGgsbWluWWVhcjpuLm1pblllYXJ9LG09e2ZpcnN0VmFsOnYsY3VycmVudE1pbGxpc2Vjb25kOnYubWluTWlsbGlzZWNvbmQsY3VycmVudFNlY29uZDp2Lm1pblNlY29uZCxjdXJyZW50TWludXRlOnYubWluTWludXRlLGN1cnJlbnRIb3VyOnYubWluSG91cixjdXJyZW50TW9udGhEYXRlOnYubWluRGF0ZSxjdXJyZW50RGF0ZTp2Lm1pbkRhdGUsY3VycmVudE1vbnRoOnYubWluTW9udGgsY3VycmVudFllYXI6di5taW5ZZWFyLGRheXNXaWR0aE9uWEF4aXM6bCxob3Vyc1dpZHRoT25YQXhpczpoLG1pbnV0ZXNXaWR0aE9uWEF4aXM6YyxzZWNvbmRzV2lkdGhPblhBeGlzOmQsbnVtYmVyT2ZTZWNvbmRzOnAsbnVtYmVyT2ZNaW51dGVzOnUsbnVtYmVyT2ZIb3VyczpnLG51bWJlck9mRGF5czpmLG51bWJlck9mTW9udGhzOngsbnVtYmVyT2ZZZWFyczpifTtzd2l0Y2godGhpcy50aWNrSW50ZXJ2YWwpe2Nhc2VcInllYXJzXCI6dGhpcy5nZW5lcmF0ZVllYXJTY2FsZShtKTticmVhaztjYXNlXCJtb250aHNcIjpjYXNlXCJoYWxmX3llYXJcIjp0aGlzLmdlbmVyYXRlTW9udGhTY2FsZShtKTticmVhaztjYXNlXCJtb250aHNfZGF5c1wiOmNhc2VcIm1vbnRoc19mb3J0bmlnaHRcIjpjYXNlXCJkYXlzXCI6Y2FzZVwid2Vla19kYXlzXCI6dGhpcy5nZW5lcmF0ZURheVNjYWxlKG0pO2JyZWFrO2Nhc2VcImhvdXJzXCI6dGhpcy5nZW5lcmF0ZUhvdXJTY2FsZShtKTticmVhaztjYXNlXCJtaW51dGVzX2ZpdmVzXCI6Y2FzZVwibWludXRlc1wiOnRoaXMuZ2VuZXJhdGVNaW51dGVTY2FsZShtKTticmVhaztjYXNlXCJzZWNvbmRzX3RlbnNcIjpjYXNlXCJzZWNvbmRzX2ZpdmVzXCI6Y2FzZVwic2Vjb25kc1wiOnRoaXMuZ2VuZXJhdGVTZWNvbmRTY2FsZShtKX12YXIgeT10aGlzLnRpbWVTY2FsZUFycmF5Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGk9e3Bvc2l0aW9uOnQucG9zaXRpb24sdW5pdDp0LnVuaXQseWVhcjp0LnllYXIsZGF5OnQuZGF5P3QuZGF5OjEsaG91cjp0LmhvdXI/dC5ob3VyOjAsbW9udGg6dC5tb250aCsxfTtyZXR1cm5cIm1vbnRoXCI9PT10LnVuaXQ/ZShlKHt9LGkpLHt9LHtkYXk6MSx2YWx1ZTp0LnZhbHVlKzF9KTpcImRheVwiPT09dC51bml0fHxcImhvdXJcIj09PXQudW5pdD9lKGUoe30saSkse30se3ZhbHVlOnQudmFsdWV9KTpcIm1pbnV0ZVwiPT09dC51bml0P2UoZSh7fSxpKSx7fSx7dmFsdWU6dC52YWx1ZSxtaW51dGU6dC52YWx1ZX0pOlwic2Vjb25kXCI9PT10LnVuaXQ/ZShlKHt9LGkpLHt9LHt2YWx1ZTp0LnZhbHVlLG1pbnV0ZTp0Lm1pbnV0ZSxzZWNvbmQ6dC5zZWNvbmR9KTp0fSkpO3JldHVybiB5LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGU9MSxpPU1hdGguY2VpbChzLmdsb2JhbHMuZ3JpZFdpZHRoLzEyMCkscj10LnZhbHVlO3ZvaWQgMCE9PXMuY29uZmlnLnhheGlzLnRpY2tBbW91bnQmJihpPXMuY29uZmlnLnhheGlzLnRpY2tBbW91bnQpLHkubGVuZ3RoPmkmJihlPU1hdGguZmxvb3IoeS5sZW5ndGgvaSkpO3ZhciBvPSExLG49ITE7c3dpdGNoKGEudGlja0ludGVydmFsKXtjYXNlXCJ5ZWFyc1wiOlwieWVhclwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwiaGFsZl95ZWFyXCI6ZT03LFwieWVhclwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwibW9udGhzXCI6ZT0xLFwieWVhclwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwibW9udGhzX2ZvcnRuaWdodFwiOmU9MTUsXCJ5ZWFyXCIhPT10LnVuaXQmJlwibW9udGhcIiE9PXQudW5pdHx8KG89ITApLDMwPT09ciYmKG49ITApO2JyZWFrO2Nhc2VcIm1vbnRoc19kYXlzXCI6ZT0xMCxcIm1vbnRoXCI9PT10LnVuaXQmJihvPSEwKSwzMD09PXImJihuPSEwKTticmVhaztjYXNlXCJ3ZWVrX2RheXNcIjplPTgsXCJtb250aFwiPT09dC51bml0JiYobz0hMCk7YnJlYWs7Y2FzZVwiZGF5c1wiOmU9MSxcIm1vbnRoXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJob3Vyc1wiOlwiZGF5XCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJtaW51dGVzX2ZpdmVzXCI6Y2FzZVwic2Vjb25kc19maXZlc1wiOnIlNSE9MCYmKG49ITApO2JyZWFrO2Nhc2VcInNlY29uZHNfdGVuc1wiOnIlMTAhPTAmJihuPSEwKX1pZihcImhvdXJzXCI9PT1hLnRpY2tJbnRlcnZhbHx8XCJtaW51dGVzX2ZpdmVzXCI9PT1hLnRpY2tJbnRlcnZhbHx8XCJzZWNvbmRzX3RlbnNcIj09PWEudGlja0ludGVydmFsfHxcInNlY29uZHNfZml2ZXNcIj09PWEudGlja0ludGVydmFsKXtpZighbilyZXR1cm4hMH1lbHNlIGlmKChyJWU9PTB8fG8pJiYhbilyZXR1cm4hMH0pKX19LHtrZXk6XCJyZWNhbGNEaW1lbnNpb25zQmFzZWRPbkZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy5mb3JtYXREYXRlcyh0KSxzPXRoaXMucmVtb3ZlT3ZlcmxhcHBpbmdUUyhhKTtpLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzPXMuc2xpY2UoKSxuZXcgb3QodGhpcy5jdHgpLnBsb3RDb29yZHMoKX19LHtrZXk6XCJkZXRlcm1pbmVJbnRlcnZhbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTI0KnQsaT02MCplO3N3aXRjaCghMCl7Y2FzZSB0LzM2NT41OnRoaXMudGlja0ludGVydmFsPVwieWVhcnNcIjticmVhaztjYXNlIHQ+ODAwOnRoaXMudGlja0ludGVydmFsPVwiaGFsZl95ZWFyXCI7YnJlYWs7Y2FzZSB0PjE4MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc1wiO2JyZWFrO2Nhc2UgdD45MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc19mb3J0bmlnaHRcIjticmVhaztjYXNlIHQ+NjA6dGhpcy50aWNrSW50ZXJ2YWw9XCJtb250aHNfZGF5c1wiO2JyZWFrO2Nhc2UgdD4zMDp0aGlzLnRpY2tJbnRlcnZhbD1cIndlZWtfZGF5c1wiO2JyZWFrO2Nhc2UgdD4yOnRoaXMudGlja0ludGVydmFsPVwiZGF5c1wiO2JyZWFrO2Nhc2UgZT4yLjQ6dGhpcy50aWNrSW50ZXJ2YWw9XCJob3Vyc1wiO2JyZWFrO2Nhc2UgaT4xNTp0aGlzLnRpY2tJbnRlcnZhbD1cIm1pbnV0ZXNfZml2ZXNcIjticmVhaztjYXNlIGk+NTp0aGlzLnRpY2tJbnRlcnZhbD1cIm1pbnV0ZXNcIjticmVhaztjYXNlIGk+MTp0aGlzLnRpY2tJbnRlcnZhbD1cInNlY29uZHNfdGVuc1wiO2JyZWFrO2Nhc2UgNjAqaT4yMDp0aGlzLnRpY2tJbnRlcnZhbD1cInNlY29uZHNfZml2ZXNcIjticmVhaztkZWZhdWx0OnRoaXMudGlja0ludGVydmFsPVwic2Vjb25kc1wifX19LHtrZXk6XCJnZW5lcmF0ZVllYXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnRNb250aCxhPXQuY3VycmVudFllYXIscz10LmRheXNXaWR0aE9uWEF4aXMscj10Lm51bWJlck9mWWVhcnMsbz1lLm1pblllYXIsbj0wLGw9bmV3IEkodGhpcy5jdHgpLGg9XCJ5ZWFyXCI7aWYoZS5taW5EYXRlPjF8fGUubWluTW9udGg+MCl7dmFyIGM9bC5kZXRlcm1pbmVSZW1haW5pbmdEYXlzT2ZZZWFyKGUubWluWWVhcixlLm1pbk1vbnRoLGUubWluRGF0ZSk7bj0obC5kZXRlcm1pbmVEYXlzT2ZZZWFyKGUubWluWWVhciktYysxKSpzLG89ZS5taW5ZZWFyKzEsdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpuLHZhbHVlOm8sdW5pdDpoLHllYXI6byxtb250aDp4Lm1vbnRoTW9kKGkrMSl9KX1lbHNlIDE9PT1lLm1pbkRhdGUmJjA9PT1lLm1pbk1vbnRoJiZ0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOm4sdmFsdWU6byx1bml0OmgseWVhcjphLG1vbnRoOngubW9udGhNb2QoaSsxKX0pO2Zvcih2YXIgZD1vLGc9bix1PTA7dTxyO3UrKylkKyssZz1sLmRldGVybWluZURheXNPZlllYXIoZC0xKSpzK2csdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpnLHZhbHVlOmQsdW5pdDpoLHllYXI6ZCxtb250aDoxfSl9fSx7a2V5OlwiZ2VuZXJhdGVNb250aFNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoRGF0ZSxhPXQuY3VycmVudE1vbnRoLHM9dC5jdXJyZW50WWVhcixyPXQuZGF5c1dpZHRoT25YQXhpcyxvPXQubnVtYmVyT2ZNb250aHMsbj1hLGw9MCxoPW5ldyBJKHRoaXMuY3R4KSxjPVwibW9udGhcIixkPTA7aWYoZS5taW5EYXRlPjEpe2w9KGguZGV0ZXJtaW5lRGF5c09mTW9udGhzKGErMSxlLm1pblllYXIpLWkrMSkqcixuPXgubW9udGhNb2QoYSsxKTt2YXIgZz1zK2QsdT14Lm1vbnRoTW9kKG4pLHA9bjswPT09biYmKGM9XCJ5ZWFyXCIscD1nLHU9MSxnKz1kKz0xKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmwsdmFsdWU6cCx1bml0OmMseWVhcjpnLG1vbnRoOnV9KX1lbHNlIHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bCx2YWx1ZTpuLHVuaXQ6Yyx5ZWFyOnMsbW9udGg6eC5tb250aE1vZChhKX0pO2Zvcih2YXIgZj1uKzEsYj1sLHY9MCxtPTE7djxvO3YrKyxtKyspezA9PT0oZj14Lm1vbnRoTW9kKGYpKT8oYz1cInllYXJcIixkKz0xKTpjPVwibW9udGhcIjt2YXIgeT10aGlzLl9nZXRZZWFyKHMsZixkKTtiPWguZGV0ZXJtaW5lRGF5c09mTW9udGhzKGYseSkqcitiO3ZhciB3PTA9PT1mP3k6Zjt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmIsdmFsdWU6dyx1bml0OmMseWVhcjp5LG1vbnRoOjA9PT1mPzE6Zn0pLGYrK319fSx7a2V5OlwiZ2VuZXJhdGVEYXlTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnRNb250aCxhPXQuY3VycmVudFllYXIscz10LmhvdXJzV2lkdGhPblhBeGlzLHI9dC5udW1iZXJPZkRheXMsbz1uZXcgSSh0aGlzLmN0eCksbj1cImRheVwiLGw9ZS5taW5EYXRlKzEsaD1sLGM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0Pm8uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUrMSxpKT8oaD0xLG49XCJtb250aFwiLGc9ZSs9MSxlKTplfSxkPSgyNC1lLm1pbkhvdXIpKnMsZz1sLHU9YyhoLGksYSk7MD09PWUubWluSG91ciYmMT09PWUubWluRGF0ZT8oZD0wLGc9eC5tb250aE1vZChlLm1pbk1vbnRoKSxuPVwibW9udGhcIixoPWUubWluRGF0ZSk6MSE9PWUubWluRGF0ZSYmMD09PWUubWluSG91ciYmMD09PWUubWluTWludXRlJiYoZD0wLGw9ZS5taW5EYXRlLGc9bCx1PWMoaD1sLGksYSkpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246ZCx2YWx1ZTpnLHVuaXQ6bix5ZWFyOnRoaXMuX2dldFllYXIoYSx1LDApLG1vbnRoOngubW9udGhNb2QodSksZGF5Omh9KTtmb3IodmFyIHA9ZCxmPTA7ZjxyO2YrKyl7bj1cImRheVwiLHU9YyhoKz0xLHUsdGhpcy5fZ2V0WWVhcihhLHUsMCkpO3ZhciBiPXRoaXMuX2dldFllYXIoYSx1LDApO3A9MjQqcytwO3ZhciB2PTE9PT1oP3gubW9udGhNb2QodSk6aDt0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOnAsdmFsdWU6dix1bml0Om4seWVhcjpiLG1vbnRoOngubW9udGhNb2QodSksZGF5OnZ9KX19fSx7a2V5OlwiZ2VuZXJhdGVIb3VyU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpcnN0VmFsLGk9dC5jdXJyZW50RGF0ZSxhPXQuY3VycmVudE1vbnRoLHM9dC5jdXJyZW50WWVhcixyPXQubWludXRlc1dpZHRoT25YQXhpcyxvPXQubnVtYmVyT2ZIb3VycyxuPW5ldyBJKHRoaXMuY3R4KSxsPVwiaG91clwiLGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD5uLmRldGVybWluZURheXNPZk1vbnRocyhlKzEscykmJihmPTEsZSs9MSkse21vbnRoOmUsZGF0ZTpmfX0sYz1mdW5jdGlvbih0LGUpe3JldHVybiB0Pm4uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUrMSxzKT9lKz0xOmV9LGQ9NjAtKGUubWluTWludXRlK2UubWluU2Vjb25kLzYwKSxnPWQqcix1PWUubWluSG91cisxLHA9dTs2MD09PWQmJihnPTAscD0odT1lLm1pbkhvdXIpKzEpO3ZhciBmPWk7cD49MjQmJihwPTAsZis9MSxsPVwiZGF5XCIpO3ZhciBiPWgoZixhKS5tb250aDtiPWMoZixiKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmcsdmFsdWU6dSx1bml0OmwsZGF5OmYsaG91cjpwLHllYXI6cyxtb250aDp4Lm1vbnRoTW9kKGIpfSkscCsrO2Zvcih2YXIgdj1nLG09MDttPG87bSsrKXtpZihsPVwiaG91clwiLHA+PTI0KXA9MCxsPVwiZGF5XCIsYj1oKGYrPTEsYikubW9udGgsYj1jKGYsYik7dmFyIHk9dGhpcy5fZ2V0WWVhcihzLGIsMCk7dj02MCpyK3Y7dmFyIHc9MD09PXA/ZjpwO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246dix2YWx1ZTp3LHVuaXQ6bCxob3VyOnAsZGF5OmYseWVhcjp5LG1vbnRoOngubW9udGhNb2QoYil9KSxwKyt9fX0se2tleTpcImdlbmVyYXRlTWludXRlU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jdXJyZW50TWlsbGlzZWNvbmQsaT10LmN1cnJlbnRTZWNvbmQsYT10LmN1cnJlbnRNaW51dGUscz10LmN1cnJlbnRIb3VyLHI9dC5jdXJyZW50RGF0ZSxvPXQuY3VycmVudE1vbnRoLG49dC5jdXJyZW50WWVhcixsPXQubWludXRlc1dpZHRoT25YQXhpcyxoPXQuc2Vjb25kc1dpZHRoT25YQXhpcyxjPXQubnVtYmVyT2ZNaW51dGVzLGQ9YSsxLGc9cix1PW8scD1uLGY9cyxiPSg2MC1pLWUvMWUzKSpoLHY9MDt2PGM7disrKWQ+PTYwJiYoZD0wLDI0PT09KGYrPTEpJiYoZj0wKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpiLHZhbHVlOmQsdW5pdDpcIm1pbnV0ZVwiLGhvdXI6ZixtaW51dGU6ZCxkYXk6Zyx5ZWFyOnRoaXMuX2dldFllYXIocCx1LDApLG1vbnRoOngubW9udGhNb2QodSl9KSxiKz1sLGQrK319LHtrZXk6XCJnZW5lcmF0ZVNlY29uZFNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuY3VycmVudE1pbGxpc2Vjb25kLGk9dC5jdXJyZW50U2Vjb25kLGE9dC5jdXJyZW50TWludXRlLHM9dC5jdXJyZW50SG91cixyPXQuY3VycmVudERhdGUsbz10LmN1cnJlbnRNb250aCxuPXQuY3VycmVudFllYXIsbD10LnNlY29uZHNXaWR0aE9uWEF4aXMsaD10Lm51bWJlck9mU2Vjb25kcyxjPWkrMSxkPWEsZz1yLHU9byxwPW4sZj1zLGI9KDFlMy1lKS8xZTMqbCx2PTA7djxoO3YrKyljPj02MCYmKGM9MCwrK2Q+PTYwJiYoZD0wLDI0PT09KytmJiYoZj0wKSkpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Yix2YWx1ZTpjLHVuaXQ6XCJzZWNvbmRcIixob3VyOmYsbWludXRlOmQsc2Vjb25kOmMsZGF5OmcseWVhcjp0aGlzLl9nZXRZZWFyKHAsdSwwKSxtb250aDp4Lm1vbnRoTW9kKHUpfSksYis9bCxjKyt9fSx7a2V5OlwiY3JlYXRlUmF3RGF0ZVN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dC55ZWFyO3JldHVybiAwPT09dC5tb250aCYmKHQubW9udGg9MSksaSs9XCItXCIrKFwiMFwiK3QubW9udGgudG9TdHJpbmcoKSkuc2xpY2UoLTIpLFwiZGF5XCI9PT10LnVuaXQ/aSs9XCJkYXlcIj09PXQudW5pdD9cIi1cIisoXCIwXCIrZSkuc2xpY2UoLTIpOlwiLTAxXCI6aSs9XCItXCIrKFwiMFwiKyh0LmRheT90LmRheTpcIjFcIikpLnNsaWNlKC0yKSxcImhvdXJcIj09PXQudW5pdD9pKz1cImhvdXJcIj09PXQudW5pdD9cIlRcIisoXCIwXCIrZSkuc2xpY2UoLTIpOlwiVDAwXCI6aSs9XCJUXCIrKFwiMFwiKyh0LmhvdXI/dC5ob3VyOlwiMFwiKSkuc2xpY2UoLTIpLFwibWludXRlXCI9PT10LnVuaXQ/aSs9XCI6XCIrKFwiMFwiK2UpLnNsaWNlKC0yKTppKz1cIjpcIisodC5taW51dGU/KFwiMFwiK3QubWludXRlKS5zbGljZSgtMik6XCIwMFwiKSxcInNlY29uZFwiPT09dC51bml0P2krPVwiOlwiKyhcIjBcIitlKS5zbGljZSgtMik6aSs9XCI6MDBcIix0aGlzLnV0YyYmKGkrPVwiLjAwMFpcIiksaX19LHtrZXk6XCJmb3JtYXREYXRlc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLnc7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXt2YXIgYT10LnZhbHVlLnRvU3RyaW5nKCkscz1uZXcgSShlLmN0eCkscj1lLmNyZWF0ZVJhd0RhdGVTdHJpbmcodCxhKSxvPXMuZ2V0RGF0ZShzLnBhcnNlRGF0ZShyKSk7aWYoZS51dGN8fChvPXMuZ2V0RGF0ZShzLnBhcnNlRGF0ZVdpdGhUaW1lem9uZShyKSkpLHZvaWQgMD09PWkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXQpe3ZhciBuPVwiZGQgTU1NXCIsbD1pLmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVGb3JtYXR0ZXI7XCJ5ZWFyXCI9PT10LnVuaXQmJihuPWwueWVhciksXCJtb250aFwiPT09dC51bml0JiYobj1sLm1vbnRoKSxcImRheVwiPT09dC51bml0JiYobj1sLmRheSksXCJob3VyXCI9PT10LnVuaXQmJihuPWwuaG91ciksXCJtaW51dGVcIj09PXQudW5pdCYmKG49bC5taW51dGUpLFwic2Vjb25kXCI9PT10LnVuaXQmJihuPWwuc2Vjb25kKSxhPXMuZm9ybWF0RGF0ZShvLG4pfWVsc2UgYT1zLmZvcm1hdERhdGUobyxpLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0KTtyZXR1cm57ZGF0ZVN0cmluZzpyLHBvc2l0aW9uOnQucG9zaXRpb24sdmFsdWU6YSx1bml0OnQudW5pdCx5ZWFyOnQueWVhcixtb250aDp0Lm1vbnRofX0pKX19LHtrZXk6XCJyZW1vdmVPdmVybGFwcGluZ1RTXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLGE9bmV3IG0odGhpcy5jdHgpLHM9ITE7dC5sZW5ndGg+MCYmdFswXS52YWx1ZSYmdC5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWUubGVuZ3RoPT09dFswXS52YWx1ZS5sZW5ndGh9KSkmJihzPSEwLGU9YS5nZXRUZXh0UmVjdHModFswXS52YWx1ZSkud2lkdGgpO3ZhciByPTAsbz10Lm1hcCgoZnVuY3Rpb24obyxuKXtpZihuPjAmJmkudy5jb25maWcueGF4aXMubGFiZWxzLmhpZGVPdmVybGFwcGluZ0xhYmVscyl7dmFyIGw9cz9lOmEuZ2V0VGV4dFJlY3RzKHRbcl0udmFsdWUpLndpZHRoLGg9dFtyXS5wb3NpdGlvbjtyZXR1cm4gby5wb3NpdGlvbj5oK2wrMTA/KHI9bixvKTpudWxsfXJldHVybiBvfSkpO3JldHVybiBvPW8uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSl9fSx7a2V5OlwiX2dldFllYXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQrTWF0aC5mbG9vcihlLzEyKStpfX1dKSx0fSgpLFd0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLmN0eD1pLHRoaXMudz1pLncsdGhpcy5lbD1lfXJldHVybiByKHQsW3trZXk6XCJzZXR1cEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWcsaT1lLmNoYXJ0LnR5cGU7dC5heGlzQ2hhcnRzPVtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiY2FuZGxlc3RpY2tcIixcImJveFBsb3RcIixcInNjYXR0ZXJcIixcImJ1YmJsZVwiLFwicmFkYXJcIixcImhlYXRtYXBcIixcInRyZWVtYXBcIl0uaW5kZXhPZihpKT4tMSx0Lnh5Q2hhcnRzPVtcImxpbmVcIixcImFyZWFcIixcImJhclwiLFwicmFuZ2VCYXJcIixcInJhbmdlQXJlYVwiLFwiY2FuZGxlc3RpY2tcIixcImJveFBsb3RcIixcInNjYXR0ZXJcIixcImJ1YmJsZVwiXS5pbmRleE9mKGkpPi0xLHQuaXNCYXJIb3Jpem9udGFsPShcImJhclwiPT09ZS5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1lLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09ZS5jaGFydC50eXBlKSYmZS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCx0LmNoYXJ0Q2xhc3M9XCIuYXBleGNoYXJ0c1wiK3QuY2hhcnRJRCx0LmRvbS5iYXNlRWw9dGhpcy5lbCx0LmRvbS5lbFdyYXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxtLnNldEF0dHJzKHQuZG9tLmVsV3JhcCx7aWQ6dC5jaGFydENsYXNzLnN1YnN0cmluZygxKSxjbGFzczpcImFwZXhjaGFydHMtY2FudmFzIFwiK3QuY2hhcnRDbGFzcy5zdWJzdHJpbmcoMSl9KSx0aGlzLmVsLmFwcGVuZENoaWxkKHQuZG9tLmVsV3JhcCksdC5kb20uUGFwZXI9bmV3IHdpbmRvdy5TVkcuRG9jKHQuZG9tLmVsV3JhcCksdC5kb20uUGFwZXIuYXR0cih7Y2xhc3M6XCJhcGV4Y2hhcnRzLXN2Z1wiLFwieG1sbnM6ZGF0YVwiOlwiQXBleENoYXJ0c05TXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLmNoYXJ0Lm9mZnNldFgsXCIsIFwiKS5jb25jYXQoZS5jaGFydC5vZmZzZXRZLFwiKVwiKX0pLHQuZG9tLlBhcGVyLm5vZGUuc3R5bGUuYmFja2dyb3VuZD1cImRhcmtcIiE9PWUudGhlbWUubW9kZXx8ZS5jaGFydC5iYWNrZ3JvdW5kP2UuY2hhcnQuYmFja2dyb3VuZDpcInJnYmEoMCwgMCwgMCwgMC44KVwiLHRoaXMuc2V0U1ZHRGltZW5zaW9ucygpLHQuZG9tLmVsTGVnZW5kRm9yZWlnbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5TVkdOUyxcImZvcmVpZ25PYmplY3RcIiksbS5zZXRBdHRycyh0LmRvbS5lbExlZ2VuZEZvcmVpZ24se3g6MCx5OjAsd2lkdGg6dC5zdmdXaWR0aCxoZWlnaHQ6dC5zdmdIZWlnaHR9KSx0LmRvbS5lbExlZ2VuZFdyYXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0LmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kXCIpLHQuZG9tLmVsTGVnZW5kV3JhcC5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiKSx0LmRvbS5lbExlZ2VuZEZvcmVpZ24uYXBwZW5kQ2hpbGQodC5kb20uZWxMZWdlbmRXcmFwKSx0LmRvbS5QYXBlci5ub2RlLmFwcGVuZENoaWxkKHQuZG9tLmVsTGVnZW5kRm9yZWlnbiksdC5kb20uZWxHcmFwaGljYWw9dC5kb20uUGFwZXIuZ3JvdXAoKS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtaW5uZXIgYXBleGNoYXJ0cy1ncmFwaGljYWxcIn0pLHQuZG9tLmVsRGVmcz10LmRvbS5QYXBlci5kZWZzKCksdC5kb20uUGFwZXIuYWRkKHQuZG9tLmVsR3JhcGhpY2FsKSx0LmRvbS5lbEdyYXBoaWNhbC5hZGQodC5kb20uZWxEZWZzKX19LHtrZXk6XCJwbG90Q2hhcnRUeXBlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1pLmNvbmZpZyxzPWkuZ2xvYmFscyxyPXtzZXJpZXM6W10saTpbXX0sbz17c2VyaWVzOltdLGk6W119LG49e3NlcmllczpbXSxpOltdfSxsPXtzZXJpZXM6W10saTpbXX0saD17c2VyaWVzOltdLGk6W119LGM9e3NlcmllczpbXSxpOltdfSxkPXtzZXJpZXM6W10saTpbXX0sZz17c2VyaWVzOltdLGk6W119LHU9e3NlcmllczpbXSxzZXJpZXNSYW5nZUVuZDpbXSxpOltdfTtzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKGUscCl7dmFyIGY9MDt2b2lkIDAhPT10W3BdLnR5cGU/KFwiY29sdW1uXCI9PT10W3BdLnR5cGV8fFwiYmFyXCI9PT10W3BdLnR5cGU/KHMuc2VyaWVzLmxlbmd0aD4xJiZhLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsJiZjb25zb2xlLndhcm4oXCJIb3Jpem9udGFsIGJhcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gYSBtaXhlZC9jb21ibyBjaGFydC4gUGxlYXNlIHR1cm4gb2ZmIGBwbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbGBcIiksaC5zZXJpZXMucHVzaChlKSxoLmkucHVzaChwKSxmKyssaS5nbG9iYWxzLmNvbHVtblNlcmllcz1oLnNlcmllcyk6XCJhcmVhXCI9PT10W3BdLnR5cGU/KG8uc2VyaWVzLnB1c2goZSksby5pLnB1c2gocCksZisrKTpcImxpbmVcIj09PXRbcF0udHlwZT8oci5zZXJpZXMucHVzaChlKSxyLmkucHVzaChwKSxmKyspOlwic2NhdHRlclwiPT09dFtwXS50eXBlPyhuLnNlcmllcy5wdXNoKGUpLG4uaS5wdXNoKHApKTpcImJ1YmJsZVwiPT09dFtwXS50eXBlPyhsLnNlcmllcy5wdXNoKGUpLGwuaS5wdXNoKHApLGYrKyk6XCJjYW5kbGVzdGlja1wiPT09dFtwXS50eXBlPyhjLnNlcmllcy5wdXNoKGUpLGMuaS5wdXNoKHApLGYrKyk6XCJib3hQbG90XCI9PT10W3BdLnR5cGU/KGQuc2VyaWVzLnB1c2goZSksZC5pLnB1c2gocCksZisrKTpcInJhbmdlQmFyXCI9PT10W3BdLnR5cGU/KGcuc2VyaWVzLnB1c2goZSksZy5pLnB1c2gocCksZisrKTpcInJhbmdlQXJlYVwiPT09dFtwXS50eXBlPyh1LnNlcmllcy5wdXNoKHMuc2VyaWVzUmFuZ2VTdGFydFtwXSksdS5zZXJpZXNSYW5nZUVuZC5wdXNoKHMuc2VyaWVzUmFuZ2VFbmRbcF0pLHUuaS5wdXNoKHApLGYrKyk6Y29uc29sZS53YXJuKFwiWW91IGhhdmUgc3BlY2lmaWVkIGFuIHVucmVjb2duaXplZCBjaGFydCB0eXBlLiBBdmFpbGFibGUgdHlwZXMgZm9yIHRoaXMgcHJvcGVydHkgYXJlIGxpbmUvYXJlYS9jb2x1bW4vYmFyL3NjYXR0ZXIvYnViYmxlL2NhbmRsZXN0aWNrL2JveFBsb3QvcmFuZ2VCYXIvcmFuZ2VBcmVhXCIpLGY+MSYmKHMuY29tYm9DaGFydHM9ITApKTooci5zZXJpZXMucHVzaChlKSxyLmkucHVzaChwKSl9KSk7dmFyIHA9bmV3IEZ0KHRoaXMuY3R4LGUpLGY9bmV3IGt0KHRoaXMuY3R4LGUpO3RoaXMuY3R4LnBpZT1uZXcgTHQodGhpcy5jdHgpO3ZhciB4PW5ldyBJdCh0aGlzLmN0eCk7dGhpcy5jdHgucmFuZ2VCYXI9bmV3IE10KHRoaXMuY3R4LGUpO3ZhciBiPW5ldyBQdCh0aGlzLmN0eCksdj1bXTtpZihzLmNvbWJvQ2hhcnRzKXtpZihvLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKHAuZHJhdyhvLnNlcmllcyxcImFyZWFcIixvLmkpKSxoLnNlcmllcy5sZW5ndGg+MClpZihpLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgbT1uZXcgd3QodGhpcy5jdHgsZSk7di5wdXNoKG0uZHJhdyhoLnNlcmllcyxoLmkpKX1lbHNlIHRoaXMuY3R4LmJhcj1uZXcgeXQodGhpcy5jdHgsZSksdi5wdXNoKHRoaXMuY3R4LmJhci5kcmF3KGguc2VyaWVzLGguaSkpO2lmKHUuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2gocC5kcmF3KHUuc2VyaWVzLFwicmFuZ2VBcmVhXCIsdS5pLHUuc2VyaWVzUmFuZ2VFbmQpKSxyLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKHAuZHJhdyhyLnNlcmllcyxcImxpbmVcIixyLmkpKSxjLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKGYuZHJhdyhjLnNlcmllcyxcImNhbmRsZXN0aWNrXCIsYy5pKSksZC5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaChmLmRyYXcoZC5zZXJpZXMsXCJib3hQbG90XCIsZC5pKSksZy5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaCh0aGlzLmN0eC5yYW5nZUJhci5kcmF3KGcuc2VyaWVzLGcuaSkpLG4uc2VyaWVzLmxlbmd0aD4wKXt2YXIgeT1uZXcgRnQodGhpcy5jdHgsZSwhMCk7di5wdXNoKHkuZHJhdyhuLnNlcmllcyxcInNjYXR0ZXJcIixuLmkpKX1pZihsLnNlcmllcy5sZW5ndGg+MCl7dmFyIHc9bmV3IEZ0KHRoaXMuY3R4LGUsITApO3YucHVzaCh3LmRyYXcobC5zZXJpZXMsXCJidWJibGVcIixsLmkpKX19ZWxzZSBzd2l0Y2goYS5jaGFydC50eXBlKXtjYXNlXCJsaW5lXCI6dj1wLmRyYXcocy5zZXJpZXMsXCJsaW5lXCIpO2JyZWFrO2Nhc2VcImFyZWFcIjp2PXAuZHJhdyhzLnNlcmllcyxcImFyZWFcIik7YnJlYWs7Y2FzZVwiYmFyXCI6aWYoYS5jaGFydC5zdGFja2VkKXY9bmV3IHd0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMpO2Vsc2UgdGhpcy5jdHguYmFyPW5ldyB5dCh0aGlzLmN0eCxlKSx2PXRoaXMuY3R4LmJhci5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJjYW5kbGVzdGlja1wiOnY9bmV3IGt0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMsXCJjYW5kbGVzdGlja1wiKTticmVhaztjYXNlXCJib3hQbG90XCI6dj1uZXcga3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyxhLmNoYXJ0LnR5cGUpO2JyZWFrO2Nhc2VcInJhbmdlQmFyXCI6dj10aGlzLmN0eC5yYW5nZUJhci5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJyYW5nZUFyZWFcIjp2PXAuZHJhdyhzLnNlcmllc1JhbmdlU3RhcnQsXCJyYW5nZUFyZWFcIix2b2lkIDAscy5zZXJpZXNSYW5nZUVuZCk7YnJlYWs7Y2FzZVwiaGVhdG1hcFwiOnY9bmV3IFN0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInRyZWVtYXBcIjp2PW5ldyBEdCh0aGlzLmN0eCxlKS5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJwaWVcIjpjYXNlXCJkb251dFwiOmNhc2VcInBvbGFyQXJlYVwiOnY9dGhpcy5jdHgucGllLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhZGlhbEJhclwiOnY9eC5kcmF3KHMuc2VyaWVzKTticmVhaztjYXNlXCJyYWRhclwiOnY9Yi5kcmF3KHMuc2VyaWVzKTticmVhaztkZWZhdWx0OnY9cC5kcmF3KHMuc2VyaWVzKX1yZXR1cm4gdn19LHtrZXk6XCJzZXRTVkdEaW1lbnNpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWc7dC5zdmdXaWR0aD1lLmNoYXJ0LndpZHRoLHQuc3ZnSGVpZ2h0PWUuY2hhcnQuaGVpZ2h0O3ZhciBpPXguZ2V0RGltZW5zaW9ucyh0aGlzLmVsKSxhPWUuY2hhcnQud2lkdGgudG9TdHJpbmcoKS5zcGxpdCgvWzAtOV0rL2cpLnBvcCgpO1wiJVwiPT09YT94LmlzTnVtYmVyKGlbMF0pJiYoMD09PWlbMF0ud2lkdGgmJihpPXguZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpKSx0LnN2Z1dpZHRoPWlbMF0qcGFyc2VJbnQoZS5jaGFydC53aWR0aCwxMCkvMTAwKTpcInB4XCIhPT1hJiZcIlwiIT09YXx8KHQuc3ZnV2lkdGg9cGFyc2VJbnQoZS5jaGFydC53aWR0aCwxMCkpO3ZhciBzPWUuY2hhcnQuaGVpZ2h0LnRvU3RyaW5nKCkuc3BsaXQoL1swLTldKy9nKS5wb3AoKTtpZihcImF1dG9cIiE9PXQuc3ZnSGVpZ2h0JiZcIlwiIT09dC5zdmdIZWlnaHQpaWYoXCIlXCI9PT1zKXt2YXIgcj14LmdldERpbWVuc2lvbnModGhpcy5lbC5wYXJlbnROb2RlKTt0LnN2Z0hlaWdodD1yWzFdKnBhcnNlSW50KGUuY2hhcnQuaGVpZ2h0LDEwKS8xMDB9ZWxzZSB0LnN2Z0hlaWdodD1wYXJzZUludChlLmNoYXJ0LmhlaWdodCwxMCk7ZWxzZSB0LmF4aXNDaGFydHM/dC5zdmdIZWlnaHQ9dC5zdmdXaWR0aC8xLjYxOnQuc3ZnSGVpZ2h0PXQuc3ZnV2lkdGgvMS4yO2lmKHQuc3ZnV2lkdGg8MCYmKHQuc3ZnV2lkdGg9MCksdC5zdmdIZWlnaHQ8MCYmKHQuc3ZnSGVpZ2h0PTApLG0uc2V0QXR0cnModC5kb20uUGFwZXIubm9kZSx7d2lkdGg6dC5zdmdXaWR0aCxoZWlnaHQ6dC5zdmdIZWlnaHR9KSxcIiVcIiE9PXMpe3ZhciBvPWUuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQ/MDp0LmF4aXNDaGFydHM/ZS5jaGFydC5wYXJlbnRIZWlnaHRPZmZzZXQ6MDt0LmRvbS5QYXBlci5ub2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZS5taW5IZWlnaHQ9dC5zdmdIZWlnaHQrbytcInB4XCJ9dC5kb20uZWxXcmFwLnN0eWxlLndpZHRoPXQuc3ZnV2lkdGgrXCJweFwiLHQuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQ9dC5zdmdIZWlnaHQrXCJweFwifX0se2tleTpcInNoaWZ0R3JhcGhQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMsZT10LnRyYW5zbGF0ZVksaT17dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK3QudHJhbnNsYXRlWCtcIiwgXCIrZStcIilcIn07bS5zZXRBdHRycyh0LmRvbS5lbEdyYXBoaWNhbC5ub2RlLGkpfX0se2tleTpcInJlc2l6ZU5vbkF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPTAsYT10LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8xOjE1O2ErPXQuY29uZmlnLmdyaWQucGFkZGluZy5ib3R0b20sXCJ0b3BcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJib3R0b21cIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8IXQuY29uZmlnLmxlZ2VuZC5zaG93fHx0LmNvbmZpZy5sZWdlbmQuZmxvYXRpbmd8fChpPW5ldyBsdCh0aGlzLmN0eCkubGVnZW5kSGVscGVycy5nZXRMZWdlbmRCQm94KCkuY2x3aCsxMCk7dmFyIHM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXJhZGlhbGJhciwgLmFwZXhjaGFydHMtcGllXCIpLHI9Mi4wNSp0Lmdsb2JhbHMucmFkaWFsU2l6ZTtpZihzJiYhdC5jb25maWcuY2hhcnQuc3BhcmtsaW5lLmVuYWJsZWQmJjAhPT10LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZSl7dmFyIG89eC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qocyk7cj1vLmJvdHRvbTt2YXIgbj1vLmJvdHRvbS1vLnRvcDtyPU1hdGgubWF4KDIuMDUqdC5nbG9iYWxzLnJhZGlhbFNpemUsbil9dmFyIGw9citlLnRyYW5zbGF0ZVkraSthO2UuZG9tLmVsTGVnZW5kRm9yZWlnbiYmZS5kb20uZWxMZWdlbmRGb3JlaWduLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLGwpLHQuY29uZmlnLmNoYXJ0LmhlaWdodCYmU3RyaW5nKHQuY29uZmlnLmNoYXJ0LmhlaWdodCkuaW5kZXhPZihcIiVcIik+MHx8KGUuZG9tLmVsV3JhcC5zdHlsZS5oZWlnaHQ9bCtcInB4XCIsbS5zZXRBdHRycyhlLmRvbS5QYXBlci5ub2RlLHtoZWlnaHQ6bH0pLGUuZG9tLlBhcGVyLm5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD1sK1wicHhcIil9fSx7a2V5OlwiY29yZUNhbGN1bGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7bmV3IFUodGhpcy5jdHgpLmluaXQoKX19LHtrZXk6XCJyZXNldEdsb2JhbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1mdW5jdGlvbigpe3JldHVybiB0LncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybltdfSkpfSxpPW5ldyBZLGE9dGhpcy53Lmdsb2JhbHM7aS5pbml0R2xvYmFsVmFycyhhKSxhLnNlcmllc1h2YWx1ZXM9ZSgpLGEuc2VyaWVzWXZhbHVlcz1lKCl9fSx7a2V5OlwiaXNNdWx0aXBsZVlcIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMudy5jb25maWcueWF4aXMuY29uc3RydWN0b3I9PT1BcnJheSYmdGhpcy53LmNvbmZpZy55YXhpcy5sZW5ndGg+MSlyZXR1cm4gdGhpcy53Lmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzPSEwLCEwfX0se2tleTpcInh5U2V0dGluZ3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW51bGwsZT10aGlzLnc7aWYoZS5nbG9iYWxzLmF4aXNDaGFydHMpe2lmKFwiYmFja1wiPT09ZS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5wb3NpdGlvbiluZXcgUSh0aGlzLmN0eCkuZHJhd1hDcm9zc2hhaXJzKCk7aWYoXCJiYWNrXCI9PT1lLmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnBvc2l0aW9uKW5ldyBRKHRoaXMuY3R4KS5kcmF3WUNyb3NzaGFpcnMoKTtpZihcImRhdGV0aW1lXCI9PT1lLmNvbmZpZy54YXhpcy50eXBlJiZ2b2lkIDA9PT1lLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyKXt0aGlzLmN0eC50aW1lU2NhbGU9bmV3IE50KHRoaXMuY3R4KTt2YXIgaT1bXTtpc0Zpbml0ZShlLmdsb2JhbHMubWluWCkmJmlzRmluaXRlKGUuZ2xvYmFscy5tYXhYKSYmIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/aT10aGlzLmN0eC50aW1lU2NhbGUuY2FsY3VsYXRlVGltZVNjYWxlVGlja3MoZS5nbG9iYWxzLm1pblgsZS5nbG9iYWxzLm1heFgpOmUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihpPXRoaXMuY3R4LnRpbWVTY2FsZS5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyhlLmdsb2JhbHMubWluWSxlLmdsb2JhbHMubWF4WSkpLHRoaXMuY3R4LnRpbWVTY2FsZS5yZWNhbGNEaW1lbnNpb25zQmFzZWRPbkZvcm1hdChpKX10PW5ldyB5KHRoaXMuY3R4KS5nZXRDYWxjdWxhdGVkUmF0aW9zKCl9cmV0dXJuIHR9fSx7a2V5OlwidXBkYXRlU291cmNlQ2hhcnRcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmN0eC53Lmdsb2JhbHMuc2VsZWN0aW9uPXZvaWQgMCx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHtjaGFydDp7c2VsZWN0aW9uOnt4YXhpczp7bWluOnQudy5nbG9iYWxzLm1pblgsbWF4OnQudy5nbG9iYWxzLm1heFh9fX19LCExLCExKX19LHtrZXk6XCJzZXR1cEJydXNoSGFuZGxlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxpPXRoaXMudztpZihpLmNvbmZpZy5jaGFydC5icnVzaC5lbmFibGVkJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuc2VsZWN0aW9uKXt2YXIgYT1BcnJheS5pc0FycmF5KGkuY29uZmlnLmNoYXJ0LmJydXNoLnRhcmdldHMpfHxbaS5jb25maWcuY2hhcnQuYnJ1c2gudGFyZ2V0XTthLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBpPUFwZXhDaGFydHMuZ2V0Q2hhcnRCeUlEKGUpO2kudy5nbG9iYWxzLmJydXNoU291cmNlPXQuY3R4LFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCYmKGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZD1mdW5jdGlvbigpe3QudXBkYXRlU291cmNlQ2hhcnQoaSl9KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLncuY29uZmlnLmNoYXJ0LmV2ZW50cy5zY3JvbGxlZCYmKGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkPWZ1bmN0aW9uKCl7dC51cGRhdGVTb3VyY2VDaGFydChpKX0pfSkpLGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb249ZnVuY3Rpb24odCxzKXthLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBhPUFwZXhDaGFydHMuZ2V0Q2hhcnRCeUlEKHQpLHI9eC5jbG9uZShpLmNvbmZpZy55YXhpcyk7aWYoaS5jb25maWcuY2hhcnQuYnJ1c2guYXV0b1NjYWxlWWF4aXMmJjE9PT1hLncuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKXt2YXIgbz1uZXcgXyhhKTtyPW8uYXV0b1NjYWxlWShhLHIscyl9dmFyIG49YS53LmNvbmZpZy55YXhpcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsaSxzKXtyZXR1cm5bXS5jb25jYXQodSh0KSxbZShlKHt9LGEudy5jb25maWcueWF4aXNbc10pLHt9LHttaW46clswXS5taW4sbWF4OnJbMF0ubWF4fSldKX0pLFtdKTthLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHt4YXhpczp7bWluOnMueGF4aXMubWluLG1heDpzLnhheGlzLm1heH0seWF4aXM6bn0sITEsITEsITEsITEpfSkpfX19fV0pLHR9KCksQnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcIl91cGRhdGVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0scz0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLHI9IShhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXSxvPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdJiZhcmd1bWVudHNbNF07cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXt2YXIgbD1bZS5jdHhdO3ImJihsPWUuY3R4LmdldFN5bmNlZENoYXJ0cygpKSxlLmN0eC53Lmdsb2JhbHMuaXNFeGVjQ2FsbGVkJiYobD1bZS5jdHhdLGUuY3R4LncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQ9ITEpLGwuZm9yRWFjaCgoZnVuY3Rpb24ocixoKXt2YXIgYz1yLnc7aWYoYy5nbG9iYWxzLnNob3VsZEFuaW1hdGU9cyxhfHwoYy5nbG9iYWxzLnJlc2l6ZWQ9ITAsYy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLHMmJnIuc2VyaWVzLmdldFByZXZpb3VzUGF0aHMoKSksdCYmXCJvYmplY3RcIj09PWkodCkmJihyLmNvbmZpZz1uZXcgRSh0KSx0PXkuZXh0ZW5kQXJyYXlQcm9wcyhyLmNvbmZpZyx0LGMpLHIudy5nbG9iYWxzLmNoYXJ0SUQhPT1lLmN0eC53Lmdsb2JhbHMuY2hhcnRJRCYmZGVsZXRlIHQuc2VyaWVzLGMuY29uZmlnPXguZXh0ZW5kKGMuY29uZmlnLHQpLG8mJihjLmdsb2JhbHMubGFzdFhBeGlzPXQueGF4aXM/eC5jbG9uZSh0LnhheGlzKTpbXSxjLmdsb2JhbHMubGFzdFlBeGlzPXQueWF4aXM/eC5jbG9uZSh0LnlheGlzKTpbXSxjLmdsb2JhbHMuaW5pdGlhbENvbmZpZz14LmV4dGVuZCh7fSxjLmNvbmZpZyksYy5nbG9iYWxzLmluaXRpYWxTZXJpZXM9eC5jbG9uZShjLmNvbmZpZy5zZXJpZXMpLHQuc2VyaWVzKSkpe2Zvcih2YXIgZD0wO2Q8Yy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO2QrKyl7dmFyIGc9Yy5jb25maWcuc2VyaWVzW2MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzW2RdXTtjLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzW2RdLmRhdGE9Yy5nbG9iYWxzLmF4aXNDaGFydHM/Zy5kYXRhLnNsaWNlKCk6Z31mb3IodmFyIHU9MDt1PGMuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmxlbmd0aDt1Kyspe3ZhciBwPWMuY29uZmlnLnNlcmllc1tjLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlc1t1XV07Yy5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc1t1XS5kYXRhPWMuZ2xvYmFscy5heGlzQ2hhcnRzP3AuZGF0YS5zbGljZSgpOnB9ci5zZXJpZXMuZW1wdHlDb2xsYXBzZWRTZXJpZXMoYy5jb25maWcuc2VyaWVzKX1yZXR1cm4gci51cGRhdGUodCkudGhlbigoZnVuY3Rpb24oKXtoPT09bC5sZW5ndGgtMSYmbihyKX0pKX0pKX0pKX19LHtrZXk6XCJfdXBkYXRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHMpe3ZhciByLG89aS53O3JldHVybiBvLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZT1lLG8uZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMCxlJiZpLmN0eC5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpLG8uZ2xvYmFscy5heGlzQ2hhcnRzPygwPT09KHI9dC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2V4dGVuZFNlcmllcyh0LGUpfSkpKS5sZW5ndGgmJihyPVt7ZGF0YTpbXX1dKSxvLmNvbmZpZy5zZXJpZXM9cik6by5jb25maWcuc2VyaWVzPXQuc2xpY2UoKSxhJiYoby5nbG9iYWxzLmluaXRpYWxDb25maWcuc2VyaWVzPXguY2xvbmUoby5jb25maWcuc2VyaWVzKSxvLmdsb2JhbHMuaW5pdGlhbFNlcmllcz14LmNsb25lKG8uY29uZmlnLnNlcmllcykpLGkuY3R4LnVwZGF0ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7cyhpLmN0eCl9KSl9KSl9fSx7a2V5OlwiX2V4dGVuZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSl7dmFyIGE9dGhpcy53LHM9YS5jb25maWcuc2VyaWVzW2ldO3JldHVybiBlKGUoe30sYS5jb25maWcuc2VyaWVzW2ldKSx7fSx7bmFtZTp0Lm5hbWU/dC5uYW1lOm51bGw9PXM/dm9pZCAwOnMubmFtZSxjb2xvcjp0LmNvbG9yP3QuY29sb3I6bnVsbD09cz92b2lkIDA6cy5jb2xvcix0eXBlOnQudHlwZT90LnR5cGU6bnVsbD09cz92b2lkIDA6cy50eXBlLGdyb3VwOnQuZ3JvdXA/dC5ncm91cDpudWxsPT1zP3ZvaWQgMDpzLmdyb3VwLGRhdGE6dC5kYXRhP3QuZGF0YTpudWxsPT1zP3ZvaWQgMDpzLmRhdGEsekluZGV4OnZvaWQgMCE9PXQuekluZGV4P3QuekluZGV4Oml9KX19LHtrZXk6XCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW51bGwscz1cIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ11cIik7cmV0dXJuIGkuZ2xvYmFscy5heGlzQ2hhcnRzP2E9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCJcIi5jb25jYXQocyxcIiBwYXRoW2o9J1wiKS5jb25jYXQoZSxcIiddLCBcIikuY29uY2F0KHMsXCIgY2lyY2xlW2o9J1wiKS5jb25jYXQoZSxcIiddLCBcIikuY29uY2F0KHMsXCIgcmVjdFtqPSdcIikuY29uY2F0KGUsXCInXVwiKSkubWVtYmVyc1swXTp2b2lkIDA9PT1lJiYoYT1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIlwiLmNvbmNhdChzLFwiIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ11cIikpLm1lbWJlcnNbMF0sXCJwaWVcIiE9PWkuY29uZmlnLmNoYXJ0LnR5cGUmJlwicG9sYXJBcmVhXCIhPT1pLmNvbmZpZy5jaGFydC50eXBlJiZcImRvbnV0XCIhPT1pLmNvbmZpZy5jaGFydC50eXBlfHx0aGlzLmN0eC5waWUucGllQ2xpY2tlZCh0KSksYT8obmV3IG0odGhpcy5jdHgpLnBhdGhNb3VzZURvd24oYSxudWxsKSxhLm5vZGU/YS5ub2RlOm51bGwpOihjb25zb2xlLndhcm4oXCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb246IEVsZW1lbnQgbm90IGZvdW5kXCIpLG51bGwpfX0se2tleTpcImZvcmNlWEF4aXNVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7aWYoW1wibWluXCIsXCJtYXhcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7dm9pZCAwIT09dC54YXhpc1tpXSYmKGUuY29uZmlnLnhheGlzW2ldPXQueGF4aXNbaV0sZS5nbG9iYWxzLmxhc3RYQXhpc1tpXT10LnhheGlzW2ldKX0pKSx0LnhheGlzLmNhdGVnb3JpZXMmJnQueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgmJihlLmNvbmZpZy54YXhpcy5jYXRlZ29yaWVzPXQueGF4aXMuY2F0ZWdvcmllcyksZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKXt2YXIgaT1uZXcgWCh0KTt0PWkuY29udmVydENhdFRvTnVtZXJpY1hheGlzKHQsdGhpcy5jdHgpfXJldHVybiB0fX0se2tleTpcImZvcmNlWUF4aXNVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFydCYmdC5jaGFydC5zdGFja2VkJiZcIjEwMCVcIj09PXQuY2hhcnQuc3RhY2tUeXBlJiYoQXJyYXkuaXNBcnJheSh0LnlheGlzKT90LnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dC55YXhpc1tpXS5taW49MCx0LnlheGlzW2ldLm1heD0xMDB9KSk6KHQueWF4aXMubWluPTAsdC55YXhpcy5tYXg9MTAwKSksdH19LHtrZXk6XCJyZXZlcnREZWZhdWx0QXhpc01pbk1heFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1pLmdsb2JhbHMubGFzdFhBeGlzLHM9aS5nbG9iYWxzLmxhc3RZQXhpczt0JiZ0LnhheGlzJiYoYT10LnhheGlzKSx0JiZ0LnlheGlzJiYocz10LnlheGlzKSxpLmNvbmZpZy54YXhpcy5taW49YS5taW4saS5jb25maWcueGF4aXMubWF4PWEubWF4O3ZhciByPWZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXNbdF0mJihpLmNvbmZpZy55YXhpc1t0XS5taW49c1t0XS5taW4saS5jb25maWcueWF4aXNbdF0ubWF4PXNbdF0ubWF4KX07aS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LGEpe2kuZ2xvYmFscy56b29tZWR8fHZvaWQgMCE9PXNbYV0/cihhKTp2b2lkIDAhPT1lLmN0eC5vcHRzLnlheGlzW2FdJiYodC5taW49ZS5jdHgub3B0cy55YXhpc1thXS5taW4sdC5tYXg9ZS5jdHgub3B0cy55YXhpc1thXS5tYXgpfSkpfX1dKSx0fSgpO1J0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCxIdD1mdW5jdGlvbih0LGUpe3ZhciBhPSh2b2lkIDAhPT10aGlzP3RoaXM6dCkuU1ZHPWZ1bmN0aW9uKHQpe2lmKGEuc3VwcG9ydGVkKXJldHVybiB0PW5ldyBhLkRvYyh0KSxhLnBhcnNlci5kcmF3fHxhLnByZXBhcmUoKSx0fTtpZihhLm5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixhLnhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIixhLnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLGEuc3ZnanM9XCJodHRwOi8vc3ZnanMuZGV2XCIsYS5zdXBwb3J0ZWQ9ITAsIWEuc3VwcG9ydGVkKXJldHVybiExO2EuZGlkPTFlMyxhLmVpZD1mdW5jdGlvbih0KXtyZXR1cm5cIlN2Z2pzXCIrZCh0KSthLmRpZCsrfSxhLmNyZWF0ZT1mdW5jdGlvbih0KXt2YXIgaT1lLmNyZWF0ZUVsZW1lbnROUyh0aGlzLm5zLHQpO3JldHVybiBpLnNldEF0dHJpYnV0ZShcImlkXCIsdGhpcy5laWQodCkpLGl9LGEuZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIHQsZTtlPSh0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkucG9wKCk7Zm9yKHZhciBpPXQubGVuZ3RoLTE7aT49MDtpLS0paWYodFtpXSlmb3IodmFyIHMgaW4gZSl0W2ldLnByb3RvdHlwZVtzXT1lW3NdO2EuU2V0JiZhLlNldC5pbmhlcml0JiZhLlNldC5pbmhlcml0KCl9LGEuaW52ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY3JlYXRlP3QuY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUodC5jcmVhdGUpKX07cmV0dXJuIHQuaW5oZXJpdCYmKGUucHJvdG90eXBlPW5ldyB0LmluaGVyaXQpLHQuZXh0ZW5kJiZhLmV4dGVuZChlLHQuZXh0ZW5kKSx0LmNvbnN0cnVjdCYmYS5leHRlbmQodC5wYXJlbnR8fGEuQ29udGFpbmVyLHQuY29uc3RydWN0KSxlfSxhLmFkb3B0PWZ1bmN0aW9uKGUpe3JldHVybiBlP2UuaW5zdGFuY2U/ZS5pbnN0YW5jZTooKGk9XCJzdmdcIj09ZS5ub2RlTmFtZT9lLnBhcmVudE5vZGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnQ/bmV3IGEuTmVzdGVkOm5ldyBhLkRvYzpcImxpbmVhckdyYWRpZW50XCI9PWUubm9kZU5hbWU/bmV3IGEuR3JhZGllbnQoXCJsaW5lYXJcIik6XCJyYWRpYWxHcmFkaWVudFwiPT1lLm5vZGVOYW1lP25ldyBhLkdyYWRpZW50KFwicmFkaWFsXCIpOmFbZChlLm5vZGVOYW1lKV0/bmV3KGFbZChlLm5vZGVOYW1lKV0pOm5ldyBhLkVsZW1lbnQoZSkpLnR5cGU9ZS5ub2RlTmFtZSxpLm5vZGU9ZSxlLmluc3RhbmNlPWksaSBpbnN0YW5jZW9mIGEuRG9jJiZpLm5hbWVzcGFjZSgpLmRlZnMoKSxpLnNldERhdGEoSlNPTi5wYXJzZShlLmdldEF0dHJpYnV0ZShcInN2Z2pzOmRhdGFcIikpfHx7fSksaSk6bnVsbDt2YXIgaX0sYS5wcmVwYXJlPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0saT0odD9uZXcgYS5Eb2ModCk6YS5hZG9wdChlLmRvY3VtZW50RWxlbWVudCkubmVzdGVkKCkpLnNpemUoMiwwKTthLnBhcnNlcj17Ym9keTp0fHxlLmRvY3VtZW50RWxlbWVudCxkcmF3Omkuc3R5bGUoXCJvcGFjaXR5OjA7cG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTAwJTt0b3A6LTEwMCU7b3ZlcmZsb3c6aGlkZGVuXCIpLm5vZGUscG9seTppLnBvbHlsaW5lKCkubm9kZSxwYXRoOmkucGF0aCgpLm5vZGUsbmF0aXZlOmEuY3JlYXRlKFwic3ZnXCIpfX0sYS5wYXJzZXI9e25hdGl2ZTphLmNyZWF0ZShcInN2Z1wiKX0sZS5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLChmdW5jdGlvbigpe2EucGFyc2VyLmRyYXd8fGEucHJlcGFyZSgpfSksITEpLGEucmVnZXg9e251bWJlckFuZFVuaXQ6L14oWystXT8oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/KShbYS16JV0qKSQvaSxoZXg6L14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaSxyZ2I6L3JnYlxcKChcXGQrKSwoXFxkKyksKFxcZCspXFwpLyxyZWZlcmVuY2U6LyMoW2EtejAtOVxcLV9dKykvaSx0cmFuc2Zvcm1zOi9cXClcXHMqLD9cXHMqLyx3aGl0ZXNwYWNlOi9cXHMvZyxpc0hleDovXiNbYS1mMC05XXszLDZ9JC9pLGlzUmdiOi9ecmdiXFwoLyxpc0NzczovW146XSs6W147XSs7Py8saXNCbGFuazovXihcXHMrKT8kLyxpc051bWJlcjovXlsrLV0/KFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKGVbKy1dP1xcZCspPyQvaSxpc1BlcmNlbnQ6L14tP1tcXGRcXC5dKyUkLyxpc0ltYWdlOi9cXC4oanBnfGpwZWd8cG5nfGdpZnxzdmcpKFxcP1tePV0rLiopPy9pLGRlbGltaXRlcjovW1xccyxdKy8saHlwaGVuOi8oW15lXSlcXC0vZ2kscGF0aExldHRlcnM6L1tNTEhWQ1NRVEFaXS9naSxpc1BhdGhMZXR0ZXI6L1tNTEhWQ1NRVEFaXS9pLG51bWJlcnNXaXRoRG90czovKChcXGQ/XFwuXFxkKyg/OmVbKy1dP1xcZCspPykoKD86XFwuXFxkKyg/OmVbKy1dP1xcZCspPykrKSkrL2dpLGRvdHM6L1xcLi9nfSxhLnV0aWxzPXttYXA6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dC5sZW5ndGgsYT1bXSxzPTA7czxpO3MrKylhLnB1c2goZSh0W3NdKSk7cmV0dXJuIGF9LGZpbHRlcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10Lmxlbmd0aCxhPVtdLHM9MDtzPGk7cysrKWUodFtzXSkmJmEucHVzaCh0W3NdKTtyZXR1cm4gYX0sZmlsdGVyU1ZHRWxlbWVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZmlsdGVyKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgdC5TVkdFbGVtZW50fSkpfX0sYS5kZWZhdWx0cz17YXR0cnM6e1wiZmlsbC1vcGFjaXR5XCI6MSxcInN0cm9rZS1vcGFjaXR5XCI6MSxcInN0cm9rZS13aWR0aFwiOjAsXCJzdHJva2UtbGluZWpvaW5cIjpcIm1pdGVyXCIsXCJzdHJva2UtbGluZWNhcFwiOlwiYnV0dFwiLGZpbGw6XCIjMDAwMDAwXCIsc3Ryb2tlOlwiIzAwMDAwMFwiLG9wYWNpdHk6MSx4OjAseTowLGN4OjAsY3k6MCx3aWR0aDowLGhlaWdodDowLHI6MCxyeDowLHJ5OjAsb2Zmc2V0OjAsXCJzdG9wLW9wYWNpdHlcIjoxLFwic3RvcC1jb2xvclwiOlwiIzAwMDAwMFwiLFwiZm9udC1zaXplXCI6MTYsXCJmb250LWZhbWlseVwiOlwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLFwidGV4dC1hbmNob3JcIjpcInN0YXJ0XCJ9fSxhLkNvbG9yPWZ1bmN0aW9uKHQpe3ZhciBlLHM7dGhpcy5yPTAsdGhpcy5nPTAsdGhpcy5iPTAsdCYmKFwic3RyaW5nXCI9PXR5cGVvZiB0P2EucmVnZXguaXNSZ2IudGVzdCh0KT8oZT1hLnJlZ2V4LnJnYi5leGVjKHQucmVwbGFjZShhLnJlZ2V4LndoaXRlc3BhY2UsXCJcIikpLHRoaXMucj1wYXJzZUludChlWzFdKSx0aGlzLmc9cGFyc2VJbnQoZVsyXSksdGhpcy5iPXBhcnNlSW50KGVbM10pKTphLnJlZ2V4LmlzSGV4LnRlc3QodCkmJihlPWEucmVnZXguaGV4LmV4ZWMoND09KHM9dCkubGVuZ3RoP1tcIiNcIixzLnN1YnN0cmluZygxLDIpLHMuc3Vic3RyaW5nKDEsMikscy5zdWJzdHJpbmcoMiwzKSxzLnN1YnN0cmluZygyLDMpLHMuc3Vic3RyaW5nKDMsNCkscy5zdWJzdHJpbmcoMyw0KV0uam9pbihcIlwiKTpzKSx0aGlzLnI9cGFyc2VJbnQoZVsxXSwxNiksdGhpcy5nPXBhcnNlSW50KGVbMl0sMTYpLHRoaXMuYj1wYXJzZUludChlWzNdLDE2KSk6XCJvYmplY3RcIj09PWkodCkmJih0aGlzLnI9dC5yLHRoaXMuZz10LmcsdGhpcy5iPXQuYikpfSxhLmV4dGVuZChhLkNvbG9yLHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvSGV4KCl9LHRvSGV4OmZ1bmN0aW9uKCl7cmV0dXJuXCIjXCIrZyh0aGlzLnIpK2codGhpcy5nKStnKHRoaXMuYil9LHRvUmdiOmZ1bmN0aW9uKCl7cmV0dXJuXCJyZ2IoXCIrW3RoaXMucix0aGlzLmcsdGhpcy5iXS5qb2luKCkrXCIpXCJ9LGJyaWdodG5lc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yLzI1NSouMyt0aGlzLmcvMjU1Ki41OSt0aGlzLmIvMjU1Ki4xMX0sbW9ycGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb249bmV3IGEuQ29sb3IodCksdGhpc30sYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/KHQ9dDwwPzA6dD4xPzE6dCxuZXcgYS5Db2xvcih7cjp+fih0aGlzLnIrKHRoaXMuZGVzdGluYXRpb24uci10aGlzLnIpKnQpLGc6fn4odGhpcy5nKyh0aGlzLmRlc3RpbmF0aW9uLmctdGhpcy5nKSp0KSxiOn5+KHRoaXMuYisodGhpcy5kZXN0aW5hdGlvbi5iLXRoaXMuYikqdCl9KSk6dGhpc319KSxhLkNvbG9yLnRlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQrPVwiXCIsYS5yZWdleC5pc0hleC50ZXN0KHQpfHxhLnJlZ2V4LmlzUmdiLnRlc3QodCl9LGEuQ29sb3IuaXNSZ2I9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwibnVtYmVyXCI9PXR5cGVvZiB0LnImJlwibnVtYmVyXCI9PXR5cGVvZiB0LmcmJlwibnVtYmVyXCI9PXR5cGVvZiB0LmJ9LGEuQ29sb3IuaXNDb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYS5Db2xvci5pc1JnYih0KXx8YS5Db2xvci50ZXN0KHQpfSxhLkFycmF5PWZ1bmN0aW9uKHQsZSl7MD09KHQ9KHR8fFtdKS52YWx1ZU9mKCkpLmxlbmd0aCYmZSYmKHQ9ZS52YWx1ZU9mKCkpLHRoaXMudmFsdWU9dGhpcy5wYXJzZSh0KX0sYS5leHRlbmQoYS5BcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5qb2luKFwiIFwiKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gdD10LnZhbHVlT2YoKSxBcnJheS5pc0FycmF5KHQpP3Q6dGhpcy5zcGxpdCh0KX19KSxhLlBvaW50QXJyYXk9ZnVuY3Rpb24odCxlKXthLkFycmF5LmNhbGwodGhpcyx0LGV8fFtbMCwwXV0pfSxhLlBvaW50QXJyYXkucHJvdG90eXBlPW5ldyBhLkFycmF5LGEuUG9pbnRBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5Qb2ludEFycmF5O2Zvcih2YXIgcz17TTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGUueD1pLng9dFswXSxlLnk9aS55PXRbMV0sW1wiTVwiLGUueCxlLnldfSxMOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzBdLGUueT10WzFdLFtcIkxcIix0WzBdLHRbMV1dfSxIOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzBdLFtcIkhcIix0WzBdXX0sVjpmdW5jdGlvbih0LGUpe3JldHVybiBlLnk9dFswXSxbXCJWXCIsdFswXV19LEM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbNF0sZS55PXRbNV0sW1wiQ1wiLHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdXX0sUTpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFsyXSxlLnk9dFszXSxbXCJRXCIsdFswXSx0WzFdLHRbMl0sdFszXV19LFM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMl0sZS55PXRbM10sW1wiU1wiLHRbMF0sdFsxXSx0WzJdLHRbM11dfSxaOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS54PWkueCxlLnk9aS55LFtcIlpcIl19fSxyPVwibWxodnF0Y3NhelwiLnNwbGl0KFwiXCIpLG89MCxuPXIubGVuZ3RoO288bjsrK28pc1tyW29dXT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxpLGEpe2lmKFwiSFwiPT10KWVbMF09ZVswXStpLng7ZWxzZSBpZihcIlZcIj09dCllWzBdPWVbMF0raS55O2Vsc2UgaWYoXCJBXCI9PXQpZVs1XT1lWzVdK2kueCxlWzZdPWVbNl0raS55O2Vsc2UgZm9yKHZhciByPTAsbz1lLmxlbmd0aDtyPG87KytyKWVbcl09ZVtyXSsociUyP2kueTppLngpO2lmKHMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHNbdF0pcmV0dXJuIHNbdF0oZSxpLGEpfX0ocltvXS50b1VwcGVyQ2FzZSgpKTthLlBhdGhBcnJheT1mdW5jdGlvbih0LGUpe2EuQXJyYXkuY2FsbCh0aGlzLHQsZXx8W1tcIk1cIiwwLDBdXSl9LGEuUGF0aEFycmF5LnByb3RvdHlwZT1uZXcgYS5BcnJheSxhLlBhdGhBcnJheS5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5QYXRoQXJyYXksYS5leHRlbmQoYS5QYXRoQXJyYXkse3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLGk9dC5sZW5ndGgsYT1cIlwiO2U8aTtlKyspYSs9dFtlXVswXSxudWxsIT10W2VdWzFdJiYoYSs9dFtlXVsxXSxudWxsIT10W2VdWzJdJiYoYSs9XCIgXCIsYSs9dFtlXVsyXSxudWxsIT10W2VdWzNdJiYoYSs9XCIgXCIsYSs9dFtlXVszXSxhKz1cIiBcIixhKz10W2VdWzRdLG51bGwhPXRbZV1bNV0mJihhKz1cIiBcIixhKz10W2VdWzVdLGErPVwiIFwiLGErPXRbZV1bNl0sbnVsbCE9dFtlXVs3XSYmKGErPVwiIFwiLGErPXRbZV1bN10pKSkpKTtyZXR1cm4gYStcIiBcIn0odGhpcy52YWx1ZSl9LG1vdmU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmJib3goKTtyZXR1cm4gaS54LGkueSx0aGlzfSxhdDpmdW5jdGlvbih0KXtpZighdGhpcy5kZXN0aW5hdGlvbilyZXR1cm4gdGhpcztmb3IodmFyIGU9dGhpcy52YWx1ZSxpPXRoaXMuZGVzdGluYXRpb24udmFsdWUscz1bXSxyPW5ldyBhLlBhdGhBcnJheSxvPTAsbj1lLmxlbmd0aDtvPG47bysrKXtzW29dPVtlW29dWzBdXTtmb3IodmFyIGw9MSxoPWVbb10ubGVuZ3RoO2w8aDtsKyspc1tvXVtsXT1lW29dW2xdKyhpW29dW2xdLWVbb11bbF0pKnQ7XCJBXCI9PT1zW29dWzBdJiYoc1tvXVs0XT0rKDAhPXNbb11bNF0pLHNbb11bNV09KygwIT1zW29dWzVdKSl9cmV0dXJuIHIudmFsdWU9cyxyfSxwYXJzZTpmdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgYS5QYXRoQXJyYXkpcmV0dXJuIHQudmFsdWVPZigpO3ZhciBlLGk9e006MixMOjIsSDoxLFY6MSxDOjYsUzo0LFE6NCxUOjIsQTo3LFo6MH07dD1cInN0cmluZ1wiPT10eXBlb2YgdD90LnJlcGxhY2UoYS5yZWdleC5udW1iZXJzV2l0aERvdHMsaCkucmVwbGFjZShhLnJlZ2V4LnBhdGhMZXR0ZXJzLFwiICQmIFwiKS5yZXBsYWNlKGEucmVnZXguaHlwaGVuLFwiJDEgLVwiKS50cmltKCkuc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpOnQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybltdLmNvbmNhdC5jYWxsKHQsZSl9KSxbXSk7dmFyIHI9W10sbz1uZXcgYS5Qb2ludCxuPW5ldyBhLlBvaW50LGw9MCxjPXQubGVuZ3RoO2Rve2EucmVnZXguaXNQYXRoTGV0dGVyLnRlc3QodFtsXSk/KGU9dFtsXSwrK2wpOlwiTVwiPT1lP2U9XCJMXCI6XCJtXCI9PWUmJihlPVwibFwiKSxyLnB1c2goc1tlXS5jYWxsKG51bGwsdC5zbGljZShsLGwrPWlbZS50b1VwcGVyQ2FzZSgpXSkubWFwKHBhcnNlRmxvYXQpLG8sbikpfXdoaWxlKGM+bCk7cmV0dXJuIHJ9LGJib3g6ZnVuY3Rpb24oKXtyZXR1cm4gYS5wYXJzZXIuZHJhd3x8YS5wcmVwYXJlKCksYS5wYXJzZXIucGF0aC5zZXRBdHRyaWJ1dGUoXCJkXCIsdGhpcy50b1N0cmluZygpKSxhLnBhcnNlci5wYXRoLmdldEJCb3goKX19KSxhLk51bWJlcj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dGhpcy52YWx1ZT0wLHRoaXMudW5pdD1lfHxcIlwiLFwibnVtYmVyXCI9PXR5cGVvZiB0P3RoaXMudmFsdWU9aXNOYU4odCk/MDppc0Zpbml0ZSh0KT90OnQ8MD8tMzRlMzc6MzRlMzc6XCJzdHJpbmdcIj09dHlwZW9mIHQ/KGU9dC5tYXRjaChhLnJlZ2V4Lm51bWJlckFuZFVuaXQpKSYmKHRoaXMudmFsdWU9cGFyc2VGbG9hdChlWzFdKSxcIiVcIj09ZVs1XT90aGlzLnZhbHVlLz0xMDA6XCJzXCI9PWVbNV0mJih0aGlzLnZhbHVlKj0xZTMpLHRoaXMudW5pdD1lWzVdKTp0IGluc3RhbmNlb2YgYS5OdW1iZXImJih0aGlzLnZhbHVlPXQudmFsdWVPZigpLHRoaXMudW5pdD10LnVuaXQpfSxleHRlbmQ6e3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuKFwiJVwiPT10aGlzLnVuaXQ/fn4oMWU4KnRoaXMudmFsdWUpLzFlNjpcInNcIj09dGhpcy51bml0P3RoaXMudmFsdWUvMWUzOnRoaXMudmFsdWUpK3RoaXMudW5pdH0sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxwbHVzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBhLk51bWJlcih0KSxuZXcgYS5OdW1iZXIodGhpcyt0LHRoaXMudW5pdHx8dC51bml0KX0sbWludXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IGEuTnVtYmVyKHQpLG5ldyBhLk51bWJlcih0aGlzLXQsdGhpcy51bml0fHx0LnVuaXQpfSx0aW1lczpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgYS5OdW1iZXIodCksbmV3IGEuTnVtYmVyKHRoaXMqdCx0aGlzLnVuaXR8fHQudW5pdCl9LGRpdmlkZTpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgYS5OdW1iZXIodCksbmV3IGEuTnVtYmVyKHRoaXMvdCx0aGlzLnVuaXR8fHQudW5pdCl9LHRvOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBhLk51bWJlcih0aGlzKTtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdCYmKGUudW5pdD10KSxlfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5OdW1iZXIodCksdC5yZWxhdGl2ZSYmKHRoaXMuZGVzdGluYXRpb24udmFsdWUrPXRoaXMudmFsdWUpLHRoaXN9LGF0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uP25ldyBhLk51bWJlcih0aGlzLmRlc3RpbmF0aW9uKS5taW51cyh0aGlzKS50aW1lcyh0KS5wbHVzKHRoaXMpOnRoaXN9fX0pLGEuRWxlbWVudD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX3N0cm9rZT1hLmRlZmF1bHRzLmF0dHJzLnN0cm9rZSx0aGlzLl9ldmVudD1udWxsLHRoaXMuZG9tPXt9LCh0aGlzLm5vZGU9dCkmJih0aGlzLnR5cGU9dC5ub2RlTmFtZSx0aGlzLm5vZGUuaW5zdGFuY2U9dGhpcyx0aGlzLl9zdHJva2U9dC5nZXRBdHRyaWJ1dGUoXCJzdHJva2VcIil8fHRoaXMuX3N0cm9rZSl9LGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwieFwiLHQpfSx5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ5XCIsdCl9LGN4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMueCgpK3RoaXMud2lkdGgoKS8yOnRoaXMueCh0LXRoaXMud2lkdGgoKS8yKX0sY3k6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy55KCkrdGhpcy5oZWlnaHQoKS8yOnRoaXMueSh0LXRoaXMuaGVpZ2h0KCkvMil9LG1vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy54KHQpLnkoZSl9LGNlbnRlcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmN4KHQpLmN5KGUpfSx3aWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwid2lkdGhcIix0KX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJoZWlnaHRcIix0KX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLndpZHRoKG5ldyBhLk51bWJlcihpLndpZHRoKSkuaGVpZ2h0KG5ldyBhLk51bWJlcihpLmhlaWdodCkpfSxjbG9uZTpmdW5jdGlvbih0KXt0aGlzLndyaXRlRGF0YVRvRG9tKCk7dmFyIGU9eCh0aGlzLm5vZGUuY2xvbmVOb2RlKCEwKSk7cmV0dXJuIHQ/dC5hZGQoZSk6dGhpcy5hZnRlcihlKSxlfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5yZW1vdmVFbGVtZW50KHRoaXMpLHRoaXN9LHJlcGxhY2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWZ0ZXIodCkucmVtb3ZlKCksdH0sYWRkVG86ZnVuY3Rpb24odCl7cmV0dXJuIHQucHV0KHRoaXMpfSxwdXRJbjpmdW5jdGlvbih0KXtyZXR1cm4gdC5hZGQodGhpcyl9LGlkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJpZFwiLHQpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3R5bGUoXCJkaXNwbGF5XCIsXCJcIil9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZShcImRpc3BsYXlcIixcIm5vbmVcIil9LHZpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm5cIm5vbmVcIiE9dGhpcy5zdHlsZShcImRpc3BsYXlcIil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cihcImlkXCIpfSxjbGFzc2VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hdHRyKFwiY2xhc3NcIik7cmV0dXJuIG51bGw9PXQ/W106dC50cmltKCkuc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpfSxoYXNDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4tMSE9dGhpcy5jbGFzc2VzKCkuaW5kZXhPZih0KX0sYWRkQ2xhc3M6ZnVuY3Rpb24odCl7aWYoIXRoaXMuaGFzQ2xhc3ModCkpe3ZhciBlPXRoaXMuY2xhc3NlcygpO2UucHVzaCh0KSx0aGlzLmF0dHIoXCJjbGFzc1wiLGUuam9pbihcIiBcIikpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNDbGFzcyh0KSYmdGhpcy5hdHRyKFwiY2xhc3NcIix0aGlzLmNsYXNzZXMoKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlIT10fSkpLmpvaW4oXCIgXCIpKSx0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNDbGFzcyh0KT90aGlzLnJlbW92ZUNsYXNzKHQpOnRoaXMuYWRkQ2xhc3ModCl9LHJlZmVyZW5jZTpmdW5jdGlvbih0KXtyZXR1cm4gYS5nZXQodGhpcy5hdHRyKHQpKX0scGFyZW50OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXM7aWYoIWkubm9kZS5wYXJlbnROb2RlKXJldHVybiBudWxsO2lmKGk9YS5hZG9wdChpLm5vZGUucGFyZW50Tm9kZSksIWUpcmV0dXJuIGk7Zm9yKDtpJiZpLm5vZGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnQ7KXtpZihcInN0cmluZ1wiPT10eXBlb2YgZT9pLm1hdGNoZXMoZSk6aSBpbnN0YW5jZW9mIGUpcmV0dXJuIGk7aWYoIWkubm9kZS5wYXJlbnROb2RlfHxcIiNkb2N1bWVudFwiPT1pLm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZSlyZXR1cm4gbnVsbDtpPWEuYWRvcHQoaS5ub2RlLnBhcmVudE5vZGUpfX0sZG9jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhLkRvYz90aGlzOnRoaXMucGFyZW50KGEuRG9jKX0scGFyZW50czpmdW5jdGlvbih0KXt2YXIgZT1bXSxpPXRoaXM7ZG97aWYoIShpPWkucGFyZW50KHQpKXx8IWkubm9kZSlicmVhaztlLnB1c2goaSl9d2hpbGUoaS5wYXJlbnQpO3JldHVybiBlfSxtYXRjaGVzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybih0Lm1hdGNoZXN8fHQubWF0Y2hlc1NlbGVjdG9yfHx0Lm1zTWF0Y2hlc1NlbGVjdG9yfHx0Lm1vek1hdGNoZXNTZWxlY3Rvcnx8dC53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fHQub01hdGNoZXNTZWxlY3RvcikuY2FsbCh0LGUpfSh0aGlzLm5vZGUsdCl9LG5hdGl2ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9LHN2ZzpmdW5jdGlvbih0KXt2YXIgaT1lLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIik7aWYoISh0JiZ0aGlzIGluc3RhbmNlb2YgYS5QYXJlbnQpKXJldHVybiBpLmFwcGVuZENoaWxkKHQ9ZS5jcmVhdGVFbGVtZW50KFwic3ZnXCIpKSx0aGlzLndyaXRlRGF0YVRvRG9tKCksdC5hcHBlbmRDaGlsZCh0aGlzLm5vZGUuY2xvbmVOb2RlKCEwKSksaS5pbm5lckhUTUwucmVwbGFjZSgvXjxzdmc+LyxcIlwiKS5yZXBsYWNlKC88XFwvc3ZnPiQvLFwiXCIpO2kuaW5uZXJIVE1MPVwiPHN2Zz5cIit0LnJlcGxhY2UoL1xcbi8sXCJcIikucmVwbGFjZSgvPChbXFx3Oi1dKykoW148XSs/KVxcLz4vZyxcIjwkMSQyPjwvJDE+XCIpK1wiPC9zdmc+XCI7Zm9yKHZhciBzPTAscj1pLmZpcnN0Q2hpbGQuY2hpbGROb2Rlcy5sZW5ndGg7czxyO3MrKyl0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoaS5maXJzdENoaWxkLmZpcnN0Q2hpbGQpO3JldHVybiB0aGlzfSx3cml0ZURhdGFUb0RvbTpmdW5jdGlvbigpe3JldHVybih0aGlzLmVhY2h8fHRoaXMubGluZXMpJiYodGhpcy5lYWNoP3RoaXM6dGhpcy5saW5lcygpKS5lYWNoKChmdW5jdGlvbigpe3RoaXMud3JpdGVEYXRhVG9Eb20oKX0pKSx0aGlzLm5vZGUucmVtb3ZlQXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiKSxPYmplY3Qua2V5cyh0aGlzLmRvbSkubGVuZ3RoJiZ0aGlzLm5vZGUuc2V0QXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiLEpTT04uc3RyaW5naWZ5KHRoaXMuZG9tKSksdGhpc30sc2V0RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb209dCx0aGlzfSxpczpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV9KHRoaXMsdCl9fX0pLGEuZWFzaW5nPXtcIi1cIjpmdW5jdGlvbih0KXtyZXR1cm4gdH0sXCI8PlwiOmZ1bmN0aW9uKHQpe3JldHVybi1NYXRoLmNvcyh0Kk1hdGguUEkpLzIrLjV9LFwiPlwiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNpbih0Kk1hdGguUEkvMil9LFwiPFwiOmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGguY29zKHQqTWF0aC5QSS8yKX19LGEubW9ycGg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSl7cmV0dXJuIG5ldyBhLk1vcnBoT2JqKGUsaSkuYXQodCl9fSxhLlNpdHVhdGlvbj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuaW5pdD0hMSx0aGlzLnJldmVyc2VkPSExLHRoaXMucmV2ZXJzaW5nPSExLHRoaXMuZHVyYXRpb249bmV3IGEuTnVtYmVyKHQuZHVyYXRpb24pLnZhbHVlT2YoKSx0aGlzLmRlbGF5PW5ldyBhLk51bWJlcih0LmRlbGF5KS52YWx1ZU9mKCksdGhpcy5zdGFydD0rbmV3IERhdGUrdGhpcy5kZWxheSx0aGlzLmZpbmlzaD10aGlzLnN0YXJ0K3RoaXMuZHVyYXRpb24sdGhpcy5lYXNlPXQuZWFzZSx0aGlzLmxvb3A9MCx0aGlzLmxvb3BzPSExLHRoaXMuYW5pbWF0aW9ucz17fSx0aGlzLmF0dHJzPXt9LHRoaXMuc3R5bGVzPXt9LHRoaXMudHJhbnNmb3Jtcz1bXSx0aGlzLm9uY2U9e319fSksYS5GWD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX3RhcmdldD10LHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzLmFjdGl2ZT0hMSx0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXMucGF1c2VkPSExLHRoaXMubGFzdFBvcz0wLHRoaXMucG9zPTAsdGhpcy5hYnNQb3M9MCx0aGlzLl9zcGVlZD0xfSxleHRlbmQ6e2FuaW1hdGU6ZnVuY3Rpb24odCxlLHMpe1wib2JqZWN0XCI9PT1pKHQpJiYoZT10LmVhc2Uscz10LmRlbGF5LHQ9dC5kdXJhdGlvbik7dmFyIHI9bmV3IGEuU2l0dWF0aW9uKHtkdXJhdGlvbjp0fHwxZTMsZGVsYXk6c3x8MCxlYXNlOmEuZWFzaW5nW2V8fFwiLVwiXXx8ZX0pO3JldHVybiB0aGlzLnF1ZXVlKHIpLHRoaXN9LHRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdCBpbnN0YW5jZW9mIGEuRWxlbWVudD8odGhpcy5fdGFyZ2V0PXQsdGhpcyk6dGhpcy5fdGFyZ2V0fSx0aW1lVG9BYnNQb3M6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy5zaXR1YXRpb24uc3RhcnQpLyh0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCl9LGFic1Bvc1RvVGltZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQqdCt0aGlzLnNpdHVhdGlvbi5zdGFydH0sc3RhcnRBbmltRnJhbWU6ZnVuY3Rpb24oKXt0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLmFuaW1hdGlvbkZyYW1lPXQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7dGhpcy5zdGVwKCl9LmJpbmQodGhpcykpfSxzdG9wQW5pbUZyYW1lOmZ1bmN0aW9uKCl7dC5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lKX0sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5hY3RpdmUmJnRoaXMuc2l0dWF0aW9uJiYodGhpcy5hY3RpdmU9ITAsdGhpcy5zdGFydEN1cnJlbnQoKSksdGhpc30sc3RhcnRDdXJyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9uLnN0YXJ0PStuZXcgRGF0ZSt0aGlzLnNpdHVhdGlvbi5kZWxheS90aGlzLl9zcGVlZCx0aGlzLnNpdHVhdGlvbi5maW5pc2g9dGhpcy5zaXR1YXRpb24uc3RhcnQrdGhpcy5zaXR1YXRpb24uZHVyYXRpb24vdGhpcy5fc3BlZWQsdGhpcy5pbml0QW5pbWF0aW9ucygpLnN0ZXAoKX0scXVldWU6ZnVuY3Rpb24odCl7cmV0dXJuKFwiZnVuY3Rpb25cIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBhLlNpdHVhdGlvbikmJnRoaXMuc2l0dWF0aW9ucy5wdXNoKHQpLHRoaXMuc2l0dWF0aW9ufHwodGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCkpLHRoaXN9LGRlcXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9wKCksdGhpcy5zaXR1YXRpb249dGhpcy5zaXR1YXRpb25zLnNoaWZ0KCksdGhpcy5zaXR1YXRpb24mJih0aGlzLnNpdHVhdGlvbiBpbnN0YW5jZW9mIGEuU2l0dWF0aW9uP3RoaXMuc3RhcnQoKTp0aGlzLnNpdHVhdGlvbi5jYWxsKHRoaXMpKSx0aGlzfSxpbml0QW5pbWF0aW9uczpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5zaXR1YXRpb247aWYoZS5pbml0KXJldHVybiB0aGlzO2Zvcih2YXIgaSBpbiBlLmFuaW1hdGlvbnMpe3Q9dGhpcy50YXJnZXQoKVtpXSgpLEFycmF5LmlzQXJyYXkodCl8fCh0PVt0XSksQXJyYXkuaXNBcnJheShlLmFuaW1hdGlvbnNbaV0pfHwoZS5hbmltYXRpb25zW2ldPVtlLmFuaW1hdGlvbnNbaV1dKTtmb3IodmFyIHM9dC5sZW5ndGg7cy0tOyllLmFuaW1hdGlvbnNbaV1bc11pbnN0YW5jZW9mIGEuTnVtYmVyJiYodFtzXT1uZXcgYS5OdW1iZXIodFtzXSkpLGUuYW5pbWF0aW9uc1tpXVtzXT10W3NdLm1vcnBoKGUuYW5pbWF0aW9uc1tpXVtzXSl9Zm9yKHZhciBpIGluIGUuYXR0cnMpZS5hdHRyc1tpXT1uZXcgYS5Nb3JwaE9iaih0aGlzLnRhcmdldCgpLmF0dHIoaSksZS5hdHRyc1tpXSk7Zm9yKHZhciBpIGluIGUuc3R5bGVzKWUuc3R5bGVzW2ldPW5ldyBhLk1vcnBoT2JqKHRoaXMudGFyZ2V0KCkuc3R5bGUoaSksZS5zdHlsZXNbaV0pO3JldHVybiBlLmluaXRpYWxUcmFuc2Zvcm1hdGlvbj10aGlzLnRhcmdldCgpLm1hdHJpeGlmeSgpLGUuaW5pdD0hMCx0aGlzfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9ucz1bXSx0aGlzfSxjbGVhckN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb249bnVsbCx0aGlzfSxzdG9wOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5hY3RpdmU7cmV0dXJuIHRoaXMuYWN0aXZlPSExLGUmJnRoaXMuY2xlYXJRdWV1ZSgpLHQmJnRoaXMuc2l0dWF0aW9uJiYoIWkmJnRoaXMuc3RhcnRDdXJyZW50KCksdGhpcy5hdEVuZCgpKSx0aGlzLnN0b3BBbmltRnJhbWUoKSx0aGlzLmNsZWFyQ3VycmVudCgpfSxhZnRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxhc3QoKTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vbihcImZpbmlzaGVkLmZ4XCIsKGZ1bmN0aW9uIGkoYSl7YS5kZXRhaWwuc2l0dWF0aW9uPT1lJiYodC5jYWxsKHRoaXMsZSksdGhpcy5vZmYoXCJmaW5pc2hlZC5meFwiLGkpKX0pKSx0aGlzLl9jYWxsU3RhcnQoKX0sZHVyaW5nOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGFzdCgpLGk9ZnVuY3Rpb24oaSl7aS5kZXRhaWwuc2l0dWF0aW9uPT1lJiZ0LmNhbGwodGhpcyxpLmRldGFpbC5wb3MsYS5tb3JwaChpLmRldGFpbC5wb3MpLGkuZGV0YWlsLmVhc2VkLGUpfTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vZmYoXCJkdXJpbmcuZnhcIixpKS5vbihcImR1cmluZy5meFwiLGkpLHRoaXMuYWZ0ZXIoKGZ1bmN0aW9uKCl7dGhpcy5vZmYoXCJkdXJpbmcuZnhcIixpKX0pKSx0aGlzLl9jYWxsU3RhcnQoKX0sYWZ0ZXJBbGw6ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24gZShpKXt0LmNhbGwodGhpcyksdGhpcy5vZmYoXCJhbGxmaW5pc2hlZC5meFwiLGUpfTtyZXR1cm4gdGhpcy50YXJnZXQoKS5vZmYoXCJhbGxmaW5pc2hlZC5meFwiLGUpLm9uKFwiYWxsZmluaXNoZWQuZnhcIixlKSx0aGlzLl9jYWxsU3RhcnQoKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpdHVhdGlvbnMubGVuZ3RoP3RoaXMuc2l0dWF0aW9uc1t0aGlzLnNpdHVhdGlvbnMubGVuZ3RoLTFdOnRoaXMuc2l0dWF0aW9ufSxhZGQ6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmxhc3QoKVtpfHxcImFuaW1hdGlvbnNcIl1bdF09ZSx0aGlzLl9jYWxsU3RhcnQoKX0sc3RlcDpmdW5jdGlvbih0KXt2YXIgZSxpLGE7dHx8KHRoaXMuYWJzUG9zPXRoaXMudGltZVRvQWJzUG9zKCtuZXcgRGF0ZSkpLCExIT09dGhpcy5zaXR1YXRpb24ubG9vcHM/KGU9TWF0aC5tYXgodGhpcy5hYnNQb3MsMCksaT1NYXRoLmZsb29yKGUpLCEwPT09dGhpcy5zaXR1YXRpb24ubG9vcHN8fGk8dGhpcy5zaXR1YXRpb24ubG9vcHM/KHRoaXMucG9zPWUtaSxhPXRoaXMuc2l0dWF0aW9uLmxvb3AsdGhpcy5zaXR1YXRpb24ubG9vcD1pKToodGhpcy5hYnNQb3M9dGhpcy5zaXR1YXRpb24ubG9vcHMsdGhpcy5wb3M9MSxhPXRoaXMuc2l0dWF0aW9uLmxvb3AtMSx0aGlzLnNpdHVhdGlvbi5sb29wPXRoaXMuc2l0dWF0aW9uLmxvb3BzKSx0aGlzLnNpdHVhdGlvbi5yZXZlcnNpbmcmJih0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZD10aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCE9Qm9vbGVhbigodGhpcy5zaXR1YXRpb24ubG9vcC1hKSUyKSkpOih0aGlzLmFic1Bvcz1NYXRoLm1pbih0aGlzLmFic1BvcywxKSx0aGlzLnBvcz10aGlzLmFic1BvcyksdGhpcy5wb3M8MCYmKHRoaXMucG9zPTApLHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiYodGhpcy5wb3M9MS10aGlzLnBvcyk7dmFyIHM9dGhpcy5zaXR1YXRpb24uZWFzZSh0aGlzLnBvcyk7Zm9yKHZhciByIGluIHRoaXMuc2l0dWF0aW9uLm9uY2Upcj50aGlzLmxhc3RQb3MmJnI8PXMmJih0aGlzLnNpdHVhdGlvbi5vbmNlW3JdLmNhbGwodGhpcy50YXJnZXQoKSx0aGlzLnBvcyxzKSxkZWxldGUgdGhpcy5zaXR1YXRpb24ub25jZVtyXSk7cmV0dXJuIHRoaXMuYWN0aXZlJiZ0aGlzLnRhcmdldCgpLmZpcmUoXCJkdXJpbmdcIix7cG9zOnRoaXMucG9zLGVhc2VkOnMsZng6dGhpcyxzaXR1YXRpb246dGhpcy5zaXR1YXRpb259KSx0aGlzLnNpdHVhdGlvbj8odGhpcy5lYWNoQXQoKSwxPT10aGlzLnBvcyYmIXRoaXMuc2l0dWF0aW9uLnJldmVyc2VkfHx0aGlzLnNpdHVhdGlvbi5yZXZlcnNlZCYmMD09dGhpcy5wb3M/KHRoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMudGFyZ2V0KCkuZmlyZShcImZpbmlzaGVkXCIse2Z4OnRoaXMsc2l0dWF0aW9uOnRoaXMuc2l0dWF0aW9ufSksdGhpcy5zaXR1YXRpb25zLmxlbmd0aHx8KHRoaXMudGFyZ2V0KCkuZmlyZShcImFsbGZpbmlzaGVkXCIpLHRoaXMuc2l0dWF0aW9ucy5sZW5ndGh8fCh0aGlzLnRhcmdldCgpLm9mZihcIi5meFwiKSx0aGlzLmFjdGl2ZT0hMSkpLHRoaXMuYWN0aXZlP3RoaXMuZGVxdWV1ZSgpOnRoaXMuY2xlYXJDdXJyZW50KCkpOiF0aGlzLnBhdXNlZCYmdGhpcy5hY3RpdmUmJnRoaXMuc3RhcnRBbmltRnJhbWUoKSx0aGlzLmxhc3RQb3M9cyx0aGlzKTp0aGlzfSxlYWNoQXQ6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsaT10aGlzLnRhcmdldCgpLHM9dGhpcy5zaXR1YXRpb247Zm9yKHZhciByIGluIHMuYW5pbWF0aW9ucyl0PVtdLmNvbmNhdChzLmFuaW1hdGlvbnNbcl0pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIHQmJnQuYXQ/dC5hdChzLmVhc2UoZS5wb3MpLGUucG9zKTp0fSkpLGlbcl0uYXBwbHkoaSx0KTtmb3IodmFyIHIgaW4gcy5hdHRycyl0PVtyXS5jb25jYXQocy5hdHRyc1tyXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmdC5hdD90LmF0KHMuZWFzZShlLnBvcyksZS5wb3MpOnR9KSksaS5hdHRyLmFwcGx5KGksdCk7Zm9yKHZhciByIGluIHMuc3R5bGVzKXQ9W3JdLmNvbmNhdChzLnN0eWxlc1tyXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmdC5hdD90LmF0KHMuZWFzZShlLnBvcyksZS5wb3MpOnR9KSksaS5zdHlsZS5hcHBseShpLHQpO2lmKHMudHJhbnNmb3Jtcy5sZW5ndGgpe3Q9cy5pbml0aWFsVHJhbnNmb3JtYXRpb24scj0wO2Zvcih2YXIgbz1zLnRyYW5zZm9ybXMubGVuZ3RoO3I8bztyKyspe3ZhciBuPXMudHJhbnNmb3Jtc1tyXTtuIGluc3RhbmNlb2YgYS5NYXRyaXg/dD1uLnJlbGF0aXZlP3QubXVsdGlwbHkoKG5ldyBhLk1hdHJpeCkubW9ycGgobikuYXQocy5lYXNlKHRoaXMucG9zKSkpOnQubW9ycGgobikuYXQocy5lYXNlKHRoaXMucG9zKSk6KG4ucmVsYXRpdmV8fG4udW5kbyh0LmV4dHJhY3QoKSksdD10Lm11bHRpcGx5KG4uYXQocy5lYXNlKHRoaXMucG9zKSkpKX1pLm1hdHJpeCh0KX1yZXR1cm4gdGhpc30sb25jZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy5sYXN0KCk7cmV0dXJuIGl8fCh0PWEuZWFzZSh0KSksYS5vbmNlW3RdPWUsdGhpc30sX2NhbGxTdGFydDpmdW5jdGlvbigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5zdGFydCgpfS5iaW5kKHRoaXMpLDApLHRoaXN9fSxwYXJlbnQ6YS5FbGVtZW50LGNvbnN0cnVjdDp7YW5pbWF0ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuKHRoaXMuZnh8fCh0aGlzLmZ4PW5ldyBhLkZYKHRoaXMpKSkuYW5pbWF0ZSh0LGUsaSl9LGRlbGF5OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLmZ4fHwodGhpcy5meD1uZXcgYS5GWCh0aGlzKSkpLmRlbGF5KHQpfSxzdG9wOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZngmJnRoaXMuZnguc3RvcCh0LGUpLHRoaXN9LGZpbmlzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZ4JiZ0aGlzLmZ4LmZpbmlzaCgpLHRoaXN9fX0pLGEuTW9ycGhPYmo9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiBhLkNvbG9yLmlzQ29sb3IoZSk/bmV3IGEuQ29sb3IodCkubW9ycGgoZSk6YS5yZWdleC5kZWxpbWl0ZXIudGVzdCh0KT9hLnJlZ2V4LnBhdGhMZXR0ZXJzLnRlc3QodCk/bmV3IGEuUGF0aEFycmF5KHQpLm1vcnBoKGUpOm5ldyBhLkFycmF5KHQpLm1vcnBoKGUpOmEucmVnZXgubnVtYmVyQW5kVW5pdC50ZXN0KGUpP25ldyBhLk51bWJlcih0KS5tb3JwaChlKToodGhpcy52YWx1ZT10LHZvaWQodGhpcy5kZXN0aW5hdGlvbj1lKSl9LGV4dGVuZDp7YXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZTwxP3RoaXMudmFsdWU6dGhpcy5kZXN0aW5hdGlvbn0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfX19KSxhLmV4dGVuZChhLkZYLHthdHRyOmZ1bmN0aW9uKHQsZSxhKXtpZihcIm9iamVjdFwiPT09aSh0KSlmb3IodmFyIHMgaW4gdCl0aGlzLmF0dHIocyx0W3NdKTtlbHNlIHRoaXMuYWRkKHQsZSxcImF0dHJzXCIpO3JldHVybiB0aGlzfSxwbG90OmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiA0PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMucGxvdChbdCxlLGksYV0pOnRoaXMuYWRkKFwicGxvdFwiLG5ldyh0aGlzLnRhcmdldCgpLm1vcnBoQXJyYXkpKHQpKX19KSxhLkJveD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSxzLHIpe2lmKCEoXCJvYmplY3RcIiE9PWkodCl8fHQgaW5zdGFuY2VvZiBhLkVsZW1lbnQpKXJldHVybiBhLkJveC5jYWxsKHRoaXMsbnVsbCE9dC5sZWZ0P3QubGVmdDp0LngsbnVsbCE9dC50b3A/dC50b3A6dC55LHQud2lkdGgsdC5oZWlnaHQpO3ZhciBvOzQ9PWFyZ3VtZW50cy5sZW5ndGgmJih0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLndpZHRoPXMsdGhpcy5oZWlnaHQ9ciksbnVsbD09KG89dGhpcykueCYmKG8ueD0wLG8ueT0wLG8ud2lkdGg9MCxvLmhlaWdodD0wKSxvLnc9by53aWR0aCxvLmg9by5oZWlnaHQsby54Mj1vLngrby53aWR0aCxvLnkyPW8ueStvLmhlaWdodCxvLmN4PW8ueCtvLndpZHRoLzIsby5jeT1vLnkrby5oZWlnaHQvMn19KSxhLkJCb3g9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXtpZihhLkJveC5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSksdCBpbnN0YW5jZW9mIGEuRWxlbWVudCl7dmFyIGk7dHJ5e2lmKCFlLmRvY3VtZW50RWxlbWVudC5jb250YWlucyl7Zm9yKHZhciBzPXQubm9kZTtzLnBhcmVudE5vZGU7KXM9cy5wYXJlbnROb2RlO2lmKHMhPWUpdGhyb3cgbmV3IEVycm9yKFwiRWxlbWVudCBub3QgaW4gdGhlIGRvbVwiKX1pPXQubm9kZS5nZXRCQm94KCl9Y2F0Y2goZSl7aWYodCBpbnN0YW5jZW9mIGEuU2hhcGUpe2EucGFyc2VyLmRyYXd8fGEucHJlcGFyZSgpO3ZhciByPXQuY2xvbmUoYS5wYXJzZXIuZHJhdy5pbnN0YW5jZSkuc2hvdygpO3ImJnIubm9kZSYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5ub2RlLmdldEJCb3gmJihpPXIubm9kZS5nZXRCQm94KCkpLHImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHIucmVtb3ZlJiZyLnJlbW92ZSgpfWVsc2UgaT17eDp0Lm5vZGUuY2xpZW50TGVmdCx5OnQubm9kZS5jbGllbnRUb3Asd2lkdGg6dC5ub2RlLmNsaWVudFdpZHRoLGhlaWdodDp0Lm5vZGUuY2xpZW50SGVpZ2h0fX1hLkJveC5jYWxsKHRoaXMsaSl9fSxpbmhlcml0OmEuQm94LHBhcmVudDphLkVsZW1lbnQsY29uc3RydWN0OntiYm94OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLkJCb3godGhpcyl9fX0pLGEuQkJveC5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5CQm94LGEuTWF0cml4PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dmFyIGU9ZihbMSwwLDAsMSwwLDBdKTt0PW51bGw9PT10P2U6dCBpbnN0YW5jZW9mIGEuRWxlbWVudD90Lm1hdHJpeGlmeSgpOlwic3RyaW5nXCI9PXR5cGVvZiB0P2YodC5zcGxpdChhLnJlZ2V4LmRlbGltaXRlcikubWFwKHBhcnNlRmxvYXQpKTo2PT1hcmd1bWVudHMubGVuZ3RoP2YoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTpBcnJheS5pc0FycmF5KHQpP2YodCk6dCYmXCJvYmplY3RcIj09PWkodCk/dDplO2Zvcih2YXIgcz12Lmxlbmd0aC0xO3M+PTA7LS1zKXRoaXNbdltzXV09bnVsbCE9dFt2W3NdXT90W3Zbc11dOmVbdltzXV19LGV4dGVuZDp7ZXh0cmFjdDpmdW5jdGlvbigpe3ZhciB0PXAodGhpcywwLDEpO3AodGhpcywxLDApO3ZhciBlPTE4MC9NYXRoLlBJKk1hdGguYXRhbjIodC55LHQueCktOTA7cmV0dXJue3g6dGhpcy5lLHk6dGhpcy5mLHRyYW5zZm9ybWVkWDoodGhpcy5lKk1hdGguY29zKGUqTWF0aC5QSS8xODApK3RoaXMuZipNYXRoLnNpbihlKk1hdGguUEkvMTgwKSkvTWF0aC5zcXJ0KHRoaXMuYSp0aGlzLmErdGhpcy5iKnRoaXMuYiksdHJhbnNmb3JtZWRZOih0aGlzLmYqTWF0aC5jb3MoZSpNYXRoLlBJLzE4MCkrdGhpcy5lKk1hdGguc2luKC1lKk1hdGguUEkvMTgwKSkvTWF0aC5zcXJ0KHRoaXMuYyp0aGlzLmMrdGhpcy5kKnRoaXMuZCkscm90YXRpb246ZSxhOnRoaXMuYSxiOnRoaXMuYixjOnRoaXMuYyxkOnRoaXMuZCxlOnRoaXMuZSxmOnRoaXMuZixtYXRyaXg6bmV3IGEuTWF0cml4KHRoaXMpfX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMpfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5NYXRyaXgodCksdGhpc30sbXVsdGlwbHk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5hdGl2ZSgpLm11bHRpcGx5KGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgYS5NYXRyaXh8fCh0PW5ldyBhLk1hdHJpeCh0KSksdH0odCkubmF0aXZlKCkpKX0saW52ZXJzZTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcy5uYXRpdmUoKS5pbnZlcnNlKCkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubmF0aXZlKCkudHJhbnNsYXRlKHR8fDAsZXx8MCkpfSxuYXRpdmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YS5wYXJzZXIubmF0aXZlLmNyZWF0ZVNWR01hdHJpeCgpLGU9di5sZW5ndGgtMTtlPj0wO2UtLSl0W3ZbZV1dPXRoaXNbdltlXV07cmV0dXJuIHR9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuXCJtYXRyaXgoXCIrYih0aGlzLmEpK1wiLFwiK2IodGhpcy5iKStcIixcIitiKHRoaXMuYykrXCIsXCIrYih0aGlzLmQpK1wiLFwiK2IodGhpcy5lKStcIixcIitiKHRoaXMuZikrXCIpXCJ9fSxwYXJlbnQ6YS5FbGVtZW50LGNvbnN0cnVjdDp7Y3RtOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5vZGUuZ2V0Q1RNKCkpfSxzY3JlZW5DVE06ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgYS5OZXN0ZWQpe3ZhciB0PXRoaXMucmVjdCgxLDEpLGU9dC5ub2RlLmdldFNjcmVlbkNUTSgpO3JldHVybiB0LnJlbW92ZSgpLG5ldyBhLk1hdHJpeChlKX1yZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubm9kZS5nZXRTY3JlZW5DVE0oKSl9fX0pLGEuUG9pbnQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0LGUpe3ZhciBhO2E9QXJyYXkuaXNBcnJheSh0KT97eDp0WzBdLHk6dFsxXX06XCJvYmplY3RcIj09PWkodCk/e3g6dC54LHk6dC55fTpudWxsIT10P3t4OnQseTpudWxsIT1lP2U6dH06e3g6MCx5OjB9LHRoaXMueD1hLngsdGhpcy55PWEueX0sZXh0ZW5kOntjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5Qb2ludCh0aGlzKX0sbW9ycGg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5Qb2ludCh0LGUpLHRoaXN9fX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7cG9pbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGEuUG9pbnQodCxlKS50cmFuc2Zvcm0odGhpcy5zY3JlZW5DVE0oKS5pbnZlcnNlKCkpfX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7YXR0cjpmdW5jdGlvbih0LGUscyl7aWYobnVsbD09dCl7Zm9yKHQ9e30scz0oZT10aGlzLm5vZGUuYXR0cmlidXRlcykubGVuZ3RoLTE7cz49MDtzLS0pdFtlW3NdLm5vZGVOYW1lXT1hLnJlZ2V4LmlzTnVtYmVyLnRlc3QoZVtzXS5ub2RlVmFsdWUpP3BhcnNlRmxvYXQoZVtzXS5ub2RlVmFsdWUpOmVbc10ubm9kZVZhbHVlO3JldHVybiB0fWlmKFwib2JqZWN0XCI9PT1pKHQpKWZvcih2YXIgciBpbiB0KXRoaXMuYXR0cihyLHRbcl0pO2Vsc2UgaWYobnVsbD09PWUpdGhpcy5ub2RlLnJlbW92ZUF0dHJpYnV0ZSh0KTtlbHNle2lmKG51bGw9PWUpcmV0dXJuIG51bGw9PShlPXRoaXMubm9kZS5nZXRBdHRyaWJ1dGUodCkpP2EuZGVmYXVsdHMuYXR0cnNbdF06YS5yZWdleC5pc051bWJlci50ZXN0KGUpP3BhcnNlRmxvYXQoZSk6ZTtcInN0cm9rZS13aWR0aFwiPT10P3RoaXMuYXR0cihcInN0cm9rZVwiLHBhcnNlRmxvYXQoZSk+MD90aGlzLl9zdHJva2U6bnVsbCk6XCJzdHJva2VcIj09dCYmKHRoaXMuX3N0cm9rZT1lKSxcImZpbGxcIiE9dCYmXCJzdHJva2VcIiE9dHx8KGEucmVnZXguaXNJbWFnZS50ZXN0KGUpJiYoZT10aGlzLmRvYygpLmRlZnMoKS5pbWFnZShlLDAsMCkpLGUgaW5zdGFuY2VvZiBhLkltYWdlJiYoZT10aGlzLmRvYygpLmRlZnMoKS5wYXR0ZXJuKDAsMCwoZnVuY3Rpb24oKXt0aGlzLmFkZChlKX0pKSkpLFwibnVtYmVyXCI9PXR5cGVvZiBlP2U9bmV3IGEuTnVtYmVyKGUpOmEuQ29sb3IuaXNDb2xvcihlKT9lPW5ldyBhLkNvbG9yKGUpOkFycmF5LmlzQXJyYXkoZSkmJihlPW5ldyBhLkFycmF5KGUpKSxcImxlYWRpbmdcIj09dD90aGlzLmxlYWRpbmcmJnRoaXMubGVhZGluZyhlKTpcInN0cmluZ1wiPT10eXBlb2Ygcz90aGlzLm5vZGUuc2V0QXR0cmlidXRlTlMocyx0LGUudG9TdHJpbmcoKSk6dGhpcy5ub2RlLnNldEF0dHJpYnV0ZSh0LGUudG9TdHJpbmcoKSksIXRoaXMucmVidWlsZHx8XCJmb250LXNpemVcIiE9dCYmXCJ4XCIhPXR8fHRoaXMucmVidWlsZCh0LGUpfXJldHVybiB0aGlzfX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7dHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7dmFyIHM7cmV0dXJuXCJvYmplY3RcIiE9PWkodCk/KHM9bmV3IGEuTWF0cml4KHRoaXMpLmV4dHJhY3QoKSxcInN0cmluZ1wiPT10eXBlb2YgdD9zW3RdOnMpOihzPW5ldyBhLk1hdHJpeCh0aGlzKSxlPSEhZXx8ISF0LnJlbGF0aXZlLG51bGwhPXQuYSYmKHM9ZT9zLm11bHRpcGx5KG5ldyBhLk1hdHJpeCh0KSk6bmV3IGEuTWF0cml4KHQpKSx0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIixzKSl9fSksYS5leHRlbmQoYS5FbGVtZW50LHt1bnRyYW5zZm9ybTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIixudWxsKX0sbWF0cml4aWZ5OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuYXR0cihcInRyYW5zZm9ybVwiKXx8XCJcIikuc3BsaXQoYS5yZWdleC50cmFuc2Zvcm1zKS5zbGljZSgwLC0xKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXQudHJpbSgpLnNwbGl0KFwiKFwiKTtyZXR1cm5bZVswXSxlWzFdLnNwbGl0KGEucmVnZXguZGVsaW1pdGVyKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfSkpXX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJtYXRyaXhcIj09ZVswXT90Lm11bHRpcGx5KGYoZVsxXSkpOnRbZVswXV0uYXBwbHkodCxlWzFdKX0pLG5ldyBhLk1hdHJpeCl9LHRvUGFyZW50OmZ1bmN0aW9uKHQpe2lmKHRoaXM9PXQpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5zY3JlZW5DVE0oKSxpPXQuc2NyZWVuQ1RNKCkuaW52ZXJzZSgpO3JldHVybiB0aGlzLmFkZFRvKHQpLnVudHJhbnNmb3JtKCkudHJhbnNmb3JtKGkubXVsdGlwbHkoZSkpLHRoaXN9LHRvRG9jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9QYXJlbnQodGhpcy5kb2MoKSl9fSksYS5UcmFuc2Zvcm1hdGlvbj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiZcImJvb2xlYW5cIiE9dHlwZW9mIGUpcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGE9MCxzPXRoaXMuYXJndW1lbnRzLmxlbmd0aDthPHM7KythKXRoaXNbdGhpcy5hcmd1bWVudHNbYV1dPXRbYV07ZWxzZSBpZih0JiZcIm9iamVjdFwiPT09aSh0KSlmb3IoYT0wLHM9dGhpcy5hcmd1bWVudHMubGVuZ3RoO2E8czsrK2EpdGhpc1t0aGlzLmFyZ3VtZW50c1thXV09dFt0aGlzLmFyZ3VtZW50c1thXV07dGhpcy5pbnZlcnNlZD0hMSwhMD09PWUmJih0aGlzLmludmVyc2VkPSEwKX19KSxhLlRyYW5zbGF0ZT1hLmludmVudCh7cGFyZW50OmEuTWF0cml4LGluaGVyaXQ6YS5UcmFuc2Zvcm1hdGlvbixjcmVhdGU6ZnVuY3Rpb24odCxlKXt0aGlzLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX0sZXh0ZW5kOnthcmd1bWVudHM6W1widHJhbnNmb3JtZWRYXCIsXCJ0cmFuc2Zvcm1lZFlcIl0sbWV0aG9kOlwidHJhbnNsYXRlXCJ9fSksYS5leHRlbmQoYS5FbGVtZW50LHtzdHlsZTpmdW5jdGlvbih0LGUpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMubm9kZS5zdHlsZS5jc3NUZXh0fHxcIlwiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilpZihcIm9iamVjdFwiPT09aSh0KSlmb3IodmFyIHMgaW4gdCl0aGlzLnN0eWxlKHMsdFtzXSk7ZWxzZXtpZighYS5yZWdleC5pc0Nzcy50ZXN0KHQpKXJldHVybiB0aGlzLm5vZGUuc3R5bGVbYyh0KV07Zm9yKHQ9dC5zcGxpdCgvXFxzKjtcXHMqLykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hIXR9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgvXFxzKjpcXHMqLyl9KSk7ZT10LnBvcCgpOyl0aGlzLnN0eWxlKGVbMF0sZVsxXSl9ZWxzZSB0aGlzLm5vZGUuc3R5bGVbYyh0KV09bnVsbD09PWV8fGEucmVnZXguaXNCbGFuay50ZXN0KGUpP1wiXCI6ZTtyZXR1cm4gdGhpc319KSxhLlBhcmVudD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpfSxpbmhlcml0OmEuRWxlbWVudCxleHRlbmQ6e2NoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuIGEudXRpbHMubWFwKGEudXRpbHMuZmlsdGVyU1ZHRWxlbWVudHModGhpcy5ub2RlLmNoaWxkTm9kZXMpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5hZG9wdCh0KX0pKX0sYWRkOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/dGhpcy5ub2RlLmFwcGVuZENoaWxkKHQubm9kZSk6dC5ub2RlIT10aGlzLm5vZGUuY2hpbGROb2Rlc1tlXSYmdGhpcy5ub2RlLmluc2VydEJlZm9yZSh0Lm5vZGUsdGhpcy5ub2RlLmNoaWxkTm9kZXNbZV0pLHRoaXN9LHB1dDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFkZCh0LGUpLHR9LGhhczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbmRleCh0KT49MH0saW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuW10uc2xpY2UuY2FsbCh0aGlzLm5vZGUuY2hpbGROb2RlcykuaW5kZXhPZih0Lm5vZGUpfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGEuYWRvcHQodGhpcy5ub2RlLmNoaWxkTm9kZXNbdF0pfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCh0aGlzLm5vZGUuY2hpbGROb2Rlcy5sZW5ndGgtMSl9LGVhY2g6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcy5jaGlsZHJlbigpLHM9MCxyPWkubGVuZ3RoO3M8cjtzKyspaVtzXWluc3RhbmNlb2YgYS5FbGVtZW50JiZ0LmFwcGx5KGlbc10sW3MsaV0pLGUmJmlbc11pbnN0YW5jZW9mIGEuQ29udGFpbmVyJiZpW3NdLmVhY2godCxlKTtyZXR1cm4gdGhpc30scmVtb3ZlRWxlbWVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHQubm9kZSksdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtmb3IoO3RoaXMubm9kZS5oYXNDaGlsZE5vZGVzKCk7KXRoaXMubm9kZS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUubGFzdENoaWxkKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2RlZnMsdGhpc30sZGVmczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvYygpLmRlZnMoKX19fSksYS5leHRlbmQoYS5QYXJlbnQse3VuZ3JvdXA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PWV8fHRoaXMgaW5zdGFuY2VvZiBhLkRlZnN8fHRoaXMubm9kZT09YS5wYXJzZXIuZHJhd3x8KHQ9dHx8KHRoaXMgaW5zdGFuY2VvZiBhLkRvYz90aGlzOnRoaXMucGFyZW50KGEuUGFyZW50KSksZT1lfHwxLzAsdGhpcy5lYWNoKChmdW5jdGlvbigpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYS5EZWZzP3RoaXM6dGhpcyBpbnN0YW5jZW9mIGEuUGFyZW50P3RoaXMudW5ncm91cCh0LGUtMSk6dGhpcy50b1BhcmVudCh0KX0pKSx0aGlzLm5vZGUuZmlyc3RDaGlsZHx8dGhpcy5yZW1vdmUoKSksdGhpc30sZmxhdHRlbjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnVuZ3JvdXAodCxlKX19KSxhLkNvbnRhaW5lcj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpfSxpbmhlcml0OmEuUGFyZW50fSksYS5WaWV3Qm94PWEuaW52ZW50KHtwYXJlbnQ6YS5Db250YWluZXIsY29uc3RydWN0Ont9fSksW1wiY2xpY2tcIixcImRibGNsaWNrXCIsXCJtb3VzZWRvd25cIixcIm1vdXNldXBcIixcIm1vdXNlb3ZlclwiLFwibW91c2VvdXRcIixcIm1vdXNlbW92ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJ0b3VjaGxlYXZlXCIsXCJ0b3VjaGVuZFwiLFwidG91Y2hjYW5jZWxcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5FbGVtZW50LnByb3RvdHlwZVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gYS5vbih0aGlzLm5vZGUsdCxlKSx0aGlzfX0pKSxhLmxpc3RlbmVycz1bXSxhLmhhbmRsZXJNYXA9W10sYS5saXN0ZW5lcklkPTAsYS5vbj1mdW5jdGlvbih0LGUsaSxzLHIpe3ZhciBvPWkuYmluZChzfHx0Lmluc3RhbmNlfHx0KSxuPShhLmhhbmRsZXJNYXAuaW5kZXhPZih0KSsxfHxhLmhhbmRsZXJNYXAucHVzaCh0KSktMSxsPWUuc3BsaXQoXCIuXCIpWzBdLGg9ZS5zcGxpdChcIi5cIilbMV18fFwiKlwiO2EubGlzdGVuZXJzW25dPWEubGlzdGVuZXJzW25dfHx7fSxhLmxpc3RlbmVyc1tuXVtsXT1hLmxpc3RlbmVyc1tuXVtsXXx8e30sYS5saXN0ZW5lcnNbbl1bbF1baF09YS5saXN0ZW5lcnNbbl1bbF1baF18fHt9LGkuX3N2Z2pzTGlzdGVuZXJJZHx8KGkuX3N2Z2pzTGlzdGVuZXJJZD0rK2EubGlzdGVuZXJJZCksYS5saXN0ZW5lcnNbbl1bbF1baF1baS5fc3ZnanNMaXN0ZW5lcklkXT1vLHQuYWRkRXZlbnRMaXN0ZW5lcihsLG8scnx8e3Bhc3NpdmU6ITB9KX0sYS5vZmY9ZnVuY3Rpb24odCxlLGkpe3ZhciBzPWEuaGFuZGxlck1hcC5pbmRleE9mKHQpLHI9ZSYmZS5zcGxpdChcIi5cIilbMF0sbz1lJiZlLnNwbGl0KFwiLlwiKVsxXSxuPVwiXCI7aWYoLTEhPXMpaWYoaSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaSYmKGk9aS5fc3ZnanNMaXN0ZW5lcklkKSwhaSlyZXR1cm47YS5saXN0ZW5lcnNbc11bcl0mJmEubGlzdGVuZXJzW3NdW3JdW298fFwiKlwiXSYmKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLGEubGlzdGVuZXJzW3NdW3JdW298fFwiKlwiXVtpXSwhMSksZGVsZXRlIGEubGlzdGVuZXJzW3NdW3JdW298fFwiKlwiXVtpXSl9ZWxzZSBpZihvJiZyKXtpZihhLmxpc3RlbmVyc1tzXVtyXSYmYS5saXN0ZW5lcnNbc11bcl1bb10pe2Zvcih2YXIgbCBpbiBhLmxpc3RlbmVyc1tzXVtyXVtvXSlhLm9mZih0LFtyLG9dLmpvaW4oXCIuXCIpLGwpO2RlbGV0ZSBhLmxpc3RlbmVyc1tzXVtyXVtvXX19ZWxzZSBpZihvKWZvcih2YXIgaCBpbiBhLmxpc3RlbmVyc1tzXSlmb3IodmFyIG4gaW4gYS5saXN0ZW5lcnNbc11baF0pbz09PW4mJmEub2ZmKHQsW2gsb10uam9pbihcIi5cIikpO2Vsc2UgaWYocil7aWYoYS5saXN0ZW5lcnNbc11bcl0pe2Zvcih2YXIgbiBpbiBhLmxpc3RlbmVyc1tzXVtyXSlhLm9mZih0LFtyLG5dLmpvaW4oXCIuXCIpKTtkZWxldGUgYS5saXN0ZW5lcnNbc11bcl19fWVsc2V7Zm9yKHZhciBoIGluIGEubGlzdGVuZXJzW3NdKWEub2ZmKHQsaCk7ZGVsZXRlIGEubGlzdGVuZXJzW3NdLGRlbGV0ZSBhLmhhbmRsZXJNYXBbc119fSxhLmV4dGVuZChhLkVsZW1lbnQse29uOmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiBhLm9uKHRoaXMubm9kZSx0LGUsaSxzKSx0aGlzfSxvZmY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYS5vZmYodGhpcy5ub2RlLHQsZSksdGhpc30sZmlyZTpmdW5jdGlvbihlLGkpe3JldHVybiBlIGluc3RhbmNlb2YgdC5FdmVudD90aGlzLm5vZGUuZGlzcGF0Y2hFdmVudChlKTp0aGlzLm5vZGUuZGlzcGF0Y2hFdmVudChlPW5ldyBhLkN1c3RvbUV2ZW50KGUse2RldGFpbDppLGNhbmNlbGFibGU6ITB9KSksdGhpcy5fZXZlbnQ9ZSx0aGlzfSxldmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudH19KSxhLkRlZnM9YS5pbnZlbnQoe2NyZWF0ZTpcImRlZnNcIixpbmhlcml0OmEuQ29udGFpbmVyfSksYS5HPWEuaW52ZW50KHtjcmVhdGU6XCJnXCIsaW5oZXJpdDphLkNvbnRhaW5lcixleHRlbmQ6e3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy50cmFuc2Zvcm0oXCJ4XCIpOnRoaXMudHJhbnNmb3JtKHt4OnQtdGhpcy54KCl9LCEwKX19LGNvbnN0cnVjdDp7Z3JvdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuRyl9fX0pLGEuRG9jPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dCYmKFwic3ZnXCI9PSh0PVwic3RyaW5nXCI9PXR5cGVvZiB0P2UuZ2V0RWxlbWVudEJ5SWQodCk6dCkubm9kZU5hbWU/dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCk6KHRoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKFwic3ZnXCIpKSx0LmFwcGVuZENoaWxkKHRoaXMubm9kZSksdGhpcy5zaXplKFwiMTAwJVwiLFwiMTAwJVwiKSksdGhpcy5uYW1lc3BhY2UoKS5kZWZzKCkpfSxpbmhlcml0OmEuQ29udGFpbmVyLGV4dGVuZDp7bmFtZXNwYWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cih7eG1sbnM6YS5ucyx2ZXJzaW9uOlwiMS4xXCJ9KS5hdHRyKFwieG1sbnM6eGxpbmtcIixhLnhsaW5rLGEueG1sbnMpLmF0dHIoXCJ4bWxuczpzdmdqc1wiLGEuc3ZnanMsYS54bWxucyl9LGRlZnM6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdGhpcy5fZGVmc3x8KCh0PXRoaXMubm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImRlZnNcIilbMF0pP3RoaXMuX2RlZnM9YS5hZG9wdCh0KTp0aGlzLl9kZWZzPW5ldyBhLkRlZnMsdGhpcy5ub2RlLmFwcGVuZENoaWxkKHRoaXMuX2RlZnMubm9kZSkpLHRoaXMuX2RlZnN9LHBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUucGFyZW50Tm9kZSYmXCIjZG9jdW1lbnRcIiE9dGhpcy5ub2RlLnBhcmVudE5vZGUubm9kZU5hbWU/dGhpcy5ub2RlLnBhcmVudE5vZGU6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkucmVtb3ZlQ2hpbGQodGhpcy5ub2RlKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe2Zvcig7dGhpcy5ub2RlLmhhc0NoaWxkTm9kZXMoKTspdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHRoaXMubm9kZS5sYXN0Q2hpbGQpO3JldHVybiBkZWxldGUgdGhpcy5fZGVmcyxhLnBhcnNlci5kcmF3JiYhYS5wYXJzZXIuZHJhdy5wYXJlbnROb2RlJiZ0aGlzLm5vZGUuYXBwZW5kQ2hpbGQoYS5wYXJzZXIuZHJhdyksdGhpc30sY2xvbmU6ZnVuY3Rpb24odCl7dGhpcy53cml0ZURhdGFUb0RvbSgpO3ZhciBlPXRoaXMubm9kZSxpPXgoZS5jbG9uZU5vZGUoITApKTtyZXR1cm4gdD8odC5ub2RlfHx0KS5hcHBlbmRDaGlsZChpLm5vZGUpOmUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaS5ub2RlLGUubmV4dFNpYmxpbmcpLGl9fX0pLGEuZXh0ZW5kKGEuRWxlbWVudCx7fSksYS5HcmFkaWVudD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKHQrXCJHcmFkaWVudFwiKSksdGhpcy50eXBlPXR9LGluaGVyaXQ6YS5Db250YWluZXIsZXh0ZW5kOnthdDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlN0b3ApLnVwZGF0ZSh0LGUsaSl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbGVhcigpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbCh0aGlzLHRoaXMpLHRoaXN9LGZpbGw6ZnVuY3Rpb24oKXtyZXR1cm5cInVybCgjXCIrdGhpcy5pZCgpK1wiKVwifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwoKX0sYXR0cjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuXCJ0cmFuc2Zvcm1cIj09dCYmKHQ9XCJncmFkaWVudFRyYW5zZm9ybVwiKSxhLkNvbnRhaW5lci5wcm90b3R5cGUuYXR0ci5jYWxsKHRoaXMsdCxlLGkpfX0sY29uc3RydWN0OntncmFkaWVudDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRlZnMoKS5ncmFkaWVudCh0LGUpfX19KSxhLmV4dGVuZChhLkdyYWRpZW50LGEuRlgse2Zyb206ZnVuY3Rpb24odCxlKXtyZXR1cm5cInJhZGlhbFwiPT0odGhpcy5fdGFyZ2V0fHx0aGlzKS50eXBlP3RoaXMuYXR0cih7Zng6bmV3IGEuTnVtYmVyKHQpLGZ5Om5ldyBhLk51bWJlcihlKX0pOnRoaXMuYXR0cih7eDE6bmV3IGEuTnVtYmVyKHQpLHkxOm5ldyBhLk51bWJlcihlKX0pfSx0bzpmdW5jdGlvbih0LGUpe3JldHVyblwicmFkaWFsXCI9PSh0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU/dGhpcy5hdHRyKHtjeDpuZXcgYS5OdW1iZXIodCksY3k6bmV3IGEuTnVtYmVyKGUpfSk6dGhpcy5hdHRyKHt4MjpuZXcgYS5OdW1iZXIodCkseTI6bmV3IGEuTnVtYmVyKGUpfSl9fSksYS5leHRlbmQoYS5EZWZzLHtncmFkaWVudDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgYS5HcmFkaWVudCh0KSkudXBkYXRlKGUpfX0pLGEuU3RvcD1hLmludmVudCh7Y3JlYXRlOlwic3RvcFwiLGluaGVyaXQ6YS5FbGVtZW50LGV4dGVuZDp7dXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybihcIm51bWJlclwiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGEuTnVtYmVyKSYmKHQ9e29mZnNldDphcmd1bWVudHNbMF0sY29sb3I6YXJndW1lbnRzWzFdLG9wYWNpdHk6YXJndW1lbnRzWzJdfSksbnVsbCE9dC5vcGFjaXR5JiZ0aGlzLmF0dHIoXCJzdG9wLW9wYWNpdHlcIix0Lm9wYWNpdHkpLG51bGwhPXQuY29sb3ImJnRoaXMuYXR0cihcInN0b3AtY29sb3JcIix0LmNvbG9yKSxudWxsIT10Lm9mZnNldCYmdGhpcy5hdHRyKFwib2Zmc2V0XCIsbmV3IGEuTnVtYmVyKHQub2Zmc2V0KSksdGhpc319fSksYS5QYXR0ZXJuPWEuaW52ZW50KHtjcmVhdGU6XCJwYXR0ZXJuXCIsaW5oZXJpdDphLkNvbnRhaW5lcixleHRlbmQ6e2ZpbGw6ZnVuY3Rpb24oKXtyZXR1cm5cInVybCgjXCIrdGhpcy5pZCgpK1wiKVwifSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xlYXIoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0LmNhbGwodGhpcyx0aGlzKSx0aGlzfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwoKX0sYXR0cjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuXCJ0cmFuc2Zvcm1cIj09dCYmKHQ9XCJwYXR0ZXJuVHJhbnNmb3JtXCIpLGEuQ29udGFpbmVyLnByb3RvdHlwZS5hdHRyLmNhbGwodGhpcyx0LGUsaSl9fSxjb25zdHJ1Y3Q6e3BhdHRlcm46ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmRlZnMoKS5wYXR0ZXJuKHQsZSxpKX19fSksYS5leHRlbmQoYS5EZWZzLHtwYXR0ZXJuOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUGF0dGVybikudXBkYXRlKGkpLmF0dHIoe3g6MCx5OjAsd2lkdGg6dCxoZWlnaHQ6ZSxwYXR0ZXJuVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwifSl9fSksYS5TaGFwZT1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLHQpfSxpbmhlcml0OmEuRWxlbWVudH0pLGEuU3ltYm9sPWEuaW52ZW50KHtjcmVhdGU6XCJzeW1ib2xcIixpbmhlcml0OmEuQ29udGFpbmVyLGNvbnN0cnVjdDp7c3ltYm9sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlN5bWJvbCl9fX0pLGEuVXNlPWEuaW52ZW50KHtjcmVhdGU6XCJ1c2VcIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOntlbGVtZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cihcImhyZWZcIiwoZXx8XCJcIikrXCIjXCIrdCxhLnhsaW5rKX19LGNvbnN0cnVjdDp7dXNlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlVzZSkuZWxlbWVudCh0LGUpfX19KSxhLlJlY3Q9YS5pbnZlbnQoe2NyZWF0ZTpcInJlY3RcIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0OntyZWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlJlY3QpLnNpemUodCxlKX19fSksYS5DaXJjbGU9YS5pbnZlbnQoe2NyZWF0ZTpcImNpcmNsZVwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e2NpcmNsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuQ2lyY2xlKS5yeChuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKS5tb3ZlKDAsMCl9fX0pLGEuZXh0ZW5kKGEuQ2lyY2xlLGEuRlgse3J4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJyXCIsdCl9LHJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJ4KHQpfX0pLGEuRWxsaXBzZT1hLmludmVudCh7Y3JlYXRlOlwiZWxsaXBzZVwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e2VsbGlwc2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuRWxsaXBzZSkuc2l6ZSh0LGUpLm1vdmUoMCwwKX19fSksYS5leHRlbmQoYS5FbGxpcHNlLGEuUmVjdCxhLkZYLHtyeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwicnhcIix0KX0scnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInJ5XCIsdCl9fSksYS5leHRlbmQoYS5DaXJjbGUsYS5FbGxpcHNlLHt4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuY3goKS10aGlzLnJ4KCk6dGhpcy5jeCh0K3RoaXMucngoKSl9LHk6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5jeSgpLXRoaXMucnkoKTp0aGlzLmN5KHQrdGhpcy5yeSgpKX0sY3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwiY3hcIik6dGhpcy5hdHRyKFwiY3hcIix0KX0sY3k6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwiY3lcIik6dGhpcy5hdHRyKFwiY3lcIix0KX0sd2lkdGg6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/Mip0aGlzLnJ4KCk6dGhpcy5yeChuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10PzIqdGhpcy5yeSgpOnRoaXMucnkobmV3IGEuTnVtYmVyKHQpLmRpdmlkZSgyKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5yeChuZXcgYS5OdW1iZXIoaS53aWR0aCkuZGl2aWRlKDIpKS5yeShuZXcgYS5OdW1iZXIoaS5oZWlnaHQpLmRpdmlkZSgyKSl9fSksYS5MaW5lPWEuaW52ZW50KHtjcmVhdGU6XCJsaW5lXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7YXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuUG9pbnRBcnJheShbW3RoaXMuYXR0cihcIngxXCIpLHRoaXMuYXR0cihcInkxXCIpXSxbdGhpcy5hdHRyKFwieDJcIiksdGhpcy5hdHRyKFwieTJcIildXSl9LHBsb3Q6ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOih0PXZvaWQgMCE9PWU/e3gxOnQseTE6ZSx4MjppLHkyOnN9Om5ldyBhLlBvaW50QXJyYXkodCkudG9MaW5lKCksdGhpcy5hdHRyKHQpKX0sbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmF0dHIodGhpcy5hcnJheSgpLm1vdmUodCxlKS50b0xpbmUoKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5hdHRyKHRoaXMuYXJyYXkoKS5zaXplKGkud2lkdGgsaS5oZWlnaHQpLnRvTGluZSgpKX19LGNvbnN0cnVjdDp7bGluZTpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gYS5MaW5lLnByb3RvdHlwZS5wbG90LmFwcGx5KHRoaXMucHV0KG5ldyBhLkxpbmUpLG51bGwhPXQ/W3QsZSxpLHNdOlswLDAsMCwwXSl9fX0pLGEuUG9seWxpbmU9YS5pbnZlbnQoe2NyZWF0ZTpcInBvbHlsaW5lXCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7cG9seWxpbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlBvbHlsaW5lKS5wbG90KHR8fG5ldyBhLlBvaW50QXJyYXkpfX19KSxhLlBvbHlnb249YS5pbnZlbnQoe2NyZWF0ZTpcInBvbHlnb25cIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0Ontwb2x5Z29uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5Qb2x5Z29uKS5wbG90KHR8fG5ldyBhLlBvaW50QXJyYXkpfX19KSxhLmV4dGVuZChhLlBvbHlsaW5lLGEuUG9seWdvbix7YXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyYXl8fCh0aGlzLl9hcnJheT1uZXcgYS5Qb2ludEFycmF5KHRoaXMuYXR0cihcInBvaW50c1wiKSkpfSxwbG90OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXJyYXkoKTp0aGlzLmNsZWFyKCkuYXR0cihcInBvaW50c1wiLFwic3RyaW5nXCI9PXR5cGVvZiB0P3Q6dGhpcy5fYXJyYXk9bmV3IGEuUG9pbnRBcnJheSh0KSl9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSB0aGlzLl9hcnJheSx0aGlzfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cihcInBvaW50c1wiLHRoaXMuYXJyYXkoKS5tb3ZlKHQsZSkpfSxzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dSh0aGlzLHQsZSk7cmV0dXJuIHRoaXMuYXR0cihcInBvaW50c1wiLHRoaXMuYXJyYXkoKS5zaXplKGkud2lkdGgsaS5oZWlnaHQpKX19KSxhLmV4dGVuZChhLkxpbmUsYS5Qb2x5bGluZSxhLlBvbHlnb24se21vcnBoQXJyYXk6YS5Qb2ludEFycmF5LHg6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5iYm94KCkueDp0aGlzLm1vdmUodCx0aGlzLmJib3goKS55KX0seTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmJib3goKS55OnRoaXMubW92ZSh0aGlzLmJib3goKS54LHQpfSx3aWR0aDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmJib3goKTtyZXR1cm4gbnVsbD09dD9lLndpZHRoOnRoaXMuc2l6ZSh0LGUuaGVpZ2h0KX0saGVpZ2h0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYmJveCgpO3JldHVybiBudWxsPT10P2UuaGVpZ2h0OnRoaXMuc2l6ZShlLndpZHRoLHQpfX0pLGEuUGF0aD1hLmludmVudCh7Y3JlYXRlOlwicGF0aFwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e21vcnBoQXJyYXk6YS5QYXRoQXJyYXksYXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyYXl8fCh0aGlzLl9hcnJheT1uZXcgYS5QYXRoQXJyYXkodGhpcy5hdHRyKFwiZFwiKSkpfSxwbG90OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXJyYXkoKTp0aGlzLmNsZWFyKCkuYXR0cihcImRcIixcInN0cmluZ1wiPT10eXBlb2YgdD90OnRoaXMuX2FycmF5PW5ldyBhLlBhdGhBcnJheSh0KSl9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSB0aGlzLl9hcnJheSx0aGlzfX0sY29uc3RydWN0OntwYXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5QYXRoKS5wbG90KHR8fG5ldyBhLlBhdGhBcnJheSl9fX0pLGEuSW1hZ2U9YS5pbnZlbnQoe2NyZWF0ZTpcImltYWdlXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7bG9hZDpmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdGhpczt2YXIgaT10aGlzLHM9bmV3IHQuSW1hZ2U7cmV0dXJuIGEub24ocyxcImxvYWRcIiwoZnVuY3Rpb24oKXthLm9mZihzKTt2YXIgdD1pLnBhcmVudChhLlBhdHRlcm4pO251bGwhPT10JiYoMD09aS53aWR0aCgpJiYwPT1pLmhlaWdodCgpJiZpLnNpemUocy53aWR0aCxzLmhlaWdodCksdCYmMD09dC53aWR0aCgpJiYwPT10LmhlaWdodCgpJiZ0LnNpemUoaS53aWR0aCgpLGkuaGVpZ2h0KCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuX2xvYWRlZCYmaS5fbG9hZGVkLmNhbGwoaSx7d2lkdGg6cy53aWR0aCxoZWlnaHQ6cy5oZWlnaHQscmF0aW86cy53aWR0aC9zLmhlaWdodCx1cmw6ZX0pKX0pKSxhLm9uKHMsXCJlcnJvclwiLChmdW5jdGlvbih0KXthLm9mZihzKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLl9lcnJvciYmaS5fZXJyb3IuY2FsbChpLHQpfSkpLHRoaXMuYXR0cihcImhyZWZcIixzLnNyYz10aGlzLnNyYz1lLGEueGxpbmspfSxsb2FkZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xvYWRlZD10LHRoaXN9LGVycm9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lcnJvcj10LHRoaXN9fSxjb25zdHJ1Y3Q6e2ltYWdlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuSW1hZ2UpLmxvYWQodCkuc2l6ZShlfHwwLGl8fGV8fDApfX19KSxhLlRleHQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLGEuY3JlYXRlKFwidGV4dFwiKSksdGhpcy5kb20ubGVhZGluZz1uZXcgYS5OdW1iZXIoMS4zKSx0aGlzLl9yZWJ1aWxkPSEwLHRoaXMuX2J1aWxkPSExLHRoaXMuYXR0cihcImZvbnQtZmFtaWx5XCIsYS5kZWZhdWx0cy5hdHRyc1tcImZvbnQtZmFtaWx5XCJdKX0saW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJ4XCIpOnRoaXMuYXR0cihcInhcIix0KX0sdGV4dDpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXt0PVwiXCI7Zm9yKHZhciBlPXRoaXMubm9kZS5jaGlsZE5vZGVzLGk9MCxzPWUubGVuZ3RoO2k8czsrK2kpMCE9aSYmMyE9ZVtpXS5ub2RlVHlwZSYmMT09YS5hZG9wdChlW2ldKS5kb20ubmV3TGluZWQmJih0Kz1cIlxcblwiKSx0Kz1lW2ldLnRleHRDb250ZW50O3JldHVybiB0fWlmKHRoaXMuY2xlYXIoKS5idWlsZCghMCksXCJmdW5jdGlvblwiPT10eXBlb2YgdCl0LmNhbGwodGhpcyx0aGlzKTtlbHNle2k9MDtmb3IodmFyIHI9KHQ9dC5zcGxpdChcIlxcblwiKSkubGVuZ3RoO2k8cjtpKyspdGhpcy50c3Bhbih0W2ldKS5uZXdMaW5lKCl9cmV0dXJuIHRoaXMuYnVpbGQoITEpLnJlYnVpbGQoKX0sc2l6ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiZm9udC1zaXplXCIsdCkucmVidWlsZCgpfSxsZWFkaW5nOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuZG9tLmxlYWRpbmc6KHRoaXMuZG9tLmxlYWRpbmc9bmV3IGEuTnVtYmVyKHQpLHRoaXMucmVidWlsZCgpKX0sbGluZXM6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlLGU9YS51dGlscy5tYXAoYS51dGlscy5maWx0ZXJTVkdFbGVtZW50cyh0LmNoaWxkTm9kZXMpLChmdW5jdGlvbih0KXtyZXR1cm4gYS5hZG9wdCh0KX0pKTtyZXR1cm4gbmV3IGEuU2V0KGUpfSxyZWJ1aWxkOmZ1bmN0aW9uKHQpe2lmKFwiYm9vbGVhblwiPT10eXBlb2YgdCYmKHRoaXMuX3JlYnVpbGQ9dCksdGhpcy5fcmVidWlsZCl7dmFyIGU9dGhpcyxpPTAscz10aGlzLmRvbS5sZWFkaW5nKm5ldyBhLk51bWJlcih0aGlzLmF0dHIoXCJmb250LXNpemVcIikpO3RoaXMubGluZXMoKS5lYWNoKChmdW5jdGlvbigpe3RoaXMuZG9tLm5ld0xpbmVkJiYoZS50ZXh0UGF0aCgpfHx0aGlzLmF0dHIoXCJ4XCIsZS5hdHRyKFwieFwiKSksXCJcXG5cIj09dGhpcy50ZXh0KCk/aSs9czoodGhpcy5hdHRyKFwiZHlcIixzK2kpLGk9MCkpfSkpLHRoaXMuZmlyZShcInJlYnVpbGRcIil9cmV0dXJuIHRoaXN9LGJ1aWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9idWlsZD0hIXQsdGhpc30sc2V0RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb209dCx0aGlzLmRvbS5sZWFkaW5nPW5ldyBhLk51bWJlcih0LmxlYWRpbmd8fDEuMyksdGhpc319LGNvbnN0cnVjdDp7dGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuVGV4dCkudGV4dCh0KX0scGxhaW46ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlRleHQpLnBsYWluKHQpfX19KSxhLlRzcGFuPWEuaW52ZW50KHtjcmVhdGU6XCJ0c3BhblwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e3RleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5ub2RlLnRleHRDb250ZW50Kyh0aGlzLmRvbS5uZXdMaW5lZD9cIlxcblwiOlwiXCIpOihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QuY2FsbCh0aGlzLHRoaXMpOnRoaXMucGxhaW4odCksdGhpcyl9LGR4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJkeFwiLHQpfSxkeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwiZHlcIix0KX0sbmV3TGluZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50KGEuVGV4dCk7cmV0dXJuIHRoaXMuZG9tLm5ld0xpbmVkPSEwLHRoaXMuZHkodC5kb20ubGVhZGluZyp0LmF0dHIoXCJmb250LXNpemVcIikpLmF0dHIoXCJ4XCIsdC54KCkpfX19KSxhLmV4dGVuZChhLlRleHQsYS5Uc3Bhbix7cGxhaW46ZnVuY3Rpb24odCl7cmV0dXJuITE9PT10aGlzLl9idWlsZCYmdGhpcy5jbGVhcigpLHRoaXMubm9kZS5hcHBlbmRDaGlsZChlLmNyZWF0ZVRleHROb2RlKHQpKSx0aGlzfSx0c3BhbjpmdW5jdGlvbih0KXt2YXIgZT0odGhpcy50ZXh0UGF0aCYmdGhpcy50ZXh0UGF0aCgpfHx0aGlzKS5ub2RlLGk9bmV3IGEuVHNwYW47cmV0dXJuITE9PT10aGlzLl9idWlsZCYmdGhpcy5jbGVhcigpLGUuYXBwZW5kQ2hpbGQoaS5ub2RlKSxpLnRleHQodCl9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGU7dC5oYXNDaGlsZE5vZGVzKCk7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpO3JldHVybiB0aGlzfSxsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpfX0pLGEuVGV4dFBhdGg9YS5pbnZlbnQoe2NyZWF0ZTpcInRleHRQYXRoXCIsaW5oZXJpdDphLlBhcmVudCxwYXJlbnQ6YS5UZXh0LGNvbnN0cnVjdDp7bW9ycGhBcnJheTphLlBhdGhBcnJheSxhcnJheTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudHJhY2soKTtyZXR1cm4gdD90LmFycmF5KCk6bnVsbH0scGxvdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnRyYWNrKCksaT1udWxsO3JldHVybiBlJiYoaT1lLnBsb3QodCkpLG51bGw9PXQ/aTp0aGlzfSx0cmFjazpmdW5jdGlvbigpe3ZhciB0PXRoaXMudGV4dFBhdGgoKTtpZih0KXJldHVybiB0LnJlZmVyZW5jZShcImhyZWZcIil9LHRleHRQYXRoOmZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlLmZpcnN0Q2hpbGQmJlwidGV4dFBhdGhcIj09dGhpcy5ub2RlLmZpcnN0Q2hpbGQubm9kZU5hbWUpcmV0dXJuIGEuYWRvcHQodGhpcy5ub2RlLmZpcnN0Q2hpbGQpfX19KSxhLk5lc3RlZD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUoXCJzdmdcIikpLHRoaXMuc3R5bGUoXCJvdmVyZmxvd1wiLFwidmlzaWJsZVwiKX0saW5oZXJpdDphLkNvbnRhaW5lcixjb25zdHJ1Y3Q6e25lc3RlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgYS5OZXN0ZWQpfX19KTt2YXIgbD17c3Ryb2tlOltcImNvbG9yXCIsXCJ3aWR0aFwiLFwib3BhY2l0eVwiLFwibGluZWNhcFwiLFwibGluZWpvaW5cIixcIm1pdGVybGltaXRcIixcImRhc2hhcnJheVwiLFwiZGFzaG9mZnNldFwiXSxmaWxsOltcImNvbG9yXCIsXCJvcGFjaXR5XCIsXCJydWxlXCJdLHByZWZpeDpmdW5jdGlvbih0LGUpe3JldHVyblwiY29sb3JcIj09ZT90OnQrXCItXCIrZX19O2Z1bmN0aW9uIGgodCxlLGkscyl7cmV0dXJuIGkrcy5yZXBsYWNlKGEucmVnZXguZG90cyxcIiAuXCIpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tKC4pL2csKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudG9VcHBlckNhc2UoKX0pKX1mdW5jdGlvbiBkKHQpe3JldHVybiB0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9ZnVuY3Rpb24gZyh0KXt2YXIgZT10LnRvU3RyaW5nKDE2KTtyZXR1cm4gMT09ZS5sZW5ndGg/XCIwXCIrZTplfWZ1bmN0aW9uIHUodCxlLGkpe2lmKG51bGw9PWV8fG51bGw9PWkpe3ZhciBhPXQuYmJveCgpO251bGw9PWU/ZT1hLndpZHRoL2EuaGVpZ2h0Kmk6bnVsbD09aSYmKGk9YS5oZWlnaHQvYS53aWR0aCplKX1yZXR1cm57d2lkdGg6ZSxoZWlnaHQ6aX19ZnVuY3Rpb24gcCh0LGUsaSl7cmV0dXJue3g6ZSp0LmEraSp0LmMrMCx5OmUqdC5iK2kqdC5kKzB9fWZ1bmN0aW9uIGYodCl7cmV0dXJue2E6dFswXSxiOnRbMV0sYzp0WzJdLGQ6dFszXSxlOnRbNF0sZjp0WzVdfX1mdW5jdGlvbiB4KGUpe2Zvcih2YXIgaT1lLmNoaWxkTm9kZXMubGVuZ3RoLTE7aT49MDtpLS0pZS5jaGlsZE5vZGVzW2ldaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnQmJngoZS5jaGlsZE5vZGVzW2ldKTtyZXR1cm4gYS5hZG9wdChlKS5pZChhLmVpZChlLm5vZGVOYW1lKSl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gTWF0aC5hYnModCk+MWUtMzc/dDowfVtcImZpbGxcIixcInN0cm9rZVwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT17fTtlW3RdPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIHRoaXM7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fGEuQ29sb3IuaXNSZ2IoZSl8fGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuZmlsbCl0aGlzLmF0dHIodCxlKTtlbHNlIGZvcih2YXIgaT1sW3RdLmxlbmd0aC0xO2k+PTA7aS0tKW51bGwhPWVbbFt0XVtpXV0mJnRoaXMuYXR0cihsLnByZWZpeCh0LGxbdF1baV0pLGVbbFt0XVtpXV0pO3JldHVybiB0aGlzfSxhLmV4dGVuZChhLkVsZW1lbnQsYS5GWCxlKX0pKSxhLmV4dGVuZChhLkVsZW1lbnQsYS5GWCx7dHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHt4OnQseTplfSl9LG1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwidHJhbnNmb3JtXCIsbmV3IGEuTWF0cml4KDY9PWFyZ3VtZW50cy5sZW5ndGg/W10uc2xpY2UuY2FsbChhcmd1bWVudHMpOnQpKX0sb3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwib3BhY2l0eVwiLHQpfSxkeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54KG5ldyBhLk51bWJlcih0KS5wbHVzKHRoaXMgaW5zdGFuY2VvZiBhLkZYPzA6dGhpcy54KCkpLCEwKX0sZHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueShuZXcgYS5OdW1iZXIodCkucGx1cyh0aGlzIGluc3RhbmNlb2YgYS5GWD8wOnRoaXMueSgpKSwhMCl9fSksYS5leHRlbmQoYS5QYXRoLHtsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLmdldFRvdGFsTGVuZ3RoKCl9LHBvaW50QXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm9kZS5nZXRQb2ludEF0TGVuZ3RoKHQpfX0pLGEuU2V0PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7QXJyYXkuaXNBcnJheSh0KT90aGlzLm1lbWJlcnM9dDp0aGlzLmNsZWFyKCl9LGV4dGVuZDp7YWRkOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXRoaXMubWVtYmVycy5wdXNoKHRbZV0pO3JldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbmRleCh0KTtyZXR1cm4gZT4tMSYmdGhpcy5tZW1iZXJzLnNwbGljZShlLDEpLHRoaXN9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT10aGlzLm1lbWJlcnMubGVuZ3RoO2U8aTtlKyspdC5hcHBseSh0aGlzLm1lbWJlcnNbZV0sW2UsdGhpcy5tZW1iZXJzXSk7cmV0dXJuIHRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVycz1bXSx0aGlzfSxsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzLmxlbmd0aH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluZGV4KHQpPj0wfSxpbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tZW1iZXJzLmluZGV4T2YodCl9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tZW1iZXJzW3RdfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldCh0aGlzLm1lbWJlcnMubGVuZ3RoLTEpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVtYmVyc319LGNvbnN0cnVjdDp7c2V0OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYS5TZXQodCl9fX0pLGEuRlguU2V0PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5zZXQ9dH19KSxhLlNldC5pbmhlcml0PWZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIGEuU2hhcGUucHJvdG90eXBlKVwiZnVuY3Rpb25cIj09dHlwZW9mIGEuU2hhcGUucHJvdG90eXBlW2VdJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLlNldC5wcm90b3R5cGVbZV0mJnQucHVzaChlKTtmb3IodmFyIGUgaW4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXthLlNldC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxpPXRoaXMubWVtYmVycy5sZW5ndGg7ZTxpO2UrKyl0aGlzLm1lbWJlcnNbZV0mJlwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMubWVtYmVyc1tlXVt0XSYmdGhpcy5tZW1iZXJzW2VdW3RdLmFwcGx5KHRoaXMubWVtYmVyc1tlXSxhcmd1bWVudHMpO3JldHVyblwiYW5pbWF0ZVwiPT10P3RoaXMuZnh8fCh0aGlzLmZ4PW5ldyBhLkZYLlNldCh0aGlzKSk6dGhpc319KSksdD1bXSxhLkZYLnByb3RvdHlwZSlcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLkZYLnByb3RvdHlwZVtlXSYmXCJmdW5jdGlvblwiIT10eXBlb2YgYS5GWC5TZXQucHJvdG90eXBlW2VdJiZ0LnB1c2goZSk7dC5mb3JFYWNoKChmdW5jdGlvbih0KXthLkZYLlNldC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCxpPXRoaXMuc2V0Lm1lbWJlcnMubGVuZ3RoO2U8aTtlKyspdGhpcy5zZXQubWVtYmVyc1tlXS5meFt0XS5hcHBseSh0aGlzLnNldC5tZW1iZXJzW2VdLmZ4LGFyZ3VtZW50cyk7cmV0dXJuIHRoaXN9fSkpfSxhLmV4dGVuZChhLkVsZW1lbnQse30pLGEuZXh0ZW5kKGEuRWxlbWVudCx7cmVtZW1iZXI6ZnVuY3Rpb24odCxlKXtpZihcIm9iamVjdFwiPT09aShhcmd1bWVudHNbMF0pKWZvcih2YXIgYSBpbiB0KXRoaXMucmVtZW1iZXIoYSx0W2FdKTtlbHNle2lmKDE9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMubWVtb3J5KClbdF07dGhpcy5tZW1vcnkoKVt0XT1lfXJldHVybiB0aGlzfSxmb3JnZXQ6ZnVuY3Rpb24oKXtpZigwPT1hcmd1bWVudHMubGVuZ3RoKXRoaXMuX21lbW9yeT17fTtlbHNlIGZvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTE7dD49MDt0LS0pZGVsZXRlIHRoaXMubWVtb3J5KClbYXJndW1lbnRzW3RdXTtyZXR1cm4gdGhpc30sbWVtb3J5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21lbW9yeXx8KHRoaXMuX21lbW9yeT17fSl9fSksYS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGk9ZS5nZXRFbGVtZW50QnlJZChmdW5jdGlvbih0KXt2YXIgZT0odHx8XCJcIikudG9TdHJpbmcoKS5tYXRjaChhLnJlZ2V4LnJlZmVyZW5jZSk7aWYoZSlyZXR1cm4gZVsxXX0odCl8fHQpO3JldHVybiBhLmFkb3B0KGkpfSxhLnNlbGVjdD1mdW5jdGlvbih0LGkpe3JldHVybiBuZXcgYS5TZXQoYS51dGlscy5tYXAoKGl8fGUpLnF1ZXJ5U2VsZWN0b3JBbGwodCksKGZ1bmN0aW9uKHQpe3JldHVybiBhLmFkb3B0KHQpfSkpKX0sYS5leHRlbmQoYS5QYXJlbnQse3NlbGVjdDpmdW5jdGlvbih0KXtyZXR1cm4gYS5zZWxlY3QodCx0aGlzLm5vZGUpfX0pO3ZhciB2PVwiYWJjZGVmXCIuc3BsaXQoXCJcIik7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdC5DdXN0b21FdmVudCl7dmFyIG09ZnVuY3Rpb24odCxpKXtpPWl8fHtidWJibGVzOiExLGNhbmNlbGFibGU6ITEsZGV0YWlsOnZvaWQgMH07dmFyIGE9ZS5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO3JldHVybiBhLmluaXRDdXN0b21FdmVudCh0LGkuYnViYmxlcyxpLmNhbmNlbGFibGUsaS5kZXRhaWwpLGF9O20ucHJvdG90eXBlPXQuRXZlbnQucHJvdG90eXBlLGEuQ3VzdG9tRXZlbnQ9bX1lbHNlIGEuQ3VzdG9tRXZlbnQ9dC5DdXN0b21FdmVudDtyZXR1cm4gYX0sXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgoZnVuY3Rpb24oKXtyZXR1cm4gSHQoUnQsUnQuZG9jdW1lbnQpfSkpOlwib2JqZWN0XCI9PT0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIGV4cG9ydHM/XCJ1bmRlZmluZWRcIjppKGV4cG9ydHMpKSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1SdC5kb2N1bWVudD9IdChSdCxSdC5kb2N1bWVudCk6ZnVuY3Rpb24odCl7cmV0dXJuIEh0KHQsdC5kb2N1bWVudCl9OlJ0LlNWRz1IdChSdCxSdC5kb2N1bWVudCksXG4vKiEgc3ZnLmZpbHRlci5qcyAtIHYyLjAuMiAtIDIwMTYtMDItMjRcbiogaHR0cHM6Ly9naXRodWIuY29tL3dvdXQvc3ZnLmZpbHRlci5qc1xuKiBDb3B5cmlnaHQgKGMpIDIwMTYgV291dCBGaWVyZW5zOyBMaWNlbnNlZCBNSVQgKi9cbmZ1bmN0aW9uKCl7U1ZHLkZpbHRlcj1TVkcuaW52ZW50KHtjcmVhdGU6XCJmaWx0ZXJcIixpbmhlcml0OlNWRy5QYXJlbnQsZXh0ZW5kOntzb3VyY2U6XCJTb3VyY2VHcmFwaGljXCIsc291cmNlQWxwaGE6XCJTb3VyY2VBbHBoYVwiLGJhY2tncm91bmQ6XCJCYWNrZ3JvdW5kSW1hZ2VcIixiYWNrZ3JvdW5kQWxwaGE6XCJCYWNrZ3JvdW5kQWxwaGFcIixmaWxsOlwiRmlsbFBhaW50XCIsc3Ryb2tlOlwiU3Ryb2tlUGFpbnRcIixhdXRvU2V0SW46ITAscHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKHQsZSksIXQuYXR0cihcImluXCIpJiZ0aGlzLmF1dG9TZXRJbiYmdC5hdHRyKFwiaW5cIix0aGlzLnNvdXJjZSksdC5hdHRyKFwicmVzdWx0XCIpfHx0LmF0dHIoXCJyZXN1bHRcIix0KSx0fSxibGVuZDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQmxlbmRFZmZlY3QodCxlLGkpKX0sY29sb3JNYXRyaXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db2xvck1hdHJpeEVmZmVjdCh0LGUpKX0sY29udm9sdmVNYXRyaXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29udm9sdmVNYXRyaXhFZmZlY3QodCkpfSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db21wb25lbnRUcmFuc2ZlckVmZmVjdCh0KSl9LGNvbXBvc2l0ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuQ29tcG9zaXRlRWZmZWN0KHQsZSxpKSl9LGZsb29kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRmxvb2RFZmZlY3QodCxlKSl9LG9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLk9mZnNldEVmZmVjdCh0LGUpKX0saW1hZ2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuSW1hZ2VFZmZlY3QodCkpfSxtZXJnZTpmdW5jdGlvbigpe3ZhciB0PVt2b2lkIDBdO2Zvcih2YXIgZSBpbiBhcmd1bWVudHMpdC5wdXNoKGFyZ3VtZW50c1tlXSk7cmV0dXJuIHRoaXMucHV0KG5ldyhTVkcuTWVyZ2VFZmZlY3QuYmluZC5hcHBseShTVkcuTWVyZ2VFZmZlY3QsdCkpKX0sZ2F1c3NpYW5CbHVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuR2F1c3NpYW5CbHVyRWZmZWN0KHQsZSkpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuTW9ycGhvbG9neUVmZmVjdCh0LGUpKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5EaWZmdXNlTGlnaHRpbmdFZmZlY3QodCxlLGkpKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHQsZSxpLGEscyl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuRGlzcGxhY2VtZW50TWFwRWZmZWN0KHQsZSxpLGEscykpfSxzcGVjdWxhckxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpLGEpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlNwZWN1bGFyTGlnaHRpbmdFZmZlY3QodCxlLGksYSkpfSx0aWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuVGlsZUVmZmVjdCl9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24odCxlLGksYSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5UdXJidWxlbmNlRWZmZWN0KHQsZSxpLGEscykpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmF0dHIoXCJpZFwiKStcIilcIn19fSksU1ZHLmV4dGVuZChTVkcuRGVmcyx7ZmlsdGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucHV0KG5ldyBTVkcuRmlsdGVyKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0LmNhbGwoZSxlKSxlfX0pLFNWRy5leHRlbmQoU1ZHLkNvbnRhaW5lcix7ZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlZnMoKS5maWx0ZXIodCl9fSksU1ZHLmV4dGVuZChTVkcuRWxlbWVudCxTVkcuRyxTVkcuTmVzdGVkLHtmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmlsdGVyZXI9dCBpbnN0YW5jZW9mIFNWRy5FbGVtZW50P3Q6dGhpcy5kb2MoKS5maWx0ZXIodCksdGhpcy5kb2MoKSYmdGhpcy5maWx0ZXJlci5kb2MoKSE9PXRoaXMuZG9jKCkmJnRoaXMuZG9jKCkuZGVmcygpLmFkZCh0aGlzLmZpbHRlcmVyKSx0aGlzLmF0dHIoXCJmaWx0ZXJcIix0aGlzLmZpbHRlcmVyKSx0aGlzLmZpbHRlcmVyfSx1bmZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXJlciYmITA9PT10JiZ0aGlzLmZpbHRlcmVyLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmZpbHRlcmVyLHRoaXMuYXR0cihcImZpbHRlclwiLG51bGwpfX0pLFNWRy5FZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5FbGVtZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zZWxlY3QoJ1tyZXN1bHQ9XCInK3RoaXMuYXR0cihcImluXCIpKydcIl0nKS5nZXQoMCl8fHRoaXMuYXR0cihcImluXCIpOnRoaXMuYXR0cihcImluXCIsdCl9LHJlc3VsdDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJyZXN1bHRcIik6dGhpcy5hdHRyKFwicmVzdWx0XCIsdCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVzdWx0KCl9fX0pLFNWRy5QYXJlbnRFZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5QYXJlbnQsZXh0ZW5kOntpbjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW5cIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW5cIik6dGhpcy5hdHRyKFwiaW5cIix0KX0scmVzdWx0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcInJlc3VsdFwiKTp0aGlzLmF0dHIoXCJyZXN1bHRcIix0KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHQoKX19fSk7dmFyIHQ9e2JsZW5kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuYmxlbmQodGhpcyx0LGUpfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbG9yTWF0cml4KHQsZSkuaW4odGhpcyl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbnZvbHZlTWF0cml4KHQpLmluKHRoaXMpfSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb21wb25lbnRUcmFuc2Zlcih0KS5pbih0aGlzKX0sY29tcG9zaXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29tcG9zaXRlKHRoaXMsdCxlKX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5mbG9vZCh0LGUpfSxvZmZzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5vZmZzZXQodCxlKS5pbih0aGlzKX0saW1hZ2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuaW1hZ2UodCl9LG1lcmdlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkubWVyZ2UuYXBwbHkodGhpcy5wYXJlbnQoKSxbdGhpc10uY29uY2F0KGFyZ3VtZW50cykpfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5nYXVzc2lhbkJsdXIodCxlKS5pbih0aGlzKX0sbW9ycGhvbG9neTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm1vcnBob2xvZ3kodCxlKS5pbih0aGlzKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5kaWZmdXNlTGlnaHRpbmcodCxlLGkpLmluKHRoaXMpfSxkaXNwbGFjZW1lbnRNYXA6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuZGlzcGxhY2VtZW50TWFwKHRoaXMsdCxlLGksYSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc3BlY3VsYXJMaWdodGluZyh0LGUsaSxhKS5pbih0aGlzKX0sdGlsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnRpbGUoKS5pbih0aGlzKX0sdHVyYnVsZW5jZTpmdW5jdGlvbih0LGUsaSxhLHMpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnR1cmJ1bGVuY2UodCxlLGksYSxzKS5pbih0aGlzKX19O1NWRy5leHRlbmQoU1ZHLkVmZmVjdCx0KSxTVkcuZXh0ZW5kKFNWRy5QYXJlbnRFZmZlY3QsdCksU1ZHLkNoaWxkRWZmZWN0PVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzKX0saW5oZXJpdDpTVkcuRWxlbWVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHQpe3RoaXMuYXR0cihcImluXCIsdCl9fX0pO3ZhciBlPXtibGVuZDpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHtpbjp0LGluMjplLG1vZGU6aXx8XCJub3JtYWxcIn0pfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpe1wibWF0cml4XCI9PXQmJihlPXMoZSkpLHRoaXMuYXR0cih7dHlwZTp0LHZhbHVlczp2b2lkIDA9PT1lP251bGw6ZX0pfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbih0KXt0PXModCksdGhpcy5hdHRyKHtvcmRlcjpNYXRoLnNxcnQodC5zcGxpdChcIiBcIikubGVuZ3RoKSxrZXJuZWxNYXRyaXg6dH0pfSxjb21wb3NpdGU6ZnVuY3Rpb24odCxlLGkpe3RoaXMuYXR0cih7aW46dCxpbjI6ZSxvcGVyYXRvcjppfSl9LGZsb29kOmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKFwiZmxvb2QtY29sb3JcIix0KSxudWxsIT1lJiZ0aGlzLmF0dHIoXCJmbG9vZC1vcGFjaXR5XCIsZSl9LG9mZnNldDpmdW5jdGlvbih0LGUpe3RoaXMuYXR0cih7ZHg6dCxkeTplfSl9LGltYWdlOmZ1bmN0aW9uKHQpe3RoaXMuYXR0cihcImhyZWZcIix0LFNWRy54bGluayl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbih0LGUsaSxhLHMpe3RoaXMuYXR0cih7aW46dCxpbjI6ZSxzY2FsZTppLHhDaGFubmVsU2VsZWN0b3I6YSx5Q2hhbm5lbFNlbGVjdG9yOnN9KX0sZ2F1c3NpYW5CbHVyOmZ1bmN0aW9uKHQsZSl7bnVsbCE9dHx8bnVsbCE9ZT90aGlzLmF0dHIoXCJzdGREZXZpYXRpb25cIixmdW5jdGlvbih0KXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdDtmb3IodmFyIGU9MCxpPXQubGVuZ3RoLGE9W107ZTxpO2UrKylhLnB1c2godFtlXSk7cmV0dXJuIGEuam9pbihcIiBcIil9KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKTp0aGlzLmF0dHIoXCJzdGREZXZpYXRpb25cIixcIjAgMFwiKX0sbW9ycGhvbG9neTpmdW5jdGlvbih0LGUpe3RoaXMuYXR0cih7b3BlcmF0b3I6dCxyYWRpdXM6ZX0pfSx0aWxlOmZ1bmN0aW9uKCl7fSx0dXJidWxlbmNlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dGhpcy5hdHRyKHtudW1PY3RhdmVzOmUsc2VlZDppLHN0aXRjaFRpbGVzOmEsYmFzZUZyZXF1ZW5jeTp0LHR5cGU6c30pfX0saT17bWVyZ2U6ZnVuY3Rpb24oKXt2YXIgdDtpZihhcmd1bWVudHNbMF1pbnN0YW5jZW9mIFNWRy5TZXQpe3ZhciBlPXRoaXM7YXJndW1lbnRzWzBdLmVhY2goKGZ1bmN0aW9uKHQpe3RoaXMgaW5zdGFuY2VvZiBTVkcuTWVyZ2VOb2RlP2UucHV0KHRoaXMpOih0aGlzIGluc3RhbmNlb2YgU1ZHLkVmZmVjdHx8dGhpcyBpbnN0YW5jZW9mIFNWRy5QYXJlbnRFZmZlY3QpJiZlLnB1dChuZXcgU1ZHLk1lcmdlTm9kZSh0aGlzKSl9KSl9ZWxzZXt0PUFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRbaV1pbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/dGhpcy5wdXQodFtpXSk6dGhpcy5wdXQobmV3IFNWRy5NZXJnZU5vZGUodFtpXSkpfX0sY29tcG9uZW50VHJhbnNmZXI6ZnVuY3Rpb24odCl7aWYodGhpcy5yZ2I9bmV3IFNWRy5TZXQsW1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXNbdF09bmV3KFNWR1tcIkZ1bmNcIit0LnRvVXBwZXJDYXNlKCldKShcImlkZW50aXR5XCIpLHRoaXMucmdiLmFkZCh0aGlzW3RdKSx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodGhpc1t0XS5ub2RlKX0uYmluZCh0aGlzKSksdClmb3IodmFyIGUgaW4gdC5yZ2ImJihbXCJyXCIsXCJnXCIsXCJiXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpc1tlXS5hdHRyKHQucmdiKX0uYmluZCh0aGlzKSksZGVsZXRlIHQucmdiKSx0KXRoaXNbZV0uYXR0cih0W2VdKX0sZGlmZnVzZUxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe3N1cmZhY2VTY2FsZTp0LGRpZmZ1c2VDb25zdGFudDplLGtlcm5lbFVuaXRMZW5ndGg6aX0pfSxzcGVjdWxhckxpZ2h0aW5nOmZ1bmN0aW9uKHQsZSxpLGEpe3RoaXMuYXR0cih7c3VyZmFjZVNjYWxlOnQsZGlmZnVzZUNvbnN0YW50OmUsc3BlY3VsYXJFeHBvbmVudDppLGtlcm5lbFVuaXRMZW5ndGg6YX0pfX0sYT17ZGlzdGFudExpZ2h0OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHthemltdXRoOnQsZWxldmF0aW9uOmV9KX0scG9pbnRMaWdodDpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHt4OnQseTplLHo6aX0pfSxzcG90TGlnaHQ6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3RoaXMuYXR0cih7eDp0LHk6ZSx6OmkscG9pbnRzQXRYOmEscG9pbnRzQXRZOnMscG9pbnRzQXRaOnJ9KX0sbWVyZ2VOb2RlOmZ1bmN0aW9uKHQpe3RoaXMuYXR0cihcImluXCIsdCl9fTtmdW5jdGlvbiBzKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYodD1uZXcgU1ZHLkFycmF5KHQpKSx0LnRvU3RyaW5nKCkucmVwbGFjZSgvXlxccysvLFwiXCIpLnJlcGxhY2UoL1xccyskLyxcIlwiKS5yZXBsYWNlKC9cXHMrL2csXCIgXCIpfWZ1bmN0aW9uIHIoKXt2YXIgdD1mdW5jdGlvbigpe307Zm9yKHZhciBlIGluXCJmdW5jdGlvblwiPT10eXBlb2YgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0mJih0PWFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhcmd1bWVudHMsYXJndW1lbnRzLmxlbmd0aC0xLDEpKSxhcmd1bWVudHMpZm9yKHZhciBpIGluIGFyZ3VtZW50c1tlXSl0KGFyZ3VtZW50c1tlXVtpXSxpLGFyZ3VtZW50c1tlXSl9W1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthW1wiRnVuY1wiK3QudG9VcHBlckNhc2UoKV09ZnVuY3Rpb24odCl7c3dpdGNoKHRoaXMuYXR0cihcInR5cGVcIix0KSx0KXtjYXNlXCJ0YWJsZVwiOnRoaXMuYXR0cihcInRhYmxlVmFsdWVzXCIsYXJndW1lbnRzWzFdKTticmVhaztjYXNlXCJsaW5lYXJcIjp0aGlzLmF0dHIoXCJzbG9wZVwiLGFyZ3VtZW50c1sxXSksdGhpcy5hdHRyKFwiaW50ZXJjZXB0XCIsYXJndW1lbnRzWzJdKTticmVhaztjYXNlXCJnYW1tYVwiOnRoaXMuYXR0cihcImFtcGxpdHVkZVwiLGFyZ3VtZW50c1sxXSksdGhpcy5hdHRyKFwiZXhwb25lbnRcIixhcmd1bWVudHNbMl0pLHRoaXMuYXR0cihcIm9mZnNldFwiLGFyZ3VtZW50c1syXSl9fX0pKSxyKGUsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO1NWR1tpK1wiRWZmZWN0XCJdPVNWRy5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RydWN0b3IuY2FsbCh0aGlzLFNWRy5jcmVhdGUoXCJmZVwiK2kpKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLnJlc3VsdCh0aGlzLmF0dHIoXCJpZFwiKStcIk91dFwiKX0saW5oZXJpdDpTVkcuRWZmZWN0LGV4dGVuZDp7fX0pfSkpLHIoaSwoZnVuY3Rpb24odCxlKXt2YXIgaT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7U1ZHW2krXCJFZmZlY3RcIl09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIraSkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucmVzdWx0KHRoaXMuYXR0cihcImlkXCIpK1wiT3V0XCIpfSxpbmhlcml0OlNWRy5QYXJlbnRFZmZlY3QsZXh0ZW5kOnt9fSl9KSkscihhLChmdW5jdGlvbih0LGUpe3ZhciBpPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtTVkdbaV09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIraSkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpbmhlcml0OlNWRy5DaGlsZEVmZmVjdCxleHRlbmQ6e319KX0pKSxTVkcuZXh0ZW5kKFNWRy5NZXJnZUVmZmVjdCx7aW46ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBTVkcuTWVyZ2VOb2RlP3RoaXMuYWRkKHQsMCk6dGhpcy5hZGQobmV3IFNWRy5NZXJnZU5vZGUodCksMCksdGhpc319KSxTVkcuZXh0ZW5kKFNWRy5Db21wb3NpdGVFZmZlY3QsU1ZHLkJsZW5kRWZmZWN0LFNWRy5EaXNwbGFjZW1lbnRNYXBFZmZlY3Qse2luMjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW4yXCIpKydcIl0nKS5nZXQoMCl8fHRoaXMuYXR0cihcImluMlwiKTp0aGlzLmF0dHIoXCJpbjJcIix0KX19KSxTVkcuZmlsdGVyPXtzZXBpYXRvbmU6Wy4zNDMsLjY2OSwuMTE5LDAsMCwuMjQ5LC42MjYsLjEzLDAsMCwuMTcyLC4zMzQsLjExMSwwLDAsMCwwLDAsMSwwXX19LmNhbGwodm9pZCAwKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxzLHIsbyxuLGwsaCl7Zm9yKHZhciBjPXQuc2xpY2UocyxyfHxoKSxkPW8uc2xpY2UobixsfHxoKSxnPTAsdT17cG9zOlswLDBdLHN0YXJ0OlswLDBdfSxwPXtwb3M6WzAsMF0sc3RhcnQ6WzAsMF19Ozspe2lmKGNbZ109ZS5jYWxsKHUsY1tnXSksZFtnXT1lLmNhbGwocCxkW2ddKSxjW2ddWzBdIT1kW2ddWzBdfHxcIk1cIj09Y1tnXVswXXx8XCJBXCI9PWNbZ11bMF0mJihjW2ddWzRdIT1kW2ddWzRdfHxjW2ddWzVdIT1kW2ddWzVdKT8oQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShjLFtnLDFdLmNvbmNhdChhLmNhbGwodSxjW2ddKSkpLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkoZCxbZywxXS5jb25jYXQoYS5jYWxsKHAsZFtnXSkpKSk6KGNbZ109aS5jYWxsKHUsY1tnXSksZFtnXT1pLmNhbGwocCxkW2ddKSksKytnPT1jLmxlbmd0aCYmZz09ZC5sZW5ndGgpYnJlYWs7Zz09Yy5sZW5ndGgmJmMucHVzaChbXCJDXCIsdS5wb3NbMF0sdS5wb3NbMV0sdS5wb3NbMF0sdS5wb3NbMV0sdS5wb3NbMF0sdS5wb3NbMV1dKSxnPT1kLmxlbmd0aCYmZC5wdXNoKFtcIkNcIixwLnBvc1swXSxwLnBvc1sxXSxwLnBvc1swXSxwLnBvc1sxXSxwLnBvc1swXSxwLnBvc1sxXV0pfXJldHVybntzdGFydDpjLGRlc3Q6ZH19ZnVuY3Rpb24gZSh0KXtzd2l0Y2godFswXSl7Y2FzZVwielwiOmNhc2VcIlpcIjp0WzBdPVwiTFwiLHRbMV09dGhpcy5zdGFydFswXSx0WzJdPXRoaXMuc3RhcnRbMV07YnJlYWs7Y2FzZVwiSFwiOnRbMF09XCJMXCIsdFsyXT10aGlzLnBvc1sxXTticmVhaztjYXNlXCJWXCI6dFswXT1cIkxcIix0WzJdPXRbMV0sdFsxXT10aGlzLnBvc1swXTticmVhaztjYXNlXCJUXCI6dFswXT1cIlFcIix0WzNdPXRbMV0sdFs0XT10WzJdLHRbMV09dGhpcy5yZWZsZWN0aW9uWzFdLHRbMl09dGhpcy5yZWZsZWN0aW9uWzBdO2JyZWFrO2Nhc2VcIlNcIjp0WzBdPVwiQ1wiLHRbNl09dFs0XSx0WzVdPXRbM10sdFs0XT10WzJdLHRbM109dFsxXSx0WzJdPXRoaXMucmVmbGVjdGlvblsxXSx0WzFdPXRoaXMucmVmbGVjdGlvblswXX1yZXR1cm4gdH1mdW5jdGlvbiBpKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiB0aGlzLnBvcz1bdFtlLTJdLHRbZS0xXV0sLTEhPVwiU0NRVFwiLmluZGV4T2YodFswXSkmJih0aGlzLnJlZmxlY3Rpb249WzIqdGhpcy5wb3NbMF0tdFtlLTRdLDIqdGhpcy5wb3NbMV0tdFtlLTNdXSksdH1mdW5jdGlvbiBhKHQpe3ZhciBlPVt0XTtzd2l0Y2godFswXSl7Y2FzZVwiTVwiOnJldHVybiB0aGlzLnBvcz10aGlzLnN0YXJ0PVt0WzFdLHRbMl1dLGU7Y2FzZVwiTFwiOnRbNV09dFszXT10WzFdLHRbNl09dFs0XT10WzJdLHRbMV09dGhpcy5wb3NbMF0sdFsyXT10aGlzLnBvc1sxXTticmVhaztjYXNlXCJRXCI6dFs2XT10WzRdLHRbNV09dFszXSx0WzRdPTEqdFs0XS8zKzIqdFsyXS8zLHRbM109MSp0WzNdLzMrMip0WzFdLzMsdFsyXT0xKnRoaXMucG9zWzFdLzMrMip0WzJdLzMsdFsxXT0xKnRoaXMucG9zWzBdLzMrMip0WzFdLzM7YnJlYWs7Y2FzZVwiQVwiOmU9ZnVuY3Rpb24odCxlKXt2YXIgaSxhLHMscixvLG4sbCxoLGMsZCxnLHUscCxmLHgsYix2LG0seSx3LGssQSxTLEMsTCxQLEk9TWF0aC5hYnMoZVsxXSksTT1NYXRoLmFicyhlWzJdKSxUPWVbM10lMzYwLHo9ZVs0XSxYPWVbNV0sRT1lWzZdLFk9ZVs3XSxGPW5ldyBTVkcuUG9pbnQodCksUj1uZXcgU1ZHLlBvaW50KEUsWSksSD1bXTtpZigwPT09SXx8MD09PU18fEYueD09PVIueCYmRi55PT09Ui55KXJldHVybltbXCJDXCIsRi54LEYueSxSLngsUi55LFIueCxSLnldXTtpPW5ldyBTVkcuUG9pbnQoKEYueC1SLngpLzIsKEYueS1SLnkpLzIpLnRyYW5zZm9ybSgobmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShUKSksKGE9aS54KmkueC8oSSpJKStpLnkqaS55LyhNKk0pKT4xJiYoSSo9YT1NYXRoLnNxcnQoYSksTSo9YSk7cz0obmV3IFNWRy5NYXRyaXgpLnJvdGF0ZShUKS5zY2FsZSgxL0ksMS9NKS5yb3RhdGUoLVQpLEY9Ri50cmFuc2Zvcm0ocyksUj1SLnRyYW5zZm9ybShzKSxyPVtSLngtRi54LFIueS1GLnldLG49clswXSpyWzBdK3JbMV0qclsxXSxvPU1hdGguc3FydChuKSxyWzBdLz1vLHJbMV0vPW8sbD1uPDQ/TWF0aC5zcXJ0KDEtbi80KTowLHo9PT1YJiYobCo9LTEpO2g9bmV3IFNWRy5Qb2ludCgoUi54K0YueCkvMitsKi1yWzFdLChSLnkrRi55KS8yK2wqclswXSksYz1uZXcgU1ZHLlBvaW50KEYueC1oLngsRi55LWgueSksZD1uZXcgU1ZHLlBvaW50KFIueC1oLngsUi55LWgueSksZz1NYXRoLmFjb3MoYy54L01hdGguc3FydChjLngqYy54K2MueSpjLnkpKSxjLnk8MCYmKGcqPS0xKTt1PU1hdGguYWNvcyhkLngvTWF0aC5zcXJ0KGQueCpkLngrZC55KmQueSkpLGQueTwwJiYodSo9LTEpO1gmJmc+dSYmKHUrPTIqTWF0aC5QSSk7IVgmJmc8dSYmKHUtPTIqTWF0aC5QSSk7Zm9yKGY9TWF0aC5jZWlsKDIqTWF0aC5hYnMoZy11KS9NYXRoLlBJKSxiPVtdLHY9ZyxwPSh1LWcpL2YseD00Kk1hdGgudGFuKHAvNCkvMyxrPTA7azw9ZjtrKyspeT1NYXRoLmNvcyh2KSxtPU1hdGguc2luKHYpLHc9bmV3IFNWRy5Qb2ludChoLngreSxoLnkrbSksYltrXT1bbmV3IFNWRy5Qb2ludCh3LngreCptLHcueS14KnkpLHcsbmV3IFNWRy5Qb2ludCh3LngteCptLHcueSt4KnkpXSx2Kz1wO2ZvcihiWzBdWzBdPWJbMF1bMV0uY2xvbmUoKSxiW2IubGVuZ3RoLTFdWzJdPWJbYi5sZW5ndGgtMV1bMV0uY2xvbmUoKSxzPShuZXcgU1ZHLk1hdHJpeCkucm90YXRlKFQpLnNjYWxlKEksTSkucm90YXRlKC1UKSxrPTAsQT1iLmxlbmd0aDtrPEE7aysrKWJba11bMF09YltrXVswXS50cmFuc2Zvcm0ocyksYltrXVsxXT1iW2tdWzFdLnRyYW5zZm9ybShzKSxiW2tdWzJdPWJba11bMl0udHJhbnNmb3JtKHMpO2ZvcihrPTEsQT1iLmxlbmd0aDtrPEE7aysrKVM9KHc9YltrLTFdWzJdKS54LEM9dy55LEw9KHc9YltrXVswXSkueCxQPXcueSxFPSh3PWJba11bMV0pLngsWT13LnksSC5wdXNoKFtcIkNcIixTLEMsTCxQLEUsWV0pO3JldHVybiBIfSh0aGlzLnBvcyx0KSx0PWVbMF19cmV0dXJuIHRbMF09XCJDXCIsdGhpcy5wb3M9W3RbNV0sdFs2XV0sdGhpcy5yZWZsZWN0aW9uPVsyKnRbNV0tdFszXSwyKnRbNl0tdFs0XV0sZX1mdW5jdGlvbiBzKHQsZSl7aWYoITE9PT1lKXJldHVybiExO2Zvcih2YXIgaT1lLGE9dC5sZW5ndGg7aTxhOysraSlpZihcIk1cIj09dFtpXVswXSlyZXR1cm4gaTtyZXR1cm4hMX1TVkcuZXh0ZW5kKFNWRy5QYXRoQXJyYXkse21vcnBoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgaT10aGlzLnZhbHVlLGE9dGhpcy5wYXJzZShlKSxyPTAsbz0wLG49ITEsbD0hMTshMSE9PXJ8fCExIT09bzspe3ZhciBoO249cyhpLCExIT09ciYmcisxKSxsPXMoYSwhMSE9PW8mJm8rMSksITE9PT1yJiYocj0wPT0oaD1uZXcgU1ZHLlBhdGhBcnJheShjLnN0YXJ0KS5iYm94KCkpLmhlaWdodHx8MD09aC53aWR0aD9pLnB1c2goaVswXSktMTppLnB1c2goW1wiTVwiLGgueCtoLndpZHRoLzIsaC55K2guaGVpZ2h0LzJdKS0xKSwhMT09PW8mJihvPTA9PShoPW5ldyBTVkcuUGF0aEFycmF5KGMuZGVzdCkuYmJveCgpKS5oZWlnaHR8fDA9PWgud2lkdGg/YS5wdXNoKGFbMF0pLTE6YS5wdXNoKFtcIk1cIixoLngraC53aWR0aC8yLGgueStoLmhlaWdodC8yXSktMSk7dmFyIGM9dChpLHIsbixhLG8sbCk7aT1pLnNsaWNlKDAscikuY29uY2F0KGMuc3RhcnQsITE9PT1uP1tdOmkuc2xpY2UobikpLGE9YS5zbGljZSgwLG8pLmNvbmNhdChjLmRlc3QsITE9PT1sP1tdOmEuc2xpY2UobCkpLHI9ITEhPT1uJiZyK2Muc3RhcnQubGVuZ3RoLG89ITEhPT1sJiZvK2MuZGVzdC5sZW5ndGh9cmV0dXJuIHRoaXMudmFsdWU9aSx0aGlzLmRlc3RpbmF0aW9uPW5ldyBTVkcuUGF0aEFycmF5LHRoaXMuZGVzdGluYXRpb24udmFsdWU9YSx0aGlzfX0pfSgpLFxuLyohIHN2Zy5kcmFnZ2FibGUuanMgLSB2Mi4yLjIgLSAyMDE5LTAxLTA4XG4qIGh0dHBzOi8vZ2l0aHViLmNvbS9zdmdkb3Rqcy9zdmcuZHJhZ2dhYmxlLmpzXG4qIENvcHlyaWdodCAoYykgMjAxOSBXb3V0IEZpZXJlbnM7IExpY2Vuc2VkIE1JVCAqL1xuZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3QucmVtZW1iZXIoXCJfZHJhZ2dhYmxlXCIsdGhpcyksdGhpcy5lbD10fXQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO3RoaXMuY29uc3RyYWludD10LHRoaXMudmFsdWU9ZSx0aGlzLmVsLm9uKFwibW91c2Vkb3duLmRyYWdcIiwoZnVuY3Rpb24odCl7aS5zdGFydCh0KX0pKSx0aGlzLmVsLm9uKFwidG91Y2hzdGFydC5kcmFnXCIsKGZ1bmN0aW9uKHQpe2kuc3RhcnQodCl9KSl9LHQucHJvdG90eXBlLnRyYW5zZm9ybVBvaW50PWZ1bmN0aW9uKHQsZSl7dmFyIGk9KHQ9dHx8d2luZG93LmV2ZW50KS5jaGFuZ2VkVG91Y2hlcyYmdC5jaGFuZ2VkVG91Y2hlc1swXXx8dDtyZXR1cm4gdGhpcy5wLng9aS5jbGllbnRYLShlfHwwKSx0aGlzLnAueT1pLmNsaWVudFksdGhpcy5wLm1hdHJpeFRyYW5zZm9ybSh0aGlzLm0pfSx0LnByb3RvdHlwZS5nZXRCQm94PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbC5iYm94KCk7cmV0dXJuIHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuTmVzdGVkJiYodD10aGlzLmVsLnJib3goKSksKHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuR3x8dGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5Vc2V8fHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuTmVzdGVkKSYmKHQueD10aGlzLmVsLngoKSx0Lnk9dGhpcy5lbC55KCkpLHR9LHQucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKHQpe2lmKFwiY2xpY2tcIiE9dC50eXBlJiZcIm1vdXNlZG93blwiIT10LnR5cGUmJlwibW91c2Vtb3ZlXCIhPXQudHlwZXx8MT09KHQud2hpY2h8fHQuYnV0dG9ucykpe3ZhciBlPXRoaXM7aWYodGhpcy5lbC5maXJlKFwiYmVmb3JlZHJhZ1wiLHtldmVudDp0LGhhbmRsZXI6dGhpc30pLCF0aGlzLmVsLmV2ZW50KCkuZGVmYXVsdFByZXZlbnRlZCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5wYXJlbnQ9dGhpcy5wYXJlbnR8fHRoaXMuZWwucGFyZW50KFNWRy5OZXN0ZWQpfHx0aGlzLmVsLnBhcmVudChTVkcuRG9jKSx0aGlzLnA9dGhpcy5wYXJlbnQubm9kZS5jcmVhdGVTVkdQb2ludCgpLHRoaXMubT10aGlzLmVsLm5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpO3ZhciBpLGE9dGhpcy5nZXRCQm94KCk7aWYodGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5UZXh0KXN3aXRjaChpPXRoaXMuZWwubm9kZS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSx0aGlzLmVsLmF0dHIoXCJ0ZXh0LWFuY2hvclwiKSl7Y2FzZVwibWlkZGxlXCI6aS89MjticmVhaztjYXNlXCJzdGFydFwiOmk9MH10aGlzLnN0YXJ0UG9pbnRzPXtwb2ludDp0aGlzLnRyYW5zZm9ybVBvaW50KHQsaSksYm94OmEsdHJhbnNmb3JtOnRoaXMuZWwudHJhbnNmb3JtKCl9LFNWRy5vbih3aW5kb3csXCJtb3VzZW1vdmUuZHJhZ1wiLChmdW5jdGlvbih0KXtlLmRyYWcodCl9KSksU1ZHLm9uKHdpbmRvdyxcInRvdWNobW92ZS5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZHJhZyh0KX0pKSxTVkcub24od2luZG93LFwibW91c2V1cC5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZW5kKHQpfSkpLFNWRy5vbih3aW5kb3csXCJ0b3VjaGVuZC5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZW5kKHQpfSkpLHRoaXMuZWwuZmlyZShcImRyYWdzdGFydFwiLHtldmVudDp0LHA6dGhpcy5zdGFydFBvaW50cy5wb2ludCxtOnRoaXMubSxoYW5kbGVyOnRoaXN9KX19fSx0LnByb3RvdHlwZS5kcmFnPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0QkJveCgpLGk9dGhpcy50cmFuc2Zvcm1Qb2ludCh0KSxhPXRoaXMuc3RhcnRQb2ludHMuYm94LngraS54LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueCxzPXRoaXMuc3RhcnRQb2ludHMuYm94LnkraS55LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueSxyPXRoaXMuY29uc3RyYWludCxvPWkueC10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lngsbj1pLnktdGhpcy5zdGFydFBvaW50cy5wb2ludC55O2lmKHRoaXMuZWwuZmlyZShcImRyYWdtb3ZlXCIse2V2ZW50OnQscDppLG06dGhpcy5tLGhhbmRsZXI6dGhpc30pLHRoaXMuZWwuZXZlbnQoKS5kZWZhdWx0UHJldmVudGVkKXJldHVybiBpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpe3ZhciBsPXIuY2FsbCh0aGlzLmVsLGEscyx0aGlzLm0pO1wiYm9vbGVhblwiPT10eXBlb2YgbCYmKGw9e3g6bCx5Omx9KSwhMD09PWwueD90aGlzLmVsLngoYSk6ITEhPT1sLngmJnRoaXMuZWwueChsLngpLCEwPT09bC55P3RoaXMuZWwueShzKTohMSE9PWwueSYmdGhpcy5lbC55KGwueSl9ZWxzZVwib2JqZWN0XCI9PXR5cGVvZiByJiYobnVsbCE9ci5taW5YJiZhPHIubWluWD9vPShhPXIubWluWCktdGhpcy5zdGFydFBvaW50cy5ib3gueDpudWxsIT1yLm1heFgmJmE+ci5tYXhYLWUud2lkdGgmJihvPShhPXIubWF4WC1lLndpZHRoKS10aGlzLnN0YXJ0UG9pbnRzLmJveC54KSxudWxsIT1yLm1pblkmJnM8ci5taW5ZP249KHM9ci5taW5ZKS10aGlzLnN0YXJ0UG9pbnRzLmJveC55Om51bGwhPXIubWF4WSYmcz5yLm1heFktZS5oZWlnaHQmJihuPShzPXIubWF4WS1lLmhlaWdodCktdGhpcy5zdGFydFBvaW50cy5ib3gueSksbnVsbCE9ci5zbmFwVG9HcmlkJiYoYS09YSVyLnNuYXBUb0dyaWQscy09cyVyLnNuYXBUb0dyaWQsby09byVyLnNuYXBUb0dyaWQsbi09biVyLnNuYXBUb0dyaWQpLHRoaXMuZWwgaW5zdGFuY2VvZiBTVkcuRz90aGlzLmVsLm1hdHJpeCh0aGlzLnN0YXJ0UG9pbnRzLnRyYW5zZm9ybSkudHJhbnNmb3JtKHt4Om8seTpufSwhMCk6dGhpcy5lbC5tb3ZlKGEscykpO3JldHVybiBpfSx0LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kcmFnKHQpO3RoaXMuZWwuZmlyZShcImRyYWdlbmRcIix7ZXZlbnQ6dCxwOmUsbTp0aGlzLm0saGFuZGxlcjp0aGlzfSksU1ZHLm9mZih3aW5kb3csXCJtb3VzZW1vdmUuZHJhZ1wiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNobW92ZS5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwibW91c2V1cC5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2hlbmQuZHJhZ1wiKX0sU1ZHLmV4dGVuZChTVkcuRWxlbWVudCx7ZHJhZ2dhYmxlOmZ1bmN0aW9uKGUsaSl7XCJmdW5jdGlvblwiIT10eXBlb2YgZSYmXCJvYmplY3RcIiE9dHlwZW9mIGV8fChpPWUsZT0hMCk7dmFyIGE9dGhpcy5yZW1lbWJlcihcIl9kcmFnZ2FibGVcIil8fG5ldyB0KHRoaXMpO3JldHVybihlPXZvaWQgMD09PWV8fGUpP2EuaW5pdChpfHx7fSxlKToodGhpcy5vZmYoXCJtb3VzZWRvd24uZHJhZ1wiKSx0aGlzLm9mZihcInRvdWNoc3RhcnQuZHJhZ1wiKSksdGhpc319KX0uY2FsbCh2b2lkIDApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmVsPXQsdC5yZW1lbWJlcihcIl9zZWxlY3RIYW5kbGVyXCIsdGhpcyksdGhpcy5wb2ludFNlbGVjdGlvbj17aXNTZWxlY3RlZDohMX0sdGhpcy5yZWN0U2VsZWN0aW9uPXtpc1NlbGVjdGVkOiExfSx0aGlzLnBvaW50c0xpc3Q9e2x0OlswLDBdLHJ0OltcIndpZHRoXCIsMF0scmI6W1wid2lkdGhcIixcImhlaWdodFwiXSxsYjpbMCxcImhlaWdodFwiXSx0OltcIndpZHRoXCIsMF0scjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGI6W1wid2lkdGhcIixcImhlaWdodFwiXSxsOlswLFwiaGVpZ2h0XCJdfSx0aGlzLnBvaW50Q29vcmQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBhPVwic3RyaW5nXCIhPXR5cGVvZiB0P3Q6ZVt0XTtyZXR1cm4gaT9hLzI6YX0sdGhpcy5wb2ludENvb3Jkcz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMucG9pbnRzTGlzdFt0XTtyZXR1cm57eDp0aGlzLnBvaW50Q29vcmQoaVswXSxlLFwidFwiPT09dHx8XCJiXCI9PT10KSx5OnRoaXMucG9pbnRDb29yZChpWzFdLGUsXCJyXCI9PT10fHxcImxcIj09PXQpfX19dC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZWwuYmJveCgpO3RoaXMub3B0aW9ucz17fTt2YXIgYT10aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0cy5wb2ludHM7Zm9yKHZhciBzIGluIHRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzKXRoaXMub3B0aW9uc1tzXT10aGlzLmVsLnNlbGVjdGl6ZS5kZWZhdWx0c1tzXSx2b2lkIDAhPT1lW3NdJiYodGhpcy5vcHRpb25zW3NdPWVbc10pO3ZhciByPVtcInBvaW50c1wiLFwicG9pbnRzRXhjbHVkZVwiXTtmb3IodmFyIHMgaW4gcil7dmFyIG89dGhpcy5vcHRpb25zW3Jbc11dO1wic3RyaW5nXCI9PXR5cGVvZiBvP289by5sZW5ndGg+MD9vLnNwbGl0KC9cXHMqLFxccyovaSk6W106XCJib29sZWFuXCI9PXR5cGVvZiBvJiZcInBvaW50c1wiPT09cltzXSYmKG89bz9hOltdKSx0aGlzLm9wdGlvbnNbcltzXV09b310aGlzLm9wdGlvbnMucG9pbnRzPVthLHRoaXMub3B0aW9ucy5wb2ludHNdLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluZGV4T2YodCk+LTF9KSl9KSksdGhpcy5vcHRpb25zLnBvaW50cz1bdGhpcy5vcHRpb25zLnBvaW50cyx0aGlzLm9wdGlvbnMucG9pbnRzRXhjbHVkZV0ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5kZXhPZih0KTwwfSkpfSkpLHRoaXMucGFyZW50PXRoaXMuZWwucGFyZW50KCksdGhpcy5uZXN0ZWQ9dGhpcy5uZXN0ZWR8fHRoaXMucGFyZW50Lmdyb3VwKCksdGhpcy5uZXN0ZWQubWF0cml4KG5ldyBTVkcuTWF0cml4KHRoaXMuZWwpLnRyYW5zbGF0ZShpLngsaS55KSksdGhpcy5vcHRpb25zLmRlZXBTZWxlY3QmJi0xIT09W1wibGluZVwiLFwicG9seWxpbmVcIixcInBvbHlnb25cIl0uaW5kZXhPZih0aGlzLmVsLnR5cGUpP3RoaXMuc2VsZWN0UG9pbnRzKHQpOnRoaXMuc2VsZWN0UmVjdCh0KSx0aGlzLm9ic2VydmUoKSx0aGlzLmNsZWFudXAoKX0sdC5wcm90b3R5cGUuc2VsZWN0UG9pbnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQ9dCx0aGlzLnBvaW50U2VsZWN0aW9uLnNldHx8KHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0PXRoaXMucGFyZW50LnNldCgpLHRoaXMuZHJhd1BvaW50cygpKSx0aGlzfSx0LnByb3RvdHlwZS5nZXRQb2ludEFycmF5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbC5iYm94KCk7cmV0dXJuIHRoaXMuZWwuYXJyYXkoKS52YWx1ZU9mKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZVswXS10LngsZVsxXS10LnldfSkpfSx0LnByb3RvdHlwZS5kcmF3UG9pbnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLmdldFBvaW50QXJyYXkoKSxpPTAsYT1lLmxlbmd0aDtpPGE7KytpKXt2YXIgcz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oaSl7KGk9aXx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9pLnByZXZlbnREZWZhdWx0KCk6aS5yZXR1cm5WYWx1ZT0hMSxpLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBhPWkucGFnZVh8fGkudG91Y2hlc1swXS5wYWdlWCxzPWkucGFnZVl8fGkudG91Y2hlc1swXS5wYWdlWTt0LmVsLmZpcmUoXCJwb2ludFwiLHt4OmEseTpzLGk6ZSxldmVudDppfSl9fShpKSxyPXRoaXMuZHJhd1BvaW50KGVbaV1bMF0sZVtpXVsxXSkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMrXCJfcG9pbnRcIikub24oXCJ0b3VjaHN0YXJ0XCIscykub24oXCJtb3VzZWRvd25cIixzKTt0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5hZGQocil9fSx0LnByb3RvdHlwZS5kcmF3UG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLm9wdGlvbnMucG9pbnRUeXBlO3N3aXRjaChpKXtjYXNlXCJjaXJjbGVcIjpyZXR1cm4gdGhpcy5kcmF3Q2lyY2xlKHQsZSk7Y2FzZVwicmVjdFwiOnJldHVybiB0aGlzLmRyYXdSZWN0KHQsZSk7ZGVmYXVsdDppZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpKXJldHVybiBpLmNhbGwodGhpcyx0LGUpO3Rocm93IG5ldyBFcnJvcihcIlVua25vd24gXCIraStcIiBwb2ludCB0eXBlIVwiKX19LHQucHJvdG90eXBlLmRyYXdDaXJjbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5uZXN0ZWQuY2lyY2xlKHRoaXMub3B0aW9ucy5wb2ludFNpemUpLmNlbnRlcih0LGUpfSx0LnByb3RvdHlwZS5kcmF3UmVjdD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm5lc3RlZC5yZWN0KHRoaXMub3B0aW9ucy5wb2ludFNpemUsdGhpcy5vcHRpb25zLnBvaW50U2l6ZSkuY2VudGVyKHQsZSl9LHQucHJvdG90eXBlLnVwZGF0ZVBvaW50U2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRQb2ludEFycmF5KCk7dGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oZSl7dGhpcy5jeCgpPT09dFtlXVswXSYmdGhpcy5jeSgpPT09dFtlXVsxXXx8dGhpcy5jZW50ZXIodFtlXVswXSx0W2VdWzFdKX0pKX0sdC5wcm90b3R5cGUudXBkYXRlUmVjdFNlbGVjdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLmVsLmJib3goKTtpZih0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgwKS5hdHRyKHt3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH0pLHRoaXMub3B0aW9ucy5wb2ludHMubGVuZ3RoJiZ0aGlzLm9wdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24oaSxhKXt2YXIgcz10LnBvaW50Q29vcmRzKGksZSk7dC5yZWN0U2VsZWN0aW9uLnNldC5nZXQoYSsxKS5jZW50ZXIocy54LHMueSl9KSksdGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQpe3ZhciBpPXRoaXMucmVjdFNlbGVjdGlvbi5zZXQubGVuZ3RoKCk7dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoaS0xKS5jZW50ZXIoZS53aWR0aC8yLDIwKX19LHQucHJvdG90eXBlLnNlbGVjdFJlY3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMuZWwuYmJveCgpO2Z1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKGkpeyhpPWl8fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/aS5wcmV2ZW50RGVmYXVsdCgpOmkucmV0dXJuVmFsdWU9ITEsaS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgYT1pLnBhZ2VYfHxpLnRvdWNoZXNbMF0ucGFnZVgscz1pLnBhZ2VZfHxpLnRvdWNoZXNbMF0ucGFnZVk7ZS5lbC5maXJlKHQse3g6YSx5OnMsZXZlbnQ6aX0pfX1pZih0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZD10LHRoaXMucmVjdFNlbGVjdGlvbi5zZXQ9dGhpcy5yZWN0U2VsZWN0aW9uLnNldHx8dGhpcy5wYXJlbnQuc2V0KCksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMCl8fHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHRoaXMubmVzdGVkLnJlY3QoaS53aWR0aCxpLmhlaWdodCkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmNsYXNzUmVjdCkpLHRoaXMub3B0aW9ucy5wb2ludHMubGVuZ3RoJiZ0aGlzLnJlY3RTZWxlY3Rpb24uc2V0Lmxlbmd0aCgpPDIpe3RoaXMub3B0aW9ucy5wb2ludHMubWFwKChmdW5jdGlvbih0LHMpe3ZhciByPWUucG9pbnRDb29yZHModCxpKSxvPWUuZHJhd1BvaW50KHIueCxyLnkpLmF0dHIoXCJjbGFzc1wiLGUub3B0aW9ucy5jbGFzc1BvaW50cytcIl9cIit0KS5vbihcIm1vdXNlZG93blwiLGEodCkpLm9uKFwidG91Y2hzdGFydFwiLGEodCkpO2UucmVjdFNlbGVjdGlvbi5zZXQuYWRkKG8pfSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLmFkZENsYXNzKGUub3B0aW9ucy5jbGFzc1BvaW50cyl9KSl9aWYodGhpcy5vcHRpb25zLnJvdGF0aW9uUG9pbnQmJih0aGlzLm9wdGlvbnMucG9pbnRzJiYhdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoOSl8fCF0aGlzLm9wdGlvbnMucG9pbnRzJiYhdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5nZXQoMSkpKXt2YXIgcz1mdW5jdGlvbih0KXsodD10fHx3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0P3QucHJldmVudERlZmF1bHQoKTp0LnJldHVyblZhbHVlPSExLHQuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGk9dC5wYWdlWHx8dC50b3VjaGVzWzBdLnBhZ2VYLGE9dC5wYWdlWXx8dC50b3VjaGVzWzBdLnBhZ2VZO2UuZWwuZmlyZShcInJvdFwiLHt4OmkseTphLGV2ZW50OnR9KX0scj10aGlzLmRyYXdQb2ludChpLndpZHRoLzIsMjApLmF0dHIoXCJjbGFzc1wiLHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cytcIl9yb3RcIikub24oXCJ0b3VjaHN0YXJ0XCIscykub24oXCJtb3VzZWRvd25cIixzKTt0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmFkZChyKX19LHQucHJvdG90eXBlLmhhbmRsZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTt0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKHQueCx0LnkpKSx0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy51cGRhdGVSZWN0U2VsZWN0aW9uKCksdGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnVwZGF0ZVBvaW50U2VsZWN0aW9uKCl9LHQucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKE11dGF0aW9uT2JzZXJ2ZXIpaWYodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCl0aGlzLm9ic2VydmVySW5zdD10aGlzLm9ic2VydmVySW5zdHx8bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKCl7dC5oYW5kbGVyKCl9KSksdGhpcy5vYnNlcnZlckluc3Qub2JzZXJ2ZSh0aGlzLmVsLm5vZGUse2F0dHJpYnV0ZXM6ITB9KTtlbHNlIHRyeXt0aGlzLm9ic2VydmVySW5zdC5kaXNjb25uZWN0KCksZGVsZXRlIHRoaXMub2JzZXJ2ZXJJbnN0fWNhdGNoKHQpe31lbHNlIHRoaXMuZWwub2ZmKFwiRE9NQXR0ck1vZGlmaWVkLnNlbGVjdFwiKSwodGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCkmJnRoaXMuZWwub24oXCJET01BdHRyTW9kaWZpZWQuc2VsZWN0XCIsKGZ1bmN0aW9uKCl7dC5oYW5kbGVyKCl9KSl9LHQucHJvdG90eXBlLmNsZWFudXA9ZnVuY3Rpb24oKXshdGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMucmVjdFNlbGVjdGlvbi5zZXQmJih0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmUoKX0pKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmNsZWFyKCksZGVsZXRlIHRoaXMucmVjdFNlbGVjdGlvbi5zZXQpLCF0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMucG9pbnRTZWxlY3Rpb24uc2V0JiYodGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfSkpLHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmNsZWFyKCksZGVsZXRlIHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0KSx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkfHwodGhpcy5uZXN0ZWQucmVtb3ZlKCksZGVsZXRlIHRoaXMubmVzdGVkKX0sU1ZHLmV4dGVuZChTVkcuRWxlbWVudCx7c2VsZWN0aXplOmZ1bmN0aW9uKGUsaSl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGUmJihpPWUsZT0hMCksKHRoaXMucmVtZW1iZXIoXCJfc2VsZWN0SGFuZGxlclwiKXx8bmV3IHQodGhpcykpLmluaXQodm9pZCAwPT09ZXx8ZSxpfHx7fSksdGhpc319KSxTVkcuRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0aXplLmRlZmF1bHRzPXtwb2ludHM6W1wibHRcIixcInJ0XCIsXCJyYlwiLFwibGJcIixcInRcIixcInJcIixcImJcIixcImxcIl0scG9pbnRzRXhjbHVkZTpbXSxjbGFzc1JlY3Q6XCJzdmdfc2VsZWN0X2JvdW5kaW5nUmVjdFwiLGNsYXNzUG9pbnRzOlwic3ZnX3NlbGVjdF9wb2ludHNcIixwb2ludFNpemU6Nyxyb3RhdGlvblBvaW50OiEwLGRlZXBTZWxlY3Q6ITEscG9pbnRUeXBlOlwiY2lyY2xlXCJ9fSgpLGZ1bmN0aW9uKCl7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0LnJlbWVtYmVyKFwiX3Jlc2l6ZUhhbmRsZXJcIix0aGlzKSx0aGlzLmVsPXQsdGhpcy5wYXJhbWV0ZXJzPXt9LHRoaXMubGFzdFVwZGF0ZUNhbGw9bnVsbCx0aGlzLnA9dC5kb2MoKS5ub2RlLmNyZWF0ZVNWR1BvaW50KCl9dC5wcm90b3R5cGUudHJhbnNmb3JtUG9pbnQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnAueD10LSh0aGlzLm9mZnNldC54LXdpbmRvdy5wYWdlWE9mZnNldCksdGhpcy5wLnk9ZS0odGhpcy5vZmZzZXQueS13aW5kb3cucGFnZVlPZmZzZXQpLHRoaXMucC5tYXRyaXhUcmFuc2Zvcm0oaXx8dGhpcy5tKX0sdC5wcm90b3R5cGUuX2V4dHJhY3RQb3NpdGlvbj1mdW5jdGlvbih0KXtyZXR1cm57eDpudWxsIT10LmNsaWVudFg/dC5jbGllbnRYOnQudG91Y2hlc1swXS5jbGllbnRYLHk6bnVsbCE9dC5jbGllbnRZP3QuY2xpZW50WTp0LnRvdWNoZXNbMF0uY2xpZW50WX19LHQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0aGlzLnN0b3AoKSxcInN0b3BcIiE9PXQpe2Zvcih2YXIgaSBpbiB0aGlzLm9wdGlvbnM9e30sdGhpcy5lbC5yZXNpemUuZGVmYXVsdHMpdGhpcy5vcHRpb25zW2ldPXRoaXMuZWwucmVzaXplLmRlZmF1bHRzW2ldLHZvaWQgMCE9PXRbaV0mJih0aGlzLm9wdGlvbnNbaV09dFtpXSk7dGhpcy5lbC5vbihcImx0LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJydC5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwicmIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcImxiLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJ0LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJyLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJiLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJsLnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJyb3QucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInBvaW50LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMudXBkYXRlKCl9fSx0LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWwub2ZmKFwibHQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicnQucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicmIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwibGIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwidC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcImIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwibC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyb3QucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwicG9pbnQucmVzaXplXCIpLHRoaXN9LHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMubT10aGlzLmVsLm5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpLHRoaXMub2Zmc2V0PXt4OndpbmRvdy5wYWdlWE9mZnNldCx5OndpbmRvdy5wYWdlWU9mZnNldH07dmFyIGk9dGhpcy5fZXh0cmFjdFBvc2l0aW9uKHQuZGV0YWlsLmV2ZW50KTtpZih0aGlzLnBhcmFtZXRlcnM9e3R5cGU6dGhpcy5lbC50eXBlLHA6dGhpcy50cmFuc2Zvcm1Qb2ludChpLngsaS55KSx4OnQuZGV0YWlsLngseTp0LmRldGFpbC55LGJveDp0aGlzLmVsLmJib3goKSxyb3RhdGlvbjp0aGlzLmVsLnRyYW5zZm9ybSgpLnJvdGF0aW9ufSxcInRleHRcIj09PXRoaXMuZWwudHlwZSYmKHRoaXMucGFyYW1ldGVycy5mb250U2l6ZT10aGlzLmVsLmF0dHIoKVtcImZvbnQtc2l6ZVwiXSksdm9pZCAwIT09dC5kZXRhaWwuaSl7dmFyIGE9dGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKTt0aGlzLnBhcmFtZXRlcnMuaT10LmRldGFpbC5pLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkcz1bYVt0LmRldGFpbC5pXVswXSxhW3QuZGV0YWlsLmldWzFdXX1zd2l0Y2godC50eXBlKXtjYXNlXCJsdFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLWlbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGkpLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJydFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMik7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUraVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSwhMCksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkraVsxXSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJyYlwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMCk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUraVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZVwibGJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDEpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wJiZ0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuIHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLHZvaWQgdGhpcy5lbC5hdHRyKFwiZm9udC1zaXplXCIsdGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplLWlbMF0pO2k9dGhpcy5jaGVja0FzcGVjdFJhdGlvKGksITApLHRoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLnNpemUodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdLHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0pfX07YnJlYWs7Y2FzZVwidFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMik7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueStpWzFdKS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXSl9fTticmVhaztjYXNlXCJyXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLndpZHRoKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXSl9fTticmVhaztjYXNlXCJiXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55KS5oZWlnaHQodGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlXCJsXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwxKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSkud2lkdGgodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdKX19O2JyZWFrO2Nhc2VcInJvdFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXQrdGhpcy5wYXJhbWV0ZXJzLnAueCxhPWUrdGhpcy5wYXJhbWV0ZXJzLnAueSxzPU1hdGguYXRhbjIodGhpcy5wYXJhbWV0ZXJzLnAueS10aGlzLnBhcmFtZXRlcnMuYm94LnktdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQvMix0aGlzLnBhcmFtZXRlcnMucC54LXRoaXMucGFyYW1ldGVycy5ib3gueC10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLzIpLHI9TWF0aC5hdGFuMihhLXRoaXMucGFyYW1ldGVycy5ib3gueS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC8yLGktdGhpcy5wYXJhbWV0ZXJzLmJveC54LXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvMiksbz10aGlzLnBhcmFtZXRlcnMucm90YXRpb24rMTgwKihyLXMpL01hdGguUEkrdGhpcy5vcHRpb25zLnNuYXBUb0FuZ2xlLzI7dGhpcy5lbC5jZW50ZXIodGhpcy5wYXJhbWV0ZXJzLmJveC5jeCx0aGlzLnBhcmFtZXRlcnMuYm94LmN5KS5yb3RhdGUoby1vJXRoaXMub3B0aW9ucy5zbmFwVG9BbmdsZSx0aGlzLnBhcmFtZXRlcnMuYm94LmN4LHRoaXMucGFyYW1ldGVycy5ib3guY3kpfTticmVhaztjYXNlXCJwb2ludFwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzBdLHRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXSksYT10aGlzLmVsLmFycmF5KCkudmFsdWVPZigpO2FbdGhpcy5wYXJhbWV0ZXJzLmldWzBdPXRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1swXStpWzBdLGFbdGhpcy5wYXJhbWV0ZXJzLmldWzFdPXRoaXMucGFyYW1ldGVycy5wb2ludENvb3Jkc1sxXStpWzFdLHRoaXMuZWwucGxvdChhKX19dGhpcy5lbC5maXJlKFwicmVzaXplc3RhcnRcIix7ZHg6dGhpcy5wYXJhbWV0ZXJzLngsZHk6dGhpcy5wYXJhbWV0ZXJzLnksZXZlbnQ6dH0pLFNWRy5vbih3aW5kb3csXCJ0b3VjaG1vdmUucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UudXBkYXRlKHR8fHdpbmRvdy5ldmVudCl9KSksU1ZHLm9uKHdpbmRvdyxcInRvdWNoZW5kLnJlc2l6ZVwiLChmdW5jdGlvbigpe2UuZG9uZSgpfSkpLFNWRy5vbih3aW5kb3csXCJtb3VzZW1vdmUucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UudXBkYXRlKHR8fHdpbmRvdy5ldmVudCl9KSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNldXAucmVzaXplXCIsKGZ1bmN0aW9uKCl7ZS5kb25lKCl9KSl9LHQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZih0KXt2YXIgZT10aGlzLl9leHRyYWN0UG9zaXRpb24odCksaT10aGlzLnRyYW5zZm9ybVBvaW50KGUueCxlLnkpLGE9aS54LXRoaXMucGFyYW1ldGVycy5wLngscz1pLnktdGhpcy5wYXJhbWV0ZXJzLnAueTt0aGlzLmxhc3RVcGRhdGVDYWxsPVthLHNdLHRoaXMuY2FsYyhhLHMpLHRoaXMuZWwuZmlyZShcInJlc2l6aW5nXCIse2R4OmEsZHk6cyxldmVudDp0fSl9ZWxzZSB0aGlzLmxhc3RVcGRhdGVDYWxsJiZ0aGlzLmNhbGModGhpcy5sYXN0VXBkYXRlQ2FsbFswXSx0aGlzLmxhc3RVcGRhdGVDYWxsWzFdKX0sdC5wcm90b3R5cGUuZG9uZT1mdW5jdGlvbigpe3RoaXMubGFzdFVwZGF0ZUNhbGw9bnVsbCxTVkcub2ZmKHdpbmRvdyxcIm1vdXNlbW92ZS5yZXNpemVcIiksU1ZHLm9mZih3aW5kb3csXCJtb3VzZXVwLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNobW92ZS5yZXNpemVcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaGVuZC5yZXNpemVcIiksdGhpcy5lbC5maXJlKFwicmVzaXplZG9uZVwiKX0sdC5wcm90b3R5cGUuc25hcFRvR3JpZD1mdW5jdGlvbih0LGUsaSxhKXt2YXIgcztyZXR1cm4gdm9pZCAwIT09YT9zPVsoaSt0KSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCwoYStlKSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZF06KGk9bnVsbD09aT8zOmkscz1bKHRoaXMucGFyYW1ldGVycy5ib3gueCt0KygxJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWQsKHRoaXMucGFyYW1ldGVycy5ib3gueStlKygyJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCkpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkXSksdDwwJiYoc1swXS09dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLGU8MCYmKHNbMV0tPXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSx0LT1NYXRoLmFicyhzWzBdKTx0aGlzLm9wdGlvbnMuc25hcFRvR3JpZC8yP3NbMF06c1swXS0odDwwPy10aGlzLm9wdGlvbnMuc25hcFRvR3JpZDp0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksZS09TWF0aC5hYnMoc1sxXSk8dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQvMj9zWzFdOnNbMV0tKGU8MD8tdGhpcy5vcHRpb25zLnNuYXBUb0dyaWQ6dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLHRoaXMuY29uc3RyYWludFRvQm94KHQsZSxpLGEpfSx0LnByb3RvdHlwZS5jb25zdHJhaW50VG9Cb3g9ZnVuY3Rpb24odCxlLGksYSl7dmFyIHMscixvPXRoaXMub3B0aW9ucy5jb25zdHJhaW50fHx7fTtyZXR1cm4gdm9pZCAwIT09YT8ocz1pLHI9YSk6KHM9dGhpcy5wYXJhbWV0ZXJzLmJveC54KygxJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoKSxyPXRoaXMucGFyYW1ldGVycy5ib3gueSsoMiZpPzA6dGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQpKSx2b2lkIDAhPT1vLm1pblgmJnMrdDxvLm1pblgmJih0PW8ubWluWC1zKSx2b2lkIDAhPT1vLm1heFgmJnMrdD5vLm1heFgmJih0PW8ubWF4WC1zKSx2b2lkIDAhPT1vLm1pblkmJnIrZTxvLm1pblkmJihlPW8ubWluWS1yKSx2b2lkIDAhPT1vLm1heFkmJnIrZT5vLm1heFkmJihlPW8ubWF4WS1yKSxbdCxlXX0sdC5wcm90b3R5cGUuY2hlY2tBc3BlY3RSYXRpbz1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLm9wdGlvbnMuc2F2ZUFzcGVjdFJhdGlvKXJldHVybiB0O3ZhciBpPXQuc2xpY2UoKSxhPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQscz10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK3RbMF0scj10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC10WzFdLG89cy9yO3JldHVybiBvPGE/KGlbMV09cy9hLXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LGUmJihpWzFdPS1pWzFdKSk6bz5hJiYoaVswXT10aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLXIqYSxlJiYoaVswXT0taVswXSkpLGl9LFNWRy5leHRlbmQoU1ZHLkVsZW1lbnQse3Jlc2l6ZTpmdW5jdGlvbihlKXtyZXR1cm4odGhpcy5yZW1lbWJlcihcIl9yZXNpemVIYW5kbGVyXCIpfHxuZXcgdCh0aGlzKSkuaW5pdChlfHx7fSksdGhpc319KSxTVkcuRWxlbWVudC5wcm90b3R5cGUucmVzaXplLmRlZmF1bHRzPXtzbmFwVG9BbmdsZTouMSxzbmFwVG9HcmlkOjEsY29uc3RyYWludDp7fSxzYXZlQXNwZWN0UmF0aW86ITF9fSkuY2FsbCh0aGlzKX0oKSx2b2lkIDA9PT13aW5kb3cuQXBleCYmKHdpbmRvdy5BcGV4PXt9KTt2YXIgR3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImluaXRNb2R1bGVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmN0eC5wdWJsaWNNZXRob2RzPVtcInVwZGF0ZU9wdGlvbnNcIixcInVwZGF0ZVNlcmllc1wiLFwiYXBwZW5kRGF0YVwiLFwiYXBwZW5kU2VyaWVzXCIsXCJpc1Nlcmllc0hpZGRlblwiLFwidG9nZ2xlU2VyaWVzXCIsXCJzaG93U2VyaWVzXCIsXCJoaWRlU2VyaWVzXCIsXCJzZXRMb2NhbGVcIixcInJlc2V0U2VyaWVzXCIsXCJ6b29tWFwiLFwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCIsXCJkYXRhVVJJXCIsXCJleHBvcnRUb0NTVlwiLFwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsXCJhZGRZYXhpc0Fubm90YXRpb25cIixcImFkZFBvaW50QW5ub3RhdGlvblwiLFwiY2xlYXJBbm5vdGF0aW9uc1wiLFwicmVtb3ZlQW5ub3RhdGlvblwiLFwicGFwZXJcIixcImRlc3Ryb3lcIl0sdGhpcy5jdHguZXZlbnRMaXN0PVtcImNsaWNrXCIsXCJtb3VzZWRvd25cIixcIm1vdXNlbW92ZVwiLFwibW91c2VsZWF2ZVwiLFwidG91Y2hzdGFydFwiLFwidG91Y2htb3ZlXCIsXCJ0b3VjaGxlYXZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaGVuZFwiXSx0aGlzLmN0eC5hbmltYXRpb25zPW5ldyBiKHRoaXMuY3R4KSx0aGlzLmN0eC5heGVzPW5ldyBKKHRoaXMuY3R4KSx0aGlzLmN0eC5jb3JlPW5ldyBXdCh0aGlzLmN0eC5lbCx0aGlzLmN0eCksdGhpcy5jdHguY29uZmlnPW5ldyBFKHt9KSx0aGlzLmN0eC5kYXRhPW5ldyBXKHRoaXMuY3R4KSx0aGlzLmN0eC5ncmlkPW5ldyBqKHRoaXMuY3R4KSx0aGlzLmN0eC5ncmFwaGljcz1uZXcgbSh0aGlzLmN0eCksdGhpcy5jdHguY29yZVV0aWxzPW5ldyB5KHRoaXMuY3R4KSx0aGlzLmN0eC5jcm9zc2hhaXJzPW5ldyBRKHRoaXMuY3R4KSx0aGlzLmN0eC5ldmVudHM9bmV3IFoodGhpcy5jdHgpLHRoaXMuY3R4LmV4cG9ydHM9bmV3IEcodGhpcy5jdHgpLHRoaXMuY3R4LmxvY2FsaXphdGlvbj1uZXcgJCh0aGlzLmN0eCksdGhpcy5jdHgub3B0aW9ucz1uZXcgTCx0aGlzLmN0eC5yZXNwb25zaXZlPW5ldyBLKHRoaXMuY3R4KSx0aGlzLmN0eC5zZXJpZXM9bmV3IE4odGhpcy5jdHgpLHRoaXMuY3R4LnRoZW1lPW5ldyB0dCh0aGlzLmN0eCksdGhpcy5jdHguZm9ybWF0dGVycz1uZXcgTSh0aGlzLmN0eCksdGhpcy5jdHgudGl0bGVTdWJ0aXRsZT1uZXcgZXQodGhpcy5jdHgpLHRoaXMuY3R4LmxlZ2VuZD1uZXcgbHQodGhpcy5jdHgpLHRoaXMuY3R4LnRvb2xiYXI9bmV3IGh0KHRoaXMuY3R4KSx0aGlzLmN0eC50b29sdGlwPW5ldyBidCh0aGlzLmN0eCksdGhpcy5jdHguZGltZW5zaW9ucz1uZXcgb3QodGhpcy5jdHgpLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnM9bmV3IEJ0KHRoaXMuY3R4KSx0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uPW5ldyBjdCh0aGlzLmN0eCksdGhpcy5jdHgudy5nbG9iYWxzLnRvb2x0aXA9bmV3IGJ0KHRoaXMuY3R4KX19XSksdH0oKSxWdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiY2xlYXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmlzVXBkYXRpbmc7dGhpcy5jdHguem9vbVBhblNlbGVjdGlvbiYmdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbi5kZXN0cm95KCksdGhpcy5jdHgudG9vbGJhciYmdGhpcy5jdHgudG9vbGJhci5kZXN0cm95KCksdGhpcy5jdHguYW5pbWF0aW9ucz1udWxsLHRoaXMuY3R4LmF4ZXM9bnVsbCx0aGlzLmN0eC5hbm5vdGF0aW9ucz1udWxsLHRoaXMuY3R4LmNvcmU9bnVsbCx0aGlzLmN0eC5kYXRhPW51bGwsdGhpcy5jdHguZ3JpZD1udWxsLHRoaXMuY3R4LnNlcmllcz1udWxsLHRoaXMuY3R4LnJlc3BvbnNpdmU9bnVsbCx0aGlzLmN0eC50aGVtZT1udWxsLHRoaXMuY3R4LmZvcm1hdHRlcnM9bnVsbCx0aGlzLmN0eC50aXRsZVN1YnRpdGxlPW51bGwsdGhpcy5jdHgubGVnZW5kPW51bGwsdGhpcy5jdHguZGltZW5zaW9ucz1udWxsLHRoaXMuY3R4Lm9wdGlvbnM9bnVsbCx0aGlzLmN0eC5jcm9zc2hhaXJzPW51bGwsdGhpcy5jdHguem9vbVBhblNlbGVjdGlvbj1udWxsLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnM9bnVsbCx0aGlzLmN0eC50b29sYmFyPW51bGwsdGhpcy5jdHgubG9jYWxpemF0aW9uPW51bGwsdGhpcy5jdHgudy5nbG9iYWxzLnRvb2x0aXA9bnVsbCx0aGlzLmNsZWFyRG9tRWxlbWVudHMoe2lzVXBkYXRpbmc6ZX0pfX0se2tleTpcImtpbGxTVkdcIix2YWx1ZTpmdW5jdGlvbih0KXt0LmVhY2goKGZ1bmN0aW9uKHQsZSl7dGhpcy5yZW1vdmVDbGFzcyhcIipcIiksdGhpcy5vZmYoKSx0aGlzLnN0b3AoKX0pLCEwKSx0LnVuZ3JvdXAoKSx0LmNsZWFyKCl9fSx7a2V5OlwiY2xlYXJEb21FbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10LmlzVXBkYXRpbmcsYT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIubm9kZTthLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5wYXJlbnROb2RlJiYhaSYmKGEucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD1cInVuc2V0XCIpO3ZhciBzPXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWw7cyYmdGhpcy5jdHguZXZlbnRMaXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3MucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUuY3R4LmV2ZW50cy5kb2N1bWVudEV2ZW50KX0pKTt2YXIgcj10aGlzLncuZ2xvYmFscy5kb207aWYobnVsbCE9PXRoaXMuY3R4LmVsKWZvcig7dGhpcy5jdHguZWwuZmlyc3RDaGlsZDspdGhpcy5jdHguZWwucmVtb3ZlQ2hpbGQodGhpcy5jdHguZWwuZmlyc3RDaGlsZCk7dGhpcy5raWxsU1ZHKHIuUGFwZXIpLHIuUGFwZXIucmVtb3ZlKCksci5lbFdyYXA9bnVsbCxyLmVsR3JhcGhpY2FsPW51bGwsci5lbExlZ2VuZFdyYXA9bnVsbCxyLmVsTGVnZW5kRm9yZWlnbj1udWxsLHIuYmFzZUVsPW51bGwsci5lbEdyaWRSZWN0PW51bGwsci5lbEdyaWRSZWN0TWFzaz1udWxsLHIuZWxHcmlkUmVjdE1hcmtlck1hc2s9bnVsbCxyLmVsRm9yZWNhc3RNYXNrPW51bGwsci5lbE5vbkZvcmVjYXN0TWFzaz1udWxsLHIuZWxEZWZzPW51bGx9fV0pLHR9KCksanQ9bmV3IFdlYWtNYXA7dmFyIF90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkpe2EodGhpcyx0KSx0aGlzLm9wdHM9aSx0aGlzLmN0eD10aGlzLHRoaXMudz1uZXcgRihpKS5pbml0KCksdGhpcy5lbD1lLHRoaXMudy5nbG9iYWxzLmN1aWQ9eC5yYW5kb21JZCgpLHRoaXMudy5nbG9iYWxzLmNoYXJ0SUQ9dGhpcy53LmNvbmZpZy5jaGFydC5pZD94LmVzY2FwZVN0cmluZyh0aGlzLncuY29uZmlnLmNoYXJ0LmlkKTp0aGlzLncuZ2xvYmFscy5jdWlkLG5ldyBHdCh0aGlzKS5pbml0TW9kdWxlcygpLHRoaXMuY3JlYXRlPXguYmluZCh0aGlzLmNyZWF0ZSx0aGlzKSx0aGlzLndpbmRvd1Jlc2l6ZUhhbmRsZXI9dGhpcy5fd2luZG93UmVzaXplSGFuZGxlci5iaW5kKHRoaXMpLHRoaXMucGFyZW50UmVzaXplSGFuZGxlcj10aGlzLl9wYXJlbnRSZXNpemVDYWxsYmFjay5iaW5kKHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJyZW5kZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpe2lmKG51bGwhPT10LmVsKXt2b2lkIDA9PT1BcGV4Ll9jaGFydEluc3RhbmNlcyYmKEFwZXguX2NoYXJ0SW5zdGFuY2VzPVtdKSx0LncuY29uZmlnLmNoYXJ0LmlkJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5wdXNoKHtpZDp0LncuZ2xvYmFscy5jaGFydElELGdyb3VwOnQudy5jb25maWcuY2hhcnQuZ3JvdXAsY2hhcnQ6dH0pLHQuc2V0TG9jYWxlKHQudy5jb25maWcuY2hhcnQuZGVmYXVsdExvY2FsZSk7dmFyIGE9dC53LmNvbmZpZy5jaGFydC5ldmVudHMuYmVmb3JlTW91bnQ7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYSYmYSh0LHQudyksdC5ldmVudHMuZmlyZUV2ZW50KFwiYmVmb3JlTW91bnRcIixbdCx0LnddKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHQud2luZG93UmVzaXplSGFuZGxlciksZnVuY3Rpb24odCxlKXt2YXIgaT0hMTtpZih0Lm5vZGVUeXBlIT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXt2YXIgYT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1wibm9uZVwiIT09dC5zdHlsZS5kaXNwbGF5JiYwIT09YS53aWR0aHx8KGk9ITApfXZhciBzPW5ldyBSZXNpemVPYnNlcnZlcigoZnVuY3Rpb24oYSl7aSYmZS5jYWxsKHQsYSksaT0hMH0pKTt0Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFP0FycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHMub2JzZXJ2ZSh0KX0pKTpzLm9ic2VydmUodCksanQuc2V0KGUscyl9KHQuZWwucGFyZW50Tm9kZSx0LnBhcmVudFJlc2l6ZUhhbmRsZXIpLCF0LmNzcyl7dmFyIHM9dC5lbC5nZXRSb290Tm9kZSYmdC5lbC5nZXRSb290Tm9kZSgpLHI9eC5pcyhcIlNoYWRvd1Jvb3RcIixzKSxvPXQuZWwub3duZXJEb2N1bWVudCxuPW8uZ2V0RWxlbWVudEJ5SWQoXCJhcGV4Y2hhcnRzLWNzc1wiKTshciYmbnx8KHQuY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKSx0LmNzcy5pZD1cImFwZXhjaGFydHMtY3NzXCIsdC5jc3MudGV4dENvbnRlbnQ9J0BrZXlmcmFtZXMgb3BhcXVlIHtcXG4gIDAlIHtcXG4gICAgICBvcGFjaXR5OiAwXFxuICB9XFxuXFxuICB0byB7XFxuICAgICAgb3BhY2l0eTogMVxcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHJlc2l6ZWFuaW0ge1xcbiAgMCUsdG8ge1xcbiAgICAgIG9wYWNpdHk6IDBcXG4gIH1cXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHVzZXItc2VsZWN0OiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gIHdpZHRoOiA2cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuNSk7XFxuICBib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpO1xcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLWlubmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10ZXh0IHRzcGFuIHtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0XFxufVxcblxcbi5sZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGw7XFxuICBvcGFjaXR5OiAuMlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1sZWdlbmQtdGV4dCB7XFxuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XFxuICBtYXJnaW4tbGVmdDogLTE1cHg7XFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWQge1xcbiAgb3BhY2l0eTogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwIHtcXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcXG4gIGJveC1zaGFkb3c6IDJweCAycHggNnB4IC00cHggIzk5OTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIGxlZnQ6IDYycHg7XFxuICBvcGFjaXR5OiAwO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDIwcHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgei1pbmRleDogMTI7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xcbiAgb3BhY2l0eTogMTtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlM2UzZTM7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC45NilcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xcbiAgY29sb3I6ICNmZmY7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDMwLDMwLDMwLC44KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwICoge1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXRcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XFxuICBwYWRkaW5nOiA2cHg7XFxuICBmb250LXNpemU6IDE1cHg7XFxuICBtYXJnaW4tYm90dG9tOiA0cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xcbiAgYmFja2dyb3VuZDogI2VjZWZmMTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGUge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzM1xcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktdmFsdWUsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXotdmFsdWUge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgbWFyZ2luLWxlZnQ6IDVweDtcXG4gIGZvbnQtd2VpZ2h0OiA2MDBcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS1sYWJlbDplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZTplbXB0eSwuYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlOmVtcHR5IHtcXG4gIGRpc3BsYXk6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSB7XFxuICBwYWRkaW5nOiA2cHggMCA1cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1nb2Fscy1ncm91cCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIHtcXG4gIGRpc3BsYXk6IGZsZXhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLWxhYmVsOm5vdCg6ZW1wdHkpLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZTpub3QoOmVtcHR5KSB7XFxuICBtYXJnaW4tdG9wOiAtNnB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcXG4gIHdpZHRoOiAxMnB4O1xcbiAgaGVpZ2h0OiAxMnB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdG9wOiAwO1xcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwIHtcXG4gIHBhZGRpbmc6IDAgMTBweDtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC5hcGV4Y2hhcnRzLWFjdGl2ZSAuYXBleGNoYXJ0cy10b29sdGlwLW1hcmtlciB7XFxuICBvcGFjaXR5OiAxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLmFwZXhjaGFydHMtYWN0aXZlLC5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwOmxhc3QtY2hpbGQge1xcbiAgcGFkZGluZy1ib3R0b206IDRweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXNlcmllcy1ncm91cC1oaWRkZW4ge1xcbiAgb3BhY2l0eTogMDtcXG4gIGhlaWdodDogMDtcXG4gIGxpbmUtaGVpZ2h0OiAwO1xcbiAgcGFkZGluZzogMCFpbXBvcnRhbnRcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC15LWdyb3VwIHtcXG4gIHBhZGRpbmc6IDZweCAwIDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jdXN0b20tdG9vbHRpcCwuYXBleGNoYXJ0cy10b29sdGlwLWJveCB7XFxuICBwYWRkaW5nOiA0cHggOHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94UGxvdCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94PmRpdiB7XFxuICBtYXJnaW46IDRweCAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94IHNwYW4udmFsdWUge1xcbiAgZm9udC13ZWlnaHQ6IDcwMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIHtcXG4gIHBhZGRpbmc6IDVweCA4cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuY2F0ZWdvcnkge1xcbiAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gIGNvbG9yOiAjNzc3XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIgLnNlcmllcy1uYW1lIHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG1hcmdpbi1ib3R0b206IDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGNvbG9yOiAjMzczZDNmO1xcbiAgZm9udC1zaXplOiAxM3B4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMTA7XFxuICBiYWNrZ3JvdW5kOiAjZWNlZmYxO1xcbiAgYm9yZGVyOiAxcHggc29saWQgIzkwYTRhZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAge1xcbiAgcGFkZGluZzogOXB4IDEwcHg7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC41KTtcXG4gIGNvbG9yOiAjZmZmXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG4gIGxlZnQ6IDUwJTtcXG4gIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7XFxuICBjb250ZW50OiBcIiBcIjtcXG4gIGhlaWdodDogMDtcXG4gIHdpZHRoOiAwO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItd2lkdGg6IDZweDtcXG4gIG1hcmdpbi1sZWZ0OiAtNnB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogN3B4O1xcbiAgbWFyZ2luLWxlZnQ6IC03cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmJlZm9yZSB7XFxuICBib3R0b206IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmJlZm9yZSB7XFxuICB0b3A6IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTphZnRlciB7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiAjZWNlZmYxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbS5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbS5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YWZ0ZXIge1xcbiAgYm9yZGVyLXRvcC1jb2xvcjogI2VjZWZmMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmJlZm9yZSB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3AuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3AuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XFxuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsMCwwLC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xcbiAgb3BhY2l0eTogMTtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIHtcXG4gIHBhZGRpbmc6IDRweCAxMHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC41KTtcXG4gIGNvbG9yOiAjZmZmXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG4gIHRvcDogNTAlO1xcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGNvbnRlbnQ6IFwiIFwiO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogNnB4O1xcbiAgbWFyZ2luLXRvcDogLTZweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXA6YmVmb3JlIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItd2lkdGg6IDdweDtcXG4gIG1hcmdpbi10b3A6IC03cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YmVmb3JlIHtcXG4gIGxlZnQ6IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDpiZWZvcmUge1xcbiAgcmlnaHQ6IDEwMCVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YWZ0ZXIge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNlY2VmZjFcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQ6YmVmb3JlIHtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0LmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsMCwwLC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YWZ0ZXIge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZWNlZmYxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDpiZWZvcmUge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0LmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLC41KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAuYXBleGNoYXJ0cy1hY3RpdmUge1xcbiAgb3BhY2l0eTogMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtaGlkZGVuIHtcXG4gIGRpc3BsYXk6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMteGNyb3NzaGFpcnMsLmFwZXhjaGFydHMteWNyb3NzaGFpcnMge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycy5hcGV4Y2hhcnRzLWFjdGl2ZSwuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15Y3Jvc3NoYWlycy1oaWRkZW4ge1xcbiAgb3BhY2l0eTogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCB7XFxuICBjdXJzb3I6IG1vdmVcXG59XFxuXFxuLnN2Z19zZWxlY3RfYm91bmRpbmdSZWN0LC5zdmdfc2VsZWN0X3BvaW50c19yb3Qge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBvcGFjaXR5OiAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuXFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfYm91bmRpbmdSZWN0LC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfcG9pbnRzX3JvdCB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuXFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0K2cgLnN2Z19zZWxlY3RfcG9pbnRzX2wsLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfciB7XFxuICBjdXJzb3I6IGV3LXJlc2l6ZTtcXG4gIG9wYWNpdHk6IDE7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlXFxufVxcblxcbi5zdmdfc2VsZWN0X3BvaW50cyB7XFxuICBmaWxsOiAjZWZlZmVmO1xcbiAgc3Ryb2tlOiAjMzMzO1xcbiAgcng6IDJcXG59XFxuXFxuLmFwZXhjaGFydHMtc3ZnLmFwZXhjaGFydHMtem9vbWFibGUuaG92ZXJpbmctem9vbSB7XFxuICBjdXJzb3I6IGNyb3NzaGFpclxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zdmcuYXBleGNoYXJ0cy16b29tYWJsZS5ob3ZlcmluZy1wYW4ge1xcbiAgY3Vyc29yOiBtb3ZlXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUtaWNvbiwuYXBleGNoYXJ0cy1wYW4taWNvbiwuYXBleGNoYXJ0cy1yZXNldC1pY29uLC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uLC5hcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24sLmFwZXhjaGFydHMtem9vbS1pY29uLC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xcbiAgY29sb3I6ICM2ZTgxOTI7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXJcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uIHN2ZywuYXBleGNoYXJ0cy1yZXNldC1pY29uIHN2ZywuYXBleGNoYXJ0cy16b29tLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uIHN2ZywuYXBleGNoYXJ0cy16b29tb3V0LWljb24gc3ZnIHtcXG4gIGZpbGw6ICM2ZTgxOTJcXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24gc3ZnIHtcXG4gIGZpbGw6ICM0NDQ7XFxuICB0cmFuc2Zvcm06IHNjYWxlKC43NilcXG59XFxuXFxuLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtcGFuLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtcmVzZXQtaWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy10b29sYmFyLWN1c3RvbS1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb20taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy16b29taW4taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy16b29tb3V0LWljb24gc3ZnIHtcXG4gIGZpbGw6ICNmM2Y0ZjVcXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXJlc2V0LXpvb20taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZywuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24uYXBleGNoYXJ0cy1zZWxlY3RlZCBzdmcsLmFwZXhjaGFydHMtY2FudmFzIC5hcGV4Y2hhcnRzLXpvb20taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZyB7XFxuICBmaWxsOiAjMDA4ZmZiXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLW1lbnUtaWNvbjpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtcmVzZXQtaWNvbjpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtem9vbS1pY29uOm5vdCguYXBleGNoYXJ0cy1zZWxlY3RlZCk6aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29tb3V0LWljb246aG92ZXIgc3ZnIHtcXG4gIGZpbGw6ICMzMzNcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1yZXNldC1pY29uIHtcXG4gIG1hcmdpbi1sZWZ0OiA1cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24sLmFwZXhjaGFydHMtem9vbS1pY29uIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjg1KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy16b29taW4taWNvbiwuYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSguNylcXG59XFxuXFxuLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcXG4gIG1hcmdpbi1yaWdodDogM3B4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjYyKTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGxlZnQ6IDFweDtcXG4gIHRvcDogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcge1xcbiAgZmlsbDogI2ZmZjtcXG4gIHN0cm9rZTogIzZlODE5MjtcXG4gIHN0cm9rZS13aWR0aDogMlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1wYW4taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZyB7XFxuICBzdHJva2U6ICMwMDhmZmJcXG59XFxuXFxuLmFwZXhjaGFydHMtcGFuLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcge1xcbiAgc3Ryb2tlOiAjMzMzXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2xiYXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMTE7XFxuICBtYXgtd2lkdGg6IDE3NnB4O1xcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICBwYWRkaW5nOiAwIDZweCAycHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51IHtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDEwMCU7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xcbiAgcGFkZGluZzogM3B4O1xcbiAgcmlnaHQ6IDEwcHg7XFxuICBvcGFjaXR5OiAwO1xcbiAgbWluLXdpZHRoOiAxMTBweDtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGw7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LmFwZXhjaGFydHMtbWVudS1vcGVuIHtcXG4gIG9wYWNpdHk6IDE7XFxuICBwb2ludGVyLWV2ZW50czogYWxsO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWl0ZW0ge1xcbiAgcGFkZGluZzogNnB4IDdweDtcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIGN1cnNvcjogcG9pbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1tZW51LWl0ZW06aG92ZXIge1xcbiAgYmFja2dyb3VuZDogI2VlZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLW1lbnUge1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNyk7XFxuICBjb2xvcjogI2ZmZlxcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KSB7XFxuICAuYXBleGNoYXJ0cy1jYW52YXM6aG92ZXIgLmFwZXhjaGFydHMtdG9vbGJhciB7XFxuICAgICAgb3BhY2l0eTogMVxcbiAgfVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4sLmFwZXhjaGFydHMtZGF0YWxhYmVsLmFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW4sLmFwZXhjaGFydHMtaGlkZSAuYXBleGNoYXJ0cy1zZXJpZXMtcG9pbnRzIHtcXG4gIG9wYWNpdHk6IDBcXG59XFxuXFxuLmFwZXhjaGFydHMtaGlkZGVuLWVsZW1lbnQtc2hvd24ge1xcbiAgb3BhY2l0eTogMTtcXG4gIHRyYW5zaXRpb246IDAuMjVzIGVhc2UgYWxsO1xcbn1cXG4uYXBleGNoYXJ0cy1kYXRhbGFiZWwsLmFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZSwuYXBleGNoYXJ0cy1kYXRhbGFiZWxzLC5hcGV4Y2hhcnRzLXBpZS1sYWJlbCB7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1waWUtbGFiZWwtZGVsYXkge1xcbiAgb3BhY2l0eTogMDtcXG4gIGFuaW1hdGlvbi1uYW1lOiBvcGFxdWU7XFxuICBhbmltYXRpb24tZHVyYXRpb246IC4zcztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3QsLmFwZXhjaGFydHMtYXJlYS1zZXJpZXMgLmFwZXhjaGFydHMtYXJlYSwuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIubm8tcG9pbnRlci1ldmVudHMsLmFwZXhjaGFydHMtZ3JpZGxpbmUsLmFwZXhjaGFydHMtbGluZSwuYXBleGNoYXJ0cy1saW5lLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyAuYXBleGNoYXJ0cy1tYXJrZXIubm8tcG9pbnRlci1ldmVudHMsLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1sYWJlbCwuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcGF0aCwuYXBleGNoYXJ0cy1yYWRhci1zZXJpZXMgcG9seWdvbiwuYXBleGNoYXJ0cy10b29sYmFyIHN2ZywuYXBleGNoYXJ0cy10b29sdGlwIC5hcGV4Y2hhcnRzLW1hcmtlciwuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsLC5hcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb24tbGFiZWwsLmFwZXhjaGFydHMtem9vbS1yZWN0IHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1hcmtlciB7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5yZXNpemUtdHJpZ2dlcnMge1xcbiAgYW5pbWF0aW9uOiAxbXMgcmVzaXplYW5pbTtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIG9wYWNpdHk6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW5cXG59XFxuXFxuLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlLC5yZXNpemUtdHJpZ2dlcnMsLnJlc2l6ZS10cmlnZ2Vycz5kaXYge1xcbiAgY29udGVudDogXCIgXCI7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDBcXG59XFxuXFxuLnJlc2l6ZS10cmlnZ2Vycz5kaXYge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBiYWNrZ3JvdW5kOiAjZWVlO1xcbiAgb3ZlcmZsb3c6IGF1dG9cXG59XFxuXFxuLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aWR0aDogMjAwJTtcXG4gIGhlaWdodDogMjAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc3tcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLWJhci1zaGFkb3dze1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtcmFuZ2ViYXItZ29hbHMtbWFya2Vyc3tcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufScscj9zLnByZXBlbmQodC5jc3MpOm8uaGVhZC5hcHBlbmRDaGlsZCh0LmNzcykpfXZhciBsPXQuY3JlYXRlKHQudy5jb25maWcuc2VyaWVzLHt9KTtpZighbClyZXR1cm4gZSh0KTt0Lm1vdW50KGwpLnRoZW4oKGZ1bmN0aW9uKCl7XCJmdW5jdGlvblwiPT10eXBlb2YgdC53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZCYmdC53LmNvbmZpZy5jaGFydC5ldmVudHMubW91bnRlZCh0LHQudyksdC5ldmVudHMuZmlyZUV2ZW50KFwibW91bnRlZFwiLFt0LHQud10pLGUobCl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe2kodCl9KSl9ZWxzZSBpKG5ldyBFcnJvcihcIkVsZW1lbnQgbm90IGZvdW5kXCIpKX0pKX19LHtrZXk6XCJjcmVhdGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztuZXcgR3QodGhpcykuaW5pdE1vZHVsZXMoKTt2YXIgYT10aGlzLncuZ2xvYmFsczsoYS5ub0RhdGE9ITEsYS5hbmltYXRpb25FbmRlZD0hMSx0aGlzLnJlc3BvbnNpdmUuY2hlY2tSZXNwb25zaXZlQ29uZmlnKGUpLGkuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYykmJm5ldyBYKGkuY29uZmlnKS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXMoaS5jb25maWcsdGhpcy5jdHgpO2lmKG51bGw9PT10aGlzLmVsKXJldHVybiBhLmFuaW1hdGlvbkVuZGVkPSEwLG51bGw7aWYodGhpcy5jb3JlLnNldHVwRWxlbWVudHMoKSxcInRyZWVtYXBcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUmJihpLmNvbmZpZy5ncmlkLnNob3c9ITEsaS5jb25maWcueWF4aXNbMF0uc2hvdz0hMSksMD09PWEuc3ZnV2lkdGgpcmV0dXJuIGEuYW5pbWF0aW9uRW5kZWQ9ITAsbnVsbDt2YXIgcz15LmNoZWNrQ29tYm9TZXJpZXModCk7YS5jb21ib0NoYXJ0cz1zLmNvbWJvQ2hhcnRzLGEuY29tYm9CYXJDb3VudD1zLmNvbWJvQmFyQ291bnQ7dmFyIHI9dC5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YSYmMD09PXQuZGF0YS5sZW5ndGh9KSk7KDA9PT10Lmxlbmd0aHx8cikmJnRoaXMuc2VyaWVzLmhhbmRsZU5vRGF0YSgpLHRoaXMuZXZlbnRzLnNldHVwRXZlbnRIYW5kbGVycygpLHRoaXMuZGF0YS5wYXJzZURhdGEodCksdGhpcy50aGVtZS5pbml0KCksbmV3IEgodGhpcykuc2V0R2xvYmFsTWFya2VyU2l6ZSgpLHRoaXMuZm9ybWF0dGVycy5zZXRMYWJlbEZvcm1hdHRlcnMoKSx0aGlzLnRpdGxlU3VidGl0bGUuZHJhdygpLGEubm9EYXRhJiZhLmNvbGxhcHNlZFNlcmllcy5sZW5ndGghPT1hLnNlcmllcy5sZW5ndGgmJiFpLmNvbmZpZy5sZWdlbmQuc2hvd0ZvclNpbmdsZVNlcmllc3x8dGhpcy5sZWdlbmQuaW5pdCgpLHRoaXMuc2VyaWVzLmhhc0FsbFNlcmllc0VxdWFsWCgpLGEuYXhpc0NoYXJ0cyYmKHRoaXMuY29yZS5jb3JlQ2FsY3VsYXRpb25zKCksXCJjYXRlZ29yeVwiIT09aS5jb25maWcueGF4aXMudHlwZSYmdGhpcy5mb3JtYXR0ZXJzLnNldExhYmVsRm9ybWF0dGVycygpLHRoaXMuY3R4LnRvb2xiYXIubWluWD1pLmdsb2JhbHMubWluWCx0aGlzLmN0eC50b29sYmFyLm1heFg9aS5nbG9iYWxzLm1heFgpLHRoaXMuZm9ybWF0dGVycy5oZWF0bWFwTGFiZWxGb3JtYXR0ZXJzKCksbmV3IHkodGhpcykuZ2V0TGFyZ2VzdE1hcmtlclNpemUoKSx0aGlzLmRpbWVuc2lvbnMucGxvdENvb3JkcygpO3ZhciBvPXRoaXMuY29yZS54eVNldHRpbmdzKCk7dGhpcy5ncmlkLmNyZWF0ZUdyaWRNYXNrKCk7dmFyIG49dGhpcy5jb3JlLnBsb3RDaGFydFR5cGUodCxvKSxsPW5ldyBPKHRoaXMpO3JldHVybiBsLmJyaW5nRm9yd2FyZCgpLGkuY29uZmlnLmRhdGFMYWJlbHMuYmFja2dyb3VuZC5lbmFibGVkJiZsLmRhdGFMYWJlbHNCYWNrZ3JvdW5kKCksdGhpcy5jb3JlLnNoaWZ0R3JhcGhQb3NpdGlvbigpLHtlbEdyYXBoOm4seHlSYXRpb3M6byxkaW1lbnNpb25zOntwbG90OntsZWZ0OmkuZ2xvYmFscy50cmFuc2xhdGVYLHRvcDppLmdsb2JhbHMudHJhbnNsYXRlWSx3aWR0aDppLmdsb2JhbHMuZ3JpZFdpZHRoLGhlaWdodDppLmdsb2JhbHMuZ3JpZEhlaWdodH19fX19LHtrZXk6XCJtb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLGk9dGhpcyxhPWkudztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHMscil7aWYobnVsbD09PWkuZWwpcmV0dXJuIHIobmV3IEVycm9yKFwiTm90IGVub3VnaCBkYXRhIHRvIGRpc3BsYXkgb3IgdGFyZ2V0IGVsZW1lbnQgbm90IGZvdW5kXCIpKTsobnVsbD09PWV8fGEuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpJiZpLnNlcmllcy5oYW5kbGVOb0RhdGEoKSxpLmdyaWQ9bmV3IGooaSk7dmFyIG8sbixsPWkuZ3JpZC5kcmF3R3JpZCgpOyhpLmFubm90YXRpb25zPW5ldyBQKGkpLGkuYW5ub3RhdGlvbnMuZHJhd0ltYWdlQW5ub3MoKSxpLmFubm90YXRpb25zLmRyYXdUZXh0QW5ub3MoKSxcImJhY2tcIj09PWEuY29uZmlnLmdyaWQucG9zaXRpb24pJiYobCYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQobC5lbCksbnVsbCE9bCYmbnVsbCE9PShvPWwuZWxHcmlkQm9yZGVycykmJnZvaWQgMCE9PW8mJm8ubm9kZSYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQobC5lbEdyaWRCb3JkZXJzKSk7aWYoQXJyYXkuaXNBcnJheShlLmVsR3JhcGgpKWZvcih2YXIgaD0wO2g8ZS5lbEdyYXBoLmxlbmd0aDtoKyspYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoZS5lbEdyYXBoW2hdKTtlbHNlIGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGUuZWxHcmFwaCk7XCJmcm9udFwiPT09YS5jb25maWcuZ3JpZC5wb3NpdGlvbiYmKGwmJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGwuZWwpLG51bGwhPWwmJm51bGwhPT0obj1sLmVsR3JpZEJvcmRlcnMpJiZ2b2lkIDAhPT1uJiZuLm5vZGUmJmEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKGwuZWxHcmlkQm9yZGVycykpO1wiZnJvbnRcIj09PWEuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMucG9zaXRpb24mJmkuY3Jvc3NoYWlycy5kcmF3WENyb3NzaGFpcnMoKSxcImZyb250XCI9PT1hLmNvbmZpZy55YXhpc1swXS5jcm9zc2hhaXJzLnBvc2l0aW9uJiZpLmNyb3NzaGFpcnMuZHJhd1lDcm9zc2hhaXJzKCksXCJ0cmVlbWFwXCIhPT1hLmNvbmZpZy5jaGFydC50eXBlJiZpLmF4ZXMuZHJhd0F4aXMoYS5jb25maWcuY2hhcnQudHlwZSxsKTt2YXIgYz1uZXcgVih0LmN0eCxsKSxkPW5ldyBxKHQuY3R4LGwpO2lmKG51bGwhPT1sJiYoYy54QXhpc0xhYmVsQ29ycmVjdGlvbnMobC54QXhpc1RpY2tXaWR0aCksZC5zZXRZQXhpc1RleHRBbGlnbm1lbnRzKCksYS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbih0LGUpey0xPT09YS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGUpJiZkLnlBeGlzVGl0bGVSb3RhdGUoZSx0Lm9wcG9zaXRlKX0pKSksaS5hbm5vdGF0aW9ucy5kcmF3QXhlc0Fubm90YXRpb25zKCksIWEuZ2xvYmFscy5ub0RhdGEpe2lmKGEuY29uZmlnLnRvb2x0aXAuZW5hYmxlZCYmIWEuZ2xvYmFscy5ub0RhdGEmJmkudy5nbG9iYWxzLnRvb2x0aXAuZHJhd1Rvb2x0aXAoZS54eVJhdGlvcyksYS5nbG9iYWxzLmF4aXNDaGFydHMmJihhLmdsb2JhbHMuaXNYTnVtZXJpY3x8YS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHxhLmdsb2JhbHMuaXNSYW5nZUJhcikpKGEuY29uZmlnLmNoYXJ0Lnpvb20uZW5hYmxlZHx8YS5jb25maWcuY2hhcnQuc2VsZWN0aW9uJiZhLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZW5hYmxlZHx8YS5jb25maWcuY2hhcnQucGFuJiZhLmNvbmZpZy5jaGFydC5wYW4uZW5hYmxlZCkmJmkuem9vbVBhblNlbGVjdGlvbi5pbml0KHt4eVJhdGlvczplLnh5UmF0aW9zfSk7ZWxzZXt2YXIgZz1hLmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzO1tcInpvb21cIixcInpvb21pblwiLFwiem9vbW91dFwiLFwic2VsZWN0aW9uXCIsXCJwYW5cIixcInJlc2V0XCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2dbdF09ITF9KSl9YS5jb25maWcuY2hhcnQudG9vbGJhci5zaG93JiYhYS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZCYmaS50b29sYmFyLmNyZWF0ZVRvb2xiYXIoKX1hLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMubGVuZ3RoPjAmJmEuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5mb3JFYWNoKChmdW5jdGlvbih0KXt0Lm1ldGhvZCh0LnBhcmFtcywhMSx0LmNvbnRleHQpfSkpLGEuZ2xvYmFscy5heGlzQ2hhcnRzfHxhLmdsb2JhbHMubm9EYXRhfHxpLmNvcmUucmVzaXplTm9uQXhpc0NoYXJ0cygpLHMoaSl9KSl9fSx7a2V5OlwiZGVzdHJveVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHRoaXMud2luZG93UmVzaXplSGFuZGxlciksdGhpcy5lbC5wYXJlbnROb2RlLHQ9dGhpcy5wYXJlbnRSZXNpemVIYW5kbGVyLChlPWp0LmdldCh0KSkmJihlLmRpc2Nvbm5lY3QoKSxqdC5kZWxldGUodCkpO3ZhciBpPXRoaXMudy5jb25maWcuY2hhcnQuaWQ7aSYmQXBleC5fY2hhcnRJbnN0YW5jZXMuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmlkPT09eC5lc2NhcGVTdHJpbmcoaSkmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLnNwbGljZShlLDEpfSkpLG5ldyBWdCh0aGlzLmN0eCkuY2xlYXIoe2lzVXBkYXRpbmc6ITF9KX19LHtrZXk6XCJ1cGRhdGVPcHRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sYT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLHM9IShhcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXSxyPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0sbz10aGlzLnc7cmV0dXJuIG8uZ2xvYmFscy5zZWxlY3Rpb249dm9pZCAwLHQuc2VyaWVzJiYodGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoITEsITAsITEpLHQuc2VyaWVzLmxlbmd0aCYmdC5zZXJpZXNbMF0uZGF0YSYmKHQuc2VyaWVzPXQuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gZS51cGRhdGVIZWxwZXJzLl9leHRlbmRTZXJpZXModCxpKX0pKSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCkpLHQueGF4aXMmJih0PXRoaXMudXBkYXRlSGVscGVycy5mb3JjZVhBeGlzVXBkYXRlKHQpKSx0LnlheGlzJiYodD10aGlzLnVwZGF0ZUhlbHBlcnMuZm9yY2VZQXhpc1VwZGF0ZSh0KSksby5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoPjAmJnRoaXMuc2VyaWVzLmNsZWFyUHJldmlvdXNQYXRocygpLHQudGhlbWUmJih0PXRoaXMudGhlbWUudXBkYXRlVGhlbWVPcHRpb25zKHQpKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnModCxpLGEscyxyKX19LHtrZXk6XCJ1cGRhdGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3JldHVybiB0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSksdGhpcy51cGRhdGVIZWxwZXJzLnJldmVydERlZmF1bHRBeGlzTWluTWF4KCksdGhpcy51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXModCxlLGkpfX0se2tleTpcImFwcGVuZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGE9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKTtyZXR1cm4gYS5wdXNoKHQpLHRoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKCExKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhhLGUsaSl9fSx7a2V5OlwiYXBwZW5kRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT10aGlzO2kudy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLGkuc2VyaWVzLmdldFByZXZpb3VzUGF0aHMoKTtmb3IodmFyIGE9aS53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxzPTA7czxhLmxlbmd0aDtzKyspaWYobnVsbCE9PXRbc10mJnZvaWQgMCE9PXRbc10pZm9yKHZhciByPTA7cjx0W3NdLmRhdGEubGVuZ3RoO3IrKylhW3NdLmRhdGEucHVzaCh0W3NdLmRhdGFbcl0pO3JldHVybiBpLncuY29uZmlnLnNlcmllcz1hLGUmJihpLncuZ2xvYmFscy5pbml0aWFsU2VyaWVzPXguY2xvbmUoaS53LmNvbmZpZy5zZXJpZXMpKSx0aGlzLnVwZGF0ZSgpfX0se2tleTpcInVwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihpLGEpe25ldyBWdChlLmN0eCkuY2xlYXIoe2lzVXBkYXRpbmc6ITB9KTt2YXIgcz1lLmNyZWF0ZShlLncuY29uZmlnLnNlcmllcyx0KTtpZighcylyZXR1cm4gaShlKTtlLm1vdW50KHMpLnRoZW4oKGZ1bmN0aW9uKCl7XCJmdW5jdGlvblwiPT10eXBlb2YgZS53LmNvbmZpZy5jaGFydC5ldmVudHMudXBkYXRlZCYmZS53LmNvbmZpZy5jaGFydC5ldmVudHMudXBkYXRlZChlLGUudyksZS5ldmVudHMuZmlyZUV2ZW50KFwidXBkYXRlZFwiLFtlLGUud10pLGUudy5nbG9iYWxzLmlzRGlydHk9ITAsaShlKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7YSh0KX0pKX0pKX19LHtrZXk6XCJnZXRTeW5jZWRDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0R3JvdXBlZENoYXJ0cygpLGU9W3RoaXNdO3JldHVybiB0Lmxlbmd0aCYmKGU9W10sdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLnB1c2godCl9KSkpLGV9fSx7a2V5OlwiZ2V0R3JvdXBlZENoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gQXBleC5fY2hhcnRJbnN0YW5jZXMuZmlsdGVyKChmdW5jdGlvbih0KXtpZih0Lmdyb3VwKXJldHVybiEwfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQudy5jb25maWcuY2hhcnQuZ3JvdXA9PT1lLmdyb3VwP2UuY2hhcnQ6dH0pKX19LHtrZXk6XCJ0b2dnbGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZXJpZXMudG9nZ2xlU2VyaWVzKHQpfX0se2tleTpcImhpZ2hsaWdodFNlcmllc09uTGVnZW5kSG92ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNlcmllcy50b2dnbGVTZXJpZXNPbkhvdmVyKHQsZSl9fSx7a2V5Olwic2hvd1Nlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2VyaWVzLnNob3dTZXJpZXModCl9fSx7a2V5OlwiaGlkZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2VyaWVzLmhpZGVTZXJpZXModCl9fSx7a2V5OlwiaXNTZXJpZXNIaWRkZW5cIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnNlcmllcy5pc1Nlcmllc0hpZGRlbih0KX19LHtrZXk6XCJyZXNldFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSxlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07dGhpcy5zZXJpZXMucmVzZXRTZXJpZXModCxlKX19LHtrZXk6XCJhZGRFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmV2ZW50cy5hZGRFdmVudExpc3RlbmVyKHQsZSl9fSx7a2V5OlwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5ldmVudHMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUpfX0se2tleTpcImFkZFhheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcztpJiYoYT1pKSxhLmFubm90YXRpb25zLmFkZFhheGlzQW5ub3RhdGlvbkV4dGVybmFsKHQsZSxhKX19LHtrZXk6XCJhZGRZYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnZvaWQgMCxhPXRoaXM7aSYmKGE9aSksYS5hbm5vdGF0aW9ucy5hZGRZYXhpc0Fubm90YXRpb25FeHRlcm5hbCh0LGUsYSl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp2b2lkIDAsYT10aGlzO2kmJihhPWkpLGEuYW5ub3RhdGlvbnMuYWRkUG9pbnRBbm5vdGF0aW9uRXh0ZXJuYWwodCxlLGEpfX0se2tleTpcImNsZWFyQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp2b2lkIDAsZT10aGlzO3QmJihlPXQpLGUuYW5ub3RhdGlvbnMuY2xlYXJBbm5vdGF0aW9ucyhlKX19LHtrZXk6XCJyZW1vdmVBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnZvaWQgMCxpPXRoaXM7ZSYmKGk9ZSksaS5hbm5vdGF0aW9ucy5yZW1vdmVBbm5vdGF0aW9uKGksdCl9fSx7a2V5OlwiZ2V0Q2hhcnRBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtaW5uZXJcIil9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxYUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNvcmVVdGlscy5nZXRTZXJpZXNUb3RhbHNYUmFuZ2UodCxlKX19LHtrZXk6XCJnZXRIaWdoZXN0VmFsdWVJblNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjA7cmV0dXJuIG5ldyBVKHRoaXMuY3R4KS5nZXRNaW5ZTWF4WSh0KS5oaWdoZXN0WX19LHtrZXk6XCJnZXRMb3dlc3RWYWx1ZUluU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MDtyZXR1cm4gbmV3IFUodGhpcy5jdHgpLmdldE1pbllNYXhZKHQpLmxvd2VzdFl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5zZXJpZXNUb3RhbHN9fSx7a2V5OlwidG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy51cGRhdGVIZWxwZXJzLnRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbih0LGUpfX0se2tleTpcInpvb21YXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmN0eC50b29sYmFyLnpvb21VcGRhdGVPcHRpb25zKHQsZSl9fSx7a2V5Olwic2V0TG9jYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5sb2NhbGl6YXRpb24uc2V0Q3VycmVudExvY2FsZVZhbHVlcyh0KX19LHtrZXk6XCJkYXRhVVJJXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBHKHRoaXMuY3R4KS5kYXRhVVJJKHQpfX0se2tleTpcImV4cG9ydFRvQ1NWXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307cmV0dXJuIG5ldyBHKHRoaXMuY3R4KS5leHBvcnRUb0NTVih0KX19LHtrZXk6XCJwYXBlclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5QYXBlcn19LHtrZXk6XCJfcGFyZW50UmVzaXplQ2FsbGJhY2tcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkJiZ0aGlzLncuY29uZmlnLmNoYXJ0LnJlZHJhd09uUGFyZW50UmVzaXplJiZ0aGlzLl93aW5kb3dSZXNpemUoKX19LHtrZXk6XCJfd2luZG93UmVzaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2NsZWFyVGltZW91dCh0aGlzLncuZ2xvYmFscy5yZXNpemVUaW1lciksdGhpcy53Lmdsb2JhbHMucmVzaXplVGltZXI9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC53Lmdsb2JhbHMucmVzaXplZD0hMCx0LncuZ2xvYmFscy5kYXRhQ2hhbmdlZD0hMSx0LmN0eC51cGRhdGUoKX0pLDE1MCl9fSx7a2V5OlwiX3dpbmRvd1Jlc2l6ZUhhbmRsZXJcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5jb25maWcuY2hhcnQucmVkcmF3T25XaW5kb3dSZXNpemU7XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHQ9dCgpKSx0JiZ0aGlzLl93aW5kb3dSZXNpemUoKX19XSxbe2tleTpcImdldENoYXJ0QnlJRFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXguZXNjYXBlU3RyaW5nKHQpO2lmKEFwZXguX2NoYXJ0SW5zdGFuY2VzKXt2YXIgaT1BcGV4Ll9jaGFydEluc3RhbmNlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09ZX0pKVswXTtyZXR1cm4gaSYmaS5jaGFydH19fSx7a2V5OlwiaW5pdE9uTG9hZFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1hcGV4Y2hhcnRzXVwiKSxpPTA7aTxlLmxlbmd0aDtpKyspe25ldyB0KGVbaV0sSlNPTi5wYXJzZShlW2ldLmdldEF0dHJpYnV0ZShcImRhdGEtb3B0aW9uc1wiKSkpLnJlbmRlcigpfX19LHtrZXk6XCJleGVjXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmdldENoYXJ0QnlJRCh0KTtpZihpKXtpLncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQ9ITA7dmFyIGE9bnVsbDtpZigtMSE9PWkucHVibGljTWV0aG9kcy5pbmRleE9mKGUpKXtmb3IodmFyIHM9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShzPjI/cy0yOjApLG89MjtvPHM7bysrKXJbby0yXT1hcmd1bWVudHNbb107YT1pW2VdLmFwcGx5KGkscil9cmV0dXJuIGF9fX0se2tleTpcIm1lcmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4geC5leHRlbmQodCxlKX19XSksdH0oKTttb2R1bGUuZXhwb3J0cz1fdDtcbiIsICJpbXBvcnQgQXBleENoYXJ0cyBmcm9tICdhcGV4Y2hhcnRzJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhcGV4Y2hhcnRzKHtcbiAgICBvcHRpb25zLFxuICAgIGNoYXJ0SWQsXG4gICAgdGhlbWUsXG4gICAgZXh0cmFKc09wdGlvbnNcbn0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBjaGFydDogbnVsbCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgY2hhcnRJZCxcbiAgICAgICAgdGhlbWUsXG4gICAgICAgIGV4dHJhSnNPcHRpb25zLFxuICAgICAgICBpbml0OiBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIHRoaXMuJHdpcmUuJG9uKCd1cGRhdGVPcHRpb25zJywgKHsgb3B0aW9ucyB9KSA9PiB7XG5cbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmV4dHJhSnNPcHRpb25zXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhcnQob3B0aW9ucylcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIEFscGluZS5lZmZlY3QoKCkgPT4ge1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGhlbWUgPSBBbHBpbmUuc3RvcmUoJ3RoZW1lJylcblxuICAgICAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGFydCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0Q2hhcnQoKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYXJ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZTogeyBtb2RlOiB0aGVtZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdpbmhlcml0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgaW5pdENoYXJ0OiBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy50aGVtZSA9IHsgbW9kZTogdGhpcy50aGVtZSB9XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuY2hhcnQuYmFja2dyb3VuZCA9ICdpbmhlcml0J1xuXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZXh0cmFKc09wdGlvbnNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaGFydCA9IG5ldyBBcGV4Q2hhcnRzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5jaGFydElkKSwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgdGhpcy5jaGFydC5yZW5kZXIoKVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVDaGFydDogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnQudXBkYXRlT3B0aW9ucyhvcHRpb25zLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSlcbiAgICAgICAgfSxcbiAgICB9XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBS2EsYUFBUyxFQUFFQSxJQUFFQyxJQUFFO0FBQUMsVUFBSUMsS0FBRSxPQUFPLEtBQUtGLEVBQUM7QUFBRSxVQUFHLE9BQU8sdUJBQXNCO0FBQUMsWUFBSUcsS0FBRSxPQUFPLHNCQUFzQkgsRUFBQztBQUFFLFFBQUFDLE9BQUlFLEtBQUVBLEdBQUUsT0FBUSxTQUFTRixJQUFFO0FBQUMsaUJBQU8sT0FBTyx5QkFBeUJELElBQUVDLEVBQUMsRUFBRTtBQUFBLFFBQVUsQ0FBRSxJQUFH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QVUsQ0FBQyxJQUFFLFdBQVVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsTUFBS0MsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFO0FBQU8sZUFBTyxLQUFLLEVBQUUsUUFBUSxJQUFJLE1BQU0sS0FBSyxFQUFFLEtBQUssRUFBQyxJQUFHUCxJQUFFLElBQUdDLElBQUUsSUFBR0MsSUFBRSxJQUFHQyxJQUFFLFFBQU9DLElBQUUsb0JBQW1CQyxJQUFFLGdCQUFlQyxJQUFFLGtCQUFpQkMsR0FBQyxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFlBQVcsT0FBTSxXQUFVO0FBQUMsWUFBSVAsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsR0FBRUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsV0FBVUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxNQUFLQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsTUFBS0MsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxNQUFNLEtBQUs7QUFBRSxlQUFPQSxHQUFFLEtBQUssRUFBQyxHQUFFVixJQUFFLEdBQUVDLElBQUUsT0FBTUMsS0FBRSxJQUFFQSxLQUFFLEdBQUUsUUFBT0MsS0FBRSxJQUFFQSxLQUFFLEdBQUUsSUFBR0MsSUFBRSxJQUFHQSxJQUFFLFNBQVFFLElBQUUsZ0JBQWUsU0FBT0MsS0FBRUEsS0FBRSxHQUFFLFFBQU8sU0FBT0MsS0FBRUEsS0FBRSxRQUFPLG9CQUFtQkMsR0FBQyxDQUFDLEdBQUVDLEdBQUUsS0FBSyxhQUFhLFFBQU9MLEVBQUMsR0FBRUs7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksZUFBYyxPQUFNLFNBQVNWLElBQUU7QUFBQyxZQUFJQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsV0FBVUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRTtBQUFPLGVBQU8sS0FBSyxFQUFFLFFBQVEsSUFBSSxNQUFNLFFBQVFILEVBQUMsRUFBRSxLQUFLLEVBQUMsTUFBS0csSUFBRSxRQUFPRixJQUFFLGdCQUFlQyxHQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksY0FBYSxPQUFNLFNBQVNGLElBQUU7QUFBQyxZQUFJQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUU7QUFBSyxRQUFBRCxLQUFFLE1BQUlBLEtBQUU7QUFBRyxZQUFJRSxLQUFFLEtBQUss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UyxPQUFHLFVBQVMsT0FBRyxhQUFZLE9BQUcsU0FBUSxJQUFHLFlBQVcsUUFBTyxnQkFBZSxPQUFHLEtBQUksUUFBTyxLQUFJLFFBQU8sVUFBUyxPQUFHLGlCQUFnQixRQUFPLFFBQU8sRUFBQyxNQUFLLE1BQUcsVUFBUyxHQUFFLFVBQVMsS0FBSSxTQUFRLEdBQUUsU0FBUSxHQUFFLE9BQU0sUUFBTyxRQUFPLEdBQUUsU0FBUSxJQUFHLE9BQU0sRUFBQyxRQUFPLENBQUMsR0FBRSxVQUFTLFFBQU8sWUFBVyxLQUFJLFlBQVcsUUFBTyxVQUFTLEdBQUUsR0FBRSxXQUFVLE9BQU0sR0FBRSxZQUFXLEVBQUMsTUFBSyxPQUFHLE9BQU0sV0FBVSxPQUFNLEdBQUUsU0FBUSxHQUFFLFNBQVEsRUFBQyxHQUFFLFdBQVUsRUFBQyxNQUFLLE9BQUcsT0FBTSxXQUFVLE9BQU0sR0FBRSxTQUFRLEdBQUUsU0FBUSxFQUFDLEdBQUUsT0FBTSxFQUFDLE1BQUssUUFBTyxRQUFPLEtBQUksU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLEVBQUMsT0FBTSxRQUFPLFVBQVMsUUFBTyxZQUFXLEtBQUksWUFBVyxRQUFPLFVBQVMsR0FBRSxFQUFDLEdBQUUsU0FBUSxFQUFDLFNBQVEsT0FBRyxTQUFRLEVBQUMsR0FBRSxZQUFXLEVBQUMsTUFBSyxNQUFHLFVBQVMsU0FBUSxRQUFPLEVBQUMsT0FBTSxXQUFVLE9BQU0sR0FBRSxXQUFVLEVBQUMsRUFBQyxFQUFDLEdBQUUsS0FBSyxrQkFBZ0IsRUFBQyxJQUFHLFFBQU8sR0FBRSxHQUFFLEdBQUUsTUFBSyxZQUFXLEdBQUUsYUFBWSxHQUFFLFlBQVcsUUFBTyxZQUFXLFFBQU8sT0FBTSxRQUFPLFFBQU8sRUFBQyxNQUFLLEdBQUUsV0FBVSxRQUFPLGFBQVksR0FBRSxhQUFZLFFBQU8sT0FBTSxVQUFTLFNBQVEsR0FBRSxTQUFRLEdBQUUsUUFBTyxHQUFFLFVBQVMsR0FBRSxHQUFFLE9BQU0sRUFBQyxhQUFZLFdBQVUsYUFBWSxHQUFFLGNBQWEsR0FBRSxNQUFLLFFBQU8sWUFBVyxVQUFTLFNBQVEsR0FBRSxTQUFRLEdBQUUsWUFBVyxRQUFPLFlBQVcsUUFBTyxPQUFNLFFBQU8sT0FBTSxFQUFDLFlBQVcsUUFBTyxPQUFNLFFBQU8sVUFBUyxRQUFPLFlBQVcsUUFBTyxZQUFXLEtBQUksVUFBUyxJQUFHLFNBQVEsRUFBQyxNQUFLLEdBQUUsT0FBTSxHQUFFLEtBQUksR0FBRSxRQUFPLEVBQUMsRUFBQyxFQUFDLEdBQUUsV0FBVSxFQUFDLEtBQUksUUFBTyxVQUFTLFFBQU8sU0FBUSxHQUFFLFNBQVEsRUFBQyxHQUFFLE9BQU0sRUFBQyxNQUFLLFFBQU8sT0FBTSxJQUFHLFFBQU8sSUFBRyxTQUFRLEdBQUUsU0FBUSxFQUFDLEVBQUMsR0FBRSxLQUFLLGtCQUFnQixFQUFDLElBQUcsUUFBTyxHQUFFLEdBQUUsSUFBRyxNQUFLLGlCQUFnQixHQUFFLFdBQVUsV0FBVSxhQUFZLFdBQVUsYUFBWSxHQUFFLFNBQVEsS0FBRyxTQUFRLEdBQUUsU0FBUSxHQUFFLE9BQU0sUUFBTyxZQUFXLEdBQUUsT0FBTSxFQUFDLGFBQVksV0FBVSxhQUFZLEdBQUUsY0FBYSxHQUFFLE1BQUssUUFBTyxZQUFXLE9BQU0sVUFBUyxTQUFRLFNBQVEsR0FBRSxTQUFRLElBQUcsWUFBVyxRQUFPLFlBQVcsUUFBTyxPQUFNLFFBQU8sT0FBTSxFQUFDLFlBQVcsUUFBTyxPQUFNLFFBQU8sVUFBUyxRQUFPLFlBQVcsUUFBTyxZQUFXLEtBQUksVUFBUyxJQUFHLFNBQVEsRUFBQyxNQUFLLEdBQUUsT0FBTSxHQUFFLEtBQUksR0FBRSxRQUFPLEVBQUMsRUFBQyxFQUFDLEVBQUMsR0FBRSxLQUFLLGtCQUFnQixFQUFDLElBQUcsUUFBTyxHQUFFLEdBQUUsSUFBRyxNQUFLLGlCQUFnQixHQUFFLFdBQVUsV0FBVSxhQUFZLFdBQVUsYUFBWSxHQUFFLFNBQVEsS0FBRyxTQUFRLEdBQUUsU0FBUSxHQUFFLE9BQU0sRUFBQyxhQUFZLFdBQVUsYUFBWSxHQUFFLGNBQWEsR0FBRSxNQUFLLFFBQU8sWUFBVyxVQUFTLGFBQVks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QU8sb0JBQW1CLE1BQUcsT0FBTSxFQUFDLE1BQUssUUFBTyxZQUFXLEVBQUMsRUFBQyxHQUFFLFFBQU8sRUFBQyxNQUFLLFFBQU8sT0FBTSxVQUFTLGVBQWMsVUFBUyxTQUFRLEdBQUUsU0FBUSxHQUFFLE9BQU0sRUFBQyxPQUFNLFFBQU8sVUFBUyxRQUFPLFlBQVcsT0FBTSxFQUFDLEdBQUUsWUFBVyxDQUFDLEdBQUUsUUFBTyxRQUFPLFFBQU8sRUFBQyxRQUFPLEVBQUMsUUFBTyxFQUFDLE1BQUssUUFBTyxPQUFNLEVBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxRQUFPLEVBQUMsTUFBSyxXQUFVLE9BQU0sSUFBRSxFQUFDLEdBQUUsUUFBTyxFQUFDLGtDQUFpQyxPQUFHLFFBQU8sRUFBQyxNQUFLLFVBQVMsT0FBTSxJQUFFLEVBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxNQUFLLFFBQU8sT0FBTSxRQUFPLFFBQU8sR0FBRSxTQUFRLEdBQUUsU0FBUSxHQUFFLFVBQVMsT0FBRyxPQUFNLEVBQUMsVUFBUyxRQUFPLFlBQVcsS0FBSSxZQUFXLFFBQU8sT0FBTSxPQUFNLEVBQUMsR0FBRSxVQUFTLEVBQUMsTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLEdBQUUsU0FBUSxHQUFFLFNBQVEsSUFBRyxVQUFTLE9BQUcsT0FBTSxFQUFDLFVBQVMsUUFBTyxZQUFXLEtBQUksWUFBVyxRQUFPLE9BQU0sT0FBTSxFQUFDLEdBQUUsUUFBTyxFQUFDLE1BQUssTUFBRyxPQUFNLFVBQVMsU0FBUSxRQUFPLE9BQU0sR0FBRSxRQUFPLFFBQU8sV0FBVSxHQUFFLE1BQUssRUFBQyxNQUFLLFNBQVEsUUFBTyxRQUFPLFNBQVEsTUFBSSxVQUFTLEVBQUMsT0FBTSxRQUFPLE1BQUssY0FBYSxnQkFBZSxLQUFHLGtCQUFpQixRQUFPLGVBQWMsTUFBRyxhQUFZLEdBQUUsV0FBVSxHQUFFLE9BQU0sQ0FBQyxHQUFFLElBQUcsR0FBRyxHQUFFLFlBQVcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxTQUFRLE1BQUcs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LE9BQU0sR0FBRSxLQUFJLEdBQUUsUUFBTyxFQUFDLEVBQUMsR0FBRSxRQUFPLEVBQUMsTUFBSyxNQUFFLEdBQUUsT0FBTSxFQUFDLFFBQU8sRUFBQyxNQUFLLE1BQUUsR0FBRSxTQUFRLEVBQUMsU0FBUSxNQUFFLEdBQUUsWUFBVyxFQUFDLE1BQUssTUFBRSxHQUFFLFdBQVUsRUFBQyxNQUFLLE1BQUUsRUFBQyxHQUFFLE9BQU0sRUFBQyxTQUFRLEVBQUMsTUFBSyxNQUFFLEdBQUUsTUFBSyxFQUFDLFNBQVEsTUFBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLFNBQVEsTUFBRSxFQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksT0FBTSxPQUFNLFdBQVU7QUFBQyxlQUFNLEVBQUMsT0FBTSxFQUFDLFNBQVEsT0FBRyxZQUFXLEVBQUMsUUFBTyxRQUFPLEVBQUMsR0FBRSxhQUFZLEVBQUMsS0FBSSxFQUFDLFlBQVcsRUFBQyxVQUFTLFNBQVEsRUFBQyxFQUFDLEdBQUUsWUFBVyxFQUFDLE9BQU0sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsWUFBVyxFQUFDLFNBQVEsTUFBRSxFQUFDLEdBQUUsUUFBTyxFQUFDLE9BQU0sR0FBRSxTQUFRLFFBQU8sR0FBRSxNQUFLLEVBQUMsU0FBUSxLQUFHLEdBQUUsUUFBTyxFQUFDLFNBQVEsRUFBQyxPQUFNLFVBQVMsUUFBTyxHQUFFLE1BQUssRUFBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLFFBQU8sT0FBRyxXQUFVLEtBQUUsR0FBRSxPQUFNLEVBQUMsU0FBUSxFQUFDLFNBQVEsTUFBRSxHQUFFLGVBQWMsV0FBVSxZQUFXLEVBQUMsT0FBTSxZQUFXLFVBQVMsUUFBTyxNQUFLLEVBQUMsTUFBSyxXQUFVLEdBQUUsWUFBVyxFQUFDLFNBQVEsTUFBRSxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUMsRUFBQyxFQUFDLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksVUFBUyxPQUFNLFdBQVU7QUFBQyxlQUFPLEtBQUssVUFBVSxHQUFF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LElBQUUsT0FBTUMsSUFBRSxLQUFJQyxHQUFDLENBQUMsQ0FBQztBQUFBLFVBQUMsRUFBRVAsRUFBQztBQUFBLFFBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxlQUFjLFdBQVUsU0FBUSxFQUFDLFNBQVEsTUFBRSxHQUFFLFlBQVcsRUFBQyxRQUFPLEVBQUMsT0FBTSxFQUFDLEVBQUMsRUFBQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFlBQVcsT0FBTSxTQUFTQSxJQUFFO0FBQUMsWUFBSUMsSUFBRUM7QUFBRSxlQUFPLFVBQVFELEtBQUVELEdBQUUsWUFBWSxRQUFNLFdBQVNDLE1BQUdBLEdBQUUsY0FBWUQsR0FBRSxZQUFZLElBQUksWUFBVSxJQUFHLFVBQVFFLEtBQUVGLEdBQUUsWUFBWSxRQUFNLFdBQVNFLE1BQUdBLEdBQUUsZ0JBQWNGLEdBQUUsWUFBWSxJQUFJLGNBQVksSUFBR0E7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksUUFBTyxPQUFNLFdBQVU7QUFBQyxlQUFNLEVBQUMsUUFBTyxFQUFDLE9BQU0sR0FBRSxNQUFLLEVBQUMsTUFBSyxTQUFRLFVBQVMsRUFBQyxlQUFjLE9BQUcsT0FBTSxTQUFRLE1BQUssWUFBVyxhQUFZLE1BQUksV0FBVSxLQUFHLE9BQU0sQ0FBQyxHQUFFLEtBQUksR0FBRyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQUssRUFBQyxNQUFLLFlBQVcsVUFBUyxFQUFDLGVBQWMsT0FBRyxPQUFNLFNBQVEsTUFBSyxZQUFXLGFBQVksTUFBSSxXQUFVLEtBQUcsT0FBTSxDQUFDLEdBQUUsS0FBSSxHQUFHLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxNQUFLLEdBQUUsT0FBTSxFQUFDLFlBQVcsRUFBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLGNBQWEsTUFBRSxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGFBQVksT0FBTSxXQUFVO0FBQUMsZUFBTSxFQUFDLFFBQU8sRUFBQyxPQUFNLFlBQVcsT0FBTSxFQUFDLEdBQUUsTUFBSyxF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USxFQUFDLE1BQUssR0FBRSxhQUFZLEdBQUUsT0FBTSxFQUFDLFlBQVcsRUFBQyxFQUFDLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksV0FBVSxPQUFNLFdBQVU7QUFBQyxlQUFNLEVBQUMsT0FBTSxFQUFDLFNBQVEsTUFBRSxHQUFFLE1BQUssRUFBQyxTQUFRLEVBQUMsR0FBRSxZQUFXLEVBQUMsT0FBTSxFQUFDLFFBQU8sQ0FBQyxNQUFNLEVBQUMsRUFBQyxHQUFFLFFBQU8sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsU0FBUSxFQUFDLGNBQWEsTUFBRyxRQUFPLEVBQUMsTUFBSyxNQUFFLEdBQUUsR0FBRSxFQUFDLE1BQUssTUFBRSxFQUFDLEdBQUUsUUFBTyxFQUFDLFVBQVMsT0FBTSxTQUFRLEVBQUMsT0FBTSxVQUFTLE1BQUssSUFBRyxTQUFRLEVBQUMsRUFBQyxHQUFFLE1BQUssRUFBQyxTQUFRLEVBQUMsT0FBTSxHQUFFLEVBQUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxXQUFVLE9BQU0sV0FBVTtBQUFDLGVBQU0sRUFBQyxPQUFNLEVBQUMsTUFBSyxFQUFDLFNBQVEsTUFBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLE9BQU0sRUFBQyxVQUFTLElBQUcsWUFBVyxLQUFJLFFBQU8sQ0FBQyxNQUFNLEVBQUMsRUFBQyxHQUFFLFFBQU8sRUFBQyxNQUFLLE1BQUcsT0FBTSxHQUFFLFFBQU8sQ0FBQyxNQUFNLEVBQUMsR0FBRSxRQUFPLEVBQUMsTUFBSyxNQUFFLEdBQUUsTUFBSyxFQUFDLFVBQVMsRUFBQyxPQUFNLENBQUMsR0FBRSxHQUFHLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxjQUFhLE1BQUcsR0FBRSxFQUFDLE1BQUssTUFBRSxFQUFDLEdBQUUsTUFBSyxFQUFDLFNBQVEsRUFBQyxNQUFLLEdBQUUsT0FBTSxFQUFDLEVBQUMsR0FBRSxPQUFNLEVBQUMsWUFBVyxFQUFDLE1BQUssTUFBRSxHQUFFLFNBQVEsRUFBQyxTQUFRLE1BQUUsRUFBQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLE9BQU0sT0FBTSxXQUFVO0FBQUMsZUFBTSxFQUFDLE9BQU0sRUFBQyxTQUFRLEVBQUMsTUFBSyxNQUFFLEVBQUMsR0FBRSxhQUFZLEVBQUMsS0FBSSxFQUFDLE9BQU0sRUFBQyxRQUFPLEVBQUMsTUFBSyxNQUFFLEVBQUMsRUFBQyxFQUFDLEdBQUUsWUFBVyxFQUFDLFdBQVUsU0FBU0EsSUFBRTtBQUFDLGlCQUFPQSxHQUFFLFFBQVEsQ0FBQyxJQUFFO0FBQUEsUUFBRyxHQUFFLE9BQU0sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsWUFBVyxFQUFDLFNBQVEsTUFBRSxHQUFFLFlBQVcsRUFBQyxTQUFRLEtBQUUsRUFBQyxHQUFFLFFBQU8sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsTUFBSyxFQUFDLFNBQVEsR0FBRSxVQUFTLEVBQUMsT0FBTSxTQUFRLE9BQU0sQ0FBQyxHQUFFLEdBQUcsRUFBQyxFQUFDLEdBQUUsU0FBUSxFQUFDLE9BQU0sUUFBTyxpQkFBZ0IsS0FBRSxHQUFFLFFBQU8sRUFBQyxVQUFTLFFBQU8sRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxTQUFRLE9BQU0sV0FBVTtBQUFDLGVBQU0sRUFBQyxPQUFNLEVBQUMsU0FBUSxFQUFDLE1BQUssTUFBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLFdBQVUsU0FBU0EsSUFBRTtBQUFDLGlCQUFPQSxHQUFFLFFBQVEsQ0FBQyxJQUFFO0FBQUEsUUFBRyxHQUFFLE9BQU0sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsWUFBVyxFQUFDLFNBQVEsTUFBRSxHQUFFLFlBQVcsRUFBQyxTQUFRLEtBQUUsRUFBQyxHQUFFLFFBQU8sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsTUFBSyxFQUFDLFNBQVEsR0FBRSxVQUFTLEVBQUMsT0FBTSxTQUFRLGdCQUFlLE1BQUksT0FBTSxDQUFDLElBQUcsR0FBRyxHQUFFLGFBQVksR0FBRSxXQUFVLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxPQUFNLFFBQU8saUJBQWdCLEtBQUUsR0FBRSxRQUFPLEVBQUMsVUFBUyxRQUFPLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksYUFBWSxPQUFNLFdBQVU7QUFBQyxlQUFPLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxhQUFXLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxhQUFXLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxhQUFXLEdBQUUsRUFBQyxPQUFNLEVBQUMsU0FBUSxFQUFDLE1BQUssTUFBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLFdBQVUsU0FBU0EsSUFBRTtBQUFDLGlCQUFPQSxHQUFFLFFBQVEsQ0FBQyxJQUFFO0FBQUEsUUFBRyxHQUFFLFNBQVEsTUFBRSxHQUFFLFFBQU8sRUFBQyxNQUFLLE1BQUcsT0FBTSxFQUFDLEdBQUUsTUFBSyxFQUFDLFNBQVEsSUFBRSxHQUFFLFNBQVEsRUFBQyxPQUFNLFFBQU8saUJBQWdCLEtBQUUsR0FBRSxRQUFPLEVBQUMsVUFBUyxRQUFPLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksU0FBUSxPQUFNLFdBQVU7QUFBQyxlQUFPLEtBQUssS0FBSyxNQUFNLENBQUMsRUFBRSxPQUFPLFVBQVEsS0FBSyxLQUFLLE1BQU0sQ0FBQyxFQUFFLE9BQU8sVUFBUSxLQUFLLEtBQUssTUFBTSxDQUFDLEVBQUUsT0FBTyxVQUFRLEdBQUUsRUFBQyxZQUFXLEVBQUMsU0FBUSxPQUFHLE9BQU0sRUFBQyxVQUFTLE9BQU0sRUFBQyxHQUFFLFFBQU8sRUFBQyxPQUFNLEVBQUMsR0FBRSxTQUFRLEVBQUMsTUFBSyxHQUFFLGFBQVksR0FBRSxlQUFjLEVBQUMsR0FBRSxNQUFLLEVBQUMsU0FBUSxJQUFFLEdBQUUsU0FBUSxFQUFDLFFBQU8sT0FBRyxXQUFVLE1BQUcsY0FBYSxLQUFFLEdBQUUsTUFBSyxFQUFDLE1BQUssTUFBRSxHQUFFLE9BQU0sRUFBQyxRQUFPLEVBQUMsV0FBVSxTQUFTQSxJ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QVEsS0FBSyxnRkFBZ0YsR0FBRUE7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUkscUJBQW9CLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU8sV0FBU0EsR0FBRSxnQkFBY0EsR0FBRSxjQUFZLENBQUMsR0FBRUEsR0FBRSxZQUFZLFFBQU0sQ0FBQyxHQUFFQSxHQUFFLFlBQVksUUFBTSxDQUFDLEdBQUVBLEdBQUUsWUFBWSxTQUFPLENBQUMsSUFBR0EsS0FBRSxLQUFLLHVCQUF1QkEsRUFBQyxHQUFFQSxLQUFFLEtBQUssdUJBQXVCQSxFQUFDLEdBQUVBLEtBQUUsS0FBSyx1QkFBdUJBLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMEJBQXlCLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsSUFBSTtBQUFFLGVBQU9ELEdBQUUsWUFBWSxRQUFNLEVBQUUsWUFBWSxXQUFTQSxHQUFFLFlBQVksUUFBTUEsR0FBRSxZQUFZLFFBQU0sQ0FBQyxHQUFFQyxHQUFFLGVBQWUsR0FBRUQ7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMEJBQXlCLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsSUFBSTtBQUFFLGVBQU9ELEdBQUUsWUFBWSxRQUFNLEVBQUUsWUFBWSxXQUFTQSxHQUFFLFlBQVksUUFBTUEsR0FBRSxZQUFZLFFBQU0sQ0FBQyxHQUFFQyxHQUFFLGVBQWUsR0FBRUQ7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMEJBQXlCLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsSUFBSTtBQUFFLGVBQU9ELEdBQUUsWUFBWSxTQUFPLEVBQUUsWUFBWSxXQUFTQSxHQUFFLFlBQVksU0FBT0EsR0FBRSxZQUFZLFNBQU8sQ0FBQyxHQUFFQyxHQUFFLGVBQWUsR0FBRUQ7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUkscUJBQW9CLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFFBQUFBLEdBQUUsU0FBTyxXQUFTQSxHQUFFLE1BQU0sU0FBT0EsR0FBRSxZQUFVQSxHQUFFLFVBQVEsQ0FBQyxJQUFHLFlBQVVBLEdBQUUsUUFBUSxVQUFRQSxHQUFFLFFBQVEsUUFBTSxTQUFRQSxHQUFFLE1BQU0sY0FBWUEsR0FBRSxNQUFNLFlBQVUsWUFBV0EsR0FBRSxNQUFNLGVBQWFBLEdBQUUsTUFBTSxhQUFXLFlBQVdBLEdBQUUsTUFBTSxZQUFVQSxHQUFFLE1BQU0sVUFBUTtBQUFBLE1BQVksRUFBQyxHQUFFLEVBQUMsS0FBSSx5QkFBd0IsT0FBTSxTQUFTQSxJQUFFO0FBQUMsWUFBSUMsS0FBRUQ7QUFBRSxZQUFHQyxHQUFFLFFBQVEsVUFBUUEsR0FBRSxRQUFRO0FBQVUsZ0JBQU0sSUFBSSxNQUFNLG9IQUFvSDtBQUFFLFlBQUcsVUFBUUEsR0FBRSxNQUFNLFFBQU1BLEdBQUUsWUFBWSxJQUFJLFlBQVc7QUFBQyxjQUFHQSxHQUFFLE1BQU0sU0FBTztBQUFFLGtCQUFNLElBQUksTUFBTSxnSEFBZ0g7QUFBRSxVQUFBQSxHQUFFLE1BQU0sQ0FBQyxFQUFFLGFBQVdBLEdBQUUsTUFBTSxDQUFDLEVBQUUsV0FBUyxPQUFJQSxHQUFFLE1BQU0sUUFBUSxVQUFRLE9BQUdBLEdBQUUsTUFBTSxDQUFDLEVBQUUsUUFBUSxVQUFRLE9BQUdBLEdBQUUsTUFBTSxLQUFLLFVBQVE7QUFBQSxRQUFFO0FBQUMsZUFBTSxVQUFRQSxHQUFFLE1BQU0sUUFBTSxlQUFhQSxHQUFFLE1BQU0sUUFBTUEsR0FBRSxRQUFRLFVBQVEsZUFBYUEsR0FBRSxNQUFNLFdBQVcsU0FBT0EsR0FBRSxPQUFPLFNBQU8sTUFBSUEsR0FBRSxNQUFNLFdBQVcsUUFBTSxjQUFhLGtCQUFnQkEsR0FBRSxNQUFNLFFBQU0sY0FBWUEsR0FBRSxNQUFNLFFBQU1BLEdBQUUsTUFBTSxDQUFDLEVBQUUsYUFBVyxRQUFRLEtBQUssc0JBQXNCLE9BQU9BLEdBQUUsTUFBTSxNQUFLLDBCQUEwQixDQUFDLEdBQUVBLEdBQUUsTUFBTSxDQUFDLEVBQUUsV0FBUyxRQUFJQTtBQUFBLE1BQUMsRUFBQyxDQUFDLENBQUMsR0FBRUQ7QUFBQSxJQUFDLEVBQUU7QUFBend4QyxRQUEyd3hDLElBQUUsV0FBVTtBQUFDLGVBQVNBLEtBQUc7QUFBQyxVQUFFLE1BQUtBLEVBQUM7QUFBQSxNQUFDO0FBQUMsYUFBTyxFQUFFQSxJQUFFLENBQUMsRUFBQyxLQUFJLGtCQUFpQixPQUFNLFNBQVNBLElBQUU7QUFBQyxRQUFBQSxHQUFFLFNBQU8sQ0FBQyxHQUFFQSxHQUFFLGdCQUFjLENBQUMsR0FBRUEsR0FBRSxnQkFBYyxDQUFDLEdBQUVBLEdBQUUsZ0JBQWMsQ0FBQyxHQUFFQSxHQUFFLGdCQUFjLENBQUMsR0FBRUEsR0FBRSxnQkFBYyxDQUFDLEdBQUVBLEdBQUUsbUJBQWlCLENBQUMsR0FBRUEsR0FBRSxpQkFBZSxDQUFDLEdBQUVBLEdBQUUsY0FBWSxDQUFDLEdBQUVBLEdBQUUsZ0JBQWMsQ0FBQyxHQUFFQSxHQUFFLGNBQVksQ0FBQyxHQUFFQSxHQUFFLFVBQVEsQ0FBQyxHQUFFQSxHQUFFLFVBQVEsQ0FBQyxHQUFFQSxHQUFFLGNBQVksQ0FBQyxHQUFFQSxHQUFFLGVBQWEsQ0FBQyxHQUFFQSxHQUFFLFlBQVUsQ0FBQyxHQUFFQSxHQUFFLGVBQWEsQ0FBQyxHQUFFQSxHQUFFLHNCQUFvQixDQUFDLEdBQUVBLEdBQUUsZ0JBQWMsQ0FBQyxHQUFFQSxHQUFFLGdCQUFjLENBQUMsR0FBRUEsR0FBRSxTQUFPLENBQUMsR0FBRUEsR0FBRSxpQkFBZSxPQUFHQSxHQUFFLFNBQU8sQ0FBQyxHQUFFQSxHQUFFLGtCQUFnQixPQUFHQSxHQUFFLGVBQWEsQ0FBQyxHQUFFQSxHQUFFLGlCQUFlLENBQUMsR0FBRUEsR0FBRSxrQkFBZ0IsQ0FBQyxHQUFFQSxHQUFFLG1CQUFpQixPQUFHQSxHQUFFLGNBQVksTUFBS0EsR0FBRSx1QkFBcUIsTUFBS0EsR0FBRSxrQkFBZ0IsQ0FBQyxHQUFFQSxHQUFFLGNBQVksQ0FBQyxHQUFFQSxHQUFFLGtCQUFnQixDQUFDLEdBQUVBLEdBQUUsYUFBVyxPQUFHQSxHQUFFLHdCQUFzQixPQUFHQSxHQUFFLHlCQUF1QixPQUFHQSxHQUFFLFlBQVUsT0FBR0EsR0FBRSxlQUFhLE9BQUdBLEdBQUUsa0JBQWdCLE9BQUdBLEdBQUUsT0FBSyxDQUFDLE9BQU8sV0FBVUEsR0FBRSxPQUFLLE9BQU8sV0FBVUEsR0FBRSxVQUFRLENBQUMsR0FBRUEsR0FBRSxVQUFRLENBQUMsR0FBRUEsR0FBRSxPQUFLLENBQUMsT0FBTyxXQUFVQSxHQUFFLE9BQUssT0FBTyxXQUFVQSxHQUFFLGNBQVksQ0FBQyxPQUFPLFdBQVVBLEdBQUUsY0FBWSxPQUFPLFdBQVVBLEdBQUUsVUFBUSxHQUFFQSxHQUFFLFVBQVEsT0FBTyxXQUFVQSxHQUFFLE9BQUssT0FBTyxXQUFVQSxHQUFFLE9BQUssQ0FBQyxPQUFPLFdBQVVBLEdBQUUsV0FBUyxPQUFPLFdBQVVBLEdBQUUsYUFBVyxDQUFDLEdBQUVBLEdBQUUsYUFBVyxNQUFLQSxHQUFFLHNCQUFvQixDQUFDLEdBQUVBLEdBQUUsZ0JBQWMsQ0FBQyxHQUFFQSxHQUFFLGVBQWEsQ0FBQyxHQUFFQSxHQUFFLHVCQUFxQixHQUFFQSxHQUFFLGdCQUFjLEdBQUVBLEdBQUUsU0FBTyxHQUFFQSxHQUFFLFNBQU8sQ0FBQyxHQUFFQSxHQUFFLFNBQU8sR0FBRUEsR0FBRSxhQUFXLEdBQUVBLEdBQUUsY0FBWTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxjQUFhLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU0sRUFBQyxTQUFRLE1BQUssTUFBSyxNQUFLLFFBQU8sRUFBQyxhQUFZLENBQUMsR0FBRSxTQUFRLENBQUMsR0FBRSxTQUFRLENBQUMsR0FBRSxTQUFRLENBQUMsR0FBRSxXQUFVLENBQUMsR0FBRSxvQkFBbUIsQ0FBQyxHQUFFLFFBQU8sQ0FBQyxHQUFFLFVBQVMsQ0FBQyxFQUFDLEdBQUUsUUFBTyxDQUFDLEdBQUUsU0FBUSxNQUFLLFNBQVEsTUFBSyxNQUFLLEVBQUMsUUFBTyxDQUFDLEVBQUMsR0FBRSxRQUFPLEVBQUMsUUFBTyxDQUFDLEVBQUMsR0FBRSxZQUFXLEVBQUMsT0FBTSxFQUFDLFFBQU8sQ0FBQyxFQUFDLEVBQUMsR0FBRSxlQUFjLEVBQUMsTUFBSyxFQUFDLFFBQU8sQ0FBQyxFQUFDLEVBQUMsR0FBRSxTQUFRLEVBQUMsUUFBTyxDQUFDLEdBQUUsTUFBS0EsR0FBRSxRQUFRLE1BQUssYUFBWSxFQUFDLEdBQUUsZ0JBQWUsT0FBRyxlQUFjLGtCQUFpQixVQUFRLFVBQVUsa0JBQWlCLFNBQVEsT0FBRyxjQUFhLE9BQUcsZUFBYyxNQUFLLGVBQWMsQ0FBQyxHQUFFLFdBQVUsQ0FBQyxHQUFFLFdBQVUsQ0FBQyxHQUFFLGNBQWEsTUFBSyxRQUFPLENBQUMsR0FBRSxpQkFBZ0IsQ0FBQyxHQUFFLGtCQUFpQixPQUFHLG9CQUFtQixPQUFHLGlCQUFnQixDQUFDLEdBQUUsd0JBQXVCLENBQUMsR0FBRSwwQkFBeUIsQ0FBQyxHQUFFLGlDQUFnQyxDQUFDLEdBQUUsY0FBYSxDQUFDLEdBQUUsb0JBQW1CLE9BQUcscUJBQW9CLElBQUcsd0JBQXVCLElBQUcsb0JBQW1CLENBQUMsR0FBRSxlQUFjLElBQUcsaUJBQWdCLE9BQUcsb0JBQW1CLENBQUMsR0FBRSx1QkFBc0IsQ0FBQyxHQUFFLHFCQUFvQixHQUFFLFlBQVcsR0FBRSxXQUFVLFFBQU8sYUFBWSxXQUFTQSxHQUFFLE1BQU0sUUFBUSxnQkFBY0EsR0FBRSxNQUFNLFFBQVEsTUFBTSxRQUFNQSxHQUFFLE1BQU0sS0FBSyxTQUFRLFlBQVcsVUFBUUEsR0FBRSxNQUFNLFFBQVEsZ0JBQWNBLEdBQUUsTUFBTSxRQUFRLE1BQU0sS0FBSSxrQkFBaUIsZ0JBQWNBLEdBQUUsTUFBTSxRQUFRLGdCQUFjQSxHQUFFLE1BQU0sUUFBUSxNQUFNLFdBQVUsT0FBTSxNQUFLLFdBQVUsT0FBRyxvQkFBbUIsQ0FBQyxHQUFFLGVBQWMsUUFBTyxlQUFjLEdBQUUsT0FBTSxHQUFFLE9BQU0sOEJBQTZCLFVBQVMsR0FBRSxXQUFVLEdBQUUsUUFBTyxPQUFHLFFBQU8sQ0FBQyxHQUFFLEtBQUksQ0FBQyxHQUFFLFFBQU8sRUFBQyxlQUFjLENBQUMsRUFBQyxHQUFFLGVBQWMsTUFBRyx1QkFBc0IsT0FBRyx3QkFBdUIsT0FBRyxpQkFBZ0IsQ0FBQyxHQUFFLFlBQVcsTUFBRyxXQUFVLE9BQUcsU0FBUSxPQUFHLGFBQVksTUFBSyxhQUFZLE9BQUcsYUFBWSxPQUFHLGVBQWMsQ0FBQyxHQUFFLG9CQUFtQixNQUFHLGFBQVksQ0FBQyxHQUFFLGlCQUFnQixDQUFDLEdBQUUsNEJBQTJCLENBQUMsR0FBRSxlQUFjLE9BQUcsUUFBTyxNQUFLLFFBQU8sT0FBRyxXQUFVLEdBQUUsWUFBVyxHQUFFLGVBQWMsT0FBRyxlQUFjLE9BQUcsaUJBQWdCLFFBQU8sa0JBQWlCLENBQUMsR0FBRSx1QkFBc0IsUUFBTyxnQkFBZSxRQUFPLE9BQU0sUUFBTyxjQUFhLFFBQU8sbUJBQWtCLE9BQU0sbUJBQWtCLEdBQUUsd0JBQXVCLEdBQUUsa0JBQWlCLEdBQUUsa0JBQWlCLEdBQUUsUUFBTyxHQUFFLFFBQU8sR0FBRSxZQUFXLEdBQUUsWUFBVyxHQUFFLGlCQUFnQixDQUFDLEdBQUUsYUFBWSxDQUFDLEdBQUUsaUJBQWdCLEdBQUUsaUJBQWdCLEdBQUUsU0FBUSxLQUFJO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFFBQU8sT0FBTSxTQUFTQSxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLFdBQVdELEVBQUM7QUFBRSxlQUFPLEtBQUssZUFBZUMsRUFBQyxHQUFFQSxHQUFFLGdCQUFjLEVBQUUsT0FBTyxDQUFDLEdBQUVELEVBQUMsR0FBRUMsR0FBRSxnQkFBYyxFQUFFLE1BQU1ELEdBQUUsTUFBTSxHQUFFQyxHQUFFLFlBQVUsRUFBRSxNQUFNQSxHQUFFLGNBQWMsS0FBSyxHQUFFQSxHQUFFLFlBQVUsRUFBRSxNQUFNQSxHQUFFLGNBQWMsS0FBSyxHQUFFQTtBQUFBLE1BQUMsRUFBQyxDQUFDLENBQUMsR0FBRUQ7QUFBQSxJQUFDLEVBQUU7QUFBcDg0QyxRQUFzODRDLElBQUUsV0FBVTtBQUFDLGVBQVNBLEdBQUVDLElBQUU7QUFBQyxVQUFFLE1BQUtELEVBQUMsR0FBRSxLQUFLLE9BQUtDO0FBQUEsTUFBQztBQUFDLGFBQU8sRUFBRUQsSUFBRSxDQUFDLEVBQUMsS0FBSSxRQUFPLE9BQU0sV0FBVTtBQUFDLFlBQUlBLEtBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBQyxvQkFBbUIsTUFBRSxDQUFDO0FBQUUsZUFBTSxFQUFDLFFBQU9BLElBQUUsU0FBUyxJQUFJLElBQUcsS0FBS0EsRUFBQyxFQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFFQTtBQUFBLElBQUMsRUFBRTtBQUFybzVDLFFBQXVvNUMsSUFBRSxXQUFVO0FBQUMsZUFBU0EsR0FBRUMsSUFBRTtBQUFDLFVBQUUsTUFBS0QsRUFBQyxHQUFFLEtBQUssTUFBSUMsSUFBRSxLQUFLLElBQUVBLEdBQUUsR0FBRSxLQUFLLE9BQUssTUFBSyxLQUFLLGNBQVk7QUFBQSxNQUFDO0FBQUMsYUFBTyxFQUFFRCxJQUFFLENBQUMsRUFBQyxLQUFJLGtCQUFpQixPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssR0FBRUMsS0FBRUQsR0FBRSxRQUFPRSxLQUFFLFNBQVNGLEdBQUUsUUFBUSxXQUFVLEVBQUUsR0FBRUcsS0FBRSxTQUFTSCxHQUFFLFFBQVEsWUFBVyxFQUFFLEdBQUVJLEtBQUVGLEtBQUVDLEtBQUVELEtBQUVDLElBQUVFLEtBQUVOLEdBQUUsT0FBTU8sS0FBRSxHQUFFQyxLQUFFO0FBQUUsbUJBQVNSLEdBQUUsU0FBTyxXQUFTQSxHQUFFLFNBQU8sV0FBU0UsR0FBRSxLQUFLLE1BQU0sU0FBTyxXQUFTQSxHQUFFLEtBQUssTUFBTSxVQUFRSyxLQUFFTCxHQUFFLEtBQUssTUFBTSxRQUFNLEdBQUVNLEtBQUVOLEdBQUUsS0FBSyxNQUFNLFdBQVNLLEtBQUVGLEtBQUUsR0FBRUcsS0FBRUgsT0FBSUUsS0FBRVAsR0FBRSxPQUFNUSxLQUFFUixHQUFFO0FBQVEsWUFBSVMsS0FBRSxTQUFTLGdCQUFnQlIsR0FBRSxRQUFRLE9BQU0sU0FBUztBQUFFLFVBQUUsU0FBU1EsSUFBRSxFQUFDLElBQUdULEdBQUUsV0FBVSxjQUFhQSxHQUFFLGVBQWFBLEdBQUUsZUFBYSxrQkFBaUIsT0FBTU8sS0FBRSxNQUFLLFFBQU9DLEtBQUUsS0FBSSxDQUFDO0FBQUUsWUFBSUUsS0FBRSxTQUFTLGdCQUFnQlQsR0FBRSxRQUFRLE9BQU0sT0FBTztBQUFFLFFBQUFRLEdBQUUsWUFBWUMsRUFBQyxHQUFFQSxHQUFFLGVBQWUsT0FBTyxJQUFJLE9BQU0sUUFBT0osRUFBQyxHQUFFLEVBQUUsU0FBU0ksSUFBRSxFQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUscUJBQW9CLFFBQU8sT0FBTUgsS0FBRSxNQUFLLFFBQU9DLEtBQUUsS0FBSSxDQUFDLEdBQUVFLEdBQUUsTUFBTSxVQUFRVixHQUFFLFNBQVFDLEdBQUUsUUFBUSxJQUFJLE9BQU8sS0FBSyxZQUFZUSxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGtCQUFpQixPQUFNLFNBQVNULElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssR0FBRUMsS0FBRUQsR0FBRSxPQUFPLE1BQU07QUFBSyxnQkFBTyxVQUFRQyxNQUFHLGVBQWFBLE9BQUlELEdBQUUsT0FBTyxZQUFZLElBQUksZUFBYSxjQUFZQyxNQUFHLGNBQVlBLEtBQUUsS0FBSyxjQUFZRixHQUFFLGVBQWEsS0FBSyxjQUFZQSxHQUFFLGVBQWFDLEdBQUUsUUFBUSxPQUFPLFFBQU8sS0FBSztBQUFBLE1BQVcsRUFBQyxHQUFFLEVBQUMsS0FBSSxZQUFXLE9BQU0sU0FBU0QsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSztBQUFFLGFBQUssT0FBS0Q7QUFBRSxZQUFJRSxJQUFFQyxJQUFFQyxJQUFFQyxLQUFFLEtBQUssRUFBRTtBQUFPLGFBQUssY0FBWSxLQUFLLGVBQWVMLEVBQUM7QUFBRSxZQUFJTSxLQUFFLEtBQUssY0FBYyxFQUFFLEtBQUssV0FBVztBQUFFLG1CQUFTTCxHQUFFLFFBQVEsYUFBYSxLQUFLLFdBQVcsTUFBSUssS0FBRUwsR0FBRSxRQUFRLGFBQWEsS0FBSyxXQUFXLElBQUcsY0FBWSxPQUFPSyxPQUFJQSxLQUFFQSxHQUFFLEVBQUMsYUFBWSxLQUFLLGFBQVksZ0JBQWVOLEdBQUUsZ0JBQWUsT0FBTUEsR0FBRSxPQUFNLEdBQUVDLEdBQUMsQ0FBQztBQUFHLFlBQUlNLEtBQUVQLEdBQUUsV0FBU0EsR0FBRSxXQUFTLEtBQUssWUFBWSxLQUFLLFdBQVcsR0FBRVEsS0FBRSxNQUFNLFFBQVFILEdBQUUsS0FBSyxPQUFPLElBQUVBLEdBQUUsS0FBSyxRQUFRLEtBQUssV0FBVyxJQUFFQSxHQUFFLEtBQUs7QUFBUSxRQUFBTCxHQUFFLFVBQVFNLEtBQUVOLEdBQUUsUUFBT00sT0FBSUEsS0FBRSxRQUFPLFFBQVEsS0FBSyw4QkFBOEI7QUFBRyxZQUFJRyxLQUFFSDtBQUFFLFlBQUcsT0FBS0EsR0FBRSxRQUFRLEtBQUssSUFBRUEsR0FBRSxTQUFPLE1BQUlHLEtBQUUsRUFBRSxVQUFVSCxJQUFFRSxFQUFDLEtBQUdGLEdBQUUsUUFBUSxNQUFNLElBQUUsT0FBS0UsS0FBRSxFQUFFLG1CQUFtQkYsRUFBQyxJQUFHTixHQUFFLFlBQVVRLEtBQUVSLEdBQUUsVUFBUyxjQUFZTyxPQUFJSixLQUFFLEtBQUssa0JBQWtCLEVBQUMsWUFBV0gsR0FBRSxZQUFXLGFBQVlHLElBQUUsV0FBVUcsSUFBRSxhQUFZRSxJQUFFLGNBQWFDLEdBQUMsQ0FBQyxJQUFHLGVBQWFGLE9BQUlILEtBQUUsS0FBSyxtQkFBbUIsRUFBQyxZQUFXSixHQUFFLFlBQVcsV0FBVU0sSUFBRSxhQUFZRSxJQUFFLEdBQUUsS0FBSyxZQUFXLENBQUMsSUFBRyxZQUFVRCxJQUFFO0FBQUMsY0FBSUcsS0FBRUwsR0FBRSxLQUFLLE1BQU0sS0FBSU0sS0FBRVgsR0FBRSxZQUFVQSxHQUFFLFlBQVU7QUFBRyxlQUFLLGVBQWUsRUFBQyxTQUFRUSxJQUFFLE9BQU0sTUFBTSxRQUFRRSxFQUFDLElBQUVWLEdBQUUsZUFBYVUsR0FBRSxTQUFPQSxHQUFFVixHQUFFLFlBQVksSUFBRVUsR0FBRSxDQUFDLElBQUVBLElBQUUsT0FBTVYsR0FBRSxRQUFNQSxHQUFFLFFBQU0sUUFBTyxRQUFPQSxHQUFFLFNBQU9BLEdBQUUsU0FBTyxRQUFPLGNBQWFBLEdBQUUsY0FBYSxXQUFVLFVBQVUsT0FBT0MsR0FBRSxRQUFRLElBQUksRUFBRSxPQUFPRCxHQUFFLGVBQWEsQ0FBQyxFQUFFLE9BQU9XLEVBQUMsRUFBQyxDQUFDLEdBQUVULEtBQUUsZUFBZSxPQUFPRCxHQUFFLFFBQVEsSUFBSSxFQUFFLE9BQU9ELEdBQUUsZUFBYSxDQUFDLEVBQUUsT0FBT1csSUFBRSxHQUFHO0FBQUEsUUFBQztBQUFNLFVBQUFULEtBQUUsZUFBYUssS0FBRUgsS0FBRSxjQUFZRyxLQUFFSixLQUFFTTtBQUFFLGVBQU9ULEdBQUUsVUFBUUUsS0FBRU8sS0FBR1A7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksZUFBYyxPQUFNLFNBQVNGLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUs7QUFBRSxlQUFPLE1BQU0sUUFBUUEsR0FBRSxPQUFPLEtBQUssSUFBSSxJQUFFQSxHQUFFLE9BQU8sS0FBSyxLQUFLRCxFQUFDLElBQUVDLEdBQUUsT0FBTyxLQUFLO0FBQUEsTUFBSSxFQUFDLEdBQUUsRUFBQyxLQUFJLGlCQUFnQixPQUFNLFdBQVU7QUFBQyxZQUFJRCxLQUFFLEtBQUssR0FBRUMsS0FBRUQsR0FBRSxRQUFPRSxLQUFFLEtBQUssTUFBS0MsS0FBRSxDQUFDO0FBQUUsZUFBT0gsR0FBRSxRQUFRLGNBQVksV0FBU0EsR0FBRSxPQUFPLE9BQU8sS0FBSyxXQUFXLEVBQUUsT0FBSyxNQUFNLFFBQVFBLEdBQUUsUUFBUSxPQUFPLE1BQU0sSUFBRUcsS0FBRUgsR0FBRSxRQUFRLE9BQU8sU0FBT0csR0FBRSxLQUFLSCxHQUFFLFFBQVEsT0FBTyxNQUFNLElBQUUsTUFBTSxRQUFRQSxHQUFFLFFBQVEsS0FBSyxNQUFNLElBQUVHLEtBQUVILEdBQUUsUUFBUSxLQUFLLFNBQU9HLEdBQUUsS0FBS0gsR0FBRSxRQUFRLEtBQUssTUFBTSxJQUFFLFdBQVNDLEdBQUUsTUFBTSxPQUFLLE1BQU0sUUFBUUQsR0FBRSxRQUFRLE9BQU8sTUFBTSxJQUFFRyxLQUFFSCxHQUFFLFFBQVEsT0FBTyxTQUFPRyxHQUFFLEtBQUtILEdBQUUsUUFBUSxPQUFPLE1BQU0sSUFBRSxNQUFNLFFBQVFBLEdBQUUsUUFBUSxLQUFLLE1BQU0sSUFBRUcsS0FBRUgsR0FBRSxRQUFRLEtBQUssU0FBT0csR0FBRSxLQUFLSCxHQUFFLFFBQVEsS0FBSyxNQUFNLEdBQUUsV0FBU0UsR0FBRSxlQUFhQyxLQUFFLENBQUMsR0FBRSxNQUFNLFFBQVFELEdBQUUsVUFBVSxJQUFFQyxLQUFFRCxHQUFFLFdBQVcsTUFBTSxJQUFFQyxHQUFFLEtBQUtELEdBQUUsVUFBVSxJQUFHQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxxQkFBb0IsT0FBTSxTQUFTSCxJQUFFO0FBQUMsWUFBSUMsS0FBRUQsR0FBRSxZQUFXRSxLQUFFRixHQUFFLGFBQVlHLEtBQUVILEdBQUUsV0FBVUksS0FBRUosR0FBRSxhQUFZSyxLQUFFTCxHQUFFLGNBQWFNLEtBQUUsS0FBSyxFQUFFLE9BQU87QUFBSyxRQUFBTCxPQUFJSyxLQUFFTDtBQUFHLFlBQUlNLEtBQUUsS0FBSyxNQUFLQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRUMsS0FBRSxNQUFNLFFBQVFILEdBQUUsUUFBUSxXQUFXLElBQUVBLEdBQUUsUUFBUSxZQUFZLEtBQUssV0FBVyxJQUFFQSxHQUFFLFFBQVEsYUFBWUksS0FBRVA7QUFBRSxjQUFNLFFBQVFHLEdBQUUsUUFBUSxLQUFLLElBQUVKLEtBQUUsV0FBU0ksR0FBRSxRQUFRLE1BQU1DLEdBQUUsWUFBWSxJQUFFQyxHQUFFLFlBQVlGLEdBQUUsUUFBUSxNQUFNQyxHQUFFLFlBQVksR0FBRUQsR0FBRSxRQUFRLE9BQU1BLEdBQUUsUUFBUSxRQUFPSSxJQUFFRCxJQUFFTCxFQUFDLElBQUVDLEtBQUVILEtBQUVNLEdBQUUsWUFBWUYsR0FBRSxRQUFRLE9BQU1BLEdBQUUsUUFBUSxPQUFNQSxHQUFFLFFBQVEsUUFBT0ksSUFBRUQsSUFBRUwsRUFBQztBQUFFLGVBQU9GO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHNCQUFxQixPQUFNLFNBQVNGLElBQUU7QUFBQyxZQUFJRSxLQUFFRixHQUFFLFdBQVVHLEtBQUVILEdBQUUsYUFBWUksS0FBRUosR0FBRSxZQUFXSyxLQUFFTCxHQUFFLEdBQUVNLEtBQUUsS0FBSyxFQUFFLE9BQU87QUFBSyxRQUFBRixPQUFJRSxLQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUVBLEVBQUMsR0FBRUYsRUFBQztBQUFHLFlBQUlHLElBQUVDLEtBQUUsS0FBSyxNQUFLQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRUMsS0FBRSxJQUFJLEtBQUVDLEtBQUVMLEdBQUUsU0FBUyxNQUFLTSxLQUFFVixJQUFFVyxLQUFFLFdBQVNQLEdBQUUsU0FBUyxjQUFZSCxLQUFFLE1BQU0sUUFBUUcsR0FBRSxTQUFTLFdBQVcsSUFBRUEsR0FBRSxTQUFTLFlBQVlELEVBQUMsSUFBRUMsR0FBRSxTQUFTO0FBQVksUUFBQU0sR0FBRSxRQUFRLE1BQU0sSUFBRSxPQUFLQyxLQUFFLEVBQUUsbUJBQW1CRCxFQUFDO0FBQUcsWUFBSUUsS0FBRSxXQUFTUixHQUFFLFNBQVMsWUFBVUgsS0FBRSxNQUFNLFFBQVFHLEdBQUUsU0FBUyxTQUFTLElBQUVBLEdBQUUsU0FBUyxVQUFVRCxFQUFDLElBQUVDLEdBQUUsU0FBUztBQUFVLFlBQUcsV0FBU0EsR0FBRSxTQUFTLG9CQUFrQixNQUFJQSxHQUFFLFNBQVMsaUJBQWlCO0FBQU8sVUFBQUMsS0FBRSxXQUFTRCxHQUFFLFNBQVMsUUFBTUksR0FBRSxXQUFXLEtBQUcsV0FBV0osR0FBRSxTQUFTLGNBQWMsR0FBRUosR0FBRSxRQUFRLEtBQUssSUFBRSxLQUFHLEVBQUUsUUFBUUEsRUFBQyxJQUFFQSxFQUFDLElBQUVRLEdBQUUsV0FBVyxXQUFXSixHQUFFLFNBQVMsY0FBYyxHQUFFSixHQUFFLFFBQVEsS0FBSyxJQUFFLEtBQUcsRUFBRSxRQUFRQSxFQUFDLElBQUVBLEVBQUM7QUFBQSxpQkFBVUksR0FBRSxTQUFTLGlCQUFpQkUsR0FBRSxZQUFZLEdBQUU7QUFBQyxjQUFJTyxLQUFFVCxHQUFFLFNBQVMsaUJBQWlCRSxHQUFFLFlBQVk7QUFBRSxVQUFBRCxLQUFFUSxJQUFFQSxHQUFFLFFBQVEsTUFBTSxJQUFFLE9BQUtELEtBQUUsRUFBRSxtQkFBbUJDLEVBQUM7QUFBQSxRQUFFO0FBQU0sVUFBQVIsS0FBRUw7QUFBRSxZQUFHSSxHQUFFLFNBQVMsaUJBQWVNLEtBQUVOLEdBQUUsU0FBUyxlQUFjQSxHQUFFLFNBQVMsZUFBYUMsS0FBRUQsR0FBRSxTQUFTLGFBQVlBLEdBQUUsU0FBUyxlQUFjO0FBQUMsY0FBSVcsS0FBRUw7QUFBRSxVQUFBQSxLQUFFTCxJQUFFQSxLQUFFVTtBQUFBLFFBQUM7QUFBQyxlQUFPTCxHQUFFLFFBQVEsS0FBSyxJQUFFLE9BQUtBLEtBQUUsRUFBRSxRQUFRQSxFQUFDLElBQUdMLEdBQUUsUUFBUSxLQUFLLElBQUUsT0FBS0EsS0FBRSxFQUFFLFFBQVFBLEVBQUMsSUFBR0UsR0FBRSxhQUFhRSxJQUFFQyxJQUFFTCxJQUFFTSxJQUFFQyxJQUFFTixHQUFFLE1BQUtGLEdBQUUsU0FBUyxPQUFNQSxHQUFFLFNBQVMsWUFBV0QsRUFBQztBQUFBLE1BQUMsRUFBQyxDQUFDLENBQUMsR0FBRUw7QUFBQSxJQUFDLEVBQUU7QUFBaHZqRCxRQUFrdmpELElBQUUsV0FBVTtBQUFDLGVBQVNBLEdBQUVDLElBQUVDLElBQUU7QUFBQyxVQUFFLE1BQUtGLEVBQUMsR0FBRSxLQUFLLE1BQUlDLElBQUUsS0FBSyxJQUFFQSxHQUFFO0FBQUEsTUFBQztBQUFDLGFBQU8sRUFBRUQsSUFBRSxDQUFDLEVBQUMsS0FBSSx1QkFBc0IsT0FBTSxXQUFVO0FBQUMsWUFBSUEsS0FBRSxLQUFLO0FBQUUsWUFBR0EsR0FBRSxRQUFRLFFBQVEsT0FBSyxNQUFNLFFBQVFBLEdBQUUsT0FBTyxRQUFRLElBQUksSUFBRUEsR0FBRSxPQUFPLFFBQVEsT0FBSyxDQUFDQSxHQUFFLE9BQU8sUUFBUSxJQUFJLEdBQUVBLEdBQUUsUUFBUSxRQUFRLEtBQUssU0FBTyxHQUFFO0FBQUMsY0FBR0EsR0FBRSxRQUFRLFFBQVEsS0FBSyxTQUFPQSxHQUFFLFFBQVEsT0FBTyxTQUFPO0FBQUUscUJBQVFDLEtBQUUsR0FBRUEsTUFBR0QsR0FBRSxRQUFRLE9BQU8sUUFBT0M7QUFBSSx5QkFBU0QsR0FBRSxRQUFRLFFBQVEsS0FBS0MsRUFBQyxLQUFHRCxHQUFFLFFBQVEsUUFBUSxLQUFLLEtBQUtBLEdBQUUsUUFBUSxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQUEsUUFBQztBQUFNLFVBQUFBLEdBQUUsUUFBUSxRQUFRLE9BQUtBLEdBQUUsT0FBTyxPQUFPLElBQUssU0FBU0MsSUFBRTtBQUFDLG1CQUFPRCxHQUFFLE9BQU8sUUFBUTtBQUFBLFVBQUksQ0FBRTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxvQkFBbUIsT0FBTSxTQUFTQSxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsSUFBRUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxLQUFHLFVBQVUsQ0FBQyxHQUFFQyxLQUFFLEtBQUssR0FBRUMsS0FBRU4sSUFBRU8sS0FBRVIsSUFBRVMsS0FBRSxNQUFLQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRUMsS0FBRUwsR0FBRSxPQUFPLFFBQVEsWUFBVUEsR0FBRSxPQUFPLFFBQVEsU0FBUztBQUFPLGFBQUlBLEdBQUUsUUFBUSxRQUFRLEtBQUtMLEVBQUMsSUFBRSxLQUFHSSxNQUFHTSxRQUFLRixLQUFFQyxHQUFFLE1BQU0sRUFBQyxPQUFNTCxNQUFHTSxLQUFFLEtBQUcsNEJBQTJCLENBQUMsR0FBRyxLQUFLLGFBQVksMEJBQTBCLE9BQU9MLEdBQUUsUUFBUSxNQUFLLEdBQUcsQ0FBQyxHQUFFLE1BQU0sUUFBUUUsR0FBRSxDQUFDO0FBQUUsbUJBQVFJLEtBQUUsR0FBRUEsS0FBRUosR0FBRSxFQUFFLFFBQU9JLE1BQUk7QUFBQyxnQkFBSUMsS0FBRVg7QUFBRSxrQkFBSUEsTUFBRyxNQUFJVSxPQUFJQyxLQUFFLElBQUcsTUFBSVgsTUFBRyxNQUFJVSxPQUFJQyxLQUFFO0FBQUcsZ0JBQUlDLEtBQUU7QUFBb0IsZ0JBQUcsV0FBU1IsR0FBRSxPQUFPLE1BQU0sUUFBTSxXQUFTQSxHQUFFLE9BQU8sTUFBTSxRQUFNQSxHQUFFLFFBQVEsZUFBYUEsR0FBRSxPQUFPLFFBQVEsY0FBWVEsTUFBRyx3QkFBdUIsTUFBTSxRQUFRUixHQUFFLE9BQU8sUUFBUSxJQUFJLElBQUVBLEdBQUUsUUFBUSxRQUFRLEtBQUtMLEVBQUMsSUFBRSxJQUFFSyxHQUFFLE9BQU8sUUFBUSxPQUFLLE1BQUlELE1BQUdNLElBQUU7QUFBQyxnQkFBRSxTQUFTSCxHQUFFLEVBQUVJLEVBQUMsQ0FBQyxJQUFFRSxNQUFHLEtBQUssT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFFQSxLQUFFO0FBQXVCLGtCQUFJQyxLQUFFLEtBQUssZ0JBQWdCLEVBQUMsVUFBU0QsSUFBRSxhQUFZYixJQUFFLGdCQUFlWSxHQUFDLENBQUM7QUFBRSxjQUFBUCxHQUFFLE9BQU8sT0FBT0MsRUFBQyxFQUFFLEtBQUtNLEVBQUMsTUFBSVAsR0FBRSxPQUFPLE9BQU9DLEVBQUMsRUFBRSxLQUFLTSxFQUFDLEVBQUUsY0FBWUUsR0FBRSxpQkFBZVQsR0FBRSxPQUFPLE9BQU9DLEVBQUMsRUFBRSxLQUFLTSxFQUFDLEVBQUUsWUFBV1AsR0FBRSxPQUFPLE9BQU9DLEVBQUMsRUFBRSxLQUFLTSxFQUFDLEVBQUUsZ0JBQWNFLEdBQUUsbUJBQWlCVCxHQUFFLE9BQU8sT0FBT0MsRUFBQyxFQUFFLEtBQUtNLEVBQUMsRUFBRSxlQUFjVixPQUFJWSxHQUFFLFFBQU1aLE1BQUlLLEdBQUUsRUFBRUksRUFBQyxJQUFFLEtBQUdKLEdBQUUsRUFBRUksRUFBQyxJQUFFTixHQUFFLFFBQVEsYUFBV0UsR0FBRSxFQUFFSSxFQUFDLElBQUUsQ0FBQ04sR0FBRSxRQUFRLFFBQVEsZUFBYUUsR0FBRSxFQUFFSSxFQUFDLElBQUVOLEdBQUUsUUFBUSxhQUFXQSxHQUFFLFFBQVEsUUFBUSxpQkFBZVMsR0FBRSxRQUFNLEtBQUlYLEtBQUVNLEdBQUUsV0FBV0YsR0FBRSxFQUFFSSxFQUFDLEdBQUVKLEdBQUUsRUFBRUksRUFBQyxHQUFFRyxFQUFDLEdBQUcsS0FBSyxPQUFNRixFQUFDLEdBQUVULEdBQUUsS0FBSyxLQUFJUyxFQUFDLEdBQUVULEdBQUUsS0FBSyxTQUFRSCxFQUFDLEdBQUVHLEdBQUUsS0FBSyxhQUFhLHVCQUFzQlcsR0FBRSxLQUFLLEdBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFLG1CQUFtQlgsSUFBRUgsSUFBRVksRUFBQyxHQUFFLEtBQUssVUFBVVQsRUFBQyxHQUFFSyxNQUFHQSxHQUFFLElBQUlMLEVBQUM7QUFBQSxZQUFDO0FBQU0seUJBQVNFLEdBQUUsUUFBUSxZQUFZTCxFQUFDLE1BQUlLLEdBQUUsUUFBUSxZQUFZTCxFQUFDLElBQUUsQ0FBQyxJQUFHSyxHQUFFLFFBQVEsWUFBWUwsRUFBQyxFQUFFLEtBQUssQ0FBQ08sR0FBRSxFQUFFSSxFQUFDLEdBQUVKLEdBQUUsRUFBRUksRUFBQyxDQUFDLENBQUM7QUFBQSxVQUFDO0FBQUMsZUFBT0g7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksbUJBQWtCLE9BQU0sU0FBU1QsSUFBRTtBQUFDLFlBQUlDLEtBQUVELEdBQUUsVUFBU0UsS0FBRUYsR0FBRSxhQUFZRyxLQUFFSCxHQUFFLGdCQUFlSSxLQUFFLFdBQVNELEtBQUUsT0FBS0EsSUFBRUUsS0FBRUwsR0FBRSxjQUFhTSxLQUFFLFdBQVNELEtBQUUsT0FBS0EsSUFBRUUsS0FBRSxLQUFLLEdBQUVDLEtBQUUsS0FBSyxlQUFlTixFQUFDLEdBQUVPLEtBQUVGLEdBQUUsUUFBUSxRQUFRLEtBQUtMLEVBQUMsR0FBRVEsS0FBRUgsR0FBRSxPQUFPO0FBQVEsZUFBTyxTQUFPSCxNQUFHTSxHQUFFLFNBQVMsVUFBUUEsR0FBRSxTQUFTLElBQUssU0FBU1YsSUFBRTtBQUFDLFVBQUFBLEdBQUUsZ0JBQWNFLE1BQUdGLEdBQUUsbUJBQWlCSSxPQUFJSSxHQUFFLG1CQUFpQlIsR0FBRSxhQUFZUSxHQUFFLGlCQUFlUixHQUFFLFdBQVVTLEtBQUVULEdBQUUsTUFBS1EsR0FBRSxhQUFXUixHQUFFO0FBQUEsUUFBTSxDQUFFLEdBQUUsRUFBQyxPQUFNLFNBQU9NLEtBQUVHLEtBQUVILElBQUUsU0FBUUksR0FBRSxRQUFPLE9BQU0sTUFBTSxRQUFRQSxHQUFFLEtBQUssSUFBRUEsR0FBRSxNQUFNUixFQUFDLElBQUVRLEdBQUUsT0FBTSxRQUFPLE1BQU0sUUFBUUEsR0FBRSxNQUFNLElBQUVBLEdBQUUsT0FBT1IsRUFBQyxJQUFFUSxHQUFFLFFBQU8sa0JBQWlCLE1BQU0sUUFBUUEsR0FBRSxXQUFXLElBQUVBLEdBQUUsWUFBWVIsRUFBQyxJQUFFUSxHQUFFLGFBQVksa0JBQWlCRixHQUFFLGtCQUFpQixnQkFBZUEsR0FBRSxnQkFBZSxPQUFNQSxHQUFFLGVBQWEsTUFBTSxRQUFRRSxHQUFFLEtBQUssSUFBRUEsR0FBRSxNQUFNUixFQUFDLElBQUVRLEdBQUUsUUFBTyxPQUFNVCxJQUFFLG9CQUFtQixNQUFNLFFBQVFTLEdBQUUsYUFBYSxJQUFFQSxHQUFFLGNBQWNSLEVBQUMsSUFBRVEsR0FBRSxlQUFjLHNCQUFxQixNQUFNLFFBQVFBLEdBQUUsZUFBZSxJQUFFQSxHQUFFLGdCQUFnQlIsRUFBQyxJQUFFUSxHQUFFLGlCQUFnQixrQkFBaUIsTUFBTSxRQUFRQSxHQUFFLFdBQVcsSUFBRUEsR0FBRSxZQUFZUixFQUFDLElBQUVRLEdBQUUsYUFBWSxhQUFZUixHQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGFBQVksT0FBTSxTQUFTRixJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEdBQUVDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRztBQUFFLFFBQUFGLEdBQUUsS0FBSyxpQkFBaUIsY0FBYUUsR0FBRSxlQUFlLEtBQUssS0FBSyxLQUFJRixFQUFDLENBQUMsR0FBRUEsR0FBRSxLQUFLLGlCQUFpQixjQUFhRSxHQUFFLGVBQWUsS0FBSyxLQUFLLEtBQUlGLEVBQUMsQ0FBQyxHQUFFQSxHQUFFLEtBQUssaUJBQWlCLGFBQVlFLEdBQUUsY0FBYyxLQUFLLEtBQUssS0FBSUYsRUFBQyxDQUFDLEdBQUVBLEdBQUUsS0FBSyxpQkFBaUIsU0FBUUMsR0FBRSxPQUFPLFFBQVEsT0FBTyxHQUFFRCxHQUFFLEtBQUssaUJBQWlCLFlBQVdDLEdBQUUsT0FBTyxRQUFRLFVBQVUsR0FBRUQsR0FBRSxLQUFLLGlCQUFpQixjQUFhRSxHQUFFLGNBQWMsS0FBSyxLQUFLLEtBQUlGLEVBQUMsR0FBRSxFQUFDLFNBQVEsS0FBRSxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGtCQUFpQixPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssR0FBRUMsS0FBRUQsR0FBRSxRQUFRLFFBQVEsUUFBT0UsS0FBRUYsR0FBRSxPQUFPLFFBQVEsZUFBYUEsR0FBRSxPQUFPLFFBQVE7QUFBYSxlQUFNLEVBQUMsa0JBQWlCLE1BQU0sUUFBUUUsRUFBQyxJQUFFQSxHQUFFSCxFQUFDLElBQUVHLElBQUUsZ0JBQWUsTUFBTSxRQUFRRCxFQUFDLElBQUVBLEdBQUVGLEVBQUMsSUFBRUUsR0FBQztBQUFBLE1BQUMsRUFBQyxDQUFDLENBQUMsR0FBRUY7QUFBQSxJQUFDLEVBQUU7QUFBcG1yRCxRQUFzbXJELElBQUUsV0FBVTtBQUFDLGVBQVNBLEdBQUVDLElBQUU7QUFBQyxVQUFFLE1BQUtELEVBQUMsR0FBRSxLQUFLLE1BQUlDLElBQUUsS0FBSyxJQUFFQSxHQUFFLEdBQUUsS0FBSyxjQUFZLEtBQUssRUFBRSxPQUFPLE1BQU0sV0FBVyxTQUFRLEtBQUssY0FBWSxLQUFLLGVBQWEsS0FBSyxFQUFFLE9BQU8sTUFBTSxXQUFXLGlCQUFpQjtBQUFBLE1BQU87QUFBQyxhQUFPLEVBQUVELElBQUUsQ0FBQyxFQUFDLEtBQUksUUFBTyxPQUFNLFNBQVNBLElBQUVDLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssR0FBRUMsS0FBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLEdBQUVDLEtBQUVILEdBQUUsV0FBVUksS0FBRUosR0FBRSxXQUFVSyxLQUFFTCxHQUFFLFFBQU9NLEtBQUVOLEdBQUUsVUFBU08sS0FBRUwsR0FBRSxNQUFNLEVBQUMsT0FBTSwrQ0FBK0MsT0FBT0QsR0FBRSxPQUFPLE1BQU0sSUFBSSxFQUFDLENBQUM7QUFBRSxZQUFHTSxHQUFFLEtBQUssYUFBWSwwQkFBMEIsT0FBT04sR0FBRSxRQUFRLE1BQUssR0FBRyxDQUFDLEdBQUUsTUFBTSxRQUFRRyxHQUFFLENBQUM7QUFBRSxtQkFBUUksS0FBRSxHQUFFQSxLQUFFSixHQUFFLEVBQUUsUUFBT0ksTUFBSTtBQUFDLGdCQUFJQyxLQUFFVixLQUFFLEdBQUVXLEtBQUU7QUFBRyxrQkFBSVgsTUFBRyxNQUFJUyxPQUFJQyxLQUFFLElBQUcsTUFBSVYsTUFBRyxNQUFJUyxPQUFJQyxLQUFFO0FBQUcsZ0JBQUlFLEtBQUUsR0FBRUMsS0FBRVgsR0FBRSxRQUFRLFFBQVEsS0FBS0UsRUFBQztBQUFFLGdCQUFHRSxPQUFJLElBQUUsR0FBRTtBQUFDLGtCQUFJUSxLQUFFWixHQUFFLE9BQU8sWUFBWTtBQUFPLGNBQUFXLEtBQUVYLEdBQUUsUUFBUSxRQUFRRSxFQUFDLEVBQUVNLEVBQUMsR0FBRUksR0FBRSxhQUFXRCxNQUFHUCxLQUFHUSxHQUFFLG1CQUFpQkQsS0FBRUMsR0FBRSxvQkFBa0JELEtBQUVDLEdBQUUsa0JBQWlCQSxHQUFFLG1CQUFpQkQsS0FBRUMsR0FBRSxvQkFBa0JELEtBQUVDLEdBQUU7QUFBQSxZQUFnQjtBQUFDLFlBQUFaLEdBQUUsT0FBTyxNQUFNLFdBQVcsWUFBVVUsS0FBRUM7QUFBRyxnQkFBSUUsS0FBRVYsR0FBRSxFQUFFSSxFQUFDLEdBQUVPLEtBQUVYLEdBQUUsRUFBRUksRUFBQztBQUFFLGdCQUFHRyxLQUFFQSxNQUFHLEdBQUUsU0FBT0ksTUFBRyxXQUFTZCxHQUFFLFFBQVEsT0FBT0UsRUFBQyxFQUFFTSxFQUFDLE1BQUlDLEtBQUUsUUFBSUEsSUFBRTtBQUFDLGtCQUFJTSxLQUFFLEtBQUssVUFBVUYsSUFBRUMsSUFBRUosSUFBRUMsSUFBRVQsSUFBRU0sSUFBRVYsRUFBQztBQUFFLGNBQUFRLEdBQUUsSUFBSVMsRUFBQztBQUFBLFlBQUM7QUFBQyxZQUFBVixHQUFFLElBQUlDLEVBQUM7QUFBQSxVQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGFBQVksT0FBTSxTQUFTVCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEdBQUVDLEtBQUVKLElBQUVLLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRUMsS0FBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLEdBQUVDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRUMsS0FBRUYsR0FBRSxnQkFBZ0IsRUFBQyxVQUFTLHFCQUFvQixhQUFZSixJQUFFLGdCQUFlSCxJQUFFLGNBQWEsYUFBV0UsR0FBRSxPQUFPLE1BQU0sUUFBTUEsR0FBRSxRQUFRLGVBQWFBLEdBQUUsT0FBTyxPQUFPSCxFQUFDLEtBQUcsYUFBV0csR0FBRSxPQUFPLE9BQU9ILEVBQUMsRUFBRSxPQUFLRCxLQUFFLEtBQUksQ0FBQztBQUFFLFFBQUFBLEtBQUVXLEdBQUU7QUFBTSxZQUFJQyxJQUFFQyxLQUFFTCxHQUFFLFNBQVMsRUFBQyxjQUFhUCxJQUFFLGdCQUFlQyxJQUFFLE9BQU1TLEdBQUUsZ0JBQWUsY0FBYSxxQkFBb0IsT0FBTVAsR0FBRSxRQUFRLE9BQU9ILEVBQUMsRUFBRUUsRUFBQyxFQUFDLENBQUM7QUFBRSxZQUFHLGFBQVdRLEdBQUUsUUFBTUMsS0FBRUYsR0FBRSxXQUFXWCxFQUFDLElBQUUsYUFBV1ksR0FBRSxTQUFPLFdBQVNBLEdBQUUsVUFBUUMsS0FBRUYsR0FBRSxTQUFTLEdBQUUsR0FBRUMsR0FBRSxRQUFNQSxHQUFFLG1CQUFpQixHQUFFQSxHQUFFLFNBQU9BLEdBQUUsbUJBQWlCLEdBQUVBLEdBQUUsT0FBTyxJQUFHUCxHQUFFLE9BQU8sT0FBT0MsRUFBQyxFQUFFLEtBQUtILEVBQUMsS0FBR0UsR0FBRSxPQUFPLE9BQU9DLEVBQUMsRUFBRSxLQUFLSCxFQUFDLEVBQUUsY0FBWVcsS0FBRVQsR0FBRSxPQUFPLE9BQU9DLEVBQUMsRUFBRSxLQUFLSCxFQUFDLEVBQUUsWUFBV1UsR0FBRSxLQUFLLEVBQUMsR0FBRWYsS0FBRWMsR0FBRSxRQUFNLElBQUVBLEdBQUUsbUJBQWlCLEdBQUUsR0FBRWIsS0FBRWEsR0FBRSxTQUFPLElBQUVBLEdBQUUsbUJBQWlCLEdBQUUsSUFBR2QsSUFBRSxJQUFHQyxJQUFFLE1BQUtlLElBQUUsZ0JBQWVGLEdBQUUsa0JBQWlCLFFBQU9BLEdBQUUsa0JBQWlCLEdBQUVYLElBQUUsZ0JBQWVXLEdBQUUsa0JBQWlCLG9CQUFtQkEsR0FBRSxzQkFBcUIsa0JBQWlCQSxHQUFFLG1CQUFrQixDQUFDLEdBQUVQLEdBQUUsT0FBTyxNQUFNLFdBQVcsU0FBUTtBQUFDLGNBQUlhLEtBQUViLEdBQUUsT0FBTyxNQUFNO0FBQVcsVUFBQUcsR0FBRSxXQUFXSyxJQUFFSyxJQUFFaEIsRUFBQztBQUFBLFFBQUM7QUFBQyxZQUFHLENBQUMsS0FBSyxlQUFhRyxHQUFFLFFBQVEsZUFBYUEsR0FBRSxRQUFRO0FBQVEsVUFBQUEsR0FBRSxRQUFRLGlCQUFlO0FBQUEsYUFBTztBQUFDLGNBQUljLEtBQUVkLEdBQUUsT0FBTyxNQUFNLFdBQVc7QUFBTSxVQUFBRSxHQUFFLGNBQWNNLElBQUUsR0FBRSxhQUFXRCxHQUFFLFFBQU1YLEtBQUUsRUFBQyxPQUFNVyxHQUFFLE9BQU0sUUFBT0EsR0FBRSxPQUFNLEdBQUVPLElBQUVkLEdBQUUsUUFBUSxRQUFRLFdBQVU7QUFBQyxtQkFBTyxXQUFZLFdBQVU7QUFBQyxjQUFBRSxHQUFFLG1CQUFtQk0sRUFBQztBQUFBLFlBQUMsR0FBRyxHQUFHO0FBQUEsVUFBQyxDQUFFO0FBQUEsUUFBQztBQUFDLFlBQUdSLEdBQUUsUUFBUSxlQUFhLGFBQVdPLEdBQUU7QUFBTSxjQUFHLEtBQUssYUFBWTtBQUFDLGdCQUFJUSxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxLQUFFbkIsR0FBRSxPQUFPLE1BQU0sV0FBVyxpQkFBaUI7QUFBTSxxQkFBT2tCLEtBQUVsQixHQUFFLFFBQVEsY0FBY0gsRUFBQyxLQUFHRyxHQUFFLFFBQVEsY0FBY0gsRUFBQyxFQUFFRSxFQUFDLE9BQUtnQixLQUFFRyxHQUFFLEdBQUVGLEtBQUVFLEdBQUUsR0FBRUQsS0FBRSxXQUFTQyxHQUFFLElBQUVBLEdBQUUsSUFBRXRCO0FBQUcscUJBQVF3QixLQUFFLEdBQUVBLEtBQUVwQixHQUFFLFFBQVEsZ0JBQWdCLFFBQU9vQjtBQUFJLGNBQUFwQixHQUFFLFFBQVEsZ0JBQWdCb0IsRUFBQyxFQUFFLFVBQVF2QixPQUFJc0IsS0FBRSxHQUFFdkIsS0FBRTtBQUFHLGtCQUFJSCxNQUFHLE1BQUlDLE9BQUlFLEtBQUUsSUFBR00sR0FBRSxjQUFjTSxJQUFFLEVBQUMsSUFBR08sSUFBRSxJQUFHQyxJQUFFLEdBQUVDLEdBQUMsR0FBRSxFQUFDLElBQUd4QixJQUFFLElBQUdDLElBQUUsR0FBRUUsR0FBQyxHQUFFdUIsSUFBRW5CLEdBQUUsUUFBUSxNQUFNO0FBQUEsVUFBQztBQUFNLFlBQUFRLEdBQUUsS0FBSyxFQUFDLEdBQUVaLEdBQUMsQ0FBQztBQUFFLGVBQU9ZLEdBQUUsS0FBSyxFQUFDLEtBQUlWLElBQUUsR0FBRUEsSUFBRSxPQUFNRCxJQUFFLHVCQUFzQkQsR0FBQyxDQUFDLEdBQUVPLEdBQUUsbUJBQW1CSyxJQUFFWCxJQUFFQyxFQUFDLEdBQUVPLEdBQUUsVUFBVUcsRUFBQyxHQUFFQSxHQUFFLEtBQUssVUFBVSxJQUFJLG1CQUFtQixHQUFFQTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxzQkFBcUIsT0FBTSxTQUFTZixJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLO0FBQUUsZUFBTSxFQUFDLEdBQUVELE1BQUcsU0FBU0MsR0FBRSxPQUFPLFdBQVcsTUFBTSxVQUFTLEVBQUUsSUFBRSxFQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFFRDtBQUFBLElBQUMsRUFBRTtBQUF0dnhELFFBQXd2eEQsSUFBRSxXQUFVO0FBQUMsZUFBU0EsR0FBRUMsSUFBRTtBQUFDLFVBQUUsTUFBS0QsRUFBQyxHQUFFLEtBQUssTUFBSUMsSUFBRSxLQUFLLElBQUVBLEdBQUU7QUFBQSxNQUFDO0FBQUMsYUFBTyxFQUFFRCxJQUFFLENBQUMsRUFBQyxLQUFJLHdCQUF1QixPQUFNLFNBQVNBLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssR0FBRUMsS0FBRSxPQUFHQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRSxhQUFhUCxJQUFFSSxFQUFDLEdBQUVJLEtBQUVELEdBQUUsT0FBTUUsS0FBRUYsR0FBRTtBQUFPLFFBQUFSLEtBQUUsTUFBSUEsS0FBRSxJQUFHQSxLQUFFTSxHQUFFLFFBQVEsYUFBV0ksT0FBSVYsS0FBRU0sR0FBRSxRQUFRLGFBQVdJLEtBQUUsSUFBRyxXQUFTSixHQUFFLFFBQVEsZ0JBQWdCSixFQUFDLE1BQUlJLEdBQUUsUUFBUSxnQkFBZ0JKLEVBQUMsSUFBRSxDQUFDLElBQUdJLEdBQUUsUUFBUSxnQkFBZ0JKLEVBQUMsRUFBRSxLQUFLLEVBQUMsR0FBRUgsSUFBRSxHQUFFQyxJQUFFLE9BQU1TLElBQUUsUUFBT0MsR0FBQyxDQUFDO0FBQUUsWUFBSUMsS0FBRUwsR0FBRSxRQUFRLGdCQUFnQkosRUFBQyxFQUFFLFNBQU8sR0FBRVUsS0FBRSxXQUFTTixHQUFFLFFBQVEsMkJBQTJCSixFQUFDLElBQUVJLEdBQUUsUUFBUSwyQkFBMkJKLEVBQUMsRUFBRUksR0FBRSxRQUFRLDJCQUEyQkosRUFBQyxFQUFFLFNBQU8sQ0FBQyxJQUFFO0FBQUUsWUFBRyxXQUFTSSxHQUFFLFFBQVEsZ0JBQWdCSixFQUFDLEVBQUVTLEVBQUMsR0FBRTtBQUFDLGNBQUlFLEtBQUVQLEdBQUUsUUFBUSxnQkFBZ0JKLEVBQUMsRUFBRVUsRUFBQztBQUFFLFdBQUNiLEtBQUVjLEdBQUUsSUFBRUEsR0FBRSxTQUFPYixLQUFFYSxHQUFFLElBQUVBLEdBQUUsVUFBUWIsS0FBRVUsS0FBRUcsR0FBRSxLQUFHZCxLQUFFVSxLQUFFSSxHQUFFLE9BQUtOLEtBQUU7QUFBQSxRQUFHO0FBQUMsZ0JBQU8sTUFBSUosTUFBR0MsUUFBS0csS0FBRSxPQUFJLEVBQUMsR0FBRVIsSUFBRSxHQUFFQyxJQUFFLFdBQVVRLElBQUUsZUFBY0QsR0FBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxpQkFBZ0IsT0FBTSxTQUFTUixJQUFFO0FBQUMsWUFBSUMsS0FBRSxNQUFLQyxLQUFFRixHQUFFLE1BQUtHLEtBQUVILEdBQUUsS0FBSUksS0FBRUosR0FBRSxHQUFFSyxLQUFFTCxHQUFFLEdBQUVNLEtBQUVOLEdBQUUsY0FBYU8sS0FBRVAsR0FBRSxhQUFZUSxLQUFFLFdBQVNELEtBQUUsSUFBRUEsSUFBRUUsS0FBRSxLQUFLLEdBQUVDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFRixHQUFFLE9BQU8sWUFBV0csS0FBRSxHQUFFQyxLQUFFLEdBQUVDLEtBQUVULElBQUVVLEtBQUU7QUFBSyxZQUFHLENBQUNKLEdBQUUsV0FBUyxDQUFDLE1BQU0sUUFBUVIsR0FBRSxDQUFDO0FBQUUsaUJBQU9ZO0FBQUUsUUFBQUEsS0FBRUwsR0FBRSxNQUFNLEVBQUMsT0FBTSx5QkFBd0IsQ0FBQztBQUFFLGlCQUFRTSxLQUFFLEdBQUVBLEtBQUViLEdBQUUsRUFBRSxRQUFPYTtBQUFJLGNBQUdKLEtBQUVULEdBQUUsRUFBRWEsRUFBQyxJQUFFTCxHQUFFLFNBQVFFLEtBQUVWLEdBQUUsRUFBRWEsRUFBQyxJQUFFTCxHQUFFLFVBQVFILElBQUUsQ0FBQyxNQUFNSSxFQUFDLEdBQUU7QUFBQyxrQkFBSVAsTUFBRyxNQUFJVyxPQUFJRixLQUFFLElBQUcsTUFBSVQsTUFBRyxNQUFJVyxPQUFJRixLQUFFO0FBQUcsZ0JBQUlHLEtBQUVSLEdBQUUsUUFBUSxPQUFPTCxFQUFDLEVBQUVVLEVBQUM7QUFBRSw0QkFBY1osT0FBSWUsS0FBRVgsS0FBRUcsR0FBRSxRQUFRLGlCQUFpQkwsRUFBQyxFQUFFVSxFQUFDLElBQUVMLEdBQUUsUUFBUSxlQUFlTCxFQUFDLEVBQUVVLEVBQUM7QUFBRyxnQkFBSUksS0FBRSxJQUFHRSxLQUFFLFNBQVNwQixJQUFFO0FBQUMscUJBQU9TLEdBQUUsT0FBTyxXQUFXLFVBQVVULElBQUUsRUFBQyxLQUFJQyxHQUFFLEtBQUksYUFBWUcsSUFBRSxnQkFBZVUsSUFBRSxHQUFFTCxHQUFDLENBQUM7QUFBQSxZQUFDO0FBQUUsZ0JBQUcsYUFBV0EsR0FBRSxPQUFPLE1BQU07QUFBSyxjQUFBUyxLQUFFRSxHQUFFSCxLQUFFUixHQUFFLFFBQVEsUUFBUUwsRUFBQyxFQUFFVSxFQUFDLENBQUMsR0FBRUQsS0FBRVYsR0FBRSxFQUFFYSxFQUFDLEdBQUVILEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFLG1CQUFtQkEsSUFBRVQsSUFBRVUsRUFBQyxFQUFFO0FBQUE7QUFBTyx5QkFBU0csT0FBSUMsS0FBRUUsR0FBRUgsRUFBQztBQUFHLGlCQUFLLG1CQUFtQixFQUFDLEdBQUVMLElBQUUsR0FBRUMsSUFBRSxNQUFLSyxJQUFFLEdBQUVkLElBQUUsR0FBRVUsSUFBRSxRQUFPQyxJQUFFLGtCQUFpQixNQUFHLGtCQUFpQk4sR0FBRSxPQUFPLFdBQVUsQ0FBQztBQUFBLFVBQUM7QUFBQyxlQUFPTTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxzQkFBcUIsT0FBTSxTQUFTZixJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEdBQUVDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFSCxHQUFFLEdBQUVJLEtBQUVKLEdBQUUsR0FBRUssS0FBRUwsR0FBRSxHQUFFTSxLQUFFTixHQUFFLEdBQUVPLEtBQUVQLEdBQUUsTUFBS1EsS0FBRVIsR0FBRSxZQUFXUyxLQUFFVCxHQUFFLFVBQVNVLEtBQUVWLEdBQUUsUUFBT1csS0FBRVgsR0FBRSxrQkFBaUJZLEtBQUVaLEdBQUUsT0FBTWEsS0FBRWIsR0FBRSxxQkFBb0JjLEtBQUVkLEdBQUU7QUFBaUIsWUFBRyxFQUFFLE1BQU0sUUFBUUMsR0FBRSxPQUFPLFdBQVcsZUFBZSxLQUFHQSxHQUFFLE9BQU8sV0FBVyxnQkFBZ0IsUUFBUUksRUFBQyxJQUFFLElBQUc7QUFBQyxjQUFJVSxLQUFFLEVBQUMsR0FBRVosSUFBRSxHQUFFQyxJQUFFLGVBQWMsTUFBRyxXQUFVLEtBQUk7QUFBRSxVQUFBVSxPQUFJQyxLQUFFLEtBQUsscUJBQXFCWixJQUFFQyxJQUFFRyxJQUFFRixJQUFFQyxJQUFFTyxJQUFFLFNBQVNGLEdBQUUsTUFBTSxVQUFTLEVBQUUsQ0FBQyxJQUFHVixHQUFFLFFBQVEsV0FBU0UsS0FBRVksR0FBRSxHQUFFWCxLQUFFVyxHQUFFLElBQUdBLEdBQUUsY0FBWVosS0FBRSxNQUFJWSxHQUFFLFVBQVUsU0FBT1osS0FBRUYsR0FBRSxRQUFRLFlBQVVjLEdBQUUsVUFBVSxRQUFNLFFBQU1SLEtBQUU7QUFBSSxjQUFJUyxLQUFFZixHQUFFLFFBQVEsV0FBVyxNQUFNLE9BQU9JLEVBQUM7QUFBRSxZQUFFLFVBQVFKLEdBQUUsT0FBTyxNQUFNLFFBQU0sZUFBYUEsR0FBRSxPQUFPLE1BQU0sU0FBT0EsR0FBRSxPQUFPLFlBQVksSUFBSSxlQUFhQSxHQUFFLE9BQU8sV0FBVyxpQkFBZWUsS0FBRWYsR0FBRSxRQUFRLFdBQVcsTUFBTSxPQUFPSyxFQUFDLElBQUcsY0FBWSxPQUFPVSxPQUFJQSxLQUFFQSxHQUFFLEVBQUMsUUFBT2YsR0FBRSxRQUFRLFFBQU8sYUFBWUksSUFBRSxnQkFBZUMsSUFBRSxHQUFFTCxHQUFDLENBQUMsSUFBR1csT0FBSUksS0FBRUo7QUFBRyxjQUFJSyxLQUFFTixHQUFFLFNBQVFTLEtBQUVULEdBQUU7QUFBUSxjQUFHLFVBQVFWLEdBQUUsT0FBTyxNQUFNLFFBQU0sZUFBYUEsR0FBRSxPQUFPLE1BQU0sU0FBT2dCLEtBQUUsR0FBRUcsS0FBRSxJQUFHTCxHQUFFLGVBQWM7QUFBQyxnQkFBSU0sS0FBRW5CLEdBQUUsU0FBUyxFQUFDLE9BQU0sS0FBSSxRQUFPLFNBQVNTLEdBQUUsTUFBTSxVQUFTLEVBQUUsR0FBRSxHQUFFUixLQUFFYyxJQUFFLEdBQUViLEtBQUVnQixJQUFFLFdBQVVKLElBQUUsWUFBV1IsTUFBR0csR0FBRSxZQUFXLE1BQUtKLElBQUUsVUFBU0UsTUFBR0UsR0FBRSxNQUFNLFVBQVMsWUFBV0EsR0FBRSxNQUFNLFlBQVcsWUFBV0EsR0FBRSxNQUFNLGNBQVksU0FBUSxDQUFDO0FBQUUsZ0JBQUdVLEdBQUUsS0FBSyxFQUFDLE9BQU0sd0JBQXVCLElBQUdsQixJQUFFLElBQUdDLEdBQUMsQ0FBQyxHQUFFTyxHQUFFLFdBQVcsU0FBUTtBQUFDLGtCQUFJVyxLQUFFWCxHQUFFO0FBQVcsa0JBQUksRUFBRSxLQUFLLEdBQUcsRUFBRSxXQUFXVSxJQUFFQyxFQUFDO0FBQUEsWUFBQztBQUFDLFlBQUFaLEdBQUUsSUFBSVcsRUFBQyxHQUFFLFdBQVNwQixHQUFFLFFBQVEsMkJBQTJCSSxFQUFDLE1BQUlKLEdBQUUsUUFBUSwyQkFBMkJJLEVBQUMsSUFBRSxDQUFDLElBQUdKLEdBQUUsUUFBUSwyQkFBMkJJLEVBQUMsRUFBRSxLQUFLQyxFQUFDO0FBQUEsVUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksNEJBQTJCLE9BQU0sU0FBU04sSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxHQUFFQyxLQUFFRCxHQUFFLE9BQU8sV0FBVyxZQUFXRSxLQUFFRCxHQUFFLFNBQVFFLEtBQUVGLEdBQUUsVUFBUSxHQUFFRyxLQUFFTCxHQUFFLE9BQU1NLEtBQUVOLEdBQUUsUUFBT08sS0FBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsU0FBU1AsR0FBRSxJQUFFRyxJQUFFSCxHQUFFLElBQUVJLEtBQUUsR0FBRUMsS0FBRSxJQUFFRixJQUFFRyxLQUFFRixJQUFFRixHQUFFLGNBQWEsa0JBQWdCRCxHQUFFLE9BQU8sTUFBTSxhQUFXLFNBQU9BLEdBQUUsT0FBTyxNQUFNLFlBQVdDLEdBQUUsU0FBUUEsR0FBRSxhQUFZQSxHQUFFLFdBQVc7QUFBRSxRQUFBQSxHQUFFLFdBQVcsV0FBUyxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsV0FBV0ssSUFBRUwsR0FBRSxVQUFVO0FBQUUsZUFBT0s7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksd0JBQXVCLE9BQU0sV0FBVTtBQUFDLFlBQUlSLEtBQUUsS0FBSztBQUFFLFlBQUcsYUFBV0EsR0FBRSxPQUFPLE1BQU07QUFBSyxtQkFBUUMsS0FBRUQsR0FBRSxRQUFRLElBQUksT0FBTyxpQkFBaUIsNkJBQTZCLEdBQUVFLEtBQUUsR0FBRUEsS0FBRUQsR0FBRSxRQUFPQyxNQUFJO0FBQUMsZ0JBQUlDLEtBQUVGLEdBQUVDLEVBQUMsR0FBRUUsS0FBRUQsR0FBRSxRQUFRLEdBQUVFLEtBQUU7QUFBSyxnQkFBR0QsR0FBRSxTQUFPQSxHQUFFLFdBQVNDLEtBQUUsS0FBSyx5QkFBeUJGLElBQUVDLEVBQUMsSUFBR0MsSUFBRTtBQUFDLGNBQUFGLEdBQUUsV0FBVyxhQUFhRSxHQUFFLE1BQUtGLEVBQUM7QUFBRSxrQkFBSUcsS0FBRUgsR0FBRSxhQUFhLE1BQU07QUFBRSxjQUFBSCxHQUFFLE9BQU8sTUFBTSxXQUFXLFdBQVMsQ0FBQ0EsR0FBRSxRQUFRLFdBQVMsQ0FBQ0EsR0FBRSxRQUFRLGNBQVlLLEdBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxNQUFLQyxHQUFDLENBQUMsSUFBRUQsR0FBRSxLQUFLLEVBQUMsTUFBS0MsR0FBQyxDQUFDLEdBQUVILEdBQUUsYUFBYSxRQUFPSCxHQUFFLE9BQU8sV0FBVyxXQUFXLFNBQVM7QUFBQSxZQUFDO0FBQUEsVUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxnQkFBZSxPQUFNLFdBQVU7QUFBQyxpQkFBUUEsS0FBRSxLQUFLLEdBQUVDLEtBQUVELEdBQUUsUUFBUSxJQUFJLE9BQU8saUJBQWlCLHdCQUF3QixHQUFFRSxLQUFFRixHQUFFLFFBQVEsSUFBSSxPQUFPLGNBQWMsb0NBQW9DLEdBQUVHLEtBQUUsR0FBRUEsS0FBRUYsR0FBRSxRQUFPRTtBQUFJLFVBQUFELE1BQUdBLEdBQUUsYUFBYUQsR0FBRUUsRUFBQyxHQUFFRCxHQUFFLFdBQVc7QUFBQSxNQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUVGO0FBQUEsSUFBQyxFQUFFO0FBQXprNkQsUUFBMms2RCxJQUFFLFdBQVU7QUFBQyxlQUFTQSxHQUFFQyxJQUFFO0FBQUMsVUFBRSxNQUFLRCxFQUFDLEdBQUUsS0FBSyxNQUFJQyxJQUFFLEtBQUssSUFBRUEsR0FBRSxHQUFFLEtBQUssc0JBQW9CO0FBQUEsTUFBMkI7QUFBQyxhQUFPLEVBQUVELElBQUUsQ0FBQyxFQUFDLEtBQUksbUJBQWtCLE9BQU0sV0FBVTtBQUFDLGVBQU8sS0FBSyxFQUFFLFFBQVEsSUFBSSxPQUFPLHVCQUF1QixtQkFBbUI7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksbUJBQWtCLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxFQUFFLFFBQVEsSUFBSSxPQUFPLGNBQWMsb0RBQW9ELE9BQU8sRUFBRSxhQUFhQSxFQUFDLEdBQUUsSUFBSSxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGtCQUFpQixPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssZ0JBQWdCRCxFQUFDLEdBQUVFLEtBQUUsU0FBU0QsR0FBRSxhQUFhLGdCQUFnQixHQUFFLEVBQUU7QUFBRSxlQUFNLEVBQUMsVUFBU0EsR0FBRSxVQUFVLFNBQVMsNkJBQTZCLEdBQUUsV0FBVUMsR0FBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSw2QkFBNEIsT0FBTSxTQUFTRixJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLO0FBQUUsaUJBQVNDLEdBQUVELElBQUU7QUFBQyxtQkFBUUMsS0FBRSxHQUFFQSxLQUFFRCxHQUFFLFFBQU9DO0FBQUksWUFBQUQsR0FBRUMsRUFBQyxFQUFFLFVBQVFGLE1BQUdELEdBQUUsS0FBSyxVQUFVLElBQUksNkJBQTZCO0FBQUEsUUFBQztBQUFDLFFBQUFHLEdBQUVELEdBQUUsUUFBUSxlQUFlLEdBQUVDLEdBQUVELEdBQUUsUUFBUSx3QkFBd0I7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksZ0JBQWUsT0FBTSxTQUFTRixJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLGVBQWVELEVBQUM7QUFBRSxlQUFPLEtBQUssSUFBSSxPQUFPLGNBQWMsaUJBQWlCQyxHQUFFLFdBQVVBLEdBQUUsUUFBUSxHQUFFQSxHQUFFO0FBQUEsTUFBUSxFQUFDLEdBQUUsRUFBQyxLQUFJLGNBQWEsT0FBTSxTQUFTRCxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLGVBQWVELEVBQUM7QUFBRSxRQUFBQyxHQUFFLFlBQVUsS0FBSyxJQUFJLE9BQU8sY0FBYyxpQkFBaUJBLEdBQUUsV0FBVSxJQUFFO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGNBQWEsT0FBTSxTQUFTRCxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLGVBQWVELEVBQUM7QUFBRSxRQUFBQyxHQUFFLFlBQVUsS0FBSyxJQUFJLE9BQU8sY0FBYyxpQkFBaUJBLEdBQUUsV0FBVSxLQUFFO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGVBQWMsT0FBTSxXQUFVO0FBQUMsWUFBSUQsS0FBRSxFQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLE1BQUksVUFBVSxDQUFDLEdBQUVDLEtBQUUsRUFBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxNQUFJLFVBQVUsQ0FBQyxHQUFFQyxLQUFFLEVBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsTUFBSSxVQUFVLENBQUMsR0FBRUMsS0FBRSxLQUFLLEdBQUVDLEtBQUUsRUFBRSxNQUFNRCxHQUFFLFFBQVEsYUFBYTtBQUFFLFFBQUFBLEdBQUUsUUFBUSxnQkFBYyxDQUFDLEdBQUVELE1BQUdDLEdBQUUsUUFBUSxrQkFBZ0IsQ0FBQyxHQUFFQSxHQUFFLFFBQVEsMkJBQXlCLENBQUMsR0FBRUEsR0FBRSxRQUFRLHlCQUF1QixDQUFDLEdBQUVBLEdBQUUsUUFBUSxrQ0FBZ0MsQ0FBQyxLQUFHQyxLQUFFLEtBQUsscUJBQXFCQSxFQUFDLEdBQUVELEdBQUUsT0FBTyxTQUFPQyxJQUFFSixPQUFJQyxPQUFJRSxHQUFFLFFBQVEsU0FBTyxPQUFHLEtBQUssSUFBSSxjQUFjLHdCQUF3QixJQUFHLEtBQUssSUFBSSxjQUFjLGNBQWNDLElBQUVELEdBQUUsT0FBTyxNQUFNLFdBQVcsaUJBQWlCLE9BQU87QUFBQSxNQUFFLEVBQUMsR0FBRSxFQUFDLEtBQUksd0JBQXVCLE9BQU0sU0FBU0gsSUFBRTtBQUFDLGlCQUFRQyxLQUFFLEtBQUssR0FBRUMsS0FBRSxHQUFFQSxLQUFFRixHQUFFLFFBQU9FO0FBQUksVUFBQUQsR0FBRSxRQUFRLHVCQUF1QixRQUFRQyxFQUFDLElBQUUsT0FBS0YsR0FBRUUsRUFBQyxFQUFFLE9BQUssQ0FBQztBQUFHLGVBQU9GO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHVCQUFzQixPQUFNLFNBQVNBLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUs7QUFBRSxRQUFBRCxPQUFJQSxLQUFFRCxHQUFFO0FBQVEsWUFBSUcsS0FBRUQsR0FBRSxRQUFRLElBQUksT0FBTyxpQkFBaUIsNENBQTRDO0FBQUUsWUFBRyxnQkFBY0YsR0FBRSxNQUFLO0FBQUMsY0FBSUksS0FBRSxTQUFTSCxHQUFFLGFBQWEsS0FBSyxHQUFFLEVBQUUsSUFBRSxHQUFFSSxLQUFFLE1BQUtDLEtBQUU7QUFBSyxVQUFBSixHQUFFLFFBQVEsY0FBWSxnQkFBY0EsR0FBRSxPQUFPLE1BQU0sT0FBS0EsR0FBRSxRQUFRLGNBQVlHLEtBQUVILEdBQUUsUUFBUSxJQUFJLE9BQU8sY0FBYyx3Q0FBd0MsT0FBT0UsSUFBRSxJQUFJLENBQUMsR0FBRUUsS0FBRUosR0FBRSxRQUFRLElBQUksT0FBTyxjQUFjLDRDQUE0QyxPQUFPRSxJQUFFLElBQUksQ0FBQyxLQUFHQyxLQUFFSCxHQUFFLFFBQVEsSUFBSSxPQUFPLGNBQWMsMkJBQTJCLE9BQU9FLEtBQUUsR0FBRSxJQUFJLENBQUMsSUFBRUMsS0FBRUgsR0FBRSxRQUFRLElBQUksT0FBTyxjQUFjLDJCQUEyQixPQUFPRSxLQUFFLEdBQUUsU0FBUyxDQUFDO0FBQUUsbUJBQVFHLEtBQUUsR0FBRUEsS0FBRUosR0FBRSxRQUFPSTtBQUFJLFlBQUFKLEdBQUVJLEVBQUMsRUFBRSxVQUFVLElBQUksS0FBSyxtQkFBbUI7QUFBRSxtQkFBT0YsT0FBSUgsR0FBRSxRQUFRLGNBQVlHLEdBQUUsV0FBVyxVQUFVLE9BQU8sS0FBSyxtQkFBbUIsR0FBRUEsR0FBRSxVQUFVLE9BQU8sS0FBSyxtQkFBbUIsR0FBRSxTQUFPQyxNQUFHQSxHQUFFLFVBQVUsT0FBTyxLQUFLLG1CQUFtQjtBQUFBLFFBQUUsV0FBUyxlQUFhTixHQUFFO0FBQUssbUJBQVFRLEtBQUUsR0FBRUEsS0FBRUwsR0FBRSxRQUFPSztBQUFJLFlBQUFMLEdBQUVLLEVBQUMsRUFBRSxVQUFVLE9BQU8sS0FBSyxtQkFBbUI7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMEJBQXlCLE9BQU0sU0FBU1IsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsTUFBS0MsS0FBRSxLQUFLLEdBQUVDLEtBQUVELEdBQUUsUUFBUSxJQUFJLE9BQU8sdUJBQXVCLHlCQUF5QixHQUFFRSxLQUFFLFNBQVNMLElBQUU7QUFBQyxtQkFBUUMsS0FBRSxHQUFFQSxLQUFFRyxHQUFFLFFBQU9IO0FBQUksWUFBQUcsR0FBRUgsRUFBQyxFQUFFLFVBQVVELEVBQUMsRUFBRUUsR0FBRSxtQkFBbUI7QUFBQSxRQUFDO0FBQUUsWUFBRyxnQkFBY0YsR0FBRSxNQUFLO0FBQUMsY0FBSU0sS0FBRSxTQUFTTCxHQUFFLGFBQWEsS0FBSyxHQUFFLEVBQUUsSUFBRTtBQUFFLFVBQUFJLEdBQUUsS0FBSyxHQUFFLFNBQVNMLElBQUU7QUFBQyxxQkFBUUMsS0FBRSxHQUFFQSxLQUFFRyxHQUFFLFFBQU9ILE1BQUk7QUFBQyxrQkFBSUUsS0FBRSxTQUFTQyxHQUFFSCxFQUFDLEVBQUUsYUFBYSxLQUFLLEdBQUUsRUFBRTtBQUFFLGNBQUFFLE1BQUdILEdBQUUsUUFBTUcsTUFBR0gsR0FBRSxNQUFJSSxHQUFFSCxFQUFDLEVBQUUsVUFBVSxPQUFPQyxHQUFFLG1CQUFtQjtBQUFBLFlBQUM7QUFBQSxVQUFDLEVBQUVDLEdBQUUsT0FBTyxZQUFZLFFBQVEsV0FBVyxPQUFPRyxFQUFDLENBQUM7QUFBQSxRQUFDO0FBQUsseUJBQWFOLEdBQUUsUUFBTUssR0FBRSxRQUFRO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDhCQUE2QixPQUFNLFdBQVU7QUFBQyxZQUFJTCxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsT0FBTUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLENBQUMsR0FBRUMsS0FBRSxLQUFLLEdBQUVDLEtBQUU7QUFBRSxZQUFHRCxHQUFFLE9BQU8sT0FBTyxTQUFPO0FBQUUsbUJBQVFFLEtBQUVGLEdBQUUsT0FBTyxPQUFPLElBQUssU0FBU0YsSUFBRUcsSUFBRTtBQUFDLG1CQUFPSCxHQUFFLFFBQU1BLEdBQUUsS0FBSyxTQUFPLEtBQUcsT0FBS0UsR0FBRSxRQUFRLHVCQUF1QixRQUFRQyxFQUFDLE1BQUksQ0FBQ0QsR0FBRSxRQUFRLGVBQWEsTUFBSUQsR0FBRSxVQUFRQSxHQUFFLFVBQVFBLEdBQUUsUUFBUUMsR0FBRSxPQUFPLE9BQU9DLEVBQUMsRUFBRSxJQUFJLElBQUUsTUFBSUEsS0FBRTtBQUFBLFVBQUUsQ0FBRSxHQUFFRSxLQUFFLFVBQVFMLEtBQUUsSUFBRUksR0FBRSxTQUFPLEdBQUUsVUFBUUosS0FBRUssS0FBRUQsR0FBRSxTQUFPQyxNQUFHLEdBQUUsVUFBUUwsS0FBRUssT0FBSUE7QUFBSSxnQkFBRyxPQUFLRCxHQUFFQyxFQUFDLEdBQUU7QUFBQyxjQUFBRixLQUFFQyxHQUFFQyxFQUFDO0FBQUU7QUFBQSxZQUFLO0FBQUE7QUFBQyxlQUFPRjtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSx1QkFBc0IsT0FBTSxXQUFVO0FBQUMsZUFBTyxLQUFLLEVBQUUsUUFBUSxjQUFZLEtBQUssRUFBRSxPQUFPLE9BQU8sSUFBSyxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsaUJBQU0sVUFBUUQsR0FBRSxRQUFNLGFBQVdBLEdBQUUsT0FBS0MsS0FBRTtBQUFBLFFBQUUsQ0FBRSxFQUFFLE9BQVEsU0FBU0QsSUFBRTtBQUFDLGlCQUFNLE9BQUtBO0FBQUEsUUFBQyxDQUFFLElBQUUsS0FBSyxFQUFFLE9BQU8sT0FBTyxJQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxpQkFBT0E7QUFBQSxRQUFDLENBQUU7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksb0JBQW1CLE9BQU0sV0FBVTtBQUFDLFlBQUlELEtBQUUsS0FBSztBQUFFLGlCQUFTQyxHQUFFQSxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsbUJBQVFDLEtBQUVILEdBQUVDLEVBQUMsRUFBRSxZQUFXRyxLQUFFLEVBQUMsTUFBS0YsSUFBRSxPQUFNLENBQUMsR0FBRSxXQUFVRixHQUFFQyxFQUFDLEVBQUUsYUFBYSxnQkFBZ0IsRUFBQyxHQUFFSSxLQUFFLEdBQUVBLEtBQUVGLEdBQUUsUUFBT0U7QUFBSSxnQkFBR0YsR0FBRUUsRUFBQyxFQUFFLGFBQWEsUUFBUSxHQUFFO0FBQUMsa0JBQUlDLEtBQUVILEdBQUVFLEVBQUMsRUFBRSxhQUFhLFFBQVE7QUFBRSxjQUFBRCxHQUFFLE1BQU0sS0FBSyxFQUFDLEdBQUVFLEdBQUMsQ0FBQztBQUFBLFlBQUM7QUFBQyxVQUFBUCxHQUFFLFFBQVEsY0FBYyxLQUFLSyxFQUFDO0FBQUEsUUFBQztBQUFDLFFBQUFMLEdBQUUsUUFBUSxnQkFBYyxDQUFDO0FBQUUsU0FBQyxRQUFPLFFBQU8sT0FBTSxZQUFXLGFBQVksZUFBYyxPQUFPLEVBQUUsUUFBUyxTQUFTRSxJQUFFO0FBQUMsbUJBQVFDLElBQUVDLE1BQUdELEtBQUVELElBQUVGLEdBQUUsUUFBUSxJQUFJLE9BQU8saUJBQWlCLGVBQWUsT0FBT0csSUFBRSw0QkFBNEIsQ0FBQyxJQUFHRSxLQUFFLEdBQUVBLEtBQUVELEdBQUUsUUFBT0M7QUFBSSxZQUFBSixHQUFFRyxJQUFFQyxJQUFFSCxFQUFDO0FBQUEsUUFBQyxDQUFFLEdBQUUsS0FBSyw2QkFBNkIsUUFBUSxHQUFFLEtBQUssNkJBQTZCLFNBQVM7QUFBRSxZQUFJQSxLQUFFRixHQUFFLFFBQVEsSUFBSSxPQUFPLGlCQUFpQixlQUFlLE9BQU9BLEdBQUUsT0FBTyxNQUFNLE1BQUsscUJBQXFCLENBQUM7QUFBRSxZQUFHRSxHQUFFLFNBQU87QUFBRSxtQkFBUUMsS0FBRSxTQUFTRixJQUFFO0FBQUMscUJBQVFDLEtBQUVGLEdBQUUsUUFBUSxJQUFJLE9BQU8saUJBQWlCLGVBQWUsT0FBT0EsR0FBRSxPQUFPLE1BQU0sTUFBSyx3Q0FBd0MsRUFBRSxPQUFPQyxJQUFFLFNBQVMsQ0FBQyxHQUFFRSxLQUFFLENBQUMsR0FBRUMsS0FBRSxTQUFTSixJQUFFO0FBQUMsa0JBQUlDLEtBQUUsU0FBU0EsSUFBRTtBQUFDLHVCQUFPQyxHQUFFRixFQUFDLEVBQUUsYUFBYUMsRUFBQztBQUFBLGNBQUMsR0FBRUcsS0FBRSxFQUFDLEdBQUUsV0FBV0gsR0FBRSxHQUFHLENBQUMsR0FBRSxHQUFFLFdBQVdBLEdBQUUsR0FBRyxDQUFDLEdBQUUsT0FBTSxXQUFXQSxHQUFFLE9BQU8sQ0FBQyxHQUFFLFFBQU8sV0FBV0EsR0FBRSxRQUFRLENBQUMsRUFBQztBQUFFLGNBQUFFLEdBQUUsS0FBSyxFQUFDLE1BQUtDLElBQUUsT0FBTUYsR0FBRUYsRUFBQyxFQUFFLGFBQWEsT0FBTyxFQUFDLENBQUM7QUFBQSxZQUFDLEdBQUVLLEtBQUUsR0FBRUEsS0FBRUgsR0FBRSxRQUFPRztBQUFJLGNBQUFELEdBQUVDLEVBQUM7QUFBRSxZQUFBTCxHQUFFLFFBQVEsY0FBYyxLQUFLRyxFQUFDO0FBQUEsVUFBQyxHQUFFQyxLQUFFLEdBQUVBLEtBQUVGLEdBQUUsUUFBT0U7QUFBSSxZQUFBRCxHQUFFQyxFQUFDO0FBQUUsUUFBQUosR0FBRSxRQUFRLGVBQWFBLEdBQUUsUUFBUSxnQkFBY0EsR0FBRSxRQUFRO0FBQUEsTUFBTyxFQUFDLEdBQUUsRUFBQyxLQUFJLGdDQUErQixPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssR0FBRUMsS0FBRUQsR0FBRSxRQUFRLElBQUksT0FBTyxpQkFBaUIsZUFBZSxPQUFPRCxJQUFFLDRCQUE0QixDQUFDO0FBQUUsWUFBR0UsR0FBRSxTQUFPO0FBQUUsbUJBQVFDLEtBQUUsR0FBRUEsS0FBRUQsR0FBRSxRQUFPQyxNQUFJO0FBQUMscUJBQVFDLEtBQUVILEdBQUUsUUFBUSxJQUFJLE9BQU8saUJBQWlCLGVBQWUsT0FBT0QsSUFBRSwrQ0FBK0MsRUFBRSxPQUFPRyxJQUFFLFdBQVcsQ0FBQyxHQUFFRSxLQUFFLENBQUMsR0FBRUMsS0FBRSxHQUFFQSxLQUFFRixHQUFFLFFBQU9FO0FBQUksY0FBQUQsR0FBRSxLQUFLLEVBQUMsR0FBRUQsR0FBRUUsRUFBQyxFQUFFLGFBQWEsSUFBSSxHQUFFLEdBQUVGLEdBQUVFLEVBQUMsRUFBRSxhQUFhLElBQUksR0FBRSxHQUFFRixHQUFFRSxFQUFDLEVBQUUsYUFBYSxHQUFHLEVBQUMsQ0FBQztBQUFFLFlBQUFMLEdBQUUsUUFBUSxjQUFjLEtBQUtJLEVBQUM7QUFBQSxVQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHNCQUFxQixPQUFNLFdBQVU7QUFBQyxZQUFJTCxLQUFFLEtBQUs7QUFBRSxRQUFBQSxHQUFFLFFBQVEsZ0JBQWMsQ0FBQyxHQUFFQSxHQUFFLFFBQVEscUJBQW1CO0FBQUEsTUFBRSxFQUFDLEdBQUUsRUFBQyxLQUFJLGdCQUFlLE9BQU0sV0FBVTtBQUFDLFlBQUlBLEtBQUUsS0FBSyxHQUFFQyxLQUFFRCxHQUFFLE9BQU8sUUFBT0UsS0FBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLEdBQUVDLEtBQUVILEdBQUUsUUFBUSxXQUFTLEdBQUVJLEtBQUVKLEdBQUUsUUFBUSxZQUFVLEdBQUVLLEtBQUU7QUFBUyxZQUFHTCxHQUFFLFFBQVEsU0FBTyxNQUFHQSxHQUFFLFFBQVEsaUJBQWUsTUFBRyxXQUFTQyxHQUFFLFNBQU9FLEtBQUUsSUFBR0UsS0FBRSxXQUFTLFlBQVVKLEdBQUUsVUFBUUUsS0FBRUgsR0FBRSxRQUFRLFdBQVMsSUFBR0ssS0FBRSxRQUFPLFVBQVFKLEdBQUUsZ0JBQWNHLEtBQUUsS0FBRyxhQUFXSCxHQUFFLGtCQUFnQkcsS0FBRUosR0FBRSxRQUFRLFlBQVUsS0FBSUcsTUFBR0YsR0FBRSxTQUFRRyxLQUFFQSxLQUFFLFNBQVNILEdBQUUsTUFBTSxVQUFTLEVBQUUsSUFBRSxJQUFFQSxHQUFFLFNBQVEsV0FBU0EsR0FBRSxRQUFNLE9BQUtBLEdBQUUsTUFBSztBQUFDLGNBQUlLLEtBQUVKLEdBQUUsU0FBUyxFQUFDLEdBQUVDLElBQUUsR0FBRUMsSUFBRSxNQUFLSCxHQUFFLE1BQUssWUFBV0ksSUFBRSxVQUFTSixHQUFFLE1BQU0sVUFBUyxZQUFXQSxHQUFFLE1BQU0sWUFBVyxXQUFVQSxHQUFFLE1BQU0sT0FBTSxTQUFRLEdBQUUsT0FBTSx5QkFBd0IsQ0FBQztBQUFFLFVBQUFELEdBQUUsUUFBUSxJQUFJLE1BQU0sSUFBSU0sRUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksNkJBQTRCLE9BQU0sU0FBU04sSUFBRTtBQUFDLGlCQUFRQyxLQUFFLEtBQUssR0FBRUMsS0FBRSxHQUFFQSxLQUFFRixHQUFFLFFBQU9FO0FBQUksY0FBRyxNQUFJRixHQUFFRSxFQUFDLEVBQUU7QUFBTyxxQkFBUUMsS0FBRSxHQUFFQSxLQUFFSCxHQUFFQyxHQUFFLFFBQVEsbUJBQW1CLEVBQUUsUUFBT0U7QUFBSSxjQUFBSCxHQUFFRSxFQUFDLEVBQUUsS0FBSyxDQUFDO0FBQUUsZUFBT0Y7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksc0JBQXFCLE9BQU0sV0FBVTtBQUFDLGlCQUFRQSxLQUFFLE1BQUdDLEtBQUUsS0FBSyxHQUFFQyxLQUFFLEtBQUssZ0JBQWdCLEdBQUVDLEtBQUUsR0FBRUEsS0FBRUQsR0FBRSxTQUFPLEdBQUVDO0FBQUksY0FBR0QsR0FBRUMsRUFBQyxFQUFFLENBQUMsTUFBSUQsR0FBRUMsS0FBRSxDQUFDLEVBQUUsQ0FBQyxHQUFFO0FBQUMsWUFBQUgsS0FBRTtBQUFHO0FBQUEsVUFBSztBQUFDLGVBQU9DLEdBQUUsUUFBUSxxQkFBbUJELElBQUVBO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLG1CQUFrQixPQUFNLFdBQVU7QUFBQyxZQUFJQSxLQUFFLEtBQUssRUFBRSxRQUFRLFFBQVEsSUFBSyxTQUFTQSxJQUFFO0FBQUMsaUJBQU9BLEdBQUUsU0FBTyxJQUFFQSxLQUFFLENBQUM7QUFBQSxRQUFDLENBQUU7QUFBRSxlQUFPQTtBQUFBLE1BQUMsRUFBQyxDQUFDLENBQUMsR0FBRUE7QUFBQSxJQUFDLEVBQUU7QUFBL2dwRSxRQUFpaHBFLElBQUUsV0FBVTtBQUFDLGVBQVNBLEdBQUVDLElBQUU7QUFBQyxVQUFFLE1BQUtELEVBQUMsR0FBRSxLQUFLLE1BQUlDLElBQUUsS0FBSyxJQUFFQSxHQUFFLEdBQUUsS0FBSyxhQUFXLENBQUMsR0FBRSxLQUFLLGVBQWEsQ0FBQyxHQUFFLEtBQUssY0FBWSxDQUFDLEdBQUUsS0FBSyxjQUFZLENBQUMsR0FBRSxLQUFLLFlBQVUsSUFBSSxFQUFFLEtBQUssR0FBRztBQUFBLE1BQUM7QUFBQyxhQUFPLEVBQUVELElBQUUsQ0FBQyxFQUFDLEtBQUksaUJBQWdCLE9BQU0sV0FBVTtBQUFDLGVBQU8sS0FBSyxXQUFXLEtBQUcsS0FBSyxnQkFBZ0I7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksY0FBYSxPQUFNLFdBQVU7QUFBQyxZQUFJQSxLQUFFLEtBQUssRUFBRSxPQUFPLE9BQU8sTUFBTSxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUc7QUFBRSxZQUFHLEtBQUssb0JBQWtCQSxHQUFFLDJCQUEyQixHQUFFLFdBQVNELEdBQUUsS0FBSyxpQkFBaUIsRUFBRSxRQUFNQSxHQUFFLEtBQUssaUJBQWlCLEVBQUUsS0FBSyxTQUFPLEtBQUcsU0FBT0EsR0FBRSxLQUFLLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxLQUFHLFdBQVNBLEdBQUUsS0FBSyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFHLFNBQU9BLEdBQUUsS0FBSyxpQkFBaUIsRUFBRSxLQUFLLENBQUM7QUFBRSxpQkFBTTtBQUFBLE1BQUUsRUFBQyxHQUFFLEVBQUMsS0FBSSxtQkFBa0IsT0FBTSxXQUFVO0FBQUMsWUFBSUEsS0FBRSxLQUFLLEVBQUUsT0FBTyxPQUFPLE1BQU0sR0FBRUMsS0FBRSxJQUFJLEVBQUUsS0FBSyxHQUFHO0FBQUUsWUFBRyxLQUFLLG9CQUFrQkEsR0FBRSwyQkFBMkIsR0FBRSxXQUFTRCxHQUFFLEtBQUssaUJBQWlCLEVBQUUsUUFBTUEsR0FBRSxLQUFLLGlCQUFpQixFQUFFLEtBQUssU0FBTyxLQUFHLFdBQVNBLEdBQUUsS0FBSyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsS0FBRyxTQUFPQSxHQUFFLEtBQUssaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEtBQUdBLEdBQUUsS0FBSyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsRUFBRSxnQkFBYztBQUFNLGlCQUFNO0FBQUEsTUFBRSxFQUFDLEdBQUUsRUFBQyxLQUFJLHVCQUFzQixPQUFNLFNBQVNBLElBQUVDLElBQUU7QUFBQyxpQkFBUUMsS0FBRSxLQUFLLEVBQUUsUUFBT0MsS0FBRSxLQUFLLEVBQUUsU0FBUUMsS0FBRSxjQUFZRixHQUFFLE1BQU0sUUFBTSxjQUFZQSxHQUFFLE9BQU9ELEVBQUMsRUFBRSxNQUFLSSxLQUFFLEdBQUVBLEtBQUVMLEdBQUVDLEVBQUMsRUFBRSxLQUFLLFFBQU9JO0FBQUksY0FBRyxXQUFTTCxHQUFFQyxFQUFDLEVBQUUsS0FBS0ksRUFBQyxFQUFFLENBQUMsTUFBSSxNQUFNLFFBQVFMLEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUcsTUFBSUwsR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxDQUFDLEVBQUUsVUFBUSxDQUFDRCxLQUFFLEtBQUssV0FBVyxLQUFLLEVBQUUsWUFBWUosR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBRUwsR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxVQUFRLElBQUUsS0FBSyxXQUFXLEtBQUssRUFBRSxZQUFZTCxHQUFFQyxFQUFDLEVBQUUsS0FBS0ksRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUUsS0FBSyxXQUFXLEtBQUssRUFBRSxZQUFZTCxHQUFFQyxFQUFDLEVBQUUsS0FBS0ksRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUVGLEdBQUUscUJBQW1CLE9BQUksZUFBYUQsR0FBRSxNQUFNLE1BQUs7QUFBQyxnQkFBSUksS0FBRSxJQUFJLEtBQUtOLEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQUUsWUFBQUMsS0FBRSxJQUFJLEtBQUtBLEVBQUMsRUFBRSxRQUFRLEdBQUUsS0FBSyxZQUFZLEtBQUtBLEVBQUM7QUFBQSxVQUFDO0FBQU0saUJBQUssWUFBWSxLQUFLTixHQUFFQyxFQUFDLEVBQUUsS0FBS0ksRUFBQyxFQUFFLENBQUMsQ0FBQztBQUFFLGlCQUFRRSxLQUFFLEdBQUVBLEtBQUVQLEdBQUVDLEVBQUMsRUFBRSxLQUFLLFFBQU9NO0FBQUkscUJBQVNQLEdBQUVDLEVBQUMsRUFBRSxLQUFLTSxFQUFDLEVBQUUsQ0FBQyxNQUFJLEtBQUssYUFBYSxLQUFLUCxHQUFFQyxFQUFDLEVBQUUsS0FBS00sRUFBQyxFQUFFLENBQUMsQ0FBQyxHQUFFSixHQUFFLFlBQVU7QUFBQSxNQUFHLEVBQUMsR0FBRSxFQUFDLEtBQUksa0JBQWlCLE9BQU0sU0FBU0gsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxFQUFFLFFBQU9DLEtBQUUsS0FBSyxFQUFFLFNBQVFDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFSjtBQUFFLFFBQUFFLEdBQUUsdUJBQXVCLFFBQVFGLEVBQUMsSUFBRSxPQUFLSSxLQUFFLEtBQUs7QUFBbUIsaUJBQVFDLEtBQUUsR0FBRUEsS0FBRU4sR0FBRUMsRUFBQyxFQUFFLEtBQUssUUFBT0s7QUFBSSxxQkFBU04sR0FBRUMsRUFBQyxFQUFFLEtBQUtLLEVBQUMsRUFBRSxNQUFJLE1BQU0sUUFBUU4sR0FBRUMsRUFBQyxFQUFFLEtBQUtLLEVBQUMsRUFBRSxDQUFDLElBQUUsS0FBSyxXQUFXLEtBQUssRUFBRSxZQUFZTixHQUFFQyxFQUFDLEVBQUUsS0FBS0ssRUFBQyxFQUFFLEVBQUVOLEdBQUVDLEVBQUMsRUFBRSxLQUFLSyxFQUFDLEVBQUUsRUFBRSxTQUFPLENBQUMsQ0FBQyxDQUFDLElBQUUsS0FBSyxXQUFXLEtBQUssRUFBRSxZQUFZTixHQUFFQyxFQUFDLEVBQUUsS0FBS0ssRUFBQyxFQUFFLENBQUMsQ0FBQyxJQUFHLFdBQVNOLEdBQUVDLEVBQUMsRUFBRSxLQUFLSyxFQUFDLEVBQUUsU0FBTyxNQUFNLFFBQVFOLEdBQUVDLEVBQUMsRUFBRSxLQUFLSyxFQUFDLEVBQUUsS0FBSyxLQUFHLFdBQVMsS0FBSyxZQUFZTCxFQUFDLE1BQUksS0FBSyxZQUFZQSxFQUFDLElBQUUsQ0FBQyxJQUFHLEtBQUssWUFBWUEsRUFBQyxFQUFFLEtBQUtELEdBQUVDLEVBQUMsRUFBRSxLQUFLSyxFQUFDLEVBQUUsS0FBSyxNQUFJLFdBQVMsS0FBSyxZQUFZTCxFQUFDLE1BQUksS0FBSyxZQUFZQSxFQUFDLElBQUUsQ0FBQyxJQUFHLEtBQUssWUFBWUEsRUFBQyxFQUFFLEtBQUssSUFBSTtBQUFHLGlCQUFRTSxLQUFFLEdBQUVBLEtBQUVQLEdBQUVLLEVBQUMsRUFBRSxLQUFLLFFBQU9FLE1BQUk7QUFBQyxjQUFJQyxLQUFFLFlBQVUsT0FBT1IsR0FBRUssRUFBQyxFQUFFLEtBQUtFLEVBQUMsRUFBRSxHQUFFRSxLQUFFLE1BQU0sUUFBUVQsR0FBRUssRUFBQyxFQUFFLEtBQUtFLEVBQUMsRUFBRSxDQUFDLEdBQUVHLEtBQUUsQ0FBQ0QsTUFBRyxDQUFDLENBQUNMLEdBQUUsWUFBWUosR0FBRUssRUFBQyxFQUFFLEtBQUtFLEVBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQztBQUFFLGNBQUdDLE1BQUdFO0FBQUUsZ0JBQUdGLE1BQUdOLEdBQUUsTUFBTSx1QkFBc0I7QUFBQyxrQkFBSVMsS0FBRVIsR0FBRSxtQkFBaUJBLEdBQUU7QUFBWSw2QkFBYUQsR0FBRSxNQUFNLFFBQU1TLE1BQUcsS0FBSyxxQkFBbUIsTUFBRyxLQUFLLFlBQVksS0FBS1gsR0FBRUssRUFBQyxFQUFFLEtBQUtFLEVBQUMsRUFBRSxDQUFDLEdBQUUsTUFBTVAsR0FBRUssRUFBQyxFQUFFLEtBQUtFLEVBQUMsRUFBRSxDQUFDLEtBQUcsZUFBYSxLQUFLLEVBQUUsT0FBTyxNQUFNLFFBQU0sWUFBVSxPQUFPUCxHQUFFSyxFQUFDLEVBQUUsS0FBS0UsRUFBQyxFQUFFLE1BQUlKLEdBQUUsYUFBVyxTQUFLLEtBQUssWUFBWSxLQUFLQyxHQUFFLFVBQVVKLEdBQUVLLEVBQUMsRUFBRSxLQUFLRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQUEsWUFBQztBQUFLLDZCQUFhTCxHQUFFLE1BQU0sT0FBSyxLQUFLLFlBQVksS0FBS0UsR0FBRSxVQUFVSixHQUFFSyxFQUFDLEVBQUUsS0FBS0UsRUFBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsS0FBR0osR0FBRSxxQkFBbUIsTUFBR0EsR0FBRSxhQUFXLE1BQUcsS0FBSyxZQUFZLEtBQUssV0FBV0gsR0FBRUssRUFBQyxFQUFFLEtBQUtFLEVBQUMsRUFBRSxDQUFDLENBQUM7QUFBQTtBQUFRLFlBQUFFLE1BQUcsS0FBSyxxQkFBbUIsTUFBRyxLQUFLLFlBQVksS0FBS1QsR0FBRUssRUFBQyxFQUFFLEtBQUtFLEVBQUMsRUFBRSxDQUFDLE1BQUlKLEdBQUUsYUFBVyxNQUFHQSxHQUFFLHFCQUFtQixNQUFHLEtBQUssWUFBWSxLQUFLSCxHQUFFSyxFQUFDLEVBQUUsS0FBS0UsRUFBQyxFQUFFLENBQUM7QUFBQSxRQUFFO0FBQUMsWUFBR1AsR0FBRUMsRUFBQyxFQUFFLEtBQUssQ0FBQyxLQUFHLFdBQVNELEdBQUVDLEVBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFFO0FBQUMsbUJBQVFXLEtBQUUsR0FBRUEsS0FBRVosR0FBRUMsRUFBQyxFQUFFLEtBQUssUUFBT1c7QUFBSSxpQkFBSyxhQUFhLEtBQUtaLEdBQUVDLEVBQUMsRUFBRSxLQUFLVyxFQUFDLEVBQUUsQ0FBQztBQUFFLFVBQUFULEdBQUUsWUFBVTtBQUFBLFFBQUU7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksbUJBQWtCLE9BQU0sU0FBU0gsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxFQUFFLFNBQVFDLEtBQUUsQ0FBQztBQUFFLGVBQU8sS0FBSyxnQkFBZ0IsSUFBRUEsS0FBRSxLQUFLLHNCQUFzQixTQUFRSCxJQUFFQyxFQUFDLElBQUUsS0FBSyxXQUFXLE1BQUlFLEtBQUUsS0FBSyxzQkFBc0IsTUFBS0gsSUFBRUMsRUFBQyxJQUFHQyxHQUFFLGlCQUFpQixLQUFLQyxHQUFFLEtBQUssR0FBRUQsR0FBRSxlQUFlLEtBQUtDLEdBQUUsR0FBRyxHQUFFRCxHQUFFLFlBQVksS0FBS0MsR0FBRSxZQUFZLEdBQUVELEdBQUUsWUFBWSxRQUFTLFNBQVNGLElBQUVDLElBQUU7QUFBQyxVQUFBRCxNQUFHQSxHQUFFLFFBQVMsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLFlBQUFELEdBQUUsRUFBRSxRQUFTLFNBQVNDLElBQUVDLElBQUU7QUFBQyx1QkFBUUMsS0FBRSxHQUFFQSxLQUFFSCxHQUFFLEVBQUUsUUFBT0c7QUFBSSxvQkFBR0QsT0FBSUMsSUFBRTtBQUFDLHNCQUFJQyxLQUFFSCxHQUFFLElBQUdJLEtBQUVKLEdBQUUsSUFBR0ssS0FBRU4sR0FBRSxFQUFFRyxFQUFDLEVBQUU7QUFBRyxrQkFBQUMsTUFBR0osR0FBRSxFQUFFRyxFQUFDLEVBQUUsTUFBSUcsTUFBR0QsT0FBSUwsR0FBRSxTQUFTLFFBQVFDLEdBQUUsU0FBUyxJQUFFLEtBQUdELEdBQUUsU0FBUyxLQUFLQyxHQUFFLFNBQVMsR0FBRUQsR0FBRSxTQUFTLFFBQVFBLEdBQUUsRUFBRUcsRUFBQyxFQUFFLFNBQVMsSUFBRSxLQUFHSCxHQUFFLFNBQVMsS0FBS0EsR0FBRSxFQUFFRyxFQUFDLEVBQUUsU0FBUztBQUFBLGdCQUFFO0FBQUEsWUFBQyxDQUFFO0FBQUEsVUFBQyxDQUFFO0FBQUEsUUFBQyxDQUFFLEdBQUVBO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDRCQUEyQixPQUFNLFNBQVNILElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssRUFBRSxTQUFRQyxLQUFFLENBQUM7QUFBRSxlQUFPLEtBQUssZ0JBQWdCLElBQUVBLEtBQUUsS0FBSywrQkFBK0IsU0FBUUgsSUFBRUMsRUFBQyxJQUFFLEtBQUssV0FBVyxNQUFJRSxLQUFFLEtBQUssK0JBQStCLE1BQUtILElBQUVDLEVBQUMsSUFBR0MsR0FBRSxjQUFjRCxFQUFDLElBQUVFLEdBQUUsR0FBRUQsR0FBRSxjQUFjRCxFQUFDLElBQUVFLEdBQUUsR0FBRUQsR0FBRSxjQUFjRCxFQUFDLElBQUVFLEdBQUUsR0FBRUQsR0FBRSxjQUFjRCxFQUFDLElBQUVFLEdBQUUsR0FBRUQsR0FBRSxjQUFjRCxFQUFDLElBQUVFLEdBQUUsR0FBRUE7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUkseUJBQXdCLE9BQU0sU0FBU0gsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLENBQUMsR0FBRUMsS0FBRUosR0FBRUMsRUFBQyxFQUFFLEtBQUssT0FBUSxTQUFTRixJQUFFQyxJQUFFQyxJQUFFO0FBQUMsaUJBQU9ELE9BQUlDLEdBQUUsVUFBVyxTQUFTRCxJQUFFO0FBQUMsbUJBQU9BLEdBQUUsTUFBSUQsR0FBRTtBQUFBLFVBQUMsQ0FBRTtBQUFBLFFBQUMsQ0FBRSxFQUFFLElBQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGlCQUFNLEVBQUMsR0FBRUQsR0FBRSxHQUFFLFVBQVMsQ0FBQyxHQUFFLEdBQUUsQ0FBQyxFQUFDO0FBQUEsUUFBQyxDQUFFO0FBQUUsWUFBRyxZQUFVQTtBQUFFLG1CQUFRTSxLQUFFLEdBQUVBLEtBQUVMLEdBQUVDLEVBQUMsRUFBRSxLQUFLLFFBQU9JO0FBQUksa0JBQU0sUUFBUUwsR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsQ0FBQyxLQUFHSCxHQUFFLEtBQUtGLEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFFRixHQUFFLEtBQUtILEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFJSCxHQUFFLEtBQUtGLEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLENBQUMsR0FBRUYsR0FBRSxLQUFLSCxHQUFFQyxFQUFDLEVBQUUsS0FBS0ksRUFBQyxDQUFDO0FBQUEsaUJBQVcsU0FBT047QUFBRSxtQkFBUU8sS0FBRSxTQUFTUCxJQUFFO0FBQUMsZ0JBQUlNLEtBQUUsTUFBTSxRQUFRTCxHQUFFQyxFQUFDLEVBQUUsS0FBS0YsRUFBQyxFQUFFLENBQUMsR0FBRU8sS0FBRSxFQUFFLFNBQVMsR0FBRUMsS0FBRVAsR0FBRUMsRUFBQyxFQUFFLEtBQUtGLEVBQUMsRUFBRSxHQUFFUyxLQUFFLEVBQUMsSUFBR0gsS0FBRUwsR0FBRUMsRUFBQyxFQUFFLEtBQUtGLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBRUMsR0FBRUMsRUFBQyxFQUFFLEtBQUtGLEVBQUMsRUFBRSxHQUFFLElBQUdNLEtBQUVMLEdBQUVDLEVBQUMsRUFBRSxLQUFLRixFQUFDLEVBQUUsRUFBRSxDQUFDLElBQUVDLEdBQUVDLEVBQUMsRUFBRSxLQUFLRixFQUFDLEVBQUUsR0FBRSxXQUFVTyxHQUFDO0FBQUUsWUFBQU4sR0FBRUMsRUFBQyxFQUFFLEtBQUtGLEVBQUMsRUFBRSxZQUFVTztBQUFFLGdCQUFJRyxLQUFFTCxHQUFFLFVBQVcsU0FBU0wsSUFBRTtBQUFDLHFCQUFPQSxHQUFFLE1BQUlRO0FBQUEsWUFBQyxDQUFFO0FBQUUsWUFBQUgsR0FBRUssRUFBQyxFQUFFLEVBQUUsS0FBS0QsRUFBQyxHQUFFTixHQUFFLEtBQUtNLEdBQUUsRUFBRSxHQUFFTCxHQUFFLEtBQUtLLEdBQUUsRUFBRTtBQUFBLFVBQUMsR0FBRUQsS0FBRSxHQUFFQSxLQUFFUCxHQUFFQyxFQUFDLEVBQUUsS0FBSyxRQUFPTTtBQUFJLFlBQUFELEdBQUVDLEVBQUM7QUFBRSxlQUFNLEVBQUMsT0FBTUwsSUFBRSxLQUFJQyxJQUFFLGNBQWFDLEdBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksa0NBQWlDLE9BQU0sU0FBU0wsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxHQUFFQyxLQUFFLGNBQVlELEdBQUUsT0FBTyxNQUFNLFFBQU0sY0FBWUEsR0FBRSxPQUFPLE9BQU9ELEVBQUMsRUFBRSxNQUFLRyxLQUFFLENBQUMsR0FBRUMsS0FBRSxDQUFDLEdBQUVDLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLENBQUMsR0FBRUMsS0FBRSxDQUFDO0FBQUUsWUFBRyxZQUFVVDtBQUFFLGNBQUdJLE1BQUcsTUFBSUgsR0FBRUMsRUFBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLFVBQVEsQ0FBQ0UsTUFBRyxNQUFJSCxHQUFFQyxFQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7QUFBTyxxQkFBUVEsS0FBRSxHQUFFQSxLQUFFVCxHQUFFQyxFQUFDLEVBQUUsS0FBSyxRQUFPUTtBQUFJLGNBQUFMLEdBQUUsS0FBS0osR0FBRUMsRUFBQyxFQUFFLEtBQUtRLEVBQUMsRUFBRSxDQUFDLENBQUMsR0FBRUosR0FBRSxLQUFLTCxHQUFFQyxFQUFDLEVBQUUsS0FBS1EsRUFBQyxFQUFFLENBQUMsQ0FBQyxHQUFFTixNQUFHRyxHQUFFLEtBQUtOLEdBQUVDLEVBQUMsRUFBRSxLQUFLUSxFQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUVGLEdBQUUsS0FBS1AsR0FBRUMsRUFBQyxFQUFFLEtBQUtRLEVBQUMsRUFBRSxDQUFDLENBQUMsR0FBRUQsR0FBRSxLQUFLUixHQUFFQyxFQUFDLEVBQUUsS0FBS1EsRUFBQyxFQUFFLENBQUMsQ0FBQyxNQUFJRixHQUFFLEtBQUtQLEdBQUVDLEVBQUMsRUFBRSxLQUFLUSxFQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUVELEdBQUUsS0FBS1IsR0FBRUMsRUFBQyxFQUFFLEtBQUtRLEVBQUMsRUFBRSxDQUFDLENBQUM7QUFBQTtBQUFRLHFCQUFRQyxLQUFFLEdBQUVBLEtBQUVWLEdBQUVDLEVBQUMsRUFBRSxLQUFLLFFBQU9TO0FBQUksb0JBQU0sUUFBUVYsR0FBRUMsRUFBQyxFQUFFLEtBQUtTLEVBQUMsRUFBRSxDQUFDLENBQUMsTUFBSU4sR0FBRSxLQUFLSixHQUFFQyxFQUFDLEVBQUUsS0FBS1MsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRUwsR0FBRSxLQUFLTCxHQUFFQyxFQUFDLEVBQUUsS0FBS1MsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRVAsTUFBR0csR0FBRSxLQUFLTixHQUFFQyxFQUFDLEVBQUUsS0FBS1MsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRUgsR0FBRSxLQUFLUCxHQUFFQyxFQUFDLEVBQUUsS0FBS1MsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRUYsR0FBRSxLQUFLUixHQUFFQyxFQUFDLEVBQUUsS0FBS1MsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBSUgsR0FBRSxLQUFLUCxHQUFFQyxFQUFDLEVBQUUsS0FBS1MsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRUYsR0FBRSxLQUFLUixHQUFFQyxFQUFDLEVBQUUsS0FBS1MsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFBQSxpQkFBWSxTQUFPWDtBQUFFLG1CQUFRWSxLQUFFLEdBQUVBLEtBQUVYLEdBQUVDLEVBQUMsRUFBRSxLQUFLLFFBQU9VO0FBQUksa0JBQU0sUUFBUVgsR0FBRUMsRUFBQyxFQUFFLEtBQUtVLEVBQUMsRUFBRSxDQUFDLE1BQUlQLEdBQUUsS0FBS0osR0FBRUMsRUFBQyxFQUFFLEtBQUtVLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFFTixHQUFFLEtBQUtMLEdBQUVDLEVBQUMsRUFBRSxLQUFLVSxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRVIsTUFBR0csR0FBRSxLQUFLTixHQUFFQyxFQUFDLEVBQUUsS0FBS1UsRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUVKLEdBQUUsS0FBS1AsR0FBRUMsRUFBQyxFQUFFLEtBQUtVLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFFSCxHQUFFLEtBQUtSLEdBQUVDLEVBQUMsRUFBRSxLQUFLVSxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBSUosR0FBRSxLQUFLUCxHQUFFQyxFQUFDLEVBQUUsS0FBS1UsRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUVILEdBQUUsS0FBS1IsR0FBRUMsRUFBQyxFQUFFLEtBQUtVLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUFJLGVBQU0sRUFBQyxHQUFFUCxJQUFFLEdBQUVDLElBQUUsR0FBRUMsSUFBRSxHQUFFQyxJQUFFLEdBQUVDLEdBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksdUJBQXNCLE9BQU0sU0FBU1QsSUFBRTtBQUFDLFlBQUlDLElBQUVDLEtBQUUsTUFBS0MsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEtBQUssS0FBSUMsS0FBRSxLQUFLLEVBQUUsUUFBT0MsS0FBRSxLQUFLLEVBQUUsU0FBUUMsS0FBRSxJQUFJLEVBQUVILEVBQUMsR0FBRUksS0FBRUgsR0FBRSxPQUFPLFNBQU8sSUFBRUEsR0FBRSxPQUFPLE1BQU0sSUFBRUEsR0FBRSxNQUFNLFdBQVcsTUFBTTtBQUFFLFlBQUdDLEdBQUUsYUFBVyxlQUFhRCxHQUFFLE1BQU0sUUFBTUMsR0FBRSxpQkFBZ0JBLEdBQUUsaUJBQWUsZUFBYUQsR0FBRSxNQUFNLFFBQU1BLEdBQUUsTUFBTSxNQUFNLE9BQU8sU0FBTyxHQUFFQyxHQUFFLG1CQUFpQkEsR0FBRSxTQUFPRCxHQUFFLE1BQU0sTUFBTSxTQUFRQyxHQUFFLGtCQUFnQixVQUFRSixLQUFFRCxHQUFFLENBQUMsTUFBSSxXQUFTQyxLQUFFLFNBQU9BLEdBQUUsT0FBTUksR0FBRSxpQkFBZ0I7QUFBQyxjQUFJRyxLQUFFLENBQUMsR0FBRUMsS0FBRSxFQUFFLElBQUksSUFBSVQsR0FBRSxJQUFLLFNBQVNBLElBQUU7QUFBQyxtQkFBT0EsR0FBRTtBQUFBLFVBQUssQ0FBRSxDQUFDLENBQUM7QUFBRSxVQUFBQSxHQUFFLFFBQVMsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGdCQUFJQyxLQUFFTyxHQUFFLFFBQVFULEdBQUUsS0FBSztBQUFFLFlBQUFRLEdBQUVOLEVBQUMsTUFBSU0sR0FBRU4sRUFBQyxJQUFFLENBQUMsSUFBR00sR0FBRU4sRUFBQyxFQUFFLEtBQUtGLEdBQUUsSUFBSTtBQUFBLFVBQUMsQ0FBRSxHQUFFSyxHQUFFLGVBQWFHO0FBQUEsUUFBQztBQUFDLGlCQUFRRSxLQUFFLFdBQVU7QUFBQyxtQkFBUVYsS0FBRSxHQUFFQSxLQUFFTyxHQUFFLFFBQU9QO0FBQUksZ0JBQUcsWUFBVSxPQUFPTyxHQUFFUCxFQUFDLEdBQUU7QUFBQyxrQkFBRyxDQUFDTSxHQUFFLFlBQVlDLEdBQUVQLEVBQUMsQ0FBQztBQUFFLHNCQUFNLElBQUksTUFBTSwrRUFBK0U7QUFBRSxjQUFBRSxHQUFFLFlBQVksS0FBS0ksR0FBRSxVQUFVQyxHQUFFUCxFQUFDLENBQUMsQ0FBQztBQUFBLFlBQUM7QUFBTSxjQUFBRSxHQUFFLFlBQVksS0FBS0ssR0FBRVAsRUFBQyxDQUFDO0FBQUEsUUFBQyxHQUFFVyxLQUFFLEdBQUVBLEtBQUVYLEdBQUUsUUFBT1csTUFBSTtBQUFDLGNBQUcsS0FBSyxhQUFXLENBQUMsR0FBRSxLQUFLLGNBQVksQ0FBQyxHQUFFLEtBQUssZUFBYSxDQUFDLEdBQUUsV0FBU1gsR0FBRVcsRUFBQyxFQUFFO0FBQUssbUJBQU8sS0FBSyxRQUFRLE1BQU0sK0VBQStFO0FBQUUsY0FBRyxlQUFhUCxHQUFFLE1BQU0sUUFBTSxnQkFBY0EsR0FBRSxNQUFNLFFBQU0sZUFBYUosR0FBRVcsRUFBQyxFQUFFLFFBQU0sZ0JBQWNYLEdBQUVXLEVBQUMsRUFBRSxTQUFPTixHQUFFLGNBQVksTUFBR0EsR0FBRSxnQkFBYyxlQUFhTCxHQUFFVyxFQUFDLEVBQUUsUUFBTSxnQkFBY1gsR0FBRVcsRUFBQyxFQUFFLFFBQU0sS0FBSyxnQkFBZ0JYLElBQUVXLEVBQUMsSUFBRSxlQUFhUCxHQUFFLE1BQU0sUUFBTSxnQkFBY0EsR0FBRSxNQUFNLFFBQU0sS0FBSyxnQkFBZ0JKLElBQUVXLEVBQUMsSUFBRyxLQUFLLGNBQWM7QUFBRSxpQkFBSyxnQkFBZ0IsSUFBRSxLQUFLLG9CQUFvQlgsSUFBRVcsRUFBQyxJQUFFLEtBQUssV0FBVyxLQUFHLEtBQUssZUFBZVgsSUFBRVcsRUFBQyxHQUFFLGtCQUFnQlAsR0FBRSxNQUFNLFFBQU0sa0JBQWdCSixHQUFFVyxFQUFDLEVBQUUsUUFBTSxjQUFZUCxHQUFFLE1BQU0sUUFBTSxjQUFZSixHQUFFVyxFQUFDLEVBQUUsUUFBTSxLQUFLLHlCQUF5QlgsSUFBRVcsRUFBQyxHQUFFTixHQUFFLE9BQU8sS0FBSyxLQUFLLFVBQVUsR0FBRUEsR0FBRSxPQUFPLEtBQUssS0FBSyxXQUFXLEdBQUVBLEdBQUUsUUFBUSxLQUFLLEtBQUssV0FBVyxHQUFFQSxHQUFFLGNBQVksS0FBSyxhQUFZTSxPQUFJLEtBQUsscUJBQW1CLEtBQUssdUJBQXFCTixHQUFFLGFBQVc7QUFBQSxlQUFRO0FBQUMsMkJBQWFELEdBQUUsTUFBTSxRQUFNQyxHQUFFLGFBQVcsTUFBR0ssR0FBRSxHQUFFTCxHQUFFLFFBQVEsS0FBSyxLQUFLLFdBQVcsS0FBRyxjQUFZRCxHQUFFLE1BQU0sU0FBT0MsR0FBRSxhQUFXLE1BQUdFLEdBQUUsU0FBTyxNQUFJLEtBQUssY0FBWUEsSUFBRUYsR0FBRSxRQUFRLEtBQUssS0FBSyxXQUFXLEtBQUlBLEdBQUUsT0FBTyxLQUFLLEtBQUssV0FBVztBQUFFLGdCQUFJTyxLQUFFWixHQUFFVyxFQUFDLEVBQUUsS0FBSyxJQUFLLFNBQVNYLElBQUU7QUFBQyxxQkFBTyxFQUFFLFlBQVlBLEVBQUM7QUFBQSxZQUFDLENBQUU7QUFBRSxZQUFBSyxHQUFFLE9BQU8sS0FBS08sRUFBQztBQUFBLFVBQUM7QUFBQyxVQUFBUCxHQUFFLFFBQVEsS0FBSyxLQUFLLFlBQVksR0FBRSxXQUFTTCxHQUFFVyxFQUFDLEVBQUUsT0FBS04sR0FBRSxZQUFZLEtBQUtMLEdBQUVXLEVBQUMsRUFBRSxJQUFJLElBQUVOLEdBQUUsWUFBWSxLQUFLLFlBQVUsU0FBU00sS0FBRSxHQUFFLEVBQUUsQ0FBQyxHQUFFLFdBQVNYLEdBQUVXLEVBQUMsRUFBRSxRQUFNTixHQUFFLGFBQWEsS0FBS0wsR0FBRVcsRUFBQyxFQUFFLEtBQUssSUFBRU4sR0FBRSxhQUFhLEtBQUssTUFBTTtBQUFBLFFBQUM7QUFBQyxlQUFPLEtBQUs7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMEJBQXlCLE9BQU0sU0FBU0wsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxFQUFFLFNBQVFDLEtBQUUsS0FBSyxFQUFFO0FBQU8sUUFBQUQsR0FBRSxTQUFPRCxHQUFFLE1BQU0sR0FBRUMsR0FBRSxjQUFZQyxHQUFFLE9BQU8sTUFBTTtBQUFFLGlCQUFRQyxLQUFFLEdBQUVBLEtBQUVGLEdBQUUsT0FBTyxRQUFPRTtBQUFJLHFCQUFTRixHQUFFLFlBQVlFLEVBQUMsS0FBR0YsR0FBRSxZQUFZLEtBQUssYUFBV0UsS0FBRSxFQUFFO0FBQUUsZUFBTyxLQUFLO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDRCQUEyQixPQUFNLFNBQVNILElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssRUFBRSxRQUFPQyxLQUFFLEtBQUssRUFBRTtBQUFRLFlBQUdELEdBQUUsTUFBTSxXQUFXLFNBQU87QUFBRSxVQUFBQyxHQUFFLFNBQU9ELEdBQUUsTUFBTTtBQUFBLGlCQUFtQkEsR0FBRSxPQUFPLFNBQU87QUFBRSxVQUFBQyxHQUFFLFNBQU9ELEdBQUUsT0FBTyxNQUFNO0FBQUEsaUJBQVUsS0FBSyxvQkFBbUI7QUFBQyxjQUFHQyxHQUFFLFNBQU9BLEdBQUUsT0FBTyxDQUFDLEdBQUVBLEdBQUUsWUFBWSxXQUFTQSxHQUFFLFlBQVksSUFBSyxTQUFTRixJQUFFO0FBQUMsWUFBQUEsR0FBRSxRQUFTLFNBQVNBLElBQUU7QUFBQyxjQUFBRSxHQUFFLE9BQU8sUUFBUUYsR0FBRSxDQUFDLElBQUUsS0FBR0EsR0FBRSxLQUFHRSxHQUFFLE9BQU8sS0FBS0YsR0FBRSxDQUFDO0FBQUEsWUFBQyxDQUFFO0FBQUEsVUFBQyxDQUFFLEdBQUVFLEdBQUUsU0FBTyxNQUFNLEtBQUssSUFBSSxJQUFJQSxHQUFFLE9BQU8sSUFBSSxLQUFLLFNBQVMsQ0FBQyxHQUFFLEtBQUssS0FBSyxJQUFHRCxHQUFFLE1BQU07QUFBc0IsZ0JBQUksRUFBRUEsRUFBQyxFQUFFLHlCQUF5QkEsSUFBRSxLQUFLLEtBQUlDLEdBQUUsUUFBUSxDQUFDLENBQUMsR0FBRSxLQUFLLHdCQUF3QkYsRUFBQztBQUFBLFFBQUM7QUFBTSxlQUFLLHdCQUF3QkEsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSwyQkFBMEIsT0FBTSxTQUFTQSxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEVBQUUsU0FBUUMsS0FBRSxLQUFLLEVBQUUsUUFBT0MsS0FBRSxDQUFDO0FBQUUsWUFBR0YsR0FBRSxZQUFXO0FBQUMsY0FBR0EsR0FBRSxPQUFPLFNBQU87QUFBRSxnQkFBRyxLQUFLLFdBQVc7QUFBRSx1QkFBUUcsS0FBRUYsR0FBRSxPQUFPLElBQUssU0FBU0YsSUFBRUMsSUFBRTtBQUFDLHVCQUFPRCxHQUFFLEtBQUssT0FBUSxTQUFTQSxJQUFFQyxJQUFFQyxJQUFFO0FBQUMseUJBQU9BLEdBQUUsVUFBVyxTQUFTRCxJQUFFO0FBQUMsMkJBQU9BLEdBQUUsTUFBSUQsR0FBRTtBQUFBLGtCQUFDLENBQUUsTUFBSUM7QUFBQSxnQkFBQyxDQUFFO0FBQUEsY0FBQyxDQUFFLEdBQUVJLEtBQUVELEdBQUUsT0FBUSxTQUFTSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsdUJBQU9BLEdBQUVILEVBQUMsRUFBRSxTQUFPQyxHQUFFLFNBQU9ELEtBQUVFO0FBQUEsY0FBQyxHQUFHLENBQUMsR0FBRUksS0FBRSxHQUFFQSxLQUFFRixHQUFFQyxFQUFDLEVBQUUsUUFBT0M7QUFBSSxnQkFBQUgsR0FBRSxLQUFLRyxLQUFFLENBQUM7QUFBQTtBQUFPLHVCQUFRQyxLQUFFLEdBQUVBLEtBQUVOLEdBQUUsT0FBT0EsR0FBRSxtQkFBbUIsRUFBRSxRQUFPTTtBQUFJLGdCQUFBSixHQUFFLEtBQUtJLEtBQUUsQ0FBQztBQUFFLFVBQUFOLEdBQUUsVUFBUSxDQUFDO0FBQUUsbUJBQVFPLEtBQUUsR0FBRUEsS0FBRVIsR0FBRSxRQUFPUTtBQUFJLFlBQUFQLEdBQUUsUUFBUSxLQUFLRSxFQUFDO0FBQUUsZUFBSyxFQUFFLFFBQVEsb0JBQWtCRixHQUFFLGFBQVc7QUFBQSxRQUFHO0FBQUMsWUFBRyxNQUFJRSxHQUFFLFFBQU87QUFBQyxVQUFBQSxLQUFFRixHQUFFLGFBQVcsQ0FBQyxJQUFFQSxHQUFFLE9BQU8sSUFBSyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsbUJBQU9BLEtBQUU7QUFBQSxVQUFDLENBQUU7QUFBRSxtQkFBUVEsS0FBRSxHQUFFQSxLQUFFVCxHQUFFLFFBQU9TO0FBQUksWUFBQVIsR0FBRSxRQUFRLEtBQUtFLEVBQUM7QUFBQSxRQUFDO0FBQUMsUUFBQUYsR0FBRSxTQUFPRSxJQUFFRCxHQUFFLE1BQU0sMEJBQXdCRCxHQUFFLGlCQUFlRSxHQUFFLElBQUssU0FBU0gsSUFBRTtBQUFDLGlCQUFPRSxHQUFFLE1BQU0sT0FBTyxVQUFVRixFQUFDO0FBQUEsUUFBQyxDQUFFLElBQUdDLEdBQUUsbUJBQWlCO0FBQUEsTUFBRSxFQUFDLEdBQUUsRUFBQyxLQUFJLGFBQVksT0FBTSxTQUFTRCxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEdBQUVDLEtBQUVELEdBQUUsUUFBT0UsS0FBRUYsR0FBRTtBQUFRLFlBQUcsS0FBSyw4QkFBOEIsR0FBRSxLQUFLLHFCQUFtQixPQUFHLEtBQUssSUFBSSxLQUFLLGFBQWEsR0FBRSxLQUFLLElBQUksS0FBSyxZQUFZLEdBQUVFLEdBQUUsY0FBWSxLQUFLLG9CQUFvQkgsRUFBQyxHQUFFLEtBQUssVUFBVSxpQkFBaUIsS0FBRyxLQUFLLHVCQUF1QkEsRUFBQyxHQUFFRSxHQUFFLE1BQU0sU0FBUTtBQUFDLGNBQUlFLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRztBQUFFLFVBQUFELEdBQUUsU0FBT0MsR0FBRSwwQkFBMEJELEdBQUUsTUFBTTtBQUFBLFFBQUM7QUFBQyxhQUFLLFVBQVUsZ0JBQWdCLEdBQUVBLEdBQUUsZUFBYUEsR0FBRSxzQkFBb0IsS0FBSyxVQUFVLHVCQUF1QixJQUFHLEtBQUssVUFBVSxpQkFBaUIsR0FBRUEsR0FBRSxzQkFBb0JBLEdBQUUsZUFBYSxjQUFZRCxHQUFFLE1BQU0sUUFBTSxNQUFJQSxHQUFFLE9BQU8sVUFBUSxNQUFJQSxHQUFFLE1BQU0sV0FBVyxXQUFTLEtBQUsseUJBQXlCRixFQUFDO0FBQUUsaUJBQVFLLEtBQUUsS0FBSyxVQUFVLGtCQUFrQkYsR0FBRSxNQUFNLEdBQUVHLEtBQUUsR0FBRUEsS0FBRUQsR0FBRSxRQUFPQztBQUFJLGNBQUcsTUFBTSxRQUFRRCxHQUFFQyxFQUFDLENBQUMsR0FBRTtBQUFDLFlBQUFILEdBQUUsZUFBYTtBQUFHO0FBQUEsVUFBSztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxpQ0FBZ0MsT0FBTSxXQUFVO0FBQUMsWUFBSUgsS0FBRSxNQUFLQyxLQUFFLEtBQUs7QUFBRSxRQUFBQSxHQUFFLFFBQVEscUJBQW1CQSxHQUFFLFFBQVEsZ0JBQWdCLElBQUssU0FBU0MsSUFBRUMsSUFBRTtBQUFDLGNBQUdILEdBQUUsRUFBRSxRQUFRLG1CQUFpQixDQUFDQyxHQUFFLE9BQU8sTUFBTTtBQUFRLG1CQUFPQyxHQUFFO0FBQUEsUUFBSyxDQUFFO0FBQUEsTUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFFRjtBQUFBLElBQUMsRUFBRTtBQUF2ay9FLFFBQXlrL0UsSUFBRSxXQUFVO0FBQUMsZUFBU0EsR0FBRUMsSUFBRTtBQUFDLFVBQUUsTUFBS0QsRUFBQyxHQUFFLEtBQUssTUFBSUMsSUFBRSxLQUFLLElBQUVBLEdBQUU7QUFBQSxNQUFDO0FBQUMsYUFBTyxFQUFFRCxJQUFFLENBQUMsRUFBQyxLQUFJLFlBQVcsT0FBTSxTQUFTQSxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLENBQUMsR0FBRUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLFFBQU9DLEtBQUUsRUFBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxNQUFJLFVBQVUsQ0FBQyxHQUFFQyxLQUFFLEtBQUssR0FBRUMsS0FBRSxXQUFTUixHQUFFRyxFQUFDLElBQUUsS0FBR0gsR0FBRUcsRUFBQyxHQUFFTSxLQUFFRCxJQUFFRSxLQUFFSCxHQUFFLFFBQVEsaUJBQWdCSSxLQUFFSixHQUFFLE9BQU8sTUFBTSxPQUFPLFdBQVVLLEtBQUUsT0FBR0MsS0FBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLEdBQUVDLEtBQUVOO0FBQUUsUUFBQUYsT0FBSUcsS0FBRUksR0FBRSxhQUFhSCxJQUFFRixJQUFFTSxJQUFFLEVBQUMsR0FBRVgsSUFBRSxlQUFjLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRSxZQUFXLEdBQUVJLEdBQUMsQ0FBQyxHQUFFLFdBQVNJLE9BQUlGLEtBQUVFLEdBQUVILElBQUVSLEdBQUVHLEVBQUMsR0FBRSxFQUFDLEdBQUVBLElBQUUsZUFBYyxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsWUFBVyxHQUFFSSxHQUFDLENBQUM7QUFBSSxZQUFJUSxJQUFFQztBQUFFLFFBQUFmLEdBQUUsU0FBTyxLQUFHYyxLQUFFZCxHQUFFRSxFQUFDLEVBQUUsTUFBS2EsS0FBRSxNQUFLZixHQUFFLFFBQVMsU0FBU0QsSUFBRTtBQUFDLHNCQUFVQSxHQUFFLE9BQUtnQixLQUFFLFNBQU8sVUFBUWhCLEdBQUUsT0FBS2dCLEtBQUUsVUFBUSxXQUFTaEIsR0FBRSxPQUFLZ0IsS0FBRSxRQUFNLGFBQVdoQixHQUFFLFNBQU9nQixLQUFFO0FBQUEsUUFBTyxDQUFFLEdBQUVKLEtBQUVJLE9BQUlELElBQUViLEtBQUVELEdBQUVFLEVBQUMsRUFBRSxVQUFTTSxLQUFFUixHQUFFRSxFQUFDLEVBQUUsU0FBTyxlQUFhSSxHQUFFLE9BQU8sTUFBTSxRQUFNLFdBQVNJLE9BQUlGLEtBQUUsS0FBSSxXQUFTQSxPQUFJQSxLQUFFLEtBQUlBLEtBQUUsTUFBTSxRQUFRQSxFQUFDLElBQUVBLEtBQUVBLEdBQUUsU0FBUztBQUFFLFlBQUlRLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFLENBQUM7QUFBRSxRQUFBQSxLQUFFWCxHQUFFLFFBQVEsaUJBQWVELEtBQUVXLEdBQUUsYUFBYVIsSUFBRSxTQUFTSixJQUFFLEVBQUUsR0FBRSxNQUFLLFVBQVUsT0FBT0UsR0FBRSxPQUFPLE1BQU0sT0FBTyxRQUFPLE9BQU8sR0FBRSxLQUFFLElBQUVVLEdBQUUsYUFBYVIsSUFBRSxTQUFTSixJQUFFLEVBQUUsQ0FBQztBQUFFLFlBQUllLEtBQUUsQ0FBQ2IsR0FBRSxPQUFPLE1BQU0sT0FBTyxrQkFBZ0IsS0FBSyxJQUFJO0FBQVUsZUFBTSxDQUFDLE1BQU0sUUFBUUUsRUFBQyxNQUFJLE1BQUlBLEdBQUUsUUFBUSxLQUFLLEtBQUcsTUFBSUEsR0FBRSxZQUFZLEVBQUUsUUFBUSxTQUFTLEtBQUdBLEdBQUUsWUFBWSxFQUFFLFFBQVEsVUFBVSxLQUFHLEtBQUdMLEdBQUUsUUFBUUssRUFBQyxLQUFHLEtBQUdXLFFBQUtYLEtBQUUsS0FBSSxFQUFDLEdBQUVQLElBQUUsTUFBS08sSUFBRSxVQUFTUyxJQUFFLFFBQU9OLEdBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksK0JBQThCLE9BQU0sU0FBU1osSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxHQUFFQyxLQUFFRCxHQUFFLE9BQU8sTUFBTTtBQUFXLGVBQU0saUJBQWVDLE9BQUlBLEtBQUUsS0FBSyxNQUFNRCxHQUFFLFFBQVEsWUFBVSxHQUFHLElBQUdDLEtBQUVGLE1BQUdGLEtBQUUsS0FBSyxNQUFNRSxNQUFHRSxLQUFFLEVBQUUsS0FBRyxNQUFJSCxHQUFFLE9BQUssS0FBSUE7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksNkJBQTRCLE9BQU0sU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSztBQUFFLFlBQUcsTUFBSUwsTUFBR0ssR0FBRSxRQUFRLDJCQUF5QkosR0FBRSxPQUFLLEtBQUlELE9BQUlFLEtBQUUsS0FBR0csR0FBRSxRQUFRLDBCQUF3QkosR0FBRSxPQUFLLEtBQUlJLEdBQUUsT0FBTyxNQUFNLE9BQU8seUJBQXVCRixHQUFFLFNBQU8sR0FBRTtBQUFDLGNBQUlHLEtBQUVGLEdBQUVBLEdBQUUsU0FBTyxDQUFDO0FBQUUsVUFBQUgsR0FBRSxJQUFFSyxHQUFFLFNBQVMsU0FBT0QsR0FBRSxRQUFRLGdCQUFjLEtBQUssSUFBSUEsR0FBRSxPQUFPLE1BQU0sT0FBTyxNQUFNLElBQUUsS0FBRyxRQUFNQyxHQUFFLE1BQUlMLEdBQUUsT0FBSztBQUFBLFFBQUc7QUFBQyxlQUFPQTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSwwQkFBeUIsT0FBTSxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLO0FBQUUsZUFBT0EsR0FBRSxPQUFPLE1BQU1GLEVBQUMsS0FBR0UsR0FBRSxPQUFPLE1BQU1GLEVBQUMsRUFBRSxZQUFVQyxHQUFFLFFBQVEsR0FBRUE7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksaUJBQWdCLE9BQU0sU0FBU0QsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUc7QUFBRSxlQUFNLENBQUNELEdBQUUsT0FBTyxNQUFNRCxFQUFDLEVBQUUsUUFBTSxDQUFDQyxHQUFFLE9BQU8sTUFBTUQsRUFBQyxFQUFFLHFCQUFtQkUsR0FBRSxhQUFhRixFQUFDLEtBQUcsT0FBS0MsR0FBRSxRQUFRLHVCQUF1QixRQUFRRCxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHFCQUFvQixPQUFNLFNBQVNBLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUs7QUFBRSxlQUFPLE1BQU0sUUFBUUYsRUFBQyxLQUFHRSxHQUFFLFFBQVEsV0FBV0QsRUFBQyxLQUFHLEtBQUssSUFBSSxNQUFNLGdCQUFnQkQsSUFBRUUsR0FBRSxRQUFRLFdBQVdELEVBQUMsRUFBRSxPQUFPLFFBQU8sS0FBRSxHQUFFRDtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxrQkFBaUIsT0FBTSxTQUFTQSxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEdBQUVDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFRixHQUFFLFFBQVE7QUFBVyxZQUFHSixHQUFFLFFBQU1GLEtBQUUsR0FBRTtBQUFDLG1CQUFLTSxHQUFFLE9BQU8sTUFBTUgsRUFBQyxFQUFFLGFBQVdKLE1BQUdHLEdBQUU7QUFBTyxtQkFBUU8sS0FBRVQsSUFBRVMsTUFBRyxHQUFFQSxNQUFJO0FBQUMsZ0JBQUlDLEtBQUVGLEtBQUVSLEtBQUUsS0FBR00sR0FBRSxPQUFPLE1BQU1ILEVBQUMsRUFBRSxPQUFPLFVBQVE7QUFBRSxZQUFBRyxHQUFFLFFBQVEsb0JBQWtCSSxLQUFFTixLQUFFSyxLQUFHLGNBQVlILEdBQUUsT0FBTyxNQUFNLFNBQU9JLE1BQUdOLEtBQUU7QUFBRyxnQkFBSU8sS0FBRUosR0FBRSxTQUFTUixLQUFFRSxHQUFFLFVBQVFDLEdBQUUsUUFBTUEsR0FBRSxTQUFRUSxLQUFFUixHQUFFLFNBQVFILEtBQUVFLEdBQUUsVUFBUUMsR0FBRSxTQUFRUSxLQUFFUixHQUFFLFNBQVFBLEdBQUUsS0FBSztBQUFFLFlBQUFHLEdBQUUsSUFBSU0sRUFBQyxHQUFFSCxNQUFHSjtBQUFBLFVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFFTDtBQUFBLElBQUMsRUFBRTtBQUF6NWtGLFFBQTI1a0YsSUFBRSxXQUFVO0FBQUMsZUFBU0EsR0FBRUMsSUFBRTtBQUFDLFVBQUUsTUFBS0QsRUFBQyxHQUFFLEtBQUssTUFBSUMsSUFBRSxLQUFLLElBQUVBLEdBQUU7QUFBQSxNQUFDO0FBQUMsYUFBTyxFQUFFRCxJQUFFLENBQUMsRUFBQyxLQUFJLGdCQUFlLE9BQU0sU0FBU0EsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsV0FBV0YsR0FBRSxlQUFlLE1BQUssT0FBTyxDQUFDLEdBQUVHLEtBQUUsV0FBV0gsR0FBRSxlQUFlLE1BQUssUUFBUSxDQUFDO0FBQUUsUUFBQUEsR0FBRSxlQUFlLE1BQUssU0FBUUUsS0FBRUQsRUFBQyxHQUFFRCxHQUFFLGVBQWUsTUFBSyxVQUFTRyxLQUFFRixFQUFDLEdBQUVELEdBQUUsZUFBZSxNQUFLLFdBQVUsU0FBT0UsS0FBRSxNQUFJQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHVCQUFzQixPQUFNLFNBQVNILElBQUU7QUFBQyxZQUFHLENBQUMsRUFBRSxPQUFPO0FBQUUsaUJBQU9BLEdBQUUsUUFBUSxXQUFVLFFBQVE7QUFBRSxZQUFJQyxLQUFFLEdBQUVDLEtBQUVGLEdBQUUsUUFBUSwyQ0FBMkMsU0FBU0EsSUFBRTtBQUFDLGlCQUFPLE1BQUksRUFBRUMsS0FBRSw4RUFBNEVEO0FBQUEsUUFBQyxDQUFFO0FBQUUsZUFBT0UsTUFBR0EsS0FBRUEsR0FBRSxRQUFRLG1CQUFrQixFQUFFLEdBQUcsUUFBUSxzQkFBcUIsSUFBSTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxnQkFBZSxPQUFNLFNBQVNGLElBQUU7QUFBQyxnQkFBTUEsT0FBSUEsS0FBRTtBQUFHLFlBQUlDLEtBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxNQUFNLElBQUk7QUFBRSxZQUFHLE1BQUlELElBQUU7QUFBQyxjQUFJRSxLQUFFLEtBQUssRUFBRSxRQUFRLElBQUksTUFBTSxLQUFLLFVBQVUsSUFBRTtBQUFFLGVBQUssYUFBYUEsSUFBRUYsRUFBQyxHQUFFQyxLQUFHLElBQUksZ0JBQWUsa0JBQWtCQyxFQUFDO0FBQUEsUUFBQztBQUFDLGVBQU8sS0FBSyxvQkFBb0JELEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksV0FBVSxPQUFNLFdBQVU7QUFBQyxZQUFJRCxLQUFFLEtBQUssR0FBRUMsS0FBRUQsR0FBRSxRQUFRLElBQUksT0FBTyx1QkFBdUIsd0JBQXdCLEdBQUVFLEtBQUVGLEdBQUUsUUFBUSxJQUFJLE9BQU8sdUJBQXVCLHdCQUF3QixHQUFFRyxLQUFFSCxHQUFFLFFBQVEsSUFBSSxPQUFPLGlCQUFpQixtREFBbUQ7QUFBRSxjQUFNLFVBQVUsUUFBUSxLQUFLRyxJQUFHLFNBQVNILElBQUU7QUFBQyxVQUFBQSxHQUFFLGFBQWEsU0FBUSxDQUFDO0FBQUEsUUFBQyxDQUFFLEdBQUVDLE1BQUdBLEdBQUUsQ0FBQyxNQUFJQSxHQUFFLENBQUMsRUFBRSxhQUFhLEtBQUksSUFBSSxHQUFFQSxHQUFFLENBQUMsRUFBRSxhQUFhLE1BQUssSUFBSSxHQUFFQSxHQUFFLENBQUMsRUFBRSxhQUFhLE1BQUssSUFBSSxJQUFHQyxNQUFHQSxHQUFFLENBQUMsTUFBSUEsR0FBRSxDQUFDLEVBQUUsYUFBYSxLQUFJLElBQUksR0FBRUEsR0FBRSxDQUFDLEVBQUUsYUFBYSxNQUFLLElBQUksR0FBRUEsR0FBRSxDQUFDLEVBQUUsYUFBYSxNQUFLLElBQUk7QUFBQSxNQUFFLEVBQUMsR0FBRSxFQUFDLEtBQUksVUFBUyxPQUFNLFdBQVU7QUFBQyxhQUFLLFFBQVE7QUFBRSxZQUFJRixLQUFFLEtBQUssYUFBYSxHQUFFQyxLQUFFLElBQUksS0FBSyxDQUFDRCxFQUFDLEdBQUUsRUFBQyxNQUFLLDhCQUE2QixDQUFDO0FBQUUsZUFBTyxJQUFJLGdCQUFnQkMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxXQUFVLE9BQU0sU0FBU0QsSUFBRTtBQUFDLFlBQUlDLEtBQUU7QUFBSyxlQUFPLElBQUksUUFBUyxTQUFTQyxJQUFFO0FBQUMsY0FBSUMsS0FBRUYsR0FBRSxHQUFFRyxLQUFFSixLQUFFQSxHQUFFLFNBQU9BLEdBQUUsUUFBTUcsR0FBRSxRQUFRLFdBQVM7QUFBRSxVQUFBRixHQUFFLFFBQVE7QUFBRSxjQUFJSSxLQUFFLFNBQVMsY0FBYyxRQUFRO0FBQUUsVUFBQUEsR0FBRSxRQUFNRixHQUFFLFFBQVEsV0FBU0MsSUFBRUMsR0FBRSxTQUFPLFNBQVNGLEdBQUUsUUFBUSxJQUFJLE9BQU8sTUFBTSxRQUFPLEVBQUUsSUFBRUM7QUFBRSxjQUFJRSxLQUFFLGtCQUFnQkgsR0FBRSxPQUFPLE1BQU0sYUFBVyxTQUFPQSxHQUFFLE9BQU8sTUFBTSxZQUFXSSxLQUFFRixHQUFFLFdBQVcsSUFBSTtBQUFFLFVBQUFFLEdBQUUsWUFBVUQsSUFBRUMsR0FBRSxTQUFTLEdBQUUsR0FBRUYsR0FBRSxRQUFNRCxJQUFFQyxHQUFFLFNBQU9ELEVBQUM7QUFBRSxjQUFJSSxLQUFFUCxHQUFFLGFBQWFHLEVBQUM7QUFBRSxjQUFHLE9BQU8sU0FBTyxFQUFFLE9BQU8sR0FBRTtBQUFDLGdCQUFJSyxLQUFFLE9BQU8sTUFBTSxNQUFNLFdBQVdGLElBQUVDLElBQUUsRUFBQyxhQUFZLE1BQUcsa0JBQWlCLEtBQUUsQ0FBQztBQUFFLFlBQUFDLEdBQUUsTUFBTTtBQUFFLGdCQUFJQyxLQUFFTCxHQUFFLFNBQVM7QUFBRSxZQUFBSSxHQUFFLEtBQUssR0FBRVAsR0FBRSxFQUFDLE1BQUtRLEdBQUMsQ0FBQztBQUFBLFVBQUMsT0FBSztBQUFDLGdCQUFJQyxLQUFFLHdCQUFzQixtQkFBbUJILEVBQUMsR0FBRUksS0FBRSxJQUFJO0FBQU0sWUFBQUEsR0FBRSxjQUFZLGFBQVlBLEdBQUUsU0FBTyxXQUFVO0FBQUMsa0JBQUdMLEdBQUUsVUFBVUssSUFBRSxHQUFFLENBQUMsR0FBRVAsR0FBRSxVQUFTO0FBQUMsb0JBQUlMLEtBQUVLLEdBQUUsU0FBUztBQUFFLGdCQUFBSCxHQUFFLEVBQUMsTUFBS0YsR0FBQyxDQUFDO0FBQUEsY0FBQyxPQUFLO0FBQUMsb0JBQUlDLEtBQUVJLEdBQUUsVUFBVSxXQUFXO0FBQUUsZ0JBQUFILEdBQUUsRUFBQyxRQUFPRCxHQUFDLENBQUM7QUFBQSxjQUFDO0FBQUEsWUFBQyxHQUFFVyxHQUFFLE1BQUlEO0FBQUEsVUFBQztBQUFBLFFBQUMsQ0FBRTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxlQUFjLE9BQU0sV0FBVTtBQUFDLGFBQUssZ0JBQWdCLEtBQUssT0FBTyxHQUFFLEtBQUssRUFBRSxPQUFPLE1BQU0sUUFBUSxPQUFPLElBQUksVUFBUyxNQUFNO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGVBQWMsT0FBTSxXQUFVO0FBQUMsWUFBSVgsS0FBRTtBQUFLLGFBQUssUUFBUSxFQUFFLEtBQU0sU0FBU0MsSUFBRTtBQUFDLGNBQUlDLEtBQUVELEdBQUUsUUFBT0UsS0FBRUYsR0FBRTtBQUFLLFVBQUFFLEtBQUUsVUFBVSxpQkFBaUJBLElBQUVILEdBQUUsRUFBRSxRQUFRLFVBQVEsTUFBTSxJQUFFQSxHQUFFLGdCQUFnQkUsSUFBRUYsR0FBRSxFQUFFLE9BQU8sTUFBTSxRQUFRLE9BQU8sSUFBSSxVQUFTLE1BQU07QUFBQSxRQUFDLENBQUU7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksZUFBYyxPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLE1BQUtDLEtBQUVGLEdBQUUsUUFBT0csS0FBRUgsR0FBRSxVQUFTSSxLQUFFSixHQUFFLGlCQUFnQkssS0FBRSxXQUFTRCxLQUFFLE1BQUlBLElBQUVFLEtBQUVOLEdBQUUsZUFBY08sS0FBRSxXQUFTRCxLQUFFLE9BQUtBLElBQUVFLEtBQUUsS0FBSztBQUFFLFFBQUFOLE9BQUlBLEtBQUVNLEdBQUUsT0FBTztBQUFRLFlBQUlDLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLENBQUMsR0FBRUMsS0FBRSxJQUFHQyxLQUFFSixHQUFFLFFBQVEsT0FBTyxJQUFLLFNBQVNSLElBQUVDLElBQUU7QUFBQyxpQkFBTSxPQUFLTyxHQUFFLFFBQVEsdUJBQXVCLFFBQVFQLEVBQUMsSUFBRUQsS0FBRSxDQUFDO0FBQUEsUUFBQyxDQUFFLEdBQUVjLEtBQUUsS0FBSyxJQUFJLE1BQU0sTUFBSyxFQUFFWixHQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLGlCQUFPQSxHQUFFLE9BQUtBLEdBQUUsS0FBSyxTQUFPO0FBQUEsUUFBQyxDQUFFLENBQUMsQ0FBQyxHQUFFZSxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRUUsS0FBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLEdBQUVDLEtBQUUsU0FBU2xCLElBQUU7QUFBQyxjQUFJRSxLQUFFO0FBQUcsY0FBR00sR0FBRSxRQUFRLFlBQVc7QUFBQyxnQkFBRyxlQUFhQSxHQUFFLE9BQU8sTUFBTSxRQUFNQSxHQUFFLE9BQU8sTUFBTTtBQUFzQixrQkFBR0EsR0FBRSxRQUFRLGlCQUFnQjtBQUFDLG9CQUFJTCxLQUFFSyxHQUFFLFFBQVEsaUJBQWlCLENBQUMsR0FBRUosS0FBRSxJQUFJLEVBQUVILEdBQUUsR0FBRyxFQUFFLDJCQUEyQjtBQUFFLGdCQUFBQyxLQUFFQyxHQUFFSyxHQUFFLFFBQVEsT0FBT1IsRUFBQyxHQUFFLEVBQUMsYUFBWUksSUFBRSxnQkFBZUosSUFBRSxHQUFFUSxHQUFDLENBQUM7QUFBQSxjQUFDO0FBQU0sZ0JBQUFOLEtBQUVlLEdBQUUsU0FBU1QsR0FBRSxRQUFRLFFBQU9BLEdBQUUsUUFBUSxpQkFBZ0IsR0FBRVIsRUFBQyxFQUFFO0FBQUssMkJBQWFRLEdBQUUsT0FBTyxNQUFNLFNBQU9BLEdBQUUsT0FBTyxNQUFNLFdBQVcsU0FBT04sS0FBRU0sR0FBRSxPQUFPLE1BQU0sV0FBV1IsRUFBQyxJQUFFUSxHQUFFLE9BQU8sT0FBTyxXQUFTTixLQUFFTSxHQUFFLE9BQU8sT0FBT1IsRUFBQztBQUFBLFVBQUc7QUFBTSxZQUFBRSxLQUFFTSxHQUFFLE9BQU8sT0FBT1IsRUFBQztBQUFFLGlCQUFPLE1BQU0sUUFBUUUsRUFBQyxNQUFJQSxLQUFFQSxHQUFFLEtBQUssR0FBRyxJQUFHLEVBQUUsU0FBU0EsRUFBQyxJQUFFQSxLQUFFQSxHQUFFLE1BQU1HLEVBQUMsRUFBRSxLQUFLLEVBQUU7QUFBQSxRQUFDLEdBQUVjLEtBQUUsU0FBU25CLElBQUVDLElBQUU7QUFBQyxjQUFHUSxHQUFFLFVBQVEsTUFBSVIsTUFBR1MsR0FBRSxLQUFLRCxHQUFFLEtBQUtKLEVBQUMsQ0FBQyxHQUFFTCxHQUFFLE1BQUs7QUFBQyxZQUFBQSxHQUFFLE9BQUtBLEdBQUUsS0FBSyxVQUFRQSxHQUFFLFFBQU0sRUFBRSxNQUFNYyxFQUFDLENBQUMsRUFBRSxJQUFLLFdBQVU7QUFBQyxxQkFBTTtBQUFBLFlBQUUsQ0FBRTtBQUFFLHFCQUFRWCxLQUFFLEdBQUVBLEtBQUVILEdBQUUsS0FBSyxRQUFPRyxNQUFJO0FBQUMsY0FBQU0sS0FBRSxDQUFDO0FBQUUsa0JBQUlMLEtBQUVjLEdBQUVmLEVBQUM7QUFBRSxrQkFBR0MsT0FBSVcsR0FBRSxXQUFXLElBQUVYLEtBQUVGLEdBQUVELEVBQUMsRUFBRSxLQUFLRSxFQUFDLEVBQUUsSUFBRVksR0FBRSxnQkFBZ0IsTUFBSVgsS0FBRUYsR0FBRUQsRUFBQyxFQUFFLEtBQUtFLEVBQUMsSUFBRUQsR0FBRUQsRUFBQyxFQUFFLEtBQUtFLEVBQUMsRUFBRSxDQUFDLElBQUUsTUFBSyxNQUFJRixJQUFFO0FBQUMsZ0JBQUFRLEdBQUUsTUFBTUUsS0FBRVAsSUFBRSxlQUFhSSxHQUFFLE9BQU8sTUFBTSxRQUFNLE9BQU9HLEVBQUMsRUFBRSxVQUFRLEtBQUdILEdBQUUsT0FBTyxNQUFNLFFBQVEsT0FBTyxJQUFJLGNBQWNKLEVBQUMsSUFBRSxFQUFFLFNBQVNBLEVBQUMsSUFBRUEsS0FBRUEsR0FBRSxNQUFNQyxFQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUU7QUFBRSx5QkFBUUMsS0FBRSxHQUFFQSxLQUFFRSxHQUFFLFFBQVEsT0FBTyxRQUFPRixNQUFJO0FBQUMsc0JBQUlDO0FBQUUsc0JBQUdRLEdBQUUsV0FBVztBQUFFLG9CQUFBTixHQUFFLEtBQUssVUFBUUYsS0FBRUwsR0FBRUksRUFBQyxFQUFFLEtBQUtILEVBQUMsTUFBSSxXQUFTSSxLQUFFLFNBQU9BLEdBQUUsQ0FBQztBQUFBO0FBQU8sb0JBQUFFLEdBQUUsS0FBS0csR0FBRU4sRUFBQyxFQUFFSCxFQUFDLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBQyxlQUFDLGtCQUFnQkssR0FBRSxPQUFPLE1BQU0sUUFBTVIsR0FBRSxRQUFNLGtCQUFnQkEsR0FBRSxVQUFRUyxHQUFFLElBQUksR0FBRUEsR0FBRSxLQUFLRCxHQUFFLFFBQVEsY0FBY1AsRUFBQyxFQUFFRSxFQUFDLENBQUMsR0FBRU0sR0FBRSxLQUFLRCxHQUFFLFFBQVEsY0FBY1AsRUFBQyxFQUFFRSxFQUFDLENBQUMsR0FBRU0sR0FBRSxLQUFLRCxHQUFFLFFBQVEsY0FBY1AsRUFBQyxFQUFFRSxFQUFDLENBQUMsR0FBRU0sR0FBRSxLQUFLRCxHQUFFLFFBQVEsY0FBY1AsRUFBQyxFQUFFRSxFQUFDLENBQUMsS0FBSSxjQUFZSyxHQUFFLE9BQU8sTUFBTSxRQUFNUixHQUFFLFFBQU0sY0FBWUEsR0FBRSxVQUFRUyxHQUFFLElBQUksR0FBRUEsR0FBRSxLQUFLRCxHQUFFLFFBQVEsY0FBY1AsRUFBQyxFQUFFRSxFQUFDLENBQUMsR0FBRU0sR0FBRSxLQUFLRCxHQUFFLFFBQVEsY0FBY1AsRUFBQyxFQUFFRSxFQUFDLENBQUMsR0FBRU0sR0FBRSxLQUFLRCxHQUFFLFFBQVEsY0FBY1AsRUFBQyxFQUFFRSxFQUFDLENBQUMsR0FBRU0sR0FBRSxLQUFLRCxHQUFFLFFBQVEsY0FBY1AsRUFBQyxFQUFFRSxFQUFDLENBQUMsR0FBRU0sR0FBRSxLQUFLRCxHQUFFLFFBQVEsY0FBY1AsRUFBQyxFQUFFRSxFQUFDLENBQUMsSUFBRyxlQUFhSyxHQUFFLE9BQU8sTUFBTSxTQUFPQyxHQUFFLElBQUksR0FBRUEsR0FBRSxLQUFLRCxHQUFFLFFBQVEsaUJBQWlCUCxFQUFDLEVBQUVFLEVBQUMsQ0FBQyxHQUFFTSxHQUFFLEtBQUtELEdBQUUsUUFBUSxlQUFlUCxFQUFDLEVBQUVFLEVBQUMsQ0FBQyxJQUFHTSxHQUFFLFVBQVFDLEdBQUUsS0FBS0QsR0FBRSxLQUFLSixFQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsVUFBQztBQUFDLGNBQUlNO0FBQUEsUUFBQztBQUFFLFFBQUFGLEdBQUUsS0FBS0QsR0FBRSxPQUFPLE1BQU0sUUFBUSxPQUFPLElBQUksY0FBYyxHQUFFLGNBQVlBLEdBQUUsT0FBTyxNQUFNLFFBQU1DLEdBQUUsS0FBSyxTQUFTLEdBQUVBLEdBQUUsS0FBSyxJQUFJLEdBQUVBLEdBQUUsS0FBSyxRQUFRLEdBQUVBLEdBQUUsS0FBSyxJQUFJLEdBQUVBLEdBQUUsS0FBSyxTQUFTLEtBQUcsa0JBQWdCRCxHQUFFLE9BQU8sTUFBTSxRQUFNQyxHQUFFLEtBQUssTUFBTSxHQUFFQSxHQUFFLEtBQUssTUFBTSxHQUFFQSxHQUFFLEtBQUssS0FBSyxHQUFFQSxHQUFFLEtBQUssT0FBTyxLQUFHLGVBQWFELEdBQUUsT0FBTyxNQUFNLFFBQU1DLEdBQUUsS0FBSyxTQUFTLEdBQUVBLEdBQUUsS0FBSyxTQUFTLEtBQUdQLEdBQUUsSUFBSyxTQUFTRixJQUFFQyxJQUFFO0FBQUMsY0FBSUMsTUFBR0YsR0FBRSxPQUFLQSxHQUFFLE9BQUssVUFBVSxPQUFPQyxFQUFDLEtBQUc7QUFBRyxVQUFBTyxHQUFFLFFBQVEsY0FBWUMsR0FBRSxLQUFLUCxHQUFFLE1BQU1HLEVBQUMsRUFBRSxLQUFLLEVBQUUsSUFBRUgsR0FBRSxNQUFNRyxFQUFDLEVBQUUsS0FBSyxFQUFFLElBQUUsVUFBVSxPQUFPSixFQUFDLENBQUM7QUFBQSxRQUFDLENBQUUsR0FBRU8sR0FBRSxRQUFRLGVBQWFDLEdBQUUsS0FBS0QsR0FBRSxPQUFPLE1BQU0sUUFBUSxPQUFPLElBQUksV0FBVyxHQUFFRSxHQUFFLEtBQUtELEdBQUUsS0FBS0osRUFBQyxDQUFDLElBQUdILEdBQUUsSUFBSyxTQUFTRixJQUFFQyxJQUFFO0FBQUMsVUFBQU8sR0FBRSxRQUFRLGFBQVdXLEdBQUVuQixJQUFFQyxFQUFDLE1BQUlRLEtBQUUsQ0FBQyxHQUFHLEtBQUtELEdBQUUsUUFBUSxPQUFPUCxFQUFDLEVBQUUsTUFBTUksRUFBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUVJLEdBQUUsS0FBS0csR0FBRVgsRUFBQyxDQUFDLEdBQUVTLEdBQUUsS0FBS0QsR0FBRSxLQUFLSixFQUFDLENBQUM7QUFBQSxRQUFFLENBQUUsR0FBRU0sTUFBR0QsR0FBRSxLQUFLSCxFQUFDLEdBQUUsS0FBSyxnQkFBZ0Isa0NBQWdDLG1CQUFtQixXQUFTSSxFQUFDLEdBQUVSLE1BQUdLLEdBQUUsT0FBTyxNQUFNLFFBQVEsT0FBTyxJQUFJLFVBQVMsTUFBTTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxtQkFBa0IsT0FBTSxTQUFTUixJQUFFQyxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxTQUFTLGNBQWMsR0FBRztBQUFFLFFBQUFBLEdBQUUsT0FBS0gsSUFBRUcsR0FBRSxZQUFVRixNQUFHLEtBQUssRUFBRSxRQUFRLFdBQVNDLElBQUUsU0FBUyxLQUFLLFlBQVlDLEVBQUMsR0FBRUEsR0FBRSxNQUFNLEdBQUUsU0FBUyxLQUFLLFlBQVlBLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUVIO0FBQUEsSUFBQyxFQUFFO0FBQTk5d0YsUUFBZyt3RixJQUFFLFdBQVU7QUFBQyxlQUFTQSxHQUFFQyxJQUFFQyxJQUFFO0FBQUMsVUFBRSxNQUFLRixFQUFDLEdBQUUsS0FBSyxNQUFJQyxJQUFFLEtBQUssU0FBT0MsSUFBRSxLQUFLLElBQUVELEdBQUU7QUFBRSxZQUFJRyxLQUFFLEtBQUs7QUFBRSxhQUFLLFlBQVUsSUFBSSxFQUFFSCxFQUFDLEdBQUUsS0FBSyxjQUFZRyxHQUFFLFFBQVEsT0FBTyxNQUFNLEdBQUVBLEdBQUUsUUFBUSxnQkFBZ0IsU0FBTyxLQUFHLENBQUNBLEdBQUUsUUFBUSxvQkFBa0IsS0FBSyxjQUFZQSxHQUFFLFFBQVEsZ0JBQWdCLE1BQU0sSUFBR0EsR0FBRSxPQUFPLE1BQU0sd0JBQXNCLEtBQUssY0FBWUEsR0FBRSxPQUFPLE1BQU0sc0JBQXFCLEtBQUssY0FBWSxDQUFDLEdBQUUsS0FBSyxtQkFBaUIsQ0FBQyxHQUFFLFVBQVFBLEdBQUUsT0FBTyxNQUFNLFdBQVMsS0FBSyxPQUFLLElBQUUsS0FBSyxPQUFLQSxHQUFFLFFBQVEsYUFBVyxHQUFFLEtBQUssT0FBSyxLQUFLLE9BQUtBLEdBQUUsT0FBTyxNQUFNLFdBQVcsU0FBUSxLQUFLLDBCQUF3QixVQUFRQSxHQUFFLE9BQU8sTUFBTSxRQUFNQSxHQUFFLE9BQU8sWUFBWSxJQUFJLFlBQVcsS0FBSyxnQkFBY0EsR0FBRSxPQUFPLE1BQU0sT0FBTyxNQUFNLFVBQVMsS0FBSyxrQkFBZ0JBLEdBQUUsT0FBTyxNQUFNLE9BQU8sTUFBTSxZQUFXLEtBQUssa0JBQWdCQSxHQUFFLE9BQU8sTUFBTSxPQUFPLE1BQU0sUUFBTyxLQUFLLG1CQUFpQkEsR0FBRSxPQUFPLE1BQU0sV0FBVyxPQUFNLEtBQUssNEJBQTBCLEtBQUssbUJBQWlCQSxHQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsV0FBVyxNQUFNLFNBQVMsSUFBRyxLQUFLLGlCQUFpQixRQUFRLEdBQUcsSUFBRSxLQUFHLEtBQUssbUJBQWlCQSxHQUFFLFFBQVEsWUFBVSxTQUFTLEtBQUssa0JBQWlCLEVBQUUsSUFBRSxNQUFJLEtBQUssbUJBQWlCLFNBQVMsS0FBSyxrQkFBaUIsRUFBRSxHQUFFLEtBQUssb0JBQWtCQSxHQUFFLE9BQU8sTUFBTSxXQUFXLFFBQU8sS0FBSyxRQUFNQSxHQUFFLE9BQU8sTUFBTSxDQUFDO0FBQUEsTUFBQztBQUFDLGFBQU8sRUFBRUosSUFBRSxDQUFDLEVBQUMsS0FBSSxhQUFZLE9BQU0sV0FBVTtBQUFDLFlBQUlBLEtBQUUsS0FBSyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRUMsS0FBRUQsR0FBRSxNQUFNLEVBQUMsT0FBTSxvQkFBbUIsV0FBVSxhQUFhLE9BQU9ELEdBQUUsT0FBTyxNQUFNLFNBQVEsSUFBSSxFQUFFLE9BQU9BLEdBQUUsT0FBTyxNQUFNLFNBQVEsR0FBRyxFQUFDLENBQUMsR0FBRUcsS0FBRUYsR0FBRSxNQUFNLEVBQUMsT0FBTSw0QkFBMkIsV0FBVSxhQUFhLE9BQU9ELEdBQUUsUUFBUSxpQkFBZ0IsSUFBSSxFQUFFLE9BQU9BLEdBQUUsUUFBUSxpQkFBZ0IsR0FBRyxFQUFDLENBQUM7QUFBRSxRQUFBRSxHQUFFLElBQUlDLEVBQUM7QUFBRSxpQkFBUUMsS0FBRSxDQUFDLEdBQUVDLEtBQUUsR0FBRUEsS0FBRSxLQUFLLFlBQVksUUFBT0E7QUFBSSxVQUFBRCxHQUFFLEtBQUssS0FBSyxZQUFZQyxFQUFDLENBQUM7QUFBRSxZQUFHLEtBQUssdUJBQXVCLE1BQUdKLElBQUVFLElBQUVDLElBQUVKLEdBQUUsUUFBUSxZQUFZLFNBQVNBLElBQUVDLElBQUU7QUFBQyxpQkFBT0E7QUFBQSxRQUFDLENBQUUsR0FBRUQsR0FBRSxRQUFRLGdCQUFlO0FBQUMsY0FBSU0sS0FBRU4sR0FBRSxRQUFRO0FBQU8sVUFBQUksS0FBRSxDQUFDO0FBQUUsbUJBQVFHLEtBQUUsR0FBRUEsS0FBRUQsR0FBRSxRQUFPQztBQUFJLFlBQUFILEdBQUUsS0FBS0UsR0FBRUMsRUFBQyxFQUFFLEtBQUs7QUFBRSxjQUFJQyxLQUFFLENBQUM7QUFBRSxVQUFBUixHQUFFLE9BQU8sTUFBTSxNQUFNLFVBQVFRLEdBQUUsZ0JBQWNSLEdBQUUsT0FBTyxNQUFNLE1BQU0sTUFBTSxVQUFTUSxHQUFFLGtCQUFnQlIsR0FBRSxPQUFPLE1BQU0sTUFBTSxNQUFNLFlBQVdRLEdBQUUsa0JBQWdCUixHQUFFLE9BQU8sTUFBTSxNQUFNLE1BQU0sUUFBT1EsR0FBRSxhQUFXUixHQUFFLE9BQU8sTUFBTSxNQUFNLE1BQU0sWUFBV1EsR0FBRSxXQUFTUixHQUFFLE9BQU8sTUFBTSxNQUFNLE1BQU0sV0FBVSxLQUFLLHVCQUF1QixPQUFHQyxJQUFFRSxJQUFFQyxJQUFFLE9BQUksU0FBU0osSUFBRUMsSUFBRTtBQUFDLG1CQUFPSyxHQUFFTixFQUFDLEVBQUUsT0FBS0M7QUFBQSxVQUFDLEdBQUdPLEVBQUM7QUFBQSxRQUFDO0FBQUMsWUFBRyxXQUFTUixHQUFFLE9BQU8sTUFBTSxNQUFNLE1BQUs7QUFBQyxjQUFJUyxLQUFFUixHQUFFLE1BQU0sRUFBQyxPQUFNLHlCQUF3QixDQUFDLEdBQUVTLEtBQUVULEdBQUUsU0FBUyxFQUFDLEdBQUVELEdBQUUsUUFBUSxZQUFVLElBQUVBLEdBQUUsT0FBTyxNQUFNLE1BQU0sU0FBUSxHQUFFLEtBQUssT0FBSyxXQUFXLEtBQUssYUFBYSxLQUFHLGFBQVdBLEdBQUUsT0FBTyxNQUFNLFdBQVNBLEdBQUUsUUFBUSxvQkFBa0IsQ0FBQ0EsR0FBRSxRQUFRLG9CQUFrQixNQUFJQSxHQUFFLE9BQU8sTUFBTSxNQUFNLFNBQVEsTUFBS0EsR0FBRSxPQUFPLE1BQU0sTUFBTSxNQUFLLFlBQVcsVUFBUyxVQUFTQSxHQUFFLE9BQU8sTUFBTSxNQUFNLE1BQU0sVUFBUyxZQUFXQSxHQUFFLE9BQU8sTUFBTSxNQUFNLE1BQU0sWUFBVyxZQUFXQSxHQUFFLE9BQU8sTUFBTSxNQUFNLE1BQU0sWUFBVyxXQUFVQSxHQUFFLE9BQU8sTUFBTSxNQUFNLE1BQU0sT0FBTSxVQUFTLGlDQUErQkEsR0FBRSxPQUFPLE1BQU0sTUFBTSxNQUFNLFNBQVEsQ0FBQztBQUFFLFVBQUFTLEdBQUUsSUFBSUMsRUFBQyxHQUFFUixHQUFFLElBQUlPLEVBQUM7QUFBQSxRQUFDO0FBQUMsWUFBR1QsR0FBRSxPQUFPLE1BQU0sV0FBVyxNQUFLO0FBQUMsY0FBSVcsS0FBRVgsR0FBRSxRQUFRLHNCQUFxQlksS0FBRVgsR0FBRSxTQUFTRCxHQUFFLFFBQVEsZ0JBQWNBLEdBQUUsT0FBTyxNQUFNLFdBQVcsVUFBUVcsSUFBRSxLQUFLLE1BQUssS0FBSyxtQkFBaUJBLElBQUUsS0FBSyxNQUFLWCxHQUFFLE9BQU8sTUFBTSxXQUFXLE9BQU0sR0FBRSxLQUFLLGlCQUFpQjtBQUFFLGVBQUssVUFBUSxLQUFLLE9BQU8saUJBQWVBLEdBQUUsT0FBTyxLQUFLLE9BQUssS0FBSyxPQUFPLGNBQWMsSUFBSVksRUFBQyxJQUFFVixHQUFFLElBQUlVLEVBQUM7QUFBQSxRQUFDO0FBQUMsZUFBT1Y7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMEJBQXlCLE9BQU0sU0FBU0YsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLElBQUVDLEtBQUUsTUFBS0MsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLENBQUMsR0FBRUMsS0FBRSxDQUFDLEdBQUVDLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLEtBQUssR0FBRUMsS0FBRUosR0FBRSxpQkFBZSxLQUFLLGVBQWNLLEtBQUVMLEdBQUUsbUJBQWlCLEtBQUssaUJBQWdCTSxLQUFFTixHQUFFLG1CQUFpQixLQUFLLGlCQUFnQk8sS0FBRVAsR0FBRSxjQUFZRyxHQUFFLE9BQU8sTUFBTSxPQUFPLE1BQU0sWUFBV0ssS0FBRVIsR0FBRSxZQUFVRyxHQUFFLE9BQU8sTUFBTSxPQUFPLE1BQU0sVUFBU00sS0FBRU4sR0FBRSxRQUFRLGVBQWNPLEtBQUVmLEdBQUUsUUFBT2dCLEtBQUUsZUFBYVIsR0FBRSxPQUFPLE1BQU0sT0FBS0EsR0FBRSxRQUFRLGFBQVdPO0FBQUUsWUFBRyxNQUFJQyxNQUFHRCxLQUFFQyxPQUFJQSxLQUFFRCxLQUFHZCxJQUFFO0FBQUMsY0FBSWdCLEtBQUVELEtBQUUsSUFBRUEsS0FBRSxJQUFFQTtBQUFFLFVBQUFiLEtBQUVLLEdBQUUsUUFBUSxZQUFVLEtBQUssSUFBSVMsSUFBRUYsS0FBRSxDQUFDLEdBQUVELEtBQUVBLEtBQUVaLEdBQUUsR0FBRUMsRUFBQyxJQUFFLElBQUVLLEdBQUUsT0FBTyxNQUFNLE9BQU87QUFBQSxRQUFPO0FBQU0sVUFBQUwsS0FBRUssR0FBRSxRQUFRLFlBQVVRLElBQUVGLEtBQUVBLEtBQUVaLEdBQUUsR0FBRUMsRUFBQyxJQUFFSyxHQUFFLE9BQU8sTUFBTSxPQUFPO0FBQVEsaUJBQVFVLEtBQUUsU0FBU2pCLElBQUU7QUFBQyxjQUFJSSxLQUFFUyxLQUFFWixHQUFFRCxJQUFFRSxFQUFDLElBQUUsSUFBRUssR0FBRSxPQUFPLE1BQU0sT0FBTztBQUFRLGdCQUFJUCxNQUFHLE1BQUljLE1BQUdaLEtBQUUsTUFBSVcsTUFBRyxNQUFJRSxPQUFJWCxLQUFFRyxHQUFFLFFBQVEsWUFBVTtBQUFHLGNBQUlTLEtBQUViLEdBQUUsVUFBVSxTQUFTSixJQUFFUSxHQUFFLFFBQVEsaUJBQWdCSCxJQUFFSixJQUFFSyxJQUFFRyxJQUFFWixFQUFDLEdBQUVxQixLQUFFO0FBQUcsVUFBQVYsR0FBRSxRQUFRLGlCQUFlWCxPQUFJcUIsS0FBRSxLQUFJVixHQUFFLE9BQU8sTUFBTSxNQUFNLFFBQU0sVUFBUUEsR0FBRSxPQUFPLE1BQU0sYUFBV1UsTUFBRyxXQUFXVixHQUFFLE9BQU8sTUFBTSxNQUFNLE1BQU0sUUFBUSxJQUFFLElBQUdYLE9BQUlxQixLQUFFQSxLQUFFLFdBQVdULEVBQUMsS0FBR0QsR0FBRSxRQUFRLG9CQUFrQkEsR0FBRSxRQUFRLDJCQUF5QkEsR0FBRSxRQUFRLGdCQUFjLEtBQUcsS0FBSVMsS0FBRSxXQUFTVCxHQUFFLE9BQU8sTUFBTSxjQUFZLGlCQUFlQSxHQUFFLE9BQU8sTUFBTSxjQUFZLGVBQWFBLEdBQUUsT0FBTyxNQUFNLE9BQUtKLEdBQUUsVUFBVSw0QkFBNEJILElBQUVnQixJQUFFRixFQUFDLElBQUVYLEdBQUUsVUFBVSwwQkFBMEJILElBQUVnQixJQUFFRixJQUFFVCxJQUFFQyxFQUFDO0FBQUUsY0FBR0MsR0FBRSxPQUFPLE1BQU0sT0FBTyxNQUFLO0FBQUMsZ0JBQUlXLEtBQUVyQixHQUFFLFNBQVMsRUFBQyxHQUFFbUIsR0FBRSxHQUFFLEdBQUViLEdBQUUsT0FBS0ksR0FBRSxPQUFPLE1BQU0sT0FBTyxVQUFRVSxNQUFHLFVBQVFWLEdBQUUsT0FBTyxNQUFNLFdBQVNBLEdBQUUsUUFBUSxjQUFZQSxHQUFFLE9BQU8sTUFBTSxVQUFVLFNBQU8sSUFBRSxJQUFHLE1BQUtTLEdBQUUsTUFBSyxZQUFXLFVBQVMsWUFBV0EsR0FBRSxTQUFPLE1BQUlMLElBQUUsVUFBU0gsSUFBRSxZQUFXQyxJQUFFLFdBQVUsTUFBTSxRQUFRQyxFQUFDLElBQUVkLE1BQUdXLEdBQUUsT0FBTyxNQUFNLHdCQUFzQkcsR0FBRUgsR0FBRSxRQUFRLE9BQUtQLEtBQUUsQ0FBQyxJQUFFVSxHQUFFVixFQUFDLElBQUVVLElBQUUsYUFBWSxPQUFHLFdBQVVkLEtBQUUsNEJBQTBCLG1DQUFpQ2dCLEdBQUMsQ0FBQztBQUFFLGdCQUFHZCxHQUFFLElBQUlvQixFQUFDLEdBQUVBLEdBQUUsR0FBRyxTQUFTLFNBQVN0QixJQUFFO0FBQUMsa0JBQUcsY0FBWSxPQUFPVyxHQUFFLE9BQU8sTUFBTSxPQUFPLGlCQUFnQjtBQUFDLG9CQUFJVixLQUFFLE9BQU8sT0FBTyxDQUFDLEdBQUVVLElBQUUsRUFBQyxZQUFXUCxHQUFDLENBQUM7QUFBRSxnQkFBQU8sR0FBRSxPQUFPLE1BQU0sT0FBTyxnQkFBZ0JYLElBQUVPLEdBQUUsS0FBSU4sRUFBQztBQUFBLGNBQUM7QUFBQSxZQUFDLENBQUUsR0FBRUQsSUFBRTtBQUFDLGtCQUFJdUIsS0FBRSxTQUFTLGdCQUFnQlosR0FBRSxRQUFRLE9BQU0sT0FBTztBQUFFLGNBQUFZLEdBQUUsY0FBWSxNQUFNLFFBQVFILEdBQUUsSUFBSSxJQUFFQSxHQUFFLEtBQUssS0FBSyxHQUFHLElBQUVBLEdBQUUsTUFBS0UsR0FBRSxLQUFLLFlBQVlDLEVBQUMsR0FBRSxPQUFLSCxHQUFFLFNBQU9YLEdBQUUsS0FBS1csR0FBRSxJQUFJLEdBQUVWLEdBQUUsS0FBS1UsRUFBQztBQUFBLFlBQUU7QUFBQSxVQUFDO0FBQUMsVUFBQWhCLEtBQUVjLEtBQUUsTUFBSUQsTUFBR1osR0FBRUQsS0FBRSxHQUFFRSxFQUFDO0FBQUEsUUFBRSxHQUFFZ0IsS0FBRSxHQUFFQSxNQUFHSixLQUFFLEdBQUVJO0FBQUksVUFBQUQsR0FBRUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxxQkFBb0IsT0FBTSxTQUFTdEIsSUFBRTtBQUFDLFlBQUlDLElBQUVDLElBQUVDLEtBQUUsTUFBS0MsS0FBRSxLQUFLLEdBQUVDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFRixHQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsV0FBU0EsR0FBRSxRQUFRLGdCQUFnQkosRUFBQyxJQUFFLEdBQUVPLEtBQUVGLEdBQUUsTUFBTSxFQUFDLE9BQU0sOENBQTZDLEtBQUlMLEdBQUMsQ0FBQyxHQUFFUSxLQUFFSCxHQUFFLE1BQU0sRUFBQyxPQUFNLDhEQUE2RCxXQUFVLGVBQWFDLEtBQUUsT0FBTSxDQUFDO0FBQUUsUUFBQUMsR0FBRSxJQUFJQyxFQUFDO0FBQUUsWUFBSUMsS0FBRSxDQUFDO0FBQUUsWUFBR0wsR0FBRSxPQUFPLE1BQU1KLEVBQUMsRUFBRTtBQUFLLG1CQUFRVSxLQUFFLEdBQUVBLEtBQUUsS0FBSyxZQUFZLFFBQU9BO0FBQUksWUFBQUQsR0FBRSxLQUFLLEtBQUssWUFBWUMsRUFBQyxDQUFDO0FBQUUsUUFBQVQsS0FBRUcsR0FBRSxRQUFRLGFBQVdLLEdBQUUsUUFBT1AsS0FBRSxDQUFDRCxLQUFFO0FBQUksWUFBSVUsS0FBRVAsR0FBRSxRQUFRLGlCQUFpQixDQUFDLEdBQUVRLEtBQUVSLEdBQUUsT0FBTyxNQUFNLENBQUMsRUFBRTtBQUFPLFlBQUdRLEdBQUU7QUFBSyxtQkFBUUMsS0FBRSxTQUFTUCxJQUFFO0FBQUMsZ0JBQUlDLEtBQUUsV0FBU0UsR0FBRUgsRUFBQyxJQUFFLEtBQUdHLEdBQUVILEVBQUM7QUFBRSxZQUFBQyxLQUFFSSxHQUFFSixJQUFFLEVBQUMsYUFBWVAsSUFBRSxnQkFBZU0sSUFBRSxHQUFFRixHQUFDLENBQUM7QUFBRSxnQkFBSU0sS0FBRVAsR0FBRSxVQUFVLGtCQUFrQlMsR0FBRSxNQUFNLFFBQU9aLEVBQUMsR0FBRWEsS0FBRTtBQUFFLGtCQUFNLFFBQVFOLEVBQUMsTUFBSU0sS0FBRU4sR0FBRSxTQUFPLElBQUUsU0FBU0ssR0FBRSxNQUFNLFVBQVMsRUFBRTtBQUFHLGdCQUFJRSxLQUFFRixHQUFFLFVBQVEsSUFBR0csS0FBRTtBQUFNLFlBQUFaLEdBQUUsTUFBTSxhQUFXWSxLQUFFLFVBQVMsV0FBU1gsR0FBRSxPQUFPLE1BQU0sQ0FBQyxFQUFFLE9BQU8sU0FBT1UsS0FBRUYsR0FBRSxTQUFRRyxLQUFFLFdBQVMsYUFBV1gsR0FBRSxPQUFPLE1BQU0sQ0FBQyxFQUFFLE9BQU8sU0FBT1UsS0FBRUYsR0FBRSxTQUFRRyxLQUFFLFlBQVUsWUFBVVgsR0FBRSxPQUFPLE1BQU0sQ0FBQyxFQUFFLE9BQU8sVUFBUVcsS0FBRTtBQUFPLGdCQUFJQyxLQUFFWCxHQUFFLFNBQVMsRUFBQyxHQUFFUyxJQUFFLEdBQUVaLEtBQUVELEtBQUVXLEdBQUUsVUFBUUMsSUFBRSxNQUFLTixJQUFFLFlBQVdRLElBQUUsV0FBVSxNQUFNLFFBQVFMLEVBQUMsSUFBRUEsR0FBRUosRUFBQyxJQUFFSSxJQUFFLFVBQVNFLEdBQUUsTUFBTSxVQUFTLFlBQVdBLEdBQUUsTUFBTSxZQUFXLFlBQVdBLEdBQUUsTUFBTSxZQUFXLGFBQVksT0FBRyxVQUFTLDRCQUEwQkEsR0FBRSxNQUFNLFVBQVMsVUFBU0EsR0FBRSxTQUFRLENBQUM7QUFBRSxZQUFBSixHQUFFLElBQUlRLEVBQUMsR0FBRUEsR0FBRSxHQUFHLFNBQVMsU0FBU2hCLElBQUU7QUFBQyxrQkFBRyxjQUFZLE9BQU9JLEdBQUUsT0FBTyxNQUFNLE9BQU8saUJBQWdCO0FBQUMsb0JBQUlILEtBQUUsT0FBTyxPQUFPLENBQUMsR0FBRUcsSUFBRSxFQUFDLFlBQVdFLEdBQUMsQ0FBQztBQUFFLGdCQUFBRixHQUFFLE9BQU8sTUFBTSxPQUFPLGdCQUFnQkosSUFBRUcsR0FBRSxLQUFJRixFQUFDO0FBQUEsY0FBQztBQUFBLFlBQUMsQ0FBRTtBQUFFLGdCQUFJZ0IsS0FBRSxTQUFTLGdCQUFnQmIsR0FBRSxRQUFRLE9BQU0sT0FBTztBQUFFLGdCQUFHYSxHQUFFLGNBQVksTUFBTSxRQUFRVixFQUFDLElBQUVBLEdBQUUsS0FBSyxHQUFHLElBQUVBLElBQUVTLEdBQUUsS0FBSyxZQUFZQyxFQUFDLEdBQUUsTUFBSWIsR0FBRSxPQUFPLE1BQU1KLEVBQUMsRUFBRSxPQUFPLFFBQU87QUFBQyxrQkFBSWtCLEtBQUViLEdBQUUsbUJBQW1CVyxHQUFFLElBQUk7QUFBRSxjQUFBQSxHQUFFLEtBQUssYUFBYSxhQUFZLFVBQVUsT0FBT1osR0FBRSxPQUFPLE1BQU1KLEVBQUMsRUFBRSxPQUFPLFFBQU8sS0FBSyxFQUFFLE9BQU9rQixHQUFFLEdBQUUsR0FBRyxDQUFDO0FBQUEsWUFBQztBQUFDLFlBQUFoQixNQUFHRDtBQUFBLFVBQUMsR0FBRWEsS0FBRSxHQUFFQSxNQUFHTCxHQUFFLFNBQU8sR0FBRUs7QUFBSSxZQUFBRCxHQUFFQyxFQUFDO0FBQUUsWUFBRyxXQUFTVixHQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsTUFBTSxNQUFLO0FBQUMsY0FBSVcsS0FBRVYsR0FBRSxNQUFNLEVBQUMsT0FBTSwwREFBeUQsV0FBVSxlQUFhQyxLQUFFLE9BQU0sQ0FBQyxHQUFFVSxLQUFFWCxHQUFFLFNBQVMsRUFBQyxHQUFFRCxHQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsTUFBTSxTQUFRLEdBQUVBLEdBQUUsUUFBUSxhQUFXLElBQUVBLEdBQUUsT0FBTyxNQUFNLENBQUMsRUFBRSxNQUFNLFNBQVEsTUFBS0EsR0FBRSxPQUFPLE1BQU0sQ0FBQyxFQUFFLE1BQU0sTUFBSyxZQUFXLFVBQVMsV0FBVUEsR0FBRSxPQUFPLE1BQU0sQ0FBQyxFQUFFLE1BQU0sTUFBTSxPQUFNLFVBQVNBLEdBQUUsT0FBTyxNQUFNLENBQUMsRUFBRSxNQUFNLE1BQU0sVUFBUyxZQUFXQSxHQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsTUFBTSxNQUFNLFlBQVcsWUFBV0EsR0FBRSxPQUFPLE1BQU0sQ0FBQyxFQUFFLE1BQU0sTUFBTSxZQUFXLFVBQVMsaUNBQStCQSxHQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsTUFBTSxNQUFNLFNBQVEsQ0FBQztBQUFFLFVBQUFXLEdBQUUsSUFBSUMsRUFBQyxHQUFFVCxHQUFFLElBQUlRLEVBQUM7QUFBQSxRQUFDO0FBQUMsWUFBSUUsS0FBRTtBQUFFLGFBQUssMkJBQXlCYixHQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsYUFBV2EsS0FBRWIsR0FBRSxRQUFRO0FBQVcsWUFBSWMsS0FBRWQsR0FBRSxPQUFPLE1BQU07QUFBVyxZQUFHYyxHQUFFLE1BQUs7QUFBQyxjQUFJRSxLQUFFZixHQUFFLFNBQVNELEdBQUUsUUFBUSxnQkFBY2MsR0FBRSxVQUFRRCxJQUFFLElBQUVDLEdBQUUsU0FBUWQsR0FBRSxRQUFRLGdCQUFjYyxHQUFFLFVBQVFELElBQUViLEdBQUUsUUFBUSxhQUFXYyxHQUFFLFNBQVFBLEdBQUUsT0FBTSxDQUFDO0FBQUUsZUFBSyxVQUFRLEtBQUssT0FBTyxpQkFBZWQsR0FBRSxPQUFPLEtBQUssT0FBSyxLQUFLLE9BQU8sY0FBYyxJQUFJZ0IsRUFBQyxJQUFFYixHQUFFLElBQUlhLEVBQUM7QUFBQSxRQUFDO0FBQUMsZUFBT2hCLEdBQUUsT0FBTyxNQUFNLENBQUMsRUFBRSxVQUFVLFFBQU0sS0FBSyxVQUFVLGVBQWVhLElBQUVSLEdBQUUsUUFBT0wsR0FBRSxPQUFPLE1BQU0sQ0FBQyxFQUFFLFlBQVdBLEdBQUUsT0FBTyxNQUFNLENBQUMsRUFBRSxXQUFVLEdBQUVILElBQUVNLEVBQUMsR0FBRUE7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksa0JBQWlCLE9BQU0sU0FBU1AsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxHQUFFQyxLQUFFSjtBQUFFLFlBQUcsRUFBRUEsS0FBRSxLQUFHQSxLQUFFLElBQUVHLEdBQUUsUUFBUSxZQUFXO0FBQUMsY0FBSUUsS0FBRSxLQUFLLE9BQUtGLEdBQUUsT0FBTyxNQUFNLFVBQVU7QUFBUSxjQUFHRixLQUFFQSxLQUFFSSxLQUFFRixHQUFFLE9BQU8sTUFBTSxVQUFVLFFBQU8sVUFBUUEsR0FBRSxPQUFPLE1BQU0sYUFBV0YsS0FBRUksS0FBRUYsR0FBRSxPQUFPLE1BQU0sVUFBVSxTQUFRQSxHQUFFLE9BQU8sTUFBTSxVQUFVLE1BQUs7QUFBQyxnQkFBSUcsS0FBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsU0FBU04sS0FBRUcsR0FBRSxPQUFPLE1BQU0sVUFBVSxTQUFRRSxLQUFFRixHQUFFLE9BQU8sTUFBTSxTQUFRQyxLQUFFRCxHQUFFLE9BQU8sTUFBTSxVQUFVLFNBQVFGLEtBQUVFLEdBQUUsT0FBTyxNQUFNLFNBQVFBLEdBQUUsT0FBTyxNQUFNLFVBQVUsS0FBSztBQUFFLFlBQUFELEdBQUUsSUFBSUksRUFBQyxHQUFFQSxHQUFFLEtBQUssVUFBVSxJQUFJLHVCQUF1QjtBQUFBLFVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDBCQUF5QixPQUFNLFdBQVU7QUFBQyxZQUFJTixLQUFFLEtBQUssR0FBRUMsS0FBRSxDQUFDLEdBQUVDLEtBQUUsS0FBSyxZQUFZLFFBQU9DLEtBQUVILEdBQUUsUUFBUTtBQUFjLFlBQUdBLEdBQUUsUUFBUSxnQkFBZ0IsU0FBTztBQUFFLG1CQUFRSSxLQUFFLEdBQUVBLEtBQUVGLElBQUVFO0FBQUksWUFBQUQsS0FBRSxLQUFLLFlBQVlDLEVBQUMsRUFBRSxVQUFTSCxHQUFFLEtBQUtFLEVBQUM7QUFBQTtBQUFPLG1CQUFRRSxLQUFFSCxJQUFFSSxLQUFFLEdBQUVBLEtBQUVELElBQUVDLE1BQUk7QUFBQyxnQkFBSUMsS0FBRUY7QUFBRSxZQUFBTCxHQUFFLFFBQVEsY0FBWSxVQUFRQSxHQUFFLE9BQU8sTUFBTSxTQUFPTyxNQUFHLElBQUdKLE1BQUdILEdBQUUsUUFBUSxZQUFVTyxJQUFFTixHQUFFLEtBQUtFLEVBQUM7QUFBQSxVQUFDO0FBQUMsZUFBT0Y7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUkseUJBQXdCLE9BQU0sV0FBVTtBQUFDLFlBQUlELEtBQUUsS0FBSyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRUMsS0FBRUYsR0FBRSxRQUFRLElBQUksT0FBTyxjQUFjLDJCQUEyQixHQUFFRyxLQUFFSCxHQUFFLFFBQVEsSUFBSSxPQUFPLGlCQUFpQixtRUFBbUUsR0FBRUksS0FBRUosR0FBRSxRQUFRLElBQUksT0FBTyxpQkFBaUIsaUNBQWlDLEdBQUVLLEtBQUVMLEdBQUUsUUFBUSxJQUFJLE9BQU8saUJBQWlCLCtDQUErQztBQUFFLFlBQUdBLEdBQUUsUUFBUSxpQkFBZUEsR0FBRSxPQUFPLE1BQU0sT0FBTztBQUFhLG1CQUFRTSxLQUFFLEdBQUVBLEtBQUVILEdBQUUsUUFBT0csTUFBSTtBQUFDLGdCQUFJQyxLQUFFTixHQUFFLG1CQUFtQkUsR0FBRUcsRUFBQyxDQUFDO0FBQUUsWUFBQUMsR0FBRSxJQUFFQSxHQUFFLElBQUUsR0FBRUEsR0FBRSxJQUFFQSxHQUFFLElBQUUsR0FBRUosR0FBRUcsRUFBQyxFQUFFLGFBQWEsYUFBWSxVQUFVLE9BQU9OLEdBQUUsT0FBTyxNQUFNLE9BQU8sUUFBTyxHQUFHLEVBQUUsT0FBT08sR0FBRSxHQUFFLEdBQUcsRUFBRSxPQUFPQSxHQUFFLEdBQUUsR0FBRyxDQUFDLEdBQUVKLEdBQUVHLEVBQUMsRUFBRSxhQUFhLGVBQWMsS0FBSztBQUFFLFlBQUFKLEdBQUUsYUFBYSxhQUFZLGdCQUFnQixPQUFPLEtBQUksR0FBRyxDQUFDO0FBQUUsZ0JBQUlNLEtBQUVMLEdBQUVHLEVBQUMsRUFBRTtBQUFXLFlBQUFOLEdBQUUsT0FBTyxNQUFNLE9BQU8sUUFBTSxNQUFNLFVBQVUsUUFBUSxLQUFLUSxJQUFHLFNBQVNOLElBQUU7QUFBQyxjQUFBRCxHQUFFLHNCQUFzQkMsSUFBRUEsR0FBRSxhQUFZRixHQUFFLFFBQVEscUJBQW1CLGFBQVdBLEdBQUUsT0FBTyxPQUFPLFdBQVMsS0FBRyxHQUFHO0FBQUEsWUFBQyxDQUFFO0FBQUEsVUFBQztBQUFBO0FBQUssV0FBQyxXQUFVO0FBQUMscUJBQVFFLEtBQUVGLEdBQUUsUUFBUSxhQUFXQSxHQUFFLFFBQVEsT0FBTyxTQUFPLElBQUdJLEtBQUUsR0FBRUEsS0FBRUQsR0FBRSxRQUFPQyxNQUFJO0FBQUMsa0JBQUlDLEtBQUVGLEdBQUVDLEVBQUMsRUFBRTtBQUFXLGNBQUFKLEdBQUUsT0FBTyxNQUFNLE9BQU8sUUFBTSxlQUFhQSxHQUFFLE9BQU8sTUFBTSxRQUFNLE1BQU0sVUFBVSxRQUFRLEtBQUtLLElBQUcsU0FBU0wsSUFBRTtBQUFDLGdCQUFBQyxHQUFFLHNCQUFzQkQsSUFBRUEsR0FBRSxhQUFZRSxFQUFDO0FBQUEsY0FBQyxDQUFFO0FBQUEsWUFBQztBQUFBLFVBQUMsRUFBRTtBQUFFLFlBQUdFLEdBQUUsU0FBTyxHQUFFO0FBQUMsY0FBSUssS0FBRUwsR0FBRUEsR0FBRSxTQUFPLENBQUMsRUFBRSxRQUFRLEdBQUVNLEtBQUVOLEdBQUUsQ0FBQyxFQUFFLFFBQVE7QUFBRSxVQUFBSyxHQUFFLElBQUUsT0FBS0wsR0FBRUEsR0FBRSxTQUFPLENBQUMsRUFBRSxXQUFXLFlBQVlBLEdBQUVBLEdBQUUsU0FBTyxDQUFDLENBQUMsR0FBRU0sR0FBRSxJQUFFQSxHQUFFLFFBQU1WLEdBQUUsUUFBUSxhQUFXLENBQUNBLEdBQUUsUUFBUSxtQkFBaUJJLEdBQUUsQ0FBQyxFQUFFLFdBQVcsWUFBWUEsR0FBRSxDQUFDLENBQUM7QUFBRSxtQkFBUU8sS0FBRSxHQUFFQSxLQUFFTixHQUFFLFFBQU9NO0FBQUksWUFBQVYsR0FBRSxzQkFBc0JJLEdBQUVNLEVBQUMsR0FBRU4sR0FBRU0sRUFBQyxFQUFFLGFBQVlYLEdBQUUsT0FBTyxNQUFNLENBQUMsRUFBRSxPQUFPLFlBQVVBLEdBQUUsT0FBTyxNQUFNLENBQUMsRUFBRSxNQUFNLE9BQUssSUFBRSxXQUFXQSxHQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsTUFBTSxNQUFNLFFBQVEsSUFBRSxLQUFHLEVBQUU7QUFBQSxRQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFFQTtBQUFBLElBQUMsRUFBRTtBQUE1cW1HLFFBQThxbUcsSUFBRSxXQUFVO0FBQUMsZUFBU0EsR0FBRUMsSUFBRTtBQUFDLFVBQUUsTUFBS0QsRUFBQyxHQUFFLEtBQUssTUFBSUMsSUFBRSxLQUFLLElBQUVBLEdBQUU7QUFBRSxZQUFJQyxLQUFFLEtBQUs7QUFBRSxhQUFLLGNBQVlBLEdBQUUsUUFBUSxPQUFPLE1BQU0sR0FBRSxLQUFLLFlBQVUsSUFBSSxFQUFFRCxFQUFDLEdBQUUsS0FBSyxhQUFXQyxHQUFFLFFBQVEsWUFBWSxVQUFRQSxHQUFFLFFBQVEsaUJBQWdCQSxHQUFFLFFBQVEsZ0JBQWdCLFNBQU8sTUFBSSxLQUFLLGNBQVlBLEdBQUUsUUFBUSxnQkFBZ0IsTUFBTTtBQUFBLE1BQUU7QUFBQyxhQUFPLEVBQUVGLElBQUUsQ0FBQyxFQUFDLEtBQUksZ0JBQWUsT0FBTSxXQUFVO0FBQUMsWUFBSUEsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLE1BQUtDLEtBQUUsS0FBSyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUc7QUFBRSxpQkFBT0YsT0FBSUEsS0FBRUUsR0FBRSxNQUFNLEVBQUMsT0FBTSxrQkFBaUIsQ0FBQztBQUFHLFlBQUlDLEtBQUVELEdBQUUsU0FBU0QsR0FBRSxRQUFRLGVBQWMsR0FBRUEsR0FBRSxRQUFRLGVBQWNBLEdBQUUsUUFBUSxZQUFXLGFBQWEsR0FBRUcsS0FBRUYsR0FBRSxTQUFTRCxHQUFFLFFBQVEsZUFBY0EsR0FBRSxRQUFRLFlBQVdBLEdBQUUsUUFBUSxXQUFVQSxHQUFFLFFBQVEsWUFBVyxhQUFhO0FBQUUsZUFBT0QsR0FBRSxJQUFJSSxFQUFDLEdBQUVKLEdBQUUsSUFBSUcsRUFBQyxHQUFFSDtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxZQUFXLE9BQU0sV0FBVTtBQUFDLFlBQUlBLEtBQUU7QUFBSyxlQUFPLEtBQUssRUFBRSxRQUFRLGVBQWFBLEtBQUUsS0FBSyxXQUFXLEdBQUUsS0FBSyxhQUFhQSxHQUFFLEVBQUUsSUFBR0E7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksa0JBQWlCLE9BQU0sV0FBVTtBQUFDLFlBQUlBLEtBQUUsS0FBSyxHQUFFQyxLQUFFRCxHQUFFLFNBQVFFLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFLE1BQU0sUUFBUUgsR0FBRSxPQUFPLE9BQU8sS0FBSyxJQUFFLElBQUVBLEdBQUUsT0FBTyxPQUFPO0FBQU0sWUFBRyxNQUFNLFFBQVFBLEdBQUUsT0FBTyxPQUFPLEtBQUssR0FBRTtBQUFDLGNBQUlJLEtBQUU7QUFBRSxVQUFBSixHQUFFLE9BQU8sT0FBTyxNQUFNLFFBQVMsU0FBU0EsSUFBRTtBQUFDLFlBQUFJLEtBQUUsS0FBSyxJQUFJQSxJQUFFSixFQUFDO0FBQUEsVUFBQyxDQUFFLEdBQUVHLEtBQUVDO0FBQUEsUUFBQztBQUFDLFFBQUFILEdBQUUsSUFBSSxpQkFBZSxTQUFTLGdCQUFnQkEsR0FBRSxPQUFNLFVBQVUsR0FBRUEsR0FBRSxJQUFJLGVBQWUsYUFBYSxNQUFLLGVBQWUsT0FBT0EsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLHVCQUFxQixTQUFTLGdCQUFnQkEsR0FBRSxPQUFNLFVBQVUsR0FBRUEsR0FBRSxJQUFJLHFCQUFxQixhQUFhLE1BQUsscUJBQXFCLE9BQU9BLEdBQUUsSUFBSSxDQUFDLEdBQUVBLEdBQUUsSUFBSSxpQkFBZSxTQUFTLGdCQUFnQkEsR0FBRSxPQUFNLFVBQVUsR0FBRUEsR0FBRSxJQUFJLGVBQWUsYUFBYSxNQUFLLGVBQWUsT0FBT0EsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLG9CQUFrQixTQUFTLGdCQUFnQkEsR0FBRSxPQUFNLFVBQVUsR0FBRUEsR0FBRSxJQUFJLGtCQUFrQixhQUFhLE1BQUssa0JBQWtCLE9BQU9BLEdBQUUsSUFBSSxDQUFDO0FBQUUsWUFBSUksS0FBRUwsR0FBRSxPQUFPLE1BQU0sTUFBS00sS0FBRSxHQUFFQyxLQUFFO0FBQUUsU0FBQyxVQUFRRixNQUFHLGVBQWFBLE1BQUcsa0JBQWdCQSxNQUFHLGNBQVlBLE1BQUdMLEdBQUUsUUFBUSxnQkFBYyxNQUFJQSxHQUFFLFFBQVEsY0FBWSxDQUFDQSxHQUFFLFFBQVEsb0JBQWtCTSxLQUFFTixHQUFFLE9BQU8sS0FBSyxRQUFRLE1BQUtPLEtBQUVQLEdBQUUsT0FBTyxLQUFLLFFBQVEsT0FBTUMsR0FBRSx1QkFBcUJLLE9BQUlBLEtBQUVMLEdBQUUsc0JBQXFCTSxLQUFFTixHQUFFLHdCQUF1QkEsR0FBRSxJQUFJLGFBQVdDLEdBQUUsU0FBUyxDQUFDQyxLQUFFRyxLQUFFLEdBQUUsSUFBRSxDQUFDSCxLQUFFLEdBQUVGLEdBQUUsWUFBVUUsS0FBRUksS0FBRUQsS0FBRSxHQUFFTCxHQUFFLGFBQVcsSUFBRUUsS0FBRSxHQUFFLEdBQUUsTUFBTTtBQUFFLFlBQUlLLEtBQUVSLEdBQUUsUUFBUSxRQUFRLGNBQVk7QUFBRSxRQUFBQyxHQUFFLElBQUksbUJBQWlCQyxHQUFFLFNBQVMsSUFBRSxDQUFDTSxJQUFFLElBQUUsQ0FBQ0EsSUFBRVAsR0FBRSxZQUFVLElBQUVPLElBQUVQLEdBQUUsYUFBVyxJQUFFTyxJQUFFLEdBQUUsTUFBTSxHQUFFUCxHQUFFLElBQUksZUFBZSxZQUFZQSxHQUFFLElBQUksV0FBVyxJQUFJLEdBQUVBLEdBQUUsSUFBSSxxQkFBcUIsWUFBWUEsR0FBRSxJQUFJLGlCQUFpQixJQUFJO0FBQUUsWUFBSVEsS0FBRVIsR0FBRSxJQUFJLE9BQU8sY0FBYyxNQUFNO0FBQUUsUUFBQVEsR0FBRSxZQUFZUixHQUFFLElBQUksY0FBYyxHQUFFUSxHQUFFLFlBQVlSLEdBQUUsSUFBSSxjQUFjLEdBQUVRLEdBQUUsWUFBWVIsR0FBRSxJQUFJLGlCQUFpQixHQUFFUSxHQUFFLFlBQVlSLEdBQUUsSUFBSSxvQkFBb0I7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksa0JBQWlCLE9BQU0sU0FBU0QsSUFBRTtBQUFDLFlBQUlDLEtBQUVELEdBQUUsR0FBRUUsS0FBRUYsR0FBRSxJQUFHRyxLQUFFSCxHQUFFLElBQUdJLEtBQUVKLEdBQUUsSUFBR0ssS0FBRUwsR0FBRSxJQUFHTSxLQUFFTixHQUFFLFFBQU9PLEtBQUVQLEdBQUUsUUFBT1EsS0FBRSxLQUFLO0FBQUUsWUFBRyxFQUFFLE1BQUlQLE1BQUdPLEdBQUUsUUFBUSwwQkFBd0JQLE9BQUlLLEtBQUUsS0FBR0UsR0FBRSxRQUFRLHlCQUF1QixDQUFDQSxHQUFFLE9BQU8sTUFBTSxPQUFPLGFBQVcsWUFBVUEsR0FBRSxPQUFPLE1BQU0sT0FBTTtBQUFDLFVBQUFBLEdBQUUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFNLEtBQUssY0FBYyxFQUFDLEdBQUVQLElBQUUsSUFBR0MsSUFBRSxJQUFHQyxJQUFFLElBQUdDLElBQUUsSUFBR0MsSUFBRSxRQUFPQyxJQUFFLFFBQU9DLEdBQUMsQ0FBQztBQUFFLGNBQUlFLEtBQUU7QUFBRSxjQUFHRCxHQUFFLFFBQVEsa0JBQWdCLGNBQVlBLEdBQUUsT0FBTyxNQUFNLGVBQWM7QUFBQyxnQkFBSUUsS0FBRUYsR0FBRSxRQUFRO0FBQU8sZ0JBQUdFLElBQUU7QUFBQyx1QkFBUUMsS0FBRSxHQUFFQyxLQUFFLEdBQUVELEtBQUVWLE1BQUdXLEtBQUVGLEdBQUUsUUFBT0U7QUFBSSxnQkFBQUQsTUFBR0QsR0FBRUUsRUFBQyxFQUFFO0FBQUssY0FBQUQsT0FBSVYsT0FBSVEsS0FBRSxNQUFHRCxHQUFFLFFBQVE7QUFBQSxZQUFrQjtBQUFBLFVBQUM7QUFBQyxjQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsZUFBZU4sSUFBRU8sSUFBRUQsR0FBRSxRQUFRLElBQUksV0FBVztBQUFBLFFBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksaUJBQWdCLE9BQU0sU0FBU1IsSUFBRTtBQUFDLFlBQUlDLEtBQUVELEdBQUUsR0FBRUUsS0FBRUYsR0FBRSxJQUFHRyxLQUFFSCxHQUFFLElBQUdJLEtBQUVKLEdBQUUsSUFBR0ssS0FBRUwsR0FBRSxJQUFHTSxLQUFFTixHQUFFLFFBQU9PLEtBQUVQLEdBQUUsUUFBT1EsS0FBRSxLQUFLLEdBQUVDLEtBQUUsT0FBR0MsS0FBRUgsR0FBRSxLQUFLLFVBQVUsU0FBUyxpQ0FBaUMsR0FBRUksS0FBRUgsR0FBRSxPQUFPLEtBQUssaUJBQWdCSSxLQUFFSixHQUFFLFFBQVE7QUFBcUIsU0FBQyxNQUFJTCxNQUFHLE1BQUlFLE1BQUcsTUFBSUgsTUFBRyxNQUFJRSxRQUFLSyxLQUFFLE9BQUlOLE9BQUlLLEdBQUUsUUFBUSxjQUFZSCxPQUFJRyxHQUFFLFFBQVEsZUFBYUMsS0FBRSxPQUFJLENBQUNELEdBQUUsUUFBUSxtQkFBaUIsTUFBSVAsTUFBR0EsT0FBSUssS0FBRSxNQUFJRyxLQUFFO0FBQUksWUFBSUksS0FBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVNYLE1BQUdRLEtBQUVFLEtBQUUsSUFBR1QsSUFBRUMsTUFBR00sS0FBRUUsS0FBRSxJQUFHUCxJQUFFRyxHQUFFLE9BQU8sS0FBSyxhQUFZRyxFQUFDO0FBQUUsUUFBQUUsR0FBRSxLQUFLLFVBQVUsSUFBSSxxQkFBcUIsR0FBRUosTUFBR0QsR0FBRSxPQUFPLEtBQUssT0FBSyxLQUFLLGNBQWMsSUFBSUssRUFBQyxJQUFFTixHQUFFLElBQUlNLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUkscUJBQW9CLE9BQU0sU0FBU2IsSUFBRTtBQUFDLFlBQUlDLEtBQUVELEdBQUUsR0FBRUUsS0FBRUYsR0FBRSxJQUFHRyxLQUFFSCxHQUFFLElBQUdJLEtBQUVKLEdBQUUsSUFBR0ssS0FBRUwsR0FBRSxJQUFHTSxLQUFFTixHQUFFLE1BQUtPLEtBQUUsS0FBSyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRUMsS0FBRUYsR0FBRSxRQUFRO0FBQXFCLFlBQUcsYUFBV0QsTUFBRyxlQUFhQyxHQUFFLE9BQU8sTUFBTSxNQUFLO0FBQUMsY0FBSUcsS0FBRUgsR0FBRSxPQUFPLEtBQUtELEVBQUMsRUFBRSxPQUFPTCxFQUFDLEdBQUVVLEtBQUVILEdBQUUsU0FBU04sTUFBRyxVQUFRSSxLQUFFRyxLQUFFLElBQUdOLElBQUVDLE1BQUcsVUFBUUUsS0FBRSxJQUFFRyxLQUFFLElBQUdKLElBQUUsR0FBRUssSUFBRUgsR0FBRSxPQUFPLEtBQUtELEVBQUMsRUFBRSxPQUFPO0FBQUUsZUFBSyxJQUFJLElBQUlLLEVBQUMsR0FBRUEsR0FBRSxLQUFLLGFBQVksb0JBQW9CLE9BQU9KLEdBQUUsUUFBUSxNQUFLLEdBQUcsQ0FBQyxHQUFFSSxHQUFFLEtBQUssVUFBVSxJQUFJLG1CQUFtQixPQUFPTCxFQUFDLENBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGdCQUFlLE9BQU0sU0FBU04sSUFBRTtBQUFDLFlBQUlDLEtBQUUsTUFBS0MsS0FBRUYsR0FBRSxRQUFPRyxLQUFFSCxHQUFFLFlBQVdJLEtBQUUsS0FBSztBQUFFLFlBQUdBLEdBQUUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFNQSxHQUFFLE9BQU8sTUFBTSxVQUFVLE1BQUs7QUFBQyxjQUFJQyxJQUFFQyxLQUFFRixHQUFFLFFBQVEsZUFBY0csS0FBRUgsR0FBRSxRQUFRO0FBQVcsVUFBQUEsR0FBRSxRQUFRLGdCQUFnQixTQUFPLFNBQVNKLElBQUU7QUFBQyxxQkFBUUcsS0FBRUgsR0FBRSxJQUFHSSxLQUFFSixHQUFFLElBQUdLLEtBQUVMLEdBQUUsSUFBR00sS0FBRU4sR0FBRSxJQUFHTyxLQUFFUCxHQUFFLElBQUdRLEtBQUUsR0FBRUEsS0FBRUwsSUFBRUs7QUFBSSxjQUFBSixLQUFFSCxHQUFFLFlBQVlPLEVBQUMsRUFBRSxVQUFTRixLQUFFTCxHQUFFLFlBQVlPLEVBQUMsRUFBRSxVQUFTUCxHQUFFLGVBQWUsRUFBQyxHQUFFTyxJQUFFLElBQUdKLElBQUUsSUFBR0MsSUFBRSxJQUFHQyxJQUFFLElBQUdDLElBQUUsUUFBT0wsSUFBRSxRQUFPRCxHQUFFLGFBQVksQ0FBQztBQUFBLFVBQUMsRUFBRSxFQUFDLElBQUdDLElBQUUsSUFBR0ksSUFBRSxJQUFHLEdBQUUsSUFBR0QsSUFBRSxJQUFHRSxHQUFDLENBQUMsS0FBR0gsR0FBRSxRQUFRLGVBQWFGLEtBQUVFLEdBQUUsUUFBUSxXQUFXLE9BQU8sU0FBUSxTQUFTSixJQUFFO0FBQUMscUJBQVFHLEtBQUVILEdBQUUsSUFBR0ssS0FBRUwsR0FBRSxJQUFHTSxLQUFFTixHQUFFLElBQUdPLEtBQUVQLEdBQUUsSUFBR1EsS0FBRVIsR0FBRSxJQUFHUyxLQUFFLEdBQUVBLEtBQUVOLE1BQUdDLEdBQUUsUUFBUSxhQUFXLElBQUUsSUFBR0s7QUFBSSxvQkFBSUEsTUFBRyxNQUFJTixNQUFHLE1BQUlDLEdBQUUsUUFBUSxlQUFhRyxLQUFFRixLQUFFRCxHQUFFLFFBQVEsWUFBVSxJQUFHSCxHQUFFLGVBQWUsRUFBQyxHQUFFUSxJQUFFLElBQUdKLElBQUUsSUFBR0MsSUFBRSxJQUFHQyxJQUFFLElBQUdDLElBQUUsUUFBT04sSUFBRSxRQUFPRCxHQUFFLGFBQVksQ0FBQyxHQUFFTSxLQUFFRixNQUFHRCxHQUFFLFFBQVEsYUFBV0EsR0FBRSxRQUFRLGFBQVdELEtBQUUsSUFBRUE7QUFBQSxVQUFFLEVBQUUsRUFBQyxJQUFHRCxJQUFFLElBQUdJLElBQUUsSUFBRyxHQUFFLElBQUdELElBQUUsSUFBR0UsR0FBQyxDQUFDO0FBQUEsUUFBRTtBQUFDLFlBQUdILEdBQUUsT0FBTyxLQUFLLE1BQU0sTUFBTSxNQUFLO0FBQUMsY0FBSUksS0FBRSxHQUFFQyxLQUFFLEdBQUVDLEtBQUVOLEdBQUUsUUFBUSxXQUFVTyxLQUFFUixLQUFFO0FBQUUsZUFBSyxlQUFhUSxLQUFFUCxHQUFFLFFBQVEsT0FBTztBQUFRLG1CQUFRUSxLQUFFLEdBQUVBLEtBQUVELE1BQUcsS0FBSyxhQUFXLElBQUUsSUFBR0M7QUFBSSxpQkFBSyxjQUFjLEVBQUMsR0FBRUEsSUFBRSxRQUFPRCxNQUFHLEtBQUssYUFBVyxJQUFFLElBQUcsSUFBRyxHQUFFLElBQUdILElBQUUsSUFBR0UsSUFBRSxJQUFHRCxJQUFFLFFBQU8sS0FBSyxhQUFZLENBQUMsR0FBRUEsS0FBRUQsTUFBR0osR0FBRSxRQUFRLGNBQVksS0FBSyxhQUFXTyxLQUFFUjtBQUFBLFFBQUU7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksd0JBQXVCLE9BQU0sU0FBU0gsSUFBRTtBQUFDLFlBQUlDLEtBQUVELEdBQUUsUUFBT0UsS0FBRSxLQUFLO0FBQUUsWUFBR0EsR0FBRSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQU1BLEdBQUUsT0FBTyxNQUFNLFVBQVU7QUFBSyxtQkFBUUMsSUFBRUMsS0FBRUYsR0FBRSxRQUFRLGVBQWNHLEtBQUVILEdBQUUsUUFBUSxZQUFXSSxLQUFFLEdBQUVBLEtBQUVMLEtBQUUsR0FBRUssTUFBSTtBQUFDLFlBQUFKLEdBQUUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFNLEtBQUssY0FBYyxFQUFDLEdBQUVJLElBQUUsUUFBT0wsS0FBRSxHQUFFLElBQUdHLElBQUUsSUFBRyxHQUFFLElBQUdELElBQUUsSUFBR0UsSUFBRSxRQUFPLEtBQUssYUFBWSxDQUFDLEdBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFLGVBQWVELElBQUUsR0FBRUYsR0FBRSxRQUFRLElBQUksV0FBVyxHQUFFQyxLQUFFQyxLQUFFQSxLQUFFRixHQUFFLFFBQVEsWUFBVUQsS0FBRTtBQUFBLFVBQUU7QUFBQyxZQUFHQyxHQUFFLE9BQU8sS0FBSyxNQUFNLE1BQU07QUFBSyxtQkFBUUssS0FBRSxHQUFFQyxLQUFFLEdBQUVDLEtBQUVQLEdBQUUsUUFBUSxXQUFVUSxLQUFFLEdBQUVBLEtBQUVSLEdBQUUsUUFBUSxhQUFXLEdBQUVRO0FBQUksaUJBQUssY0FBYyxFQUFDLEdBQUVBLElBQUUsUUFBT1IsR0FBRSxRQUFRLGFBQVcsR0FBRSxJQUFHLEdBQUUsSUFBR0ssSUFBRSxJQUFHRSxJQUFFLElBQUdELElBQUUsUUFBTyxLQUFLLGFBQVksQ0FBQyxHQUFFQSxLQUFFRCxNQUFHTCxHQUFFLFFBQVEsYUFBV0EsR0FBRSxRQUFRO0FBQUEsTUFBVSxFQUFDLEdBQUUsRUFBQyxLQUFJLGNBQWEsT0FBTSxXQUFVO0FBQUMsWUFBSUYsS0FBRSxLQUFLLEdBQUVDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRztBQUFFLGFBQUssTUFBSUEsR0FBRSxNQUFNLEVBQUMsT0FBTSxrQkFBaUIsQ0FBQyxHQUFFLEtBQUssZUFBYUEsR0FBRSxNQUFNLEVBQUMsT0FBTSxrQ0FBaUMsQ0FBQyxHQUFFLEtBQUssZUFBYUEsR0FBRSxNQUFNLEVBQUMsT0FBTSxnQ0FBK0IsQ0FBQyxHQUFFLEtBQUssZ0JBQWNBLEdBQUUsTUFBTSxFQUFDLE9BQU0sMEJBQXlCLENBQUMsR0FBRSxLQUFLLElBQUksSUFBSSxLQUFLLFlBQVksR0FBRSxLQUFLLElBQUksSUFBSSxLQUFLLFlBQVksR0FBRUQsR0FBRSxPQUFPLEtBQUssU0FBTyxLQUFLLGFBQWEsS0FBSyxHQUFFLEtBQUssYUFBYSxLQUFLLEdBQUUsS0FBSyxjQUFjLEtBQUs7QUFBRyxpQkFBUUUsSUFBRUMsS0FBRUgsR0FBRSxRQUFRLFdBQVcsU0FBT0EsR0FBRSxRQUFRLFdBQVcsQ0FBQyxFQUFFLE9BQU8sU0FBTyxJQUFFLEdBQUVJLEtBQUUsR0FBRUEsS0FBRUosR0FBRSxRQUFRLE9BQU8sV0FBUyxXQUFTQSxHQUFFLFFBQVEsV0FBV0ksRUFBQyxNQUFJRCxLQUFFSCxHQUFFLFFBQVEsV0FBV0ksRUFBQyxFQUFFLE9BQU8sU0FBTyxJQUFHLEVBQUVELEtBQUUsS0FBSUM7QUFBSTtBQUFDLGVBQU0sQ0FBQ0osR0FBRSxRQUFRLG1CQUFpQixLQUFLLGNBQVlFLEtBQUUsS0FBSyxZQUFZLFFBQU8sS0FBSyxlQUFhQSxNQUFJQyxLQUFFSCxHQUFFLFFBQVEsT0FBTyxRQUFPQSxHQUFFLE9BQU8sTUFBTSxjQUFZQSxHQUFFLE9BQU8sTUFBTSxPQUFPLGNBQVlFLEtBQUVGLEdBQUUsT0FBTyxNQUFNLGNBQWEsS0FBSyxhQUFhLEVBQUMsUUFBT0UsSUFBRSxZQUFXQyxHQUFDLENBQUMsTUFBSUQsS0FBRUMsSUFBRUEsS0FBRUgsR0FBRSxRQUFRLGFBQVksS0FBSyxxQkFBcUIsRUFBQyxRQUFPRSxJQUFFLFlBQVdDLEdBQUMsQ0FBQyxJQUFHLEtBQUssY0FBY0QsSUFBRUMsRUFBQyxHQUFFLEVBQUMsSUFBRyxLQUFLLEtBQUksZUFBYyxLQUFLLGVBQWMsZ0JBQWVILEdBQUUsUUFBUSxZQUFVRSxHQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGlCQUFnQixPQUFNLFNBQVNGLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUs7QUFBRSxZQUFHLFdBQVNBLEdBQUUsT0FBTyxLQUFLLElBQUksVUFBUUEsR0FBRSxPQUFPLEtBQUssSUFBSSxPQUFPLFNBQU87QUFBRSxtQkFBUUMsS0FBRSxHQUFFQyxLQUFFRixHQUFFLFFBQVEsYUFBV0QsSUFBRUksS0FBRUgsR0FBRSxRQUFRLFdBQVVJLEtBQUUsR0FBRUMsS0FBRSxHQUFFRCxLQUFFTCxJQUFFSyxNQUFJQztBQUFJLFlBQUFBLE1BQUdMLEdBQUUsT0FBTyxLQUFLLElBQUksT0FBTyxXQUFTSyxLQUFFLElBQUcsS0FBSyxrQkFBa0IsRUFBQyxHQUFFQSxJQUFFLElBQUcsR0FBRSxJQUFHSixJQUFFLElBQUdFLElBQUUsSUFBR0QsSUFBRSxNQUFLLE1BQUssQ0FBQyxHQUFFRCxNQUFHRCxHQUFFLFFBQVEsYUFBV0Q7QUFBRSxZQUFHLFdBQVNDLEdBQUUsT0FBTyxLQUFLLE9BQU8sVUFBUUEsR0FBRSxPQUFPLEtBQUssT0FBTyxPQUFPLFNBQU87QUFBRSxtQkFBUU0sS0FBRU4sR0FBRSxRQUFRLG1CQUFpQixTQUFPQSxHQUFFLE9BQU8sTUFBTSxpQkFBZSxlQUFhQSxHQUFFLE9BQU8sTUFBTSxRQUFNLENBQUNBLEdBQUUsT0FBTyxNQUFNLHdCQUFzQkYsS0FBRUEsS0FBRSxHQUFFUyxLQUFFUCxHQUFFLFFBQVEsZUFBY1EsS0FBRVIsR0FBRSxRQUFRLGdCQUFjQSxHQUFFLFFBQVEsWUFBVU0sSUFBRUcsS0FBRVQsR0FBRSxRQUFRLFlBQVdVLEtBQUUsR0FBRUMsS0FBRSxHQUFFRCxLQUFFWixJQUFFWSxNQUFJQztBQUFJLFlBQUFBLE1BQUdYLEdBQUUsT0FBTyxLQUFLLE9BQU8sT0FBTyxXQUFTVyxLQUFFLElBQUcsS0FBSyxrQkFBa0IsRUFBQyxHQUFFQSxJQUFFLElBQUdKLElBQUUsSUFBRyxHQUFFLElBQUdDLElBQUUsSUFBR0MsSUFBRSxNQUFLLFNBQVEsQ0FBQyxHQUFFRixNQUFHUCxHQUFFLFFBQVEsWUFBVU07QUFBQSxNQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUVSO0FBQUEsSUFBQyxFQUFFO0FBQXY5MUcsUUFBeTkxRyxJQUFFLFdBQVU7QUFBQyxlQUFTQSxHQUFFQyxJQUFFO0FBQUMsVUFBRSxNQUFLRCxFQUFDLEdBQUUsS0FBSyxNQUFJQyxJQUFFLEtBQUssSUFBRUEsR0FBRTtBQUFBLE1BQUM7QUFBQyxhQUFPLEVBQUVELElBQUUsQ0FBQyxFQUFDLEtBQUksYUFBWSxPQUFNLFNBQVNBLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsSUFBR0MsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLElBQUUsVUFBVSxDQUFDLElBQUUsUUFBT0MsS0FBRSxLQUFLLEdBQUVDLEtBQUUsS0FBSyxJQUFJTCxLQUFFRCxFQUFDO0FBQUUsWUFBRyxrQkFBZ0JFLEtBQUUsS0FBSywwQkFBMEJBLElBQUVDLElBQUVHLEVBQUMsT0FBS0osS0FBRUcsR0FBRSxRQUFRLGFBQVcsSUFBR0wsT0FBSSxPQUFPLGFBQVcsTUFBSUMsTUFBRyxDQUFDLEVBQUUsU0FBU0QsRUFBQyxLQUFHLENBQUMsRUFBRSxTQUFTQyxFQUFDLEtBQUdELE9BQUksT0FBTyxhQUFXQyxPQUFJLENBQUMsT0FBTztBQUFVLGlCQUFPRCxLQUFFLEdBQUVDLEtBQUVDLElBQUUsS0FBSyxZQUFZRixJQUFFQyxJQUFFQyxFQUFDO0FBQUUsUUFBQUYsS0FBRUMsTUFBRyxRQUFRLEtBQUssMENBQTBDLEdBQUVBLEtBQUVELEtBQUUsT0FBSUEsT0FBSUMsT0FBSUQsS0FBRSxNQUFJQSxLQUFFLElBQUVBLEtBQUUsS0FBR0MsS0FBRSxNQUFJQSxLQUFFLElBQUVBLEtBQUU7QUFBSSxZQUFJTSxLQUFFLENBQUM7QUFBRSxRQUFBRCxLQUFFLEtBQUdGLE9BQUksa0JBQWdCQyxHQUFFLE9BQU8sTUFBTSxRQUFNLGtCQUFnQkEsR0FBRSxPQUFPLE9BQU9GLEVBQUMsRUFBRSxRQUFNLGNBQVlFLEdBQUUsT0FBTyxNQUFNLFFBQU0sY0FBWUEsR0FBRSxPQUFPLE9BQU9GLEVBQUMsRUFBRSxRQUFNRSxHQUFFLFFBQVEsaUJBQWVKLE1BQUc7QUFBTSxZQUFJTyxLQUFFTixLQUFFO0FBQUUsUUFBQU0sS0FBRSxJQUFFQSxLQUFFLElBQUVBLEtBQUUsTUFBSUEsTUFBRztBQUFHLFlBQUlDLEtBQUVILEtBQUVFLElBQUVFLEtBQUUsS0FBSyxNQUFNLEVBQUUsTUFBTUQsRUFBQyxDQUFDLEdBQUVFLEtBQUUsS0FBSyxJQUFJLElBQUdELEVBQUMsR0FBRUUsS0FBRSxLQUFLLE1BQU1ILEtBQUVFLEVBQUM7QUFBRSxRQUFBQyxLQUFFLE1BQUlBLEtBQUU7QUFBRyxZQUFJQyxLQUFFRCxLQUFFRCxJQUFFRyxLQUFFRCxLQUFFLEtBQUssTUFBTWIsS0FBRWEsRUFBQyxHQUFFRSxLQUFFRixLQUFFLEtBQUssS0FBS1osS0FBRVksRUFBQyxHQUFFSSxLQUFFSDtBQUFFLFlBQUdWLE1BQUdFLEtBQUUsR0FBRTtBQUFDLGlCQUFLQyxHQUFFLEtBQUssRUFBRSxZQUFZVSxJQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUdBLE1BQUdKLE1BQUdFO0FBQUk7QUFBQyxpQkFBTSxFQUFDLFFBQU9SLElBQUUsU0FBUUEsR0FBRSxDQUFDLEdBQUUsU0FBUUEsR0FBRUEsR0FBRSxTQUFPLENBQUMsRUFBQztBQUFBLFFBQUM7QUFBQyxZQUFJVyxLQUFFbEI7QUFBRSxTQUFDTyxLQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsWUFBWVcsSUFBRSxDQUFDLENBQUM7QUFBRSxpQkFBUUMsS0FBRSxLQUFLLElBQUlsQixLQUFFRCxFQUFDLElBQUVFLElBQUVrQixLQUFFLEdBQUVBLE1BQUdsQixJQUFFa0I7QUFBSSxVQUFBRixNQUFHQyxJQUFFWixHQUFFLEtBQUtXLEVBQUM7QUFBRSxlQUFPWCxHQUFFQSxHQUFFLFNBQU8sQ0FBQyxLQUFHTixNQUFHTSxHQUFFLElBQUksR0FBRSxFQUFDLFFBQU9BLElBQUUsU0FBUUEsR0FBRSxDQUFDLEdBQUUsU0FBUUEsR0FBRUEsR0FBRSxTQUFPLENBQUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxlQUFjLE9BQU0sU0FBU1AsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxJQUFHQyxLQUFFLFVBQVUsU0FBTyxJQUFFLFVBQVUsQ0FBQyxJQUFFLFFBQU9DLEtBQUUsS0FBSyxJQUFJSCxLQUFFRCxFQUFDO0FBQUUsMEJBQWdCRSxLQUFFLEtBQUssMEJBQTBCQSxJQUFFQyxJQUFFQyxFQUFDLE9BQUtGLEtBQUUsS0FBSyxFQUFFLFFBQVEsYUFBVztBQUFHLFlBQUlHLEtBQUVELEtBQUVGO0FBQUUsUUFBQUEsT0FBSSxPQUFPLGNBQVlBLEtBQUUsSUFBR0csS0FBRTtBQUFHLGlCQUFRQyxLQUFFLENBQUMsR0FBRUMsS0FBRVAsSUFBRUUsTUFBRztBQUFHLFVBQUFJLEdBQUUsS0FBS0MsRUFBQyxHQUFFQSxNQUFHRixJQUFFSCxNQUFHO0FBQUUsZUFBTSxFQUFDLFFBQU9JLElBQUUsU0FBUUEsR0FBRSxDQUFDLEdBQUUsU0FBUUEsR0FBRUEsR0FBRSxTQUFPLENBQUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSx3QkFBdUIsT0FBTSxTQUFTTixJQUFFQyxJQUFFQyxJQUFFO0FBQUMsUUFBQUQsTUFBRyxNQUFJQSxLQUFFLEtBQUssSUFBSUQsSUFBRUUsRUFBQyxJQUFHRixNQUFHLE1BQUlBLEtBQUUsS0FBSyxJQUFJQyxJQUFFQyxFQUFDO0FBQUcsaUJBQVFDLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLEtBQUssS0FBSyxLQUFLLElBQUlILEVBQUMsSUFBRSxLQUFLLElBQUlDLEVBQUMsSUFBRSxDQUFDLEdBQUVHLEtBQUUsS0FBSyxNQUFNLEtBQUssSUFBSUwsRUFBQyxJQUFFLEtBQUssSUFBSUUsRUFBQyxDQUFDLEdBQUVHLEtBQUVELElBQUVDO0FBQUksVUFBQUYsR0FBRSxLQUFLLEtBQUssSUFBSUQsSUFBRUcsRUFBQyxDQUFDO0FBQUUsZUFBTSxFQUFDLFFBQU9GLElBQUUsU0FBUUEsR0FBRSxDQUFDLEdBQUUsU0FBUUEsR0FBRUEsR0FBRSxTQUFPLENBQUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxvQkFBbUIsT0FBTSxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsUUFBQUQsTUFBRyxNQUFJQSxLQUFFLEtBQUssSUFBSUQsSUFBRUUsRUFBQyxJQUFHRixNQUFHLE1BQUlBLEtBQUUsS0FBSyxJQUFJQyxJQUFFQyxFQUFDO0FBQUcsaUJBQVFDLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLEtBQUssSUFBSUgsRUFBQyxJQUFFLEtBQUssSUFBSUMsRUFBQyxHQUFFRyxLQUFFLEtBQUssSUFBSUwsRUFBQyxJQUFFLEtBQUssSUFBSUUsRUFBQyxHQUFFSSxLQUFFRixLQUFFQyxJQUFFRSxLQUFFLEtBQUssTUFBTUQsRUFBQyxHQUFFRSxLQUFFRixLQUFFQyxJQUFFRSxLQUFFLEdBQUVDLEtBQUVMLElBQUVJLEtBQUVGLElBQUVFLE1BQUlDLE1BQUdGO0FBQUUsVUFBQUwsR0FBRSxLQUFLLEtBQUssSUFBSUQsSUFBRVEsRUFBQyxDQUFDO0FBQUUsZUFBT1AsR0FBRSxLQUFLLEtBQUssSUFBSUQsSUFBRUUsRUFBQyxDQUFDLEdBQUUsRUFBQyxRQUFPRCxJQUFFLFNBQVFILElBQUUsU0FBUUMsR0FBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSw2QkFBNEIsT0FBTSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRUg7QUFBRSxZQUFHLFdBQVNDLE1BQUcsS0FBSyxFQUFFLE9BQU8sTUFBTUEsRUFBQyxFQUFFLE9BQU8sYUFBVyxXQUFTLEtBQUssRUFBRSxPQUFPLE1BQU1BLEVBQUMsRUFBRSxZQUFXO0FBQUMsY0FBSUcsS0FBRSxPQUFPLEtBQUssRUFBRSxPQUFPLE1BQU1ILEVBQUMsRUFBRSxPQUFPLFVBQVUsQ0FBQyxDQUFDO0FBQUUsWUFBRSxTQUFTRyxFQUFDLEtBQUcsTUFBSSxLQUFLLEVBQUUsUUFBUSxrQkFBZ0JELEtBQUUsS0FBSyxLQUFLRCxFQUFDO0FBQUEsUUFBRTtBQUFDLGVBQU9DLEtBQUVILEtBQUVHLEtBQUVIO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHFCQUFvQixPQUFNLFNBQVNBLElBQUVDLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssRUFBRSxTQUFRQyxLQUFFLEtBQUssRUFBRSxRQUFPQyxLQUFFRixHQUFFLGtCQUFnQkMsR0FBRSxRQUFNQSxHQUFFLE1BQU1KLEVBQUM7QUFBRSxtQkFBU0csR0FBRSxXQUFXSCxFQUFDLE1BQUlHLEdBQUUsV0FBV0gsRUFBQyxJQUFFLENBQUM7QUFBRyxZQUFJTSxLQUFFLEtBQUssSUFBSUosS0FBRUQsRUFBQztBQUFFLFlBQUdJLEdBQUUsZUFBYUMsTUFBRyxNQUFJSCxHQUFFLGtCQUFnQixPQUFJRSxHQUFFLGVBQWFDLEtBQUU7QUFBRSxVQUFBSCxHQUFFLHFCQUFtQixPQUFHQSxHQUFFLFdBQVdILEVBQUMsSUFBRSxLQUFLLGlCQUFpQkMsSUFBRUMsSUFBRUcsR0FBRSxPQUFPLEdBQUVGLEdBQUUsV0FBV0gsRUFBQyxJQUFFSyxHQUFFLGlCQUFlLEtBQUsscUJBQXFCSixJQUFFQyxJQUFFRyxHQUFFLE9BQU8sSUFBRSxLQUFLLGlCQUFpQkosSUFBRUMsSUFBRUcsR0FBRSxPQUFPO0FBQUEsaUJBQVVILE9BQUksQ0FBQyxPQUFPLGFBQVcsRUFBRSxTQUFTQSxFQUFDO0FBQUUsY0FBR0MsR0FBRSxxQkFBbUIsT0FBRyxXQUFTRSxHQUFFLE9BQUssV0FBU0EsR0FBRSxPQUFLQSxHQUFFLGdCQUFlO0FBQUMsZ0JBQUlFLEtBQUUsV0FBU0gsR0FBRSxNQUFNSixFQUFDLEVBQUUsT0FBSyxXQUFTSSxHQUFFLE1BQU1KLEVBQUMsRUFBRSxPQUFLSSxHQUFFLE1BQU1KLEVBQUMsRUFBRTtBQUFlLFlBQUFHLEdBQUUsV0FBV0gsRUFBQyxJQUFFLEtBQUssVUFBVUMsSUFBRUMsSUFBRUcsR0FBRSxhQUFXQSxHQUFFLGFBQVdDLEtBQUUsS0FBR0EsS0FBRSxJQUFFQSxLQUFFLElBQUUsR0FBRU4sSUFBRU8sRUFBQztBQUFBLFVBQUM7QUFBTSxZQUFBSixHQUFFLFdBQVdILEVBQUMsSUFBRSxLQUFLLFlBQVlDLElBQUVDLElBQUVHLEdBQUUsWUFBV0wsRUFBQztBQUFBO0FBQU8sVUFBQUcsR0FBRSxXQUFXSCxFQUFDLElBQUUsS0FBSyxZQUFZLEdBQUUsR0FBRSxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGFBQVksT0FBTSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEdBQUVDLEtBQUVELEdBQUUsU0FBUUUsS0FBRUYsR0FBRSxPQUFPLE9BQU1HLEtBQUUsS0FBSyxJQUFJSixLQUFFRCxFQUFDO0FBQUUsZUFBT0MsT0FBSSxDQUFDLE9BQU8sYUFBVyxFQUFFLFNBQVNBLEVBQUMsSUFBRUUsR0FBRSxhQUFXLEtBQUssWUFBWUgsSUFBRUMsSUFBRUcsR0FBRSxhQUFXQSxHQUFFLGFBQVdDLEtBQUUsS0FBR0EsS0FBRSxJQUFFQSxLQUFFLElBQUUsR0FBRSxDQUFDLElBQUVGLEdBQUUsYUFBVyxLQUFLLFlBQVksR0FBRSxHQUFFLENBQUMsR0FBRUEsR0FBRTtBQUFBLE1BQVUsRUFBQyxHQUFFLEVBQUMsS0FBSSxzQkFBcUIsT0FBTSxXQUFVO0FBQUMsWUFBSUgsS0FBRSxNQUFLQyxLQUFFLEtBQUssRUFBRSxTQUFRQyxLQUFFLEtBQUssRUFBRSxRQUFPQyxLQUFFRixHQUFFLFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRUcsS0FBRUgsR0FBRSxRQUFRLE9BQU8sQ0FBQyxDQUFDLEdBQUVJLEtBQUUsQ0FBQztBQUFFLFFBQUFILEdBQUUsTUFBTSxRQUFTLFNBQVNELElBQUVLLElBQUU7QUFBQyxjQUFJQyxLQUFFRDtBQUFFLFVBQUFKLEdBQUUsT0FBTyxRQUFTLFNBQVNGLElBQUVFLElBQUU7QUFBQyxZQUFBRixHQUFFLFNBQU9DLEdBQUUsZUFBYU0sS0FBRUwsSUFBRUksT0FBSUosS0FBRUcsR0FBRSxLQUFLLEVBQUMsT0FBTUgsSUFBRSxjQUFhSSxJQUFFLGVBQWMsS0FBRSxDQUFDLElBQUVELEdBQUUsS0FBSyxFQUFDLE9BQU1ILEdBQUMsQ0FBQztBQUFBLFVBQUUsQ0FBRTtBQUFFLGNBQUlNLEtBQUVMLEdBQUVJLEVBQUMsR0FBRUUsS0FBRUwsR0FBRUcsRUFBQztBQUFFLFVBQUFQLEdBQUUsa0JBQWtCTSxJQUFFRSxJQUFFQyxFQUFDO0FBQUEsUUFBQyxDQUFFLEdBQUUsS0FBSyx3QkFBd0JOLElBQUVDLElBQUVDLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMkJBQTBCLE9BQU0sU0FBU0wsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsTUFBS0MsS0FBRSxLQUFLLEVBQUUsUUFBT0MsS0FBRSxLQUFLLEVBQUUsU0FBUUMsS0FBRSxDQUFDO0FBQUUsUUFBQUosR0FBRSxRQUFTLFNBQVNGLElBQUU7QUFBQyxVQUFBQSxHQUFFLGtCQUFnQixXQUFTTSxHQUFFTixHQUFFLEtBQUssTUFBSU0sR0FBRU4sR0FBRSxLQUFLLElBQUUsQ0FBQyxJQUFHTSxHQUFFTixHQUFFLEtBQUssRUFBRSxLQUFLQSxHQUFFLEtBQUssR0FBRU0sR0FBRU4sR0FBRSxLQUFLLEVBQUUsS0FBS0EsR0FBRSxZQUFZO0FBQUEsUUFBRSxDQUFFLEdBQUVLLEdBQUUsd0JBQXNCQyxJQUFFQSxHQUFFLFFBQVMsU0FBU04sSUFBRUMsSUFBRTtBQUFDLFVBQUFLLEdBQUUsUUFBUyxTQUFTSixJQUFFQyxJQUFFO0FBQUMsZ0JBQUlDLElBQUVDO0FBQUUsWUFBQUosT0FBSUUsT0FBSUMsS0FBRUosSUFBRUssS0FBRUgsSUFBRUUsR0FBRSxPQUFRLFNBQVNKLElBQUU7QUFBQyxxQkFBTSxPQUFLSyxHQUFFLFFBQVFMLEVBQUM7QUFBQSxZQUFDLENBQUUsR0FBRyxTQUFPLE1BQUlNLEdBQUVMLEVBQUMsSUFBRUssR0FBRUwsRUFBQyxFQUFFLE9BQU9LLEdBQUVILEVBQUMsQ0FBQztBQUFBLFVBQUUsQ0FBRTtBQUFBLFFBQUMsQ0FBRTtBQUFFLFlBQUlJLEtBQUVELEdBQUUsSUFBSyxTQUFTTixJQUFFO0FBQUMsaUJBQU9BLEdBQUUsT0FBUSxTQUFTQyxJQUFFQyxJQUFFO0FBQUMsbUJBQU9GLEdBQUUsUUFBUUMsRUFBQyxNQUFJQztBQUFBLFVBQUMsQ0FBRTtBQUFBLFFBQUMsQ0FBRSxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLGlCQUFPQSxHQUFFLEtBQUs7QUFBQSxRQUFDLENBQUU7QUFBRSxRQUFBTSxLQUFFQSxHQUFFLE9BQVEsU0FBU04sSUFBRTtBQUFDLGlCQUFNLENBQUMsQ0FBQ0E7QUFBQSxRQUFDLENBQUU7QUFBRSxZQUFJUSxLQUFFRCxHQUFFLE1BQU0sR0FBRUUsS0FBRUQsR0FBRSxJQUFLLFNBQVNSLElBQUU7QUFBQyxpQkFBTyxLQUFLLFVBQVVBLEVBQUM7QUFBQSxRQUFDLENBQUU7QUFBRSxRQUFBUSxLQUFFQSxHQUFFLE9BQVEsU0FBU1IsSUFBRUMsSUFBRTtBQUFDLGlCQUFPUSxHQUFFLFFBQVEsS0FBSyxVQUFVVCxFQUFDLENBQUMsTUFBSUM7QUFBQSxRQUFDLENBQUU7QUFBRSxZQUFJUyxLQUFFLENBQUMsR0FBRUMsS0FBRSxDQUFDO0FBQUUsUUFBQVgsR0FBRSxRQUFTLFNBQVNBLElBQUVFLElBQUU7QUFBQyxVQUFBTSxHQUFFLFFBQVMsU0FBU0wsSUFBRUMsSUFBRTtBQUFDLFlBQUFELEdBQUUsUUFBUUQsRUFBQyxJQUFFLE9BQUssV0FBU1EsR0FBRU4sRUFBQyxNQUFJTSxHQUFFTixFQUFDLElBQUUsQ0FBQyxHQUFFTyxHQUFFUCxFQUFDLElBQUUsQ0FBQyxJQUFHTSxHQUFFTixFQUFDLEVBQUUsS0FBSyxFQUFDLEtBQUlGLElBQUUsT0FBTUYsR0FBQyxDQUFDLEdBQUVXLEdBQUVQLEVBQUMsRUFBRSxLQUFLLEVBQUMsS0FBSUYsSUFBRSxPQUFNRCxHQUFFQyxFQUFDLEVBQUMsQ0FBQztBQUFBLFVBQUUsQ0FBRTtBQUFBLFFBQUMsQ0FBRTtBQUFFLFlBQUlVLEtBQUUsTUFBTSxNQUFNLE1BQUssTUFBTUosR0FBRSxNQUFNLENBQUMsRUFBRSxJQUFJLE9BQU8sVUFBVSxTQUFRLE9BQU8sU0FBUyxHQUFFSyxLQUFFLE1BQU0sTUFBTSxNQUFLLE1BQU1MLEdBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxPQUFPLFVBQVUsU0FBUSxDQUFDLE9BQU8sU0FBUztBQUFFLFFBQUFFLEdBQUUsUUFBUyxTQUFTVixJQUFFQyxJQUFFO0FBQUMsVUFBQUQsR0FBRSxRQUFTLFNBQVNBLElBQUVFLElBQUU7QUFBQyxZQUFBVSxHQUFFWCxFQUFDLElBQUUsS0FBSyxJQUFJRCxHQUFFLE9BQU1ZLEdBQUVYLEVBQUMsQ0FBQztBQUFBLFVBQUMsQ0FBRTtBQUFBLFFBQUMsQ0FBRSxHQUFFVSxHQUFFLFFBQVMsU0FBU1gsSUFBRUMsSUFBRTtBQUFDLFVBQUFELEdBQUUsUUFBUyxTQUFTQSxJQUFFRSxJQUFFO0FBQUMsWUFBQVcsR0FBRVosRUFBQyxJQUFFLEtBQUssSUFBSUQsR0FBRSxPQUFNYSxHQUFFWixFQUFDLENBQUM7QUFBQSxVQUFDLENBQUU7QUFBQSxRQUFDLENBQUUsR0FBRUQsR0FBRSxRQUFTLFNBQVNBLElBQUVDLElBQUU7QUFBQyxVQUFBVSxHQUFFLFFBQVMsU0FBU1gsSUFBRUUsSUFBRTtBQUFDLGdCQUFJSSxLQUFFTSxHQUFFVixFQUFDLEdBQUVLLEtBQUVNLEdBQUVYLEVBQUM7QUFBRSxZQUFBRSxHQUFFLE1BQU0sWUFBVUcsS0FBRSxHQUFFUCxHQUFFLFFBQVMsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGNBQUFELEdBQUUsVUFBUSxDQUFDLE9BQU8sY0FBWU8sTUFBR1AsR0FBRSxRQUFPTSxPQUFJLE9BQU8sY0FBWUEsTUFBR0ksR0FBRVIsRUFBQyxFQUFFRCxFQUFDLEVBQUU7QUFBQSxZQUFNLENBQUUsSUFBR0QsR0FBRSxRQUFTLFNBQVNFLElBQUVNLElBQUU7QUFBQyxjQUFBUixHQUFFUSxFQUFDLEVBQUUsUUFBTVAsT0FBSSxXQUFTRyxHQUFFLE1BQU1ILEVBQUMsRUFBRSxRQUFNSyxLQUFFLGNBQVksT0FBT0YsR0FBRSxNQUFNSCxFQUFDLEVBQUUsTUFBSUcsR0FBRSxNQUFNSCxFQUFDLEVBQUUsSUFBSUksR0FBRSxJQUFJLElBQUVELEdBQUUsTUFBTUgsRUFBQyxFQUFFLE1BQUssV0FBU0csR0FBRSxNQUFNSCxFQUFDLEVBQUUsUUFBTU0sS0FBRSxjQUFZLE9BQU9ILEdBQUUsTUFBTUgsRUFBQyxFQUFFLE1BQUlHLEdBQUUsTUFBTUgsRUFBQyxFQUFFLElBQUlJLEdBQUUsSUFBSSxJQUFFRCxHQUFFLE1BQU1ILEVBQUMsRUFBRSxNQUFLRSxHQUFFLGtCQUFrQkYsSUFBRUssSUFBRUMsRUFBQztBQUFBLFlBQUUsQ0FBRTtBQUFBLFVBQUMsQ0FBRTtBQUFBLFFBQUMsQ0FBRTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxjQUFhLE9BQU0sU0FBU1AsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFFBQUFGLE9BQUlBLEtBQUU7QUFBTSxZQUFJRyxLQUFFSCxHQUFFO0FBQUUsWUFBR0csR0FBRSxRQUFRLG1CQUFpQkEsR0FBRSxRQUFRLGdCQUFnQjtBQUFPLGlCQUFPLFFBQVEsS0FBSyxzREFBc0QsR0FBRUY7QUFBRSxZQUFJRyxLQUFFRCxHQUFFLFFBQVEsUUFBUSxDQUFDLEdBQUVFLEtBQUVGLEdBQUUsT0FBTyxNQUFNO0FBQVEsZUFBT0YsR0FBRSxRQUFTLFNBQVNELElBQUVNLElBQUU7QUFBQyxtQkFBUUMsS0FBRSxHQUFFQyxLQUFFLEdBQUVBLEtBQUVKLEdBQUUsUUFBT0k7QUFBSSxnQkFBR0osR0FBRUksRUFBQyxLQUFHTixHQUFFLE1BQU0sS0FBSTtBQUFDLGNBQUFLLEtBQUVDO0FBQUU7QUFBQSxZQUFLO0FBQUMsY0FBSUMsSUFBRUMsSUFBRUMsS0FBRVIsR0FBRSxRQUFRLFFBQVFHLEVBQUMsR0FBRU0sS0FBRVQsR0FBRSxRQUFRLFFBQVFHLEVBQUMsR0FBRU8sS0FBRVYsR0FBRSxRQUFRO0FBQW9CLFVBQUFBLEdBQUUsUUFBUSxPQUFPLFFBQVMsU0FBU0csSUFBRUUsSUFBRTtBQUFDLGdCQUFJTSxLQUFFUixHQUFFQyxFQUFDO0FBQUUsWUFBQUYsTUFBR1MsS0FBRUQsR0FBRU4sRUFBQyxHQUFFRSxLQUFFQyxLQUFFSSxJQUFFRCxHQUFFLFFBQVMsU0FBU2IsSUFBRUMsSUFBRTtBQUFDLGNBQUFHLEdBQUVILEVBQUMsS0FBR0MsR0FBRSxNQUFNLE9BQUtFLEdBQUVILEVBQUMsS0FBR0MsR0FBRSxNQUFNLFFBQU1GLEtBQUVVLE1BQUcsU0FBT1YsT0FBSVUsS0FBRVYsS0FBR00sR0FBRUwsRUFBQyxJQUFFUSxNQUFHLFNBQU9ILEdBQUVMLEVBQUMsTUFBSVEsS0FBRUgsR0FBRUwsRUFBQztBQUFBLFlBQUcsQ0FBRSxNQUFJUSxLQUFFQyxLQUFFSSxJQUFFUixHQUFFLFFBQVMsU0FBU04sSUFBRUMsSUFBRTtBQUFDLGtCQUFHRyxHQUFFSCxFQUFDLEtBQUdDLEdBQUUsTUFBTSxPQUFLRSxHQUFFSCxFQUFDLEtBQUdDLEdBQUUsTUFBTSxLQUFJO0FBQUMsb0JBQUlHLEtBQUVMLElBQUVNLEtBQUVOO0FBQUUsZ0JBQUFHLEdBQUUsUUFBUSxPQUFPLFFBQVMsU0FBU0QsSUFBRUMsSUFBRTtBQUFDLDJCQUFPSCxPQUFJSyxLQUFFLEtBQUssSUFBSUgsR0FBRUQsRUFBQyxHQUFFSSxFQUFDLEdBQUVDLEtBQUUsS0FBSyxJQUFJSixHQUFFRCxFQUFDLEdBQUVLLEVBQUM7QUFBQSxnQkFBRSxDQUFFLEdBQUVBLEtBQUVJLE1BQUcsU0FBT0osT0FBSUksS0FBRUosS0FBR0QsS0FBRUksTUFBRyxTQUFPSixPQUFJSSxLQUFFSjtBQUFBLGNBQUU7QUFBQSxZQUFDLENBQUUsSUFBRyxXQUFTSSxNQUFHLFdBQVNDLE9BQUlELEtBQUVFLElBQUVELEtBQUVFLEtBQUdGLE1BQUdBLEtBQUUsSUFBRSxNQUFHLEtBQUksT0FBS0QsTUFBR0EsS0FBRSxJQUFFLE1BQUksUUFBSyxNQUFJQyxPQUFJRCxLQUFFLElBQUdDLEtBQUUsSUFBR0EsS0FBRSxLQUFHQSxLQUFFRSxPQUFJRixLQUFFRSxLQUFHSCxLQUFFLEtBQUdBLEtBQUVFLE9BQUlGLEtBQUVFLEtBQUdWLEdBQUUsU0FBTyxLQUFHQSxHQUFFTyxFQUFDLEVBQUUsTUFBSSxXQUFTUixHQUFFLE1BQUlTLEtBQUVULEdBQUUsS0FBSUMsR0FBRU8sRUFBQyxFQUFFLE1BQUksV0FBU1IsR0FBRSxNQUFJVSxLQUFFVixHQUFFLFFBQU1DLEdBQUUsQ0FBQyxFQUFFLE1BQUksV0FBU0QsR0FBRSxNQUFJUyxLQUFFVCxHQUFFLEtBQUlDLEdBQUUsQ0FBQyxFQUFFLE1BQUksV0FBU0QsR0FBRSxNQUFJVSxLQUFFVixHQUFFO0FBQUEsVUFBSSxDQUFFO0FBQUEsUUFBQyxDQUFFLEdBQUVDO0FBQUEsTUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFFRDtBQUFBLElBQUMsRUFBRTtBQUEzc2pILFFBQTZzakgsSUFBRSxXQUFVO0FBQUMsZUFBU0EsR0FBRUMsSUFBRTtBQUFDLFVBQUUsTUFBS0QsRUFBQyxHQUFFLEtBQUssTUFBSUMsSUFBRSxLQUFLLElBQUVBLEdBQUUsR0FBRSxLQUFLLFNBQU8sSUFBSSxFQUFFQSxFQUFDO0FBQUEsTUFBQztBQUFDLGFBQU8sRUFBRUQsSUFBRSxDQUFDLEVBQUMsS0FBSSxRQUFPLE9BQU0sV0FBVTtBQUFDLGFBQUssVUFBVSxHQUFFLEtBQUssVUFBVSxHQUFFLEtBQUssVUFBVTtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxlQUFjLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxPQUFPLFdBQVVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxDQUFDLE9BQU8sV0FBVUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLE1BQUtDLEtBQUUsS0FBSyxFQUFFLFFBQU9DLEtBQUUsS0FBSyxFQUFFLFNBQVFDLEtBQUUsQ0FBQyxPQUFPLFdBQVVDLEtBQUUsT0FBTztBQUFVLGlCQUFPSixPQUFJQSxLQUFFSCxLQUFFO0FBQUcsWUFBSVEsS0FBRUgsR0FBRSxRQUFPSSxLQUFFRCxJQUFFRSxLQUFFRjtBQUFFLDBCQUFnQkosR0FBRSxNQUFNLFFBQU1LLEtBQUVKLEdBQUUsZUFBY0ssS0FBRUwsR0FBRSxpQkFBZSxjQUFZRCxHQUFFLE1BQU0sUUFBTUssS0FBRUosR0FBRSxlQUFjSyxLQUFFTCxHQUFFLGlCQUFlQSxHQUFFLGdCQUFjSSxLQUFFSixHQUFFLGtCQUFpQkssS0FBRUwsR0FBRTtBQUFnQixpQkFBUU0sS0FBRVgsSUFBRVcsS0FBRVIsSUFBRVEsTUFBSTtBQUFDLFVBQUFOLEdBQUUsYUFBVyxLQUFLLElBQUlBLEdBQUUsWUFBV0csR0FBRUcsRUFBQyxFQUFFLE1BQU0sR0FBRU4sR0FBRSxlQUFlLFdBQVNBLEdBQUUsYUFBV0EsR0FBRSxlQUFlLE9BQVEsU0FBU0wsSUFBRTtBQUFDLG1CQUFPLFdBQVNBO0FBQUEsVUFBQyxDQUFFLEVBQUUsU0FBUUssR0FBRSxPQUFPLFVBQVEsZUFBYUQsR0FBRSxNQUFNLFFBQU0sTUFBSUMsR0FBRSxPQUFPLE9BQVEsU0FBU0wsSUFBRUMsSUFBRTtBQUFDLG1CQUFPRCxLQUFFQyxHQUFFO0FBQUEsVUFBTSxHQUFHLENBQUMsTUFBSUksR0FBRSxhQUFXLEtBQUssSUFBSUEsR0FBRSxZQUFXQSxHQUFFLE9BQU8sTUFBTTtBQUFHLG1CQUFRTyxLQUFFLEdBQUVBLEtBQUVQLEdBQUUsT0FBT00sRUFBQyxFQUFFLFFBQU9DLE1BQUk7QUFBQyxnQkFBSUMsS0FBRUwsR0FBRUcsRUFBQyxFQUFFQyxFQUFDO0FBQUUscUJBQU9DLE1BQUcsRUFBRSxTQUFTQSxFQUFDLEtBQUcsV0FBU0gsR0FBRUMsRUFBQyxFQUFFQyxFQUFDLE1BQUlOLEtBQUUsS0FBSyxJQUFJQSxJQUFFSSxHQUFFQyxFQUFDLEVBQUVDLEVBQUMsQ0FBQyxHQUFFWCxLQUFFLEtBQUssSUFBSUEsSUFBRVMsR0FBRUMsRUFBQyxFQUFFQyxFQUFDLENBQUMsSUFBRyxXQUFTSCxHQUFFRSxFQUFDLEVBQUVDLEVBQUMsTUFBSVgsS0FBRSxLQUFLLElBQUlBLElBQUVRLEdBQUVFLEVBQUMsRUFBRUMsRUFBQyxDQUFDLEdBQUVWLEtBQUUsS0FBSyxJQUFJQSxJQUFFTyxHQUFFRSxFQUFDLEVBQUVDLEVBQUMsQ0FBQyxJQUFHLGtCQUFnQixLQUFLLEVBQUUsT0FBTyxNQUFNLFFBQU0sY0FBWSxLQUFLLEVBQUUsT0FBTyxNQUFNLFFBQU0sZ0JBQWMsS0FBSyxFQUFFLE9BQU8sTUFBTSxRQUFNLGVBQWEsS0FBSyxFQUFFLE9BQU8sTUFBTSxTQUFPLGtCQUFnQixLQUFLLEVBQUUsT0FBTyxNQUFNLFFBQU0sY0FBWSxLQUFLLEVBQUUsT0FBTyxNQUFNLFFBQU0sV0FBU1AsR0FBRSxjQUFjTSxFQUFDLEVBQUVDLEVBQUMsTUFBSU4sS0FBRSxLQUFLLElBQUlBLElBQUVELEdBQUUsY0FBY00sRUFBQyxFQUFFQyxFQUFDLENBQUMsR0FBRU4sS0FBRSxLQUFLLElBQUlBLElBQUVELEdBQUUsY0FBY00sRUFBQyxFQUFFQyxFQUFDLENBQUMsR0FBRU4sS0FBRSxLQUFLLElBQUlBLElBQUVELEdBQUUsY0FBY00sRUFBQyxFQUFFQyxFQUFDLENBQUMsR0FBRU4sS0FBRSxLQUFLLElBQUlBLElBQUVELEdBQUUsY0FBY00sRUFBQyxFQUFFQyxFQUFDLENBQUMsR0FBRSxjQUFZLEtBQUssRUFBRSxPQUFPLE1BQU0sU0FBT04sS0FBRSxLQUFLLElBQUlBLElBQUVELEdBQUUsY0FBY00sRUFBQyxFQUFFQyxFQUFDLENBQUMsS0FBSSxDQUFDUixHQUFFLE9BQU9PLEVBQUMsRUFBRSxRQUFNLGtCQUFnQlAsR0FBRSxPQUFPTyxFQUFDLEVBQUUsUUFBTSxjQUFZUCxHQUFFLE9BQU9PLEVBQUMsRUFBRSxRQUFNLGdCQUFjUCxHQUFFLE9BQU9PLEVBQUMsRUFBRSxRQUFNLGVBQWFQLEdBQUUsT0FBT08sRUFBQyxFQUFFLFNBQU9MLEtBQUUsS0FBSyxJQUFJQSxJQUFFRCxHQUFFLE9BQU9NLEVBQUMsRUFBRUMsRUFBQyxDQUFDLEdBQUVYLEtBQUUsS0FBSyxJQUFJQSxJQUFFSSxHQUFFLE9BQU9NLEVBQUMsRUFBRUMsRUFBQyxDQUFDLElBQUdWLEtBQUVJLEtBQUdELEdBQUUsWUFBWU0sRUFBQyxLQUFHTixHQUFFLFlBQVlNLEVBQUMsRUFBRUMsRUFBQyxLQUFHLE1BQU0sUUFBUVAsR0FBRSxZQUFZTSxFQUFDLEVBQUVDLEVB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QUVELEdBQUUsTUFBTSxZQUFVRyxJQUFFSCxHQUFFLE1BQU0sVUFBUUUsSUFBRUY7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksY0FBYSxPQUFNLFdBQVU7QUFBQyxnQkFBTyxLQUFLLEVBQUUsT0FBTyxNQUFNLFNBQVE7QUFBQSxVQUFDLEtBQUk7QUFBQSxVQUFXO0FBQVEsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVcsaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQVksaUJBQUssU0FBTyxDQUFDLFdBQVUsV0FBVSxXQUFVLFdBQVUsU0FBUztBQUFBLFFBQUM7QUFBQyxlQUFPLEtBQUs7QUFBQSxNQUFNLEVBQUMsQ0FBQyxDQUFDLEdBQUVBO0FBQUEsSUFBQyxFQUFFO0FBQWgwNEksUUFBazA0SSxLQUFHLFdBQVU7QUFBQyxlQUFT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Q0FBQyxLQUFJQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBT0EsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRSxDQUFDLEtBQUlBLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLEdBQUUsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU9BLEdBQUUsSUFBRUQsR0FBRSxDQUFDLEdBQUUsQ0FBQyxLQUFJQSxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFQyxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFLENBQUMsS0FBSUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFQyxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFLENBQUMsS0FBSUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBT0EsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRUMsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRSxDQUFDLEtBQUlBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLEdBQUUsU0FBU0EsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQU9ELEdBQUUsSUFBRUMsR0FBRSxHQUFFRCxHQUFFLElBQUVDLEdBQUUsR0FBRSxDQUFD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QUksT0FBS0EsR0FBRSxDQUFDLE1BQUksS0FBSyxTQUFPLE1BQUssS0FBSyxPQUFLQSxHQUFFLENBQUMsS0FBR0QsY0FBYUcsR0FBRSxXQUFTLEtBQUssUUFBTUgsR0FBRSxRQUFRLEdBQUUsS0FBSyxPQUFLQSxHQUFFO0FBQUEsTUFBSyxHQUFFLFFBQU8sRUFBQyxVQUFTLFdBQVU7QUFBQyxnQkFBTyxPQUFLLEtBQUssT0FBSyxDQUFDLEVBQUUsTUFBSSxLQUFLLFNBQU8sTUFBSSxPQUFLLEtBQUssT0FBSyxLQUFLLFFBQU0sTUFBSSxLQUFLLFNBQU8sS0FBSztBQUFBLE1BQUksR0FBRSxRQUFPLFdBQVU7QUFBQyxlQUFPLEtBQUssU0FBUztBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxlQUFPLEtBQUs7QUFBQSxNQUFLLEdBQUUsTUFBSyxTQUFTQSxJQUFFO0FBQUMsZUFBT0EsS0FBRSxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsR0FBRSxJQUFJRyxHQUFFLE9BQU8sT0FBS0gsSUFBRSxLQUFLLFFBQU1BLEdBQUUsSUFBSTtBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPQSxLQUFFLElBQUlHLEdBQUUsT0FBT0gsRUFBQyxHQUFFLElBQUlHLEdBQUUsT0FBTyxPQUFLSCxJQUFFLEtBQUssUUFBTUEsR0FBRSxJQUFJO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU9BLEtBQUUsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEdBQUUsSUFBSUcsR0FBRSxPQUFPLE9BQUtILElBQUUsS0FBSyxRQUFNQSxHQUFFLElBQUk7QUFBQSxNQUFDLEdBQUUsUUFBTyxTQUFTQSxJQUFFO0FBQUMsZUFBT0EsS0FBRSxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsR0FBRSxJQUFJRyxHQUFFLE9BQU8sT0FBS0gsSUFBRSxLQUFLLFFBQU1BLEdBQUUsSUFBSTtBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLElBQUlFLEdBQUUsT0FBTyxJQUFJO0FBQUUsZUFBTSxZQUFVLE9BQU9ILE9BQUlDLEdBQUUsT0FBS0QsS0FBR0M7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTRCxJQUFFO0FBQUMsZUFBTyxLQUFLLGNBQVksSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEdBQUVBLEdBQUUsYUFBVyxLQUFLLFlBQVksU0FBTyxLQUFLLFFBQU87QUFBQSxNQUFJLEdBQUUsSUFBRyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLGNBQVksSUFBSUcsR0FBRSxPQUFPLEtBQUssV0FBVyxFQUFFLE1BQU0sSUFBSSxFQUFFLE1BQU1ILEVBQUMsRUFBRSxLQUFLLElBQUksSUFBRTtBQUFBLE1BQUksRUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxVQUFRQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUU7QUFBQyxhQUFLLFVBQVFHLEdBQUUsU0FBUyxNQUFNLFFBQU8sS0FBSyxTQUFPLE1BQUssS0FBSyxNQUFJLENBQUMsSUFBRyxLQUFLLE9BQUtILFFBQUssS0FBSyxPQUFLQSxHQUFFLFVBQVMsS0FBSyxLQUFLLFdBQVMsTUFBSyxLQUFLLFVBQVFBLEdBQUUsYUFBYSxRQUFRLEtBQUcsS0FBSztBQUFBLE1BQVEsR0FBRSxRQUFPLEVBQUMsR0FBRSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssS0FBSUEsRUFBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxLQUFJQSxFQUFDO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEVBQUUsSUFBRSxLQUFLLE1BQU0sSUFBRSxJQUFFLEtBQUssRUFBRUEsS0FBRSxLQUFLLE1BQU0sSUFBRSxDQUFDO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEVBQUUsSUFBRSxLQUFLLE9BQU8sSUFBRSxJQUFFLEtBQUssRUFBRUEsS0FBRSxLQUFLLE9BQU8sSUFBRSxDQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxFQUFFRCxFQUFDLEVBQUUsRUFBRUMsRUFBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFNBQVNELElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssR0FBR0QsRUFBQyxFQUFFLEdBQUdDLEVBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTRCxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssU0FBUUEsRUFBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxVQUFTQSxFQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUVXLEdBQUUsTUFBS2IsSUFBRUMsRUFBQztBQUFFLGVBQU8sS0FBSyxNQUFNLElBQUlFLEdBQUUsT0FBT0QsR0FBRSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUlDLEdBQUUsT0FBT0QsR0FBRSxNQUFNLENBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTRixJQUFFO0FBQUMsYUFBSyxlQUFlO0FBQUUsWUFBSUMsS0FBRWUsR0FBRSxLQUFLLEtBQUssVUFBVSxJQUFFLENBQUM7QUFBRSxlQUFPaEIsS0FBRUEsR0FBRSxJQUFJQyxFQUFDLElBQUUsS0FBSyxNQUFNQSxFQUFDLEdBQUVBO0FBQUEsTUFBQyxHQUFFLFFBQU8sV0FBVTtBQUFDLGVBQU8sS0FBSyxPQUFPLEtBQUcsS0FBSyxPQUFPLEVBQUUsY0FBYyxJQUFJLEdBQUU7QUFBQSxNQUFJLEdBQUUsU0FBUSxTQUFTRCxJQUFFO0FBQUMsZUFBTyxLQUFLLE1BQU1BLEVBQUMsRUFBRSxPQUFPLEdBQUVBO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU9BLEdBQUUsSUFBSSxJQUFJO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU9BLEdBQUUsSUFBSSxJQUFJO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLE1BQUtBLEVBQUM7QUFBQSxNQUFDLEdBQUUsTUFBSyxXQUFVO0FBQUMsZUFBTyxLQUFLLE1BQU0sV0FBVSxFQUFFO0FBQUEsTUFBQyxHQUFFLE1BQUssV0FBVTtBQUFDLGVBQU8sS0FBSyxNQUFNLFdBQVUsTUFBTTtBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxlQUFNLFVBQVEsS0FBSyxNQUFNLFNBQVM7QUFBQSxNQUFDLEdBQUUsVUFBUyxXQUFVO0FBQUMsZUFBTyxLQUFLLEtBQUssSUFBSTtBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxZQUFJQSxLQUFFLEtBQUssS0FBSyxPQUFPO0FBQUUsZUFBTyxRQUFNQSxLQUFFLENBQUMsSUFBRUEsR0FBRSxLQUFLLEVBQUUsTUFBTUcsR0FBRSxNQUFNLFNBQVM7QUFBQSxNQUFDLEdBQUUsVUFBUyxTQUFTSCxJQUFFO0FBQUMsZUFBTSxNQUFJLEtBQUssUUFBUSxFQUFFLFFBQVFBLEVBQUM7QUFBQSxNQUFDLEdBQUUsVUFBUyxTQUFTQSxJQUFFO0FBQUMsWUFBRyxDQUFDLEtBQUssU0FBU0EsRUFBQyxHQUFFO0FBQUMsY0FBSUMsS0FBRSxLQUFLLFFBQVE7QUFBRSxVQUFBQSxHQUFFLEtBQUtELEVBQUMsR0FBRSxLQUFLLEtBQUssU0FBUUMsR0FBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLFFBQUM7QUFBQyxlQUFPO0FBQUEsTUFBSSxHQUFFLGFBQVksU0FBU0QsSUFBRTtBQUFDLGVBQU8sS0FBSyxTQUFTQSxFQUFDLEtBQUcsS0FBSyxLQUFLLFNBQVEsS0FBSyxRQUFRLEVBQUUsT0FBUSxTQUFTQyxJQUFFO0FBQUMsaUJBQU9BLE1BQUdEO0FBQUEsUUFBQyxDQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBRTtBQUFBLE1BQUksR0FBRSxhQUFZLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssU0FBU0EsRUFBQyxJQUFFLEtBQUssWUFBWUEsRUFBQyxJQUFFLEtBQUssU0FBU0EsRUFBQztBQUFB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QUFJLElBQUcsVUFBSyxLQUFLLFVBQVUsU0FBT0MsS0FBRSxLQUFLLElBQUksS0FBSyxRQUFPLENBQUMsR0FBRUMsS0FBRSxLQUFLLE1BQU1ELEVBQUMsR0FBRSxTQUFLLEtBQUssVUFBVSxTQUFPQyxLQUFFLEtBQUssVUFBVSxTQUFPLEtBQUssTUFBSUQsS0FBRUMsSUFBRUMsS0FBRSxLQUFLLFVBQVUsTUFBSyxLQUFLLFVBQVUsT0FBS0QsT0FBSSxLQUFLLFNBQU8sS0FBSyxVQUFVLE9BQU0sS0FBSyxNQUFJLEdBQUVDLEtBQUUsS0FBSyxVQUFVLE9BQUssR0FBRSxLQUFLLFVBQVUsT0FBSyxLQUFLLFVBQVUsUUFBTyxLQUFLLFVBQVUsY0FBWSxLQUFLLFVBQVUsV0FBUyxLQUFLLFVBQVUsWUFBVSxTQUFTLEtBQUssVUFBVSxPQUFLQSxNQUFHLENBQUMsT0FBSyxLQUFLLFNBQU8sS0FBSyxJQUFJLEtBQUssUUFBTyxDQUFDLEdBQUUsS0FBSyxNQUFJLEtBQUssU0FBUSxLQUFLLE1BQUksTUFBSSxLQUFLLE1BQUksSUFBRyxLQUFLLFVBQVUsYUFBVyxLQUFLLE1BQUksSUFBRSxLQUFLO0FBQUssWUFBSUMsS0FBRSxLQUFLLFVBQVUsS0FBSyxLQUFLLEdBQUc7QUFBRSxpQkFBUUMsTUFBSyxLQUFLLFVBQVU7QUFBSyxVQUFBQSxLQUFFLEtBQUssV0FBU0EsTUFBR0QsT0FBSSxLQUFLLFVBQVUsS0FBS0MsRUFBQyxFQUFFLEtBQUssS0FBSyxPQUFPLEdBQUUsS0FBSyxLQUFJRCxFQUFDLEdBQUUsT0FBTyxLQUFLLFVBQVUsS0FBS0MsRUFBQztBQUFHLGVBQU8sS0FBSyxVQUFRLEtBQUssT0FBTyxFQUFFLEtBQUssVUFBUyxFQUFDLEtBQUksS0FBSyxLQUFJLE9BQU1ELElBQUUsSUFBRyxNQUFLLFdBQVUsS0FBSyxVQUFTLENBQUMsR0FBRSxLQUFLLGFBQVcsS0FBSyxPQUFPLEdBQUUsS0FBRyxLQUFLLE9BQUssQ0FBQyxLQUFLLFVBQVUsWUFBVSxLQUFLLFVBQVUsWUFBVSxLQUFHLEtBQUssT0FBSyxL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QUMsRUFBRSxLQUFLLElBQUksR0FBRSxDQUFDLEdBQUU7QUFBQSxNQUFJLEVBQUMsR0FBRSxRQUFPRSxHQUFFLFNBQVEsV0FBVSxFQUFDLFNBQVEsU0FBU0gsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGdCQUFPLEtBQUssT0FBSyxLQUFLLEtBQUcsSUFBSUMsR0FBRSxHQUFHLElBQUksSUFBSSxRQUFRSCxJQUFFQyxJQUFFQyxFQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0YsSUFBRTtBQUFDLGdCQUFPLEtBQUssT0FBSyxLQUFLLEtBQUcsSUFBSUcsR0FBRSxHQUFHLElBQUksSUFBSSxNQUFNSCxFQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxNQUFJLEtBQUssR0FBRyxLQUFLRCxJQUFFQyxFQUFDLEdBQUU7QUFBQSxNQUFJLEdBQUUsUUFBTyxXQUFVO0FBQUMsZUFBTyxLQUFLLE1BQUksS0FBSyxHQUFHLE9BQU8sR0FBRTtBQUFBLE1BQUksRUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxXQUFTQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUVDLElBQUU7QUFBQyxlQUFPRSxHQUFFLE1BQU0sUUFBUUYsRUFBQyxJQUFFLElBQUlFLEdBQUUsTUFBTUgsRUFBQyxFQUFFLE1BQU1DLEVBQUMsSUFBRUUsR0FBRSxNQUFNLFVBQVUsS0FBS0gsRUFBQyxJQUFFRyxHQUFFLE1BQU0sWUFBWSxLQUFLSCxFQUFDLElBQUUsSUFBSUcsR0FBRSxVQUFVSCxFQUFDLEVBQUUsTUFBTUMsRUFBQyxJQUFFLElBQUlFLEdBQUUsTUFBTUgsRUFBQyxFQUFFLE1BQU1DLEVBQUMsSUFBRUUsR0FBRSxNQUFNLGNBQWMsS0FBS0YsRUFBQyxJQUFFLElBQUlFLEdBQUUsT0FBT0gsRUFBQyxFQUFFLE1BQU1DLEVBQUMsS0FBRyxLQUFLLFFBQU1ELElBQUUsTUFBSyxLQUFLLGNBQVlDO0FBQUEsTUFBRyxHQUFFLFFBQU8sRUFBQyxJQUFHLFNBQVNELElBQUVDLElBQUU7QUFBQyxlQUFPQSxLQUFFLElBQUUsS0FBSyxRQUFNLEtBQUs7QUFBQSxNQUFXLEdBQUUsU0FBUSxXQUFVO0FBQUMsZUFBTyxLQUFLO0FBQUEsTUFBSyxFQUFDLEVBQUMsQ0FBQyxHQUFFRSxHQUFFLE9BQU9BLEdBQUUsSUFBRyxFQUFDLE1BQUssU0FBU0gsSUFBRUMsSUFBRUUsSUFBRTtBQUFDLFlBQUcsYUFBVyxFQUFFSCxFQUFDO0FBQUUsbUJBQVFJLE1BQUtKO0FBQUUsaUJBQUssS0FBS0ksSUFBRUosR0FBRUksRUFBQyxDQUFDO0FBQUE7QUFBTyxlQUFLLElBQUlKLElBQUVDLElBQUUsT0FBTztBQUFFLGVBQU87QUFBQSxNQUFJLEdBQUUsTUFBSyxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFHLFVBQVUsU0FBTyxLQUFLLEtBQUssQ0FBQ0gsSUFBRUMsSUFBRUMsSUFBRUMsRUFBQyxDQUFDLElBQUUsS0FBSyxJQUFJLFFBQU8sS0FBSSxLQUFLLE9BQU8sR0FBRSxXQUFZSCxFQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLE1BQUlBLEdBQUUsT0FBTyxFQUFDLFFBQU8sU0FBU0gsSUFBRUMsSUFBRUcsSUFBRUMsSUFBRTtBQUFDLFlBQUcsRUFBRSxhQUFXLEVBQUVMLEVBQUMsS0FBR0EsY0FBYUcsR0FBRTtBQUFTLGlCQUFPQSxHQUFFLElBQUksS0FBSyxNQUFLLFFBQU1ILEdBQUUsT0FBS0EsR0FBRSxPQUFLQSxHQUFFLEdBQUUsUUFBTUEsR0FBRSxNQUFJQSxHQUFFLE1BQUlBLEdBQUUsR0FBRUEsR0FBRSxPQUFNQSxHQUFFLE1BQU07QUFBRSxZQUFJTTtBQUFFLGFBQUcsVUFBVSxXQUFTLEtBQUssSUFBRU4sSUFBRSxLQUFLLElBQUVDLElBQUUsS0FBSyxRQUFNRyxJQUFFLEtBQUssU0FBT0MsS0FBRyxTQUFPQyxLQUFFLE1BQU0sTUFBSUEsR0FBRSxJQUFFLEdBQUVBLEdBQUUsSUFBRSxHQUFFQSxHQUFFLFFBQU0sR0FBRUEsR0FBRSxTQUFPLElBQUdBLEdBQUUsSUFBRUEsR0FBRSxPQUFNQSxHQUFFLElBQUVBLEdBQUUsUUFBT0EsR0FBRSxLQUFHQSxHQUFFLElBQUVBLEdBQUUsT0FBTUEsR0FBRSxLQUFHQSxHQUFFLElBQUVBLEdBQUUsUUFBT0EsR0FBRSxLQUFHQSxHQUFFLElBQUVBLEdBQUUsUUFBTSxHQUFFQSxHQUFFLEtBQUdBLEdBQUUsSUFBRUEsR0FBRSxTQUFPO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRUgsR0FBRSxPQUFLQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUU7QUFBQyxZQUFHRyxHQUFFLElBQUksTUFBTSxNQUFLLENBQUMsRUFBRSxNQUFNLEtBQUssU0FBUyxDQUFDLEdBQUVILGNBQWFHLEdBQUUsU0FBUTtBQUFDLGNBQUlEO0FBQUUsY0FBRztBQUFDLGdCQUFHLENBQUNELEdBQUUsZ0JBQWdCLFVBQVM7QUFBQyx1QkFBUUcsS0FBRUosR0FBRSxNQUFLSSxHQUFFO0FBQVksZ0JBQUFBLEtBQUVBLEdBQUU7QUFBVyxrQkFBR0EsTUFBR0g7QUFBRSxzQkFBTSxJQUFJLE1BQU0sd0JBQXdCO0FBQUEsWUFBQztBQUFDLFlBQUFDLEtBQUVGLEdBQUUsS0FBSyxRQUFRO0FBQUEsVUFBQyxTQUFPQyxJQUFFO0FBQUMsZ0JBQUdELGNBQWFHLEdBQUUsT0FBTTtBQUFDLGNBQUFBLEdBQUUsT0FBTyxRQUFNQSxHQUFFLFFBQVE7QUFBRSxrQkFBSUUsS0FBRUwsR0FBRSxNQUFNRyxHQUFFLE9BQU8sS0FBSyxRQUFRLEVBQUUsS0FBSztBQUFFLGNBQUFFLE1BQUdBLEdBQUUsUUFBTSxjQUFZLE9BQU9BLEdBQUUsS0FBSyxZQUFVSCxLQUFFRyxHQUFFLEtBQUssUUFBUSxJQUFHQSxNQUFHLGNBQVksT0FBT0EsR0FBRSxVQUFRQSxHQUFFLE9BQU87QUFBQSxZQUFDO0FBQU0sY0FBQUgsS0FBRSxFQUFDLEdBQUVGLEdBQUUsS0FBSyxZQUFXLEdBQUVBLEdBQUUsS0FBSyxXQUFVLE9BQU1BLEdBQUUsS0FBSyxhQUFZLFFBQU9BLEdBQUUsS0FBSyxhQUFZO0FBQUEsVUFBQztBQUFDLFVBQUFHLEdBQUUsSUFBSSxLQUFLLE1BQUtELEVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxHQUFFLFNBQVFDLEdBQUUsS0FBSSxRQUFPQSxHQUFFLFNBQVEsV0FBVSxFQUFDLE1BQUssV0FBVTtBQUFDLGVBQU8sSUFBSUEsR0FBRSxLQUFLLElBQUk7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVBLEdBQUUsS0FBSyxVQUFVLGNBQVlBLEdBQUUsTUFBS0EsR0FBRSxTQUFPQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUU7QUFBQyxZQUFJQyxLQUFFYyxHQUFFLENBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFFLFFBQUFmLEtBQUUsU0FBT0EsS0FBRUMsS0FBRUQsY0FBYUcsR0FBRSxVQUFRSCxHQUFFLFVBQVUsSUFBRSxZQUFVLE9BQU9BLEtBQUVlLEdBQUVmLEdBQUUsTUFBTUcsR0FBRSxNQUFNLFNBQVMsRUFBRSxJQUFJLFVBQVUsQ0FBQyxJQUFFLEtBQUcsVUFBVSxTQUFPWSxHQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssU0FBUyxDQUFDLElBQUUsTUFBTSxRQUFRZixFQUFDLElBQUVlLEdBQUVmLEVBQUMsSUFBRUEsTUFBRyxhQUFXLEVBQUVBLEVBQUMsSUFBRUEsS0FBRUM7QUFBRSxpQkFBUUcsS0FBRWMsR0FBRSxTQUFPLEdBQUVkLE1BQUcsR0FBRSxFQUFFQTtBQUFFLGVBQUtjLEdBQUVkLEVBQUMsQ0FBQyxJQUFFLFFBQU1KLEdBQUVrQixHQUFFZCxFQUFDLENBQUMsSUFBRUosR0FBRWtCLEdBQUVkLEVBQUMsQ0FBQyxJQUFFSCxHQUFFaUIsR0FBRWQsRUFBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLFFBQU8sRUFBQyxTQUFRLFdBQVU7QUFBQyxZQUFJSixLQUFFYyxHQUFFLE1BQUssR0FBRSxDQUFDO0FBQUUsUUFBQUEsR0FBRSxNQUFLLEdBQUUsQ0FBQztBQUFFLFlBQUliLEtBQUUsTUFBSSxLQUFLLEtBQUcsS0FBSyxNQUFNRCxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxJQUFFO0FBQUcsZUFBTSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLGVBQWMsS0FBSyxJQUFFLEtBQUssSUFBSUMsS0FBRSxLQUFLLEtBQUcsR0FBRyxJQUFFLEtBQUssSUFBRSxLQUFLLElBQUlBLEtBQUUsS0FBSyxLQUFHLEdBQUcsS0FBRyxLQUFLLEtBQUssS0FBSyxJQUFFLEtBQUssSUFBRSxLQUFLLElBQUUsS0FBSyxDQUFDLEdBQUUsZUFBYyxLQUFLLElBQUUsS0FBSyxJQUFJQSxLQUFFLEtBQUssS0FBRyxHQUFHLElBQUUsS0FBSyxJQUFFLEtBQUssSUFBSSxDQUFDQSxLQUFFLEtBQUssS0FBRyxHQUFHLEtBQUcsS0FBSyxLQUFLLEtBQUssSUFBRSxLQUFLLElBQUUsS0FBSyxJQUFFLEtBQUssQ0FBQyxHQUFFLFVBQVNBLElBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsUUFBTyxJQUFJRSxHQUFFLE9BQU8sSUFBSSxFQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sV0FBVTtBQUFDLGVBQU8sSUFBSUEsR0FBRSxPQUFPLElBQUk7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLGNBQVksSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEdBQUU7QUFBQSxNQUFJLEdBQUUsVUFBUyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxJQUFJRyxHQUFFLE9BQU8sS0FBSyxPQUFPLEVBQUUsU0FBUyxTQUFTSCxJQUFFO0FBQUMsaUJBQU9BLGNBQWFHLEdBQUUsV0FBU0gsS0FBRSxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsSUFBR0E7QUFBQSxRQUFDLEVBQUVBLEVBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxlQUFPLElBQUlHLEdBQUUsT0FBTyxLQUFLLE9BQU8sRUFBRSxRQUFRLENBQUM7QUFBQSxNQUFDLEdBQUUsV0FBVSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxJQUFJRSxHQUFFLE9BQU8sS0FBSyxPQUFPLEVBQUUsVUFBVUgsTUFBRyxHQUFFQyxNQUFHLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFdBQVU7QUFBQyxpQkFBUUQsS0FBRUcsR0FBRSxPQUFPLE9BQU8sZ0JBQWdCLEdBQUVGLEtBQUVpQixHQUFFLFNBQU8sR0FBRWpCLE1BQUcsR0FBRUE7QUFBSSxVQUFBRCxHQUFFa0IsR0FBRWpCLEVBQUMsQ0FBQyxJQUFFLEtBQUtpQixHQUFFakIsRUFBQyxDQUFDO0FBQUUsZUFBT0Q7QUFBQSxNQUFDLEdBQUUsVUFBUyxXQUFVO0FBQUMsZUFBTSxZQUFVaUIsR0FBRSxLQUFLLENBQUMsSUFBRSxNQUFJQSxHQUFFLEtBQUssQ0FBQyxJQUFFLE1BQUlBLEdBQUUsS0FBSyxDQUFDLElBQUUsTUFBSUEsR0FBRSxLQUFLLENBQUMsSUFBRSxNQUFJQSxHQUFFLEtBQUssQ0FBQyxJQUFFLE1BQUlBLEdBQUUsS0FBSyxDQUFDLElBQUU7QUFBQSxNQUFHLEVBQUMsR0FBRSxRQUFPZCxHQUFFLFNBQVEsV0FBVSxFQUFDLEtBQUksV0FBVTtBQUFDLGVBQU8sSUFBSUEsR0FBRSxPQUFPLEtBQUssS0FBSyxPQUFPLENBQUM7QUFBQSxNQUFDLEdBQUUsV0FBVSxXQUFVO0FBQUMsWUFBRyxnQkFBZ0JBLEdBQUUsUUFBTztBQUFDLGNBQUlILEtBQUUsS0FBSyxLQUFLLEdBQUUsQ0FBQyxHQUFFQyxLQUFFRCxHQUFFLEtBQUssYUFBYTtBQUFFLGlCQUFPQSxHQUFFLE9BQU8sR0FBRSxJQUFJRyxHQUFFLE9BQU9GLEVBQUM7QUFBQSxRQUFDO0FBQUMsZUFBTyxJQUFJRSxHQUFFLE9BQU8sS0FBSyxLQUFLLGFBQWEsQ0FBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUEsR0FBRSxRQUFNQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUVDLElBQUU7QUFBQyxZQUFJRTtBQUFFLFFBQUFBLEtBQUUsTUFBTSxRQUFRSCxFQUFDLElBQUUsRUFBQyxHQUFFQSxHQUFFLENBQUMsR0FBRSxHQUFFQSxHQUFFLENBQUMsRUFBQyxJQUFFLGFBQVcsRUFBRUEsRUFBQyxJQUFFLEVBQUMsR0FBRUEsR0FBRSxHQUFFLEdBQUVBLEdBQUUsRUFBQyxJQUFFLFFBQU1BLEtBQUUsRUFBQyxHQUFFQSxJQUFFLEdBQUUsUUFBTUMsS0FBRUEsS0FBRUQsR0FBQyxJQUFFLEVBQUMsR0FBRSxHQUFFLEdBQUUsRUFBQyxHQUFFLEtBQUssSUFBRUcsR0FBRSxHQUFFLEtBQUssSUFBRUEsR0FBRTtBQUFBLE1BQUMsR0FBRSxRQUFPLEVBQUMsT0FBTSxXQUFVO0FBQUMsZUFBTyxJQUFJQSxHQUFFLE1BQU0sSUFBSTtBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNILElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssY0FBWSxJQUFJRSxHQUFFLE1BQU1ILElBQUVDLEVBQUMsR0FBRTtBQUFBLE1BQUksRUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFPQSxHQUFFLFNBQVEsRUFBQyxPQUFNLFNBQVNILElBQUVDLElBQUU7QUFBQyxlQUFPLElBQUlFLEdBQUUsTUFBTUgsSUFBRUMsRUFBQyxFQUFFLFVBQVUsS0FBSyxVQUFVLEVBQUUsUUFBUSxDQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFPQSxHQUFFLFNBQVEsRUFBQyxNQUFLLFNBQVNILElBQUVDLElBQUVHLElBQUU7QUFBQyxZQUFHLFFBQU1KLElBQUU7QUFBQyxlQUFJQSxLQUFFLENBQUMsR0FBRUksTUFBR0gsS0FBRSxLQUFLLEtBQUssWUFBWSxTQUFPLEdBQUVHLE1BQUcsR0FBRUE7QUFBSSxZQUFBSixHQUFFQyxHQUFFRyxFQUFDLEVBQUUsUUFBUSxJQUFFRCxHQUFFLE1BQU0sU0FBUyxLQUFLRixHQUFFRyxFQUFDLEVBQUUsU0FBUyxJQUFFLFdBQVdILEdBQUVH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QU8sU0FBU0gsSUFBRTtBQUFDLGFBQUssWUFBWSxLQUFLLE1BQUtBLEVBQUM7QUFBQSxNQUFDLEdBQUUsU0FBUUcsR0FBRSxRQUFPLENBQUMsR0FBRUEsR0FBRSxTQUFPQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFVBQVMsU0FBUUEsR0FBRSxXQUFVLFdBQVUsRUFBQyxRQUFPLFdBQVU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJQSxHQUFFLFFBQU07QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVBLEdBQUUsTUFBSUEsR0FBRSxPQUFPLEVBQUMsUUFBTyxPQUFNLFNBQVFBLEdBQUUsT0FBTSxRQUFPLEVBQUMsU0FBUSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssU0FBUUEsTUFBRyxNQUFJLE1BQUlELElBQUVHLEdBQUUsS0FBSztBQUFBLE1BQUMsRUFBQyxHQUFFLFdBQVUsRUFBQyxLQUFJLFNBQVNILElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJRSxHQUFFLEtBQUcsRUFBRSxRQUFRSCxJQUFFQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFRSxHQUFFLE9BQUtBLEdBQUUsT0FBTyxFQUFDLFFBQU8sUUFBTyxTQUFRQSxHQUFFLE9BQU0sV0FBVSxFQUFDLE1BQUssU0FBU0gsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxJQUFJLElBQUlFLEdBQUUsTUFBSSxFQUFFLEtBQUtILElBQUVDLEVBQUM7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVFLEdBQUUsU0FBT0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxVQUFTLFNBQVFBLEdBQUUsT0FBTSxXQUFVLEVBQUMsUUFBTyxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUcsR0FBRSxRQUFNLEVBQUUsR0FBRyxJQUFJQSxHQUFFLE9BQU9ILEVBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRSxDQUFDO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLE9BQU9BLEdBQUUsUUFBT0EsR0FBRSxJQUFHLEVBQUMsSUFBRyxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssS0FBSUEsRUFBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssR0FBR0EsRUFBQztBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUVHLEdBQUUsVUFBUUEsR0FBRSxPQUFPLEVBQUMsUUFBTyxXQUFVLFNBQVFBLEdBQUUsT0FBTSxXQUFVLEVBQUMsU0FBUSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUUsR0FBRSxTQUFPLEVBQUUsS0FBS0gsSUFBRUMsRUFBQyxFQUFFLEtBQUssR0FBRSxDQUFDO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFRSxHQUFFLE9BQU9BLEdBQUUsU0FBUUEsR0FBRSxNQUFLQSxHQUFFLElBQUcsRUFBQyxJQUFHLFNBQVNILElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLE1BQUtBLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLE9BQU9BLEdBQUUsUUFBT0EsR0FBRSxTQUFRLEVBQUMsR0FBRSxTQUFTSCxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssR0FBRyxJQUFFLEtBQUssR0FBRyxJQUFFLEtBQUssR0FBR0EsS0FBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxHQUFHLElBQUUsS0FBSyxHQUFHLElBQUUsS0FBSyxHQUFHQSxLQUFFLEtBQUssR0FBRyxDQUFDO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEtBQUssSUFBSSxJQUFFLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEtBQUssSUFBSSxJQUFFLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxJQUFFLEtBQUssR0FBRyxJQUFFLEtBQUssR0FBRyxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsSUFBRSxLQUFLLEdBQUcsSUFBRSxLQUFLLEdBQUcsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsTUFBSyxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRVcsR0FBRSxNQUFLYixJQUFFQyxFQUFDO0FBQUUsZUFBTyxLQUFLLEdBQUcsSUFBSUUsR0FBRSxPQUFPRCxHQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSUMsR0FBRSxPQUFPRCxHQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUVDLEdBQUUsT0FBS0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxRQUFPLFNBQVFBLEdBQUUsT0FBTSxRQUFPLEVBQUMsT0FBTSxXQUFVO0FBQUMsZUFBTyxJQUFJQSxHQUFFLFdBQVcsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLEdBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFFLENBQUMsS0FBSyxLQUFLLElBQUksR0FBRSxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNILElBQUVDLElBQUVDLElBQUVFLElBQUU7QUFBQyxlQUFPLFFBQU1KLEtBQUUsS0FBSyxNQUFNLEtBQUdBLEtBQUUsV0FBU0MsS0FBRSxFQUFDLElBQUdELElBQUUsSUFBR0MsSUFBRSxJQUFHQyxJQUFFLElBQUdFLEdBQUMsSUFBRSxJQUFJRCxHQUFFLFdBQVdILEVBQUMsRUFBRSxPQUFPLEdBQUUsS0FBSyxLQUFLQSxFQUFDO0FBQUEsTUFBRSxHQUFFLE1BQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLEtBQUssTUFBTSxFQUFFLEtBQUtELElBQUVDLEVBQUMsRUFBRSxPQUFPLENBQUM7QUFBQSxNQUFDLEdBQUUsTUFBSyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRVcsR0FBRSxNQUFLYixJQUFFQyxFQUFDO0FBQUUsZUFBTyxLQUFLLEtBQUssS0FBSyxNQUFNLEVBQUUsS0FBS0MsR0FBRSxPQUFNQSxHQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxXQUFVLEVBQUMsTUFBSyxTQUFTRixJQUFFQyxJQUFFQyxJQUFFRSxJQUFFO0FBQUMsZUFBT0QsR0FBRSxLQUFLLFVBQVUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJQSxHQUFFLE1BQUksR0FBRSxRQUFNSCxLQUFFLENBQUNBLElBQUVDLElBQUVDLElBQUVFLEVBQUMsSUFBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUQsR0FBRSxXQUFTQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFlBQVcsU0FBUUEsR0FBRSxPQUFNLFdBQVUsRUFBQyxVQUFTLFNBQVNILElBQUU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJRyxHQUFFLFVBQVEsRUFBRSxLQUFLSCxNQUFHLElBQUlHLEdBQUUsWUFBVTtBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUEsR0FBRSxVQUFRQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFdBQVUsU0FBUUEsR0FBRSxPQUFNLFdBQVUsRUFBQyxTQUFRLFNBQVNILElBQUU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJRyxHQUFFLFNBQU8sRUFBRSxLQUFLSCxNQUFHLElBQUlHLEdBQUUsWUFBVTtBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUEsR0FBRSxPQUFPQSxHQUFFLFVBQVNBLEdBQUUsU0FBUSxFQUFDLE9BQU0sV0FBVTtBQUFDLGVBQU8sS0FBSyxXQUFTLEtBQUssU0FBTyxJQUFJQSxHQUFFLFdBQVcsS0FBSyxLQUFLLFFBQVEsQ0FBQztBQUFBLE1BQUUsR0FBRSxNQUFLLFNBQVNILElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxNQUFNLElBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxVQUFTLFlBQVUsT0FBT0EsS0FBRUEsS0FBRSxLQUFLLFNBQU8sSUFBSUcsR0FBRSxXQUFXSCxFQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxXQUFVO0FBQUMsZUFBTyxPQUFPLEtBQUssUUFBTztBQUFBLE1BQUksR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxVQUFTLEtBQUssTUFBTSxFQUFFLEtBQUtELElBQUVDLEVBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNELElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFVyxHQUFFLE1BQUtiLElBQUVDLEVBQUM7QUFBRSxlQUFPLEtBQUssS0FBSyxVQUFTLEtBQUssTUFBTSxFQUFFLEtBQUtDLEdBQUUsT0FBTUEsR0FBRSxNQUFNLENBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFQyxHQUFFLE9BQU9BLEdBQUUsTUFBS0EsR0FBRSxVQUFTQSxHQUFFLFNBQVEsRUFBQyxZQUFXQSxHQUFFLFlBQVcsR0FBRSxTQUFTSCxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssS0FBSyxFQUFFLElBQUUsS0FBSyxLQUFLQSxJQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssS0FBSyxFQUFFLElBQUUsS0FBSyxLQUFLLEtBQUssS0FBSyxFQUFFLEdBQUVBLEVBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTQSxJQUFFO0FB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QUFJLFVBQVEsSUFBSUcsR0FBRSxPQUFPSCxHQUFFLFdBQVMsR0FBRyxHQUFFO0FBQUEsTUFBSSxFQUFDLEdBQUUsV0FBVSxFQUFDLE1BQUssU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxJQUFJLElBQUlHLEdBQUUsTUFBSSxFQUFFLEtBQUtILEVBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUcsR0FBRSxNQUFJLEVBQUUsTUFBTUgsRUFBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxRQUFNQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVEsU0FBUUEsR0FBRSxPQUFNLFFBQU8sRUFBQyxNQUFLLFNBQVNILElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxLQUFLLGVBQWEsS0FBSyxJQUFJLFdBQVMsT0FBSyxPQUFLLGNBQVksT0FBT0EsS0FBRUEsR0FBRSxLQUFLLE1BQUssSUFBSSxJQUFFLEtBQUssTUFBTUEsRUFBQyxHQUFFO0FBQUEsTUFBSyxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLE1BQUtBLEVBQUM7QUFBQSxNQUFDLEdBQUUsSUFBRyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxZQUFJQSxLQUFFLEtBQUssT0FBT0csR0FBRSxJQUFJO0FBQUUsZUFBTyxLQUFLLElBQUksV0FBUyxNQUFHLEtBQUssR0FBR0gsR0FBRSxJQUFJLFVBQVFBLEdBQUUsS0FBSyxXQUFXLENBQUMsRUFBRSxLQUFLLEtBQUlBLEdBQUUsRUFBRSxDQUFDO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLE9BQU9BLEdBQUUsTUFBS0EsR0FBRSxPQUFNLEVBQUMsT0FBTSxTQUFTSCxJQUFFO0FBQUMsZUFBTSxVQUFLLEtBQUssVUFBUSxLQUFLLE1BQU0sR0FBRSxLQUFLLEtBQUssWUFBWUMsR0FBRSxl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LFdBQVUsRUFBQyxRQUFPLFNBQVNELElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxFQUFFLE9BQU9BLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFLElBQUksT0FBTyxJQUFJLFNBQVEsSUFBSSxHQUFFLElBQUksUUFBTyxFQUFDLFFBQU8sU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxXQUFTQSxjQUFhLElBQUksVUFBUUEsS0FBRSxLQUFLLElBQUksRUFBRSxPQUFPQSxFQUFDLEdBQUUsS0FBSyxJQUFJLEtBQUcsS0FBSyxTQUFTLElBQUksTUFBSSxLQUFLLElBQUksS0FBRyxLQUFLLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLFFBQVEsR0FBRSxLQUFLLEtBQUssVUFBUyxLQUFLLFFBQVEsR0FBRSxLQUFLO0FBQUEsTUFBUSxHQUFFLFVBQVMsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxZQUFVLFNBQUtBLE1BQUcsS0FBSyxTQUFTLE9BQU8sR0FBRSxPQUFPLEtBQUssVUFBUyxLQUFLLEtBQUssVUFBUyxJQUFJO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRSxJQUFJLFNBQU8sSUFBSSxPQUFPLEVBQUMsUUFBTyxXQUFVO0FBQUMsYUFBSyxZQUFZLEtBQUssSUFBSTtBQUFBLE1BQUMsR0FBRSxTQUFRLElBQUksU0FBUSxRQUFPLEVBQUMsSUFBRyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssT0FBTyxLQUFHLEtBQUssT0FBTyxFQUFFLE9BQU8sY0FBWSxLQUFLLEtBQUssSUFBSSxJQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBRyxLQUFLLEtBQUssSUFBSSxJQUFFLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLFFBQU8sU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEtBQUssUUFBUSxJQUFFLEtBQUssS0FBSyxVQUFTQSxFQUFDO0FBQUEsTUFBQyxHQUFFLFVBQVMsV0FBVTtBQUFDLGVBQU8sS0FBSyxPQUFPO0FBQUEs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LEVBQUMsR0FBRUUsS0FBRUwsR0FBRSxNQUFNQyxJQUFFQyxNQUFHQyxFQUFDLEdBQUVHLEtBQUUsR0FBRUMsS0FBRSxFQUFDLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFNLENBQUMsR0FBRSxDQUFDLEVBQUMsR0FBRUMsS0FBRSxFQUFDLEtBQUksQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFNLENBQUMsR0FBRSxDQUFDLEVBQUMsT0FBSTtBQUFDLGNBQUdKLEdBQUVFLEVBQUMsSUFBRVgsR0FBRSxLQUFLWSxJQUFFSCxHQUFFRSxFQUFDLENBQUMsR0FBRUQsR0FBRUMsRUFBQyxJQUFFWCxHQUFFLEtBQUthLElBQUVILEdBQUVDLEVBQUMsQ0FBQyxHQUFFRixHQUFFRSxFQUFDLEVBQUUsQ0FBQyxLQUFHRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxLQUFHLE9BQUtGLEdBQUVFLEVBQUMsRUFBRSxDQUFDLEtBQUcsT0FBS0YsR0FBRUUsRUFBQyxFQUFFLENBQUMsTUFBSUYsR0FBRUUsRUFBQyxFQUFFLENBQUMsS0FBR0QsR0FBRUMsRUFBQyxFQUFFLENBQUMsS0FBR0YsR0FBRUUsRUFBQyxFQUFFLENBQUMsS0FBR0QsR0FBRUMsRUFBQyxFQUFFLENBQUMsTUFBSSxNQUFNLFVBQVUsT0FBTyxNQUFNRixJQUFFLENBQUNFLElBQUUsQ0FBQyxFQUFFLE9BQU9ULEdBQUUsS0FBS1UsSUFBRUgsR0FBRUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLE1BQU0sVUFBVSxPQUFPLE1BQU1ELElBQUUsQ0FBQ0MsSUFBRSxDQUFDLEVBQUUsT0FBT1QsR0FBRSxLQUFLVyxJQUFFSCxHQUFFQyxFQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUlGLEdBQUVFLEVBQUMsSUFBRVYsR0FBRSxLQUFLVyxJQUFFSCxHQUFFRSxFQUFDLENBQUMsR0FBRUQsR0FBRUMsRUFBQyxJQUFFVixHQUFFLEtBQUtZLElBQUVILEdBQUVDLEVBQUMsQ0FBQyxJQUFHLEVBQUVBLE1BQUdGLEdBQUUsVUFBUUUsTUFBR0QsR0FBRTtBQUFPO0FBQU0sVUFBQUMsTUFBR0YsR0FBRSxVQUFRQSxHQUFFLEtBQUssQ0FBQyxLQUFJRyxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRUQsTUFBR0QsR0FBRSxVQUFRQSxHQUFFLEtBQUssQ0FBQyxLQUFJRyxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxHQUFFQSxHQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFBQSxRQUFDO0FBQUMsZUFBTSxFQUFDLE9BQU1KLElBQUUsTUFBS0MsR0FBQztBQUFBLE1BQUM7QUFBQyxlQUFTVixHQUFFRCxJQUFFO0FBQUMsZ0JBQU9BLEdBQUUsQ0FBQyxHQUFFO0FBQUEsVUFBQyxLQUFJO0FBQUEsVUFBSSxLQUFJO0FBQUksWUFBQUEsR0FBRSxDQUFDLElBQUUsS0FBSUEsR0FBRSxDQUFDLElBQUUsS0FBSyxNQUFNLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxNQUFNLENBQUM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFJLFlBQUFBLEdBQUUsQ0FBQyxJQUFFLEtBQUlBLEdBQUUsQ0FBQyxJQUFFLEtBQUssSUFBSSxDQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQSxHQUFFLENBQUMsSUFBRSxLQUFJQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssSUFBSSxDQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQSxHQUFFLENBQUMsSUFBRSxLQUFJQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxXQUFXLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxXQUFXLENBQUM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFJLFlBQUFBLEdBQUUsQ0FBQyxJQUFFLEtBQUlBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxXQUFXLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxXQUFXLENBQUM7QUFBQSxRQUFDO0FBQUMsZUFBT0E7QUFBQSxNQUFDO0FBQUMsZUFBU0UsR0FBRUYsSUFBRTtBQUFDLFlBQUlDLEtBQUVELEdBQUU7QUFBTyxlQUFPLEtBQUssTUFBSSxDQUFDQSxHQUFFQyxLQUFFLENBQUMsR0FBRUQsR0FBRUMsS0FBRSxDQUFDLENBQUMsR0FBRSxNQUFJLE9BQU8sUUFBUUQsR0FBRSxDQUFDLENBQUMsTUFBSSxLQUFLLGFBQVcsQ0FBQyxJQUFFLEtBQUssSUFBSSxDQUFDLElBQUVBLEdBQUVDLEtBQUUsQ0FBQyxHQUFFLElBQUUsS0FBSyxJQUFJLENBQUMsSUFBRUQsR0FBRUMsS0FBRSxDQUFDLENBQUMsSUFBR0Q7QUFBQSxNQUFDO0FBQUMsZUFBU0csR0FBRUgsSUFBRTtBQUFDLFlBQUlDLEtBQUUsQ0FBQ0QsRUFBQztBQUFFLGdCQUFPQSxHQUFFLENBQUMsR0FBRTtBQUFBLFVBQUMsS0FBSTtBQUFJLG1CQUFPLEtBQUssTUFBSSxLQUFLLFFBQU0sQ0FBQ0EsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUVDO0FBQUEsVUFBRSxLQUFJO0FBQUksWUFBQUQsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxJQUFJLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsS0FBSyxJQUFJLENBQUM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFJLFlBQUFBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRSxJQUFFQSxHQUFFLENBQUMsSUFBRSxJQUFFLElBQUVBLEdBQUUsQ0FBQyxJQUFFLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLElBQUVBLEdBQUUsQ0FBQyxJQUFFLElBQUUsSUFBRUEsR0FBRSxDQUFDLElBQUUsR0FBRUEsR0FBRSxDQUFDLElBQUUsSUFBRSxLQUFLLElBQUksQ0FBQyxJQUFFLElBQUUsSUFBRUEsR0FBRSxDQUFDLElBQUUsR0FBRUEsR0FBRSxDQUFDLElBQUUsSUFBRSxLQUFLLElBQUksQ0FBQyxJQUFFLElBQUUsSUFBRUEsR0FBRSxDQUFDLElBQUU7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFJLFlBQUFDLEtBQUUsU0FBU0QsSUFBRUMsSUFBRTtBQUFDLGtCQUFJQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxLQUFFLEtBQUssSUFBSTNCLEdBQUUsQ0FBQyxDQUFDLEdBQUU0QixLQUFFLEtBQUssSUFBSTVCLEdBQUUsQ0FBQyxDQUFDLEdBQUU2QixLQUFFN0IsR0FBRSxDQUFDLElBQUUsS0FBSThCLEtBQUU5QixHQUFFLENBQUMsR0FBRStCLEtBQUUvQixHQUFFLENBQUMsR0FBRWdDLEtBQUVoQyxHQUFFLENBQUMsR0FBRWlDLEtBQUVqQyxHQUFFLENBQUMsR0FBRWtDLEtBQUUsSUFBSSxJQUFJLE1BQU1uQyxFQUFDLEdBQUVvQyxLQUFF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WUFBQyxDQUFFLEdBQUUsS0FBSyxHQUFHLEtBQUssYUFBWSxFQUFDLE9BQU1BLElBQUUsR0FBRSxLQUFLLFlBQVksT0FBTSxHQUFFLEtBQUssR0FBRSxTQUFRLEtBQUksQ0FBQztBQUFBLFVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxHQUFFQSxHQUFFLFVBQVUsT0FBSyxTQUFTQSxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLFFBQVEsR0FBRUMsS0FBRSxLQUFLLGVBQWVGLEVBQUMsR0FBRUcsS0FBRSxLQUFLLFlBQVksSUFBSSxJQUFFRCxHQUFFLElBQUUsS0FBSyxZQUFZLE1BQU0sR0FBRUUsS0FBRSxLQUFLLFlBQVksSUFBSSxJQUFFRixHQUFFLElBQUUsS0FBSyxZQUFZLE1BQU0sR0FBRUcsS0FBRSxLQUFLLFlBQVdDLEtBQUVKLEdBQUUsSUFBRSxLQUFLLFlBQVksTUFBTSxHQUFFSyxLQUFFTCxHQUFFLElBQUUsS0FBSyxZQUFZLE1BQU07QUFBRSxZQUFHLEtBQUssR0FBRyxLQUFLLFlBQVcsRUFBQyxPQUFNRixJQUFFLEdBQUVFLElBQUUsR0FBRSxLQUFLLEdBQUUsU0FBUSxLQUFJLENBQUMsR0FBRSxLQUFLLEdBQUcsTUFBTSxFQUFFO0FBQWlCLGlCQUFPQTtBQUFFLFlBQUcsY0FBWSxPQUFPRyxJQUFFO0FBQUMsY0FBSUcsS0FBRUgsR0FBRSxLQUFLLEtBQUssSUFBR0YsSUFBRUMsSUFBRSxLQUFLLENBQUM7QUFBRSx1QkFBVyxPQUFPSSxPQUFJQSxLQUFFLEVBQUMsR0FBRUEsSUFBRSxHQUFFQSxHQUFDLElBQUcsU0FBS0EsR0FBRSxJQUFFLEtBQUssR0FBRyxFQUFFTCxFQUFDLElBQUUsVUFBS0ssR0FBRSxLQUFHLEtBQUssR0FBRyxFQUFFQSxHQUFFLENBQUMsR0FBRSxTQUFLQSxHQUFFLElBQUUsS0FBSyxHQUFHLEVBQUVKLEVBQUMsSUFBRSxVQUFLSSxHQUFFLEtBQUcsS0FBSyxHQUFHLEVBQUVBLEdBQUUsQ0FBQztBQUFBLFFBQUM7QUFBSyxzQkFBVSxPQUFPSCxPQUFJLFFBQU1B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LEVBQUMsR0FBRSxHQUFFLEtBQUssV0FBV0UsR0FBRSxDQUFDLEdBQUVELElBQUUsUUFBTUQsTUFBRyxRQUFNQSxFQUFDLEVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQztBQUFDLE1BQUFBLEdBQUUsVUFBVSxPQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEtBQUssR0FBRyxLQUFLO0FBQUUsYUFBSyxVQUFRLENBQUM7QUFBRSxZQUFJQyxLQUFFLEtBQUssR0FBRyxVQUFVLFNBQVM7QUFBTyxpQkFBUUMsTUFBSyxLQUFLLEdBQUcsVUFBVTtBQUFTLGVBQUssUUFBUUEsRUFBQyxJQUFFLEtBQUssR0FBRyxVQUFVLFNBQVNBLEVBQUMsR0FBRSxXQUFTSCxHQUFFRyxFQUFDLE1BQUksS0FBSyxRQUFRQSxFQUFDLElBQUVILEdBQUVHLEVBQUM7QUFBRyxZQUFJQyxLQUFFLENBQUMsVUFBUyxlQUFlO0FBQUUsaUJBQVFELE1BQUtDLElBQUU7QUFBQyxjQUFJQyxLQUFFLEtBQUssUUFBUUQsR0FBRUQsRUFBQyxDQUFDO0FBQUUsc0JBQVUsT0FBT0UsS0FBRUEsS0FBRUEsR0FBRSxTQUFPLElBQUVBLEdBQUUsTUFBTSxVQUFVLElBQUUsQ0FBQyxJQUFFLGFBQVcsT0FBT0EsTUFBRyxhQUFXRCxHQUFFRCxFQUFDLE1BQUlFLEtBQUVBLEtBQUVILEtBQUUsQ0FBQyxJQUFHLEtBQUssUUFBUUUsR0FBRUQsRUFBQyxDQUFDLElBQUVFO0FBQUEsUUFBQztBQUFDLGFBQUssUUFBUSxTQUFPLENBQUNILElBQUUsS0FBSyxRQUFRLE1BQU0sRUFBRSxPQUFRLFNBQVNILElBQUVDLElBQUU7QUFBQyxpQkFBT0QsR0FBRSxPQUFRLFNBQVNBLElBQUU7QUFBQyxtQkFBT0MsR0FBRSxRQUFRRCxFQUFDLElBQUU7QUFBQSxVQUFFLENBQUU7QUFBQSxRQUFDLENBQUUsR0FBRSxLQUFLLFFBQVEsU0FBTyxDQUFDLEtBQUssUUFBUSxRQUFPLEtBQUssUUFBUSxhQUFhLEVBQUUsT0FBUSxTQUFTQSxJQUFFQyxJQUFF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O0FBQUksbUJBQUssT0FBSyxTQUFTRixJQUFFQyxJQUFFO0FBQUMsb0JBQUlDLEtBQUUsS0FBSyxXQUFXRixJQUFFQyxJQUFFLENBQUM7QUFBRSxvQkFBRyxLQUFLLFdBQVcsSUFBSSxRQUFNQyxHQUFFLENBQUMsSUFBRSxHQUFFO0FBQUMsc0JBQUcsV0FBUyxLQUFLLFdBQVc7QUFBSztBQUFPLHVCQUFLLEdBQUcsS0FBSyxLQUFLLFdBQVcsSUFBSSxJQUFFQSxHQUFFLENBQUMsR0FBRSxLQUFLLFdBQVcsSUFBSSxDQUFDLEVBQUUsTUFBTSxLQUFLLFdBQVcsSUFBSSxRQUFNQSxHQUFFLENBQUMsQ0FBQztBQUFBLGdCQUFDO0FBQUEsY0FBQztBQUFFO0FBQUEsWUFBTSxLQUFJO0FBQU0sbUJBQUssT0FBSyxTQUFTRixJQUFFQyxJQUFFO0FBQUMsb0JBQUlDLEtBQUVGLEtBQUUsS0FBSyxXQUFXLEVBQUUsR0FBRUcsS0FBRUYsS0FBRSxLQUFLLFdBQVcsRUFBRSxHQUFFRyxLQUFFLEtBQUssTUFBTSxLQUFLLFdBQVcsRUFBRSxJQUFFLEtBQUssV0FBVyxJQUFJLElBQUUsS0FBSyxXQUFXLElBQUksU0FBTyxHQUFFLEtBQUssV0FBVyxFQUFFLElBQUUsS0FBSyxXQUFXLElBQUksSUFBRSxLQUFLLFdBQVcsSUFBSSxRQUFNLENBQUMsR0FBRUMsS0FBRSxLQUFLLE1BQU1GLEtBQUUsS0FBSyxXQUFXLElBQUksSUFBRSxLQUFLLFdBQVcsSUFBSSxTQUFPLEdBQUVELEtBQUUsS0FBSyxXQUFXLElBQUksSUFBRSxLQUFLLFdBQVcsSUFBSSxRQUFNLENBQUMsR0FBRUksS0FBRSxLQUFLLFdBQVcsV0FBUyxPQUFLRCxLQUFFRCxNQUFHLEtBQUssS0FBRyxLQUFLLFFBQVEsY0FBWTtBQUFFLHFCQUFLLEdBQUcsT0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFHLEtBQUssV0FBVyxJQUFJLEVBQUUsRUFBRSxPQUFPRSxLQUFFQSxLQUFFLEtBQUssUUFBUSxhQUFZLEtBQUssV0FBVyxJQUFJLElBQUcsS0FBSyxXQUFXLElB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QUMsZUFBTyxFQUFFLE9BQU9ELElBQUVDLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUVEO0FBQUEsSUFBQyxFQUFFO0FBQUUsV0FBTyxVQUFRO0FBQUE7QUFBQTs7O0FDYjVtOUMsd0JBQXVCO0FBRVIsU0FBUixXQUE0QjtBQUFBLEVBQy9CO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0osR0FBRztBQUNDLFNBQU87QUFBQSxJQUNILE9BQU87QUFBQSxJQUNQO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxNQUFNLFdBQVk7QUFFZCxXQUFLLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLFNBQUF3QyxTQUFRLE1BQU07QUFFN0MsUUFBQUEsV0FBVTtBQUFBLFVBQ04sR0FBR0E7QUFBQSxVQUNILEdBQUcsS0FBSztBQUFBLFFBQ1o7QUFDQSxhQUFLLFlBQVlBLFFBQU87QUFBQSxNQUM1QixDQUFDO0FBRUQsYUFBTyxPQUFPLE1BQU07QUFFaEIsY0FBTUMsU0FBUSxPQUFPLE1BQU0sT0FBTztBQUVsQyxhQUFLLFVBQVUsTUFBTTtBQUVqQixjQUFJLEtBQUssVUFBVSxNQUFNO0FBQ3JCLGlCQUFLLFVBQVU7QUFBQSxVQUNuQixPQUFPO0FBRUgsaUJBQUssWUFBWTtBQUFBLGNBQ2IsT0FBTyxFQUFFLE1BQU1BLE9BQU07QUFBQSxjQUNyQixPQUFPO0FBQUEsZ0JBQ0gsWUFBWTtBQUFBLGNBQ2hCO0FBQUEsWUFDSixDQUFDO0FBQUEsVUFDTDtBQUFBLFFBQ0osQ0FBQztBQUFBLE1BQ0wsQ0FBQztBQUFBLElBQ0w7QUFBQSxJQUNBLFdBQVcsV0FBWTtBQUVuQixXQUFLLFFBQVEsUUFBUSxFQUFFLE1BQU0sS0FBSyxNQUFNO0FBQ3hDLFdBQUssUUFBUSxNQUFNLGFBQWE7QUFFaEMsV0FBSyxVQUFVO0FBQUEsUUFDWCxHQUFHLEtBQUs7QUFBQSxRQUNSLEdBQUcsS0FBSztBQUFBLE1BQ1o7QUFFQSxXQUFLLFFBQVEsSUFBSSxrQkFBQUMsUUFBVyxTQUFTLGNBQWMsS0FBSyxPQUFPLEdBQUcsS0FBSyxPQUFPO0FBQzlFLFdBQUssTUFBTSxPQUFPO0FBQUEsSUFDdEI7QUFBQSxJQUNBLGFBQWEsU0FBVUYsVUFBUztBQUM1QixXQUFLLE1BQU0sY0FBY0EsVUFBUyxPQUFPLE1BQU0sSUFBSTtBQUFBLElBQ3ZEO0FBQUEsRUFDSjtBQUNKOyIsCiAgIm5hbWVzIjogWyJ0IiwgImUiLCAiaSIsICJhIiwgInMiLCAiciIsICJvIiwgIm4iLCAibCIsICJoIiwgImMiLCAiZCIsICJnIiwgInUiLCAicCIsICJmIiwgIngiLCAiYiIsICJ2IiwgIm0iLCAieSIsICJ3IiwgImsiLCAiQSIsICJTIiwgIkMiLCAiTCIsICJQIiwgIkkiLCAiTSIsICJUIiwgInoiLCAiWCIsICJFIiwgIlkiLCAiRiIsICJSIiwgIkgiLCAiRCIsICJPIiwgIm9wdGlvbnMiLCAidGhlbWUiLCAiQXBleENoYXJ0cyJdCn0K +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzL2FwZXhjaGFydHMvZGlzdC9hcGV4Y2hhcnRzLmNvbW1vbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoLm1lcmdlL2luZGV4LmpzIiwgIi4uL2FwZXhjaGFydHMuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIVxuICogQXBleENoYXJ0cyB2My40NC4wXG4gKiAoYykgMjAxOC0yMDIzIEFwZXhDaGFydHNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gdCh0LGUpe3ZhciBpPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKGE9YS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksaS5wdXNoLmFwcGx5KGksYSl9cmV0dXJuIGl9ZnVuY3Rpb24gZShlKXtmb3IodmFyIGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgYT1udWxsIT1hcmd1bWVudHNbaV0/YXJndW1lbnRzW2ldOnt9O2klMj90KE9iamVjdChhKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7byhlLHQsYVt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhhKSk6dChPYmplY3QoYSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBpKHQpe3JldHVybiBpPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIHR9LGkodCl9ZnVuY3Rpb24gYSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gcyh0LGUpe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lW2ldO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxhLmtleSxhKX19ZnVuY3Rpb24gcih0LGUsaSl7cmV0dXJuIGUmJnModC5wcm90b3R5cGUsZSksaSYmcyh0LGkpLHR9ZnVuY3Rpb24gbyh0LGUsaSl7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1pLHR9ZnVuY3Rpb24gbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmaCh0LGUpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0sbCh0KX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuIGg9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9LGgodCxlKX1mdW5jdGlvbiBjKHQsZSl7aWYoZSYmKFwib2JqZWN0XCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKSlyZXR1cm4gZTtpZih2b2lkIDAhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIHR9KHQpfWZ1bmN0aW9uIGQodCl7dmFyIGU9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaSxhPWwodCk7aWYoZSl7dmFyIHM9bCh0aGlzKS5jb25zdHJ1Y3RvcjtpPVJlZmxlY3QuY29uc3RydWN0KGEsYXJndW1lbnRzLHMpfWVsc2UgaT1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYyh0aGlzLGkpfX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9KHQpfHxmdW5jdGlvbih0LGUpe3ZhciBpPW51bGw9PXQ/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PWkpcmV0dXJuO3ZhciBhLHMscj1bXSxvPSEwLG49ITE7dHJ5e2ZvcihpPWkuY2FsbCh0KTshKG89KGE9aS5uZXh0KCkpLmRvbmUpJiYoci5wdXNoKGEudmFsdWUpLCFlfHxyLmxlbmd0aCE9PWUpO289ITApO31jYXRjaCh0KXtuPSEwLHM9dH1maW5hbGx5e3RyeXtvfHxudWxsPT1pLnJldHVybnx8aS5yZXR1cm4oKX1maW5hbGx5e2lmKG4pdGhyb3cgc319cmV0dXJuIHJ9KHQsZSl8fHAodCxlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGYodCl9KHQpfHxmdW5jdGlvbih0KXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8cCh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBwKHQsZSl7aWYodCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIGYodCxlKTt2YXIgaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PWkmJnQuY29uc3RydWN0b3ImJihpPXQuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PWl8fFwiU2V0XCI9PT1pP0FycmF5LmZyb20odCk6XCJBcmd1bWVudHNcIj09PWl8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGkpP2YodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIGYodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIGk9MCxhPW5ldyBBcnJheShlKTtpPGU7aSsrKWFbaV09dFtpXTtyZXR1cm4gYX12YXIgeD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXthKHRoaXMsdCl9cmV0dXJuIHIodCxbe2tleTpcInNoYWRlUkdCQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWUuc3BsaXQoXCIsXCIpLGE9dDwwPzA6MjU1LHM9dDwwPy0xKnQ6dCxyPXBhcnNlSW50KGlbMF0uc2xpY2UoNCksMTApLG89cGFyc2VJbnQoaVsxXSwxMCksbj1wYXJzZUludChpWzJdLDEwKTtyZXR1cm5cInJnYihcIisoTWF0aC5yb3VuZCgoYS1yKSpzKStyKStcIixcIisoTWF0aC5yb3VuZCgoYS1vKSpzKStvKStcIixcIisoTWF0aC5yb3VuZCgoYS1uKSpzKStuKStcIilcIn19LHtrZXk6XCJzaGFkZUhleENvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1wYXJzZUludChlLnNsaWNlKDEpLDE2KSxhPXQ8MD8wOjI1NSxzPXQ8MD8tMSp0OnQscj1pPj4xNixvPWk+PjgmMjU1LG49MjU1Jmk7cmV0dXJuXCIjXCIrKDE2Nzc3MjE2KzY1NTM2KihNYXRoLnJvdW5kKChhLXIpKnMpK3IpKzI1NiooTWF0aC5yb3VuZCgoYS1vKSpzKStvKSsoTWF0aC5yb3VuZCgoYS1uKSpzKStuKSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpfX0se2tleTpcInNoYWRlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbihlLGkpe3JldHVybiB0LmlzQ29sb3JIZXgoaSk/dGhpcy5zaGFkZUhleENvbG9yKGUsaSk6dGhpcy5zaGFkZVJHQkNvbG9yKGUsaSl9fV0sW3trZXk6XCJiaW5kXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fX0se2tleTpcImlzT2JqZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwib2JqZWN0XCI9PT1pKHQpJiYhQXJyYXkuaXNBcnJheSh0KSYmbnVsbCE9dH19LHtrZXk6XCJpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PVwiW29iamVjdCBcIit0K1wiXVwifX0se2tleTpcImxpc3RUb0FycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT1bXTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWlbZV09dFtlXTtyZXR1cm4gaX19LHtrZXk6XCJleHRlbmRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7XCJmdW5jdGlvblwiIT10eXBlb2YgT2JqZWN0LmFzc2lnbiYmKE9iamVjdC5hc3NpZ249ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0XCIpO2Zvcih2YXIgZT1PYmplY3QodCksaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciBhPWFyZ3VtZW50c1tpXTtpZihudWxsIT1hKWZvcih2YXIgcyBpbiBhKWEuaGFzT3duUHJvcGVydHkocykmJihlW3NdPWFbc10pfXJldHVybiBlfSk7dmFyIGE9T2JqZWN0LmFzc2lnbih7fSx0KTtyZXR1cm4gdGhpcy5pc09iamVjdCh0KSYmdGhpcy5pc09iamVjdChlKSYmT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocyl7aS5pc09iamVjdChlW3NdKSYmcyBpbiB0P2Fbc109aS5leHRlbmQodFtzXSxlW3NdKTpPYmplY3QuYXNzaWduKGEsbyh7fSxzLGVbc10pKX0pKSxhfX0se2tleTpcImV4dGVuZEFycmF5XCIsdmFsdWU6ZnVuY3Rpb24oZSxpKXt2YXIgYT1bXTtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe2EucHVzaCh0LmV4dGVuZChpLGUpKX0pKSxlPWF9fSx7a2V5OlwibW9udGhNb2RcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCUxMn19LHtrZXk6XCJjbG9uZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHQuaXMoXCJBcnJheVwiLGUpKXtmb3IodmFyIGE9W10scz0wO3M8ZS5sZW5ndGg7cysrKWFbc109dGhpcy5jbG9uZShlW3NdKTtyZXR1cm4gYX1pZih0LmlzKFwiTnVsbFwiLGUpKXJldHVybiBudWxsO2lmKHQuaXMoXCJEYXRlXCIsZSkpcmV0dXJuIGU7aWYoXCJvYmplY3RcIj09PWkoZSkpe3ZhciByPXt9O2Zvcih2YXIgbyBpbiBlKWUuaGFzT3duUHJvcGVydHkobykmJihyW29dPXRoaXMuY2xvbmUoZVtvXSkpO3JldHVybiByfXJldHVybiBlfX0se2tleTpcImxvZzEwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4xMH19LHtrZXk6XCJyb3VuZFRvQmFzZTEwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2cxMCh0KSkpfX0se2tleTpcInJvdW5kVG9CYXNlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5wb3coZSxNYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGgubG9nKGUpKSl9fSx7a2V5OlwicGFyc2VOdW1iZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQ/dDpwYXJzZUZsb2F0KHQpfX0se2tleTpcInN0cmlwTnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjI7cmV0dXJuIE51bWJlci5pc0ludGVnZXIodCk/dDpwYXJzZUZsb2F0KHQudG9QcmVjaXNpb24oZSkpfX0se2tleTpcInJhbmRvbUlkXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4oTWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDQpfX0se2tleTpcIm5vRXhwb25lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9U3RyaW5nKHQpLnNwbGl0KC9bZUVdLyk7aWYoMT09PWUubGVuZ3RoKXJldHVybiBlWzBdO3ZhciBpPVwiXCIsYT10PDA/XCItXCI6XCJcIixzPWVbMF0ucmVwbGFjZShcIi5cIixcIlwiKSxyPU51bWJlcihlWzFdKSsxO2lmKHI8MCl7Zm9yKGk9YStcIjAuXCI7cisrOylpKz1cIjBcIjtyZXR1cm4gaStzLnJlcGxhY2UoL14tLyxcIlwiKX1mb3Ioci09cy5sZW5ndGg7ci0tOylpKz1cIjBcIjtyZXR1cm4gcytpfX0se2tleTpcImdldERpbWVuc2lvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCksaT10LmNsaWVudEhlaWdodCxhPXQuY2xpZW50V2lkdGg7cmV0dXJuIGktPXBhcnNlRmxvYXQoZS5wYWRkaW5nVG9wKStwYXJzZUZsb2F0KGUucGFkZGluZ0JvdHRvbSksW2EtPXBhcnNlRmxvYXQoZS5wYWRkaW5nTGVmdCkrcGFyc2VGbG9hdChlLnBhZGRpbmdSaWdodCksaV19fSx7a2V5OlwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOmUudG9wLHJpZ2h0OmUucmlnaHQsYm90dG9tOmUuYm90dG9tLGxlZnQ6ZS5sZWZ0LHdpZHRoOnQuY2xpZW50V2lkdGgsaGVpZ2h0OnQuY2xpZW50SGVpZ2h0LHg6ZS5sZWZ0LHk6ZS50b3B9fX0se2tleTpcImdldExhcmdlc3RTdHJpbmdGcm9tQXJyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYoZT1lLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSkpKSx0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKX19LHtrZXk6XCJoZXhUb1JnYmFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpcIiM5OTk5OTlcIixlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTouNjtcIiNcIiE9PXQuc3Vic3RyaW5nKDAsMSkmJih0PVwiIzk5OTk5OVwiKTt2YXIgaT10LnJlcGxhY2UoXCIjXCIsXCJcIik7aT1pLm1hdGNoKG5ldyBSZWdFeHAoXCIoLntcIitpLmxlbmd0aC8zK1wifSlcIixcImdcIikpO2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKWlbYV09cGFyc2VJbnQoMT09PWlbYV0ubGVuZ3RoP2lbYV0raVthXTppW2FdLDE2KTtyZXR1cm4gdm9pZCAwIT09ZSYmaS5wdXNoKGUpLFwicmdiYShcIitpLmpvaW4oXCIsXCIpK1wiKVwifX0se2tleTpcImdldE9wYWNpdHlGcm9tUkdCQVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQucmVwbGFjZSgvXi4qLCguKylcXCkvLFwiJDFcIikpfX0se2tleTpcInJnYjJoZXhcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4odD10Lm1hdGNoKC9ecmdiYT9bXFxzK10/XFwoW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8vaSkpJiY0PT09dC5sZW5ndGg/XCIjXCIrKFwiMFwiK3BhcnNlSW50KHRbMV0sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKyhcIjBcIitwYXJzZUludCh0WzJdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSsoXCIwXCIrcGFyc2VJbnQodFszXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik6XCJcIn19LHtrZXk6XCJpc0NvbG9ySGV4XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuLyheI1swLTlBLUZdezZ9JCl8KF4jWzAtOUEtRl17M30kKXwoXiNbMC05QS1GXXs4fSQpL2kudGVzdCh0KX19LHtrZXk6XCJnZXRQb2x5Z29uUG9zXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9W10sYT0yKk1hdGguUEkvZSxzPTA7czxlO3MrKyl7dmFyIHI9e307ci54PXQqTWF0aC5zaW4ocyphKSxyLnk9LXQqTWF0aC5jb3MocyphKSxpLnB1c2gocil9cmV0dXJuIGl9fSx7a2V5OlwicG9sYXJUb0NhcnRlc2lhblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPShhLTkwKSpNYXRoLlBJLzE4MDtyZXR1cm57eDp0K2kqTWF0aC5jb3MocykseTplK2kqTWF0aC5zaW4ocyl9fX0se2tleTpcImVzY2FwZVN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcInhcIixpPXQudG9TdHJpbmcoKS5zbGljZSgpO3JldHVybiBpPWkucmVwbGFjZSgvW2AgfiFAIyQlXiYqKCl8K1xcPT87OidcIiwuPD57fVtcXF1cXFxcL10vZ2ksZSl9fSx7a2V5OlwibmVnVG9aZXJvXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD8wOnR9fSx7a2V5OlwibW92ZUluZGV4SW5BcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZihpPj10Lmxlbmd0aClmb3IodmFyIGE9aS10Lmxlbmd0aCsxO2EtLTspdC5wdXNoKHZvaWQgMCk7cmV0dXJuIHQuc3BsaWNlKGksMCx0LnNwbGljZShlLDEpWzBdKSx0fX0se2tleTpcImV4dHJhY3ROdW1iZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0LnJlcGxhY2UoL1teXFxkLl0qL2csXCJcIikpfX0se2tleTpcImZpbmRBbmNlc3RvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKDsodD10LnBhcmVudEVsZW1lbnQpJiYhdC5jbGFzc0xpc3QuY29udGFpbnMoZSk7KTtyZXR1cm4gdH19LHtrZXk6XCJzZXRFTHN0eWxlc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmKHQuc3R5bGUua2V5PWVbaV0pfX0se2tleTpcImlzTnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIWlzTmFOKHQpJiZwYXJzZUZsb2F0KE51bWJlcih0KSk9PT10JiYhaXNOYU4ocGFyc2VJbnQodCwxMCkpfX0se2tleTpcImlzRmxvYXRcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTnVtYmVyKHQpPT09dCYmdCUxIT0wfX0se2tleTpcImlzU2FmYXJpXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4vXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfX0se2tleTpcImlzRmlyZWZveFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiZmlyZWZveFwiKT4tMX19LHtrZXk6XCJpc0lFMTFcIix2YWx1ZTpmdW5jdGlvbigpe2lmKC0xIT09d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIk1TSUVcIil8fHdpbmRvdy5uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKFwiVHJpZGVudC9cIik+LTEpcmV0dXJuITB9fSx7a2V5OlwiaXNJRVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsZT10LmluZGV4T2YoXCJNU0lFIFwiKTtpZihlPjApcmV0dXJuIHBhcnNlSW50KHQuc3Vic3RyaW5nKGUrNSx0LmluZGV4T2YoXCIuXCIsZSkpLDEwKTtpZih0LmluZGV4T2YoXCJUcmlkZW50L1wiKT4wKXt2YXIgaT10LmluZGV4T2YoXCJydjpcIik7cmV0dXJuIHBhcnNlSW50KHQuc3Vic3RyaW5nKGkrMyx0LmluZGV4T2YoXCIuXCIsaSkpLDEwKX12YXIgYT10LmluZGV4T2YoXCJFZGdlL1wiKTtyZXR1cm4gYT4wJiZwYXJzZUludCh0LnN1YnN0cmluZyhhKzUsdC5pbmRleE9mKFwiLlwiLGEpKSwxMCl9fV0pLHR9KCksYj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnNldEVhc2luZ0Z1bmN0aW9ucygpfXJldHVybiByKHQsW3trZXk6XCJzZXRFYXNpbmdGdW5jdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O2lmKCF0aGlzLncuZ2xvYmFscy5lYXNpbmcpe3N3aXRjaCh0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZWFzaW5nKXtjYXNlXCJsaW5lYXJcIjp0PVwiLVwiO2JyZWFrO2Nhc2VcImVhc2VpblwiOnQ9XCI8XCI7YnJlYWs7Y2FzZVwiZWFzZW91dFwiOnQ9XCI+XCI7YnJlYWs7Y2FzZVwiZWFzZWlub3V0XCI6ZGVmYXVsdDp0PVwiPD5cIjticmVhaztjYXNlXCJzd2luZ1wiOnQ9ZnVuY3Rpb24odCl7dmFyIGU9MS43MDE1ODtyZXR1cm4odC09MSkqdCooKGUrMSkqdCtlKSsxfTticmVhaztjYXNlXCJib3VuY2VcIjp0PWZ1bmN0aW9uKHQpe3JldHVybiB0PDEvMi43NT83LjU2MjUqdCp0OnQ8Mi8yLjc1PzcuNTYyNSoodC09MS41LzIuNzUpKnQrLjc1OnQ8Mi41LzIuNzU/Ny41NjI1Kih0LT0yLjI1LzIuNzUpKnQrLjkzNzU6Ny41NjI1Kih0LT0yLjYyNS8yLjc1KSp0Ky45ODQzNzV9O2JyZWFrO2Nhc2VcImVsYXN0aWNcIjp0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ISF0P3Q6TWF0aC5wb3coMiwtMTAqdCkqTWF0aC5zaW4oKHQtLjA3NSkqKDIqTWF0aC5QSSkvLjMpKzF9fXRoaXMudy5nbG9iYWxzLmVhc2luZz10fX19LHtrZXk6XCJhbmltYXRlTGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3QuYXR0cihlKS5hbmltYXRlKGEpLmF0dHIoaSl9fSx7a2V5OlwiYW5pbWF0ZU1hcmtlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXtlfHwoZT0wKSx0LmF0dHIoe3I6ZSx3aWR0aDplLGhlaWdodDplfSkuYW5pbWF0ZShhLHMpLmF0dHIoe3I6aSx3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0pLmFmdGVyQWxsKChmdW5jdGlvbigpe3IoKX0pKX19LHtrZXk6XCJhbmltYXRlQ2lyY2xlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt0LmF0dHIoe3I6ZS5yLGN4OmUuY3gsY3k6ZS5jeX0pLmFuaW1hdGUoYSxzKS5hdHRyKHtyOmkucixjeDppLmN4LGN5OmkuY3l9KX19LHtrZXk6XCJhbmltYXRlUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dC5hdHRyKGUpLmFuaW1hdGUoYSkuYXR0cihpKS5hZnRlckFsbCgoZnVuY3Rpb24oKXtyZXR1cm4gcygpfSkpfX0se2tleTpcImFuaW1hdGVQYXRoc0dyYWR1YWxseVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZWwsaT10LnJlYWxJbmRleCxhPXQuaixzPXQuZmlsbCxyPXQucGF0aEZyb20sbz10LnBhdGhUbyxuPXQuc3BlZWQsbD10LmRlbGF5LGg9dGhpcy53LGM9MDtoLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZW5hYmxlZCYmKGM9aC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmRlbGF5KSxoLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCYmaC5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZcImJhclwiIT09aC5jb25maWcuY2hhcnQudHlwZSYmKGM9MCksdGhpcy5tb3JwaFNWRyhlLGksYSxcImxpbmVcIiE9PWguY29uZmlnLmNoYXJ0LnR5cGV8fGguZ2xvYmFscy5jb21ib0NoYXJ0cz9zOlwic3Ryb2tlXCIscixvLG4sbCpjKX19LHtrZXk6XCJzaG93RGVsYXllZEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLncuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5lbDtlLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpLGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLWVsZW1lbnQtc2hvd25cIil9KSl9fSx7a2V5OlwiYW5pbWF0aW9uQ29tcGxldGVkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2UuZ2xvYmFscy5hbmltYXRpb25FbmRlZHx8KGUuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCx0aGlzLnNob3dEZWxheWVkRWxlbWVudHMoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuYW5pbWF0aW9uRW5kJiZlLmNvbmZpZy5jaGFydC5ldmVudHMuYW5pbWF0aW9uRW5kKHRoaXMuY3R4LHtlbDp0LHc6ZX0pKX19LHtrZXk6XCJtb3JwaFNWR1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8sbil7dmFyIGw9dGhpcyxoPXRoaXMudztzfHwocz10LmF0dHIoXCJwYXRoRnJvbVwiKSkscnx8KHI9dC5hdHRyKFwicGF0aFRvXCIpKTt2YXIgYz1mdW5jdGlvbih0KXtyZXR1cm5cInJhZGFyXCI9PT1oLmNvbmZpZy5jaGFydC50eXBlJiYobz0xKSxcIk0gMCBcIi5jb25jYXQoaC5nbG9iYWxzLmdyaWRIZWlnaHQpfTsoIXN8fHMuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8cy5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKHM9YygpKSwoIXJ8fHIuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8ci5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKHI9YygpKSxoLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZXx8KG89MSksdC5wbG90KHMpLmFuaW1hdGUoMSxoLmdsb2JhbHMuZWFzaW5nLG4pLnBsb3QocykuYW5pbWF0ZShvLGguZ2xvYmFscy5lYXNpbmcsbikucGxvdChyKS5hZnRlckFsbCgoZnVuY3Rpb24oKXt4LmlzTnVtYmVyKGkpP2k9PT1oLmdsb2JhbHMuc2VyaWVzW2guZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMiYmaC5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJmwuYW5pbWF0aW9uQ29tcGxldGVkKHQpOlwibm9uZVwiIT09YSYmaC5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJighaC5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZlPT09aC5nbG9iYWxzLnNlcmllcy5sZW5ndGgtMXx8aC5nbG9iYWxzLmNvbWJvQ2hhcnRzKSYmbC5hbmltYXRpb25Db21wbGV0ZWQodCksbC5zaG93RGVsYXllZEVsZW1lbnRzKCl9KSl9fV0pLHR9KCksdj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZ2V0RGVmYXVsdEZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3QudW5maWx0ZXIoITApLChuZXcgd2luZG93LlNWRy5GaWx0ZXIpLnNpemUoXCIxMjAlXCIsXCIxODAlXCIsXCItNSVcIixcIi00MCVcIiksXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlcj90aGlzLmFwcGx5RmlsdGVyKHQsZSxpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci50eXBlLGkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnZhbHVlKTppLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQmJnRoaXMuZHJvcFNoYWRvdyh0LGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3csZSl9fSx7a2V5OlwiYWRkTm9ybWFsRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiYhdC5ub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWFya2VyXCIpJiZ0aGlzLmRyb3BTaGFkb3codCxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LGUpfX0se2tleTpcImFkZExpZ2h0ZW5GaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcyxzPXRoaXMudyxyPWkuaW50ZW5zaXR5O3QudW5maWx0ZXIoITApO25ldyB3aW5kb3cuU1ZHLkZpbHRlcjt0LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGk9cy5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzsoaS5lbmFibGVkP2EuYWRkU2hhZG93KHQsZSxpKTp0KS5jb21wb25lbnRUcmFuc2Zlcih7cmdiOnt0eXBlOlwibGluZWFyXCIsc2xvcGU6MS41LGludGVyY2VwdDpyfX0pfSkpLHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSl9fSx7a2V5OlwiYWRkRGFya2VuRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1pLmludGVuc2l0eTt0LnVuZmlsdGVyKCEwKTtuZXcgd2luZG93LlNWRy5GaWx0ZXI7dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBpPXMuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7KGkuZW5hYmxlZD9hLmFkZFNoYWRvdyh0LGUsaSk6dCkuY29tcG9uZW50VHJhbnNmZXIoe3JnYjp7dHlwZTpcImxpbmVhclwiLHNsb3BlOnJ9fSl9KSksdC5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZShcImZpbHRlclVuaXRzXCIsXCJ1c2VyU3BhY2VPblVzZVwiKSx0aGlzLl9zY2FsZUZpbHRlclNpemUodC5maWx0ZXJlci5ub2RlKX19LHtrZXk6XCJhcHBseUZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106LjU7c3dpdGNoKGkpe2Nhc2VcIm5vbmVcIjp0aGlzLmFkZE5vcm1hbEZpbHRlcih0LGUpO2JyZWFrO2Nhc2VcImxpZ2h0ZW5cIjp0aGlzLmFkZExpZ2h0ZW5GaWx0ZXIodCxlLHtpbnRlbnNpdHk6YX0pO2JyZWFrO2Nhc2VcImRhcmtlblwiOnRoaXMuYWRkRGFya2VuRmlsdGVyKHQsZSx7aW50ZW5zaXR5OmF9KX19fSx7a2V5OlwiYWRkU2hhZG93XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPWkuYmx1cixzPWkudG9wLHI9aS5sZWZ0LG89aS5jb2xvcixuPWkub3BhY2l0eSxsPXQuZmxvb2QoQXJyYXkuaXNBcnJheShvKT9vW2VdOm8sbikuY29tcG9zaXRlKHQuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQocixzKS5nYXVzc2lhbkJsdXIoYSkubWVyZ2UodC5zb3VyY2UpO3JldHVybiB0LmJsZW5kKHQuc291cmNlLGwpfX0se2tleTpcImRyb3BTaGFkb3dcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLGE9ZS50b3Ascz1lLmxlZnQscj1lLmJsdXIsbz1lLmNvbG9yLG49ZS5vcGFjaXR5LGw9ZS5ub1VzZXJTcGFjZU9uVXNlLGg9dGhpcy53O3JldHVybiB0LnVuZmlsdGVyKCEwKSx4LmlzSUUoKSYmXCJyYWRpYWxCYXJcIj09PWguY29uZmlnLmNoYXJ0LnR5cGV8fChvPUFycmF5LmlzQXJyYXkobyk/b1tpXTpvLHQuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgZT1udWxsO2U9eC5pc1NhZmFyaSgpfHx4LmlzRmlyZWZveCgpfHx4LmlzSUUoKT90LmZsb29kKG8sbikuY29tcG9zaXRlKHQuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQocyxhKS5nYXVzc2lhbkJsdXIocik6dC5mbG9vZChvLG4pLmNvbXBvc2l0ZSh0LnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHMsYSkuZ2F1c3NpYW5CbHVyKHIpLm1lcmdlKHQuc291cmNlKSx0LmJsZW5kKHQuc291cmNlLGUpfSkpLGx8fHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSkpLHR9fSx7a2V5Olwic2V0U2VsZWN0aW9uRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudztpZih2b2lkIDAhPT1hLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW2VdJiZhLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW2VdLmluZGV4T2YoaSk+LTEpe3Qubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLCEwKTt2YXIgcz1hLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlcjtcIm5vbmVcIiE9PXMmJnRoaXMuYXBwbHlGaWx0ZXIodCxlLHMudHlwZSxzLnZhbHVlKX19fSx7a2V5OlwiX3NjYWxlRmlsdGVyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpeyFmdW5jdGlvbihlKXtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiZ0LnNldEF0dHJpYnV0ZShpLGVbaV0pfSh7d2lkdGg6XCIyMDAlXCIsaGVpZ2h0OlwiMjAwJVwiLHg6XCItNTAlXCIseTpcIi01MCVcIn0pfX1dKSx0fSgpLG09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcInJvdW5kUGF0aENvcm5lcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCxlLGkpe3ZhciBzPWUueC10Lngscj1lLnktdC55LG89TWF0aC5zcXJ0KHMqcytyKnIpO3JldHVybiBhKHQsZSxNYXRoLm1pbigxLGkvbykpfWZ1bmN0aW9uIGEodCxlLGkpe3JldHVybnt4OnQueCsoZS54LXQueCkqaSx5OnQueSsoZS55LXQueSkqaX19ZnVuY3Rpb24gcyh0LGUpe3QubGVuZ3RoPjImJih0W3QubGVuZ3RoLTJdPWUueCx0W3QubGVuZ3RoLTFdPWUueSl9ZnVuY3Rpb24gcih0KXtyZXR1cm57eDpwYXJzZUZsb2F0KHRbdC5sZW5ndGgtMl0pLHk6cGFyc2VGbG9hdCh0W3QubGVuZ3RoLTFdKX19dC5pbmRleE9mKFwiTmFOXCIpPi0xJiYodD1cIlwiKTt2YXIgbz10LnNwbGl0KC9bLFxcc10vKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5tYXRjaChcIihbYS16QS1aXSkoLispXCIpO3JldHVybiBpPyh0LnB1c2goaVsxXSksdC5wdXNoKGlbMl0pKTp0LnB1c2goZSksdH0pLFtdKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQoZSk9PWUmJnQubGVuZ3RoP3RbdC5sZW5ndGgtMV0ucHVzaChlKTp0LnB1c2goW2VdKSx0fSksW10pLG49W107aWYoby5sZW5ndGg+MSl7dmFyIGw9cihvWzBdKSxoPW51bGw7XCJaXCI9PW9bby5sZW5ndGgtMV1bMF0mJm9bMF0ubGVuZ3RoPjImJihoPVtcIkxcIixsLngsbC55XSxvW28ubGVuZ3RoLTFdPWgpLG4ucHVzaChvWzBdKTtmb3IodmFyIGM9MTtjPG8ubGVuZ3RoO2MrKyl7dmFyIGQ9bltuLmxlbmd0aC0xXSxnPW9bY10sdT1nPT1oP29bMV06b1tjKzFdO2lmKHUmJmQmJmQubGVuZ3RoPjImJlwiTFwiPT1nWzBdJiZ1Lmxlbmd0aD4yJiZcIkxcIj09dVswXSl7dmFyIHAsZix4PXIoZCksYj1yKGcpLHY9cih1KTtwPWkoYix4LGUpLGY9aShiLHYsZSkscyhnLHApLGcub3JpZ1BvaW50PWIsbi5wdXNoKGcpO3ZhciBtPWEocCxiLC41KSx5PWEoYixmLC41KSx3PVtcIkNcIixtLngsbS55LHkueCx5LnksZi54LGYueV07dy5vcmlnUG9pbnQ9YixuLnB1c2godyl9ZWxzZSBuLnB1c2goZyl9aWYoaCl7dmFyIGs9cihuW24ubGVuZ3RoLTFdKTtuLnB1c2goW1wiWlwiXSkscyhuWzBdLGspfX1lbHNlIG49bztyZXR1cm4gbi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5qb2luKFwiIFwiKStcIiBcIn0pLFwiXCIpfX0se2tleTpcImRyYXdMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOlwiI2E4YThhOFwiLHI9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOjAsbz1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06bnVsbCxuPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpcImJ1dHRcIjtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmxpbmUoKS5hdHRyKHt4MTp0LHkxOmUseDI6aSx5MjphLHN0cm9rZTpzLFwic3Ryb2tlLWRhc2hhcnJheVwiOnIsXCJzdHJva2Utd2lkdGhcIjpvLFwic3Ryb2tlLWxpbmVjYXBcIjpufSl9fSx7a2V5OlwiZHJhd1JlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjAscj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06XCIjZmVmZWZlXCIsbz1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06MSxuPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpudWxsLGw9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOm51bGwsaD1hcmd1bWVudHMubGVuZ3RoPjkmJnZvaWQgMCE9PWFyZ3VtZW50c1s5XT9hcmd1bWVudHNbOV06MCxjPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5yZWN0KCk7cmV0dXJuIGMuYXR0cih7eDp0LHk6ZSx3aWR0aDppPjA/aTowLGhlaWdodDphPjA/YTowLHJ4OnMscnk6cyxvcGFjaXR5Om8sXCJzdHJva2Utd2lkdGhcIjpudWxsIT09bj9uOjAsc3Ryb2tlOm51bGwhPT1sP2w6XCJub25lXCIsXCJzdHJva2UtZGFzaGFycmF5XCI6aH0pLGMubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsciksY319LHtrZXk6XCJkcmF3UG9seWdvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcIiNlMWUxZTFcIixpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOlwibm9uZVwiO3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIucG9seWdvbih0KS5hdHRyKHtmaWxsOmEsc3Ryb2tlOmUsXCJzdHJva2Utd2lkdGhcIjppfSl9fSx7a2V5OlwiZHJhd0NpcmNsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3Q8MCYmKHQ9MCk7dmFyIGk9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmNpcmNsZSgyKnQpO3JldHVybiBudWxsIT09ZSYmaS5hdHRyKGUpLGl9fSx7a2V5OlwiZHJhd1BhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmQsaT12b2lkIDA9PT1lP1wiXCI6ZSxhPXQuc3Ryb2tlLHM9dm9pZCAwPT09YT9cIiNhOGE4YThcIjphLHI9dC5zdHJva2VXaWR0aCxvPXZvaWQgMD09PXI/MTpyLG49dC5maWxsLGw9dC5maWxsT3BhY2l0eSxoPXZvaWQgMD09PWw/MTpsLGM9dC5zdHJva2VPcGFjaXR5LGQ9dm9pZCAwPT09Yz8xOmMsZz10LmNsYXNzZXMsdT10LnN0cm9rZUxpbmVjYXAscD12b2lkIDA9PT11P251bGw6dSxmPXQuc3Ryb2tlRGFzaEFycmF5LHg9dm9pZCAwPT09Zj8wOmYsYj10aGlzLnc7cmV0dXJuIG51bGw9PT1wJiYocD1iLmNvbmZpZy5zdHJva2UubGluZUNhcCksKGkuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8aS5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKGk9XCJNIDAgXCIuY29uY2F0KGIuZ2xvYmFscy5ncmlkSGVpZ2h0KSksYi5nbG9iYWxzLmRvbS5QYXBlci5wYXRoKGkpLmF0dHIoe2ZpbGw6bixcImZpbGwtb3BhY2l0eVwiOmgsc3Ryb2tlOnMsXCJzdHJva2Utb3BhY2l0eVwiOmQsXCJzdHJva2UtbGluZWNhcFwiOnAsXCJzdHJva2Utd2lkdGhcIjpvLFwic3Ryb2tlLWRhc2hhcnJheVwiOngsY2xhc3M6Z30pfX0se2tleTpcImdyb3VwXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCxlPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ncm91cCgpO3JldHVybiBudWxsIT09dCYmZS5hdHRyKHQpLGV9fSx7a2V5OlwibW92ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9W1wiTVwiLHQsZV0uam9pbihcIiBcIik7cmV0dXJuIGl9fSx7a2V5OlwibGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsYT1udWxsO3JldHVybiBudWxsPT09aT9hPVtcIiBMXCIsdCxlXS5qb2luKFwiIFwiKTpcIkhcIj09PWk/YT1bXCIgSFwiLHRdLmpvaW4oXCIgXCIpOlwiVlwiPT09aSYmKGE9W1wiIFZcIixlXS5qb2luKFwiIFwiKSksYX19LHtrZXk6XCJjdXJ2ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbz1bXCJDXCIsdCxlLGksYSxzLHJdLmpvaW4oXCIgXCIpO3JldHVybiBvfX0se2tleTpcInF1YWRyYXRpY0N1cnZlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuW1wiUVwiLHQsZSxpLGFdLmpvaW4oXCIgXCIpfX0se2tleTpcImFyY1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPVwiQVwiO2FyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddJiZhcmd1bWVudHNbN10mJihuPVwiYVwiKTt2YXIgbD1bbix0LGUsaSxhLHMscixvXS5qb2luKFwiIFwiKTtyZXR1cm4gbH19LHtrZXk6XCJyZW5kZXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpLGE9dC5qLHM9dC5yZWFsSW5kZXgscj10LnBhdGhGcm9tLG89dC5wYXRoVG8sbj10LnN0cm9rZSxsPXQuc3Ryb2tlV2lkdGgsaD10LnN0cm9rZUxpbmVjYXAsYz10LmZpbGwsZD10LmFuaW1hdGlvbkRlbGF5LGc9dC5pbml0aWFsU3BlZWQsdT10LmRhdGFDaGFuZ2VTcGVlZCxwPXQuY2xhc3NOYW1lLGY9dC5zaG91bGRDbGlwVG9HcmlkLHg9dm9pZCAwPT09Znx8ZixtPXQuYmluZEV2ZW50c09uUGF0aHMseT12b2lkIDA9PT1tfHxtLHc9dC5kcmF3U2hhZG93LGs9dm9pZCAwPT09d3x8dyxBPXRoaXMudyxTPW5ldyB2KHRoaXMuY3R4KSxDPW5ldyBiKHRoaXMuY3R4KSxMPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLFA9TCYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCxJPSEhKEwmJiFBLmdsb2JhbHMucmVzaXplZHx8UCYmQS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZBLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSk7ST9pPXI6KGk9byxBLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITApO3ZhciBNPUEuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXksVD0wO1Q9QXJyYXkuaXNBcnJheShNKT9NW3NdOkEuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXk7dmFyIHo9dGhpcy5kcmF3UGF0aCh7ZDppLHN0cm9rZTpuLHN0cm9rZVdpZHRoOmwsZmlsbDpjLGZpbGxPcGFjaXR5OjEsY2xhc3NlczpwLHN0cm9rZUxpbmVjYXA6aCxzdHJva2VEYXNoQXJyYXk6VH0pO2lmKHouYXR0cihcImluZGV4XCIscykseCYmei5hdHRyKHtcImNsaXAtcGF0aFwiOlwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoQS5nbG9iYWxzLmN1aWQsXCIpXCIpfSksXCJub25lXCIhPT1BLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci50eXBlKVMuZ2V0RGVmYXVsdEZpbHRlcih6LHMpO2Vsc2UgaWYoQS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiZrJiYoIUEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzfHxBLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllcyYmLTEhPT1BLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllcy5pbmRleE9mKHMpKSl7dmFyIFg9QS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztTLmRyb3BTaGFkb3coeixYLHMpfXkmJih6Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIix0aGlzLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyx6KSksei5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdGhpcy5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMseikpLHoubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdGhpcy5wYXRoTW91c2VEb3duLmJpbmQodGhpcyx6KSkpLHouYXR0cih7cGF0aFRvOm8scGF0aEZyb206cn0pO3ZhciBFPXtlbDp6LGo6YSxyZWFsSW5kZXg6cyxwYXRoRnJvbTpyLHBhdGhUbzpvLGZpbGw6YyxzdHJva2VXaWR0aDpsLGRlbGF5OmR9O3JldHVybiFMfHxBLmdsb2JhbHMucmVzaXplZHx8QS5nbG9iYWxzLmRhdGFDaGFuZ2VkPyFBLmdsb2JhbHMucmVzaXplZCYmQS5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxDLnNob3dEZWxheWVkRWxlbWVudHMoKTpDLmFuaW1hdGVQYXRoc0dyYWR1YWxseShlKGUoe30sRSkse30se3NwZWVkOmd9KSksQS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZQJiZJJiZDLmFuaW1hdGVQYXRoc0dyYWR1YWxseShlKGUoe30sRSkse30se3NwZWVkOnV9KSksen19LHtrZXk6XCJkcmF3UGF0dGVyblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106XCIjYThhOGE4XCIscz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06MDtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnBhdHRlcm4oZSxpLChmdW5jdGlvbihyKXtcImhvcml6b250YWxMaW5lc1wiPT09dD9yLmxpbmUoMCwwLGksMCkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnMrMX0pOlwidmVydGljYWxMaW5lc1wiPT09dD9yLmxpbmUoMCwwLDAsZSkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnMrMX0pOlwic2xhbnRlZExpbmVzXCI9PT10P3IubGluZSgwLDAsZSxpKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6c30pOlwic3F1YXJlc1wiPT09dD9yLnJlY3QoZSxpKS5maWxsKFwibm9uZVwiKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6c30pOlwiY2lyY2xlc1wiPT09dCYmci5jaXJjbGUoZSkuZmlsbChcIm5vbmVcIikuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnN9KX0pKX19LHtrZXk6XCJkcmF3R3JhZGllbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3ZhciByLG89YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOm51bGwsbj1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06bnVsbCxsPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpudWxsLGg9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOjAsYz10aGlzLnc7ZS5sZW5ndGg8OSYmMD09PWUuaW5kZXhPZihcIiNcIikmJihlPXguaGV4VG9SZ2JhKGUsYSkpLGkubGVuZ3RoPDkmJjA9PT1pLmluZGV4T2YoXCIjXCIpJiYoaT14LmhleFRvUmdiYShpLHMpKTt2YXIgZD0wLGc9MSx1PTEscD1udWxsO251bGwhPT1uJiYoZD12b2lkIDAhPT1uWzBdP25bMF0vMTAwOjAsZz12b2lkIDAhPT1uWzFdP25bMV0vMTAwOjEsdT12b2lkIDAhPT1uWzJdP25bMl0vMTAwOjEscD12b2lkIDAhPT1uWzNdP25bM10vMTAwOm51bGwpO3ZhciBmPSEoXCJkb251dFwiIT09Yy5jb25maWcuY2hhcnQudHlwZSYmXCJwaWVcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUmJlwicG9sYXJBcmVhXCIhPT1jLmNvbmZpZy5jaGFydC50eXBlJiZcImJ1YmJsZVwiIT09Yy5jb25maWcuY2hhcnQudHlwZSk7aWYocj1udWxsPT09bHx8MD09PWwubGVuZ3RoP2MuZ2xvYmFscy5kb20uUGFwZXIuZ3JhZGllbnQoZj9cInJhZGlhbFwiOlwibGluZWFyXCIsKGZ1bmN0aW9uKHQpe3QuYXQoZCxlLGEpLHQuYXQoZyxpLHMpLHQuYXQodSxpLHMpLG51bGwhPT1wJiZ0LmF0KHAsZSxhKX0pKTpjLmdsb2JhbHMuZG9tLlBhcGVyLmdyYWRpZW50KGY/XCJyYWRpYWxcIjpcImxpbmVhclwiLChmdW5jdGlvbih0KXsoQXJyYXkuaXNBcnJheShsW2hdKT9sW2hdOmwpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuYXQoZS5vZmZzZXQvMTAwLGUuY29sb3IsZS5vcGFjaXR5KX0pKX0pKSxmKXt2YXIgYj1jLmdsb2JhbHMuZ3JpZFdpZHRoLzIsdj1jLmdsb2JhbHMuZ3JpZEhlaWdodC8yO1wiYnViYmxlXCIhPT1jLmNvbmZpZy5jaGFydC50eXBlP3IuYXR0cih7Z3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY3g6YixjeTp2LHI6b30pOnIuYXR0cih7Y3g6LjUsY3k6LjUscjouOCxmeDouMixmeTouMn0pfWVsc2VcInZlcnRpY2FsXCI9PT10P3IuZnJvbSgwLDApLnRvKDAsMSk6XCJkaWFnb25hbFwiPT09dD9yLmZyb20oMCwwKS50bygxLDEpOlwiaG9yaXpvbnRhbFwiPT09dD9yLmZyb20oMCwxKS50bygxLDEpOlwiZGlhZ29uYWwyXCI9PT10JiZyLmZyb20oMSwwKS50bygwLDEpO3JldHVybiByfX0se2tleTpcImdldFRleHRCYXNlZE9uTWF4V2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnRleHQsaT10Lm1heFdpZHRoLGE9dC5mb250U2l6ZSxzPXQuZm9udEZhbWlseSxyPXRoaXMuZ2V0VGV4dFJlY3RzKGUsYSxzKSxvPXIud2lkdGgvZS5sZW5ndGgsbj1NYXRoLmZsb29yKGkvbyk7cmV0dXJuIGk8ci53aWR0aD9lLnNsaWNlKDAsbi0zKStcIi4uLlwiOmV9fSx7a2V5OlwiZHJhd1RleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLGE9dC54LHM9dC55LHI9dC50ZXh0LG89dC50ZXh0QW5jaG9yLG49dC5mb250U2l6ZSxsPXQuZm9udEZhbWlseSxoPXQuZm9udFdlaWdodCxjPXQuZm9yZUNvbG9yLGQ9dC5vcGFjaXR5LGc9dC5tYXhXaWR0aCx1PXQuY3NzQ2xhc3MscD12b2lkIDA9PT11P1wiXCI6dSxmPXQuaXNQbGFpblRleHQseD12b2lkIDA9PT1mfHxmLGI9dGhpcy53O3ZvaWQgMD09PXImJihyPVwiXCIpO3ZhciB2PXI7b3x8KG89XCJzdGFydFwiKSxjJiZjLmxlbmd0aHx8KGM9Yi5jb25maWcuY2hhcnQuZm9yZUNvbG9yKSxsPWx8fGIuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksaD1ofHxcInJlZ3VsYXJcIjt2YXIgbSx5PXttYXhXaWR0aDpnLGZvbnRTaXplOm49bnx8XCIxMXB4XCIsZm9udEZhbWlseTpsfTtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT9tPWIuZ2xvYmFscy5kb20uUGFwZXIudGV4dCgoZnVuY3Rpb24odCl7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspdj1yW2FdLGcmJih2PWkuZ2V0VGV4dEJhc2VkT25NYXhXaWR0aChlKHt0ZXh0OnJbYV19LHkpKSksMD09PWE/dC50c3Bhbih2KTp0LnRzcGFuKHYpLm5ld0xpbmUoKX0pKTooZyYmKHY9dGhpcy5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKGUoe3RleHQ6cn0seSkpKSxtPXg/Yi5nbG9iYWxzLmRvbS5QYXBlci5wbGFpbihyKTpiLmdsb2JhbHMuZG9tLlBhcGVyLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRzcGFuKHYpfSkpKSxtLmF0dHIoe3g6YSx5OnMsXCJ0ZXh0LWFuY2hvclwiOm8sXCJkb21pbmFudC1iYXNlbGluZVwiOlwiYXV0b1wiLFwiZm9udC1zaXplXCI6bixcImZvbnQtZmFtaWx5XCI6bCxcImZvbnQtd2VpZ2h0XCI6aCxmaWxsOmMsY2xhc3M6XCJhcGV4Y2hhcnRzLXRleHQgXCIrcH0pLG0ubm9kZS5zdHlsZS5mb250RmFtaWx5PWwsbS5ub2RlLnN0eWxlLm9wYWNpdHk9ZCxtfX0se2tleTpcImRyYXdNYXJrZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dD10fHwwO3ZhciBhPWkucFNpemV8fDAscz1udWxsO2lmKFwic3F1YXJlXCI9PT1pLnNoYXBlfHxcInJlY3RcIj09PWkuc2hhcGUpe3ZhciByPXZvaWQgMD09PWkucFJhZGl1cz9hLzI6aS5wUmFkaXVzO251bGwhPT1lJiZhfHwoYT0wLHI9MCk7dmFyIG89MS4yKmErcixuPXRoaXMuZHJhd1JlY3QobyxvLG8sbyxyKTtuLmF0dHIoe3g6dC1vLzIseTplLW8vMixjeDp0LGN5OmUsY2xhc3M6aS5jbGFzcz9pLmNsYXNzOlwiXCIsZmlsbDppLnBvaW50RmlsbENvbG9yLFwiZmlsbC1vcGFjaXR5XCI6aS5wb2ludEZpbGxPcGFjaXR5P2kucG9pbnRGaWxsT3BhY2l0eToxLHN0cm9rZTppLnBvaW50U3Ryb2tlQ29sb3IsXCJzdHJva2Utd2lkdGhcIjppLnBvaW50U3Ryb2tlV2lkdGg/aS5wb2ludFN0cm9rZVdpZHRoOjAsXCJzdHJva2Utb3BhY2l0eVwiOmkucG9pbnRTdHJva2VPcGFjaXR5P2kucG9pbnRTdHJva2VPcGFjaXR5OjF9KSxzPW59ZWxzZVwiY2lyY2xlXCIhPT1pLnNoYXBlJiZpLnNoYXBlfHwoeC5pc051bWJlcihlKXx8KGE9MCxlPTApLHM9dGhpcy5kcmF3Q2lyY2xlKGEse2N4OnQsY3k6ZSxjbGFzczppLmNsYXNzP2kuY2xhc3M6XCJcIixzdHJva2U6aS5wb2ludFN0cm9rZUNvbG9yLGZpbGw6aS5wb2ludEZpbGxDb2xvcixcImZpbGwtb3BhY2l0eVwiOmkucG9pbnRGaWxsT3BhY2l0eT9pLnBvaW50RmlsbE9wYWNpdHk6MSxcInN0cm9rZS13aWR0aFwiOmkucG9pbnRTdHJva2VXaWR0aD9pLnBvaW50U3Ryb2tlV2lkdGg6MCxcInN0cm9rZS1vcGFjaXR5XCI6aS5wb2ludFN0cm9rZU9wYWNpdHk/aS5wb2ludFN0cm9rZU9wYWNpdHk6MX0pKTtyZXR1cm4gc319LHtrZXk6XCJwYXRoTW91c2VFbnRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IHYodGhpcy5jdHgpLHM9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKSxyPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VFbnRlciYmaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlRW50ZXIoZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX0pLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJkYXRhUG9pbnRNb3VzZUVudGVyXCIsW2UsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9XSksKFwibm9uZVwiPT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZXx8XCJ0cnVlXCIhPT10Lm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIikpJiZcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZSYmIWkuZ2xvYmFscy5pc1RvdWNoRGV2aWNlKXt2YXIgbz1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyO2EuYXBwbHlGaWx0ZXIodCxzLG8udHlwZSxvLnZhbHVlKX19fSx7a2V5OlwicGF0aE1vdXNlTGVhdmVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyB2KHRoaXMuY3R4KSxzPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCkscj1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCk7XCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlTGVhdmUmJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUxlYXZlKGUsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiZGF0YVBvaW50TW91c2VMZWF2ZVwiLFtlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pLFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSYmXCJ0cnVlXCI9PT10Lm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIil8fFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlJiZhLmdldERlZmF1bHRGaWx0ZXIodCxzKX19LHtrZXk6XCJwYXRoTW91c2VEb3duXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgdih0aGlzLmN0eCkscz1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApLHI9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImpcIiksMTApLG89XCJmYWxzZVwiO2lmKFwidHJ1ZVwiPT09dC5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpKXtpZih0Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIixcImZhbHNlXCIpLGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10uaW5kZXhPZihyKT4tMSl7dmFyIG49aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXS5pbmRleE9mKHIpO2kuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10uc3BsaWNlKG4sMSl9fWVsc2V7aWYoIWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuYWxsb3dNdWx0aXBsZURhdGFQb2ludHNTZWxlY3Rpb24mJmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoPjApe2kuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHM9W107dmFyIGw9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1zZXJpZXMgcGF0aFwiKS5tZW1iZXJzLGg9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1zZXJpZXMgY2lyY2xlLCAuYXBleGNoYXJ0cy1zZXJpZXMgcmVjdFwiKS5tZW1iZXJzLGM9ZnVuY3Rpb24odCl7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh0LChmdW5jdGlvbih0KXt0Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIixcImZhbHNlXCIpLGEuZ2V0RGVmYXVsdEZpbHRlcih0LHMpfSkpfTtjKGwpLGMoaCl9dC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJ0cnVlXCIpLG89XCJ0cnVlXCIsdm9pZCAwPT09aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXSYmKGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc109W10pLGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10ucHVzaChyKX1pZihcInRydWVcIj09PW8pe3ZhciBkPWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyO2lmKFwibm9uZVwiIT09ZClhLmFwcGx5RmlsdGVyKHQscyxkLnR5cGUsZC52YWx1ZSk7ZWxzZSBpZihcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXImJiFpLmdsb2JhbHMuaXNUb3VjaERldmljZSl7dmFyIGc9aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKHQscyxnLnR5cGUsZy52YWx1ZSl9fWVsc2UgaWYoXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlKWlmKFwibm9uZVwiPT09aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlfHxpLmdsb2JhbHMuaXNUb3VjaERldmljZSlhLmdldERlZmF1bHRGaWx0ZXIodCxzKTtlbHNle2c9aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKHQscyxnLnR5cGUsZy52YWx1ZSl9XCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludFNlbGVjdGlvbiYmaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludFNlbGVjdGlvbihlLHRoaXMuY3R4LHtzZWxlY3RlZERhdGFQb2ludHM6aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cyxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfSksZSYmdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImRhdGFQb2ludFNlbGVjdGlvblwiLFtlLHRoaXMuY3R4LHtzZWxlY3RlZERhdGFQb2ludHM6aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cyxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pfX0se2tleTpcInJvdGF0ZUFyb3VuZENlbnRlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldEJCb3gmJihlPXQuZ2V0QkJveCgpKSx7eDplLngrZS53aWR0aC8yLHk6ZS55K2UuaGVpZ2h0LzJ9fX0se2tleTpcImdldFRleHRSZWN0c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0scj10aGlzLncsbz10aGlzLmRyYXdUZXh0KHt4Oi0yMDAseTotMjAwLHRleHQ6dCx0ZXh0QW5jaG9yOlwic3RhcnRcIixmb250U2l6ZTplLGZvbnRGYW1pbHk6aSxmb3JlQ29sb3I6XCIjZmZmXCIsb3BhY2l0eTowfSk7YSYmby5hdHRyKFwidHJhbnNmb3JtXCIsYSksci5nbG9iYWxzLmRvbS5QYXBlci5hZGQobyk7dmFyIG49by5iYm94KCk7cmV0dXJuIHN8fChuPW8ubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksby5yZW1vdmUoKSx7d2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHR9fX0se2tleTpcInBsYWNlVGV4dFdpdGhFbGxpcHNpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldENvbXB1dGVkVGV4dExlbmd0aCYmKHQudGV4dENvbnRlbnQ9ZSxlLmxlbmd0aD4wJiZ0LmdldENvbXB1dGVkVGV4dExlbmd0aCgpPj1pLzEuMSkpe2Zvcih2YXIgYT1lLmxlbmd0aC0zO2E+MDthLT0zKWlmKHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsYSk8PWkvMS4xKXJldHVybiB2b2lkKHQudGV4dENvbnRlbnQ9ZS5zdWJzdHJpbmcoMCxhKStcIi4uLlwiKTt0LnRleHRDb250ZW50PVwiLlwifX19XSxbe2tleTpcInNldEF0dHJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiZ0LnNldEF0dHJpYnV0ZShpLGVbaV0pfX1dKSx0fSgpLHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImdldFN0YWNrZWRTZXJpZXNUb3RhbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxlPXRoaXMudyxpPVtdO2lmKDA9PT1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aClyZXR1cm4gaTtmb3IodmFyIGE9MDthPGUuZ2xvYmFscy5zZXJpZXNbZS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDthKyspe2Zvcih2YXIgcz0wLHI9MDtyPGUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO3IrKyl2b2lkIDAhPT1lLmdsb2JhbHMuc2VyaWVzW3JdW2FdJiYtMT09PXQuaW5kZXhPZihyKSYmKHMrPWUuZ2xvYmFscy5zZXJpZXNbcl1bYV0pO2kucHVzaChzKX1yZXR1cm4gaX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbEJ5SW5kZXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiBudWxsPT09dD90aGlzLncuY29uZmlnLnNlcmllcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApOnRoaXMudy5nbG9iYWxzLnNlcmllc1t0XS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApfX0se2tleTpcImlzU2VyaWVzTnVsbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7cmV0dXJuIDA9PT0obnVsbD09PXQ/dGhpcy53LmNvbmZpZy5zZXJpZXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSk6dGhpcy53LmNvbmZpZy5zZXJpZXNbdF0uZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKSkubGVuZ3RofX0se2tleTpcInNlcmllc0hhdmVTYW1lVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLnNlcmllc1t0XS5ldmVyeSgoZnVuY3Rpb24odCxlLGkpe3JldHVybiB0PT09aVswXX0pKX19LHtrZXk6XCJnZXRDYXRlZ29yeUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQuc2xpY2UoKTtyZXR1cm4gZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoaT10Lm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcih0LWUuZ2xvYmFscy5taW5YKzEpfSkpKSxpfX0se2tleTpcImdldExhcmdlc3RTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleD10Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpLmluZGV4T2YoTWF0aC5tYXguYXBwbHkoTWF0aCx0Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpKSl9fSx7a2V5OlwiZ2V0TGFyZ2VzdE1hcmtlclNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPTA7cmV0dXJuIHQuZ2xvYmFscy5tYXJrZXJzLnNpemUuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZT1NYXRoLm1heChlLHQpfSkpLHQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUmJnQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoJiZ0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmZvckVhY2goKGZ1bmN0aW9uKHQpe2U9TWF0aC5tYXgoZSx0LnNpemUpfSkpLGU+MCYmKGUrPXQuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCsxKSx0Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZT1lLGV9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLnNlcmllc1RvdGFscz10Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXt2YXIgaT0wO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspaSs9dFthXTtlbHNlIGkrPXQ7cmV0dXJuIGl9KSl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxzWFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJuIGkuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbihhLHMpe2Zvcih2YXIgcj0wLG89MDtvPGEubGVuZ3RoO28rKylpLmdsb2JhbHMuc2VyaWVzWFtzXVtvXT50JiZpLmdsb2JhbHMuc2VyaWVzWFtzXVtvXTxlJiYocis9YVtvXSk7cmV0dXJuIHJ9KSl9fSx7a2V5OlwiZ2V0UGVyY2VudFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5zZXJpZXNQZXJjZW50PXQuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbihlLGkpe3ZhciBhPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe3ZhciByPXQuZ2xvYmFscy5zdGFja2VkU2VyaWVzVG90YWxzW3NdLG89MDtyJiYobz0xMDAqZVtzXS9yKSxhLnB1c2gobyl9ZWxzZXt2YXIgbj0xMDAqZS90Lmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSksMCk7YS5wdXNoKG4pfXJldHVybiBhfSkpfX0se2tleTpcImdldENhbGN1bGF0ZWRSYXRpb3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxhLHM9dGhpcy53Lmdsb2JhbHMscj1bXSxvPTAsbj1bXSxsPS4xLGg9MDtpZihzLnlSYW5nZT1bXSxzLmlzTXVsdGlwbGVZQXhpcylmb3IodmFyIGM9MDtjPHMubWluWUFyci5sZW5ndGg7YysrKXMueVJhbmdlLnB1c2goTWF0aC5hYnMocy5taW5ZQXJyW2NdLXMubWF4WUFycltjXSkpLG4ucHVzaCgwKTtlbHNlIHMueVJhbmdlLnB1c2goTWF0aC5hYnMocy5taW5ZLXMubWF4WSkpO3MueFJhbmdlPU1hdGguYWJzKHMubWF4WC1zLm1pblgpLHMuelJhbmdlPU1hdGguYWJzKHMubWF4Wi1zLm1pblopO2Zvcih2YXIgZD0wO2Q8cy55UmFuZ2UubGVuZ3RoO2QrKylyLnB1c2gocy55UmFuZ2VbZF0vcy5ncmlkSGVpZ2h0KTtpZihlPXMueFJhbmdlL3MuZ3JpZFdpZHRoLGk9TWF0aC5hYnMocy5pbml0aWFsTWF4WC1zLmluaXRpYWxNaW5YKS9zLmdyaWRXaWR0aCx0PXMueVJhbmdlL3MuZ3JpZFdpZHRoLGE9cy54UmFuZ2Uvcy5ncmlkSGVpZ2h0LChvPXMuelJhbmdlL3MuZ3JpZEhlaWdodCoxNil8fChvPTEpLHMubWluWSE9PU51bWJlci5NSU5fVkFMVUUmJjAhPT1NYXRoLmFicyhzLm1pblkpJiYocy5oYXNOZWdzPSEwKSxzLmlzTXVsdGlwbGVZQXhpcyl7bj1bXTtmb3IodmFyIGc9MDtnPHIubGVuZ3RoO2crKyluLnB1c2goLXMubWluWUFycltnXS9yW2ddKX1lbHNlIG4ucHVzaCgtcy5taW5ZL3JbMF0pLHMubWluWSE9PU51bWJlci5NSU5fVkFMVUUmJjAhPT1NYXRoLmFicyhzLm1pblkpJiYobD0tcy5taW5ZL3QsaD1zLm1pblgvZSk7cmV0dXJue3lSYXRpbzpyLGludmVydGVkWVJhdGlvOnQselJhdGlvOm8seFJhdGlvOmUsaW5pdGlhbFhSYXRpbzppLGludmVydGVkWFJhdGlvOmEsYmFzZUxpbmVJbnZlcnRlZFk6bCxiYXNlTGluZVk6bixiYXNlTGluZVg6aH19fSx7a2V5OlwiZ2V0TG9nU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudztyZXR1cm4gaS5nbG9iYWxzLnNlcmllc0xvZz10Lm1hcCgoZnVuY3Rpb24odCxhKXtyZXR1cm4gaS5jb25maWcueWF4aXNbYV0mJmkuY29uZmlnLnlheGlzW2FdLmxvZ2FyaXRobWljP3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQ/bnVsbDplLmdldExvZ1ZhbChpLmNvbmZpZy55YXhpc1thXS5sb2dCYXNlLHQsYSl9KSk6dH0pKSxpLmdsb2JhbHMuaW52YWxpZExvZ1NjYWxlP3Q6aS5nbG9iYWxzLnNlcmllc0xvZ319LHtrZXk6XCJnZXRCYXNlTG9nXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5sb2codCl9fSx7a2V5OlwiZ2V0TG9nVmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2lmKDA9PT1lKXJldHVybiAwO3ZhciBhPXRoaXMudyxzPTA9PT1hLmdsb2JhbHMubWluWUFycltpXT8tMTp0aGlzLmdldEJhc2VMb2codCxhLmdsb2JhbHMubWluWUFycltpXSkscj0oMD09PWEuZ2xvYmFscy5tYXhZQXJyW2ldPzA6dGhpcy5nZXRCYXNlTG9nKHQsYS5nbG9iYWxzLm1heFlBcnJbaV0pKS1zO3JldHVybiBlPDE/ZS9yOih0aGlzLmdldEJhc2VMb2codCxlKS1zKS9yfX0se2tleTpcImdldExvZ1lSYXRpb3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9dGhpcy53Lmdsb2JhbHM7cmV0dXJuIGEueUxvZ1JhdGlvPXQuc2xpY2UoKSxhLmxvZ1lSYW5nZT1hLnlSYW5nZS5tYXAoKGZ1bmN0aW9uKHQscyl7aWYoaS5jb25maWcueWF4aXNbc10mJmUudy5jb25maWcueWF4aXNbc10ubG9nYXJpdGhtaWMpe3ZhciByLG89LU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUlOX1ZBTFVFO3JldHVybiBhLnNlcmllc0xvZy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5jb25maWcueWF4aXNbZV0mJmkuY29uZmlnLnlheGlzW2VdLmxvZ2FyaXRobWljJiYobz1NYXRoLm1heCh0LG8pLG49TWF0aC5taW4odCxuKSl9KSl9KSkscj1NYXRoLnBvdyhhLnlSYW5nZVtzXSxNYXRoLmFicyhuLW8pL2EueVJhbmdlW3NdKSxhLnlMb2dSYXRpb1tzXT1yL2EuZ3JpZEhlaWdodCxyfX0pKSxhLmludmFsaWRMb2dTY2FsZT90LnNsaWNlKCk6YS55TG9nUmF0aW99fV0sW3trZXk6XCJjaGVja0NvbWJvU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9ITEsaT0wLGE9MDtyZXR1cm4gdC5sZW5ndGgmJnZvaWQgMCE9PXRbMF0udHlwZSYmdC5mb3JFYWNoKChmdW5jdGlvbih0KXtcImJhclwiIT09dC50eXBlJiZcImNvbHVtblwiIT09dC50eXBlJiZcImNhbmRsZXN0aWNrXCIhPT10LnR5cGUmJlwiYm94UGxvdFwiIT09dC50eXBlfHxpKyssdm9pZCAwIT09dC50eXBlJiZhKyt9KSksYT4wJiYoZT0hMCkse2NvbWJvQmFyQ291bnQ6aSxjb21ib0NoYXJ0czplfX19LHtrZXk6XCJleHRlbmRBcnJheVByb3BzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlLnlheGlzJiYoZT10LmV4dGVuZFlBeGlzKGUsaSkpLGUuYW5ub3RhdGlvbnMmJihlLmFubm90YXRpb25zLnlheGlzJiYoZT10LmV4dGVuZFlBeGlzQW5ub3RhdGlvbnMoZSkpLGUuYW5ub3RhdGlvbnMueGF4aXMmJihlPXQuZXh0ZW5kWEF4aXNBbm5vdGF0aW9ucyhlKSksZS5hbm5vdGF0aW9ucy5wb2ludHMmJihlPXQuZXh0ZW5kUG9pbnRBbm5vdGF0aW9ucyhlKSkpLGV9fV0pLHR9KCksdz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcInNldE9yaWVudGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGk9dGhpcy53O2lmKFwidmVydGljYWxcIj09PXQubGFiZWwub3JpZW50YXRpb24pe3ZhciBhPW51bGwhPT1lP2U6MCxzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIuY29uY2F0KGEsXCInXVwiKSk7aWYobnVsbCE9PXMpe3ZhciByPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cy5zZXRBdHRyaWJ1dGUoXCJ4XCIscGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInhcIikpLXIuaGVpZ2h0KzQpLFwidG9wXCI9PT10LmxhYmVsLnBvc2l0aW9uP3Muc2V0QXR0cmlidXRlKFwieVwiLHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ5XCIpKStyLndpZHRoKTpzLnNldEF0dHJpYnV0ZShcInlcIixwYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieVwiKSktci53aWR0aCk7dmFyIG89dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLnJvdGF0ZUFyb3VuZENlbnRlcihzKSxuPW8ueCxsPW8ueTtzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKC05MCBcIi5jb25jYXQobixcIiBcIikuY29uY2F0KGwsXCIpXCIpKX19fX0se2tleTpcImFkZEJhY2tncm91bmRUb0Fubm9cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZighdHx8dm9pZCAwPT09ZS5sYWJlbC50ZXh0fHx2b2lkIDAhPT1lLmxhYmVsLnRleHQmJiFTdHJpbmcoZS5sYWJlbC50ZXh0KS50cmltKCkpcmV0dXJuIG51bGw7dmFyIGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmxlZnQsbz1lLmxhYmVsLnN0eWxlLnBhZGRpbmcucmlnaHQsbj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcudG9wLGw9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmJvdHRvbTtcInZlcnRpY2FsXCI9PT1lLmxhYmVsLm9yaWVudGF0aW9uJiYobj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcubGVmdCxsPWUubGFiZWwuc3R5bGUucGFkZGluZy5yaWdodCxyPWUubGFiZWwuc3R5bGUucGFkZGluZy50b3Asbz1lLmxhYmVsLnN0eWxlLnBhZGRpbmcuYm90dG9tKTt2YXIgaD1zLmxlZnQtYS5sZWZ0LXIsYz1zLnRvcC1hLnRvcC1uLGQ9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KGgtaS5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLGMscy53aWR0aCtyK28scy5oZWlnaHQrbitsLGUubGFiZWwuYm9yZGVyUmFkaXVzLGUubGFiZWwuc3R5bGUuYmFja2dyb3VuZCwxLGUubGFiZWwuYm9yZGVyV2lkdGgsZS5sYWJlbC5ib3JkZXJDb2xvciwwKTtyZXR1cm4gZS5pZCYmZC5ub2RlLmNsYXNzTGlzdC5hZGQoZS5pZCksZH19LHtrZXk6XCJhbm5vdGF0aW9uc0JhY2tncm91bmRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1mdW5jdGlvbihpLGEscyl7dmFyIHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChzLFwiLWFubm90YXRpb25zIC5hcGV4Y2hhcnRzLVwiKS5jb25jYXQocyxcIi1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIpLmNvbmNhdChhLFwiJ11cIikpO2lmKHIpe3ZhciBvPXIucGFyZW50Tm9kZSxuPXQuYWRkQmFja2dyb3VuZFRvQW5ubyhyLGkpO24mJihvLmluc2VydEJlZm9yZShuLm5vZGUsciksaS5sYWJlbC5tb3VzZUVudGVyJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixpLmxhYmVsLm1vdXNlRW50ZXIuYmluZCh0LGkpKSxpLmxhYmVsLm1vdXNlTGVhdmUmJm4ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGkubGFiZWwubW91c2VMZWF2ZS5iaW5kKHQsaSkpLGkubGFiZWwuY2xpY2smJm4ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixpLmxhYmVsLmNsaWNrLmJpbmQodCxpKSkpfX07ZS5jb25maWcuYW5ub3RhdGlvbnMueGF4aXMubWFwKChmdW5jdGlvbih0LGUpe2kodCxlLFwieGF4aXNcIil9KSksZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKChmdW5jdGlvbih0LGUpe2kodCxlLFwieWF4aXNcIil9KSksZS5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSxcInBvaW50XCIpfSkpfX0se2tleTpcImdldFkxWTJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLGE9XCJ5MVwiPT09dD9lLnk6ZS55MixzPXRoaXMudztpZih0aGlzLmFubm9DdHguaW52ZXJ0QXhpcyl7dmFyIHI9cy5nbG9iYWxzLmxhYmVscy5pbmRleE9mKGEpO3MuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHI9cy5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmluZGV4T2YoYSkpO3ZhciBvPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIHRleHQ6bnRoLWNoaWxkKFwiKyhyKzEpK1wiKVwiKTtvJiYoaT1wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwieVwiKSkpfWVsc2V7dmFyIG47aWYocy5jb25maWcueWF4aXNbZS55QXhpc0luZGV4XS5sb2dhcml0aG1pYyluPShhPW5ldyB5KHRoaXMuYW5ub0N0eC5jdHgpLmdldExvZ1ZhbChhLGUueUF4aXNJbmRleCkpL3MuZ2xvYmFscy55TG9nUmF0aW9bZS55QXhpc0luZGV4XTtlbHNlIG49KGEtcy5nbG9iYWxzLm1pbllBcnJbZS55QXhpc0luZGV4XSkvKHMuZ2xvYmFscy55UmFuZ2VbZS55QXhpc0luZGV4XS9zLmdsb2JhbHMuZ3JpZEhlaWdodCk7aT1zLmdsb2JhbHMuZ3JpZEhlaWdodC1uLCFlLm1hcmtlcnx8dm9pZCAwIT09ZS55JiZudWxsIT09ZS55fHwoaT0wKSxzLmNvbmZpZy55YXhpc1tlLnlBeGlzSW5kZXhdJiZzLmNvbmZpZy55YXhpc1tlLnlBeGlzSW5kZXhdLnJldmVyc2VkJiYoaT1uKX1yZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgYSYmYS5pbmRleE9mKFwicHhcIik+LTEmJihpPXBhcnNlRmxvYXQoYSkpLGl9fSx7a2V5OlwiZ2V0WDFYMlwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy5hbm5vQ3R4LmludmVydEF4aXM/aS5nbG9iYWxzLm1pblk6aS5nbG9iYWxzLm1pblgscz10aGlzLmFubm9DdHguaW52ZXJ0QXhpcz9pLmdsb2JhbHMubWF4WTppLmdsb2JhbHMubWF4WCxyPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzP2kuZ2xvYmFscy55UmFuZ2VbMF06aS5nbG9iYWxzLnhSYW5nZSxvPShlLngtYSkvKHIvaS5nbG9iYWxzLmdyaWRXaWR0aCk7dGhpcy5hbm5vQ3R4LmludmVyc2VkUmV2ZXJzZWRBeGlzJiYobz0ocy1lLngpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpKSxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHx0aGlzLmFubm9DdHguaW52ZXJ0QXhpc3x8aS5nbG9iYWxzLmRhdGFGb3JtYXRYTnVtZXJpY3x8KG89dGhpcy5nZXRTdHJpbmdYKGUueCkpO3ZhciBuPShlLngyLWEpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpO3JldHVybiB0aGlzLmFubm9DdHguaW52ZXJzZWRSZXZlcnNlZEF4aXMmJihuPShzLWUueDIpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpKSxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHx0aGlzLmFubm9DdHguaW52ZXJ0QXhpc3x8aS5nbG9iYWxzLmRhdGFGb3JtYXRYTnVtZXJpY3x8KG49dGhpcy5nZXRTdHJpbmdYKGUueDIpKSx2b2lkIDAhPT1lLngmJm51bGwhPT1lLnh8fCFlLm1hcmtlcnx8KG89aS5nbG9iYWxzLmdyaWRXaWR0aCksXCJ4MVwiPT09dCYmXCJzdHJpbmdcIj09dHlwZW9mIGUueCYmZS54LmluZGV4T2YoXCJweFwiKT4tMSYmKG89cGFyc2VGbG9hdChlLngpKSxcIngyXCI9PT10JiZcInN0cmluZ1wiPT10eXBlb2YgZS54MiYmZS54Mi5pbmRleE9mKFwicHhcIik+LTEmJihuPXBhcnNlRmxvYXQoZS54MikpLFwieDFcIj09PXQ/bzpufX0se2tleTpcImdldFN0cmluZ1hcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10O2UuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmxlbmd0aCYmKHQ9ZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmluZGV4T2YodCkrMSk7dmFyIGE9ZS5nbG9iYWxzLmxhYmVscy5pbmRleE9mKHQpLHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWcgdGV4dDpudGgtY2hpbGQoXCIrKGErMSkrXCIpXCIpO3JldHVybiBzJiYoaT1wYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieFwiKSkpLGl9fV0pLHR9KCksaz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5pbnZlcnRBeGlzPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzLHRoaXMuaGVscGVycz1uZXcgdyh0aGlzLmFubm9DdHgpfXJldHVybiByKHQsW3trZXk6XCJhZGRYYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGEscz10aGlzLncscj10aGlzLmhlbHBlcnMuZ2V0WDFYMihcIngxXCIsdCksbz10LmxhYmVsLnRleHQsbj10LnN0cm9rZURhc2hBcnJheTtpZih4LmlzTnVtYmVyKHIpKXtpZihudWxsPT09dC54Mnx8dm9pZCAwPT09dC54Mil7dmFyIGw9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKHIrdC5vZmZzZXRYLDArdC5vZmZzZXRZLHIrdC5vZmZzZXRYLHMuZ2xvYmFscy5ncmlkSGVpZ2h0K3Qub2Zmc2V0WSx0LmJvcmRlckNvbG9yLG4sdC5ib3JkZXJXaWR0aCk7ZS5hcHBlbmRDaGlsZChsLm5vZGUpLHQuaWQmJmwubm9kZS5jbGFzc0xpc3QuYWRkKHQuaWQpfWVsc2V7aWYoKGE9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MlwiLHQpKTxyKXt2YXIgaD1yO3I9YSxhPWh9dmFyIGM9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KHIrdC5vZmZzZXRYLDArdC5vZmZzZXRZLGEtcixzLmdsb2JhbHMuZ3JpZEhlaWdodCt0Lm9mZnNldFksMCx0LmZpbGxDb2xvcix0Lm9wYWNpdHksMSx0LmJvcmRlckNvbG9yLG4pO2Mubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3RcIiksYy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChzLmdsb2JhbHMuY3VpZCxcIilcIikpLGUuYXBwZW5kQ2hpbGQoYy5ub2RlKSx0LmlkJiZjLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX12YXIgZD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ2V0VGV4dFJlY3RzKG8scGFyc2VGbG9hdCh0LmxhYmVsLnN0eWxlLmZvbnRTaXplKSksZz1cInRvcFwiPT09dC5sYWJlbC5wb3NpdGlvbj80OlwiY2VudGVyXCI9PT10LmxhYmVsLnBvc2l0aW9uP3MuZ2xvYmFscy5ncmlkSGVpZ2h0LzIrKFwidmVydGljYWxcIj09PXQubGFiZWwub3JpZW50YXRpb24/ZC53aWR0aC8yOjApOnMuZ2xvYmFscy5ncmlkSGVpZ2h0LHU9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHt4OnIrdC5sYWJlbC5vZmZzZXRYLHk6Zyt0LmxhYmVsLm9mZnNldFktKFwidmVydGljYWxcIj09PXQubGFiZWwub3JpZW50YXRpb24/XCJ0b3BcIj09PXQubGFiZWwucG9zaXRpb24/ZC53aWR0aC8yLTEyOi1kLndpZHRoLzI6MCksdGV4dDpvLHRleHRBbmNob3I6dC5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOnQubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb24tbGFiZWwgXCIuY29uY2F0KHQubGFiZWwuc3R5bGUuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdCh0LmlkP3QuaWQ6XCJcIil9KTt1LmF0dHIoe3JlbDppfSksZS5hcHBlbmRDaGlsZCh1Lm5vZGUpLHRoaXMuYW5ub0N0eC5oZWxwZXJzLnNldE9yaWVudGF0aW9ucyh0LGkpfX19LHtrZXk6XCJkcmF3WEF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMueGF4aXMubWFwKChmdW5jdGlvbihlLGEpe3QuYWRkWGF4aXNBbm5vdGF0aW9uKGUsaS5ub2RlLGEpfSkpLGl9fV0pLHR9KCksQT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5oZWxwZXJzPW5ldyB3KHRoaXMuYW5ub0N0eCl9cmV0dXJuIHIodCxbe2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYSxzPXRoaXMudyxyPXQuc3Ryb2tlRGFzaEFycmF5LG89dGhpcy5oZWxwZXJzLmdldFkxWTIoXCJ5MVwiLHQpLG49dC5sYWJlbC50ZXh0O2lmKG51bGw9PT10LnkyfHx2b2lkIDA9PT10LnkyKXt2YXIgbD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd0xpbmUoMCt0Lm9mZnNldFgsbyt0Lm9mZnNldFksdGhpcy5fZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGgodCksbyt0Lm9mZnNldFksdC5ib3JkZXJDb2xvcixyLHQuYm9yZGVyV2lkdGgpO2UuYXBwZW5kQ2hpbGQobC5ub2RlKSx0LmlkJiZsLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX1lbHNle2lmKChhPXRoaXMuaGVscGVycy5nZXRZMVkyKFwieTJcIix0KSk+byl7dmFyIGg9bztvPWEsYT1ofXZhciBjPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdCgwK3Qub2Zmc2V0WCxhK3Qub2Zmc2V0WSx0aGlzLl9nZXRZQXhpc0Fubm90YXRpb25XaWR0aCh0KSxvLWEsMCx0LmZpbGxDb2xvcix0Lm9wYWNpdHksMSx0LmJvcmRlckNvbG9yLHIpO2Mubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3RcIiksYy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChzLmdsb2JhbHMuY3VpZCxcIilcIikpLGUuYXBwZW5kQ2hpbGQoYy5ub2RlKSx0LmlkJiZjLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX12YXIgZD1cInJpZ2h0XCI9PT10LmxhYmVsLnBvc2l0aW9uP3MuZ2xvYmFscy5ncmlkV2lkdGg6XCJjZW50ZXJcIj09PXQubGFiZWwucG9zaXRpb24/cy5nbG9iYWxzLmdyaWRXaWR0aC8yOjAsZz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoe3g6ZCt0LmxhYmVsLm9mZnNldFgseToobnVsbCE9YT9hOm8pK3QubGFiZWwub2Zmc2V0WS0zLHRleHQ6bix0ZXh0QW5jaG9yOnQubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTp0LmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSk7Zy5hdHRyKHtyZWw6aX0pLGUuYXBwZW5kQ2hpbGQoZy5ub2RlKX19LHtrZXk6XCJfZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7ZS5nbG9iYWxzLmdyaWRXaWR0aDtyZXR1cm4odC53aWR0aC5pbmRleE9mKFwiJVwiKT4tMT9lLmdsb2JhbHMuZ3JpZFdpZHRoKnBhcnNlSW50KHQud2lkdGgsMTApLzEwMDpwYXJzZUludCh0LndpZHRoLDEwKSkrdC5vZmZzZXRYfX0se2tleTpcImRyYXdZQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbnNcIn0pO3JldHVybiBlLmNvbmZpZy5hbm5vdGF0aW9ucy55YXhpcy5tYXAoKGZ1bmN0aW9uKGUsYSl7dC5hZGRZYXhpc0Fubm90YXRpb24oZSxpLm5vZGUsYSl9KSksaX19XSksdH0oKSxTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZSx0aGlzLmhlbHBlcnM9bmV3IHcodGhpcy5hbm5vQ3R4KX1yZXR1cm4gcih0LFt7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMudzt2YXIgYT10aGlzLmhlbHBlcnMuZ2V0WDFYMihcIngxXCIsdCkscz10aGlzLmhlbHBlcnMuZ2V0WTFZMihcInkxXCIsdCk7aWYoeC5pc051bWJlcihhKSl7dmFyIHI9e3BTaXplOnQubWFya2VyLnNpemUscG9pbnRTdHJva2VXaWR0aDp0Lm1hcmtlci5zdHJva2VXaWR0aCxwb2ludEZpbGxDb2xvcjp0Lm1hcmtlci5maWxsQ29sb3IscG9pbnRTdHJva2VDb2xvcjp0Lm1hcmtlci5zdHJva2VDb2xvcixzaGFwZTp0Lm1hcmtlci5zaGFwZSxwUmFkaXVzOnQubWFya2VyLnJhZGl1cyxjbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1tYXJrZXIgXCIuY29uY2F0KHQubWFya2VyLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSxvPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3TWFya2VyKGErdC5tYXJrZXIub2Zmc2V0WCxzK3QubWFya2VyLm9mZnNldFkscik7ZS5hcHBlbmRDaGlsZChvLm5vZGUpO3ZhciBuPXQubGFiZWwudGV4dD90LmxhYmVsLnRleHQ6XCJcIixsPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDphK3QubGFiZWwub2Zmc2V0WCx5OnMrdC5sYWJlbC5vZmZzZXRZLXQubWFya2VyLnNpemUtcGFyc2VGbG9hdCh0LmxhYmVsLnN0eWxlLmZvbnRTaXplKS8xLjYsdGV4dDpuLHRleHRBbmNob3I6dC5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOnQubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbGFiZWwgXCIuY29uY2F0KHQubGFiZWwuc3R5bGUuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdCh0LmlkP3QuaWQ6XCJcIil9KTtpZihsLmF0dHIoe3JlbDppfSksZS5hcHBlbmRDaGlsZChsLm5vZGUpLHQuY3VzdG9tU1ZHLlNWRyl7dmFyIGg9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnMtY3VzdG9tLXN2ZyBcIit0LmN1c3RvbVNWRy5jc3NDbGFzc30pO2guYXR0cih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChhK3QuY3VzdG9tU1ZHLm9mZnNldFgsXCIsIFwiKS5jb25jYXQocyt0LmN1c3RvbVNWRy5vZmZzZXRZLFwiKVwiKX0pLGgubm9kZS5pbm5lckhUTUw9dC5jdXN0b21TVkcuU1ZHLGUuYXBwZW5kQ2hpbGQoaC5ub2RlKX1pZih0LmltYWdlLnBhdGgpe3ZhciBjPXQuaW1hZ2Uud2lkdGg/dC5pbWFnZS53aWR0aDoyMCxkPXQuaW1hZ2UuaGVpZ2h0P3QuaW1hZ2UuaGVpZ2h0OjIwO289dGhpcy5hbm5vQ3R4LmFkZEltYWdlKHt4OmErdC5pbWFnZS5vZmZzZXRYLWMvMix5OnMrdC5pbWFnZS5vZmZzZXRZLWQvMix3aWR0aDpjLGhlaWdodDpkLHBhdGg6dC5pbWFnZS5wYXRoLGFwcGVuZFRvOlwiLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnNcIn0pfXQubW91c2VFbnRlciYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsdC5tb3VzZUVudGVyLmJpbmQodGhpcyx0KSksdC5tb3VzZUxlYXZlJiZvLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0Lm1vdXNlTGVhdmUuYmluZCh0aGlzLHQpKSx0LmNsaWNrJiZvLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5jbGljay5iaW5kKHRoaXMsdCkpfX19LHtrZXk6XCJkcmF3UG9pbnRBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24oZSxhKXt0LmFkZFBvaW50QW5ub3RhdGlvbihlLGkubm9kZSxhKX0pKSxpfX1dKSx0fSgpO3ZhciBDPXtuYW1lOlwiZW5cIixvcHRpb25zOnttb250aHM6W1wiSmFudWFyeVwiLFwiRmVicnVhcnlcIixcIk1hcmNoXCIsXCJBcHJpbFwiLFwiTWF5XCIsXCJKdW5lXCIsXCJKdWx5XCIsXCJBdWd1c3RcIixcIlNlcHRlbWJlclwiLFwiT2N0b2JlclwiLFwiTm92ZW1iZXJcIixcIkRlY2VtYmVyXCJdLHNob3J0TW9udGhzOltcIkphblwiLFwiRmViXCIsXCJNYXJcIixcIkFwclwiLFwiTWF5XCIsXCJKdW5cIixcIkp1bFwiLFwiQXVnXCIsXCJTZXBcIixcIk9jdFwiLFwiTm92XCIsXCJEZWNcIl0sZGF5czpbXCJTdW5kYXlcIixcIk1vbmRheVwiLFwiVHVlc2RheVwiLFwiV2VkbmVzZGF5XCIsXCJUaHVyc2RheVwiLFwiRnJpZGF5XCIsXCJTYXR1cmRheVwiXSxzaG9ydERheXM6W1wiU3VuXCIsXCJNb25cIixcIlR1ZVwiLFwiV2VkXCIsXCJUaHVcIixcIkZyaVwiLFwiU2F0XCJdLHRvb2xiYXI6e2V4cG9ydFRvU1ZHOlwiRG93bmxvYWQgU1ZHXCIsZXhwb3J0VG9QTkc6XCJEb3dubG9hZCBQTkdcIixleHBvcnRUb0NTVjpcIkRvd25sb2FkIENTVlwiLG1lbnU6XCJNZW51XCIsc2VsZWN0aW9uOlwiU2VsZWN0aW9uXCIsc2VsZWN0aW9uWm9vbTpcIlNlbGVjdGlvbiBab29tXCIsem9vbUluOlwiWm9vbSBJblwiLHpvb21PdXQ6XCJab29tIE91dFwiLHBhbjpcIlBhbm5pbmdcIixyZXNldDpcIlJlc2V0IFpvb21cIn19fSxMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2EodGhpcyx0KSx0aGlzLnlBeGlzPXtzaG93OiEwLHNob3dBbHdheXM6ITEsc2hvd0Zvck51bGxTZXJpZXM6ITAsc2VyaWVzTmFtZTp2b2lkIDAsb3Bwb3NpdGU6ITEscmV2ZXJzZWQ6ITEsbG9nYXJpdGhtaWM6ITEsbG9nQmFzZToxMCx0aWNrQW1vdW50OnZvaWQgMCxmb3JjZU5pY2VTY2FsZTohMSxtYXg6dm9pZCAwLG1pbjp2b2lkIDAsZmxvYXRpbmc6ITEsZGVjaW1hbHNJbkZsb2F0OnZvaWQgMCxsYWJlbHM6e3Nob3c6ITAsbWluV2lkdGg6MCxtYXhXaWR0aDoxNjAsb2Zmc2V0WDowLG9mZnNldFk6MCxhbGlnbjp2b2lkIDAscm90YXRlOjAscGFkZGluZzoyMCxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTFweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9LGZvcm1hdHRlcjp2b2lkIDB9LGF4aXNCb3JkZXI6e3Nob3c6ITEsY29sb3I6XCIjZTBlMGUwXCIsd2lkdGg6MSxvZmZzZXRYOjAsb2Zmc2V0WTowfSxheGlzVGlja3M6e3Nob3c6ITEsY29sb3I6XCIjZTBlMGUwXCIsd2lkdGg6NixvZmZzZXRYOjAsb2Zmc2V0WTowfSx0aXRsZTp7dGV4dDp2b2lkIDAscm90YXRlOi05MCxvZmZzZXRZOjAsb2Zmc2V0WDowLHN0eWxlOntjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LHRvb2x0aXA6e2VuYWJsZWQ6ITEsb2Zmc2V0WDowfSxjcm9zc2hhaXJzOntzaG93OiEwLHBvc2l0aW9uOlwiZnJvbnRcIixzdHJva2U6e2NvbG9yOlwiI2I2YjZiNlwiLHdpZHRoOjEsZGFzaEFycmF5OjB9fX0sdGhpcy5wb2ludEFubm90YXRpb249e2lkOnZvaWQgMCx4OjAseTpudWxsLHlBeGlzSW5kZXg6MCxzZXJpZXNJbmRleDowLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxtYXJrZXI6e3NpemU6NCxmaWxsQ29sb3I6XCIjZmZmXCIsc3Ryb2tlV2lkdGg6MixzdHJva2VDb2xvcjpcIiMzMzNcIixzaGFwZTpcImNpcmNsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAscmFkaXVzOjIsY3NzQ2xhc3M6XCJcIn0sbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOjIsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19LGN1c3RvbVNWRzp7U1ZHOnZvaWQgMCxjc3NDbGFzczp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MH0saW1hZ2U6e3BhdGg6dm9pZCAwLHdpZHRoOjIwLGhlaWdodDoyMCxvZmZzZXRYOjAsb2Zmc2V0WTowfX0sdGhpcy55QXhpc0Fubm90YXRpb249e2lkOnZvaWQgMCx5OjAseTI6bnVsbCxzdHJva2VEYXNoQXJyYXk6MSxmaWxsQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxvcGFjaXR5Oi4zLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6XCIxMDAlXCIseUF4aXNJbmRleDowLGxhYmVsOntib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6XCJlbmRcIixwb3NpdGlvbjpcInJpZ2h0XCIsb2Zmc2V0WDowLG9mZnNldFk6LTMsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19fSx0aGlzLnhBeGlzQW5ub3RhdGlvbj17aWQ6dm9pZCAwLHg6MCx4MjpudWxsLHN0cm9rZURhc2hBcnJheToxLGZpbGxDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLG9wYWNpdHk6LjMsb2Zmc2V0WDowLG9mZnNldFk6MCxsYWJlbDp7Ym9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxib3JkZXJSYWRpdXM6Mix0ZXh0OnZvaWQgMCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsb3JpZW50YXRpb246XCJ2ZXJ0aWNhbFwiLHBvc2l0aW9uOlwidG9wXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsc3R5bGU6e2JhY2tncm91bmQ6XCIjZmZmXCIsY29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNzc0NsYXNzOlwiXCIscGFkZGluZzp7bGVmdDo1LHJpZ2h0OjUsdG9wOjIsYm90dG9tOjJ9fX19LHRoaXMudGV4dD17eDowLHk6MCx0ZXh0OlwiXCIsdGV4dEFuY2hvcjpcInN0YXJ0XCIsZm9yZUNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjEzcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxhcHBlbmRUbzpcIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zXCIsYmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIixib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJSYWRpdXM6MCxib3JkZXJXaWR0aDowLHBhZGRpbmdMZWZ0OjQscGFkZGluZ1JpZ2h0OjQscGFkZGluZ1RvcDoyLHBhZGRpbmdCb3R0b206Mn19cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybnthbm5vdGF0aW9uczp7eWF4aXM6W3RoaXMueUF4aXNBbm5vdGF0aW9uXSx4YXhpczpbdGhpcy54QXhpc0Fubm90YXRpb25dLHBvaW50czpbdGhpcy5wb2ludEFubm90YXRpb25dLHRleHRzOltdLGltYWdlczpbXSxzaGFwZXM6W119LGNoYXJ0OnthbmltYXRpb25zOntlbmFibGVkOiEwLGVhc2luZzpcImVhc2Vpbm91dFwiLHNwZWVkOjgwMCxhbmltYXRlR3JhZHVhbGx5OntkZWxheToxNTAsZW5hYmxlZDohMH0sZHluYW1pY0FuaW1hdGlvbjp7ZW5hYmxlZDohMCxzcGVlZDozNTB9fSxiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixsb2NhbGVzOltDXSxkZWZhdWx0TG9jYWxlOlwiZW5cIixkcm9wU2hhZG93OntlbmFibGVkOiExLGVuYWJsZWRPblNlcmllczp2b2lkIDAsdG9wOjIsbGVmdDoyLGJsdXI6NCxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi4zNX0sZXZlbnRzOnthbmltYXRpb25FbmQ6dm9pZCAwLGJlZm9yZU1vdW50OnZvaWQgMCxtb3VudGVkOnZvaWQgMCx1cGRhdGVkOnZvaWQgMCxjbGljazp2b2lkIDAsbW91c2VNb3ZlOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCx4QXhpc0xhYmVsQ2xpY2s6dm9pZCAwLGxlZ2VuZENsaWNrOnZvaWQgMCxtYXJrZXJDbGljazp2b2lkIDAsc2VsZWN0aW9uOnZvaWQgMCxkYXRhUG9pbnRTZWxlY3Rpb246dm9pZCAwLGRhdGFQb2ludE1vdXNlRW50ZXI6dm9pZCAwLGRhdGFQb2ludE1vdXNlTGVhdmU6dm9pZCAwLGJlZm9yZVpvb206dm9pZCAwLGJlZm9yZVJlc2V0Wm9vbTp2b2lkIDAsem9vbWVkOnZvaWQgMCxzY3JvbGxlZDp2b2lkIDAsYnJ1c2hTY3JvbGxlZDp2b2lkIDB9LGZvcmVDb2xvcjpcIiMzNzNkM2ZcIixmb250RmFtaWx5OlwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLGhlaWdodDpcImF1dG9cIixwYXJlbnRIZWlnaHRPZmZzZXQ6MTUscmVkcmF3T25QYXJlbnRSZXNpemU6ITAscmVkcmF3T25XaW5kb3dSZXNpemU6ITAsaWQ6dm9pZCAwLGdyb3VwOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHNlbGVjdGlvbjp7ZW5hYmxlZDohMSx0eXBlOlwieFwiLGZpbGw6e2NvbG9yOlwiIzI0MjkyZVwiLG9wYWNpdHk6LjF9LHN0cm9rZTp7d2lkdGg6MSxjb2xvcjpcIiMyNDI5MmVcIixvcGFjaXR5Oi40LGRhc2hBcnJheTozfSx4YXhpczp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfSx5YXhpczp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfX0sc3BhcmtsaW5lOntlbmFibGVkOiExfSxicnVzaDp7ZW5hYmxlZDohMSxhdXRvU2NhbGVZYXhpczohMCx0YXJnZXQ6dm9pZCAwLHRhcmdldHM6dm9pZCAwfSxzdGFja2VkOiExLHN0YWNrVHlwZTpcIm5vcm1hbFwiLHRvb2xiYXI6e3Nob3c6ITAsb2Zmc2V0WDowLG9mZnNldFk6MCx0b29sczp7ZG93bmxvYWQ6ITAsc2VsZWN0aW9uOiEwLHpvb206ITAsem9vbWluOiEwLHpvb21vdXQ6ITAscGFuOiEwLHJlc2V0OiEwLGN1c3RvbUljb25zOltdfSxleHBvcnQ6e2Nzdjp7ZmlsZW5hbWU6dm9pZCAwLGNvbHVtbkRlbGltaXRlcjpcIixcIixoZWFkZXJDYXRlZ29yeTpcImNhdGVnb3J5XCIsaGVhZGVyVmFsdWU6XCJ2YWx1ZVwiLGRhdGVGb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKHQpLnRvRGF0ZVN0cmluZygpfX0scG5nOntmaWxlbmFtZTp2b2lkIDB9LHN2Zzp7ZmlsZW5hbWU6dm9pZCAwfX0sYXV0b1NlbGVjdGVkOlwiem9vbVwifSx0eXBlOlwibGluZVwiLHdpZHRoOlwiMTAwJVwiLHpvb206e2VuYWJsZWQ6ITAsdHlwZTpcInhcIixhdXRvU2NhbGVZYXhpczohMSx6b29tZWRBcmVhOntmaWxsOntjb2xvcjpcIiM5MENBRjlcIixvcGFjaXR5Oi40fSxzdHJva2U6e2NvbG9yOlwiIzBENDdBMVwiLG9wYWNpdHk6LjQsd2lkdGg6MX19fX0scGxvdE9wdGlvbnM6e2FyZWE6e2ZpbGxUbzpcIm9yaWdpblwifSxiYXI6e2hvcml6b250YWw6ITEsY29sdW1uV2lkdGg6XCI3MCVcIixiYXJIZWlnaHQ6XCI3MCVcIixkaXN0cmlidXRlZDohMSxib3JkZXJSYWRpdXM6MCxib3JkZXJSYWRpdXNBcHBsaWNhdGlvbjpcImFyb3VuZFwiLGJvcmRlclJhZGl1c1doZW5TdGFja2VkOlwibGFzdFwiLHJhbmdlQmFyT3ZlcmxhcDohMCxyYW5nZUJhckdyb3VwUm93czohMSxoaWRlWmVyb0JhcnNXaGVuR3JvdXBlZDohMSxpc0R1bWJiZWxsOiExLGR1bWJiZWxsQ29sb3JzOnZvaWQgMCxpc0Z1bm5lbDohMSxpc0Z1bm5lbDNkOiEwLGNvbG9yczp7cmFuZ2VzOltdLGJhY2tncm91bmRCYXJDb2xvcnM6W10sYmFja2dyb3VuZEJhck9wYWNpdHk6MSxiYWNrZ3JvdW5kQmFyUmFkaXVzOjB9LGRhdGFMYWJlbHM6e3Bvc2l0aW9uOlwidG9wXCIsbWF4SXRlbXM6MTAwLGhpZGVPdmVyZmxvd2luZ0xhYmVsczohMCxvcmllbnRhdGlvbjpcImhvcml6b250YWxcIix0b3RhbDp7ZW5hYmxlZDohMSxmb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOlwiIzM3M2QzZlwiLGZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwfX19fSxidWJibGU6e3pTY2FsaW5nOiEwLG1pbkJ1YmJsZVJhZGl1czp2b2lkIDAsbWF4QnViYmxlUmFkaXVzOnZvaWQgMH0sY2FuZGxlc3RpY2s6e2NvbG9yczp7dXB3YXJkOlwiIzAwQjc0NlwiLGRvd253YXJkOlwiI0VGNDAzQ1wifSx3aWNrOnt1c2VGaWxsQ29sb3I6ITB9fSxib3hQbG90Ontjb2xvcnM6e3VwcGVyOlwiIzAwRTM5NlwiLGxvd2VyOlwiIzAwOEZGQlwifX0saGVhdG1hcDp7cmFkaXVzOjIsZW5hYmxlU2hhZGVzOiEwLHNoYWRlSW50ZW5zaXR5Oi41LHJldmVyc2VOZWdhdGl2ZVNoYWRlOiExLGRpc3RyaWJ1dGVkOiExLHVzZUZpbGxDb2xvckFzU3Ryb2tlOiExLGNvbG9yU2NhbGU6e2ludmVyc2U6ITEscmFuZ2VzOltdLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHRyZWVtYXA6e2VuYWJsZVNoYWRlczohMCxzaGFkZUludGVuc2l0eTouNSxkaXN0cmlidXRlZDohMSxyZXZlcnNlTmVnYXRpdmVTaGFkZTohMSx1c2VGaWxsQ29sb3JBc1N0cm9rZTohMSxkYXRhTGFiZWxzOntmb3JtYXQ6XCJzY2FsZVwifSxjb2xvclNjYWxlOntpbnZlcnNlOiExLHJhbmdlczpbXSxtaW46dm9pZCAwLG1heDp2b2lkIDB9fSxyYWRpYWxCYXI6e2ludmVyc2VPcmRlcjohMSxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLG9mZnNldFg6MCxvZmZzZXRZOjAsaG9sbG93OnttYXJnaW46NSxzaXplOlwiNTAlXCIsYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsaW1hZ2U6dm9pZCAwLGltYWdlV2lkdGg6MTUwLGltYWdlSGVpZ2h0OjE1MCxpbWFnZU9mZnNldFg6MCxpbWFnZU9mZnNldFk6MCxpbWFnZUNsaXBwZWQ6ITAscG9zaXRpb246XCJmcm9udFwiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjAsbGVmdDowLGJsdXI6Myxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi41fX0sdHJhY2s6e3Nob3c6ITAsc3RhcnRBbmdsZTp2b2lkIDAsZW5kQW5nbGU6dm9pZCAwLGJhY2tncm91bmQ6XCIjZjJmMmYyXCIsc3Ryb2tlV2lkdGg6XCI5NyVcIixvcGFjaXR5OjEsbWFyZ2luOjUsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MCxsZWZ0OjAsYmx1cjozLGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjV9fSxkYXRhTGFiZWxzOntzaG93OiEwLG5hbWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSx2YWx1ZTp7c2hvdzohMCxmb250U2l6ZTpcIjE0cHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WToxNixmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQrXCIlXCJ9fSx0b3RhbDp7c2hvdzohMSxsYWJlbDpcIlRvdGFsXCIsZm9udFNpemU6XCIxNnB4XCIsZm9udFdlaWdodDo2MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApL3QuZ2xvYmFscy5zZXJpZXMubGVuZ3RoK1wiJVwifX19fSxwaWU6e2N1c3RvbVNjYWxlOjEsb2Zmc2V0WDowLG9mZnNldFk6MCxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLGV4cGFuZE9uQ2xpY2s6ITAsZGF0YUxhYmVsczp7b2Zmc2V0OjAsbWluQW5nbGVUb1Nob3dMYWJlbDoxMH0sZG9udXQ6e3NpemU6XCI2NSVcIixiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixsYWJlbHM6e3Nob3c6ITEsbmFtZTp7c2hvdzohMCxmb250U2l6ZTpcIjE2cHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WTotMTAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sdmFsdWU6e3Nob3c6ITAsZm9udFNpemU6XCIyMHB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MTAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sdG90YWw6e3Nob3c6ITEsc2hvd0Fsd2F5czohMSxsYWJlbDpcIlRvdGFsXCIsZm9udFNpemU6XCIxNnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApfX19fX0scG9sYXJBcmVhOntyaW5nczp7c3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcjpcIiNlOGU4ZThcIn0sc3Bva2VzOntzdHJva2VXaWR0aDoxLGNvbm5lY3RvckNvbG9yczpcIiNlOGU4ZThcIn19LHJhZGFyOntzaXplOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHBvbHlnb25zOntzdHJva2VXaWR0aDoxLHN0cm9rZUNvbG9yczpcIiNlOGU4ZThcIixjb25uZWN0b3JDb2xvcnM6XCIjZThlOGU4XCIsZmlsbDp7Y29sb3JzOnZvaWQgMH19fX0sY29sb3JzOnZvaWQgMCxkYXRhTGFiZWxzOntlbmFibGVkOiEwLGVuYWJsZWRPblNlcmllczp2b2lkIDAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dD90OlwiXCJ9LHRleHRBbmNob3I6XCJtaWRkbGVcIixkaXN0cmlidXRlZDohMSxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcnM6dm9pZCAwfSxiYWNrZ3JvdW5kOntlbmFibGVkOiEwLGZvcmVDb2xvcjpcIiNmZmZcIixib3JkZXJSYWRpdXM6MixwYWRkaW5nOjQsb3BhY2l0eTouOSxib3JkZXJXaWR0aDoxLGJvcmRlckNvbG9yOlwiI2ZmZlwiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjEsbGVmdDoxLGJsdXI6MSxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi40NX19LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjEsbGVmdDoxLGJsdXI6MSxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi40NX19LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yczp2b2lkIDAsb3BhY2l0eTouODUsZ3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHR5cGU6XCJob3Jpem9udGFsXCIsc2hhZGVJbnRlbnNpdHk6LjUsZ3JhZGllbnRUb0NvbG9yczp2b2lkIDAsaW52ZXJzZUNvbG9yczohMCxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOlswLDUwLDEwMF0sY29sb3JTdG9wczpbXX0saW1hZ2U6e3NyYzpbXSx3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMH0scGF0dGVybjp7c3R5bGU6XCJzcXVhcmVzXCIsd2lkdGg6NixoZWlnaHQ6NixzdHJva2VXaWR0aDoyfX0sZm9yZWNhc3REYXRhUG9pbnRzOntjb3VudDowLGZpbGxPcGFjaXR5Oi41LHN0cm9rZVdpZHRoOnZvaWQgMCxkYXNoQXJyYXk6NH0sZ3JpZDp7c2hvdzohMCxib3JkZXJDb2xvcjpcIiNlMGUwZTBcIixzdHJva2VEYXNoQXJyYXk6MCxwb3NpdGlvbjpcImJhY2tcIix4YXhpczp7bGluZXM6e3Nob3c6ITF9fSx5YXhpczp7bGluZXM6e3Nob3c6ITB9fSxyb3c6e2NvbG9yczp2b2lkIDAsb3BhY2l0eTouNX0sY29sdW1uOntjb2xvcnM6dm9pZCAwLG9wYWNpdHk6LjV9LHBhZGRpbmc6e3RvcDowLHJpZ2h0OjEwLGJvdHRvbTowLGxlZnQ6MTJ9fSxsYWJlbHM6W10sbGVnZW5kOntzaG93OiEwLHNob3dGb3JTaW5nbGVTZXJpZXM6ITEsc2hvd0Zvck51bGxTZXJpZXM6ITAsc2hvd0Zvclplcm9TZXJpZXM6ITAsZmxvYXRpbmc6ITEscG9zaXRpb246XCJib3R0b21cIixob3Jpem9udGFsQWxpZ246XCJjZW50ZXJcIixpbnZlcnNlT3JkZXI6ITEsZm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDAsZm9ybWF0dGVyOnZvaWQgMCx0b29sdGlwSG92ZXJGb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6LTIwLG9mZnNldFk6NCxjdXN0b21MZWdlbmRJdGVtczpbXSxsYWJlbHM6e2NvbG9yczp2b2lkIDAsdXNlU2VyaWVzQ29sb3JzOiExfSxtYXJrZXJzOnt3aWR0aDoxMixoZWlnaHQ6MTIsc3Ryb2tlV2lkdGg6MCxmaWxsQ29sb3JzOnZvaWQgMCxzdHJva2VDb2xvcjpcIiNmZmZcIixyYWRpdXM6MTIsY3VzdG9tSFRNTDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxvbkNsaWNrOnZvaWQgMH0saXRlbU1hcmdpbjp7aG9yaXpvbnRhbDo1LHZlcnRpY2FsOjJ9LG9uSXRlbUNsaWNrOnt0b2dnbGVEYXRhU2VyaWVzOiEwfSxvbkl0ZW1Ib3Zlcjp7aGlnaGxpZ2h0RGF0YVNlcmllczohMH19LG1hcmtlcnM6e2Rpc2NyZXRlOltdLHNpemU6MCxjb2xvcnM6dm9pZCAwLHN0cm9rZUNvbG9yczpcIiNmZmZcIixzdHJva2VXaWR0aDoyLHN0cm9rZU9wYWNpdHk6Ljksc3Ryb2tlRGFzaEFycmF5OjAsZmlsbE9wYWNpdHk6MSxzaGFwZTpcImNpcmNsZVwiLHdpZHRoOjgsaGVpZ2h0OjgscmFkaXVzOjIsb2Zmc2V0WDowLG9mZnNldFk6MCxvbkNsaWNrOnZvaWQgMCxvbkRibENsaWNrOnZvaWQgMCxzaG93TnVsbERhdGFQb2ludHM6ITAsaG92ZXI6e3NpemU6dm9pZCAwLHNpemVPZmZzZXQ6M319LG5vRGF0YTp7dGV4dDp2b2lkIDAsYWxpZ246XCJjZW50ZXJcIix2ZXJ0aWNhbEFsaWduOlwibWlkZGxlXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTRweFwiLGZvbnRGYW1pbHk6dm9pZCAwfX0scmVzcG9uc2l2ZTpbXSxzZXJpZXM6dm9pZCAwLHN0YXRlczp7bm9ybWFsOntmaWx0ZXI6e3R5cGU6XCJub25lXCIsdmFsdWU6MH19LGhvdmVyOntmaWx0ZXI6e3R5cGU6XCJsaWdodGVuXCIsdmFsdWU6LjF9fSxhY3RpdmU6e2FsbG93TXVsdGlwbGVEYXRhUG9pbnRzU2VsZWN0aW9uOiExLGZpbHRlcjp7dHlwZTpcImRhcmtlblwiLHZhbHVlOi41fX19LHRpdGxlOnt0ZXh0OnZvaWQgMCxhbGlnbjpcImxlZnRcIixtYXJnaW46NSxvZmZzZXRYOjAsb2Zmc2V0WTowLGZsb2F0aW5nOiExLHN0eWxlOntmb250U2l6ZTpcIjE0cHhcIixmb250V2VpZ2h0OjkwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdWJ0aXRsZTp7dGV4dDp2b2lkIDAsYWxpZ246XCJsZWZ0XCIsbWFyZ2luOjUsb2Zmc2V0WDowLG9mZnNldFk6MzAsZmxvYXRpbmc6ITEsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMH19LHN0cm9rZTp7c2hvdzohMCxjdXJ2ZTpcInNtb290aFwiLGxpbmVDYXA6XCJidXR0XCIsd2lkdGg6Mixjb2xvcnM6dm9pZCAwLGRhc2hBcnJheTowLGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yczp2b2lkIDAsb3BhY2l0eTouODUsZ3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHR5cGU6XCJob3Jpem9udGFsXCIsc2hhZGVJbnRlbnNpdHk6LjUsZ3JhZGllbnRUb0NvbG9yczp2b2lkIDAsaW52ZXJzZUNvbG9yczohMCxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOlswLDUwLDEwMF0sY29sb3JTdG9wczpbXX19fSx0b29sdGlwOntlbmFibGVkOiEwLGVuYWJsZWRPblNlcmllczp2b2lkIDAsc2hhcmVkOiEwLGZvbGxvd0N1cnNvcjohMSxpbnRlcnNlY3Q6ITEsaW52ZXJzZU9yZGVyOiExLGN1c3RvbTp2b2lkIDAsZmlsbFNlcmllc0NvbG9yOiExLHRoZW1lOlwibGlnaHRcIixjc3NDbGFzczpcIlwiLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMH0sb25EYXRhc2V0SG92ZXI6e2hpZ2hsaWdodERhdGFTZXJpZXM6ITF9LHg6e3Nob3c6ITAsZm9ybWF0OlwiZGQgTU1NXCIsZm9ybWF0dGVyOnZvaWQgMH0seTp7Zm9ybWF0dGVyOnZvaWQgMCx0aXRsZTp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0P3QrXCI6IFwiOlwiXCJ9fX0sejp7Zm9ybWF0dGVyOnZvaWQgMCx0aXRsZTpcIlNpemU6IFwifSxtYXJrZXI6e3Nob3c6ITAsZmlsbENvbG9yczp2b2lkIDB9LGl0ZW1zOntkaXNwbGF5OlwiZmxleFwifSxmaXhlZDp7ZW5hYmxlZDohMSxwb3NpdGlvbjpcInRvcFJpZ2h0XCIsb2Zmc2V0WDowLG9mZnNldFk6MH19LHhheGlzOnt0eXBlOlwiY2F0ZWdvcnlcIixjYXRlZ29yaWVzOltdLGNvbnZlcnRlZENhdFRvTnVtZXJpYzohMSxvZmZzZXRYOjAsb2Zmc2V0WTowLG92ZXJ3cml0ZUNhdGVnb3JpZXM6dm9pZCAwLGxhYmVsczp7c2hvdzohMCxyb3RhdGU6LTQ1LHJvdGF0ZUFsd2F5czohMSxoaWRlT3ZlcmxhcHBpbmdMYWJlbHM6ITAsdHJpbTohMSxtaW5IZWlnaHQ6dm9pZCAwLG1heEhlaWdodDoxMjAsc2hvd0R1cGxpY2F0ZXM6ITAsc3R5bGU6e2NvbG9yczpbXSxmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifSxvZmZzZXRYOjAsb2Zmc2V0WTowLGZvcm1hdDp2b2lkIDAsZm9ybWF0dGVyOnZvaWQgMCxkYXRldGltZVVUQzohMCxkYXRldGltZUZvcm1hdHRlcjp7eWVhcjpcInl5eXlcIixtb250aDpcIk1NTSAneXlcIixkYXk6XCJkZCBNTU1cIixob3VyOlwiSEg6bW1cIixtaW51dGU6XCJISDptbTpzc1wiLHNlY29uZDpcIkhIOm1tOnNzXCJ9fSxncm91cDp7Z3JvdXBzOltdLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LGF4aXNCb3JkZXI6e3Nob3c6ITAsY29sb3I6XCIjZTBlMGUwXCIsd2lkdGg6XCIxMDAlXCIsaGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MH0sYXhpc1RpY2tzOntzaG93OiEwLGNvbG9yOlwiI2UwZTBlMFwiLGhlaWdodDo2LG9mZnNldFg6MCxvZmZzZXRZOjB9LHRpY2tBbW91bnQ6dm9pZCAwLHRpY2tQbGFjZW1lbnQ6XCJvblwiLG1pbjp2b2lkIDAsbWF4OnZvaWQgMCxyYW5nZTp2b2lkIDAsZmxvYXRpbmc6ITEsZGVjaW1hbHNJbkZsb2F0OnZvaWQgMCxwb3NpdGlvbjpcImJvdHRvbVwiLHRpdGxlOnt0ZXh0OnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LGNyb3NzaGFpcnM6e3Nob3c6ITAsd2lkdGg6MSxwb3NpdGlvbjpcImJhY2tcIixvcGFjaXR5Oi45LHN0cm9rZTp7Y29sb3I6XCIjYjZiNmI2XCIsd2lkdGg6MSxkYXNoQXJyYXk6M30sZmlsbDp7dHlwZTpcInNvbGlkXCIsY29sb3I6XCIjQjFCOUM0XCIsZ3JhZGllbnQ6e2NvbG9yRnJvbTpcIiNEOEUzRjBcIixjb2xvclRvOlwiI0JFRDFFNlwiLHN0b3BzOlswLDEwMF0sb3BhY2l0eUZyb206LjQsb3BhY2l0eVRvOi41fX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSxsZWZ0OjAsdG9wOjAsYmx1cjoxLG9wYWNpdHk6LjR9fSx0b29sdGlwOntlbmFibGVkOiEwLG9mZnNldFk6MCxmb3JtYXR0ZXI6dm9pZCAwLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMH19fSx5YXhpczp0aGlzLnlBeGlzLHRoZW1lOnttb2RlOlwibGlnaHRcIixwYWxldHRlOlwicGFsZXR0ZTFcIixtb25vY2hyb21lOntlbmFibGVkOiExLGNvbG9yOlwiIzAwOEZGQlwiLHNoYWRlVG86XCJsaWdodFwiLHNoYWRlSW50ZW5zaXR5Oi42NX19fX19XSksdH0oKSxQPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuZ3JhcGhpY3M9bmV3IG0odGhpcy5jdHgpLHRoaXMudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHRoaXMuaW52ZXJ0QXhpcz0hMCksdGhpcy5oZWxwZXJzPW5ldyB3KHRoaXMpLHRoaXMueEF4aXNBbm5vdGF0aW9ucz1uZXcgayh0aGlzKSx0aGlzLnlBeGlzQW5ub3RhdGlvbnM9bmV3IEEodGhpcyksdGhpcy5wb2ludHNBbm5vdGF0aW9ucz1uZXcgUyh0aGlzKSx0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnRoaXMudy5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQmJih0aGlzLmludmVyc2VkUmV2ZXJzZWRBeGlzPSEwKSx0aGlzLnhEaXZpc2lvbj10aGlzLncuZ2xvYmFscy5ncmlkV2lkdGgvdGhpcy53Lmdsb2JhbHMuZGF0YVBvaW50c31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd0F4ZXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5heGlzQ2hhcnRzKXtmb3IodmFyIGU9dGhpcy55QXhpc0Fubm90YXRpb25zLmRyYXdZQXhpc0Fubm90YXRpb25zKCksaT10aGlzLnhBeGlzQW5ub3RhdGlvbnMuZHJhd1hBeGlzQW5ub3RhdGlvbnMoKSxhPXRoaXMucG9pbnRzQW5ub3RhdGlvbnMuZHJhd1BvaW50QW5ub3RhdGlvbnMoKSxzPXQuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCxyPVtlLGksYV0sbz1baS5ub2RlLGUubm9kZSxhLm5vZGVdLG49MDtuPDM7bisrKXQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHJbbl0pLCFzfHx0Lmdsb2JhbHMucmVzaXplZHx8dC5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxcInNjYXR0ZXJcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJlwiYnViYmxlXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiZ0Lmdsb2JhbHMuZGF0YVBvaW50cz4xJiZvW25dLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpLHQuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6b1tuXSxpbmRleDowfSk7dGhpcy5oZWxwZXJzLmFubm90YXRpb25zQmFja2dyb3VuZCgpfX19LHtrZXk6XCJkcmF3SW1hZ2VBbm5vc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLncuY29uZmlnLmFubm90YXRpb25zLmltYWdlcy5tYXAoKGZ1bmN0aW9uKGUsaSl7dC5hZGRJbWFnZShlLGkpfSkpfX0se2tleTpcImRyYXdUZXh0QW5ub3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy53LmNvbmZpZy5hbm5vdGF0aW9ucy50ZXh0cy5tYXAoKGZ1bmN0aW9uKGUsaSl7dC5hZGRUZXh0KGUsaSl9KSl9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMueEF4aXNBbm5vdGF0aW9ucy5hZGRYYXhpc0Fubm90YXRpb24odCxlLGkpfX0se2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnlBeGlzQW5ub3RhdGlvbnMuYWRkWWF4aXNBbm5vdGF0aW9uKHQsZSxpKX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5wb2ludHNBbm5vdGF0aW9ucy5hZGRQb2ludEFubm90YXRpb24odCxlLGkpfX0se2tleTpcImFkZFRleHRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQueCxhPXQueSxzPXQudGV4dCxyPXQudGV4dEFuY2hvcixvPXQuZm9yZUNvbG9yLG49dC5mb250U2l6ZSxsPXQuZm9udEZhbWlseSxoPXQuZm9udFdlaWdodCxjPXQuY3NzQ2xhc3MsZD10LmJhY2tncm91bmRDb2xvcixnPXQuYm9yZGVyV2lkdGgsdT10LnN0cm9rZURhc2hBcnJheSxwPXQuYm9yZGVyUmFkaXVzLGY9dC5ib3JkZXJDb2xvcix4PXQuYXBwZW5kVG8sYj12b2lkIDA9PT14P1wiLmFwZXhjaGFydHMtYW5ub3RhdGlvbnNcIjp4LHY9dC5wYWRkaW5nTGVmdCxtPXZvaWQgMD09PXY/NDp2LHk9dC5wYWRkaW5nUmlnaHQsdz12b2lkIDA9PT15PzQ6eSxrPXQucGFkZGluZ0JvdHRvbSxBPXZvaWQgMD09PWs/MjprLFM9dC5wYWRkaW5nVG9wLEM9dm9pZCAwPT09Uz8yOlMsTD10aGlzLncsUD10aGlzLmdyYXBoaWNzLmRyYXdUZXh0KHt4OmkseTphLHRleHQ6cyx0ZXh0QW5jaG9yOnJ8fFwic3RhcnRcIixmb250U2l6ZTpufHxcIjEycHhcIixmb250V2VpZ2h0Omh8fFwicmVndWxhclwiLGZvbnRGYW1pbHk6bHx8TC5jb25maWcuY2hhcnQuZm9udEZhbWlseSxmb3JlQ29sb3I6b3x8TC5jb25maWcuY2hhcnQuZm9yZUNvbG9yLGNzc0NsYXNzOmN9KSxJPUwuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoYik7SSYmSS5hcHBlbmRDaGlsZChQLm5vZGUpO3ZhciBNPVAuYmJveCgpO2lmKHMpe3ZhciBUPXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoTS54LW0sTS55LUMsTS53aWR0aCttK3csTS5oZWlnaHQrQStDLHAsZHx8XCJ0cmFuc3BhcmVudFwiLDEsZyxmLHUpO0kuaW5zZXJ0QmVmb3JlKFQubm9kZSxQLm5vZGUpfX19LHtrZXk6XCJhZGRJbWFnZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dC5wYXRoLHM9dC54LHI9dm9pZCAwPT09cz8wOnMsbz10Lnksbj12b2lkIDA9PT1vPzA6byxsPXQud2lkdGgsaD12b2lkIDA9PT1sPzIwOmwsYz10LmhlaWdodCxkPXZvaWQgMD09PWM/MjA6YyxnPXQuYXBwZW5kVG8sdT12b2lkIDA9PT1nP1wiLmFwZXhjaGFydHMtYW5ub3RhdGlvbnNcIjpnLHA9aS5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShhKTtwLnNpemUoaCxkKS5tb3ZlKHIsbik7dmFyIGY9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3Rvcih1KTtyZXR1cm4gZiYmZi5hcHBlbmRDaGlsZChwLm5vZGUpLHB9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6dCxwdXNoVG9NZW1vcnk6ZSxjb250ZXh0OmksdHlwZTpcInhheGlzXCIsY29udGV4dE1ldGhvZDppLmFkZFhheGlzQW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkWWF4aXNBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6dCxwdXNoVG9NZW1vcnk6ZSxjb250ZXh0OmksdHlwZTpcInlheGlzXCIsY29udGV4dE1ldGhvZDppLmFkZFlheGlzQW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHZvaWQgMD09PXRoaXMuaW52ZXJ0QXhpcyYmKHRoaXMuaW52ZXJ0QXhpcz1pLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpLHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6dCxwdXNoVG9NZW1vcnk6ZSxjb250ZXh0OmksdHlwZTpcInBvaW50XCIsY29udGV4dE1ldGhvZDppLmFkZFBvaW50QW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkQW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5wYXJhbXMsaT10LnB1c2hUb01lbW9yeSxhPXQuY29udGV4dCxzPXQudHlwZSxyPXQuY29udGV4dE1ldGhvZCxvPWEsbj1vLncsbD1uLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHMsXCItYW5ub3RhdGlvbnNcIikpLGg9bC5jaGlsZE5vZGVzLmxlbmd0aCsxLGM9bmV3IEwsZD1PYmplY3QuYXNzaWduKHt9LFwieGF4aXNcIj09PXM/Yy54QXhpc0Fubm90YXRpb246XCJ5YXhpc1wiPT09cz9jLnlBeGlzQW5ub3RhdGlvbjpjLnBvaW50QW5ub3RhdGlvbiksZz14LmV4dGVuZChkLGUpO3N3aXRjaChzKXtjYXNlXCJ4YXhpc1wiOnRoaXMuYWRkWGF4aXNBbm5vdGF0aW9uKGcsbCxoKTticmVhaztjYXNlXCJ5YXhpc1wiOnRoaXMuYWRkWWF4aXNBbm5vdGF0aW9uKGcsbCxoKTticmVhaztjYXNlXCJwb2ludFwiOnRoaXMuYWRkUG9pbnRBbm5vdGF0aW9uKGcsbCxoKX12YXIgdT1uLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHMsXCItYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMtXCIpLmNvbmNhdChzLFwiLWFubm90YXRpb24tbGFiZWxbcmVsPSdcIikuY29uY2F0KGgsXCInXVwiKSkscD10aGlzLmhlbHBlcnMuYWRkQmFja2dyb3VuZFRvQW5ubyh1LGcpO3JldHVybiBwJiZsLmluc2VydEJlZm9yZShwLm5vZGUsdSksaSYmbi5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnB1c2goe2NvbnRleHQ6byxpZDpnLmlkP2cuaWQ6eC5yYW5kb21JZCgpLG1ldGhvZDpyLGxhYmVsOlwiYWRkQW5ub3RhdGlvblwiLHBhcmFtczplfSksYX19LHtrZXk6XCJjbGVhckFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC53LGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb25zLCAuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9ucywgLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnNcIik7ZS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLm1hcCgoZnVuY3Rpb24odCxpKXtcImFkZFRleHRcIiE9PXQubGFiZWwmJlwiYWRkQW5ub3RhdGlvblwiIT09dC5sYWJlbHx8ZS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnNwbGljZShpLDEpfSkpLGk9eC5saXN0VG9BcnJheShpKSxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGksKGZ1bmN0aW9uKHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9KSl9fSx7a2V5OlwicmVtb3ZlQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dC53LGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5cIi5jb25jYXQoZSkpO2EmJihpLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMubWFwKChmdW5jdGlvbih0LGEpe3QuaWQ9PT1lJiZpLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMuc3BsaWNlKGEsMSl9KSksQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLChmdW5jdGlvbih0KXt0LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodCl9KSkpfX1dKSx0fSgpLEk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5tb250aHMzMT1bMSwzLDUsNyw4LDEwLDEyXSx0aGlzLm1vbnRoczMwPVsyLDQsNiw5LDExXSx0aGlzLmRheXNDbnRPZlllYXI9WzAsMzEsNTksOTAsMTIwLDE1MSwxODEsMjEyLDI0MywyNzMsMzA0LDMzNF19cmV0dXJuIHIodCxbe2tleTpcImlzVmFsaWREYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIWlzTmFOKHRoaXMucGFyc2VEYXRlKHQpKX19LHtrZXk6XCJnZXRUaW1lU3RhbXBcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gRGF0ZS5wYXJzZSh0KT90aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9uZXcgRGF0ZShuZXcgRGF0ZSh0KS50b0lTT1N0cmluZygpLnN1YnN0cigwLDI1KSkuZ2V0VGltZSgpOm5ldyBEYXRlKHQpLmdldFRpbWUoKTp0fX0se2tleTpcImdldERhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/bmV3IERhdGUobmV3IERhdGUodCkudG9VVENTdHJpbmcoKSk6bmV3IERhdGUodCl9fSx7a2V5OlwicGFyc2VEYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9RGF0ZS5wYXJzZSh0KTtpZighaXNOYU4oZSkpcmV0dXJuIHRoaXMuZ2V0VGltZVN0YW1wKHQpO3ZhciBpPURhdGUucGFyc2UodC5yZXBsYWNlKC8tL2csXCIvXCIpLnJlcGxhY2UoL1thLXpdKy9naSxcIiBcIikpO3JldHVybiBpPXRoaXMuZ2V0VGltZVN0YW1wKGkpfX0se2tleTpcInBhcnNlRGF0ZVdpdGhUaW1lem9uZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBEYXRlLnBhcnNlKHQucmVwbGFjZSgvLS9nLFwiL1wiKS5yZXBsYWNlKC9bYS16XSsvZ2ksXCIgXCIpKX19LHtrZXk6XCJmb3JtYXREYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscy5sb2NhbGUsYT10aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQyxzPVtcIlxcMFwiXS5jb25jYXQodShpLm1vbnRocykpLHI9W1wiXFx4MDFcIl0uY29uY2F0KHUoaS5zaG9ydE1vbnRocykpLG89W1wiXFx4MDJcIl0uY29uY2F0KHUoaS5kYXlzKSksbj1bXCJcXHgwM1wiXS5jb25jYXQodShpLnNob3J0RGF5cykpO2Z1bmN0aW9uIGwodCxlKXt2YXIgaT10K1wiXCI7Zm9yKGU9ZXx8MjtpLmxlbmd0aDxlOylpPVwiMFwiK2k7cmV0dXJuIGl9dmFyIGg9YT90LmdldFVUQ0Z1bGxZZWFyKCk6dC5nZXRGdWxsWWVhcigpO2U9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXl5eXkrL2csXCIkMVwiK2gpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXl5L2csXCIkMVwiK2gudG9TdHJpbmcoKS5zdWJzdHIoMiwyKSkpLnJlcGxhY2UoLyhefFteXFxcXF0peS9nLFwiJDFcIitoKTt2YXIgYz0oYT90LmdldFVUQ01vbnRoKCk6dC5nZXRNb250aCgpKSsxO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NTU0rL2csXCIkMVwiK3NbMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NTS9nLFwiJDFcIityWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlNTS9nLFwiJDFcIitsKGMpKSkucmVwbGFjZSgvKF58W15cXFxcXSlNL2csXCIkMVwiK2MpO3ZhciBkPWE/dC5nZXRVVENEYXRlKCk6dC5nZXREYXRlKCk7ZT0oZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZGRkZCsvZyxcIiQxXCIrb1swXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pZGRkL2csXCIkMVwiK25bMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkL2csXCIkMVwiK2woZCkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWQvZyxcIiQxXCIrZCk7dmFyIGc9YT90LmdldFVUQ0hvdXJzKCk6dC5nZXRIb3VycygpLHA9Zz4xMj9nLTEyOjA9PT1nPzEyOmc7ZT0oZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pSEgrL2csXCIkMVwiK2woZykpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKUgvZyxcIiQxXCIrZykpLnJlcGxhY2UoLyhefFteXFxcXF0paGgrL2csXCIkMVwiK2wocCkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWgvZyxcIiQxXCIrcCk7dmFyIGY9YT90LmdldFVUQ01pbnV0ZXMoKTp0LmdldE1pbnV0ZXMoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSltbSsvZyxcIiQxXCIrbChmKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pbS9nLFwiJDFcIitmKTt2YXIgeD1hP3QuZ2V0VVRDU2Vjb25kcygpOnQuZ2V0U2Vjb25kcygpO2U9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXNzKy9nLFwiJDFcIitsKHgpKSkucmVwbGFjZSgvKF58W15cXFxcXSlzL2csXCIkMVwiK3gpO3ZhciBiPWE/dC5nZXRVVENNaWxsaXNlY29uZHMoKTp0LmdldE1pbGxpc2Vjb25kcygpO2U9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWZmZisvZyxcIiQxXCIrbChiLDMpKSxiPU1hdGgucm91bmQoYi8xMCksZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZmYvZyxcIiQxXCIrbChiKSksYj1NYXRoLnJvdW5kKGIvMTApO3ZhciB2PWc8MTI/XCJBTVwiOlwiUE1cIjtlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlmL2csXCIkMVwiK2IpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKVRUKy9nLFwiJDFcIit2KSkucmVwbGFjZSgvKF58W15cXFxcXSlUL2csXCIkMVwiK3YuY2hhckF0KDApKTt2YXIgbT12LnRvTG93ZXJDYXNlKCk7ZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pdHQrL2csXCIkMVwiK20pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXQvZyxcIiQxXCIrbS5jaGFyQXQoMCkpO3ZhciB5PS10LmdldFRpbWV6b25lT2Zmc2V0KCksdz1hfHwheT9cIlpcIjp5PjA/XCIrXCI6XCItXCI7aWYoIWEpe3ZhciBrPSh5PU1hdGguYWJzKHkpKSU2MDt3Kz1sKE1hdGguZmxvb3IoeS82MCkpK1wiOlwiK2woayl9ZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pSy9nLFwiJDFcIit3KTt2YXIgQT0oYT90LmdldFVUQ0RheSgpOnQuZ2V0RGF5KCkpKzE7cmV0dXJuIGU9KGU9KGU9KGU9KGU9ZS5yZXBsYWNlKG5ldyBSZWdFeHAob1swXSxcImdcIiksb1tBXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChuWzBdLFwiZ1wiKSxuW0FdKSkucmVwbGFjZShuZXcgUmVnRXhwKHNbMF0sXCJnXCIpLHNbY10pKS5yZXBsYWNlKG5ldyBSZWdFeHAoclswXSxcImdcIikscltjXSkpLnJlcGxhY2UoL1xcXFwoLikvZyxcIiQxXCIpfX0se2tleTpcImdldFRpbWVVbml0c2Zyb21UaW1lc3RhbXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O3ZvaWQgMCE9PWEuY29uZmlnLnhheGlzLm1pbiYmKHQ9YS5jb25maWcueGF4aXMubWluKSx2b2lkIDAhPT1hLmNvbmZpZy54YXhpcy5tYXgmJihlPWEuY29uZmlnLnhheGlzLm1heCk7dmFyIHM9dGhpcy5nZXREYXRlKHQpLHI9dGhpcy5nZXREYXRlKGUpLG89dGhpcy5mb3JtYXREYXRlKHMsXCJ5eXl5IE1NIGRkIEhIIG1tIHNzIGZmZlwiKS5zcGxpdChcIiBcIiksbj10aGlzLmZvcm1hdERhdGUocixcInl5eXkgTU0gZGQgSEggbW0gc3MgZmZmXCIpLnNwbGl0KFwiIFwiKTtyZXR1cm57bWluTWlsbGlzZWNvbmQ6cGFyc2VJbnQob1s2XSwxMCksbWF4TWlsbGlzZWNvbmQ6cGFyc2VJbnQobls2XSwxMCksbWluU2Vjb25kOnBhcnNlSW50KG9bNV0sMTApLG1heFNlY29uZDpwYXJzZUludChuWzVdLDEwKSxtaW5NaW51dGU6cGFyc2VJbnQob1s0XSwxMCksbWF4TWludXRlOnBhcnNlSW50KG5bNF0sMTApLG1pbkhvdXI6cGFyc2VJbnQob1szXSwxMCksbWF4SG91cjpwYXJzZUludChuWzNdLDEwKSxtaW5EYXRlOnBhcnNlSW50KG9bMl0sMTApLG1heERhdGU6cGFyc2VJbnQoblsyXSwxMCksbWluTW9udGg6cGFyc2VJbnQob1sxXSwxMCktMSxtYXhNb250aDpwYXJzZUludChuWzFdLDEwKS0xLG1pblllYXI6cGFyc2VJbnQob1swXSwxMCksbWF4WWVhcjpwYXJzZUludChuWzBdLDEwKX19fSx7a2V5OlwiaXNMZWFwWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JTQ9PTAmJnQlMTAwIT0wfHx0JTQwMD09MH19LHtrZXk6XCJjYWxjdWxjYXRlTGFzdERheXNPZk1vbnRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmRldGVybWluZURheXNPZk1vbnRocyh0LGUpLWl9fSx7a2V5OlwiZGV0ZXJtaW5lRGF5c09mWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTM2NTtyZXR1cm4gdGhpcy5pc0xlYXBZZWFyKHQpJiYoZT0zNjYpLGV9fSx7a2V5OlwiZGV0ZXJtaW5lUmVtYWluaW5nRGF5c09mWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLmRheXNDbnRPZlllYXJbZV0raTtyZXR1cm4gZT4xJiZ0aGlzLmlzTGVhcFllYXIoKSYmYSsrLGF9fSx7a2V5OlwiZGV0ZXJtaW5lRGF5c09mTW9udGhzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0zMDtzd2l0Y2godD14Lm1vbnRoTW9kKHQpLCEwKXtjYXNlIHRoaXMubW9udGhzMzAuaW5kZXhPZih0KT4tMToyPT09dCYmKGk9dGhpcy5pc0xlYXBZZWFyKGUpPzI5OjI4KTticmVhaztjYXNlIHRoaXMubW9udGhzMzEuaW5kZXhPZih0KT4tMTpkZWZhdWx0Omk9MzF9cmV0dXJuIGl9fV0pLHR9KCksTT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnRvb2x0aXBLZXlGb3JtYXQ9XCJkZCBNTU1cIn1yZXR1cm4gcih0LFt7a2V5OlwieExhYmVsRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53O2lmKFwiZGF0ZXRpbWVcIj09PXMuY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PXMuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXImJnZvaWQgMD09PXMuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIpe3ZhciByPW5ldyBJKHRoaXMuY3R4KTtyZXR1cm4gci5mb3JtYXREYXRlKHIuZ2V0RGF0ZShlKSxzLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KX1yZXR1cm4gdChlLGksYSl9fSx7a2V5OlwiZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSk6dH19LHtrZXk6XCJkZWZhdWx0WUZvcm1hdHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnc7cmV0dXJuIHguaXNOdW1iZXIodCkmJih0PTAhPT1hLmdsb2JhbHMueVZhbHVlRGVjaW1hbD90LnRvRml4ZWQodm9pZCAwIT09ZS5kZWNpbWFsc0luRmxvYXQ/ZS5kZWNpbWFsc0luRmxvYXQ6YS5nbG9iYWxzLnlWYWx1ZURlY2ltYWwpOmEuZ2xvYmFscy5tYXhZQXJyW2ldLWEuZ2xvYmFscy5taW5ZQXJyW2ldPDU/dC50b0ZpeGVkKDEpOnQudG9GaXhlZCgwKSksdH19LHtrZXk6XCJzZXRMYWJlbEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7cmV0dXJuIGUuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LGUuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5kZWZhdWx0R2VuZXJhbEZvcm1hdHRlcihlKX0sZS5nbG9iYWxzLnR0WkZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdH0sZS5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5kZWZhdWx0R2VuZXJhbEZvcm1hdHRlcihlKX0sdm9pZCAwIT09ZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcj9lLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyPWUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI6ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcj1mdW5jdGlvbih0KXtpZih4LmlzTnVtYmVyKHQpKXtpZighZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZcIm51bWVyaWNcIj09PWUuY29uZmlnLnhheGlzLnR5cGUpe2lmKHguaXNOdW1iZXIoZS5jb25maWcueGF4aXMuZGVjaW1hbHNJbkZsb2F0KSlyZXR1cm4gdC50b0ZpeGVkKGUuY29uZmlnLnhheGlzLmRlY2ltYWxzSW5GbG9hdCk7dmFyIGk9ZS5nbG9iYWxzLm1heFgtZS5nbG9iYWxzLm1pblg7cmV0dXJuIGk+MCYmaTwxMDA/dC50b0ZpeGVkKDEpOnQudG9GaXhlZCgwKX1pZihlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKWlmKGUuZ2xvYmFscy5tYXhZLWUuZ2xvYmFscy5taW5ZQXJyPDQpcmV0dXJuIHQudG9GaXhlZCgxKTtyZXR1cm4gdC50b0ZpeGVkKDApfXJldHVybiB0fSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyP2UuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1lLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyOmUuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1lLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyJiYoZS5nbG9iYWxzLnhheGlzVG9vbHRpcEZvcm1hdHRlcj1lLmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlciksKEFycmF5LmlzQXJyYXkoZS5jb25maWcudG9vbHRpcC55KXx8dm9pZCAwIT09ZS5jb25maWcudG9vbHRpcC55LmZvcm1hdHRlcikmJihlLmdsb2JhbHMudHRWYWw9ZS5jb25maWcudG9vbHRpcC55KSx2b2lkIDAhPT1lLmNvbmZpZy50b29sdGlwLnouZm9ybWF0dGVyJiYoZS5nbG9iYWxzLnR0WkZvcm1hdHRlcj1lLmNvbmZpZy50b29sdGlwLnouZm9ybWF0dGVyKSx2b2lkIDAhPT1lLmNvbmZpZy5sZWdlbmQuZm9ybWF0dGVyJiYoZS5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcj1lLmNvbmZpZy5sZWdlbmQuZm9ybWF0dGVyKSxlLmNvbmZpZy55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihpLGEpe3ZvaWQgMCE9PWkubGFiZWxzLmZvcm1hdHRlcj9lLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1thXT1pLmxhYmVscy5mb3JtYXR0ZXI6ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbYV09ZnVuY3Rpb24ocyl7cmV0dXJuIGUuZ2xvYmFscy54eUNoYXJ0cz9BcnJheS5pc0FycmF5KHMpP3MubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5kZWZhdWx0WUZvcm1hdHRlcihlLGksYSl9KSk6dC5kZWZhdWx0WUZvcm1hdHRlcihzLGksYSk6c319KSksZS5nbG9iYWxzfX0se2tleTpcImhlYXRtYXBMYWJlbEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZihcImhlYXRtYXBcIj09PXQuY29uZmlnLmNoYXJ0LnR5cGUpe3QuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdD10Lmdsb2JhbHMuc2VyaWVzTmFtZXMuc2xpY2UoKTt2YXIgZT10Lmdsb2JhbHMuc2VyaWVzTmFtZXMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKTt0Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4PWUsdC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbj1lfX19XSksdH0oKSxUPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5pc1RpbWVsaW5lLGE9dC5jdHgscz10LnNlcmllc0luZGV4LHI9dC5kYXRhUG9pbnRJbmRleCxvPXQueTEsbj10LnkyLGw9dC53LGg9bC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbc11bcl0sYz1sLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbc11bcl0sZD1sLmdsb2JhbHMubGFiZWxzW3JdLGc9bC5jb25maWcuc2VyaWVzW3NdLm5hbWU/bC5jb25maWcuc2VyaWVzW3NdLm5hbWU6XCJcIix1PWwuZ2xvYmFscy50dEtleUZvcm1hdHRlcixwPWwuY29uZmlnLnRvb2x0aXAueS50aXRsZS5mb3JtYXR0ZXIsZj17dzpsLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cixzdGFydDpoLGVuZDpjfTsoXCJmdW5jdGlvblwiPT10eXBlb2YgcCYmKGc9cChnLGYpKSxudWxsIT09KGU9bC5jb25maWcuc2VyaWVzW3NdLmRhdGFbcl0pJiZ2b2lkIDAhPT1lJiZlLngmJihkPWwuY29uZmlnLnNlcmllc1tzXS5kYXRhW3JdLngpLGkpfHxcImRhdGV0aW1lXCI9PT1sLmNvbmZpZy54YXhpcy50eXBlJiYoZD1uZXcgTShhKS54TGFiZWxGb3JtYXQobC5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyLGQsZCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgSShhKS5mb3JtYXREYXRlLHc6bH0pKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiB1JiYoZD11KGQsZikpLE51bWJlci5pc0Zpbml0ZShvKSYmTnVtYmVyLmlzRmluaXRlKG4pJiYoaD1vLGM9bik7dmFyIHg9XCJcIixiPVwiXCIsdj1sLmdsb2JhbHMuY29sb3JzW3NdO2lmKHZvaWQgMD09PWwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIpaWYoXCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSl7dmFyIG09bmV3IEkoYSk7eD1tLmZvcm1hdERhdGUobS5nZXREYXRlKGgpLGwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXQpLGI9bS5mb3JtYXREYXRlKG0uZ2V0RGF0ZShjKSxsLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KX1lbHNlIHg9aCxiPWM7ZWxzZSB4PWwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIoaCksYj1sLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKGMpO3JldHVybntzdGFydDpoLGVuZDpjLHN0YXJ0VmFsOngsZW5kVmFsOmIseWxhYmVsOmQsY29sb3I6dixzZXJpZXNOYW1lOmd9fSx6PWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sb3IsaT10LnNlcmllc05hbWUsYT10LnlsYWJlbCxzPXQuc3RhcnQscj10LmVuZCxvPXQuc2VyaWVzSW5kZXgsbj10LmRhdGFQb2ludEluZGV4LGw9dC5jdHgudG9vbHRpcC50b29sdGlwTGFiZWxzLmdldEZvcm1hdHRlcnMobyk7cz1sLnlMYkZvcm1hdHRlcihzKSxyPWwueUxiRm9ybWF0dGVyKHIpO3ZhciBoPWwueUxiRm9ybWF0dGVyKHQudy5nbG9iYWxzLnNlcmllc1tvXVtuXSksYz0nPHNwYW4gY2xhc3M9XCJ2YWx1ZSBzdGFydC12YWx1ZVwiPlxcbiAgJy5jb25jYXQocywnXFxuICA8L3NwYW4+IDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yXCI+LTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJ2YWx1ZSBlbmQtdmFsdWVcIj5cXG4gICcpLmNvbmNhdChyLFwiXFxuICA8L3NwYW4+XCIpO3JldHVybic8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyXCI+PGRpdj4gPHNwYW4gY2xhc3M9XCJzZXJpZXMtbmFtZVwiIHN0eWxlPVwiY29sb3I6ICcrZSsnXCI+JysoaXx8XCJcIikrJzwvc3Bhbj48L2Rpdj48ZGl2PiA8c3BhbiBjbGFzcz1cImNhdGVnb3J5XCI+JythK1wiOiA8L3NwYW4+IFwiKyh0LncuZ2xvYmFscy5jb21ib0NoYXJ0cz9cInJhbmdlQXJlYVwiPT09dC53LmNvbmZpZy5zZXJpZXNbb10udHlwZXx8XCJyYW5nZUJhclwiPT09dC53LmNvbmZpZy5zZXJpZXNbb10udHlwZT9jOlwiPHNwYW4+XCIuY29uY2F0KGgsXCI8L3NwYW4+XCIpOmMpK1wiIDwvZGl2PjwvZGl2PlwifSxYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5vcHRzPWV9cmV0dXJuIHIodCxbe2tleTpcImhpZGVZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5vcHRzLnlheGlzWzBdLnNob3c9ITEsdGhpcy5vcHRzLnlheGlzWzBdLnRpdGxlLnRleHQ9XCJcIix0aGlzLm9wdHMueWF4aXNbMF0uYXhpc0JvcmRlci5zaG93PSExLHRoaXMub3B0cy55YXhpc1swXS5heGlzVGlja3Muc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0uZmxvYXRpbmc9ITB9fSx7a2V5OlwibGluZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntlYXNpbmc6XCJzd2luZ1wifX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDo1LGN1cnZlOlwic3RyYWlnaHRcIn0sbWFya2Vyczp7c2l6ZTowLGhvdmVyOntzaXplT2Zmc2V0OjZ9fSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MX19fX19LHtrZXk6XCJzcGFya2xpbmVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmhpZGVZQXhpcygpO3JldHVybiB4LmV4dGVuZCh0LHtncmlkOntzaG93OiExLHBhZGRpbmc6e2xlZnQ6MCxyaWdodDowLHRvcDowLGJvdHRvbTowfX0sbGVnZW5kOntzaG93OiExfSx4YXhpczp7bGFiZWxzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfSxheGlzQm9yZGVyOntzaG93OiExfSxheGlzVGlja3M6e3Nob3c6ITF9fSxjaGFydDp7dG9vbGJhcjp7c2hvdzohMX0sem9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9fSl9fSx7a2V5OlwiYmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3N0YWNrZWQ6ITEsYW5pbWF0aW9uczp7ZWFzaW5nOlwic3dpbmdcIn19LHBsb3RPcHRpb25zOntiYXI6e2RhdGFMYWJlbHM6e3Bvc2l0aW9uOlwiY2VudGVyXCJ9fX0sZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfX0sc3Ryb2tlOnt3aWR0aDowLGxpbmVDYXA6XCJyb3VuZFwifSxmaWxsOntvcGFjaXR5Oi44NX0sbGVnZW5kOnttYXJrZXJzOntzaGFwZTpcInNxdWFyZVwiLHJhZGl1czoyLHNpemU6OH19LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITB9LHhheGlzOnt0b29sdGlwOntlbmFibGVkOiExfSx0aWNrUGxhY2VtZW50OlwiYmV0d2VlblwiLGNyb3NzaGFpcnM6e3dpZHRoOlwiYmFyV2lkdGhcIixwb3NpdGlvbjpcImJhY2tcIixmaWxsOnt0eXBlOlwiZ3JhZGllbnRcIn0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDowfX19fX19LHtrZXk6XCJmdW5uZWxcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZGVZQXhpcygpLGUoZSh7fSx0aGlzLmJhcigpKSx7fSx7Y2hhcnQ6e2FuaW1hdGlvbnM6e2Vhc2luZzpcImxpbmVhclwiLHNwZWVkOjgwMCxhbmltYXRlR3JhZHVhbGx5OntlbmFibGVkOiExfX19LHBsb3RPcHRpb25zOntiYXI6e2hvcml6b250YWw6ITAsYm9yZGVyUmFkaXVzQXBwbGljYXRpb246XCJhcm91bmRcIixib3JkZXJSYWRpdXM6MCxkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGdyaWQ6e3Nob3c6ITEscGFkZGluZzp7bGVmdDowLHJpZ2h0OjB9fSx4YXhpczp7bGFiZWxzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfSxheGlzQm9yZGVyOntzaG93OiExfSxheGlzVGlja3M6e3Nob3c6ITF9fX0pfX0se2tleTpcImNhbmRsZXN0aWNrXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybntzdHJva2U6e3dpZHRoOjEsY29sb3JzOltcIiMzMzNcIl19LGZpbGw6e29wYWNpdHk6MX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiEwLGN1c3RvbTpmdW5jdGlvbihlKXt2YXIgaT1lLnNlcmllc0luZGV4LGE9ZS5kYXRhUG9pbnRJbmRleCxzPWUudztyZXR1cm4gdC5fZ2V0Qm94VG9vbHRpcChzLGksYSxbXCJPcGVuXCIsXCJIaWdoXCIsXCJcIixcIkxvd1wiLFwiQ2xvc2VcIl0sXCJjYW5kbGVzdGlja1wiKX19LHN0YXRlczp7YWN0aXZlOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fX0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OlwiYm94UGxvdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2R5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITF9fX0sc3Ryb2tlOnt3aWR0aDoxLGNvbG9yczpbXCIjMjQyOTJlXCJdfSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITAsY3VzdG9tOmZ1bmN0aW9uKGUpe3ZhciBpPWUuc2VyaWVzSW5kZXgsYT1lLmRhdGFQb2ludEluZGV4LHM9ZS53O3JldHVybiB0Ll9nZXRCb3hUb29sdGlwKHMsaSxhLFtcIk1pbmltdW1cIixcIlExXCIsXCJNZWRpYW5cIixcIlEzXCIsXCJNYXhpbXVtXCJdLFwiYm94UGxvdFwiKX19LG1hcmtlcnM6e3NpemU6NSxzdHJva2VXaWR0aDoxLHN0cm9rZUNvbG9yczpcIiMxMTFcIn0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OlwicmFuZ2VCYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7YW5pbWF0ZUdyYWR1YWxseTohMX19LHN0cm9rZTp7d2lkdGg6MCxsaW5lQ2FwOlwic3F1YXJlXCJ9LHBsb3RPcHRpb25zOntiYXI6e2JvcmRlclJhZGl1czowLGRhdGFMYWJlbHM6e3Bvc2l0aW9uOlwiY2VudGVyXCJ9fX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMSxmb3JtYXR0ZXI6ZnVuY3Rpb24odCxlKXtlLmN0eDt2YXIgaT1lLnNlcmllc0luZGV4LGE9ZS5kYXRhUG9pbnRJbmRleCxzPWUudyxyPWZ1bmN0aW9uKCl7dmFyIHQ9cy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbaV1bYV07cmV0dXJuIHMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtpXVthXS10fTtyZXR1cm4gcy5nbG9iYWxzLmNvbWJvQ2hhcnRzP1wicmFuZ2VCYXJcIj09PXMuY29uZmlnLnNlcmllc1tpXS50eXBlfHxcInJhbmdlQXJlYVwiPT09cy5jb25maWcuc2VyaWVzW2ldLnR5cGU/cigpOnQ6cigpfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSxtYXJrZXJzOntzaXplOjEwfSx0b29sdGlwOntzaGFyZWQ6ITEsZm9sbG93Q3Vyc29yOiEwLGN1c3RvbTpmdW5jdGlvbih0KXtyZXR1cm4gdC53LmNvbmZpZy5wbG90T3B0aW9ucyYmdC53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXImJnQudy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw/ZnVuY3Rpb24odCl7dmFyIGk9VChlKGUoe30sdCkse30se2lzVGltZWxpbmU6ITB9KSksYT1pLmNvbG9yLHM9aS5zZXJpZXNOYW1lLHI9aS55bGFiZWwsbz1pLnN0YXJ0VmFsLG49aS5lbmRWYWw7cmV0dXJuIHooZShlKHt9LHQpLHt9LHtjb2xvcjphLHNlcmllc05hbWU6cyx5bGFiZWw6cixzdGFydDpvLGVuZDpufSkpfSh0KTpmdW5jdGlvbih0KXt2YXIgaT1UKHQpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG89aS5zdGFydCxuPWkuZW5kO3JldHVybiB6KGUoZSh7fSx0KSx7fSx7Y29sb3I6YSxzZXJpZXNOYW1lOnMseWxhYmVsOnIsc3RhcnQ6byxlbmQ6bn0pKX0odCl9fSx4YXhpczp7dGlja1BsYWNlbWVudDpcImJldHdlZW5cIix0b29sdGlwOntlbmFibGVkOiExfSxjcm9zc2hhaXJzOntzdHJva2U6e3dpZHRoOjB9fX19fX0se2tleTpcImR1bWJiZWxsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaTtyZXR1cm4gbnVsbCE9PShlPXQucGxvdE9wdGlvbnMuYmFyKSYmdm9pZCAwIT09ZSYmZS5iYXJIZWlnaHR8fCh0LnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQ9MiksbnVsbCE9PShpPXQucGxvdE9wdGlvbnMuYmFyKSYmdm9pZCAwIT09aSYmaS5jb2x1bW5XaWR0aHx8KHQucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoPTIpLHR9fSx7a2V5OlwiYXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7d2lkdGg6NCxmaWxsOnt0eXBlOlwic29saWRcIixncmFkaWVudDp7aW52ZXJzZUNvbG9yczohMSxzaGFkZTpcImxpZ2h0XCIsdHlwZTpcInZlcnRpY2FsXCIsb3BhY2l0eUZyb206LjY1LG9wYWNpdHlUbzouNSxzdG9wczpbMCwxMDAsMTAwXX19fSxmaWxsOnt0eXBlOlwiZ3JhZGllbnRcIixncmFkaWVudDp7aW52ZXJzZUNvbG9yczohMSxzaGFkZTpcImxpZ2h0XCIsdHlwZTpcInZlcnRpY2FsXCIsb3BhY2l0eUZyb206LjY1LG9wYWNpdHlUbzouNSxzdG9wczpbMCwxMDAsMTAwXX19LG1hcmtlcnM6e3NpemU6MCxob3Zlcjp7c2l6ZU9mZnNldDo2fX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiExfX19fSx7a2V5OlwicmFuZ2VBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57c3Ryb2tlOntjdXJ2ZTpcInN0cmFpZ2h0XCIsd2lkdGg6MH0sZmlsbDp7dHlwZTpcInNvbGlkXCIsb3BhY2l0eTouNn0sbWFya2Vyczp7c2l6ZTowfSxzdGF0ZXM6e2hvdmVyOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fSxhY3RpdmU6e2ZpbHRlcjp7dHlwZTpcIm5vbmVcIn19fSx0b29sdGlwOntpbnRlcnNlY3Q6ITEsc2hhcmVkOiEwLGZvbGxvd0N1cnNvcjohMCxjdXN0b206ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpPVQodCksYT1pLmNvbG9yLHM9aS5zZXJpZXNOYW1lLHI9aS55bGFiZWwsbz1pLnN0YXJ0LG49aS5lbmQ7cmV0dXJuIHooZShlKHt9LHQpLHt9LHtjb2xvcjphLHNlcmllc05hbWU6cyx5bGFiZWw6cixzdGFydDpvLGVuZDpufSkpfSh0KX19fX19LHtrZXk6XCJicnVzaFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB4LmV4dGVuZCh0LHtjaGFydDp7dG9vbGJhcjp7YXV0b1NlbGVjdGVkOlwic2VsZWN0aW9uXCIsc2hvdzohMX0sem9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6MX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0seGF4aXM6e3Rvb2x0aXA6e2VuYWJsZWQ6ITF9fX0pfX0se2tleTpcInN0YWNrZWQxMDBcIix2YWx1ZTpmdW5jdGlvbih0KXt0LmRhdGFMYWJlbHM9dC5kYXRhTGFiZWxzfHx7fSx0LmRhdGFMYWJlbHMuZm9ybWF0dGVyPXQuZGF0YUxhYmVscy5mb3JtYXR0ZXJ8fHZvaWQgMDt2YXIgZT10LmRhdGFMYWJlbHMuZm9ybWF0dGVyO3JldHVybiB0LnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dC55YXhpc1tpXS5taW49MCx0LnlheGlzW2ldLm1heD0xMDB9KSksXCJiYXJcIj09PXQuY2hhcnQudHlwZSYmKHQuZGF0YUxhYmVscy5mb3JtYXR0ZXI9ZXx8ZnVuY3Rpb24odCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ/dC50b0ZpeGVkKDApK1wiJVwiOnR9KSx0fX0se2tleTpcInN0YWNrZWRCYXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJhcigpO3JldHVybiBlKGUoe30sdCkse30se3Bsb3RPcHRpb25zOmUoZSh7fSx0LnBsb3RPcHRpb25zKSx7fSx7YmFyOmUoZSh7fSx0LnBsb3RPcHRpb25zLmJhcikse30se2JvcmRlclJhZGl1c0FwcGxpY2F0aW9uOlwiZW5kXCIsYm9yZGVyUmFkaXVzV2hlblN0YWNrZWQ6XCJsYXN0XCJ9KX0pfSl9fSx7a2V5OlwiY29udmVydENhdFRvTnVtZXJpY1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz0hMCx0fX0se2tleTpcImNvbnZlcnRDYXRUb051bWVyaWNYYXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0LnhheGlzLnR5cGU9XCJudW1lcmljXCIsdC54YXhpcy5sYWJlbHM9dC54YXhpcy5sYWJlbHN8fHt9LHQueGF4aXMubGFiZWxzLmZvcm1hdHRlcj10LnhheGlzLmxhYmVscy5mb3JtYXR0ZXJ8fGZ1bmN0aW9uKHQpe3JldHVybiB4LmlzTnVtYmVyKHQpP01hdGguZmxvb3IodCk6dH07dmFyIGE9dC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLHM9dC54YXhpcy5jYXRlZ29yaWVzJiZ0LnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoP3QueGF4aXMuY2F0ZWdvcmllczp0LmxhYmVscztyZXR1cm4gaSYmaS5sZW5ndGgmJihzPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90OlN0cmluZyh0KX0pKSkscyYmcy5sZW5ndGgmJih0LnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHguaXNOdW1iZXIodCk/YShzW01hdGguZmxvb3IodCktMV0pOmEodCl9KSx0LnhheGlzLmNhdGVnb3JpZXM9W10sdC5sYWJlbHM9W10sdC54YXhpcy50aWNrQW1vdW50PXQueGF4aXMudGlja0Ftb3VudHx8XCJkYXRhUG9pbnRzXCIsdH19LHtrZXk6XCJidWJibGVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MH19LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsaW52ZXJzZTohMCxzaGFkZUludGVuc2l0eTouNTUsb3BhY2l0eUZyb206LjQsb3BhY2l0eVRvOi44fX19fX0se2tleTpcInNjYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSxtYXJrZXJzOntzaXplOjYsc3Ryb2tlV2lkdGg6MSxob3Zlcjp7c2l6ZU9mZnNldDoyfX19fX0se2tleTpcImhlYXRtYXBcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7c3RhY2tlZDohMX0sZmlsbDp7b3BhY2l0eToxfSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSx0b29sdGlwOntmb2xsb3dDdXJzb3I6ITAsbWFya2VyOntzaG93OiExfSx4OntzaG93OiExfX0sbGVnZW5kOntwb3NpdGlvbjpcInRvcFwiLG1hcmtlcnM6e3NoYXBlOlwic3F1YXJlXCIsc2l6ZToxMCxvZmZzZXRZOjJ9fSxncmlkOntwYWRkaW5nOntyaWdodDoyMH19fX19LHtrZXk6XCJ0cmVlbWFwXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3pvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntzdHlsZTp7Zm9udFNpemU6MTQsZm9udFdlaWdodDo2MDAsY29sb3JzOltcIiNmZmZcIl19fSxzdHJva2U6e3Nob3c6ITAsd2lkdGg6Mixjb2xvcnM6W1wiI2ZmZlwiXX0sbGVnZW5kOntzaG93OiExfSxmaWxsOntncmFkaWVudDp7c3RvcHM6WzAsMTAwXX19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMCx4OntzaG93OiExfX0sZ3JpZDp7cGFkZGluZzp7bGVmdDowLHJpZ2h0OjB9fSx4YXhpczp7Y3Jvc3NoYWlyczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX19fX19LHtrZXk6XCJwaWVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LHBsb3RPcHRpb25zOntwaWU6e2RvbnV0OntsYWJlbHM6e3Nob3c6ITF9fX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC50b0ZpeGVkKDEpK1wiJVwifSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITF9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITB9fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSxmaWxsOntvcGFjaXR5OjEsZ3JhZGllbnQ6e3NoYWRlOlwibGlnaHRcIixzdG9wczpbMCwxMDBdfX0sdG9vbHRpcDp7dGhlbWU6XCJkYXJrXCIsZmlsbFNlcmllc0NvbG9yOiEwfSxsZWdlbmQ6e3Bvc2l0aW9uOlwicmlnaHRcIn19fX0se2tleTpcImRvbnV0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9GaXhlZCgxKStcIiVcIn0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxkcm9wU2hhZG93OntlbmFibGVkOiEwfX0sc3Ryb2tlOntjb2xvcnM6W1wiI2ZmZlwiXX0sZmlsbDp7b3BhY2l0eToxLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsc2hhZGVJbnRlbnNpdHk6LjM1LHN0b3BzOls4MCwxMDBdLG9wYWNpdHlGcm9tOjEsb3BhY2l0eVRvOjF9fSx0b29sdGlwOnt0aGVtZTpcImRhcmtcIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246XCJyaWdodFwifX19fSx7a2V5OlwicG9sYXJBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ9dGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ/dGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ6Nix7Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9GaXhlZCgxKStcIiVcIn0sZW5hYmxlZDohMX0sc3Ryb2tlOntzaG93OiEwLHdpZHRoOjJ9LGZpbGw6e29wYWNpdHk6Ljd9LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJyYWRhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0cy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WT10aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk/dGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZOjYse2RhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsc3R5bGU6e2ZvbnRTaXplOlwiMTFweFwifX0sc3Ryb2tlOnt3aWR0aDoyfSxtYXJrZXJzOntzaXplOjMsc3Ryb2tlV2lkdGg6MSxzdHJva2VPcGFjaXR5OjF9LGZpbGw6e29wYWNpdHk6LjJ9LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITAsZm9sbG93Q3Vyc29yOiEwfSxncmlkOntzaG93OiExfSx4YXhpczp7bGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHN0eWxlOntjb2xvcnM6W1wiI2E4YThhOFwiXSxmb250U2l6ZTpcIjExcHhcIn19LHRvb2x0aXA6e2VuYWJsZWQ6ITF9LGNyb3NzaGFpcnM6e3Nob3c6ITF9fX19fSx7a2V5OlwicmFkaWFsQmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2R5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITAsc3BlZWQ6ODAwfX0sdG9vbGJhcjp7c2hvdzohMX19LGZpbGw6e2dyYWRpZW50OntzaGFkZTpcImRhcmtcIixzaGFkZUludGVuc2l0eTouNCxpbnZlcnNlQ29sb3JzOiExLHR5cGU6XCJkaWFnb25hbDJcIixvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOls3MCw5OCwxMDBdfX0sbGVnZW5kOntzaG93OiExLHBvc2l0aW9uOlwicmlnaHRcIn0sdG9vbHRpcDp7ZW5hYmxlZDohMSxmaWxsU2VyaWVzQ29sb3I6ITB9fX19LHtrZXk6XCJfZ2V0Qm94VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dmFyIHI9dC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1baV0sbz10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVtpXSxuPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW2VdW2ldLGw9dC5nbG9iYWxzLnNlcmllc0NhbmRsZUxbZV1baV0saD10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVtpXTtyZXR1cm4gdC5jb25maWcuc2VyaWVzW2VdLnR5cGUmJnQuY29uZmlnLnNlcmllc1tlXS50eXBlIT09cz8nPGRpdiBjbGFzcz1cImFwZXhjaGFydHMtY3VzdG9tLXRvb2x0aXBcIj5cXG4gICAgICAgICAgJy5jb25jYXQodC5jb25maWcuc2VyaWVzW2VdLm5hbWU/dC5jb25maWcuc2VyaWVzW2VdLm5hbWU6XCJzZXJpZXMtXCIrKGUrMSksXCI6IDxzdHJvbmc+XCIpLmNvbmNhdCh0Lmdsb2JhbHMuc2VyaWVzW2VdW2ldLFwiPC9zdHJvbmc+XFxuICAgICAgICA8L2Rpdj5cIik6JzxkaXYgY2xhc3M9XCJhcGV4Y2hhcnRzLXRvb2x0aXAtYm94IGFwZXhjaGFydHMtdG9vbHRpcC0nLmNvbmNhdCh0LmNvbmZpZy5jaGFydC50eXBlLCdcIj4nKStcIjxkaXY+XCIuY29uY2F0KGFbMF0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK3IrXCI8L3NwYW4+PC9kaXY+XCIrXCI8ZGl2PlwiLmNvbmNhdChhWzFdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStvK1wiPC9zcGFuPjwvZGl2PlwiKyhuP1wiPGRpdj5cIi5jb25jYXQoYVsyXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrbitcIjwvc3Bhbj48L2Rpdj5cIjpcIlwiKStcIjxkaXY+XCIuY29uY2F0KGFbM10sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK2wrXCI8L3NwYW4+PC9kaXY+XCIrXCI8ZGl2PlwiLmNvbmNhdChhWzRdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStoK1wiPC9zcGFuPjwvZGl2PjwvZGl2PlwifX1dKSx0fSgpLEU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLm9wdHM9ZX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQucmVzcG9uc2l2ZU92ZXJyaWRlLGE9dGhpcy5vcHRzLHM9bmV3IEwscj1uZXcgWChhKTt0aGlzLmNoYXJ0VHlwZT1hLmNoYXJ0LnR5cGUsYT10aGlzLmV4dGVuZFlBeGlzKGEpLGE9dGhpcy5leHRlbmRBbm5vdGF0aW9ucyhhKTt2YXIgbz1zLmluaXQoKSxuPXt9O2lmKGEmJlwib2JqZWN0XCI9PT1pKGEpKXt2YXIgbCxoLGMsZCxnLHUscCxmLGIsdixtPXt9O209LTEhPT1bXCJsaW5lXCIsXCJhcmVhXCIsXCJiYXJcIixcImNhbmRsZXN0aWNrXCIsXCJib3hQbG90XCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJidWJibGVcIixcInNjYXR0ZXJcIixcImhlYXRtYXBcIixcInRyZWVtYXBcIixcInBpZVwiLFwicG9sYXJBcmVhXCIsXCJkb251dFwiLFwicmFkYXJcIixcInJhZGlhbEJhclwiXS5pbmRleE9mKGEuY2hhcnQudHlwZSk/clthLmNoYXJ0LnR5cGVdKCk6ci5saW5lKCksbnVsbCE9PShsPWEucGxvdE9wdGlvbnMpJiZ2b2lkIDAhPT1sJiZudWxsIT09KGg9bC5iYXIpJiZ2b2lkIDAhPT1oJiZoLmlzRnVubmVsJiYobT1yLmZ1bm5lbCgpKSxhLmNoYXJ0LnN0YWNrZWQmJlwiYmFyXCI9PT1hLmNoYXJ0LnR5cGUmJihtPXIuc3RhY2tlZEJhcnMoKSksbnVsbCE9PShjPWEuY2hhcnQuYnJ1c2gpJiZ2b2lkIDAhPT1jJiZjLmVuYWJsZWQmJihtPXIuYnJ1c2gobSkpLGEuY2hhcnQuc3RhY2tlZCYmXCIxMDAlXCI9PT1hLmNoYXJ0LnN0YWNrVHlwZSYmKGE9ci5zdGFja2VkMTAwKGEpKSxudWxsIT09KGQ9YS5wbG90T3B0aW9ucykmJnZvaWQgMCE9PWQmJm51bGwhPT0oZz1kLmJhcikmJnZvaWQgMCE9PWcmJmcuaXNEdW1iYmVsbCYmKGE9ci5kdW1iYmVsbChhKSksXCJtb25vdG9uZUN1YmljXCI9PT0obnVsbD09PSh1PWEpfHx2b2lkIDA9PT11fHxudWxsPT09KHA9dS5zdHJva2UpfHx2b2lkIDA9PT1wP3ZvaWQgMDpwLmN1cnZlKSYmKGEuc3Ryb2tlLmN1cnZlPVwic21vb3RoXCIpLHRoaXMuY2hlY2tGb3JEYXJrVGhlbWUod2luZG93LkFwZXgpLHRoaXMuY2hlY2tGb3JEYXJrVGhlbWUoYSksYS54YXhpcz1hLnhheGlzfHx3aW5kb3cuQXBleC54YXhpc3x8e30sZXx8KGEueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljPSExKSwobnVsbCE9PShmPShhPXRoaXMuY2hlY2tGb3JDYXRUb051bWVyaWNYQXhpcyh0aGlzLmNoYXJ0VHlwZSxtLGEpKS5jaGFydC5zcGFya2xpbmUpJiZ2b2lkIDAhPT1mJiZmLmVuYWJsZWR8fG51bGwhPT0oYj13aW5kb3cuQXBleC5jaGFydCkmJnZvaWQgMCE9PWImJm51bGwhPT0odj1iLnNwYXJrbGluZSkmJnZvaWQgMCE9PXYmJnYuZW5hYmxlZCkmJihtPXIuc3BhcmtsaW5lKG0pKSxuPXguZXh0ZW5kKG8sbSl9dmFyIHk9eC5leHRlbmQobix3aW5kb3cuQXBleCk7cmV0dXJuIG89eC5leHRlbmQoeSxhKSxvPXRoaXMuaGFuZGxlVXNlcklucHV0RXJyb3JzKG8pfX0se2tleTpcImNoZWNrRm9yQ2F0VG9OdW1lcmljWEF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGEscyxyPW5ldyBYKGkpLG89KFwiYmFyXCI9PT10fHxcImJveFBsb3RcIj09PXQpJiYobnVsbD09PShhPWkucGxvdE9wdGlvbnMpfHx2b2lkIDA9PT1hfHxudWxsPT09KHM9YS5iYXIpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmhvcml6b250YWwpLG49XCJwaWVcIj09PXR8fFwicG9sYXJBcmVhXCI9PT10fHxcImRvbnV0XCI9PT10fHxcInJhZGFyXCI9PT10fHxcInJhZGlhbEJhclwiPT09dHx8XCJoZWF0bWFwXCI9PT10LGw9XCJkYXRldGltZVwiIT09aS54YXhpcy50eXBlJiZcIm51bWVyaWNcIiE9PWkueGF4aXMudHlwZSxoPWkueGF4aXMudGlja1BsYWNlbWVudD9pLnhheGlzLnRpY2tQbGFjZW1lbnQ6ZS54YXhpcyYmZS54YXhpcy50aWNrUGxhY2VtZW50O3JldHVybiBvfHxufHwhbHx8XCJiZXR3ZWVuXCI9PT1ofHwoaT1yLmNvbnZlcnRDYXRUb051bWVyaWMoaSkpLGl9fSx7a2V5OlwiZXh0ZW5kWUF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPW5ldyBMOyh2b2lkIDA9PT10LnlheGlzfHwhdC55YXhpc3x8QXJyYXkuaXNBcnJheSh0LnlheGlzKSYmMD09PXQueWF4aXMubGVuZ3RoKSYmKHQueWF4aXM9e30pLHQueWF4aXMuY29uc3RydWN0b3IhPT1BcnJheSYmd2luZG93LkFwZXgueWF4aXMmJndpbmRvdy5BcGV4LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXkmJih0LnlheGlzPXguZXh0ZW5kKHQueWF4aXMsd2luZG93LkFwZXgueWF4aXMpKSx0LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXk/dC55YXhpcz1beC5leHRlbmQoaS55QXhpcyx0LnlheGlzKV06dC55YXhpcz14LmV4dGVuZEFycmF5KHQueWF4aXMsaS55QXhpcyk7dmFyIGE9ITE7dC55YXhpcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmxvZ2FyaXRobWljJiYoYT0hMCl9KSk7dmFyIHM9dC5zZXJpZXM7cmV0dXJuIGUmJiFzJiYocz1lLmNvbmZpZy5zZXJpZXMpLGEmJnMubGVuZ3RoIT09dC55YXhpcy5sZW5ndGgmJnMubGVuZ3RoJiYodC55YXhpcz1zLm1hcCgoZnVuY3Rpb24oZSxhKXtpZihlLm5hbWV8fChzW2FdLm5hbWU9XCJzZXJpZXMtXCIuY29uY2F0KGErMSkpLHQueWF4aXNbYV0pcmV0dXJuIHQueWF4aXNbYV0uc2VyaWVzTmFtZT1zW2FdLm5hbWUsdC55YXhpc1thXTt2YXIgcj14LmV4dGVuZChpLnlBeGlzLHQueWF4aXNbMF0pO3JldHVybiByLnNob3c9ITEscn0pKSksYSYmcy5sZW5ndGg+MSYmcy5sZW5ndGghPT10LnlheGlzLmxlbmd0aCYmY29uc29sZS53YXJuKFwiQSBtdWx0aS1zZXJpZXMgbG9nYXJpdGhtaWMgY2hhcnQgc2hvdWxkIGhhdmUgZXF1YWwgbnVtYmVyIG9mIHNlcmllcyBhbmQgeS1heGVzXCIpLHR9fSx7a2V5OlwiZXh0ZW5kQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dC5hbm5vdGF0aW9ucyYmKHQuYW5ub3RhdGlvbnM9e30sdC5hbm5vdGF0aW9ucy55YXhpcz1bXSx0LmFubm90YXRpb25zLnhheGlzPVtdLHQuYW5ub3RhdGlvbnMucG9pbnRzPVtdKSx0PXRoaXMuZXh0ZW5kWUF4aXNBbm5vdGF0aW9ucyh0KSx0PXRoaXMuZXh0ZW5kWEF4aXNBbm5vdGF0aW9ucyh0KSx0PXRoaXMuZXh0ZW5kUG9pbnRBbm5vdGF0aW9ucyh0KX19LHtrZXk6XCJleHRlbmRZQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEw7cmV0dXJuIHQuYW5ub3RhdGlvbnMueWF4aXM9eC5leHRlbmRBcnJheSh2b2lkIDAhPT10LmFubm90YXRpb25zLnlheGlzP3QuYW5ub3RhdGlvbnMueWF4aXM6W10sZS55QXhpc0Fubm90YXRpb24pLHR9fSx7a2V5OlwiZXh0ZW5kWEF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBMO3JldHVybiB0LmFubm90YXRpb25zLnhheGlzPXguZXh0ZW5kQXJyYXkodm9pZCAwIT09dC5hbm5vdGF0aW9ucy54YXhpcz90LmFubm90YXRpb25zLnhheGlzOltdLGUueEF4aXNBbm5vdGF0aW9uKSx0fX0se2tleTpcImV4dGVuZFBvaW50QW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgTDtyZXR1cm4gdC5hbm5vdGF0aW9ucy5wb2ludHM9eC5leHRlbmRBcnJheSh2b2lkIDAhPT10LmFubm90YXRpb25zLnBvaW50cz90LmFubm90YXRpb25zLnBvaW50czpbXSxlLnBvaW50QW5ub3RhdGlvbiksdH19LHtrZXk6XCJjaGVja0ZvckRhcmtUaGVtZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3QudGhlbWUmJlwiZGFya1wiPT09dC50aGVtZS5tb2RlJiYodC50b29sdGlwfHwodC50b29sdGlwPXt9KSxcImxpZ2h0XCIhPT10LnRvb2x0aXAudGhlbWUmJih0LnRvb2x0aXAudGhlbWU9XCJkYXJrXCIpLHQuY2hhcnQuZm9yZUNvbG9yfHwodC5jaGFydC5mb3JlQ29sb3I9XCIjZjZmN2Y4XCIpLHQuY2hhcnQuYmFja2dyb3VuZHx8KHQuY2hhcnQuYmFja2dyb3VuZD1cIiM0MjQyNDJcIiksdC50aGVtZS5wYWxldHRlfHwodC50aGVtZS5wYWxldHRlPVwicGFsZXR0ZTRcIikpfX0se2tleTpcImhhbmRsZVVzZXJJbnB1dEVycm9yc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQ7aWYoZS50b29sdGlwLnNoYXJlZCYmZS50b29sdGlwLmludGVyc2VjdCl0aHJvdyBuZXcgRXJyb3IoXCJ0b29sdGlwLnNoYXJlZCBjYW5ub3QgYmUgZW5hYmxlZCB3aGVuIHRvb2x0aXAuaW50ZXJzZWN0IGlzIHRydWUuIFR1cm4gb2ZmIGFueSBvdGhlciBvcHRpb24gYnkgc2V0dGluZyBpdCB0byBmYWxzZS5cIik7aWYoXCJiYXJcIj09PWUuY2hhcnQudHlwZSYmZS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCl7aWYoZS55YXhpcy5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoXCJNdWx0aXBsZSBZIEF4aXMgZm9yIGJhcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIFN3aXRjaCB0byBjb2x1bW4gY2hhcnQgYnkgc2V0dGluZyBwbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbD1mYWxzZVwiKTtlLnlheGlzWzBdLnJldmVyc2VkJiYoZS55YXhpc1swXS5vcHBvc2l0ZT0hMCksZS54YXhpcy50b29sdGlwLmVuYWJsZWQ9ITEsZS55YXhpc1swXS50b29sdGlwLmVuYWJsZWQ9ITEsZS5jaGFydC56b29tLmVuYWJsZWQ9ITF9cmV0dXJuXCJiYXJcIiE9PWUuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09ZS5jaGFydC50eXBlfHxlLnRvb2x0aXAuc2hhcmVkJiZcImJhcldpZHRoXCI9PT1lLnhheGlzLmNyb3NzaGFpcnMud2lkdGgmJmUuc2VyaWVzLmxlbmd0aD4xJiYoZS54YXhpcy5jcm9zc2hhaXJzLndpZHRoPVwidGlja1dpZHRoXCIpLFwiY2FuZGxlc3RpY2tcIiE9PWUuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT1lLmNoYXJ0LnR5cGV8fGUueWF4aXNbMF0ucmV2ZXJzZWQmJihjb25zb2xlLndhcm4oXCJSZXZlcnNlZCB5LWF4aXMgaW4gXCIuY29uY2F0KGUuY2hhcnQudHlwZSxcIiBjaGFydCBpcyBub3Qgc3VwcG9ydGVkLlwiKSksZS55YXhpc1swXS5yZXZlcnNlZD0hMSksZX19XSksdH0oKSxZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2EodGhpcyx0KX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdEdsb2JhbFZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt0LnNlcmllcz1bXSx0LnNlcmllc0NhbmRsZU89W10sdC5zZXJpZXNDYW5kbGVIPVtdLHQuc2VyaWVzQ2FuZGxlTT1bXSx0LnNlcmllc0NhbmRsZUw9W10sdC5zZXJpZXNDYW5kbGVDPVtdLHQuc2VyaWVzUmFuZ2VTdGFydD1bXSx0LnNlcmllc1JhbmdlRW5kPVtdLHQuc2VyaWVzUmFuZ2U9W10sdC5zZXJpZXNQZXJjZW50PVtdLHQuc2VyaWVzR29hbHM9W10sdC5zZXJpZXNYPVtdLHQuc2VyaWVzWj1bXSx0LnNlcmllc05hbWVzPVtdLHQuc2VyaWVzVG90YWxzPVtdLHQuc2VyaWVzTG9nPVtdLHQuc2VyaWVzQ29sb3JzPVtdLHQuc3RhY2tlZFNlcmllc1RvdGFscz1bXSx0LnNlcmllc1h2YWx1ZXM9W10sdC5zZXJpZXNZdmFsdWVzPVtdLHQubGFiZWxzPVtdLHQuaGFzWGF4aXNHcm91cHM9ITEsdC5ncm91cHM9W10sdC5oYXNTZXJpZXNHcm91cHM9ITEsdC5zZXJpZXNHcm91cHM9W10sdC5jYXRlZ29yeUxhYmVscz1bXSx0LnRpbWVzY2FsZUxhYmVscz1bXSx0Lm5vTGFiZWxzUHJvdmlkZWQ9ITEsdC5yZXNpemVUaW1lcj1udWxsLHQuc2VsZWN0aW9uUmVzaXplVGltZXI9bnVsbCx0LmRlbGF5ZWRFbGVtZW50cz1bXSx0LnBvaW50c0FycmF5PVtdLHQuZGF0YUxhYmVsc1JlY3RzPVtdLHQuaXNYTnVtZXJpYz0hMSx0LnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMSx0LnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITEsdC5pc0RhdGFYWVo9ITEsdC5pc011bHRpTGluZVg9ITEsdC5pc011bHRpcGxlWUF4aXM9ITEsdC5tYXhZPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWT1OdW1iZXIuTUlOX1ZBTFVFLHQubWluWUFycj1bXSx0Lm1heFlBcnI9W10sdC5tYXhYPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWD1OdW1iZXIuTUFYX1ZBTFVFLHQuaW5pdGlhbE1heFg9LU51bWJlci5NQVhfVkFMVUUsdC5pbml0aWFsTWluWD1OdW1iZXIuTUFYX1ZBTFVFLHQubWF4RGF0ZT0wLHQubWluRGF0ZT1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWj1OdW1iZXIuTUFYX1ZBTFVFLHQubWF4Wj0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblhEaWZmPU51bWJlci5NQVhfVkFMVUUsdC55QXhpc1NjYWxlPVtdLHQueEF4aXNTY2FsZT1udWxsLHQueEF4aXNUaWNrc1Bvc2l0aW9ucz1bXSx0LnlMYWJlbHNDb29yZHM9W10sdC55VGl0bGVDb29yZHM9W10sdC5iYXJQYWRGb3JOdW1lcmljQXhpcz0wLHQucGFkSG9yaXpvbnRhbD0wLHQueFJhbmdlPTAsdC55UmFuZ2U9W10sdC56UmFuZ2U9MCx0LmRhdGFQb2ludHM9MCx0LnhUaWNrQW1vdW50PTB9fSx7a2V5OlwiZ2xvYmFsVmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybntjaGFydElEOm51bGwsY3VpZDpudWxsLGV2ZW50czp7YmVmb3JlTW91bnQ6W10sbW91bnRlZDpbXSx1cGRhdGVkOltdLGNsaWNrZWQ6W10sc2VsZWN0aW9uOltdLGRhdGFQb2ludFNlbGVjdGlvbjpbXSx6b29tZWQ6W10sc2Nyb2xsZWQ6W119LGNvbG9yczpbXSxjbGllbnRYOm51bGwsY2xpZW50WTpudWxsLGZpbGw6e2NvbG9yczpbXX0sc3Ryb2tlOntjb2xvcnM6W119LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W119fSxyYWRhclBvbHlnb25zOntmaWxsOntjb2xvcnM6W119fSxtYXJrZXJzOntjb2xvcnM6W10sc2l6ZTp0Lm1hcmtlcnMuc2l6ZSxsYXJnZXN0U2l6ZTowfSxhbmltYXRpb25FbmRlZDohMSxpc1RvdWNoRGV2aWNlOlwib250b3VjaHN0YXJ0XCJpbiB3aW5kb3d8fG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzLGlzRGlydHk6ITEsaXNFeGVjQ2FsbGVkOiExLGluaXRpYWxDb25maWc6bnVsbCxpbml0aWFsU2VyaWVzOltdLGxhc3RYQXhpczpbXSxsYXN0WUF4aXM6W10sY29sdW1uU2VyaWVzOm51bGwsbGFiZWxzOltdLHRpbWVzY2FsZUxhYmVsczpbXSxub0xhYmVsc1Byb3ZpZGVkOiExLGFsbFNlcmllc0NvbGxhcHNlZDohMSxjb2xsYXBzZWRTZXJpZXM6W10sY29sbGFwc2VkU2VyaWVzSW5kaWNlczpbXSxhbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXM6W10sYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlczpbXSxyaXNpbmdTZXJpZXM6W10sZGF0YUZvcm1hdFhOdW1lcmljOiExLGNhcHR1cmVkU2VyaWVzSW5kZXg6LTEsY2FwdHVyZWREYXRhUG9pbnRJbmRleDotMSxzZWxlY3RlZERhdGFQb2ludHM6W10sZ29sZGVuUGFkZGluZzozNSxpbnZhbGlkTG9nU2NhbGU6ITEsaWdub3JlWUF4aXNJbmRleGVzOltdLHlBeGlzU2FtZVNjYWxlSW5kaWNlczpbXSxtYXhWYWxzSW5BcnJheUluZGV4OjAscmFkaWFsU2l6ZTowLHNlbGVjdGlvbjp2b2lkIDAsem9vbUVuYWJsZWQ6XCJ6b29tXCI9PT10LmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkJiZ0LmNoYXJ0LnRvb2xiYXIudG9vbHMuem9vbSYmdC5jaGFydC56b29tLmVuYWJsZWQscGFuRW5hYmxlZDpcInBhblwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnBhbixzZWxlY3Rpb25FbmFibGVkOlwic2VsZWN0aW9uXCI9PT10LmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkJiZ0LmNoYXJ0LnRvb2xiYXIudG9vbHMuc2VsZWN0aW9uLHlheGlzOm51bGwsbW91c2Vkb3duOiExLGxhc3RDbGllbnRQb3NpdGlvbjp7fSx2aXNpYmxlWFJhbmdlOnZvaWQgMCx5VmFsdWVEZWNpbWFsOjAsdG90YWw6MCxTVkdOUzpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsc3ZnV2lkdGg6MCxzdmdIZWlnaHQ6MCxub0RhdGE6ITEsbG9jYWxlOnt9LGRvbTp7fSxtZW1vcnk6e21ldGhvZHNUb0V4ZWM6W119LHNob3VsZEFuaW1hdGU6ITAsc2tpcExhc3RUaW1lbGluZWxhYmVsOiExLHNraXBGaXJzdFRpbWVsaW5lbGFiZWw6ITEsZGVsYXllZEVsZW1lbnRzOltdLGF4aXNDaGFydHM6ITAsaXNEYXRhWFlaOiExLHJlc2l6ZWQ6ITEscmVzaXplVGltZXI6bnVsbCxjb21ib0NoYXJ0czohMSxkYXRhQ2hhbmdlZDohMSxwcmV2aW91c1BhdGhzOltdLGFsbFNlcmllc0hhc0VxdWFsWDohMCxwb2ludHNBcnJheTpbXSxkYXRhTGFiZWxzUmVjdHM6W10sbGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXM6W10saGFzTnVsbFZhbHVlczohMSxlYXNpbmc6bnVsbCx6b29tZWQ6ITEsZ3JpZFdpZHRoOjAsZ3JpZEhlaWdodDowLHJvdGF0ZVhMYWJlbHM6ITEsZGVmYXVsdExhYmVsczohMSx4TGFiZWxGb3JtYXR0ZXI6dm9pZCAwLHlMYWJlbEZvcm1hdHRlcnM6W10seGF4aXNUb29sdGlwRm9ybWF0dGVyOnZvaWQgMCx0dEtleUZvcm1hdHRlcjp2b2lkIDAsdHRWYWw6dm9pZCAwLHR0WkZvcm1hdHRlcjp2b2lkIDAsTElORV9IRUlHSFRfUkFUSU86MS42MTgseEF4aXNMYWJlbHNIZWlnaHQ6MCx4QXhpc0dyb3VwTGFiZWxzSGVpZ2h0OjAseEF4aXNMYWJlbHNXaWR0aDowLHlBeGlzTGFiZWxzV2lkdGg6MCxzY2FsZVg6MSxzY2FsZVk6MSx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHRyYW5zbGF0ZVlBeGlzWDpbXSx5QXhpc1dpZHRoczpbXSx0cmFuc2xhdGVYQXhpc1k6MCx0cmFuc2xhdGVYQXhpc1g6MCx0b29sdGlwOm51bGx9fX0se2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdsb2JhbFZhcnModCk7cmV0dXJuIHRoaXMuaW5pdEdsb2JhbFZhcnMoZSksZS5pbml0aWFsQ29uZmlnPXguZXh0ZW5kKHt9LHQpLGUuaW5pdGlhbFNlcmllcz14LmNsb25lKHQuc2VyaWVzKSxlLmxhc3RYQXhpcz14LmNsb25lKGUuaW5pdGlhbENvbmZpZy54YXhpcyksZS5sYXN0WUF4aXM9eC5jbG9uZShlLmluaXRpYWxDb25maWcueWF4aXMpLGV9fV0pLHR9KCksRj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMub3B0cz1lfXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRSh0aGlzLm9wdHMpLmluaXQoe3Jlc3BvbnNpdmVPdmVycmlkZTohMX0pO3JldHVybntjb25maWc6dCxnbG9iYWxzOihuZXcgWSkuaW5pdCh0KX19fV0pLHR9KCksUj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLm9wdHM9bnVsbCx0aGlzLnNlcmllc0luZGV4PTB9cmV0dXJuIHIodCxbe2tleTpcImNsaXBwZWRJbWdBcmVhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcsYT1wYXJzZUludChlLmdsb2JhbHMuZ3JpZFdpZHRoLDEwKSxzPXBhcnNlSW50KGUuZ2xvYmFscy5ncmlkSGVpZ2h0LDEwKSxyPWE+cz9hOnMsbz10LmltYWdlLG49MCxsPTA7dm9pZCAwPT09dC53aWR0aCYmdm9pZCAwPT09dC5oZWlnaHQ/dm9pZCAwIT09aS5maWxsLmltYWdlLndpZHRoJiZ2b2lkIDAhPT1pLmZpbGwuaW1hZ2UuaGVpZ2h0PyhuPWkuZmlsbC5pbWFnZS53aWR0aCsxLGw9aS5maWxsLmltYWdlLmhlaWdodCk6KG49cisxLGw9cik6KG49dC53aWR0aCxsPXQuaGVpZ2h0KTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5nbG9iYWxzLlNWR05TLFwicGF0dGVyblwiKTttLnNldEF0dHJzKGgse2lkOnQucGF0dGVybklELHBhdHRlcm5Vbml0czp0LnBhdHRlcm5Vbml0cz90LnBhdHRlcm5Vbml0czpcInVzZXJTcGFjZU9uVXNlXCIsd2lkdGg6bitcInB4XCIsaGVpZ2h0OmwrXCJweFwifSk7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcImltYWdlXCIpO2guYXBwZW5kQ2hpbGQoYyksYy5zZXRBdHRyaWJ1dGVOUyh3aW5kb3cuU1ZHLnhsaW5rLFwiaHJlZlwiLG8pLG0uc2V0QXR0cnMoYyx7eDowLHk6MCxwcmVzZXJ2ZUFzcGVjdFJhdGlvOlwibm9uZVwiLHdpZHRoOm4rXCJweFwiLGhlaWdodDpsK1wicHhcIn0pLGMuc3R5bGUub3BhY2l0eT10Lm9wYWNpdHksZS5nbG9iYWxzLmRvbS5lbERlZnMubm9kZS5hcHBlbmRDaGlsZChoKX19LHtrZXk6XCJnZXRTZXJpZXNJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuY29uZmlnLmNoYXJ0LnR5cGU7cmV0dXJuKFwiYmFyXCI9PT1pfHxcInJhbmdlQmFyXCI9PT1pKSYmZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkfHxcImhlYXRtYXBcIj09PWl8fFwidHJlZW1hcFwiPT09aT90aGlzLnNlcmllc0luZGV4PXQuc2VyaWVzTnVtYmVyOnRoaXMuc2VyaWVzSW5kZXg9dC5zZXJpZXNOdW1iZXIlZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsdGhpcy5zZXJpZXNJbmRleH19LHtrZXk6XCJmaWxsUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLm9wdHM9dDt2YXIgaSxhLHMscj10aGlzLncuY29uZmlnO3RoaXMuc2VyaWVzSW5kZXg9dGhpcy5nZXRTZXJpZXNJbmRleCh0KTt2YXIgbz10aGlzLmdldEZpbGxDb2xvcnMoKVt0aGlzLnNlcmllc0luZGV4XTt2b2lkIDAhPT1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW3RoaXMuc2VyaWVzSW5kZXhdJiYobz1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW3RoaXMuc2VyaWVzSW5kZXhdKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBvJiYobz1vKHtzZXJpZXNJbmRleDp0aGlzLnNlcmllc0luZGV4LGRhdGFQb2ludEluZGV4OnQuZGF0YVBvaW50SW5kZXgsdmFsdWU6dC52YWx1ZSx3OmV9KSk7dmFyIG49dC5maWxsVHlwZT90LmZpbGxUeXBlOnRoaXMuZ2V0RmlsbFR5cGUodGhpcy5zZXJpZXNJbmRleCksbD1BcnJheS5pc0FycmF5KHIuZmlsbC5vcGFjaXR5KT9yLmZpbGwub3BhY2l0eVt0aGlzLnNlcmllc0luZGV4XTpyLmZpbGwub3BhY2l0eTt0LmNvbG9yJiYobz10LmNvbG9yKSxvfHwobz1cIiNmZmZcIixjb25zb2xlLndhcm4oXCJ1bmRlZmluZWQgY29sb3IgLSBBcGV4Q2hhcnRzXCIpKTt2YXIgaD1vO2lmKC0xPT09by5pbmRleE9mKFwicmdiXCIpP28ubGVuZ3RoPDkmJihoPXguaGV4VG9SZ2JhKG8sbCkpOm8uaW5kZXhPZihcInJnYmFcIik+LTEmJihsPXguZ2V0T3BhY2l0eUZyb21SR0JBKG8pKSx0Lm9wYWNpdHkmJihsPXQub3BhY2l0eSksXCJwYXR0ZXJuXCI9PT1uJiYoYT10aGlzLmhhbmRsZVBhdHRlcm5GaWxsKHtmaWxsQ29uZmlnOnQuZmlsbENvbmZpZyxwYXR0ZXJuRmlsbDphLGZpbGxDb2xvcjpvLGZpbGxPcGFjaXR5OmwsZGVmYXVsdENvbG9yOmh9KSksXCJncmFkaWVudFwiPT09biYmKHM9dGhpcy5oYW5kbGVHcmFkaWVudEZpbGwoe2ZpbGxDb25maWc6dC5maWxsQ29uZmlnLGZpbGxDb2xvcjpvLGZpbGxPcGFjaXR5OmwsaTp0aGlzLnNlcmllc0luZGV4fSkpLFwiaW1hZ2VcIj09PW4pe3ZhciBjPXIuZmlsbC5pbWFnZS5zcmMsZD10LnBhdHRlcm5JRD90LnBhdHRlcm5JRDpcIlwiO3RoaXMuY2xpcHBlZEltZ0FyZWEoe29wYWNpdHk6bCxpbWFnZTpBcnJheS5pc0FycmF5KGMpP3Quc2VyaWVzTnVtYmVyPGMubGVuZ3RoP2NbdC5zZXJpZXNOdW1iZXJdOmNbMF06Yyx3aWR0aDp0LndpZHRoP3Qud2lkdGg6dm9pZCAwLGhlaWdodDp0LmhlaWdodD90LmhlaWdodDp2b2lkIDAscGF0dGVyblVuaXRzOnQucGF0dGVyblVuaXRzLHBhdHRlcm5JRDpcInBhdHRlcm5cIi5jb25jYXQoZS5nbG9iYWxzLmN1aWQpLmNvbmNhdCh0LnNlcmllc051bWJlcisxKS5jb25jYXQoZCl9KSxpPVwidXJsKCNwYXR0ZXJuXCIuY29uY2F0KGUuZ2xvYmFscy5jdWlkKS5jb25jYXQodC5zZXJpZXNOdW1iZXIrMSkuY29uY2F0KGQsXCIpXCIpfWVsc2UgaT1cImdyYWRpZW50XCI9PT1uP3M6XCJwYXR0ZXJuXCI9PT1uP2E6aDtyZXR1cm4gdC5zb2xpZCYmKGk9aCksaX19LHtrZXk6XCJnZXRGaWxsVHlwZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm4gQXJyYXkuaXNBcnJheShlLmNvbmZpZy5maWxsLnR5cGUpP2UuY29uZmlnLmZpbGwudHlwZVt0XTplLmNvbmZpZy5maWxsLnR5cGV9fSx7a2V5OlwiZ2V0RmlsbENvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcsaT10aGlzLm9wdHMsYT1bXTtyZXR1cm4gdC5nbG9iYWxzLmNvbWJvQ2hhcnRzP1wibGluZVwiPT09dC5jb25maWcuc2VyaWVzW3RoaXMuc2VyaWVzSW5kZXhdLnR5cGU/QXJyYXkuaXNBcnJheSh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk/YT10Lmdsb2JhbHMuc3Ryb2tlLmNvbG9yczphLnB1c2godC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpOkFycmF5LmlzQXJyYXkodC5nbG9iYWxzLmZpbGwuY29sb3JzKT9hPXQuZ2xvYmFscy5maWxsLmNvbG9yczphLnB1c2godC5nbG9iYWxzLmZpbGwuY29sb3JzKTpcImxpbmVcIj09PWUuY2hhcnQudHlwZT9BcnJheS5pc0FycmF5KHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKT9hPXQuZ2xvYmFscy5zdHJva2UuY29sb3JzOmEucHVzaCh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk6QXJyYXkuaXNBcnJheSh0Lmdsb2JhbHMuZmlsbC5jb2xvcnMpP2E9dC5nbG9iYWxzLmZpbGwuY29sb3JzOmEucHVzaCh0Lmdsb2JhbHMuZmlsbC5jb2xvcnMpLHZvaWQgMCE9PWkuZmlsbENvbG9ycyYmKGE9W10sQXJyYXkuaXNBcnJheShpLmZpbGxDb2xvcnMpP2E9aS5maWxsQ29sb3JzLnNsaWNlKCk6YS5wdXNoKGkuZmlsbENvbG9ycykpLGF9fSx7a2V5OlwiaGFuZGxlUGF0dGVybkZpbGxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpbGxDb25maWcsaT10LnBhdHRlcm5GaWxsLGE9dC5maWxsQ29sb3Iscz10LmZpbGxPcGFjaXR5LHI9dC5kZWZhdWx0Q29sb3Isbz10aGlzLncuY29uZmlnLmZpbGw7ZSYmKG89ZSk7dmFyIG49dGhpcy5vcHRzLGw9bmV3IG0odGhpcy5jdHgpLGg9QXJyYXkuaXNBcnJheShvLnBhdHRlcm4uc3Ryb2tlV2lkdGgpP28ucGF0dGVybi5zdHJva2VXaWR0aFt0aGlzLnNlcmllc0luZGV4XTpvLnBhdHRlcm4uc3Ryb2tlV2lkdGgsYz1hO0FycmF5LmlzQXJyYXkoby5wYXR0ZXJuLnN0eWxlKT9pPXZvaWQgMCE9PW8ucGF0dGVybi5zdHlsZVtuLnNlcmllc051bWJlcl0/bC5kcmF3UGF0dGVybihvLnBhdHRlcm4uc3R5bGVbbi5zZXJpZXNOdW1iZXJdLG8ucGF0dGVybi53aWR0aCxvLnBhdHRlcm4uaGVpZ2h0LGMsaCxzKTpyOmk9bC5kcmF3UGF0dGVybihvLnBhdHRlcm4uc3R5bGUsby5wYXR0ZXJuLndpZHRoLG8ucGF0dGVybi5oZWlnaHQsYyxoLHMpO3JldHVybiBpfX0se2tleTpcImhhbmRsZUdyYWRpZW50RmlsbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXQuZmlsbENvbG9yLGE9dC5maWxsT3BhY2l0eSxzPXQuZmlsbENvbmZpZyxyPXQuaSxvPXRoaXMudy5jb25maWcuZmlsbDtzJiYobz1lKGUoe30sbykscykpO3ZhciBuLGw9dGhpcy5vcHRzLGg9bmV3IG0odGhpcy5jdHgpLGM9bmV3IHgsZD1vLmdyYWRpZW50LnR5cGUsZz1pLHU9dm9pZCAwPT09by5ncmFkaWVudC5vcGFjaXR5RnJvbT9hOkFycmF5LmlzQXJyYXkoby5ncmFkaWVudC5vcGFjaXR5RnJvbSk/by5ncmFkaWVudC5vcGFjaXR5RnJvbVtyXTpvLmdyYWRpZW50Lm9wYWNpdHlGcm9tO2cuaW5kZXhPZihcInJnYmFcIik+LTEmJih1PXguZ2V0T3BhY2l0eUZyb21SR0JBKGcpKTt2YXIgcD12b2lkIDA9PT1vLmdyYWRpZW50Lm9wYWNpdHlUbz9hOkFycmF5LmlzQXJyYXkoby5ncmFkaWVudC5vcGFjaXR5VG8pP28uZ3JhZGllbnQub3BhY2l0eVRvW3JdOm8uZ3JhZGllbnQub3BhY2l0eVRvO2lmKHZvaWQgMD09PW8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc3x8MD09PW8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9ycy5sZW5ndGgpbj1cImRhcmtcIj09PW8uZ3JhZGllbnQuc2hhZGU/Yy5zaGFkZUNvbG9yKC0xKnBhcnNlRmxvYXQoby5ncmFkaWVudC5zaGFkZUludGVuc2l0eSksaS5pbmRleE9mKFwicmdiXCIpPi0xP3gucmdiMmhleChpKTppKTpjLnNoYWRlQ29sb3IocGFyc2VGbG9hdChvLmdyYWRpZW50LnNoYWRlSW50ZW5zaXR5KSxpLmluZGV4T2YoXCJyZ2JcIik+LTE/eC5yZ2IyaGV4KGkpOmkpO2Vsc2UgaWYoby5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzW2wuc2VyaWVzTnVtYmVyXSl7dmFyIGY9by5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzW2wuc2VyaWVzTnVtYmVyXTtuPWYsZi5pbmRleE9mKFwicmdiYVwiKT4tMSYmKHA9eC5nZXRPcGFjaXR5RnJvbVJHQkEoZikpfWVsc2Ugbj1pO2lmKG8uZ3JhZGllbnQuZ3JhZGllbnRGcm9tJiYoZz1vLmdyYWRpZW50LmdyYWRpZW50RnJvbSksby5ncmFkaWVudC5ncmFkaWVudFRvJiYobj1vLmdyYWRpZW50LmdyYWRpZW50VG8pLG8uZ3JhZGllbnQuaW52ZXJzZUNvbG9ycyl7dmFyIGI9ZztnPW4sbj1ifXJldHVybiBnLmluZGV4T2YoXCJyZ2JcIik+LTEmJihnPXgucmdiMmhleChnKSksbi5pbmRleE9mKFwicmdiXCIpPi0xJiYobj14LnJnYjJoZXgobikpLGguZHJhd0dyYWRpZW50KGQsZyxuLHUscCxsLnNpemUsby5ncmFkaWVudC5zdG9wcyxvLmdyYWRpZW50LmNvbG9yU3RvcHMscil9fV0pLHR9KCksSD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJzZXRHbG9iYWxNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodC5nbG9iYWxzLm1hcmtlcnMuc2l6ZT1BcnJheS5pc0FycmF5KHQuY29uZmlnLm1hcmtlcnMuc2l6ZSk/dC5jb25maWcubWFya2Vycy5zaXplOlt0LmNvbmZpZy5tYXJrZXJzLnNpemVdLHQuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPjApe2lmKHQuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKzEpZm9yKHZhciBlPTA7ZTw9dC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7ZSsrKXZvaWQgMD09PXQuZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0mJnQuZ2xvYmFscy5tYXJrZXJzLnNpemUucHVzaCh0Lmdsb2JhbHMubWFya2Vycy5zaXplWzBdKX1lbHNlIHQuZ2xvYmFscy5tYXJrZXJzLnNpemU9dC5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY29uZmlnLm1hcmtlcnMuc2l6ZX0pKX19LHtrZXk6XCJwbG90Q2hhcnRNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHMscj1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdLG89dGhpcy53LG49ZSxsPXQsaD1udWxsLGM9bmV3IG0odGhpcy5jdHgpLGQ9by5jb25maWcubWFya2Vycy5kaXNjcmV0ZSYmby5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5sZW5ndGg7aWYoKG8uZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0+MHx8cnx8ZCkmJihoPWMuZ3JvdXAoe2NsYXNzOnJ8fGQ/XCJcIjpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIn0pKS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdChvLmdsb2JhbHMuY3VpZCxcIilcIikpLEFycmF5LmlzQXJyYXkobC54KSlmb3IodmFyIGc9MDtnPGwueC5sZW5ndGg7ZysrKXt2YXIgdT1pOzE9PT1pJiYwPT09ZyYmKHU9MCksMT09PWkmJjE9PT1nJiYodT0xKTt2YXIgcD1cImFwZXhjaGFydHMtbWFya2VyXCI7aWYoXCJsaW5lXCIhPT1vLmNvbmZpZy5jaGFydC50eXBlJiZcImFyZWFcIiE9PW8uY29uZmlnLmNoYXJ0LnR5cGV8fG8uZ2xvYmFscy5jb21ib0NoYXJ0c3x8by5jb25maWcudG9vbHRpcC5pbnRlcnNlY3R8fChwKz1cIiBuby1wb2ludGVyLWV2ZW50c1wiKSwoQXJyYXkuaXNBcnJheShvLmNvbmZpZy5tYXJrZXJzLnNpemUpP28uZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0+MDpvLmNvbmZpZy5tYXJrZXJzLnNpemU+MCl8fHJ8fGQpe3guaXNOdW1iZXIobC55W2ddKT9wKz1cIiB3XCIuY29uY2F0KHgucmFuZG9tSWQoKSk6cD1cImFwZXhjaGFydHMtbnVsbHBvaW50XCI7dmFyIGY9dGhpcy5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOnAsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDp1fSk7by5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0mJihvLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVt1XS5maWxsQ29sb3ImJihmLnBvaW50RmlsbENvbG9yPW8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLmZpbGxDb2xvciksby5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uc3Ryb2tlQ29sb3ImJihmLnBvaW50U3Ryb2tlQ29sb3I9by5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uc3Ryb2tlQ29sb3IpKSxhJiYoZi5wU2l6ZT1hKSwobC54W2ddPDB8fGwueFtnXT5vLmdsb2JhbHMuZ3JpZFdpZHRofHxsLnlbZ108LW8uZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplfHxsLnlbZ10+by5nbG9iYWxzLmdyaWRIZWlnaHQrby5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUpJiYoZi5wU2l6ZT0wKSwocz1jLmRyYXdNYXJrZXIobC54W2ddLGwueVtnXSxmKSkuYXR0cihcInJlbFwiLHUpLHMuYXR0cihcImpcIix1KSxzLmF0dHIoXCJpbmRleFwiLGUpLHMubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsZi5wU2l6ZSksbmV3IHYodGhpcy5jdHgpLnNldFNlbGVjdGlvbkZpbHRlcihzLGUsdSksdGhpcy5hZGRFdmVudHMocyksaCYmaC5hZGQocyl9ZWxzZSB2b2lkIDA9PT1vLmdsb2JhbHMucG9pbnRzQXJyYXlbZV0mJihvLmdsb2JhbHMucG9pbnRzQXJyYXlbZV09W10pLG8uZ2xvYmFscy5wb2ludHNBcnJheVtlXS5wdXNoKFtsLnhbZ10sbC55W2ddXSl9cmV0dXJuIGh9fSx7a2V5OlwiZ2V0TWFya2VyQ29uZmlnXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jc3NDbGFzcyxpPXQuc2VyaWVzSW5kZXgsYT10LmRhdGFQb2ludEluZGV4LHM9dm9pZCAwPT09YT9udWxsOmEscj10LmZpbmlzaFJhZGl1cyxvPXZvaWQgMD09PXI/bnVsbDpyLG49dGhpcy53LGw9dGhpcy5nZXRNYXJrZXJTdHlsZShpKSxoPW4uZ2xvYmFscy5tYXJrZXJzLnNpemVbaV0sYz1uLmNvbmZpZy5tYXJrZXJzO3JldHVybiBudWxsIT09cyYmYy5kaXNjcmV0ZS5sZW5ndGgmJmMuZGlzY3JldGUubWFwKChmdW5jdGlvbih0KXt0LnNlcmllc0luZGV4PT09aSYmdC5kYXRhUG9pbnRJbmRleD09PXMmJihsLnBvaW50U3Ryb2tlQ29sb3I9dC5zdHJva2VDb2xvcixsLnBvaW50RmlsbENvbG9yPXQuZmlsbENvbG9yLGg9dC5zaXplLGwucG9pbnRTaGFwZT10LnNoYXBlKX0pKSx7cFNpemU6bnVsbD09PW8/aDpvLHBSYWRpdXM6Yy5yYWRpdXMsd2lkdGg6QXJyYXkuaXNBcnJheShjLndpZHRoKT9jLndpZHRoW2ldOmMud2lkdGgsaGVpZ2h0OkFycmF5LmlzQXJyYXkoYy5oZWlnaHQpP2MuaGVpZ2h0W2ldOmMuaGVpZ2h0LHBvaW50U3Ryb2tlV2lkdGg6QXJyYXkuaXNBcnJheShjLnN0cm9rZVdpZHRoKT9jLnN0cm9rZVdpZHRoW2ldOmMuc3Ryb2tlV2lkdGgscG9pbnRTdHJva2VDb2xvcjpsLnBvaW50U3Ryb2tlQ29sb3IscG9pbnRGaWxsQ29sb3I6bC5wb2ludEZpbGxDb2xvcixzaGFwZTpsLnBvaW50U2hhcGV8fChBcnJheS5pc0FycmF5KGMuc2hhcGUpP2Muc2hhcGVbaV06Yy5zaGFwZSksY2xhc3M6ZSxwb2ludFN0cm9rZU9wYWNpdHk6QXJyYXkuaXNBcnJheShjLnN0cm9rZU9wYWNpdHkpP2Muc3Ryb2tlT3BhY2l0eVtpXTpjLnN0cm9rZU9wYWNpdHkscG9pbnRTdHJva2VEYXNoQXJyYXk6QXJyYXkuaXNBcnJheShjLnN0cm9rZURhc2hBcnJheSk/Yy5zdHJva2VEYXNoQXJyYXlbaV06Yy5zdHJva2VEYXNoQXJyYXkscG9pbnRGaWxsT3BhY2l0eTpBcnJheS5pc0FycmF5KGMuZmlsbE9wYWNpdHkpP2MuZmlsbE9wYWNpdHlbaV06Yy5maWxsT3BhY2l0eSxzZXJpZXNJbmRleDppfX19LHtrZXk6XCJhZGRFdmVudHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCk7dC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsaS5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixpLnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcy5jdHgsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcy5jdHgsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixlLmNvbmZpZy5tYXJrZXJzLm9uQ2xpY2spLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiZGJsY2xpY2tcIixlLmNvbmZpZy5tYXJrZXJzLm9uRGJsQ2xpY2spLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMuY3R4LHQpLHtwYXNzaXZlOiEwfSl9fSx7a2V5OlwiZ2V0TWFya2VyU3R5bGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmdsb2JhbHMubWFya2Vycy5jb2xvcnMsYT1lLmNvbmZpZy5tYXJrZXJzLnN0cm9rZUNvbG9yfHxlLmNvbmZpZy5tYXJrZXJzLnN0cm9rZUNvbG9ycztyZXR1cm57cG9pbnRTdHJva2VDb2xvcjpBcnJheS5pc0FycmF5KGEpP2FbdF06YSxwb2ludEZpbGxDb2xvcjpBcnJheS5pc0FycmF5KGkpP2lbdF06aX19fV0pLHR9KCksRD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZH1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1uZXcgbSh0aGlzLmN0eCkscj1pLnJlYWxJbmRleCxvPWkucG9pbnRzUG9zLG49aS56UmF0aW8sbD1pLmVsUGFyZW50LGg9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIGFwZXhjaGFydHMtc2VyaWVzLVwiLmNvbmNhdChhLmNvbmZpZy5jaGFydC50eXBlKX0pO2lmKGguYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQoYS5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBcnJheS5pc0FycmF5KG8ueCkpZm9yKHZhciBjPTA7YzxvLngubGVuZ3RoO2MrKyl7dmFyIGQ9ZSsxLGc9ITA7MD09PWUmJjA9PT1jJiYoZD0wKSwwPT09ZSYmMT09PWMmJihkPTEpO3ZhciB1PTAscD1hLmdsb2JhbHMubWFya2Vycy5zaXplW3JdO2lmKG4hPT0xLzApe3ZhciBmPWEuY29uZmlnLnBsb3RPcHRpb25zLmJ1YmJsZTtwPWEuZ2xvYmFscy5zZXJpZXNaW3JdW2RdLGYuelNjYWxpbmcmJihwLz1uKSxmLm1pbkJ1YmJsZVJhZGl1cyYmcDxmLm1pbkJ1YmJsZVJhZGl1cyYmKHA9Zi5taW5CdWJibGVSYWRpdXMpLGYubWF4QnViYmxlUmFkaXVzJiZwPmYubWF4QnViYmxlUmFkaXVzJiYocD1mLm1heEJ1YmJsZVJhZGl1cyl9YS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkfHwodT1wKTt2YXIgeD1vLnhbY10sYj1vLnlbY107aWYodT11fHwwLG51bGwhPT1iJiZ2b2lkIDAhPT1hLmdsb2JhbHMuc2VyaWVzW3JdW2RdfHwoZz0hMSksZyl7dmFyIHY9dGhpcy5kcmF3UG9pbnQoeCxiLHUscCxyLGQsZSk7aC5hZGQodil9bC5hZGQoaCl9fX0se2tleTpcImRyYXdQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPXRoaXMudyxsPXMsaD1uZXcgYih0aGlzLmN0eCksYz1uZXcgdih0aGlzLmN0eCksZD1uZXcgUih0aGlzLmN0eCksZz1uZXcgSCh0aGlzLmN0eCksdT1uZXcgbSh0aGlzLmN0eCkscD1nLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLW1hcmtlclwiLHNlcmllc0luZGV4OmwsZGF0YVBvaW50SW5kZXg6cixmaW5pc2hSYWRpdXM6XCJidWJibGVcIj09PW4uY29uZmlnLmNoYXJ0LnR5cGV8fG4uZ2xvYmFscy5jb21ib0NoYXJ0cyYmbi5jb25maWcuc2VyaWVzW3NdJiZcImJ1YmJsZVwiPT09bi5jb25maWcuc2VyaWVzW3NdLnR5cGU/YTpudWxsfSk7YT1wLnBTaXplO3ZhciBmLHg9ZC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnMsZGF0YVBvaW50SW5kZXg6cixjb2xvcjpwLnBvaW50RmlsbENvbG9yLHBhdHRlcm5Vbml0czpcIm9iamVjdEJvdW5kaW5nQm94XCIsdmFsdWU6bi5nbG9iYWxzLnNlcmllc1tzXVtvXX0pO2lmKFwiY2lyY2xlXCI9PT1wLnNoYXBlP2Y9dS5kcmF3Q2lyY2xlKGkpOlwic3F1YXJlXCIhPT1wLnNoYXBlJiZcInJlY3RcIiE9PXAuc2hhcGV8fChmPXUuZHJhd1JlY3QoMCwwLHAud2lkdGgtcC5wb2ludFN0cm9rZVdpZHRoLzIscC5oZWlnaHQtcC5wb2ludFN0cm9rZVdpZHRoLzIscC5wUmFkaXVzKSksbi5jb25maWcuc2VyaWVzW2xdLmRhdGFbcl0mJm4uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdLmZpbGxDb2xvciYmKHg9bi5jb25maWcuc2VyaWVzW2xdLmRhdGFbcl0uZmlsbENvbG9yKSxmLmF0dHIoe3g6dC1wLndpZHRoLzItcC5wb2ludFN0cm9rZVdpZHRoLzIseTplLXAuaGVpZ2h0LzItcC5wb2ludFN0cm9rZVdpZHRoLzIsY3g6dCxjeTplLGZpbGw6eCxcImZpbGwtb3BhY2l0eVwiOnAucG9pbnRGaWxsT3BhY2l0eSxzdHJva2U6cC5wb2ludFN0cm9rZUNvbG9yLHI6YSxcInN0cm9rZS13aWR0aFwiOnAucG9pbnRTdHJva2VXaWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjpwLnBvaW50U3Ryb2tlRGFzaEFycmF5LFwic3Ryb2tlLW9wYWNpdHlcIjpwLnBvaW50U3Ryb2tlT3BhY2l0eX0pLG4uY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIHk9bi5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztjLmRyb3BTaGFkb3coZix5LHMpfWlmKCF0aGlzLmluaXRpYWxBbmltfHxuLmdsb2JhbHMuZGF0YUNoYW5nZWR8fG4uZ2xvYmFscy5yZXNpemVkKW4uZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMDtlbHNle3ZhciB3PW4uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQ7aC5hbmltYXRlTWFya2VyKGYsMCxcImNpcmNsZVwiPT09cC5zaGFwZT9hOnt3aWR0aDpwLndpZHRoLGhlaWdodDpwLmhlaWdodH0sdyxuLmdsb2JhbHMuZWFzaW5nLChmdW5jdGlvbigpe3dpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2guYW5pbWF0aW9uQ29tcGxldGVkKGYpfSksMTAwKX0pKX1pZihuLmdsb2JhbHMuZGF0YUNoYW5nZWQmJlwiY2lyY2xlXCI9PT1wLnNoYXBlKWlmKHRoaXMuZHluYW1pY0FuaW0pe3ZhciBrLEEsUyxDLEw9bi5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkO251bGwhPShDPW4uZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdJiZuLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXVtvXSkmJihrPUMueCxBPUMueSxTPXZvaWQgMCE9PUMucj9DLnI6YSk7Zm9yKHZhciBQPTA7UDxuLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDtQKyspbi5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc1tQXS5pbmRleD09PXMmJihMPTEsYT0wKTswPT09dCYmMD09PWUmJihhPTApLGguYW5pbWF0ZUNpcmNsZShmLHtjeDprLGN5OkEscjpTfSx7Y3g6dCxjeTplLHI6YX0sTCxuLmdsb2JhbHMuZWFzaW5nKX1lbHNlIGYuYXR0cih7cjphfSk7cmV0dXJuIGYuYXR0cih7cmVsOnIsajpyLGluZGV4OnMsXCJkZWZhdWx0LW1hcmtlci1zaXplXCI6YX0pLGMuc2V0U2VsZWN0aW9uRmlsdGVyKGYscyxyKSxnLmFkZEV2ZW50cyhmKSxmLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbWFya2VyXCIpLGZ9fSx7a2V5OlwiY2VudGVyVGV4dEluQnViYmxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybnt5OnQrPXBhcnNlSW50KGUuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLzR9fX1dKSx0fSgpLE89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRhdGFMYWJlbHNDb3JyZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49dGhpcy53LGw9ITEsaD1uZXcgbSh0aGlzLmN0eCkuZ2V0VGV4dFJlY3RzKGksbyksYz1oLndpZHRoLGQ9aC5oZWlnaHQ7ZTwwJiYoZT0wKSxlPm4uZ2xvYmFscy5ncmlkSGVpZ2h0K2QmJihlPW4uZ2xvYmFscy5ncmlkSGVpZ2h0K2QvMiksdm9pZCAwPT09bi5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXSYmKG4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV09W10pLG4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV0ucHVzaCh7eDp0LHk6ZSx3aWR0aDpjLGhlaWdodDpkfSk7dmFyIGc9bi5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXS5sZW5ndGgtMix1PXZvaWQgMCE9PW4uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXT9uLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbYV1bbi5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW2FdLmxlbmd0aC0xXTowO2lmKHZvaWQgMCE9PW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV1bZ10pe3ZhciBwPW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV1bdV07KHQ+cC54K3Aud2lkdGh8fGU+cC55K3AuaGVpZ2h0fHxlK2Q8cC55fHx0K2M8cC54KSYmKGw9ITApfXJldHVybigwPT09c3x8cikmJihsPSEwKSx7eDp0LHk6ZSx0ZXh0UmVjdHM6aCxkcmF3bmV4dExhYmVsOmx9fX0se2tleTpcImRyYXdEYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC50eXBlLGE9dC5wb3Mscz10Lmkscj10Lmosbz10LmlzUmFuZ2VTdGFydCxuPXQuc3Ryb2tlV2lkdGgsbD12b2lkIDA9PT1uPzI6bixoPXRoaXMudyxjPW5ldyBtKHRoaXMuY3R4KSxkPWguY29uZmlnLmRhdGFMYWJlbHMsZz0wLHU9MCxwPXIsZj1udWxsO2lmKCFkLmVuYWJsZWR8fCFBcnJheS5pc0FycmF5KGEueCkpcmV0dXJuIGY7Zj1jLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO2Zvcih2YXIgeD0wO3g8YS54Lmxlbmd0aDt4KyspaWYoZz1hLnhbeF0rZC5vZmZzZXRYLHU9YS55W3hdK2Qub2Zmc2V0WStsLCFpc05hTihnKSl7MT09PXImJjA9PT14JiYocD0wKSwxPT09ciYmMT09PXgmJihwPTEpO3ZhciBiPWguZ2xvYmFscy5zZXJpZXNbc11bcF07XCJyYW5nZUFyZWFcIj09PWkmJihiPW8/aC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbc11bcF06aC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3NdW3BdKTt2YXIgdj1cIlwiLHk9ZnVuY3Rpb24odCl7cmV0dXJuIGguY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKHQse2N0eDplLmN0eCxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnAsdzpofSl9O2lmKFwiYnViYmxlXCI9PT1oLmNvbmZpZy5jaGFydC50eXBlKXY9eShiPWguZ2xvYmFscy5zZXJpZXNaW3NdW3BdKSx1PWEueVt4XSx1PW5ldyBEKHRoaXMuY3R4KS5jZW50ZXJUZXh0SW5CdWJibGUodSxzLHApLnk7ZWxzZSB2b2lkIDAhPT1iJiYodj15KGIpKTt0aGlzLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpnLHk6dSx0ZXh0OnYsaTpzLGo6cCxwYXJlbnQ6ZixvZmZzZXRDb3JyZWN0aW9uOiEwLGRhdGFMYWJlbHNDb25maWc6aC5jb25maWcuZGF0YUxhYmVsc30pfXJldHVybiBmfX0se2tleTpcInBsb3REYXRhTGFiZWxzVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPXQueCxzPXQueSxyPXQuaSxvPXQuaixuPXQudGV4dCxsPXQudGV4dEFuY2hvcixoPXQuZm9udFNpemUsYz10LnBhcmVudCxkPXQuZGF0YUxhYmVsc0NvbmZpZyxnPXQuY29sb3IsdT10LmFsd2F5c0RyYXdEYXRhTGFiZWwscD10Lm9mZnNldENvcnJlY3Rpb247aWYoIShBcnJheS5pc0FycmF5KGUuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzKSYmZS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihyKTwwKSl7dmFyIGY9e3g6YSx5OnMsZHJhd25leHRMYWJlbDohMCx0ZXh0UmVjdHM6bnVsbH07cCYmKGY9dGhpcy5kYXRhTGFiZWxzQ29ycmVjdGlvbihhLHMsbixyLG8sdSxwYXJzZUludChkLnN0eWxlLmZvbnRTaXplLDEwKSkpLGUuZ2xvYmFscy56b29tZWR8fChhPWYueCxzPWYueSksZi50ZXh0UmVjdHMmJihhPC0xMC1mLnRleHRSZWN0cy53aWR0aHx8YT5lLmdsb2JhbHMuZ3JpZFdpZHRoK2YudGV4dFJlY3RzLndpZHRoKzEwKSYmKG49XCJcIik7dmFyIHg9ZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW3JdOygoXCJiYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpJiZlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWR8fGUuY29uZmlnLmRhdGFMYWJlbHMuZGlzdHJpYnV0ZWQpJiYoeD1lLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnNbb10pLFwiZnVuY3Rpb25cIj09dHlwZW9mIHgmJih4PXgoe3NlcmllczplLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnIsZGF0YVBvaW50SW5kZXg6byx3OmV9KSksZyYmKHg9Zyk7dmFyIGI9ZC5vZmZzZXRYLHk9ZC5vZmZzZXRZO2lmKFwiYmFyXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiZcInJhbmdlQmFyXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlfHwoYj0wLHk9MCksZi5kcmF3bmV4dExhYmVsKXt2YXIgdz1pLmRyYXdUZXh0KHt3aWR0aDoxMDAsaGVpZ2h0OnBhcnNlSW50KGQuc3R5bGUuZm9udFNpemUsMTApLHg6YStiLHk6cyt5LGZvcmVDb2xvcjp4LHRleHRBbmNob3I6bHx8ZC50ZXh0QW5jaG9yLHRleHQ6bixmb250U2l6ZTpofHxkLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZC5zdHlsZS5mb250V2VpZ2h0fHxcIm5vcm1hbFwifSk7aWYody5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsXCIsY3g6YSxjeTpzfSksZC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBrPWQuZHJvcFNoYWRvdztuZXcgdih0aGlzLmN0eCkuZHJvcFNoYWRvdyh3LGspfWMuYWRkKHcpLHZvaWQgMD09PWUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXSYmKGUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXT1bXSksZS5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW3JdLnB1c2gobyl9fX19LHtrZXk6XCJhZGRCYWNrZ3JvdW5kVG9EYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLmRhdGFMYWJlbHMuYmFja2dyb3VuZCxzPWEucGFkZGluZyxyPWEucGFkZGluZy8yLG89ZS53aWR0aCxuPWUuaGVpZ2h0LGw9bmV3IG0odGhpcy5jdHgpLmRyYXdSZWN0KGUueC1zLGUueS1yLzIsbysyKnMsbityLGEuYm9yZGVyUmFkaXVzLFwidHJhbnNwYXJlbnRcIj09PWkuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQ/XCIjZmZmXCI6aS5jb25maWcuY2hhcnQuYmFja2dyb3VuZCxhLm9wYWNpdHksYS5ib3JkZXJXaWR0aCxhLmJvcmRlckNvbG9yKTthLmRyb3BTaGFkb3cuZW5hYmxlZCYmbmV3IHYodGhpcy5jdHgpLmRyb3BTaGFkb3cobCxhLmRyb3BTaGFkb3cpO3JldHVybiBsfX0se2tleTpcImRhdGFMYWJlbHNCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYoXCJidWJibGVcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUpZm9yKHZhciBlPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzIHRleHRcIiksaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lW2ldLHM9YS5nZXRCQm94KCkscj1udWxsO2lmKHMud2lkdGgmJnMuaGVpZ2h0JiYocj10aGlzLmFkZEJhY2tncm91bmRUb0RhdGFMYWJlbChhLHMpKSxyKXthLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIubm9kZSxhKTt2YXIgbz1hLmdldEF0dHJpYnV0ZShcImZpbGxcIik7dC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkJiYhdC5nbG9iYWxzLnJlc2l6ZWQmJiF0Lmdsb2JhbHMuZGF0YUNoYW5nZWQ/ci5hbmltYXRlKCkuYXR0cih7ZmlsbDpvfSk6ci5hdHRyKHtmaWxsOm99KSxhLnNldEF0dHJpYnV0ZShcImZpbGxcIix0LmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQuZm9yZUNvbG9yKX19fX0se2tleTpcImJyaW5nRm9yd2FyZFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzOmxhc3QtY2hpbGRcIiksYT0wO2E8ZS5sZW5ndGg7YSsrKWkmJmkuaW5zZXJ0QmVmb3JlKGVbYV0saS5uZXh0U2libGluZyl9fV0pLHR9KCksTj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3M9XCJsZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlXCJ9cmV0dXJuIHIodCxbe2tleTpcImdldEFsbFNlcmllc0Vsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtc2VyaWVzXCIpfX0se2tleTpcImdldFNlcmllc0J5TmFtZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1pbm5lciAuYXBleGNoYXJ0cy1zZXJpZXNbc2VyaWVzTmFtZT0nXCIuY29uY2F0KHguZXNjYXBlU3RyaW5nKHQpLFwiJ11cIikpfX0se2tleTpcImlzU2VyaWVzSGlkZGVuXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRTZXJpZXNCeU5hbWUodCksaT1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKTtyZXR1cm57aXNIaWRkZW46ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWRcIikscmVhbEluZGV4Oml9fX0se2tleTpcImFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztmdW5jdGlvbiBhKGkpe2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKWlbYV0uaW5kZXg9PT1lJiZ0Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZFwiKX1hKGkuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMpLGEoaS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcyl9fSx7a2V5OlwidG9nZ2xlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtyZXR1cm4gdGhpcy5jdHgubGVnZW5kLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhlLnJlYWxJbmRleCxlLmlzSGlkZGVuKSxlLmlzSGlkZGVufX0se2tleTpcInNob3dTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmlzU2VyaWVzSGlkZGVuKHQpO2UuaXNIaWRkZW4mJnRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsITApfX0se2tleTpcImhpZGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmlzU2VyaWVzSGlkZGVuKHQpO2UuaXNIaWRkZW58fHRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsITEpfX0se2tleTpcInJlc2V0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sYT10aGlzLncscz14LmNsb25lKGEuZ2xvYmFscy5pbml0aWFsU2VyaWVzKTthLmdsb2JhbHMucHJldmlvdXNQYXRocz1bXSxpPyhhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzPVtdLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXM9W10sYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXM9W10sYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXM9W10pOnM9dGhpcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhzKSxhLmNvbmZpZy5zZXJpZXM9cyx0JiYoZSYmKGEuZ2xvYmFscy56b29tZWQ9ITEsdGhpcy5jdHgudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpKSx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxhLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCkpfX0se2tleTpcImVtcHR5Q29sbGFwc2VkU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTA7aTx0Lmxlbmd0aDtpKyspZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihpKT4tMSYmKHRbaV0uZGF0YT1bXSk7cmV0dXJuIHR9fSx7a2V5OlwidG9nZ2xlU2VyaWVzT25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2V8fChlPXQudGFyZ2V0KTt2YXIgYT1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLCAuYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIpO2lmKFwibW91c2Vtb3ZlXCI9PT10LnR5cGUpe3ZhciBzPXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xLHI9bnVsbCxvPW51bGw7aS5nbG9iYWxzLmF4aXNDaGFydHN8fFwicmFkaWFsQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlP2kuZ2xvYmFscy5heGlzQ2hhcnRzPyhyPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQocyxcIiddXCIpKSxvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHMsXCInXVwiKSkpOnI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChzKzEsXCInXVwiKSk6cj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KHMrMSxcIiddIHBhdGhcIikpO2Zvcih2YXIgbj0wO248YS5sZW5ndGg7bisrKWFbbl0uY2xhc3NMaXN0LmFkZCh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpO251bGwhPT1yJiYoaS5nbG9iYWxzLmF4aXNDaGFydHN8fHIucGFyZW50Tm9kZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyksci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyksbnVsbCE9PW8mJm8uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpKX1lbHNlIGlmKFwibW91c2VvdXRcIj09PXQudHlwZSlmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKylhW2xdLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKX19LHtrZXk6XCJoaWdobGlnaHRSYW5nZUluU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9dGhpcy53LHM9YS5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtaGVhdG1hcC1yZWN0XCIpLHI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxzLmxlbmd0aDtlKyspc1tlXS5jbGFzc0xpc3RbdF0oaS5sZWdlbmRJbmFjdGl2ZUNsYXNzKX07aWYoXCJtb3VzZW1vdmVcIj09PXQudHlwZSl7dmFyIG89cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTE7cihcImFkZFwiKSxmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHMubGVuZ3RoO2UrKyl7dmFyIGE9cGFyc2VJbnQoc1tlXS5nZXRBdHRyaWJ1dGUoXCJ2YWxcIiksMTApO2E+PXQuZnJvbSYmYTw9dC50byYmc1tlXS5jbGFzc0xpc3QucmVtb3ZlKGkubGVnZW5kSW5hY3RpdmVDbGFzcyl9fShhLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmNvbG9yU2NhbGUucmFuZ2VzW29dKX1lbHNlXCJtb3VzZW91dFwiPT09dC50eXBlJiZyKFwicmVtb3ZlXCIpfX0se2tleTpcImdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCJhc2NcIixlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxpPXRoaXMudyxhPTA7aWYoaS5jb25maWcuc2VyaWVzLmxlbmd0aD4xKWZvcih2YXIgcz1pLmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGEpe3JldHVybiB0LmRhdGEmJnQuZGF0YS5sZW5ndGg+MCYmLTE9PT1pLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGEpJiYoIWkuZ2xvYmFscy5jb21ib0NoYXJ0c3x8MD09PWUubGVuZ3RofHxlLmxlbmd0aCYmZS5pbmRleE9mKGkuY29uZmlnLnNlcmllc1thXS50eXBlKT4tMSk/YTotMX0pKSxyPVwiYXNjXCI9PT10PzA6cy5sZW5ndGgtMTtcImFzY1wiPT09dD9yPHMubGVuZ3RoOnI+PTA7XCJhc2NcIj09PXQ/cisrOnItLSlpZigtMSE9PXNbcl0pe2E9c1tyXTticmVha31yZXR1cm4gYX19LHtrZXk6XCJnZXRCYXJTZXJpZXNJbmRpY2VzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuY29tYm9DaGFydHM/dGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVyblwiYmFyXCI9PT10LnR5cGV8fFwiY29sdW1uXCI9PT10LnR5cGU/ZTotMX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xIT09dH0pKTp0aGlzLncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSl9fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2Z1bmN0aW9uIGUoZSxpLGEpe2Zvcih2YXIgcz1lW2ldLmNoaWxkTm9kZXMscj17dHlwZTphLHBhdGhzOltdLHJlYWxJbmRleDplW2ldLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpfSxvPTA7bzxzLmxlbmd0aDtvKyspaWYoc1tvXS5oYXNBdHRyaWJ1dGUoXCJwYXRoVG9cIikpe3ZhciBuPXNbb10uZ2V0QXR0cmlidXRlKFwicGF0aFRvXCIpO3IucGF0aHMucHVzaCh7ZDpufSl9dC5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChyKX10Lmdsb2JhbHMucHJldmlvdXNQYXRocz1bXTtbXCJsaW5lXCIsXCJhcmVhXCIsXCJiYXJcIixcInJhbmdlYmFyXCIsXCJyYW5nZUFyZWFcIixcImNhbmRsZXN0aWNrXCIsXCJyYWRhclwiXS5mb3JFYWNoKChmdW5jdGlvbihpKXtmb3IodmFyIGEscz0oYT1pLHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoYSxcIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzXCIpKSkscj0wO3I8cy5sZW5ndGg7cisrKWUocyxyLGkpfSkpLHRoaXMuaGFuZGxlUHJldkJ1YmJsZVNjYXR0ZXJQYXRocyhcImJ1YmJsZVwiKSx0aGlzLmhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHMoXCJzY2F0dGVyXCIpO3ZhciBpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodC5jb25maWcuY2hhcnQudHlwZSxcIiAuYXBleGNoYXJ0cy1zZXJpZXNcIikpO2lmKGkubGVuZ3RoPjApZm9yKHZhciBhPWZ1bmN0aW9uKGUpe2Zvcih2YXIgaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsXCIgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChlLFwiJ10gcmVjdFwiKSksYT1bXSxzPWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBpW3RdLmdldEF0dHJpYnV0ZShlKX0scz17eDpwYXJzZUZsb2F0KGUoXCJ4XCIpKSx5OnBhcnNlRmxvYXQoZShcInlcIikpLHdpZHRoOnBhcnNlRmxvYXQoZShcIndpZHRoXCIpKSxoZWlnaHQ6cGFyc2VGbG9hdChlKFwiaGVpZ2h0XCIpKX07YS5wdXNoKHtyZWN0OnMsY29sb3I6aVt0XS5nZXRBdHRyaWJ1dGUoXCJjb2xvclwiKX0pfSxyPTA7cjxpLmxlbmd0aDtyKyspcyhyKTt0Lmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKGEpfSxzPTA7czxpLmxlbmd0aDtzKyspYShzKTt0Lmdsb2JhbHMuYXhpc0NoYXJ0c3x8KHQuZ2xvYmFscy5wcmV2aW91c1BhdGhzPXQuZ2xvYmFscy5zZXJpZXMpfX0se2tleTpcImhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1wiKSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKyl7Zm9yKHZhciBzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodCxcIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChhLFwiJ10gY2lyY2xlXCIpKSxyPVtdLG89MDtvPHMubGVuZ3RoO28rKylyLnB1c2goe3g6c1tvXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSx5OnNbb10uZ2V0QXR0cmlidXRlKFwiY3lcIikscjpzW29dLmdldEF0dHJpYnV0ZShcInJcIil9KTtlLmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKHIpfX19LHtrZXk6XCJjbGVhclByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMucHJldmlvdXNQYXRocz1bXSx0Lmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkPSExfX0se2tleTpcImhhbmRsZU5vRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcubm9EYXRhLGk9bmV3IG0odGhpcy5jdHgpLGE9dC5nbG9iYWxzLnN2Z1dpZHRoLzIscz10Lmdsb2JhbHMuc3ZnSGVpZ2h0LzIscj1cIm1pZGRsZVwiO2lmKHQuZ2xvYmFscy5ub0RhdGE9ITAsdC5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwLFwibGVmdFwiPT09ZS5hbGlnbj8oYT0xMCxyPVwic3RhcnRcIik6XCJyaWdodFwiPT09ZS5hbGlnbiYmKGE9dC5nbG9iYWxzLnN2Z1dpZHRoLTEwLHI9XCJlbmRcIiksXCJ0b3BcIj09PWUudmVydGljYWxBbGlnbj9zPTUwOlwiYm90dG9tXCI9PT1lLnZlcnRpY2FsQWxpZ24mJihzPXQuZ2xvYmFscy5zdmdIZWlnaHQtNTApLGErPWUub2Zmc2V0WCxzPXMrcGFyc2VJbnQoZS5zdHlsZS5mb250U2l6ZSwxMCkrMitlLm9mZnNldFksdm9pZCAwIT09ZS50ZXh0JiZcIlwiIT09ZS50ZXh0KXt2YXIgbz1pLmRyYXdUZXh0KHt4OmEseTpzLHRleHQ6ZS50ZXh0LHRleHRBbmNob3I6cixmb250U2l6ZTplLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS5zdHlsZS5mb250RmFtaWx5LGZvcmVDb2xvcjplLnN0eWxlLmNvbG9yLG9wYWNpdHk6MSxjbGFzczpcImFwZXhjaGFydHMtdGV4dC1ub2RhdGFcIn0pO3QuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG8pfX19LHtrZXk6XCJzZXROdWxsU2VyaWVzVG9aZXJvVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTA7aTx0Lmxlbmd0aDtpKyspaWYoMD09PXRbaV0ubGVuZ3RoKWZvcih2YXIgYT0wO2E8dFtlLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO2ErKyl0W2ldLnB1c2goMCk7cmV0dXJuIHR9fSx7a2V5OlwiaGFzQWxsU2VyaWVzRXF1YWxYXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ITAsZT10aGlzLncsaT10aGlzLmZpbHRlcmVkU2VyaWVzWCgpLGE9MDthPGkubGVuZ3RoLTE7YSsrKWlmKGlbYV1bMF0hPT1pW2ErMV1bMF0pe3Q9ITE7YnJlYWt9cmV0dXJuIGUuZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFg9dCx0fX0se2tleTpcImZpbHRlcmVkU2VyaWVzWFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMuc2VyaWVzWC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aD4wP3Q6W119KSk7cmV0dXJuIHR9fV0pLHR9KCksVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnR3b0RTZXJpZXM9W10sdGhpcy50aHJlZURTZXJpZXM9W10sdGhpcy50d29EU2VyaWVzWD1bXSx0aGlzLnNlcmllc0dvYWxzPVtdLHRoaXMuY29yZVV0aWxzPW5ldyB5KHRoaXMuY3R4KX1yZXR1cm4gcih0LFt7a2V5OlwiaXNNdWx0aUZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNGb3JtYXRYWSgpfHx0aGlzLmlzRm9ybWF0MkRBcnJheSgpfX0se2tleTpcImlzRm9ybWF0WFlcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5jb25maWcuc2VyaWVzLnNsaWNlKCksZT1uZXcgTih0aGlzLmN0eCk7aWYodGhpcy5hY3RpdmVTZXJpZXNJbmRleD1lLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCksdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEubGVuZ3RoPjAmJm51bGwhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0mJnZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXS54JiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdKXJldHVybiEwfX0se2tleTpcImlzRm9ybWF0MkRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxlPW5ldyBOKHRoaXMuY3R4KTtpZih0aGlzLmFjdGl2ZVNlcmllc0luZGV4PWUuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKSx2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEmJnRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YS5sZW5ndGg+MCYmdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0uY29uc3RydWN0b3I9PT1BcnJheSlyZXR1cm4hMH19LHtrZXk6XCJoYW5kbGVGb3JtYXQyREFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcy53LmNvbmZpZyxhPXRoaXMudy5nbG9iYWxzLHM9XCJib3hQbG90XCI9PT1pLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09aS5zZXJpZXNbZV0udHlwZSxyPTA7cjx0W2VdLmRhdGEubGVuZ3RoO3IrKylpZih2b2lkIDAhPT10W2VdLmRhdGFbcl1bMV0mJihBcnJheS5pc0FycmF5KHRbZV0uZGF0YVtyXVsxXSkmJjQ9PT10W2VdLmRhdGFbcl1bMV0ubGVuZ3RoJiYhcz90aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtyXVsxXVszXSkpOnRbZV0uZGF0YVtyXS5sZW5ndGg+PTU/dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbcl1bNF0pKTp0aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtyXVsxXSkpLGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwKSxcImRhdGV0aW1lXCI9PT1pLnhheGlzLnR5cGUpe3ZhciBvPW5ldyBEYXRlKHRbZV0uZGF0YVtyXVswXSk7bz1uZXcgRGF0ZShvKS5nZXRUaW1lKCksdGhpcy50d29EU2VyaWVzWC5wdXNoKG8pfWVsc2UgdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbZV0uZGF0YVtyXVswXSk7Zm9yKHZhciBuPTA7bjx0W2VdLmRhdGEubGVuZ3RoO24rKyl2b2lkIDAhPT10W2VdLmRhdGFbbl1bMl0mJih0aGlzLnRocmVlRFNlcmllcy5wdXNoKHRbZV0uZGF0YVtuXVsyXSksYS5pc0RhdGFYWVo9ITApfX0se2tleTpcImhhbmRsZUZvcm1hdFhZXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuY29uZmlnLGE9dGhpcy53Lmdsb2JhbHMscz1uZXcgSSh0aGlzLmN0eCkscj1lO2EuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xJiYocj10aGlzLmFjdGl2ZVNlcmllc0luZGV4KTtmb3IodmFyIG89MDtvPHRbZV0uZGF0YS5sZW5ndGg7bysrKXZvaWQgMCE9PXRbZV0uZGF0YVtvXS55JiYoQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbb10ueSk/dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbb10ueVt0W2VdLmRhdGFbb10ueS5sZW5ndGgtMV0pKTp0aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtvXS55KSkpLHZvaWQgMCE9PXRbZV0uZGF0YVtvXS5nb2FscyYmQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbb10uZ29hbHMpPyh2b2lkIDA9PT10aGlzLnNlcmllc0dvYWxzW2VdJiYodGhpcy5zZXJpZXNHb2Fsc1tlXT1bXSksdGhpcy5zZXJpZXNHb2Fsc1tlXS5wdXNoKHRbZV0uZGF0YVtvXS5nb2FscykpOih2b2lkIDA9PT10aGlzLnNlcmllc0dvYWxzW2VdJiYodGhpcy5zZXJpZXNHb2Fsc1tlXT1bXSksdGhpcy5zZXJpZXNHb2Fsc1tlXS5wdXNoKG51bGwpKTtmb3IodmFyIG49MDtuPHRbcl0uZGF0YS5sZW5ndGg7bisrKXt2YXIgbD1cInN0cmluZ1wiPT10eXBlb2YgdFtyXS5kYXRhW25dLngsaD1BcnJheS5pc0FycmF5KHRbcl0uZGF0YVtuXS54KSxjPSFoJiYhIXMuaXNWYWxpZERhdGUodFtyXS5kYXRhW25dLngudG9TdHJpbmcoKSk7aWYobHx8YylpZihsfHxpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyl7dmFyIGQ9YS5pc0Jhckhvcml6b250YWwmJmEuaXNSYW5nZURhdGE7XCJkYXRldGltZVwiIT09aS54YXhpcy50eXBlfHxkPyh0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeT0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2godFtyXS5kYXRhW25dLngpLGlzTmFOKHRbcl0uZGF0YVtuXS54KXx8XCJjYXRlZ29yeVwiPT09dGhpcy53LmNvbmZpZy54YXhpcy50eXBlfHxcInN0cmluZ1wiPT10eXBlb2YgdFtyXS5kYXRhW25dLnh8fChhLmlzWE51bWVyaWM9ITApKTp0aGlzLnR3b0RTZXJpZXNYLnB1c2gocy5wYXJzZURhdGUodFtyXS5kYXRhW25dLngpKX1lbHNlXCJkYXRldGltZVwiPT09aS54YXhpcy50eXBlP3RoaXMudHdvRFNlcmllc1gucHVzaChzLnBhcnNlRGF0ZSh0W3JdLmRhdGFbbl0ueC50b1N0cmluZygpKSk6KGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwLGEuaXNYTnVtZXJpYz0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2gocGFyc2VGbG9hdCh0W3JdLmRhdGFbbl0ueCkpKTtlbHNlIGg/KHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSEwLHRoaXMudHdvRFNlcmllc1gucHVzaCh0W3JdLmRhdGFbbl0ueCkpOihhLmlzWE51bWVyaWM9ITAsYS5kYXRhRm9ybWF0WE51bWVyaWM9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbcl0uZGF0YVtuXS54KSl9aWYodFtlXS5kYXRhWzBdJiZ2b2lkIDAhPT10W2VdLmRhdGFbMF0ueil7Zm9yKHZhciBnPTA7Zzx0W2VdLmRhdGEubGVuZ3RoO2crKyl0aGlzLnRocmVlRFNlcmllcy5wdXNoKHRbZV0uZGF0YVtnXS56KTthLmlzRGF0YVhZWj0hMH19fSx7a2V5OlwiaGFuZGxlUmFuZ2VEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscyxhPXt9O3JldHVybiB0aGlzLmlzRm9ybWF0MkRBcnJheSgpP2E9dGhpcy5oYW5kbGVSYW5nZURhdGFGb3JtYXQoXCJhcnJheVwiLHQsZSk6dGhpcy5pc0Zvcm1hdFhZKCkmJihhPXRoaXMuaGFuZGxlUmFuZ2VEYXRhRm9ybWF0KFwieHlcIix0LGUpKSxpLnNlcmllc1JhbmdlU3RhcnQucHVzaChhLnN0YXJ0KSxpLnNlcmllc1JhbmdlRW5kLnB1c2goYS5lbmQpLGkuc2VyaWVzUmFuZ2UucHVzaChhLnJhbmdlVW5pcXVlcyksaS5zZXJpZXNSYW5nZS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QmJnQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnkuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXtmb3IodmFyIGE9MDthPHQueS5sZW5ndGg7YSsrKWlmKGkhPT1hKXt2YXIgcz1lLnkxLHI9ZS55MixvPXQueVthXS55MTtzPD10LnlbYV0ueTImJm88PXImJih0Lm92ZXJsYXBzLmluZGV4T2YoZS5yYW5nZU5hbWUpPDAmJnQub3ZlcmxhcHMucHVzaChlLnJhbmdlTmFtZSksdC5vdmVybGFwcy5pbmRleE9mKHQueVthXS5yYW5nZU5hbWUpPDAmJnQub3ZlcmxhcHMucHVzaCh0LnlbYV0ucmFuZ2VOYW1lKSl9fSkpfSkpfSkpLGF9fSx7a2V5OlwiaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscyxhPXt9O3JldHVybiB0aGlzLmlzRm9ybWF0MkRBcnJheSgpP2E9dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXQoXCJhcnJheVwiLHQsZSk6dGhpcy5pc0Zvcm1hdFhZKCkmJihhPXRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0KFwieHlcIix0LGUpKSxpLnNlcmllc0NhbmRsZU9bZV09YS5vLGkuc2VyaWVzQ2FuZGxlSFtlXT1hLmgsaS5zZXJpZXNDYW5kbGVNW2VdPWEubSxpLnNlcmllc0NhbmRsZUxbZV09YS5sLGkuc2VyaWVzQ2FuZGxlQ1tlXT1hLmMsYX19LHtrZXk6XCJoYW5kbGVSYW5nZURhdGFGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9W10scz1bXSxyPWVbaV0uZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZT09PWkuZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gZS54PT09dC54fSkpfSkpLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm57eDp0Lngsb3ZlcmxhcHM6W10seTpbXX19KSk7aWYoXCJhcnJheVwiPT09dClmb3IodmFyIG89MDtvPGVbaV0uZGF0YS5sZW5ndGg7bysrKUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW29dKT8oYS5wdXNoKGVbaV0uZGF0YVtvXVsxXVswXSkscy5wdXNoKGVbaV0uZGF0YVtvXVsxXVsxXSkpOihhLnB1c2goZVtpXS5kYXRhW29dKSxzLnB1c2goZVtpXS5kYXRhW29dKSk7ZWxzZSBpZihcInh5XCI9PT10KWZvcih2YXIgbj1mdW5jdGlvbih0KXt2YXIgbz1BcnJheS5pc0FycmF5KGVbaV0uZGF0YVt0XS55KSxuPXgucmFuZG9tSWQoKSxsPWVbaV0uZGF0YVt0XS54LGg9e3kxOm8/ZVtpXS5kYXRhW3RdLnlbMF06ZVtpXS5kYXRhW3RdLnkseTI6bz9lW2ldLmRhdGFbdF0ueVsxXTplW2ldLmRhdGFbdF0ueSxyYW5nZU5hbWU6bn07ZVtpXS5kYXRhW3RdLnJhbmdlTmFtZT1uO3ZhciBjPXIuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC54PT09bH0pKTtyW2NdLnkucHVzaChoKSxhLnB1c2goaC55MSkscy5wdXNoKGgueTIpfSxsPTA7bDxlW2ldLmRhdGEubGVuZ3RoO2wrKyluKGwpO3JldHVybntzdGFydDphLGVuZDpzLHJhbmdlVW5pcXVlczpyfX19LHtrZXk6XCJoYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9XCJib3hQbG90XCI9PT1hLmNvbmZpZy5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PWEuY29uZmlnLnNlcmllc1tpXS50eXBlLHI9W10sbz1bXSxuPVtdLGw9W10saD1bXTtpZihcImFycmF5XCI9PT10KWlmKHMmJjY9PT1lW2ldLmRhdGFbMF0ubGVuZ3RofHwhcyYmNT09PWVbaV0uZGF0YVswXS5sZW5ndGgpZm9yKHZhciBjPTA7YzxlW2ldLmRhdGEubGVuZ3RoO2MrKylyLnB1c2goZVtpXS5kYXRhW2NdWzFdKSxvLnB1c2goZVtpXS5kYXRhW2NdWzJdKSxzPyhuLnB1c2goZVtpXS5kYXRhW2NdWzNdKSxsLnB1c2goZVtpXS5kYXRhW2NdWzRdKSxoLnB1c2goZVtpXS5kYXRhW2NdWzVdKSk6KGwucHVzaChlW2ldLmRhdGFbY11bM10pLGgucHVzaChlW2ldLmRhdGFbY11bNF0pKTtlbHNlIGZvcih2YXIgZD0wO2Q8ZVtpXS5kYXRhLmxlbmd0aDtkKyspQXJyYXkuaXNBcnJheShlW2ldLmRhdGFbZF1bMV0pJiYoci5wdXNoKGVbaV0uZGF0YVtkXVsxXVswXSksby5wdXNoKGVbaV0uZGF0YVtkXVsxXVsxXSkscz8obi5wdXNoKGVbaV0uZGF0YVtkXVsxXVsyXSksbC5wdXNoKGVbaV0uZGF0YVtkXVsxXVszXSksaC5wdXNoKGVbaV0uZGF0YVtkXVsxXVs0XSkpOihsLnB1c2goZVtpXS5kYXRhW2RdWzFdWzJdKSxoLnB1c2goZVtpXS5kYXRhW2RdWzFdWzNdKSkpO2Vsc2UgaWYoXCJ4eVwiPT09dClmb3IodmFyIGc9MDtnPGVbaV0uZGF0YS5sZW5ndGg7ZysrKUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW2ddLnkpJiYoci5wdXNoKGVbaV0uZGF0YVtnXS55WzBdKSxvLnB1c2goZVtpXS5kYXRhW2ddLnlbMV0pLHM/KG4ucHVzaChlW2ldLmRhdGFbZ10ueVsyXSksbC5wdXNoKGVbaV0uZGF0YVtnXS55WzNdKSxoLnB1c2goZVtpXS5kYXRhW2ddLnlbNF0pKToobC5wdXNoKGVbaV0uZGF0YVtnXS55WzJdKSxoLnB1c2goZVtpXS5kYXRhW2ddLnlbM10pKSk7cmV0dXJue286cixoOm8sbTpuLGw6bCxjOmh9fX0se2tleTpcInBhcnNlRGF0YUF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMsYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5jdHgscz10aGlzLncuY29uZmlnLHI9dGhpcy53Lmdsb2JhbHMsbz1uZXcgSShhKSxuPXMubGFiZWxzLmxlbmd0aD4wP3MubGFiZWxzLnNsaWNlKCk6cy54YXhpcy5jYXRlZ29yaWVzLnNsaWNlKCk7aWYoci5pc1JhbmdlQmFyPVwicmFuZ2VCYXJcIj09PXMuY2hhcnQudHlwZSYmci5pc0Jhckhvcml6b250YWwsci5oYXNYYXhpc0dyb3Vwcz1cImNhdGVnb3J5XCI9PT1zLnhheGlzLnR5cGUmJnMueGF4aXMuZ3JvdXAuZ3JvdXBzLmxlbmd0aD4wLHIuaGFzWGF4aXNHcm91cHMmJihyLmdyb3Vwcz1zLnhheGlzLmdyb3VwLmdyb3Vwcyksci5oYXNTZXJpZXNHcm91cHM9bnVsbD09PShlPXRbMF0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmdyb3VwLHIuaGFzU2VyaWVzR3JvdXBzKXt2YXIgbD1bXSxoPXUobmV3IFNldCh0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ3JvdXB9KSkpKTt0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGk9aC5pbmRleE9mKHQuZ3JvdXApO2xbaV18fChsW2ldPVtdKSxsW2ldLnB1c2godC5uYW1lKX0pKSxyLnNlcmllc0dyb3Vwcz1sfWZvcih2YXIgYz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8bi5sZW5ndGg7dCsrKWlmKFwic3RyaW5nXCI9PXR5cGVvZiBuW3RdKXtpZighby5pc1ZhbGlkRGF0ZShuW3RdKSl0aHJvdyBuZXcgRXJyb3IoXCJZb3UgaGF2ZSBwcm92aWRlZCBpbnZhbGlkIERhdGUgZm9ybWF0LiBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZVwiKTtpLnR3b0RTZXJpZXNYLnB1c2goby5wYXJzZURhdGUoblt0XSkpfWVsc2UgaS50d29EU2VyaWVzWC5wdXNoKG5bdF0pfSxkPTA7ZDx0Lmxlbmd0aDtkKyspe2lmKHRoaXMudHdvRFNlcmllcz1bXSx0aGlzLnR3b0RTZXJpZXNYPVtdLHRoaXMudGhyZWVEU2VyaWVzPVtdLHZvaWQgMD09PXRbZF0uZGF0YSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKFwiSXQgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHlvdSBtYXkgaGF2ZSBub3QgaW5jbHVkZWQgJ2RhdGEnIHByb3BlcnR5IGluIHNlcmllcy5cIik7aWYoXCJyYW5nZUJhclwiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQXJlYVwiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQmFyXCIhPT10W2RdLnR5cGUmJlwicmFuZ2VBcmVhXCIhPT10W2RdLnR5cGV8fChyLmlzUmFuZ2VEYXRhPSEwLHIuaXNDb21ib0NoYXJ0cz9cInJhbmdlQmFyXCIhPT10W2RdLnR5cGUmJlwicmFuZ2VBcmVhXCIhPT10W2RdLnR5cGV8fHRoaXMuaGFuZGxlUmFuZ2VEYXRhKHQsZCk6XCJyYW5nZUJhclwiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQXJlYVwiIT09cy5jaGFydC50eXBlfHx0aGlzLmhhbmRsZVJhbmdlRGF0YSh0LGQpKSx0aGlzLmlzTXVsdGlGb3JtYXQoKSl0aGlzLmlzRm9ybWF0MkRBcnJheSgpP3RoaXMuaGFuZGxlRm9ybWF0MkRBcnJheSh0LGQpOnRoaXMuaXNGb3JtYXRYWSgpJiZ0aGlzLmhhbmRsZUZvcm1hdFhZKHQsZCksXCJjYW5kbGVzdGlja1wiIT09cy5jaGFydC50eXBlJiZcImNhbmRsZXN0aWNrXCIhPT10W2RdLnR5cGUmJlwiYm94UGxvdFwiIT09cy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXRbZF0udHlwZXx8dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGEodCxkKSxyLnNlcmllcy5wdXNoKHRoaXMudHdvRFNlcmllcyksci5sYWJlbHMucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSxyLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSxyLnNlcmllc0dvYWxzPXRoaXMuc2VyaWVzR29hbHMsZCE9PXRoaXMuYWN0aXZlU2VyaWVzSW5kZXh8fHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5fHwoci5pc1hOdW1lcmljPSEwKTtlbHNle1wiZGF0ZXRpbWVcIj09PXMueGF4aXMudHlwZT8oci5pc1hOdW1lcmljPSEwLGMoKSxyLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSk6XCJudW1lcmljXCI9PT1zLnhheGlzLnR5cGUmJihyLmlzWE51bWVyaWM9ITAsbi5sZW5ndGg+MCYmKHRoaXMudHdvRFNlcmllc1g9bixyLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSkpLHIubGFiZWxzLnB1c2godGhpcy50d29EU2VyaWVzWCk7dmFyIGc9dFtkXS5kYXRhLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHgucGFyc2VOdW1iZXIodCl9KSk7ci5zZXJpZXMucHVzaChnKX1yLnNlcmllc1oucHVzaCh0aGlzLnRocmVlRFNlcmllcyksdm9pZCAwIT09dFtkXS5uYW1lP3Iuc2VyaWVzTmFtZXMucHVzaCh0W2RdLm5hbWUpOnIuc2VyaWVzTmFtZXMucHVzaChcInNlcmllcy1cIitwYXJzZUludChkKzEsMTApKSx2b2lkIDAhPT10W2RdLmNvbG9yP3Iuc2VyaWVzQ29sb3JzLnB1c2godFtkXS5jb2xvcik6ci5zZXJpZXNDb2xvcnMucHVzaCh2b2lkIDApfXJldHVybiB0aGlzLnd9fSx7a2V5OlwicGFyc2VEYXRhTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZztlLnNlcmllcz10LnNsaWNlKCksZS5zZXJpZXNOYW1lcz1pLmxhYmVscy5zbGljZSgpO2Zvcih2YXIgYT0wO2E8ZS5zZXJpZXMubGVuZ3RoO2ErKyl2b2lkIDA9PT1lLnNlcmllc05hbWVzW2FdJiZlLnNlcmllc05hbWVzLnB1c2goXCJzZXJpZXMtXCIrKGErMSkpO3JldHVybiB0aGlzLnd9fSx7a2V5OlwiaGFuZGxlRXh0ZXJuYWxMYWJlbHNEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LmNvbmZpZyxpPXRoaXMudy5nbG9iYWxzO2lmKGUueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGg+MClpLmxhYmVscz1lLnhheGlzLmNhdGVnb3JpZXM7ZWxzZSBpZihlLmxhYmVscy5sZW5ndGg+MClpLmxhYmVscz1lLmxhYmVscy5zbGljZSgpO2Vsc2UgaWYodGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnkpe2lmKGkubGFiZWxzPWkubGFiZWxzWzBdLGkuc2VyaWVzUmFuZ2UubGVuZ3RoJiYoaS5zZXJpZXNSYW5nZS5tYXAoKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5sYWJlbHMuaW5kZXhPZih0LngpPDAmJnQueCYmaS5sYWJlbHMucHVzaCh0LngpfSkpfSkpLGkubGFiZWxzPUFycmF5LmZyb20obmV3IFNldChpLmxhYmVscy5tYXAoSlNPTi5zdHJpbmdpZnkpKSxKU09OLnBhcnNlKSksZS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpbmV3IFgoZSkuY29udmVydENhdFRvTnVtZXJpY1hheGlzKGUsdGhpcy5jdHgsaS5zZXJpZXNYWzBdKSx0aGlzLl9nZW5lcmF0ZUV4dGVybmFsTGFiZWxzKHQpfWVsc2UgdGhpcy5fZ2VuZXJhdGVFeHRlcm5hbExhYmVscyh0KX19LHtrZXk6XCJfZ2VuZXJhdGVFeHRlcm5hbExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZyxhPVtdO2lmKGUuYXhpc0NoYXJ0cyl7aWYoZS5zZXJpZXMubGVuZ3RoPjApaWYodGhpcy5pc0Zvcm1hdFhZKCkpZm9yKHZhciBzPWkuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kYXRhLmZpbHRlcigoZnVuY3Rpb24odCxlLGkpe3JldHVybiBpLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUueD09PXQueH0pKT09PWV9KSl9KSkscj1zLnJlZHVjZSgoZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIGFbdF0ubGVuZ3RoPmUubGVuZ3RoP3Q6aX0pLDApLG89MDtvPHNbcl0ubGVuZ3RoO28rKylhLnB1c2gobysxKTtlbHNlIGZvcih2YXIgbj0wO248ZS5zZXJpZXNbZS5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7bisrKWEucHVzaChuKzEpO2Uuc2VyaWVzWD1bXTtmb3IodmFyIGw9MDtsPHQubGVuZ3RoO2wrKyllLnNlcmllc1gucHVzaChhKTt0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fChlLmlzWE51bWVyaWM9ITApfWlmKDA9PT1hLmxlbmd0aCl7YT1lLmF4aXNDaGFydHM/W106ZS5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlKzF9KSk7Zm9yKHZhciBoPTA7aDx0Lmxlbmd0aDtoKyspZS5zZXJpZXNYLnB1c2goYSl9ZS5sYWJlbHM9YSxpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGUuY2F0ZWdvcnlMYWJlbHM9YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBpLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIodCl9KSkpLGUubm9MYWJlbHNQcm92aWRlZD0hMH19LHtrZXk6XCJwYXJzZURhdGFcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmNvbmZpZyxhPWUuZ2xvYmFscztpZih0aGlzLmV4Y2x1ZGVDb2xsYXBzZWRTZXJpZXNJbllBeGlzKCksdGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITEsdGhpcy5jdHguY29yZS5yZXNldEdsb2JhbHMoKSx0aGlzLmN0eC5jb3JlLmlzTXVsdGlwbGVZKCksYS5heGlzQ2hhcnRzPyh0aGlzLnBhcnNlRGF0YUF4aXNDaGFydHModCksdGhpcy5jb3JlVXRpbHMuZ2V0TGFyZ2VzdFNlcmllcygpKTp0aGlzLnBhcnNlRGF0YU5vbkF4aXNDaGFydHModCksaS5jaGFydC5zdGFja2VkKXt2YXIgcz1uZXcgTih0aGlzLmN0eCk7YS5zZXJpZXM9cy5zZXROdWxsU2VyaWVzVG9aZXJvVmFsdWVzKGEuc2VyaWVzKX10aGlzLmNvcmVVdGlscy5nZXRTZXJpZXNUb3RhbHMoKSxhLmF4aXNDaGFydHMmJihhLnN0YWNrZWRTZXJpZXNUb3RhbHM9dGhpcy5jb3JlVXRpbHMuZ2V0U3RhY2tlZFNlcmllc1RvdGFscygpKSx0aGlzLmNvcmVVdGlscy5nZXRQZXJjZW50U2VyaWVzKCksYS5kYXRhRm9ybWF0WE51bWVyaWN8fGEuaXNYTnVtZXJpYyYmKFwibnVtZXJpY1wiIT09aS54YXhpcy50eXBlfHwwIT09aS5sYWJlbHMubGVuZ3RofHwwIT09aS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCl8fHRoaXMuaGFuZGxlRXh0ZXJuYWxMYWJlbHNEYXRhKHQpO2Zvcih2YXIgcj10aGlzLmNvcmVVdGlscy5nZXRDYXRlZ29yeUxhYmVscyhhLmxhYmVscyksbz0wO288ci5sZW5ndGg7bysrKWlmKEFycmF5LmlzQXJyYXkocltvXSkpe2EuaXNNdWx0aUxpbmVYPSEwO2JyZWFrfX19LHtrZXk6XCJleGNsdWRlQ29sbGFwc2VkU2VyaWVzSW5ZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudztlLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzPWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubWFwKChmdW5jdGlvbihpLGEpe2lmKHQudy5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcyYmIWUuY29uZmlnLmNoYXJ0LnN0YWNrZWQpcmV0dXJuIGkuaW5kZXh9KSl9fV0pLHR9KCksQj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZ2V0TGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06W10scj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06XCIxMnB4XCIsbz0hKGFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdKXx8YXJndW1lbnRzWzZdLG49dGhpcy53LGw9dm9pZCAwPT09dFthXT9cIlwiOnRbYV0saD1sLGM9bi5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixkPW4uY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIsZz0hMSx1PW5ldyBNKHRoaXMuY3R4KSxwPWw7byYmKGg9dS54TGFiZWxGb3JtYXQoYyxsLHAse2k6YSxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuY3R4KS5mb3JtYXREYXRlLHc6bn0pLHZvaWQgMCE9PWQmJihoPWQobCx0W2FdLHtpOmEsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmN0eCkuZm9ybWF0RGF0ZSx3Om59KSkpO3ZhciBmLHg7ZS5sZW5ndGg+MD8oZj1lW2FdLnVuaXQseD1udWxsLGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7XCJtb250aFwiPT09dC51bml0P3g9XCJ5ZWFyXCI6XCJkYXlcIj09PXQudW5pdD94PVwibW9udGhcIjpcImhvdXJcIj09PXQudW5pdD94PVwiZGF5XCI6XCJtaW51dGVcIj09PXQudW5pdCYmKHg9XCJob3VyXCIpfSkpLGc9eD09PWYsaT1lW2FdLnBvc2l0aW9uLGg9ZVthXS52YWx1ZSk6XCJkYXRldGltZVwiPT09bi5jb25maWcueGF4aXMudHlwZSYmdm9pZCAwPT09ZCYmKGg9XCJcIiksdm9pZCAwPT09aCYmKGg9XCJcIiksaD1BcnJheS5pc0FycmF5KGgpP2g6aC50b1N0cmluZygpO3ZhciBiPW5ldyBtKHRoaXMuY3R4KSx2PXt9O3Y9bi5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJm8/Yi5nZXRUZXh0UmVjdHMoaCxwYXJzZUludChyLDEwKSxudWxsLFwicm90YXRlKFwiLmNvbmNhdChuLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLFwiIDAgMClcIiksITEpOmIuZ2V0VGV4dFJlY3RzKGgscGFyc2VJbnQociwxMCkpO3ZhciB5PSFuLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvd0R1cGxpY2F0ZXMmJnRoaXMuY3R4LnRpbWVTY2FsZTtyZXR1cm4hQXJyYXkuaXNBcnJheShoKSYmKDA9PT1oLmluZGV4T2YoXCJOYU5cIil8fDA9PT1oLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImludmFsaWRcIil8fGgudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiaW5maW5pdHlcIik+PTB8fHMuaW5kZXhPZihoKT49MCYmeSkmJihoPVwiXCIpLHt4OmksdGV4dDpoLHRleHRSZWN0OnYsaXNCb2xkOmd9fX0se2tleTpcImNoZWNrTGFiZWxCYXNlZE9uVGlja2Ftb3VudFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1hLmNvbmZpZy54YXhpcy50aWNrQW1vdW50O3JldHVyblwiZGF0YVBvaW50c1wiPT09cyYmKHM9TWF0aC5yb3VuZChhLmdsb2JhbHMuZ3JpZFdpZHRoLzEyMCkpLHM+aXx8dCVNYXRoLnJvdW5kKGkvKHMrMSkpPT0wfHwoZS50ZXh0PVwiXCIpLGV9fSx7a2V5OlwiY2hlY2tGb3JPdmVyZmxvd2luZ0xhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dmFyIHI9dGhpcy53O2lmKDA9PT10JiZyLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbCYmKGUudGV4dD1cIlwiKSx0PT09aS0xJiZyLmdsb2JhbHMuc2tpcExhc3RUaW1lbGluZWxhYmVsJiYoZS50ZXh0PVwiXCIpLHIuY29uZmlnLnhheGlzLmxhYmVscy5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMmJmEubGVuZ3RoPjApe3ZhciBvPXNbcy5sZW5ndGgtMV07ZS54PG8udGV4dFJlY3Qud2lkdGgvKHIuZ2xvYmFscy5yb3RhdGVYTGFiZWxzP01hdGguYWJzKHIuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUpLzEyOjEuMDEpK28ueCYmKGUudGV4dD1cIlwiKX1yZXR1cm4gZX19LHtrZXk6XCJjaGVja0ZvclJldmVyc2VkTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJuIGkuY29uZmlnLnlheGlzW3RdJiZpLmNvbmZpZy55YXhpc1t0XS5yZXZlcnNlZCYmZS5yZXZlcnNlKCksZX19LHtrZXk6XCJpc1lBeGlzSGlkZGVuXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IHkodGhpcy5jdHgpO3JldHVybiFlLmNvbmZpZy55YXhpc1t0XS5zaG93fHwhZS5jb25maWcueWF4aXNbdF0uc2hvd0Zvck51bGxTZXJpZXMmJmkuaXNTZXJpZXNOdWxsKHQpJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCl9fSx7a2V5OlwiZ2V0WUF4aXNGb3JlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmaS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0mJnRoaXMuY3R4LnRoZW1lLnB1c2hFeHRyYUNvbG9ycyh0LGkuZ2xvYmFscy55QXhpc1NjYWxlW2VdLnJlc3VsdC5sZW5ndGgsITEpLHR9fSx7a2V5OlwiZHJhd1lBeGlzVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1uLmdsb2JhbHMudHJhbnNsYXRlWTtpZihhLnNob3cmJmU+MCl7ITA9PT1uLmNvbmZpZy55YXhpc1tzXS5vcHBvc2l0ZSYmKHQrPWEud2lkdGgpO2Zvcih2YXIgYz1lO2M+PTA7Yy0tKXt2YXIgZD1oK2UvMTArbi5jb25maWcueWF4aXNbc10ubGFiZWxzLm9mZnNldFktMTtuLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoZD1yKmMpLFwiaGVhdG1hcFwiPT09bi5jb25maWcuY2hhcnQudHlwZSYmKGQrPXIvMik7dmFyIGc9bC5kcmF3TGluZSh0K2kub2Zmc2V0WC1hLndpZHRoK2Eub2Zmc2V0WCxkK2Eub2Zmc2V0WSx0K2kub2Zmc2V0WCthLm9mZnNldFgsZCthLm9mZnNldFksYS5jb2xvcik7by5hZGQoZyksaCs9cn19fX1dKSx0fSgpLEc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcInNjYWxlU3ZnTm9kZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9cGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZU5TKG51bGwsXCJ3aWR0aFwiKSksYT1wYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlTlMobnVsbCxcImhlaWdodFwiKSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLFwid2lkdGhcIixpKmUpLHQuc2V0QXR0cmlidXRlTlMobnVsbCxcImhlaWdodFwiLGEqZSksdC5zZXRBdHRyaWJ1dGVOUyhudWxsLFwidmlld0JveFwiLFwiMCAwIFwiK2krXCIgXCIrYSl9fSx7a2V5OlwiZml4U3ZnU3RyaW5nRm9ySWUxMVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF4LmlzSUUxMSgpKXJldHVybiB0LnJlcGxhY2UoLyZuYnNwOy9nLFwiJiMxNjA7XCIpO3ZhciBlPTAsaT10LnJlcGxhY2UoL3htbG5zPVwiaHR0cDpcXC9cXC93d3cudzMub3JnXFwvMjAwMFxcL3N2Z1wiL2csKGZ1bmN0aW9uKHQpe3JldHVybiAyPT09KytlPyd4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB4bWxuczpzdmdqcz1cImh0dHA6Ly9zdmdqcy5kZXZcIic6dH0pKTtyZXR1cm4gaT0oaT1pLnJlcGxhY2UoL3htbG5zOk5TXFxkKz1cIlwiL2csXCJcIikpLnJlcGxhY2UoL05TXFxkKzooXFx3KzpcXHcrPVwiKS9nLFwiJDFcIil9fSx7a2V5OlwiZ2V0U3ZnU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7bnVsbD09dCYmKHQ9MSk7dmFyIGU9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnN2ZygpO2lmKDEhPT10KXt2YXIgaT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIubm9kZS5jbG9uZU5vZGUoITApO3RoaXMuc2NhbGVTdmdOb2RlKGksdCksZT0obmV3IFhNTFNlcmlhbGl6ZXIpLnNlcmlhbGl6ZVRvU3RyaW5nKGkpfXJldHVybiB0aGlzLmZpeFN2Z1N0cmluZ0ZvckllMTEoZSl9fSx7a2V5OlwiY2xlYW51cFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMteGNyb3NzaGFpcnNcIiksaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy15Y3Jvc3NoYWlyc1wiKSxhPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy16b29tLXJlY3QsIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0XCIpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSwoZnVuY3Rpb24odCl7dC5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLDApfSkpLGUmJmVbMF0mJihlWzBdLnNldEF0dHJpYnV0ZShcInhcIiwtNTAwKSxlWzBdLnNldEF0dHJpYnV0ZShcIngxXCIsLTUwMCksZVswXS5zZXRBdHRyaWJ1dGUoXCJ4MlwiLC01MDApKSxpJiZpWzBdJiYoaVswXS5zZXRBdHRyaWJ1dGUoXCJ5XCIsLTEwMCksaVswXS5zZXRBdHRyaWJ1dGUoXCJ5MVwiLC0xMDApLGlbMF0uc2V0QXR0cmlidXRlKFwieTJcIiwtMTAwKSl9fSx7a2V5Olwic3ZnVXJsXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFudXAoKTt2YXIgdD10aGlzLmdldFN2Z1N0cmluZygpLGU9bmV3IEJsb2IoW3RdLHt0eXBlOlwiaW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04XCJ9KTtyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChlKX19LHtrZXk6XCJkYXRhVVJJXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGkpe3ZhciBhPWUudyxzPXQ/dC5zY2FsZXx8dC53aWR0aC9hLmdsb2JhbHMuc3ZnV2lkdGg6MTtlLmNsZWFudXAoKTt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO3Iud2lkdGg9YS5nbG9iYWxzLnN2Z1dpZHRoKnMsci5oZWlnaHQ9cGFyc2VJbnQoYS5nbG9iYWxzLmRvbS5lbFdyYXAuc3R5bGUuaGVpZ2h0LDEwKSpzO3ZhciBvPVwidHJhbnNwYXJlbnRcIj09PWEuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQ/XCIjZmZmXCI6YS5jb25maWcuY2hhcnQuYmFja2dyb3VuZCxuPXIuZ2V0Q29udGV4dChcIjJkXCIpO24uZmlsbFN0eWxlPW8sbi5maWxsUmVjdCgwLDAsci53aWR0aCpzLHIuaGVpZ2h0KnMpO3ZhciBsPWUuZ2V0U3ZnU3RyaW5nKHMpO2lmKHdpbmRvdy5jYW52ZyYmeC5pc0lFMTEoKSl7dmFyIGg9d2luZG93LmNhbnZnLkNhbnZnLmZyb21TdHJpbmcobixsLHtpZ25vcmVDbGVhcjohMCxpZ25vcmVEaW1lbnNpb25zOiEwfSk7aC5zdGFydCgpO3ZhciBjPXIubXNUb0Jsb2IoKTtoLnN0b3AoKSxpKHtibG9iOmN9KX1lbHNle3ZhciBkPVwiZGF0YTppbWFnZS9zdmcreG1sLFwiK2VuY29kZVVSSUNvbXBvbmVudChsKSxnPW5ldyBJbWFnZTtnLmNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCIsZy5vbmxvYWQ9ZnVuY3Rpb24oKXtpZihuLmRyYXdJbWFnZShnLDAsMCksci5tc1RvQmxvYil7dmFyIHQ9ci5tc1RvQmxvYigpO2koe2Jsb2I6dH0pfWVsc2V7dmFyIGU9ci50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7aSh7aW1nVVJJOmV9KX19LGcuc3JjPWR9fSkpfX0se2tleTpcImV4cG9ydFRvU1ZHXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRyaWdnZXJEb3dubG9hZCh0aGlzLnN2Z1VybCgpLHRoaXMudy5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuc3ZnLmZpbGVuYW1lLFwiLnN2Z1wiKX19LHtrZXk6XCJleHBvcnRUb1BuZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmRhdGFVUkkoKS50aGVuKChmdW5jdGlvbihlKXt2YXIgaT1lLmltZ1VSSSxhPWUuYmxvYjthP25hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGEsdC53Lmdsb2JhbHMuY2hhcnRJRCtcIi5wbmdcIik6dC50cmlnZ2VyRG93bmxvYWQoaSx0LncuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LnBuZy5maWxlbmFtZSxcIi5wbmdcIil9KSl9fSx7a2V5OlwiZXhwb3J0VG9DU1ZcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC5zZXJpZXMsYT10LmZpbGVOYW1lLHM9dC5jb2x1bW5EZWxpbWl0ZXIscj12b2lkIDA9PT1zP1wiLFwiOnMsbz10LmxpbmVEZWxpbWl0ZXIsbj12b2lkIDA9PT1vP1wiXFxuXCI6byxsPXRoaXMudztpfHwoaT1sLmNvbmZpZy5zZXJpZXMpO3ZhciBoPVtdLGM9W10sZD1cIlwiLGc9bC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuLTE9PT1sLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpP3Q6W119KSkscD1NYXRoLm1heC5hcHBseShNYXRoLHUoaS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGE/dC5kYXRhLmxlbmd0aDowfSkpKSksZj1uZXcgVyh0aGlzLmN0eCksYj1uZXcgQih0aGlzLmN0eCksdj1mdW5jdGlvbih0KXt2YXIgaT1cIlwiO2lmKGwuZ2xvYmFscy5heGlzQ2hhcnRzKXtpZihcImNhdGVnb3J5XCI9PT1sLmNvbmZpZy54YXhpcy50eXBlfHxsLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpaWYobC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7dmFyIGE9bC5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0scz1uZXcgTihlLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKTtpPWEobC5nbG9iYWxzLmxhYmVsc1t0XSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDp0LHc6bH0pfWVsc2UgaT1iLmdldExhYmVsKGwuZ2xvYmFscy5sYWJlbHMsbC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscywwLHQpLnRleHQ7XCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSYmKGwuY29uZmlnLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoP2k9bC5jb25maWcueGF4aXMuY2F0ZWdvcmllc1t0XTpsLmNvbmZpZy5sYWJlbHMubGVuZ3RoJiYoaT1sLmNvbmZpZy5sYWJlbHNbdF0pKX1lbHNlIGk9bC5jb25maWcubGFiZWxzW3RdO3JldHVybiBBcnJheS5pc0FycmF5KGkpJiYoaT1pLmpvaW4oXCIgXCIpKSx4LmlzTnVtYmVyKGkpP2k6aS5zcGxpdChyKS5qb2luKFwiXCIpfSxtPWZ1bmN0aW9uKHQsZSl7aWYoaC5sZW5ndGgmJjA9PT1lJiZjLnB1c2goaC5qb2luKHIpKSx0LmRhdGEpe3QuZGF0YT10LmRhdGEubGVuZ3RoJiZ0LmRhdGF8fHUoQXJyYXkocCkpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm5cIlwifSkpO2Zvcih2YXIgYT0wO2E8dC5kYXRhLmxlbmd0aDthKyspe2g9W107dmFyIHM9dihhKTtpZihzfHwoZi5pc0Zvcm1hdFhZKCk/cz1pW2VdLmRhdGFbYV0ueDpmLmlzRm9ybWF0MkRBcnJheSgpJiYocz1pW2VdLmRhdGFbYV0/aVtlXS5kYXRhW2FdWzBdOlwiXCIpKSwwPT09ZSl7aC5wdXNoKChkPXMsXCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSYmU3RyaW5nKGQpLmxlbmd0aD49MTA/bC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmRhdGVGb3JtYXR0ZXIocyk6eC5pc051bWJlcihzKT9zOnMuc3BsaXQocikuam9pbihcIlwiKSkpO2Zvcih2YXIgbz0wO288bC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7bysrKXt2YXIgbjtpZihmLmlzRm9ybWF0WFkoKSloLnB1c2gobnVsbD09PShuPWlbb10uZGF0YVthXSl8fHZvaWQgMD09PW4/dm9pZCAwOm4ueSk7ZWxzZSBoLnB1c2goZ1tvXVthXSl9fShcImNhbmRsZXN0aWNrXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlfHx0LnR5cGUmJlwiY2FuZGxlc3RpY2tcIj09PXQudHlwZSkmJihoLnBvcCgpLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1tlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUxbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVthXSkpLChcImJveFBsb3RcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGV8fHQudHlwZSYmXCJib3hQbG90XCI9PT10LnR5cGUpJiYoaC5wb3AoKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUxbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVthXSkpLFwicmFuZ2VCYXJcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGUmJihoLnBvcCgpLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtlXVthXSkpLGgubGVuZ3RoJiZjLnB1c2goaC5qb2luKHIpKX19dmFyIGR9O2gucHVzaChsLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuaGVhZGVyQ2F0ZWdvcnkpLFwiYm94UGxvdFwiPT09bC5jb25maWcuY2hhcnQudHlwZT8oaC5wdXNoKFwibWluaW11bVwiKSxoLnB1c2goXCJxMVwiKSxoLnB1c2goXCJtZWRpYW5cIiksaC5wdXNoKFwicTNcIiksaC5wdXNoKFwibWF4aW11bVwiKSk6XCJjYW5kbGVzdGlja1wiPT09bC5jb25maWcuY2hhcnQudHlwZT8oaC5wdXNoKFwib3BlblwiKSxoLnB1c2goXCJoaWdoXCIpLGgucHVzaChcImxvd1wiKSxoLnB1c2goXCJjbG9zZVwiKSk6XCJyYW5nZUJhclwiPT09bC5jb25maWcuY2hhcnQudHlwZT8oaC5wdXNoKFwibWluaW11bVwiKSxoLnB1c2goXCJtYXhpbXVtXCIpKTppLm1hcCgoZnVuY3Rpb24odCxlKXt2YXIgaT0odC5uYW1lP3QubmFtZTpcInNlcmllcy1cIi5jb25jYXQoZSkpK1wiXCI7bC5nbG9iYWxzLmF4aXNDaGFydHMmJmgucHVzaChpLnNwbGl0KHIpLmpvaW4oXCJcIik/aS5zcGxpdChyKS5qb2luKFwiXCIpOlwic2VyaWVzLVwiLmNvbmNhdChlKSl9KSksbC5nbG9iYWxzLmF4aXNDaGFydHN8fChoLnB1c2gobC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmhlYWRlclZhbHVlKSxjLnB1c2goaC5qb2luKHIpKSksaS5tYXAoKGZ1bmN0aW9uKHQsZSl7bC5nbG9iYWxzLmF4aXNDaGFydHM/bSh0LGUpOigoaD1bXSkucHVzaChsLmdsb2JhbHMubGFiZWxzW2VdLnNwbGl0KHIpLmpvaW4oXCJcIikpLGgucHVzaChnW2VdKSxjLnB1c2goaC5qb2luKHIpKSl9KSksZCs9Yy5qb2luKG4pLHRoaXMudHJpZ2dlckRvd25sb2FkKFwiZGF0YTp0ZXh0L2NzdjsgY2hhcnNldD11dGYtOCxcIitlbmNvZGVVUklDb21wb25lbnQoXCJcXHVmZWZmXCIrZCksYXx8bC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmZpbGVuYW1lLFwiLmNzdlwiKX19LHtrZXk6XCJ0cmlnZ2VyRG93bmxvYWRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7YS5ocmVmPXQsYS5kb3dubG9hZD0oZXx8dGhpcy53Lmdsb2JhbHMuY2hhcnRJRCkraSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGEuY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpfX1dKSx0fSgpLFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy5lbGdyaWQ9aSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLmF4ZXNVdGlscz1uZXcgQihlKSx0aGlzLnhheGlzTGFiZWxzPXMuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSxzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wJiYhcy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHRoaXMueGF4aXNMYWJlbHM9cy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5zbGljZSgpKSxzLmNvbmZpZy54YXhpcy5vdmVyd3JpdGVDYXRlZ29yaWVzJiYodGhpcy54YXhpc0xhYmVscz1zLmNvbmZpZy54YXhpcy5vdmVyd3JpdGVDYXRlZ29yaWVzKSx0aGlzLmRyYXduTGFiZWxzPVtdLHRoaXMuZHJhd25MYWJlbHNSZWN0cz1bXSxcInRvcFwiPT09cy5jb25maWcueGF4aXMucG9zaXRpb24/dGhpcy5vZmZZPTA6dGhpcy5vZmZZPXMuZ2xvYmFscy5ncmlkSGVpZ2h0KzEsdGhpcy5vZmZZPXRoaXMub2ZmWStzLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFksdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbD1cImJhclwiPT09cy5jb25maWcuY2hhcnQudHlwZSYmcy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsdGhpcy54YXhpc0ZvbnRTaXplPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSx0aGlzLnhheGlzRm9udEZhbWlseT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSx0aGlzLnhheGlzRm9yZUNvbG9ycz1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY29sb3JzLHRoaXMueGF4aXNCb3JkZXJXaWR0aD1zLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLndpZHRoLHRoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWwmJih0aGlzLnhheGlzQm9yZGVyV2lkdGg9cy5jb25maWcueWF4aXNbMF0uYXhpc0JvcmRlci53aWR0aC50b1N0cmluZygpKSx0aGlzLnhheGlzQm9yZGVyV2lkdGguaW5kZXhPZihcIiVcIik+LTE/dGhpcy54YXhpc0JvcmRlcldpZHRoPXMuZ2xvYmFscy5ncmlkV2lkdGgqcGFyc2VJbnQodGhpcy54YXhpc0JvcmRlcldpZHRoLDEwKS8xMDA6dGhpcy54YXhpc0JvcmRlcldpZHRoPXBhcnNlSW50KHRoaXMueGF4aXNCb3JkZXJXaWR0aCwxMCksdGhpcy54YXhpc0JvcmRlckhlaWdodD1zLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLmhlaWdodCx0aGlzLnlheGlzPXMuY29uZmlnLnlheGlzWzBdfXJldHVybiByKHQsW3trZXk6XCJkcmF3WGF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpc1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQodC5jb25maWcueGF4aXMub2Zmc2V0WCxcIiwgXCIpLmNvbmNhdCh0LmNvbmZpZy54YXhpcy5vZmZzZXRZLFwiKVwiKX0pLGE9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHQuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1gsXCIsIFwiKS5jb25jYXQodC5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWSxcIilcIil9KTtpLmFkZChhKTtmb3IodmFyIHM9W10scj0wO3I8dGhpcy54YXhpc0xhYmVscy5sZW5ndGg7cisrKXMucHVzaCh0aGlzLnhheGlzTGFiZWxzW3JdKTtpZih0aGlzLmRyYXdYQXhpc0xhYmVsQW5kR3JvdXAoITAsZSxhLHMsdC5nbG9iYWxzLmlzWE51bWVyaWMsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSksdC5nbG9iYWxzLmhhc1hheGlzR3JvdXBzKXt2YXIgbz10Lmdsb2JhbHMuZ3JvdXBzO3M9W107Zm9yKHZhciBuPTA7bjxvLmxlbmd0aDtuKyspcy5wdXNoKG9bbl0udGl0bGUpO3ZhciBsPXt9O3QuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlJiYobC54YXhpc0ZvbnRTaXplPXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRTaXplLGwueGF4aXNGb250RmFtaWx5PXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRGYW1pbHksbC54YXhpc0ZvcmVDb2xvcnM9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY29sb3JzLGwuZm9udFdlaWdodD10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250V2VpZ2h0LGwuY3NzQ2xhc3M9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY3NzQ2xhc3MpLHRoaXMuZHJhd1hBeGlzTGFiZWxBbmRHcm91cCghMSxlLGEscywhMSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gb1t0XS5jb2xzKmV9KSxsKX1pZih2b2lkIDAhPT10LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgaD1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGVcIn0pLGM9ZS5kcmF3VGV4dCh7eDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLzIrdC5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WCx5OnRoaXMub2ZmWStwYXJzZUZsb2F0KHRoaXMueGF4aXNGb250U2l6ZSkrKFwiYm90dG9tXCI9PT10LmNvbmZpZy54YXhpcy5wb3NpdGlvbj90Lmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQ6LXQuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC0xMCkrdC5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WSx0ZXh0OnQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10aXRsZS10ZXh0IFwiK3QuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7aC5hZGQoYyksaS5hZGQoaCl9aWYodC5jb25maWcueGF4aXMuYXhpc0JvcmRlci5zaG93KXt2YXIgZD10Lmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsZz1lLmRyYXdMaW5lKHQuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3QuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIub2Zmc2V0WC1kLHRoaXMub2ZmWSx0aGlzLnhheGlzQm9yZGVyV2lkdGgrZCx0aGlzLm9mZlksdC5jb25maWcueGF4aXMuYXhpc0JvcmRlci5jb2xvciwwLHRoaXMueGF4aXNCb3JkZXJIZWlnaHQpO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzJiZ0LmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQoZyk6aS5hZGQoZyl9cmV0dXJuIGl9fSx7a2V5OlwiZHJhd1hBeGlzTGFiZWxBbmRHcm91cFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbyxuPXRoaXMsbD1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06e30saD1bXSxjPVtdLGQ9dGhpcy53LGc9bC54YXhpc0ZvbnRTaXplfHx0aGlzLnhheGlzRm9udFNpemUsdT1sLnhheGlzRm9udEZhbWlseXx8dGhpcy54YXhpc0ZvbnRGYW1pbHkscD1sLnhheGlzRm9yZUNvbG9yc3x8dGhpcy54YXhpc0ZvcmVDb2xvcnMsZj1sLmZvbnRXZWlnaHR8fGQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250V2VpZ2h0LHg9bC5jc3NDbGFzc3x8ZC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNzc0NsYXNzLGI9ZC5nbG9iYWxzLnBhZEhvcml6b250YWwsdj1hLmxlbmd0aCxtPVwiY2F0ZWdvcnlcIj09PWQuY29uZmlnLnhheGlzLnR5cGU/ZC5nbG9iYWxzLmRhdGFQb2ludHM6djtpZigwPT09bSYmdj5tJiYobT12KSxzKXt2YXIgeT1tPjE/bS0xOm07bz1kLmdsb2JhbHMuZ3JpZFdpZHRoL01hdGgubWluKHksdi0xKSxiPWIrcigwLG8pLzIrZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFh9ZWxzZSBvPWQuZ2xvYmFscy5ncmlkV2lkdGgvbSxiPWIrcigwLG8pK2QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYO2Zvcih2YXIgdz1mdW5jdGlvbihzKXt2YXIgbD1iLXIocyxvKS8yK2QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYOzA9PT1zJiYxPT09diYmby8yPT09YiYmMT09PW0mJihsPWQuZ2xvYmFscy5ncmlkV2lkdGgvMik7dmFyIHk9bi5heGVzVXRpbHMuZ2V0TGFiZWwoYSxkLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLGwscyxoLGcsdCksdz0yODtkLmdsb2JhbHMucm90YXRlWExhYmVscyYmdCYmKHc9MjIpLGQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQmJlwidG9wXCI9PT1kLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKHcrPXBhcnNlRmxvYXQoZC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpKzIpLHR8fCh3PXcrcGFyc2VGbG9hdChnKSsoZC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0LWQuZ2xvYmFscy54QXhpc0dyb3VwTGFiZWxzSGVpZ2h0KSsoZC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MTA6MCkpLHk9dm9pZCAwIT09ZC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmXCJkYXRhUG9pbnRzXCIhPT1kLmNvbmZpZy54YXhpcy50aWNrQW1vdW50JiZcImRhdGV0aW1lXCIhPT1kLmNvbmZpZy54YXhpcy50eXBlP24uYXhlc1V0aWxzLmNoZWNrTGFiZWxCYXNlZE9uVGlja2Ftb3VudChzLHksdik6bi5heGVzVXRpbHMuY2hlY2tGb3JPdmVyZmxvd2luZ0xhYmVscyhzLHksdixoLGMpO2lmKGQuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KXt2YXIgaz1lLmRyYXdUZXh0KHt4OnkueCx5Om4ub2ZmWStkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSt3LShcInRvcFwiPT09ZC5jb25maWcueGF4aXMucG9zaXRpb24/ZC5nbG9iYWxzLnhBeGlzSGVpZ2h0K2QuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtMjowKSx0ZXh0OnkudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFdlaWdodDp5LmlzQm9sZD82MDA6Zixmb250U2l6ZTpnLGZvbnRGYW1pbHk6dSxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShwKT90JiZkLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM/cFtkLmdsb2JhbHMubWluWCtzLTFdOnBbc106cCxpc1BsYWluVGV4dDohMSxjc3NDbGFzczoodD9cImFwZXhjaGFydHMteGF4aXMtbGFiZWwgXCI6XCJhcGV4Y2hhcnRzLXhheGlzLWdyb3VwLWxhYmVsIFwiKSt4fSk7aWYoaS5hZGQoayksay5vbihcImNsaWNrXCIsKGZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGQuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2spe3ZhciBlPU9iamVjdC5hc3NpZ24oe30sZCx7bGFiZWxJbmRleDpzfSk7ZC5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljayh0LG4uY3R4LGUpfX0pKSx0KXt2YXIgQT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZC5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7QS50ZXh0Q29udGVudD1BcnJheS5pc0FycmF5KHkudGV4dCk/eS50ZXh0LmpvaW4oXCIgXCIpOnkudGV4dCxrLm5vZGUuYXBwZW5kQ2hpbGQoQSksXCJcIiE9PXkudGV4dCYmKGgucHVzaCh5LnRleHQpLGMucHVzaCh5KSl9fXM8di0xJiYoYis9cihzKzEsbykpfSxrPTA7azw9di0xO2srKyl3KGspfX0se2tleTpcImRyYXdYYXhpc0ludmVyc2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXRoaXMscz10aGlzLncscj1uZXcgbSh0aGlzLmN0eCksbz1zLmNvbmZpZy55YXhpc1swXS5vcHBvc2l0ZT9zLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdOjAsbj1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZFwiLHJlbDp0fSksbD1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGV4dHMtZyBhcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrbytcIiwgMClcIn0pO24uYWRkKGwpO3ZhciBoPVtdO2lmKHMuY29uZmlnLnlheGlzW3RdLnNob3cpZm9yKHZhciBjPTA7Yzx0aGlzLnhheGlzTGFiZWxzLmxlbmd0aDtjKyspaC5wdXNoKHRoaXMueGF4aXNMYWJlbHNbY10pO2U9cy5nbG9iYWxzLmdyaWRIZWlnaHQvaC5sZW5ndGgsaT0tZS8yLjI7dmFyIGQ9cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0sZz1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHM7aWYoZy5zaG93KWZvcih2YXIgdT1mdW5jdGlvbihvKXt2YXIgbj12b2lkIDA9PT1oW29dP1wiXCI6aFtvXTtuPWQobix7c2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpvLHc6c30pO3ZhciBjPWEuYXhlc1V0aWxzLmdldFlBeGlzRm9yZUNvbG9yKGcuc3R5bGUuY29sb3JzLHQpLHU9MDtBcnJheS5pc0FycmF5KG4pJiYodT1uLmxlbmd0aC8yKnBhcnNlSW50KGcuc3R5bGUuZm9udFNpemUsMTApKTt2YXIgcD1nLm9mZnNldFgtMTUsZj1cImVuZFwiO2EueWF4aXMub3Bwb3NpdGUmJihmPVwic3RhcnRcIiksXCJsZWZ0XCI9PT1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuYWxpZ24/KHA9Zy5vZmZzZXRYLGY9XCJzdGFydFwiKTpcImNlbnRlclwiPT09cy5jb25maWcueWF4aXNbMF0ubGFiZWxzLmFsaWduPyhwPWcub2Zmc2V0WCxmPVwibWlkZGxlXCIpOlwicmlnaHRcIj09PXMuY29uZmlnLnlheGlzWzBdLmxhYmVscy5hbGlnbiYmKGY9XCJlbmRcIik7dmFyIHg9ci5kcmF3VGV4dCh7eDpwLHk6aStlK2cub2Zmc2V0WS11LHRleHQ6bix0ZXh0QW5jaG9yOmYsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkoYyk/Y1tvXTpjLGZvbnRTaXplOmcuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTpnLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDpnLnN0eWxlLmZvbnRXZWlnaHQsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWxhYmVsIFwiK2cuc3R5bGUuY3NzQ2xhc3MsbWF4V2lkdGg6Zy5tYXhXaWR0aH0pO2wuYWRkKHgpLHgub24oXCJjbGlja1wiLChmdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKXt2YXIgZT1PYmplY3QuYXNzaWduKHt9LHMse2xhYmVsSW5kZXg6b30pO3MuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2sodCxhLmN0eCxlKX19KSk7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHMuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2lmKGIudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheShuKT9uLmpvaW4oXCIgXCIpOm4seC5ub2RlLmFwcGVuZENoaWxkKGIpLDAhPT1zLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlKXt2YXIgdj1yLnJvdGF0ZUFyb3VuZENlbnRlcih4Lm5vZGUpO3gubm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQocy5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSxcIiAwIFwiKS5jb25jYXQodi55LFwiKVwiKSl9aSs9ZX0scD0wO3A8PWgubGVuZ3RoLTE7cCsrKXUocCk7aWYodm9pZCAwIT09cy5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCl7dmFyIGY9ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlIGFwZXhjaGFydHMteGF4aXMtdGl0bGUtaW52ZXJzZWRcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrbytcIiwgMClcIn0pLHg9ci5kcmF3VGV4dCh7eDpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5vZmZzZXRYLHk6cy5nbG9iYWxzLmdyaWRIZWlnaHQvMitzLmNvbmZpZy55YXhpc1swXS50aXRsZS5vZmZzZXRZLHRleHQ6cy5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmNvbG9yLGZvbnRTaXplOnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRXZWlnaHQ6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb250RmFtaWx5OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgXCIrcy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTtmLmFkZCh4KSxuLmFkZChmKX12YXIgYj0wO3RoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWwmJnMuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlJiYoYj1zLmdsb2JhbHMuZ3JpZFdpZHRoKTt2YXIgdj1zLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyO2lmKHYuc2hvdyl7dmFyIHk9ci5kcmF3TGluZShzLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt2Lm9mZnNldFgrYiwxK3Yub2Zmc2V0WSxzLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt2Lm9mZnNldFgrYixzLmdsb2JhbHMuZ3JpZEhlaWdodCt2Lm9mZnNldFksdi5jb2xvciwwKTt0aGlzLmVsZ3JpZCYmdGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycyYmcy5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMuYWRkKHkpOm4uYWRkKHkpfXJldHVybiBzLmNvbmZpZy55YXhpc1swXS5heGlzVGlja3Muc2hvdyYmdGhpcy5heGVzVXRpbHMuZHJhd1lBeGlzVGlja3MoYixoLmxlbmd0aCxzLmNvbmZpZy55YXhpc1swXS5heGlzQm9yZGVyLHMuY29uZmlnLnlheGlzWzBdLmF4aXNUaWNrcywwLGUsbiksbn19LHtrZXk6XCJkcmF3WGF4aXNUaWNrc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz10O2lmKCEodDwwfHx0LTI+YS5nbG9iYWxzLmdyaWRXaWR0aCkpe3ZhciByPXRoaXMub2ZmWSthLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WTtpZihlPWUrcithLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LFwidG9wXCI9PT1hLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKGU9ci1hLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0KSxhLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdyl7dmFyIG89bmV3IG0odGhpcy5jdHgpLmRyYXdMaW5lKHQrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFgscithLmNvbmZpZy54YXhpcy5vZmZzZXRZLHMrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFgsZSthLmNvbmZpZy54YXhpcy5vZmZzZXRZLGEuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5jb2xvcik7aS5hZGQobyksby5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXhheGlzLXRpY2tcIil9fX19LHtrZXk6XCJnZXRYQXhpc1RpY2tzUG9zaXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1bXSxpPXRoaXMueGF4aXNMYWJlbHMubGVuZ3RoLGE9dC5nbG9iYWxzLnBhZEhvcml6b250YWw7aWYodC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MClmb3IodmFyIHM9MDtzPGk7cysrKWE9dGhpcy54YXhpc0xhYmVsc1tzXS5wb3NpdGlvbixlLnB1c2goYSk7ZWxzZSBmb3IodmFyIHI9aSxvPTA7bzxyO28rKyl7dmFyIG49cjt0Lmdsb2JhbHMuaXNYTnVtZXJpYyYmXCJiYXJcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJihuLT0xKSxhKz10Lmdsb2JhbHMuZ3JpZFdpZHRoL24sZS5wdXNoKGEpfXJldHVybiBlfX0se2tleTpcInhBeGlzTGFiZWxDb3JyZWN0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIiksYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om5vdCguYXBleGNoYXJ0cy14YXhpcy1ncm91cC1sYWJlbClcIikscz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXMtaW52ZXJzZWQgdGV4dFwiKSxyPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZC10ZXh0cy1nIHRleHQgdHNwYW5cIik7aWYodC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHN8fHQuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGVBbHdheXMpZm9yKHZhciBvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBuPWUucm90YXRlQXJvdW5kQ2VudGVyKGFbb10pO24ueT1uLnktMSxuLng9bi54KzEsYVtvXS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQodC5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiBcIikuY29uY2F0KG4ueCxcIiBcIikuY29uY2F0KG4ueSxcIilcIikpLGFbb10uc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcImVuZFwiKTtpLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKDAsIFwiLmNvbmNhdCgtMTAsXCIpXCIpKTt2YXIgbD1hW29dLmNoaWxkTm9kZXM7dC5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobCwoZnVuY3Rpb24oaSl7ZS5wbGFjZVRleHRXaXRoRWxsaXBzaXMoaSxpLnRleHRDb250ZW50LHQuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC0oXCJib3R0b21cIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj8yMDoxMCkpfSkpfWVsc2UhZnVuY3Rpb24oKXtmb3IodmFyIGk9dC5nbG9iYWxzLmdyaWRXaWR0aC8odC5nbG9iYWxzLmxhYmVscy5sZW5ndGgrMSkscz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgcj1hW3NdLmNoaWxkTm9kZXM7dC5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJlwiZGF0ZXRpbWVcIiE9PXQuY29uZmlnLnhheGlzLnR5cGUmJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwociwoZnVuY3Rpb24odCl7ZS5wbGFjZVRleHRXaXRoRWxsaXBzaXModCx0LnRleHRDb250ZW50LGkpfSkpfX0oKTtpZihzLmxlbmd0aD4wKXt2YXIgaD1zW3MubGVuZ3RoLTFdLmdldEJCb3goKSxjPXNbMF0uZ2V0QkJveCgpO2gueDwtMjAmJnNbcy5sZW5ndGgtMV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzW3MubGVuZ3RoLTFdKSxjLngrYy53aWR0aD50Lmdsb2JhbHMuZ3JpZFdpZHRoJiYhdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmc1swXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNbMF0pO2Zvcih2YXIgZD0wO2Q8ci5sZW5ndGg7ZCsrKWUucGxhY2VUZXh0V2l0aEVsbGlwc2lzKHJbZF0scltkXS50ZXh0Q29udGVudCx0LmNvbmZpZy55YXhpc1swXS5sYWJlbHMubWF4V2lkdGgtKHQuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQ/MipwYXJzZUZsb2F0KHQuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplKTowKS0xNSl9fX1dKSx0fSgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMueGF4aXNMYWJlbHM9aS5nbG9iYWxzLmxhYmVscy5zbGljZSgpLHRoaXMuYXhlc1V0aWxzPW5ldyBCKGUpLHRoaXMuaXNSYW5nZUJhcj1pLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoJiZpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsLGkuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjAmJih0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKSl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdHcmlkQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCk7bnVsbD09PXQmJih0PWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkXCJ9KSk7dmFyIGE9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCwxLGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LFwidHJhbnNwYXJlbnRcIikscz1pLmRyYXdMaW5lKGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LGUuZ2xvYmFscy5ncmlkV2lkdGgsZS5nbG9iYWxzLmdyaWRIZWlnaHQsXCJ0cmFuc3BhcmVudFwiKTtyZXR1cm4gdC5hZGQocyksdC5hZGQoYSksdH19LHtrZXk6XCJkcmF3R3JpZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bnVsbDtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHQ9dGhpcy5yZW5kZXJHcmlkKCksdGhpcy5kcmF3R3JpZEFyZWEodC5lbCkpLHR9fSx7a2V5OlwiY3JlYXRlR3JpZE1hc2tcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPW5ldyBtKHRoaXMuY3R4KSxhPUFycmF5LmlzQXJyYXkodC5jb25maWcuc3Ryb2tlLndpZHRoKT8wOnQuY29uZmlnLnN0cm9rZS53aWR0aDtpZihBcnJheS5pc0FycmF5KHQuY29uZmlnLnN0cm9rZS53aWR0aCkpe3ZhciBzPTA7dC5jb25maWcuc3Ryb2tlLndpZHRoLmZvckVhY2goKGZ1bmN0aW9uKHQpe3M9TWF0aC5tYXgocyx0KX0pKSxhPXN9ZS5kb20uZWxHcmlkUmVjdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbEdyaWRSZWN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiZ3JpZFJlY3RNYXNrXCIuY29uY2F0KGUuY3VpZCkpLGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiY2xpcFBhdGhcIiksZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcImdyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdChlLmN1aWQpKSxlLmRvbS5lbEZvcmVjYXN0TWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUyxcImNsaXBQYXRoXCIpLGUuZG9tLmVsRm9yZWNhc3RNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJmb3JlY2FzdE1hc2tcIi5jb25jYXQoZS5jdWlkKSksZS5kb20uZWxOb25Gb3JlY2FzdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbE5vbkZvcmVjYXN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwibm9uRm9yZWNhc3RNYXNrXCIuY29uY2F0KGUuY3VpZCkpO3ZhciByPXQuY29uZmlnLmNoYXJ0LnR5cGUsbz0wLG49MDsoXCJiYXJcIj09PXJ8fFwicmFuZ2VCYXJcIj09PXJ8fFwiY2FuZGxlc3RpY2tcIj09PXJ8fFwiYm94UGxvdFwiPT09cnx8dC5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MCkmJnQuZ2xvYmFscy5pc1hOdW1lcmljJiYhdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG89dC5jb25maWcuZ3JpZC5wYWRkaW5nLmxlZnQsbj10LmNvbmZpZy5ncmlkLnBhZGRpbmcucmlnaHQsZS5iYXJQYWRGb3JOdW1lcmljQXhpcz5vJiYobz1lLmJhclBhZEZvck51bWVyaWNBeGlzLG49ZS5iYXJQYWRGb3JOdW1lcmljQXhpcykpLGUuZG9tLmVsR3JpZFJlY3Q9aS5kcmF3UmVjdCgtYS1vLTIsMiotYS0yLGUuZ3JpZFdpZHRoK2ErbitvKzQsZS5ncmlkSGVpZ2h0KzQqYSs0LDAsXCIjZmZmXCIpO3ZhciBsPXQuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplKzE7ZS5kb20uZWxHcmlkUmVjdE1hcmtlcj1pLmRyYXdSZWN0KDIqLWwsMiotbCxlLmdyaWRXaWR0aCs0KmwsZS5ncmlkSGVpZ2h0KzQqbCwwLFwiI2ZmZlwiKSxlLmRvbS5lbEdyaWRSZWN0TWFzay5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0Lm5vZGUpLGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXJrZXIubm9kZSk7dmFyIGg9ZS5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCJkZWZzXCIpO2guYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdE1hc2spLGguYXBwZW5kQ2hpbGQoZS5kb20uZWxGb3JlY2FzdE1hc2spLGguYXBwZW5kQ2hpbGQoZS5kb20uZWxOb25Gb3JlY2FzdE1hc2spLGguYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2spfX0se2tleTpcIl9kcmF3R3JpZExpbmVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC54MSxhPXQueTEscz10LngyLHI9dC55MixvPXQueENvdW50LG49dC5wYXJlbnQsbD10aGlzLnc7aWYoISgwPT09ZSYmbC5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWx8fGU9PT1vLTEmJmwuZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWwmJiFsLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyfHxcInJhZGFyXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlKSl7bC5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93JiZ0aGlzLl9kcmF3R3JpZExpbmUoe2k6ZSx4MTppLHkxOmEseDI6cyx5MjpyLHhDb3VudDpvLHBhcmVudDpufSk7dmFyIGg9MDtpZihsLmdsb2JhbHMuaGFzWGF4aXNHcm91cHMmJlwiYmV0d2VlblwiPT09bC5jb25maWcueGF4aXMudGlja1BsYWNlbWVudCl7dmFyIGM9bC5nbG9iYWxzLmdyb3VwcztpZihjKXtmb3IodmFyIGQ9MCxnPTA7ZDxlJiZnPGMubGVuZ3RoO2crKylkKz1jW2ddLmNvbHM7ZD09PWUmJihoPS42KmwuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodCl9fW5ldyBWKHRoaXMuY3R4KS5kcmF3WGF4aXNUaWNrcyhpLGgsbC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbCl9fX0se2tleTpcIl9kcmF3R3JpZExpbmVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LngxLGE9dC55MSxzPXQueDIscj10LnkyLG89dC54Q291bnQsbj10LnBhcmVudCxsPXRoaXMudyxoPSExLGM9bi5ub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtZ3JpZGxpbmVzLWhvcml6b250YWxcIiksZD1sLmNvbmZpZy5ncmlkLnN0cm9rZURhc2hBcnJheSxnPWwuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpczsoMD09PWEmJjA9PT1yfHwwPT09aSYmMD09PXMpJiYoaD0hMCksYT09PWwuZ2xvYmFscy5ncmlkSGVpZ2h0JiZyPT09bC5nbG9iYWxzLmdyaWRIZWlnaHQmJihoPSEwKSwhbC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8MCE9PWUmJmUhPT1vLTF8fChoPSEwKTt2YXIgdT1uZXcgbSh0aGlzKS5kcmF3TGluZShpLShjP2c6MCksYSxzKyhjP2c6MCkscixsLmNvbmZpZy5ncmlkLmJvcmRlckNvbG9yLGQpO3Uubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1ncmlkbGluZVwiKSxoJiZsLmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbEdyaWRCb3JkZXJzLmFkZCh1KTpuLmFkZCh1KX19LHtrZXk6XCJfZHJhd0dyaWRCYW5kUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuYyxpPXQueDEsYT10LnkxLHM9dC54MixyPXQueTIsbz10LnR5cGUsbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1uLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7aWYoXCJjb2x1bW5cIiE9PW98fFwiZGF0ZXRpbWVcIiE9PW4uY29uZmlnLnhheGlzLnR5cGUpe3ZhciBjPW4uY29uZmlnLmdyaWRbb10uY29sb3JzW2VdLGQ9bC5kcmF3UmVjdChpLShcInJvd1wiPT09bz9oOjApLGEscysoXCJyb3dcIj09PW8/MipoOjApLHIsMCxjLG4uY29uZmlnLmdyaWRbb10ub3BhY2l0eSk7dGhpcy5lbGcuYWRkKGQpLGQuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQobi5nbG9iYWxzLmN1aWQsXCIpXCIpKSxkLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZ3JpZC1cIi5jb25jYXQobykpfX19LHtrZXk6XCJfZHJhd1hZTGluZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC54Q291bnQsYT10LnRpY2tBbW91bnQscz10aGlzLnc7aWYocy5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHxzLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdyl7dmFyIHIsbz1zLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxuPXMuZ2xvYmFscy5ncmlkSGVpZ2h0O3MuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoP2Z1bmN0aW9uKHQpe2Zvcih2YXIgYT10LnhDLHM9dC54MSxyPXQueTEsbz10LngyLG49dC55MixsPTA7bDxhO2wrKylzPWUueGF4aXNMYWJlbHNbbF0ucG9zaXRpb24sbz1lLnhheGlzTGFiZWxzW2xdLnBvc2l0aW9uLGUuX2RyYXdHcmlkTGluZXMoe2k6bCx4MTpzLHkxOnIseDI6byx5MjpuLHhDb3VudDppLHBhcmVudDplLmVsZ3JpZExpbmVzVn0pfSh7eEM6aSx4MTpvLHkxOjAseDI6cix5MjpufSk6KHMuZ2xvYmFscy5pc1hOdW1lcmljJiYoaT1zLmdsb2JhbHMueEF4aXNTY2FsZS5yZXN1bHQubGVuZ3RoKSxmdW5jdGlvbih0KXtmb3IodmFyIGE9dC54QyxyPXQueDEsbz10LnkxLG49dC54MixsPXQueTIsaD0wO2g8YSsocy5nbG9iYWxzLmlzWE51bWVyaWM/MDoxKTtoKyspMD09PWgmJjE9PT1hJiYxPT09cy5nbG9iYWxzLmRhdGFQb2ludHMmJihuPXI9cy5nbG9iYWxzLmdyaWRXaWR0aC8yKSxlLl9kcmF3R3JpZExpbmVzKHtpOmgseDE6cix5MTpvLHgyOm4seTI6bCx4Q291bnQ6aSxwYXJlbnQ6ZS5lbGdyaWRMaW5lc1Z9KSxuPXIrPXMuZ2xvYmFscy5ncmlkV2lkdGgvKHMuZ2xvYmFscy5pc1hOdW1lcmljP2EtMTphKX0oe3hDOmkseDE6byx5MTowLHgyOnIseTI6bn0pKX1pZihzLmNvbmZpZy5ncmlkLnlheGlzLmxpbmVzLnNob3cpe3ZhciBsPTAsaD0wLGM9cy5nbG9iYWxzLmdyaWRXaWR0aCxkPWErMTt0aGlzLmlzUmFuZ2VCYXImJihkPXMuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKTtmb3IodmFyIGc9MDtnPGQrKHRoaXMuaXNSYW5nZUJhcj8xOjApO2crKyl0aGlzLl9kcmF3R3JpZExpbmUoe2k6Zyx4Q291bnQ6ZCsodGhpcy5pc1JhbmdlQmFyPzE6MCkseDE6MCx5MTpsLHgyOmMseTI6aCxwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc0h9KSxoPWwrPXMuZ2xvYmFscy5ncmlkSGVpZ2h0Lyh0aGlzLmlzUmFuZ2VCYXI/ZDphKX19fSx7a2V5OlwiX2RyYXdJbnZlcnRlZFhZTGluZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnhDb3VudCxpPXRoaXMudztpZihpLmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3d8fGkuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5zaG93KWZvcih2YXIgYSxzPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsLHI9aS5nbG9iYWxzLmdyaWRIZWlnaHQsbz0wO288ZSsxO28rKyl7aS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93JiZ0aGlzLl9kcmF3R3JpZExpbmUoe2k6byx4Q291bnQ6ZSsxLHgxOnMseTE6MCx4MjphLHkyOnIscGFyZW50OnRoaXMuZWxncmlkTGluZXNWfSksbmV3IFYodGhpcy5jdHgpLmRyYXdYYXhpc1RpY2tzKHMsMCxpLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsKSxhPXM9cytpLmdsb2JhbHMuZ3JpZFdpZHRoL2UrLjN9aWYoaS5jb25maWcuZ3JpZC55YXhpcy5saW5lcy5zaG93KWZvcih2YXIgbj0wLGw9MCxoPWkuZ2xvYmFscy5ncmlkV2lkdGgsYz0wO2M8aS5nbG9iYWxzLmRhdGFQb2ludHMrMTtjKyspdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmMseENvdW50OmkuZ2xvYmFscy5kYXRhUG9pbnRzKzEseDE6MCx5MTpuLHgyOmgseTI6bCxwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc0h9KSxsPW4rPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2kuZ2xvYmFscy5kYXRhUG9pbnRzfX0se2tleTpcInJlbmRlckdyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KTt0aGlzLmVsZz1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZFwifSksdGhpcy5lbGdyaWRMaW5lc0g9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy1ob3Jpem9udGFsXCJ9KSx0aGlzLmVsZ3JpZExpbmVzVj1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZGxpbmVzLXZlcnRpY2FsXCJ9KSx0aGlzLmVsR3JpZEJvcmRlcnM9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWQtYm9yZGVyc1wifSksdGhpcy5lbGcuYWRkKHRoaXMuZWxncmlkTGluZXNIKSx0aGlzLmVsZy5hZGQodGhpcy5lbGdyaWRMaW5lc1YpLHQuY29uZmlnLmdyaWQuc2hvd3x8KHRoaXMuZWxncmlkTGluZXNWLmhpZGUoKSx0aGlzLmVsZ3JpZExpbmVzSC5oaWRlKCksdGhpcy5lbEdyaWRCb3JkZXJzLmhpZGUoKSk7Zm9yKHZhciBpLGE9dC5nbG9iYWxzLnlBeGlzU2NhbGUubGVuZ3RoP3QuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5sZW5ndGgtMTo1LHM9MDtzPHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoJiYodm9pZCAwIT09dC5nbG9iYWxzLnlBeGlzU2NhbGVbc10mJihhPXQuZ2xvYmFscy55QXhpc1NjYWxlW3NdLnJlc3VsdC5sZW5ndGgtMSksIShhPjIpKTtzKyspO3JldHVybiF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHx0aGlzLmlzUmFuZ2VCYXI/KGk9dGhpcy54YXhpc0xhYmVscy5sZW5ndGgsdGhpcy5pc1JhbmdlQmFyJiYoaS0tLGE9dC5nbG9iYWxzLmxhYmVscy5sZW5ndGgsdC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmdC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlciYmKGk9dC5jb25maWcueGF4aXMudGlja0Ftb3VudCkpLHRoaXMuX2RyYXdYWUxpbmVzKHt4Q291bnQ6aSx0aWNrQW1vdW50OmF9KSk6KGk9YSxhPXQuZ2xvYmFscy54VGlja0Ftb3VudCx0aGlzLl9kcmF3SW52ZXJ0ZWRYWUxpbmVzKHt4Q291bnQ6aSx0aWNrQW1vdW50OmF9KSksdGhpcy5kcmF3R3JpZEJhbmRzKGksYSkse2VsOnRoaXMuZWxnLGVsR3JpZEJvcmRlcnM6dGhpcy5lbEdyaWRCb3JkZXJzLHhBeGlzVGlja1dpZHRoOnQuZ2xvYmFscy5ncmlkV2lkdGgvaX19fSx7a2V5OlwiZHJhd0dyaWRCYW5kc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKHZvaWQgMCE9PWkuY29uZmlnLmdyaWQucm93LmNvbG9ycyYmaS5jb25maWcuZ3JpZC5yb3cuY29sb3JzLmxlbmd0aD4wKWZvcih2YXIgYT0wLHM9aS5nbG9iYWxzLmdyaWRIZWlnaHQvZSxyPWkuZ2xvYmFscy5ncmlkV2lkdGgsbz0wLG49MDtvPGU7bysrLG4rKyluPj1pLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMubGVuZ3RoJiYobj0wKSx0aGlzLl9kcmF3R3JpZEJhbmRSZWN0KHtjOm4seDE6MCx5MTphLHgyOnIseTI6cyx0eXBlOlwicm93XCJ9KSxhKz1pLmdsb2JhbHMuZ3JpZEhlaWdodC9lO2lmKHZvaWQgMCE9PWkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycyYmaS5jb25maWcuZ3JpZC5jb2x1bW4uY29sb3JzLmxlbmd0aD4wKWZvcih2YXIgbD1pLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHxcIm9uXCIhPT1pLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50fHxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljP3Q6dC0xLGg9aS5nbG9iYWxzLnBhZEhvcml6b250YWwsYz1pLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtpLmdsb2JhbHMuZ3JpZFdpZHRoL2wsZD1pLmdsb2JhbHMuZ3JpZEhlaWdodCxnPTAsdT0wO2c8dDtnKyssdSsrKXU+PWkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycy5sZW5ndGgmJih1PTApLHRoaXMuX2RyYXdHcmlkQmFuZFJlY3Qoe2M6dSx4MTpoLHkxOjAseDI6Yyx5MjpkLHR5cGU6XCJjb2x1bW5cIn0pLGgrPWkuZ2xvYmFscy5ncmlkV2lkdGgvbH19XSksdH0oKSxfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJuaWNlU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxMCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLHM9YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTp2b2lkIDAscj10aGlzLncsbz1NYXRoLmFicyhlLXQpO2lmKFwiZGF0YVBvaW50c1wiPT09KGk9dGhpcy5fYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlKGksYSxvKSkmJihpPXIuZ2xvYmFscy5kYXRhUG9pbnRzLTEpLHQ9PT1OdW1iZXIuTUlOX1ZBTFVFJiYwPT09ZXx8IXguaXNOdW1iZXIodCkmJiF4LmlzTnVtYmVyKGUpfHx0PT09TnVtYmVyLk1JTl9WQUxVRSYmZT09PS1OdW1iZXIuTUFYX1ZBTFVFKXJldHVybiB0PTAsZT1pLHRoaXMubGluZWFyU2NhbGUodCxlLGkpO3Q+ZT8oY29uc29sZS53YXJuKFwiYXhpcy5taW4gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBheGlzLm1heFwiKSxlPXQrLjEpOnQ9PT1lJiYodD0wPT09dD8wOnQtLjUsZT0wPT09ZT8yOmUrLjUpO3ZhciBuPVtdO288MSYmcyYmKFwiY2FuZGxlc3RpY2tcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwiY2FuZGxlc3RpY2tcIj09PXIuY29uZmlnLnNlcmllc1thXS50eXBlfHxcImJveFBsb3RcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09ci5jb25maWcuc2VyaWVzW2FdLnR5cGV8fHIuZ2xvYmFscy5pc1JhbmdlRGF0YSkmJihlKj0xLjAxKTt2YXIgbD1pKzE7bDwyP2w9MjpsPjImJihsLT0yKTt2YXIgaD1vL2wsYz1NYXRoLmZsb29yKHgubG9nMTAoaCkpLGQ9TWF0aC5wb3coMTAsYyksZz1NYXRoLnJvdW5kKGgvZCk7ZzwxJiYoZz0xKTt2YXIgdT1nKmQscD11Kk1hdGguZmxvb3IodC91KSxmPXUqTWF0aC5jZWlsKGUvdSksYj1wO2lmKHMmJm8+Mil7Zm9yKDtuLnB1c2goeC5zdHJpcE51bWJlcihiLDcpKSwhKChiKz11KT5mKTspO3JldHVybntyZXN1bHQ6bixuaWNlTWluOm5bMF0sbmljZU1heDpuW24ubGVuZ3RoLTFdfX12YXIgdj10OyhuPVtdKS5wdXNoKHguc3RyaXBOdW1iZXIodiw3KSk7Zm9yKHZhciBtPU1hdGguYWJzKGUtdCkvaSx5PTA7eTw9aTt5Kyspdis9bSxuLnB1c2godik7cmV0dXJuIG5bbi5sZW5ndGgtMl0+PWUmJm4ucG9wKCkse3Jlc3VsdDpuLG5pY2VNaW46blswXSxuaWNlTWF4Om5bbi5sZW5ndGgtMV19fX0se2tleTpcImxpbmVhclNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAsYT1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMCxzPU1hdGguYWJzKGUtdCk7XCJkYXRhUG9pbnRzXCI9PT0oaT10aGlzLl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2UoaSxhLHMpKSYmKGk9dGhpcy53Lmdsb2JhbHMuZGF0YVBvaW50cy0xKTt2YXIgcj1zL2k7aT09PU51bWJlci5NQVhfVkFMVUUmJihpPTEwLHI9MSk7Zm9yKHZhciBvPVtdLG49dDtpPj0wOylvLnB1c2gobiksbis9cixpLT0xO3JldHVybntyZXN1bHQ6byxuaWNlTWluOm9bMF0sbmljZU1heDpvW28ubGVuZ3RoLTFdfX19LHtrZXk6XCJsb2dhcml0aG1pY1NjYWxlTmljZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtlPD0wJiYoZT1NYXRoLm1heCh0LGkpKSx0PD0wJiYodD1NYXRoLm1pbihlLGkpKTtmb3IodmFyIGE9W10scz1NYXRoLmNlaWwoTWF0aC5sb2coZSkvTWF0aC5sb2coaSkrMSkscj1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGgubG9nKGkpKTtyPHM7cisrKWEucHVzaChNYXRoLnBvdyhpLHIpKTtyZXR1cm57cmVzdWx0OmEsbmljZU1pbjphWzBdLG5pY2VNYXg6YVthLmxlbmd0aC0xXX19fSx7a2V5OlwibG9nYXJpdGhtaWNTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtlPD0wJiYoZT1NYXRoLm1heCh0LGkpKSx0PD0wJiYodD1NYXRoLm1pbihlLGkpKTtmb3IodmFyIGE9W10scz1NYXRoLmxvZyhlKS9NYXRoLmxvZyhpKSxyPU1hdGgubG9nKHQpL01hdGgubG9nKGkpLG89cy1yLG49TWF0aC5yb3VuZChvKSxsPW8vbixoPTAsYz1yO2g8bjtoKyssYys9bClhLnB1c2goTWF0aC5wb3coaSxjKSk7cmV0dXJuIGEucHVzaChNYXRoLnBvdyhpLHMpKSx7cmVzdWx0OmEsbmljZU1pbjp0LG5pY2VNYXg6ZX19fSx7a2V5OlwiX2FkanVzdFRpY2tzRm9yU21hbGxSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10O2lmKHZvaWQgMCE9PWUmJnRoaXMudy5jb25maWcueWF4aXNbZV0ubGFiZWxzLmZvcm1hdHRlciYmdm9pZCAwPT09dGhpcy53LmNvbmZpZy55YXhpc1tlXS50aWNrQW1vdW50KXt2YXIgcz1OdW1iZXIodGhpcy53LmNvbmZpZy55YXhpc1tlXS5sYWJlbHMuZm9ybWF0dGVyKDEpKTt4LmlzTnVtYmVyKHMpJiYwPT09dGhpcy53Lmdsb2JhbHMueVZhbHVlRGVjaW1hbCYmKGE9TWF0aC5jZWlsKGkpKX1yZXR1cm4gYTx0P2E6dH19LHtrZXk6XCJzZXRZU2NhbGVGb3JJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncuZ2xvYmFscyxzPXRoaXMudy5jb25maWcscj1hLmlzQmFySG9yaXpvbnRhbD9zLnhheGlzOnMueWF4aXNbdF07dm9pZCAwPT09YS55QXhpc1NjYWxlW3RdJiYoYS55QXhpc1NjYWxlW3RdPVtdKTt2YXIgbz1NYXRoLmFicyhpLWUpO2lmKHIubG9nYXJpdGhtaWMmJm88PTUmJihhLmludmFsaWRMb2dTY2FsZT0hMCksci5sb2dhcml0aG1pYyYmbz41KWEuYWxsU2VyaWVzQ29sbGFwc2VkPSExLGEueUF4aXNTY2FsZVt0XT10aGlzLmxvZ2FyaXRobWljU2NhbGUoZSxpLHIubG9nQmFzZSksYS55QXhpc1NjYWxlW3RdPXIuZm9yY2VOaWNlU2NhbGU/dGhpcy5sb2dhcml0aG1pY1NjYWxlTmljZShlLGksci5sb2dCYXNlKTp0aGlzLmxvZ2FyaXRobWljU2NhbGUoZSxpLHIubG9nQmFzZSk7ZWxzZSBpZihpIT09LU51bWJlci5NQVhfVkFMVUUmJnguaXNOdW1iZXIoaSkpaWYoYS5hbGxTZXJpZXNDb2xsYXBzZWQ9ITEsdm9pZCAwPT09ci5taW4mJnZvaWQgMD09PXIubWF4fHxyLmZvcmNlTmljZVNjYWxlKXt2YXIgbj12b2lkIDA9PT1zLnlheGlzW3RdLm1heCYmdm9pZCAwPT09cy55YXhpc1t0XS5taW58fHMueWF4aXNbdF0uZm9yY2VOaWNlU2NhbGU7YS55QXhpc1NjYWxlW3RdPXRoaXMubmljZVNjYWxlKGUsaSxyLnRpY2tBbW91bnQ/ci50aWNrQW1vdW50Om88NSYmbz4xP28rMTo1LHQsbil9ZWxzZSBhLnlBeGlzU2NhbGVbdF09dGhpcy5saW5lYXJTY2FsZShlLGksci50aWNrQW1vdW50LHQpO2Vsc2UgYS55QXhpc1NjYWxlW3RdPXRoaXMubGluZWFyU2NhbGUoMCw1LDUpfX0se2tleTpcInNldFhTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9aS5nbG9iYWxzLHM9aS5jb25maWcueGF4aXMscj1NYXRoLmFicyhlLXQpO3JldHVybiBlIT09LU51bWJlci5NQVhfVkFMVUUmJnguaXNOdW1iZXIoZSk/YS54QXhpc1NjYWxlPXRoaXMubGluZWFyU2NhbGUodCxlLHMudGlja0Ftb3VudD9zLnRpY2tBbW91bnQ6cjw1JiZyPjE/cisxOjUsMCk6YS54QXhpc1NjYWxlPXRoaXMubGluZWFyU2NhbGUoMCw1LDUpLGEueEF4aXNTY2FsZX19LHtrZXk6XCJzZXRNdWx0aXBsZVlTY2FsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcsYT1lLm1pbllBcnIuY29uY2F0KFtdKSxzPWUubWF4WUFyci5jb25jYXQoW10pLHI9W107aS55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLG8pe3ZhciBuPW87aS5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt0Lm5hbWU9PT1lLnNlcmllc05hbWUmJihuPWksbyE9PWk/ci5wdXNoKHtpbmRleDppLHNpbWlsYXJJbmRleDpvLGFscmVhZHlFeGlzdHM6ITB9KTpyLnB1c2goe2luZGV4Oml9KSl9KSk7dmFyIGw9YVtuXSxoPXNbbl07dC5zZXRZU2NhbGVGb3JJbmRleChvLGwsaCl9KSksdGhpcy5zYW1lU2NhbGVJbk11bHRpcGxlQXhlcyhhLHMscil9fSx7a2V5Olwic2FtZVNjYWxlSW5NdWx0aXBsZUF4ZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcyxzPXRoaXMudy5jb25maWcscj10aGlzLncuZ2xvYmFscyxvPVtdO2kuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5hbHJlYWR5RXhpc3RzJiYodm9pZCAwPT09b1t0LmluZGV4XSYmKG9bdC5pbmRleF09W10pLG9bdC5pbmRleF0ucHVzaCh0LmluZGV4KSxvW3QuaW5kZXhdLnB1c2godC5zaW1pbGFySW5kZXgpKX0pKSxyLnlBeGlzU2FtZVNjYWxlSW5kaWNlcz1vLG8uZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtvLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7dmFyIHMscjtlIT09YSYmKHM9dCxyPWkscy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xIT09ci5pbmRleE9mKHQpfSkpKS5sZW5ndGg+MCYmKG9bZV09b1tlXS5jb25jYXQob1thXSkpfSkpfSkpO3ZhciBuPW8ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQuaW5kZXhPZihlKT09PWl9KSl9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zb3J0KCl9KSk7bz1vLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISF0fSkpO3ZhciBsPW4uc2xpY2UoKSxoPWwubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9KSk7bD1sLmZpbHRlcigoZnVuY3Rpb24odCxlKXtyZXR1cm4gaC5pbmRleE9mKEpTT04uc3RyaW5naWZ5KHQpKT09PWV9KSk7dmFyIGM9W10sZD1bXTt0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7bC5mb3JFYWNoKChmdW5jdGlvbihhLHMpe2EuaW5kZXhPZihpKT4tMSYmKHZvaWQgMD09PWNbc10mJihjW3NdPVtdLGRbc109W10pLGNbc10ucHVzaCh7a2V5OmksdmFsdWU6dH0pLGRbc10ucHVzaCh7a2V5OmksdmFsdWU6ZVtpXX0pKX0pKX0pKTt2YXIgZz1BcnJheS5hcHBseShudWxsLEFycmF5KGwubGVuZ3RoKSkubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZixOdW1iZXIuTUlOX1ZBTFVFKSx1PUFycmF5LmFwcGx5KG51bGwsQXJyYXkobC5sZW5ndGgpKS5tYXAoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLC1OdW1iZXIuTUFYX1ZBTFVFKTtjLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2dbZV09TWF0aC5taW4odC52YWx1ZSxnW2VdKX0pKX0pKSxkLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3VbZV09TWF0aC5tYXgodC52YWx1ZSx1W2VdKX0pKX0pKSx0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7ZC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3ZhciBvPWdbaV0sbj11W2ldO3MuY2hhcnQuc3RhY2tlZCYmKG49MCx0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC52YWx1ZSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiYobis9dC52YWx1ZSksbyE9PU51bWJlci5NSU5fVkFMVUUmJihvKz1jW2ldW2VdLnZhbHVlKX0pKSksdC5mb3JFYWNoKChmdW5jdGlvbihpLGwpe3RbbF0ua2V5PT09ZSYmKHZvaWQgMCE9PXMueWF4aXNbZV0ubWluJiYobz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzLnlheGlzW2VdLm1pbj9zLnlheGlzW2VdLm1pbihyLm1pblkpOnMueWF4aXNbZV0ubWluKSx2b2lkIDAhPT1zLnlheGlzW2VdLm1heCYmKG49XCJmdW5jdGlvblwiPT10eXBlb2Ygcy55YXhpc1tlXS5tYXg/cy55YXhpc1tlXS5tYXgoci5tYXhZKTpzLnlheGlzW2VdLm1heCksYS5zZXRZU2NhbGVGb3JJbmRleChlLG8sbikpfSkpfSkpfSkpfX0se2tleTpcImF1dG9TY2FsZVlcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dHx8KHQ9dGhpcyk7dmFyIGE9dC53O2lmKGEuZ2xvYmFscy5pc011bHRpcGxlWUF4aXN8fGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoKXJldHVybiBjb25zb2xlLndhcm4oXCJhdXRvU2NhbGVZYXhpcyBub3Qgc3VwcG9ydGVkIGluIGEgbXVsdGkteWF4aXMgY2hhcnQuXCIpLGU7dmFyIHM9YS5nbG9iYWxzLnNlcmllc1hbMF0scj1hLmNvbmZpZy5jaGFydC5zdGFja2VkO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQsbyl7Zm9yKHZhciBuPTAsbD0wO2w8cy5sZW5ndGg7bCsrKWlmKHNbbF0+PWkueGF4aXMubWluKXtuPWw7YnJlYWt9dmFyIGgsYyxkPWEuZ2xvYmFscy5taW5ZQXJyW29dLGc9YS5nbG9iYWxzLm1heFlBcnJbb10sdT1hLmdsb2JhbHMuc3RhY2tlZFNlcmllc1RvdGFsczthLmdsb2JhbHMuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKG8sbCl7dmFyIHA9b1tuXTtyPyhwPXVbbl0saD1jPXAsdS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3NbZV08PWkueGF4aXMubWF4JiZzW2VdPj1pLnhheGlzLm1pbiYmKHQ+YyYmbnVsbCE9PXQmJihjPXQpLG9bZV08aCYmbnVsbCE9PW9bZV0mJihoPW9bZV0pKX0pKSk6KGg9Yz1wLG8uZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtpZihzW2VdPD1pLnhheGlzLm1heCYmc1tlXT49aS54YXhpcy5taW4pe3ZhciByPXQsbz10O2EuZ2xvYmFscy5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXtudWxsIT09dCYmKHI9TWF0aC5taW4oaVtlXSxyKSxvPU1hdGgubWF4KGlbZV0sbykpfSkpLG8+YyYmbnVsbCE9PW8mJihjPW8pLHI8aCYmbnVsbCE9PXImJihoPXIpfX0pKSksdm9pZCAwPT09aCYmdm9pZCAwPT09YyYmKGg9ZCxjPWcpLGMqPWM8MD8uOToxLjEsMD09PShoKj1oPDA/MS4xOi45KSYmMD09PWMmJihoPS0xLGM9MSksYzwwJiZjPGcmJihjPWcpLGg8MCYmaD5kJiYoaD1kKSxlLmxlbmd0aD4xPyhlW2xdLm1pbj12b2lkIDA9PT10Lm1pbj9oOnQubWluLGVbbF0ubWF4PXZvaWQgMD09PXQubWF4P2M6dC5tYXgpOihlWzBdLm1pbj12b2lkIDA9PT10Lm1pbj9oOnQubWluLGVbMF0ubWF4PXZvaWQgMD09PXQubWF4P2M6dC5tYXgpfSkpfSkpLGV9fV0pLHR9KCksVT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnNjYWxlcz1uZXcgXyhlKX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRZUmFuZ2UoKSx0aGlzLnNldFhSYW5nZSgpLHRoaXMuc2V0WlJhbmdlKCl9fSx7a2V5OlwiZ2V0TWluWU1heFlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06TnVtYmVyLk1BWF9WQUxVRSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTotTnVtYmVyLk1BWF9WQUxVRSxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLHM9dGhpcy53LmNvbmZpZyxyPXRoaXMudy5nbG9iYWxzLG89LU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUlOX1ZBTFVFO251bGw9PT1hJiYoYT10KzEpO3ZhciBsPXIuc2VyaWVzLGg9bCxjPWw7XCJjYW5kbGVzdGlja1wiPT09cy5jaGFydC50eXBlPyhoPXIuc2VyaWVzQ2FuZGxlTCxjPXIuc2VyaWVzQ2FuZGxlSCk6XCJib3hQbG90XCI9PT1zLmNoYXJ0LnR5cGU/KGg9ci5zZXJpZXNDYW5kbGVPLGM9ci5zZXJpZXNDYW5kbGVDKTpyLmlzUmFuZ2VEYXRhJiYoaD1yLnNlcmllc1JhbmdlU3RhcnQsYz1yLnNlcmllc1JhbmdlRW5kKTtmb3IodmFyIGQ9dDtkPGE7ZCsrKXtyLmRhdGFQb2ludHM9TWF0aC5tYXgoci5kYXRhUG9pbnRzLGxbZF0ubGVuZ3RoKSxyLmNhdGVnb3J5TGFiZWxzLmxlbmd0aCYmKHIuZGF0YVBvaW50cz1yLmNhdGVnb3J5TGFiZWxzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXR9KSkubGVuZ3RoKSxyLmxhYmVscy5sZW5ndGgmJlwiZGF0ZXRpbWVcIiE9PXMueGF4aXMudHlwZSYmMCE9PXIuc2VyaWVzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmxlbmd0aH0pLDApJiYoci5kYXRhUG9pbnRzPU1hdGgubWF4KHIuZGF0YVBvaW50cyxyLmxhYmVscy5sZW5ndGgpKTtmb3IodmFyIGc9MDtnPHIuc2VyaWVzW2RdLmxlbmd0aDtnKyspe3ZhciB1PWxbZF1bZ107bnVsbCE9PXUmJnguaXNOdW1iZXIodSk/KHZvaWQgMCE9PWNbZF1bZ10mJihvPU1hdGgubWF4KG8sY1tkXVtnXSksZT1NYXRoLm1pbihlLGNbZF1bZ10pKSx2b2lkIDAhPT1oW2RdW2ddJiYoZT1NYXRoLm1pbihlLGhbZF1bZ10pLGk9TWF0aC5tYXgoaSxoW2RdW2ddKSksXCJjYW5kbGVzdGlja1wiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJyYW5nZUFyZWFcIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlfHwoXCJjYW5kbGVzdGlja1wiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZXx8dm9pZCAwIT09ci5zZXJpZXNDYW5kbGVDW2RdW2ddJiYobz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlT1tkXVtnXSksbz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlSFtkXVtnXSksbz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlTFtkXVtnXSksbz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlQ1tkXVtnXSksXCJib3hQbG90XCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJihvPU1hdGgubWF4KG8sci5zZXJpZXNDYW5kbGVNW2RdW2ddKSkpLCFzLnNlcmllc1tkXS50eXBlfHxcImNhbmRsZXN0aWNrXCI9PT1zLnNlcmllc1tkXS50eXBlJiZcImJveFBsb3RcIj09PXMuc2VyaWVzW2RdLnR5cGUmJlwicmFuZ2VBcmVhXCI9PT1zLnNlcmllc1tkXS50eXBlJiZcInJhbmdlQmFyXCI9PT1zLnNlcmllc1tkXS50eXBlfHwobz1NYXRoLm1heChvLHIuc2VyaWVzW2RdW2ddKSxlPU1hdGgubWluKGUsci5zZXJpZXNbZF1bZ10pKSxpPW8pLHIuc2VyaWVzR29hbHNbZF0mJnIuc2VyaWVzR29hbHNbZF1bZ10mJkFycmF5LmlzQXJyYXkoci5zZXJpZXNHb2Fsc1tkXVtnXSkmJnIuc2VyaWVzR29hbHNbZF1bZ10uZm9yRWFjaCgoZnVuY3Rpb24odCl7biE9PU51bWJlci5NSU5fVkFMVUUmJihuPU1hdGgubWluKG4sdC52YWx1ZSksZT1uKSxvPU1hdGgubWF4KG8sdC52YWx1ZSksaT1vfSkpLHguaXNGbG9hdCh1KSYmKHU9eC5ub0V4cG9uZW50cyh1KSxyLnlWYWx1ZURlY2ltYWw9TWF0aC5tYXgoci55VmFsdWVEZWNpbWFsLHUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0ubGVuZ3RoKSksbj5oW2RdW2ddJiZoW2RdW2ddPDAmJihuPWhbZF1bZ10pKTpyLmhhc051bGxWYWx1ZXM9ITB9fXJldHVyblwicmFuZ2VCYXJcIj09PXMuY2hhcnQudHlwZSYmci5zZXJpZXNSYW5nZVN0YXJ0Lmxlbmd0aCYmci5pc0Jhckhvcml6b250YWwmJihuPWUpLFwiYmFyXCI9PT1zLmNoYXJ0LnR5cGUmJihuPDAmJm88MCYmKG89MCksbj09PU51bWJlci5NSU5fVkFMVUUmJihuPTApKSx7bWluWTpuLG1heFk6byxsb3dlc3RZOmUsaGlnaGVzdFk6aX19fSx7a2V5Olwic2V0WVJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWc7dC5tYXhZPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWT1OdW1iZXIuTUlOX1ZBTFVFO3ZhciBpPU51bWJlci5NQVhfVkFMVUU7aWYodC5pc011bHRpcGxlWUF4aXMpZm9yKHZhciBhPTA7YTx0LnNlcmllcy5sZW5ndGg7YSsrKXt2YXIgcz10aGlzLmdldE1pbllNYXhZKGEsaSxudWxsLGErMSk7dC5taW5ZQXJyLnB1c2gocy5taW5ZKSx0Lm1heFlBcnIucHVzaChzLm1heFkpLGk9cy5sb3dlc3RZfXZhciByPXRoaXMuZ2V0TWluWU1heFkoMCxpLG51bGwsdC5zZXJpZXMubGVuZ3RoKTtpZih0Lm1pblk9ci5taW5ZLHQubWF4WT1yLm1heFksaT1yLmxvd2VzdFksZS5jaGFydC5zdGFja2VkJiZ0aGlzLl9zZXRTdGFja2VkTWluTWF4KCksKFwibGluZVwiPT09ZS5jaGFydC50eXBlfHxcImFyZWFcIj09PWUuY2hhcnQudHlwZXx8XCJjYW5kbGVzdGlja1wiPT09ZS5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PWUuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09ZS5jaGFydC50eXBlJiYhdC5pc0Jhckhvcml6b250YWwpJiZ0Lm1pblk9PT1OdW1iZXIuTUlOX1ZBTFVFJiZpIT09LU51bWJlci5NQVhfVkFMVUUmJmkhPT10Lm1heFkpe3ZhciBvPXQubWF4WS1pOyhpPj0wJiZpPD0xMHx8dm9pZCAwIT09ZS55YXhpc1swXS5taW58fHZvaWQgMCE9PWUueWF4aXNbMF0ubWF4KSYmKG89MCksdC5taW5ZPWktNSpvLzEwMCxpPjAmJnQubWluWTwwJiYodC5taW5ZPTApLHQubWF4WT10Lm1heFkrNSpvLzEwMH1pZihlLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dm9pZCAwIT09ZS5tYXgmJihcIm51bWJlclwiPT10eXBlb2YgZS5tYXg/dC5tYXhZQXJyW2ldPWUubWF4OlwiZnVuY3Rpb25cIj09dHlwZW9mIGUubWF4JiYodC5tYXhZQXJyW2ldPWUubWF4KHQuaXNNdWx0aXBsZVlBeGlzP3QubWF4WUFycltpXTp0Lm1heFkpKSx0Lm1heFk9dC5tYXhZQXJyW2ldKSx2b2lkIDAhPT1lLm1pbiYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLm1pbj90Lm1pbllBcnJbaV09ZS5taW46XCJmdW5jdGlvblwiPT10eXBlb2YgZS5taW4mJih0Lm1pbllBcnJbaV09ZS5taW4odC5pc011bHRpcGxlWUF4aXM/dC5taW5ZQXJyW2ldPT09TnVtYmVyLk1JTl9WQUxVRT8wOnQubWluWUFycltpXTp0Lm1pblkpKSx0Lm1pblk9dC5taW5ZQXJyW2ldKX0pKSx0LmlzQmFySG9yaXpvbnRhbCl7W1wibWluXCIsXCJtYXhcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7dm9pZCAwIT09ZS54YXhpc1tpXSYmXCJudW1iZXJcIj09dHlwZW9mIGUueGF4aXNbaV0mJihcIm1pblwiPT09aT90Lm1pblk9ZS54YXhpc1tpXTp0Lm1heFk9ZS54YXhpc1tpXSl9KSl9cmV0dXJuIHQuaXNNdWx0aXBsZVlBeGlzPyh0aGlzLnNjYWxlcy5zZXRNdWx0aXBsZVlTY2FsZXMoKSx0Lm1pblk9aSx0LnlBeGlzU2NhbGUuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt0Lm1pbllBcnJbaV09ZS5uaWNlTWluLHQubWF4WUFycltpXT1lLm5pY2VNYXh9KSkpOih0aGlzLnNjYWxlcy5zZXRZU2NhbGVGb3JJbmRleCgwLHQubWluWSx0Lm1heFkpLHQubWluWT10LnlBeGlzU2NhbGVbMF0ubmljZU1pbix0Lm1heFk9dC55QXhpc1NjYWxlWzBdLm5pY2VNYXgsdC5taW5ZQXJyWzBdPXQueUF4aXNTY2FsZVswXS5uaWNlTWluLHQubWF4WUFyclswXT10LnlBeGlzU2NhbGVbMF0ubmljZU1heCkse21pblk6dC5taW5ZLG1heFk6dC5tYXhZLG1pbllBcnI6dC5taW5ZQXJyLG1heFlBcnI6dC5tYXhZQXJyLHlBeGlzU2NhbGU6dC55QXhpc1NjYWxlfX19LHtrZXk6XCJzZXRYUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZyxpPVwibnVtZXJpY1wiPT09ZS54YXhpcy50eXBlfHxcImRhdGV0aW1lXCI9PT1lLnhheGlzLnR5cGV8fFwiY2F0ZWdvcnlcIj09PWUueGF4aXMudHlwZSYmIXQubm9MYWJlbHNQcm92aWRlZHx8dC5ub0xhYmVsc1Byb3ZpZGVkfHx0LmlzWE51bWVyaWM7aWYodC5pc1hOdW1lcmljJiZmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dC5zZXJpZXMubGVuZ3RoO2UrKylpZih0LmxhYmVsc1tlXSlmb3IodmFyIGk9MDtpPHQubGFiZWxzW2VdLmxlbmd0aDtpKyspbnVsbCE9PXQubGFiZWxzW2VdW2ldJiZ4LmlzTnVtYmVyKHQubGFiZWxzW2VdW2ldKSYmKHQubWF4WD1NYXRoLm1heCh0Lm1heFgsdC5sYWJlbHNbZV1baV0pLHQuaW5pdGlhbE1heFg9TWF0aC5tYXgodC5tYXhYLHQubGFiZWxzW2VdW2ldKSx0Lm1pblg9TWF0aC5taW4odC5taW5YLHQubGFiZWxzW2VdW2ldKSx0LmluaXRpYWxNaW5YPU1hdGgubWluKHQubWluWCx0LmxhYmVsc1tlXVtpXSkpfSgpLHQubm9MYWJlbHNQcm92aWRlZCYmMD09PWUueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgmJih0Lm1heFg9dC5sYWJlbHNbdC5sYWJlbHMubGVuZ3RoLTFdLHQuaW5pdGlhbE1heFg9dC5sYWJlbHNbdC5sYWJlbHMubGVuZ3RoLTFdLHQubWluWD0xLHQuaW5pdGlhbE1pblg9MSksdC5pc1hOdW1lcmljfHx0Lm5vTGFiZWxzUHJvdmlkZWR8fHQuZGF0YUZvcm1hdFhOdW1lcmljKXt2YXIgYTtpZih2b2lkIDA9PT1lLnhheGlzLnRpY2tBbW91bnQ/KGE9TWF0aC5yb3VuZCh0LnN2Z1dpZHRoLzE1MCksXCJudW1lcmljXCI9PT1lLnhheGlzLnR5cGUmJnQuZGF0YVBvaW50czwzMCYmKGE9dC5kYXRhUG9pbnRzLTEpLGE+dC5kYXRhUG9pbnRzJiYwIT09dC5kYXRhUG9pbnRzJiYoYT10LmRhdGFQb2ludHMtMSkpOlwiZGF0YVBvaW50c1wiPT09ZS54YXhpcy50aWNrQW1vdW50Pyh0LnNlcmllcy5sZW5ndGg+MSYmKGE9dC5zZXJpZXNbdC5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMSksdC5pc1hOdW1lcmljJiYoYT10Lm1heFgtdC5taW5YLTEpKTphPWUueGF4aXMudGlja0Ftb3VudCx0LnhUaWNrQW1vdW50PWEsdm9pZCAwIT09ZS54YXhpcy5tYXgmJlwibnVtYmVyXCI9PXR5cGVvZiBlLnhheGlzLm1heCYmKHQubWF4WD1lLnhheGlzLm1heCksdm9pZCAwIT09ZS54YXhpcy5taW4mJlwibnVtYmVyXCI9PXR5cGVvZiBlLnhheGlzLm1pbiYmKHQubWluWD1lLnhheGlzLm1pbiksdm9pZCAwIT09ZS54YXhpcy5yYW5nZSYmKHQubWluWD10Lm1heFgtZS54YXhpcy5yYW5nZSksdC5taW5YIT09TnVtYmVyLk1BWF9WQUxVRSYmdC5tYXhYIT09LU51bWJlci5NQVhfVkFMVUUpaWYoZS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJiF0LmRhdGFGb3JtYXRYTnVtZXJpYyl7Zm9yKHZhciBzPVtdLHI9dC5taW5YLTE7cjx0Lm1heFg7cisrKXMucHVzaChyKzEpO3QueEF4aXNTY2FsZT17cmVzdWx0OnMsbmljZU1pbjpzWzBdLG5pY2VNYXg6c1tzLmxlbmd0aC0xXX19ZWxzZSB0LnhBeGlzU2NhbGU9dGhpcy5zY2FsZXMuc2V0WFNjYWxlKHQubWluWCx0Lm1heFgpO2Vsc2UgdC54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLmxpbmVhclNjYWxlKDAsYSxhKSx0Lm5vTGFiZWxzUHJvdmlkZWQmJnQubGFiZWxzLmxlbmd0aD4wJiYodC54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLmxpbmVhclNjYWxlKDEsdC5sYWJlbHMubGVuZ3RoLGEtMSksdC5zZXJpZXNYPXQubGFiZWxzLnNsaWNlKCkpO2kmJih0LmxhYmVscz10LnhBeGlzU2NhbGUucmVzdWx0LnNsaWNlKCkpfXJldHVybiB0LmlzQmFySG9yaXpvbnRhbCYmdC5sYWJlbHMubGVuZ3RoJiYodC54VGlja0Ftb3VudD10LmxhYmVscy5sZW5ndGgpLHRoaXMuX2hhbmRsZVNpbmdsZURhdGFQb2ludCgpLHRoaXMuX2dldE1pblhEaWZmKCkse21pblg6dC5taW5YLG1heFg6dC5tYXhYfX19LHtrZXk6XCJzZXRaUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzO2lmKHQuaXNEYXRhWFlaKWZvcih2YXIgZT0wO2U8dC5zZXJpZXMubGVuZ3RoO2UrKylpZih2b2lkIDAhPT10LnNlcmllc1pbZV0pZm9yKHZhciBpPTA7aTx0LnNlcmllc1pbZV0ubGVuZ3RoO2krKyludWxsIT09dC5zZXJpZXNaW2VdW2ldJiZ4LmlzTnVtYmVyKHQuc2VyaWVzWltlXVtpXSkmJih0Lm1heFo9TWF0aC5tYXgodC5tYXhaLHQuc2VyaWVzWltlXVtpXSksdC5taW5aPU1hdGgubWluKHQubWluWix0LnNlcmllc1pbZV1baV0pKX19LHtrZXk6XCJfaGFuZGxlU2luZ2xlRGF0YVBvaW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWc7aWYodC5taW5YPT09dC5tYXhYKXt2YXIgaT1uZXcgSSh0aGlzLmN0eCk7aWYoXCJkYXRldGltZVwiPT09ZS54YXhpcy50eXBlKXt2YXIgYT1pLmdldERhdGUodC5taW5YKTtlLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9hLnNldFVUQ0RhdGUoYS5nZXRVVENEYXRlKCktMik6YS5zZXREYXRlKGEuZ2V0RGF0ZSgpLTIpLHQubWluWD1uZXcgRGF0ZShhKS5nZXRUaW1lKCk7dmFyIHM9aS5nZXREYXRlKHQubWF4WCk7ZS54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/cy5zZXRVVENEYXRlKHMuZ2V0VVRDRGF0ZSgpKzIpOnMuc2V0RGF0ZShzLmdldERhdGUoKSsyKSx0Lm1heFg9bmV3IERhdGUocykuZ2V0VGltZSgpfWVsc2UoXCJudW1lcmljXCI9PT1lLnhheGlzLnR5cGV8fFwiY2F0ZWdvcnlcIj09PWUueGF4aXMudHlwZSYmIXQubm9MYWJlbHNQcm92aWRlZCkmJih0Lm1pblg9dC5taW5YLTIsdC5pbml0aWFsTWluWD10Lm1pblgsdC5tYXhYPXQubWF4WCsyLHQuaW5pdGlhbE1heFg9dC5tYXhYKX19fSx7a2V5OlwiX2dldE1pblhEaWZmXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFsczt0LmlzWE51bWVyaWMmJnQuc2VyaWVzWC5mb3JFYWNoKChmdW5jdGlvbihlLGkpezE9PT1lLmxlbmd0aCYmZS5wdXNoKHQuc2VyaWVzWFt0Lm1heFZhbHNJbkFycmF5SW5kZXhdW3Quc2VyaWVzWFt0Lm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aC0xXSk7dmFyIGE9ZS5zbGljZSgpO2Euc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpLGEuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXtpZihpPjApe3ZhciBzPWUtYVtpLTFdO3M+MCYmKHQubWluWERpZmY9TWF0aC5taW4ocyx0Lm1pblhEaWZmKSl9fSkpLDEhPT10LmRhdGFQb2ludHMmJnQubWluWERpZmYhPT1OdW1iZXIuTUFYX1ZBTFVFfHwodC5taW5YRGlmZj0uNSl9KSl9fSx7a2V5OlwiX3NldFN0YWNrZWRNaW5NYXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncuZ2xvYmFscztpZihlLnNlcmllcy5sZW5ndGgpe3ZhciBpPWUuc2VyaWVzR3JvdXBzO2kubGVuZ3RofHwoaT1bdGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lfSkpXSk7dmFyIGE9e30scz17fTtpLmZvckVhY2goKGZ1bmN0aW9uKGkpe2FbaV09W10sc1tpXT1bXSx0LncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuaW5kZXhPZih0Lm5hbWUpPi0xP2U6bnVsbH0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIHI9MDtyPGUuc2VyaWVzW2UubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO3IrKyl2b2lkIDA9PT1hW2ldW3JdJiYoYVtpXVtyXT0wLHNbaV1bcl09MCksbnVsbCE9PWUuc2VyaWVzW3RdW3JdJiZ4LmlzTnVtYmVyKGUuc2VyaWVzW3RdW3JdKSYmKGUuc2VyaWVzW3RdW3JdPjA/YVtpXVtyXSs9cGFyc2VGbG9hdChlLnNlcmllc1t0XVtyXSkrMWUtNDpzW2ldW3JdKz1wYXJzZUZsb2F0KGUuc2VyaWVzW3RdW3JdKSl9KSl9KSksT2JqZWN0LmVudHJpZXMoYSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9Zyh0LDEpWzBdO2FbaV0uZm9yRWFjaCgoZnVuY3Rpb24odCxyKXtlLm1heFk9TWF0aC5tYXgoZS5tYXhZLGFbaV1bcl0pLGUubWluWT1NYXRoLm1pbihlLm1pblksc1tpXVtyXSl9KSl9KSl9fX1dKSx0fSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy5lbGdyaWQ9aSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLnhheGlzRm9udFNpemU9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHRoaXMuYXhpc0ZvbnRGYW1pbHk9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksdGhpcy54YXhpc0ZvcmVDb2xvcnM9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNvbG9ycyx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsPVwiYmFyXCI9PT1zLmNvbmZpZy5jaGFydC50eXBlJiZzLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCx0aGlzLnhBeGlzb2ZmWD0wLFwiYm90dG9tXCI9PT1zLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKHRoaXMueEF4aXNvZmZYPXMuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmRyYXduTGFiZWxzPVtdLHRoaXMuYXhlc1V0aWxzPW5ldyBCKGUpfXJldHVybiByKHQsW3trZXk6XCJkcmF3WWF4aXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnN0eWxlLHI9cy5mb250U2l6ZSxvPXMuZm9udEZhbWlseSxuPXMuZm9udFdlaWdodCxsPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpc1wiLHJlbDp0LHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIitpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdK1wiLCAwKVwifSk7aWYodGhpcy5heGVzVXRpbHMuaXNZQXhpc0hpZGRlbih0KSlyZXR1cm4gbDt2YXIgaD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGV4dHMtZ1wifSk7bC5hZGQoaCk7dmFyIGM9aS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0Lmxlbmd0aC0xLGQ9aS5nbG9iYWxzLmdyaWRIZWlnaHQvYyxnPWkuZ2xvYmFscy50cmFuc2xhdGVZLHU9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF0scD1pLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQuc2xpY2UoKTtwPXRoaXMuYXhlc1V0aWxzLmNoZWNrRm9yUmV2ZXJzZWRMYWJlbHModCxwKTt2YXIgZj1cIlwiO2lmKGkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5zaG93KWZvcih2YXIgeD1mdW5jdGlvbihsKXt2YXIgeD1wW2xdO3g9dSh4LGwsaSk7dmFyIGI9aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnBhZGRpbmc7aS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJjAhPT1pLmNvbmZpZy55YXhpcy5sZW5ndGgmJihiKj0tMSk7dmFyIHY9XCJlbmRcIjtpLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKHY9XCJzdGFydFwiKSxcImxlZnRcIj09PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5hbGlnbj92PVwic3RhcnRcIjpcImNlbnRlclwiPT09aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLmFsaWduP3Y9XCJtaWRkbGVcIjpcInJpZ2h0XCI9PT1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuYWxpZ24mJih2PVwiZW5kXCIpO3ZhciBtPWUuYXhlc1V0aWxzLmdldFlBeGlzRm9yZUNvbG9yKHMuY29sb3JzLHQpLHk9aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLm9mZnNldFk7XCJoZWF0bWFwXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiYoeS09KGkuZ2xvYmFscy5ncmlkSGVpZ2h0L2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLTEpLzIpO3ZhciB3PWEuZHJhd1RleHQoe3g6Yix5OmcrYy8xMCt5KzEsdGV4dDp4LHRleHRBbmNob3I6dixmb250U2l6ZTpyLGZvbnRGYW1pbHk6byxmb250V2VpZ2h0Om4sbWF4V2lkdGg6aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLm1heFdpZHRoLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KG0pP21bbF06bSxpc1BsYWluVGV4dDohMSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtbGFiZWwgXCIrcy5jc3NDbGFzc30pO2w9PT1jJiYoZj13KSxoLmFkZCh3KTt2YXIgaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoaS5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7aWYoay50ZXh0Q29udGVudD1BcnJheS5pc0FycmF5KHgpP3guam9pbihcIiBcIik6eCx3Lm5vZGUuYXBwZW5kQ2hpbGQoayksMCE9PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUpe3ZhciBBPWEucm90YXRlQXJvdW5kQ2VudGVyKGYubm9kZSksUz1hLnJvdGF0ZUFyb3VuZENlbnRlcih3Lm5vZGUpO3cubm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQoaS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSxcIiBcIikuY29uY2F0KEEueCxcIiBcIikuY29uY2F0KFMueSxcIilcIikpfWcrPWR9LGI9YztiPj0wO2ItLSl4KGIpO2lmKHZvaWQgMCE9PWkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnRleHQpe3ZhciB2PWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZVwifSkseT0wO2kuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYoeT1pLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdKTt2YXIgdz1hLmRyYXdUZXh0KHt4OnkseTppLmdsb2JhbHMuZ3JpZEhlaWdodC8yK2kuZ2xvYmFscy50cmFuc2xhdGVZK2kuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFksdGV4dDppLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJlbmRcIixmb3JlQ29sb3I6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuY29sb3IsZm9udFNpemU6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvbnRGYW1pbHk6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udEZhbWlseSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGUtdGV4dCBcIitpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5jc3NDbGFzc30pO3YuYWRkKHcpLGwuYWRkKHYpfXZhciBrPWkuY29uZmlnLnlheGlzW3RdLmF4aXNCb3JkZXIsQT0zMStrLm9mZnNldFg7aWYoaS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJihBPS0zMS1rLm9mZnNldFgpLGsuc2hvdyl7dmFyIFM9YS5kcmF3TGluZShBLGkuZ2xvYmFscy50cmFuc2xhdGVZK2sub2Zmc2V0WS0yLEEsaS5nbG9iYWxzLmdyaWRIZWlnaHQraS5nbG9iYWxzLnRyYW5zbGF0ZVkray5vZmZzZXRZKzIsay5jb2xvciwwLGsud2lkdGgpO2wuYWRkKFMpfXJldHVybiBpLmNvbmZpZy55YXhpc1t0XS5heGlzVGlja3Muc2hvdyYmdGhpcy5heGVzVXRpbHMuZHJhd1lBeGlzVGlja3MoQSxjLGssaS5jb25maWcueWF4aXNbdF0uYXhpc1RpY2tzLHQsZCxsKSxsfX0se2tleTpcImRyYXdZYXhpc0ludmVyc2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzIGFwZXhjaGFydHMteWF4aXMtaW52ZXJzZWRcIn0pLHM9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGUuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1gsXCIsIFwiKS5jb25jYXQoZS5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWSxcIilcIil9KTthLmFkZChzKTt2YXIgcj1lLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQubGVuZ3RoLTEsbz1lLmdsb2JhbHMuZ3JpZFdpZHRoL3IrLjEsbj1vK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYLGw9ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixoPWUuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5zbGljZSgpLGM9ZS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscztjLmxlbmd0aD4wJiYodGhpcy54YXhpc0xhYmVscz1jLnNsaWNlKCkscj0oaD1jLnNsaWNlKCkpLmxlbmd0aCksaD10aGlzLmF4ZXNVdGlscy5jaGVja0ZvclJldmVyc2VkTGFiZWxzKHQsaCk7dmFyIGQ9Yy5sZW5ndGg7aWYoZS5jb25maWcueGF4aXMubGFiZWxzLnNob3cpZm9yKHZhciBnPWQ/MDpyO2Q/ZzxkOmc+PTA7ZD9nKys6Zy0tKXt2YXIgdT1oW2ddO3U9bCh1LGcsZSk7dmFyIHA9ZS5nbG9iYWxzLmdyaWRXaWR0aCtlLmdsb2JhbHMucGFkSG9yaXpvbnRhbC0obi1vK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYKTtpZihjLmxlbmd0aCl7dmFyIGY9dGhpcy5heGVzVXRpbHMuZ2V0TGFiZWwoaCxjLHAsZyx0aGlzLmRyYXduTGFiZWxzLHRoaXMueGF4aXNGb250U2l6ZSk7cD1mLngsdT1mLnRleHQsdGhpcy5kcmF3bkxhYmVscy5wdXNoKGYudGV4dCksMD09PWcmJmUuZ2xvYmFscy5za2lwRmlyc3RUaW1lbGluZWxhYmVsJiYodT1cIlwiKSxnPT09aC5sZW5ndGgtMSYmZS5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmKHU9XCJcIil9dmFyIHg9aS5kcmF3VGV4dCh7eDpwLHk6dGhpcy54QXhpc29mZlgrZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkrMzAtKFwidG9wXCI9PT1lLmNvbmZpZy54YXhpcy5wb3NpdGlvbj9lLmdsb2JhbHMueEF4aXNIZWlnaHQrZS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodC0yOjApLHRleHQ6dSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkodGhpcy54YXhpc0ZvcmVDb2xvcnMpP3RoaXMueGF4aXNGb3JlQ29sb3JzW3RdOnRoaXMueGF4aXNGb3JlQ29sb3JzLGZvbnRTaXplOnRoaXMueGF4aXNGb250U2l6ZSxmb250RmFtaWx5OnRoaXMueGF4aXNGb250RmFtaWx5LGZvbnRXZWlnaHQ6ZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRXZWlnaHQsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsIFwiK2UuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jc3NDbGFzc30pO3MuYWRkKHgpLHgudHNwYW4odSk7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2IudGV4dENvbnRlbnQ9dSx4Lm5vZGUuYXBwZW5kQ2hpbGQoYiksbis9b31yZXR1cm4gdGhpcy5pbnZlcnNlZFlBeGlzVGl0bGVUZXh0KGEpLHRoaXMuaW52ZXJzZWRZQXhpc0JvcmRlcihhKSxhfX0se2tleTpcImludmVyc2VkWUF4aXNCb3JkZXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1lLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyO2lmKGEuc2hvdyl7dmFyIHM9MDtcImJhclwiPT09ZS5jb25maWcuY2hhcnQudHlwZSYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJihzLT0xNSk7dmFyIHI9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtzK2Eub2Zmc2V0WCx0aGlzLnhBeGlzb2ZmWCxlLmdsb2JhbHMuZ3JpZFdpZHRoLHRoaXMueEF4aXNvZmZYLGEuY29sb3IsMCxhLmhlaWdodCk7dGhpcy5lbGdyaWQmJnRoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMmJmUuY29uZmlnLmdyaWQuc2hvdz90aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzLmFkZChyKTp0LmFkZChyKX19fSx7a2V5OlwiaW52ZXJzZWRZQXhpc1RpdGxlVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KTtpZih2b2lkIDAhPT1lLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUgYXBleGNoYXJ0cy15YXhpcy10aXRsZS1pbnZlcnNlZFwifSkscz1pLmRyYXdUZXh0KHt4OmUuZ2xvYmFscy5ncmlkV2lkdGgvMitlLmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRYLHk6dGhpcy54QXhpc29mZlgrcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpK3BhcnNlRmxvYXQoZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpK2UuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFkrMjAsdGV4dDplLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCBcIitlLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2EuYWRkKHMpLHQuYWRkKGEpfX19LHtrZXk6XCJ5QXhpc1RpdGxlUm90YXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz17d2lkdGg6MCxoZWlnaHQ6MH0scj17d2lkdGg6MCxoZWlnaHQ6MH0sbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiIC5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nXCIpKTtudWxsIT09byYmKHM9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7dmFyIG49aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy15YXhpcy10aXRsZSB0ZXh0XCIpKTtpZihudWxsIT09biYmKHI9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksbnVsbCE9PW4pe3ZhciBsPXRoaXMueFBhZGRpbmdGb3JZQXhpc1RpdGxlKHQscyxyLGUpO24uc2V0QXR0cmlidXRlKFwieFwiLGwueFBvcy0oZT8xMDowKSl9aWYobnVsbCE9PW4pe3ZhciBoPWEucm90YXRlQXJvdW5kQ2VudGVyKG4pO24uc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KGU/LTEqaS5jb25maWcueWF4aXNbdF0udGl0bGUucm90YXRlOmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnJvdGF0ZSxcIiBcIikuY29uY2F0KGgueCxcIiBcIikuY29uY2F0KGgueSxcIilcIikpfX19LHtrZXk6XCJ4UGFkZGluZ0ZvcllBeGlzVGl0bGVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj0wLG89MCxuPTEwO3JldHVybiB2b2lkIDA9PT1zLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0fHx0PDA/e3hQb3M6byxwYWRkOjB9OihhPyhvPWUud2lkdGgrcy5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WCtpLndpZHRoLzIrbi8yLDA9PT0ocis9MSkmJihvLT1uLzIpKToobz0tMSplLndpZHRoK3MuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFgrbi8yK2kud2lkdGgvMixzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYobj0yNSxvPS0xKmUud2lkdGgtcy5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WC1uKSkse3hQb3M6byxwYWRkOm59KX19LHtrZXk6XCJzZXRZQXhpc1hQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9MCxzPTAscj0xOCxvPTE7aS5jb25maWcueWF4aXMubGVuZ3RoPjEmJih0aGlzLm11bHRpcGxlWXM9ITApLGkuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24obixsKXt2YXIgaD1pLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YobCk+LTF8fCFuLnNob3d8fG4uZmxvYXRpbmd8fDA9PT10W2xdLndpZHRoLGM9dFtsXS53aWR0aCtlW2xdLndpZHRoO24ub3Bwb3NpdGU/aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8ocz1pLmdsb2JhbHMuZ3JpZFdpZHRoK2kuZ2xvYmFscy50cmFuc2xhdGVYLTEsaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtsXT1zLW4ubGFiZWxzLm9mZnNldFgpOihzPWkuZ2xvYmFscy5ncmlkV2lkdGgraS5nbG9iYWxzLnRyYW5zbGF0ZVgrbyxofHwobz1vK2MrMjApLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09cy1uLmxhYmVscy5vZmZzZXRYKzIwKTooYT1pLmdsb2JhbHMudHJhbnNsYXRlWC1yLGh8fChyPXIrYysyMCksaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtsXT1hK24ubGFiZWxzLm9mZnNldFgpfSkpfX0se2tleTpcInNldFlBeGlzVGV4dEFsaWdubWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXlheGlzXCIpOyhlPXgubGlzdFRvQXJyYXkoZSkpLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dmFyIGE9dC5jb25maWcueWF4aXNbaV07aWYoYSYmIWEuZmxvYXRpbmcmJnZvaWQgMCE9PWEubGFiZWxzLmFsaWduKXt2YXIgcz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXNbcmVsPSdcIi5jb25jYXQoaSxcIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIikpLHI9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGksXCInXSAuYXBleGNoYXJ0cy15YXhpcy1sYWJlbFwiKSk7cj14Lmxpc3RUb0FycmF5KHIpO3ZhciBvPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XCJsZWZ0XCI9PT1hLmxhYmVscy5hbGlnbj8oci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcInN0YXJ0XCIpfSkpLGEub3Bwb3NpdGV8fHMuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoLVwiLmNvbmNhdChvLndpZHRoLFwiLCAwKVwiKSkpOlwiY2VudGVyXCI9PT1hLmxhYmVscy5hbGlnbj8oci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcIm1pZGRsZVwiKX0pKSxzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKFwiLmNvbmNhdChvLndpZHRoLzIqKGEub3Bwb3NpdGU/MTotMSksXCIsIDApXCIpKSk6XCJyaWdodFwiPT09YS5sYWJlbHMuYWxpZ24mJihyLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLFwiZW5kXCIpfSkpLGEub3Bwb3NpdGUmJnMuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoXCIuY29uY2F0KG8ud2lkdGgsXCIsIDApXCIpKSl9fSkpfX1dKSx0fSgpLFo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5kb2N1bWVudEV2ZW50PXguYmluZCh0aGlzLmRvY3VtZW50RXZlbnQsdGhpcyl9cmV0dXJuIHIodCxbe2tleTpcImFkZEV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KHQpP2kuZ2xvYmFscy5ldmVudHNbdF0ucHVzaChlKTppLmdsb2JhbHMuZXZlbnRzW3RdPVtlXX19LHtrZXk6XCJyZW1vdmVFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIGE9aS5nbG9iYWxzLmV2ZW50c1t0XS5pbmRleE9mKGUpOy0xIT09YSYmaS5nbG9iYWxzLmV2ZW50c1t0XS5zcGxpY2UoYSwxKX19fSx7a2V5OlwiZmlyZUV2ZW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KSl7ZSYmZS5sZW5ndGh8fChlPVtdKTtmb3IodmFyIGE9aS5nbG9iYWxzLmV2ZW50c1t0XSxzPWEubGVuZ3RoLHI9MDtyPHM7cisrKWFbcl0uYXBwbHkobnVsbCxlKX19fSx7a2V5Olwic2V0dXBFdmVudEhhbmRsZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5jdHgsYT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKGUuZ2xvYmFscy5jaGFydENsYXNzKTt0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5hZGRFdmVudExpc3RlbmVyKHQsKGZ1bmN0aW9uKHQpe3ZhciBhPU9iamVjdC5hc3NpZ24oe30sZSx7c2VyaWVzSW5kZXg6ZS5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXgsZGF0YVBvaW50SW5kZXg6ZS5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXh9KTtcIm1vdXNlbW92ZVwiPT09dC50eXBlfHxcInRvdWNobW92ZVwiPT09dC50eXBlP1wiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZU1vdmUmJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZU1vdmUodCxpLGEpOlwibW91c2VsZWF2ZVwiPT09dC50eXBlfHxcInRvdWNobGVhdmVcIj09PXQudHlwZT9cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VMZWF2ZSYmZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTGVhdmUodCxpLGEpOihcIm1vdXNldXBcIj09PXQudHlwZSYmMT09PXQud2hpY2h8fFwidG91Y2hlbmRcIj09PXQudHlwZSkmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuY2xpY2smJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5jbGljayh0LGksYSksaS5jdHguZXZlbnRzLmZpcmVFdmVudChcImNsaWNrXCIsW3QsaSxhXSkpfSkse2NhcHR1cmU6ITEscGFzc2l2ZTohMH0pfSkpLHRoaXMuY3R4LmV2ZW50TGlzdC5mb3JFYWNoKChmdW5jdGlvbihpKXtlLmdsb2JhbHMuZG9tLmJhc2VFbC5hZGRFdmVudExpc3RlbmVyKGksdC5kb2N1bWVudEV2ZW50LHtwYXNzaXZlOiEwfSl9KSksdGhpcy5jdHguY29yZS5zZXR1cEJydXNoSGFuZGxlcigpfX0se2tleTpcImRvY3VtZW50RXZlbnRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LnRhcmdldC5jbGFzc05hbWU7aWYoXCJjbGlja1wiPT09dC50eXBlKXt2YXIgYT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtbWVudVwiKTthJiZhLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpJiZcImFwZXhjaGFydHMtbWVudS1pY29uXCIhPT1pJiZhLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKX1lLmdsb2JhbHMuY2xpZW50WD1cInRvdWNobW92ZVwiPT09dC50eXBlP3QudG91Y2hlc1swXS5jbGllbnRYOnQuY2xpZW50WCxlLmdsb2JhbHMuY2xpZW50WT1cInRvdWNobW92ZVwiPT09dC50eXBlP3QudG91Y2hlc1swXS5jbGllbnRZOnQuY2xpZW50WX19XSksdH0oKSwkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJzZXRDdXJyZW50TG9jYWxlVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LmNvbmZpZy5jaGFydC5sb2NhbGVzO3dpbmRvdy5BcGV4LmNoYXJ0JiZ3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzJiZ3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzLmxlbmd0aD4wJiYoZT10aGlzLncuY29uZmlnLmNoYXJ0LmxvY2FsZXMuY29uY2F0KHdpbmRvdy5BcGV4LmNoYXJ0LmxvY2FsZXMpKTt2YXIgaT1lLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZT09PXR9KSlbMF07aWYoIWkpdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgbG9jYWxlIG5hbWUgcHJvdmlkZWQuIFBsZWFzZSBtYWtlIHN1cmUgeW91IHNldCB0aGUgY29ycmVjdCBsb2NhbGUgbmFtZSBpbiBvcHRpb25zXCIpO3ZhciBhPXguZXh0ZW5kKEMsaSk7dGhpcy53Lmdsb2JhbHMubG9jYWxlPWEub3B0aW9uc319XSksdH0oKSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkcmF3QXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGksYSxzPXRoaXMscj10aGlzLncuZ2xvYmFscyxvPXRoaXMudy5jb25maWcsbj1uZXcgVih0aGlzLmN0eCxlKSxsPW5ldyBxKHRoaXMuY3R4LGUpO3IuYXhpc0NoYXJ0cyYmXCJyYWRhclwiIT09dCYmKHIuaXNCYXJIb3Jpem9udGFsPyhhPWwuZHJhd1lheGlzSW52ZXJzZWQoMCksaT1uLmRyYXdYYXhpc0ludmVyc2VkKDApLHIuZG9tLmVsR3JhcGhpY2FsLmFkZChpKSxyLmRvbS5lbEdyYXBoaWNhbC5hZGQoYSkpOihpPW4uZHJhd1hheGlzKCksci5kb20uZWxHcmFwaGljYWwuYWRkKGkpLG8ueWF4aXMubWFwKChmdW5jdGlvbih0LGUpe2lmKC0xPT09ci5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihlKSYmKGE9bC5kcmF3WWF4aXMoZSksci5kb20uUGFwZXIuYWRkKGEpLFwiYmFja1wiPT09cy53LmNvbmZpZy5ncmlkLnBvc2l0aW9uKSl7dmFyIGk9ci5kb20uUGFwZXIuY2hpbGRyZW4oKVsxXTtpLnJlbW92ZSgpLHIuZG9tLlBhcGVyLmFkZChpKX19KSkpKX19XSksdH0oKSxRPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkcmF3WENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPW5ldyB2KHRoaXMuY3R4KSxhPXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC5ncmFkaWVudCxzPXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZHJvcFNoYWRvdyxyPXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC50eXBlLG89YS5jb2xvckZyb20sbj1hLmNvbG9yVG8sbD1hLm9wYWNpdHlGcm9tLGg9YS5vcGFjaXR5VG8sYz1hLnN0b3BzLGQ9cy5lbmFibGVkLGc9cy5sZWZ0LHU9cy50b3AscD1zLmJsdXIsZj1zLmNvbG9yLGI9cy5vcGFjaXR5LHk9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLmNvbG9yO2lmKHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc2hvdyl7XCJncmFkaWVudFwiPT09ciYmKHk9ZS5kcmF3R3JhZGllbnQoXCJ2ZXJ0aWNhbFwiLG8sbixsLGgsbnVsbCxjLG51bGwpKTt2YXIgdz1lLmRyYXdSZWN0KCk7MT09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgmJih3PWUuZHJhd0xpbmUoKSk7dmFyIGs9dC5nbG9iYWxzLmdyaWRIZWlnaHQ7KCF4LmlzTnVtYmVyKGspfHxrPDApJiYoaz0wKTt2YXIgQT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoOygheC5pc051bWJlcihBKXx8QTwwKSYmKEE9MCksdy5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteGNyb3NzaGFpcnNcIix4OjAseTowLHkyOmssd2lkdGg6QSxoZWlnaHQ6ayxmaWxsOnksZmlsdGVyOlwibm9uZVwiLFwiZmlsbC1vcGFjaXR5XCI6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5vcGFjaXR5LHN0cm9rZTp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS5jb2xvcixcInN0cm9rZS13aWR0aFwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLndpZHRoLFwic3Ryb2tlLWRhc2hhcnJheVwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLmRhc2hBcnJheX0pLGQmJih3PWkuZHJvcFNoYWRvdyh3LHtsZWZ0OmcsdG9wOnUsYmx1cjpwLGNvbG9yOmYsb3BhY2l0eTpifSkpLHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHcpfX19LHtrZXk6XCJkcmF3WUNyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPXQuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMsYT10Lmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7aWYodC5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycy5zaG93KXt2YXIgcz1lLmRyYXdMaW5lKC1hLDAsdC5nbG9iYWxzLmdyaWRXaWR0aCthLDAsaS5zdHJva2UuY29sb3IsaS5zdHJva2UuZGFzaEFycmF5LGkuc3Ryb2tlLndpZHRoKTtzLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy15Y3Jvc3NoYWlyc1wifSksdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQocyl9dmFyIHI9ZS5kcmF3TGluZSgtYSwwLHQuZ2xvYmFscy5ncmlkV2lkdGgrYSwwLGkuc3Ryb2tlLmNvbG9yLDAsMCk7ci5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteWNyb3NzaGFpcnMtaGlkZGVuXCJ9KSx0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChyKX19XSksdH0oKSxLPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJjaGVja1Jlc3BvbnNpdmVDb25maWdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9aS5jb25maWc7aWYoMCE9PWEucmVzcG9uc2l2ZS5sZW5ndGgpe3ZhciBzPWEucmVzcG9uc2l2ZS5zbGljZSgpO3Muc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5icmVha3BvaW50PmUuYnJlYWtwb2ludD8xOmUuYnJlYWtwb2ludD50LmJyZWFrcG9pbnQ/LTE6MH0pKS5yZXZlcnNlKCk7dmFyIHI9bmV3IEUoe30pLG89ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sYT1zWzBdLmJyZWFrcG9pbnQsbz13aW5kb3cuaW5uZXJXaWR0aD4wP3dpbmRvdy5pbm5lcldpZHRoOnNjcmVlbi53aWR0aDtpZihvPmEpe3ZhciBuPXkuZXh0ZW5kQXJyYXlQcm9wcyhyLGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLGkpO3Q9eC5leHRlbmQobix0KSx0PXguZXh0ZW5kKGkuY29uZmlnLHQpLGUub3ZlcnJpZGVSZXNwb25zaXZlT3B0aW9ucyh0KX1lbHNlIGZvcih2YXIgbD0wO2w8cy5sZW5ndGg7bCsrKW88c1tsXS5icmVha3BvaW50JiYodD15LmV4dGVuZEFycmF5UHJvcHMocixzW2xdLm9wdGlvbnMsaSksdD14LmV4dGVuZChpLmNvbmZpZyx0KSxlLm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnModCkpfTtpZih0KXt2YXIgbj15LmV4dGVuZEFycmF5UHJvcHMocix0LGkpO249eC5leHRlbmQoaS5jb25maWcsbiksbyhuPXguZXh0ZW5kKG4sdCkpfWVsc2Ugbyh7fSl9fX0se2tleTpcIm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgRSh0KS5pbml0KHtyZXNwb25zaXZlT3ZlcnJpZGU6ITB9KTt0aGlzLncuY29uZmlnPWV9fV0pLHR9KCksdHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuY29sb3JzPVtdLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMuaXNDb2xvckZuPSExLHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWQ9XCJ0cmVlbWFwXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiZpLmNvbmZpZy5wbG90T3B0aW9ucy50cmVlbWFwLmRpc3RyaWJ1dGVkfHxcImhlYXRtYXBcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUmJmkuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuZGlzdHJpYnV0ZWQsdGhpcy5pc0JhckRpc3RyaWJ1dGVkPWkuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCYmKFwiYmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlKX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXREZWZhdWx0Q29sb3JzKCl9fSx7a2V5Olwic2V0RGVmYXVsdENvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLGk9dGhpcy53LGE9bmV3IHg7aWYoaS5nbG9iYWxzLmRvbS5lbFdyYXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdGhlbWUtXCIuY29uY2F0KGkuY29uZmlnLnRoZW1lLm1vZGUpKSx2b2lkIDA9PT1pLmNvbmZpZy5jb2xvcnN8fDA9PT0obnVsbD09PSh0PWkuY29uZmlnLmNvbG9ycyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGVuZ3RoKT9pLmdsb2JhbHMuY29sb3JzPXRoaXMucHJlZGVmaW5lZCgpOihpLmdsb2JhbHMuY29sb3JzPWkuY29uZmlnLmNvbG9ycyxBcnJheS5pc0FycmF5KGkuY29uZmlnLmNvbG9ycykmJmkuY29uZmlnLmNvbG9ycy5sZW5ndGg+MCYmXCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY29sb3JzWzBdJiYoaS5nbG9iYWxzLmNvbG9ycz1pLmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGEpe3ZhciBzPWkuY29uZmlnLmNvbG9yc1thXTtyZXR1cm4gc3x8KHM9aS5jb25maWcuY29sb3JzWzBdKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBzPyhlLmlzQ29sb3JGbj0hMCxzKHt2YWx1ZTppLmdsb2JhbHMuYXhpc0NoYXJ0cz9pLmdsb2JhbHMuc2VyaWVzW2FdWzBdP2kuZ2xvYmFscy5zZXJpZXNbYV1bMF06MDppLmdsb2JhbHMuc2VyaWVzW2FdLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6YSx3Oml9KSk6c30pKSkpLGkuZ2xvYmFscy5zZXJpZXNDb2xvcnMubWFwKChmdW5jdGlvbih0LGUpe3QmJihpLmdsb2JhbHMuY29sb3JzW2VdPXQpfSkpLGkuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuZW5hYmxlZCl7dmFyIHM9W10scj1pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDsodGhpcy5pc0JhckRpc3RyaWJ1dGVkfHx0aGlzLmlzSGVhdG1hcERpc3RyaWJ1dGVkKSYmKHI9aS5nbG9iYWxzLnNlcmllc1swXS5sZW5ndGgqaS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpO2Zvcih2YXIgbz1pLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLmNvbG9yLG49MS8oci9pLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLnNoYWRlSW50ZW5zaXR5KSxsPWkuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuc2hhZGVUbyxoPTAsYz0wO2M8cjtjKyspe3ZhciBkPXZvaWQgMDtcImRhcmtcIj09PWw/KGQ9YS5zaGFkZUNvbG9yKC0xKmgsbyksaCs9bik6KGQ9YS5zaGFkZUNvbG9yKGgsbyksaCs9bikscy5wdXNoKGQpfWkuZ2xvYmFscy5jb2xvcnM9cy5zbGljZSgpfXZhciBnPWkuZ2xvYmFscy5jb2xvcnMuc2xpY2UoKTt0aGlzLnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHMuY29sb3JzKTtbXCJmaWxsXCIsXCJzdHJva2VcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwPT09aS5jb25maWdbdF0uY29sb3JzP2kuZ2xvYmFsc1t0XS5jb2xvcnM9ZS5pc0NvbG9yRm4/aS5jb25maWcuY29sb3JzOmc6aS5nbG9iYWxzW3RdLmNvbG9ycz1pLmNvbmZpZ1t0XS5jb2xvcnMuc2xpY2UoKSxlLnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHNbdF0uY29sb3JzKX0pKSx2b2lkIDA9PT1pLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycz9pLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM9ZzppLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM9aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMuc2xpY2UoKSx0aGlzLnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMsNTApLHZvaWQgMD09PWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLmZpbGwuY29sb3JzP2kuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzPVtcImRhcmtcIj09PWkuY29uZmlnLnRoZW1lLm1vZGU/XCIjNDI0MjQyXCI6XCJub25lXCJdOmkuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzPWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLmZpbGwuY29sb3JzLnNsaWNlKCksdGhpcy5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnMsMjApLHZvaWQgMD09PWkuY29uZmlnLm1hcmtlcnMuY29sb3JzP2kuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycz1nOmkuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycz1pLmNvbmZpZy5tYXJrZXJzLmNvbG9ycy5zbGljZSgpLHRoaXMucHVzaEV4dHJhQ29sb3JzKGkuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycyl9fSx7a2V5OlwicHVzaEV4dHJhQ29sb3JzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxhPXRoaXMudyxzPWV8fGEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2lmKG51bGw9PT1pJiYoaT10aGlzLmlzQmFyRGlzdHJpYnV0ZWR8fHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWR8fFwiaGVhdG1hcFwiPT09YS5jb25maWcuY2hhcnQudHlwZSYmYS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLmludmVyc2UpLGkmJmEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoJiYocz1hLmdsb2JhbHMuc2VyaWVzW2EuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgqYS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpLHQubGVuZ3RoPHMpZm9yKHZhciByPXMtdC5sZW5ndGgsbz0wO288cjtvKyspdC5wdXNoKHRbb10pfX0se2tleTpcInVwZGF0ZVRoZW1lT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuY2hhcnQ9dC5jaGFydHx8e30sdC50b29sdGlwPXQudG9vbHRpcHx8e307dmFyIGU9dC50aGVtZS5tb2RlfHxcImxpZ2h0XCIsaT10LnRoZW1lLnBhbGV0dGU/dC50aGVtZS5wYWxldHRlOlwiZGFya1wiPT09ZT9cInBhbGV0dGU0XCI6XCJwYWxldHRlMVwiLGE9dC5jaGFydC5mb3JlQ29sb3I/dC5jaGFydC5mb3JlQ29sb3I6XCJkYXJrXCI9PT1lP1wiI2Y2ZjdmOFwiOlwiIzM3M2QzZlwiO3JldHVybiB0LnRvb2x0aXAudGhlbWU9ZSx0LmNoYXJ0LmZvcmVDb2xvcj1hLHQudGhlbWUucGFsZXR0ZT1pLHR9fSx7a2V5OlwicHJlZGVmaW5lZFwiLHZhbHVlOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMudy5jb25maWcudGhlbWUucGFsZXR0ZSl7Y2FzZVwicGFsZXR0ZTFcIjpkZWZhdWx0OnRoaXMuY29sb3JzPVtcIiMwMDhGRkJcIixcIiMwMEUzOTZcIixcIiNGRUIwMTlcIixcIiNGRjQ1NjBcIixcIiM3NzVERDBcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTJcIjp0aGlzLmNvbG9ycz1bXCIjM2Y1MWI1XCIsXCIjMDNhOWY0XCIsXCIjNGNhZjUwXCIsXCIjZjljZTFkXCIsXCIjRkY5ODAwXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGUzXCI6dGhpcy5jb2xvcnM9W1wiIzMzYjJkZlwiLFwiIzU0NkU3QVwiLFwiI2Q0NTI2ZVwiLFwiIzEzZDhhYVwiLFwiI0E1OTc4QlwiXTticmVhaztjYXNlXCJwYWxldHRlNFwiOnRoaXMuY29sb3JzPVtcIiM0ZWNkYzRcIixcIiNjN2Y0NjRcIixcIiM4MUQ0RkFcIixcIiNmZDZhNmFcIixcIiM1NDZFN0FcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTVcIjp0aGlzLmNvbG9ycz1bXCIjMmI5MDhmXCIsXCIjZjlhM2E0XCIsXCIjOTBlZTdlXCIsXCIjZmE0NDQzXCIsXCIjNjlkMmU3XCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU2XCI6dGhpcy5jb2xvcnM9W1wiIzQ0OUREMVwiLFwiI0Y4NjYyNFwiLFwiI0VBMzU0NlwiLFwiIzY2MkU5QlwiLFwiI0M1RDg2RFwiXTticmVhaztjYXNlXCJwYWxldHRlN1wiOnRoaXMuY29sb3JzPVtcIiNENzI2M0RcIixcIiMxQjk5OEJcIixcIiMyRTI5NEVcIixcIiNGNDYwMzZcIixcIiNFMkMwNDRcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZThcIjp0aGlzLmNvbG9ycz1bXCIjNjYyRTlCXCIsXCIjRjg2NjI0XCIsXCIjRjlDODBFXCIsXCIjRUEzNTQ2XCIsXCIjNDNCQ0NEXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU5XCI6dGhpcy5jb2xvcnM9W1wiIzVDNDc0MlwiLFwiI0E1OTc4QlwiLFwiIzhENUI0Q1wiLFwiIzVBMkEyN1wiLFwiI0M0QkJBRlwiXTticmVhaztjYXNlXCJwYWxldHRlMTBcIjp0aGlzLmNvbG9ycz1bXCIjQTMwMEQ2XCIsXCIjN0QwMkVCXCIsXCIjNTY1M0ZFXCIsXCIjMjk4M0ZGXCIsXCIjMDBCMUYyXCJdfXJldHVybiB0aGlzLmNvbG9yc319XSksdH0oKSxldD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kcmF3VGl0bGVTdWJ0aXRsZShcInRpdGxlXCIpLHRoaXMuZHJhd1RpdGxlU3VidGl0bGUoXCJzdWJ0aXRsZVwiKX19LHtrZXk6XCJkcmF3VGl0bGVTdWJ0aXRsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPVwidGl0bGVcIj09PXQ/ZS5jb25maWcudGl0bGU6ZS5jb25maWcuc3VidGl0bGUsYT1lLmdsb2JhbHMuc3ZnV2lkdGgvMixzPWkub2Zmc2V0WSxyPVwibWlkZGxlXCI7aWYoXCJsZWZ0XCI9PT1pLmFsaWduPyhhPTEwLHI9XCJzdGFydFwiKTpcInJpZ2h0XCI9PT1pLmFsaWduJiYoYT1lLmdsb2JhbHMuc3ZnV2lkdGgtMTAscj1cImVuZFwiKSxhKz1pLm9mZnNldFgscz1zK3BhcnNlSW50KGkuc3R5bGUuZm9udFNpemUsMTApK2kubWFyZ2luLzIsdm9pZCAwIT09aS50ZXh0KXt2YXIgbz1uZXcgbSh0aGlzLmN0eCkuZHJhd1RleHQoe3g6YSx5OnMsdGV4dDppLnRleHQsdGV4dEFuY2hvcjpyLGZvbnRTaXplOmkuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTppLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDppLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOmkuc3R5bGUuY29sb3Isb3BhY2l0eToxfSk7by5ub2RlLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsXCJhcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LFwiLXRleHRcIikpLGUuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG8pfX19XSksdH0oKSxpdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldFRpdGxlU3VidGl0bGVDb29yZHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT0wLGE9MCxzPVwidGl0bGVcIj09PXQ/ZS5jb25maWcudGl0bGUuZmxvYXRpbmc6ZS5jb25maWcuc3VidGl0bGUuZmxvYXRpbmcscj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItdGV4dFwiKSk7aWYobnVsbCE9PXImJiFzKXt2YXIgbz1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2k9by53aWR0aCxhPWUuZ2xvYmFscy5heGlzQ2hhcnRzP28uaGVpZ2h0KzU6by5oZWlnaHR9cmV0dXJue3dpZHRoOmksaGVpZ2h0OmF9fX0se2tleTpcImdldExlZ2VuZHNSZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcDt0LmNvbmZpZy5sZWdlbmQuaGVpZ2h0fHxcInRvcFwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZcImJvdHRvbVwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwoZS5zdHlsZS5tYXhIZWlnaHQ9dC5nbG9iYWxzLnN2Z0hlaWdodC8yK1wicHhcIik7dmFyIGk9T2JqZWN0LmFzc2lnbih7fSx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdChlKSk7cmV0dXJuIG51bGwhPT1lJiYhdC5jb25maWcubGVnZW5kLmZsb2F0aW5nJiZ0LmNvbmZpZy5sZWdlbmQuc2hvdz90aGlzLmRDdHgubGdSZWN0PXt4OmkueCx5OmkueSxoZWlnaHQ6aS5oZWlnaHQsd2lkdGg6MD09PWkuaGVpZ2h0PzA6aS53aWR0aH06dGhpcy5kQ3R4LmxnUmVjdD17eDowLHk6MCxoZWlnaHQ6MCx3aWR0aDowfSxcImxlZnRcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJyaWdodFwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwxLjUqdGhpcy5kQ3R4LmxnUmVjdC53aWR0aD50Lmdsb2JhbHMuc3ZnV2lkdGgmJih0aGlzLmRDdHgubGdSZWN0LndpZHRoPXQuZ2xvYmFscy5zdmdXaWR0aC8xLjUpLHRoaXMuZEN0eC5sZ1JlY3R9fSx7a2V5OlwiZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFyclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dDtpZih0aGlzLncuZ2xvYmFscy5pc011bHRpTGluZVgpe3ZhciBhPWUubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubGVuZ3RoOjF9KSkscz1NYXRoLm1heC5hcHBseShNYXRoLHUoYSkpO2k9ZVthLmluZGV4T2YocyldfXJldHVybiBpfX1dKSx0fSgpLGF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0eEF4aXNMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy53LGk9ZS5nbG9iYWxzLmxhYmVscy5zbGljZSgpO2lmKGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmMD09PWkubGVuZ3RoJiYoaT1lLmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHMpLGUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjApe3ZhciBhPXRoaXMuZ2V0eEF4aXNUaW1lU2NhbGVMYWJlbHNDb29yZHMoKTt0PXt3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodH0sZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITF9ZWxzZXt0aGlzLmRDdHgubGdXaWR0aEZvclNpZGVMZWdlbmRzPVwibGVmdFwiIT09ZS5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZcInJpZ2h0XCIhPT1lLmNvbmZpZy5sZWdlbmQucG9zaXRpb258fGUuY29uZmlnLmxlZ2VuZC5mbG9hdGluZz8wOnRoaXMuZEN0eC5sZ1JlY3Qud2lkdGg7dmFyIHM9ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixyPXguZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIoaSksbz10aGlzLmRDdHguZGltSGVscGVycy5nZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyKHIsaSk7ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG89cj1lLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKSk7dmFyIG49bmV3IE0odGhpcy5kQ3R4LmN0eCksbD1yO3I9bi54TGFiZWxGb3JtYXQocyxyLGwse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEkodGhpcy5kQ3R4LmN0eCkuZm9ybWF0RGF0ZSx3OmV9KSxvPW4ueExhYmVsRm9ybWF0KHMsbyxsLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuZEN0eC5jdHgpLmZvcm1hdERhdGUsdzplfSksKGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmdm9pZCAwPT09cnx8XCJcIj09PVN0cmluZyhyKS50cmltKCkpJiYobz1yPVwiMVwiKTt2YXIgaD1uZXcgbSh0aGlzLmRDdHguY3R4KSxjPWguZ2V0VGV4dFJlY3RzKHIsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSxkPWM7aWYociE9PW8mJihkPWguZ2V0VGV4dFJlY3RzKG8sZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSksKHQ9e3dpZHRoOmMud2lkdGg+PWQud2lkdGg/Yy53aWR0aDpkLndpZHRoLGhlaWdodDpjLmhlaWdodD49ZC5oZWlnaHQ/Yy5oZWlnaHQ6ZC5oZWlnaHR9KS53aWR0aCppLmxlbmd0aD5lLmdsb2JhbHMuc3ZnV2lkdGgtdGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcy10aGlzLmRDdHgueUF4aXNXaWR0aC10aGlzLmRDdHguZ3JpZFBhZC5sZWZ0LXRoaXMuZEN0eC5ncmlkUGFkLnJpZ2h0JiYwIT09ZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZXx8ZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZUFsd2F5cyl7aWYoIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe2UuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSEwO3ZhciBnPWZ1bmN0aW9uKHQpe3JldHVybiBoLmdldFRleHRSZWN0cyh0LGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxcInJvdGF0ZShcIi5jb25jYXQoZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLCExKX07Yz1nKHIpLHIhPT1vJiYoZD1nKG8pKSx0LmhlaWdodD0oYy5oZWlnaHQ+ZC5oZWlnaHQ/Yy5oZWlnaHQ6ZC5oZWlnaHQpLzEuNSx0LndpZHRoPWMud2lkdGg+ZC53aWR0aD9jLndpZHRoOmQud2lkdGh9fWVsc2UgZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITF9cmV0dXJuIGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93fHwodD17d2lkdGg6MCxoZWlnaHQ6MH0pLHt3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19fSx7a2V5OlwiZ2V0eEF4aXNHcm91cExhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnc7aWYoIWUuZ2xvYmFscy5oYXNYYXhpc0dyb3VwcylyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH07dmFyIGksYT0obnVsbD09PSh0PWUuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5mb250U2l6ZSl8fGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSxzPWUuZ2xvYmFscy5ncm91cHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50aXRsZX0pKSxyPXguZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIocyksbz10aGlzLmRDdHguZGltSGVscGVycy5nZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyKHIscyksbj1uZXcgbSh0aGlzLmRDdHguY3R4KSxsPW4uZ2V0VGV4dFJlY3RzKHIsYSksaD1sO3JldHVybiByIT09byYmKGg9bi5nZXRUZXh0UmVjdHMobyxhKSksaT17d2lkdGg6bC53aWR0aD49aC53aWR0aD9sLndpZHRoOmgud2lkdGgsaGVpZ2h0OmwuaGVpZ2h0Pj1oLmhlaWdodD9sLmhlaWdodDpoLmhlaWdodH0sZS5jb25maWcueGF4aXMubGFiZWxzLnNob3d8fChpPXt3aWR0aDowLGhlaWdodDowfSkse3dpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX19LHtrZXk6XCJnZXR4QXhpc1RpdGxlQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wLGk9MDtpZih2b2lkIDAhPT10LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgYT1uZXcgbSh0aGlzLmRDdHguY3R4KS5nZXRUZXh0UmVjdHModC5jb25maWcueGF4aXMudGl0bGUudGV4dCx0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSk7ZT1hLndpZHRoLGk9YS5oZWlnaHR9cmV0dXJue3dpZHRoOmUsaGVpZ2h0Oml9fX0se2tleTpcImdldHhBeGlzVGltZVNjYWxlTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudzt0aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzPWUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKTt2YXIgaT10aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSksYT1pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dD8oY29uc29sZS5lcnJvcihcIllvdSBoYXZlIHBvc3NpYmx5IHN1cHBsaWVkIGludmFsaWQgRGF0ZSBmb3JtYXQuIFBsZWFzZSBzdXBwbHkgYSB2YWxpZCBKYXZhU2NyaXB0IERhdGVcIiksMCk6dC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCk7cmV0dXJuIDEuMDUqKHQ9bmV3IG0odGhpcy5kQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKGEsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSkud2lkdGgqaS5sZW5ndGg+ZS5nbG9iYWxzLmdyaWRXaWR0aCYmMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUmJihlLmdsb2JhbHMub3ZlcmxhcHBpbmdYTGFiZWxzPSEwKSx0fX0se2tleTpcImFkZGl0aW9uYWxQYWRkaW5nWExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1pLmdsb2JhbHMscz1pLmNvbmZpZyxyPXMueGF4aXMudHlwZSxvPXQud2lkdGg7YS5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITEsYS5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSExO3ZhciBuPWkuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlJiZpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsLGw9ZnVuY3Rpb24odCxuKXtzLnlheGlzLmxlbmd0aD4xJiZmdW5jdGlvbih0KXtyZXR1cm4tMSE9PWEuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpfShuKXx8ZnVuY3Rpb24odCl7aWYoZS5kQ3R4LnRpbWVzY2FsZUxhYmVscyYmZS5kQ3R4LnRpbWVzY2FsZUxhYmVscy5sZW5ndGgpe3ZhciBuPWUuZEN0eC50aW1lc2NhbGVMYWJlbHNbMF0sbD1lLmRDdHgudGltZXNjYWxlTGFiZWxzW2UuZEN0eC50aW1lc2NhbGVMYWJlbHMubGVuZ3RoLTFdLnBvc2l0aW9uK28vMS43NS1lLmRDdHgueUF4aXNXaWR0aFJpZ2h0LGg9bi5wb3NpdGlvbi1vLzEuNzUrZS5kQ3R4LnlBeGlzV2lkdGhMZWZ0LGM9XCJyaWdodFwiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZlLmRDdHgubGdSZWN0LndpZHRoPjA/ZS5kQ3R4LmxnUmVjdC53aWR0aDowO2w+YS5zdmdXaWR0aC1hLnRyYW5zbGF0ZVgtYyYmKGEuc2tpcExhc3RUaW1lbGluZWxhYmVsPSEwKSxoPC0odC5zaG93JiYhdC5mbG9hdGluZ3x8XCJiYXJcIiE9PXMuY2hhcnQudHlwZSYmXCJjYW5kbGVzdGlja1wiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQmFyXCIhPT1zLmNoYXJ0LnR5cGUmJlwiYm94UGxvdFwiIT09cy5jaGFydC50eXBlPzEwOm8vMS43NSkmJihhLnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITApfWVsc2VcImRhdGV0aW1lXCI9PT1yP2UuZEN0eC5ncmlkUGFkLnJpZ2h0PG8mJiFhLnJvdGF0ZVhMYWJlbHMmJihhLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMCk6XCJkYXRldGltZVwiIT09ciYmZS5kQ3R4LmdyaWRQYWQucmlnaHQ8by8yLWUuZEN0eC55QXhpc1dpZHRoUmlnaHQmJiFhLnJvdGF0ZVhMYWJlbHMmJiFpLmNvbmZpZy54YXhpcy5sYWJlbHMudHJpbSYmKFwiYmV0d2VlblwiIT09aS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudHx8aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCkmJihlLmRDdHgueFBhZFJpZ2h0PW8vMisxKX0odCl9O3MueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtuPyhlLmRDdHguZ3JpZFBhZC5sZWZ0PG8mJihlLmRDdHgueFBhZExlZnQ9by8yKzEpLGUuZEN0eC54UGFkUmlnaHQ9by8yKzEpOmwodCxpKX0pKX19XSksdH0oKSxzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldHlBeGlzTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9W10sYT0xMCxzPW5ldyBCKHRoaXMuZEN0eC5jdHgpO3JldHVybiBlLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHIsbyl7dmFyIG49e3Nlcmllc0luZGV4Om8sZGF0YVBvaW50SW5kZXg6LTEsdzplfSxsPWUuZ2xvYmFscy55QXhpc1NjYWxlW29dLGg9MDtpZighcy5pc1lBeGlzSGlkZGVuKG8pJiZyLmxhYmVscy5zaG93JiZ2b2lkIDAhPT1yLmxhYmVscy5taW5XaWR0aCYmKGg9ci5sYWJlbHMubWluV2lkdGgpLCFzLmlzWUF4aXNIaWRkZW4obykmJnIubGFiZWxzLnNob3cmJmwucmVzdWx0Lmxlbmd0aCl7dmFyIGM9ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbb10sZD1sLm5pY2VNaW49PT1OdW1iZXIuTUlOX1ZBTFVFPzA6bC5uaWNlTWluLGc9bC5yZXN1bHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBpLGE7cmV0dXJuKG51bGw9PT0oaT1TdHJpbmcoYyh0LG4pKSl8fHZvaWQgMD09PWk/dm9pZCAwOmkubGVuZ3RoKT4obnVsbD09PShhPVN0cmluZyhjKGUsbikpKXx8dm9pZCAwPT09YT92b2lkIDA6YS5sZW5ndGgpP3Q6ZX0pLGQpLHU9Zz1jKGcsbik7aWYodm9pZCAwIT09ZyYmMCE9PWcubGVuZ3RofHwoZz1sLm5pY2VNYXgpLGUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe2E9MDt2YXIgcD1lLmdsb2JhbHMubGFiZWxzLnNsaWNlKCk7Zz14LmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKHApLGc9YyhnLHtzZXJpZXNJbmRleDpvLGRhdGFQb2ludEluZGV4Oi0xLHc6ZX0pLHU9dC5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihnLHApfXZhciBmPW5ldyBtKHQuZEN0eC5jdHgpLGI9XCJyb3RhdGUoXCIuY29uY2F0KHIubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLHY9Zi5nZXRUZXh0UmVjdHMoZyxyLmxhYmVscy5zdHlsZS5mb250U2l6ZSxyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LGIsITEpLHk9djtnIT09dSYmKHk9Zi5nZXRUZXh0UmVjdHModSxyLmxhYmVscy5zdHlsZS5mb250U2l6ZSxyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LGIsITEpKSxpLnB1c2goe3dpZHRoOihoPnkud2lkdGh8fGg+di53aWR0aD9oOnkud2lkdGg+di53aWR0aD95LndpZHRoOnYud2lkdGgpK2EsaGVpZ2h0OnkuaGVpZ2h0PnYuaGVpZ2h0P3kuaGVpZ2h0OnYuaGVpZ2h0fSl9ZWxzZSBpLnB1c2goe3dpZHRoOjAsaGVpZ2h0OjB9KX0pKSxpfX0se2tleTpcImdldHlBeGlzVGl0bGVDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1bXTtyZXR1cm4gZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihlLGEpe2lmKGUuc2hvdyYmdm9pZCAwIT09ZS50aXRsZS50ZXh0KXt2YXIgcz1uZXcgbSh0LmRDdHguY3R4KSxyPVwicm90YXRlKFwiLmNvbmNhdChlLnRpdGxlLnJvdGF0ZSxcIiAwIDApXCIpLG89cy5nZXRUZXh0UmVjdHMoZS50aXRsZS50ZXh0LGUudGl0bGUuc3R5bGUuZm9udFNpemUsZS50aXRsZS5zdHlsZS5mb250RmFtaWx5LHIsITEpO2kucHVzaCh7d2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHR9KX1lbHNlIGkucHVzaCh7d2lkdGg6MCxoZWlnaHQ6MH0pfSkpLGl9fSx7a2V5OlwiZ2V0VG90YWxZQXhpc1dpZHRoXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wLGk9MCxhPTAscz10Lmdsb2JhbHMueUF4aXNTY2FsZS5sZW5ndGg+MT8xMDowLHI9bmV3IEIodGhpcy5kQ3R4LmN0eCksbz1mdW5jdGlvbihvLG4pe3ZhciBsPXQuY29uZmlnLnlheGlzW25dLmZsb2F0aW5nLGg9MDtvLndpZHRoPjAmJiFsPyhoPW8ud2lkdGgrcyxmdW5jdGlvbihlKXtyZXR1cm4gdC5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGUpPi0xfShuKSYmKGg9aC1vLndpZHRoLXMpKTpoPWx8fHIuaXNZQXhpc0hpZGRlbihuKT8wOjUsdC5jb25maWcueWF4aXNbbl0ub3Bwb3NpdGU/YSs9aDppKz1oLGUrPWh9O3JldHVybiB0Lmdsb2JhbHMueUxhYmVsc0Nvb3Jkcy5tYXAoKGZ1bmN0aW9uKHQsZSl7byh0LGUpfSkpLHQuZ2xvYmFscy55VGl0bGVDb29yZHMubWFwKChmdW5jdGlvbih0LGUpe28odCxlKX0pKSx0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYhdC5jb25maWcueWF4aXNbMF0uZmxvYXRpbmcmJihlPXQuZ2xvYmFscy55TGFiZWxzQ29vcmRzWzBdLndpZHRoK3QuZ2xvYmFscy55VGl0bGVDb29yZHNbMF0ud2lkdGgrMTUpLHRoaXMuZEN0eC55QXhpc1dpZHRoTGVmdD1pLHRoaXMuZEN0eC55QXhpc1dpZHRoUmlnaHQ9YSxlfX1dKSx0fSgpLHJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZ3JpZFBhZEZvckNvbHVtbnNJbk51bWVyaWNBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2lmKGUuZ2xvYmFscy5ub0RhdGF8fGUuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpcmV0dXJuIDA7dmFyIGk9ZnVuY3Rpb24odCl7cmV0dXJuXCJiYXJcIj09PXR8fFwicmFuZ2VCYXJcIj09PXR8fFwiY2FuZGxlc3RpY2tcIj09PXR8fFwiYm94UGxvdFwiPT09dH0sYT1lLmNvbmZpZy5jaGFydC50eXBlLHM9MCxyPWkoYSk/ZS5jb25maWcuc2VyaWVzLmxlbmd0aDoxO2lmKGUuZ2xvYmFscy5jb21ib0JhckNvdW50PjAmJihyPWUuZ2xvYmFscy5jb21ib0JhckNvdW50KSxlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kodC50eXBlKSYmKHItPTEpfSkpLGUuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJihyPTEpLChpKGEpfHxlLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wKSYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJiFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZyPjApe3ZhciBvLG4sbD1NYXRoLmFicyhlLmdsb2JhbHMuaW5pdGlhbE1heFgtZS5nbG9iYWxzLmluaXRpYWxNaW5YKTtsPD0zJiYobD1lLmdsb2JhbHMuZGF0YVBvaW50cyksbz1sL3QsZS5nbG9iYWxzLm1pblhEaWZmJiZlLmdsb2JhbHMubWluWERpZmYvbz4wJiYobj1lLmdsb2JhbHMubWluWERpZmYvbyksbj50LzImJihuLz0yKSwocz1uL3IqcGFyc2VJbnQoZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoLDEwKS8xMDApPDEmJihzPTEpLHM9cy8ocj4xPzE6MS41KSs1LGUuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcz1zfXJldHVybiBzfX0se2tleTpcImdyaWRQYWRGb3J0aXRsZVN1YnRpdGxlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzLGE9dGhpcy5kQ3R4LmlzU3BhcmtsaW5lfHwhZS5nbG9iYWxzLmF4aXNDaGFydHM/MDoxMDtbXCJ0aXRsZVwiLFwic3VidGl0bGVcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7dm9pZCAwIT09ZS5jb25maWdbaV0udGV4dD9hKz1lLmNvbmZpZ1tpXS5tYXJnaW46YSs9dC5kQ3R4LmlzU3BhcmtsaW5lfHwhZS5nbG9iYWxzLmF4aXNDaGFydHM/MDo1fSkpLCFlLmNvbmZpZy5sZWdlbmQuc2hvd3x8XCJib3R0b21cIiE9PWUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8ZS5jb25maWcubGVnZW5kLmZsb2F0aW5nfHxlLmdsb2JhbHMuYXhpc0NoYXJ0c3x8KGErPTEwKTt2YXIgcz10aGlzLmRDdHguZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikscj10aGlzLmRDdHguZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwic3VidGl0bGVcIik7aS5ncmlkSGVpZ2h0PWkuZ3JpZEhlaWdodC1zLmhlaWdodC1yLmhlaWdodC1hLGkudHJhbnNsYXRlWT1pLnRyYW5zbGF0ZVkrcy5oZWlnaHQrci5oZWlnaHQrYX19LHtrZXk6XCJzZXRHcmlkWFBvc0ZvckR1YWxZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IEIodGhpcy5kQ3R4LmN0eCk7aS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihzLHIpey0xIT09aS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKHIpfHxzLmZsb2F0aW5nfHxhLmlzWUF4aXNIaWRkZW4ocil8fChzLm9wcG9zaXRlJiYoaS5nbG9iYWxzLnRyYW5zbGF0ZVg9aS5nbG9iYWxzLnRyYW5zbGF0ZVgtKGVbcl0ud2lkdGgrdFtyXS53aWR0aCktcGFyc2VJbnQoaS5jb25maWcueWF4aXNbcl0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8xLjItMTIpLGkuZ2xvYmFscy50cmFuc2xhdGVYPDImJihpLmdsb2JhbHMudHJhbnNsYXRlWD0yKSl9KSl9fV0pLHR9KCksb3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5sZ1JlY3Q9e30sdGhpcy55QXhpc1dpZHRoPTAsdGhpcy55QXhpc1dpZHRoTGVmdD0wLHRoaXMueUF4aXNXaWR0aFJpZ2h0PTAsdGhpcy54QXhpc0hlaWdodD0wLHRoaXMuaXNTcGFya2xpbmU9dGhpcy53LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCx0aGlzLmRpbUhlbHBlcnM9bmV3IGl0KHRoaXMpLHRoaXMuZGltWUF4aXM9bmV3IHN0KHRoaXMpLHRoaXMuZGltWEF4aXM9bmV3IGF0KHRoaXMpLHRoaXMuZGltR3JpZD1uZXcgcnQodGhpcyksdGhpcy5sZ1dpZHRoRm9yU2lkZUxlZ2VuZHM9MCx0aGlzLmdyaWRQYWQ9dGhpcy53LmNvbmZpZy5ncmlkLnBhZGRpbmcsdGhpcy54UGFkUmlnaHQ9MCx0aGlzLnhQYWRMZWZ0PTB9cmV0dXJuIHIodCxbe2tleTpcInBsb3RDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1lLmdsb2JhbHM7dGhpcy5sZ1JlY3Q9dGhpcy5kaW1IZWxwZXJzLmdldExlZ2VuZHNSZWN0KCksdGhpcy5pc1NwYXJrbGluZSYmKChlLmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmxlbmd0aD4wfHxlLmNvbmZpZy5tYXJrZXJzLnNpemU+MCkmJk9iamVjdC5lbnRyaWVzKHRoaXMuZ3JpZFBhZCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9ZyhlLDIpLGE9aVswXSxzPWlbMV07dC5ncmlkUGFkW2FdPU1hdGgubWF4KHMsdC53Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZS8xLjUpfSkpLHRoaXMuZ3JpZFBhZC50b3A9TWF0aC5tYXgoZS5jb25maWcuc3Ryb2tlLndpZHRoLzIsdGhpcy5ncmlkUGFkLnRvcCksdGhpcy5ncmlkUGFkLmJvdHRvbT1NYXRoLm1heChlLmNvbmZpZy5zdHJva2Uud2lkdGgvMix0aGlzLmdyaWRQYWQuYm90dG9tKSksaS5heGlzQ2hhcnRzP3RoaXMuc2V0RGltZW5zaW9uc0ZvckF4aXNDaGFydHMoKTp0aGlzLnNldERpbWVuc2lvbnNGb3JOb25BeGlzQ2hhcnRzKCksdGhpcy5kaW1HcmlkLmdyaWRQYWRGb3J0aXRsZVN1YnRpdGxlKCksaS5ncmlkSGVpZ2h0PWkuZ3JpZEhlaWdodC10aGlzLmdyaWRQYWQudG9wLXRoaXMuZ3JpZFBhZC5ib3R0b20saS5ncmlkV2lkdGg9aS5ncmlkV2lkdGgtdGhpcy5ncmlkUGFkLmxlZnQtdGhpcy5ncmlkUGFkLnJpZ2h0LXRoaXMueFBhZFJpZ2h0LXRoaXMueFBhZExlZnQ7dmFyIGE9dGhpcy5kaW1HcmlkLmdyaWRQYWRGb3JDb2x1bW5zSW5OdW1lcmljQXhpcyhpLmdyaWRXaWR0aCk7aS5ncmlkV2lkdGg9aS5ncmlkV2lkdGgtMiphLGkudHJhbnNsYXRlWD1pLnRyYW5zbGF0ZVgrdGhpcy5ncmlkUGFkLmxlZnQrdGhpcy54UGFkTGVmdCsoYT4wP2ErNDowKSxpLnRyYW5zbGF0ZVk9aS50cmFuc2xhdGVZK3RoaXMuZ3JpZFBhZC50b3B9fSx7a2V5Olwic2V0RGltZW5zaW9uc0ZvckF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1lLmdsb2JhbHMsYT10aGlzLmRpbVlBeGlzLmdldHlBeGlzTGFiZWxzQ29vcmRzKCkscz10aGlzLmRpbVlBeGlzLmdldHlBeGlzVGl0bGVDb29yZHMoKTtlLmdsb2JhbHMueUxhYmVsc0Nvb3Jkcz1bXSxlLmdsb2JhbHMueVRpdGxlQ29vcmRzPVtdLGUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24odCxpKXtlLmdsb2JhbHMueUxhYmVsc0Nvb3Jkcy5wdXNoKHt3aWR0aDphW2ldLndpZHRoLGluZGV4Oml9KSxlLmdsb2JhbHMueVRpdGxlQ29vcmRzLnB1c2goe3dpZHRoOnNbaV0ud2lkdGgsaW5kZXg6aX0pfSkpLHRoaXMueUF4aXNXaWR0aD10aGlzLmRpbVlBeGlzLmdldFRvdGFsWUF4aXNXaWR0aCgpO3ZhciByPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNMYWJlbHNDb29yZHMoKSxvPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNHcm91cExhYmVsc0Nvb3JkcygpLG49dGhpcy5kaW1YQXhpcy5nZXR4QXhpc1RpdGxlQ29vcmRzKCk7dGhpcy5jb25kaXRpb25hbENoZWNrc0ZvckF4aXNDb29yZHMocixuLG8pLGkudHJhbnNsYXRlWEF4aXNZPWUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzP3RoaXMueEF4aXNIZWlnaHQvODotNCxpLnRyYW5zbGF0ZVhBeGlzWD1lLmdsb2JhbHMucm90YXRlWExhYmVscyYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJmUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGU8PS00NT8tdGhpcy54QXhpc1dpZHRoLzQ6MCxlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoaS5yb3RhdGVYTGFiZWxzPSExLGkudHJhbnNsYXRlWEF4aXNZPXBhcnNlSW50KGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvMS41Ki0xKSxpLnRyYW5zbGF0ZVhBeGlzWT1pLnRyYW5zbGF0ZVhBeGlzWStlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSxpLnRyYW5zbGF0ZVhBeGlzWD1pLnRyYW5zbGF0ZVhBeGlzWCtlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDt2YXIgbD10aGlzLnlBeGlzV2lkdGgsaD10aGlzLnhBeGlzSGVpZ2h0O2kueEF4aXNMYWJlbHNIZWlnaHQ9dGhpcy54QXhpc0hlaWdodC1uLmhlaWdodCxpLnhBeGlzR3JvdXBMYWJlbHNIZWlnaHQ9aS54QXhpc0xhYmVsc0hlaWdodC1yLmhlaWdodCxpLnhBeGlzTGFiZWxzV2lkdGg9dGhpcy54QXhpc1dpZHRoLGkueEF4aXNIZWlnaHQ9dGhpcy54QXhpc0hlaWdodDt2YXIgYz0xMDsoXCJyYWRhclwiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy5pc1NwYXJrbGluZSkmJihsPTAsaD1pLmdvbGRlblBhZGRpbmcpLHRoaXMuaXNTcGFya2xpbmUmJih0aGlzLmxnUmVjdD17aGVpZ2h0OjAsd2lkdGg6MH0pLCh0aGlzLmlzU3BhcmtsaW5lfHxcInRyZWVtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpJiYobD0wLGg9MCxjPTApLHRoaXMuaXNTcGFya2xpbmV8fHRoaXMuZGltWEF4aXMuYWRkaXRpb25hbFBhZGRpbmdYTGFiZWxzKHIpO3ZhciBkPWZ1bmN0aW9uKCl7aS50cmFuc2xhdGVYPWwsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LXQubGdSZWN0LmhlaWdodC1oLSh0LmlzU3BhcmtsaW5lfHxcInRyZWVtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGU/MDplLmdsb2JhbHMucm90YXRlWExhYmVscz8xMDoxNSksaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC1sfTtzd2l0Y2goXCJ0b3BcIj09PWUuY29uZmlnLnhheGlzLnBvc2l0aW9uJiYoYz1pLnhBeGlzSGVpZ2h0LWUuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtNSksZS5jb25maWcubGVnZW5kLnBvc2l0aW9uKXtjYXNlXCJib3R0b21cIjppLnRyYW5zbGF0ZVk9YyxkKCk7YnJlYWs7Y2FzZVwidG9wXCI6aS50cmFuc2xhdGVZPXRoaXMubGdSZWN0LmhlaWdodCtjLGQoKTticmVhaztjYXNlXCJsZWZ0XCI6aS50cmFuc2xhdGVZPWMsaS50cmFuc2xhdGVYPXRoaXMubGdSZWN0LndpZHRoK2wsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LWgtMTIsaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1sO2JyZWFrO2Nhc2VcInJpZ2h0XCI6aS50cmFuc2xhdGVZPWMsaS50cmFuc2xhdGVYPWwsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LWgtMTIsaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1sLTU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJMZWdlbmQgcG9zaXRpb24gbm90IHN1cHBvcnRlZFwiKX10aGlzLmRpbUdyaWQuc2V0R3JpZFhQb3NGb3JEdWFsWUF4aXMocyxhKSxuZXcgcSh0aGlzLmN0eCkuc2V0WUF4aXNYUG9zaXRpb24oYSxzKX19LHtrZXk6XCJzZXREaW1lbnNpb25zRm9yTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9dC5jb25maWcsYT0wO3QuY29uZmlnLmxlZ2VuZC5zaG93JiYhdC5jb25maWcubGVnZW5kLmZsb2F0aW5nJiYoYT0yMCk7dmFyIHM9XCJwaWVcIj09PWkuY2hhcnQudHlwZXx8XCJwb2xhckFyZWFcIj09PWkuY2hhcnQudHlwZXx8XCJkb251dFwiPT09aS5jaGFydC50eXBlP1wicGllXCI6XCJyYWRpYWxCYXJcIixyPWkucGxvdE9wdGlvbnNbc10ub2Zmc2V0WSxvPWkucGxvdE9wdGlvbnNbc10ub2Zmc2V0WDtpZighaS5sZWdlbmQuc2hvd3x8aS5sZWdlbmQuZmxvYXRpbmcpcmV0dXJuIGUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC1pLmdyaWQucGFkZGluZy5sZWZ0K2kuZ3JpZC5wYWRkaW5nLnJpZ2h0LGUuZ3JpZFdpZHRoPWUuZ3JpZEhlaWdodCxlLnRyYW5zbGF0ZVk9cix2b2lkKGUudHJhbnNsYXRlWD1vKyhlLnN2Z1dpZHRoLWUuZ3JpZFdpZHRoKS8yKTtzd2l0Y2goaS5sZWdlbmQucG9zaXRpb24pe2Nhc2VcImJvdHRvbVwiOmUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC10aGlzLmxnUmVjdC5oZWlnaHQtZS5nb2xkZW5QYWRkaW5nLGUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgsZS50cmFuc2xhdGVZPXItMTAsZS50cmFuc2xhdGVYPW8rKGUuc3ZnV2lkdGgtZS5ncmlkV2lkdGgpLzI7YnJlYWs7Y2FzZVwidG9wXCI6ZS5ncmlkSGVpZ2h0PWUuc3ZnSGVpZ2h0LXRoaXMubGdSZWN0LmhlaWdodC1lLmdvbGRlblBhZGRpbmcsZS5ncmlkV2lkdGg9ZS5zdmdXaWR0aCxlLnRyYW5zbGF0ZVk9dGhpcy5sZ1JlY3QuaGVpZ2h0K3IrMTAsZS50cmFuc2xhdGVYPW8rKGUuc3ZnV2lkdGgtZS5ncmlkV2lkdGgpLzI7YnJlYWs7Y2FzZVwibGVmdFwiOmUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtYSxlLmdyaWRIZWlnaHQ9XCJhdXRvXCIhPT1pLmNoYXJ0LmhlaWdodD9lLnN2Z0hlaWdodDplLmdyaWRXaWR0aCxlLnRyYW5zbGF0ZVk9cixlLnRyYW5zbGF0ZVg9byt0aGlzLmxnUmVjdC53aWR0aCthO2JyZWFrO2Nhc2VcInJpZ2h0XCI6ZS5ncmlkV2lkdGg9ZS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1hLTUsZS5ncmlkSGVpZ2h0PVwiYXV0b1wiIT09aS5jaGFydC5oZWlnaHQ/ZS5zdmdIZWlnaHQ6ZS5ncmlkV2lkdGgsZS50cmFuc2xhdGVZPXIsZS50cmFuc2xhdGVYPW8rMTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJMZWdlbmQgcG9zaXRpb24gbm90IHN1cHBvcnRlZFwiKX19fSx7a2V5OlwiY29uZGl0aW9uYWxDaGVja3NGb3JBeGlzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPWEuZ2xvYmFscy5oYXNYYXhpc0dyb3Vwcz8yOjEscj1pLmhlaWdodCt0LmhlaWdodCtlLmhlaWdodCxvPWEuZ2xvYmFscy5pc011bHRpTGluZVg/MS4yOmEuZ2xvYmFscy5MSU5FX0hFSUdIVF9SQVRJTyxuPWEuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzIyOjEwLGw9YS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJlwiYm90dG9tXCI9PT1hLmNvbmZpZy5sZWdlbmQucG9zaXRpb24/MTA6MDt0aGlzLnhBeGlzSGVpZ2h0PXIqbytzKm4rbCx0aGlzLnhBeGlzV2lkdGg9dC53aWR0aCx0aGlzLnhBeGlzSGVpZ2h0LWUuaGVpZ2h0PmEuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQmJih0aGlzLnhBeGlzSGVpZ2h0PWEuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQpLGEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQmJnRoaXMueEF4aXNIZWlnaHQ8YS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCYmKHRoaXMueEF4aXNIZWlnaHQ9YS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCksYS5jb25maWcueGF4aXMuZmxvYXRpbmcmJih0aGlzLnhBeGlzSGVpZ2h0PTApO3ZhciBoPTAsYz0wO2EuY29uZmlnLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2grPXQubGFiZWxzLm1pbldpZHRoLGMrPXQubGFiZWxzLm1heFdpZHRofSkpLHRoaXMueUF4aXNXaWR0aDxoJiYodGhpcy55QXhpc1dpZHRoPWgpLHRoaXMueUF4aXNXaWR0aD5jJiYodGhpcy55QXhpc1dpZHRoPWMpfX1dKSx0fSgpLG50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmxnQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldExlZ2VuZFN0eWxlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO3Quc2V0QXR0cmlidXRlKFwidHlwZVwiLFwidGV4dC9jc3NcIik7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcXHRcXG4gICAgXFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kIHtcXHRcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFx0XFxuICAgICAgICBvdmVyZmxvdzogYXV0bztcXHRcXG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3Age1xcdFxcbiAgICAgICAgZmxleC13cmFwOiB3cmFwXFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1sZWZ0IHtcXHRcXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFx0XFxuICAgICAgICBib3R0b206IDA7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLWxlZnQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcC5hcGV4Y2hhcnRzLWFsaWduLWxlZnQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1sZWZ0IHtcXHRcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLmFwZXhjaGFydHMtYWxpZ24tY2VudGVyLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1jZW50ZXIge1xcdFxcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7ICBcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLmFwZXhjaGFydHMtYWxpZ24tcmlnaHQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcC5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0IHtcXHRcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMge1xcdFxcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcdFxcbiAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVze1xcdFxcbiAgICAgICAgZGlzcGxheTogZmxleDtcXHRcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IHtcXHRcXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHRcXG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXRleHQgKiwgLmFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciAqIHtcXHRcXG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyIHtcXHRcXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHRcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHRcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHRcXG4gICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xcdFxcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgICB9XFx0XFxuICAgICAgXFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFwZXhjaGFydHMtYWxpZ24tcmlnaHQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kLmFwZXhjaGFydHMtYWxpZ24tbGVmdCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVze1xcdFxcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLmFwZXhjaGFydHMtbm8tY2xpY2sge1xcdFxcbiAgICAgICAgY3Vyc29yOiBhdXRvO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQgLmFwZXhjaGFydHMtaGlkZGVuLXplcm8tc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQgLmFwZXhjaGFydHMtaGlkZGVuLW51bGwtc2VyaWVzIHtcXHRcXG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kIHtcXHRcXG4gICAgICAgIG9wYWNpdHk6IDAuNDU7XFx0XFxuICAgICAgfVwiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChlKSx0fX0se2tleTpcImdldExlZ2VuZEJCb3hcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWxlZ2VuZFwiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXQud2lkdGg7cmV0dXJue2Nsd2g6dC5oZWlnaHQsY2x3dzplfX19LHtrZXk6XCJhcHBlbmRUb0ZvcmVpZ25PYmplY3RcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmRvbS5lbExlZ2VuZEZvcmVpZ24uYXBwZW5kQ2hpbGQodGhpcy5nZXRMZWdlbmRTdHlsZXMoKSl9fSx7a2V5OlwidG9nZ2xlRGF0YVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPXRoaXMudztpZihhLmdsb2JhbHMuYXhpc0NoYXJ0c3x8XCJyYWRpYWxCYXJcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUpe2EuZ2xvYmFscy5yZXNpemVkPSEwO3ZhciBzPW51bGwscj1udWxsO2lmKGEuZ2xvYmFscy5yaXNpbmdTZXJpZXM9W10sYS5nbG9iYWxzLmF4aXNDaGFydHM/KHM9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ11cIikpLHI9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCkpOihzPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQodCsxLFwiJ11cIikpLHI9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEpLGUpW3tjczphLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLGNzaTphLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlc30se2NzOmEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMsY3NpOmEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzfV0uZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5yaXNlQ29sbGFwc2VkU2VyaWVzKHQuY3MsdC5jc2kscil9KSk7ZWxzZSB0aGlzLmhpZGVTZXJpZXMoe3Nlcmllc0VsOnMscmVhbEluZGV4OnJ9KX1lbHNle3ZhciBvPWEuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdCh0KzEsXCInXSBwYXRoXCIpKSxuPWEuY29uZmlnLmNoYXJ0LnR5cGU7aWYoXCJwaWVcIj09PW58fFwicG9sYXJBcmVhXCI9PT1ufHxcImRvbnV0XCI9PT1uKXt2YXIgbD1hLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQubGFiZWxzO25ldyBtKHRoaXMubGdDdHguY3R4KS5wYXRoTW91c2VEb3duKG8ubWVtYmVyc1swXSxudWxsKSx0aGlzLmxnQ3R4LmN0eC5waWUucHJpbnREYXRhTGFiZWxzSW5uZXIoby5tZW1iZXJzWzBdLm5vZGUsbCl9by5maXJlKFwiY2xpY2tcIil9fX0se2tleTpcImhpZGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNlcmllc0VsLGk9dC5yZWFsSW5kZXgsYT10aGlzLncscz14LmNsb25lKGEuY29uZmlnLnNlcmllcyk7aWYoYS5nbG9iYWxzLmF4aXNDaGFydHMpe3ZhciByPSExO2lmKGEuY29uZmlnLnlheGlzW2ldJiZhLmNvbmZpZy55YXhpc1tpXS5zaG93JiZhLmNvbmZpZy55YXhpc1tpXS5zaG93QWx3YXlzJiYocj0hMCxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGkpPDAmJihhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmksZGF0YTpzW2ldLmRhdGEuc2xpY2UoKSx0eXBlOmUucGFyZW50Tm9kZS5jbGFzc05hbWUuYmFzZVZhbC5zcGxpdChcIi1cIilbMV19KSxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpKSksIXIpe2EuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOnNbaV0uZGF0YS5zbGljZSgpLHR5cGU6ZS5wYXJlbnROb2RlLmNsYXNzTmFtZS5iYXNlVmFsLnNwbGl0KFwiLVwiKVsxXX0pLGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLnB1c2goaSk7dmFyIG89YS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5pbmRleE9mKGkpO2EuZ2xvYmFscy5yaXNpbmdTZXJpZXMuc3BsaWNlKG8sMSl9fWVsc2UgYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5wdXNoKHtpbmRleDppLGRhdGE6c1tpXX0pLGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLnB1c2goaSk7Zm9yKHZhciBuPWUuY2hpbGROb2RlcyxsPTA7bDxuLmxlbmd0aDtsKyspbltsXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIikmJihuW2xdLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtaGlkZVwiKT9uW2xdLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWhpZGVcIik6bltsXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oaWRlXCIpKTthLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkPWEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoPT09YS5jb25maWcuc2VyaWVzLmxlbmd0aCxzPXRoaXMuX2dldFNlcmllc0Jhc2VkT25Db2xsYXBzZWRTdGF0ZShzKSx0aGlzLmxnQ3R4LmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxhLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9fSx7a2V5OlwicmlzZUNvbGxhcHNlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz14LmNsb25lKGEuY29uZmlnLnNlcmllcyk7aWYodC5sZW5ndGg+MCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS5pbmRleD09PWkmJihhLmdsb2JhbHMuYXhpc0NoYXJ0cz8oc1tpXS5kYXRhPXRbcl0uZGF0YS5zbGljZSgpLHQuc3BsaWNlKHIsMSksZS5zcGxpY2UociwxKSxhLmdsb2JhbHMucmlzaW5nU2VyaWVzLnB1c2goaSkpOihzW2ldPXRbcl0uZGF0YSx0LnNwbGljZShyLDEpLGUuc3BsaWNlKHIsMSksYS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKSk7cz10aGlzLl9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGUocyksdGhpcy5sZ0N0eC5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpfX19LHtrZXk6XCJfZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybiBlLmdsb2JhbHMuYXhpc0NoYXJ0cz90LmZvckVhY2goKGZ1bmN0aW9uKGksYSl7ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKT4tMSYmKHRbYV0uZGF0YT1bXSl9KSk6dC5mb3JFYWNoKChmdW5jdGlvbihpLGEpe2UuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSk+LTEmJih0W2FdPTApfSkpLHR9fV0pLHR9KCksbHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5vbkxlZ2VuZENsaWNrPXRoaXMub25MZWdlbmRDbGljay5iaW5kKHRoaXMpLHRoaXMub25MZWdlbmRIb3ZlcmVkPXRoaXMub25MZWdlbmRIb3ZlcmVkLmJpbmQodGhpcyksdGhpcy5pc0JhcnNEaXN0cmlidXRlZD1cImJhclwiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZ0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCYmMT09PXRoaXMudy5jb25maWcuc2VyaWVzLmxlbmd0aCx0aGlzLmxlZ2VuZEhlbHBlcnM9bmV3IG50KHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT10LmNvbmZpZztpZigoaS5sZWdlbmQuc2hvd0ZvclNpbmdsZVNlcmllcyYmMT09PWUuc2VyaWVzLmxlbmd0aHx8dGhpcy5pc0JhcnNEaXN0cmlidXRlZHx8ZS5zZXJpZXMubGVuZ3RoPjF8fCFlLmF4aXNDaGFydHMpJiZpLmxlZ2VuZC5zaG93KXtmb3IoO2UuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkOyllLmRvbS5lbExlZ2VuZFdyYXAucmVtb3ZlQ2hpbGQoZS5kb20uZWxMZWdlbmRXcmFwLmZpcnN0Q2hpbGQpO3RoaXMuZHJhd0xlZ2VuZHMoKSx4LmlzSUUxMSgpP2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZCh0aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kU3R5bGVzKCkpOnRoaXMubGVnZW5kSGVscGVycy5hcHBlbmRUb0ZvcmVpZ25PYmplY3QoKSxcImJvdHRvbVwiPT09aS5sZWdlbmQucG9zaXRpb258fFwidG9wXCI9PT1pLmxlZ2VuZC5wb3NpdGlvbj90aGlzLmxlZ2VuZEFsaWduSG9yaXpvbnRhbCgpOlwicmlnaHRcIiE9PWkubGVnZW5kLnBvc2l0aW9uJiZcImxlZnRcIiE9PWkubGVnZW5kLnBvc2l0aW9ufHx0aGlzLmxlZ2VuZEFsaWduVmVydGljYWwoKX19fSx7a2V5OlwiZHJhd0xlZ2VuZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1lLmNvbmZpZy5sZWdlbmQuZm9udEZhbWlseSxhPWUuZ2xvYmFscy5zZXJpZXNOYW1lcyxzPWUuZ2xvYmFscy5jb2xvcnMuc2xpY2UoKTtpZihcImhlYXRtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciByPWUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5yYW5nZXM7YT1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT90Lm5hbWU6dC5mcm9tK1wiIC0gXCIrdC50b30pKSxzPXIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2xvcn0pKX1lbHNlIHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQmJihhPWUuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSk7ZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKGE9ZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zKTtmb3IodmFyIG89ZS5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcixuPWUuY29uZmlnLmxlZ2VuZC5pbnZlcnNlT3JkZXIsbD1uP2EubGVuZ3RoLTE6MDtuP2w+PTA6bDw9YS5sZW5ndGgtMTtuP2wtLTpsKyspe3ZhciBoLGM9byhhW2xdLHtzZXJpZXNJbmRleDpsLHc6ZX0pLGQ9ITEsZz0hMTtpZihlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aD4wKWZvcih2YXIgdT0wO3U8ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg7dSsrKWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbdV0uaW5kZXg9PT1sJiYoZD0hMCk7aWYoZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoPjApZm9yKHZhciBwPTA7cDxlLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7cCsrKWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzW3BdPT09bCYmKGc9ITApO3ZhciBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2YuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKTt2YXIgYj1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5vZmZzZXRYLHY9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMub2Zmc2V0WSx3PWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmhlaWdodCxrPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLndpZHRoLEE9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuc3Ryb2tlV2lkdGgsUz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5zdHJva2VDb2xvcixDPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnJhZGl1cyxMPWYuc3R5bGU7TC5iYWNrZ3JvdW5kPXNbbF0sTC5jb2xvcj1zW2xdLEwuc2V0UHJvcGVydHkoXCJiYWNrZ3JvdW5kXCIsc1tsXSxcImltcG9ydGFudFwiKSxlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzJiZlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzW2xdJiYoTC5iYWNrZ3JvdW5kPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmZpbGxDb2xvcnNbbF0pLHZvaWQgMCE9PWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0mJihMLmJhY2tncm91bmQ9ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1tsXSxMLmNvbG9yPWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0pLEwuaGVpZ2h0PUFycmF5LmlzQXJyYXkodyk/cGFyc2VGbG9hdCh3W2xdKStcInB4XCI6cGFyc2VGbG9hdCh3KStcInB4XCIsTC53aWR0aD1BcnJheS5pc0FycmF5KGspP3BhcnNlRmxvYXQoa1tsXSkrXCJweFwiOnBhcnNlRmxvYXQoaykrXCJweFwiLEwubGVmdD0oQXJyYXkuaXNBcnJheShiKT9wYXJzZUZsb2F0KGJbbF0pOnBhcnNlRmxvYXQoYikpK1wicHhcIixMLnRvcD0oQXJyYXkuaXNBcnJheSh2KT9wYXJzZUZsb2F0KHZbbF0pOnBhcnNlRmxvYXQodikpK1wicHhcIixMLmJvcmRlcldpZHRoPUFycmF5LmlzQXJyYXkoQSk/QVtsXTpBLEwuYm9yZGVyQ29sb3I9QXJyYXkuaXNBcnJheShTKT9TW2xdOlMsTC5ib3JkZXJSYWRpdXM9QXJyYXkuaXNBcnJheShDKT9wYXJzZUZsb2F0KENbbF0pK1wicHhcIjpwYXJzZUZsb2F0KEMpK1wicHhcIixlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MJiYoQXJyYXkuaXNBcnJheShlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MKT9lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MW2xdJiYoZi5pbm5lckhUTUw9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTFtsXSgpKTpmLmlubmVySFRNTD1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MKCkpLG0uc2V0QXR0cnMoZix7cmVsOmwrMSxcImRhdGE6Y29sbGFwc2VkXCI6ZHx8Z30pLChkfHxnKSYmZi5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmRcIik7dmFyIFA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxJPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO0kuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIiksSS5pbm5lckhUTUw9QXJyYXkuaXNBcnJheShjKT9jLmpvaW4oXCIgXCIpOmM7dmFyIE09ZS5jb25maWcubGVnZW5kLmxhYmVscy51c2VTZXJpZXNDb2xvcnM/ZS5nbG9iYWxzLmNvbG9yc1tsXTpBcnJheS5pc0FycmF5KGUuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzKT9udWxsPT09KGg9ZS5jb25maWcubGVnZW5kLmxhYmVscy5jb2xvcnMpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoW2xdOmUuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzO018fChNPWUuY29uZmlnLmNoYXJ0LmZvcmVDb2xvciksSS5zdHlsZS5jb2xvcj1NLEkuc3R5bGUuZm9udFNpemU9cGFyc2VGbG9hdChlLmNvbmZpZy5sZWdlbmQuZm9udFNpemUpK1wicHhcIixJLnN0eWxlLmZvbnRXZWlnaHQ9ZS5jb25maWcubGVnZW5kLmZvbnRXZWlnaHQsSS5zdHlsZS5mb250RmFtaWx5PWl8fGUuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksbS5zZXRBdHRycyhJLHtyZWw6bCsxLGk6bCxcImRhdGE6ZGVmYXVsdC10ZXh0XCI6ZW5jb2RlVVJJQ29tcG9uZW50KGMpLFwiZGF0YTpjb2xsYXBzZWRcIjpkfHxnfSksUC5hcHBlbmRDaGlsZChmKSxQLmFwcGVuZENoaWxkKEkpO3ZhciBUPW5ldyB5KHRoaXMuY3R4KTtpZighZS5jb25maWcubGVnZW5kLnNob3dGb3JaZXJvU2VyaWVzKTA9PT1ULmdldFNlcmllc1RvdGFsQnlJbmRleChsKSYmVC5zZXJpZXNIYXZlU2FtZVZhbHVlcyhsKSYmIVQuaXNTZXJpZXNOdWxsKGwpJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJi0xPT09ZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihsKSYmUC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oaWRkZW4temVyby1zZXJpZXNcIik7ZS5jb25maWcubGVnZW5kLnNob3dGb3JOdWxsU2VyaWVzfHxULmlzU2VyaWVzTnVsbChsKSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiYtMT09PWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJlAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLW51bGwtc2VyaWVzXCIpLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmFwcGVuZENoaWxkKFApLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFsaWduLVwiLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaG9yaXpvbnRhbEFsaWduKSksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZChcImFweC1sZWdlbmQtcG9zaXRpb24tXCIrZS5jb25maWcubGVnZW5kLnBvc2l0aW9uKSxQLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXNcIiksUC5zdHlsZS5tYXJnaW49XCJcIi5jb25jYXQoZS5jb25maWcubGVnZW5kLml0ZW1NYXJnaW4udmVydGljYWwsXCJweCBcIikuY29uY2F0KGUuY29uZmlnLmxlZ2VuZC5pdGVtTWFyZ2luLmhvcml6b250YWwsXCJweFwiKSxlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5zdHlsZS53aWR0aD1lLmNvbmZpZy5sZWdlbmQud2lkdGg/ZS5jb25maWcubGVnZW5kLndpZHRoK1wicHhcIjpcIlwiLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLmhlaWdodD1lLmNvbmZpZy5sZWdlbmQuaGVpZ2h0P2UuY29uZmlnLmxlZ2VuZC5oZWlnaHQrXCJweFwiOlwiXCIsbS5zZXRBdHRycyhQLHtyZWw6bCsxLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYVtsXSksXCJkYXRhOmNvbGxhcHNlZFwiOmR8fGd9KSwoZHx8ZykmJlAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kXCIpLGUuY29uZmlnLmxlZ2VuZC5vbkl0ZW1DbGljay50b2dnbGVEYXRhU2VyaWVzfHxQLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW5vLWNsaWNrXCIpfWUuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQub25MZWdlbmRDbGljaywhMCksZS5jb25maWcubGVnZW5kLm9uSXRlbUhvdmVyLmhpZ2hsaWdodERhdGFTZXJpZXMmJjA9PT1lLmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMubGVuZ3RoJiYoZS5nbG9iYWxzLmRvbS5lbFdyYXAuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHQub25MZWdlbmRIb3ZlcmVkLCEwKSxlLmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKFwibW91c2VvdXRcIix0Lm9uTGVnZW5kSG92ZXJlZCwhMCkpfX0se2tleTpcInNldExlZ2VuZFdyYXBYWVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9aS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAscz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9MCxvPTA7aWYoXCJib3R0b21cIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbilvKz1pLmdsb2JhbHMuc3ZnSGVpZ2h0LXMuaGVpZ2h0LzI7ZWxzZSBpZihcInRvcFwiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uKXt2YXIgbj1uZXcgb3QodGhpcy5jdHgpLGw9bi5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJ0aXRsZVwiKS5oZWlnaHQsaD1uLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpLmhlaWdodDtvPW8rKGw+MD9sLTEwOjApKyhoPjA/aC0xMDowKX1hLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixyPXIrdCtpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCxvPW8rZStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WSxhLnN0eWxlLmxlZnQ9citcInB4XCIsYS5zdHlsZS50b3A9bytcInB4XCIsXCJib3R0b21cIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj8oYS5zdHlsZS50b3A9XCJhdXRvXCIsYS5zdHlsZS5ib3R0b209NS1pLmNvbmZpZy5sZWdlbmQub2Zmc2V0WStcInB4XCIpOlwicmlnaHRcIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKGEuc3R5bGUubGVmdD1cImF1dG9cIixhLnN0eWxlLnJpZ2h0PTI1K2kuY29uZmlnLmxlZ2VuZC5vZmZzZXRYK1wicHhcIik7W1wid2lkdGhcIixcImhlaWdodFwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthLnN0eWxlW3RdJiYoYS5zdHlsZVt0XT1wYXJzZUludChpLmNvbmZpZy5sZWdlbmRbdF0sMTApK1wicHhcIil9KSl9fSx7a2V5OlwibGVnZW5kQWxpZ25Ib3Jpem9udGFsXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUucmlnaHQ9MDt2YXIgZT10aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLGk9bmV3IG90KHRoaXMuY3R4KSxhPWkuZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikscz1pLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpLHI9MDtcImJvdHRvbVwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uP3I9LWUuY2x3aC8xLjg6XCJ0b3BcIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKHI9YS5oZWlnaHQrcy5oZWlnaHQrdC5jb25maWcudGl0bGUubWFyZ2luK3QuY29uZmlnLnN1YnRpdGxlLm1hcmdpbi0xMCksdGhpcy5zZXRMZWdlbmRXcmFwWFkoMjAscil9fSx7a2V5OlwibGVnZW5kQWxpZ25WZXJ0aWNhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKSxpPTA7XCJsZWZ0XCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihpPTIwKSxcInJpZ2h0XCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihpPXQuZ2xvYmFscy5zdmdXaWR0aC1lLmNsd3ctMTApLHRoaXMuc2V0TGVnZW5kV3JhcFhZKGksMjApfX0se2tleTpcIm9uTGVnZW5kSG92ZXJlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXNlcmllc1wiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpO2lmKFwiaGVhdG1hcFwiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy5pc0JhcnNEaXN0cmlidXRlZCl7aWYoaSl7dmFyIGE9cGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3RoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRIb3ZlclwiLFt0aGlzLmN0eCxhLHRoaXMud10pLG5ldyBOKHRoaXMuY3R4KS5oaWdobGlnaHRSYW5nZUluU2VyaWVzKHQsdC50YXJnZXQpfX1lbHNlIXQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kXCIpJiZpJiZuZXcgTih0aGlzLmN0eCkudG9nZ2xlU2VyaWVzT25Ib3Zlcih0LHQudGFyZ2V0KX19LHtrZXk6XCJvbkxlZ2VuZENsaWNrXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2lmKCFlLmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMubGVuZ3RoJiYodC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzXCIpfHx0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpfHx0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIikpKXt2YXIgaT1wYXJzZUludCh0LnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEsYT1cInRydWVcIj09PXQudGFyZ2V0LmdldEF0dHJpYnV0ZShcImRhdGE6Y29sbGFwc2VkXCIpLHM9dGhpcy53LmNvbmZpZy5jaGFydC5ldmVudHMubGVnZW5kQ2xpY2s7XCJmdW5jdGlvblwiPT10eXBlb2YgcyYmcyh0aGlzLmN0eCxpLHRoaXMudyksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImxlZ2VuZENsaWNrXCIsW3RoaXMuY3R4LGksdGhpcy53XSk7dmFyIHI9dGhpcy53LmNvbmZpZy5sZWdlbmQubWFya2Vycy5vbkNsaWNrO1wiZnVuY3Rpb25cIj09dHlwZW9mIHImJnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKSYmKHIodGhpcy5jdHgsaSx0aGlzLncpLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRNYXJrZXJDbGlja1wiLFt0aGlzLmN0eCxpLHRoaXMud10pKSxcInRyZWVtYXBcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGUmJlwiaGVhdG1hcFwiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmIXRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQmJmUuY29uZmlnLmxlZ2VuZC5vbkl0ZW1DbGljay50b2dnbGVEYXRhU2VyaWVzJiZ0aGlzLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhpLGEpfX19XSksdH0oKSxodD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy5ldj10aGlzLncuY29uZmlnLmNoYXJ0LmV2ZW50cyx0aGlzLnNlbGVjdGVkQ2xhc3M9XCJhcGV4Y2hhcnRzLXNlbGVjdGVkXCIsdGhpcy5sb2NhbGVWYWx1ZXM9dGhpcy53Lmdsb2JhbHMubG9jYWxlLnRvb2xiYXIsdGhpcy5taW5YPWkuZ2xvYmFscy5taW5YLHRoaXMubWF4WD1pLmdsb2JhbHMubWF4WH1yZXR1cm4gcih0LFt7a2V5OlwiY3JlYXRlVG9vbGJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIil9LGE9aSgpO2lmKGEuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixcImFwZXhjaGFydHMtdG9vbGJhclwiKSxhLnN0eWxlLnRvcD1lLmNvbmZpZy5jaGFydC50b29sYmFyLm9mZnNldFkrXCJweFwiLGEuc3R5bGUucmlnaHQ9My1lLmNvbmZpZy5jaGFydC50b29sYmFyLm9mZnNldFgrXCJweFwiLGUuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGEpLHRoaXMuZWxab29tPWkoKSx0aGlzLmVsWm9vbUluPWkoKSx0aGlzLmVsWm9vbU91dD1pKCksdGhpcy5lbFBhbj1pKCksdGhpcy5lbFNlbGVjdGlvbj1pKCksdGhpcy5lbFpvb21SZXNldD1pKCksdGhpcy5lbE1lbnVJY29uPWkoKSx0aGlzLmVsTWVudT1pKCksdGhpcy5lbEN1c3RvbUljb25zPVtdLHRoaXMudD1lLmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzLEFycmF5LmlzQXJyYXkodGhpcy50LmN1c3RvbUljb25zKSlmb3IodmFyIHM9MDtzPHRoaXMudC5jdXN0b21JY29ucy5sZW5ndGg7cysrKXRoaXMuZWxDdXN0b21JY29ucy5wdXNoKGkoKSk7dmFyIHI9W10sbz1mdW5jdGlvbihpLGEscyl7dmFyIG89aS50b0xvd2VyQ2FzZSgpO3QudFtvXSYmZS5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkJiZyLnB1c2goe2VsOmEsaWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdC50W29dP3QudFtvXTpzLHRpdGxlOnQubG9jYWxlVmFsdWVzW2ldLGNsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobyxcIi1pY29uXCIpfSl9O28oXCJ6b29tSW5cIix0aGlzLmVsWm9vbUluLCc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwiLz5cXG48L3N2Zz5cXG4nKSxvKFwiem9vbU91dFwiLHRoaXMuZWxab29tT3V0LCc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNNyAxMXYyaDEwdi0ySDd6bTUtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCIvPlxcbjwvc3ZnPlxcbicpO3ZhciBuPWZ1bmN0aW9uKGkpe3QudFtpXSYmZS5jb25maWcuY2hhcnRbaV0uZW5hYmxlZCYmci5wdXNoKHtlbDpcInpvb21cIj09PWk/dC5lbFpvb206dC5lbFNlbGVjdGlvbixpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0LnRbaV0/dC50W2ldOlwiem9vbVwiPT09aT8nPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCI+XFxuICAgIDxwYXRoIGQ9XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDBWMHpcIiBmaWxsPVwibm9uZVwiLz5cXG4gICAgPHBhdGggZD1cIk0xMiAxMGgtMnYySDl2LTJIN1Y5aDJWN2gxdjJoMnYxelwiLz5cXG48L3N2Zz4nOic8c3ZnIGZpbGw9XCIjNkU4MTkyXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cXG4gICAgPHBhdGggZD1cIk0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6XCIvPlxcbjwvc3ZnPicsdGl0bGU6dC5sb2NhbGVWYWx1ZXNbXCJ6b29tXCI9PT1pP1wic2VsZWN0aW9uWm9vbVwiOlwic2VsZWN0aW9uXCJdLGNsYXNzOmUuZ2xvYmFscy5pc1RvdWNoRGV2aWNlP1wiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoaSxcIi1pY29uXCIpfSl9O24oXCJ6b29tXCIpLG4oXCJzZWxlY3Rpb25cIiksdGhpcy50LnBhbiYmZS5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkJiZyLnB1c2goe2VsOnRoaXMuZWxQYW4saWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdGhpcy50LnBhbj90aGlzLnQucGFuOic8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiBmaWxsPVwiIzAwMDAwMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIj5cXG4gICAgPGRlZnM+XFxuICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGlkPVwiYVwiLz5cXG4gICAgPC9kZWZzPlxcbiAgICA8Y2xpcFBhdGggaWQ9XCJiXCI+XFxuICAgICAgICA8dXNlIG92ZXJmbG93PVwidmlzaWJsZVwiIHhsaW5rOmhyZWY9XCIjYVwiLz5cXG4gICAgPC9jbGlwUGF0aD5cXG4gICAgPHBhdGggY2xpcC1wYXRoPVwidXJsKCNiKVwiIGQ9XCJNMjMgNS41VjIwYzAgMi4yLTEuOCA0LTQgNGgtNy4zYy0xLjA4IDAtMi4xLS40My0yLjg1LTEuMTlMMSAxNC44M3MxLjI2LTEuMjMgMS4zLTEuMjVjLjIyLS4xOS40OS0uMjkuNzktLjI5LjIyIDAgLjQyLjA2LjYuMTYuMDQuMDEgNC4zMSAyLjQ2IDQuMzEgMi40NlY0YzAtLjgzLjY3LTEuNSAxLjUtMS41UzExIDMuMTcgMTEgNHY3aDFWMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41UzE1IC42NyAxNSAxLjVWMTFoMVYyLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWMTFoMVY1LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV6XCIvPlxcbjwvc3ZnPicsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMucGFuLGNsYXNzOmUuZ2xvYmFscy5pc1RvdWNoRGV2aWNlP1wiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiOlwiYXBleGNoYXJ0cy1wYW4taWNvblwifSksbyhcInJlc2V0XCIsdGhpcy5lbFpvb21SZXNldCwnPHN2ZyBmaWxsPVwiIzAwMDAwMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XFxuICAgIDxwYXRoIGQ9XCJNMTAgMjB2LTZoNHY2aDV2LThoM0wxMiAzIDIgMTJoM3Y4elwiLz5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cXG48L3N2Zz4nKSx0aGlzLnQuZG93bmxvYWQmJnIucHVzaCh7ZWw6dGhpcy5lbE1lbnVJY29uLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMudC5kb3dubG9hZD90aGlzLnQuZG93bmxvYWQ6JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIi8+PHBhdGggZD1cIk0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzelwiLz48L3N2Zz4nLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLm1lbnUsY2xhc3M6XCJhcGV4Y2hhcnRzLW1lbnUtaWNvblwifSk7Zm9yKHZhciBsPTA7bDx0aGlzLmVsQ3VzdG9tSWNvbnMubGVuZ3RoO2wrKylyLnB1c2goe2VsOnRoaXMuZWxDdXN0b21JY29uc1tsXSxpY29uOnRoaXMudC5jdXN0b21JY29uc1tsXS5pY29uLHRpdGxlOnRoaXMudC5jdXN0b21JY29uc1tsXS50aXRsZSxpbmRleDp0aGlzLnQuY3VzdG9tSWNvbnNbbF0uaW5kZXgsY2xhc3M6XCJhcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gXCIrdGhpcy50LmN1c3RvbUljb25zW2xdLmNsYXNzfSk7ci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuaW5kZXgmJngubW92ZUluZGV4SW5BcnJheShyLGUsdC5pbmRleCl9KSk7Zm9yKHZhciBoPTA7aDxyLmxlbmd0aDtoKyspbS5zZXRBdHRycyhyW2hdLmVsLHtjbGFzczpyW2hdLmNsYXNzLHRpdGxlOnJbaF0udGl0bGV9KSxyW2hdLmVsLmlubmVySFRNTD1yW2hdLmljb24sYS5hcHBlbmRDaGlsZChyW2hdLmVsKTt0aGlzLl9jcmVhdGVIYW1idXJnZXJNZW51KGEpLGUuZ2xvYmFscy56b29tRW5hYmxlZD90aGlzLmVsWm9vbS5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyk6ZS5nbG9iYWxzLnBhbkVuYWJsZWQ/dGhpcy5lbFBhbi5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyk6ZS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQmJnRoaXMuZWxTZWxlY3Rpb24uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpLHRoaXMuYWRkVG9vbGJhckV2ZW50TGlzdGVuZXJzKCl9fSx7a2V5OlwiX2NyZWF0ZUhhbWJ1cmdlck1lbnVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmVsTWVudUl0ZW1zPVtdLHQuYXBwZW5kQ2hpbGQodGhpcy5lbE1lbnUpLG0uc2V0QXR0cnModGhpcy5lbE1lbnUse2NsYXNzOlwiYXBleGNoYXJ0cy1tZW51XCJ9KTt2YXIgZT1be25hbWU6XCJleHBvcnRTVkdcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1NWR30se25hbWU6XCJleHBvcnRQTkdcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1BOR30se25hbWU6XCJleHBvcnRDU1ZcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb0NTVn1dO3RoaXMudy5nbG9iYWxzLmFsbFNlcmllc0hhc0VxdWFsWHx8ZS5zcGxpY2UoMiwxKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl0aGlzLmVsTWVudUl0ZW1zLnB1c2goZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSksdGhpcy5lbE1lbnVJdGVtc1tpXS5pbm5lckhUTUw9ZVtpXS50aXRsZSxtLnNldEF0dHJzKHRoaXMuZWxNZW51SXRlbXNbaV0se2NsYXNzOlwiYXBleGNoYXJ0cy1tZW51LWl0ZW0gXCIuY29uY2F0KGVbaV0ubmFtZSksdGl0bGU6ZVtpXS50aXRsZX0pLHRoaXMuZWxNZW51LmFwcGVuZENoaWxkKHRoaXMuZWxNZW51SXRlbXNbaV0pfX0se2tleTpcImFkZFRvb2xiYXJFdmVudExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmVsWm9vbVJlc2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbVJlc2V0LmJpbmQodGhpcykpLHRoaXMuZWxTZWxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVab29tU2VsZWN0aW9uLmJpbmQodGhpcyxcInNlbGVjdGlvblwiKSksdGhpcy5lbFpvb20uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVab29tU2VsZWN0aW9uLmJpbmQodGhpcyxcInpvb21cIikpLHRoaXMuZWxab29tSW4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tSW4uYmluZCh0aGlzKSksdGhpcy5lbFpvb21PdXQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tT3V0LmJpbmQodGhpcykpLHRoaXMuZWxQYW4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVQYW5uaW5nLmJpbmQodGhpcykpLHRoaXMuZWxNZW51SWNvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZU1lbnUuYmluZCh0aGlzKSksdGhpcy5lbE1lbnVJdGVtcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmNsYXNzTGlzdC5jb250YWlucyhcImV4cG9ydFNWR1wiKT9lLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuaGFuZGxlRG93bmxvYWQuYmluZCh0LFwic3ZnXCIpKTplLmNsYXNzTGlzdC5jb250YWlucyhcImV4cG9ydFBOR1wiKT9lLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuaGFuZGxlRG93bmxvYWQuYmluZCh0LFwicG5nXCIpKTplLmNsYXNzTGlzdC5jb250YWlucyhcImV4cG9ydENTVlwiKSYmZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmhhbmRsZURvd25sb2FkLmJpbmQodCxcImNzdlwiKSl9KSk7Zm9yKHZhciBlPTA7ZTx0aGlzLnQuY3VzdG9tSWNvbnMubGVuZ3RoO2UrKyl0aGlzLmVsQ3VzdG9tSWNvbnNbZV0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50LmN1c3RvbUljb25zW2VdLmNsaWNrLmJpbmQodGhpcyx0aGlzLmN0eCx0aGlzLmN0eC53KSl9fSx7a2V5OlwidG9nZ2xlWm9vbVNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuY3R4LnRvb2xiYXIudG9nZ2xlT3RoZXJDb250cm9scygpO3ZhciBpPVwic2VsZWN0aW9uXCI9PT10P2UuY3R4LnRvb2xiYXIuZWxTZWxlY3Rpb246ZS5jdHgudG9vbGJhci5lbFpvb20sYT1cInNlbGVjdGlvblwiPT09dD9cInNlbGVjdGlvbkVuYWJsZWRcIjpcInpvb21FbmFibGVkXCI7ZS53Lmdsb2JhbHNbYV09IWUudy5nbG9iYWxzW2FdLGkuY2xhc3NMaXN0LmNvbnRhaW5zKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk/aS5jbGFzc0xpc3QucmVtb3ZlKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk6aS5jbGFzc0xpc3QuYWRkKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyl9KSl9fSx7a2V5OlwiZ2V0VG9vbGJhckljb25zUmVmZXJlbmNlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dGhpcy5lbFpvb218fCh0aGlzLmVsWm9vbT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtem9vbS1pY29uXCIpKSx0aGlzLmVsUGFufHwodGhpcy5lbFBhbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtcGFuLWljb25cIikpLHRoaXMuZWxTZWxlY3Rpb258fCh0aGlzLmVsU2VsZWN0aW9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvblwiKSl9fSx7a2V5OlwiZW5hYmxlWm9vbVBhbkZyb21Ub29sYmFyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVPdGhlckNvbnRyb2xzKCksXCJwYW5cIj09PXQ/dGhpcy53Lmdsb2JhbHMucGFuRW5hYmxlZD0hMDp0aGlzLncuZ2xvYmFscy56b29tRW5hYmxlZD0hMDt2YXIgZT1cInBhblwiPT09dD90aGlzLmVsUGFuOnRoaXMuZWxab29tLGk9XCJwYW5cIj09PXQ/dGhpcy5lbFpvb206dGhpcy5lbFBhbjtlJiZlLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKSxpJiZpLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5zZWxlY3RlZENsYXNzKX19LHtrZXk6XCJ0b2dnbGVQYW5uaW5nXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmN0eC50b29sYmFyLnRvZ2dsZU90aGVyQ29udHJvbHMoKSx0LncuZ2xvYmFscy5wYW5FbmFibGVkPSF0LncuZ2xvYmFscy5wYW5FbmFibGVkLHQuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LmNvbnRhaW5zKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk/dC5jdHgudG9vbGJhci5lbFBhbi5jbGFzc0xpc3QucmVtb3ZlKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk6dC5jdHgudG9vbGJhci5lbFBhbi5jbGFzc0xpc3QuYWRkKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyl9KSl9fSx7a2V5OlwidG9nZ2xlT3RoZXJDb250cm9sc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudztlLmdsb2JhbHMucGFuRW5hYmxlZD0hMSxlLmdsb2JhbHMuem9vbUVuYWJsZWQ9ITEsZS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQ9ITEsdGhpcy5nZXRUb29sYmFySWNvbnNSZWZlcmVuY2UoKSxbdGhpcy5lbFBhbix0aGlzLmVsU2VsZWN0aW9uLHRoaXMuZWxab29tXS5mb3JFYWNoKChmdW5jdGlvbihlKXtlJiZlLmNsYXNzTGlzdC5yZW1vdmUodC5zZWxlY3RlZENsYXNzKX0pKX19LHtrZXk6XCJoYW5kbGVab29tSW5cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMuaXNSYW5nZUJhciYmKHRoaXMubWluWD10Lmdsb2JhbHMubWluWSx0aGlzLm1heFg9dC5nbG9iYWxzLm1heFkpO3ZhciBlPSh0aGlzLm1pblgrdGhpcy5tYXhYKS8yLGk9KHRoaXMubWluWCtlKS8yLGE9KHRoaXMubWF4WCtlKS8yLHM9dGhpcy5fZ2V0TmV3TWluWE1heFgoaSxhKTt0Lmdsb2JhbHMuZGlzYWJsZVpvb21Jbnx8dGhpcy56b29tVXBkYXRlT3B0aW9ucyhzLm1pblgscy5tYXhYKX19LHtrZXk6XCJoYW5kbGVab29tT3V0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodC5nbG9iYWxzLmlzUmFuZ2VCYXImJih0aGlzLm1pblg9dC5nbG9iYWxzLm1pblksdGhpcy5tYXhYPXQuZ2xvYmFscy5tYXhZKSwhKFwiZGF0ZXRpbWVcIj09PXQuY29uZmlnLnhheGlzLnR5cGUmJm5ldyBEYXRlKHRoaXMubWluWCkuZ2V0VVRDRnVsbFllYXIoKTwxZTMpKXt2YXIgZT0odGhpcy5taW5YK3RoaXMubWF4WCkvMixpPXRoaXMubWluWC0oZS10aGlzLm1pblgpLGE9dGhpcy5tYXhYLShlLXRoaXMubWF4WCkscz10aGlzLl9nZXROZXdNaW5YTWF4WChpLGEpO3QuZ2xvYmFscy5kaXNhYmxlWm9vbU91dHx8dGhpcy56b29tVXBkYXRlT3B0aW9ucyhzLm1pblgscy5tYXhYKX19fSx7a2V5OlwiX2dldE5ld01pblhNYXhYXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYztyZXR1cm57bWluWDppP01hdGguZmxvb3IodCk6dCxtYXhYOmk/TWF0aC5mbG9vcihlKTplfX19LHtrZXk6XCJ6b29tVXBkYXRlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKHZvaWQgMCE9PXR8fHZvaWQgMCE9PWUpe2lmKCEoaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYodDwxJiYodD0xLGU9aS5nbG9iYWxzLmRhdGFQb2ludHMpLGUtdDwyKSkpe3ZhciBhPXttaW46dCxtYXg6ZX0scz10aGlzLmdldEJlZm9yZVpvb21SYW5nZShhKTtzJiYoYT1zLnhheGlzKTt2YXIgcj17eGF4aXM6YX0sbz14LmNsb25lKGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKTtpZihpLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzKW89bmV3IF8odGhpcy5jdHgpLmF1dG9TY2FsZVkodGhpcy5jdHgsbyx7eGF4aXM6YX0pO2kuY29uZmlnLmNoYXJ0Lmdyb3VwfHwoci55YXhpcz1vKSx0aGlzLncuZ2xvYmFscy56b29tZWQ9ITAsdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyhyLCExLHRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpLHRoaXMuem9vbUNhbGxiYWNrKGEsbyl9fWVsc2UgdGhpcy5oYW5kbGVab29tUmVzZXQoKX19LHtrZXk6XCJ6b29tQ2FsbGJhY2tcIix2YWx1ZTpmdW5jdGlvbih0LGUpe1wiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuZXYuem9vbWVkJiZ0aGlzLmV2Lnpvb21lZCh0aGlzLmN0eCx7eGF4aXM6dCx5YXhpczplfSl9fSx7a2V5OlwiZ2V0QmVmb3JlWm9vbVJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1udWxsO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuZXYuYmVmb3JlWm9vbSYmKGk9dGhpcy5ldi5iZWZvcmVab29tKHRoaXMse3hheGlzOnQseWF4aXM6ZX0pKSxpfX0se2tleTpcInRvZ2dsZU1lbnVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5lbE1lbnUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIik/dC5lbE1lbnUuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpOnQuZWxNZW51LmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKX0pLDApfX0se2tleTpcImhhbmRsZURvd25sb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IEcodGhpcy5jdHgpO3N3aXRjaCh0KXtjYXNlXCJzdmdcIjppLmV4cG9ydFRvU1ZHKHRoaXMuY3R4KTticmVhaztjYXNlXCJwbmdcIjppLmV4cG9ydFRvUG5nKHRoaXMuY3R4KTticmVhaztjYXNlXCJjc3ZcIjppLmV4cG9ydFRvQ1NWKHtzZXJpZXM6ZS5jb25maWcuc2VyaWVzLGNvbHVtbkRlbGltaXRlcjplLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuY29sdW1uRGVsaW1pdGVyfSl9fX0se2tleTpcImhhbmRsZVpvb21SZXNldFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQudztpZihlLmdsb2JhbHMubGFzdFhBeGlzLm1pbj1lLmdsb2JhbHMuaW5pdGlhbENvbmZpZy54YXhpcy5taW4sZS5nbG9iYWxzLmxhc3RYQXhpcy5tYXg9ZS5nbG9iYWxzLmluaXRpYWxDb25maWcueGF4aXMubWF4LHQudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVSZXNldFpvb20pe3ZhciBpPWUuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVSZXNldFpvb20odCxlKTtpJiZ0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoaSl9XCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCYmdC5jdHgudG9vbGJhci56b29tQ2FsbGJhY2soe21pbjplLmNvbmZpZy54YXhpcy5taW4sbWF4OmUuY29uZmlnLnhheGlzLm1heH0pLGUuZ2xvYmFscy56b29tZWQ9ITE7dmFyIGE9dC5jdHguc2VyaWVzLmVtcHR5Q29sbGFwc2VkU2VyaWVzKHguY2xvbmUoZS5nbG9iYWxzLmluaXRpYWxTZXJpZXMpKTt0LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhhLGUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX0pKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVsWm9vbT1udWxsLHRoaXMuZWxab29tSW49bnVsbCx0aGlzLmVsWm9vbU91dD1udWxsLHRoaXMuZWxQYW49bnVsbCx0aGlzLmVsU2VsZWN0aW9uPW51bGwsdGhpcy5lbFpvb21SZXNldD1udWxsLHRoaXMuZWxNZW51SWNvbj1udWxsfX1dKSx0fSgpLGN0PWZ1bmN0aW9uKHQpe24oaSxodCk7dmFyIGU9ZChpKTtmdW5jdGlvbiBpKHQpe3ZhciBzO3JldHVybiBhKHRoaXMsaSksKHM9ZS5jYWxsKHRoaXMsdCkpLmN0eD10LHMudz10Lncscy5kcmFnZ2VkPSExLHMuZ3JhcGhpY3M9bmV3IG0ocy5jdHgpLHMuZXZlbnRMaXN0PVtcIm1vdXNlZG93blwiLFwibW91c2VsZWF2ZVwiLFwibW91c2Vtb3ZlXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcIm1vdXNldXBcIixcInRvdWNoZW5kXCJdLHMuY2xpZW50WD0wLHMuY2xpZW50WT0wLHMuc3RhcnRYPTAscy5lbmRYPTAscy5kcmFnWD0wLHMuc3RhcnRZPTAscy5lbmRZPTAscy5kcmFnWT0wLHMubW92ZURpcmVjdGlvbj1cIm5vbmVcIixzfXJldHVybiByKGksW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQueHlSYXRpb3MsYT10aGlzLncscz10aGlzO3RoaXMueHlSYXRpb3M9aSx0aGlzLnpvb21SZWN0PXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoMCwwLDAsMCksdGhpcy5zZWxlY3Rpb25SZWN0PXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoMCwwLDAsMCksdGhpcy5ncmlkUmVjdD1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZ3JpZFwiKSx0aGlzLnpvb21SZWN0Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtem9vbS1yZWN0XCIpLHRoaXMuc2VsZWN0aW9uUmVjdC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0XCIpLGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHRoaXMuem9vbVJlY3QpLGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHRoaXMuc2VsZWN0aW9uUmVjdCksXCJ4XCI9PT1hLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZT90aGlzLnNsRHJhZ2dhYmxlUmVjdD10aGlzLnNlbGVjdGlvblJlY3QuZHJhZ2dhYmxlKHttaW5YOjAsbWluWTowLG1heFg6YS5nbG9iYWxzLmdyaWRXaWR0aCxtYXhZOmEuZ2xvYmFscy5ncmlkSGVpZ2h0fSkub24oXCJkcmFnbW92ZVwiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwiZHJhZ2dpbmdcIikpOlwieVwiPT09YS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGU/dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSh7bWluWDowLG1heFg6YS5nbG9iYWxzLmdyaWRXaWR0aH0pLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKTp0aGlzLnNsRHJhZ2dhYmxlUmVjdD10aGlzLnNlbGVjdGlvblJlY3QuZHJhZ2dhYmxlKCkub24oXCJkcmFnbW92ZVwiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwiZHJhZ2dpbmdcIikpLHRoaXMucHJlc2VsZWN0ZWRTZWxlY3Rpb24oKSx0aGlzLmhvdmVyQXJlYT1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiXCIuY29uY2F0KGEuZ2xvYmFscy5jaGFydENsYXNzLFwiIC5hcGV4Y2hhcnRzLXN2Z1wiKSksdGhpcy5ob3ZlckFyZWEuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtem9vbWFibGVcIiksdGhpcy5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5ob3ZlckFyZWEuYWRkRXZlbnRMaXN0ZW5lcih0LHMuc3ZnTW91c2VFdmVudHMuYmluZChzLGkpLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNsRHJhZ2dhYmxlUmVjdCYmKHRoaXMuc2xEcmFnZ2FibGVSZWN0LmRyYWdnYWJsZSghMSksdGhpcy5zbERyYWdnYWJsZVJlY3Qub2ZmKCksdGhpcy5zZWxlY3Rpb25SZWN0Lm9mZigpKSx0aGlzLnNlbGVjdGlvblJlY3Q9bnVsbCx0aGlzLnpvb21SZWN0PW51bGwsdGhpcy5ncmlkUmVjdD1udWxsfX0se2tleTpcInN2Z01vdXNlRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLHM9dGhpcy5jdHgudG9vbGJhcixyPWkuZ2xvYmFscy56b29tRW5hYmxlZD9pLmNvbmZpZy5jaGFydC56b29tLnR5cGU6aS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGUsbz1pLmNvbmZpZy5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZDtpZihlLnNoaWZ0S2V5Pyh0aGlzLnNoaWZ0V2FzUHJlc3NlZD0hMCxzLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcihcInBhblwiPT09bz9cInpvb21cIjpcInBhblwiKSk6dGhpcy5zaGlmdFdhc1ByZXNzZWQmJihzLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcihvKSx0aGlzLnNoaWZ0V2FzUHJlc3NlZD0hMSksZS50YXJnZXQpe3ZhciBuLGw9ZS50YXJnZXQuY2xhc3NMaXN0O2lmKGUudGFyZ2V0LnBhcmVudE5vZGUmJm51bGwhPT1lLnRhcmdldC5wYXJlbnROb2RlJiYobj1lLnRhcmdldC5wYXJlbnROb2RlLmNsYXNzTGlzdCksIShsLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKXx8bC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKXx8bC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fG4mJm4uY29udGFpbnMoXCJhcGV4Y2hhcnRzLXRvb2xiYXJcIikpKXtpZihhLmNsaWVudFg9XCJ0b3VjaG1vdmVcIj09PWUudHlwZXx8XCJ0b3VjaHN0YXJ0XCI9PT1lLnR5cGU/ZS50b3VjaGVzWzBdLmNsaWVudFg6XCJ0b3VjaGVuZFwiPT09ZS50eXBlP2UuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WDplLmNsaWVudFgsYS5jbGllbnRZPVwidG91Y2htb3ZlXCI9PT1lLnR5cGV8fFwidG91Y2hzdGFydFwiPT09ZS50eXBlP2UudG91Y2hlc1swXS5jbGllbnRZOlwidG91Y2hlbmRcIj09PWUudHlwZT9lLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk6ZS5jbGllbnRZLFwibW91c2Vkb3duXCI9PT1lLnR5cGUmJjE9PT1lLndoaWNoKXt2YXIgaD1hLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Euc3RhcnRYPWEuY2xpZW50WC1oLmxlZnQsYS5zdGFydFk9YS5jbGllbnRZLWgudG9wLGEuZHJhZ2dlZD0hMSxhLncuZ2xvYmFscy5tb3VzZWRvd249ITB9aWYoKFwibW91c2Vtb3ZlXCI9PT1lLnR5cGUmJjE9PT1lLndoaWNofHxcInRvdWNobW92ZVwiPT09ZS50eXBlKSYmKGEuZHJhZ2dlZD0hMCxpLmdsb2JhbHMucGFuRW5hYmxlZD8oaS5nbG9iYWxzLnNlbGVjdGlvbj1udWxsLGEudy5nbG9iYWxzLm1vdXNlZG93biYmYS5wYW5EcmFnZ2luZyh7Y29udGV4dDphLHpvb210eXBlOnIseHlSYXRpb3M6dH0pKTooYS53Lmdsb2JhbHMubW91c2Vkb3duJiZpLmdsb2JhbHMuem9vbUVuYWJsZWR8fGEudy5nbG9iYWxzLm1vdXNlZG93biYmaS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQpJiYoYS5zZWxlY3Rpb249YS5zZWxlY3Rpb25EcmF3aW5nKHtjb250ZXh0OmEsem9vbXR5cGU6cn0pKSksXCJtb3VzZXVwXCI9PT1lLnR5cGV8fFwidG91Y2hlbmRcIj09PWUudHlwZXx8XCJtb3VzZWxlYXZlXCI9PT1lLnR5cGUpe3ZhciBjPWEuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YS53Lmdsb2JhbHMubW91c2Vkb3duJiYoYS5lbmRYPWEuY2xpZW50WC1jLmxlZnQsYS5lbmRZPWEuY2xpZW50WS1jLnRvcCxhLmRyYWdYPU1hdGguYWJzKGEuZW5kWC1hLnN0YXJ0WCksYS5kcmFnWT1NYXRoLmFicyhhLmVuZFktYS5zdGFydFkpLChpLmdsb2JhbHMuem9vbUVuYWJsZWR8fGkuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSYmYS5zZWxlY3Rpb25EcmF3bih7Y29udGV4dDphLHpvb210eXBlOnJ9KSxpLmdsb2JhbHMucGFuRW5hYmxlZCYmaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZhLmRlbGF5ZWRQYW5TY3JvbGxlZCgpKSxpLmdsb2JhbHMuem9vbUVuYWJsZWQmJmEuaGlkZVNlbGVjdGlvblJlY3QodGhpcy5zZWxlY3Rpb25SZWN0KSxhLmRyYWdnZWQ9ITEsYS53Lmdsb2JhbHMubW91c2Vkb3duPSExfXRoaXMubWFrZVNlbGVjdGlvblJlY3REcmFnZ2FibGUoKX19fX0se2tleTpcIm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodGhpcy5zZWxlY3Rpb25SZWN0KXt2YXIgZT10aGlzLnNlbGVjdGlvblJlY3Qubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlLndpZHRoPjAmJmUuaGVpZ2h0PjAmJnRoaXMuc2xEcmFnZ2FibGVSZWN0LnNlbGVjdGl6ZSh7cG9pbnRzOlwibCwgclwiLHBvaW50U2l6ZTo4LHBvaW50VHlwZTpcInJlY3RcIn0pLnJlc2l6ZSh7Y29uc3RyYWludDp7bWluWDowLG1pblk6MCxtYXhYOnQuZ2xvYmFscy5ncmlkV2lkdGgsbWF4WTp0Lmdsb2JhbHMuZ3JpZEhlaWdodH19KS5vbihcInJlc2l6aW5nXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJyZXNpemluZ1wiKSl9fX0se2tleTpcInByZXNlbGVjdGVkU2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnh5UmF0aW9zO2lmKCF0Lmdsb2JhbHMuem9vbUVuYWJsZWQpaWYodm9pZCAwIT09dC5nbG9iYWxzLnNlbGVjdGlvbiYmbnVsbCE9PXQuZ2xvYmFscy5zZWxlY3Rpb24pdGhpcy5kcmF3U2VsZWN0aW9uUmVjdCh0Lmdsb2JhbHMuc2VsZWN0aW9uKTtlbHNlIGlmKHZvaWQgMCE9PXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5taW4mJnZvaWQgMCE9PXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgpe3ZhciBpPSh0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluLXQuZ2xvYmFscy5taW5YKS9lLnhSYXRpbyxhPXt4OmkseTowLHdpZHRoOnQuZ2xvYmFscy5ncmlkV2lkdGgtKHQuZ2xvYmFscy5tYXhYLXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgpL2UueFJhdGlvLWksaGVpZ2h0OnQuZ2xvYmFscy5ncmlkSGVpZ2h0LHRyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAsc2VsZWN0aW9uRW5hYmxlZDohMH07dGhpcy5kcmF3U2VsZWN0aW9uUmVjdChhKSx0aGlzLm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlKCksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbiYmdC5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbih0aGlzLmN0eCx7eGF4aXM6e21pbjp0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluLG1heDp0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4fSx5YXhpczp7fX0pfX19LHtrZXk6XCJkcmF3U2VsZWN0aW9uUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQueSxhPXQud2lkdGgscz10LmhlaWdodCxyPXQudHJhbnNsYXRlWCxvPXZvaWQgMD09PXI/MDpyLG49dC50cmFuc2xhdGVZLGw9dm9pZCAwPT09bj8wOm4saD10aGlzLncsYz10aGlzLnpvb21SZWN0LGQ9dGhpcy5zZWxlY3Rpb25SZWN0O2lmKHRoaXMuZHJhZ2dlZHx8bnVsbCE9PWguZ2xvYmFscy5zZWxlY3Rpb24pe3ZhciBnPXt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrbytcIiwgXCIrbCtcIilcIn07aC5nbG9iYWxzLnpvb21FbmFibGVkJiZ0aGlzLmRyYWdnZWQmJihhPDAmJihhPTEpLGMuYXR0cih7eDplLHk6aSx3aWR0aDphLGhlaWdodDpzLGZpbGw6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLmZpbGwuY29sb3IsXCJmaWxsLW9wYWNpdHlcIjpoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuZmlsbC5vcGFjaXR5LHN0cm9rZTpoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS53aWR0aCxcInN0cm9rZS1vcGFjaXR5XCI6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS5vcGFjaXR5fSksbS5zZXRBdHRycyhjLm5vZGUsZykpLGguZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiYoZC5hdHRyKHt4OmUseTppLHdpZHRoOmE+MD9hOjAsaGVpZ2h0OnM+MD9zOjAsZmlsbDpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZmlsbC5jb2xvcixcImZpbGwtb3BhY2l0eVwiOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5maWxsLm9wYWNpdHksc3Ryb2tlOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2UuY29sb3IsXCJzdHJva2Utd2lkdGhcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLndpZHRoLFwic3Ryb2tlLWRhc2hhcnJheVwiOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2UuZGFzaEFycmF5LFwic3Ryb2tlLW9wYWNpdHlcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLm9wYWNpdHl9KSxtLnNldEF0dHJzKGQubm9kZSxnKSl9fX0se2tleTpcImhpZGVTZWxlY3Rpb25SZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dCYmdC5hdHRyKHt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9KX19LHtrZXk6XCJzZWxlY3Rpb25EcmF3aW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250ZXh0LGk9dC56b29tdHlwZSxhPXRoaXMudyxzPWUscj10aGlzLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89cy5zdGFydFgtMSxuPXMuc3RhcnRZLGw9ITEsaD0hMSxjPXMuY2xpZW50WC1yLmxlZnQtbyxkPXMuY2xpZW50WS1yLnRvcC1uLGc9e307cmV0dXJuIE1hdGguYWJzKGMrbyk+YS5nbG9iYWxzLmdyaWRXaWR0aD9jPWEuZ2xvYmFscy5ncmlkV2lkdGgtbzpzLmNsaWVudFgtci5sZWZ0PDAmJihjPW8pLG8+cy5jbGllbnRYLXIubGVmdCYmKGw9ITAsYz1NYXRoLmFicyhjKSksbj5zLmNsaWVudFktci50b3AmJihoPSEwLGQ9TWF0aC5hYnMoZCkpLGc9XCJ4XCI9PT1pP3t4Omw/by1jOm8seTowLHdpZHRoOmMsaGVpZ2h0OmEuZ2xvYmFscy5ncmlkSGVpZ2h0fTpcInlcIj09PWk/e3g6MCx5Omg/bi1kOm4sd2lkdGg6YS5nbG9iYWxzLmdyaWRXaWR0aCxoZWlnaHQ6ZH06e3g6bD9vLWM6byx5Omg/bi1kOm4sd2lkdGg6YyxoZWlnaHQ6ZH0scy5kcmF3U2VsZWN0aW9uUmVjdChnKSxzLnNlbGVjdGlvbkRyYWdnaW5nKFwicmVzaXppbmdcIiksZ319LHtrZXk6XCJzZWxlY3Rpb25EcmFnZ2luZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPXRoaXMudyxzPXRoaXMueHlSYXRpb3Mscj10aGlzLnNlbGVjdGlvblJlY3Qsbz0wO1wicmVzaXppbmdcIj09PXQmJihvPTMwKTt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdChyLm5vZGUuZ2V0QXR0cmlidXRlKHQpKX0sbD17eDpuKFwieFwiKSx5Om4oXCJ5XCIpLHdpZHRoOm4oXCJ3aWR0aFwiKSxoZWlnaHQ6bihcImhlaWdodFwiKX07YS5nbG9iYWxzLnNlbGVjdGlvbj1sLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24mJmEuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiYoY2xlYXJUaW1lb3V0KHRoaXMudy5nbG9iYWxzLnNlbGVjdGlvblJlc2l6ZVRpbWVyKSx0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25SZXNpemVUaW1lcj13aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXt2YXIgdD1pLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9ci5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89e3hheGlzOnttaW46YS5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbisoZS5sZWZ0LXQubGVmdCkqcy54UmF0aW8sbWF4OmEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rKGUucmlnaHQtdC5sZWZ0KSpzLnhSYXRpb30seWF4aXM6e21pbjphLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluKyh0LmJvdHRvbS1lLmJvdHRvbSkqcy55UmF0aW9bMF0sbWF4OmEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNYXgtKGUudG9wLXQudG9wKSpzLnlSYXRpb1swXX19O2EuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24oaS5jdHgsbyksYS5jb25maWcuY2hhcnQuYnJ1c2guZW5hYmxlZCYmdm9pZCAwIT09YS5jb25maWcuY2hhcnQuZXZlbnRzLmJydXNoU2Nyb2xsZWQmJmEuY29uZmlnLmNoYXJ0LmV2ZW50cy5icnVzaFNjcm9sbGVkKGkuY3R4LG8pfSksbykpfX0se2tleTpcInNlbGVjdGlvbkRyYXduXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250ZXh0LGk9dC56b29tdHlwZSxhPXRoaXMudyxzPWUscj10aGlzLnh5UmF0aW9zLG89dGhpcy5jdHgudG9vbGJhcjtpZihzLnN0YXJ0WD5zLmVuZFgpe3ZhciBuPXMuc3RhcnRYO3Muc3RhcnRYPXMuZW5kWCxzLmVuZFg9bn1pZihzLnN0YXJ0WT5zLmVuZFkpe3ZhciBsPXMuc3RhcnRZO3Muc3RhcnRZPXMuZW5kWSxzLmVuZFk9bH12YXIgaD12b2lkIDAsYz12b2lkIDA7YS5nbG9iYWxzLmlzUmFuZ2VCYXI/KGg9YS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbitzLnN0YXJ0WCpyLmludmVydGVkWVJhdGlvLGM9YS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbitzLmVuZFgqci5pbnZlcnRlZFlSYXRpbyk6KGg9YS5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbitzLnN0YXJ0WCpyLnhSYXRpbyxjPWEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rcy5lbmRYKnIueFJhdGlvKTt2YXIgZD1bXSxnPVtdO2lmKGEuY29uZmlnLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7ZC5wdXNoKGEuZ2xvYmFscy55QXhpc1NjYWxlW2VdLm5pY2VNYXgtci55UmF0aW9bZV0qcy5zdGFydFkpLGcucHVzaChhLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5uaWNlTWF4LXIueVJhdGlvW2VdKnMuZW5kWSl9KSkscy5kcmFnZ2VkJiYocy5kcmFnWD4xMHx8cy5kcmFnWT4xMCkmJmghPT1jKWlmKGEuZ2xvYmFscy56b29tRW5hYmxlZCl7dmFyIHU9eC5jbG9uZShhLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcykscD14LmNsb25lKGEuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnhheGlzKTtpZihhLmdsb2JhbHMuem9vbWVkPSEwLGEuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGg9TWF0aC5mbG9vcihoKSxjPU1hdGguZmxvb3IoYyksaDwxJiYoaD0xLGM9YS5nbG9iYWxzLmRhdGFQb2ludHMpLGMtaDwyJiYoYz1oKzEpKSxcInh5XCIhPT1pJiZcInhcIiE9PWl8fChwPXttaW46aCxtYXg6Y30pLFwieHlcIiE9PWkmJlwieVwiIT09aXx8dS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3VbZV0ubWluPWdbZV0sdVtlXS5tYXg9ZFtlXX0pKSxhLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzKXt2YXIgZj1uZXcgXyhzLmN0eCk7dT1mLmF1dG9TY2FsZVkocy5jdHgsdSx7eGF4aXM6cH0pfWlmKG8pe3ZhciBiPW8uZ2V0QmVmb3JlWm9vbVJhbmdlKHAsdSk7YiYmKHA9Yi54YXhpcz9iLnhheGlzOnAsdT1iLnlheGlzP2IueWF4aXM6dSl9dmFyIHY9e3hheGlzOnB9O2EuY29uZmlnLmNoYXJ0Lmdyb3VwfHwodi55YXhpcz11KSxzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHYsITEscy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCYmby56b29tQ2FsbGJhY2socCx1KX1lbHNlIGlmKGEuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKXt2YXIgbSx5PW51bGw7bT17bWluOmgsbWF4OmN9LFwieHlcIiE9PWkmJlwieVwiIT09aXx8KHk9eC5jbG9uZShhLmNvbmZpZy55YXhpcykpLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7eVtlXS5taW49Z1tlXSx5W2VdLm1heD1kW2VdfSkpLGEuZ2xvYmFscy5zZWxlY3Rpb249cy5zZWxlY3Rpb24sXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbiYmYS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbihzLmN0eCx7eGF4aXM6bSx5YXhpczp5fSl9fX0se2tleTpcInBhbkRyYWdnaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250ZXh0LGk9dGhpcy53LGE9ZTtpZih2b2lkIDAhPT1pLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLngpe3ZhciBzPWkuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueC1hLmNsaWVudFgscj1pLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLnktYS5jbGllbnRZO01hdGguYWJzKHMpPk1hdGguYWJzKHIpJiZzPjA/dGhpcy5tb3ZlRGlyZWN0aW9uPVwibGVmdFwiOk1hdGguYWJzKHMpPk1hdGguYWJzKHIpJiZzPDA/dGhpcy5tb3ZlRGlyZWN0aW9uPVwicmlnaHRcIjpNYXRoLmFicyhyKT5NYXRoLmFicyhzKSYmcj4wP3RoaXMubW92ZURpcmVjdGlvbj1cInVwXCI6TWF0aC5hYnMocik+TWF0aC5hYnMocykmJnI8MCYmKHRoaXMubW92ZURpcmVjdGlvbj1cImRvd25cIil9aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbj17eDphLmNsaWVudFgseTphLmNsaWVudFl9O3ZhciBvPWkuZ2xvYmFscy5pc1JhbmdlQmFyP2kuZ2xvYmFscy5taW5ZOmkuZ2xvYmFscy5taW5YLG49aS5nbG9iYWxzLmlzUmFuZ2VCYXI/aS5nbG9iYWxzLm1heFk6aS5nbG9iYWxzLm1heFg7aS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHxhLnBhblNjcm9sbGVkKG8sbil9fSx7a2V5OlwiZGVsYXllZFBhblNjcm9sbGVkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMubWluWCxpPXQuZ2xvYmFscy5tYXhYLGE9KHQuZ2xvYmFscy5tYXhYLXQuZ2xvYmFscy5taW5YKS8yO1wibGVmdFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uPyhlPXQuZ2xvYmFscy5taW5YK2EsaT10Lmdsb2JhbHMubWF4WCthKTpcInJpZ2h0XCI9PT10aGlzLm1vdmVEaXJlY3Rpb24mJihlPXQuZ2xvYmFscy5taW5YLWEsaT10Lmdsb2JhbHMubWF4WC1hKSxlPU1hdGguZmxvb3IoZSksaT1NYXRoLmZsb29yKGkpLHRoaXMudXBkYXRlU2Nyb2xsZWRDaGFydCh7eGF4aXM6e21pbjplLG1heDppfX0sZSxpKX19LHtrZXk6XCJwYW5TY3JvbGxlZFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy54eVJhdGlvcyxzPXguY2xvbmUoaS5nbG9iYWxzLmluaXRpYWxDb25maWcueWF4aXMpLHI9YS54UmF0aW8sbz1pLmdsb2JhbHMubWluWCxuPWkuZ2xvYmFscy5tYXhYO2kuZ2xvYmFscy5pc1JhbmdlQmFyJiYocj1hLmludmVydGVkWVJhdGlvLG89aS5nbG9iYWxzLm1pblksbj1pLmdsb2JhbHMubWF4WSksXCJsZWZ0XCI9PT10aGlzLm1vdmVEaXJlY3Rpb24/KHQ9bytpLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KnIsZT1uK2kuZ2xvYmFscy5ncmlkV2lkdGgvMTUqcik6XCJyaWdodFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uJiYodD1vLWkuZ2xvYmFscy5ncmlkV2lkdGgvMTUqcixlPW4taS5nbG9iYWxzLmdyaWRXaWR0aC8xNSpyKSxpLmdsb2JhbHMuaXNSYW5nZUJhcnx8KHQ8aS5nbG9iYWxzLmluaXRpYWxNaW5YfHxlPmkuZ2xvYmFscy5pbml0aWFsTWF4WCkmJih0PW8sZT1uKTt2YXIgbD17bWluOnQsbWF4OmV9O2kuY29uZmlnLmNoYXJ0Lnpvb20uYXV0b1NjYWxlWWF4aXMmJihzPW5ldyBfKHRoaXMuY3R4KS5hdXRvU2NhbGVZKHRoaXMuY3R4LHMse3hheGlzOmx9KSk7dmFyIGg9e3hheGlzOnttaW46dCxtYXg6ZX19O2kuY29uZmlnLmNoYXJ0Lmdyb3VwfHwoaC55YXhpcz1zKSx0aGlzLnVwZGF0ZVNjcm9sbGVkQ2hhcnQoaCx0LGUpfX0se2tleTpcInVwZGF0ZVNjcm9sbGVkQ2hhcnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O3RoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnModCwhMSwhMSksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkJiZhLmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQodGhpcy5jdHgse3hheGlzOnttaW46ZSxtYXg6aX19KX19XSksaX0oKSxkdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lLHRoaXMuY3R4PWUuY3R4fXJldHVybiByKHQsW3trZXk6XCJnZXROZWFyZXN0VmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5ob3ZlckFyZWEsaT10LmVsR3JpZCxhPXQuY2xpZW50WCxzPXQuY2xpZW50WSxyPXRoaXMudyxvPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1vLndpZHRoLGw9by5oZWlnaHQsaD1uLyhyLmdsb2JhbHMuZGF0YVBvaW50cy0xKSxjPWwvci5nbG9iYWxzLmRhdGFQb2ludHMsZD10aGlzLmhhc0JhcnMoKTshci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhZHx8ci5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHwoaD1uL3IuZ2xvYmFscy5kYXRhUG9pbnRzKTt2YXIgZz1hLW8ubGVmdC1yLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsdT1zLW8udG9wO2c8MHx8dTwwfHxnPm58fHU+bD8oZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctem9vbVwiKSxlLmNsYXNzTGlzdC5yZW1vdmUoXCJob3ZlcmluZy1wYW5cIikpOnIuZ2xvYmFscy56b29tRW5hYmxlZD8oZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctcGFuXCIpLGUuY2xhc3NMaXN0LmFkZChcImhvdmVyaW5nLXpvb21cIikpOnIuZ2xvYmFscy5wYW5FbmFibGVkJiYoZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctem9vbVwiKSxlLmNsYXNzTGlzdC5hZGQoXCJob3ZlcmluZy1wYW5cIikpO3ZhciBwPU1hdGgucm91bmQoZy9oKSxmPU1hdGguZmxvb3IodS9jKTtkJiYhci5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYocD1NYXRoLmNlaWwoZy9oKSxwLT0xKTt2YXIgYj1udWxsLHY9bnVsbCxtPXIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4geC5pc051bWJlcih0KX0pKX0pKSx5PXIuZ2xvYmFscy5zZXJpZXNZdmFsdWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4geC5pc051bWJlcih0KX0pKX0pKTtpZihyLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIHc9dGhpcy50dEN0eC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxrPWcqKHcud2lkdGgvbiksQT11Kih3LmhlaWdodC9sKTtiPSh2PXRoaXMuY2xvc2VzdEluTXVsdGlBcnJheShrLEEsbSx5KSkuaW5kZXgscD12LmosbnVsbCE9PWImJihtPXIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2JdLHA9KHY9dGhpcy5jbG9zZXN0SW5BcnJheShrLG0pKS5pbmRleCl9cmV0dXJuIHIuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PW51bGw9PT1iPy0xOmIsKCFwfHxwPDEpJiYocD0wKSxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP3IuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PWY6ci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9cCx7Y2FwdHVyZWRTZXJpZXM6YixqOnIuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/ZjpwLGhvdmVyWDpnLGhvdmVyWTp1fX19LHtrZXk6XCJjbG9zZXN0SW5NdWx0aUFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9MCxvPW51bGwsbj0tMTtzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xP3I9dGhpcy5nZXRGaXJzdEFjdGl2ZVhBcnJheShpKTpvPTA7dmFyIGw9aVtyXVswXSxoPU1hdGguYWJzKHQtbCk7aWYoaS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dmFyIGE9TWF0aC5hYnModC1lKTthPD1oJiYoaD1hLG49aSl9KSl9KSksLTEhPT1uKXt2YXIgYz1hW3JdW25dLGQ9TWF0aC5hYnMoZS1jKTtvPXIsYS5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3ZhciBhPU1hdGguYWJzKGUtdFtuXSk7YTw9ZCYmKGQ9YSxvPWkpfSkpfXJldHVybntpbmRleDpvLGo6bn19fSx7a2V5OlwiZ2V0Rmlyc3RBY3RpdmVYQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9MCxhPXQubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD4wP2U6LTF9KSkscz0wO3M8YS5sZW5ndGg7cysrKWlmKC0xIT09YVtzXSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHMpJiYtMT09PWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2Yocykpe2k9YVtzXTticmVha31yZXR1cm4gaX19LHtrZXk6XCJjbG9zZXN0SW5BcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPWVbMF0sYT1udWxsLHM9TWF0aC5hYnModC1pKSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvPU1hdGguYWJzKHQtZVtyXSk7bzxzJiYocz1vLGE9cil9cmV0dXJue2luZGV4OmF9fX0se2tleTpcImlzWG92ZXJsYXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1bXSxpPXRoaXMudy5nbG9iYWxzLnNlcmllc1guZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dFswXX0pKTtpZihpLmxlbmd0aD4wKWZvcih2YXIgYT0wO2E8aS5sZW5ndGgtMTthKyspdm9pZCAwIT09aVthXVt0XSYmdm9pZCAwIT09aVthKzFdW3RdJiZpW2FdW3RdIT09aVthKzFdW3RdJiZlLnB1c2goXCJ1bkVxdWFsXCIpO3JldHVybiAwPT09ZS5sZW5ndGh9fSx7a2V5OlwiaXNJbml0aWFsU2VyaWVzU2FtZUxlblwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSEwLGU9dGhpcy53Lmdsb2JhbHMuaW5pdGlhbFNlcmllcyxpPTA7aTxlLmxlbmd0aC0xO2krKylpZihlW2ldLmRhdGEubGVuZ3RoIT09ZVtpKzFdLmRhdGEubGVuZ3RoKXt0PSExO2JyZWFrfXJldHVybiB0fX0se2tleTpcImdldEJhcnNIZWlnaHRcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdSh0KS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5nZXRCQm94KCkuaGVpZ2h0fSksMCl9fSx7a2V5OlwiZ2V0RWxNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQ/dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwID4gKlwiKSk6dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCA+ICpcIil9fSx7a2V5OlwiZ2V0QWxsTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiKTsodD11KHQpKS5zb3J0KChmdW5jdGlvbih0LGUpe3ZhciBpPU51bWJlcih0LmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKSxhPU51bWJlcihlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKTtyZXR1cm4gYTxpPzE6YT5pPy0xOjB9KSk7dmFyIGU9W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5wdXNoKHQucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLW1hcmtlclwiKSl9KSksZX19LHtrZXk6XCJoYXNNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0RWxNYXJrZXJzKHQpLmxlbmd0aD4wfX0se2tleTpcImdldEVsQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMsICAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1zZXJpZXMsIC5hcGV4Y2hhcnRzLWJveFBsb3Qtc2VyaWVzLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXNcIil9fSx7a2V5OlwiaGFzQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RWxCYXJzKCkubGVuZ3RoPjB9fSx7a2V5OlwiZ2V0SG92ZXJNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplO3JldHVybiB2b2lkIDA9PT1pJiYoaT1lLmdsb2JhbHMubWFya2Vycy5zaXplW3RdK2UuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksaX19LHtrZXk6XCJ0b2dnbGVBbGxUb29sdGlwU2VyaWVzR3JvdXBzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy50dEN0eDswPT09aS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzLmxlbmd0aCYmKGkuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXBcIikpO2Zvcih2YXIgYT1pLmFsbFRvb2x0aXBTZXJpZXNHcm91cHMscz0wO3M8YS5sZW5ndGg7cysrKVwiZW5hYmxlXCI9PT10PyhhW3NdLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxhW3NdLnN0eWxlLmRpc3BsYXk9ZS5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KTooYVtzXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksYVtzXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKX19XSksdH0oKSxndD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5jdHg9ZS5jdHgsdGhpcy50dEN0eD1lLHRoaXMudG9vbHRpcFV0aWw9bmV3IGR0KGUpfXJldHVybiByKHQsW3trZXk6XCJkcmF3U2VyaWVzVGV4dHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNoYXJlZCxpPXZvaWQgMD09PWV8fGUsYT10LnR0SXRlbXMscz10Lmkscj12b2lkIDA9PT1zPzA6cyxvPXQuaixuPXZvaWQgMD09PW8/bnVsbDpvLGw9dC55MSxoPXQueTIsYz10LmUsZD10aGlzLnc7dm9pZCAwIT09ZC5jb25maWcudG9vbHRpcC5jdXN0b20/dGhpcy5oYW5kbGVDdXN0b21Ub29sdGlwKHtpOnIsajpuLHkxOmwseTI6aCx3OmR9KTp0aGlzLnRvZ2dsZUFjdGl2ZUluYWN0aXZlU2VyaWVzKGkpO3ZhciBnPXRoaXMuZ2V0VmFsdWVzVG9QcmludCh7aTpyLGo6bn0pO3RoaXMucHJpbnRMYWJlbHMoe2k6cixqOm4sdmFsdWVzOmcsdHRJdGVtczphLHNoYXJlZDppLGU6Y30pO3ZhciB1PXRoaXMudHRDdHguZ2V0RWxUb29sdGlwKCk7dGhpcy50dEN0eC50b29sdGlwUmVjdC50dFdpZHRoPXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsdGhpcy50dEN0eC50b29sdGlwUmVjdC50dEhlaWdodD11LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH19LHtrZXk6XCJwcmludExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpLGE9dGhpcyxzPXQuaSxyPXQuaixvPXQudmFsdWVzLG49dC50dEl0ZW1zLGw9dC5zaGFyZWQsaD10LmUsYz10aGlzLncsZD1bXSxnPWZ1bmN0aW9uKHQpe3JldHVybiBjLmdsb2JhbHMuc2VyaWVzR29hbHNbdF0mJmMuZ2xvYmFscy5zZXJpZXNHb2Fsc1t0XVtyXSYmQXJyYXkuaXNBcnJheShjLmdsb2JhbHMuc2VyaWVzR29hbHNbdF1bcl0pfSx1PW8ueFZhbCxwPW8uelZhbCxmPW8ueEF4aXNUVFZhbCx4PVwiXCIsYj1jLmdsb2JhbHMuY29sb3JzW3NdO251bGwhPT1yJiZjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJihiPWMuZ2xvYmFscy5jb2xvcnNbcl0pO2Zvcih2YXIgdj1mdW5jdGlvbih0LG8pe3ZhciB2PWEuZ2V0Rm9ybWF0dGVycyhzKTt4PWEuZ2V0U2VyaWVzTmFtZSh7Zm46di55TGJUaXRsZUZvcm1hdHRlcixpbmRleDpzLHNlcmllc0luZGV4OnMsajpyfSksXCJ0cmVlbWFwXCI9PT1jLmNvbmZpZy5jaGFydC50eXBlJiYoeD12LnlMYlRpdGxlRm9ybWF0dGVyKFN0cmluZyhjLmNvbmZpZy5zZXJpZXNbc10uZGF0YVtyXS54KSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6Y30pKTt2YXIgbT1jLmNvbmZpZy50b29sdGlwLmludmVyc2VPcmRlcj9vOnQ7aWYoYy5nbG9iYWxzLmF4aXNDaGFydHMpe3ZhciB5PWZ1bmN0aW9uKHQpe3ZhciBlLGksYSxzO3JldHVybiBjLmdsb2JhbHMuaXNSYW5nZURhdGE/di55TGJGb3JtYXR0ZXIobnVsbD09PShlPWMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0KXx8dm9pZCAwPT09ZXx8bnVsbD09PShpPWVbdF0pfHx2b2lkIDA9PT1pP3ZvaWQgMDppW3JdLHtzZXJpZXM6Yy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnQsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpyLHc6Y30pK1wiIC0gXCIrdi55TGJGb3JtYXR0ZXIobnVsbD09PShhPWMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZCl8fHZvaWQgMD09PWF8fG51bGw9PT0ocz1hW3RdKXx8dm9pZCAwPT09cz92b2lkIDA6c1tyXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZCxzZXJpZXNJbmRleDp0LGRhdGFQb2ludEluZGV4OnIsdzpjfSk6di55TGJGb3JtYXR0ZXIoYy5nbG9iYWxzLnNlcmllc1t0XVtyXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpyLHc6Y30pfTtpZihsKXY9YS5nZXRGb3JtYXR0ZXJzKG0pLHg9YS5nZXRTZXJpZXNOYW1lKHtmbjp2LnlMYlRpdGxlRm9ybWF0dGVyLGluZGV4Om0sc2VyaWVzSW5kZXg6cyxqOnJ9KSxiPWMuZ2xvYmFscy5jb2xvcnNbbV0saT15KG0pLGcobSkmJihkPWMuZ2xvYmFscy5zZXJpZXNHb2Fsc1ttXVtyXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnthdHRyczp0LHZhbDp2LnlMYkZvcm1hdHRlcih0LnZhbHVlLHtzZXJpZXNJbmRleDptLGRhdGFQb2ludEluZGV4OnIsdzpjfSl9fSkpKTtlbHNle3ZhciB3LGs9bnVsbD09aHx8bnVsbD09PSh3PWgudGFyZ2V0KXx8dm9pZCAwPT09dz92b2lkIDA6dy5nZXRBdHRyaWJ1dGUoXCJmaWxsXCIpO2smJihiPS0xIT09ay5pbmRleE9mKFwidXJsXCIpP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioay5zdWJzdHIoNCkuc2xpY2UoMCwtMSkpLmNoaWxkTm9kZXNbMF0uZ2V0QXR0cmlidXRlKFwic3Ryb2tlXCIpOmspLGk9eShzKSxnKHMpJiZBcnJheS5pc0FycmF5KGMuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXSkmJihkPWMuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnthdHRyczp0LHZhbDp2LnlMYkZvcm1hdHRlcih0LnZhbHVlLHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzpjfSl9fSkpKX19bnVsbD09PXImJihpPXYueUxiRm9ybWF0dGVyKGMuZ2xvYmFscy5zZXJpZXNbc10sZShlKHt9LGMpLHt9LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnN9KSkpLGEuRE9NSGFuZGxpbmcoe2k6cyx0Om0sajpyLHR0SXRlbXM6bix2YWx1ZXM6e3ZhbDppLGdvYWxWYWxzOmQseFZhbDp1LHhBeGlzVFRWYWw6Zix6VmFsOnB9LHNlcmllc05hbWU6eCxzaGFyZWQ6bCxwQ29sb3I6Yn0pfSxtPTAseT1jLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xO208Yy5nbG9iYWxzLnNlcmllcy5sZW5ndGg7bSsrLHktLSl2KG0seSl9fSx7a2V5OlwiZ2V0Rm9ybWF0dGVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy53LGE9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF07cmV0dXJuIHZvaWQgMCE9PWkuZ2xvYmFscy50dFZhbD9BcnJheS5pc0FycmF5KGkuZ2xvYmFscy50dFZhbCk/KGE9aS5nbG9iYWxzLnR0VmFsW3RdJiZpLmdsb2JhbHMudHRWYWxbdF0uZm9ybWF0dGVyLGU9aS5nbG9iYWxzLnR0VmFsW3RdJiZpLmdsb2JhbHMudHRWYWxbdF0udGl0bGUmJmkuZ2xvYmFscy50dFZhbFt0XS50aXRsZS5mb3JtYXR0ZXIpOihhPWkuZ2xvYmFscy50dFZhbC5mb3JtYXR0ZXIsXCJmdW5jdGlvblwiPT10eXBlb2YgaS5nbG9iYWxzLnR0VmFsLnRpdGxlLmZvcm1hdHRlciYmKGU9aS5nbG9iYWxzLnR0VmFsLnRpdGxlLmZvcm1hdHRlcikpOmU9aS5jb25maWcudG9vbHRpcC55LnRpdGxlLmZvcm1hdHRlcixcImZ1bmN0aW9uXCIhPXR5cGVvZiBhJiYoYT1pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXT9pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXTpmdW5jdGlvbih0KXtyZXR1cm4gdH0pLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJihlPWZ1bmN0aW9uKHQpe3JldHVybiB0fSkse3lMYkZvcm1hdHRlcjphLHlMYlRpdGxlRm9ybWF0dGVyOmV9fX0se2tleTpcImdldFNlcmllc05hbWVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZuLGk9dC5pbmRleCxhPXQuc2VyaWVzSW5kZXgscz10Lmoscj10aGlzLnc7cmV0dXJuIGUoU3RyaW5nKHIuZ2xvYmFscy5zZXJpZXNOYW1lc1tpXSkse3NlcmllczpyLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6cyx3OnJ9KX19LHtrZXk6XCJET01IYW5kbGluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuaTt2YXIgZT10LnQsaT10LmosYT10LnR0SXRlbXMscz10LnZhbHVlcyxyPXQuc2VyaWVzTmFtZSxvPXQuc2hhcmVkLG49dC5wQ29sb3IsbD10aGlzLncsaD10aGlzLnR0Q3R4LGM9cy52YWwsZD1zLmdvYWxWYWxzLGc9cy54VmFsLHU9cy54QXhpc1RUVmFsLHA9cy56VmFsLGY9bnVsbDtmPWFbZV0uY2hpbGRyZW4sbC5jb25maWcudG9vbHRpcC5maWxsU2VyaWVzQ29sb3ImJihhW2VdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uLGZbMF0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIiksaC5zaG93VG9vbHRpcFRpdGxlJiYobnVsbD09PWgudG9vbHRpcFRpdGxlJiYoaC50b29sdGlwVGl0bGU9bC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGVcIikpLGgudG9vbHRpcFRpdGxlLmlubmVySFRNTD1nKSxoLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmKGgueGF4aXNUb29sdGlwVGV4dC5pbm5lckhUTUw9XCJcIiE9PXU/dTpnKTt2YXIgeD1hW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS1sYWJlbFwiKTt4JiYoeC5pbm5lckhUTUw9cnx8XCJcIik7dmFyIGI9YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktdmFsdWVcIik7YiYmKGIuaW5uZXJIVE1MPXZvaWQgMCE9PWM/YzpcIlwiKSxmWzBdJiZmWzBdLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXJcIikmJihsLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzJiZBcnJheS5pc0FycmF5KGwuY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnMpJiYobj1sLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzW2VdKSxmWzBdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uKSxsLmNvbmZpZy50b29sdGlwLm1hcmtlci5zaG93fHwoZlswXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKTt2YXIgdj1hW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWxcIiksbT1hW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWVcIik7aWYoZC5sZW5ndGgmJmwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tlXSl7dmFyIHk9ZnVuY3Rpb24oKXt2YXIgdD1cIjxkaXYgPlwiLGU9XCI8ZGl2PlwiO2QuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXt0Kz0nIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCI+PHNwYW4gY2xhc3M9XCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAnLmNvbmNhdChpLmF0dHJzLnN0cm9rZUNvbG9yLCc7IGhlaWdodDogM3B4OyBib3JkZXItcmFkaXVzOiAwOyB0b3A6IDVweDtcIj48L3NwYW4+ICcpLmNvbmNhdChpLmF0dHJzLm5hbWUsXCI8L2Rpdj5cIiksZSs9XCI8ZGl2PlwiLmNvbmNhdChpLnZhbCxcIjwvZGl2PlwiKX0pKSx2LmlubmVySFRNTD10K1wiPC9kaXY+XCIsbS5pbm5lckhUTUw9ZStcIjwvZGl2PlwifTtvP2wuZ2xvYmFscy5zZXJpZXNHb2Fsc1tlXVtpXSYmQXJyYXkuaXNBcnJheShsLmdsb2JhbHMuc2VyaWVzR29hbHNbZV1baV0pP3koKToodi5pbm5lckhUTUw9XCJcIixtLmlubmVySFRNTD1cIlwiKTp5KCl9ZWxzZSB2LmlubmVySFRNTD1cIlwiLG0uaW5uZXJIVE1MPVwiXCI7bnVsbCE9PXAmJihhW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei1sYWJlbFwiKS5pbm5lckhUTUw9bC5jb25maWcudG9vbHRpcC56LnRpdGxlLGFbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlXCIpLmlubmVySFRNTD12b2lkIDAhPT1wP3A6XCJcIik7byYmZlswXSYmKG51bGw9PWN8fGwuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSk+LTF8fGwuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSk+LTE/ZlswXS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9XCJub25lXCI6ZlswXS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9bC5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KX19LHtrZXk6XCJ0b2dnbGVBY3RpdmVJbmFjdGl2ZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZih0KXRoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcyhcImVuYWJsZVwiKTtlbHNle3RoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcyhcImRpc2FibGVcIik7dmFyIGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpO2kmJihpLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxpLnN0eWxlLmRpc3BsYXk9ZS5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KX19fSx7a2V5OlwiZ2V0VmFsdWVzVG9QcmludFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXRoaXMudyxzPXRoaXMuY3R4LnNlcmllcy5maWx0ZXJlZFNlcmllc1goKSxyPVwiXCIsbz1cIlwiLG49bnVsbCxsPW51bGwsaD17c2VyaWVzOmEuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHc6YX0sYz1hLmdsb2JhbHMudHRaRm9ybWF0dGVyO251bGw9PT1pP2w9YS5nbG9iYWxzLnNlcmllc1tlXTphLmdsb2JhbHMuaXNYTnVtZXJpYyYmXCJ0cmVlbWFwXCIhPT1hLmNvbmZpZy5jaGFydC50eXBlPyhyPXNbZV1baV0sMD09PXNbZV0ubGVuZ3RoJiYocj1zW3RoaXMudG9vbHRpcFV0aWwuZ2V0Rmlyc3RBY3RpdmVYQXJyYXkocyldW2ldKSk6cj12b2lkIDAhPT1hLmdsb2JhbHMubGFiZWxzW2ldP2EuZ2xvYmFscy5sYWJlbHNbaV06XCJcIjt2YXIgZD1yO2EuZ2xvYmFscy5pc1hOdW1lcmljJiZcImRhdGV0aW1lXCI9PT1hLmNvbmZpZy54YXhpcy50eXBlP3I9bmV3IE0odGhpcy5jdHgpLnhMYWJlbEZvcm1hdChhLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIsZCxkLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuY3R4KS5mb3JtYXREYXRlLHc6dGhpcy53fSk6cj1hLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2EuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdKGQsaCk6YS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcihkLGgpO3JldHVybiB2b2lkIDAhPT1hLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyJiYocj1hLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIoZCxoKSksYS5nbG9iYWxzLnNlcmllc1oubGVuZ3RoPjAmJmEuZ2xvYmFscy5zZXJpZXNaW2VdLmxlbmd0aD4wJiYobj1jKGEuZ2xvYmFscy5zZXJpZXNaW2VdW2ldLGEpKSxvPVwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyP2EuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXIoZCxoKTpyLHt2YWw6QXJyYXkuaXNBcnJheShsKT9sLmpvaW4oXCIgXCIpOmwseFZhbDpBcnJheS5pc0FycmF5KHIpP3Iuam9pbihcIiBcIik6cix4QXhpc1RUVmFsOkFycmF5LmlzQXJyYXkobyk/by5qb2luKFwiIFwiKTpvLHpWYWw6bn19fSx7a2V5OlwiaGFuZGxlQ3VzdG9tVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXQueTEscz10LnkyLHI9dC53LG89dGhpcy50dEN0eC5nZXRFbFRvb2x0aXAoKSxuPXIuY29uZmlnLnRvb2x0aXAuY3VzdG9tO0FycmF5LmlzQXJyYXkobikmJm5bZV0mJihuPW5bZV0pLG8uaW5uZXJIVE1MPW4oe2N0eDp0aGlzLmN0eCxzZXJpZXM6ci5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OmkseTE6YSx5MjpzLHc6cn0pfX1dKSx0fSgpLHV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy50dEN0eD1lLHRoaXMuY3R4PWUuY3R4LHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcIm1vdmVYQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGk9dGhpcy50dEN0eCxhPXRoaXMudyxzPWkuZ2V0RWxYQ3Jvc3NoYWlycygpLHI9dC1pLnhjcm9zc2hhaXJzV2lkdGgvMixvPWEuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKS5sZW5ndGg7aWYobnVsbCE9PWUmJihyPWEuZ2xvYmFscy5ncmlkV2lkdGgvbyplKSxudWxsPT09c3x8YS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8KHMuc2V0QXR0cmlidXRlKFwieFwiLHIpLHMuc2V0QXR0cmlidXRlKFwieDFcIixyKSxzLnNldEF0dHJpYnV0ZShcIngyXCIscikscy5zZXRBdHRyaWJ1dGUoXCJ5MlwiLGEuZ2xvYmFscy5ncmlkSGVpZ2h0KSxzLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSkscjwwJiYocj0wKSxyPmEuZ2xvYmFscy5ncmlkV2lkdGgmJihyPWEuZ2xvYmFscy5ncmlkV2lkdGgpLGkuaXNYQXhpc1Rvb2x0aXBFbmFibGVkKXt2YXIgbj1yO1widGlja1dpZHRoXCIhPT1hLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiZcImJhcldpZHRoXCIhPT1hLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRofHwobj1yK2kueGNyb3NzaGFpcnNXaWR0aC8yKSx0aGlzLm1vdmVYQXhpc1Rvb2x0aXAobil9fX0se2tleTpcIm1vdmVZQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudHRDdHg7bnVsbCE9PWUueWNyb3NzaGFpcnMmJm0uc2V0QXR0cnMoZS55Y3Jvc3NoYWlycyx7eTE6dCx5Mjp0fSksbnVsbCE9PWUueWNyb3NzaGFpcnNIaWRkZW4mJm0uc2V0QXR0cnMoZS55Y3Jvc3NoYWlyc0hpZGRlbix7eTE6dCx5Mjp0fSl9fSx7a2V5OlwibW92ZVhBeGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMudHRDdHg7aWYobnVsbCE9PWkueGF4aXNUb29sdGlwJiYwIT09aS54Y3Jvc3NoYWlyc1dpZHRoKXtpLnhheGlzVG9vbHRpcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIik7dmFyIGE9aS54YXhpc09mZlkrZS5jb25maWcueGF4aXMudG9vbHRpcC5vZmZzZXRZK2UuZ2xvYmFscy50cmFuc2xhdGVZKzErZS5jb25maWcueGF4aXMub2Zmc2V0WTtpZih0LT1pLnhheGlzVG9vbHRpcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aC8yLCFpc05hTih0KSl7dCs9ZS5nbG9iYWxzLnRyYW5zbGF0ZVg7dmFyIHM7cz1uZXcgbSh0aGlzLmN0eCkuZ2V0VGV4dFJlY3RzKGkueGF4aXNUb29sdGlwVGV4dC5pbm5lckhUTUwpLGkueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5taW5XaWR0aD1zLndpZHRoK1wicHhcIixpLnhheGlzVG9vbHRpcC5zdHlsZS5sZWZ0PXQrXCJweFwiLGkueGF4aXNUb29sdGlwLnN0eWxlLnRvcD1hK1wicHhcIn19fX0se2tleTpcIm1vdmVZQXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLnR0Q3R4O251bGw9PT1pLnlheGlzVFRFbHMmJihpLnlheGlzVFRFbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcFwiKSk7dmFyIGE9cGFyc2VJbnQoaS55Y3Jvc3NoYWlyc0hpZGRlbi5nZXRBdHRyaWJ1dGUoXCJ5MVwiKSwxMCkscz1lLmdsb2JhbHMudHJhbnNsYXRlWSthLHI9aS55YXhpc1RURWxzW3RdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxvPWUuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbdF0tMjtlLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKG8tPTI2KSxzLT1yLzIsLTE9PT1lLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YodCk/KGkueWF4aXNUVEVsc1t0XS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksaS55YXhpc1RURWxzW3RdLnN0eWxlLnRvcD1zK1wicHhcIixpLnlheGlzVFRFbHNbdF0uc3R5bGUubGVmdD1vK2UuY29uZmlnLnlheGlzW3RdLnRvb2x0aXAub2Zmc2V0WCtcInB4XCIpOmkueWF4aXNUVEVsc1t0XS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIil9fSx7a2V5OlwibW92ZVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGE9dGhpcy53LHM9dGhpcy50dEN0eCxyPXMuZ2V0RWxUb29sdGlwKCksbz1zLnRvb2x0aXBSZWN0LG49bnVsbCE9PWk/cGFyc2VGbG9hdChpKToxLGw9cGFyc2VGbG9hdCh0KStuKzUsaD1wYXJzZUZsb2F0KGUpK24vMjtpZihsPmEuZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGw9bC1vLnR0V2lkdGgtbi0xMCksbD5hLmdsb2JhbHMuZ3JpZFdpZHRoLW8udHRXaWR0aC0xMCYmKGw9YS5nbG9iYWxzLmdyaWRXaWR0aC1vLnR0V2lkdGgpLGw8LTIwJiYobD0tMjApLGEuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgYz1zLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyhsPXMuZS5jbGllbnRYLWMubGVmdCk+YS5nbG9iYWxzLmdyaWRXaWR0aC8yJiYobC09cy50b29sdGlwUmVjdC50dFdpZHRoKSwoaD1zLmUuY2xpZW50WSthLmdsb2JhbHMudHJhbnNsYXRlWS1jLnRvcCk+YS5nbG9iYWxzLmdyaWRIZWlnaHQvMiYmKGgtPXMudG9vbHRpcFJlY3QudHRIZWlnaHQpfWVsc2UgYS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8by50dEhlaWdodC8yK2g+YS5nbG9iYWxzLmdyaWRIZWlnaHQmJihoPWEuZ2xvYmFscy5ncmlkSGVpZ2h0LW8udHRIZWlnaHQrYS5nbG9iYWxzLnRyYW5zbGF0ZVkpO2lzTmFOKGwpfHwobCs9YS5nbG9iYWxzLnRyYW5zbGF0ZVgsci5zdHlsZS5sZWZ0PWwrXCJweFwiLHIuc3R5bGUudG9wPWgrXCJweFwiKX19LHtrZXk6XCJtb3ZlTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy50dEN0eDtpZihpLmdsb2JhbHMubWFya2Vycy5zaXplW3RdPjApZm9yKHZhciBzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy1tYXJrZXJcIikpLHI9MDtyPHMubGVuZ3RoO3IrKylwYXJzZUludChzW3JdLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCk9PT1lJiYoYS5tYXJrZXIucmVzZXRQb2ludHNTaXplKCksYS5tYXJrZXIuZW5sYXJnZUN1cnJlbnRQb2ludChlLHNbcl0pKTtlbHNlIGEubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLHRoaXMubW92ZUR5bmFtaWNQb2ludE9uSG92ZXIoZSx0KX19LHtrZXk6XCJtb3ZlRHluYW1pY1BvaW50T25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGksYSxzPXRoaXMudyxyPXRoaXMudHRDdHgsbz1zLmdsb2JhbHMucG9pbnRzQXJyYXksbj1yLnRvb2x0aXBVdGlsLmdldEhvdmVyTWFya2VyU2l6ZShlKSxsPXMuY29uZmlnLnNlcmllc1tlXS50eXBlO2lmKCFsfHxcImNvbHVtblwiIT09bCYmXCJjYW5kbGVzdGlja1wiIT09bCYmXCJib3hQbG90XCIhPT1sKXtpPW9bZV1bdF1bMF0sYT1vW2VdW3RdWzFdP29bZV1bdF1bMV06MDt2YXIgaD1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KGUsXCInXSAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyBjaXJjbGVcIikpO2gmJmE8cy5nbG9iYWxzLmdyaWRIZWlnaHQmJmE+MCYmKGguc2V0QXR0cmlidXRlKFwiclwiLG4pLGguc2V0QXR0cmlidXRlKFwiY3hcIixpKSxoLnNldEF0dHJpYnV0ZShcImN5XCIsYSkpLHRoaXMubW92ZVhDcm9zc2hhaXJzKGkpLHIuZml4ZWRUb29sdGlwfHx0aGlzLm1vdmVUb29sdGlwKGksYSxuKX19fSx7a2V5OlwibW92ZUR5bmFtaWNQb2ludHNPbkhvdmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLnR0Q3R4LGE9aS53LHM9MCxyPTAsbz1hLmdsb2JhbHMucG9pbnRzQXJyYXk7ZT1uZXcgTih0aGlzLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJhc2NcIixbXCJsaW5lXCIsXCJhcmVhXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIl0pO3ZhciBuPWkudG9vbHRpcFV0aWwuZ2V0SG92ZXJNYXJrZXJTaXplKGUpO29bZV0mJihzPW9bZV1bdF1bMF0scj1vW2VdW3RdWzFdKTt2YXIgbD1pLnRvb2x0aXBVdGlsLmdldEFsbE1hcmtlcnMoKTtpZihudWxsIT09bClmb3IodmFyIGg9MDtoPGEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2grKyl7dmFyIGM9b1toXTtpZihhLmdsb2JhbHMuY29tYm9DaGFydHMmJnZvaWQgMD09PWMmJmwuc3BsaWNlKGgsMCxudWxsKSxjJiZjLmxlbmd0aCl7dmFyIGQ9b1toXVt0XVsxXSxnPXZvaWQgMDtpZihsW2hdLnNldEF0dHJpYnV0ZShcImN4XCIscyksXCJyYW5nZUFyZWFcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUmJiFhLmdsb2JhbHMuY29tYm9DaGFydHMpe3ZhciB1PXQrYS5nbG9iYWxzLnNlcmllc1toXS5sZW5ndGg7Zz1vW2hdW3VdWzFdLGQtPU1hdGguYWJzKGQtZykvMn1udWxsIT09ZCYmIWlzTmFOKGQpJiZkPGEuZ2xvYmFscy5ncmlkSGVpZ2h0K24mJmQrbj4wPyhsW2hdJiZsW2hdLnNldEF0dHJpYnV0ZShcInJcIixuKSxsW2hdJiZsW2hdLnNldEF0dHJpYnV0ZShcImN5XCIsZCkpOmxbaF0mJmxbaF0uc2V0QXR0cmlidXRlKFwiclwiLDApfX10aGlzLm1vdmVYQ3Jvc3NoYWlycyhzKSxpLmZpeGVkVG9vbHRpcHx8dGhpcy5tb3ZlVG9vbHRpcChzLHJ8fGEuZ2xvYmFscy5ncmlkSGVpZ2h0LG4pfX0se2tleTpcIm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMudHRDdHgscz1pLmdsb2JhbHMuY29sdW1uU2VyaWVzP2kuZ2xvYmFscy5jb2x1bW5TZXJpZXMubGVuZ3RoOmkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLHI9cz49MiYmcyUyPT0wP01hdGguZmxvb3Iocy8yKTpNYXRoLmZsb29yKHMvMikrMTtpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYocj1uZXcgTih0aGlzLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJkZXNjXCIpKzEpO3ZhciBvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChyLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSwgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiKS5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIC5hcGV4Y2hhcnRzLWJveFBsb3Qtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiKS5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddXCIpKTtvfHxcIm51bWJlclwiIT10eXBlb2YgZXx8KG89aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLFxcbiAgICAgICAgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoZSxcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sXFxuICAgICAgICAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLFxcbiAgICAgICAgLmFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoZSxcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ11cIikpKTt2YXIgbj1vP3BhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoXCJjeFwiKSk6MCxsPW8/cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcImN5XCIpKTowLGg9bz9wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpOjAsYz1hLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGQ9byYmKG8uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhXCIpfHxvLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtYm94UGxvdC1hcmVhXCIpKTtpLmdsb2JhbHMuaXNYTnVtZXJpYz8obyYmIWQmJihuLT1zJTIhPTA/aC8yOjApLG8mJmQmJmkuZ2xvYmFscy5jb21ib0NoYXJ0cyYmKG4tPWgvMikpOmkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fChuPWEueEF4aXNUaWNrc1Bvc2l0aW9uc1t0LTFdK2EuZGF0YVBvaW50c0RpdmlkZWRXaWR0aC8yLGlzTmFOKG4pJiYobj1hLnhBeGlzVGlja3NQb3NpdGlvbnNbdF0tYS5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoLzIpKSxpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2wtPWEudG9vbHRpcFJlY3QudHRIZWlnaHQ6aS5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3I/bD1hLmUuY2xpZW50WS1jLnRvcC1hLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzI6bCthLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KzE1PmkuZ2xvYmFscy5ncmlkSGVpZ2h0JiYobD1pLmdsb2JhbHMuZ3JpZEhlaWdodCksaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8dGhpcy5tb3ZlWENyb3NzaGFpcnMobiksYS5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAobixsfHxpLmdsb2JhbHMuZ3JpZEhlaWdodCl9fV0pLHR9KCkscHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eCx0aGlzLnRvb2x0aXBQb3NpdGlvbj1uZXcgdXQoZSl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdEeW5hbWljUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT1uZXcgSCh0aGlzLmN0eCksYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzXCIpO2E9dShhKSx0LmNvbmZpZy5jaGFydC5zdGFja2VkJiZhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSktcGFyc2VGbG9hdChlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKX0pKTtmb3IodmFyIHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIHI9YVtzXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiKTtpZihudWxsIT09cil7dmFyIG89dm9pZCAwLG49XCJhcGV4Y2hhcnRzLW1hcmtlciB3XCIuY29uY2F0KChNYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNCkpO1wibGluZVwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmXCJhcmVhXCIhPT10LmNvbmZpZy5jaGFydC50eXBlfHx0Lmdsb2JhbHMuY29tYm9DaGFydHN8fHQuY29uZmlnLnRvb2x0aXAuaW50ZXJzZWN0fHwobis9XCIgbm8tcG9pbnRlci1ldmVudHNcIik7dmFyIGw9aS5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOm4sc2VyaWVzSW5kZXg6TnVtYmVyKHIuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpfSk7KG89ZS5kcmF3TWFya2VyKDAsMCxsKSkubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsMCk7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuZ2xvYmFscy5TVkdOUyxcImdcIik7aC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vyc1wiKSxoLmFwcGVuZENoaWxkKG8ubm9kZSksci5hcHBlbmRDaGlsZChoKX19fX0se2tleTpcImVubGFyZ2VDdXJyZW50UG9pbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGwscz10aGlzLnc7XCJidWJibGVcIiE9PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnRoaXMubmV3UG9pbnRTaXplKHQsZSk7dmFyIHI9ZS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSxvPWUuZ2V0QXR0cmlidXRlKFwiY3lcIik7aWYobnVsbCE9PWkmJm51bGwhPT1hJiYocj1pLG89YSksdGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKHIpLCF0aGlzLmZpeGVkVG9vbHRpcCl7aWYoXCJyYWRhclwiPT09cy5jb25maWcuY2hhcnQudHlwZSl7dmFyIG49dGhpcy50dEN0eC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyPXRoaXMudHRDdHguZS5jbGllbnRYLW4ubGVmdH10aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlVG9vbHRpcChyLG8scy5jb25maWcubWFya2Vycy5ob3Zlci5zaXplKX19fSx7a2V5OlwiZW5sYXJnZVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT10aGlzLGE9dGhpcy50dEN0eCxzPXQscj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzOm5vdCguYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkKSAuYXBleGNoYXJ0cy1tYXJrZXJcIiksbz1lLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUsbj0wO248ci5sZW5ndGg7bisrKXt2YXIgbD1yW25dLmdldEF0dHJpYnV0ZShcInJlbFwiKSxoPXJbbl0uZ2V0QXR0cmlidXRlKFwiaW5kZXhcIik7aWYodm9pZCAwPT09byYmKG89ZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtoXStlLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLHM9PT1wYXJzZUludChsLDEwKSl7aS5uZXdQb2ludFNpemUocyxyW25dKTt2YXIgYz1yW25dLmdldEF0dHJpYnV0ZShcImN4XCIpLGQ9cltuXS5nZXRBdHRyaWJ1dGUoXCJjeVwiKTtpLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoYyksYS5maXhlZFRvb2x0aXB8fGkudG9vbHRpcFBvc2l0aW9uLm1vdmVUb29sdGlwKGMsZCxvKX1lbHNlIGkub2xkUG9pbnRTaXplKHJbbl0pfX19LHtrZXk6XCJuZXdQb2ludFNpemVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSxzPTA9PT10P2UucGFyZW50Tm9kZS5maXJzdENoaWxkOmUucGFyZW50Tm9kZS5sYXN0Q2hpbGQ7aWYoXCIwXCIhPT1zLmdldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIikpe3ZhciByPXBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApO3ZvaWQgMD09PWEmJihhPWkuZ2xvYmFscy5tYXJrZXJzLnNpemVbcl0raS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSxhPDAmJihhPTApLHMuc2V0QXR0cmlidXRlKFwiclwiLGEpfX19LHtrZXk6XCJvbGRQb2ludFNpemVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1wYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiKSk7dC5zZXRBdHRyaWJ1dGUoXCJyXCIsZSl9fSx7a2V5OlwicmVzZXRQb2ludHNTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzOm5vdCguYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkKSAuYXBleGNoYXJ0cy1tYXJrZXJcIiksZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgaT1wYXJzZUZsb2F0KHRbZV0uZ2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiKSk7eC5pc051bWJlcihpKSYmaT49MD90W2VdLnNldEF0dHJpYnV0ZShcInJcIixpKTp0W2VdLnNldEF0dHJpYnV0ZShcInJcIiwwKX19fV0pLHR9KCksZnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnR0Q3R4PWUsdGhpcy5pc1ZlcnRpY2FsR3JvdXBlZFJhbmdlQmFyPSFpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZcInJhbmdlQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiZpLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3N9cmV0dXJuIHIodCxbe2tleTpcImdldEF0dHJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBwYXJzZUZsb2F0KHQudGFyZ2V0LmdldEF0dHJpYnV0ZShlKSl9fSx7a2V5OlwiaGFuZGxlSGVhdFRyZWVUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lLGk9dC5vcHQsYT10Lngscz10Lnkscj10LnR5cGUsbz10aGlzLnR0Q3R4LG49dGhpcy53O2lmKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtXCIuY29uY2F0KHIsXCItcmVjdFwiKSkpe3ZhciBsPXRoaXMuZ2V0QXR0cihlLFwiaVwiKSxoPXRoaXMuZ2V0QXR0cihlLFwialwiKSxjPXRoaXMuZ2V0QXR0cihlLFwiY3hcIiksZD10aGlzLmdldEF0dHIoZSxcImN5XCIpLGc9dGhpcy5nZXRBdHRyKGUsXCJ3aWR0aFwiKSx1PXRoaXMuZ2V0QXR0cihlLFwiaGVpZ2h0XCIpO2lmKG8udG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6bCxqOmgsc2hhcmVkOiExLGU6ZX0pLG4uZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PWwsbi5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9aCxhPWMrby50b29sdGlwUmVjdC50dFdpZHRoLzIrZyxzPWQrby50b29sdGlwUmVjdC50dEhlaWdodC8yLXUvMixvLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoYytnLzIpLGE+bi5nbG9iYWxzLmdyaWRXaWR0aC8yJiYoYT1jLW8udG9vbHRpcFJlY3QudHRXaWR0aC8yK2cpLG8udy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciBwPW4uZ2xvYmFscy5kb20uZWxXcmFwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9bi5nbG9iYWxzLmNsaWVudFgtcC5sZWZ0LShhPm4uZ2xvYmFscy5ncmlkV2lkdGgvMj9vLnRvb2x0aXBSZWN0LnR0V2lkdGg6MCkscz1uLmdsb2JhbHMuY2xpZW50WS1wLnRvcC0ocz5uLmdsb2JhbHMuZ3JpZEhlaWdodC8yP28udG9vbHRpcFJlY3QudHRIZWlnaHQ6MCl9fXJldHVybnt4OmEseTpzfX19LHtrZXk6XCJoYW5kbGVNYXJrZXJUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXQuZSxzPXQub3B0LHI9dC54LG89dC55LG49dGhpcy53LGw9dGhpcy50dEN0eDtpZihhLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSl7dmFyIGg9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJjeFwiKSwxMCksYz1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcImN5XCIpLDEwKSxkPXBhcnNlRmxvYXQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJ2YWxcIikpO2lmKGk9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLGU9cGFyc2VJbnQocy5wYXRocy5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEsbC5pbnRlcnNlY3Qpe3ZhciBnPXguZmluZEFuY2VzdG9yKHMucGF0aHMsXCJhcGV4Y2hhcnRzLXNlcmllc1wiKTtnJiYoZT1wYXJzZUludChnLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSl9aWYobC50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczpzLnR0SXRlbXMsaTplLGo6aSxzaGFyZWQ6IWwuc2hvd09uSW50ZXJzZWN0JiZuLmNvbmZpZy50b29sdGlwLnNoYXJlZCxlOmF9KSxcIm1vdXNldXBcIj09PWEudHlwZSYmbC5tYXJrZXJDbGljayhhLGUsaSksbi5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9ZSxuLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1pLHI9aCxvPWMrbi5nbG9iYWxzLnRyYW5zbGF0ZVktMS40KmwudG9vbHRpcFJlY3QudHRIZWlnaHQsbC53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIHU9bC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtvPWwuZS5jbGllbnRZK24uZ2xvYmFscy50cmFuc2xhdGVZLXUudG9wfWQ8MCYmKG89YyksbC5tYXJrZXIuZW5sYXJnZUN1cnJlbnRQb2ludChpLHMucGF0aHMscixvKX1yZXR1cm57eDpyLHk6b319fSx7a2V5OlwiaGFuZGxlQmFyVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10LmUscz10Lm9wdCxyPXRoaXMudyxvPXRoaXMudHRDdHgsbj1vLmdldEVsVG9vbHRpcCgpLGw9MCxoPTAsYz0wLGQ9dGhpcy5nZXRCYXJUb29sdGlwWFkoe2U6YSxvcHQ6c30pO2U9ZC5pO3ZhciBnPWQuYmFySGVpZ2h0LHU9ZC5qO3IuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PWUsci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9dSxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKXx8IXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkPyhoPWQueCxjPWQueSxpPUFycmF5LmlzQXJyYXkoci5jb25maWcuc3Ryb2tlLndpZHRoKT9yLmNvbmZpZy5zdHJva2Uud2lkdGhbZV06ci5jb25maWcuc3Ryb2tlLndpZHRoLGw9aCk6ci5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxyLmNvbmZpZy50b29sdGlwLnNoYXJlZHx8KGwvPTIpLGlzTmFOKGMpJiYoYz1yLmdsb2JhbHMuc3ZnSGVpZ2h0LW8udG9vbHRpcFJlY3QudHRIZWlnaHQpO3ZhciBwPXBhcnNlSW50KHMucGF0aHMucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCksZj1yLmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzP3IuY29uZmlnLnlheGlzW3BdJiZyLmNvbmZpZy55YXhpc1twXS5yZXZlcnNlZDpyLmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZDtpZihoK28udG9vbHRpcFJlY3QudHRXaWR0aD5yLmdsb2JhbHMuZ3JpZFdpZHRoJiYhZj9oLT1vLnRvb2x0aXBSZWN0LnR0V2lkdGg6aDwwJiYoaD0wKSxvLncuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgeD1vLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2M9by5lLmNsaWVudFkteC50b3B9bnVsbD09PW8udG9vbHRpcCYmKG8udG9vbHRpcD1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcFwiKSksci5jb25maWcudG9vbHRpcC5zaGFyZWR8fChyLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wP28udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhsK2kvMik6by50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGwpKSwhby5maXhlZFRvb2x0aXAmJighci5jb25maWcudG9vbHRpcC5zaGFyZWR8fHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm8udG9vbHRpcFV0aWwuaGFzQmFycygpKSYmKGYmJihoLT1vLnRvb2x0aXBSZWN0LnR0V2lkdGgpPDAmJihoPTApLCFmfHxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKXx8KGM9YytnLTIqKHIuZ2xvYmFscy5zZXJpZXNbZV1bdV08MD9nOjApKSxjPWMrci5nbG9iYWxzLnRyYW5zbGF0ZVktby50b29sdGlwUmVjdC50dEhlaWdodC8yLG4uc3R5bGUubGVmdD1oK3IuZ2xvYmFscy50cmFuc2xhdGVYK1wicHhcIixuLnN0eWxlLnRvcD1jK1wicHhcIil9fSx7a2V5OlwiZ2V0QmFyVG9vbHRpcFhZXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQuZSxhPXQub3B0LHM9dGhpcy53LHI9bnVsbCxvPXRoaXMudHRDdHgsbj0wLGw9MCxoPTAsYz0wLGQ9MCxnPWkudGFyZ2V0LmNsYXNzTGlzdDtpZihnLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1iYXItYXJlYVwiKXx8Zy5jb250YWlucyhcImFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYVwiKXx8Zy5jb250YWlucyhcImFwZXhjaGFydHMtYm94UGxvdC1hcmVhXCIpfHxnLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpKXt2YXIgdT1pLnRhcmdldCxwPXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZj1hLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx4PXAuaGVpZ2h0O2Q9cC5oZWlnaHQ7dmFyIGI9cC53aWR0aCx2PXBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKFwiY3hcIiksMTApLG09cGFyc2VJbnQodS5nZXRBdHRyaWJ1dGUoXCJjeVwiKSwxMCk7Yz1wYXJzZUZsb2F0KHUuZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpO3ZhciB5PVwidG91Y2htb3ZlXCI9PT1pLnR5cGU/aS50b3VjaGVzWzBdLmNsaWVudFg6aS5jbGllbnRYO3I9cGFyc2VJbnQodS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKSxuPXBhcnNlSW50KHUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTE7dmFyIHc9dS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXJhbmdlLXkxXCIpLGs9dS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXJhbmdlLXkyXCIpO3MuZ2xvYmFscy5jb21ib0NoYXJ0cyYmKG49cGFyc2VJbnQodS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSk7dmFyIEE9ZnVuY3Rpb24odCl7cmV0dXJuIHMuZ2xvYmFscy5pc1hOdW1lcmljP3YtYi8yOmUuaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj92K2IvMjp2LW8uZGF0YVBvaW50c0RpdmlkZWRXaWR0aCtiLzJ9LFM9ZnVuY3Rpb24oKXtyZXR1cm4gbS1vLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0K3gvMi1vLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzJ9O28udG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6YS50dEl0ZW1zLGk6bixqOnIseTE6dz9wYXJzZUludCh3LDEwKTpudWxsLHkyOms/cGFyc2VJbnQoaywxMCk6bnVsbCxzaGFyZWQ6IW8uc2hvd09uSW50ZXJzZWN0JiZzLmNvbmZpZy50b29sdGlwLnNoYXJlZCxlOml9KSxzLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcj9zLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPyhsPXktZi5sZWZ0KzE1LGg9UygpKToobD1BKCksaD1pLmNsaWVudFktZi50b3Atby50b29sdGlwUmVjdC50dEhlaWdodC8yLTE1KTpzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPygobD12KTxvLnh5UmF0aW9zLmJhc2VMaW5lSW52ZXJ0ZWRZJiYobD12LW8udG9vbHRpcFJlY3QudHRXaWR0aCksaD1TKCkpOihsPUEoKSxoPW0pfXJldHVybnt4OmwseTpoLGJhckhlaWdodDpkLGJhcldpZHRoOmMsaTpuLGo6cn19fV0pLHR9KCkseHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1hheGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eCxpPVwiYm90dG9tXCI9PT10LmNvbmZpZy54YXhpcy5wb3NpdGlvbjtlLnhheGlzT2ZmWT1pP3QuZ2xvYmFscy5ncmlkSGVpZ2h0KzE6LXQuZ2xvYmFscy54QXhpc0hlaWdodC10LmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0KzM7dmFyIGE9aT9cImFwZXhjaGFydHMteGF4aXN0b29sdGlwIGFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbVwiOlwiYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wXCIscz10Lmdsb2JhbHMuZG9tLmVsV3JhcDtlLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmKG51bGw9PT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXN0b29sdGlwXCIpJiYoZS54YXhpc1Rvb2x0aXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnhheGlzVG9vbHRpcC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLGErXCIgYXBleGNoYXJ0cy10aGVtZS1cIit0LmNvbmZpZy50b29sdGlwLnRoZW1lKSxzLmFwcGVuZENoaWxkKGUueGF4aXNUb29sdGlwKSxlLnhheGlzVG9vbHRpcFRleHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnhheGlzVG9vbHRpcFRleHQuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRleHRcIiksZS54YXhpc1Rvb2x0aXBUZXh0LnN0eWxlLmZvbnRGYW1pbHk9dC5jb25maWcueGF4aXMudG9vbHRpcC5zdHlsZS5mb250RmFtaWx5fHx0LmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGUueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5mb250U2l6ZT10LmNvbmZpZy54YXhpcy50b29sdGlwLnN0eWxlLmZvbnRTaXplLGUueGF4aXNUb29sdGlwLmFwcGVuZENoaWxkKGUueGF4aXNUb29sdGlwVGV4dCkpKX19LHtrZXk6XCJkcmF3WWF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eCxpPWZ1bmN0aW9uKGkpe3ZhciBhPXQuY29uZmlnLnlheGlzW2ldLm9wcG9zaXRlfHx0LmNvbmZpZy55YXhpc1tpXS5jcm9zc2hhaXJzLm9wcG9zaXRlO2UueWF4aXNPZmZYPWE/dC5nbG9iYWxzLmdyaWRXaWR0aCsxOjE7dmFyIHM9XCJhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1cIi5jb25jYXQoaSxhP1wiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0XCI6XCIgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdFwiKTt0Lmdsb2JhbHMueUF4aXNTYW1lU2NhbGVJbmRpY2VzLm1hcCgoZnVuY3Rpb24oZSxhKXtlLm1hcCgoZnVuY3Rpb24oZSxhKXthPT09aSYmKHMrPXQuY29uZmlnLnlheGlzW2FdLnNob3c/XCIgXCI6XCIgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtaGlkZGVuXCIpfSkpfSkpO3ZhciByPXQuZ2xvYmFscy5kb20uZWxXcmFwO251bGw9PT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLVwiLmNvbmNhdChpKSkmJihlLnlheGlzVG9vbHRpcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGUueWF4aXNUb29sdGlwLnNldEF0dHJpYnV0ZShcImNsYXNzXCIscytcIiBhcGV4Y2hhcnRzLXRoZW1lLVwiK3QuY29uZmlnLnRvb2x0aXAudGhlbWUpLHIuYXBwZW5kQ2hpbGQoZS55YXhpc1Rvb2x0aXApLDA9PT1pJiYoZS55YXhpc1Rvb2x0aXBUZXh0PVtdKSxlLnlheGlzVG9vbHRpcFRleHRbaV09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnlheGlzVG9vbHRpcFRleHRbaV0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMteWF4aXN0b29sdGlwLXRleHRcIiksZS55YXhpc1Rvb2x0aXAuYXBwZW5kQ2hpbGQoZS55YXhpc1Rvb2x0aXBUZXh0W2ldKSl9LGE9MDthPHQuY29uZmlnLnlheGlzLmxlbmd0aDthKyspaShhKX19LHtrZXk6XCJzZXRYQ3Jvc3NoYWlyV2lkdGhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1lLmdldEVsWENyb3NzaGFpcnMoKTtpZihlLnhjcm9zc2hhaXJzV2lkdGg9cGFyc2VJbnQodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCwxMCksdC5nbG9iYWxzLmNvbWJvQ2hhcnRzKXt2YXIgYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIik7aWYobnVsbCE9PWEmJlwiYmFyV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBzPXBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7ZS54Y3Jvc3NoYWlyc1dpZHRoPXN9ZWxzZSBpZihcInRpY2tXaWR0aFwiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIHI9dC5nbG9iYWxzLmxhYmVscy5sZW5ndGg7ZS54Y3Jvc3NoYWlyc1dpZHRoPXQuZ2xvYmFscy5ncmlkV2lkdGgvcn19ZWxzZSBpZihcInRpY2tXaWR0aFwiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIG89dC5nbG9iYWxzLmxhYmVscy5sZW5ndGg7ZS54Y3Jvc3NoYWlyc1dpZHRoPXQuZ2xvYmFscy5ncmlkV2lkdGgvb31lbHNlIGlmKFwiYmFyV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBuPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVwiKTtpZihudWxsIT09bil7dmFyIGw9cGFyc2VGbG9hdChuLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTtlLnhjcm9zc2hhaXJzV2lkdGg9bH1lbHNlIGUueGNyb3NzaGFpcnNXaWR0aD0xfXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihlLnhjcm9zc2hhaXJzV2lkdGg9MCksbnVsbCE9PWkmJmUueGNyb3NzaGFpcnNXaWR0aD4wJiZpLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsZS54Y3Jvc3NoYWlyc1dpZHRoKX19LHtrZXk6XCJoYW5kbGVZQ3Jvc3NoYWlyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnR0Q3R4O2UueWNyb3NzaGFpcnM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzXCIpLGUueWNyb3NzaGFpcnNIaWRkZW49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlblwiKX19LHtrZXk6XCJkcmF3WWF4aXNUb29sdGlwVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnR0Q3R4LHM9dGhpcy53LHI9cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF07aWYoYS55YXhpc1Rvb2x0aXBzW3RdKXt2YXIgbz1hLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49KGUtby50b3ApKmkueVJhdGlvW3RdLGw9cy5nbG9iYWxzLm1heFlBcnJbdF0tcy5nbG9iYWxzLm1pbllBcnJbdF0saD1zLmdsb2JhbHMubWluWUFyclt0XSsobC1uKTthLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWUNyb3NzaGFpcnMoZS1vLnRvcCksYS55YXhpc1Rvb2x0aXBUZXh0W3RdLmlubmVySFRNTD1yKGgpLGEudG9vbHRpcFBvc2l0aW9uLm1vdmVZQXhpc1Rvb2x0aXAodCl9fX1dKSx0fSgpLGJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnRDb25maWc9aS5jb25maWcudG9vbHRpcCx0aGlzLnRvb2x0aXBVdGlsPW5ldyBkdCh0aGlzKSx0aGlzLnRvb2x0aXBMYWJlbHM9bmV3IGd0KHRoaXMpLHRoaXMudG9vbHRpcFBvc2l0aW9uPW5ldyB1dCh0aGlzKSx0aGlzLm1hcmtlcj1uZXcgcHQodGhpcyksdGhpcy5pbnRlcnNlY3Q9bmV3IGZ0KHRoaXMpLHRoaXMuYXhlc1Rvb2x0aXA9bmV3IHh0KHRoaXMpLHRoaXMuc2hvd09uSW50ZXJzZWN0PXRoaXMudENvbmZpZy5pbnRlcnNlY3QsdGhpcy5zaG93VG9vbHRpcFRpdGxlPXRoaXMudENvbmZpZy54LnNob3csdGhpcy5maXhlZFRvb2x0aXA9dGhpcy50Q29uZmlnLmZpeGVkLmVuYWJsZWQsdGhpcy54YXhpc1Rvb2x0aXA9bnVsbCx0aGlzLnlheGlzVFRFbHM9bnVsbCx0aGlzLmlzQmFyU2hhcmVkPSFpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLnRDb25maWcuc2hhcmVkLHRoaXMubGFzdEhvdmVyVGltZT1EYXRlLm5vdygpfXJldHVybiByKHQsW3trZXk6XCJnZXRFbFRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdHx8KHQ9dGhpcyksdC53Lmdsb2JhbHMuZG9tLmJhc2VFbD90LncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwXCIpOm51bGx9fSx7a2V5OlwiZ2V0RWxYQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIpfX0se2tleTpcImdldEVsR3JpZFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIil9fSx7a2V5OlwiZHJhd1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7dGhpcy54eVJhdGlvcz10LHRoaXMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkPWUuY29uZmlnLnhheGlzLnRvb2x0aXAuZW5hYmxlZCYmZS5nbG9iYWxzLmF4aXNDaGFydHMsdGhpcy55YXhpc1Rvb2x0aXBzPWUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4hISh0LnNob3cmJnQudG9vbHRpcC5lbmFibGVkJiZlLmdsb2JhbHMuYXhpc0NoYXJ0cyl9KSksdGhpcy5hbGxUb29sdGlwU2VyaWVzR3JvdXBzPVtdLGUuZ2xvYmFscy5heGlzQ2hhcnRzfHwodGhpcy5zaG93VG9vbHRpcFRpdGxlPSExKTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2lmKGkuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcFwiKSxlLmNvbmZpZy50b29sdGlwLmNzc0NsYXNzJiZpLmNsYXNzTGlzdC5hZGQoZS5jb25maWcudG9vbHRpcC5jc3NDbGFzcyksaS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10aGVtZS1cIi5jb25jYXQodGhpcy50Q29uZmlnLnRoZW1lKSksZS5nbG9iYWxzLmRvbS5lbFdyYXAuYXBwZW5kQ2hpbGQoaSksZS5nbG9iYWxzLmF4aXNDaGFydHMpe3RoaXMuYXhlc1Rvb2x0aXAuZHJhd1hheGlzVG9vbHRpcCgpLHRoaXMuYXhlc1Rvb2x0aXAuZHJhd1lheGlzVG9vbHRpcCgpLHRoaXMuYXhlc1Rvb2x0aXAuc2V0WENyb3NzaGFpcldpZHRoKCksdGhpcy5heGVzVG9vbHRpcC5oYW5kbGVZQ3Jvc3NoYWlyKCk7dmFyIGE9bmV3IFYodGhpcy5jdHgpO3RoaXMueEF4aXNUaWNrc1Bvc2l0aW9ucz1hLmdldFhBeGlzVGlja3NQb3NpdGlvbnMoKX1pZighZS5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhdGhpcy50Q29uZmlnLmludGVyc2VjdCYmXCJyYW5nZUJhclwiIT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy50Q29uZmlnLnNoYXJlZHx8KHRoaXMuc2hvd09uSW50ZXJzZWN0PSEwKSwwIT09ZS5jb25maWcubWFya2Vycy5zaXplJiYwIT09ZS5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemV8fHRoaXMubWFya2VyLmRyYXdEeW5hbWljUG9pbnRzKHRoaXMpLGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoIT09ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpe3RoaXMuZGF0YVBvaW50c0RpdmlkZWRIZWlnaHQ9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLmRhdGFQb2ludHMsdGhpcy5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoPWUuZ2xvYmFscy5ncmlkV2lkdGgvZS5nbG9iYWxzLmRhdGFQb2ludHMsdGhpcy5zaG93VG9vbHRpcFRpdGxlJiYodGhpcy50b29sdGlwVGl0bGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLnRvb2x0aXBUaXRsZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlXCIpLHRoaXMudG9vbHRpcFRpdGxlLnN0eWxlLmZvbnRGYW1pbHk9dGhpcy50Q29uZmlnLnN0eWxlLmZvbnRGYW1pbHl8fGUuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksdGhpcy50b29sdGlwVGl0bGUuc3R5bGUuZm9udFNpemU9dGhpcy50Q29uZmlnLnN0eWxlLmZvbnRTaXplLGkuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwVGl0bGUpKTt2YXIgcz1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDsoZS5nbG9iYWxzLnh5Q2hhcnRzfHxlLmdsb2JhbHMuY29tYm9DaGFydHMpJiZ0aGlzLnRDb25maWcuc2hhcmVkJiYocz10aGlzLnNob3dPbkludGVyc2VjdD8xOmUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKSx0aGlzLmxlZ2VuZExhYmVscz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtbGVnZW5kLXRleHRcIiksdGhpcy50dEl0ZW1zPXRoaXMuY3JlYXRlVFRFbGVtZW50cyhzKSx0aGlzLmFkZFNWR0V2ZW50cygpfX19LHtrZXk6XCJjcmVhdGVUVEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMsaT10aGlzLncsYT1bXSxzPXRoaXMuZ2V0RWxUb29sdGlwKCkscj1mdW5jdGlvbihyKXt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO28uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXBcIiksby5zdHlsZS5vcmRlcj1pLmNvbmZpZy50b29sdGlwLmludmVyc2VPcmRlcj90LXI6cisxLGUudENvbmZpZy5zaGFyZWQmJmUudENvbmZpZy5lbmFibGVkT25TZXJpZXMmJkFycmF5LmlzQXJyYXkoZS50Q29uZmlnLmVuYWJsZWRPblNlcmllcykmJmUudENvbmZpZy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihyKTwwJiZvLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLWhpZGRlblwiKTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtuLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyXCIpLG4uc3R5bGUuYmFja2dyb3VuZENvbG9yPWkuZ2xvYmFscy5jb2xvcnNbcl0sby5hcHBlbmRDaGlsZChuKTt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2wuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0XCIpLGwuc3R5bGUuZm9udEZhbWlseT1lLnRDb25maWcuc3R5bGUuZm9udEZhbWlseXx8aS5jb25maWcuY2hhcnQuZm9udEZhbWlseSxsLnN0eWxlLmZvbnRTaXplPWUudENvbmZpZy5zdHlsZS5mb250U2l6ZSxbXCJ5XCIsXCJnb2Fsc1wiLFwielwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2UuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1cIi5jb25jYXQodCxcIi1ncm91cFwiKSk7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7aS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHQtXCIuY29uY2F0KHQsXCItbGFiZWxcIikpLGUuYXBwZW5kQ2hpbGQoaSk7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7YS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHQtXCIuY29uY2F0KHQsXCItdmFsdWVcIikpLGUuYXBwZW5kQ2hpbGQoYSksbC5hcHBlbmRDaGlsZChlKX0pKSxvLmFwcGVuZENoaWxkKGwpLHMuYXBwZW5kQ2hpbGQobyksYS5wdXNoKG8pfSxvPTA7bzx0O28rKylyKG8pO3JldHVybiBhfX0se2tleTpcImFkZFNWR0V2ZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcuY2hhcnQudHlwZSxpPXRoaXMuZ2V0RWxUb29sdGlwKCksYT0hKFwiYmFyXCIhPT1lJiZcImNhbmRsZXN0aWNrXCIhPT1lJiZcImJveFBsb3RcIiE9PWUmJlwicmFuZ2VCYXJcIiE9PWUpLHM9XCJhcmVhXCI9PT1lfHxcImxpbmVcIj09PWV8fFwic2NhdHRlclwiPT09ZXx8XCJidWJibGVcIj09PWV8fFwicmFkYXJcIj09PWUscj10Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGUsbz10aGlzLmdldEVsR3JpZCgpO28mJih0aGlzLnNlcmllc0JvdW5kPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3ZhciBuLGw9W10saD1bXSxjPXtob3ZlckFyZWE6cixlbEdyaWQ6byx0b29sdGlwRWw6aSx0b29sdGlwWTpsLHRvb2x0aXBYOmgsdHRJdGVtczp0aGlzLnR0SXRlbXN9O2lmKHQuZ2xvYmFscy5heGlzQ2hhcnRzJiYocz9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6bG9uZ2VzdFNlcmllcz0ndHJ1ZSddIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTphP249dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1iYXItYXJlYSwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1ib3hQbG90LWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpOlwiaGVhdG1hcFwiIT09ZSYmXCJ0cmVlbWFwXCIhPT1lfHwobj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWhlYXRtYXAsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy10cmVlbWFwXCIpKSxuJiZuLmxlbmd0aCkpZm9yKHZhciBkPTA7ZDxuLmxlbmd0aDtkKyspbC5wdXNoKG5bZF0uZ2V0QXR0cmlidXRlKFwiY3lcIikpLGgucHVzaChuW2RdLmdldEF0dHJpYnV0ZShcImN4XCIpKTtpZih0Lmdsb2JhbHMueHlDaGFydHMmJiF0aGlzLnNob3dPbkludGVyc2VjdHx8dC5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhdGhpcy5zaG93T25JbnRlcnNlY3R8fGEmJnRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiZ0aGlzLnRDb25maWcuc2hhcmVkKXRoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyhbcl0sYyk7ZWxzZSBpZihhJiYhdC5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxzJiZ0aGlzLnNob3dPbkludGVyc2VjdCl0aGlzLmFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVycyhjKTtlbHNlIGlmKCF0Lmdsb2JhbHMuYXhpc0NoYXJ0c3x8XCJoZWF0bWFwXCI9PT1lfHxcInRyZWVtYXBcIj09PWUpe3ZhciBnPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNcIik7dGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKGcsYyl9aWYodGhpcy5zaG93T25JbnRlcnNlY3Qpe3ZhciB1PXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1saW5lLXNlcmllcyAuYXBleGNoYXJ0cy1tYXJrZXIsIC5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTt1Lmxlbmd0aD4wJiZ0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnModSxjKSx0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmIXRoaXMudENvbmZpZy5zaGFyZWQmJnRoaXMuYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzKGMpfX19LHtrZXk6XCJkcmF3Rml4ZWRUb29sdGlwUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy5nZXRFbFRvb2x0aXAoKSxpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1pLndpZHRoKzEwLHM9aS5oZWlnaHQrMTAscj10aGlzLnRDb25maWcuZml4ZWQub2Zmc2V0WCxvPXRoaXMudENvbmZpZy5maXhlZC5vZmZzZXRZLG49dGhpcy50Q29uZmlnLmZpeGVkLnBvc2l0aW9uLnRvTG93ZXJDYXNlKCk7cmV0dXJuIG4uaW5kZXhPZihcInJpZ2h0XCIpPi0xJiYocj1yK3QuZ2xvYmFscy5zdmdXaWR0aC1hKzEwKSxuLmluZGV4T2YoXCJib3R0b21cIik+LTEmJihvPW8rdC5nbG9iYWxzLnN2Z0hlaWdodC1zLTEwKSxlLnN0eWxlLmxlZnQ9citcInB4XCIsZS5zdHlsZS50b3A9bytcInB4XCIse3g6cix5Om8sdHRXaWR0aDphLHR0SGVpZ2h0OnN9fX0se2tleTpcImFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlciwgLmFwZXhjaGFydHMtYmFyLWFyZWEsIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEsIC5hcGV4Y2hhcnRzLWJveFBsb3QtYXJlYSwgLmFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKTt0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoZSx0KX19LHtrZXk6XCJhZGRQYXRoc0V2ZW50TGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcyxhPWZ1bmN0aW9uKGEpe3ZhciBzPXtwYXRoczp0W2FdLHRvb2x0aXBFbDplLnRvb2x0aXBFbCx0b29sdGlwWTplLnRvb2x0aXBZLHRvb2x0aXBYOmUudG9vbHRpcFgsZWxHcmlkOmUuZWxHcmlkLGhvdmVyQXJlYTplLmhvdmVyQXJlYSx0dEl0ZW1zOmUudHRJdGVtc307W1wibW91c2Vtb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaG1vdmVcIixcIm1vdXNlb3V0XCIsXCJ0b3VjaGVuZFwiXS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2FdLmFkZEV2ZW50TGlzdGVuZXIoZSxpLm9uU2VyaWVzSG92ZXIuYmluZChpLHMpLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pKX0scz0wO3M8dC5sZW5ndGg7cysrKWEocyl9fSx7a2V5Olwib25TZXJpZXNIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPURhdGUubm93KCktdGhpcy5sYXN0SG92ZXJUaW1lO2E+PTEwMD90aGlzLnNlcmllc0hvdmVyKHQsZSk6KGNsZWFyVGltZW91dCh0aGlzLnNlcmllc0hvdmVyVGltZW91dCksdGhpcy5zZXJpZXNIb3ZlclRpbWVvdXQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLnNlcmllc0hvdmVyKHQsZSl9KSwxMDAtYSkpfX0se2tleTpcInNlcmllc0hvdmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO3RoaXMubGFzdEhvdmVyVGltZT1EYXRlLm5vdygpO3ZhciBhPVtdLHM9dGhpcy53O3MuY29uZmlnLmNoYXJ0Lmdyb3VwJiYoYT10aGlzLmN0eC5nZXRHcm91cGVkQ2hhcnRzKCkpLHMuZ2xvYmFscy5heGlzQ2hhcnRzJiYocy5nbG9iYWxzLm1pblg9PT0tMS8wJiZzLmdsb2JhbHMubWF4WD09PTEvMHx8MD09PXMuZ2xvYmFscy5kYXRhUG9pbnRzKXx8KGEubGVuZ3RoP2EuZm9yRWFjaCgoZnVuY3Rpb24oYSl7dmFyIHM9aS5nZXRFbFRvb2x0aXAoYSkscj17cGF0aHM6dC5wYXRocyx0b29sdGlwRWw6cyx0b29sdGlwWTp0LnRvb2x0aXBZLHRvb2x0aXBYOnQudG9vbHRpcFgsZWxHcmlkOnQuZWxHcmlkLGhvdmVyQXJlYTp0LmhvdmVyQXJlYSx0dEl0ZW1zOmEudy5nbG9iYWxzLnRvb2x0aXAudHRJdGVtc307YS53Lmdsb2JhbHMubWluWD09PWkudy5nbG9iYWxzLm1pblgmJmEudy5nbG9iYWxzLm1heFg9PT1pLncuZ2xvYmFscy5tYXhYJiZhLncuZ2xvYmFscy50b29sdGlwLnNlcmllc0hvdmVyQnlDb250ZXh0KHtjaGFydEN0eDphLHR0Q3R4OmEudy5nbG9iYWxzLnRvb2x0aXAsb3B0OnIsZTplfSl9KSk6dGhpcy5zZXJpZXNIb3ZlckJ5Q29udGV4dCh7Y2hhcnRDdHg6dGhpcy5jdHgsdHRDdHg6dGhpcy53Lmdsb2JhbHMudG9vbHRpcCxvcHQ6dCxlOmV9KSl9fSx7a2V5Olwic2VyaWVzSG92ZXJCeUNvbnRleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNoYXJ0Q3R4LGk9dC50dEN0eCxhPXQub3B0LHM9dC5lLHI9ZS53LG89dGhpcy5nZXRFbFRvb2x0aXAoKTtpZihvKXtpZihpLnRvb2x0aXBSZWN0PXt4OjAseTowLHR0V2lkdGg6by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCx0dEhlaWdodDpvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0saS5lPXMsaS50b29sdGlwVXRpbC5oYXNCYXJzKCkmJiFyLmdsb2JhbHMuY29tYm9DaGFydHMmJiFpLmlzQmFyU2hhcmVkKWlmKHRoaXMudENvbmZpZy5vbkRhdGFzZXRIb3Zlci5oaWdobGlnaHREYXRhU2VyaWVzKW5ldyBOKGUpLnRvZ2dsZVNlcmllc09uSG92ZXIocyxzLnRhcmdldC5wYXJlbnROb2RlKTtpLmZpeGVkVG9vbHRpcCYmaS5kcmF3Rml4ZWRUb29sdGlwUmVjdCgpLHIuZ2xvYmFscy5heGlzQ2hhcnRzP2kuYXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOnMsb3B0OmEsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pOmkubm9uQXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOnMsb3B0OmEsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pfX19LHtrZXk6XCJheGlzQ2hhcnRzVG9vbHRpcHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLGE9dC5lLHM9dC5vcHQscj10aGlzLncsbz1zLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPVwidG91Y2htb3ZlXCI9PT1hLnR5cGU/YS50b3VjaGVzWzBdLmNsaWVudFg6YS5jbGllbnRYLGw9XCJ0b3VjaG1vdmVcIj09PWEudHlwZT9hLnRvdWNoZXNbMF0uY2xpZW50WTphLmNsaWVudFk7aWYodGhpcy5jbGllbnRZPWwsdGhpcy5jbGllbnRYPW4sci5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9LTEsci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9LTEsbDxvLnRvcHx8bD5vLnRvcCtvLmhlaWdodCl0aGlzLmhhbmRsZU1vdXNlT3V0KHMpO2Vsc2V7aWYoQXJyYXkuaXNBcnJheSh0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzKSYmIXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkKXt2YXIgaD1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKTtpZih0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2YoaCk8MClyZXR1cm4gdm9pZCB0aGlzLmhhbmRsZU1vdXNlT3V0KHMpfXZhciBjPXRoaXMuZ2V0RWxUb29sdGlwKCksZD10aGlzLmdldEVsWENyb3NzaGFpcnMoKSxnPXIuZ2xvYmFscy54eUNoYXJ0c3x8XCJiYXJcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGUmJiFyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy50Q29uZmlnLnNoYXJlZHx8ci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKTtpZihcIm1vdXNlbW92ZVwiPT09YS50eXBlfHxcInRvdWNobW92ZVwiPT09YS50eXBlfHxcIm1vdXNldXBcIj09PWEudHlwZSl7aWYoci5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGgrci5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcy5sZW5ndGg9PT1yLmdsb2JhbHMuc2VyaWVzLmxlbmd0aClyZXR1cm47bnVsbCE9PWQmJmQuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpO3ZhciB1PXRoaXMueWF4aXNUb29sdGlwcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEwPT09dH0pKTtpZihudWxsIT09dGhpcy55Y3Jvc3NoYWlycyYmdS5sZW5ndGgmJnRoaXMueWNyb3NzaGFpcnMuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLGcmJiF0aGlzLnNob3dPbkludGVyc2VjdCl0aGlzLmhhbmRsZVN0aWNreVRvb2x0aXAoYSxuLGwscyk7ZWxzZSBpZihcImhlYXRtYXBcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwidHJlZW1hcFwiPT09ci5jb25maWcuY2hhcnQudHlwZSl7dmFyIHA9dGhpcy5pbnRlcnNlY3QuaGFuZGxlSGVhdFRyZWVUb29sdGlwKHtlOmEsb3B0OnMseDplLHk6aSx0eXBlOnIuY29uZmlnLmNoYXJ0LnR5cGV9KTtlPXAueCxpPXAueSxjLnN0eWxlLmxlZnQ9ZStcInB4XCIsYy5zdHlsZS50b3A9aStcInB4XCJ9ZWxzZSB0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy5pbnRlcnNlY3QuaGFuZGxlQmFyVG9vbHRpcCh7ZTphLG9wdDpzfSksdGhpcy50b29sdGlwVXRpbC5oYXNNYXJrZXJzKCkmJnRoaXMuaW50ZXJzZWN0LmhhbmRsZU1hcmtlclRvb2x0aXAoe2U6YSxvcHQ6cyx4OmUseTppfSk7aWYodGhpcy55YXhpc1Rvb2x0aXBzLmxlbmd0aClmb3IodmFyIGY9MDtmPHIuY29uZmlnLnlheGlzLmxlbmd0aDtmKyspdGhpcy5heGVzVG9vbHRpcC5kcmF3WWF4aXNUb29sdGlwVGV4dChmLGwsdGhpcy54eVJhdGlvcyk7cy50b29sdGlwRWwuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpfWVsc2VcIm1vdXNlb3V0XCIhPT1hLnR5cGUmJlwidG91Y2hlbmRcIiE9PWEudHlwZXx8dGhpcy5oYW5kbGVNb3VzZU91dChzKX19fSx7a2V5Olwibm9uQXhpc0NoYXJ0c1Rvb2x0aXBzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lLGk9dC5vcHQsYT10LnRvb2x0aXBSZWN0LHM9dGhpcy53LHI9aS5wYXRocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksbz10aGlzLmdldEVsVG9vbHRpcCgpLG49cy5nbG9iYWxzLmRvbS5lbFdyYXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoXCJtb3VzZW1vdmVcIj09PWUudHlwZXx8XCJ0b3VjaG1vdmVcIj09PWUudHlwZSl7by5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpwYXJzZUludChyLDEwKS0xLHNoYXJlZDohMX0pO3ZhciBsPXMuZ2xvYmFscy5jbGllbnRYLW4ubGVmdC1hLnR0V2lkdGgvMixoPXMuZ2xvYmFscy5jbGllbnRZLW4udG9wLWEudHRIZWlnaHQtMTA7aWYoby5zdHlsZS5sZWZ0PWwrXCJweFwiLG8uc3R5bGUudG9wPWgrXCJweFwiLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpe3ZhciBjPXItMSxkPSgwLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpKHRoaXMubGVnZW5kTGFiZWxzW2NdLmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpLHtzZXJpZXNJbmRleDpjLGRhdGFQb2ludEluZGV4OmMsdzpzfSk7dGhpcy5sZWdlbmRMYWJlbHNbY10uaW5uZXJIVE1MPWR9fWVsc2VcIm1vdXNlb3V0XCIhPT1lLnR5cGUmJlwidG91Y2hlbmRcIiE9PWUudHlwZXx8KG8uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXImJnRoaXMubGVnZW5kTGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIik7dC5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KGUpfSkpKX19LHtrZXk6XCJoYW5kbGVTdGlja3lUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9dGhpcy50b29sdGlwVXRpbC5nZXROZWFyZXN0VmFsdWVzKHtjb250ZXh0OnRoaXMsaG92ZXJBcmVhOmEuaG92ZXJBcmVhLGVsR3JpZDphLmVsR3JpZCxjbGllbnRYOmUsY2xpZW50WTppfSksbz1yLmosbj1yLmNhcHR1cmVkU2VyaWVzO3MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKG4pJiYobj1udWxsKTt2YXIgbD1hLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihyLmhvdmVyWDwwfHxyLmhvdmVyWD5sLndpZHRoKXRoaXMuaGFuZGxlTW91c2VPdXQoYSk7ZWxzZSBpZihudWxsIT09bil0aGlzLmhhbmRsZVN0aWNreUNhcHR1cmVkU2VyaWVzKHQsbixhLG8pO2Vsc2UgaWYodGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKG8pfHxzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXt2YXIgaD1zLmdsb2JhbHMuc2VyaWVzLmZpbmRJbmRleCgoZnVuY3Rpb24odCxlKXtyZXR1cm4hcy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5jbHVkZXMoZSl9KSk7dGhpcy5jcmVhdGUodCx0aGlzLGgsbyxhLnR0SXRlbXMpfX19LHtrZXk6XCJoYW5kbGVTdGlja3lDYXB0dXJlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudztpZighdGhpcy50Q29uZmlnLnNoYXJlZCYmbnVsbD09PXMuZ2xvYmFscy5zZXJpZXNbZV1bYV0pcmV0dXJuIHZvaWQgdGhpcy5oYW5kbGVNb3VzZU91dChpKTtpZih2b2lkIDAhPT1zLmdsb2JhbHMuc2VyaWVzW2VdW2FdKXRoaXMudENvbmZpZy5zaGFyZWQmJnRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChhKSYmdGhpcy50b29sdGlwVXRpbC5pc0luaXRpYWxTZXJpZXNTYW1lTGVuKCk/dGhpcy5jcmVhdGUodCx0aGlzLGUsYSxpLnR0SXRlbXMpOnRoaXMuY3JlYXRlKHQsdGhpcyxlLGEsaS50dEl0ZW1zLCExKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChhKSl7dmFyIHI9cy5nbG9iYWxzLnNlcmllcy5maW5kSW5kZXgoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIXMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKGUpfSkpO3RoaXMuY3JlYXRlKHQsdGhpcyxyLGEsaS50dEl0ZW1zKX19fSx7a2V5OlwiZGVhY3RpdmF0ZUhvdmVyRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9dC5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVwiKSxhPTA7YTxpLmxlbmd0aDthKyspZS5wYXRoTW91c2VMZWF2ZShpW2FdKX19LHtrZXk6XCJoYW5kbGVNb3VzZU91dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMuZ2V0RWxYQ3Jvc3NoYWlycygpO2lmKHQudG9vbHRpcEVsLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLmRlYWN0aXZhdGVIb3ZlckZpbHRlcigpLFwiYnViYmxlXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiZ0aGlzLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSxudWxsIT09aSYmaS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksbnVsbCE9PXRoaXMueWNyb3NzaGFpcnMmJnRoaXMueWNyb3NzaGFpcnMuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkJiZ0aGlzLnhheGlzVG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy55YXhpc1Rvb2x0aXBzLmxlbmd0aCl7bnVsbD09PXRoaXMueWF4aXNUVEVscyYmKHRoaXMueWF4aXNUVEVscz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwXCIpKTtmb3IodmFyIGE9MDthPHRoaXMueWF4aXNUVEVscy5sZW5ndGg7YSsrKXRoaXMueWF4aXNUVEVsc1thXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIil9ZS5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlciYmdGhpcy5sZWdlbmRMYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKTt0LmlubmVySFRNTD1kZWNvZGVVUklDb21wb25lbnQoZSl9KSl9fSx7a2V5OlwibWFya2VyQ2xpY2tcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O1wiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5tYXJrZXJDbGljayYmYS5jb25maWcuY2hhcnQuZXZlbnRzLm1hcmtlckNsaWNrKHQsdGhpcy5jdHgse3Nlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OmF9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibWFya2VyQ2xpY2tcIixbdCx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHc6YX1dKX19LHtrZXk6XCJjcmVhdGVcIix2YWx1ZTpmdW5jdGlvbih0LGksYSxzLHIpe3ZhciBvLG4sbCxoLGMsZCxnLHUscCxmLHgsYix2LHksdyxrLEE9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOm51bGwsUz10aGlzLncsQz1pO1wibW91c2V1cFwiPT09dC50eXBlJiZ0aGlzLm1hcmtlckNsaWNrKHQsYSxzKSxudWxsPT09QSYmKEE9dGhpcy50Q29uZmlnLnNoYXJlZCk7dmFyIEw9dGhpcy50b29sdGlwVXRpbC5oYXNNYXJrZXJzKGEpLFA9dGhpcy50b29sdGlwVXRpbC5nZXRFbEJhcnMoKTtpZihTLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKXt2YXIgST1TLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyLE09QXJyYXkuZnJvbSh0aGlzLmxlZ2VuZExhYmVscyk7TS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpO3QuaW5uZXJIVE1MPWRlY29kZVVSSUNvbXBvbmVudChlKX0pKTtmb3IodmFyIFQ9MDtUPE0ubGVuZ3RoO1QrKyl7dmFyIHo9TVtUXSxYPXBhcnNlSW50KHouZ2V0QXR0cmlidXRlKFwiaVwiKSwxMCksRT1kZWNvZGVVUklDb21wb25lbnQoei5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKSksWT1JKEUse3Nlcmllc0luZGV4OkE/WDphLGRhdGFQb2ludEluZGV4OnMsdzpTfSk7aWYoQSl6LmlubmVySFRNTD1TLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKFgpPDA/WTpFO2Vsc2UgaWYoei5pbm5lckhUTUw9WD09PWE/WTpFLGE9PT1YKWJyZWFrfX12YXIgRj1lKGUoe3R0SXRlbXM6cixpOmEsajpzfSx2b2lkIDAhPT0obnVsbD09PShvPVMuZ2xvYmFscy5zZXJpZXNSYW5nZSl8fHZvaWQgMD09PW98fG51bGw9PT0obj1vW2FdKXx8dm9pZCAwPT09bnx8bnVsbD09PShsPW5bc10pfHx2b2lkIDA9PT1sfHxudWxsPT09KGg9bC55WzBdKXx8dm9pZCAwPT09aD92b2lkIDA6aC55MSkmJnt5MTpudWxsPT09KGM9Uy5nbG9iYWxzLnNlcmllc1JhbmdlKXx8dm9pZCAwPT09Y3x8bnVsbD09PShkPWNbYV0pfHx2b2lkIDA9PT1kfHxudWxsPT09KGc9ZFtzXSl8fHZvaWQgMD09PWd8fG51bGw9PT0odT1nLnlbMF0pfHx2b2lkIDA9PT11P3ZvaWQgMDp1LnkxfSksdm9pZCAwIT09KG51bGw9PT0ocD1TLmdsb2JhbHMuc2VyaWVzUmFuZ2UpfHx2b2lkIDA9PT1wfHxudWxsPT09KGY9cFthXSl8fHZvaWQgMD09PWZ8fG51bGw9PT0oeD1mW3NdKXx8dm9pZCAwPT09eHx8bnVsbD09PShiPXgueVswXSl8fHZvaWQgMD09PWI/dm9pZCAwOmIueTIpJiZ7eTI6bnVsbD09PSh2PVMuZ2xvYmFscy5zZXJpZXNSYW5nZSl8fHZvaWQgMD09PXZ8fG51bGw9PT0oeT12W2FdKXx8dm9pZCAwPT09eXx8bnVsbD09PSh3PXlbc10pfHx2b2lkIDA9PT13fHxudWxsPT09KGs9dy55WzBdKXx8dm9pZCAwPT09az92b2lkIDA6ay55Mn0pO2lmKEEpe2lmKEMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoZShlKHt9LEYpLHt9LHtzaGFyZWQ6IXRoaXMuc2hvd09uSW50ZXJzZWN0JiZ0aGlzLnRDb25maWcuc2hhcmVkfSkpLEwpUy5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemU+MD9DLm1hcmtlci5lbmxhcmdlUG9pbnRzKHMpOkMudG9vbHRpcFBvc2l0aW9uLm1vdmVEeW5hbWljUG9pbnRzT25Ib3ZlcihzKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiYodGhpcy5iYXJTZXJpZXNIZWlnaHQ9dGhpcy50b29sdGlwVXRpbC5nZXRCYXJzSGVpZ2h0KFApLHRoaXMuYmFyU2VyaWVzSGVpZ2h0PjApKXt2YXIgUj1uZXcgbSh0aGlzLmN0eCksSD1TLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLWJhci1hcmVhW2o9J1wiLmNvbmNhdChzLFwiJ11cIikpO3RoaXMuZGVhY3RpdmF0ZUhvdmVyRmlsdGVyKCksdGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVN0aWNreVRvb2x0aXBPdmVyQmFycyhzLGEpO2Zvcih2YXIgRD0wO0Q8SC5sZW5ndGg7RCsrKVIucGF0aE1vdXNlRW50ZXIoSFtEXSl9fWVsc2UgQy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyhlKHtzaGFyZWQ6ITF9LEYpKSx0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmQy50b29sdGlwUG9zaXRpb24ubW92ZVN0aWNreVRvb2x0aXBPdmVyQmFycyhzLGEpLEwmJkMudG9vbHRpcFBvc2l0aW9uLm1vdmVNYXJrZXJzKGEscyl9fV0pLHR9KCksdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYmFyQ3R4PWUsdGhpcy50b3RhbEZvcm1hdHRlcj10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLnRvdGFsLmZvcm1hdHRlcix0aGlzLnRvdGFsRm9ybWF0dGVyfHwodGhpcy50b3RhbEZvcm1hdHRlcj10aGlzLncuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKX1yZXR1cm4gcih0LFt7a2V5OlwiaGFuZGxlQmFyRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQueSxhPXQueTEscz10LnkyLHI9dC5pLG89dC5qLG49dC5yZWFsSW5kZXgsbD10Lmdyb3VwSW5kZXgsaD10LnNlcmllcyxjPXQuYmFySGVpZ2h0LGQ9dC5iYXJXaWR0aCxnPXQuYmFyWFBvc2l0aW9uLHU9dC5iYXJZUG9zaXRpb24scD10LnZpc2libGVTZXJpZXMsZj10LnJlbmRlcmVkUGF0aCx4PXRoaXMudyxiPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksdj1BcnJheS5pc0FycmF5KHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKT90aGlzLmJhckN0eC5zdHJva2VXaWR0aFtuXTp0aGlzLmJhckN0eC5zdHJva2VXaWR0aCx5PWUrcGFyc2VGbG9hdChkKnApLHc9aStwYXJzZUZsb2F0KGMqcCk7eC5nbG9iYWxzLmlzWE51bWVyaWMmJiF4Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoeT1lK3BhcnNlRmxvYXQoZCoocCsxKSksdz1pK3BhcnNlRmxvYXQoYyoocCsxKSktdik7dmFyIGssQT1udWxsLFM9ZSxDPWksTD17fSxQPXguY29uZmlnLmRhdGFMYWJlbHMsST10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMsTT10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMudG90YWw7dm9pZCAwIT09dSYmdGhpcy5iYXJDdHguaXNSYW5nZUJhciYmKHc9dSxDPXUpLHZvaWQgMCE9PWcmJnRoaXMuYmFyQ3R4LmlzVmVydGljYWxHcm91cGVkUmFuZ2VCYXImJih5PWcsUz1nKTt2YXIgVD1QLm9mZnNldFgsej1QLm9mZnNldFksWD17d2lkdGg6MCxoZWlnaHQ6MH07aWYoeC5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkKXt2YXIgRT10aGlzLmJhckN0eC5zZXJpZXNbcl1bb107WD1iLmdldFRleHRSZWN0cyh4Lmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXShFKSxwYXJzZUZsb2F0KFAuc3R5bGUuZm9udFNpemUpKX12YXIgWT17eDplLHk6aSxpOnIsajpvLHJlYWxJbmRleDpuLGdyb3VwSW5kZXg6bHx8LTEscmVuZGVyZWRQYXRoOmYsYmN4OnksYmN5OncsYmFySGVpZ2h0OmMsYmFyV2lkdGg6ZCx0ZXh0UmVjdHM6WCxzdHJva2VXaWR0aDp2LGRhdGFMYWJlbHNYOlMsZGF0YUxhYmVsc1k6QyxkYXRhTGFiZWxzQ29uZmlnOlAsYmFyRGF0YUxhYmVsc0NvbmZpZzpJLGJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZzpNLG9mZlg6VCxvZmZZOnp9O3JldHVybiBMPXRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD90aGlzLmNhbGN1bGF0ZUJhcnNEYXRhTGFiZWxzUG9zaXRpb24oWSk6dGhpcy5jYWxjdWxhdGVDb2x1bW5zRGF0YUxhYmVsc1Bvc2l0aW9uKFkpLGYuYXR0cih7Y3k6TC5iY3ksY3g6TC5iY3gsajpvLHZhbDpoW3JdW29dLGJhckhlaWdodDpjLGJhcldpZHRoOmR9KSxrPXRoaXMuZHJhd0NhbGN1bGF0ZWREYXRhTGFiZWxzKHt4OkwuZGF0YUxhYmVsc1gseTpMLmRhdGFMYWJlbHNZLHZhbDp0aGlzLmJhckN0eC5pc1JhbmdlQmFyP1thLHNdOmhbcl1bb10saTpuLGo6byxiYXJXaWR0aDpkLGJhckhlaWdodDpjLHRleHRSZWN0czpYLGRhdGFMYWJlbHNDb25maWc6UH0pLHguY29uZmlnLmNoYXJ0LnN0YWNrZWQmJk0uZW5hYmxlZCYmKEE9dGhpcy5kcmF3VG90YWxEYXRhTGFiZWxzKHt4OkwudG90YWxEYXRhTGFiZWxzWCx5OkwudG90YWxEYXRhTGFiZWxzWSxyZWFsSW5kZXg6bix0ZXh0QW5jaG9yOkwudG90YWxEYXRhTGFiZWxzQW5jaG9yLHZhbDp0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4Om4sajpvfSksZGF0YUxhYmVsc0NvbmZpZzpQLGJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZzpNfSkpLHtkYXRhTGFiZWxzOmssdG90YWxEYXRhTGFiZWxzOkF9fX0se2tleTpcImdldFN0YWNrZWRUb3RhbERhdGFMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXQucmVhbEluZGV4LGE9dC5qLHM9dGhpcy53LHI9dGhpcy5iYXJDdHguc3RhY2tlZFNlcmllc1RvdGFsc1thXTtyZXR1cm4gdGhpcy50b3RhbEZvcm1hdHRlciYmKHI9dGhpcy50b3RhbEZvcm1hdHRlcihyLGUoZSh7fSxzKSx7fSx7c2VyaWVzSW5kZXg6aSxkYXRhUG9pbnRJbmRleDphLHc6c30pKSkscn19LHtrZXk6XCJjYWxjdWxhdGVDb2x1bW5zRGF0YUxhYmVsc1Bvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXRoaXMudyxzPXQuaSxyPXQuaixvPXQucmVhbEluZGV4LG49dC5ncm91cEluZGV4LGw9dC55LGg9dC5iY3gsYz10LmJhcldpZHRoLGQ9dC5iYXJIZWlnaHQsZz10LnRleHRSZWN0cyx1PXQuZGF0YUxhYmVsc1gscD10LmRhdGFMYWJlbHNZLGY9dC5kYXRhTGFiZWxzQ29uZmlnLHg9dC5iYXJEYXRhTGFiZWxzQ29uZmlnLGI9dC5iYXJUb3RhbERhdGFMYWJlbHNDb25maWcsdj10LnN0cm9rZVdpZHRoLHk9dC5vZmZYLHc9dC5vZmZZO2Q9TWF0aC5hYnMoZCk7dmFyIGs9XCJ2ZXJ0aWNhbFwiPT09YS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb24sQT10aGlzLmJhckN0eC5iYXJIZWxwZXJzLmdldFplcm9WYWx1ZUVuY291bnRlcnMoe2k6cyxqOnJ9KS56ZXJvRW5jb3VudGVycztoPWgtdi8yKygtMSE9PW4/bipjOjApO3ZhciBTPWEuZ2xvYmFscy5ncmlkV2lkdGgvYS5nbG9iYWxzLmRhdGFQb2ludHM7aWYodGhpcy5iYXJDdHguaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj91Kz1jLzI6KHU9YS5nbG9iYWxzLmlzWE51bWVyaWM/aC1jLzIreTpoLVMrYy8yK3ksQT4wJiZhLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQmJih1LT1jKkEpKSxrKXt1PXUrZy5oZWlnaHQvMi12LzItMn12YXIgQz10aGlzLmJhckN0eC5zZXJpZXNbc11bcl08MCxMPWw7c3dpdGNoKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQmJihMPWwtZCsoQz8yKmQ6MCksbC09ZCkseC5wb3NpdGlvbil7Y2FzZVwiY2VudGVyXCI6cD1rP0M/TC1kLzIrdzpMK2QvMi13OkM/TC1kLzIrZy5oZWlnaHQvMit3OkwrZC8yK2cuaGVpZ2h0LzItdzticmVhaztjYXNlXCJib3R0b21cIjpwPWs/Qz9MLWQrdzpMK2QtdzpDP0wtZCtnLmhlaWdodCt2K3c6TCtkLWcuaGVpZ2h0LzIrdi13O2JyZWFrO2Nhc2VcInRvcFwiOnA9az9DP0wrdzpMLXc6Qz9MLWcuaGVpZ2h0LzItdzpMK2cuaGVpZ2h0K3d9aWYodGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1vJiZiLmVuYWJsZWQpe3ZhciBQPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKHRoaXMuZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsKHtyZWFsSW5kZXg6byxqOnJ9KSxmLmZvbnRTaXplKTtlPUM/TC1QLmhlaWdodC8yLXctYi5vZmZzZXRZKzE4OkwrUC5oZWlnaHQrdytiLm9mZnNldFktMTgsaT11K2Iub2Zmc2V0WH1yZXR1cm4gYS5jb25maWcuY2hhcnQuc3RhY2tlZHx8KHA8MD9wPTArdjpwK2cuaGVpZ2h0LzM+YS5nbG9iYWxzLmdyaWRIZWlnaHQmJihwPWEuZ2xvYmFscy5ncmlkSGVpZ2h0LXYpKSx7YmN4OmgsYmN5OmwsZGF0YUxhYmVsc1g6dSxkYXRhTGFiZWxzWTpwLHRvdGFsRGF0YUxhYmVsc1g6aSx0b3RhbERhdGFMYWJlbHNZOmUsdG90YWxEYXRhTGFiZWxzQW5jaG9yOlwibWlkZGxlXCJ9fX0se2tleTpcImNhbGN1bGF0ZUJhcnNEYXRhTGFiZWxzUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LngsYT10Lmkscz10Lmoscj10LnJlYWxJbmRleCxvPXQuZ3JvdXBJbmRleCxuPXQuYmN5LGw9dC5iYXJIZWlnaHQsaD10LmJhcldpZHRoLGM9dC50ZXh0UmVjdHMsZD10LmRhdGFMYWJlbHNYLGc9dC5zdHJva2VXaWR0aCx1PXQuZGF0YUxhYmVsc0NvbmZpZyxwPXQuYmFyRGF0YUxhYmVsc0NvbmZpZyxmPXQuYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnLHg9dC5vZmZYLGI9dC5vZmZZLHY9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLmRhdGFQb2ludHM7aD1NYXRoLmFicyhoKTt2YXIgeSx3LGs9KG4rPS0xIT09bz9vKmw6MCktKHRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXI/MDp2KStsLzIrYy5oZWlnaHQvMitiLTMsQT1cInN0YXJ0XCIsUz10aGlzLmJhckN0eC5zZXJpZXNbYV1bc108MCxDPWk7c3dpdGNoKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQmJihDPWkraC0oUz8yKmg6MCksaT1lLmdsb2JhbHMuZ3JpZFdpZHRoLWgpLHAucG9zaXRpb24pe2Nhc2VcImNlbnRlclwiOmQ9Uz9DK2gvMi14Ok1hdGgubWF4KGMud2lkdGgvMixDLWgvMikreDticmVhaztjYXNlXCJib3R0b21cIjpkPVM/QytoLWctTWF0aC5yb3VuZChjLndpZHRoLzIpLXg6Qy1oK2crTWF0aC5yb3VuZChjLndpZHRoLzIpK3g7YnJlYWs7Y2FzZVwidG9wXCI6ZD1TP0MtZytNYXRoLnJvdW5kKGMud2lkdGgvMikteDpDLWctTWF0aC5yb3VuZChjLndpZHRoLzIpK3h9aWYodGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1yJiZmLmVuYWJsZWQpe3ZhciBMPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKHRoaXMuZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsKHtyZWFsSW5kZXg6cixqOnN9KSx1LmZvbnRTaXplKTtTPyh5PUMtZytNYXRoLnJvdW5kKEwud2lkdGgvMikteC1mLm9mZnNldFgtMTUsQT1cImVuZFwiKTp5PUMtZy1NYXRoLnJvdW5kKEwud2lkdGgvMikreCtmLm9mZnNldFgrMTUsdz1rK2Yub2Zmc2V0WX1yZXR1cm4gZS5jb25maWcuY2hhcnQuc3RhY2tlZHx8KGQ8MD9kPWQrYy53aWR0aCtnOmQrYy53aWR0aC8yPmUuZ2xvYmFscy5ncmlkV2lkdGgmJihkPWUuZ2xvYmFscy5ncmlkV2lkdGgtYy53aWR0aC1nKSkse2JjeDppLGJjeTpuLGRhdGFMYWJlbHNYOmQsZGF0YUxhYmVsc1k6ayx0b3RhbERhdGFMYWJlbHNYOnksdG90YWxEYXRhTGFiZWxzWTp3LHRvdGFsRGF0YUxhYmVsc0FuY2hvcjpBfX19LHtrZXk6XCJkcmF3Q2FsY3VsYXRlZERhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LngsYT10Lnkscz10LnZhbCxyPXQuaSxvPXQuaixuPXQudGV4dFJlY3RzLGw9dC5iYXJIZWlnaHQsaD10LmJhcldpZHRoLGM9dC5kYXRhTGFiZWxzQ29uZmlnLGQ9dGhpcy53LGc9XCJyb3RhdGUoMClcIjtcInZlcnRpY2FsXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbiYmKGc9XCJyb3RhdGUoLTkwLCBcIi5jb25jYXQoaSxcIiwgXCIpLmNvbmNhdChhLFwiKVwiKSk7dmFyIHU9bmV3IE8odGhpcy5iYXJDdHguY3R4KSxwPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksZj1jLmZvcm1hdHRlcix4PW51bGwsYj1kLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHIpPi0xO2lmKGMuZW5hYmxlZCYmIWIpe3g9cC5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCIsdHJhbnNmb3JtOmd9KTt2YXIgdj1cIlwiO3ZvaWQgMCE9PXMmJih2PWYocyxlKGUoe30sZCkse30se3Nlcmllc0luZGV4OnIsZGF0YVBvaW50SW5kZXg6byx3OmR9KSkpLCFzJiZkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQmJih2PVwiXCIpO3ZhciB5PWQuZ2xvYmFscy5zZXJpZXNbcl1bb108MCx3PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLnBvc2l0aW9uO2lmKFwidmVydGljYWxcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm9yaWVudGF0aW9uJiYoXCJ0b3BcIj09PXcmJihjLnRleHRBbmNob3I9eT9cImVuZFwiOlwic3RhcnRcIiksXCJjZW50ZXJcIj09PXcmJihjLnRleHRBbmNob3I9XCJtaWRkbGVcIiksXCJib3R0b21cIj09PXcmJihjLnRleHRBbmNob3I9eT9cImVuZFwiOlwic3RhcnRcIikpLHRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVscy5oaWRlT3ZlcmZsb3dpbmdMYWJlbHMpaDxwLmdldFRleHRSZWN0cyh2LHBhcnNlRmxvYXQoYy5zdHlsZS5mb250U2l6ZSkpLndpZHRoJiYodj1cIlwiKTtkLmNvbmZpZy5jaGFydC5zdGFja2VkJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMuaGlkZU92ZXJmbG93aW5nTGFiZWxzJiYodGhpcy5iYXJDdHguaXNIb3Jpem9udGFsP24ud2lkdGgvMS42Pk1hdGguYWJzKGgpJiYodj1cIlwiKTpuLmhlaWdodC8xLjY+TWF0aC5hYnMobCkmJih2PVwiXCIpKTt2YXIgaz1lKHt9LGMpO3RoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbCYmczwwJiYoXCJzdGFydFwiPT09Yy50ZXh0QW5jaG9yP2sudGV4dEFuY2hvcj1cImVuZFwiOlwiZW5kXCI9PT1jLnRleHRBbmNob3ImJihrLnRleHRBbmNob3I9XCJzdGFydFwiKSksdS5wbG90RGF0YUxhYmVsc1RleHQoe3g6aSx5OmEsdGV4dDp2LGk6cixqOm8scGFyZW50OngsZGF0YUxhYmVsc0NvbmZpZzprLGFsd2F5c0RyYXdEYXRhTGFiZWw6ITAsb2Zmc2V0Q29ycmVjdGlvbjohMH0pfXJldHVybiB4fX0se2tleTpcImRyYXdUb3RhbERhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQueCxhPXQueSxzPXQudmFsLHI9dC5yZWFsSW5kZXgsbz10LnRleHRBbmNob3Isbj10LmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyxsPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCk7cmV0dXJuIG4uZW5hYmxlZCYmdm9pZCAwIT09aSYmdm9pZCAwIT09YSYmdGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1yJiYoZT1sLmRyYXdUZXh0KHt4OmkseTphLGZvcmVDb2xvcjpuLnN0eWxlLmNvbG9yLHRleHQ6cyx0ZXh0QW5jaG9yOm8sZm9udEZhbWlseTpuLnN0eWxlLmZvbnRGYW1pbHksZm9udFNpemU6bi5zdHlsZS5mb250U2l6ZSxmb250V2VpZ2h0Om4uc3R5bGUuZm9udFdlaWdodH0pKSxlfX1dKSx0fSgpLG10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmJhckN0eD1lfXJldHVybiByKHQsW3trZXk6XCJpbml0VmFyaWFibGVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3RoaXMuYmFyQ3R4LnNlcmllcz10LHRoaXMuYmFyQ3R4LnRvdGFsSXRlbXM9MCx0aGlzLmJhckN0eC5zZXJpZXNMZW49MCx0aGlzLmJhckN0eC52aXNpYmxlST0tMSx0aGlzLmJhckN0eC52aXNpYmxlSXRlbXM9MTtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKylpZih0W2ldLmxlbmd0aD4wJiYodGhpcy5iYXJDdHguc2VyaWVzTGVuPXRoaXMuYmFyQ3R4LnNlcmllc0xlbisxLHRoaXMuYmFyQ3R4LnRvdGFsSXRlbXMrPXRbaV0ubGVuZ3RoKSxlLmdsb2JhbHMuaXNYTnVtZXJpYylmb3IodmFyIGE9MDthPHRbaV0ubGVuZ3RoO2ErKyllLmdsb2JhbHMuc2VyaWVzWFtpXVthXT5lLmdsb2JhbHMubWluWCYmZS5nbG9iYWxzLnNlcmllc1hbaV1bYV08ZS5nbG9iYWxzLm1heFgmJnRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcysrO2Vsc2UgdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zPWUuZ2xvYmFscy5kYXRhUG9pbnRzOzA9PT10aGlzLmJhckN0eC5zZXJpZXNMZW4mJih0aGlzLmJhckN0eC5zZXJpZXNMZW49MSksdGhpcy5iYXJDdHguemVyb1Nlcmllc2VzPVtdLGUuZ2xvYmFscy5jb21ib0NoYXJ0c3x8dGhpcy5jaGVja1plcm9TZXJpZXMoe3Nlcmllczp0fSl9fSx7a2V5OlwiaW5pdGlhbFBvc2l0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLGEscyxyLG8sbixsPXRoaXMudyxoPWwuZ2xvYmFscy5kYXRhUG9pbnRzO3RoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJihoPWwuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKTt2YXIgYz10aGlzLmJhckN0eC5zZXJpZXNMZW47aWYobC5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzJiYoYz0xKSx0aGlzLmJhckN0eC5pc0hvcml6b250YWwpcz0oaT1sLmdsb2JhbHMuZ3JpZEhlaWdodC9oKS9jLGwuZ2xvYmFscy5pc1hOdW1lcmljJiYocz0oaT1sLmdsb2JhbHMuZ3JpZEhlaWdodC90aGlzLmJhckN0eC50b3RhbEl0ZW1zKS90aGlzLmJhckN0eC5zZXJpZXNMZW4pLHM9cypwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmJhckhlaWdodCwxMCkvMTAwLC0xPT09U3RyaW5nKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0KS5pbmRleE9mKFwiJVwiKSYmKHM9cGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5iYXJIZWlnaHQsMTApKSxuPXRoaXMuYmFyQ3R4LmJhc2VMaW5lSW52ZXJ0ZWRZK2wuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyh0aGlzLmJhckN0eC5pc1JldmVyc2VkP2wuZ2xvYmFscy5ncmlkV2lkdGg6MCktKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/Mip0aGlzLmJhckN0eC5iYXNlTGluZUludmVydGVkWTowKSx0aGlzLmJhckN0eC5pc0Z1bm5lbCYmKG49bC5nbG9iYWxzLmdyaWRXaWR0aC8yKSxlPShpLXMqdGhpcy5iYXJDdHguc2VyaWVzTGVuKS8yO2Vsc2V7aWYoYT1sLmdsb2JhbHMuZ3JpZFdpZHRoL3RoaXMuYmFyQ3R4LnZpc2libGVJdGVtcyxsLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihhPWwuZ2xvYmFscy5ncmlkV2lkdGgvbC5nbG9iYWxzLmRhdGFQb2ludHMpLHI9YS9jKnBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApLzEwMCxsLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIGQ9dGhpcy5iYXJDdHgueFJhdGlvO2wuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGQ9dGhpcy5iYXJDdHguaW5pdGlhbFhSYXRpbyksbC5nbG9iYWxzLm1pblhEaWZmJiYuNSE9PWwuZ2xvYmFscy5taW5YRGlmZiYmbC5nbG9iYWxzLm1pblhEaWZmL2Q+MCYmKGE9bC5nbG9iYWxzLm1pblhEaWZmL2QpLChyPWEvYypwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDApPDEmJihyPTEpfS0xPT09U3RyaW5nKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgpLmluZGV4T2YoXCIlXCIpJiYocj1wYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKSksbz1sLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhckN0eC5iYXNlTGluZVlbdGhpcy5iYXJDdHgueWF4aXNJbmRleF0tKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/bC5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/Mip0aGlzLmJhckN0eC5iYXNlTGluZVlbdGhpcy5iYXJDdHgueWF4aXNJbmRleF06MCksdD1sLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsoYS1yKnRoaXMuYmFyQ3R4LnNlcmllc0xlbikvMn1yZXR1cm57eDp0LHk6ZSx5RGl2aXNpb246aSx4RGl2aXNpb246YSxiYXJIZWlnaHQ6cyxiYXJXaWR0aDpyLHplcm9IOm8semVyb1c6bn19fSx7a2V5OlwiaW5pdGlhbGl6ZVN0YWNrZWRQcmV2VmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudztlLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzP2UuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXXx8KHRbZV09e30pLHRbZV0ucHJldlk9W10sdFtlXS5wcmV2WD1bXSx0W2VdLnByZXZZRj1bXSx0W2VdLnByZXZYRj1bXSx0W2VdLnByZXZZVmFsPVtdLHRbZV0ucHJldlhWYWw9W119KSk6KHQucHJldlk9W10sdC5wcmV2WD1bXSx0LnByZXZZRj1bXSx0LnByZXZYRj1bXSx0LnByZXZZVmFsPVtdLHQucHJldlhWYWw9W10pfX0se2tleTpcImluaXRpYWxpemVTdGFja2VkWFlWYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC53O2UuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHM/ZS5nbG9iYWxzLnNlcmllc0dyb3Vwcy5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdfHwodFtlXT17fSksdFtlXS54QXJyaj1bXSx0W2VdLnhBcnJqRj1bXSx0W2VdLnhBcnJqVmFsPVtdLHRbZV0ueUFycmo9W10sdFtlXS55QXJyakY9W10sdFtlXS55QXJyalZhbD1bXX0pKToodC54QXJyaj1bXSx0LnhBcnJqRj1bXSx0LnhBcnJqVmFsPVtdLHQueUFycmo9W10sdC55QXJyakY9W10sdC55QXJyalZhbD1bXSl9fSx7a2V5OlwiZ2V0UGF0aEZpbGxDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzLHIsbyxuLGw9dGhpcy53LGg9bmV3IFIodGhpcy5iYXJDdHguY3R4KSxjPW51bGwsZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP2k6ZTt0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5yYW5nZXMubGVuZ3RoPjAmJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLnJhbmdlcy5tYXAoKGZ1bmN0aW9uKGEpe3RbZV1baV0+PWEuZnJvbSYmdFtlXVtpXTw9YS50byYmKGM9YS5jb2xvcil9KSk7cmV0dXJuIGwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldJiZsLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS5maWxsQ29sb3ImJihjPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLmZpbGxDb2xvciksaC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/ZDphLGRhdGFQb2ludEluZGV4OmksY29sb3I6Yyx2YWx1ZTp0W2VdW2ldLGZpbGxDb25maWc6bnVsbD09PShzPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldKXx8dm9pZCAwPT09cz92b2lkIDA6cy5maWxsLGZpbGxUeXBlOm51bGwhPT0ocj1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSkmJnZvaWQgMCE9PXImJm51bGwhPT0obz1yLmZpbGwpJiZ2b2lkIDAhPT1vJiZvLnR5cGU/bnVsbD09PShuPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldKXx8dm9pZCAwPT09bj92b2lkIDA6bi5maWxsLnR5cGU6bC5jb25maWcuZmlsbC50eXBlfSl9fSx7a2V5OlwiZ2V0U3Ryb2tlV2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9MCxzPXRoaXMudztyZXR1cm4gdGhpcy5iYXJDdHguc2VyaWVzW3RdW2VdP3RoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlPSExOnRoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlPSEwLHMuY29uZmlnLnN0cm9rZS5zaG93JiYodGhpcy5iYXJDdHguaXNOdWxsVmFsdWV8fChhPUFycmF5LmlzQXJyYXkodGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgpP3RoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoW2ldOnRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKSksYX19LHtrZXk6XCJzaG91bGRBcHBseVJhZGl1c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPSExO3JldHVybiBlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzPjAmJihlLmNvbmZpZy5jaGFydC5zdGFja2VkJiZcImxhc3RcIj09PWUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNXaGVuU3RhY2tlZD90aGlzLmJhckN0eC5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD09PXQmJihpPSEwKTppPSEwKSxpfX0se2tleTpcImJhckJhY2tncm91bmRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmosaT10LmksYT10LngxLHM9dC54MixyPXQueTEsbz10LnkyLG49dC5lbFNlcmllcyxsPXRoaXMudyxoPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksYz1uZXcgTih0aGlzLmJhckN0eC5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCk7aWYodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGg+MCYmYz09PWkpe2U+PXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoJiYoZSU9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGgpO3ZhciBkPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnNbZV0sZz1oLmRyYXdSZWN0KHZvaWQgMCE9PWE/YTowLHZvaWQgMCE9PXI/cjowLHZvaWQgMCE9PXM/czpsLmdsb2JhbHMuZ3JpZFdpZHRoLHZvaWQgMCE9PW8/bzpsLmdsb2JhbHMuZ3JpZEhlaWdodCx0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyUmFkaXVzLGQsdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhck9wYWNpdHkpO24uYWRkKGcpLGcubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1iYWNrZ3JvdW5kQmFyXCIpfX19LHtrZXk6XCJnZXRDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5iYXJXaWR0aCxhPXQuYmFyWFBvc2l0aW9uLHM9dC55MSxyPXQueTIsbz10LnN0cm9rZVdpZHRoLG49dC5zZXJpZXNHcm91cCxsPXQucmVhbEluZGV4LGg9dC5pLGM9dC5qLGQ9dC53LGc9bmV3IG0odGhpcy5iYXJDdHguY3R4KTsobz1BcnJheS5pc0FycmF5KG8pP29bbF06byl8fChvPTApO3ZhciB1PWkscD1hO251bGwhPT0oZT1kLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXSkmJnZvaWQgMCE9PWUmJmUuY29sdW1uV2lkdGhPZmZzZXQmJihwPWEtZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10uY29sdW1uV2lkdGhPZmZzZXQvMix1PWkrZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10uY29sdW1uV2lkdGhPZmZzZXQpO3ZhciBmPXAseD1wK3U7cys9LjAwMSxyKz0uMDAxO3ZhciBiPWcubW92ZShmLHMpLHY9Zy5tb3ZlKGYscykseT1nLmxpbmUoeC1vLHMpO2lmKGQuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYodj10aGlzLmJhckN0eC5nZXRQcmV2aW91c1BhdGgobCxjLCExKSksYj1iK2cubGluZShmLHIpK2cubGluZSh4LW8scikrZy5saW5lKHgtbyxzKSsoXCJhcm91bmRcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKSx2PXYrZy5saW5lKGYscykreSt5K3kreSt5K2cubGluZShmLHMpKyhcImFyb3VuZFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uP1wiIFpcIjpcIiB6XCIpLHRoaXMuc2hvdWxkQXBwbHlSYWRpdXMobCkmJihiPWcucm91bmRQYXRoQ29ybmVycyhiLGQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXMpKSxkLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgdz10aGlzLmJhckN0eDtkLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzJiZuJiYodz10aGlzLmJhckN0eFtuXSksdy55QXJyai5wdXNoKHIpLHcueUFycmpGLnB1c2goTWF0aC5hYnMocy1yKSksdy55QXJyalZhbC5wdXNoKHRoaXMuYmFyQ3R4LnNlcmllc1toXVtjXSl9cmV0dXJue3BhdGhUbzpiLHBhdGhGcm9tOnZ9fX0se2tleTpcImdldEJhcnBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmJhcllQb3NpdGlvbixhPXQuYmFySGVpZ2h0LHM9dC54MSxyPXQueDIsbz10LnN0cm9rZVdpZHRoLG49dC5zZXJpZXNHcm91cCxsPXQucmVhbEluZGV4LGg9dC5pLGM9dC5qLGQ9dC53LGc9bmV3IG0odGhpcy5iYXJDdHguY3R4KTsobz1BcnJheS5pc0FycmF5KG8pP29bbF06byl8fChvPTApO3ZhciB1PWkscD1hO251bGwhPT0oZT1kLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXSkmJnZvaWQgMCE9PWUmJmUuYmFySGVpZ2h0T2Zmc2V0JiYodT1pLWQuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdLmJhckhlaWdodE9mZnNldC8yLHA9YStkLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXS5iYXJIZWlnaHRPZmZzZXQpO3ZhciBmPXUseD11K3A7cys9LjAwMSxyKz0uMDAxO3ZhciBiPWcubW92ZShzLGYpLHY9Zy5tb3ZlKHMsZik7ZC5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJih2PXRoaXMuYmFyQ3R4LmdldFByZXZpb3VzUGF0aChsLGMsITEpKTt2YXIgeT1nLmxpbmUocyx4LW8pO2lmKGI9YitnLmxpbmUocixmKStnLmxpbmUocix4LW8pK3krKFwiYXJvdW5kXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/XCIgWlwiOlwiIHpcIiksdj12K2cubGluZShzLGYpK3kreSt5K3kreStnLmxpbmUocyxmKSsoXCJhcm91bmRcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKSx0aGlzLnNob3VsZEFwcGx5UmFkaXVzKGwpJiYoYj1nLnJvdW5kUGF0aENvcm5lcnMoYixkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzKSksZC5jb25maWcuY2hhcnQuc3RhY2tlZCl7dmFyIHc9dGhpcy5iYXJDdHg7ZC5nbG9iYWxzLmhhc1Nlcmllc0dyb3VwcyYmbiYmKHc9dGhpcy5iYXJDdHhbbl0pLHcueEFycmoucHVzaChyKSx3LnhBcnJqRi5wdXNoKE1hdGguYWJzKHMtcikpLHcueEFycmpWYWwucHVzaCh0aGlzLmJhckN0eC5zZXJpZXNbaF1bY10pfXJldHVybntwYXRoVG86YixwYXRoRnJvbTp2fX19LHtrZXk6XCJjaGVja1plcm9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5zZXJpZXMsaT10aGlzLncsYT0wO2E8ZS5sZW5ndGg7YSsrKXtmb3IodmFyIHM9MCxyPTA7cjxlW2kuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7cisrKXMrPWVbYV1bcl07MD09PXMmJnRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcy5wdXNoKGEpfX19LHtrZXk6XCJnZXRYRm9yVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0/ZTpudWxsO3JldHVybiBudWxsIT10JiYoaT1lK3QvdGhpcy5iYXJDdHguaW52ZXJ0ZWRZUmF0aW8tMioodGhpcy5iYXJDdHguaXNSZXZlcnNlZD90L3RoaXMuYmFyQ3R4LmludmVydGVkWVJhdGlvOjApKSxpfX0se2tleTpcImdldFlGb3JWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXT9lOm51bGw7cmV0dXJuIG51bGwhPXQmJihpPWUtdC90aGlzLmJhckN0eC55UmF0aW9bdGhpcy5iYXJDdHgueWF4aXNJbmRleF0rMioodGhpcy5iYXJDdHguaXNSZXZlcnNlZD90L3RoaXMuYmFyQ3R4LnlSYXRpb1t0aGlzLmJhckN0eC55YXhpc0luZGV4XTowKSksaX19LHtrZXk6XCJnZXRHb2FsVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEscyxyKXt2YXIgbj10aGlzLGw9dGhpcy53LGg9W10sYz1mdW5jdGlvbihlLHMpe3ZhciByO2gucHVzaCgobyhyPXt9LHQsXCJ4XCI9PT10P24uZ2V0WEZvclZhbHVlKGUsaSwhMSk6bi5nZXRZRm9yVmFsdWUoZSxhLCExKSksbyhyLFwiYXR0cnNcIixzKSxyKSl9O2lmKGwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXSYmbC5nbG9iYWxzLnNlcmllc0dvYWxzW3NdW3JdJiZBcnJheS5pc0FycmF5KGwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXSkmJmwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXS5mb3JFYWNoKChmdW5jdGlvbih0KXtjKHQudmFsdWUsdCl9KSksdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5pc0R1bWJiZWxsJiZsLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoKXt2YXIgZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmR1bWJiZWxsQ29sb3JzP3RoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZHVtYmJlbGxDb2xvcnM6bC5nbG9iYWxzLmNvbG9ycyxnPXtzdHJva2VIZWlnaHQ6XCJ4XCI9PT10PzA6bC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtzXSxzdHJva2VXaWR0aDpcInhcIj09PXQ/bC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtzXTowLHN0cm9rZURhc2hBcnJheTowLHN0cm9rZUxpbmVDYXA6XCJyb3VuZFwiLHN0cm9rZUNvbG9yOkFycmF5LmlzQXJyYXkoZFtzXSk/ZFtzXVswXTpkW3NdfTtjKGwuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3NdW3JdLGcpLGMobC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3NdW3JdLGUoZSh7fSxnKSx7fSx7c3Ryb2tlQ29sb3I6QXJyYXkuaXNBcnJheShkW3NdKT9kW3NdWzFdOmRbc119KSl9cmV0dXJuIGh9fSx7a2V5OlwiZHJhd0dvYWxMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5iYXJYUG9zaXRpb24saT10LmJhcllQb3NpdGlvbixhPXQuZ29hbFgscz10LmdvYWxZLHI9dC5iYXJXaWR0aCxvPXQuYmFySGVpZ2h0LG49bmV3IG0odGhpcy5iYXJDdHguY3R4KSxsPW4uZ3JvdXAoe2NsYXNzTmFtZTpcImFwZXhjaGFydHMtYmFyLWdvYWxzLWdyb3Vwc1wifSk7bC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpLHRoaXMuYmFyQ3R4LncuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6bC5ub2RlfSksbC5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdCh0aGlzLmJhckN0eC53Lmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBoPW51bGw7cmV0dXJuIHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD9BcnJheS5pc0FycmF5KGEpJiZhLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMCE9PXQuYXR0cnMuc3Ryb2tlSGVpZ2h0P3QuYXR0cnMuc3Ryb2tlSGVpZ2h0Om8vMixhPWkrZStvLzI7aD1uLmRyYXdMaW5lKHQueCxhLTIqZSx0LngsYSx0LmF0dHJzLnN0cm9rZUNvbG9yP3QuYXR0cnMuc3Ryb2tlQ29sb3I6dm9pZCAwLHQuYXR0cnMuc3Ryb2tlRGFzaEFycmF5LHQuYXR0cnMuc3Ryb2tlV2lkdGg/dC5hdHRycy5zdHJva2VXaWR0aDoyLHQuYXR0cnMuc3Ryb2tlTGluZUNhcCksbC5hZGQoaCl9KSk6QXJyYXkuaXNBcnJheShzKSYmcy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgaT12b2lkIDAhPT10LmF0dHJzLnN0cm9rZVdpZHRoP3QuYXR0cnMuc3Ryb2tlV2lkdGg6ci8yLGE9ZStpK3IvMjtoPW4uZHJhd0xpbmUoYS0yKmksdC55LGEsdC55LHQuYXR0cnMuc3Ryb2tlQ29sb3I/dC5hdHRycy5zdHJva2VDb2xvcjp2b2lkIDAsdC5hdHRycy5zdHJva2VEYXNoQXJyYXksdC5hdHRycy5zdHJva2VIZWlnaHQ/dC5hdHRycy5zdHJva2VIZWlnaHQ6Mix0LmF0dHJzLnN0cm9rZUxpbmVDYXApLGwuYWRkKGgpfSkpLGx9fSx7a2V5OlwiZHJhd0JhclNoYWRvd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQucHJldlBhdGhzLGk9dC5jdXJyUGF0aHMsYT10LmNvbG9yLHM9dGhpcy53LHI9ZS54LG89ZS54MSxuPWUuYmFyWVBvc2l0aW9uLGw9aS54LGg9aS54MSxjPWkuYmFyWVBvc2l0aW9uLGQ9bitpLmJhckhlaWdodCxnPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksdT1uZXcgeCxwPWcubW92ZShvLGQpK2cubGluZShyLGQpK2cubGluZShsLGMpK2cubGluZShoLGMpK2cubGluZShvLGQpKyhcImFyb3VuZFwiPT09cy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uP1wiIFpcIjpcIiB6XCIpO3JldHVybiBnLmRyYXdQYXRoKHtkOnAsZmlsbDp1LnNoYWRlQ29sb3IoLjUseC5yZ2IyaGV4KGEpKSxzdHJva2U6XCJub25lXCIsc3Ryb2tlV2lkdGg6MCxmaWxsT3BhY2l0eToxLGNsYXNzZXM6XCJhcGV4Y2hhcnRzLWJhci1zaGFkb3dzXCJ9KX19LHtrZXk6XCJnZXRaZXJvVmFsdWVFbmNvdW50ZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC5qLGE9dGhpcy53LHM9MCxyPTA7cmV0dXJuIGEuZ2xvYmFscy5zZXJpZXNQZXJjZW50LmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7dFtpXSYmcysrLGE8ZSYmMD09PXRbaV0mJnIrK30pKSx7bm9uWmVyb0NvbHVtbnM6cyx6ZXJvRW5jb3VudGVyczpyfX19XSksdH0oKSx5dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLmJhck9wdGlvbnM9cy5jb25maWcucGxvdE9wdGlvbnMuYmFyLHRoaXMuaXNIb3Jpem9udGFsPXRoaXMuYmFyT3B0aW9ucy5ob3Jpem9udGFsLHRoaXMuc3Ryb2tlV2lkdGg9cy5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMuaXNOdWxsVmFsdWU9ITEsdGhpcy5pc1JhbmdlQmFyPXMuZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgmJnRoaXMuaXNIb3Jpem9udGFsLHRoaXMuaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj0hcy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmcy5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCYmcy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzLHRoaXMuaXNGdW5uZWw9dGhpcy5iYXJPcHRpb25zLmlzRnVubmVsLHRoaXMueHlSYXRpb3M9aSxudWxsIT09dGhpcy54eVJhdGlvcyYmKHRoaXMueFJhdGlvPWkueFJhdGlvLHRoaXMuaW5pdGlhbFhSYXRpbz1pLmluaXRpYWxYUmF0aW8sdGhpcy55UmF0aW89aS55UmF0aW8sdGhpcy5pbnZlcnRlZFhSYXRpbz1pLmludmVydGVkWFJhdGlvLHRoaXMuaW52ZXJ0ZWRZUmF0aW89aS5pbnZlcnRlZFlSYXRpbyx0aGlzLmJhc2VMaW5lWT1pLmJhc2VMaW5lWSx0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZPWkuYmFzZUxpbmVJbnZlcnRlZFkpLHRoaXMueWF4aXNJbmRleD0wLHRoaXMuc2VyaWVzTGVuPTAsdGhpcy5wYXRoQXJyPVtdO3ZhciByPW5ldyBOKHRoaXMuY3R4KTt0aGlzLmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PXIuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJkZXNjXCIsW1wiYmFyXCIsXCJjb2x1bW5cIl0pO3ZhciBvPXIuZ2V0QmFyU2VyaWVzSW5kaWNlcygpLG49bmV3IHkodGhpcy5jdHgpO3RoaXMuc3RhY2tlZFNlcmllc1RvdGFscz1uLmdldFN0YWNrZWRTZXJpZXNUb3RhbHModGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybi0xPT09by5pbmRleE9mKGUpP2U6LTF9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXR9KSkpLHRoaXMuYmFySGVscGVycz1uZXcgbXQodGhpcyl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMudyxzPW5ldyBtKHRoaXMuY3R4KSxyPW5ldyB5KHRoaXMuY3R4LGEpO3Q9ci5nZXRMb2dTZXJpZXModCksdGhpcy5zZXJpZXM9dCx0aGlzLnlSYXRpbz1yLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpO3ZhciBvPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pO2EuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCYmdGhpcy50b3RhbEl0ZW1zPnRoaXMuYmFyT3B0aW9ucy5kYXRhTGFiZWxzLm1heEl0ZW1zJiZjb25zb2xlLndhcm4oXCJXQVJOSU5HOiBEYXRhTGFiZWxzIGFyZSBlbmFibGVkIGJ1dCB0aGVyZSBhcmUgdG9vIG1hbnkgdG8gZGlzcGxheS4gVGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWUgd2hlbiByZW5kZXJpbmcgLSBBcGV4Q2hhcnRzXCIpO2Zvcih2YXIgbj0wLGw9MDtuPHQubGVuZ3RoO24rKyxsKyspe3ZhciBoLGMsZCxnLHU9dm9pZCAwLHA9dm9pZCAwLGY9W10sYj1bXSx2PWEuZ2xvYmFscy5jb21ib0NoYXJ0cz9pW25dOm4sdz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIscmVsOm4rMSxzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSksXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTt0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1Nlcmllcyh3LHYpLHRbbl0ubGVuZ3RoPjAmJih0aGlzLnZpc2libGVJPXRoaXMudmlzaWJsZUkrMSk7dmFyIGs9MCxBPTA7dGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9diksdGhpcy5pc1JldmVyc2VkPWEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0mJmEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0ucmV2ZXJzZWQ7dmFyIFM9dGhpcy5iYXJIZWxwZXJzLmluaXRpYWxQb3NpdGlvbnMoKTtwPVMueSxrPVMuYmFySGVpZ2h0LGM9Uy55RGl2aXNpb24sZz1TLnplcm9XLHU9Uy54LEE9Uy5iYXJXaWR0aCxoPVMueERpdmlzaW9uLGQ9Uy56ZXJvSCx0aGlzLmhvcml6b250YWx8fGIucHVzaCh1K0EvMik7dmFyIEM9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6dn0pO2EuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6Qy5ub2RlfSksQy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpO3ZhciBMPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc1wifSksUD1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLXNoYWRvd3NcIn0pO2EuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6UC5ub2RlfSksUC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpO2Zvcih2YXIgST0wO0k8YS5nbG9iYWxzLmRhdGFQb2ludHM7SSsrKXt2YXIgTT10aGlzLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgobixJLHYpLFQ9bnVsbCx6PXtpbmRleGVzOntpOm4sajpJLHJlYWxJbmRleDp2LGJjOmx9LHg6dSx5OnAsc3Ryb2tlV2lkdGg6TSxlbFNlcmllczp3fTt0aGlzLmlzSG9yaXpvbnRhbD8oVD10aGlzLmRyYXdCYXJQYXRocyhlKGUoe30seikse30se2JhckhlaWdodDprLHplcm9XOmcseURpdmlzaW9uOmN9KSksQT10aGlzLnNlcmllc1tuXVtJXS90aGlzLmludmVydGVkWVJhdGlvKTooVD10aGlzLmRyYXdDb2x1bW5QYXRocyhlKGUoe30seikse30se3hEaXZpc2lvbjpoLGJhcldpZHRoOkEsemVyb0g6ZH0pKSxrPXRoaXMuc2VyaWVzW25dW0ldL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0pO3ZhciBYPXRoaXMuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKHQsbixJLHYpO2lmKHRoaXMuaXNGdW5uZWwmJnRoaXMuYmFyT3B0aW9ucy5pc0Z1bm5lbDNkJiZ0aGlzLnBhdGhBcnIubGVuZ3RoJiZJPjApe3ZhciBFPXRoaXMuYmFySGVscGVycy5kcmF3QmFyU2hhZG93KHtjb2xvcjpcInN0cmluZ1wiPT10eXBlb2YgWCYmLTE9PT0obnVsbD09WD92b2lkIDA6WC5pbmRleE9mKFwidXJsXCIpKT9YOnguaGV4VG9SZ2JhKGEuZ2xvYmFscy5jb2xvcnNbbl0pLHByZXZQYXRoczp0aGlzLnBhdGhBcnJbdGhpcy5wYXRoQXJyLmxlbmd0aC0xXSxjdXJyUGF0aHM6VH0pO0UmJlAuYWRkKEUpfXRoaXMucGF0aEFyci5wdXNoKFQpO3ZhciBZPXRoaXMuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpULmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246VC5iYXJZUG9zaXRpb24sZ29hbFg6VC5nb2FsWCxnb2FsWTpULmdvYWxZLGJhckhlaWdodDprLGJhcldpZHRoOkF9KTtZJiZMLmFkZChZKSxwPVQueSx1PVQueCxJPjAmJmIucHVzaCh1K0EvMiksZi5wdXNoKHApLHRoaXMucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dixwYXRoRmlsbDpYLGo6SSxpOm4scGF0aEZyb206VC5wYXRoRnJvbSxwYXRoVG86VC5wYXRoVG8sc3Ryb2tlV2lkdGg6TSxlbFNlcmllczp3LHg6dSx5OnAsc2VyaWVzOnQsYmFySGVpZ2h0OlQuYmFySGVpZ2h0P1QuYmFySGVpZ2h0OmssYmFyV2lkdGg6VC5iYXJXaWR0aD9ULmJhcldpZHRoOkEsZWxEYXRhTGFiZWxzV3JhcDpDLGVsR29hbHNNYXJrZXJzOkwsZWxCYXJTaGFkb3dzOlAsdmlzaWJsZVNlcmllczp0aGlzLnZpc2libGVJLHR5cGU6XCJiYXJcIn0pfWEuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPWIsYS5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09ZixvLmFkZCh3KX1yZXR1cm4gb319LHtrZXk6XCJyZW5kZXJTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnJlYWxJbmRleCxpPXQucGF0aEZpbGwsYT10LmxpbmVGaWxsLHM9dC5qLHI9dC5pLG89dC5ncm91cEluZGV4LG49dC5wYXRoRnJvbSxsPXQucGF0aFRvLGg9dC5zdHJva2VXaWR0aCxjPXQuZWxTZXJpZXMsZD10LngsZz10LnksdT10LnkxLHA9dC55MixmPXQuc2VyaWVzLHg9dC5iYXJIZWlnaHQsYj10LmJhcldpZHRoLHk9dC5iYXJYUG9zaXRpb24sdz10LmJhcllQb3NpdGlvbixrPXQuZWxEYXRhTGFiZWxzV3JhcCxBPXQuZWxHb2Fsc01hcmtlcnMsUz10LmVsQmFyU2hhZG93cyxDPXQudmlzaWJsZVNlcmllcyxMPXQudHlwZSxQPXRoaXMudyxJPW5ldyBtKHRoaXMuY3R4KTthfHwoYT10aGlzLmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/UC5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbc106UC5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbZV0pLFAuY29uZmlnLnNlcmllc1tyXS5kYXRhW3NdJiZQLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtzXS5zdHJva2VDb2xvciYmKGE9UC5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10uc3Ryb2tlQ29sb3IpLHRoaXMuaXNOdWxsVmFsdWUmJihpPVwibm9uZVwiKTt2YXIgTT1zL1AuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSooUC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZC9QLmdsb2JhbHMuZGF0YVBvaW50cykvMi40LFQ9SS5yZW5kZXJQYXRocyh7aTpyLGo6cyxyZWFsSW5kZXg6ZSxwYXRoRnJvbTpuLHBhdGhUbzpsLHN0cm9rZTphLHN0cm9rZVdpZHRoOmgsc3Ryb2tlTGluZUNhcDpQLmNvbmZpZy5zdHJva2UubGluZUNhcCxmaWxsOmksYW5pbWF0aW9uRGVsYXk6TSxpbml0aWFsU3BlZWQ6UC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCxkYXRhQ2hhbmdlU3BlZWQ6UC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLGNsYXNzTmFtZTpcImFwZXhjaGFydHMtXCIuY29uY2F0KEwsXCItYXJlYVwiKX0pO1QuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoUC5nbG9iYWxzLmN1aWQsXCIpXCIpKTt2YXIgej1QLmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHM7ei5jb3VudD4wJiZzPj1QLmdsb2JhbHMuZGF0YVBvaW50cy16LmNvdW50JiYoVC5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1kYXNoYXJyYXlcIix6LmRhc2hBcnJheSksVC5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiLHouc3Ryb2tlV2lkdGgpLFQubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWxsLW9wYWNpdHlcIix6LmZpbGxPcGFjaXR5KSksdm9pZCAwIT09dSYmdm9pZCAwIT09cCYmKFQuYXR0cihcImRhdGEtcmFuZ2UteTFcIix1KSxULmF0dHIoXCJkYXRhLXJhbmdlLXkyXCIscCkpLG5ldyB2KHRoaXMuY3R4KS5zZXRTZWxlY3Rpb25GaWx0ZXIoVCxlLHMpLGMuYWRkKFQpO3ZhciBYPW5ldyB2dCh0aGlzKS5oYW5kbGVCYXJEYXRhTGFiZWxzKHt4OmQseTpnLHkxOnUseTI6cCxpOnIsajpzLHNlcmllczpmLHJlYWxJbmRleDplLGdyb3VwSW5kZXg6byxiYXJIZWlnaHQ6eCxiYXJXaWR0aDpiLGJhclhQb3NpdGlvbjp5LGJhcllQb3NpdGlvbjp3LHJlbmRlcmVkUGF0aDpULHZpc2libGVTZXJpZXM6Q30pO3JldHVybiBudWxsIT09WC5kYXRhTGFiZWxzJiZrLmFkZChYLmRhdGFMYWJlbHMpLFgudG90YWxEYXRhTGFiZWxzJiZrLmFkZChYLnRvdGFsRGF0YUxhYmVscyksYy5hZGQoayksQSYmYy5hZGQoQSksUyYmYy5hZGQoUyksY319LHtrZXk6XCJkcmF3QmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuaW5kZXhlcyxhPXQuYmFySGVpZ2h0LHM9dC5zdHJva2VXaWR0aCxyPXQuemVyb1csbz10Lngsbj10LnksbD10LnlEaXZpc2lvbixoPXQuZWxTZXJpZXMsYz10aGlzLncsZD1pLmksZz1pLmo7aWYoYy5nbG9iYWxzLmlzWE51bWVyaWMpZT0obj0oYy5nbG9iYWxzLnNlcmllc1hbZF1bZ10tYy5nbG9iYWxzLm1pblgpL3RoaXMuaW52ZXJ0ZWRYUmF0aW8tYSkrYSp0aGlzLnZpc2libGVJO2Vsc2UgaWYoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkKXt2YXIgdT0wLHA9MDtjLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3RbZ10mJnUrKyxlPGQmJjA9PT10W2ddJiZwKyt9KSksdT4wJiYoYT10aGlzLnNlcmllc0xlbiphL3UpLGU9bithKnRoaXMudmlzaWJsZUksZS09YSpwfWVsc2UgZT1uK2EqdGhpcy52aXNpYmxlSTt0aGlzLmlzRnVubmVsJiYoci09KHRoaXMuYmFySGVscGVycy5nZXRYRm9yVmFsdWUodGhpcy5zZXJpZXNbZF1bZ10sciktcikvMiksbz10aGlzLmJhckhlbHBlcnMuZ2V0WEZvclZhbHVlKHRoaXMuc2VyaWVzW2RdW2ddLHIpO3ZhciBmPXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOmUsYmFySGVpZ2h0OmEseDE6cix4MjpvLHN0cm9rZVdpZHRoOnMsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxpOmQsajpnLHc6Y30pO3JldHVybiBjLmdsb2JhbHMuaXNYTnVtZXJpY3x8KG4rPWwpLHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtqOmcsaTpkLHkxOmUtYSp0aGlzLnZpc2libGVJLHkyOmEqdGhpcy5zZXJpZXNMZW4sZWxTZXJpZXM6aH0pLHtwYXRoVG86Zi5wYXRoVG8scGF0aEZyb206Zi5wYXRoRnJvbSx4MTpyLHg6byx5Om4sZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIscixudWxsLGQsZyksYmFyWVBvc2l0aW9uOmUsYmFySGVpZ2h0OmF9fX0se2tleTpcImRyYXdDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5pbmRleGVzLGE9dC54LHM9dC55LHI9dC54RGl2aXNpb24sbz10LmJhcldpZHRoLG49dC56ZXJvSCxsPXQuc3Ryb2tlV2lkdGgsaD10LmVsU2VyaWVzLGM9dGhpcy53LGQ9aS5yZWFsSW5kZXgsZz1pLmksdT1pLmoscD1pLmJjO2lmKGMuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgZj10aGlzLmdldEJhclhGb3JOdW1lcmljWEF4aXMoe3g6YSxqOnUscmVhbEluZGV4OmQsYmFyV2lkdGg6b30pO2E9Zi54LGU9Zi5iYXJYUG9zaXRpb259ZWxzZSBpZihjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQpe3ZhciB4PXRoaXMuYmFySGVscGVycy5nZXRaZXJvVmFsdWVFbmNvdW50ZXJzKHtpOmcsajp1fSksYj14Lm5vblplcm9Db2x1bW5zLHY9eC56ZXJvRW5jb3VudGVycztiPjAmJihvPXRoaXMuc2VyaWVzTGVuKm8vYiksZT1hK28qdGhpcy52aXNpYmxlSSxlLT1vKnZ9ZWxzZSBlPWErbyp0aGlzLnZpc2libGVJO3M9dGhpcy5iYXJIZWxwZXJzLmdldFlGb3JWYWx1ZSh0aGlzLnNlcmllc1tnXVt1XSxuKTt2YXIgbT10aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoe2JhclhQb3NpdGlvbjplLGJhcldpZHRoOm8seTE6bix5MjpzLHN0cm9rZVdpZHRoOmwsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxpOmcsajp1LHc6Y30pO3JldHVybiBjLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGErPXIpLHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtiYzpwLGo6dSxpOmcseDE6ZS1sLzItbyp0aGlzLnZpc2libGVJLHgyOm8qdGhpcy5zZXJpZXNMZW4rbC8yLGVsU2VyaWVzOmh9KSx7cGF0aFRvOm0ucGF0aFRvLHBhdGhGcm9tOm0ucGF0aEZyb20seDphLHk6cyxnb2FsWTp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInlcIixudWxsLG4sZyx1KSxiYXJYUG9zaXRpb246ZSxiYXJXaWR0aDpvfX19LHtrZXk6XCJnZXRCYXJYRm9yTnVtZXJpY1hBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC54LGk9dC5iYXJXaWR0aCxhPXQucmVhbEluZGV4LHM9dC5qLHI9dGhpcy53LG89YTtyZXR1cm4gci5nbG9iYWxzLnNlcmllc1hbYV0ubGVuZ3RofHwobz1yLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleCksci5nbG9iYWxzLnNlcmllc1hbb11bc10mJihlPShyLmdsb2JhbHMuc2VyaWVzWFtvXVtzXS1yLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8taSp0aGlzLnNlcmllc0xlbi8yKSx7YmFyWFBvc2l0aW9uOmUraSp0aGlzLnZpc2libGVJLHg6ZX19fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGksYT10aGlzLncscz0wO3M8YS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3MrKyl7dmFyIHI9YS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc107ci5wYXRocyYmci5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQoci5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQodCwxMCkmJnZvaWQgMCE9PWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdLnBhdGhzW2VdJiYoaT1hLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1tlXS5kKX1yZXR1cm4gaX19XSksdH0oKSx3dD1mdW5jdGlvbih0KXtuKHMseXQpO3ZhciBpPWQocyk7ZnVuY3Rpb24gcygpe3JldHVybiBhKHRoaXMscyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHIocyxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMscz10aGlzLnc7dGhpcy5ncmFwaGljcz1uZXcgbSh0aGlzLmN0eCksdGhpcy5iYXI9bmV3IHl0KHRoaXMuY3R4LHRoaXMueHlSYXRpb3MpO3ZhciByPW5ldyB5KHRoaXMuY3R4LHMpO3Q9ci5nZXRMb2dTZXJpZXModCksdGhpcy55UmF0aW89ci5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KSxcIjEwMCVcIj09PXMuY29uZmlnLmNoYXJ0LnN0YWNrVHlwZSYmKHQ9cy5nbG9iYWxzLnNlcmllc1BlcmNlbnQuc2xpY2UoKSksdGhpcy5zZXJpZXM9dCx0aGlzLmJhckhlbHBlcnMuaW5pdGlhbGl6ZVN0YWNrZWRQcmV2VmFycyh0aGlzKTtmb3IodmFyIG89dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wifSksbj0wLGw9MCxoPWZ1bmN0aW9uKHIsaCl7dmFyIGM9dm9pZCAwLGQ9dm9pZCAwLGc9dm9pZCAwLHU9dm9pZCAwLHA9LTE7YS5ncm91cEN0eD1hLHMuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmluZGV4T2Yocy5jb25maWcuc2VyaWVzW3JdLm5hbWUpPi0xJiYocD1lKX0pKSwtMSE9PXAmJihhLmdyb3VwQ3R4PWFbcy5nbG9iYWxzLnNlcmllc0dyb3Vwc1twXV0pO3ZhciBmPVtdLGI9W10sdj1zLmdsb2JhbHMuY29tYm9DaGFydHM/aVtyXTpyO2EueVJhdGlvLmxlbmd0aD4xJiYoYS55YXhpc0luZGV4PXYpLGEuaXNSZXZlcnNlZD1zLmNvbmZpZy55YXhpc1thLnlheGlzSW5kZXhdJiZzLmNvbmZpZy55YXhpc1thLnlheGlzSW5kZXhdLnJldmVyc2VkO3ZhciBtPWEuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKHMuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSkscmVsOnIrMSxcImRhdGE6cmVhbEluZGV4XCI6dn0pO2EuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKG0sdik7dmFyIHk9YS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6dn0pLHc9YS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1nb2Fscy1tYXJrZXJzXCJ9KSxrPTAsQT0wLFM9YS5pbml0aWFsUG9zaXRpb25zKG4sbCxjLGQsZyx1KTtsPVMueSxrPVMuYmFySGVpZ2h0LGQ9Uy55RGl2aXNpb24sdT1TLnplcm9XLG49Uy54LEE9Uy5iYXJXaWR0aCxjPVMueERpdmlzaW9uLGc9Uy56ZXJvSCxhLmJhckhlbHBlcnMuaW5pdGlhbGl6ZVN0YWNrZWRYWVZhcnMoYSksMT09PWEuZ3JvdXBDdHgucHJldlkubGVuZ3RoJiZhLmdyb3VwQ3R4LnByZXZZWzBdLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odCl9KSkmJihhLmdyb3VwQ3R4LnByZXZZWzBdPWEuZ3JvdXBDdHgucHJldllbMF0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZ30pKSxhLmdyb3VwQ3R4LnByZXZZRlswXT1hLmdyb3VwQ3R4LnByZXZZRlswXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwfSkpKTtmb3IodmFyIEM9MDtDPHMuZ2xvYmFscy5kYXRhUG9pbnRzO0MrKyl7dmFyIEw9YS5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKHIsQyx2KSxQPXtpbmRleGVzOntpOnIsajpDLHJlYWxJbmRleDp2LGJjOmh9LHN0cm9rZVdpZHRoOkwseDpuLHk6bCxlbFNlcmllczptLGdyb3VwSW5kZXg6cCxzZXJpZXNHcm91cDpzLmdsb2JhbHMuc2VyaWVzR3JvdXBzW3BdfSxJPW51bGw7YS5pc0hvcml6b250YWw/KEk9YS5kcmF3U3RhY2tlZEJhclBhdGhzKGUoZSh7fSxQKSx7fSx7emVyb1c6dSxiYXJIZWlnaHQ6ayx5RGl2aXNpb246ZH0pKSxBPWEuc2VyaWVzW3JdW0NdL2EuaW52ZXJ0ZWRZUmF0aW8pOihJPWEuZHJhd1N0YWNrZWRDb2x1bW5QYXRocyhlKGUoe30sUCkse30se3hEaXZpc2lvbjpjLGJhcldpZHRoOkEsemVyb0g6Z30pKSxrPWEuc2VyaWVzW3JdW0NdL2EueVJhdGlvW2EueWF4aXNJbmRleF0pO3ZhciBNPWEuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpJLmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246SS5iYXJZUG9zaXRpb24sZ29hbFg6SS5nb2FsWCxnb2FsWTpJLmdvYWxZLGJhckhlaWdodDprLGJhcldpZHRoOkF9KTtNJiZ3LmFkZChNKSxsPUkueSxuPUkueCxmLnB1c2gobiksYi5wdXNoKGwpO3ZhciBUPWEuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKHQscixDLHYpO209YS5yZW5kZXJTZXJpZXMoe3JlYWxJbmRleDp2LHBhdGhGaWxsOlQsajpDLGk6cixncm91cEluZGV4OnAscGF0aEZyb206SS5wYXRoRnJvbSxwYXRoVG86SS5wYXRoVG8sc3Ryb2tlV2lkdGg6TCxlbFNlcmllczptLHg6bix5Omwsc2VyaWVzOnQsYmFySGVpZ2h0OmssYmFyV2lkdGg6QSxlbERhdGFMYWJlbHNXcmFwOnksZWxHb2Fsc01hcmtlcnM6dyx0eXBlOlwiYmFyXCIsdmlzaWJsZVNlcmllczowfSl9cy5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbdl09ZixzLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1t2XT1iLGEuZ3JvdXBDdHgucHJldlkucHVzaChhLmdyb3VwQ3R4LnlBcnJqKSxhLmdyb3VwQ3R4LnByZXZZRi5wdXNoKGEuZ3JvdXBDdHgueUFycmpGKSxhLmdyb3VwQ3R4LnByZXZZVmFsLnB1c2goYS5ncm91cEN0eC55QXJyalZhbCksYS5ncm91cEN0eC5wcmV2WC5wdXNoKGEuZ3JvdXBDdHgueEFycmopLGEuZ3JvdXBDdHgucHJldlhGLnB1c2goYS5ncm91cEN0eC54QXJyakYpLGEuZ3JvdXBDdHgucHJldlhWYWwucHVzaChhLmdyb3VwQ3R4LnhBcnJqVmFsKSxvLmFkZChtKX0sYz0wLGQ9MDtjPHQubGVuZ3RoO2MrKyxkKyspaChjLGQpO3JldHVybiBvfX0se2tleTpcImluaXRpYWxQb3NpdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG8sbixsLGgsYz10aGlzLnc7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsPyhsPShsPWE9Yy5nbG9iYWxzLmdyaWRIZWlnaHQvYy5nbG9iYWxzLmRhdGFQb2ludHMpKnBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQsMTApLzEwMCwtMT09PVN0cmluZyhjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0KS5pbmRleE9mKFwiJVwiKSYmKGw9cGFyc2VJbnQoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJhckhlaWdodCwxMCkpLHI9dGhpcy5iYXNlTGluZUludmVydGVkWStjLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsodGhpcy5pc1JldmVyc2VkP2MuZ2xvYmFscy5ncmlkV2lkdGg6MCktKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVJbnZlcnRlZFk6MCksZT0oYS1sKS8yKTooaD1pPWMuZ2xvYmFscy5ncmlkV2lkdGgvYy5nbG9iYWxzLmRhdGFQb2ludHMsaD1jLmdsb2JhbHMuaXNYTnVtZXJpYyYmYy5nbG9iYWxzLmRhdGFQb2ludHM+MT8oaT1jLmdsb2JhbHMubWluWERpZmYvdGhpcy54UmF0aW8pKnBhcnNlSW50KHRoaXMuYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkvMTAwOmgqcGFyc2VJbnQoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoLDEwKS8xMDAsLTE9PT1TdHJpbmcoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoKS5pbmRleE9mKFwiJVwiKSYmKGg9cGFyc2VJbnQoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoLDEwKSkscz1jLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdLSh0aGlzLmlzUmV2ZXJzZWQ/Yy5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF06MCksdD1jLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsoaS1oKS8yKSx7eDp0LHk6ZSx5RGl2aXNpb246YSx4RGl2aXNpb246aSxiYXJIZWlnaHQ6bnVsbCE9PShvPWMuZ2xvYmFscy5zZXJpZXNHcm91cHMpJiZ2b2lkIDAhPT1vJiZvLmxlbmd0aD9sL2MuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoOmwsYmFyV2lkdGg6bnVsbCE9PShuPWMuZ2xvYmFscy5zZXJpZXNHcm91cHMpJiZ2b2lkIDAhPT1uJiZuLmxlbmd0aD9oL2MuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoOmgsemVyb0g6cyx6ZXJvVzpyfX19LHtrZXk6XCJkcmF3U3RhY2tlZEJhclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGk9dC5pbmRleGVzLGE9dC5iYXJIZWlnaHQscz10LnN0cm9rZVdpZHRoLHI9dC56ZXJvVyxvPXQueCxuPXQueSxsPXQuZ3JvdXBJbmRleCxoPXQuc2VyaWVzR3JvdXAsYz10LnlEaXZpc2lvbixkPXQuZWxTZXJpZXMsZz10aGlzLncsdT1uKygtMSE9PWw/bCphOjApLHA9aS5pLGY9aS5qLHg9MCxiPTA7Yjx0aGlzLmdyb3VwQ3R4LnByZXZYRi5sZW5ndGg7YisrKXgrPXRoaXMuZ3JvdXBDdHgucHJldlhGW2JdW2ZdO3ZhciB2PXA7aWYoaCYmKHY9aC5pbmRleE9mKGcuY29uZmlnLnNlcmllc1twXS5uYW1lKSksdj4wKXt2YXIgbT1yO3RoaXMuZ3JvdXBDdHgucHJldlhWYWxbdi0xXVtmXTwwP209dGhpcy5zZXJpZXNbcF1bZl0+PTA/dGhpcy5ncm91cEN0eC5wcmV2WFt2LTFdW2ZdK3gtMioodGhpcy5pc1JldmVyc2VkP3g6MCk6dGhpcy5ncm91cEN0eC5wcmV2WFt2LTFdW2ZdOnRoaXMuZ3JvdXBDdHgucHJldlhWYWxbdi0xXVtmXT49MCYmKG09dGhpcy5zZXJpZXNbcF1bZl0+PTA/dGhpcy5ncm91cEN0eC5wcmV2WFt2LTFdW2ZdOnRoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXS14KzIqKHRoaXMuaXNSZXZlcnNlZD94OjApKSxlPW19ZWxzZSBlPXI7bz1udWxsPT09dGhpcy5zZXJpZXNbcF1bZl0/ZTplK3RoaXMuc2VyaWVzW3BdW2ZdL3RoaXMuaW52ZXJ0ZWRZUmF0aW8tMioodGhpcy5pc1JldmVyc2VkP3RoaXMuc2VyaWVzW3BdW2ZdL3RoaXMuaW52ZXJ0ZWRZUmF0aW86MCk7dmFyIHk9dGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHtiYXJZUG9zaXRpb246dSxiYXJIZWlnaHQ6YSx4MTplLHgyOm8sc3Ryb2tlV2lkdGg6cyxzZXJpZXM6dGhpcy5zZXJpZXMscmVhbEluZGV4OmkucmVhbEluZGV4LHNlcmllc0dyb3VwOmgsaTpwLGo6Zix3Omd9KTtyZXR1cm4gdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoe2o6ZixpOnAseTE6dSx5MjphLGVsU2VyaWVzOmR9KSxuKz1jLHtwYXRoVG86eS5wYXRoVG8scGF0aEZyb206eS5wYXRoRnJvbSxnb2FsWDp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInhcIixyLG51bGwscCxmKSxiYXJZUG9zaXRpb246dSx4Om8seTpufX19LHtrZXk6XCJkcmF3U3RhY2tlZENvbHVtblBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC54LGE9dC55LHM9dC54RGl2aXNpb24scj10LmJhcldpZHRoLG89dC56ZXJvSCxuPXQuZ3JvdXBJbmRleCxsPXQuc2VyaWVzR3JvdXAsaD10LmVsU2VyaWVzLGM9dGhpcy53LGQ9ZS5pLGc9ZS5qLHU9ZS5iYztpZihjLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIHA9Yy5nbG9iYWxzLnNlcmllc1hbZF1bZ107cHx8KHA9MCksaT0ocC1jLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tci8yLGMuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoJiYoaT0ocC1jLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tci8yKmMuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoKX1mb3IodmFyIGYseD1pKygtMSE9PW4/bipyOjApLGI9MCx2PTA7djx0aGlzLmdyb3VwQ3R4LnByZXZZRi5sZW5ndGg7disrKWIrPWlzTmFOKHRoaXMuZ3JvdXBDdHgucHJldllGW3ZdW2ddKT8wOnRoaXMuZ3JvdXBDdHgucHJldllGW3ZdW2ddO3ZhciBtPWQ7aWYobCYmKG09bC5pbmRleE9mKGMuY29uZmlnLnNlcmllc1tkXS5uYW1lKSksbT4wJiYhYy5nbG9iYWxzLmlzWE51bWVyaWN8fG0+MCYmYy5nbG9iYWxzLmlzWE51bWVyaWMmJmMuZ2xvYmFscy5zZXJpZXNYW2QtMV1bZ109PT1jLmdsb2JhbHMuc2VyaWVzWFtkXVtnXSl7dmFyIHksdyxrLEE9TWF0aC5taW4odGhpcy55UmF0aW8ubGVuZ3RoKzEsZCsxKTtpZih2b2lkIDAhPT10aGlzLmdyb3VwQ3R4LnByZXZZW20tMV0mJnRoaXMuZ3JvdXBDdHgucHJldllbbS0xXS5sZW5ndGgpZm9yKHZhciBTPTE7UzxBO1MrKyl7dmFyIEM7aWYoIWlzTmFOKG51bGw9PT0oQz10aGlzLmdyb3VwQ3R4LnByZXZZW20tU10pfHx2b2lkIDA9PT1DP3ZvaWQgMDpDW2ddKSl7az10aGlzLmdyb3VwQ3R4LnByZXZZW20tU11bZ107YnJlYWt9fWZvcih2YXIgTD0xO0w8QTtMKyspe3ZhciBQLEk7aWYoKG51bGw9PT0oUD10aGlzLmdyb3VwQ3R4LnByZXZZVmFsW20tTF0pfHx2b2lkIDA9PT1QP3ZvaWQgMDpQW2ddKTwwKXt3PXRoaXMuc2VyaWVzW2RdW2ddPj0wP2stYisyKih0aGlzLmlzUmV2ZXJzZWQ/YjowKTprO2JyZWFrfWlmKChudWxsPT09KEk9dGhpcy5ncm91cEN0eC5wcmV2WVZhbFttLUxdKXx8dm9pZCAwPT09ST92b2lkIDA6SVtnXSk+PTApe3c9dGhpcy5zZXJpZXNbZF1bZ10+PTA/azprK2ItMioodGhpcy5pc1JldmVyc2VkP2I6MCk7YnJlYWt9fXZvaWQgMD09PXcmJih3PWMuZ2xvYmFscy5ncmlkSGVpZ2h0KSxmPW51bGwhPT0oeT10aGlzLmdyb3VwQ3R4LnByZXZZRlswXSkmJnZvaWQgMCE9PXkmJnkuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dH0pKSYmdGhpcy5ncm91cEN0eC5wcmV2WUYuc2xpY2UoMSxtKS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0KX0pKX0pKT9vOnd9ZWxzZSBmPW87YT10aGlzLnNlcmllc1tkXVtnXT9mLXRoaXMuc2VyaWVzW2RdW2ddL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP3RoaXMuc2VyaWVzW2RdW2ddL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF06MCk6Zjt2YXIgTT10aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoe2JhclhQb3NpdGlvbjp4LGJhcldpZHRoOnIseTE6Zix5MjphLHlSYXRpbzp0aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc2VyaWVzOnRoaXMuc2VyaWVzLHNlcmllc0dyb3VwOmwscmVhbEluZGV4OmUucmVhbEluZGV4LGk6ZCxqOmcsdzpjfSk7cmV0dXJuIHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtiYzp1LGo6ZyxpOmQseDE6eCx4MjpyLGVsU2VyaWVzOmh9KSxpKz1zLHtwYXRoVG86TS5wYXRoVG8scGF0aEZyb206TS5wYXRoRnJvbSxnb2FsWTp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInlcIixudWxsLG8sZCxnKSxiYXJYUG9zaXRpb246eCx4OmMuZ2xvYmFscy5pc1hOdW1lcmljP2ktczppLHk6YX19fV0pLHN9KCksa3Q9ZnVuY3Rpb24odCl7bihzLHl0KTt2YXIgaT1kKHMpO2Z1bmN0aW9uIHMoKXtyZXR1cm4gYSh0aGlzLHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiByKHMsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEpe3ZhciBzPXRoaXMscj10aGlzLncsbz1uZXcgbSh0aGlzLmN0eCksbj1yLmdsb2JhbHMuY29tYm9DaGFydHM/aTpyLmNvbmZpZy5jaGFydC50eXBlLGw9bmV3IFIodGhpcy5jdHgpO3RoaXMuY2FuZGxlc3RpY2tPcHRpb25zPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuY2FuZGxlc3RpY2ssdGhpcy5ib3hPcHRpb25zPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuYm94UGxvdCx0aGlzLmlzSG9yaXpvbnRhbD1yLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbDt2YXIgaD1uZXcgeSh0aGlzLmN0eCxyKTt0PWguZ2V0TG9nU2VyaWVzKHQpLHRoaXMuc2VyaWVzPXQsdGhpcy55UmF0aW89aC5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KTtmb3IodmFyIGM9by5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChuLFwiLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIpfSksZD1mdW5jdGlvbihpKXtzLmlzQm94UGxvdD1cImJveFBsb3RcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09ci5jb25maWcuc2VyaWVzW2ldLnR5cGU7dmFyIG4saCxkLGcsdT12b2lkIDAscD12b2lkIDAsZj1bXSxiPVtdLHY9ci5nbG9iYWxzLmNvbWJvQ2hhcnRzP2FbaV06aSxtPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKHIuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSkscmVsOmkrMSxcImRhdGE6cmVhbEluZGV4XCI6dn0pO3MuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKG0sdiksdFtpXS5sZW5ndGg+MCYmKHMudmlzaWJsZUk9cy52aXNpYmxlSSsxKTt2YXIgeSx3O3MueVJhdGlvLmxlbmd0aD4xJiYocy55YXhpc0luZGV4PXYpO3ZhciBrPXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7cD1rLnkseT1rLmJhckhlaWdodCxoPWsueURpdmlzaW9uLGc9ay56ZXJvVyx1PWsueCx3PWsuYmFyV2lkdGgsbj1rLnhEaXZpc2lvbixkPWsuemVyb0gsYi5wdXNoKHUrdy8yKTtmb3IodmFyIEE9by5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6dn0pLFM9ZnVuY3Rpb24oYSl7dmFyIG89cy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKGksYSx2KSxjPW51bGwseD17aW5kZXhlczp7aTppLGo6YSxyZWFsSW5kZXg6dn0seDp1LHk6cCxzdHJva2VXaWR0aDpvLGVsU2VyaWVzOm19O2M9cy5pc0hvcml6b250YWw/cy5kcmF3SG9yaXpvbnRhbEJveFBhdGhzKGUoZSh7fSx4KSx7fSx7eURpdmlzaW9uOmgsYmFySGVpZ2h0OnksemVyb1c6Z30pKTpzLmRyYXdWZXJ0aWNhbEJveFBhdGhzKGUoZSh7fSx4KSx7fSx7eERpdmlzaW9uOm4sYmFyV2lkdGg6dyx6ZXJvSDpkfSkpLHA9Yy55LHU9Yy54LGE+MCYmYi5wdXNoKHUrdy8yKSxmLnB1c2gocCksYy5wYXRoVG8uZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXt2YXIgaD0hcy5pc0JveFBsb3QmJnMuY2FuZGxlc3RpY2tPcHRpb25zLndpY2sudXNlRmlsbENvbG9yP2MuY29sb3Jbbl06ci5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbaV0sZD1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6dixkYXRhUG9pbnRJbmRleDphLGNvbG9yOmMuY29sb3Jbbl0sdmFsdWU6dFtpXVthXX0pO3MucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dixwYXRoRmlsbDpkLGxpbmVGaWxsOmgsajphLGk6aSxwYXRoRnJvbTpjLnBhdGhGcm9tLHBhdGhUbzplLHN0cm9rZVdpZHRoOm8sZWxTZXJpZXM6bSx4OnUseTpwLHNlcmllczp0LGJhckhlaWdodDp5LGJhcldpZHRoOncsZWxEYXRhTGFiZWxzV3JhcDpBLHZpc2libGVTZXJpZXM6cy52aXNpYmxlSSx0eXBlOnIuY29uZmlnLmNoYXJ0LnR5cGV9KX0pKX0sQz0wO0M8ci5nbG9iYWxzLmRhdGFQb2ludHM7QysrKVMoQyk7ci5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbdl09YixyLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1t2XT1mLGMuYWRkKG0pfSxnPTA7Zzx0Lmxlbmd0aDtnKyspZChnKTtyZXR1cm4gY319LHtrZXk6XCJkcmF3VmVydGljYWxCb3hQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueDt0Lnk7dmFyIGE9dC54RGl2aXNpb24scz10LmJhcldpZHRoLHI9dC56ZXJvSCxvPXQuc3Ryb2tlV2lkdGgsbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1lLmksYz1lLmosZD0hMCxnPW4uY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLmNvbG9ycy51cHdhcmQsdT1uLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMuZG93bndhcmQscD1cIlwiO3RoaXMuaXNCb3hQbG90JiYocD1bdGhpcy5ib3hPcHRpb25zLmNvbG9ycy5sb3dlcix0aGlzLmJveE9wdGlvbnMuY29sb3JzLnVwcGVyXSk7dmFyIGY9dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSx4PWUucmVhbEluZGV4LGI9dGhpcy5nZXRPSExDVmFsdWUoeCxjKSx2PXIseT1yO2Iubz5iLmMmJihkPSExKTt2YXIgdz1NYXRoLm1pbihiLm8sYi5jKSxrPU1hdGgubWF4KGIubyxiLmMpLEE9Yi5tO24uZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0obi5nbG9iYWxzLnNlcmllc1hbeF1bY10tbi5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXMvMik7dmFyIFM9aStzKnRoaXMudmlzaWJsZUk7dm9pZCAwPT09dGhpcy5zZXJpZXNbaF1bY118fG51bGw9PT10aGlzLnNlcmllc1toXVtjXT8odz1yLGs9cik6KHc9ci13L2Ysaz1yLWsvZix2PXItYi5oL2YseT1yLWIubC9mLEE9ci1iLm0vZik7dmFyIEM9bC5tb3ZlKFMsciksTD1sLm1vdmUoUytzLzIsdyk7cmV0dXJuIG4uZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoTD10aGlzLmdldFByZXZpb3VzUGF0aCh4LGMsITApKSxDPXRoaXMuaXNCb3hQbG90P1tsLm1vdmUoUyx3KStsLmxpbmUoUytzLzIsdykrbC5saW5lKFMrcy8yLHYpK2wubGluZShTK3MvNCx2KStsLmxpbmUoUytzLXMvNCx2KStsLmxpbmUoUytzLzIsdikrbC5saW5lKFMrcy8yLHcpK2wubGluZShTK3MsdykrbC5saW5lKFMrcyxBKStsLmxpbmUoUyxBKStsLmxpbmUoUyx3K28vMiksbC5tb3ZlKFMsQSkrbC5saW5lKFMrcyxBKStsLmxpbmUoUytzLGspK2wubGluZShTK3MvMixrKStsLmxpbmUoUytzLzIseSkrbC5saW5lKFMrcy1zLzQseSkrbC5saW5lKFMrcy80LHkpK2wubGluZShTK3MvMix5KStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMsaykrbC5saW5lKFMsQSkrXCJ6XCJdOltsLm1vdmUoUyxrKStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMrcy8yLHYpK2wubGluZShTK3MvMixrKStsLmxpbmUoUytzLGspK2wubGluZShTK3MsdykrbC5saW5lKFMrcy8yLHcpK2wubGluZShTK3MvMix5KStsLmxpbmUoUytzLzIsdykrbC5saW5lKFMsdykrbC5saW5lKFMsay1vLzIpXSxMKz1sLm1vdmUoUyx3KSxuLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGkrPWEpLHtwYXRoVG86QyxwYXRoRnJvbTpMLHg6aSx5OmssYmFyWFBvc2l0aW9uOlMsY29sb3I6dGhpcy5pc0JveFBsb3Q/cDpkP1tnXTpbdV19fX0se2tleTpcImRyYXdIb3Jpem9udGFsQm94UGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXM7dC54O3ZhciBpPXQueSxhPXQueURpdmlzaW9uLHM9dC5iYXJIZWlnaHQscj10Lnplcm9XLG89dC5zdHJva2VXaWR0aCxuPXRoaXMudyxsPW5ldyBtKHRoaXMuY3R4KSxoPWUuaSxjPWUuaixkPXRoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXI7dGhpcy5pc0JveFBsb3QmJihkPVt0aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyLHRoaXMuYm94T3B0aW9ucy5jb2xvcnMudXBwZXJdKTt2YXIgZz10aGlzLmludmVydGVkWVJhdGlvLHU9ZS5yZWFsSW5kZXgscD10aGlzLmdldE9ITENWYWx1ZSh1LGMpLGY9cix4PXIsYj1NYXRoLm1pbihwLm8scC5jKSx2PU1hdGgubWF4KHAubyxwLmMpLHk9cC5tO24uZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0obi5nbG9iYWxzLnNlcmllc1hbdV1bY10tbi5nbG9iYWxzLm1pblgpL3RoaXMuaW52ZXJ0ZWRYUmF0aW8tcy8yKTt2YXIgdz1pK3MqdGhpcy52aXNpYmxlSTt2b2lkIDA9PT10aGlzLnNlcmllc1toXVtjXXx8bnVsbD09PXRoaXMuc2VyaWVzW2hdW2NdPyhiPXIsdj1yKTooYj1yK2IvZyx2PXIrdi9nLGY9citwLmgvZyx4PXIrcC5sL2cseT1yK3AubS9nKTt2YXIgaz1sLm1vdmUocix3KSxBPWwubW92ZShiLHcrcy8yKTtyZXR1cm4gbi5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJihBPXRoaXMuZ2V0UHJldmlvdXNQYXRoKHUsYywhMCkpLGs9W2wubW92ZShiLHcpK2wubGluZShiLHcrcy8yKStsLmxpbmUoZix3K3MvMikrbC5saW5lKGYsdytzLzItcy80KStsLmxpbmUoZix3K3MvMitzLzQpK2wubGluZShmLHcrcy8yKStsLmxpbmUoYix3K3MvMikrbC5saW5lKGIsdytzKStsLmxpbmUoeSx3K3MpK2wubGluZSh5LHcpK2wubGluZShiK28vMix3KSxsLm1vdmUoeSx3KStsLmxpbmUoeSx3K3MpK2wubGluZSh2LHcrcykrbC5saW5lKHYsdytzLzIpK2wubGluZSh4LHcrcy8yKStsLmxpbmUoeCx3K3Mtcy80KStsLmxpbmUoeCx3K3MvNCkrbC5saW5lKHgsdytzLzIpK2wubGluZSh2LHcrcy8yKStsLmxpbmUodix3KStsLmxpbmUoeSx3KStcInpcIl0sQSs9bC5tb3ZlKGIsdyksbi5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1hKSx7cGF0aFRvOmsscGF0aEZyb206QSx4OnYseTppLGJhcllQb3NpdGlvbjp3LGNvbG9yOmR9fX0se2tleTpcImdldE9ITENWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybntvOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW3RdW2VdLGg6dGhpcy5pc0JveFBsb3Q/aS5nbG9iYWxzLnNlcmllc0NhbmRsZU9bdF1bZV06aS5nbG9iYWxzLnNlcmllc0NhbmRsZUhbdF1bZV0sbTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVt0XVtlXSxsOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW3RdW2VdLGM6dGhpcy5pc0JveFBsb3Q/aS5nbG9iYWxzLnNlcmllc0NhbmRsZUxbdF1bZV06aS5nbG9iYWxzLnNlcmllc0NhbmRsZUNbdF1bZV19fX1dKSxzfSgpLEF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJjaGVja0NvbG9yUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPSExLGk9dC5jb25maWcucGxvdE9wdGlvbnNbdC5jb25maWcuY2hhcnQudHlwZV07cmV0dXJuIGkuY29sb3JTY2FsZS5yYW5nZXMubGVuZ3RoPjAmJmkuY29sb3JTY2FsZS5yYW5nZXMubWFwKChmdW5jdGlvbih0LGkpe3QuZnJvbTw9MCYmKGU9ITApfSkpLGV9fSx7a2V5OlwiZ2V0U2hhZGVDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPTEsbz1zLmNvbmZpZy5wbG90T3B0aW9uc1t0XS5zaGFkZUludGVuc2l0eSxuPXRoaXMuZGV0ZXJtaW5lQ29sb3IodCxlLGkpO3MuZ2xvYmFscy5oYXNOZWdzfHxhP3I9cy5jb25maWcucGxvdE9wdGlvbnNbdF0ucmV2ZXJzZU5lZ2F0aXZlU2hhZGU/bi5wZXJjZW50PDA/bi5wZXJjZW50LzEwMCooMS4yNSpvKTooMS1uLnBlcmNlbnQvMTAwKSooMS4yNSpvKTpuLnBlcmNlbnQ8PTA/MS0oMStuLnBlcmNlbnQvMTAwKSpvOigxLW4ucGVyY2VudC8xMDApKm86KHI9MS1uLnBlcmNlbnQvMTAwLFwidHJlZW1hcFwiPT09dCYmKHI9KDEtbi5wZXJjZW50LzEwMCkqKDEuMjUqbykpKTt2YXIgbD1uLmNvbG9yLGg9bmV3IHg7cmV0dXJuIHMuY29uZmlnLnBsb3RPcHRpb25zW3RdLmVuYWJsZVNoYWRlcyYmKGw9XCJkYXJrXCI9PT10aGlzLncuY29uZmlnLnRoZW1lLm1vZGU/eC5oZXhUb1JnYmEoaC5zaGFkZUNvbG9yKC0xKnIsbi5jb2xvcikscy5jb25maWcuZmlsbC5vcGFjaXR5KTp4LmhleFRvUmdiYShoLnNoYWRlQ29sb3IocixuLmNvbG9yKSxzLmNvbmZpZy5maWxsLm9wYWNpdHkpKSx7Y29sb3I6bCxjb2xvclByb3BzOm59fX0se2tleTpcImRldGVybWluZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPWEuZ2xvYmFscy5zZXJpZXNbZV1baV0scj1hLmNvbmZpZy5wbG90T3B0aW9uc1t0XSxvPXIuY29sb3JTY2FsZS5pbnZlcnNlP2k6ZTtyLmRpc3RyaWJ1dGVkJiZcInRyZWVtYXBcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUmJihvPWkpO3ZhciBuPWEuZ2xvYmFscy5jb2xvcnNbb10sbD1udWxsLGg9TWF0aC5taW4uYXBwbHkoTWF0aCx1KGEuZ2xvYmFscy5zZXJpZXNbZV0pKSxjPU1hdGgubWF4LmFwcGx5KE1hdGgsdShhLmdsb2JhbHMuc2VyaWVzW2VdKSk7ci5kaXN0cmlidXRlZHx8XCJoZWF0bWFwXCIhPT10fHwoaD1hLmdsb2JhbHMubWluWSxjPWEuZ2xvYmFscy5tYXhZKSx2b2lkIDAhPT1yLmNvbG9yU2NhbGUubWluJiYoaD1yLmNvbG9yU2NhbGUubWluPGEuZ2xvYmFscy5taW5ZP3IuY29sb3JTY2FsZS5taW46YS5nbG9iYWxzLm1pblksYz1yLmNvbG9yU2NhbGUubWF4PmEuZ2xvYmFscy5tYXhZP3IuY29sb3JTY2FsZS5tYXg6YS5nbG9iYWxzLm1heFkpO3ZhciBkPU1hdGguYWJzKGMpK01hdGguYWJzKGgpLGc9MTAwKnMvKDA9PT1kP2QtMWUtNjpkKTtyLmNvbG9yU2NhbGUucmFuZ2VzLmxlbmd0aD4wJiZyLmNvbG9yU2NhbGUucmFuZ2VzLm1hcCgoZnVuY3Rpb24odCxlKXtpZihzPj10LmZyb20mJnM8PXQudG8pe249dC5jb2xvcixsPXQuZm9yZUNvbG9yP3QuZm9yZUNvbG9yOm51bGwsaD10LmZyb20sYz10LnRvO3ZhciBpPU1hdGguYWJzKGMpK01hdGguYWJzKGgpO2c9MTAwKnMvKDA9PT1pP2ktMWUtNjppKX19KSk7cmV0dXJue2NvbG9yOm4sZm9yZUNvbG9yOmwscGVyY2VudDpnfX19LHtrZXk6XCJjYWxjdWxhdGVEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50ZXh0LGk9dC54LGE9dC55LHM9dC5pLHI9dC5qLG89dC5jb2xvclByb3BzLG49dC5mb250U2l6ZSxsPXRoaXMudy5jb25maWcuZGF0YUxhYmVscyxoPW5ldyBtKHRoaXMuY3R4KSxjPW5ldyBPKHRoaXMuY3R4KSxkPW51bGw7aWYobC5lbmFibGVkKXtkPWguZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7dmFyIGc9bC5vZmZzZXRYLHU9bC5vZmZzZXRZLHA9aStnLGY9YStwYXJzZUZsb2F0KGwuc3R5bGUuZm9udFNpemUpLzMrdTtjLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpwLHk6Zix0ZXh0OmUsaTpzLGo6cixjb2xvcjpvLmZvcmVDb2xvcixwYXJlbnQ6ZCxmb250U2l6ZTpuLGRhdGFMYWJlbHNDb25maWc6bH0pfXJldHVybiBkfX0se2tleTpcImFkZExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBtKHRoaXMuY3R4KTt0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixlLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsZS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsZS5wYXRoTW91c2VEb3duLmJpbmQodGhpcyx0KSl9fV0pLHR9KCksU3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnhSYXRpbz1pLnhSYXRpbyx0aGlzLnlSYXRpbz1pLnlSYXRpbyx0aGlzLmR5bmFtaWNBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLHRoaXMuaGVscGVycz1uZXcgQXQoZSksdGhpcy5yZWN0UmFkaXVzPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5yYWRpdXMsdGhpcy5zdHJva2VXaWR0aD10aGlzLncuY29uZmlnLnN0cm9rZS5zaG93P3RoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoOjB9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtaGVhdG1hcFwifSk7YS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChlLmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBzPWUuZ2xvYmFscy5ncmlkV2lkdGgvZS5nbG9iYWxzLmRhdGFQb2ludHMscj1lLmdsb2JhbHMuZ3JpZEhlaWdodC9lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxvPTAsbj0hMTt0aGlzLm5lZ1JhbmdlPXRoaXMuaGVscGVycy5jaGVja0NvbG9yUmFuZ2UoKTt2YXIgbD10LnNsaWNlKCk7ZS5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQmJihuPSEwLGwucmV2ZXJzZSgpKTtmb3IodmFyIGg9bj8wOmwubGVuZ3RoLTE7bj9oPGwubGVuZ3RoOmg+PTA7bj9oKys6aC0tKXt2YXIgYz1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtaGVhdG1hcC1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGUuZ2xvYmFscy5zZXJpZXNOYW1lc1toXSkscmVsOmgrMSxcImRhdGE6cmVhbEluZGV4XCI6aH0pO2lmKHRoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKGMsaCksZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgZD1lLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O25ldyB2KHRoaXMuY3R4KS5kcm9wU2hhZG93KGMsZCxoKX1mb3IodmFyIGc9MCx1PWUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuc2hhZGVJbnRlbnNpdHkscD0wO3A8bFtoXS5sZW5ndGg7cCsrKXt2YXIgZj10aGlzLmhlbHBlcnMuZ2V0U2hhZGVDb2xvcihlLmNvbmZpZy5jaGFydC50eXBlLGgscCx0aGlzLm5lZ1JhbmdlKSxiPWYuY29sb3IseT1mLmNvbG9yUHJvcHM7aWYoXCJpbWFnZVwiPT09ZS5jb25maWcuZmlsbC50eXBlKWI9bmV3IFIodGhpcy5jdHgpLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6aCxkYXRhUG9pbnRJbmRleDpwLG9wYWNpdHk6ZS5nbG9iYWxzLmhhc05lZ3M/eS5wZXJjZW50PDA/MS0oMSt5LnBlcmNlbnQvMTAwKTp1K3kucGVyY2VudC8xMDA6eS5wZXJjZW50LzEwMCxwYXR0ZXJuSUQ6eC5yYW5kb21JZCgpLHdpZHRoOmUuY29uZmlnLmZpbGwuaW1hZ2Uud2lkdGg/ZS5jb25maWcuZmlsbC5pbWFnZS53aWR0aDpzLGhlaWdodDplLmNvbmZpZy5maWxsLmltYWdlLmhlaWdodD9lLmNvbmZpZy5maWxsLmltYWdlLmhlaWdodDpyfSk7dmFyIHc9dGhpcy5yZWN0UmFkaXVzLGs9aS5kcmF3UmVjdChnLG8scyxyLHcpO2lmKGsuYXR0cih7Y3g6ZyxjeTpvfSksay5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhlYXRtYXAtcmVjdFwiKSxjLmFkZChrKSxrLmF0dHIoe2ZpbGw6YixpOmgsaW5kZXg6aCxqOnAsdmFsOmxbaF1bcF0sXCJzdHJva2Utd2lkdGhcIjp0aGlzLnN0cm9rZVdpZHRoLHN0cm9rZTplLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLnVzZUZpbGxDb2xvckFzU3Ryb2tlP2I6ZS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbMF0sY29sb3I6Yn0pLHRoaXMuaGVscGVycy5hZGRMaXN0ZW5lcnMoayksZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkJiYhZS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgQT0xO2UuZ2xvYmFscy5yZXNpemVkfHwoQT1lLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKSx0aGlzLmFuaW1hdGVIZWF0TWFwKGssZyxvLHMscixBKX1pZihlLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciBTPTE7aWYodGhpcy5keW5hbWljQW5pbS5lbmFibGVkJiZlLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSl7Uz10aGlzLmR5bmFtaWNBbmltLnNwZWVkO3ZhciBDPWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdJiZlLmdsb2JhbHMucHJldmlvdXNQYXRoc1toXVtwXSYmZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bcF0uY29sb3I7Q3x8KEM9XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApXCIpLHRoaXMuYW5pbWF0ZUhlYXRDb2xvcihrLHguaXNDb2xvckhleChDKT9DOngucmdiMmhleChDKSx4LmlzQ29sb3JIZXgoYik/Yjp4LnJnYjJoZXgoYiksUyl9fXZhciBMPSgwLGUuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKShlLmdsb2JhbHMuc2VyaWVzW2hdW3BdLHt2YWx1ZTplLmdsb2JhbHMuc2VyaWVzW2hdW3BdLHNlcmllc0luZGV4OmgsZGF0YVBvaW50SW5kZXg6cCx3OmV9KSxQPXRoaXMuaGVscGVycy5jYWxjdWxhdGVEYXRhTGFiZWxzKHt0ZXh0OkwseDpnK3MvMix5Om8rci8yLGk6aCxqOnAsY29sb3JQcm9wczp5LHNlcmllczpsfSk7bnVsbCE9PVAmJmMuYWRkKFApLGcrPXN9bys9cixhLmFkZChjKX12YXIgST1lLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQuc2xpY2UoKTtyZXR1cm4gZS5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQ/SS51bnNoaWZ0KFwiXCIpOkkucHVzaChcIlwiKSxlLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQ9SSxhfX0se2tleTpcImFuaW1hdGVIZWF0TWFwXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvPW5ldyBiKHRoaXMuY3R4KTtvLmFuaW1hdGVSZWN0KHQse3g6ZSthLzIseTppK3MvMix3aWR0aDowLGhlaWdodDowfSx7eDplLHk6aSx3aWR0aDphLGhlaWdodDpzfSxyLChmdW5jdGlvbigpe28uYW5pbWF0aW9uQ29tcGxldGVkKHQpfSkpfX0se2tleTpcImFuaW1hdGVIZWF0Q29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt0LmF0dHIoe2ZpbGw6ZX0pLmFuaW1hdGUoYSkuYXR0cih7ZmlsbDppfSl9fV0pLHR9KCksQ3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRyYXdZQXhpc1RleHRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9cy5jb25maWcueWF4aXNbMF0sbz1zLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXTtyZXR1cm4gbmV3IG0odGhpcy5jdHgpLmRyYXdUZXh0KHt4OnQrci5sYWJlbHMub2Zmc2V0WCx5OmUrci5sYWJlbHMub2Zmc2V0WSx0ZXh0Om8oYSxpKSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6ci5sYWJlbHMuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTpyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KHIubGFiZWxzLnN0eWxlLmNvbG9ycyk/ci5sYWJlbHMuc3R5bGUuY29sb3JzW2ldOnIubGFiZWxzLnN0eWxlLmNvbG9yc30pfX1dKSx0fSgpLEx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmNoYXJ0VHlwZT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsdGhpcy5hbmltQmVnaW5BcnI9WzBdLHRoaXMuYW5pbUR1cj0wLHRoaXMuZG9udXREYXRhTGFiZWxzPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmxhYmVscyx0aGlzLmxpbmVDb2xvckFycj12b2lkIDAhPT1pLmdsb2JhbHMuc3Ryb2tlLmNvbG9ycz9pLmdsb2JhbHMuc3Ryb2tlLmNvbG9yczppLmdsb2JhbHMuY29sb3JzLHRoaXMuZGVmYXVsdFNpemU9TWF0aC5taW4oaS5nbG9iYWxzLmdyaWRXaWR0aCxpLmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5jZW50ZXJZPXRoaXMuZGVmYXVsdFNpemUvMix0aGlzLmNlbnRlclg9aS5nbG9iYWxzLmdyaWRXaWR0aC8yLFwicmFkaWFsQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlP3RoaXMuZnVsbEFuZ2xlPTM2MDp0aGlzLmZ1bGxBbmdsZT1NYXRoLmFicyhpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZW5kQW5nbGUtaS5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUpLHRoaXMuaW5pdGlhbEFuZ2xlPWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlLGkuZ2xvYmFscy5yYWRpYWxTaXplPXRoaXMuZGVmYXVsdFNpemUvMi4wNS1pLmNvbmZpZy5zdHJva2Uud2lkdGgtKGkuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkPzA6aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyKSx0aGlzLmRvbnV0U2l6ZT1pLmdsb2JhbHMucmFkaWFsU2l6ZSpwYXJzZUludChpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuc2l6ZSwxMCkvMTAwLHRoaXMubWF4WT0wLHRoaXMuc2xpY2VMYWJlbHM9W10sdGhpcy5zbGljZVNpemVzPVtdLHRoaXMucHJldlNlY3RvckFuZ2xlQXJyPVtdfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KTtpZih0aGlzLnJldD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcGllXCJ9KSxpLmdsb2JhbHMubm9EYXRhKXJldHVybiB0aGlzLnJldDtmb3IodmFyIHM9MCxyPTA7cjx0Lmxlbmd0aDtyKyspcys9eC5uZWdUb1plcm8odFtyXSk7dmFyIG89W10sbj1hLmdyb3VwKCk7MD09PXMmJihzPTFlLTUpLHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5tYXhZPU1hdGgubWF4KGUubWF4WSx0KX0pKSxpLmNvbmZpZy55YXhpc1swXS5tYXgmJih0aGlzLm1heFk9aS5jb25maWcueWF4aXNbMF0ubWF4KSxcImJhY2tcIj09PWkuY29uZmlnLmdyaWQucG9zaXRpb24mJlwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZSYmdGhpcy5kcmF3UG9sYXJFbGVtZW50cyh0aGlzLnJldCk7Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspe3ZhciBoPXRoaXMuZnVsbEFuZ2xlKngubmVnVG9aZXJvKHRbbF0pL3M7by5wdXNoKGgpLFwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZT8ob1tsXT10aGlzLmZ1bGxBbmdsZS90Lmxlbmd0aCx0aGlzLnNsaWNlU2l6ZXMucHVzaChpLmdsb2JhbHMucmFkaWFsU2l6ZSp0W2xdL3RoaXMubWF4WSkpOnRoaXMuc2xpY2VTaXplcy5wdXNoKGkuZ2xvYmFscy5yYWRpYWxTaXplKX1pZihpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe2Zvcih2YXIgYyxkPTAsZz0wO2c8aS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO2crKylkKz14Lm5lZ1RvWmVybyhpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tnXSk7Zm9yKHZhciB1PTA7dTxpLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7dSsrKWM9dGhpcy5mdWxsQW5nbGUqeC5uZWdUb1plcm8oaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbdV0pL2QsdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnIucHVzaChjKX10aGlzLmRvbnV0U2l6ZTwwJiYodGhpcy5kb251dFNpemU9MCk7dmFyIHA9aS5jb25maWcucGxvdE9wdGlvbnMucGllLmN1c3RvbVNjYWxlLGY9aS5nbG9iYWxzLmdyaWRXaWR0aC8yLGI9aS5nbG9iYWxzLmdyaWRIZWlnaHQvMix2PWYtaS5nbG9iYWxzLmdyaWRXaWR0aC8yKnAseT1iLWkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIqcDtpZihcImRvbnV0XCI9PT10aGlzLmNoYXJ0VHlwZSl7dmFyIHc9YS5kcmF3Q2lyY2xlKHRoaXMuZG9udXRTaXplKTt3LmF0dHIoe2N4OnRoaXMuY2VudGVyWCxjeTp0aGlzLmNlbnRlclksZmlsbDppLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuYmFja2dyb3VuZD9pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCJ9KSxuLmFkZCh3KX12YXIgaz10aGlzLmRyYXdBcmNzKG8sdCk7aWYodGhpcy5zbGljZUxhYmVscy5mb3JFYWNoKChmdW5jdGlvbih0KXtrLmFkZCh0KX0pKSxuLmF0dHIoe3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQodixcIiwgXCIpLmNvbmNhdCh5LFwiKSBzY2FsZShcIikuY29uY2F0KHAsXCIpXCIpfSksbi5hZGQoayksdGhpcy5yZXQuYWRkKG4pLHRoaXMuZG9udXREYXRhTGFiZWxzLnNob3cpe3ZhciBBPXRoaXMucmVuZGVySW5uZXJEYXRhTGFiZWxzKHRoaXMuZG9udXREYXRhTGFiZWxzLHtob2xsb3dTaXplOnRoaXMuZG9udXRTaXplLGNlbnRlclg6dGhpcy5jZW50ZXJYLGNlbnRlclk6dGhpcy5jZW50ZXJZLG9wYWNpdHk6dGhpcy5kb251dERhdGFMYWJlbHMuc2hvdyx0cmFuc2xhdGVYOnYsdHJhbnNsYXRlWTp5fSk7dGhpcy5yZXQuYWRkKEEpfXJldHVyblwiZnJvbnRcIj09PWkuY29uZmlnLmdyaWQucG9zaXRpb24mJlwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZSYmdGhpcy5kcmF3UG9sYXJFbGVtZW50cyh0aGlzLnJldCksdGhpcy5yZXR9fSx7a2V5OlwiZHJhd0FyY3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyB2KHRoaXMuY3R4KSxzPW5ldyBtKHRoaXMuY3R4KSxyPW5ldyBSKHRoaXMuY3R4KSxvPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zbGljZXNcIn0pLG49dGhpcy5pbml0aWFsQW5nbGUsbD10aGlzLmluaXRpYWxBbmdsZSxoPXRoaXMuaW5pdGlhbEFuZ2xlLGM9dGhpcy5pbml0aWFsQW5nbGU7dGhpcy5zdHJva2VXaWR0aD1pLmNvbmZpZy5zdHJva2Uuc2hvdz9pLmNvbmZpZy5zdHJva2Uud2lkdGg6MDtmb3IodmFyIGQ9MDtkPHQubGVuZ3RoO2QrKyl7dmFyIGc9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXBpZS1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1tkXSkscmVsOmQrMSxcImRhdGE6cmVhbEluZGV4XCI6ZH0pO28uYWRkKGcpLGw9YyxoPShuPWgpK3RbZF0sYz1sK3RoaXMucHJldlNlY3RvckFuZ2xlQXJyW2RdO3ZhciB1PWg8bj90aGlzLmZ1bGxBbmdsZStoLW46aC1uLHA9ci5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmQsc2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZF0sdmFsdWU6ZVtkXX0pLGY9dGhpcy5nZXRDaGFuZ2VkUGF0aChsLGMpLGI9cy5kcmF3UGF0aCh7ZDpmLHN0cm9rZTpBcnJheS5pc0FycmF5KHRoaXMubGluZUNvbG9yQXJyKT90aGlzLmxpbmVDb2xvckFycltkXTp0aGlzLmxpbmVDb2xvckFycixzdHJva2VXaWR0aDowLGZpbGw6cCxmaWxsT3BhY2l0eTppLmNvbmZpZy5maWxsLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcGllLWFyZWEgYXBleGNoYXJ0cy1cIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KGQpfSk7aWYoYi5hdHRyKHtpbmRleDowLGo6ZH0pLGEuc2V0U2VsZWN0aW9uRmlsdGVyKGIsMCxkKSxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciB5PWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7YS5kcm9wU2hhZG93KGIseSxkKX10aGlzLmFkZExpc3RlbmVycyhiLHRoaXMuZG9udXREYXRhTGFiZWxzKSxtLnNldEF0dHJzKGIubm9kZSx7XCJkYXRhOmFuZ2xlXCI6dSxcImRhdGE6c3RhcnRBbmdsZVwiOm4sXCJkYXRhOnN0cm9rZVdpZHRoXCI6dGhpcy5zdHJva2VXaWR0aCxcImRhdGE6dmFsdWVcIjplW2RdfSk7dmFyIHc9e3g6MCx5OjB9O1wicGllXCI9PT10aGlzLmNoYXJ0VHlwZXx8XCJwb2xhckFyZWFcIj09PXRoaXMuY2hhcnRUeXBlP3c9eC5wb2xhclRvQ2FydGVzaWFuKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclksaS5nbG9iYWxzLnJhZGlhbFNpemUvMS4yNStpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5vZmZzZXQsKG4rdS8yKSV0aGlzLmZ1bGxBbmdsZSk6XCJkb251dFwiPT09dGhpcy5jaGFydFR5cGUmJih3PXgucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLChpLmdsb2JhbHMucmFkaWFsU2l6ZSt0aGlzLmRvbnV0U2l6ZSkvMitpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5vZmZzZXQsKG4rdS8yKSV0aGlzLmZ1bGxBbmdsZSkpLGcuYWRkKGIpO3ZhciBrPTA7aWYoIXRoaXMuaW5pdGlhbEFuaW18fGkuZ2xvYmFscy5yZXNpemVkfHxpLmdsb2JhbHMuZGF0YUNoYW5nZWQ/dGhpcy5hbmltQmVnaW5BcnIucHVzaCgwKTooMD09PShrPXUvdGhpcy5mdWxsQW5nbGUqaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCkmJihrPTEpLHRoaXMuYW5pbUR1cj1rK3RoaXMuYW5pbUR1cix0aGlzLmFuaW1CZWdpbkFyci5wdXNoKHRoaXMuYW5pbUR1cikpLHRoaXMuZHluYW1pY0FuaW0mJmkuZ2xvYmFscy5kYXRhQ2hhbmdlZD90aGlzLmFuaW1hdGVQYXRocyhiLHtzaXplOnRoaXMuc2xpY2VTaXplc1tkXSxlbmRBbmdsZTpoLHN0YXJ0QW5nbGU6bixwcmV2U3RhcnRBbmdsZTpsLHByZXZFbmRBbmdsZTpjLGFuaW1hdGVTdGFydGluZ1BvczohMCxpOmQsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLHNob3VsZFNldFByZXZQYXRoczohMCxkdXI6aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkfSk6dGhpcy5hbmltYXRlUGF0aHMoYix7c2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZF0sZW5kQW5nbGU6aCxzdGFydEFuZ2xlOm4saTpkLHRvdGFsSXRlbXM6dC5sZW5ndGgtMSxhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOmt9KSxpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZXhwYW5kT25DbGljayYmXCJwb2xhckFyZWFcIiE9PXRoaXMuY2hhcnRUeXBlJiZiLmNsaWNrKHRoaXMucGllQ2xpY2tlZC5iaW5kKHRoaXMsZCkpLHZvaWQgMCE9PWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0mJmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0uaW5kZXhPZihkKT4tMSYmdGhpcy5waWVDbGlja2VkKGQpLGkuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCl7dmFyIEE9dy54LFM9dy55LEM9MTAwKnUvdGhpcy5mdWxsQW5nbGUrXCIlXCI7aWYoMCE9PXUmJmkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm1pbkFuZ2xlVG9TaG93TGFiZWw8dFtkXSl7dmFyIEw9aS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXI7dm9pZCAwIT09TCYmKEM9TChpLmdsb2JhbHMuc2VyaWVzUGVyY2VudFtkXVswXSx7c2VyaWVzSW5kZXg6ZCx3Oml9KSk7dmFyIFA9aS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW2RdLEk9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIn0pLE09cy5kcmF3VGV4dCh7eDpBLHk6Uyx0ZXh0OkMsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOmkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOlB9KTtpZihJLmFkZChNKSxpLmNvbmZpZy5kYXRhTGFiZWxzLmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIFQ9aS5jb25maWcuZGF0YUxhYmVscy5kcm9wU2hhZG93O2EuZHJvcFNoYWRvdyhNLFQpfU0ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1waWUtbGFiZWxcIiksaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlJiYhMT09PWkuZ2xvYmFscy5yZXNpemVkJiYoTS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXBpZS1sYWJlbC1kZWxheVwiKSxNLm5vZGUuc3R5bGUuYW5pbWF0aW9uRGVsYXk9aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZC85NDArXCJzXCIpLHRoaXMuc2xpY2VMYWJlbHMucHVzaChJKX19fXJldHVybiBvfX0se2tleTpcImFkZExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bmV3IG0odGhpcy5jdHgpO3Qubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixpLnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdGhpcy5yZXZlcnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLHQpKSx0aGlzLmRvbnV0RGF0YUxhYmVscy50b3RhbC5zaG93QWx3YXlzfHwodC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsdGhpcy5wcmludERhdGFMYWJlbHNJbm5lci5iaW5kKHRoaXMsdC5ub2RlLGUpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSkpfX0se2tleTpcImFuaW1hdGVQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9ZS5lbmRBbmdsZTxlLnN0YXJ0QW5nbGU/dGhpcy5mdWxsQW5nbGUrZS5lbmRBbmdsZS1lLnN0YXJ0QW5nbGU6ZS5lbmRBbmdsZS1lLnN0YXJ0QW5nbGUscz1hLHI9ZS5zdGFydEFuZ2xlLG89ZS5zdGFydEFuZ2xlO3ZvaWQgMCE9PWUucHJldlN0YXJ0QW5nbGUmJnZvaWQgMCE9PWUucHJldkVuZEFuZ2xlJiYocj1lLnByZXZFbmRBbmdsZSxzPWUucHJldkVuZEFuZ2xlPGUucHJldlN0YXJ0QW5nbGU/dGhpcy5mdWxsQW5nbGUrZS5wcmV2RW5kQW5nbGUtZS5wcmV2U3RhcnRBbmdsZTplLnByZXZFbmRBbmdsZS1lLnByZXZTdGFydEFuZ2xlKSxlLmk9PT1pLmNvbmZpZy5zZXJpZXMubGVuZ3RoLTEmJihhK28+dGhpcy5mdWxsQW5nbGU/ZS5lbmRBbmdsZT1lLmVuZEFuZ2xlLShhK28pOmErbzx0aGlzLmZ1bGxBbmdsZSYmKGUuZW5kQW5nbGU9ZS5lbmRBbmdsZSsodGhpcy5mdWxsQW5nbGUtKGErbykpKSksYT09PXRoaXMuZnVsbEFuZ2xlJiYoYT10aGlzLmZ1bGxBbmdsZS0uMDEpLHRoaXMuYW5pbWF0ZUFyYyh0LHIsbyxhLHMsZSl9fSx7a2V5OlwiYW5pbWF0ZUFyY1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbyxuPXRoaXMsbD10aGlzLncsaD1uZXcgYih0aGlzLmN0eCksYz1yLnNpemU7KGlzTmFOKGUpfHxpc05hTihzKSkmJihlPWkscz1hLHIuZHVyPTApO3ZhciBkPWEsZz1pLHU9ZTxpP3RoaXMuZnVsbEFuZ2xlK2UtaTplLWk7bC5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZyLnNob3VsZFNldFByZXZQYXRocyYmci5wcmV2RW5kQW5nbGUmJihvPW4uZ2V0UGllUGF0aCh7bWU6bixzdGFydEFuZ2xlOnIucHJldlN0YXJ0QW5nbGUsYW5nbGU6ci5wcmV2RW5kQW5nbGU8ci5wcmV2U3RhcnRBbmdsZT90aGlzLmZ1bGxBbmdsZStyLnByZXZFbmRBbmdsZS1yLnByZXZTdGFydEFuZ2xlOnIucHJldkVuZEFuZ2xlLXIucHJldlN0YXJ0QW5nbGUsc2l6ZTpjfSksdC5hdHRyKHtkOm99KSksMCE9PXIuZHVyP3QuYW5pbWF0ZShyLmR1cixsLmdsb2JhbHMuZWFzaW5nLHIuYW5pbUJlZ2luQXJyW3IuaV0pLmFmdGVyQWxsKChmdW5jdGlvbigpe1wicGllXCIhPT1uLmNoYXJ0VHlwZSYmXCJkb251dFwiIT09bi5jaGFydFR5cGUmJlwicG9sYXJBcmVhXCIhPT1uLmNoYXJ0VHlwZXx8dGhpcy5hbmltYXRlKGwuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCkuYXR0cih7XCJzdHJva2Utd2lkdGhcIjpuLnN0cm9rZVdpZHRofSksci5pPT09bC5jb25maWcuc2VyaWVzLmxlbmd0aC0xJiZoLmFuaW1hdGlvbkNvbXBsZXRlZCh0KX0pKS5kdXJpbmcoKGZ1bmN0aW9uKGwpe2Q9dSsoYS11KSpsLHIuYW5pbWF0ZVN0YXJ0aW5nUG9zJiYoZD1zKyhhLXMpKmwsZz1lLXMrKGktKGUtcykpKmwpLG89bi5nZXRQaWVQYXRoKHttZTpuLHN0YXJ0QW5nbGU6ZyxhbmdsZTpkLHNpemU6Y30pLHQubm9kZS5zZXRBdHRyaWJ1dGUoXCJkYXRhOnBhdGhPcmlnXCIsbyksdC5hdHRyKHtkOm99KX0pKToobz1uLmdldFBpZVBhdGgoe21lOm4sc3RhcnRBbmdsZTpnLGFuZ2xlOmEsc2l6ZTpjfSksci5pc1RyYWNrfHwobC5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwKSx0Lm5vZGUuc2V0QXR0cmlidXRlKFwiZGF0YTpwYXRoT3JpZ1wiLG8pLHQuYXR0cih7ZDpvLFwic3Ryb2tlLXdpZHRoXCI6bi5zdHJva2VXaWR0aH0pKX19LHtrZXk6XCJwaWVDbGlja2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLncsYT10aGlzLHM9YS5zbGljZVNpemVzW3RdKyhpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZXhwYW5kT25DbGljaz80OjApLHI9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoYS5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KHQpKS5tZW1iZXJzWzBdO2lmKFwidHJ1ZVwiIT09ci5hdHRyKFwiZGF0YTpwaWVDbGlja2VkXCIpKXt2YXIgbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy1waWUtYXJlYVwiKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG8sKGZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKFwiZGF0YTpwaWVDbGlja2VkXCIsXCJmYWxzZVwiKTt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIik7ZSYmdC5zZXRBdHRyaWJ1dGUoXCJkXCIsZSl9KSksci5hdHRyKFwiZGF0YTpwaWVDbGlja2VkXCIsXCJ0cnVlXCIpO3ZhciBuPXBhcnNlSW50KHIuYXR0cihcImRhdGE6c3RhcnRBbmdsZVwiKSwxMCksbD1wYXJzZUludChyLmF0dHIoXCJkYXRhOmFuZ2xlXCIpLDEwKTtlPWEuZ2V0UGllUGF0aCh7bWU6YSxzdGFydEFuZ2xlOm4sYW5nbGU6bCxzaXplOnN9KSwzNjAhPT1sJiZyLnBsb3QoZSl9ZWxzZXtyLmF0dHIoe1wiZGF0YTpwaWVDbGlja2VkXCI6XCJmYWxzZVwifSksdGhpcy5yZXZlcnREYXRhTGFiZWxzSW5uZXIoci5ub2RlLHRoaXMuZG9udXREYXRhTGFiZWxzKTt2YXIgaD1yLmF0dHIoXCJkYXRhOnBhdGhPcmlnXCIpO3IuYXR0cih7ZDpofSl9fX0se2tleTpcImdldENoYW5nZWRQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1cIlwiO3JldHVybiB0aGlzLmR5bmFtaWNBbmltJiZ0aGlzLncuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKGk9dGhpcy5nZXRQaWVQYXRoKHttZTp0aGlzLHN0YXJ0QW5nbGU6dCxhbmdsZTplLXQsc2l6ZTp0aGlzLnNpemV9KSksaX19LHtrZXk6XCJnZXRQaWVQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5tZSxpPXQuc3RhcnRBbmdsZSxhPXQuYW5nbGUscz10LnNpemUscj1pLG89TWF0aC5QSSooci05MCkvMTgwLG49YStpO01hdGguY2VpbChuKT49dGhpcy5mdWxsQW5nbGUrdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSV0aGlzLmZ1bGxBbmdsZSYmKG49dGhpcy5mdWxsQW5nbGUrdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSV0aGlzLmZ1bGxBbmdsZS0uMDEpLE1hdGguY2VpbChuKT50aGlzLmZ1bGxBbmdsZSYmKG4tPXRoaXMuZnVsbEFuZ2xlKTt2YXIgbD1NYXRoLlBJKihuLTkwKS8xODAsaD1lLmNlbnRlclgrcypNYXRoLmNvcyhvKSxjPWUuY2VudGVyWStzKk1hdGguc2luKG8pLGQ9ZS5jZW50ZXJYK3MqTWF0aC5jb3MobCksZz1lLmNlbnRlclkrcypNYXRoLnNpbihsKSx1PXgucG9sYXJUb0NhcnRlc2lhbihlLmNlbnRlclgsZS5jZW50ZXJZLGUuZG9udXRTaXplLG4pLHA9eC5wb2xhclRvQ2FydGVzaWFuKGUuY2VudGVyWCxlLmNlbnRlclksZS5kb251dFNpemUsciksZj1hPjE4MD8xOjAsYj1bXCJNXCIsaCxjLFwiQVwiLHMscywwLGYsMSxkLGddO3JldHVyblwiZG9udXRcIj09PWUuY2hhcnRUeXBlP1tdLmNvbmNhdChiLFtcIkxcIix1LngsdS55LFwiQVwiLGUuZG9udXRTaXplLGUuZG9udXRTaXplLDAsZiwwLHAueCxwLnksXCJMXCIsaCxjLFwielwiXSkuam9pbihcIiBcIik6XCJwaWVcIj09PWUuY2hhcnRUeXBlfHxcInBvbGFyQXJlYVwiPT09ZS5jaGFydFR5cGU/W10uY29uY2F0KGIsW1wiTFwiLGUuY2VudGVyWCxlLmNlbnRlclksXCJMXCIsaCxjXSkuam9pbihcIiBcIik6W10uY29uY2F0KGIpLmpvaW4oXCIgXCIpfX0se2tleTpcImRyYXdQb2xhckVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IF8odGhpcy5jdHgpLGE9bmV3IG0odGhpcy5jdHgpLHM9bmV3IEN0KHRoaXMuY3R4KSxyPWEuZ3JvdXAoKSxvPWEuZ3JvdXAoKSxuPWkubmljZVNjYWxlKDAsTWF0aC5jZWlsKHRoaXMubWF4WSksZS5jb25maWcueWF4aXNbMF0udGlja0Ftb3VudCwwLCEwKSxsPW4ucmVzdWx0LnJldmVyc2UoKSxoPW4ucmVzdWx0Lmxlbmd0aDt0aGlzLm1heFk9bi5uaWNlTWF4O2Zvcih2YXIgYz1lLmdsb2JhbHMucmFkaWFsU2l6ZSxkPWMvKGgtMSksZz0wO2c8aC0xO2crKyl7dmFyIHU9YS5kcmF3Q2lyY2xlKGMpO2lmKHUuYXR0cih7Y3g6dGhpcy5jZW50ZXJYLGN5OnRoaXMuY2VudGVyWSxmaWxsOlwibm9uZVwiLFwic3Ryb2tlLXdpZHRoXCI6ZS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnJpbmdzLnN0cm9rZVdpZHRoLHN0cm9rZTplLmNvbmZpZy5wbG90T3B0aW9ucy5wb2xhckFyZWEucmluZ3Muc3Ryb2tlQ29sb3J9KSxlLmNvbmZpZy55YXhpc1swXS5zaG93KXt2YXIgcD1zLmRyYXdZQXhpc1RleHRzKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclktYytwYXJzZUludChlLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLzIsZyxsW2ddKTtvLmFkZChwKX1yLmFkZCh1KSxjLT1kfXRoaXMuZHJhd1Nwb2tlcyh0KSx0LmFkZChyKSx0LmFkZChvKX19LHtrZXk6XCJyZW5kZXJJbm5lckRhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLnRyYW5zbGF0ZVg/ZS50cmFuc2xhdGVYOjAsXCIsIFwiKS5jb25jYXQoZS50cmFuc2xhdGVZP2UudHJhbnNsYXRlWTowLFwiKSBzY2FsZShcIikuY29uY2F0KGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5jdXN0b21TY2FsZSxcIilcIil9KSxyPXQudG90YWwuc2hvdztzLm5vZGUuc3R5bGUub3BhY2l0eT1lLm9wYWNpdHk7dmFyIG8sbixsPWUuY2VudGVyWCxoPWUuY2VudGVyWTtvPXZvaWQgMD09PXQubmFtZS5jb2xvcj9pLmdsb2JhbHMuY29sb3JzWzBdOnQubmFtZS5jb2xvcjt2YXIgYz10Lm5hbWUuZm9udFNpemUsZD10Lm5hbWUuZm9udEZhbWlseSxnPXQubmFtZS5mb250V2VpZ2h0O249dm9pZCAwPT09dC52YWx1ZS5jb2xvcj9pLmNvbmZpZy5jaGFydC5mb3JlQ29sb3I6dC52YWx1ZS5jb2xvcjt2YXIgdT10LnZhbHVlLmZvcm1hdHRlcixwPVwiXCIsZj1cIlwiO2lmKHI/KG89dC50b3RhbC5jb2xvcixjPXQudG90YWwuZm9udFNpemUsZD10LnRvdGFsLmZvbnRGYW1pbHksZz10LnRvdGFsLmZvbnRXZWlnaHQsZj10LnRvdGFsLmxhYmVsLHA9dC50b3RhbC5mb3JtYXR0ZXIoaSkpOjE9PT1pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKHA9dShpLmdsb2JhbHMuc2VyaWVzWzBdLGkpLGY9aS5nbG9iYWxzLnNlcmllc05hbWVzWzBdKSxmJiYoZj10Lm5hbWUuZm9ybWF0dGVyKGYsdC50b3RhbC5zaG93LGkpKSx0Lm5hbWUuc2hvdyl7dmFyIHg9YS5kcmF3VGV4dCh7eDpsLHk6aCtwYXJzZUZsb2F0KHQubmFtZS5vZmZzZXRZKSx0ZXh0OmYsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpvLGZvbnRTaXplOmMsZm9udFdlaWdodDpnLGZvbnRGYW1pbHk6ZH0pO3gubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWxcIikscy5hZGQoeCl9aWYodC52YWx1ZS5zaG93KXt2YXIgYj10Lm5hbWUuc2hvdz9wYXJzZUZsb2F0KHQudmFsdWUub2Zmc2V0WSkrMTY6dC52YWx1ZS5vZmZzZXRZLHY9YS5kcmF3VGV4dCh7eDpsLHk6aCtiLHRleHQ6cCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOm4sZm9udFdlaWdodDp0LnZhbHVlLmZvbnRXZWlnaHQsZm9udFNpemU6dC52YWx1ZS5mb250U2l6ZSxmb250RmFtaWx5OnQudmFsdWUuZm9udEZhbWlseX0pO3Yubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWVcIikscy5hZGQodil9cmV0dXJuIHN9fSx7a2V5OlwicHJpbnRJbm5lckxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzLHI9dGhpcy53O2E/cz12b2lkIDA9PT10Lm5hbWUuY29sb3I/ci5nbG9iYWxzLmNvbG9yc1twYXJzZUludChhLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xXTp0Lm5hbWUuY29sb3I6ci5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmdC50b3RhbC5zaG93JiYocz10LnRvdGFsLmNvbG9yKTt2YXIgbz1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsXCIpLG49ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZVwiKTtpPSgwLHQudmFsdWUuZm9ybWF0dGVyKShpLHIpLGF8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQudG90YWwuZm9ybWF0dGVyfHwoaT10LnRvdGFsLmZvcm1hdHRlcihyKSk7dmFyIGw9ZT09PXQudG90YWwubGFiZWw7ZT10Lm5hbWUuZm9ybWF0dGVyKGUsbCxyKSxudWxsIT09byYmKG8udGV4dENvbnRlbnQ9ZSksbnVsbCE9PW4mJihuLnRleHRDb250ZW50PWkpLG51bGwhPT1vJiYoby5zdHlsZS5maWxsPXMpfX0se2tleTpcInByaW50RGF0YUxhYmVsc0lubmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10LmdldEF0dHJpYnV0ZShcImRhdGE6dmFsdWVcIikscz1pLmdsb2JhbHMuc2VyaWVzTmFtZXNbcGFyc2VJbnQodC5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMV07aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmdGhpcy5wcmludElubmVyTGFiZWxzKGUscyxhLHQpO3ZhciByPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwXCIpO251bGwhPT1yJiYoci5zdHlsZS5vcGFjaXR5PTEpfX0se2tleTpcImRyYXdTcG9rZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9aS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnNwb2tlcztpZigwIT09cy5zdHJva2VXaWR0aCl7Zm9yKHZhciByPVtdLG89MzYwL2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLG49MDtuPGkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO24rKylyLnB1c2goeC5wb2xhclRvQ2FydGVzaWFuKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclksaS5nbG9iYWxzLnJhZGlhbFNpemUsaS5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUrbypuKSk7ci5mb3JFYWNoKChmdW5jdGlvbihpLHIpe3ZhciBvPWEuZHJhd0xpbmUoaS54LGkueSxlLmNlbnRlclgsZS5jZW50ZXJZLEFycmF5LmlzQXJyYXkocy5jb25uZWN0b3JDb2xvcnMpP3MuY29ubmVjdG9yQ29sb3JzW3JdOnMuY29ubmVjdG9yQ29sb3JzKTt0LmFkZChvKX0pKX19fSx7a2V5OlwicmV2ZXJ0RGF0YUxhYmVsc0lubmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiKSxvPSExLG49cy5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtcGllLWFyZWFcIiksbD1mdW5jdGlvbih0KXt2YXIgaT10Lm1ha2VTbGljZU91dCxzPXQucHJpbnRMYWJlbDtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG4sKGZ1bmN0aW9uKHQpe1widHJ1ZVwiPT09dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnBpZUNsaWNrZWRcIikmJihpJiYobz0hMCkscyYmYS5wcmludERhdGFMYWJlbHNJbm5lcih0LGUpKX0pKX07aWYobCh7bWFrZVNsaWNlT3V0OiEwLHByaW50TGFiZWw6ITF9KSxlLnRvdGFsLnNob3cmJnMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpbyYmIWUudG90YWwuc2hvd0Fsd2F5cz9sKHttYWtlU2xpY2VPdXQ6ITEscHJpbnRMYWJlbDohMH0pOnRoaXMucHJpbnRJbm5lckxhYmVscyhlLGUudG90YWwubGFiZWwsZS50b3RhbC5mb3JtYXR0ZXIocykpO2Vsc2UgaWYobCh7bWFrZVNsaWNlT3V0OiExLHByaW50TGFiZWw6ITB9KSwhbylpZihzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aCYmcy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSlpZihzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLmxlbmd0aD4wKXt2YXIgaD1zLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLGM9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0aGlzLmNoYXJ0VHlwZS50b0xvd2VyQ2FzZSgpLFwiLXNsaWNlLVwiKS5jb25jYXQoaCkpO3RoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIoYyxlKX1lbHNlIHImJnMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoJiYwPT09cy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGgmJihyLnN0eWxlLm9wYWNpdHk9MCk7ZWxzZSByJiZzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYoci5zdHlsZS5vcGFjaXR5PTApfX1dKSx0fSgpLFB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuY2hhcnRUeXBlPXRoaXMudy5jb25maWcuY2hhcnQudHlwZSx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCx0aGlzLmFuaW1EdXI9MDt2YXIgaT10aGlzLnc7dGhpcy5ncmFwaGljcz1uZXcgbSh0aGlzLmN0eCksdGhpcy5saW5lQ29sb3JBcnI9dm9pZCAwIT09aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM/aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6aS5nbG9iYWxzLmNvbG9ycyx0aGlzLmRlZmF1bHRTaXplPWkuZ2xvYmFscy5zdmdIZWlnaHQ8aS5nbG9iYWxzLnN2Z1dpZHRoP2kuZ2xvYmFscy5ncmlkSGVpZ2h0KzEuNSppLmdsb2JhbHMuZ29sZGVuUGFkZGluZzppLmdsb2JhbHMuZ3JpZFdpZHRoLHRoaXMuaXNMb2c9aS5jb25maWcueWF4aXNbMF0ubG9nYXJpdGhtaWMsdGhpcy5jb3JlVXRpbHM9bmV3IHkodGhpcy5jdHgpLHRoaXMubWF4VmFsdWU9dGhpcy5pc0xvZz90aGlzLmNvcmVVdGlscy5nZXRMb2dWYWwoaS5nbG9iYWxzLm1heFksMCk6aS5nbG9iYWxzLm1heFksdGhpcy5taW5WYWx1ZT10aGlzLmlzTG9nP3RoaXMuY29yZVV0aWxzLmdldExvZ1ZhbCh0aGlzLncuZ2xvYmFscy5taW5ZLDApOmkuZ2xvYmFscy5taW5ZLHRoaXMucG9seWdvbnM9aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMsdGhpcy5zdHJva2VXaWR0aD1pLmNvbmZpZy5zdHJva2Uuc2hvdz9pLmNvbmZpZy5zdHJva2Uud2lkdGg6MCx0aGlzLnNpemU9dGhpcy5kZWZhdWx0U2l6ZS8yLjEtdGhpcy5zdHJva2VXaWR0aC1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmJsdXIsaS5jb25maWcueGF4aXMubGFiZWxzLnNob3cmJih0aGlzLnNpemU9dGhpcy5zaXplLWkuZ2xvYmFscy54QXhpc0xhYmVsc1dpZHRoLzEuNzUpLHZvaWQgMCE9PWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnNpemUmJih0aGlzLnNpemU9aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIuc2l6ZSksdGhpcy5kYXRhUmFkaXVzT2ZQZXJjZW50PVtdLHRoaXMuZGF0YVJhZGl1cz1bXSx0aGlzLmFuZ2xlQXJyPVtdLHRoaXMueWF4aXNMYWJlbHNUZXh0c1Bvcz1bXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMsYT10aGlzLncscz1uZXcgUih0aGlzLmN0eCkscj1bXSxvPW5ldyBPKHRoaXMuY3R4KTt0Lmxlbmd0aCYmKHRoaXMuZGF0YVBvaW50c0xlbj10W2EuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgpLHRoaXMuZGlzQW5nbGU9MipNYXRoLlBJL3RoaXMuZGF0YVBvaW50c0xlbjt2YXIgbj1hLmdsb2JhbHMuZ3JpZFdpZHRoLzIsbD1hLmdsb2JhbHMuZ3JpZEhlaWdodC8yLGg9bithLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5vZmZzZXRYLGM9bCthLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5vZmZzZXRZLGQ9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChofHwwLFwiLCBcIikuY29uY2F0KGN8fDAsXCIpXCIpfSksZz1bXSx1PW51bGwscD1udWxsO2lmKHRoaXMueWF4aXNMYWJlbHM9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzXCJ9KSx0LmZvckVhY2goKGZ1bmN0aW9uKHQsbil7dmFyIGw9dC5sZW5ndGg9PT1hLmdsb2JhbHMuZGF0YVBvaW50cyxoPWkuZ3JhcGhpY3MuZ3JvdXAoKS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsXCJkYXRhOmxvbmdlc3RTZXJpZXNcIjpsLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW25dKSxyZWw6bisxLFwiZGF0YTpyZWFsSW5kZXhcIjpufSk7aS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dPVtdLGkuZGF0YVJhZGl1c1tuXT1bXSxpLmFuZ2xlQXJyW25dPVtdLHQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgYT1NYXRoLmFicyhpLm1heFZhbHVlLWkubWluVmFsdWUpO3QrPU1hdGguYWJzKGkubWluVmFsdWUpLGkuaXNMb2cmJih0PWkuY29yZVV0aWxzLmdldExvZ1ZhbCh0LDApKSxpLmRhdGFSYWRpdXNPZlBlcmNlbnRbbl1bZV09dC9hLGkuZGF0YVJhZGl1c1tuXVtlXT1pLmRhdGFSYWRpdXNPZlBlcmNlbnRbbl1bZV0qaS5zaXplLGkuYW5nbGVBcnJbbl1bZV09ZSppLmRpc0FuZ2xlfSkpLGc9aS5nZXREYXRhUG9pbnRzUG9zKGkuZGF0YVJhZGl1c1tuXSxpLmFuZ2xlQXJyW25dKTt2YXIgYz1pLmNyZWF0ZVBhdGhzKGcse3g6MCx5OjB9KTt1PWkuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwIGFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIn0pLHA9aS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6bn0pLGEuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6dS5ub2RlLGluZGV4Om59KTt2YXIgZD17aTpuLHJlYWxJbmRleDpuLGFuaW1hdGlvbkRlbGF5Om4saW5pdGlhbFNwZWVkOmEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOmEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLXJhZGFyXCIsc2hvdWxkQ2xpcFRvR3JpZDohMSxiaW5kRXZlbnRzT25QYXRoczohMSxzdHJva2U6YS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbbl0sc3Ryb2tlTGluZUNhcDphLmNvbmZpZy5zdHJva2UubGluZUNhcH0sZj1udWxsO2EuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoZj1pLmdldFByZXZpb3VzUGF0aChuKSk7Zm9yKHZhciBiPTA7YjxjLmxpbmVQYXRoc1RvLmxlbmd0aDtiKyspe3ZhciBtPWkuZ3JhcGhpY3MucmVuZGVyUGF0aHMoZShlKHt9LGQpLHt9LHtwYXRoRnJvbTpudWxsPT09Zj9jLmxpbmVQYXRoc0Zyb21bYl06ZixwYXRoVG86Yy5saW5lUGF0aHNUb1tiXSxzdHJva2VXaWR0aDpBcnJheS5pc0FycmF5KGkuc3Ryb2tlV2lkdGgpP2kuc3Ryb2tlV2lkdGhbbl06aS5zdHJva2VXaWR0aCxmaWxsOlwibm9uZVwiLGRyYXdTaGFkb3c6ITF9KSk7aC5hZGQobSk7dmFyIHk9cy5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOm59KSx3PWkuZ3JhcGhpY3MucmVuZGVyUGF0aHMoZShlKHt9LGQpLHt9LHtwYXRoRnJvbTpudWxsPT09Zj9jLmFyZWFQYXRoc0Zyb21bYl06ZixwYXRoVG86Yy5hcmVhUGF0aHNUb1tiXSxzdHJva2VXaWR0aDowLGZpbGw6eSxkcmF3U2hhZG93OiExfSkpO2lmKGEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGs9bmV3IHYoaS5jdHgpLEE9YS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztrLmRyb3BTaGFkb3codyxPYmplY3QuYXNzaWduKHt9LEEse25vVXNlclNwYWNlT25Vc2U6ITB9KSxuKX1oLmFkZCh3KX10LmZvckVhY2goKGZ1bmN0aW9uKHQscyl7dmFyIHI9bmV3IEgoaS5jdHgpLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLW1hcmtlclwiLHNlcmllc0luZGV4Om4sZGF0YVBvaW50SW5kZXg6c30pLGw9aS5ncmFwaGljcy5kcmF3TWFya2VyKGdbc10ueCxnW3NdLnkscik7bC5hdHRyKFwicmVsXCIscyksbC5hdHRyKFwialwiLHMpLGwuYXR0cihcImluZGV4XCIsbiksbC5ub2RlLnNldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIixyLnBTaXplKTt2YXIgYz1pLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIn0pO2MmJmMuYWRkKGwpLHUuYWRkKGMpLGguYWRkKHUpO3ZhciBkPWEuY29uZmlnLmRhdGFMYWJlbHM7aWYoZC5lbmFibGVkKXt2YXIgZj1kLmZvcm1hdHRlcihhLmdsb2JhbHMuc2VyaWVzW25dW3NdLHtzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4OnMsdzphfSk7by5wbG90RGF0YUxhYmVsc1RleHQoe3g6Z1tzXS54LHk6Z1tzXS55LHRleHQ6Zix0ZXh0QW5jaG9yOlwibWlkZGxlXCIsaTpuLGo6bixwYXJlbnQ6cCxvZmZzZXRDb3JyZWN0aW9uOiExLGRhdGFMYWJlbHNDb25maWc6ZSh7fSxkKX0pfWguYWRkKHApfSkpLHIucHVzaChoKX0pKSx0aGlzLmRyYXdQb2x5Z29ucyh7cGFyZW50OmR9KSxhLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdyl7dmFyIGY9dGhpcy5kcmF3WEF4aXNUZXh0cygpO2QuYWRkKGYpfXJldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKHQpe2QuYWRkKHQpfSkpLGQuYWRkKHRoaXMueWF4aXNMYWJlbHMpLGR9fSx7a2V5OlwiZHJhd1BvbHlnb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMsaT10aGlzLncsYT10LnBhcmVudCxzPW5ldyBDdCh0aGlzLmN0eCkscj1pLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQucmV2ZXJzZSgpLG89ci5sZW5ndGgsbj1bXSxsPXRoaXMuc2l6ZS8oby0xKSxoPTA7aDxvO2grKyluW2hdPWwqaDtuLnJldmVyc2UoKTt2YXIgYz1bXSxkPVtdO24uZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgYT14LmdldFBvbHlnb25Qb3ModCxlLmRhdGFQb2ludHNMZW4pLHM9XCJcIjthLmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7aWYoMD09PWkpe3ZhciByPWUuZ3JhcGhpY3MuZHJhd0xpbmUodC54LHQueSwwLDAsQXJyYXkuaXNBcnJheShlLnBvbHlnb25zLmNvbm5lY3RvckNvbG9ycyk/ZS5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnNbYV06ZS5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnMpO2QucHVzaChyKX0wPT09YSYmZS55YXhpc0xhYmVsc1RleHRzUG9zLnB1c2goe3g6dC54LHk6dC55fSkscys9dC54K1wiLFwiK3QueStcIiBcIn0pKSxjLnB1c2gocyl9KSksYy5mb3JFYWNoKChmdW5jdGlvbih0LHMpe3ZhciByPWUucG9seWdvbnMuc3Ryb2tlQ29sb3JzLG89ZS5wb2x5Z29ucy5zdHJva2VXaWR0aCxuPWUuZ3JhcGhpY3MuZHJhd1BvbHlnb24odCxBcnJheS5pc0FycmF5KHIpP3Jbc106cixBcnJheS5pc0FycmF5KG8pP29bc106byxpLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9yc1tzXSk7YS5hZGQobil9KSksZC5mb3JFYWNoKChmdW5jdGlvbih0KXthLmFkZCh0KX0pKSxpLmNvbmZpZy55YXhpc1swXS5zaG93JiZ0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3MuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgYT1zLmRyYXdZQXhpc1RleHRzKHQueCx0LnksaSxyW2ldKTtlLnlheGlzTGFiZWxzLmFkZChhKX0pKX19LHtrZXk6XCJkcmF3WEF4aXNUZXh0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxpPXRoaXMudyxhPWkuY29uZmlnLnhheGlzLmxhYmVscyxzPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpc1wifSkscj14LmdldFBvbHlnb25Qb3ModGhpcy5zaXplLHRoaXMuZGF0YVBvaW50c0xlbik7cmV0dXJuIGkuZ2xvYmFscy5sYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24obyxuKXt2YXIgbD1pLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLGg9bmV3IE8odC5jdHgpO2lmKHJbbl0pe3ZhciBjPXQuZ2V0VGV4dFBvcyhyW25dLHQuc2l6ZSksZD1sKG8se3Nlcmllc0luZGV4Oi0xLGRhdGFQb2ludEluZGV4Om4sdzppfSk7aC5wbG90RGF0YUxhYmVsc1RleHQoe3g6Yy5uZXdYLHk6Yy5uZXdZLHRleHQ6ZCx0ZXh0QW5jaG9yOmMudGV4dEFuY2hvcixpOm4sajpuLHBhcmVudDpzLGNvbG9yOkFycmF5LmlzQXJyYXkoYS5zdHlsZS5jb2xvcnMpJiZhLnN0eWxlLmNvbG9yc1tuXT9hLnN0eWxlLmNvbG9yc1tuXTpcIiNhOGE4YThcIixkYXRhTGFiZWxzQ29uZmlnOmUoe3RleHRBbmNob3I6Yy50ZXh0QW5jaG9yLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITF9fSxhKSxvZmZzZXRDb3JyZWN0aW9uOiExfSl9fSkpLHN9fSx7a2V5OlwiY3JlYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT1bXSxzPVtdLHI9W10sbz1bXTtpZih0Lmxlbmd0aCl7cz1bdGhpcy5ncmFwaGljcy5tb3ZlKGUueCxlLnkpXSxvPVt0aGlzLmdyYXBoaWNzLm1vdmUoZS54LGUueSldO3ZhciBuPXRoaXMuZ3JhcGhpY3MubW92ZSh0WzBdLngsdFswXS55KSxsPXRoaXMuZ3JhcGhpY3MubW92ZSh0WzBdLngsdFswXS55KTt0LmZvckVhY2goKGZ1bmN0aW9uKGUsYSl7bis9aS5ncmFwaGljcy5saW5lKGUueCxlLnkpLGwrPWkuZ3JhcGhpY3MubGluZShlLngsZS55KSxhPT09dC5sZW5ndGgtMSYmKG4rPVwiWlwiLGwrPVwiWlwiKX0pKSxhLnB1c2gobiksci5wdXNoKGwpfXJldHVybntsaW5lUGF0aHNGcm9tOnMsbGluZVBhdGhzVG86YSxhcmVhUGF0aHNGcm9tOm8sYXJlYVBhdGhzVG86cn19fSx7a2V5OlwiZ2V0VGV4dFBvc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9XCJtaWRkbGVcIixhPXQueCxzPXQueTtyZXR1cm4gTWF0aC5hYnModC54KT49MTA/dC54PjA/KGk9XCJzdGFydFwiLGErPTEwKTp0Lng8MCYmKGk9XCJlbmRcIixhLT0xMCk6aT1cIm1pZGRsZVwiLE1hdGguYWJzKHQueSk+PWUtMTAmJih0Lnk8MD9zLT0xMDp0Lnk+MCYmKHMrPTEwKSkse3RleHRBbmNob3I6aSxuZXdYOmEsbmV3WTpzfX19LHtrZXk6XCJnZXRQcmV2aW91c1BhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9bnVsbCxhPTA7YTxlLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7YSsrKXt2YXIgcz1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXTtzLnBhdGhzLmxlbmd0aD4wJiZwYXJzZUludChzLnJlYWxJbmRleCwxMCk9PT1wYXJzZUludCh0LDEwKSYmdm9pZCAwIT09ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV0ucGF0aHNbMF0mJihpPWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdLnBhdGhzWzBdLmQpfXJldHVybiBpfX0se2tleTpcImdldERhdGFQb2ludHNQb3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp0aGlzLmRhdGFQb2ludHNMZW47dD10fHxbXSxlPWV8fFtdO2Zvcih2YXIgYT1bXSxzPTA7czxpO3MrKyl7dmFyIHI9e307ci54PXRbc10qTWF0aC5zaW4oZVtzXSksci55PS10W3NdKk1hdGguY29zKGVbc10pLGEucHVzaChyKX1yZXR1cm4gYX19XSksdH0oKSxJdD1mdW5jdGlvbih0KXtuKGksTHQpO3ZhciBlPWQoaSk7ZnVuY3Rpb24gaSh0KXt2YXIgczthKHRoaXMsaSksKHM9ZS5jYWxsKHRoaXMsdCkpLmN0eD10LHMudz10Lncscy5hbmltQmVnaW5BcnI9WzBdLHMuYW5pbUR1cj0wO3ZhciByPXMudztyZXR1cm4gcy5zdGFydEFuZ2xlPXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlLHMuZW5kQW5nbGU9ci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLHMudG90YWxBbmdsZT1NYXRoLmFicyhyLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZW5kQW5nbGUtci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUpLHMudHJhY2tTdGFydEFuZ2xlPXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zdGFydEFuZ2xlLHMudHJhY2tFbmRBbmdsZT1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suZW5kQW5nbGUscy5kb251dERhdGFMYWJlbHM9cy53LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZGF0YUxhYmVscyxzLnJhZGlhbERhdGFMYWJlbHM9cy5kb251dERhdGFMYWJlbHMscy50cmFja1N0YXJ0QW5nbGV8fChzLnRyYWNrU3RhcnRBbmdsZT1zLnN0YXJ0QW5nbGUpLHMudHJhY2tFbmRBbmdsZXx8KHMudHJhY2tFbmRBbmdsZT1zLmVuZEFuZ2xlKSwzNjA9PT1zLmVuZEFuZ2xlJiYocy5lbmRBbmdsZT0zNTkuOTkpLHMubWFyZ2luPXBhcnNlSW50KHIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5tYXJnaW4sMTApLHN9cmV0dXJuIHIoaSxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyXCJ9KTtpZihlLmdsb2JhbHMubm9EYXRhKXJldHVybiBhO3ZhciBzPWkuZ3JvdXAoKSxyPXRoaXMuZGVmYXVsdFNpemUvMixvPWUuZ2xvYmFscy5ncmlkV2lkdGgvMixuPXRoaXMuZGVmYXVsdFNpemUvMi4wNTtlLmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZHx8KG49bi1lLmNvbmZpZy5zdHJva2Uud2lkdGgtZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyKTt2YXIgbD1lLmdsb2JhbHMuZmlsbC5jb2xvcnM7aWYoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnNob3cpe3ZhciBoPXRoaXMuZHJhd1RyYWNrcyh7c2l6ZTpuLGNlbnRlclg6byxjZW50ZXJZOnIsY29sb3JBcnI6bCxzZXJpZXM6dH0pO3MuYWRkKGgpfXZhciBjPXRoaXMuZHJhd0FyY3Moe3NpemU6bixjZW50ZXJYOm8sY2VudGVyWTpyLGNvbG9yQXJyOmwsc2VyaWVzOnR9KSxkPTM2MDtlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZTwwJiYoZD10aGlzLnRvdGFsQW5nbGUpO3ZhciBnPSgzNjAtZCkvMzYwO2lmKGUuZ2xvYmFscy5yYWRpYWxTaXplPW4tbipnLHRoaXMucmFkaWFsRGF0YUxhYmVscy52YWx1ZS5zaG93KXt2YXIgdT1NYXRoLm1heCh0aGlzLnJhZGlhbERhdGFMYWJlbHMudmFsdWUub2Zmc2V0WSx0aGlzLnJhZGlhbERhdGFMYWJlbHMubmFtZS5vZmZzZXRZKTtlLmdsb2JhbHMucmFkaWFsU2l6ZSs9dSpnfXJldHVybiBzLmFkZChjLmcpLFwiZnJvbnRcIj09PWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cucG9zaXRpb24mJihjLmcuYWRkKGMuZWxIb2xsb3cpLGMuZGF0YUxhYmVscyYmYy5nLmFkZChjLmRhdGFMYWJlbHMpKSxhLmFkZChzKSxhfX0se2tleTpcImRyYXdUcmFja3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtdHJhY2tzXCJ9KSxzPW5ldyB2KHRoaXMuY3R4KSxyPW5ldyBSKHRoaXMuY3R4KSxvPXRoaXMuZ2V0U3Ryb2tlV2lkdGgodCk7dC5zaXplPXQuc2l6ZS1vLzI7Zm9yKHZhciBuPTA7bjx0LnNlcmllcy5sZW5ndGg7bisrKXt2YXIgbD1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLXRyYWNrIGFwZXhjaGFydHMtdHJhY2tcIn0pO2EuYWRkKGwpLGwuYXR0cih7cmVsOm4rMX0pLHQuc2l6ZT10LnNpemUtby10aGlzLm1hcmdpbjt2YXIgaD1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2ssYz1yLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6MCxzaXplOnQuc2l6ZSxmaWxsQ29sb3JzOkFycmF5LmlzQXJyYXkoaC5iYWNrZ3JvdW5kKT9oLmJhY2tncm91bmRbbl06aC5iYWNrZ3JvdW5kLHNvbGlkOiEwfSksZD10aGlzLnRyYWNrU3RhcnRBbmdsZSxnPXRoaXMudHJhY2tFbmRBbmdsZTtNYXRoLmFicyhnKStNYXRoLmFicyhkKT49MzYwJiYoZz0zNjAtTWF0aC5hYnModGhpcy5zdGFydEFuZ2xlKS0uMSk7dmFyIHU9aS5kcmF3UGF0aCh7ZDpcIlwiLHN0cm9rZTpjLHN0cm9rZVdpZHRoOm8qcGFyc2VJbnQoaC5zdHJva2VXaWR0aCwxMCkvMTAwLGZpbGw6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpoLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWFyZWFcIn0pO2lmKGguZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgcD1oLmRyb3BTaGFkb3c7cy5kcm9wU2hhZG93KHUscCl9bC5hZGQodSksdS5hdHRyKFwiaWRcIixcImFwZXhjaGFydHMtcmFkaWFsYmFyVHJhY2stXCIrbiksdGhpcy5hbmltYXRlUGF0aHModSx7Y2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksZW5kQW5nbGU6ZyxzdGFydEFuZ2xlOmQsc2l6ZTp0LnNpemUsaTpuLHRvdGFsSXRlbXM6MixhbmltQmVnaW5BcnI6MCxkdXI6MCxpc1RyYWNrOiEwLGVhc2luZzplLmdsb2JhbHMuZWFzaW5nfSl9cmV0dXJuIGF9fSx7a2V5OlwiZHJhd0FyY3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1uZXcgUih0aGlzLmN0eCkscz1uZXcgdih0aGlzLmN0eCkscj1pLmdyb3VwKCksbz10aGlzLmdldFN0cm9rZVdpZHRoKHQpO3Quc2l6ZT10LnNpemUtby8yO3ZhciBuPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuYmFja2dyb3VuZCxsPXQuc2l6ZS1vKnQuc2VyaWVzLmxlbmd0aC10aGlzLm1hcmdpbip0LnNlcmllcy5sZW5ndGgtbypwYXJzZUludChlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suc3Ryb2tlV2lkdGgsMTApLzEwMC8yLGg9bC1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93Lm1hcmdpbjt2b2lkIDAhPT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlJiYobj10aGlzLmRyYXdIb2xsb3dJbWFnZSh0LHIsbCxuKSk7dmFyIGM9dGhpcy5kcmF3SG9sbG93KHtzaXplOmgsY2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksZmlsbDpufHxcInRyYW5zcGFyZW50XCJ9KTtpZihlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGQ9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5kcm9wU2hhZG93O3MuZHJvcFNoYWRvdyhjLGQpfXZhciBnPTE7IXRoaXMucmFkaWFsRGF0YUxhYmVscy50b3RhbC5zaG93JiZlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYoZz0wKTt2YXIgdT1udWxsO3RoaXMucmFkaWFsRGF0YUxhYmVscy5zaG93JiYodT10aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLnJhZGlhbERhdGFMYWJlbHMse2hvbGxvd1NpemU6bCxjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxvcGFjaXR5Omd9KSksXCJiYWNrXCI9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnBvc2l0aW9uJiYoci5hZGQoYyksdSYmci5hZGQodSkpO3ZhciBwPSExO2UuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5pbnZlcnNlT3JkZXImJihwPSEwKTtmb3IodmFyIGY9cD90LnNlcmllcy5sZW5ndGgtMTowO3A/Zj49MDpmPHQuc2VyaWVzLmxlbmd0aDtwP2YtLTpmKyspe3ZhciBiPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1yYWRpYWwtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhlLmdsb2JhbHMuc2VyaWVzTmFtZXNbZl0pfSk7ci5hZGQoYiksYi5hdHRyKHtyZWw6ZisxLFwiZGF0YTpyZWFsSW5kZXhcIjpmfSksdGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoYixmKSx0LnNpemU9dC5zaXplLW8tdGhpcy5tYXJnaW47dmFyIHk9YS5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmYsc2l6ZTp0LnNpemUsdmFsdWU6dC5zZXJpZXNbZl19KSx3PXRoaXMuc3RhcnRBbmdsZSxrPXZvaWQgMCxBPXgubmVnVG9aZXJvKHQuc2VyaWVzW2ZdPjEwMD8xMDA6dC5zZXJpZXNbZl0pLzEwMCxTPU1hdGgucm91bmQodGhpcy50b3RhbEFuZ2xlKkEpK3RoaXMuc3RhcnRBbmdsZSxDPXZvaWQgMDtlLmdsb2JhbHMuZGF0YUNoYW5nZWQmJihrPXRoaXMuc3RhcnRBbmdsZSxDPU1hdGgucm91bmQodGhpcy50b3RhbEFuZ2xlKngubmVnVG9aZXJvKGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2ZdKS8xMDApK2spLE1hdGguYWJzKFMpK01hdGguYWJzKHcpPj0zNjAmJihTLT0uMDEpLE1hdGguYWJzKEMpK01hdGguYWJzKGspPj0zNjAmJihDLT0uMDEpO3ZhciBMPVMtdyxQPUFycmF5LmlzQXJyYXkoZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSk/ZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheVtmXTplLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5LEk9aS5kcmF3UGF0aCh7ZDpcIlwiLHN0cm9rZTp5LHN0cm9rZVdpZHRoOm8sZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTplLmNvbmZpZy5maWxsLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWFyZWEgYXBleGNoYXJ0cy1yYWRpYWxiYXItc2xpY2UtXCIrZixzdHJva2VEYXNoQXJyYXk6UH0pO2lmKG0uc2V0QXR0cnMoSS5ub2RlLHtcImRhdGE6YW5nbGVcIjpMLFwiZGF0YTp2YWx1ZVwiOnQuc2VyaWVzW2ZdfSksZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgTT1lLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O3MuZHJvcFNoYWRvdyhJLE0sZil9cy5zZXRTZWxlY3Rpb25GaWx0ZXIoSSwwLGYpLHRoaXMuYWRkTGlzdGVuZXJzKEksdGhpcy5yYWRpYWxEYXRhTGFiZWxzKSxiLmFkZChJKSxJLmF0dHIoe2luZGV4OjAsajpmfSk7dmFyIFQ9MDshdGhpcy5pbml0aWFsQW5pbXx8ZS5nbG9iYWxzLnJlc2l6ZWR8fGUuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8KFQ9ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksZS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiYoVD1lLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQpLHRoaXMuYW5pbUR1cj1ULygxLjIqdC5zZXJpZXMubGVuZ3RoKSt0aGlzLmFuaW1EdXIsdGhpcy5hbmltQmVnaW5BcnIucHVzaCh0aGlzLmFuaW1EdXIpLHRoaXMuYW5pbWF0ZVBhdGhzKEkse2NlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGVuZEFuZ2xlOlMsc3RhcnRBbmdsZTp3LHByZXZFbmRBbmdsZTpDLHByZXZTdGFydEFuZ2xlOmssc2l6ZTp0LnNpemUsaTpmLHRvdGFsSXRlbXM6MixhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOlQsc2hvdWxkU2V0UHJldlBhdGhzOiEwLGVhc2luZzplLmdsb2JhbHMuZWFzaW5nfSl9cmV0dXJue2c6cixlbEhvbGxvdzpjLGRhdGFMYWJlbHM6dX19fSx7a2V5OlwiZHJhd0hvbGxvd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBtKHRoaXMuY3R4KS5kcmF3Q2lyY2xlKDIqdC5zaXplKTtyZXR1cm4gZS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWhvbGxvd1wiLGN4OnQuY2VudGVyWCxjeTp0LmNlbnRlclkscjp0LnNpemUsZmlsbDp0LmZpbGx9KSxlfX0se2tleTpcImRyYXdIb2xsb3dJbWFnZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPW5ldyBSKHRoaXMuY3R4KSxvPXgucmFuZG9tSWQoKSxuPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2U7aWYocy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZUNsaXBwZWQpci5jbGlwcGVkSW1nQXJlYSh7d2lkdGg6aSxoZWlnaHQ6aSxpbWFnZTpuLHBhdHRlcm5JRDpcInBhdHRlcm5cIi5jb25jYXQocy5nbG9iYWxzLmN1aWQpLmNvbmNhdChvKX0pLGE9XCJ1cmwoI3BhdHRlcm5cIi5jb25jYXQocy5nbG9iYWxzLmN1aWQpLmNvbmNhdChvLFwiKVwiKTtlbHNle3ZhciBsPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VXaWR0aCxoPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VIZWlnaHQ7aWYodm9pZCAwPT09bCYmdm9pZCAwPT09aCl7dmFyIGM9cy5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShuKS5sb2FkZWQoKGZ1bmN0aW9uKGUpe3RoaXMubW92ZSh0LmNlbnRlclgtZS53aWR0aC8yK3MuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRYLHQuY2VudGVyWS1lLmhlaWdodC8yK3MuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRZKX0pKTtlLmFkZChjKX1lbHNle3ZhciBkPXMuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UobikubG9hZGVkKChmdW5jdGlvbihlKXt0aGlzLm1vdmUodC5jZW50ZXJYLWwvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WCx0LmNlbnRlclktaC8yK3MuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRZKSx0aGlzLnNpemUobCxoKX0pKTtlLmFkZChkKX19cmV0dXJuIGF9fSx7a2V5OlwiZ2V0U3Ryb2tlV2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIHQuc2l6ZSooMTAwLXBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuc2l6ZSwxMCkpLzEwMC8odC5zZXJpZXMubGVuZ3RoKzEpLXRoaXMubWFyZ2lufX1dKSxpfSgpLE10PWZ1bmN0aW9uKHQpe24ocyx5dCk7dmFyIGk9ZChzKTtmdW5jdGlvbiBzKCl7cmV0dXJuIGEodGhpcyxzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihzLFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSl7dmFyIGE9dGhpcy53LHM9bmV3IG0odGhpcy5jdHgpO3RoaXMucmFuZ2VCYXJPcHRpb25zPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMucmFuZ2VCYXIsdGhpcy5zZXJpZXM9dCx0aGlzLnNlcmllc1JhbmdlU3RhcnQ9YS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnQsdGhpcy5zZXJpZXNSYW5nZUVuZD1hLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQsdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCk7Zm9yKHZhciByPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wifSksbj0wO248dC5sZW5ndGg7bisrKXt2YXIgbCxoLGMsZCxnPXZvaWQgMCx1PXZvaWQgMCxwPWEuZ2xvYmFscy5jb21ib0NoYXJ0cz9pW25dOm4sZj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbcF0pLHJlbDpuKzEsXCJkYXRhOnJlYWxJbmRleFwiOnB9KTt0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhmLHApLHRbbl0ubGVuZ3RoPjAmJih0aGlzLnZpc2libGVJPXRoaXMudmlzaWJsZUkrMSk7dmFyIGI9MCx2PTA7dGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9cCk7dmFyIHk9dGhpcy5iYXJIZWxwZXJzLmluaXRpYWxQb3NpdGlvbnMoKTt1PXkueSxkPXkuemVyb1csZz15Lngsdj15LmJhcldpZHRoLGI9eS5iYXJIZWlnaHQsbD15LnhEaXZpc2lvbixoPXkueURpdmlzaW9uLGM9eS56ZXJvSDtmb3IodmFyIHc9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6cH0pLGs9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhbmdlYmFyLWdvYWxzLW1hcmtlcnNcIn0pLEE9MDtBPGEuZ2xvYmFscy5kYXRhUG9pbnRzO0ErKyl7dmFyIFMsQz10aGlzLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgobixBLHApLEw9dGhpcy5zZXJpZXNSYW5nZVN0YXJ0W25dW0FdLFA9dGhpcy5zZXJpZXNSYW5nZUVuZFtuXVtBXSxJPW51bGwsTT1udWxsLFQ9bnVsbCx6PXt4OmcseTp1LHN0cm9rZVdpZHRoOkMsZWxTZXJpZXM6Zn0sWD10aGlzLnNlcmllc0xlbjtpZihhLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3MmJihYPTEpLHZvaWQgMD09PWEuY29uZmlnLnNlcmllc1tuXS5kYXRhW0FdKWJyZWFrO2lmKHRoaXMuaXNIb3Jpem9udGFsKXtUPXUrYip0aGlzLnZpc2libGVJO3ZhciBFPShoLWIqWCkvMjtpZihhLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtBXS54KXt2YXIgWT10aGlzLmRldGVjdE92ZXJsYXBwaW5nQmFycyh7aTpuLGo6QSxiYXJZUG9zaXRpb246VCxzcnR5OkUsYmFySGVpZ2h0OmIseURpdmlzaW9uOmgsaW5pdFBvc2l0aW9uczp5fSk7Yj1ZLmJhckhlaWdodCxUPVkuYmFyWVBvc2l0aW9ufXY9KEk9dGhpcy5kcmF3UmFuZ2VCYXJQYXRocyhlKHtpbmRleGVzOntpOm4sajpBLHJlYWxJbmRleDpwfSxiYXJIZWlnaHQ6YixiYXJZUG9zaXRpb246VCx6ZXJvVzpkLHlEaXZpc2lvbjpoLHkxOkwseTI6UH0seikpKS5iYXJXaWR0aH1lbHNle2EuZ2xvYmFscy5pc1hOdW1lcmljJiYoZz0oYS5nbG9iYWxzLnNlcmllc1hbbl1bQV0tYS5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXYvMiksTT1nK3YqdGhpcy52aXNpYmxlSTt2YXIgRj0obC12KlgpLzI7aWYoYS5jb25maWcuc2VyaWVzW25dLmRhdGFbQV0ueCl7dmFyIFI9dGhpcy5kZXRlY3RPdmVybGFwcGluZ0JhcnMoe2k6bixqOkEsYmFyWFBvc2l0aW9uOk0sc3J0eDpGLGJhcldpZHRoOnYseERpdmlzaW9uOmwsaW5pdFBvc2l0aW9uczp5fSk7dj1SLmJhcldpZHRoLE09Ui5iYXJYUG9zaXRpb259Yj0oST10aGlzLmRyYXdSYW5nZUNvbHVtblBhdGhzKGUoe2luZGV4ZXM6e2k6bixqOkEscmVhbEluZGV4OnB9LGJhcldpZHRoOnYsYmFyWFBvc2l0aW9uOk0semVyb0g6Yyx4RGl2aXNpb246bH0seikpKS5iYXJIZWlnaHR9dmFyIEg9dGhpcy5iYXJIZWxwZXJzLmRyYXdHb2FsTGluZSh7YmFyWFBvc2l0aW9uOkkuYmFyWFBvc2l0aW9uLGJhcllQb3NpdGlvbjpULGdvYWxYOkkuZ29hbFgsZ29hbFk6SS5nb2FsWSxiYXJIZWlnaHQ6YixiYXJXaWR0aDp2fSk7SCYmay5hZGQoSCksdT1JLnksZz1JLng7dmFyIEQ9dGhpcy5iYXJIZWxwZXJzLmdldFBhdGhGaWxsQ29sb3IodCxuLEEscCksTz1hLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1twXTt0aGlzLnJlbmRlclNlcmllcygobyhTPXtyZWFsSW5kZXg6cCxwYXRoRmlsbDpELGxpbmVGaWxsOk8sajpBLGk6bix4OmcseTp1LHkxOkwseTI6UCxwYXRoRnJvbTpJLnBhdGhGcm9tLHBhdGhUbzpJLnBhdGhUbyxzdHJva2VXaWR0aDpDLGVsU2VyaWVzOmYsc2VyaWVzOnQsYmFySGVpZ2h0OmIsYmFyV2lkdGg6dixiYXJYUG9zaXRpb246TSxiYXJZUG9zaXRpb246VH0sXCJiYXJXaWR0aFwiLHYpLG8oUyxcImVsRGF0YUxhYmVsc1dyYXBcIix3KSxvKFMsXCJlbEdvYWxzTWFya2Vyc1wiLGspLG8oUyxcInZpc2libGVTZXJpZXNcIix0aGlzLnZpc2libGVJKSxvKFMsXCJ0eXBlXCIsXCJyYW5nZWJhclwiKSxTKSl9ci5hZGQoZil9cmV0dXJuIHJ9fSx7a2V5OlwiZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC5qLGE9dC5iYXJZUG9zaXRpb24scz10LmJhclhQb3NpdGlvbixyPXQuc3J0eSxvPXQuc3J0eCxuPXQuYmFySGVpZ2h0LGw9dC5iYXJXaWR0aCxoPXQueURpdmlzaW9uLGM9dC54RGl2aXNpb24sZD10LmluaXRQb3NpdGlvbnMsZz10aGlzLncsdT1bXSxwPWcuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLnJhbmdlTmFtZSxmPWcuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLngseD1BcnJheS5pc0FycmF5KGYpP2Yuam9pbihcIiBcIik6ZixiPWcuZ2xvYmFscy5sYWJlbHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90LmpvaW4oXCIgXCIpOnR9KSkuaW5kZXhPZih4KSx2PWcuZ2xvYmFscy5zZXJpZXNSYW5nZVtlXS5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lng9PT14JiZ0Lm92ZXJsYXBzLmxlbmd0aD4wfSkpO3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbD8oYT1nLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3M/citoKmI6cituKnRoaXMudmlzaWJsZUkraCpiLHY+LTEmJiFnLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJPdmVybGFwJiYodT1nLmdsb2JhbHMuc2VyaWVzUmFuZ2VbZV1bdl0ub3ZlcmxhcHMpLmluZGV4T2YocCk+LTEmJihhPShuPWQuYmFySGVpZ2h0L3UubGVuZ3RoKSp0aGlzLnZpc2libGVJK2gqKDEwMC1wYXJzZUludCh0aGlzLmJhck9wdGlvbnMuYmFySGVpZ2h0LDEwKSkvMTAwLzIrbioodGhpcy52aXNpYmxlSSt1LmluZGV4T2YocCkpK2gqYikpOihiPi0xJiYocz1nLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3M/bytjKmI6bytsKnRoaXMudmlzaWJsZUkrYypiKSx2Pi0xJiYhZy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyT3ZlcmxhcCYmKHU9Zy5nbG9iYWxzLnNlcmllc1JhbmdlW2VdW3ZdLm92ZXJsYXBzKS5pbmRleE9mKHApPi0xJiYocz0obD1kLmJhcldpZHRoL3UubGVuZ3RoKSp0aGlzLnZpc2libGVJK2MqKDEwMC1wYXJzZUludCh0aGlzLmJhck9wdGlvbnMuYmFyV2lkdGgsMTApKS8xMDAvMitsKih0aGlzLnZpc2libGVJK3UuaW5kZXhPZihwKSkrYypiKSkse2JhcllQb3NpdGlvbjphLGJhclhQb3NpdGlvbjpzLGJhckhlaWdodDpuLGJhcldpZHRoOmx9fX0se2tleTpcImRyYXdSYW5nZUNvbHVtblBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC54LGE9dC54RGl2aXNpb24scz10LmJhcldpZHRoLHI9dC5iYXJYUG9zaXRpb24sbz10Lnplcm9ILG49dGhpcy53LGw9ZS5pLGg9ZS5qLGM9dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxkPWUucmVhbEluZGV4LGc9dGhpcy5nZXRSYW5nZVZhbHVlKGQsaCksdT1NYXRoLm1pbihnLnN0YXJ0LGcuZW5kKSxwPU1hdGgubWF4KGcuc3RhcnQsZy5lbmQpO3ZvaWQgMD09PXRoaXMuc2VyaWVzW2xdW2hdfHxudWxsPT09dGhpcy5zZXJpZXNbbF1baF0/dT1vOih1PW8tdS9jLHA9by1wL2MpO3ZhciBmPU1hdGguYWJzKHAtdSkseD10aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoe2JhclhQb3NpdGlvbjpyLGJhcldpZHRoOnMseTE6dSx5MjpwLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc2VyaWVzOnRoaXMuc2VyaWVzUmFuZ2VFbmQscmVhbEluZGV4OmUucmVhbEluZGV4LGk6ZCxqOmgsdzpufSk7aWYobi5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBiPXRoaXMuZ2V0QmFyWEZvck51bWVyaWNYQXhpcyh7eDppLGo6aCxyZWFsSW5kZXg6ZCxiYXJXaWR0aDpzfSk7aT1iLngscj1iLmJhclhQb3NpdGlvbn1lbHNlIGkrPWE7cmV0dXJue3BhdGhUbzp4LnBhdGhUbyxwYXRoRnJvbTp4LnBhdGhGcm9tLGJhckhlaWdodDpmLHg6aSx5OnAsZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxvLGwsaCksYmFyWFBvc2l0aW9uOnJ9fX0se2tleTpcImRyYXdSYW5nZUJhclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC55LGE9dC55MSxzPXQueTIscj10LnlEaXZpc2lvbixvPXQuYmFySGVpZ2h0LG49dC5iYXJZUG9zaXRpb24sbD10Lnplcm9XLGg9dGhpcy53LGM9bCthL3RoaXMuaW52ZXJ0ZWRZUmF0aW8sZD1sK3MvdGhpcy5pbnZlcnRlZFlSYXRpbyxnPU1hdGguYWJzKGQtYyksdT10aGlzLmJhckhlbHBlcnMuZ2V0QmFycGF0aHMoe2JhcllQb3NpdGlvbjpuLGJhckhlaWdodDpvLHgxOmMseDI6ZCxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllc1JhbmdlRW5kLGk6ZS5yZWFsSW5kZXgscmVhbEluZGV4OmUucmVhbEluZGV4LGo6ZS5qLHc6aH0pO3JldHVybiBoLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGkrPXIpLHtwYXRoVG86dS5wYXRoVG8scGF0aEZyb206dS5wYXRoRnJvbSxiYXJXaWR0aDpnLHg6ZCxnb2FsWDp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInhcIixsLG51bGwsZS5yZWFsSW5kZXgsZS5qKSx5Oml9fX0se2tleTpcImdldFJhbmdlVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm57c3RhcnQ6aS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbdF1bZV0sZW5kOmkuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFt0XVtlXX19fV0pLHN9KCksVHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMubGluZUN0eD1lfXJldHVybiByKHQsW3trZXk6XCJzYW1lVmFsdWVTZXJpZXNGaXhcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZigoXCJncmFkaWVudFwiPT09aS5jb25maWcuZmlsbC50eXBlfHxcImdyYWRpZW50XCI9PT1pLmNvbmZpZy5maWxsLnR5cGVbdF0pJiZuZXcgeSh0aGlzLmxpbmVDdHguY3R4LGkpLnNlcmllc0hhdmVTYW1lVmFsdWVzKHQpKXt2YXIgYT1lW3RdLnNsaWNlKCk7YVthLmxlbmd0aC0xXT1hW2EubGVuZ3RoLTFdKzFlLTYsZVt0XT1hfXJldHVybiBlfX0se2tleTpcImNhbGN1bGF0ZVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc2VyaWVzLGk9dC5yZWFsSW5kZXgsYT10Lngscz10Lnkscj10Lmksbz10Lmosbj10LnByZXZZLGw9dGhpcy53LGg9W10sYz1bXTtpZigwPT09byl7dmFyIGQ9dGhpcy5saW5lQ3R4LmNhdGVnb3J5QXhpc0NvcnJlY3Rpb24rbC5jb25maWcubWFya2Vycy5vZmZzZXRYO2wuZ2xvYmFscy5pc1hOdW1lcmljJiYoZD0obC5nbG9iYWxzLnNlcmllc1hbaV1bMF0tbC5nbG9iYWxzLm1pblgpL3RoaXMubGluZUN0eC54UmF0aW8rbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSxoLnB1c2goZCksYy5wdXNoKHguaXNOdW1iZXIoZVtyXVswXSk/bitsLmNvbmZpZy5tYXJrZXJzLm9mZnNldFk6bnVsbCksaC5wdXNoKGErbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSxjLnB1c2goeC5pc051bWJlcihlW3JdW28rMV0pP3MrbC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpfWVsc2UgaC5wdXNoKGErbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSxjLnB1c2goeC5pc051bWJlcihlW3JdW28rMV0pP3MrbC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpO3JldHVybnt4OmgseTpjfX19LHtrZXk6XCJjaGVja1ByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5wYXRoRnJvbUxpbmUsaT10LnBhdGhGcm9tQXJlYSxhPXQucmVhbEluZGV4LHM9dGhpcy53LHI9MDtyPHMuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtyKyspe3ZhciBvPXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdOyhcImxpbmVcIj09PW8udHlwZXx8XCJhcmVhXCI9PT1vLnR5cGUpJiZvLnBhdGhzLmxlbmd0aD4wJiZwYXJzZUludChvLnJlYWxJbmRleCwxMCk9PT1wYXJzZUludChhLDEwKSYmKFwibGluZVwiPT09by50eXBlPyh0aGlzLmxpbmVDdHguYXBwZW5kUGF0aEZyb209ITEsZT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1swXS5kKTpcImFyZWFcIj09PW8udHlwZSYmKHRoaXMubGluZUN0eC5hcHBlbmRQYXRoRnJvbT0hMSxpPXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzBdLmQscy5jb25maWcuc3Ryb2tlLnNob3cmJnMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzFdJiYoZT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1sxXS5kKSkpfXJldHVybntwYXRoRnJvbUxpbmU6ZSxwYXRoRnJvbUFyZWE6aX19fSx7a2V5OlwiZGV0ZXJtaW5lRmlyc3RQcmV2WVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5pLGE9dC5zZXJpZXMscz10LnByZXZZLHI9dC5saW5lWVBvc2l0aW9uLG89dGhpcy53O2lmKHZvaWQgMCE9PShudWxsPT09KGU9YVtpXSl8fHZvaWQgMD09PWU/dm9pZCAwOmVbMF0pKXM9KHI9by5jb25maWcuY2hhcnQuc3RhY2tlZCYmaT4wP3RoaXMubGluZUN0eC5wcmV2U2VyaWVzWVtpLTFdWzBdOnRoaXMubGluZUN0eC56ZXJvWSktYVtpXVswXS90aGlzLmxpbmVDdHgueVJhdGlvW3RoaXMubGluZUN0eC55YXhpc0luZGV4XSsyKih0aGlzLmxpbmVDdHguaXNSZXZlcnNlZD9hW2ldWzBdL3RoaXMubGluZUN0eC55UmF0aW9bdGhpcy5saW5lQ3R4LnlheGlzSW5kZXhdOjApO2Vsc2UgaWYoby5jb25maWcuY2hhcnQuc3RhY2tlZCYmaT4wJiZ2b2lkIDA9PT1hW2ldWzBdKWZvcih2YXIgbj1pLTE7bj49MDtuLS0paWYobnVsbCE9PWFbbl1bMF0mJnZvaWQgMCE9PWFbbl1bMF0pe3M9cj10aGlzLmxpbmVDdHgucHJldlNlcmllc1lbbl1bMF07YnJlYWt9cmV0dXJue3ByZXZZOnMsbGluZVlQb3NpdGlvbjpyfX19XSksdH0oKSx6dD1mdW5jdGlvbih0KXtmb3IodmFyIGUsaSxhLHMscj1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10saT10WzBdLGE9dFsxXSxzPWVbMF09WXQoaSxhKSxyPTEsbz10Lmxlbmd0aC0xO3I8bztyKyspaT1hLGE9dFtyKzFdLGVbcl09LjUqKHMrKHM9WXQoaSxhKSkpO3JldHVybiBlW3JdPXMsZX0odCksbz10Lmxlbmd0aC0xLG49W10sbD0wO2w8bztsKyspYT1ZdCh0W2xdLHRbbCsxXSksTWF0aC5hYnMoYSk8MWUtNj9yW2xdPXJbbCsxXT0wOihzPShlPXJbbF0vYSkqZSsoaT1yW2wrMV0vYSkqaSk+OSYmKHM9MyphL01hdGguc3FydChzKSxyW2xdPXMqZSxyW2wrMV09cyppKTtmb3IodmFyIGg9MDtoPD1vO2grKylzPSh0W01hdGgubWluKG8saCsxKV1bMF0tdFtNYXRoLm1heCgwLGgtMSldWzBdKS8oNiooMStyW2hdKnJbaF0pKSxuLnB1c2goW3N8fDAscltoXSpzfHwwXSk7cmV0dXJuIG59LFh0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1cIlwiLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIGE9dFtpXSxzPXRbaS0xXSxyPWEubGVuZ3RoLG89bnVsbD09cz92b2lkIDA6cy5sZW5ndGg7aT4xJiZNYXRoLmFicyhhW3ItMl0tc1tvLTJdKTwzMD8oZSs9XCJRXCIuY29uY2F0KGFbMF0sXCIsIFwiKS5jb25jYXQoYVsxXSksZSs9XCIsIFwiLmNvbmNhdChhWzJdLFwiLCBcIikuY29uY2F0KGFbM10pKTpyPjQ/KGUrPVwiQ1wiLmNvbmNhdChhWzBdLFwiLCBcIikuY29uY2F0KGFbMV0pLGUrPVwiLCBcIi5jb25jYXQoYVsyXSxcIiwgXCIpLmNvbmNhdChhWzNdKSxlKz1cIiwgXCIuY29uY2F0KGFbNF0sXCIsIFwiKS5jb25jYXQoYVs1XSkpOnI+MiYmKGUrPVwiU1wiLmNvbmNhdChhWzBdLFwiLCBcIikuY29uY2F0KGFbMV0pLGUrPVwiLCBcIi5jb25jYXQoYVsyXSxcIiwgXCIpLmNvbmNhdChhWzNdKSl9cmV0dXJuIGV9LEV0PWZ1bmN0aW9uKHQpe3ZhciBlPXp0KHQpLGk9dFsxXSxhPXRbMF0scz1bXSxyPWVbMV0sbz1lWzBdO3MucHVzaChhLFthWzBdK29bMF0sYVsxXStvWzFdLGlbMF0tclswXSxpWzFdLXJbMV0saVswXSxpWzFdXSk7Zm9yKHZhciBuPTIsbD1lLmxlbmd0aDtuPGw7bisrKXt2YXIgaD10W25dLGM9ZVtuXTtzLnB1c2goW2hbMF0tY1swXSxoWzFdLWNbMV0saFswXSxoWzFdXSl9cmV0dXJuIHN9O2Z1bmN0aW9uIFl0KHQsZSl7cmV0dXJuKGVbMV0tdFsxXSkvKGVbMF0tdFswXSl9dmFyIEZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkscyl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnh5UmF0aW9zPWksdGhpcy5wb2ludHNDaGFydD0hKFwiYnViYmxlXCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwic2NhdHRlclwiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlKXx8cyx0aGlzLnNjYXR0ZXI9bmV3IEQodGhpcy5jdHgpLHRoaXMubm9OZWdhdGl2ZXM9dGhpcy53Lmdsb2JhbHMubWluWD09PU51bWJlci5NQVhfVkFMVUUsdGhpcy5saW5lSGVscGVycz1uZXcgVHQodGhpcyksdGhpcy5tYXJrZXJzPW5ldyBIKHRoaXMuY3R4KSx0aGlzLnByZXZTZXJpZXNZPVtdLHRoaXMuY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbj0wLHRoaXMueWF4aXNJbmRleD0wfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEscyl7dmFyIHIsbz10aGlzLncsbj1uZXcgbSh0aGlzLmN0eCksbD1vLmdsb2JhbHMuY29tYm9DaGFydHM/aTpvLmNvbmZpZy5jaGFydC50eXBlLGg9bi5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChsLFwiLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIpfSksYz1uZXcgeSh0aGlzLmN0eCxvKTt0aGlzLnlSYXRpbz10aGlzLnh5UmF0aW9zLnlSYXRpbyx0aGlzLnpSYXRpbz10aGlzLnh5UmF0aW9zLnpSYXRpbyx0aGlzLnhSYXRpbz10aGlzLnh5UmF0aW9zLnhSYXRpbyx0aGlzLmJhc2VMaW5lWT10aGlzLnh5UmF0aW9zLmJhc2VMaW5lWSx0PWMuZ2V0TG9nU2VyaWVzKHQpLHRoaXMueVJhdGlvPWMuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyk7Zm9yKHZhciBkPVtdLGc9MDtnPHQubGVuZ3RoO2crKyl7dD10aGlzLmxpbmVIZWxwZXJzLnNhbWVWYWx1ZVNlcmllc0ZpeChnLHQpO3ZhciB1PW8uZ2xvYmFscy5jb21ib0NoYXJ0cz9hW2ddOmc7dGhpcy5faW5pdFNlcmllVmFyaWFibGVzKHQsZyx1KTt2YXIgcD1bXSxmPVtdLHg9W10sYj1vLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb247dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModGhpcy5lbFNlcmllcyx1KSxvLmdsb2JhbHMuaXNYTnVtZXJpYyYmby5nbG9iYWxzLnNlcmllc1gubGVuZ3RoPjAmJihiPShvLmdsb2JhbHMuc2VyaWVzWFt1XVswXS1vLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8pLHgucHVzaChiKTt2YXIgdj1iLHc9dGhpcy56ZXJvWSxrPXRoaXMuemVyb1k7dz10aGlzLmxpbmVIZWxwZXJzLmRldGVybWluZUZpcnN0UHJldlkoe2k6ZyxzZXJpZXM6dCxwcmV2WTp3LGxpbmVZUG9zaXRpb246MH0pLnByZXZZLFwic21vb3RoXCI9PT1vLmNvbmZpZy5zdHJva2UuY3VydmUmJm51bGw9PT10W2ddWzBdP3AucHVzaChudWxsKTpwLnB1c2godyk7XCJyYW5nZUFyZWFcIj09PWwmJihrPXRoaXMubGluZUhlbHBlcnMuZGV0ZXJtaW5lRmlyc3RQcmV2WSh7aTpnLHNlcmllczpzLHByZXZZOmssbGluZVlQb3NpdGlvbjowfSkucHJldlksZi5wdXNoKGspKTt2YXIgQT17dHlwZTpsLHNlcmllczp0LHJlYWxJbmRleDp1LGk6Zyx4OmIseToxLHBhdGhzRnJvbTp0aGlzLl9jYWxjdWxhdGVQYXRoc0Zyb20oe3R5cGU6bCxzZXJpZXM6dCxpOmcscmVhbEluZGV4OnUscHJldlg6dixwcmV2WTp3LHByZXZZMjprfSksbGluZVBhdGhzOltdLGFyZWFQYXRoczpbXSxzZXJpZXNJbmRleDphLGxpbmVZUG9zaXRpb246MCx4QXJyajp4LHlBcnJqOnAseTJBcnJqOmYsc2VyaWVzUmFuZ2VFbmQ6c30sUz10aGlzLl9pdGVyYXRlT3ZlckRhdGFQb2ludHMoZShlKHt9LEEpLHt9LHtpdGVyYXRpb25zOlwicmFuZ2VBcmVhXCI9PT1sP3RbZ10ubGVuZ3RoLTE6dm9pZCAwLGlzUmFuZ2VTdGFydDohMH0pKTtpZihcInJhbmdlQXJlYVwiPT09bCl7dmFyIEM9dGhpcy5fY2FsY3VsYXRlUGF0aHNGcm9tKHtzZXJpZXM6cyxpOmcscmVhbEluZGV4OnUscHJldlg6dixwcmV2WTprfSksTD10aGlzLl9pdGVyYXRlT3ZlckRhdGFQb2ludHMoZShlKHt9LEEpLHt9LHtzZXJpZXM6cyxwYXRoc0Zyb206QyxpdGVyYXRpb25zOnNbZ10ubGVuZ3RoLTEsaXNSYW5nZVN0YXJ0OiExfSkpO1MubGluZVBhdGhzWzBdPUwubGluZVBhdGgrUy5saW5lUGF0aCxTLnBhdGhGcm9tTGluZT1MLnBhdGhGcm9tTGluZStTLnBhdGhGcm9tTGluZX10aGlzLl9oYW5kbGVQYXRocyh7dHlwZTpsLHJlYWxJbmRleDp1LGk6ZyxwYXRoczpTfSksdGhpcy5lbFNlcmllcy5hZGQodGhpcy5lbFBvaW50c01haW4pLHRoaXMuZWxTZXJpZXMuYWRkKHRoaXMuZWxEYXRhTGFiZWxzV3JhcCksZC5wdXNoKHRoaXMuZWxTZXJpZXMpfWlmKHZvaWQgMCE9PShudWxsPT09KHI9by5jb25maWcuc2VyaWVzWzBdKXx8dm9pZCAwPT09cj92b2lkIDA6ci56SW5kZXgpJiZkLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE51bWJlcih0Lm5vZGUuZ2V0QXR0cmlidXRlKFwiekluZGV4XCIpKS1OdW1iZXIoZS5ub2RlLmdldEF0dHJpYnV0ZShcInpJbmRleFwiKSl9KSksby5jb25maWcuY2hhcnQuc3RhY2tlZClmb3IodmFyIFA9ZC5sZW5ndGg7UD4wO1AtLSloLmFkZChkW1AtMV0pO2Vsc2UgZm9yKHZhciBJPTA7STxkLmxlbmd0aDtJKyspaC5hZGQoZFtJXSk7cmV0dXJuIGh9fSx7a2V5OlwiX2luaXRTZXJpZVZhcmlhYmxlc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1uZXcgbSh0aGlzLmN0eCk7dGhpcy54RGl2aXNpb249YS5nbG9iYWxzLmdyaWRXaWR0aC8oYS5nbG9iYWxzLmRhdGFQb2ludHMtKFwib25cIj09PWEuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnQ/MTowKSksdGhpcy5zdHJva2VXaWR0aD1BcnJheS5pc0FycmF5KGEuY29uZmlnLnN0cm9rZS53aWR0aCk/YS5jb25maWcuc3Ryb2tlLndpZHRoW2ldOmEuY29uZmlnLnN0cm9rZS53aWR0aCx0aGlzLnlSYXRpby5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD1pKSx0aGlzLmlzUmV2ZXJzZWQ9YS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XSYmYS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XS5yZXZlcnNlZCx0aGlzLnplcm9ZPWEuZ2xvYmFscy5ncmlkSGVpZ2h0LXRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF0tKHRoaXMuaXNSZXZlcnNlZD9hLmdsb2JhbHMuZ3JpZEhlaWdodDowKSsodGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XTowKSx0aGlzLmFyZWFCb3R0b21ZPXRoaXMuemVyb1ksKHRoaXMuemVyb1k+YS5nbG9iYWxzLmdyaWRIZWlnaHR8fFwiZW5kXCI9PT1hLmNvbmZpZy5wbG90T3B0aW9ucy5hcmVhLmZpbGxUbykmJih0aGlzLmFyZWFCb3R0b21ZPWEuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb249dGhpcy54RGl2aXNpb24vMix0aGlzLmVsU2VyaWVzPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIix6SW5kZXg6dm9pZCAwIT09YS5jb25maWcuc2VyaWVzW2ldLnpJbmRleD9hLmNvbmZpZy5zZXJpZXNbaV0uekluZGV4Omksc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbaV0pfSksdGhpcy5lbFBvaW50c01haW49cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIixcImRhdGE6cmVhbEluZGV4XCI6aX0pLHRoaXMuZWxEYXRhTGFiZWxzV3JhcD1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjppfSk7dmFyIHI9dFtlXS5sZW5ndGg9PT1hLmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmVsU2VyaWVzLmF0dHIoe1wiZGF0YTpsb25nZXN0U2VyaWVzXCI6cixyZWw6ZSsxLFwiZGF0YTpyZWFsSW5kZXhcIjppfSksdGhpcy5hcHBlbmRQYXRoRnJvbT0hMH19LHtrZXk6XCJfY2FsY3VsYXRlUGF0aHNGcm9tXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhLHMscj10LnR5cGUsbz10LnNlcmllcyxuPXQuaSxsPXQucmVhbEluZGV4LGg9dC5wcmV2WCxjPXQucHJldlksZD10LnByZXZZMixnPXRoaXMudyx1PW5ldyBtKHRoaXMuY3R4KTtpZihudWxsPT09b1tuXVswXSl7Zm9yKHZhciBwPTA7cDxvW25dLmxlbmd0aDtwKyspaWYobnVsbCE9PW9bbl1bcF0pe2g9dGhpcy54RGl2aXNpb24qcCxjPXRoaXMuemVyb1ktb1tuXVtwXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLGU9dS5tb3ZlKGgsYyksaT11Lm1vdmUoaCx0aGlzLmFyZWFCb3R0b21ZKTticmVha319ZWxzZSBlPXUubW92ZShoLGMpLFwicmFuZ2VBcmVhXCI9PT1yJiYoZT11Lm1vdmUoaCxkKSt1LmxpbmUoaCxjKSksaT11Lm1vdmUoaCx0aGlzLmFyZWFCb3R0b21ZKSt1LmxpbmUoaCxjKTtpZihhPXUubW92ZSgtMSx0aGlzLnplcm9ZKSt1LmxpbmUoLTEsdGhpcy56ZXJvWSkscz11Lm1vdmUoLTEsdGhpcy56ZXJvWSkrdS5saW5lKC0xLHRoaXMuemVyb1kpLGcuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wKXt2YXIgZj10aGlzLmxpbmVIZWxwZXJzLmNoZWNrUHJldmlvdXNQYXRocyh7cGF0aEZyb21MaW5lOmEscGF0aEZyb21BcmVhOnMscmVhbEluZGV4Omx9KTthPWYucGF0aEZyb21MaW5lLHM9Zi5wYXRoRnJvbUFyZWF9cmV0dXJue3ByZXZYOmgscHJldlk6YyxsaW5lUGF0aDplLGFyZWFQYXRoOmkscGF0aEZyb21MaW5lOmEscGF0aEZyb21BcmVhOnN9fX0se2tleTpcIl9oYW5kbGVQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXQudHlwZSxhPXQucmVhbEluZGV4LHM9dC5pLHI9dC5wYXRocyxvPXRoaXMudyxuPW5ldyBtKHRoaXMuY3R4KSxsPW5ldyBSKHRoaXMuY3R4KTt0aGlzLnByZXZTZXJpZXNZLnB1c2goci55QXJyaiksby5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYV09ci54QXJyaixvLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1thXT1yLnlBcnJqO3ZhciBoPW8uY29uZmlnLmZvcmVjYXN0RGF0YVBvaW50cztpZihoLmNvdW50PjAmJlwicmFuZ2VBcmVhXCIhPT1pKXt2YXIgYz1vLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1thXVtvLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1thXS5sZW5ndGgtaC5jb3VudC0xXSxkPW4uZHJhd1JlY3QoYywwLG8uZ2xvYmFscy5ncmlkV2lkdGgsby5nbG9iYWxzLmdyaWRIZWlnaHQsMCk7by5nbG9iYWxzLmRvbS5lbEZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZChkLm5vZGUpO3ZhciBnPW4uZHJhd1JlY3QoMCwwLGMsby5nbG9iYWxzLmdyaWRIZWlnaHQsMCk7by5nbG9iYWxzLmRvbS5lbE5vbkZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZChnLm5vZGUpfXRoaXMucG9pbnRzQ2hhcnR8fG8uZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6dGhpcy5lbFBvaW50c01haW4ubm9kZSxpbmRleDphfSk7dmFyIHU9e2k6cyxyZWFsSW5kZXg6YSxhbmltYXRpb25EZWxheTpzLGluaXRpYWxTcGVlZDpvLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDpvLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoaSl9O2lmKFwiYXJlYVwiPT09aSlmb3IodmFyIHA9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmF9KSxmPTA7ZjxyLmFyZWFQYXRocy5sZW5ndGg7ZisrKXt2YXIgeD1uLnJlbmRlclBhdGhzKGUoZSh7fSx1KSx7fSx7cGF0aEZyb206ci5wYXRoRnJvbUFyZWEscGF0aFRvOnIuYXJlYVBhdGhzW2ZdLHN0cm9rZTpcIm5vbmVcIixzdHJva2VXaWR0aDowLHN0cm9rZUxpbmVDYXA6bnVsbCxmaWxsOnB9KSk7dGhpcy5lbFNlcmllcy5hZGQoeCl9aWYoby5jb25maWcuc3Ryb2tlLnNob3cmJiF0aGlzLnBvaW50c0NoYXJ0KXt2YXIgYj1udWxsO2lmKFwibGluZVwiPT09aSliPWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphLGk6c30pO2Vsc2UgaWYoXCJzb2xpZFwiPT09by5jb25maWcuc3Ryb2tlLmZpbGwudHlwZSliPW8uZ2xvYmFscy5zdHJva2UuY29sb3JzW2FdO2Vsc2V7dmFyIHY9by5jb25maWcuZmlsbDtvLmNvbmZpZy5maWxsPW8uY29uZmlnLnN0cm9rZS5maWxsLGI9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmEsaTpzfSksby5jb25maWcuZmlsbD12fWZvcih2YXIgeT0wO3k8ci5saW5lUGF0aHMubGVuZ3RoO3krKyl7dmFyIHc9YjtcInJhbmdlQXJlYVwiPT09aSYmKHc9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmF9KSk7dmFyIGs9ZShlKHt9LHUpLHt9LHtwYXRoRnJvbTpyLnBhdGhGcm9tTGluZSxwYXRoVG86ci5saW5lUGF0aHNbeV0sc3Ryb2tlOmIsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzdHJva2VMaW5lQ2FwOm8uY29uZmlnLnN0cm9rZS5saW5lQ2FwLGZpbGw6XCJyYW5nZUFyZWFcIj09PWk/dzpcIm5vbmVcIn0pLEE9bi5yZW5kZXJQYXRocyhrKTtpZih0aGlzLmVsU2VyaWVzLmFkZChBKSxBLmF0dHIoXCJmaWxsLXJ1bGVcIixcImV2ZW5vZGRcIiksaC5jb3VudD4wJiZcInJhbmdlQXJlYVwiIT09aSl7dmFyIFM9bi5yZW5kZXJQYXRocyhrKTtTLm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLWRhc2hhcnJheVwiLGguZGFzaEFycmF5KSxoLnN0cm9rZVdpZHRoJiZTLm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIsaC5zdHJva2VXaWR0aCksdGhpcy5lbFNlcmllcy5hZGQoUyksUy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2ZvcmVjYXN0TWFza1wiLmNvbmNhdChvLmdsb2JhbHMuY3VpZCxcIilcIikpLEEuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNub25Gb3JlY2FzdE1hc2tcIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsXCIpXCIpKX19fX19LHtrZXk6XCJfaXRlcmF0ZU92ZXJEYXRhUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQudHlwZSxhPXQuc2VyaWVzLHM9dC5pdGVyYXRpb25zLHI9dC5yZWFsSW5kZXgsbz10Lmksbj10LngsbD10LnksaD10LnBhdGhzRnJvbSxjPXQubGluZVBhdGhzLGQ9dC5hcmVhUGF0aHMsZz10LnNlcmllc0luZGV4LHU9dC5saW5lWVBvc2l0aW9uLHA9dC54QXJyaixmPXQueUFycmosYj10LnkyQXJyaix2PXQuaXNSYW5nZVN0YXJ0LHk9dC5zZXJpZXNSYW5nZUVuZCx3PXRoaXMudyxrPW5ldyBtKHRoaXMuY3R4KSxBPXRoaXMueVJhdGlvLFM9aC5wcmV2WSxDPWgubGluZVBhdGgsTD1oLmFyZWFQYXRoLFA9aC5wYXRoRnJvbUxpbmUsST1oLnBhdGhGcm9tQXJlYSxNPXguaXNOdW1iZXIody5nbG9iYWxzLm1pbllBcnJbcl0pP3cuZ2xvYmFscy5taW5ZQXJyW3JdOncuZ2xvYmFscy5taW5ZO3N8fChzPXcuZ2xvYmFscy5kYXRhUG9pbnRzPjE/dy5nbG9iYWxzLmRhdGFQb2ludHMtMTp3Lmdsb2JhbHMuZGF0YVBvaW50cyk7Zm9yKHZhciBUPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIGktdC9BW2UueWF4aXNJbmRleF0rMiooZS5pc1JldmVyc2VkP3QvQVtlLnlheGlzSW5kZXhdOjApfSx6PWwsWD0wO1g8cztYKyspe3ZhciBFPXZvaWQgMD09PWFbb11bWCsxXXx8bnVsbD09PWFbb11bWCsxXTtpZih3Lmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIFk9dy5nbG9iYWxzLnNlcmllc1hbcl1bWCsxXTt2b2lkIDA9PT13Lmdsb2JhbHMuc2VyaWVzWFtyXVtYKzFdJiYoWT13Lmdsb2JhbHMuc2VyaWVzWFtyXVtzLTFdKSxuPShZLXcuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpb31lbHNlIG4rPXRoaXMueERpdmlzaW9uO2lmKHcuY29uZmlnLmNoYXJ0LnN0YWNrZWQpaWYobz4wJiZ3Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDx3LmNvbmZpZy5zZXJpZXMubGVuZ3RoLTEpe3U9dGhpcy5wcmV2U2VyaWVzWVtmdW5jdGlvbih0KXtmb3IodmFyIGU9dCxpPTA7aTx3Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtpKyspaWYody5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih0KT4tMSl7ZS0tO2JyZWFrfXJldHVybiBlPj0wP2U6MH0oby0xKV1bWCsxXX1lbHNlIHU9dGhpcy56ZXJvWTtlbHNlIHU9dGhpcy56ZXJvWTtFP2w9VChNLHUpOihsPVQoYVtvXVtYKzFdLHUpLFwicmFuZ2VBcmVhXCI9PT1pJiYoej1UKHlbb11bWCsxXSx1KSkpLHAucHVzaChuKSxFJiZcInNtb290aFwiPT09dy5jb25maWcuc3Ryb2tlLmN1cnZlP2YucHVzaChudWxsKTpmLnB1c2gobCksYi5wdXNoKHopO3ZhciBGPXRoaXMubGluZUhlbHBlcnMuY2FsY3VsYXRlUG9pbnRzKHtzZXJpZXM6YSx4Om4seTpsLHJlYWxJbmRleDpyLGk6byxqOlgscHJldlk6U30pLFI9dGhpcy5fY3JlYXRlUGF0aHMoe3R5cGU6aSxzZXJpZXM6YSxpOm8scmVhbEluZGV4OnIsajpYLHg6bix5OmwseTI6eix4QXJyajpwLHlBcnJqOmYseTJBcnJqOmIsbGluZVBhdGg6QyxhcmVhUGF0aDpMLGxpbmVQYXRoczpjLGFyZWFQYXRoczpkLHNlcmllc0luZGV4OmcsaXNSYW5nZVN0YXJ0OnZ9KTtkPVIuYXJlYVBhdGhzLGM9Ui5saW5lUGF0aHMsTD1SLmFyZWFQYXRoLEM9Ui5saW5lUGF0aCwhdGhpcy5hcHBlbmRQYXRoRnJvbXx8XCJzbW9vdGhcIj09PXcuY29uZmlnLnN0cm9rZS5jdXJ2ZSYmXCJyYW5nZUFyZWFcIj09PWl8fChQKz1rLmxpbmUobix0aGlzLnplcm9ZKSxJKz1rLmxpbmUobix0aGlzLnplcm9ZKSksdGhpcy5oYW5kbGVOdWxsRGF0YVBvaW50cyhhLEYsbyxYLHIpLHRoaXMuX2hhbmRsZU1hcmtlcnNBbmRMYWJlbHMoe3R5cGU6aSxwb2ludHNQb3M6RixpOm8sajpYLHJlYWxJbmRleDpyLGlzUmFuZ2VTdGFydDp2fSl9cmV0dXJue3lBcnJqOmYseEFycmo6cCxwYXRoRnJvbUFyZWE6SSxhcmVhUGF0aHM6ZCxwYXRoRnJvbUxpbmU6UCxsaW5lUGF0aHM6YyxsaW5lUGF0aDpDLGFyZWFQYXRoOkx9fX0se2tleTpcIl9oYW5kbGVNYXJrZXJzQW5kTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLGk9dC5wb2ludHNQb3MsYT10LmlzUmFuZ2VTdGFydCxzPXQuaSxyPXQuaixvPXQucmVhbEluZGV4LG49dGhpcy53LGw9bmV3IE8odGhpcy5jdHgpO2lmKHRoaXMucG9pbnRzQ2hhcnQpdGhpcy5zY2F0dGVyLmRyYXcodGhpcy5lbFNlcmllcyxyLHtyZWFsSW5kZXg6byxwb2ludHNQb3M6aSx6UmF0aW86dGhpcy56UmF0aW8sZWxQYXJlbnQ6dGhpcy5lbFBvaW50c01haW59KTtlbHNle24uZ2xvYmFscy5zZXJpZXNbc10ubGVuZ3RoPjEmJnRoaXMuZWxQb2ludHNNYWluLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIik7dmFyIGg9dGhpcy5tYXJrZXJzLnBsb3RDaGFydE1hcmtlcnMoaSxvLHIrMSk7bnVsbCE9PWgmJnRoaXMuZWxQb2ludHNNYWluLmFkZChoKX12YXIgYz1sLmRyYXdEYXRhTGFiZWwoe3R5cGU6ZSxpc1JhbmdlU3RhcnQ6YSxwb3M6aSxpOm8sajpyKzF9KTtudWxsIT09YyYmdGhpcy5lbERhdGFMYWJlbHNXcmFwLmFkZChjKX19LHtrZXk6XCJfY3JlYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnR5cGUsaT10LnNlcmllcyxhPXQuaSxzPXQucmVhbEluZGV4LHI9dC5qLG89dC54LG49dC55LGw9dC54QXJyaixoPXQueUFycmosYz10LnkyLGQ9dC55MkFycmosZz10LmxpbmVQYXRoLHU9dC5hcmVhUGF0aCxwPXQubGluZVBhdGhzLGY9dC5hcmVhUGF0aHMseD10LnNlcmllc0luZGV4LGI9dC5pc1JhbmdlU3RhcnQsdj10aGlzLncseT1uZXcgbSh0aGlzLmN0eCksdz12LmNvbmZpZy5zdHJva2UuY3VydmUsaz10aGlzLmFyZWFCb3R0b21ZO2lmKEFycmF5LmlzQXJyYXkodi5jb25maWcuc3Ryb2tlLmN1cnZlKSYmKHc9QXJyYXkuaXNBcnJheSh4KT92LmNvbmZpZy5zdHJva2UuY3VydmVbeFthXV06di5jb25maWcuc3Ryb2tlLmN1cnZlW2FdKSxcInJhbmdlQXJlYVwiPT09ZSYmKHYuZ2xvYmFscy5oYXNOdWxsVmFsdWVzfHx2LmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHMuY291bnQ+MCkmJlwic21vb3RoXCI9PT13JiYodz1cInN0cmFpZ2h0XCIpLFwic21vb3RoXCI9PT13KXt2YXIgQT1cInJhbmdlQXJlYVwiPT09ZT9sLmxlbmd0aD09PXYuZ2xvYmFscy5kYXRhUG9pbnRzOnI9PT1pW2FdLmxlbmd0aC0yLFM9bC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW2xbZV0saFtlXV19KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXRbMV19KSk7aWYoQSYmUy5sZW5ndGg+MSl7dmFyIEM9RXQoUyk7aWYoZys9WHQoQyksbnVsbD09PWlbYV1bMF0/dT1nOnUrPVh0KEMpLFwicmFuZ2VBcmVhXCI9PT1lJiZiKXtnKz15LmxpbmUobFtsLmxlbmd0aC0xXSxkW2QubGVuZ3RoLTFdKTt2YXIgTD1sLnNsaWNlKCkucmV2ZXJzZSgpLFA9ZC5zbGljZSgpLnJldmVyc2UoKSxJPUwubWFwKChmdW5jdGlvbih0LGUpe3JldHVybltMW2VdLFBbZV1dfSkpLE09RXQoSSk7dT1nKz1YdChNKX1lbHNlIHUrPXkubGluZShTW1MubGVuZ3RoLTFdWzBdLGspK3kubGluZShTWzBdWzBdLGspK3kubW92ZShTWzBdWzBdLFNbMF1bMV0pK1wielwiO3AucHVzaChnKSxmLnB1c2godSl9fWVsc2V7aWYobnVsbD09PWlbYV1bcisxXSl7Zys9eS5tb3ZlKG8sbik7dmFyIFQ9di5nbG9iYWxzLmlzWE51bWVyaWM/KHYuZ2xvYmFscy5zZXJpZXNYW3NdW3JdLXYuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpbzpvLXRoaXMueERpdmlzaW9uO3U9dSt5LmxpbmUoVCxrKSt5Lm1vdmUobyxuKStcInpcIn1udWxsPT09aVthXVtyXSYmKGcrPXkubW92ZShvLG4pLHUrPXkubW92ZShvLGspKSxcInN0ZXBsaW5lXCI9PT13PyhnPWcreS5saW5lKG8sbnVsbCxcIkhcIikreS5saW5lKG51bGwsbixcIlZcIiksdT11K3kubGluZShvLG51bGwsXCJIXCIpK3kubGluZShudWxsLG4sXCJWXCIpKTpcInN0cmFpZ2h0XCI9PT13JiYoZys9eS5saW5lKG8sbiksdSs9eS5saW5lKG8sbikpLHI9PT1pW2FdLmxlbmd0aC0yJiYodT11K3kubGluZShvLGspK3kubW92ZShvLG4pK1wielwiLFwicmFuZ2VBcmVhXCI9PT1lJiZiP2c9Zyt5LmxpbmUobyxjKSt5Lm1vdmUobyxjKStcInpcIjoocC5wdXNoKGcpLGYucHVzaCh1KSkpfXJldHVybntsaW5lUGF0aHM6cCxhcmVhUGF0aHM6ZixsaW5lUGF0aDpnLGFyZWFQYXRoOnV9fX0se2tleTpcImhhbmRsZU51bGxEYXRhUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt2YXIgcj10aGlzLnc7aWYobnVsbD09PXRbaV1bYV0mJnIuY29uZmlnLm1hcmtlcnMuc2hvd051bGxEYXRhUG9pbnRzfHwxPT09dFtpXS5sZW5ndGgpe3ZhciBvPXRoaXMubWFya2Vycy5wbG90Q2hhcnRNYXJrZXJzKGUscyxhKzEsdGhpcy5zdHJva2VXaWR0aC1yLmNvbmZpZy5tYXJrZXJzLnN0cm9rZVdpZHRoLzIsITApO251bGwhPT1vJiZ0aGlzLmVsUG9pbnRzTWFpbi5hZGQobyl9fX1dKSx0fSgpO3dpbmRvdy5UcmVlbWFwU3F1YXJlZD17fSx3aW5kb3cuVHJlZW1hcFNxdWFyZWQuZ2VuZXJhdGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSxhLHMpe3RoaXMueG9mZnNldD1lLHRoaXMueW9mZnNldD1pLHRoaXMuaGVpZ2h0PXMsdGhpcy53aWR0aD1hLHRoaXMuc2hvcnRlc3RFZGdlPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHRoaXMuaGVpZ2h0LHRoaXMud2lkdGgpfSx0aGlzLmdldENvb3JkaW5hdGVzPWZ1bmN0aW9uKHQpe3ZhciBlLGk9W10sYT10aGlzLnhvZmZzZXQscz10aGlzLnlvZmZzZXQsbz1yKHQpL3RoaXMuaGVpZ2h0LG49cih0KS90aGlzLndpZHRoO2lmKHRoaXMud2lkdGg+PXRoaXMuaGVpZ2h0KWZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaS5wdXNoKFthLHMsYStvLHMrdFtlXS9vXSkscys9dFtlXS9vO2Vsc2UgZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpLnB1c2goW2EscyxhK3RbZV0vbixzK25dKSxhKz10W2VdL247cmV0dXJuIGl9LHRoaXMuY3V0QXJlYT1mdW5jdGlvbihlKXt2YXIgaTtpZih0aGlzLndpZHRoPj10aGlzLmhlaWdodCl7dmFyIGE9ZS90aGlzLmhlaWdodCxzPXRoaXMud2lkdGgtYTtpPW5ldyB0KHRoaXMueG9mZnNldCthLHRoaXMueW9mZnNldCxzLHRoaXMuaGVpZ2h0KX1lbHNle3ZhciByPWUvdGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LXI7aT1uZXcgdCh0aGlzLnhvZmZzZXQsdGhpcy55b2Zmc2V0K3IsdGhpcy53aWR0aCxvKX1yZXR1cm4gaX19ZnVuY3Rpb24gZShlLGEscyxvLG4pe289dm9pZCAwPT09bz8wOm8sbj12b2lkIDA9PT1uPzA6bjt2YXIgbD1pKGZ1bmN0aW9uKHQsZSl7dmFyIGksYT1bXSxzPWUvcih0KTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKWFbaV09dFtpXSpzO3JldHVybiBhfShlLGEqcyksW10sbmV3IHQobyxuLGEscyksW10pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZSxpLGE9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylmb3IoaT0wO2k8dFtlXS5sZW5ndGg7aSsrKWEucHVzaCh0W2VdW2ldKTtyZXR1cm4gYX0obCl9ZnVuY3Rpb24gaSh0LGUscyxvKXt2YXIgbixsLGg7aWYoMCE9PXQubGVuZ3RoKXJldHVybiBuPXMuc2hvcnRlc3RFZGdlKCksZnVuY3Rpb24odCxlLGkpe3ZhciBzO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDsocz10LnNsaWNlKCkpLnB1c2goZSk7dmFyIHI9YSh0LGkpLG89YShzLGkpO3JldHVybiByPj1vfShlLGw9dFswXSxuKT8oZS5wdXNoKGwpLGkodC5zbGljZSgxKSxlLHMsbykpOihoPXMuY3V0QXJlYShyKGUpLG8pLG8ucHVzaChzLmdldENvb3JkaW5hdGVzKGUpKSxpKHQsW10saCxvKSksbztvLnB1c2gocy5nZXRDb29yZGluYXRlcyhlKSl9ZnVuY3Rpb24gYSh0LGUpe3ZhciBpPU1hdGgubWluLmFwcGx5KE1hdGgsdCksYT1NYXRoLm1heC5hcHBseShNYXRoLHQpLHM9cih0KTtyZXR1cm4gTWF0aC5tYXgoTWF0aC5wb3coZSwyKSphL01hdGgucG93KHMsMiksTWF0aC5wb3cocywyKS8oTWF0aC5wb3coZSwyKSppKSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdCYmdC5jb25zdHJ1Y3Rvcj09PUFycmF5fWZ1bmN0aW9uIHIodCl7dmFyIGUsaT0wO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaSs9dFtlXTtyZXR1cm4gaX1mdW5jdGlvbiBvKHQpe3ZhciBlLGk9MDtpZihzKHRbMF0pKWZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaSs9byh0W2VdKTtlbHNlIGk9cih0KTtyZXR1cm4gaX1yZXR1cm4gZnVuY3Rpb24gdChpLGEscixuLGwpe249dm9pZCAwPT09bj8wOm4sbD12b2lkIDA9PT1sPzA6bDt2YXIgaCxjLGQ9W10sZz1bXTtpZihzKGlbMF0pKXtmb3IoYz0wO2M8aS5sZW5ndGg7YysrKWRbY109byhpW2NdKTtmb3IoaD1lKGQsYSxyLG4sbCksYz0wO2M8aS5sZW5ndGg7YysrKWcucHVzaCh0KGlbY10saFtjXVsyXS1oW2NdWzBdLGhbY11bM10taFtjXVsxXSxoW2NdWzBdLGhbY11bMV0pKX1lbHNlIGc9ZShpLGEscixuLGwpO3JldHVybiBnfX0oKTt2YXIgUnQsSHQsRHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnN0cm9rZVdpZHRoPXRoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMuaGVscGVycz1uZXcgQXQoZSksdGhpcy5keW5hbWljQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbix0aGlzLmxhYmVscz1bXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz1uZXcgUih0aGlzLmN0eCkscj1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtdHJlZW1hcFwifSk7aWYoaS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gcjt2YXIgbz1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKHQpfSkpO28ucHVzaChlKX0pKSx0aGlzLm5lZ1JhbmdlPXRoaXMuaGVscGVycy5jaGVja0NvbG9yUmFuZ2UoKSxpLmNvbmZpZy5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt0LmRhdGEuZm9yRWFjaCgoZnVuY3Rpb24odCl7QXJyYXkuaXNBcnJheShlLmxhYmVsc1tpXSl8fChlLmxhYmVsc1tpXT1bXSksZS5sYWJlbHNbaV0ucHVzaCh0LngpfSkpfSkpLHdpbmRvdy5UcmVlbWFwU3F1YXJlZC5nZW5lcmF0ZShvLGkuZ2xvYmFscy5ncmlkV2lkdGgsaS5nbG9iYWxzLmdyaWRIZWlnaHQpLmZvckVhY2goKGZ1bmN0aW9uKG8sbil7dmFyIGw9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXRyZWVtYXAtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbbl0pLHJlbDpuKzEsXCJkYXRhOnJlYWxJbmRleFwiOm59KTtpZihpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBoPWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7bmV3IHYoZS5jdHgpLmRyb3BTaGFkb3cocixoLG4pfXZhciBjPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7by5mb3JFYWNoKChmdW5jdGlvbihyLG8pe3ZhciBoPXJbMF0sYz1yWzFdLGQ9clsyXSxnPXJbM10sdT1hLmRyYXdSZWN0KGgsYyxkLWgsZy1jLDAsXCIjZmZmXCIsMSxlLnN0cm9rZVdpZHRoLGkuY29uZmlnLnBsb3RPcHRpb25zLnRyZWVtYXAudXNlRmlsbENvbG9yQXNTdHJva2U/ZjppLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tuXSk7dS5hdHRyKHtjeDpoLGN5OmMsaW5kZXg6bixpOm4sajpvLHdpZHRoOmQtaCxoZWlnaHQ6Zy1jfSk7dmFyIHA9ZS5oZWxwZXJzLmdldFNoYWRlQ29sb3IoaS5jb25maWcuY2hhcnQudHlwZSxuLG8sZS5uZWdSYW5nZSksZj1wLmNvbG9yO3ZvaWQgMCE9PWkuY29uZmlnLnNlcmllc1tuXS5kYXRhW29dJiZpLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtvXS5maWxsQ29sb3ImJihmPWkuY29uZmlnLnNlcmllc1tuXS5kYXRhW29dLmZpbGxDb2xvcik7dmFyIHg9cy5maWxsUGF0aCh7Y29sb3I6ZixzZXJpZXNOdW1iZXI6bixkYXRhUG9pbnRJbmRleDpvfSk7dS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRyZWVtYXAtcmVjdFwiKSx1LmF0dHIoe2ZpbGw6eH0pLGUuaGVscGVycy5hZGRMaXN0ZW5lcnModSk7dmFyIGI9e3g6aCsoZC1oKS8yLHk6YysoZy1jKS8yLHdpZHRoOjAsaGVpZ2h0OjB9LHY9e3g6aCx5OmMsd2lkdGg6ZC1oLGhlaWdodDpnLWN9O2lmKGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIWkuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIG09MTtpLmdsb2JhbHMucmVzaXplZHx8KG09aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksZS5hbmltYXRlVHJlZW1hcCh1LGIsdixtKX1pZihpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciB5PTE7ZS5keW5hbWljQW5pbS5lbmFibGVkJiZpLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSYmKHk9ZS5keW5hbWljQW5pbS5zcGVlZCxpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXSYmaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl1bb10mJmkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dW29dLnJlY3QmJihiPWkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dW29dLnJlY3QpLGUuYW5pbWF0ZVRyZWVtYXAodSxiLHYseSkpfXZhciB3PWUuZ2V0Rm9udFNpemUociksaz1pLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcihlLmxhYmVsc1tuXVtvXSx7dmFsdWU6aS5nbG9iYWxzLnNlcmllc1tuXVtvXSxzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4Om8sdzppfSk7XCJ0cnVuY2F0ZVwiPT09aS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC5kYXRhTGFiZWxzLmZvcm1hdCYmKHc9cGFyc2VJbnQoaS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCksaz1lLnRydW5jYXRlTGFiZWxzKGssdyxoLGMsZCxnKSk7dmFyIEE9ZS5oZWxwZXJzLmNhbGN1bGF0ZURhdGFMYWJlbHMoe3RleHQ6ayx4OihoK2QpLzIseTooYytnKS8yK2Uuc3Ryb2tlV2lkdGgvMit3LzMsaTpuLGo6byxjb2xvclByb3BzOnAsZm9udFNpemU6dyxzZXJpZXM6dH0pO2kuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCYmQSYmZS5yb3RhdGVUb0ZpdExhYmVsKEEsdyxrLGgsYyxkLGcpLGwuYWRkKHUpLG51bGwhPT1BJiZsLmFkZChBKX0pKSxsLmFkZChjKSxyLmFkZChsKX0pKSxyfX0se2tleTpcImdldEZvbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3ZhciBpLGEscyxyLG89ZnVuY3Rpb24gdChlKXt2YXIgaSxhPTA7aWYoQXJyYXkuaXNBcnJheShlWzBdKSlmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPXQoZVtpXSk7ZWxzZSBmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPWVbaV0ubGVuZ3RoO3JldHVybiBhfSh0aGlzLmxhYmVscykvZnVuY3Rpb24gdChlKXt2YXIgaSxhPTA7aWYoQXJyYXkuaXNBcnJheShlWzBdKSlmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPXQoZVtpXSk7ZWxzZSBmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPTE7cmV0dXJuIGF9KHRoaXMubGFiZWxzKTtyZXR1cm4gaT10WzJdLXRbMF0sYT10WzNdLXRbMV0scz1pKmEscj1NYXRoLnBvdyhzLC41KSxNYXRoLm1pbihyL28scGFyc2VJbnQoZS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkpfX0se2tleTpcInJvdGF0ZVRvRml0TGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj1uZXcgbSh0aGlzLmN0eCksbD1uLmdldFRleHRSZWN0cyhpLGUpO2lmKGwud2lkdGgrdGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGgrNT5yLWEmJmwud2lkdGg8PW8tcyl7dmFyIGg9bi5yb3RhdGVBcm91bmRDZW50ZXIodC5ub2RlKTt0Lm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoLTkwIFwiLmNvbmNhdChoLngsXCIgXCIpLmNvbmNhdChoLnksXCIpIHRyYW5zbGF0ZShcIikuY29uY2F0KGwuaGVpZ2h0LzMsXCIpXCIpKX19fSx7a2V5OlwidHJ1bmNhdGVMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG89bmV3IG0odGhpcy5jdHgpLG49by5nZXRUZXh0UmVjdHModCxlKS53aWR0aCt0aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aCs1PnMtaSYmci1hPnMtaT9yLWE6cy1pLGw9by5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKHt0ZXh0OnQsbWF4V2lkdGg6bixmb250U2l6ZTplfSk7cmV0dXJuIHQubGVuZ3RoIT09bC5sZW5ndGgmJm4vZTw1P1wiXCI6bH19LHtrZXk6XCJhbmltYXRlVHJlZW1hcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPW5ldyBiKHRoaXMuY3R4KTtzLmFuaW1hdGVSZWN0KHQse3g6ZS54LHk6ZS55LHdpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fSx7eDppLngseTppLnksd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9LGEsKGZ1bmN0aW9uKCl7cy5hbmltYXRpb25Db21wbGV0ZWQodCl9KSl9fV0pLHR9KCksT3Q9ODY0MDAsTnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50aW1lU2NhbGVBcnJheT1bXSx0aGlzLnV0Yz10aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQ31yZXR1cm4gcih0LFt7a2V5OlwiY2FsY3VsYXRlVGltZVNjYWxlVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMscz10aGlzLnc7aWYocy5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZClyZXR1cm4gcy5nbG9iYWxzLmxhYmVscz1bXSxzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzPVtdLFtdO3ZhciByPW5ldyBJKHRoaXMuY3R4KSxvPShpLXQpLzg2NGU1O3RoaXMuZGV0ZXJtaW5lSW50ZXJ2YWwobykscy5nbG9iYWxzLmRpc2FibGVab29tSW49ITEscy5nbG9iYWxzLmRpc2FibGVab29tT3V0PSExLG88LjAwMDExNTc0MDc0MDc0MDc0MDc1P3MuZ2xvYmFscy5kaXNhYmxlWm9vbUluPSEwOm8+NWU0JiYocy5nbG9iYWxzLmRpc2FibGVab29tT3V0PSEwKTt2YXIgbj1yLmdldFRpbWVVbml0c2Zyb21UaW1lc3RhbXAodCxpLHRoaXMudXRjKSxsPXMuZ2xvYmFscy5ncmlkV2lkdGgvbyxoPWwvMjQsYz1oLzYwLGQ9Yy82MCxnPU1hdGguZmxvb3IoMjQqbyksdT1NYXRoLmZsb29yKDE0NDAqbykscD1NYXRoLmZsb29yKG8qT3QpLGY9TWF0aC5mbG9vcihvKSx4PU1hdGguZmxvb3Ioby8zMCksYj1NYXRoLmZsb29yKG8vMzY1KSx2PXttaW5NaWxsaXNlY29uZDpuLm1pbk1pbGxpc2Vjb25kLG1pblNlY29uZDpuLm1pblNlY29uZCxtaW5NaW51dGU6bi5taW5NaW51dGUsbWluSG91cjpuLm1pbkhvdXIsbWluRGF0ZTpuLm1pbkRhdGUsbWluTW9udGg6bi5taW5Nb250aCxtaW5ZZWFyOm4ubWluWWVhcn0sbT17Zmlyc3RWYWw6dixjdXJyZW50TWlsbGlzZWNvbmQ6di5taW5NaWxsaXNlY29uZCxjdXJyZW50U2Vjb25kOnYubWluU2Vjb25kLGN1cnJlbnRNaW51dGU6di5taW5NaW51dGUsY3VycmVudEhvdXI6di5taW5Ib3VyLGN1cnJlbnRNb250aERhdGU6di5taW5EYXRlLGN1cnJlbnREYXRlOnYubWluRGF0ZSxjdXJyZW50TW9udGg6di5taW5Nb250aCxjdXJyZW50WWVhcjp2Lm1pblllYXIsZGF5c1dpZHRoT25YQXhpczpsLGhvdXJzV2lkdGhPblhBeGlzOmgsbWludXRlc1dpZHRoT25YQXhpczpjLHNlY29uZHNXaWR0aE9uWEF4aXM6ZCxudW1iZXJPZlNlY29uZHM6cCxudW1iZXJPZk1pbnV0ZXM6dSxudW1iZXJPZkhvdXJzOmcsbnVtYmVyT2ZEYXlzOmYsbnVtYmVyT2ZNb250aHM6eCxudW1iZXJPZlllYXJzOmJ9O3N3aXRjaCh0aGlzLnRpY2tJbnRlcnZhbCl7Y2FzZVwieWVhcnNcIjp0aGlzLmdlbmVyYXRlWWVhclNjYWxlKG0pO2JyZWFrO2Nhc2VcIm1vbnRoc1wiOmNhc2VcImhhbGZfeWVhclwiOnRoaXMuZ2VuZXJhdGVNb250aFNjYWxlKG0pO2JyZWFrO2Nhc2VcIm1vbnRoc19kYXlzXCI6Y2FzZVwibW9udGhzX2ZvcnRuaWdodFwiOmNhc2VcImRheXNcIjpjYXNlXCJ3ZWVrX2RheXNcIjp0aGlzLmdlbmVyYXRlRGF5U2NhbGUobSk7YnJlYWs7Y2FzZVwiaG91cnNcIjp0aGlzLmdlbmVyYXRlSG91clNjYWxlKG0pO2JyZWFrO2Nhc2VcIm1pbnV0ZXNfZml2ZXNcIjpjYXNlXCJtaW51dGVzXCI6dGhpcy5nZW5lcmF0ZU1pbnV0ZVNjYWxlKG0pO2JyZWFrO2Nhc2VcInNlY29uZHNfdGVuc1wiOmNhc2VcInNlY29uZHNfZml2ZXNcIjpjYXNlXCJzZWNvbmRzXCI6dGhpcy5nZW5lcmF0ZVNlY29uZFNjYWxlKG0pfXZhciB5PXRoaXMudGltZVNjYWxlQXJyYXkubWFwKChmdW5jdGlvbih0KXt2YXIgaT17cG9zaXRpb246dC5wb3NpdGlvbix1bml0OnQudW5pdCx5ZWFyOnQueWVhcixkYXk6dC5kYXk/dC5kYXk6MSxob3VyOnQuaG91cj90LmhvdXI6MCxtb250aDp0Lm1vbnRoKzF9O3JldHVyblwibW9udGhcIj09PXQudW5pdD9lKGUoe30saSkse30se2RheToxLHZhbHVlOnQudmFsdWUrMX0pOlwiZGF5XCI9PT10LnVuaXR8fFwiaG91clwiPT09dC51bml0P2UoZSh7fSxpKSx7fSx7dmFsdWU6dC52YWx1ZX0pOlwibWludXRlXCI9PT10LnVuaXQ/ZShlKHt9LGkpLHt9LHt2YWx1ZTp0LnZhbHVlLG1pbnV0ZTp0LnZhbHVlfSk6XCJzZWNvbmRcIj09PXQudW5pdD9lKGUoe30saSkse30se3ZhbHVlOnQudmFsdWUsbWludXRlOnQubWludXRlLHNlY29uZDp0LnNlY29uZH0pOnR9KSk7cmV0dXJuIHkuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgZT0xLGk9TWF0aC5jZWlsKHMuZ2xvYmFscy5ncmlkV2lkdGgvMTIwKSxyPXQudmFsdWU7dm9pZCAwIT09cy5jb25maWcueGF4aXMudGlja0Ftb3VudCYmKGk9cy5jb25maWcueGF4aXMudGlja0Ftb3VudCkseS5sZW5ndGg+aSYmKGU9TWF0aC5mbG9vcih5Lmxlbmd0aC9pKSk7dmFyIG89ITEsbj0hMTtzd2l0Y2goYS50aWNrSW50ZXJ2YWwpe2Nhc2VcInllYXJzXCI6XCJ5ZWFyXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJoYWxmX3llYXJcIjplPTcsXCJ5ZWFyXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJtb250aHNcIjplPTEsXCJ5ZWFyXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJtb250aHNfZm9ydG5pZ2h0XCI6ZT0xNSxcInllYXJcIiE9PXQudW5pdCYmXCJtb250aFwiIT09dC51bml0fHwobz0hMCksMzA9PT1yJiYobj0hMCk7YnJlYWs7Y2FzZVwibW9udGhzX2RheXNcIjplPTEwLFwibW9udGhcIj09PXQudW5pdCYmKG89ITApLDMwPT09ciYmKG49ITApO2JyZWFrO2Nhc2VcIndlZWtfZGF5c1wiOmU9OCxcIm1vbnRoXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJkYXlzXCI6ZT0xLFwibW9udGhcIj09PXQudW5pdCYmKG89ITApO2JyZWFrO2Nhc2VcImhvdXJzXCI6XCJkYXlcIj09PXQudW5pdCYmKG89ITApO2JyZWFrO2Nhc2VcIm1pbnV0ZXNfZml2ZXNcIjpjYXNlXCJzZWNvbmRzX2ZpdmVzXCI6ciU1IT0wJiYobj0hMCk7YnJlYWs7Y2FzZVwic2Vjb25kc190ZW5zXCI6ciUxMCE9MCYmKG49ITApfWlmKFwiaG91cnNcIj09PWEudGlja0ludGVydmFsfHxcIm1pbnV0ZXNfZml2ZXNcIj09PWEudGlja0ludGVydmFsfHxcInNlY29uZHNfdGVuc1wiPT09YS50aWNrSW50ZXJ2YWx8fFwic2Vjb25kc19maXZlc1wiPT09YS50aWNrSW50ZXJ2YWwpe2lmKCFuKXJldHVybiEwfWVsc2UgaWYoKHIlZT09MHx8bykmJiFuKXJldHVybiEwfSkpfX0se2tleTpcInJlY2FsY0RpbWVuc2lvbnNCYXNlZE9uRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLmZvcm1hdERhdGVzKHQpLHM9dGhpcy5yZW1vdmVPdmVybGFwcGluZ1RTKGEpO2kuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM9cy5zbGljZSgpLG5ldyBvdCh0aGlzLmN0eCkucGxvdENvb3JkcygpfX0se2tleTpcImRldGVybWluZUludGVydmFsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9MjQqdCxpPTYwKmU7c3dpdGNoKCEwKXtjYXNlIHQvMzY1PjU6dGhpcy50aWNrSW50ZXJ2YWw9XCJ5ZWFyc1wiO2JyZWFrO2Nhc2UgdD44MDA6dGhpcy50aWNrSW50ZXJ2YWw9XCJoYWxmX3llYXJcIjticmVhaztjYXNlIHQ+MTgwOnRoaXMudGlja0ludGVydmFsPVwibW9udGhzXCI7YnJlYWs7Y2FzZSB0PjkwOnRoaXMudGlja0ludGVydmFsPVwibW9udGhzX2ZvcnRuaWdodFwiO2JyZWFrO2Nhc2UgdD42MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc19kYXlzXCI7YnJlYWs7Y2FzZSB0PjMwOnRoaXMudGlja0ludGVydmFsPVwid2Vla19kYXlzXCI7YnJlYWs7Y2FzZSB0PjI6dGhpcy50aWNrSW50ZXJ2YWw9XCJkYXlzXCI7YnJlYWs7Y2FzZSBlPjIuNDp0aGlzLnRpY2tJbnRlcnZhbD1cImhvdXJzXCI7YnJlYWs7Y2FzZSBpPjE1OnRoaXMudGlja0ludGVydmFsPVwibWludXRlc19maXZlc1wiO2JyZWFrO2Nhc2UgaT41OnRoaXMudGlja0ludGVydmFsPVwibWludXRlc1wiO2JyZWFrO2Nhc2UgaT4xOnRoaXMudGlja0ludGVydmFsPVwic2Vjb25kc190ZW5zXCI7YnJlYWs7Y2FzZSA2MCppPjIwOnRoaXMudGlja0ludGVydmFsPVwic2Vjb25kc19maXZlc1wiO2JyZWFrO2RlZmF1bHQ6dGhpcy50aWNrSW50ZXJ2YWw9XCJzZWNvbmRzXCJ9fX0se2tleTpcImdlbmVyYXRlWWVhclNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoLGE9dC5jdXJyZW50WWVhcixzPXQuZGF5c1dpZHRoT25YQXhpcyxyPXQubnVtYmVyT2ZZZWFycyxvPWUubWluWWVhcixuPTAsbD1uZXcgSSh0aGlzLmN0eCksaD1cInllYXJcIjtpZihlLm1pbkRhdGU+MXx8ZS5taW5Nb250aD4wKXt2YXIgYz1sLmRldGVybWluZVJlbWFpbmluZ0RheXNPZlllYXIoZS5taW5ZZWFyLGUubWluTW9udGgsZS5taW5EYXRlKTtuPShsLmRldGVybWluZURheXNPZlllYXIoZS5taW5ZZWFyKS1jKzEpKnMsbz1lLm1pblllYXIrMSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOm4sdmFsdWU6byx1bml0OmgseWVhcjpvLG1vbnRoOngubW9udGhNb2QoaSsxKX0pfWVsc2UgMT09PWUubWluRGF0ZSYmMD09PWUubWluTW9udGgmJnRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bix2YWx1ZTpvLHVuaXQ6aCx5ZWFyOmEsbW9udGg6eC5tb250aE1vZChpKzEpfSk7Zm9yKHZhciBkPW8sZz1uLHU9MDt1PHI7dSsrKWQrKyxnPWwuZGV0ZXJtaW5lRGF5c09mWWVhcihkLTEpKnMrZyx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmcsdmFsdWU6ZCx1bml0OmgseWVhcjpkLG1vbnRoOjF9KX19LHtrZXk6XCJnZW5lcmF0ZU1vbnRoU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpcnN0VmFsLGk9dC5jdXJyZW50TW9udGhEYXRlLGE9dC5jdXJyZW50TW9udGgscz10LmN1cnJlbnRZZWFyLHI9dC5kYXlzV2lkdGhPblhBeGlzLG89dC5udW1iZXJPZk1vbnRocyxuPWEsbD0wLGg9bmV3IEkodGhpcy5jdHgpLGM9XCJtb250aFwiLGQ9MDtpZihlLm1pbkRhdGU+MSl7bD0oaC5kZXRlcm1pbmVEYXlzT2ZNb250aHMoYSsxLGUubWluWWVhciktaSsxKSpyLG49eC5tb250aE1vZChhKzEpO3ZhciBnPXMrZCx1PXgubW9udGhNb2QobikscD1uOzA9PT1uJiYoYz1cInllYXJcIixwPWcsdT0xLGcrPWQrPTEpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bCx2YWx1ZTpwLHVuaXQ6Yyx5ZWFyOmcsbW9udGg6dX0pfWVsc2UgdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpsLHZhbHVlOm4sdW5pdDpjLHllYXI6cyxtb250aDp4Lm1vbnRoTW9kKGEpfSk7Zm9yKHZhciBmPW4rMSxiPWwsdj0wLG09MTt2PG87disrLG0rKyl7MD09PShmPXgubW9udGhNb2QoZikpPyhjPVwieWVhclwiLGQrPTEpOmM9XCJtb250aFwiO3ZhciB5PXRoaXMuX2dldFllYXIocyxmLGQpO2I9aC5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZix5KSpyK2I7dmFyIHc9MD09PWY/eTpmO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Yix2YWx1ZTp3LHVuaXQ6Yyx5ZWFyOnksbW9udGg6MD09PWY/MTpmfSksZisrfX19LHtrZXk6XCJnZW5lcmF0ZURheVNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoLGE9dC5jdXJyZW50WWVhcixzPXQuaG91cnNXaWR0aE9uWEF4aXMscj10Lm51bWJlck9mRGF5cyxvPW5ldyBJKHRoaXMuY3R4KSxuPVwiZGF5XCIsbD1lLm1pbkRhdGUrMSxoPWwsYz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQ+by5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZSsxLGkpPyhoPTEsbj1cIm1vbnRoXCIsZz1lKz0xLGUpOmV9LGQ9KDI0LWUubWluSG91cikqcyxnPWwsdT1jKGgsaSxhKTswPT09ZS5taW5Ib3VyJiYxPT09ZS5taW5EYXRlPyhkPTAsZz14Lm1vbnRoTW9kKGUubWluTW9udGgpLG49XCJtb250aFwiLGg9ZS5taW5EYXRlKToxIT09ZS5taW5EYXRlJiYwPT09ZS5taW5Ib3VyJiYwPT09ZS5taW5NaW51dGUmJihkPTAsbD1lLm1pbkRhdGUsZz1sLHU9YyhoPWwsaSxhKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpkLHZhbHVlOmcsdW5pdDpuLHllYXI6dGhpcy5fZ2V0WWVhcihhLHUsMCksbW9udGg6eC5tb250aE1vZCh1KSxkYXk6aH0pO2Zvcih2YXIgcD1kLGY9MDtmPHI7ZisrKXtuPVwiZGF5XCIsdT1jKGgrPTEsdSx0aGlzLl9nZXRZZWFyKGEsdSwwKSk7dmFyIGI9dGhpcy5fZ2V0WWVhcihhLHUsMCk7cD0yNCpzK3A7dmFyIHY9MT09PWg/eC5tb250aE1vZCh1KTpoO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246cCx2YWx1ZTp2LHVuaXQ6bix5ZWFyOmIsbW9udGg6eC5tb250aE1vZCh1KSxkYXk6dn0pfX19LHtrZXk6XCJnZW5lcmF0ZUhvdXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnREYXRlLGE9dC5jdXJyZW50TW9udGgscz10LmN1cnJlbnRZZWFyLHI9dC5taW51dGVzV2lkdGhPblhBeGlzLG89dC5udW1iZXJPZkhvdXJzLG49bmV3IEkodGhpcy5jdHgpLGw9XCJob3VyXCIsaD1mdW5jdGlvbih0LGUpe3JldHVybiB0Pm4uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUrMSxzKSYmKGY9MSxlKz0xKSx7bW9udGg6ZSxkYXRlOmZ9fSxjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+bi5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZSsxLHMpP2UrPTE6ZX0sZD02MC0oZS5taW5NaW51dGUrZS5taW5TZWNvbmQvNjApLGc9ZCpyLHU9ZS5taW5Ib3VyKzEscD11OzYwPT09ZCYmKGc9MCxwPSh1PWUubWluSG91cikrMSk7dmFyIGY9aTtwPj0yNCYmKHA9MCxmKz0xLGw9XCJkYXlcIik7dmFyIGI9aChmLGEpLm1vbnRoO2I9YyhmLGIpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Zyx2YWx1ZTp1LHVuaXQ6bCxkYXk6Zixob3VyOnAseWVhcjpzLG1vbnRoOngubW9udGhNb2QoYil9KSxwKys7Zm9yKHZhciB2PWcsbT0wO208bzttKyspe2lmKGw9XCJob3VyXCIscD49MjQpcD0wLGw9XCJkYXlcIixiPWgoZis9MSxiKS5tb250aCxiPWMoZixiKTt2YXIgeT10aGlzLl9nZXRZZWFyKHMsYiwwKTt2PTYwKnIrdjt2YXIgdz0wPT09cD9mOnA7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjp2LHZhbHVlOncsdW5pdDpsLGhvdXI6cCxkYXk6Zix5ZWFyOnksbW9udGg6eC5tb250aE1vZChiKX0pLHArK319fSx7a2V5OlwiZ2VuZXJhdGVNaW51dGVTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmN1cnJlbnRNaWxsaXNlY29uZCxpPXQuY3VycmVudFNlY29uZCxhPXQuY3VycmVudE1pbnV0ZSxzPXQuY3VycmVudEhvdXIscj10LmN1cnJlbnREYXRlLG89dC5jdXJyZW50TW9udGgsbj10LmN1cnJlbnRZZWFyLGw9dC5taW51dGVzV2lkdGhPblhBeGlzLGg9dC5zZWNvbmRzV2lkdGhPblhBeGlzLGM9dC5udW1iZXJPZk1pbnV0ZXMsZD1hKzEsZz1yLHU9byxwPW4sZj1zLGI9KDYwLWktZS8xZTMpKmgsdj0wO3Y8Yzt2KyspZD49NjAmJihkPTAsMjQ9PT0oZis9MSkmJihmPTApKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmIsdmFsdWU6ZCx1bml0OlwibWludXRlXCIsaG91cjpmLG1pbnV0ZTpkLGRheTpnLHllYXI6dGhpcy5fZ2V0WWVhcihwLHUsMCksbW9udGg6eC5tb250aE1vZCh1KX0pLGIrPWwsZCsrfX0se2tleTpcImdlbmVyYXRlU2Vjb25kU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jdXJyZW50TWlsbGlzZWNvbmQsaT10LmN1cnJlbnRTZWNvbmQsYT10LmN1cnJlbnRNaW51dGUscz10LmN1cnJlbnRIb3VyLHI9dC5jdXJyZW50RGF0ZSxvPXQuY3VycmVudE1vbnRoLG49dC5jdXJyZW50WWVhcixsPXQuc2Vjb25kc1dpZHRoT25YQXhpcyxoPXQubnVtYmVyT2ZTZWNvbmRzLGM9aSsxLGQ9YSxnPXIsdT1vLHA9bixmPXMsYj0oMWUzLWUpLzFlMypsLHY9MDt2PGg7disrKWM+PTYwJiYoYz0wLCsrZD49NjAmJihkPTAsMjQ9PT0rK2YmJihmPTApKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpiLHZhbHVlOmMsdW5pdDpcInNlY29uZFwiLGhvdXI6ZixtaW51dGU6ZCxzZWNvbmQ6YyxkYXk6Zyx5ZWFyOnRoaXMuX2dldFllYXIocCx1LDApLG1vbnRoOngubW9udGhNb2QodSl9KSxiKz1sLGMrK319LHtrZXk6XCJjcmVhdGVSYXdEYXRlU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10LnllYXI7cmV0dXJuIDA9PT10Lm1vbnRoJiYodC5tb250aD0xKSxpKz1cIi1cIisoXCIwXCIrdC5tb250aC50b1N0cmluZygpKS5zbGljZSgtMiksXCJkYXlcIj09PXQudW5pdD9pKz1cImRheVwiPT09dC51bml0P1wiLVwiKyhcIjBcIitlKS5zbGljZSgtMik6XCItMDFcIjppKz1cIi1cIisoXCIwXCIrKHQuZGF5P3QuZGF5OlwiMVwiKSkuc2xpY2UoLTIpLFwiaG91clwiPT09dC51bml0P2krPVwiaG91clwiPT09dC51bml0P1wiVFwiKyhcIjBcIitlKS5zbGljZSgtMik6XCJUMDBcIjppKz1cIlRcIisoXCIwXCIrKHQuaG91cj90LmhvdXI6XCIwXCIpKS5zbGljZSgtMiksXCJtaW51dGVcIj09PXQudW5pdD9pKz1cIjpcIisoXCIwXCIrZSkuc2xpY2UoLTIpOmkrPVwiOlwiKyh0Lm1pbnV0ZT8oXCIwXCIrdC5taW51dGUpLnNsaWNlKC0yKTpcIjAwXCIpLFwic2Vjb25kXCI9PT10LnVuaXQ/aSs9XCI6XCIrKFwiMFwiK2UpLnNsaWNlKC0yKTppKz1cIjowMFwiLHRoaXMudXRjJiYoaSs9XCIuMDAwWlwiKSxpfX0se2tleTpcImZvcm1hdERhdGVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudztyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBhPXQudmFsdWUudG9TdHJpbmcoKSxzPW5ldyBJKGUuY3R4KSxyPWUuY3JlYXRlUmF3RGF0ZVN0cmluZyh0LGEpLG89cy5nZXREYXRlKHMucGFyc2VEYXRlKHIpKTtpZihlLnV0Y3x8KG89cy5nZXREYXRlKHMucGFyc2VEYXRlV2l0aFRpbWV6b25lKHIpKSksdm9pZCAwPT09aS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdCl7dmFyIG49XCJkZCBNTU1cIixsPWkuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZUZvcm1hdHRlcjtcInllYXJcIj09PXQudW5pdCYmKG49bC55ZWFyKSxcIm1vbnRoXCI9PT10LnVuaXQmJihuPWwubW9udGgpLFwiZGF5XCI9PT10LnVuaXQmJihuPWwuZGF5KSxcImhvdXJcIj09PXQudW5pdCYmKG49bC5ob3VyKSxcIm1pbnV0ZVwiPT09dC51bml0JiYobj1sLm1pbnV0ZSksXCJzZWNvbmRcIj09PXQudW5pdCYmKG49bC5zZWNvbmQpLGE9cy5mb3JtYXREYXRlKG8sbil9ZWxzZSBhPXMuZm9ybWF0RGF0ZShvLGkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXQpO3JldHVybntkYXRlU3RyaW5nOnIscG9zaXRpb246dC5wb3NpdGlvbix2YWx1ZTphLHVuaXQ6dC51bml0LHllYXI6dC55ZWFyLG1vbnRoOnQubW9udGh9fSkpfX0se2tleTpcInJlbW92ZU92ZXJsYXBwaW5nVFNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMsYT1uZXcgbSh0aGlzLmN0eCkscz0hMTt0Lmxlbmd0aD4wJiZ0WzBdLnZhbHVlJiZ0LmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZS5sZW5ndGg9PT10WzBdLnZhbHVlLmxlbmd0aH0pKSYmKHM9ITAsZT1hLmdldFRleHRSZWN0cyh0WzBdLnZhbHVlKS53aWR0aCk7dmFyIHI9MCxvPXQubWFwKChmdW5jdGlvbihvLG4pe2lmKG4+MCYmaS53LmNvbmZpZy54YXhpcy5sYWJlbHMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzKXt2YXIgbD1zP2U6YS5nZXRUZXh0UmVjdHModFtyXS52YWx1ZSkud2lkdGgsaD10W3JdLnBvc2l0aW9uO3JldHVybiBvLnBvc2l0aW9uPmgrbCsxMD8ocj1uLG8pOm51bGx9cmV0dXJuIG99KSk7cmV0dXJuIG89by5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKX19LHtrZXk6XCJfZ2V0WWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdCtNYXRoLmZsb29yKGUvMTIpK2l9fV0pLHR9KCksV3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWksdGhpcy53PWkudyx0aGlzLmVsPWV9cmV0dXJuIHIodCxbe2tleTpcInNldHVwRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZyxpPWUuY2hhcnQudHlwZTt0LmF4aXNDaGFydHM9W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwic2NhdHRlclwiLFwiYnViYmxlXCIsXCJyYWRhclwiLFwiaGVhdG1hcFwiLFwidHJlZW1hcFwiXS5pbmRleE9mKGkpPi0xLHQueHlDaGFydHM9W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwic2NhdHRlclwiLFwiYnViYmxlXCJdLmluZGV4T2YoaSk+LTEsdC5pc0Jhckhvcml6b250YWw9KFwiYmFyXCI9PT1lLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWUuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1lLmNoYXJ0LnR5cGUpJiZlLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHQuY2hhcnRDbGFzcz1cIi5hcGV4Y2hhcnRzXCIrdC5jaGFydElELHQuZG9tLmJhc2VFbD10aGlzLmVsLHQuZG9tLmVsV3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLG0uc2V0QXR0cnModC5kb20uZWxXcmFwLHtpZDp0LmNoYXJ0Q2xhc3Muc3Vic3RyaW5nKDEpLGNsYXNzOlwiYXBleGNoYXJ0cy1jYW52YXMgXCIrdC5jaGFydENsYXNzLnN1YnN0cmluZygxKX0pLHRoaXMuZWwuYXBwZW5kQ2hpbGQodC5kb20uZWxXcmFwKSx0LmRvbS5QYXBlcj1uZXcgd2luZG93LlNWRy5Eb2ModC5kb20uZWxXcmFwKSx0LmRvbS5QYXBlci5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtc3ZnXCIsXCJ4bWxuczpkYXRhXCI6XCJBcGV4Q2hhcnRzTlNcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGUuY2hhcnQub2Zmc2V0WCxcIiwgXCIpLmNvbmNhdChlLmNoYXJ0Lm9mZnNldFksXCIpXCIpfSksdC5kb20uUGFwZXIubm9kZS5zdHlsZS5iYWNrZ3JvdW5kPVwiZGFya1wiIT09ZS50aGVtZS5tb2RlfHxlLmNoYXJ0LmJhY2tncm91bmQ/ZS5jaGFydC5iYWNrZ3JvdW5kOlwicmdiYSgwLCAwLCAwLCAwLjgpXCIsdGhpcy5zZXRTVkdEaW1lbnNpb25zKCksdC5kb20uZWxMZWdlbmRGb3JlaWduPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LlNWR05TLFwiZm9yZWlnbk9iamVjdFwiKSxtLnNldEF0dHJzKHQuZG9tLmVsTGVnZW5kRm9yZWlnbix7eDowLHk6MCx3aWR0aDp0LnN2Z1dpZHRoLGhlaWdodDp0LnN2Z0hlaWdodH0pLHQuZG9tLmVsTGVnZW5kV3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHQuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmRcIiksdC5kb20uZWxMZWdlbmRXcmFwLnNldEF0dHJpYnV0ZShcInhtbG5zXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpLHQuZG9tLmVsTGVnZW5kRm9yZWlnbi5hcHBlbmRDaGlsZCh0LmRvbS5lbExlZ2VuZFdyYXApLHQuZG9tLlBhcGVyLm5vZGUuYXBwZW5kQ2hpbGQodC5kb20uZWxMZWdlbmRGb3JlaWduKSx0LmRvbS5lbEdyYXBoaWNhbD10LmRvbS5QYXBlci5ncm91cCgpLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy1pbm5lciBhcGV4Y2hhcnRzLWdyYXBoaWNhbFwifSksdC5kb20uZWxEZWZzPXQuZG9tLlBhcGVyLmRlZnMoKSx0LmRvbS5QYXBlci5hZGQodC5kb20uZWxHcmFwaGljYWwpLHQuZG9tLmVsR3JhcGhpY2FsLmFkZCh0LmRvbS5lbERlZnMpfX0se2tleTpcInBsb3RDaGFydFR5cGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLHM9aS5nbG9iYWxzLHI9e3NlcmllczpbXSxpOltdfSxvPXtzZXJpZXM6W10saTpbXX0sbj17c2VyaWVzOltdLGk6W119LGw9e3NlcmllczpbXSxpOltdfSxoPXtzZXJpZXM6W10saTpbXX0sYz17c2VyaWVzOltdLGk6W119LGQ9e3NlcmllczpbXSxpOltdfSxnPXtzZXJpZXM6W10saTpbXX0sdT17c2VyaWVzOltdLHNlcmllc1JhbmdlRW5kOltdLGk6W119O3Muc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSxwKXt2YXIgZj0wO3ZvaWQgMCE9PXRbcF0udHlwZT8oXCJjb2x1bW5cIj09PXRbcF0udHlwZXx8XCJiYXJcIj09PXRbcF0udHlwZT8ocy5zZXJpZXMubGVuZ3RoPjEmJmEucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwmJmNvbnNvbGUud2FybihcIkhvcml6b250YWwgYmFycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBhIG1peGVkL2NvbWJvIGNoYXJ0LiBQbGVhc2UgdHVybiBvZmYgYHBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsYFwiKSxoLnNlcmllcy5wdXNoKGUpLGguaS5wdXNoKHApLGYrKyxpLmdsb2JhbHMuY29sdW1uU2VyaWVzPWguc2VyaWVzKTpcImFyZWFcIj09PXRbcF0udHlwZT8oby5zZXJpZXMucHVzaChlKSxvLmkucHVzaChwKSxmKyspOlwibGluZVwiPT09dFtwXS50eXBlPyhyLnNlcmllcy5wdXNoKGUpLHIuaS5wdXNoKHApLGYrKyk6XCJzY2F0dGVyXCI9PT10W3BdLnR5cGU/KG4uc2VyaWVzLnB1c2goZSksbi5pLnB1c2gocCkpOlwiYnViYmxlXCI9PT10W3BdLnR5cGU/KGwuc2VyaWVzLnB1c2goZSksbC5pLnB1c2gocCksZisrKTpcImNhbmRsZXN0aWNrXCI9PT10W3BdLnR5cGU/KGMuc2VyaWVzLnB1c2goZSksYy5pLnB1c2gocCksZisrKTpcImJveFBsb3RcIj09PXRbcF0udHlwZT8oZC5zZXJpZXMucHVzaChlKSxkLmkucHVzaChwKSxmKyspOlwicmFuZ2VCYXJcIj09PXRbcF0udHlwZT8oZy5zZXJpZXMucHVzaChlKSxnLmkucHVzaChwKSxmKyspOlwicmFuZ2VBcmVhXCI9PT10W3BdLnR5cGU/KHUuc2VyaWVzLnB1c2gocy5zZXJpZXNSYW5nZVN0YXJ0W3BdKSx1LnNlcmllc1JhbmdlRW5kLnB1c2gocy5zZXJpZXNSYW5nZUVuZFtwXSksdS5pLnB1c2gocCksZisrKTpjb25zb2xlLndhcm4oXCJZb3UgaGF2ZSBzcGVjaWZpZWQgYW4gdW5yZWNvZ25pemVkIGNoYXJ0IHR5cGUuIEF2YWlsYWJsZSB0eXBlcyBmb3IgdGhpcyBwcm9wZXJ0eSBhcmUgbGluZS9hcmVhL2NvbHVtbi9iYXIvc2NhdHRlci9idWJibGUvY2FuZGxlc3RpY2svYm94UGxvdC9yYW5nZUJhci9yYW5nZUFyZWFcIiksZj4xJiYocy5jb21ib0NoYXJ0cz0hMCkpOihyLnNlcmllcy5wdXNoKGUpLHIuaS5wdXNoKHApKX0pKTt2YXIgcD1uZXcgRnQodGhpcy5jdHgsZSksZj1uZXcga3QodGhpcy5jdHgsZSk7dGhpcy5jdHgucGllPW5ldyBMdCh0aGlzLmN0eCk7dmFyIHg9bmV3IEl0KHRoaXMuY3R4KTt0aGlzLmN0eC5yYW5nZUJhcj1uZXcgTXQodGhpcy5jdHgsZSk7dmFyIGI9bmV3IFB0KHRoaXMuY3R4KSx2PVtdO2lmKHMuY29tYm9DaGFydHMpe2lmKG8uc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2gocC5kcmF3KG8uc2VyaWVzLFwiYXJlYVwiLG8uaSkpLGguc2VyaWVzLmxlbmd0aD4wKWlmKGkuY29uZmlnLmNoYXJ0LnN0YWNrZWQpe3ZhciBtPW5ldyB3dCh0aGlzLmN0eCxlKTt2LnB1c2gobS5kcmF3KGguc2VyaWVzLGguaSkpfWVsc2UgdGhpcy5jdHguYmFyPW5ldyB5dCh0aGlzLmN0eCxlKSx2LnB1c2godGhpcy5jdHguYmFyLmRyYXcoaC5zZXJpZXMsaC5pKSk7aWYodS5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaChwLmRyYXcodS5zZXJpZXMsXCJyYW5nZUFyZWFcIix1LmksdS5zZXJpZXNSYW5nZUVuZCkpLHIuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2gocC5kcmF3KHIuc2VyaWVzLFwibGluZVwiLHIuaSkpLGMuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2goZi5kcmF3KGMuc2VyaWVzLFwiY2FuZGxlc3RpY2tcIixjLmkpKSxkLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKGYuZHJhdyhkLnNlcmllcyxcImJveFBsb3RcIixkLmkpKSxnLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKHRoaXMuY3R4LnJhbmdlQmFyLmRyYXcoZy5zZXJpZXMsZy5pKSksbi5zZXJpZXMubGVuZ3RoPjApe3ZhciB5PW5ldyBGdCh0aGlzLmN0eCxlLCEwKTt2LnB1c2goeS5kcmF3KG4uc2VyaWVzLFwic2NhdHRlclwiLG4uaSkpfWlmKGwuc2VyaWVzLmxlbmd0aD4wKXt2YXIgdz1uZXcgRnQodGhpcy5jdHgsZSwhMCk7di5wdXNoKHcuZHJhdyhsLnNlcmllcyxcImJ1YmJsZVwiLGwuaSkpfX1lbHNlIHN3aXRjaChhLmNoYXJ0LnR5cGUpe2Nhc2VcImxpbmVcIjp2PXAuZHJhdyhzLnNlcmllcyxcImxpbmVcIik7YnJlYWs7Y2FzZVwiYXJlYVwiOnY9cC5kcmF3KHMuc2VyaWVzLFwiYXJlYVwiKTticmVhaztjYXNlXCJiYXJcIjppZihhLmNoYXJ0LnN0YWNrZWQpdj1uZXcgd3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyk7ZWxzZSB0aGlzLmN0eC5iYXI9bmV3IHl0KHRoaXMuY3R4LGUpLHY9dGhpcy5jdHguYmFyLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcImNhbmRsZXN0aWNrXCI6dj1uZXcga3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyxcImNhbmRsZXN0aWNrXCIpO2JyZWFrO2Nhc2VcImJveFBsb3RcIjp2PW5ldyBrdCh0aGlzLmN0eCxlKS5kcmF3KHMuc2VyaWVzLGEuY2hhcnQudHlwZSk7YnJlYWs7Y2FzZVwicmFuZ2VCYXJcIjp2PXRoaXMuY3R4LnJhbmdlQmFyLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhbmdlQXJlYVwiOnY9cC5kcmF3KHMuc2VyaWVzUmFuZ2VTdGFydCxcInJhbmdlQXJlYVwiLHZvaWQgMCxzLnNlcmllc1JhbmdlRW5kKTticmVhaztjYXNlXCJoZWF0bWFwXCI6dj1uZXcgU3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwidHJlZW1hcFwiOnY9bmV3IER0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInBpZVwiOmNhc2VcImRvbnV0XCI6Y2FzZVwicG9sYXJBcmVhXCI6dj10aGlzLmN0eC5waWUuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwicmFkaWFsQmFyXCI6dj14LmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhZGFyXCI6dj1iLmRyYXcocy5zZXJpZXMpO2JyZWFrO2RlZmF1bHQ6dj1wLmRyYXcocy5zZXJpZXMpfXJldHVybiB2fX0se2tleTpcInNldFNWR0RpbWVuc2lvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZzt0LnN2Z1dpZHRoPWUuY2hhcnQud2lkdGgsdC5zdmdIZWlnaHQ9ZS5jaGFydC5oZWlnaHQ7dmFyIGk9eC5nZXREaW1lbnNpb25zKHRoaXMuZWwpLGE9ZS5jaGFydC53aWR0aC50b1N0cmluZygpLnNwbGl0KC9bMC05XSsvZykucG9wKCk7XCIlXCI9PT1hP3guaXNOdW1iZXIoaVswXSkmJigwPT09aVswXS53aWR0aCYmKGk9eC5nZXREaW1lbnNpb25zKHRoaXMuZWwucGFyZW50Tm9kZSkpLHQuc3ZnV2lkdGg9aVswXSpwYXJzZUludChlLmNoYXJ0LndpZHRoLDEwKS8xMDApOlwicHhcIiE9PWEmJlwiXCIhPT1hfHwodC5zdmdXaWR0aD1wYXJzZUludChlLmNoYXJ0LndpZHRoLDEwKSk7dmFyIHM9ZS5jaGFydC5oZWlnaHQudG9TdHJpbmcoKS5zcGxpdCgvWzAtOV0rL2cpLnBvcCgpO2lmKFwiYXV0b1wiIT09dC5zdmdIZWlnaHQmJlwiXCIhPT10LnN2Z0hlaWdodClpZihcIiVcIj09PXMpe3ZhciByPXguZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpO3Quc3ZnSGVpZ2h0PXJbMV0qcGFyc2VJbnQoZS5jaGFydC5oZWlnaHQsMTApLzEwMH1lbHNlIHQuc3ZnSGVpZ2h0PXBhcnNlSW50KGUuY2hhcnQuaGVpZ2h0LDEwKTtlbHNlIHQuYXhpc0NoYXJ0cz90LnN2Z0hlaWdodD10LnN2Z1dpZHRoLzEuNjE6dC5zdmdIZWlnaHQ9dC5zdmdXaWR0aC8xLjI7aWYodC5zdmdXaWR0aDwwJiYodC5zdmdXaWR0aD0wKSx0LnN2Z0hlaWdodDwwJiYodC5zdmdIZWlnaHQ9MCksbS5zZXRBdHRycyh0LmRvbS5QYXBlci5ub2RlLHt3aWR0aDp0LnN2Z1dpZHRoLGhlaWdodDp0LnN2Z0hlaWdodH0pLFwiJVwiIT09cyl7dmFyIG89ZS5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8wOnQuYXhpc0NoYXJ0cz9lLmNoYXJ0LnBhcmVudEhlaWdodE9mZnNldDowO3QuZG9tLlBhcGVyLm5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD10LnN2Z0hlaWdodCtvK1wicHhcIn10LmRvbS5lbFdyYXAuc3R5bGUud2lkdGg9dC5zdmdXaWR0aCtcInB4XCIsdC5kb20uZWxXcmFwLnN0eWxlLmhlaWdodD10LnN2Z0hlaWdodCtcInB4XCJ9fSx7a2V5Olwic2hpZnRHcmFwaFBvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXQudHJhbnNsYXRlWSxpPXt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrdC50cmFuc2xhdGVYK1wiLCBcIitlK1wiKVwifTttLnNldEF0dHJzKHQuZG9tLmVsR3JhcGhpY2FsLm5vZGUsaSl9fSx7a2V5OlwicmVzaXplTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9MCxhPXQuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkPzE6MTU7YSs9dC5jb25maWcuZ3JpZC5wYWRkaW5nLmJvdHRvbSxcInRvcFwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZcImJvdHRvbVwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwhdC5jb25maWcubGVnZW5kLnNob3d8fHQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZ3x8KGk9bmV3IGx0KHRoaXMuY3R4KS5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKS5jbHdoKzEwKTt2YXIgcz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtcmFkaWFsYmFyLCAuYXBleGNoYXJ0cy1waWVcIikscj0yLjA1KnQuZ2xvYmFscy5yYWRpYWxTaXplO2lmKHMmJiF0LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCYmMCE9PXQuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlKXt2YXIgbz14LmdldEJvdW5kaW5nQ2xpZW50UmVjdChzKTtyPW8uYm90dG9tO3ZhciBuPW8uYm90dG9tLW8udG9wO3I9TWF0aC5tYXgoMi4wNSp0Lmdsb2JhbHMucmFkaWFsU2l6ZSxuKX12YXIgbD1yK2UudHJhbnNsYXRlWStpK2E7ZS5kb20uZWxMZWdlbmRGb3JlaWduJiZlLmRvbS5lbExlZ2VuZEZvcmVpZ24uc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsbCksdC5jb25maWcuY2hhcnQuaGVpZ2h0JiZTdHJpbmcodC5jb25maWcuY2hhcnQuaGVpZ2h0KS5pbmRleE9mKFwiJVwiKT4wfHwoZS5kb20uZWxXcmFwLnN0eWxlLmhlaWdodD1sK1wicHhcIixtLnNldEF0dHJzKGUuZG9tLlBhcGVyLm5vZGUse2hlaWdodDpsfSksZS5kb20uUGFwZXIubm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0PWwrXCJweFwiKX19LHtrZXk6XCJjb3JlQ2FsY3VsYXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXtuZXcgVSh0aGlzLmN0eCkuaW5pdCgpfX0se2tleTpcInJlc2V0R2xvYmFsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWZ1bmN0aW9uKCl7cmV0dXJuIHQudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuW119KSl9LGk9bmV3IFksYT10aGlzLncuZ2xvYmFscztpLmluaXRHbG9iYWxWYXJzKGEpLGEuc2VyaWVzWHZhbHVlcz1lKCksYS5zZXJpZXNZdmFsdWVzPWUoKX19LHtrZXk6XCJpc011bHRpcGxlWVwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy53LmNvbmZpZy55YXhpcy5jb25zdHJ1Y3Rvcj09PUFycmF5JiZ0aGlzLncuY29uZmlnLnlheGlzLmxlbmd0aD4xKXJldHVybiB0aGlzLncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXM9ITAsITB9fSx7a2V5OlwieHlTZXR0aW5nc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bnVsbCxlPXRoaXMudztpZihlLmdsb2JhbHMuYXhpc0NoYXJ0cyl7aWYoXCJiYWNrXCI9PT1lLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnBvc2l0aW9uKW5ldyBRKHRoaXMuY3R4KS5kcmF3WENyb3NzaGFpcnMoKTtpZihcImJhY2tcIj09PWUuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMucG9zaXRpb24pbmV3IFEodGhpcy5jdHgpLmRyYXdZQ3Jvc3NoYWlycygpO2lmKFwiZGF0ZXRpbWVcIj09PWUuY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PWUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIpe3RoaXMuY3R4LnRpbWVTY2FsZT1uZXcgTnQodGhpcy5jdHgpO3ZhciBpPVtdO2lzRmluaXRlKGUuZ2xvYmFscy5taW5YKSYmaXNGaW5pdGUoZS5nbG9iYWxzLm1heFgpJiYhZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9pPXRoaXMuY3R4LnRpbWVTY2FsZS5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyhlLmdsb2JhbHMubWluWCxlLmdsb2JhbHMubWF4WCk6ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGk9dGhpcy5jdHgudGltZVNjYWxlLmNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzKGUuZ2xvYmFscy5taW5ZLGUuZ2xvYmFscy5tYXhZKSksdGhpcy5jdHgudGltZVNjYWxlLnJlY2FsY0RpbWVuc2lvbnNCYXNlZE9uRm9ybWF0KGkpfXQ9bmV3IHkodGhpcy5jdHgpLmdldENhbGN1bGF0ZWRSYXRpb3MoKX1yZXR1cm4gdH19LHtrZXk6XCJ1cGRhdGVTb3VyY2VDaGFydFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LncuZ2xvYmFscy5zZWxlY3Rpb249dm9pZCAwLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoe2NoYXJ0OntzZWxlY3Rpb246e3hheGlzOnttaW46dC53Lmdsb2JhbHMubWluWCxtYXg6dC53Lmdsb2JhbHMubWF4WH19fX0sITEsITEpfX0se2tleTpcInNldHVwQnJ1c2hIYW5kbGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dGhpcy53O2lmKGkuY29uZmlnLmNoYXJ0LmJydXNoLmVuYWJsZWQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24pe3ZhciBhPUFycmF5LmlzQXJyYXkoaS5jb25maWcuY2hhcnQuYnJ1c2gudGFyZ2V0cyl8fFtpLmNvbmZpZy5jaGFydC5icnVzaC50YXJnZXRdO2EuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9QXBleENoYXJ0cy5nZXRDaGFydEJ5SUQoZSk7aS53Lmdsb2JhbHMuYnJ1c2hTb3VyY2U9dC5jdHgsXCJmdW5jdGlvblwiIT10eXBlb2YgaS53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkJiYoaS53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkPWZ1bmN0aW9uKCl7dC51cGRhdGVTb3VyY2VDaGFydChpKX0pLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkJiYoaS53LmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQ9ZnVuY3Rpb24oKXt0LnVwZGF0ZVNvdXJjZUNoYXJ0KGkpfSl9KSksaS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbj1mdW5jdGlvbih0LHMpe2EuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGE9QXBleENoYXJ0cy5nZXRDaGFydEJ5SUQodCkscj14LmNsb25lKGkuY29uZmlnLnlheGlzKTtpZihpLmNvbmZpZy5jaGFydC5icnVzaC5hdXRvU2NhbGVZYXhpcyYmMT09PWEudy5nbG9iYWxzLnNlcmllcy5sZW5ndGgpe3ZhciBvPW5ldyBfKGEpO3I9by5hdXRvU2NhbGVZKGEscixzKX12YXIgbj1hLncuY29uZmlnLnlheGlzLnJlZHVjZSgoZnVuY3Rpb24odCxpLHMpe3JldHVybltdLmNvbmNhdCh1KHQpLFtlKGUoe30sYS53LmNvbmZpZy55YXhpc1tzXSkse30se21pbjpyWzBdLm1pbixtYXg6clswXS5tYXh9KV0pfSksW10pO2EuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoe3hheGlzOnttaW46cy54YXhpcy5taW4sbWF4OnMueGF4aXMubWF4fSx5YXhpczpufSwhMSwhMSwhMSwhMSl9KSl9fX19XSksdH0oKSxCdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiX3VwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxzPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scj0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLG89YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0mJmFyZ3VtZW50c1s0XTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4pe3ZhciBsPVtlLmN0eF07ciYmKGw9ZS5jdHguZ2V0U3luY2VkQ2hhcnRzKCkpLGUuY3R4LncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQmJihsPVtlLmN0eF0sZS5jdHgudy5nbG9iYWxzLmlzRXhlY0NhbGxlZD0hMSksbC5mb3JFYWNoKChmdW5jdGlvbihyLGgpe3ZhciBjPXIudztpZihjLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZT1zLGF8fChjLmdsb2JhbHMucmVzaXplZD0hMCxjLmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAscyYmci5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpKSx0JiZcIm9iamVjdFwiPT09aSh0KSYmKHIuY29uZmlnPW5ldyBFKHQpLHQ9eS5leHRlbmRBcnJheVByb3BzKHIuY29uZmlnLHQsYyksci53Lmdsb2JhbHMuY2hhcnRJRCE9PWUuY3R4LncuZ2xvYmFscy5jaGFydElEJiZkZWxldGUgdC5zZXJpZXMsYy5jb25maWc9eC5leHRlbmQoYy5jb25maWcsdCksbyYmKGMuZ2xvYmFscy5sYXN0WEF4aXM9dC54YXhpcz94LmNsb25lKHQueGF4aXMpOltdLGMuZ2xvYmFscy5sYXN0WUF4aXM9dC55YXhpcz94LmNsb25lKHQueWF4aXMpOltdLGMuZ2xvYmFscy5pbml0aWFsQ29uZmlnPXguZXh0ZW5kKHt9LGMuY29uZmlnKSxjLmdsb2JhbHMuaW5pdGlhbFNlcmllcz14LmNsb25lKGMuY29uZmlnLnNlcmllcyksdC5zZXJpZXMpKSl7Zm9yKHZhciBkPTA7ZDxjLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7ZCsrKXt2YXIgZz1jLmNvbmZpZy5zZXJpZXNbYy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXNbZF1dO2MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbZF0uZGF0YT1jLmdsb2JhbHMuYXhpc0NoYXJ0cz9nLmRhdGEuc2xpY2UoKTpnfWZvcih2YXIgdT0wO3U8Yy5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO3UrKyl7dmFyIHA9Yy5jb25maWcuc2VyaWVzW2MuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzW3VdXTtjLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzW3VdLmRhdGE9Yy5nbG9iYWxzLmF4aXNDaGFydHM/cC5kYXRhLnNsaWNlKCk6cH1yLnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhjLmNvbmZpZy5zZXJpZXMpfXJldHVybiByLnVwZGF0ZSh0KS50aGVuKChmdW5jdGlvbigpe2g9PT1sLmxlbmd0aC0xJiZuKHIpfSkpfSkpfSkpfX0se2tleTpcIl91cGRhdGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyl7dmFyIHIsbz1pLnc7cmV0dXJuIG8uZ2xvYmFscy5zaG91bGRBbmltYXRlPWUsby5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLGUmJmkuY3R4LnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCksby5nbG9iYWxzLmF4aXNDaGFydHM/KDA9PT0ocj10Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5fZXh0ZW5kU2VyaWVzKHQsZSl9KSkpLmxlbmd0aCYmKHI9W3tkYXRhOltdfV0pLG8uY29uZmlnLnNlcmllcz1yKTpvLmNvbmZpZy5zZXJpZXM9dC5zbGljZSgpLGEmJihvLmdsb2JhbHMuaW5pdGlhbENvbmZpZy5zZXJpZXM9eC5jbG9uZShvLmNvbmZpZy5zZXJpZXMpLG8uZ2xvYmFscy5pbml0aWFsU2VyaWVzPXguY2xvbmUoby5jb25maWcuc2VyaWVzKSksaS5jdHgudXBkYXRlKCkudGhlbigoZnVuY3Rpb24oKXtzKGkuY3R4KX0pKX0pKX19LHtrZXk6XCJfZXh0ZW5kU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLncscz1hLmNvbmZpZy5zZXJpZXNbaV07cmV0dXJuIGUoZSh7fSxhLmNvbmZpZy5zZXJpZXNbaV0pLHt9LHtuYW1lOnQubmFtZT90Lm5hbWU6bnVsbD09cz92b2lkIDA6cy5uYW1lLGNvbG9yOnQuY29sb3I/dC5jb2xvcjpudWxsPT1zP3ZvaWQgMDpzLmNvbG9yLHR5cGU6dC50eXBlP3QudHlwZTpudWxsPT1zP3ZvaWQgMDpzLnR5cGUsZ3JvdXA6dC5ncm91cD90Lmdyb3VwOm51bGw9PXM/dm9pZCAwOnMuZ3JvdXAsZGF0YTp0LmRhdGE/dC5kYXRhOm51bGw9PXM/dm9pZCAwOnMuZGF0YSx6SW5kZXg6dm9pZCAwIT09dC56SW5kZXg/dC56SW5kZXg6aX0pfX0se2tleTpcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bnVsbCxzPVwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXVwiKTtyZXR1cm4gaS5nbG9iYWxzLmF4aXNDaGFydHM/YT1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIlwiLmNvbmNhdChzLFwiIHBhdGhbaj0nXCIpLmNvbmNhdChlLFwiJ10sIFwiKS5jb25jYXQocyxcIiBjaXJjbGVbaj0nXCIpLmNvbmNhdChlLFwiJ10sIFwiKS5jb25jYXQocyxcIiByZWN0W2o9J1wiKS5jb25jYXQoZSxcIiddXCIpKS5tZW1iZXJzWzBdOnZvaWQgMD09PWUmJihhPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiXCIuY29uY2F0KHMsXCIgcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXVwiKSkubWVtYmVyc1swXSxcInBpZVwiIT09aS5jb25maWcuY2hhcnQudHlwZSYmXCJwb2xhckFyZWFcIiE9PWkuY29uZmlnLmNoYXJ0LnR5cGUmJlwiZG9udXRcIiE9PWkuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMuY3R4LnBpZS5waWVDbGlja2VkKHQpKSxhPyhuZXcgbSh0aGlzLmN0eCkucGF0aE1vdXNlRG93bihhLG51bGwpLGEubm9kZT9hLm5vZGU6bnVsbCk6KGNvbnNvbGUud2FybihcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbjogRWxlbWVudCBub3QgZm91bmRcIiksbnVsbCl9fSx7a2V5OlwiZm9yY2VYQXhpc1VwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZihbXCJtaW5cIixcIm1heFwiXS5mb3JFYWNoKChmdW5jdGlvbihpKXt2b2lkIDAhPT10LnhheGlzW2ldJiYoZS5jb25maWcueGF4aXNbaV09dC54YXhpc1tpXSxlLmdsb2JhbHMubGFzdFhBeGlzW2ldPXQueGF4aXNbaV0pfSkpLHQueGF4aXMuY2F0ZWdvcmllcyYmdC54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCYmKGUuY29uZmlnLnhheGlzLmNhdGVnb3JpZXM9dC54YXhpcy5jYXRlZ29yaWVzKSxlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpe3ZhciBpPW5ldyBYKHQpO3Q9aS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXModCx0aGlzLmN0eCl9cmV0dXJuIHR9fSx7a2V5OlwiZm9yY2VZQXhpc1VwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNoYXJ0JiZ0LmNoYXJ0LnN0YWNrZWQmJlwiMTAwJVwiPT09dC5jaGFydC5zdGFja1R5cGUmJihBcnJheS5pc0FycmF5KHQueWF4aXMpP3QueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt0LnlheGlzW2ldLm1pbj0wLHQueWF4aXNbaV0ubWF4PTEwMH0pKToodC55YXhpcy5taW49MCx0LnlheGlzLm1heD0xMDApKSx0fX0se2tleTpcInJldmVydERlZmF1bHRBeGlzTWluTWF4XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPWkuZ2xvYmFscy5sYXN0WEF4aXMscz1pLmdsb2JhbHMubGFzdFlBeGlzO3QmJnQueGF4aXMmJihhPXQueGF4aXMpLHQmJnQueWF4aXMmJihzPXQueWF4aXMpLGkuY29uZmlnLnhheGlzLm1pbj1hLm1pbixpLmNvbmZpZy54YXhpcy5tYXg9YS5tYXg7dmFyIHI9ZnVuY3Rpb24odCl7dm9pZCAwIT09c1t0XSYmKGkuY29uZmlnLnlheGlzW3RdLm1pbj1zW3RdLm1pbixpLmNvbmZpZy55YXhpc1t0XS5tYXg9c1t0XS5tYXgpfTtpLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsYSl7aS5nbG9iYWxzLnpvb21lZHx8dm9pZCAwIT09c1thXT9yKGEpOnZvaWQgMCE9PWUuY3R4Lm9wdHMueWF4aXNbYV0mJih0Lm1pbj1lLmN0eC5vcHRzLnlheGlzW2FdLm1pbix0Lm1heD1lLmN0eC5vcHRzLnlheGlzW2FdLm1heCl9KSl9fV0pLHR9KCk7UnQ9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dm9pZCAwLEh0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9KHZvaWQgMCE9PXRoaXM/dGhpczp0KS5TVkc9ZnVuY3Rpb24odCl7aWYoYS5zdXBwb3J0ZWQpcmV0dXJuIHQ9bmV3IGEuRG9jKHQpLGEucGFyc2VyLmRyYXd8fGEucHJlcGFyZSgpLHR9O2lmKGEubnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGEueG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zL1wiLGEueGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsYS5zdmdqcz1cImh0dHA6Ly9zdmdqcy5kZXZcIixhLnN1cHBvcnRlZD0hMCwhYS5zdXBwb3J0ZWQpcmV0dXJuITE7YS5kaWQ9MWUzLGEuZWlkPWZ1bmN0aW9uKHQpe3JldHVyblwiU3ZnanNcIitkKHQpK2EuZGlkKyt9LGEuY3JlYXRlPWZ1bmN0aW9uKHQpe3ZhciBpPWUuY3JlYXRlRWxlbWVudE5TKHRoaXMubnMsdCk7cmV0dXJuIGkuc2V0QXR0cmlidXRlKFwiaWRcIix0aGlzLmVpZCh0KSksaX0sYS5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgdCxlO2U9KHQ9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpKS5wb3AoKTtmb3IodmFyIGk9dC5sZW5ndGgtMTtpPj0wO2ktLSlpZih0W2ldKWZvcih2YXIgcyBpbiBlKXRbaV0ucHJvdG90eXBlW3NdPWVbc107YS5TZXQmJmEuU2V0LmluaGVyaXQmJmEuU2V0LmluaGVyaXQoKX0sYS5pbnZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9XCJmdW5jdGlvblwiPT10eXBlb2YgdC5jcmVhdGU/dC5jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLmNyZWF0ZSh0LmNyZWF0ZSkpfTtyZXR1cm4gdC5pbmhlcml0JiYoZS5wcm90b3R5cGU9bmV3IHQuaW5oZXJpdCksdC5leHRlbmQmJmEuZXh0ZW5kKGUsdC5leHRlbmQpLHQuY29uc3RydWN0JiZhLmV4dGVuZCh0LnBhcmVudHx8YS5Db250YWluZXIsdC5jb25zdHJ1Y3QpLGV9LGEuYWRvcHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5pbnN0YW5jZT9lLmluc3RhbmNlOigoaT1cInN2Z1wiPT1lLm5vZGVOYW1lP2UucGFyZW50Tm9kZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudD9uZXcgYS5OZXN0ZWQ6bmV3IGEuRG9jOlwibGluZWFyR3JhZGllbnRcIj09ZS5ub2RlTmFtZT9uZXcgYS5HcmFkaWVudChcImxpbmVhclwiKTpcInJhZGlhbEdyYWRpZW50XCI9PWUubm9kZU5hbWU/bmV3IGEuR3JhZGllbnQoXCJyYWRpYWxcIik6YVtkKGUubm9kZU5hbWUpXT9uZXcoYVtkKGUubm9kZU5hbWUpXSk6bmV3IGEuRWxlbWVudChlKSkudHlwZT1lLm5vZGVOYW1lLGkubm9kZT1lLGUuaW5zdGFuY2U9aSxpIGluc3RhbmNlb2YgYS5Eb2MmJmkubmFtZXNwYWNlKCkuZGVmcygpLGkuc2V0RGF0YShKU09OLnBhcnNlKGUuZ2V0QXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiKSl8fHt9KSxpKTpudWxsO3ZhciBpfSxhLnByZXBhcmU9ZnVuY3Rpb24oKXt2YXIgdD1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXSxpPSh0P25ldyBhLkRvYyh0KTphLmFkb3B0KGUuZG9jdW1lbnRFbGVtZW50KS5uZXN0ZWQoKSkuc2l6ZSgyLDApO2EucGFyc2VyPXtib2R5OnR8fGUuZG9jdW1lbnRFbGVtZW50LGRyYXc6aS5zdHlsZShcIm9wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMDAlO3RvcDotMTAwJTtvdmVyZmxvdzpoaWRkZW5cIikubm9kZSxwb2x5OmkucG9seWxpbmUoKS5ub2RlLHBhdGg6aS5wYXRoKCkubm9kZSxuYXRpdmU6YS5jcmVhdGUoXCJzdmdcIil9fSxhLnBhcnNlcj17bmF0aXZlOmEuY3JlYXRlKFwic3ZnXCIpfSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsKGZ1bmN0aW9uKCl7YS5wYXJzZXIuZHJhd3x8YS5wcmVwYXJlKCl9KSwhMSksYS5yZWdleD17bnVtYmVyQW5kVW5pdDovXihbKy1dPyhcXGQrKFxcLlxcZCopP3xcXC5cXGQrKShlWystXT9cXGQrKT8pKFthLXolXSopJC9pLGhleDovXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLHJnYjovcmdiXFwoKFxcZCspLChcXGQrKSwoXFxkKylcXCkvLHJlZmVyZW5jZTovIyhbYS16MC05XFwtX10rKS9pLHRyYW5zZm9ybXM6L1xcKVxccyosP1xccyovLHdoaXRlc3BhY2U6L1xccy9nLGlzSGV4Oi9eI1thLWYwLTldezMsNn0kL2ksaXNSZ2I6L15yZ2JcXCgvLGlzQ3NzOi9bXjpdKzpbXjtdKzs/Lyxpc0JsYW5rOi9eKFxccyspPyQvLGlzTnVtYmVyOi9eWystXT8oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/JC9pLGlzUGVyY2VudDovXi0/W1xcZFxcLl0rJSQvLGlzSW1hZ2U6L1xcLihqcGd8anBlZ3xwbmd8Z2lmfHN2ZykoXFw/W149XSsuKik/L2ksZGVsaW1pdGVyOi9bXFxzLF0rLyxoeXBoZW46LyhbXmVdKVxcLS9naSxwYXRoTGV0dGVyczovW01MSFZDU1FUQVpdL2dpLGlzUGF0aExldHRlcjovW01MSFZDU1FUQVpdL2ksbnVtYmVyc1dpdGhEb3RzOi8oKFxcZD9cXC5cXGQrKD86ZVsrLV0/XFxkKyk/KSgoPzpcXC5cXGQrKD86ZVsrLV0/XFxkKyk/KSspKSsvZ2ksZG90czovXFwuL2d9LGEudXRpbHM9e21hcDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10Lmxlbmd0aCxhPVtdLHM9MDtzPGk7cysrKWEucHVzaChlKHRbc10pKTtyZXR1cm4gYX0sZmlsdGVyOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXQubGVuZ3RoLGE9W10scz0wO3M8aTtzKyspZSh0W3NdKSYmYS5wdXNoKHRbc10pO3JldHVybiBhfSxmaWx0ZXJTVkdFbGVtZW50czpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5maWx0ZXIoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnR9KSl9fSxhLmRlZmF1bHRzPXthdHRyczp7XCJmaWxsLW9wYWNpdHlcIjoxLFwic3Ryb2tlLW9wYWNpdHlcIjoxLFwic3Ryb2tlLXdpZHRoXCI6MCxcInN0cm9rZS1saW5lam9pblwiOlwibWl0ZXJcIixcInN0cm9rZS1saW5lY2FwXCI6XCJidXR0XCIsZmlsbDpcIiMwMDAwMDBcIixzdHJva2U6XCIjMDAwMDAwXCIsb3BhY2l0eToxLHg6MCx5OjAsY3g6MCxjeTowLHdpZHRoOjAsaGVpZ2h0OjAscjowLHJ4OjAscnk6MCxvZmZzZXQ6MCxcInN0b3Atb3BhY2l0eVwiOjEsXCJzdG9wLWNvbG9yXCI6XCIjMDAwMDAwXCIsXCJmb250LXNpemVcIjoxNixcImZvbnQtZmFtaWx5XCI6XCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsXCJ0ZXh0LWFuY2hvclwiOlwic3RhcnRcIn19LGEuQ29sb3I9ZnVuY3Rpb24odCl7dmFyIGUsczt0aGlzLnI9MCx0aGlzLmc9MCx0aGlzLmI9MCx0JiYoXCJzdHJpbmdcIj09dHlwZW9mIHQ/YS5yZWdleC5pc1JnYi50ZXN0KHQpPyhlPWEucmVnZXgucmdiLmV4ZWModC5yZXBsYWNlKGEucmVnZXgud2hpdGVzcGFjZSxcIlwiKSksdGhpcy5yPXBhcnNlSW50KGVbMV0pLHRoaXMuZz1wYXJzZUludChlWzJdKSx0aGlzLmI9cGFyc2VJbnQoZVszXSkpOmEucmVnZXguaXNIZXgudGVzdCh0KSYmKGU9YS5yZWdleC5oZXguZXhlYyg0PT0ocz10KS5sZW5ndGg/W1wiI1wiLHMuc3Vic3RyaW5nKDEsMikscy5zdWJzdHJpbmcoMSwyKSxzLnN1YnN0cmluZygyLDMpLHMuc3Vic3RyaW5nKDIsMykscy5zdWJzdHJpbmcoMyw0KSxzLnN1YnN0cmluZygzLDQpXS5qb2luKFwiXCIpOnMpLHRoaXMucj1wYXJzZUludChlWzFdLDE2KSx0aGlzLmc9cGFyc2VJbnQoZVsyXSwxNiksdGhpcy5iPXBhcnNlSW50KGVbM10sMTYpKTpcIm9iamVjdFwiPT09aSh0KSYmKHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iKSl9LGEuZXh0ZW5kKGEuQ29sb3Ise3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9IZXgoKX0sdG9IZXg6ZnVuY3Rpb24oKXtyZXR1cm5cIiNcIitnKHRoaXMucikrZyh0aGlzLmcpK2codGhpcy5iKX0sdG9SZ2I6ZnVuY3Rpb24oKXtyZXR1cm5cInJnYihcIitbdGhpcy5yLHRoaXMuZyx0aGlzLmJdLmpvaW4oKStcIilcIn0sYnJpZ2h0bmVzczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnIvMjU1Ki4zK3RoaXMuZy8yNTUqLjU5K3RoaXMuYi8yNTUqLjExfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5Db2xvcih0KSx0aGlzfSxhdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj8odD10PDA/MDp0PjE/MTp0LG5ldyBhLkNvbG9yKHtyOn5+KHRoaXMucisodGhpcy5kZXN0aW5hdGlvbi5yLXRoaXMucikqdCksZzp+fih0aGlzLmcrKHRoaXMuZGVzdGluYXRpb24uZy10aGlzLmcpKnQpLGI6fn4odGhpcy5iKyh0aGlzLmRlc3RpbmF0aW9uLmItdGhpcy5iKSp0KX0pKTp0aGlzfX0pLGEuQ29sb3IudGVzdD1mdW5jdGlvbih0KXtyZXR1cm4gdCs9XCJcIixhLnJlZ2V4LmlzSGV4LnRlc3QodCl8fGEucmVnZXguaXNSZ2IudGVzdCh0KX0sYS5Db2xvci5pc1JnYj1mdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJudW1iZXJcIj09dHlwZW9mIHQuciYmXCJudW1iZXJcIj09dHlwZW9mIHQuZyYmXCJudW1iZXJcIj09dHlwZW9mIHQuYn0sYS5Db2xvci5pc0NvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhLkNvbG9yLmlzUmdiKHQpfHxhLkNvbG9yLnRlc3QodCl9LGEuQXJyYXk9ZnVuY3Rpb24odCxlKXswPT0odD0odHx8W10pLnZhbHVlT2YoKSkubGVuZ3RoJiZlJiYodD1lLnZhbHVlT2YoKSksdGhpcy52YWx1ZT10aGlzLnBhcnNlKHQpfSxhLmV4dGVuZChhLkFycmF5LHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLmpvaW4oXCIgXCIpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiB0PXQudmFsdWVPZigpLEFycmF5LmlzQXJyYXkodCk/dDp0aGlzLnNwbGl0KHQpfX0pLGEuUG9pbnRBcnJheT1mdW5jdGlvbih0LGUpe2EuQXJyYXkuY2FsbCh0aGlzLHQsZXx8W1swLDBdXSl9LGEuUG9pbnRBcnJheS5wcm90b3R5cGU9bmV3IGEuQXJyYXksYS5Qb2ludEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLlBvaW50QXJyYXk7Zm9yKHZhciBzPXtNOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS54PWkueD10WzBdLGUueT1pLnk9dFsxXSxbXCJNXCIsZS54LGUueV19LEw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMF0sZS55PXRbMV0sW1wiTFwiLHRbMF0sdFsxXV19LEg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMF0sW1wiSFwiLHRbMF1dfSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueT10WzBdLFtcIlZcIix0WzBdXX0sQzpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFs0XSxlLnk9dFs1XSxbXCJDXCIsdFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV1dfSxROmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzJdLGUueT10WzNdLFtcIlFcIix0WzBdLHRbMV0sdFsyXSx0WzNdXX0sUzpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFsyXSxlLnk9dFszXSxbXCJTXCIsdFswXSx0WzFdLHRbMl0sdFszXV19LFo6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlLng9aS54LGUueT1pLnksW1wiWlwiXX19LHI9XCJtbGh2cXRjc2F6XCIuc3BsaXQoXCJcIiksbz0wLG49ci5sZW5ndGg7bzxuOysrbylzW3Jbb11dPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLGksYSl7aWYoXCJIXCI9PXQpZVswXT1lWzBdK2kueDtlbHNlIGlmKFwiVlwiPT10KWVbMF09ZVswXStpLnk7ZWxzZSBpZihcIkFcIj09dCllWzVdPWVbNV0raS54LGVbNl09ZVs2XStpLnk7ZWxzZSBmb3IodmFyIHI9MCxvPWUubGVuZ3RoO3I8bzsrK3IpZVtyXT1lW3JdKyhyJTI/aS55OmkueCk7aWYocyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygc1t0XSlyZXR1cm4gc1t0XShlLGksYSl9fShyW29dLnRvVXBwZXJDYXNlKCkpO2EuUGF0aEFycmF5PWZ1bmN0aW9uKHQsZSl7YS5BcnJheS5jYWxsKHRoaXMsdCxlfHxbW1wiTVwiLDAsMF1dKX0sYS5QYXRoQXJyYXkucHJvdG90eXBlPW5ldyBhLkFycmF5LGEuUGF0aEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLlBhdGhBcnJheSxhLmV4dGVuZChhLlBhdGhBcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT10Lmxlbmd0aCxhPVwiXCI7ZTxpO2UrKylhKz10W2VdWzBdLG51bGwhPXRbZV1bMV0mJihhKz10W2VdWzFdLG51bGwhPXRbZV1bMl0mJihhKz1cIiBcIixhKz10W2VdWzJdLG51bGwhPXRbZV1bM10mJihhKz1cIiBcIixhKz10W2VdWzNdLGErPVwiIFwiLGErPXRbZV1bNF0sbnVsbCE9dFtlXVs1XSYmKGErPVwiIFwiLGErPXRbZV1bNV0sYSs9XCIgXCIsYSs9dFtlXVs2XSxudWxsIT10W2VdWzddJiYoYSs9XCIgXCIsYSs9dFtlXVs3XSkpKSkpO3JldHVybiBhK1wiIFwifSh0aGlzLnZhbHVlKX0sbW92ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuYmJveCgpO3JldHVybiBpLngsaS55LHRoaXN9LGF0OmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmRlc3RpbmF0aW9uKXJldHVybiB0aGlzO2Zvcih2YXIgZT10aGlzLnZhbHVlLGk9dGhpcy5kZXN0aW5hdGlvbi52YWx1ZSxzPVtdLHI9bmV3IGEuUGF0aEFycmF5LG89MCxuPWUubGVuZ3RoO288bjtvKyspe3Nbb109W2Vbb11bMF1dO2Zvcih2YXIgbD0xLGg9ZVtvXS5sZW5ndGg7bDxoO2wrKylzW29dW2xdPWVbb11bbF0rKGlbb11bbF0tZVtvXVtsXSkqdDtcIkFcIj09PXNbb11bMF0mJihzW29dWzRdPSsoMCE9c1tvXVs0XSksc1tvXVs1XT0rKDAhPXNbb11bNV0pKX1yZXR1cm4gci52YWx1ZT1zLHJ9LHBhcnNlOmZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBhLlBhdGhBcnJheSlyZXR1cm4gdC52YWx1ZU9mKCk7dmFyIGUsaT17TToyLEw6MixIOjEsVjoxLEM6NixTOjQsUTo0LFQ6MixBOjcsWjowfTt0PVwic3RyaW5nXCI9PXR5cGVvZiB0P3QucmVwbGFjZShhLnJlZ2V4Lm51bWJlcnNXaXRoRG90cyxoKS5yZXBsYWNlKGEucmVnZXgucGF0aExldHRlcnMsXCIgJCYgXCIpLnJlcGxhY2UoYS5yZWdleC5oeXBoZW4sXCIkMSAtXCIpLnRyaW0oKS5zcGxpdChhLnJlZ2V4LmRlbGltaXRlcik6dC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW10uY29uY2F0LmNhbGwodCxlKX0pLFtdKTt2YXIgcj1bXSxvPW5ldyBhLlBvaW50LG49bmV3IGEuUG9pbnQsbD0wLGM9dC5sZW5ndGg7ZG97YS5yZWdleC5pc1BhdGhMZXR0ZXIudGVzdCh0W2xdKT8oZT10W2xdLCsrbCk6XCJNXCI9PWU/ZT1cIkxcIjpcIm1cIj09ZSYmKGU9XCJsXCIpLHIucHVzaChzW2VdLmNhbGwobnVsbCx0LnNsaWNlKGwsbCs9aVtlLnRvVXBwZXJDYXNlKCldKS5tYXAocGFyc2VGbG9hdCksbyxuKSl9d2hpbGUoYz5sKTtyZXR1cm4gcn0sYmJveDpmdW5jdGlvbigpe3JldHVybiBhLnBhcnNlci5kcmF3fHxhLnByZXBhcmUoKSxhLnBhcnNlci5wYXRoLnNldEF0dHJpYnV0ZShcImRcIix0aGlzLnRvU3RyaW5nKCkpLGEucGFyc2VyLnBhdGguZ2V0QkJveCgpfX0pLGEuTnVtYmVyPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXt0aGlzLnZhbHVlPTAsdGhpcy51bml0PWV8fFwiXCIsXCJudW1iZXJcIj09dHlwZW9mIHQ/dGhpcy52YWx1ZT1pc05hTih0KT8wOmlzRmluaXRlKHQpP3Q6dDwwPy0zNGUzNzozNGUzNzpcInN0cmluZ1wiPT10eXBlb2YgdD8oZT10Lm1hdGNoKGEucmVnZXgubnVtYmVyQW5kVW5pdCkpJiYodGhpcy52YWx1ZT1wYXJzZUZsb2F0KGVbMV0pLFwiJVwiPT1lWzVdP3RoaXMudmFsdWUvPTEwMDpcInNcIj09ZVs1XSYmKHRoaXMudmFsdWUqPTFlMyksdGhpcy51bml0PWVbNV0pOnQgaW5zdGFuY2VvZiBhLk51bWJlciYmKHRoaXMudmFsdWU9dC52YWx1ZU9mKCksdGhpcy51bml0PXQudW5pdCl9LGV4dGVuZDp7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4oXCIlXCI9PXRoaXMudW5pdD9+figxZTgqdGhpcy52YWx1ZSkvMWU2Olwic1wiPT10aGlzLnVuaXQ/dGhpcy52YWx1ZS8xZTM6dGhpcy52YWx1ZSkrdGhpcy51bml0fSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHBsdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IGEuTnVtYmVyKHQpLG5ldyBhLk51bWJlcih0aGlzK3QsdGhpcy51bml0fHx0LnVuaXQpfSxtaW51czpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgYS5OdW1iZXIodCksbmV3IGEuTnVtYmVyKHRoaXMtdCx0aGlzLnVuaXR8fHQudW5pdCl9LHRpbWVzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBhLk51bWJlcih0KSxuZXcgYS5OdW1iZXIodGhpcyp0LHRoaXMudW5pdHx8dC51bml0KX0sZGl2aWRlOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBhLk51bWJlcih0KSxuZXcgYS5OdW1iZXIodGhpcy90LHRoaXMudW5pdHx8dC51bml0KX0sdG86ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGEuTnVtYmVyKHRoaXMpO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0JiYoZS51bml0PXQpLGV9LG1vcnBoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBhLk51bWJlcih0KSx0LnJlbGF0aXZlJiYodGhpcy5kZXN0aW5hdGlvbi52YWx1ZSs9dGhpcy52YWx1ZSksdGhpc30sYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/bmV3IGEuTnVtYmVyKHRoaXMuZGVzdGluYXRpb24pLm1pbnVzKHRoaXMpLnRpbWVzKHQpLnBsdXModGhpcyk6dGhpc319fSksYS5FbGVtZW50PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5fc3Ryb2tlPWEuZGVmYXVsdHMuYXR0cnMuc3Ryb2tlLHRoaXMuX2V2ZW50PW51bGwsdGhpcy5kb209e30sKHRoaXMubm9kZT10KSYmKHRoaXMudHlwZT10Lm5vZGVOYW1lLHRoaXMubm9kZS5pbnN0YW5jZT10aGlzLHRoaXMuX3N0cm9rZT10LmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKXx8dGhpcy5fc3Ryb2tlKX0sZXh0ZW5kOnt4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ4XCIsdCl9LHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInlcIix0KX0sY3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy54KCkrdGhpcy53aWR0aCgpLzI6dGhpcy54KHQtdGhpcy53aWR0aCgpLzIpfSxjeTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnkoKSt0aGlzLmhlaWdodCgpLzI6dGhpcy55KHQtdGhpcy5oZWlnaHQoKS8yKX0sbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLngodCkueShlKX0sY2VudGVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY3godCkuY3koZSl9LHdpZHRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ3aWR0aFwiLHQpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImhlaWdodFwiLHQpfSxzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dSh0aGlzLHQsZSk7cmV0dXJuIHRoaXMud2lkdGgobmV3IGEuTnVtYmVyKGkud2lkdGgpKS5oZWlnaHQobmV3IGEuTnVtYmVyKGkuaGVpZ2h0KSl9LGNsb25lOmZ1bmN0aW9uKHQpe3RoaXMud3JpdGVEYXRhVG9Eb20oKTt2YXIgZT14KHRoaXMubm9kZS5jbG9uZU5vZGUoITApKTtyZXR1cm4gdD90LmFkZChlKTp0aGlzLmFmdGVyKGUpLGV9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnJlbW92ZUVsZW1lbnQodGhpcyksdGhpc30scmVwbGFjZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hZnRlcih0KS5yZW1vdmUoKSx0fSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gdC5wdXQodGhpcyl9LHB1dEluOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZCh0aGlzKX0saWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImlkXCIsdCl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZShcImRpc3BsYXlcIixcIlwiKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0eWxlKFwiZGlzcGxheVwiLFwibm9uZVwiKX0sdmlzaWJsZTpmdW5jdGlvbigpe3JldHVyblwibm9uZVwiIT10aGlzLnN0eWxlKFwiZGlzcGxheVwiKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKFwiaWRcIil9LGNsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmF0dHIoXCJjbGFzc1wiKTtyZXR1cm4gbnVsbD09dD9bXTp0LnRyaW0oKS5zcGxpdChhLnJlZ2V4LmRlbGltaXRlcil9LGhhc0NsYXNzOmZ1bmN0aW9uKHQpe3JldHVybi0xIT10aGlzLmNsYXNzZXMoKS5pbmRleE9mKHQpfSxhZGRDbGFzczpmdW5jdGlvbih0KXtpZighdGhpcy5oYXNDbGFzcyh0KSl7dmFyIGU9dGhpcy5jbGFzc2VzKCk7ZS5wdXNoKHQpLHRoaXMuYXR0cihcImNsYXNzXCIsZS5qb2luKFwiIFwiKSl9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0NsYXNzKHQpJiZ0aGlzLmF0dHIoXCJjbGFzc1wiLHRoaXMuY2xhc3NlcygpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPXR9KSkuam9pbihcIiBcIikpLHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0NsYXNzKHQpP3RoaXMucmVtb3ZlQ2xhc3ModCk6dGhpcy5hZGRDbGFzcyh0KX0scmVmZXJlbmNlOmZ1bmN0aW9uKHQpe3JldHVybiBhLmdldCh0aGlzLmF0dHIodCkpfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcztpZighaS5ub2RlLnBhcmVudE5vZGUpcmV0dXJuIG51bGw7aWYoaT1hLmFkb3B0KGkubm9kZS5wYXJlbnROb2RlKSwhZSlyZXR1cm4gaTtmb3IoO2kmJmkubm9kZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudDspe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlP2kubWF0Y2hlcyhlKTppIGluc3RhbmNlb2YgZSlyZXR1cm4gaTtpZighaS5ub2RlLnBhcmVudE5vZGV8fFwiI2RvY3VtZW50XCI9PWkubm9kZS5wYXJlbnROb2RlLm5vZGVOYW1lKXJldHVybiBudWxsO2k9YS5hZG9wdChpLm5vZGUucGFyZW50Tm9kZSl9fSxkb2M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGEuRG9jP3RoaXM6dGhpcy5wYXJlbnQoYS5Eb2MpfSxwYXJlbnRzOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLGk9dGhpcztkb3tpZighKGk9aS5wYXJlbnQodCkpfHwhaS5ub2RlKWJyZWFrO2UucHVzaChpKX13aGlsZShpLnBhcmVudCk7cmV0dXJuIGV9LG1hdGNoZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQubWF0Y2hlc3x8dC5tYXRjaGVzU2VsZWN0b3J8fHQubXNNYXRjaGVzU2VsZWN0b3J8fHQubW96TWF0Y2hlc1NlbGVjdG9yfHx0LndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8dC5vTWF0Y2hlc1NlbGVjdG9yKS5jYWxsKHQsZSl9KHRoaXMubm9kZSx0KX0sbmF0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZX0sc3ZnOmZ1bmN0aW9uKHQpe3ZhciBpPWUuY3JlYXRlRWxlbWVudChcInN2Z1wiKTtpZighKHQmJnRoaXMgaW5zdGFuY2VvZiBhLlBhcmVudCkpcmV0dXJuIGkuYXBwZW5kQ2hpbGQodD1lLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIikpLHRoaXMud3JpdGVEYXRhVG9Eb20oKSx0LmFwcGVuZENoaWxkKHRoaXMubm9kZS5jbG9uZU5vZGUoITApKSxpLmlubmVySFRNTC5yZXBsYWNlKC9ePHN2Zz4vLFwiXCIpLnJlcGxhY2UoLzxcXC9zdmc+JC8sXCJcIik7aS5pbm5lckhUTUw9XCI8c3ZnPlwiK3QucmVwbGFjZSgvXFxuLyxcIlwiKS5yZXBsYWNlKC88KFtcXHc6LV0rKShbXjxdKz8pXFwvPi9nLFwiPCQxJDI+PC8kMT5cIikrXCI8L3N2Zz5cIjtmb3IodmFyIHM9MCxyPWkuZmlyc3RDaGlsZC5jaGlsZE5vZGVzLmxlbmd0aDtzPHI7cysrKXRoaXMubm9kZS5hcHBlbmRDaGlsZChpLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCk7cmV0dXJuIHRoaXN9LHdyaXRlRGF0YVRvRG9tOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuZWFjaHx8dGhpcy5saW5lcykmJih0aGlzLmVhY2g/dGhpczp0aGlzLmxpbmVzKCkpLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy53cml0ZURhdGFUb0RvbSgpfSkpLHRoaXMubm9kZS5yZW1vdmVBdHRyaWJ1dGUoXCJzdmdqczpkYXRhXCIpLE9iamVjdC5rZXlzKHRoaXMuZG9tKS5sZW5ndGgmJnRoaXMubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdmdqczpkYXRhXCIsSlNPTi5zdHJpbmdpZnkodGhpcy5kb20pKSx0aGlzfSxzZXREYXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRvbT10LHRoaXN9LGlzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgZX0odGhpcyx0KX19fSksYS5lYXNpbmc9e1wiLVwiOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxcIjw+XCI6ZnVuY3Rpb24odCl7cmV0dXJuLU1hdGguY29zKHQqTWF0aC5QSSkvMisuNX0sXCI+XCI6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc2luKHQqTWF0aC5QSS8yKX0sXCI8XCI6ZnVuY3Rpb24odCl7cmV0dXJuIDEtTWF0aC5jb3ModCpNYXRoLlBJLzIpfX0sYS5tb3JwaD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxpKXtyZXR1cm4gbmV3IGEuTW9ycGhPYmooZSxpKS5hdCh0KX19LGEuU2l0dWF0aW9uPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5pbml0PSExLHRoaXMucmV2ZXJzZWQ9ITEsdGhpcy5yZXZlcnNpbmc9ITEsdGhpcy5kdXJhdGlvbj1uZXcgYS5OdW1iZXIodC5kdXJhdGlvbikudmFsdWVPZigpLHRoaXMuZGVsYXk9bmV3IGEuTnVtYmVyKHQuZGVsYXkpLnZhbHVlT2YoKSx0aGlzLnN0YXJ0PStuZXcgRGF0ZSt0aGlzLmRlbGF5LHRoaXMuZmluaXNoPXRoaXMuc3RhcnQrdGhpcy5kdXJhdGlvbix0aGlzLmVhc2U9dC5lYXNlLHRoaXMubG9vcD0wLHRoaXMubG9vcHM9ITEsdGhpcy5hbmltYXRpb25zPXt9LHRoaXMuYXR0cnM9e30sdGhpcy5zdHlsZXM9e30sdGhpcy50cmFuc2Zvcm1zPVtdLHRoaXMub25jZT17fX19KSxhLkZYPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5fdGFyZ2V0PXQsdGhpcy5zaXR1YXRpb25zPVtdLHRoaXMuYWN0aXZlPSExLHRoaXMuc2l0dWF0aW9uPW51bGwsdGhpcy5wYXVzZWQ9ITEsdGhpcy5sYXN0UG9zPTAsdGhpcy5wb3M9MCx0aGlzLmFic1Bvcz0wLHRoaXMuX3NwZWVkPTF9LGV4dGVuZDp7YW5pbWF0ZTpmdW5jdGlvbih0LGUscyl7XCJvYmplY3RcIj09PWkodCkmJihlPXQuZWFzZSxzPXQuZGVsYXksdD10LmR1cmF0aW9uKTt2YXIgcj1uZXcgYS5TaXR1YXRpb24oe2R1cmF0aW9uOnR8fDFlMyxkZWxheTpzfHwwLGVhc2U6YS5lYXNpbmdbZXx8XCItXCJdfHxlfSk7cmV0dXJuIHRoaXMucXVldWUociksdGhpc30sdGFyZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0IGluc3RhbmNlb2YgYS5FbGVtZW50Pyh0aGlzLl90YXJnZXQ9dCx0aGlzKTp0aGlzLl90YXJnZXR9LHRpbWVUb0Fic1BvczpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnNpdHVhdGlvbi5zdGFydCkvKHRoaXMuc2l0dWF0aW9uLmR1cmF0aW9uL3RoaXMuX3NwZWVkKX0sYWJzUG9zVG9UaW1lOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCp0K3RoaXMuc2l0dWF0aW9uLnN0YXJ0fSxzdGFydEFuaW1GcmFtZTpmdW5jdGlvbigpe3RoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMuYW5pbWF0aW9uRnJhbWU9dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt0aGlzLnN0ZXAoKX0uYmluZCh0aGlzKSl9LHN0b3BBbmltRnJhbWU6ZnVuY3Rpb24oKXt0LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0aW9uRnJhbWUpfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmFjdGl2ZSYmdGhpcy5zaXR1YXRpb24mJih0aGlzLmFjdGl2ZT0hMCx0aGlzLnN0YXJ0Q3VycmVudCgpKSx0aGlzfSxzdGFydEN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb24uc3RhcnQ9K25ldyBEYXRlK3RoaXMuc2l0dWF0aW9uLmRlbGF5L3RoaXMuX3NwZWVkLHRoaXMuc2l0dWF0aW9uLmZpbmlzaD10aGlzLnNpdHVhdGlvbi5zdGFydCt0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCx0aGlzLmluaXRBbmltYXRpb25zKCkuc3RlcCgpfSxxdWV1ZTpmdW5jdGlvbih0KXtyZXR1cm4oXCJmdW5jdGlvblwiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGEuU2l0dWF0aW9uKSYmdGhpcy5zaXR1YXRpb25zLnB1c2godCksdGhpcy5zaXR1YXRpb258fCh0aGlzLnNpdHVhdGlvbj10aGlzLnNpdHVhdGlvbnMuc2hpZnQoKSksdGhpc30sZGVxdWV1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3AoKSx0aGlzLnNpdHVhdGlvbj10aGlzLnNpdHVhdGlvbnMuc2hpZnQoKSx0aGlzLnNpdHVhdGlvbiYmKHRoaXMuc2l0dWF0aW9uIGluc3RhbmNlb2YgYS5TaXR1YXRpb24/dGhpcy5zdGFydCgpOnRoaXMuc2l0dWF0aW9uLmNhbGwodGhpcykpLHRoaXN9LGluaXRBbmltYXRpb25zOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnNpdHVhdGlvbjtpZihlLmluaXQpcmV0dXJuIHRoaXM7Zm9yKHZhciBpIGluIGUuYW5pbWF0aW9ucyl7dD10aGlzLnRhcmdldCgpW2ldKCksQXJyYXkuaXNBcnJheSh0KXx8KHQ9W3RdKSxBcnJheS5pc0FycmF5KGUuYW5pbWF0aW9uc1tpXSl8fChlLmFuaW1hdGlvbnNbaV09W2UuYW5pbWF0aW9uc1tpXV0pO2Zvcih2YXIgcz10Lmxlbmd0aDtzLS07KWUuYW5pbWF0aW9uc1tpXVtzXWluc3RhbmNlb2YgYS5OdW1iZXImJih0W3NdPW5ldyBhLk51bWJlcih0W3NdKSksZS5hbmltYXRpb25zW2ldW3NdPXRbc10ubW9ycGgoZS5hbmltYXRpb25zW2ldW3NdKX1mb3IodmFyIGkgaW4gZS5hdHRycyllLmF0dHJzW2ldPW5ldyBhLk1vcnBoT2JqKHRoaXMudGFyZ2V0KCkuYXR0cihpKSxlLmF0dHJzW2ldKTtmb3IodmFyIGkgaW4gZS5zdHlsZXMpZS5zdHlsZXNbaV09bmV3IGEuTW9ycGhPYmoodGhpcy50YXJnZXQoKS5zdHlsZShpKSxlLnN0eWxlc1tpXSk7cmV0dXJuIGUuaW5pdGlhbFRyYW5zZm9ybWF0aW9uPXRoaXMudGFyZ2V0KCkubWF0cml4aWZ5KCksZS5pbml0PSEwLHRoaXN9LGNsZWFyUXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb25zPVtdLHRoaXN9LGNsZWFyQ3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXN9LHN0b3A6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmFjdGl2ZTtyZXR1cm4gdGhpcy5hY3RpdmU9ITEsZSYmdGhpcy5jbGVhclF1ZXVlKCksdCYmdGhpcy5zaXR1YXRpb24mJighaSYmdGhpcy5zdGFydEN1cnJlbnQoKSx0aGlzLmF0RW5kKCkpLHRoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMuY2xlYXJDdXJyZW50KCl9LGFmdGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGFzdCgpO3JldHVybiB0aGlzLnRhcmdldCgpLm9uKFwiZmluaXNoZWQuZnhcIiwoZnVuY3Rpb24gaShhKXthLmRldGFpbC5zaXR1YXRpb249PWUmJih0LmNhbGwodGhpcyxlKSx0aGlzLm9mZihcImZpbmlzaGVkLmZ4XCIsaSkpfSkpLHRoaXMuX2NhbGxTdGFydCgpfSxkdXJpbmc6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0KCksaT1mdW5jdGlvbihpKXtpLmRldGFpbC5zaXR1YXRpb249PWUmJnQuY2FsbCh0aGlzLGkuZGV0YWlsLnBvcyxhLm1vcnBoKGkuZGV0YWlsLnBvcyksaS5kZXRhaWwuZWFzZWQsZSl9O3JldHVybiB0aGlzLnRhcmdldCgpLm9mZihcImR1cmluZy5meFwiLGkpLm9uKFwiZHVyaW5nLmZ4XCIsaSksdGhpcy5hZnRlcigoZnVuY3Rpb24oKXt0aGlzLm9mZihcImR1cmluZy5meFwiLGkpfSkpLHRoaXMuX2NhbGxTdGFydCgpfSxhZnRlckFsbDpmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbiBlKGkpe3QuY2FsbCh0aGlzKSx0aGlzLm9mZihcImFsbGZpbmlzaGVkLmZ4XCIsZSl9O3JldHVybiB0aGlzLnRhcmdldCgpLm9mZihcImFsbGZpbmlzaGVkLmZ4XCIsZSkub24oXCJhbGxmaW5pc2hlZC5meFwiLGUpLHRoaXMuX2NhbGxTdGFydCgpfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9ucy5sZW5ndGg/dGhpcy5zaXR1YXRpb25zW3RoaXMuc2l0dWF0aW9ucy5sZW5ndGgtMV06dGhpcy5zaXR1YXRpb259LGFkZDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMubGFzdCgpW2l8fFwiYW5pbWF0aW9uc1wiXVt0XT1lLHRoaXMuX2NhbGxTdGFydCgpfSxzdGVwOmZ1bmN0aW9uKHQpe3ZhciBlLGksYTt0fHwodGhpcy5hYnNQb3M9dGhpcy50aW1lVG9BYnNQb3MoK25ldyBEYXRlKSksITEhPT10aGlzLnNpdHVhdGlvbi5sb29wcz8oZT1NYXRoLm1heCh0aGlzLmFic1BvcywwKSxpPU1hdGguZmxvb3IoZSksITA9PT10aGlzLnNpdHVhdGlvbi5sb29wc3x8aTx0aGlzLnNpdHVhdGlvbi5sb29wcz8odGhpcy5wb3M9ZS1pLGE9dGhpcy5zaXR1YXRpb24ubG9vcCx0aGlzLnNpdHVhdGlvbi5sb29wPWkpOih0aGlzLmFic1Bvcz10aGlzLnNpdHVhdGlvbi5sb29wcyx0aGlzLnBvcz0xLGE9dGhpcy5zaXR1YXRpb24ubG9vcC0xLHRoaXMuc2l0dWF0aW9uLmxvb3A9dGhpcy5zaXR1YXRpb24ubG9vcHMpLHRoaXMuc2l0dWF0aW9uLnJldmVyc2luZyYmKHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkPXRoaXMuc2l0dWF0aW9uLnJldmVyc2VkIT1Cb29sZWFuKCh0aGlzLnNpdHVhdGlvbi5sb29wLWEpJTIpKSk6KHRoaXMuYWJzUG9zPU1hdGgubWluKHRoaXMuYWJzUG9zLDEpLHRoaXMucG9zPXRoaXMuYWJzUG9zKSx0aGlzLnBvczwwJiYodGhpcy5wb3M9MCksdGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQmJih0aGlzLnBvcz0xLXRoaXMucG9zKTt2YXIgcz10aGlzLnNpdHVhdGlvbi5lYXNlKHRoaXMucG9zKTtmb3IodmFyIHIgaW4gdGhpcy5zaXR1YXRpb24ub25jZSlyPnRoaXMubGFzdFBvcyYmcjw9cyYmKHRoaXMuc2l0dWF0aW9uLm9uY2Vbcl0uY2FsbCh0aGlzLnRhcmdldCgpLHRoaXMucG9zLHMpLGRlbGV0ZSB0aGlzLnNpdHVhdGlvbi5vbmNlW3JdKTtyZXR1cm4gdGhpcy5hY3RpdmUmJnRoaXMudGFyZ2V0KCkuZmlyZShcImR1cmluZ1wiLHtwb3M6dGhpcy5wb3MsZWFzZWQ6cyxmeDp0aGlzLHNpdHVhdGlvbjp0aGlzLnNpdHVhdGlvbn0pLHRoaXMuc2l0dWF0aW9uPyh0aGlzLmVhY2hBdCgpLDE9PXRoaXMucG9zJiYhdGhpcy5zaXR1YXRpb24ucmV2ZXJzZWR8fHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiYwPT10aGlzLnBvcz8odGhpcy5zdG9wQW5pbUZyYW1lKCksdGhpcy50YXJnZXQoKS5maXJlKFwiZmluaXNoZWRcIix7Zng6dGhpcyxzaXR1YXRpb246dGhpcy5zaXR1YXRpb259KSx0aGlzLnNpdHVhdGlvbnMubGVuZ3RofHwodGhpcy50YXJnZXQoKS5maXJlKFwiYWxsZmluaXNoZWRcIiksdGhpcy5zaXR1YXRpb25zLmxlbmd0aHx8KHRoaXMudGFyZ2V0KCkub2ZmKFwiLmZ4XCIpLHRoaXMuYWN0aXZlPSExKSksdGhpcy5hY3RpdmU/dGhpcy5kZXF1ZXVlKCk6dGhpcy5jbGVhckN1cnJlbnQoKSk6IXRoaXMucGF1c2VkJiZ0aGlzLmFjdGl2ZSYmdGhpcy5zdGFydEFuaW1GcmFtZSgpLHRoaXMubGFzdFBvcz1zLHRoaXMpOnRoaXN9LGVhY2hBdDpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcyxpPXRoaXMudGFyZ2V0KCkscz10aGlzLnNpdHVhdGlvbjtmb3IodmFyIHIgaW4gcy5hbmltYXRpb25zKXQ9W10uY29uY2F0KHMuYW5pbWF0aW9uc1tyXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmdC5hdD90LmF0KHMuZWFzZShlLnBvcyksZS5wb3MpOnR9KSksaVtyXS5hcHBseShpLHQpO2Zvcih2YXIgciBpbiBzLmF0dHJzKXQ9W3JdLmNvbmNhdChzLmF0dHJzW3JdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiZ0LmF0P3QuYXQocy5lYXNlKGUucG9zKSxlLnBvcyk6dH0pKSxpLmF0dHIuYXBwbHkoaSx0KTtmb3IodmFyIHIgaW4gcy5zdHlsZXMpdD1bcl0uY29uY2F0KHMuc3R5bGVzW3JdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiZ0LmF0P3QuYXQocy5lYXNlKGUucG9zKSxlLnBvcyk6dH0pKSxpLnN0eWxlLmFwcGx5KGksdCk7aWYocy50cmFuc2Zvcm1zLmxlbmd0aCl7dD1zLmluaXRpYWxUcmFuc2Zvcm1hdGlvbixyPTA7Zm9yKHZhciBvPXMudHJhbnNmb3Jtcy5sZW5ndGg7cjxvO3IrKyl7dmFyIG49cy50cmFuc2Zvcm1zW3JdO24gaW5zdGFuY2VvZiBhLk1hdHJpeD90PW4ucmVsYXRpdmU/dC5tdWx0aXBseSgobmV3IGEuTWF0cml4KS5tb3JwaChuKS5hdChzLmVhc2UodGhpcy5wb3MpKSk6dC5tb3JwaChuKS5hdChzLmVhc2UodGhpcy5wb3MpKToobi5yZWxhdGl2ZXx8bi51bmRvKHQuZXh0cmFjdCgpKSx0PXQubXVsdGlwbHkobi5hdChzLmVhc2UodGhpcy5wb3MpKSkpfWkubWF0cml4KHQpfXJldHVybiB0aGlzfSxvbmNlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLmxhc3QoKTtyZXR1cm4gaXx8KHQ9YS5lYXNlKHQpKSxhLm9uY2VbdF09ZSx0aGlzfSxfY2FsbFN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLnN0YXJ0KCl9LmJpbmQodGhpcyksMCksdGhpc319LHBhcmVudDphLkVsZW1lbnQsY29uc3RydWN0OnthbmltYXRlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4odGhpcy5meHx8KHRoaXMuZng9bmV3IGEuRlgodGhpcykpKS5hbmltYXRlKHQsZSxpKX0sZGVsYXk6ZnVuY3Rpb24odCl7cmV0dXJuKHRoaXMuZnh8fCh0aGlzLmZ4PW5ldyBhLkZYKHRoaXMpKSkuZGVsYXkodCl9LHN0b3A6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5meCYmdGhpcy5meC5zdG9wKHQsZSksdGhpc30sZmluaXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZngmJnRoaXMuZnguZmluaXNoKCksdGhpc319fSksYS5Nb3JwaE9iaj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEuQ29sb3IuaXNDb2xvcihlKT9uZXcgYS5Db2xvcih0KS5tb3JwaChlKTphLnJlZ2V4LmRlbGltaXRlci50ZXN0KHQpP2EucmVnZXgucGF0aExldHRlcnMudGVzdCh0KT9uZXcgYS5QYXRoQXJyYXkodCkubW9ycGgoZSk6bmV3IGEuQXJyYXkodCkubW9ycGgoZSk6YS5yZWdleC5udW1iZXJBbmRVbml0LnRlc3QoZSk/bmV3IGEuTnVtYmVyKHQpLm1vcnBoKGUpOih0aGlzLnZhbHVlPXQsdm9pZCh0aGlzLmRlc3RpbmF0aW9uPWUpKX0sZXh0ZW5kOnthdDpmdW5jdGlvbih0LGUpe3JldHVybiBlPDE/dGhpcy52YWx1ZTp0aGlzLmRlc3RpbmF0aW9ufSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9fX0pLGEuZXh0ZW5kKGEuRlgse2F0dHI6ZnVuY3Rpb24odCxlLGEpe2lmKFwib2JqZWN0XCI9PT1pKHQpKWZvcih2YXIgcyBpbiB0KXRoaXMuYXR0cihzLHRbc10pO2Vsc2UgdGhpcy5hZGQodCxlLFwiYXR0cnNcIik7cmV0dXJuIHRoaXN9LHBsb3Q6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIDQ9PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wbG90KFt0LGUsaSxhXSk6dGhpcy5hZGQoXCJwbG90XCIsbmV3KHRoaXMudGFyZ2V0KCkubW9ycGhBcnJheSkodCkpfX0pLGEuQm94PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlLHMscil7aWYoIShcIm9iamVjdFwiIT09aSh0KXx8dCBpbnN0YW5jZW9mIGEuRWxlbWVudCkpcmV0dXJuIGEuQm94LmNhbGwodGhpcyxudWxsIT10LmxlZnQ/dC5sZWZ0OnQueCxudWxsIT10LnRvcD90LnRvcDp0LnksdC53aWR0aCx0LmhlaWdodCk7dmFyIG87ND09YXJndW1lbnRzLmxlbmd0aCYmKHRoaXMueD10LHRoaXMueT1lLHRoaXMud2lkdGg9cyx0aGlzLmhlaWdodD1yKSxudWxsPT0obz10aGlzKS54JiYoby54PTAsby55PTAsby53aWR0aD0wLG8uaGVpZ2h0PTApLG8udz1vLndpZHRoLG8uaD1vLmhlaWdodCxvLngyPW8ueCtvLndpZHRoLG8ueTI9by55K28uaGVpZ2h0LG8uY3g9by54K28ud2lkdGgvMixvLmN5PW8ueStvLmhlaWdodC8yfX0pLGEuQkJveD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe2lmKGEuQm94LmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSx0IGluc3RhbmNlb2YgYS5FbGVtZW50KXt2YXIgaTt0cnl7aWYoIWUuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKXtmb3IodmFyIHM9dC5ub2RlO3MucGFyZW50Tm9kZTspcz1zLnBhcmVudE5vZGU7aWYocyE9ZSl0aHJvdyBuZXcgRXJyb3IoXCJFbGVtZW50IG5vdCBpbiB0aGUgZG9tXCIpfWk9dC5ub2RlLmdldEJCb3goKX1jYXRjaChlKXtpZih0IGluc3RhbmNlb2YgYS5TaGFwZSl7YS5wYXJzZXIuZHJhd3x8YS5wcmVwYXJlKCk7dmFyIHI9dC5jbG9uZShhLnBhcnNlci5kcmF3Lmluc3RhbmNlKS5zaG93KCk7ciYmci5ub2RlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLm5vZGUuZ2V0QkJveCYmKGk9ci5ub2RlLmdldEJCb3goKSksciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5yZW1vdmUmJnIucmVtb3ZlKCl9ZWxzZSBpPXt4OnQubm9kZS5jbGllbnRMZWZ0LHk6dC5ub2RlLmNsaWVudFRvcCx3aWR0aDp0Lm5vZGUuY2xpZW50V2lkdGgsaGVpZ2h0OnQubm9kZS5jbGllbnRIZWlnaHR9fWEuQm94LmNhbGwodGhpcyxpKX19LGluaGVyaXQ6YS5Cb3gscGFyZW50OmEuRWxlbWVudCxjb25zdHJ1Y3Q6e2Jib3g6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuQkJveCh0aGlzKX19fSksYS5CQm94LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLkJCb3gsYS5NYXRyaXg9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt2YXIgZT1mKFsxLDAsMCwxLDAsMF0pO3Q9bnVsbD09PXQ/ZTp0IGluc3RhbmNlb2YgYS5FbGVtZW50P3QubWF0cml4aWZ5KCk6XCJzdHJpbmdcIj09dHlwZW9mIHQ/Zih0LnNwbGl0KGEucmVnZXguZGVsaW1pdGVyKS5tYXAocGFyc2VGbG9hdCkpOjY9PWFyZ3VtZW50cy5sZW5ndGg/ZihbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpOkFycmF5LmlzQXJyYXkodCk/Zih0KTp0JiZcIm9iamVjdFwiPT09aSh0KT90OmU7Zm9yKHZhciBzPXYubGVuZ3RoLTE7cz49MDstLXMpdGhpc1t2W3NdXT1udWxsIT10W3Zbc11dP3RbdltzXV06ZVt2W3NdXX0sZXh0ZW5kOntleHRyYWN0OmZ1bmN0aW9uKCl7dmFyIHQ9cCh0aGlzLDAsMSk7cCh0aGlzLDEsMCk7dmFyIGU9MTgwL01hdGguUEkqTWF0aC5hdGFuMih0LnksdC54KS05MDtyZXR1cm57eDp0aGlzLmUseTp0aGlzLmYsdHJhbnNmb3JtZWRYOih0aGlzLmUqTWF0aC5jb3MoZSpNYXRoLlBJLzE4MCkrdGhpcy5mKk1hdGguc2luKGUqTWF0aC5QSS8xODApKS9NYXRoLnNxcnQodGhpcy5hKnRoaXMuYSt0aGlzLmIqdGhpcy5iKSx0cmFuc2Zvcm1lZFk6KHRoaXMuZipNYXRoLmNvcyhlKk1hdGguUEkvMTgwKSt0aGlzLmUqTWF0aC5zaW4oLWUqTWF0aC5QSS8xODApKS9NYXRoLnNxcnQodGhpcy5jKnRoaXMuYyt0aGlzLmQqdGhpcy5kKSxyb3RhdGlvbjplLGE6dGhpcy5hLGI6dGhpcy5iLGM6dGhpcy5jLGQ6dGhpcy5kLGU6dGhpcy5lLGY6dGhpcy5mLG1hdHJpeDpuZXcgYS5NYXRyaXgodGhpcyl9fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcyl9LG1vcnBoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBhLk1hdHJpeCh0KSx0aGlzfSxtdWx0aXBseTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubmF0aXZlKCkubXVsdGlwbHkoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBhLk1hdHJpeHx8KHQ9bmV3IGEuTWF0cml4KHQpKSx0fSh0KS5uYXRpdmUoKSkpfSxpbnZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5hdGl2ZSgpLmludmVyc2UoKSl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcy5uYXRpdmUoKS50cmFuc2xhdGUodHx8MCxlfHwwKSl9LG5hdGl2ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1hLnBhcnNlci5uYXRpdmUuY3JlYXRlU1ZHTWF0cml4KCksZT12Lmxlbmd0aC0xO2U+PTA7ZS0tKXRbdltlXV09dGhpc1t2W2VdXTtyZXR1cm4gdH0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm5cIm1hdHJpeChcIitiKHRoaXMuYSkrXCIsXCIrYih0aGlzLmIpK1wiLFwiK2IodGhpcy5jKStcIixcIitiKHRoaXMuZCkrXCIsXCIrYih0aGlzLmUpK1wiLFwiK2IodGhpcy5mKStcIilcIn19LHBhcmVudDphLkVsZW1lbnQsY29uc3RydWN0OntjdG06ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubm9kZS5nZXRDVE0oKSl9LHNjcmVlbkNUTTpmdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBhLk5lc3RlZCl7dmFyIHQ9dGhpcy5yZWN0KDEsMSksZT10Lm5vZGUuZ2V0U2NyZWVuQ1RNKCk7cmV0dXJuIHQucmVtb3ZlKCksbmV3IGEuTWF0cml4KGUpfXJldHVybiBuZXcgYS5NYXRyaXgodGhpcy5ub2RlLmdldFNjcmVlbkNUTSgpKX19fSksYS5Qb2ludD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dmFyIGE7YT1BcnJheS5pc0FycmF5KHQpP3t4OnRbMF0seTp0WzFdfTpcIm9iamVjdFwiPT09aSh0KT97eDp0LngseTp0Lnl9Om51bGwhPXQ/e3g6dCx5Om51bGwhPWU/ZTp0fTp7eDowLHk6MH0sdGhpcy54PWEueCx0aGlzLnk9YS55fSxleHRlbmQ6e2Nsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLlBvaW50KHRoaXMpfSxtb3JwaDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBhLlBvaW50KHQsZSksdGhpc319fSksYS5leHRlbmQoYS5FbGVtZW50LHtwb2ludDpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgYS5Qb2ludCh0LGUpLnRyYW5zZm9ybSh0aGlzLnNjcmVlbkNUTSgpLmludmVyc2UoKSl9fSksYS5leHRlbmQoYS5FbGVtZW50LHthdHRyOmZ1bmN0aW9uKHQsZSxzKXtpZihudWxsPT10KXtmb3IodD17fSxzPShlPXRoaXMubm9kZS5hdHRyaWJ1dGVzKS5sZW5ndGgtMTtzPj0wO3MtLSl0W2Vbc10ubm9kZU5hbWVdPWEucmVnZXguaXNOdW1iZXIudGVzdChlW3NdLm5vZGVWYWx1ZSk/cGFyc2VGbG9hdChlW3NdLm5vZGVWYWx1ZSk6ZVtzXS5ub2RlVmFsdWU7cmV0dXJuIHR9aWYoXCJvYmplY3RcIj09PWkodCkpZm9yKHZhciByIGluIHQpdGhpcy5hdHRyKHIsdFtyXSk7ZWxzZSBpZihudWxsPT09ZSl0aGlzLm5vZGUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7aWYobnVsbD09ZSlyZXR1cm4gbnVsbD09KGU9dGhpcy5ub2RlLmdldEF0dHJpYnV0ZSh0KSk/YS5kZWZhdWx0cy5hdHRyc1t0XTphLnJlZ2V4LmlzTnVtYmVyLnRlc3QoZSk/cGFyc2VGbG9hdChlKTplO1wic3Ryb2tlLXdpZHRoXCI9PXQ/dGhpcy5hdHRyKFwic3Ryb2tlXCIscGFyc2VGbG9hdChlKT4wP3RoaXMuX3N0cm9rZTpudWxsKTpcInN0cm9rZVwiPT10JiYodGhpcy5fc3Ryb2tlPWUpLFwiZmlsbFwiIT10JiZcInN0cm9rZVwiIT10fHwoYS5yZWdleC5pc0ltYWdlLnRlc3QoZSkmJihlPXRoaXMuZG9jKCkuZGVmcygpLmltYWdlKGUsMCwwKSksZSBpbnN0YW5jZW9mIGEuSW1hZ2UmJihlPXRoaXMuZG9jKCkuZGVmcygpLnBhdHRlcm4oMCwwLChmdW5jdGlvbigpe3RoaXMuYWRkKGUpfSkpKSksXCJudW1iZXJcIj09dHlwZW9mIGU/ZT1uZXcgYS5OdW1iZXIoZSk6YS5Db2xvci5pc0NvbG9yKGUpP2U9bmV3IGEuQ29sb3IoZSk6QXJyYXkuaXNBcnJheShlKSYmKGU9bmV3IGEuQXJyYXkoZSkpLFwibGVhZGluZ1wiPT10P3RoaXMubGVhZGluZyYmdGhpcy5sZWFkaW5nKGUpOlwic3RyaW5nXCI9PXR5cGVvZiBzP3RoaXMubm9kZS5zZXRBdHRyaWJ1dGVOUyhzLHQsZS50b1N0cmluZygpKTp0aGlzLm5vZGUuc2V0QXR0cmlidXRlKHQsZS50b1N0cmluZygpKSwhdGhpcy5yZWJ1aWxkfHxcImZvbnQtc2l6ZVwiIT10JiZcInhcIiE9dHx8dGhpcy5yZWJ1aWxkKHQsZSl9cmV0dXJuIHRoaXN9fSksYS5leHRlbmQoYS5FbGVtZW50LHt0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXt2YXIgcztyZXR1cm5cIm9iamVjdFwiIT09aSh0KT8ocz1uZXcgYS5NYXRyaXgodGhpcykuZXh0cmFjdCgpLFwic3RyaW5nXCI9PXR5cGVvZiB0P3NbdF06cyk6KHM9bmV3IGEuTWF0cml4KHRoaXMpLGU9ISFlfHwhIXQucmVsYXRpdmUsbnVsbCE9dC5hJiYocz1lP3MubXVsdGlwbHkobmV3IGEuTWF0cml4KHQpKTpuZXcgYS5NYXRyaXgodCkpLHRoaXMuYXR0cihcInRyYW5zZm9ybVwiLHMpKX19KSxhLmV4dGVuZChhLkVsZW1lbnQse3VudHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cihcInRyYW5zZm9ybVwiLG51bGwpfSxtYXRyaXhpZnk6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5hdHRyKFwidHJhbnNmb3JtXCIpfHxcIlwiKS5zcGxpdChhLnJlZ2V4LnRyYW5zZm9ybXMpLnNsaWNlKDAsLTEpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9dC50cmltKCkuc3BsaXQoXCIoXCIpO3JldHVybltlWzBdLGVbMV0uc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KSldfSkpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm5cIm1hdHJpeFwiPT1lWzBdP3QubXVsdGlwbHkoZihlWzFdKSk6dFtlWzBdXS5hcHBseSh0LGVbMV0pfSksbmV3IGEuTWF0cml4KX0sdG9QYXJlbnQ6ZnVuY3Rpb24odCl7aWYodGhpcz09dClyZXR1cm4gdGhpczt2YXIgZT10aGlzLnNjcmVlbkNUTSgpLGk9dC5zY3JlZW5DVE0oKS5pbnZlcnNlKCk7cmV0dXJuIHRoaXMuYWRkVG8odCkudW50cmFuc2Zvcm0oKS50cmFuc2Zvcm0oaS5tdWx0aXBseShlKSksdGhpc30sdG9Eb2M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1BhcmVudCh0aGlzLmRvYygpKX19KSxhLlRyYW5zZm9ybWF0aW9uPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXtpZihhcmd1bWVudHMubGVuZ3RoPjEmJlwiYm9vbGVhblwiIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgYT0wLHM9dGhpcy5hcmd1bWVudHMubGVuZ3RoO2E8czsrK2EpdGhpc1t0aGlzLmFyZ3VtZW50c1thXV09dFthXTtlbHNlIGlmKHQmJlwib2JqZWN0XCI9PT1pKHQpKWZvcihhPTAscz10aGlzLmFyZ3VtZW50cy5sZW5ndGg7YTxzOysrYSl0aGlzW3RoaXMuYXJndW1lbnRzW2FdXT10W3RoaXMuYXJndW1lbnRzW2FdXTt0aGlzLmludmVyc2VkPSExLCEwPT09ZSYmKHRoaXMuaW52ZXJzZWQ9ITApfX0pLGEuVHJhbnNsYXRlPWEuaW52ZW50KHtwYXJlbnQ6YS5NYXRyaXgsaW5oZXJpdDphLlRyYW5zZm9ybWF0aW9uLGNyZWF0ZTpmdW5jdGlvbih0LGUpe3RoaXMuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxleHRlbmQ6e2FyZ3VtZW50czpbXCJ0cmFuc2Zvcm1lZFhcIixcInRyYW5zZm9ybWVkWVwiXSxtZXRob2Q6XCJ0cmFuc2xhdGVcIn19KSxhLmV4dGVuZChhLkVsZW1lbnQse3N0eWxlOmZ1bmN0aW9uKHQsZSl7aWYoMD09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5ub2RlLnN0eWxlLmNzc1RleHR8fFwiXCI7aWYoYXJndW1lbnRzLmxlbmd0aDwyKWlmKFwib2JqZWN0XCI9PT1pKHQpKWZvcih2YXIgcyBpbiB0KXRoaXMuc3R5bGUocyx0W3NdKTtlbHNle2lmKCFhLnJlZ2V4LmlzQ3NzLnRlc3QodCkpcmV0dXJuIHRoaXMubm9kZS5zdHlsZVtjKHQpXTtmb3IodD10LnNwbGl0KC9cXHMqO1xccyovKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KC9cXHMqOlxccyovKX0pKTtlPXQucG9wKCk7KXRoaXMuc3R5bGUoZVswXSxlWzFdKX1lbHNlIHRoaXMubm9kZS5zdHlsZVtjKHQpXT1udWxsPT09ZXx8YS5yZWdleC5pc0JsYW5rLnRlc3QoZSk/XCJcIjplO3JldHVybiB0aGlzfX0pLGEuUGFyZW50PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6YS5FbGVtZW50LGV4dGVuZDp7Y2hpbGRyZW46ZnVuY3Rpb24oKXtyZXR1cm4gYS51dGlscy5tYXAoYS51dGlscy5maWx0ZXJTVkdFbGVtZW50cyh0aGlzLm5vZGUuY2hpbGROb2RlcyksKGZ1bmN0aW9uKHQpe3JldHVybiBhLmFkb3B0KHQpfSkpfSxhZGQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZT90aGlzLm5vZGUuYXBwZW5kQ2hpbGQodC5ub2RlKTp0Lm5vZGUhPXRoaXMubm9kZS5jaGlsZE5vZGVzW2VdJiZ0aGlzLm5vZGUuaW5zZXJ0QmVmb3JlKHQubm9kZSx0aGlzLm5vZGUuY2hpbGROb2Rlc1tlXSksdGhpc30scHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKHQsZSksdH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluZGV4KHQpPj0wfSxpbmRleDpmdW5jdGlvbih0KXtyZXR1cm5bXS5zbGljZS5jYWxsKHRoaXMubm9kZS5jaGlsZE5vZGVzKS5pbmRleE9mKHQubm9kZSl9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gYS5hZG9wdCh0aGlzLm5vZGUuY2hpbGROb2Rlc1t0XSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KHRoaXMubm9kZS5jaGlsZE5vZGVzLmxlbmd0aC0xKX0sZWFjaDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10aGlzLmNoaWxkcmVuKCkscz0wLHI9aS5sZW5ndGg7czxyO3MrKylpW3NdaW5zdGFuY2VvZiBhLkVsZW1lbnQmJnQuYXBwbHkoaVtzXSxbcyxpXSksZSYmaVtzXWluc3RhbmNlb2YgYS5Db250YWluZXImJmlbc10uZWFjaCh0LGUpO3JldHVybiB0aGlzfSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUucmVtb3ZlQ2hpbGQodC5ub2RlKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe2Zvcig7dGhpcy5ub2RlLmhhc0NoaWxkTm9kZXMoKTspdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHRoaXMubm9kZS5sYXN0Q2hpbGQpO3JldHVybiBkZWxldGUgdGhpcy5fZGVmcyx0aGlzfSxkZWZzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jKCkuZGVmcygpfX19KSxhLmV4dGVuZChhLlBhcmVudCx7dW5ncm91cDpmdW5jdGlvbih0LGUpe3JldHVybiAwPT09ZXx8dGhpcyBpbnN0YW5jZW9mIGEuRGVmc3x8dGhpcy5ub2RlPT1hLnBhcnNlci5kcmF3fHwodD10fHwodGhpcyBpbnN0YW5jZW9mIGEuRG9jP3RoaXM6dGhpcy5wYXJlbnQoYS5QYXJlbnQpKSxlPWV8fDEvMCx0aGlzLmVhY2goKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhLkRlZnM/dGhpczp0aGlzIGluc3RhbmNlb2YgYS5QYXJlbnQ/dGhpcy51bmdyb3VwKHQsZS0xKTp0aGlzLnRvUGFyZW50KHQpfSkpLHRoaXMubm9kZS5maXJzdENoaWxkfHx0aGlzLnJlbW92ZSgpKSx0aGlzfSxmbGF0dGVuOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudW5ncm91cCh0LGUpfX0pLGEuQ29udGFpbmVyPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6YS5QYXJlbnR9KSxhLlZpZXdCb3g9YS5pbnZlbnQoe3BhcmVudDphLkNvbnRhaW5lcixjb25zdHJ1Y3Q6e319KSxbXCJjbGlja1wiLFwiZGJsY2xpY2tcIixcIm1vdXNlZG93blwiLFwibW91c2V1cFwiLFwibW91c2VvdmVyXCIsXCJtb3VzZW91dFwiLFwibW91c2Vtb3ZlXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcInRvdWNobGVhdmVcIixcInRvdWNoZW5kXCIsXCJ0b3VjaGNhbmNlbFwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthLkVsZW1lbnQucHJvdG90eXBlW3RdPWZ1bmN0aW9uKGUpe3JldHVybiBhLm9uKHRoaXMubm9kZSx0LGUpLHRoaXN9fSkpLGEubGlzdGVuZXJzPVtdLGEuaGFuZGxlck1hcD1bXSxhLmxpc3RlbmVySWQ9MCxhLm9uPWZ1bmN0aW9uKHQsZSxpLHMscil7dmFyIG89aS5iaW5kKHN8fHQuaW5zdGFuY2V8fHQpLG49KGEuaGFuZGxlck1hcC5pbmRleE9mKHQpKzF8fGEuaGFuZGxlck1hcC5wdXNoKHQpKS0xLGw9ZS5zcGxpdChcIi5cIilbMF0saD1lLnNwbGl0KFwiLlwiKVsxXXx8XCIqXCI7YS5saXN0ZW5lcnNbbl09YS5saXN0ZW5lcnNbbl18fHt9LGEubGlzdGVuZXJzW25dW2xdPWEubGlzdGVuZXJzW25dW2xdfHx7fSxhLmxpc3RlbmVyc1tuXVtsXVtoXT1hLmxpc3RlbmVyc1tuXVtsXVtoXXx8e30saS5fc3ZnanNMaXN0ZW5lcklkfHwoaS5fc3ZnanNMaXN0ZW5lcklkPSsrYS5saXN0ZW5lcklkKSxhLmxpc3RlbmVyc1tuXVtsXVtoXVtpLl9zdmdqc0xpc3RlbmVySWRdPW8sdC5hZGRFdmVudExpc3RlbmVyKGwsbyxyfHx7cGFzc2l2ZTohMH0pfSxhLm9mZj1mdW5jdGlvbih0LGUsaSl7dmFyIHM9YS5oYW5kbGVyTWFwLmluZGV4T2YodCkscj1lJiZlLnNwbGl0KFwiLlwiKVswXSxvPWUmJmUuc3BsaXQoXCIuXCIpWzFdLG49XCJcIjtpZigtMSE9cylpZihpKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpJiYoaT1pLl9zdmdqc0xpc3RlbmVySWQpLCFpKXJldHVybjthLmxpc3RlbmVyc1tzXVtyXSYmYS5saXN0ZW5lcnNbc11bcl1bb3x8XCIqXCJdJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKHIsYS5saXN0ZW5lcnNbc11bcl1bb3x8XCIqXCJdW2ldLCExKSxkZWxldGUgYS5saXN0ZW5lcnNbc11bcl1bb3x8XCIqXCJdW2ldKX1lbHNlIGlmKG8mJnIpe2lmKGEubGlzdGVuZXJzW3NdW3JdJiZhLmxpc3RlbmVyc1tzXVtyXVtvXSl7Zm9yKHZhciBsIGluIGEubGlzdGVuZXJzW3NdW3JdW29dKWEub2ZmKHQsW3Isb10uam9pbihcIi5cIiksbCk7ZGVsZXRlIGEubGlzdGVuZXJzW3NdW3JdW29dfX1lbHNlIGlmKG8pZm9yKHZhciBoIGluIGEubGlzdGVuZXJzW3NdKWZvcih2YXIgbiBpbiBhLmxpc3RlbmVyc1tzXVtoXSlvPT09biYmYS5vZmYodCxbaCxvXS5qb2luKFwiLlwiKSk7ZWxzZSBpZihyKXtpZihhLmxpc3RlbmVyc1tzXVtyXSl7Zm9yKHZhciBuIGluIGEubGlzdGVuZXJzW3NdW3JdKWEub2ZmKHQsW3Isbl0uam9pbihcIi5cIikpO2RlbGV0ZSBhLmxpc3RlbmVyc1tzXVtyXX19ZWxzZXtmb3IodmFyIGggaW4gYS5saXN0ZW5lcnNbc10pYS5vZmYodCxoKTtkZWxldGUgYS5saXN0ZW5lcnNbc10sZGVsZXRlIGEuaGFuZGxlck1hcFtzXX19LGEuZXh0ZW5kKGEuRWxlbWVudCx7b246ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuIGEub24odGhpcy5ub2RlLHQsZSxpLHMpLHRoaXN9LG9mZjpmdW5jdGlvbih0LGUpe3JldHVybiBhLm9mZih0aGlzLm5vZGUsdCxlKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKGUsaSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0LkV2ZW50P3RoaXMubm9kZS5kaXNwYXRjaEV2ZW50KGUpOnRoaXMubm9kZS5kaXNwYXRjaEV2ZW50KGU9bmV3IGEuQ3VzdG9tRXZlbnQoZSx7ZGV0YWlsOmksY2FuY2VsYWJsZTohMH0pKSx0aGlzLl9ldmVudD1lLHRoaXN9LGV2ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50fX0pLGEuRGVmcz1hLmludmVudCh7Y3JlYXRlOlwiZGVmc1wiLGluaGVyaXQ6YS5Db250YWluZXJ9KSxhLkc9YS5pbnZlbnQoe2NyZWF0ZTpcImdcIixpbmhlcml0OmEuQ29udGFpbmVyLGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnRyYW5zZm9ybShcInhcIik6dGhpcy50cmFuc2Zvcm0oe3g6dC10aGlzLngoKX0sITApfX0sY29uc3RydWN0Ontncm91cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgYS5HKX19fSksYS5Eb2M9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0JiYoXCJzdmdcIj09KHQ9XCJzdHJpbmdcIj09dHlwZW9mIHQ/ZS5nZXRFbGVtZW50QnlJZCh0KTp0KS5ub2RlTmFtZT90aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0KToodGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUoXCJzdmdcIikpLHQuYXBwZW5kQ2hpbGQodGhpcy5ub2RlKSx0aGlzLnNpemUoXCIxMDAlXCIsXCIxMDAlXCIpKSx0aGlzLm5hbWVzcGFjZSgpLmRlZnMoKSl9LGluaGVyaXQ6YS5Db250YWluZXIsZXh0ZW5kOntuYW1lc3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKHt4bWxuczphLm5zLHZlcnNpb246XCIxLjFcIn0pLmF0dHIoXCJ4bWxuczp4bGlua1wiLGEueGxpbmssYS54bWxucykuYXR0cihcInhtbG5zOnN2Z2pzXCIsYS5zdmdqcyxhLnhtbG5zKX0sZGVmczpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLl9kZWZzfHwoKHQ9dGhpcy5ub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZGVmc1wiKVswXSk/dGhpcy5fZGVmcz1hLmFkb3B0KHQpOnRoaXMuX2RlZnM9bmV3IGEuRGVmcyx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodGhpcy5fZGVmcy5ub2RlKSksdGhpcy5fZGVmc30scGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5wYXJlbnROb2RlJiZcIiNkb2N1bWVudFwiIT10aGlzLm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZT90aGlzLm5vZGUucGFyZW50Tm9kZTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUpLHRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLm5vZGUuaGFzQ2hpbGROb2RlcygpOyl0aGlzLm5vZGUucmVtb3ZlQ2hpbGQodGhpcy5ub2RlLmxhc3RDaGlsZCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9kZWZzLGEucGFyc2VyLmRyYXcmJiFhLnBhcnNlci5kcmF3LnBhcmVudE5vZGUmJnRoaXMubm9kZS5hcHBlbmRDaGlsZChhLnBhcnNlci5kcmF3KSx0aGlzfSxjbG9uZTpmdW5jdGlvbih0KXt0aGlzLndyaXRlRGF0YVRvRG9tKCk7dmFyIGU9dGhpcy5ub2RlLGk9eChlLmNsb25lTm9kZSghMCkpO3JldHVybiB0Pyh0Lm5vZGV8fHQpLmFwcGVuZENoaWxkKGkubm9kZSk6ZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLm5vZGUsZS5uZXh0U2libGluZyksaX19fSksYS5leHRlbmQoYS5FbGVtZW50LHt9KSxhLkdyYWRpZW50PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUodCtcIkdyYWRpZW50XCIpKSx0aGlzLnR5cGU9dH0saW5oZXJpdDphLkNvbnRhaW5lcixleHRlbmQ6e2F0OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuU3RvcCkudXBkYXRlKHQsZSxpKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsZWFyKCksXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmdC5jYWxsKHRoaXMsdGhpcyksdGhpc30sZmlsbDpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm5cInRyYW5zZm9ybVwiPT10JiYodD1cImdyYWRpZW50VHJhbnNmb3JtXCIpLGEuQ29udGFpbmVyLnByb3RvdHlwZS5hdHRyLmNhbGwodGhpcyx0LGUsaSl9fSxjb25zdHJ1Y3Q6e2dyYWRpZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGVmcygpLmdyYWRpZW50KHQsZSl9fX0pLGEuZXh0ZW5kKGEuR3JhZGllbnQsYS5GWCx7ZnJvbTpmdW5jdGlvbih0LGUpe3JldHVyblwicmFkaWFsXCI9PSh0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU/dGhpcy5hdHRyKHtmeDpuZXcgYS5OdW1iZXIodCksZnk6bmV3IGEuTnVtYmVyKGUpfSk6dGhpcy5hdHRyKHt4MTpuZXcgYS5OdW1iZXIodCkseTE6bmV3IGEuTnVtYmVyKGUpfSl9LHRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJyYWRpYWxcIj09KHRoaXMuX3RhcmdldHx8dGhpcykudHlwZT90aGlzLmF0dHIoe2N4Om5ldyBhLk51bWJlcih0KSxjeTpuZXcgYS5OdW1iZXIoZSl9KTp0aGlzLmF0dHIoe3gyOm5ldyBhLk51bWJlcih0KSx5MjpuZXcgYS5OdW1iZXIoZSl9KX19KSxhLmV4dGVuZChhLkRlZnMse2dyYWRpZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLkdyYWRpZW50KHQpKS51cGRhdGUoZSl9fSksYS5TdG9wPWEuaW52ZW50KHtjcmVhdGU6XCJzdG9wXCIsaW5oZXJpdDphLkVsZW1lbnQsZXh0ZW5kOnt1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuKFwibnVtYmVyXCI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgYS5OdW1iZXIpJiYodD17b2Zmc2V0OmFyZ3VtZW50c1swXSxjb2xvcjphcmd1bWVudHNbMV0sb3BhY2l0eTphcmd1bWVudHNbMl19KSxudWxsIT10Lm9wYWNpdHkmJnRoaXMuYXR0cihcInN0b3Atb3BhY2l0eVwiLHQub3BhY2l0eSksbnVsbCE9dC5jb2xvciYmdGhpcy5hdHRyKFwic3RvcC1jb2xvclwiLHQuY29sb3IpLG51bGwhPXQub2Zmc2V0JiZ0aGlzLmF0dHIoXCJvZmZzZXRcIixuZXcgYS5OdW1iZXIodC5vZmZzZXQpKSx0aGlzfX19KSxhLlBhdHRlcm49YS5pbnZlbnQoe2NyZWF0ZTpcInBhdHRlcm5cIixpbmhlcml0OmEuQ29udGFpbmVyLGV4dGVuZDp7ZmlsbDpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbGVhcigpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbCh0aGlzLHRoaXMpLHRoaXN9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm5cInRyYW5zZm9ybVwiPT10JiYodD1cInBhdHRlcm5UcmFuc2Zvcm1cIiksYS5Db250YWluZXIucHJvdG90eXBlLmF0dHIuY2FsbCh0aGlzLHQsZSxpKX19LGNvbnN0cnVjdDp7cGF0dGVybjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuZGVmcygpLnBhdHRlcm4odCxlLGkpfX19KSxhLmV4dGVuZChhLkRlZnMse3BhdHRlcm46ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgYS5QYXR0ZXJuKS51cGRhdGUoaSkuYXR0cih7eDowLHk6MCx3aWR0aDp0LGhlaWdodDplLHBhdHRlcm5Vbml0czpcInVzZXJTcGFjZU9uVXNlXCJ9KX19KSxhLlNoYXBlPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6YS5FbGVtZW50fSksYS5TeW1ib2w9YS5pbnZlbnQoe2NyZWF0ZTpcInN5bWJvbFwiLGluaGVyaXQ6YS5Db250YWluZXIsY29uc3RydWN0OntzeW1ib2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuU3ltYm9sKX19fSksYS5Vc2U9YS5pbnZlbnQoe2NyZWF0ZTpcInVzZVwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e2VsZW1lbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKFwiaHJlZlwiLChlfHxcIlwiKStcIiNcIit0LGEueGxpbmspfX0sY29uc3RydWN0Ont1c2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuVXNlKS5lbGVtZW50KHQsZSl9fX0pLGEuUmVjdD1hLmludmVudCh7Y3JlYXRlOlwicmVjdFwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e3JlY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUmVjdCkuc2l6ZSh0LGUpfX19KSxhLkNpcmNsZT1hLmludmVudCh7Y3JlYXRlOlwiY2lyY2xlXCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7Y2lyY2xlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5DaXJjbGUpLnJ4KG5ldyBhLk51bWJlcih0KS5kaXZpZGUoMikpLm1vdmUoMCwwKX19fSksYS5leHRlbmQoYS5DaXJjbGUsYS5GWCx7cng6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInJcIix0KX0scnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucngodCl9fSksYS5FbGxpcHNlPWEuaW52ZW50KHtjcmVhdGU6XCJlbGxpcHNlXCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7ZWxsaXBzZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgYS5FbGxpcHNlKS5zaXplKHQsZSkubW92ZSgwLDApfX19KSxhLmV4dGVuZChhLkVsbGlwc2UsYS5SZWN0LGEuRlgse3J4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJyeFwiLHQpfSxyeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwicnlcIix0KX19KSxhLmV4dGVuZChhLkNpcmNsZSxhLkVsbGlwc2Use3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5jeCgpLXRoaXMucngoKTp0aGlzLmN4KHQrdGhpcy5yeCgpKX0seTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmN5KCktdGhpcy5yeSgpOnRoaXMuY3kodCt0aGlzLnJ5KCkpfSxjeDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJjeFwiKTp0aGlzLmF0dHIoXCJjeFwiLHQpfSxjeTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJjeVwiKTp0aGlzLmF0dHIoXCJjeVwiLHQpfSx3aWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8yKnRoaXMucngoKTp0aGlzLnJ4KG5ldyBhLk51bWJlcih0KS5kaXZpZGUoMikpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/Mip0aGlzLnJ5KCk6dGhpcy5yeShuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLnJ4KG5ldyBhLk51bWJlcihpLndpZHRoKS5kaXZpZGUoMikpLnJ5KG5ldyBhLk51bWJlcihpLmhlaWdodCkuZGl2aWRlKDIpKX19KSxhLkxpbmU9YS5pbnZlbnQoe2NyZWF0ZTpcImxpbmVcIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOnthcnJheTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5Qb2ludEFycmF5KFtbdGhpcy5hdHRyKFwieDFcIiksdGhpcy5hdHRyKFwieTFcIildLFt0aGlzLmF0dHIoXCJ4MlwiKSx0aGlzLmF0dHIoXCJ5MlwiKV1dKX0scGxvdDpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gbnVsbD09dD90aGlzLmFycmF5KCk6KHQ9dm9pZCAwIT09ZT97eDE6dCx5MTplLHgyOmkseTI6c306bmV3IGEuUG9pbnRBcnJheSh0KS50b0xpbmUoKSx0aGlzLmF0dHIodCkpfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cih0aGlzLmFycmF5KCkubW92ZSh0LGUpLnRvTGluZSgpKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLmF0dHIodGhpcy5hcnJheSgpLnNpemUoaS53aWR0aCxpLmhlaWdodCkudG9MaW5lKCkpfX0sY29uc3RydWN0OntsaW5lOmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiBhLkxpbmUucHJvdG90eXBlLnBsb3QuYXBwbHkodGhpcy5wdXQobmV3IGEuTGluZSksbnVsbCE9dD9bdCxlLGksc106WzAsMCwwLDBdKX19fSksYS5Qb2x5bGluZT1hLmludmVudCh7Y3JlYXRlOlwicG9seWxpbmVcIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0Ontwb2x5bGluZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUG9seWxpbmUpLnBsb3QodHx8bmV3IGEuUG9pbnRBcnJheSl9fX0pLGEuUG9seWdvbj1hLmludmVudCh7Y3JlYXRlOlwicG9seWdvblwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e3BvbHlnb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlBvbHlnb24pLnBsb3QodHx8bmV3IGEuUG9pbnRBcnJheSl9fX0pLGEuZXh0ZW5kKGEuUG9seWxpbmUsYS5Qb2x5Z29uLHthcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnJheXx8KHRoaXMuX2FycmF5PW5ldyBhLlBvaW50QXJyYXkodGhpcy5hdHRyKFwicG9pbnRzXCIpKSl9LHBsb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOnRoaXMuY2xlYXIoKS5hdHRyKFwicG9pbnRzXCIsXCJzdHJpbmdcIj09dHlwZW9mIHQ/dDp0aGlzLl9hcnJheT1uZXcgYS5Qb2ludEFycmF5KHQpKX0sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gZGVsZXRlIHRoaXMuX2FycmF5LHRoaXN9LG1vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKFwicG9pbnRzXCIsdGhpcy5hcnJheSgpLm1vdmUodCxlKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5hdHRyKFwicG9pbnRzXCIsdGhpcy5hcnJheSgpLnNpemUoaS53aWR0aCxpLmhlaWdodCkpfX0pLGEuZXh0ZW5kKGEuTGluZSxhLlBvbHlsaW5lLGEuUG9seWdvbix7bW9ycGhBcnJheTphLlBvaW50QXJyYXkseDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmJib3goKS54OnRoaXMubW92ZSh0LHRoaXMuYmJveCgpLnkpfSx5OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYmJveCgpLnk6dGhpcy5tb3ZlKHRoaXMuYmJveCgpLngsdCl9LHdpZHRoOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYmJveCgpO3JldHVybiBudWxsPT10P2Uud2lkdGg6dGhpcy5zaXplKHQsZS5oZWlnaHQpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5iYm94KCk7cmV0dXJuIG51bGw9PXQ/ZS5oZWlnaHQ6dGhpcy5zaXplKGUud2lkdGgsdCl9fSksYS5QYXRoPWEuaW52ZW50KHtjcmVhdGU6XCJwYXRoXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7bW9ycGhBcnJheTphLlBhdGhBcnJheSxhcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnJheXx8KHRoaXMuX2FycmF5PW5ldyBhLlBhdGhBcnJheSh0aGlzLmF0dHIoXCJkXCIpKSl9LHBsb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOnRoaXMuY2xlYXIoKS5hdHRyKFwiZFwiLFwic3RyaW5nXCI9PXR5cGVvZiB0P3Q6dGhpcy5fYXJyYXk9bmV3IGEuUGF0aEFycmF5KHQpKX0sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gZGVsZXRlIHRoaXMuX2FycmF5LHRoaXN9fSxjb25zdHJ1Y3Q6e3BhdGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlBhdGgpLnBsb3QodHx8bmV3IGEuUGF0aEFycmF5KX19fSksYS5JbWFnZT1hLmludmVudCh7Y3JlYXRlOlwiaW1hZ2VcIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOntsb2FkOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiB0aGlzO3ZhciBpPXRoaXMscz1uZXcgdC5JbWFnZTtyZXR1cm4gYS5vbihzLFwibG9hZFwiLChmdW5jdGlvbigpe2Eub2ZmKHMpO3ZhciB0PWkucGFyZW50KGEuUGF0dGVybik7bnVsbCE9PXQmJigwPT1pLndpZHRoKCkmJjA9PWkuaGVpZ2h0KCkmJmkuc2l6ZShzLndpZHRoLHMuaGVpZ2h0KSx0JiYwPT10LndpZHRoKCkmJjA9PXQuaGVpZ2h0KCkmJnQuc2l6ZShpLndpZHRoKCksaS5oZWlnaHQoKSksXCJmdW5jdGlvblwiPT10eXBlb2YgaS5fbG9hZGVkJiZpLl9sb2FkZWQuY2FsbChpLHt3aWR0aDpzLndpZHRoLGhlaWdodDpzLmhlaWdodCxyYXRpbzpzLndpZHRoL3MuaGVpZ2h0LHVybDplfSkpfSkpLGEub24ocyxcImVycm9yXCIsKGZ1bmN0aW9uKHQpe2Eub2ZmKHMpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuX2Vycm9yJiZpLl9lcnJvci5jYWxsKGksdCl9KSksdGhpcy5hdHRyKFwiaHJlZlwiLHMuc3JjPXRoaXMuc3JjPWUsYS54bGluayl9LGxvYWRlZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbG9hZGVkPXQsdGhpc30sZXJyb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Vycm9yPXQsdGhpc319LGNvbnN0cnVjdDp7aW1hZ2U6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgYS5JbWFnZSkubG9hZCh0KS5zaXplKGV8fDAsaXx8ZXx8MCl9fX0pLGEuVGV4dD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUoXCJ0ZXh0XCIpKSx0aGlzLmRvbS5sZWFkaW5nPW5ldyBhLk51bWJlcigxLjMpLHRoaXMuX3JlYnVpbGQ9ITAsdGhpcy5fYnVpbGQ9ITEsdGhpcy5hdHRyKFwiZm9udC1mYW1pbHlcIixhLmRlZmF1bHRzLmF0dHJzW1wiZm9udC1mYW1pbHlcIl0pfSxpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOnt4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcInhcIik6dGhpcy5hdHRyKFwieFwiLHQpfSx0ZXh0OmZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpe3Q9XCJcIjtmb3IodmFyIGU9dGhpcy5ub2RlLmNoaWxkTm9kZXMsaT0wLHM9ZS5sZW5ndGg7aTxzOysraSkwIT1pJiYzIT1lW2ldLm5vZGVUeXBlJiYxPT1hLmFkb3B0KGVbaV0pLmRvbS5uZXdMaW5lZCYmKHQrPVwiXFxuXCIpLHQrPWVbaV0udGV4dENvbnRlbnQ7cmV0dXJuIHR9aWYodGhpcy5jbGVhcigpLmJ1aWxkKCEwKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KXQuY2FsbCh0aGlzLHRoaXMpO2Vsc2V7aT0wO2Zvcih2YXIgcj0odD10LnNwbGl0KFwiXFxuXCIpKS5sZW5ndGg7aTxyO2krKyl0aGlzLnRzcGFuKHRbaV0pLm5ld0xpbmUoKX1yZXR1cm4gdGhpcy5idWlsZCghMSkucmVidWlsZCgpfSxzaXplOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJmb250LXNpemVcIix0KS5yZWJ1aWxkKCl9LGxlYWRpbmc6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5kb20ubGVhZGluZzoodGhpcy5kb20ubGVhZGluZz1uZXcgYS5OdW1iZXIodCksdGhpcy5yZWJ1aWxkKCkpfSxsaW5lczpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGUsZT1hLnV0aWxzLm1hcChhLnV0aWxzLmZpbHRlclNWR0VsZW1lbnRzKHQuY2hpbGROb2RlcyksKGZ1bmN0aW9uKHQpe3JldHVybiBhLmFkb3B0KHQpfSkpO3JldHVybiBuZXcgYS5TZXQoZSl9LHJlYnVpbGQ6ZnVuY3Rpb24odCl7aWYoXCJib29sZWFuXCI9PXR5cGVvZiB0JiYodGhpcy5fcmVidWlsZD10KSx0aGlzLl9yZWJ1aWxkKXt2YXIgZT10aGlzLGk9MCxzPXRoaXMuZG9tLmxlYWRpbmcqbmV3IGEuTnVtYmVyKHRoaXMuYXR0cihcImZvbnQtc2l6ZVwiKSk7dGhpcy5saW5lcygpLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5kb20ubmV3TGluZWQmJihlLnRleHRQYXRoKCl8fHRoaXMuYXR0cihcInhcIixlLmF0dHIoXCJ4XCIpKSxcIlxcblwiPT10aGlzLnRleHQoKT9pKz1zOih0aGlzLmF0dHIoXCJkeVwiLHMraSksaT0wKSl9KSksdGhpcy5maXJlKFwicmVidWlsZFwiKX1yZXR1cm4gdGhpc30sYnVpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2J1aWxkPSEhdCx0aGlzfSxzZXREYXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRvbT10LHRoaXMuZG9tLmxlYWRpbmc9bmV3IGEuTnVtYmVyKHQubGVhZGluZ3x8MS4zKSx0aGlzfX0sY29uc3RydWN0Ont0ZXh0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5UZXh0KS50ZXh0KHQpfSxwbGFpbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuVGV4dCkucGxhaW4odCl9fX0pLGEuVHNwYW49YS5pbnZlbnQoe2NyZWF0ZTpcInRzcGFuXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7dGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLm5vZGUudGV4dENvbnRlbnQrKHRoaXMuZG9tLm5ld0xpbmVkP1wiXFxuXCI6XCJcIik6KFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dC5jYWxsKHRoaXMsdGhpcyk6dGhpcy5wbGFpbih0KSx0aGlzKX0sZHg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImR4XCIsdCl9LGR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJkeVwiLHQpfSxuZXdMaW5lOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnQoYS5UZXh0KTtyZXR1cm4gdGhpcy5kb20ubmV3TGluZWQ9ITAsdGhpcy5keSh0LmRvbS5sZWFkaW5nKnQuYXR0cihcImZvbnQtc2l6ZVwiKSkuYXR0cihcInhcIix0LngoKSl9fX0pLGEuZXh0ZW5kKGEuVGV4dCxhLlRzcGFuLHtwbGFpbjpmdW5jdGlvbih0KXtyZXR1cm4hMT09PXRoaXMuX2J1aWxkJiZ0aGlzLmNsZWFyKCksdGhpcy5ub2RlLmFwcGVuZENoaWxkKGUuY3JlYXRlVGV4dE5vZGUodCkpLHRoaXN9LHRzcGFuOmZ1bmN0aW9uKHQpe3ZhciBlPSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGUsaT1uZXcgYS5Uc3BhbjtyZXR1cm4hMT09PXRoaXMuX2J1aWxkJiZ0aGlzLmNsZWFyKCksZS5hcHBlbmRDaGlsZChpLm5vZGUpLGkudGV4dCh0KX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9KHRoaXMudGV4dFBhdGgmJnRoaXMudGV4dFBhdGgoKXx8dGhpcykubm9kZTt0Lmhhc0NoaWxkTm9kZXMoKTspdC5yZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCk7cmV0dXJuIHRoaXN9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCl9fSksYS5UZXh0UGF0aD1hLmludmVudCh7Y3JlYXRlOlwidGV4dFBhdGhcIixpbmhlcml0OmEuUGFyZW50LHBhcmVudDphLlRleHQsY29uc3RydWN0Onttb3JwaEFycmF5OmEuUGF0aEFycmF5LGFycmF5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50cmFjaygpO3JldHVybiB0P3QuYXJyYXkoKTpudWxsfSxwbG90OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudHJhY2soKSxpPW51bGw7cmV0dXJuIGUmJihpPWUucGxvdCh0KSksbnVsbD09dD9pOnRoaXN9LHRyYWNrOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50ZXh0UGF0aCgpO2lmKHQpcmV0dXJuIHQucmVmZXJlbmNlKFwiaHJlZlwiKX0sdGV4dFBhdGg6ZnVuY3Rpb24oKXtpZih0aGlzLm5vZGUuZmlyc3RDaGlsZCYmXCJ0ZXh0UGF0aFwiPT10aGlzLm5vZGUuZmlyc3RDaGlsZC5ub2RlTmFtZSlyZXR1cm4gYS5hZG9wdCh0aGlzLm5vZGUuZmlyc3RDaGlsZCl9fX0pLGEuTmVzdGVkPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLmNyZWF0ZShcInN2Z1wiKSksdGhpcy5zdHlsZShcIm92ZXJmbG93XCIsXCJ2aXNpYmxlXCIpfSxpbmhlcml0OmEuQ29udGFpbmVyLGNvbnN0cnVjdDp7bmVzdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLk5lc3RlZCl9fX0pO3ZhciBsPXtzdHJva2U6W1wiY29sb3JcIixcIndpZHRoXCIsXCJvcGFjaXR5XCIsXCJsaW5lY2FwXCIsXCJsaW5lam9pblwiLFwibWl0ZXJsaW1pdFwiLFwiZGFzaGFycmF5XCIsXCJkYXNob2Zmc2V0XCJdLGZpbGw6W1wiY29sb3JcIixcIm9wYWNpdHlcIixcInJ1bGVcIl0scHJlZml4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJjb2xvclwiPT1lP3Q6dCtcIi1cIitlfX07ZnVuY3Rpb24gaCh0LGUsaSxzKXtyZXR1cm4gaStzLnJlcGxhY2UoYS5yZWdleC5kb3RzLFwiIC5cIil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0oLikvZywoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpfSkpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKX1mdW5jdGlvbiBnKHQpe3ZhciBlPXQudG9TdHJpbmcoMTYpO3JldHVybiAxPT1lLmxlbmd0aD9cIjBcIitlOmV9ZnVuY3Rpb24gdSh0LGUsaSl7aWYobnVsbD09ZXx8bnVsbD09aSl7dmFyIGE9dC5iYm94KCk7bnVsbD09ZT9lPWEud2lkdGgvYS5oZWlnaHQqaTpudWxsPT1pJiYoaT1hLmhlaWdodC9hLndpZHRoKmUpfXJldHVybnt3aWR0aDplLGhlaWdodDppfX1mdW5jdGlvbiBwKHQsZSxpKXtyZXR1cm57eDplKnQuYStpKnQuYyswLHk6ZSp0LmIraSp0LmQrMH19ZnVuY3Rpb24gZih0KXtyZXR1cm57YTp0WzBdLGI6dFsxXSxjOnRbMl0sZDp0WzNdLGU6dFs0XSxmOnRbNV19fWZ1bmN0aW9uIHgoZSl7Zm9yKHZhciBpPWUuY2hpbGROb2Rlcy5sZW5ndGgtMTtpPj0wO2ktLSllLmNoaWxkTm9kZXNbaV1pbnN0YW5jZW9mIHQuU1ZHRWxlbWVudCYmeChlLmNoaWxkTm9kZXNbaV0pO3JldHVybiBhLmFkb3B0KGUpLmlkKGEuZWlkKGUubm9kZU5hbWUpKX1mdW5jdGlvbiBiKHQpe3JldHVybiBNYXRoLmFicyh0KT4xZS0zNz90OjB9W1wiZmlsbFwiLFwic3Ryb2tlXCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXt9O2VbdF09ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSlyZXR1cm4gdGhpcztpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8YS5Db2xvci5pc1JnYihlKXx8ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5maWxsKXRoaXMuYXR0cih0LGUpO2Vsc2UgZm9yKHZhciBpPWxbdF0ubGVuZ3RoLTE7aT49MDtpLS0pbnVsbCE9ZVtsW3RdW2ldXSYmdGhpcy5hdHRyKGwucHJlZml4KHQsbFt0XVtpXSksZVtsW3RdW2ldXSk7cmV0dXJuIHRoaXN9LGEuZXh0ZW5kKGEuRWxlbWVudCxhLkZYLGUpfSkpLGEuZXh0ZW5kKGEuRWxlbWVudCxhLkZYLHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0oe3g6dCx5OmV9KX0sbWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIixuZXcgYS5NYXRyaXgoNj09YXJndW1lbnRzLmxlbmd0aD9bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk6dCkpfSxvcGFjaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJvcGFjaXR5XCIsdCl9LGR4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngobmV3IGEuTnVtYmVyKHQpLnBsdXModGhpcyBpbnN0YW5jZW9mIGEuRlg/MDp0aGlzLngoKSksITApfSxkeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55KG5ldyBhLk51bWJlcih0KS5wbHVzKHRoaXMgaW5zdGFuY2VvZiBhLkZYPzA6dGhpcy55KCkpLCEwKX19KSxhLmV4dGVuZChhLlBhdGgse2xlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuZ2V0VG90YWxMZW5ndGgoKX0scG9pbnRBdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLmdldFBvaW50QXRMZW5ndGgodCl9fSksYS5TZXQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXtBcnJheS5pc0FycmF5KHQpP3RoaXMubWVtYmVycz10OnRoaXMuY2xlYXIoKX0sZXh0ZW5kOnthZGQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspdGhpcy5tZW1iZXJzLnB1c2godFtlXSk7cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmluZGV4KHQpO3JldHVybiBlPi0xJiZ0aGlzLm1lbWJlcnMuc3BsaWNlKGUsMSksdGhpc30sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxpPXRoaXMubWVtYmVycy5sZW5ndGg7ZTxpO2UrKyl0LmFwcGx5KHRoaXMubWVtYmVyc1tlXSxbZSx0aGlzLm1lbWJlcnNdKTtyZXR1cm4gdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzPVtdLHRoaXN9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnMubGVuZ3RofSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5kZXgodCk+PTB9LGluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1lbWJlcnMuaW5kZXhPZih0KX0sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1lbWJlcnNbdF19LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KHRoaXMubWVtYmVycy5sZW5ndGgtMSl9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzfX0sY29uc3RydWN0OntzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhLlNldCh0KX19fSksYS5GWC5TZXQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLnNldD10fX0pLGEuU2V0LmluaGVyaXQ9ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gYS5TaGFwZS5wcm90b3R5cGUpXCJmdW5jdGlvblwiPT10eXBlb2YgYS5TaGFwZS5wcm90b3R5cGVbZV0mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuU2V0LnByb3RvdHlwZVtlXSYmdC5wdXNoKGUpO2Zvcih2YXIgZSBpbiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuU2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLGk9dGhpcy5tZW1iZXJzLmxlbmd0aDtlPGk7ZSsrKXRoaXMubWVtYmVyc1tlXSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5tZW1iZXJzW2VdW3RdJiZ0aGlzLm1lbWJlcnNbZV1bdF0uYXBwbHkodGhpcy5tZW1iZXJzW2VdLGFyZ3VtZW50cyk7cmV0dXJuXCJhbmltYXRlXCI9PXQ/dGhpcy5meHx8KHRoaXMuZng9bmV3IGEuRlguU2V0KHRoaXMpKTp0aGlzfX0pKSx0PVtdLGEuRlgucHJvdG90eXBlKVwiZnVuY3Rpb25cIj09dHlwZW9mIGEuRlgucHJvdG90eXBlW2VdJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLkZYLlNldC5wcm90b3R5cGVbZV0mJnQucHVzaChlKTt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuRlguU2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLGk9dGhpcy5zZXQubWVtYmVycy5sZW5ndGg7ZTxpO2UrKyl0aGlzLnNldC5tZW1iZXJzW2VdLmZ4W3RdLmFwcGx5KHRoaXMuc2V0Lm1lbWJlcnNbZV0uZngsYXJndW1lbnRzKTtyZXR1cm4gdGhpc319KSl9LGEuZXh0ZW5kKGEuRWxlbWVudCx7fSksYS5leHRlbmQoYS5FbGVtZW50LHtyZW1lbWJlcjpmdW5jdGlvbih0LGUpe2lmKFwib2JqZWN0XCI9PT1pKGFyZ3VtZW50c1swXSkpZm9yKHZhciBhIGluIHQpdGhpcy5yZW1lbWJlcihhLHRbYV0pO2Vsc2V7aWYoMT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5tZW1vcnkoKVt0XTt0aGlzLm1lbW9yeSgpW3RdPWV9cmV0dXJuIHRoaXN9LGZvcmdldDpmdW5jdGlvbigpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpdGhpcy5fbWVtb3J5PXt9O2Vsc2UgZm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMTt0Pj0wO3QtLSlkZWxldGUgdGhpcy5tZW1vcnkoKVthcmd1bWVudHNbdF1dO3JldHVybiB0aGlzfSxtZW1vcnk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWVtb3J5fHwodGhpcy5fbWVtb3J5PXt9KX19KSxhLmdldD1mdW5jdGlvbih0KXt2YXIgaT1lLmdldEVsZW1lbnRCeUlkKGZ1bmN0aW9uKHQpe3ZhciBlPSh0fHxcIlwiKS50b1N0cmluZygpLm1hdGNoKGEucmVnZXgucmVmZXJlbmNlKTtpZihlKXJldHVybiBlWzFdfSh0KXx8dCk7cmV0dXJuIGEuYWRvcHQoaSl9LGEuc2VsZWN0PWZ1bmN0aW9uKHQsaSl7cmV0dXJuIG5ldyBhLlNldChhLnV0aWxzLm1hcCgoaXx8ZSkucXVlcnlTZWxlY3RvckFsbCh0KSwoZnVuY3Rpb24odCl7cmV0dXJuIGEuYWRvcHQodCl9KSkpfSxhLmV4dGVuZChhLlBhcmVudCx7c2VsZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBhLnNlbGVjdCh0LHRoaXMubm9kZSl9fSk7dmFyIHY9XCJhYmNkZWZcIi5zcGxpdChcIlwiKTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LkN1c3RvbUV2ZW50KXt2YXIgbT1mdW5jdGlvbih0LGkpe2k9aXx8e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMSxkZXRhaWw6dm9pZCAwfTt2YXIgYT1lLmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIik7cmV0dXJuIGEuaW5pdEN1c3RvbUV2ZW50KHQsaS5idWJibGVzLGkuY2FuY2VsYWJsZSxpLmRldGFpbCksYX07bS5wcm90b3R5cGU9dC5FdmVudC5wcm90b3R5cGUsYS5DdXN0b21FdmVudD1tfWVsc2UgYS5DdXN0b21FdmVudD10LkN1c3RvbUV2ZW50O3JldHVybiBhfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKChmdW5jdGlvbigpe3JldHVybiBIdChSdCxSdC5kb2N1bWVudCl9KSk6XCJvYmplY3RcIj09PShcInVuZGVmaW5lZFwiPT10eXBlb2YgZXhwb3J0cz9cInVuZGVmaW5lZFwiOmkoZXhwb3J0cykpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPVJ0LmRvY3VtZW50P0h0KFJ0LFJ0LmRvY3VtZW50KTpmdW5jdGlvbih0KXtyZXR1cm4gSHQodCx0LmRvY3VtZW50KX06UnQuU1ZHPUh0KFJ0LFJ0LmRvY3VtZW50KSxcbi8qISBzdmcuZmlsdGVyLmpzIC0gdjIuMC4yIC0gMjAxNi0wMi0yNFxuKiBodHRwczovL2dpdGh1Yi5jb20vd291dC9zdmcuZmlsdGVyLmpzXG4qIENvcHlyaWdodCAoYykgMjAxNiBXb3V0IEZpZXJlbnM7IExpY2Vuc2VkIE1JVCAqL1xuZnVuY3Rpb24oKXtTVkcuRmlsdGVyPVNWRy5pbnZlbnQoe2NyZWF0ZTpcImZpbHRlclwiLGluaGVyaXQ6U1ZHLlBhcmVudCxleHRlbmQ6e3NvdXJjZTpcIlNvdXJjZUdyYXBoaWNcIixzb3VyY2VBbHBoYTpcIlNvdXJjZUFscGhhXCIsYmFja2dyb3VuZDpcIkJhY2tncm91bmRJbWFnZVwiLGJhY2tncm91bmRBbHBoYTpcIkJhY2tncm91bmRBbHBoYVwiLGZpbGw6XCJGaWxsUGFpbnRcIixzdHJva2U6XCJTdHJva2VQYWludFwiLGF1dG9TZXRJbjohMCxwdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hZGQodCxlKSwhdC5hdHRyKFwiaW5cIikmJnRoaXMuYXV0b1NldEluJiZ0LmF0dHIoXCJpblwiLHRoaXMuc291cmNlKSx0LmF0dHIoXCJyZXN1bHRcIil8fHQuYXR0cihcInJlc3VsdFwiLHQpLHR9LGJsZW5kOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5CbGVuZEVmZmVjdCh0LGUsaSkpfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbG9yTWF0cml4RWZmZWN0KHQsZSkpfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db252b2x2ZU1hdHJpeEVmZmVjdCh0KSl9LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbXBvbmVudFRyYW5zZmVyRWZmZWN0KHQpKX0sY29tcG9zaXRlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db21wb3NpdGVFZmZlY3QodCxlLGkpKX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5GbG9vZEVmZmVjdCh0LGUpKX0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuT2Zmc2V0RWZmZWN0KHQsZSkpfSxpbWFnZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5JbWFnZUVmZmVjdCh0KSl9LG1lcmdlOmZ1bmN0aW9uKCl7dmFyIHQ9W3ZvaWQgMF07Zm9yKHZhciBlIGluIGFyZ3VtZW50cyl0LnB1c2goYXJndW1lbnRzW2VdKTtyZXR1cm4gdGhpcy5wdXQobmV3KFNWRy5NZXJnZUVmZmVjdC5iaW5kLmFwcGx5KFNWRy5NZXJnZUVmZmVjdCx0KSkpfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5HYXVzc2lhbkJsdXJFZmZlY3QodCxlKSl9LG1vcnBob2xvZ3k6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Nb3JwaG9sb2d5RWZmZWN0KHQsZSkpfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkRpZmZ1c2VMaWdodGluZ0VmZmVjdCh0LGUsaSkpfSxkaXNwbGFjZW1lbnRNYXA6ZnVuY3Rpb24odCxlLGksYSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5EaXNwbGFjZW1lbnRNYXBFZmZlY3QodCxlLGksYSxzKSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuU3BlY3VsYXJMaWdodGluZ0VmZmVjdCh0LGUsaSxhKSl9LHRpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5UaWxlRWZmZWN0KX0sdHVyYnVsZW5jZTpmdW5jdGlvbih0LGUsaSxhLHMpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlR1cmJ1bGVuY2VFZmZlY3QodCxlLGksYSxzKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuXCJ1cmwoI1wiK3RoaXMuYXR0cihcImlkXCIpK1wiKVwifX19KSxTVkcuZXh0ZW5kKFNWRy5EZWZzLHtmaWx0ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wdXQobmV3IFNWRy5GaWx0ZXIpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbChlLGUpLGV9fSksU1ZHLmV4dGVuZChTVkcuQ29udGFpbmVyLHtmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVmcygpLmZpbHRlcih0KX19KSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LFNWRy5HLFNWRy5OZXN0ZWQse2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXJlcj10IGluc3RhbmNlb2YgU1ZHLkVsZW1lbnQ/dDp0aGlzLmRvYygpLmZpbHRlcih0KSx0aGlzLmRvYygpJiZ0aGlzLmZpbHRlcmVyLmRvYygpIT09dGhpcy5kb2MoKSYmdGhpcy5kb2MoKS5kZWZzKCkuYWRkKHRoaXMuZmlsdGVyZXIpLHRoaXMuYXR0cihcImZpbHRlclwiLHRoaXMuZmlsdGVyZXIpLHRoaXMuZmlsdGVyZXJ9LHVuZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpbHRlcmVyJiYhMD09PXQmJnRoaXMuZmlsdGVyZXIucmVtb3ZlKCksZGVsZXRlIHRoaXMuZmlsdGVyZXIsdGhpcy5hdHRyKFwiZmlsdGVyXCIsbnVsbCl9fSksU1ZHLkVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLkVsZW1lbnQsZXh0ZW5kOntpbjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW5cIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW5cIik6dGhpcy5hdHRyKFwiaW5cIix0KX0scmVzdWx0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcInJlc3VsdFwiKTp0aGlzLmF0dHIoXCJyZXN1bHRcIix0KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHQoKX19fSksU1ZHLlBhcmVudEVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLlBhcmVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PVwiJyt0aGlzLmF0dHIoXCJpblwiKSsnXCJdJykuZ2V0KDApfHx0aGlzLmF0dHIoXCJpblwiKTp0aGlzLmF0dHIoXCJpblwiLHQpfSxyZXN1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwicmVzdWx0XCIpOnRoaXMuYXR0cihcInJlc3VsdFwiLHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlc3VsdCgpfX19KTt2YXIgdD17YmxlbmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5ibGVuZCh0aGlzLHQsZSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29sb3JNYXRyaXgodCxlKS5pbih0aGlzKX0sY29udm9sdmVNYXRyaXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29udm9sdmVNYXRyaXgodCkuaW4odGhpcyl9LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbXBvbmVudFRyYW5zZmVyKHQpLmluKHRoaXMpfSxjb21wb3NpdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb21wb3NpdGUodGhpcyx0LGUpfSxmbG9vZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmZsb29kKHQsZSl9LG9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm9mZnNldCh0LGUpLmluKHRoaXMpfSxpbWFnZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5pbWFnZSh0KX0sbWVyZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5tZXJnZS5hcHBseSh0aGlzLnBhcmVudCgpLFt0aGlzXS5jb25jYXQoYXJndW1lbnRzKSl9LGdhdXNzaWFuQmx1cjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmdhdXNzaWFuQmx1cih0LGUpLmluKHRoaXMpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkubW9ycGhvbG9neSh0LGUpLmluKHRoaXMpfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmRpZmZ1c2VMaWdodGluZyh0LGUsaSkuaW4odGhpcyl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbih0LGUsaSxhKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5kaXNwbGFjZW1lbnRNYXAodGhpcyx0LGUsaSxhKX0sc3BlY3VsYXJMaWdodGluZzpmdW5jdGlvbih0LGUsaSxhKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zcGVjdWxhckxpZ2h0aW5nKHQsZSxpLGEpLmluKHRoaXMpfSx0aWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkudGlsZSgpLmluKHRoaXMpfSx0dXJidWxlbmNlOmZ1bmN0aW9uKHQsZSxpLGEscyl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkudHVyYnVsZW5jZSh0LGUsaSxhLHMpLmluKHRoaXMpfX07U1ZHLmV4dGVuZChTVkcuRWZmZWN0LHQpLFNWRy5leHRlbmQoU1ZHLlBhcmVudEVmZmVjdCx0KSxTVkcuQ2hpbGRFZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5FbGVtZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaW5cIix0KX19fSk7dmFyIGU9e2JsZW5kOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe2luOnQsaW4yOmUsbW9kZTppfHxcIm5vcm1hbFwifSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHQsZSl7XCJtYXRyaXhcIj09dCYmKGU9cyhlKSksdGhpcy5hdHRyKHt0eXBlOnQsdmFsdWVzOnZvaWQgMD09PWU/bnVsbDplfSl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHQpe3Q9cyh0KSx0aGlzLmF0dHIoe29yZGVyOk1hdGguc3FydCh0LnNwbGl0KFwiIFwiKS5sZW5ndGgpLGtlcm5lbE1hdHJpeDp0fSl9LGNvbXBvc2l0ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHtpbjp0LGluMjplLG9wZXJhdG9yOml9KX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoXCJmbG9vZC1jb2xvclwiLHQpLG51bGwhPWUmJnRoaXMuYXR0cihcImZsb29kLW9wYWNpdHlcIixlKX0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHtkeDp0LGR5OmV9KX0saW1hZ2U6ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaHJlZlwiLHQsU1ZHLnhsaW5rKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHQsZSxpLGEscyl7dGhpcy5hdHRyKHtpbjp0LGluMjplLHNjYWxlOmkseENoYW5uZWxTZWxlY3RvcjphLHlDaGFubmVsU2VsZWN0b3I6c30pfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtudWxsIT10fHxudWxsIT1lP3RoaXMuYXR0cihcInN0ZERldmlhdGlvblwiLGZ1bmN0aW9uKHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiB0O2Zvcih2YXIgZT0wLGk9dC5sZW5ndGgsYT1bXTtlPGk7ZSsrKWEucHVzaCh0W2VdKTtyZXR1cm4gYS5qb2luKFwiIFwiKX0oQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpOnRoaXMuYXR0cihcInN0ZERldmlhdGlvblwiLFwiMCAwXCIpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHtvcGVyYXRvcjp0LHJhZGl1czplfSl9LHRpbGU6ZnVuY3Rpb24oKXt9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24odCxlLGksYSxzKXt0aGlzLmF0dHIoe251bU9jdGF2ZXM6ZSxzZWVkOmksc3RpdGNoVGlsZXM6YSxiYXNlRnJlcXVlbmN5OnQsdHlwZTpzfSl9fSxpPXttZXJnZTpmdW5jdGlvbigpe3ZhciB0O2lmKGFyZ3VtZW50c1swXWluc3RhbmNlb2YgU1ZHLlNldCl7dmFyIGU9dGhpczthcmd1bWVudHNbMF0uZWFjaCgoZnVuY3Rpb24odCl7dGhpcyBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/ZS5wdXQodGhpcyk6KHRoaXMgaW5zdGFuY2VvZiBTVkcuRWZmZWN0fHx0aGlzIGluc3RhbmNlb2YgU1ZHLlBhcmVudEVmZmVjdCkmJmUucHV0KG5ldyBTVkcuTWVyZ2VOb2RlKHRoaXMpKX0pKX1lbHNle3Q9QXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspdFtpXWluc3RhbmNlb2YgU1ZHLk1lcmdlTm9kZT90aGlzLnB1dCh0W2ldKTp0aGlzLnB1dChuZXcgU1ZHLk1lcmdlTm9kZSh0W2ldKSl9fSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbih0KXtpZih0aGlzLnJnYj1uZXcgU1ZHLlNldCxbXCJyXCIsXCJnXCIsXCJiXCIsXCJhXCJdLmZvckVhY2goZnVuY3Rpb24odCl7dGhpc1t0XT1uZXcoU1ZHW1wiRnVuY1wiK3QudG9VcHBlckNhc2UoKV0pKFwiaWRlbnRpdHlcIiksdGhpcy5yZ2IuYWRkKHRoaXNbdF0pLHRoaXMubm9kZS5hcHBlbmRDaGlsZCh0aGlzW3RdLm5vZGUpfS5iaW5kKHRoaXMpKSx0KWZvcih2YXIgZSBpbiB0LnJnYiYmKFtcInJcIixcImdcIixcImJcIl0uZm9yRWFjaChmdW5jdGlvbihlKXt0aGlzW2VdLmF0dHIodC5yZ2IpfS5iaW5kKHRoaXMpKSxkZWxldGUgdC5yZ2IpLHQpdGhpc1tlXS5hdHRyKHRbZV0pfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3RoaXMuYXR0cih7c3VyZmFjZVNjYWxlOnQsZGlmZnVzZUNvbnN0YW50OmUsa2VybmVsVW5pdExlbmd0aDppfSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGksYSl7dGhpcy5hdHRyKHtzdXJmYWNlU2NhbGU6dCxkaWZmdXNlQ29uc3RhbnQ6ZSxzcGVjdWxhckV4cG9uZW50Omksa2VybmVsVW5pdExlbmd0aDphfSl9fSxhPXtkaXN0YW50TGlnaHQ6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoe2F6aW11dGg6dCxlbGV2YXRpb246ZX0pfSxwb2ludExpZ2h0OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe3g6dCx5OmUsejppfSl9LHNwb3RMaWdodDpmdW5jdGlvbih0LGUsaSxhLHMscil7dGhpcy5hdHRyKHt4OnQseTplLHo6aSxwb2ludHNBdFg6YSxwb2ludHNBdFk6cyxwb2ludHNBdFo6cn0pfSxtZXJnZU5vZGU6ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaW5cIix0KX19O2Z1bmN0aW9uIHModCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PW5ldyBTVkcuQXJyYXkodCkpLHQudG9TdHJpbmcoKS5yZXBsYWNlKC9eXFxzKy8sXCJcIikucmVwbGFjZSgvXFxzKyQvLFwiXCIpLnJlcGxhY2UoL1xccysvZyxcIiBcIil9ZnVuY3Rpb24gcigpe3ZhciB0PWZ1bmN0aW9uKCl7fTtmb3IodmFyIGUgaW5cImZ1bmN0aW9uXCI9PXR5cGVvZiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSYmKHQ9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0sQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGFyZ3VtZW50cyxhcmd1bWVudHMubGVuZ3RoLTEsMSkpLGFyZ3VtZW50cylmb3IodmFyIGkgaW4gYXJndW1lbnRzW2VdKXQoYXJndW1lbnRzW2VdW2ldLGksYXJndW1lbnRzW2VdKX1bXCJyXCIsXCJnXCIsXCJiXCIsXCJhXCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2FbXCJGdW5jXCIrdC50b1VwcGVyQ2FzZSgpXT1mdW5jdGlvbih0KXtzd2l0Y2godGhpcy5hdHRyKFwidHlwZVwiLHQpLHQpe2Nhc2VcInRhYmxlXCI6dGhpcy5hdHRyKFwidGFibGVWYWx1ZXNcIixhcmd1bWVudHNbMV0pO2JyZWFrO2Nhc2VcImxpbmVhclwiOnRoaXMuYXR0cihcInNsb3BlXCIsYXJndW1lbnRzWzFdKSx0aGlzLmF0dHIoXCJpbnRlcmNlcHRcIixhcmd1bWVudHNbMl0pO2JyZWFrO2Nhc2VcImdhbW1hXCI6dGhpcy5hdHRyKFwiYW1wbGl0dWRlXCIsYXJndW1lbnRzWzFdKSx0aGlzLmF0dHIoXCJleHBvbmVudFwiLGFyZ3VtZW50c1syXSksdGhpcy5hdHRyKFwib2Zmc2V0XCIsYXJndW1lbnRzWzJdKX19fSkpLHIoZSwoZnVuY3Rpb24odCxlKXt2YXIgaT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7U1ZHW2krXCJFZmZlY3RcIl09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIraSkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucmVzdWx0KHRoaXMuYXR0cihcImlkXCIpK1wiT3V0XCIpfSxpbmhlcml0OlNWRy5FZmZlY3QsZXh0ZW5kOnt9fSl9KSkscihpLChmdW5jdGlvbih0LGUpe3ZhciBpPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtTVkdbaStcIkVmZmVjdFwiXT1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxTVkcuY3JlYXRlKFwiZmVcIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5yZXN1bHQodGhpcy5hdHRyKFwiaWRcIikrXCJPdXRcIil9LGluaGVyaXQ6U1ZHLlBhcmVudEVmZmVjdCxleHRlbmQ6e319KX0pKSxyKGEsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO1NWR1tpXT1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxTVkcuY3JlYXRlKFwiZmVcIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGluaGVyaXQ6U1ZHLkNoaWxkRWZmZWN0LGV4dGVuZDp7fX0pfSkpLFNWRy5leHRlbmQoU1ZHLk1lcmdlRWZmZWN0LHtpbjpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/dGhpcy5hZGQodCwwKTp0aGlzLmFkZChuZXcgU1ZHLk1lcmdlTm9kZSh0KSwwKSx0aGlzfX0pLFNWRy5leHRlbmQoU1ZHLkNvbXBvc2l0ZUVmZmVjdCxTVkcuQmxlbmRFZmZlY3QsU1ZHLkRpc3BsYWNlbWVudE1hcEVmZmVjdCx7aW4yOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PVwiJyt0aGlzLmF0dHIoXCJpbjJcIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW4yXCIpOnRoaXMuYXR0cihcImluMlwiLHQpfX0pLFNWRy5maWx0ZXI9e3NlcGlhdG9uZTpbLjM0MywuNjY5LC4xMTksMCwwLC4yNDksLjYyNiwuMTMsMCwwLC4xNzIsLjMzNCwuMTExLDAsMCwwLDAsMCwxLDBdfX0uY2FsbCh2b2lkIDApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LHMscixvLG4sbCxoKXtmb3IodmFyIGM9dC5zbGljZShzLHJ8fGgpLGQ9by5zbGljZShuLGx8fGgpLGc9MCx1PXtwb3M6WzAsMF0sc3RhcnQ6WzAsMF19LHA9e3BvczpbMCwwXSxzdGFydDpbMCwwXX07Oyl7aWYoY1tnXT1lLmNhbGwodSxjW2ddKSxkW2ddPWUuY2FsbChwLGRbZ10pLGNbZ11bMF0hPWRbZ11bMF18fFwiTVwiPT1jW2ddWzBdfHxcIkFcIj09Y1tnXVswXSYmKGNbZ11bNF0hPWRbZ11bNF18fGNbZ11bNV0hPWRbZ11bNV0pPyhBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGMsW2csMV0uY29uY2F0KGEuY2FsbCh1LGNbZ10pKSksQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShkLFtnLDFdLmNvbmNhdChhLmNhbGwocCxkW2ddKSkpKTooY1tnXT1pLmNhbGwodSxjW2ddKSxkW2ddPWkuY2FsbChwLGRbZ10pKSwrK2c9PWMubGVuZ3RoJiZnPT1kLmxlbmd0aClicmVhaztnPT1jLmxlbmd0aCYmYy5wdXNoKFtcIkNcIix1LnBvc1swXSx1LnBvc1sxXSx1LnBvc1swXSx1LnBvc1sxXSx1LnBvc1swXSx1LnBvc1sxXV0pLGc9PWQubGVuZ3RoJiZkLnB1c2goW1wiQ1wiLHAucG9zWzBdLHAucG9zWzFdLHAucG9zWzBdLHAucG9zWzFdLHAucG9zWzBdLHAucG9zWzFdXSl9cmV0dXJue3N0YXJ0OmMsZGVzdDpkfX1mdW5jdGlvbiBlKHQpe3N3aXRjaCh0WzBdKXtjYXNlXCJ6XCI6Y2FzZVwiWlwiOnRbMF09XCJMXCIsdFsxXT10aGlzLnN0YXJ0WzBdLHRbMl09dGhpcy5zdGFydFsxXTticmVhaztjYXNlXCJIXCI6dFswXT1cIkxcIix0WzJdPXRoaXMucG9zWzFdO2JyZWFrO2Nhc2VcIlZcIjp0WzBdPVwiTFwiLHRbMl09dFsxXSx0WzFdPXRoaXMucG9zWzBdO2JyZWFrO2Nhc2VcIlRcIjp0WzBdPVwiUVwiLHRbM109dFsxXSx0WzRdPXRbMl0sdFsxXT10aGlzLnJlZmxlY3Rpb25bMV0sdFsyXT10aGlzLnJlZmxlY3Rpb25bMF07YnJlYWs7Y2FzZVwiU1wiOnRbMF09XCJDXCIsdFs2XT10WzRdLHRbNV09dFszXSx0WzRdPXRbMl0sdFszXT10WzFdLHRbMl09dGhpcy5yZWZsZWN0aW9uWzFdLHRbMV09dGhpcy5yZWZsZWN0aW9uWzBdfXJldHVybiB0fWZ1bmN0aW9uIGkodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIHRoaXMucG9zPVt0W2UtMl0sdFtlLTFdXSwtMSE9XCJTQ1FUXCIuaW5kZXhPZih0WzBdKSYmKHRoaXMucmVmbGVjdGlvbj1bMip0aGlzLnBvc1swXS10W2UtNF0sMip0aGlzLnBvc1sxXS10W2UtM11dKSx0fWZ1bmN0aW9uIGEodCl7dmFyIGU9W3RdO3N3aXRjaCh0WzBdKXtjYXNlXCJNXCI6cmV0dXJuIHRoaXMucG9zPXRoaXMuc3RhcnQ9W3RbMV0sdFsyXV0sZTtjYXNlXCJMXCI6dFs1XT10WzNdPXRbMV0sdFs2XT10WzRdPXRbMl0sdFsxXT10aGlzLnBvc1swXSx0WzJdPXRoaXMucG9zWzFdO2JyZWFrO2Nhc2VcIlFcIjp0WzZdPXRbNF0sdFs1XT10WzNdLHRbNF09MSp0WzRdLzMrMip0WzJdLzMsdFszXT0xKnRbM10vMysyKnRbMV0vMyx0WzJdPTEqdGhpcy5wb3NbMV0vMysyKnRbMl0vMyx0WzFdPTEqdGhpcy5wb3NbMF0vMysyKnRbMV0vMzticmVhaztjYXNlXCJBXCI6ZT1mdW5jdGlvbih0LGUpe3ZhciBpLGEscyxyLG8sbixsLGgsYyxkLGcsdSxwLGYseCxiLHYsbSx5LHcsayxBLFMsQyxMLFAsST1NYXRoLmFicyhlWzFdKSxNPU1hdGguYWJzKGVbMl0pLFQ9ZVszXSUzNjAsej1lWzRdLFg9ZVs1XSxFPWVbNl0sWT1lWzddLEY9bmV3IFNWRy5Qb2ludCh0KSxSPW5ldyBTVkcuUG9pbnQoRSxZKSxIPVtdO2lmKDA9PT1JfHwwPT09TXx8Ri54PT09Ui54JiZGLnk9PT1SLnkpcmV0dXJuW1tcIkNcIixGLngsRi55LFIueCxSLnksUi54LFIueV1dO2k9bmV3IFNWRy5Qb2ludCgoRi54LVIueCkvMiwoRi55LVIueSkvMikudHJhbnNmb3JtKChuZXcgU1ZHLk1hdHJpeCkucm90YXRlKFQpKSwoYT1pLngqaS54LyhJKkkpK2kueSppLnkvKE0qTSkpPjEmJihJKj1hPU1hdGguc3FydChhKSxNKj1hKTtzPShuZXcgU1ZHLk1hdHJpeCkucm90YXRlKFQpLnNjYWxlKDEvSSwxL00pLnJvdGF0ZSgtVCksRj1GLnRyYW5zZm9ybShzKSxSPVIudHJhbnNmb3JtKHMpLHI9W1IueC1GLngsUi55LUYueV0sbj1yWzBdKnJbMF0rclsxXSpyWzFdLG89TWF0aC5zcXJ0KG4pLHJbMF0vPW8sclsxXS89byxsPW48ND9NYXRoLnNxcnQoMS1uLzQpOjAsej09PVgmJihsKj0tMSk7aD1uZXcgU1ZHLlBvaW50KChSLngrRi54KS8yK2wqLXJbMV0sKFIueStGLnkpLzIrbCpyWzBdKSxjPW5ldyBTVkcuUG9pbnQoRi54LWgueCxGLnktaC55KSxkPW5ldyBTVkcuUG9pbnQoUi54LWgueCxSLnktaC55KSxnPU1hdGguYWNvcyhjLngvTWF0aC5zcXJ0KGMueCpjLngrYy55KmMueSkpLGMueTwwJiYoZyo9LTEpO3U9TWF0aC5hY29zKGQueC9NYXRoLnNxcnQoZC54KmQueCtkLnkqZC55KSksZC55PDAmJih1Kj0tMSk7WCYmZz51JiYodSs9MipNYXRoLlBJKTshWCYmZzx1JiYodS09MipNYXRoLlBJKTtmb3IoZj1NYXRoLmNlaWwoMipNYXRoLmFicyhnLXUpL01hdGguUEkpLGI9W10sdj1nLHA9KHUtZykvZix4PTQqTWF0aC50YW4ocC80KS8zLGs9MDtrPD1mO2srKyl5PU1hdGguY29zKHYpLG09TWF0aC5zaW4odiksdz1uZXcgU1ZHLlBvaW50KGgueCt5LGgueSttKSxiW2tdPVtuZXcgU1ZHLlBvaW50KHcueCt4Km0sdy55LXgqeSksdyxuZXcgU1ZHLlBvaW50KHcueC14Km0sdy55K3gqeSldLHYrPXA7Zm9yKGJbMF1bMF09YlswXVsxXS5jbG9uZSgpLGJbYi5sZW5ndGgtMV1bMl09YltiLmxlbmd0aC0xXVsxXS5jbG9uZSgpLHM9KG5ldyBTVkcuTWF0cml4KS5yb3RhdGUoVCkuc2NhbGUoSSxNKS5yb3RhdGUoLVQpLGs9MCxBPWIubGVuZ3RoO2s8QTtrKyspYltrXVswXT1iW2tdWzBdLnRyYW5zZm9ybShzKSxiW2tdWzFdPWJba11bMV0udHJhbnNmb3JtKHMpLGJba11bMl09YltrXVsyXS50cmFuc2Zvcm0ocyk7Zm9yKGs9MSxBPWIubGVuZ3RoO2s8QTtrKyspUz0odz1iW2stMV1bMl0pLngsQz13LnksTD0odz1iW2tdWzBdKS54LFA9dy55LEU9KHc9YltrXVsxXSkueCxZPXcueSxILnB1c2goW1wiQ1wiLFMsQyxMLFAsRSxZXSk7cmV0dXJuIEh9KHRoaXMucG9zLHQpLHQ9ZVswXX1yZXR1cm4gdFswXT1cIkNcIix0aGlzLnBvcz1bdFs1XSx0WzZdXSx0aGlzLnJlZmxlY3Rpb249WzIqdFs1XS10WzNdLDIqdFs2XS10WzRdXSxlfWZ1bmN0aW9uIHModCxlKXtpZighMT09PWUpcmV0dXJuITE7Zm9yKHZhciBpPWUsYT10Lmxlbmd0aDtpPGE7KytpKWlmKFwiTVwiPT10W2ldWzBdKXJldHVybiBpO3JldHVybiExfVNWRy5leHRlbmQoU1ZHLlBhdGhBcnJheSx7bW9ycGg6ZnVuY3Rpb24oZSl7Zm9yKHZhciBpPXRoaXMudmFsdWUsYT10aGlzLnBhcnNlKGUpLHI9MCxvPTAsbj0hMSxsPSExOyExIT09cnx8ITEhPT1vOyl7dmFyIGg7bj1zKGksITEhPT1yJiZyKzEpLGw9cyhhLCExIT09byYmbysxKSwhMT09PXImJihyPTA9PShoPW5ldyBTVkcuUGF0aEFycmF5KGMuc3RhcnQpLmJib3goKSkuaGVpZ2h0fHwwPT1oLndpZHRoP2kucHVzaChpWzBdKS0xOmkucHVzaChbXCJNXCIsaC54K2gud2lkdGgvMixoLnkraC5oZWlnaHQvMl0pLTEpLCExPT09byYmKG89MD09KGg9bmV3IFNWRy5QYXRoQXJyYXkoYy5kZXN0KS5iYm94KCkpLmhlaWdodHx8MD09aC53aWR0aD9hLnB1c2goYVswXSktMTphLnB1c2goW1wiTVwiLGgueCtoLndpZHRoLzIsaC55K2guaGVpZ2h0LzJdKS0xKTt2YXIgYz10KGkscixuLGEsbyxsKTtpPWkuc2xpY2UoMCxyKS5jb25jYXQoYy5zdGFydCwhMT09PW4/W106aS5zbGljZShuKSksYT1hLnNsaWNlKDAsbykuY29uY2F0KGMuZGVzdCwhMT09PWw/W106YS5zbGljZShsKSkscj0hMSE9PW4mJnIrYy5zdGFydC5sZW5ndGgsbz0hMSE9PWwmJm8rYy5kZXN0Lmxlbmd0aH1yZXR1cm4gdGhpcy52YWx1ZT1pLHRoaXMuZGVzdGluYXRpb249bmV3IFNWRy5QYXRoQXJyYXksdGhpcy5kZXN0aW5hdGlvbi52YWx1ZT1hLHRoaXN9fSl9KCksXG4vKiEgc3ZnLmRyYWdnYWJsZS5qcyAtIHYyLjIuMiAtIDIwMTktMDEtMDhcbiogaHR0cHM6Ly9naXRodWIuY29tL3N2Z2RvdGpzL3N2Zy5kcmFnZ2FibGUuanNcbiogQ29weXJpZ2h0IChjKSAyMDE5IFdvdXQgRmllcmVuczsgTGljZW5zZWQgTUlUICovXG5mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dC5yZW1lbWJlcihcIl9kcmFnZ2FibGVcIix0aGlzKSx0aGlzLmVsPXR9dC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7dGhpcy5jb25zdHJhaW50PXQsdGhpcy52YWx1ZT1lLHRoaXMuZWwub24oXCJtb3VzZWRvd24uZHJhZ1wiLChmdW5jdGlvbih0KXtpLnN0YXJ0KHQpfSkpLHRoaXMuZWwub24oXCJ0b3VjaHN0YXJ0LmRyYWdcIiwoZnVuY3Rpb24odCl7aS5zdGFydCh0KX0pKX0sdC5wcm90b3R5cGUudHJhbnNmb3JtUG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgaT0odD10fHx3aW5kb3cuZXZlbnQpLmNoYW5nZWRUb3VjaGVzJiZ0LmNoYW5nZWRUb3VjaGVzWzBdfHx0O3JldHVybiB0aGlzLnAueD1pLmNsaWVudFgtKGV8fDApLHRoaXMucC55PWkuY2xpZW50WSx0aGlzLnAubWF0cml4VHJhbnNmb3JtKHRoaXMubSl9LHQucHJvdG90eXBlLmdldEJCb3g9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTtyZXR1cm4gdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5OZXN0ZWQmJih0PXRoaXMuZWwucmJveCgpKSwodGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5HfHx0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLlVzZXx8dGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5OZXN0ZWQpJiYodC54PXRoaXMuZWwueCgpLHQueT10aGlzLmVsLnkoKSksdH0sdC5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24odCl7aWYoXCJjbGlja1wiIT10LnR5cGUmJlwibW91c2Vkb3duXCIhPXQudHlwZSYmXCJtb3VzZW1vdmVcIiE9dC50eXBlfHwxPT0odC53aGljaHx8dC5idXR0b25zKSl7dmFyIGU9dGhpcztpZih0aGlzLmVsLmZpcmUoXCJiZWZvcmVkcmFnXCIse2V2ZW50OnQsaGFuZGxlcjp0aGlzfSksIXRoaXMuZWwuZXZlbnQoKS5kZWZhdWx0UHJldmVudGVkKXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnBhcmVudD10aGlzLnBhcmVudHx8dGhpcy5lbC5wYXJlbnQoU1ZHLk5lc3RlZCl8fHRoaXMuZWwucGFyZW50KFNWRy5Eb2MpLHRoaXMucD10aGlzLnBhcmVudC5ub2RlLmNyZWF0ZVNWR1BvaW50KCksdGhpcy5tPXRoaXMuZWwubm9kZS5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCk7dmFyIGksYT10aGlzLmdldEJCb3goKTtpZih0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLlRleHQpc3dpdGNoKGk9dGhpcy5lbC5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpLHRoaXMuZWwuYXR0cihcInRleHQtYW5jaG9yXCIpKXtjYXNlXCJtaWRkbGVcIjppLz0yO2JyZWFrO2Nhc2VcInN0YXJ0XCI6aT0wfXRoaXMuc3RhcnRQb2ludHM9e3BvaW50OnRoaXMudHJhbnNmb3JtUG9pbnQodCxpKSxib3g6YSx0cmFuc2Zvcm06dGhpcy5lbC50cmFuc2Zvcm0oKX0sU1ZHLm9uKHdpbmRvdyxcIm1vdXNlbW92ZS5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZHJhZyh0KX0pKSxTVkcub24od2luZG93LFwidG91Y2htb3ZlLmRyYWdcIiwoZnVuY3Rpb24odCl7ZS5kcmFnKHQpfSkpLFNWRy5vbih3aW5kb3csXCJtb3VzZXVwLmRyYWdcIiwoZnVuY3Rpb24odCl7ZS5lbmQodCl9KSksU1ZHLm9uKHdpbmRvdyxcInRvdWNoZW5kLmRyYWdcIiwoZnVuY3Rpb24odCl7ZS5lbmQodCl9KSksdGhpcy5lbC5maXJlKFwiZHJhZ3N0YXJ0XCIse2V2ZW50OnQscDp0aGlzLnN0YXJ0UG9pbnRzLnBvaW50LG06dGhpcy5tLGhhbmRsZXI6dGhpc30pfX19LHQucHJvdG90eXBlLmRyYWc9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRCQm94KCksaT10aGlzLnRyYW5zZm9ybVBvaW50KHQpLGE9dGhpcy5zdGFydFBvaW50cy5ib3gueCtpLngtdGhpcy5zdGFydFBvaW50cy5wb2ludC54LHM9dGhpcy5zdGFydFBvaW50cy5ib3gueStpLnktdGhpcy5zdGFydFBvaW50cy5wb2ludC55LHI9dGhpcy5jb25zdHJhaW50LG89aS54LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueCxuPWkueS10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lnk7aWYodGhpcy5lbC5maXJlKFwiZHJhZ21vdmVcIix7ZXZlbnQ6dCxwOmksbTp0aGlzLm0saGFuZGxlcjp0aGlzfSksdGhpcy5lbC5ldmVudCgpLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIGk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil7dmFyIGw9ci5jYWxsKHRoaXMuZWwsYSxzLHRoaXMubSk7XCJib29sZWFuXCI9PXR5cGVvZiBsJiYobD17eDpsLHk6bH0pLCEwPT09bC54P3RoaXMuZWwueChhKTohMSE9PWwueCYmdGhpcy5lbC54KGwueCksITA9PT1sLnk/dGhpcy5lbC55KHMpOiExIT09bC55JiZ0aGlzLmVsLnkobC55KX1lbHNlXCJvYmplY3RcIj09dHlwZW9mIHImJihudWxsIT1yLm1pblgmJmE8ci5taW5YP289KGE9ci5taW5YKS10aGlzLnN0YXJ0UG9pbnRzLmJveC54Om51bGwhPXIubWF4WCYmYT5yLm1heFgtZS53aWR0aCYmKG89KGE9ci5tYXhYLWUud2lkdGgpLXRoaXMuc3RhcnRQb2ludHMuYm94LngpLG51bGwhPXIubWluWSYmczxyLm1pblk/bj0ocz1yLm1pblkpLXRoaXMuc3RhcnRQb2ludHMuYm94Lnk6bnVsbCE9ci5tYXhZJiZzPnIubWF4WS1lLmhlaWdodCYmKG49KHM9ci5tYXhZLWUuaGVpZ2h0KS10aGlzLnN0YXJ0UG9pbnRzLmJveC55KSxudWxsIT1yLnNuYXBUb0dyaWQmJihhLT1hJXIuc25hcFRvR3JpZCxzLT1zJXIuc25hcFRvR3JpZCxvLT1vJXIuc25hcFRvR3JpZCxuLT1uJXIuc25hcFRvR3JpZCksdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5HP3RoaXMuZWwubWF0cml4KHRoaXMuc3RhcnRQb2ludHMudHJhbnNmb3JtKS50cmFuc2Zvcm0oe3g6byx5Om59LCEwKTp0aGlzLmVsLm1vdmUoYSxzKSk7cmV0dXJuIGl9LHQucHJvdG90eXBlLmVuZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRyYWcodCk7dGhpcy5lbC5maXJlKFwiZHJhZ2VuZFwiLHtldmVudDp0LHA6ZSxtOnRoaXMubSxoYW5kbGVyOnRoaXN9KSxTVkcub2ZmKHdpbmRvdyxcIm1vdXNlbW92ZS5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2htb3ZlLmRyYWdcIiksU1ZHLm9mZih3aW5kb3csXCJtb3VzZXVwLmRyYWdcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaGVuZC5kcmFnXCIpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtkcmFnZ2FibGU6ZnVuY3Rpb24oZSxpKXtcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZcIm9iamVjdFwiIT10eXBlb2YgZXx8KGk9ZSxlPSEwKTt2YXIgYT10aGlzLnJlbWVtYmVyKFwiX2RyYWdnYWJsZVwiKXx8bmV3IHQodGhpcyk7cmV0dXJuKGU9dm9pZCAwPT09ZXx8ZSk/YS5pbml0KGl8fHt9LGUpOih0aGlzLm9mZihcIm1vdXNlZG93bi5kcmFnXCIpLHRoaXMub2ZmKFwidG91Y2hzdGFydC5kcmFnXCIpKSx0aGlzfX0pfS5jYWxsKHZvaWQgMCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZWw9dCx0LnJlbWVtYmVyKFwiX3NlbGVjdEhhbmRsZXJcIix0aGlzKSx0aGlzLnBvaW50U2VsZWN0aW9uPXtpc1NlbGVjdGVkOiExfSx0aGlzLnJlY3RTZWxlY3Rpb249e2lzU2VsZWN0ZWQ6ITF9LHRoaXMucG9pbnRzTGlzdD17bHQ6WzAsMF0scnQ6W1wid2lkdGhcIiwwXSxyYjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGxiOlswLFwiaGVpZ2h0XCJdLHQ6W1wid2lkdGhcIiwwXSxyOltcIndpZHRoXCIsXCJoZWlnaHRcIl0sYjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGw6WzAsXCJoZWlnaHRcIl19LHRoaXMucG9pbnRDb29yZD1mdW5jdGlvbih0LGUsaSl7dmFyIGE9XCJzdHJpbmdcIiE9dHlwZW9mIHQ/dDplW3RdO3JldHVybiBpP2EvMjphfSx0aGlzLnBvaW50Q29vcmRzPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5wb2ludHNMaXN0W3RdO3JldHVybnt4OnRoaXMucG9pbnRDb29yZChpWzBdLGUsXCJ0XCI9PT10fHxcImJcIj09PXQpLHk6dGhpcy5wb2ludENvb3JkKGlbMV0sZSxcInJcIj09PXR8fFwibFwiPT09dCl9fX10LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5lbC5iYm94KCk7dGhpcy5vcHRpb25zPXt9O3ZhciBhPXRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzLnBvaW50cztmb3IodmFyIHMgaW4gdGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHMpdGhpcy5vcHRpb25zW3NdPXRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzW3NdLHZvaWQgMCE9PWVbc10mJih0aGlzLm9wdGlvbnNbc109ZVtzXSk7dmFyIHI9W1wicG9pbnRzXCIsXCJwb2ludHNFeGNsdWRlXCJdO2Zvcih2YXIgcyBpbiByKXt2YXIgbz10aGlzLm9wdGlvbnNbcltzXV07XCJzdHJpbmdcIj09dHlwZW9mIG8/bz1vLmxlbmd0aD4wP28uc3BsaXQoL1xccyosXFxzKi9pKTpbXTpcImJvb2xlYW5cIj09dHlwZW9mIG8mJlwicG9pbnRzXCI9PT1yW3NdJiYobz1vP2E6W10pLHRoaXMub3B0aW9uc1tyW3NdXT1vfXRoaXMub3B0aW9ucy5wb2ludHM9W2EsdGhpcy5vcHRpb25zLnBvaW50c10ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5kZXhPZih0KT4tMX0pKX0pKSx0aGlzLm9wdGlvbnMucG9pbnRzPVt0aGlzLm9wdGlvbnMucG9pbnRzLHRoaXMub3B0aW9ucy5wb2ludHNFeGNsdWRlXS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmRleE9mKHQpPDB9KSl9KSksdGhpcy5wYXJlbnQ9dGhpcy5lbC5wYXJlbnQoKSx0aGlzLm5lc3RlZD10aGlzLm5lc3RlZHx8dGhpcy5wYXJlbnQuZ3JvdXAoKSx0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKGkueCxpLnkpKSx0aGlzLm9wdGlvbnMuZGVlcFNlbGVjdCYmLTEhPT1bXCJsaW5lXCIsXCJwb2x5bGluZVwiLFwicG9seWdvblwiXS5pbmRleE9mKHRoaXMuZWwudHlwZSk/dGhpcy5zZWxlY3RQb2ludHModCk6dGhpcy5zZWxlY3RSZWN0KHQpLHRoaXMub2JzZXJ2ZSgpLHRoaXMuY2xlYW51cCgpfSx0LnByb3RvdHlwZS5zZWxlY3RQb2ludHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZD10LHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0fHwodGhpcy5wb2ludFNlbGVjdGlvbi5zZXQ9dGhpcy5wYXJlbnQuc2V0KCksdGhpcy5kcmF3UG9pbnRzKCkpLHRoaXN9LHQucHJvdG90eXBlLmdldFBvaW50QXJyYXk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTtyZXR1cm4gdGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybltlWzBdLXQueCxlWzFdLXQueV19KSl9LHQucHJvdG90eXBlLmRyYXdQb2ludHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXRoaXMuZ2V0UG9pbnRBcnJheSgpLGk9MCxhPWUubGVuZ3RoO2k8YTsrK2kpe3ZhciBzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihpKXsoaT1pfHx3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0P2kucHJldmVudERlZmF1bHQoKTppLnJldHVyblZhbHVlPSExLGkuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGE9aS5wYWdlWHx8aS50b3VjaGVzWzBdLnBhZ2VYLHM9aS5wYWdlWXx8aS50b3VjaGVzWzBdLnBhZ2VZO3QuZWwuZmlyZShcInBvaW50XCIse3g6YSx5OnMsaTplLGV2ZW50Oml9KX19KGkpLHI9dGhpcy5kcmF3UG9pbnQoZVtpXVswXSxlW2ldWzFdKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMpLmFkZENsYXNzKHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cytcIl9wb2ludFwiKS5vbihcInRvdWNoc3RhcnRcIixzKS5vbihcIm1vdXNlZG93blwiLHMpO3RoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmFkZChyKX19LHQucHJvdG90eXBlLmRyYXdQb2ludD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMub3B0aW9ucy5wb2ludFR5cGU7c3dpdGNoKGkpe2Nhc2VcImNpcmNsZVwiOnJldHVybiB0aGlzLmRyYXdDaXJjbGUodCxlKTtjYXNlXCJyZWN0XCI6cmV0dXJuIHRoaXMuZHJhd1JlY3QodCxlKTtkZWZhdWx0OmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGkpcmV0dXJuIGkuY2FsbCh0aGlzLHQsZSk7dGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBcIitpK1wiIHBvaW50IHR5cGUhXCIpfX0sdC5wcm90b3R5cGUuZHJhd0NpcmNsZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm5lc3RlZC5jaXJjbGUodGhpcy5vcHRpb25zLnBvaW50U2l6ZSkuY2VudGVyKHQsZSl9LHQucHJvdG90eXBlLmRyYXdSZWN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubmVzdGVkLnJlY3QodGhpcy5vcHRpb25zLnBvaW50U2l6ZSx0aGlzLm9wdGlvbnMucG9pbnRTaXplKS5jZW50ZXIodCxlKX0sdC5wcm90b3R5cGUudXBkYXRlUG9pbnRTZWxlY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldFBvaW50QXJyYXkoKTt0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbihlKXt0aGlzLmN4KCk9PT10W2VdWzBdJiZ0aGlzLmN5KCk9PT10W2VdWzFdfHx0aGlzLmNlbnRlcih0W2VdWzBdLHRbZV1bMV0pfSkpfSx0LnByb3RvdHlwZS51cGRhdGVSZWN0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuZWwuYmJveCgpO2lmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDApLmF0dHIoe3dpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fSksdGhpcy5vcHRpb25zLnBvaW50cy5sZW5ndGgmJnRoaXMub3B0aW9ucy5wb2ludHMubWFwKChmdW5jdGlvbihpLGEpe3ZhciBzPXQucG9pbnRDb29yZHMoaSxlKTt0LnJlY3RTZWxlY3Rpb24uc2V0LmdldChhKzEpLmNlbnRlcihzLngscy55KX0pKSx0aGlzLm9wdGlvbnMucm90YXRpb25Qb2ludCl7dmFyIGk9dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5sZW5ndGgoKTt0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldChpLTEpLmNlbnRlcihlLndpZHRoLzIsMjApfX0sdC5wcm90b3R5cGUuc2VsZWN0UmVjdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy5lbC5iYm94KCk7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gZnVuY3Rpb24oaSl7KGk9aXx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9pLnByZXZlbnREZWZhdWx0KCk6aS5yZXR1cm5WYWx1ZT0hMSxpLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBhPWkucGFnZVh8fGkudG91Y2hlc1swXS5wYWdlWCxzPWkucGFnZVl8fGkudG91Y2hlc1swXS5wYWdlWTtlLmVsLmZpcmUodCx7eDphLHk6cyxldmVudDppfSl9fWlmKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkPXQsdGhpcy5yZWN0U2VsZWN0aW9uLnNldD10aGlzLnJlY3RTZWxlY3Rpb24uc2V0fHx0aGlzLnBhcmVudC5zZXQoKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgwKXx8dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5hZGQodGhpcy5uZXN0ZWQucmVjdChpLndpZHRoLGkuaGVpZ2h0KS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NSZWN0KSksdGhpcy5vcHRpb25zLnBvaW50cy5sZW5ndGgmJnRoaXMucmVjdFNlbGVjdGlvbi5zZXQubGVuZ3RoKCk8Mil7dGhpcy5vcHRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKHQscyl7dmFyIHI9ZS5wb2ludENvb3Jkcyh0LGkpLG89ZS5kcmF3UG9pbnQoci54LHIueSkuYXR0cihcImNsYXNzXCIsZS5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX1wiK3QpLm9uKFwibW91c2Vkb3duXCIsYSh0KSkub24oXCJ0b3VjaHN0YXJ0XCIsYSh0KSk7ZS5yZWN0U2VsZWN0aW9uLnNldC5hZGQobyl9KSksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbigpe3RoaXMuYWRkQ2xhc3MoZS5vcHRpb25zLmNsYXNzUG9pbnRzKX0pKX1pZih0aGlzLm9wdGlvbnMucm90YXRpb25Qb2ludCYmKHRoaXMub3B0aW9ucy5wb2ludHMmJiF0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCg5KXx8IXRoaXMub3B0aW9ucy5wb2ludHMmJiF0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgxKSkpe3ZhciBzPWZ1bmN0aW9uKHQpeyh0PXR8fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQucmV0dXJuVmFsdWU9ITEsdC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgaT10LnBhZ2VYfHx0LnRvdWNoZXNbMF0ucGFnZVgsYT10LnBhZ2VZfHx0LnRvdWNoZXNbMF0ucGFnZVk7ZS5lbC5maXJlKFwicm90XCIse3g6aSx5OmEsZXZlbnQ6dH0pfSxyPXRoaXMuZHJhd1BvaW50KGkud2lkdGgvMiwyMCkuYXR0cihcImNsYXNzXCIsdGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX3JvdFwiKS5vbihcInRvdWNoc3RhcnRcIixzKS5vbihcIm1vdXNlZG93blwiLHMpO3RoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHIpfX0sdC5wcm90b3R5cGUuaGFuZGxlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWwuYmJveCgpO3RoaXMubmVzdGVkLm1hdHJpeChuZXcgU1ZHLk1hdHJpeCh0aGlzLmVsKS50cmFuc2xhdGUodC54LHQueSkpLHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnVwZGF0ZVJlY3RTZWxlY3Rpb24oKSx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMudXBkYXRlUG9pbnRTZWxlY3Rpb24oKX0sdC5wcm90b3R5cGUub2JzZXJ2ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoTXV0YXRpb25PYnNlcnZlcilpZih0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkKXRoaXMub2JzZXJ2ZXJJbnN0PXRoaXMub2JzZXJ2ZXJJbnN0fHxuZXcgTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24oKXt0LmhhbmRsZXIoKX0pKSx0aGlzLm9ic2VydmVySW5zdC5vYnNlcnZlKHRoaXMuZWwubm9kZSx7YXR0cmlidXRlczohMH0pO2Vsc2UgdHJ5e3RoaXMub2JzZXJ2ZXJJbnN0LmRpc2Nvbm5lY3QoKSxkZWxldGUgdGhpcy5vYnNlcnZlckluc3R9Y2F0Y2godCl7fWVsc2UgdGhpcy5lbC5vZmYoXCJET01BdHRyTW9kaWZpZWQuc2VsZWN0XCIpLCh0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkKSYmdGhpcy5lbC5vbihcIkRPTUF0dHJNb2RpZmllZC5zZWxlY3RcIiwoZnVuY3Rpb24oKXt0LmhhbmRsZXIoKX0pKX0sdC5wcm90b3R5cGUuY2xlYW51cD1mdW5jdGlvbigpeyF0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy5yZWN0U2VsZWN0aW9uLnNldCYmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuY2xlYXIoKSxkZWxldGUgdGhpcy5yZWN0U2VsZWN0aW9uLnNldCksIXRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQmJih0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9KSksdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuY2xlYXIoKSxkZWxldGUgdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQpLHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fCh0aGlzLm5lc3RlZC5yZW1vdmUoKSxkZWxldGUgdGhpcy5uZXN0ZWQpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtzZWxlY3RpemU6ZnVuY3Rpb24oZSxpKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmKGk9ZSxlPSEwKSwodGhpcy5yZW1lbWJlcihcIl9zZWxlY3RIYW5kbGVyXCIpfHxuZXcgdCh0aGlzKSkuaW5pdCh2b2lkIDA9PT1lfHxlLGl8fHt9KSx0aGlzfX0pLFNWRy5FbGVtZW50LnByb3RvdHlwZS5zZWxlY3RpemUuZGVmYXVsdHM9e3BvaW50czpbXCJsdFwiLFwicnRcIixcInJiXCIsXCJsYlwiLFwidFwiLFwiclwiLFwiYlwiLFwibFwiXSxwb2ludHNFeGNsdWRlOltdLGNsYXNzUmVjdDpcInN2Z19zZWxlY3RfYm91bmRpbmdSZWN0XCIsY2xhc3NQb2ludHM6XCJzdmdfc2VsZWN0X3BvaW50c1wiLHBvaW50U2l6ZTo3LHJvdGF0aW9uUG9pbnQ6ITAsZGVlcFNlbGVjdDohMSxwb2ludFR5cGU6XCJjaXJjbGVcIn19KCksZnVuY3Rpb24oKXsoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3QucmVtZW1iZXIoXCJfcmVzaXplSGFuZGxlclwiLHRoaXMpLHRoaXMuZWw9dCx0aGlzLnBhcmFtZXRlcnM9e30sdGhpcy5sYXN0VXBkYXRlQ2FsbD1udWxsLHRoaXMucD10LmRvYygpLm5vZGUuY3JlYXRlU1ZHUG9pbnQoKX10LnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucC54PXQtKHRoaXMub2Zmc2V0Lngtd2luZG93LnBhZ2VYT2Zmc2V0KSx0aGlzLnAueT1lLSh0aGlzLm9mZnNldC55LXdpbmRvdy5wYWdlWU9mZnNldCksdGhpcy5wLm1hdHJpeFRyYW5zZm9ybShpfHx0aGlzLm0pfSx0LnByb3RvdHlwZS5fZXh0cmFjdFBvc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybnt4Om51bGwhPXQuY2xpZW50WD90LmNsaWVudFg6dC50b3VjaGVzWzBdLmNsaWVudFgseTpudWxsIT10LmNsaWVudFk/dC5jbGllbnRZOnQudG91Y2hlc1swXS5jbGllbnRZfX0sdC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMuc3RvcCgpLFwic3RvcFwiIT09dCl7Zm9yKHZhciBpIGluIHRoaXMub3B0aW9ucz17fSx0aGlzLmVsLnJlc2l6ZS5kZWZhdWx0cyl0aGlzLm9wdGlvbnNbaV09dGhpcy5lbC5yZXNpemUuZGVmYXVsdHNbaV0sdm9pZCAwIT09dFtpXSYmKHRoaXMub3B0aW9uc1tpXT10W2ldKTt0aGlzLmVsLm9uKFwibHQucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInJ0LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJyYi5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwibGIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInQucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcImIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcImwucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInJvdC5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwicG9pbnQucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy51cGRhdGUoKX19LHQucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbC5vZmYoXCJsdC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJydC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyYi5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJsYi5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJ0LnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwiYi5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJsLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInJvdC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJwb2ludC5yZXNpemVcIiksdGhpc30sdC5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5tPXRoaXMuZWwubm9kZS5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCksdGhpcy5vZmZzZXQ9e3g6d2luZG93LnBhZ2VYT2Zmc2V0LHk6d2luZG93LnBhZ2VZT2Zmc2V0fTt2YXIgaT10aGlzLl9leHRyYWN0UG9zaXRpb24odC5kZXRhaWwuZXZlbnQpO2lmKHRoaXMucGFyYW1ldGVycz17dHlwZTp0aGlzLmVsLnR5cGUscDp0aGlzLnRyYW5zZm9ybVBvaW50KGkueCxpLnkpLHg6dC5kZXRhaWwueCx5OnQuZGV0YWlsLnksYm94OnRoaXMuZWwuYmJveCgpLHJvdGF0aW9uOnRoaXMuZWwudHJhbnNmb3JtKCkucm90YXRpb259LFwidGV4dFwiPT09dGhpcy5lbC50eXBlJiYodGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplPXRoaXMuZWwuYXR0cigpW1wiZm9udC1zaXplXCJdKSx2b2lkIDAhPT10LmRldGFpbC5pKXt2YXIgYT10aGlzLmVsLmFycmF5KCkudmFsdWVPZigpO3RoaXMucGFyYW1ldGVycy5pPXQuZGV0YWlsLmksdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzPVthW3QuZGV0YWlsLmldWzBdLGFbdC5kZXRhaWwuaV1bMV1dfXN3aXRjaCh0LnR5cGUpe2Nhc2VcImx0XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUtaVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueStpWzFdKS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdKX19O2JyZWFrO2Nhc2VcInJ0XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwyKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cihcImZvbnQtc2l6ZVwiLHRoaXMucGFyYW1ldGVycy5mb250U2l6ZStpWzBdKTtpPXRoaXMuY2hlY2tBc3BlY3RSYXRpbyhpLCEwKSx0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueStpWzFdKS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdKX19O2JyZWFrO2Nhc2VcInJiXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cihcImZvbnQtc2l6ZVwiLHRoaXMucGFyYW1ldGVycy5mb250U2l6ZStpWzBdKTtpPXRoaXMuY2hlY2tBc3BlY3RSYXRpbyhpKSx0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlXCJsYlwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMSk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUtaVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSwhMCksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlXCJ0XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwyKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55K2lbMV0pLmhlaWdodCh0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdKX19O2JyZWFrO2Nhc2VcInJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDApO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueSkud2lkdGgodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdKX19O2JyZWFrO2Nhc2VcImJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDApO2lmKHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLmhlaWdodCh0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdKX19O2JyZWFrO2Nhc2VcImxcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDEpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KS53aWR0aCh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0pfX07YnJlYWs7Y2FzZVwicm90XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dCt0aGlzLnBhcmFtZXRlcnMucC54LGE9ZSt0aGlzLnBhcmFtZXRlcnMucC55LHM9TWF0aC5hdGFuMih0aGlzLnBhcmFtZXRlcnMucC55LXRoaXMucGFyYW1ldGVycy5ib3gueS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC8yLHRoaXMucGFyYW1ldGVycy5wLngtdGhpcy5wYXJhbWV0ZXJzLmJveC54LXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvMikscj1NYXRoLmF0YW4yKGEtdGhpcy5wYXJhbWV0ZXJzLmJveC55LXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LzIsaS10aGlzLnBhcmFtZXRlcnMuYm94LngtdGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC8yKSxvPXRoaXMucGFyYW1ldGVycy5yb3RhdGlvbisxODAqKHItcykvTWF0aC5QSSt0aGlzLm9wdGlvbnMuc25hcFRvQW5nbGUvMjt0aGlzLmVsLmNlbnRlcih0aGlzLnBhcmFtZXRlcnMuYm94LmN4LHRoaXMucGFyYW1ldGVycy5ib3guY3kpLnJvdGF0ZShvLW8ldGhpcy5vcHRpb25zLnNuYXBUb0FuZ2xlLHRoaXMucGFyYW1ldGVycy5ib3guY3gsdGhpcy5wYXJhbWV0ZXJzLmJveC5jeSl9O2JyZWFrO2Nhc2VcInBvaW50XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSx0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMF0sdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzFdKSxhPXRoaXMuZWwuYXJyYXkoKS52YWx1ZU9mKCk7YVt0aGlzLnBhcmFtZXRlcnMuaV1bMF09dGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzBdK2lbMF0sYVt0aGlzLnBhcmFtZXRlcnMuaV1bMV09dGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzFdK2lbMV0sdGhpcy5lbC5wbG90KGEpfX10aGlzLmVsLmZpcmUoXCJyZXNpemVzdGFydFwiLHtkeDp0aGlzLnBhcmFtZXRlcnMueCxkeTp0aGlzLnBhcmFtZXRlcnMueSxldmVudDp0fSksU1ZHLm9uKHdpbmRvdyxcInRvdWNobW92ZS5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS51cGRhdGUodHx8d2luZG93LmV2ZW50KX0pKSxTVkcub24od2luZG93LFwidG91Y2hlbmQucmVzaXplXCIsKGZ1bmN0aW9uKCl7ZS5kb25lKCl9KSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNlbW92ZS5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS51cGRhdGUodHx8d2luZG93LmV2ZW50KX0pKSxTVkcub24od2luZG93LFwibW91c2V1cC5yZXNpemVcIiwoZnVuY3Rpb24oKXtlLmRvbmUoKX0pKX0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPXRoaXMuX2V4dHJhY3RQb3NpdGlvbih0KSxpPXRoaXMudHJhbnNmb3JtUG9pbnQoZS54LGUueSksYT1pLngtdGhpcy5wYXJhbWV0ZXJzLnAueCxzPWkueS10aGlzLnBhcmFtZXRlcnMucC55O3RoaXMubGFzdFVwZGF0ZUNhbGw9W2Esc10sdGhpcy5jYWxjKGEscyksdGhpcy5lbC5maXJlKFwicmVzaXppbmdcIix7ZHg6YSxkeTpzLGV2ZW50OnR9KX1lbHNlIHRoaXMubGFzdFVwZGF0ZUNhbGwmJnRoaXMuY2FsYyh0aGlzLmxhc3RVcGRhdGVDYWxsWzBdLHRoaXMubGFzdFVwZGF0ZUNhbGxbMV0pfSx0LnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKCl7dGhpcy5sYXN0VXBkYXRlQ2FsbD1udWxsLFNWRy5vZmYod2luZG93LFwibW91c2Vtb3ZlLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcIm1vdXNldXAucmVzaXplXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2htb3ZlLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNoZW5kLnJlc2l6ZVwiKSx0aGlzLmVsLmZpcmUoXCJyZXNpemVkb25lXCIpfSx0LnByb3RvdHlwZS5zbmFwVG9HcmlkPWZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzO3JldHVybiB2b2lkIDAhPT1hP3M9WyhpK3QpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLChhK2UpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkXTooaT1udWxsPT1pPzM6aSxzPVsodGhpcy5wYXJhbWV0ZXJzLmJveC54K3QrKDEmaT8wOnRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgpKSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCwodGhpcy5wYXJhbWV0ZXJzLmJveC55K2UrKDImaT8wOnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0KSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWRdKSx0PDAmJihzWzBdLT10aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksZTwwJiYoc1sxXS09dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLHQtPU1hdGguYWJzKHNbMF0pPHRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLzI/c1swXTpzWzBdLSh0PDA/LXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkOnRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSxlLT1NYXRoLmFicyhzWzFdKTx0aGlzLm9wdGlvbnMuc25hcFRvR3JpZC8yP3NbMV06c1sxXS0oZTwwPy10aGlzLm9wdGlvbnMuc25hcFRvR3JpZDp0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksdGhpcy5jb25zdHJhaW50VG9Cb3godCxlLGksYSl9LHQucHJvdG90eXBlLmNvbnN0cmFpbnRUb0JveD1mdW5jdGlvbih0LGUsaSxhKXt2YXIgcyxyLG89dGhpcy5vcHRpb25zLmNvbnN0cmFpbnR8fHt9O3JldHVybiB2b2lkIDAhPT1hPyhzPWkscj1hKToocz10aGlzLnBhcmFtZXRlcnMuYm94LngrKDEmaT8wOnRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgpLHI9dGhpcy5wYXJhbWV0ZXJzLmJveC55KygyJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCkpLHZvaWQgMCE9PW8ubWluWCYmcyt0PG8ubWluWCYmKHQ9by5taW5YLXMpLHZvaWQgMCE9PW8ubWF4WCYmcyt0Pm8ubWF4WCYmKHQ9by5tYXhYLXMpLHZvaWQgMCE9PW8ubWluWSYmcitlPG8ubWluWSYmKGU9by5taW5ZLXIpLHZvaWQgMCE9PW8ubWF4WSYmcitlPm8ubWF4WSYmKGU9by5tYXhZLXIpLFt0LGVdfSx0LnByb3RvdHlwZS5jaGVja0FzcGVjdFJhdGlvPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMub3B0aW9ucy5zYXZlQXNwZWN0UmF0aW8pcmV0dXJuIHQ7dmFyIGk9dC5zbGljZSgpLGE9dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC90aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCxzPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgrdFswXSxyPXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LXRbMV0sbz1zL3I7cmV0dXJuIG88YT8oaVsxXT1zL2EtdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQsZSYmKGlbMV09LWlbMV0pKTpvPmEmJihpWzBdPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtciphLGUmJihpWzBdPS1pWzBdKSksaX0sU1ZHLmV4dGVuZChTVkcuRWxlbWVudCx7cmVzaXplOmZ1bmN0aW9uKGUpe3JldHVybih0aGlzLnJlbWVtYmVyKFwiX3Jlc2l6ZUhhbmRsZXJcIil8fG5ldyB0KHRoaXMpKS5pbml0KGV8fHt9KSx0aGlzfX0pLFNWRy5FbGVtZW50LnByb3RvdHlwZS5yZXNpemUuZGVmYXVsdHM9e3NuYXBUb0FuZ2xlOi4xLHNuYXBUb0dyaWQ6MSxjb25zdHJhaW50Ont9LHNhdmVBc3BlY3RSYXRpbzohMX19KS5jYWxsKHRoaXMpfSgpLHZvaWQgMD09PXdpbmRvdy5BcGV4JiYod2luZG93LkFwZXg9e30pO3ZhciBHdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiaW5pdE1vZHVsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3R4LnB1YmxpY01ldGhvZHM9W1widXBkYXRlT3B0aW9uc1wiLFwidXBkYXRlU2VyaWVzXCIsXCJhcHBlbmREYXRhXCIsXCJhcHBlbmRTZXJpZXNcIixcImlzU2VyaWVzSGlkZGVuXCIsXCJ0b2dnbGVTZXJpZXNcIixcInNob3dTZXJpZXNcIixcImhpZGVTZXJpZXNcIixcInNldExvY2FsZVwiLFwicmVzZXRTZXJpZXNcIixcInpvb21YXCIsXCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIixcImRhdGFVUklcIixcImV4cG9ydFRvQ1NWXCIsXCJhZGRYYXhpc0Fubm90YXRpb25cIixcImFkZFlheGlzQW5ub3RhdGlvblwiLFwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsXCJjbGVhckFubm90YXRpb25zXCIsXCJyZW1vdmVBbm5vdGF0aW9uXCIsXCJwYXBlclwiLFwiZGVzdHJveVwiXSx0aGlzLmN0eC5ldmVudExpc3Q9W1wiY2xpY2tcIixcIm1vdXNlZG93blwiLFwibW91c2Vtb3ZlXCIsXCJtb3VzZWxlYXZlXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcInRvdWNobGVhdmVcIixcIm1vdXNldXBcIixcInRvdWNoZW5kXCJdLHRoaXMuY3R4LmFuaW1hdGlvbnM9bmV3IGIodGhpcy5jdHgpLHRoaXMuY3R4LmF4ZXM9bmV3IEoodGhpcy5jdHgpLHRoaXMuY3R4LmNvcmU9bmV3IFd0KHRoaXMuY3R4LmVsLHRoaXMuY3R4KSx0aGlzLmN0eC5jb25maWc9bmV3IEUoe30pLHRoaXMuY3R4LmRhdGE9bmV3IFcodGhpcy5jdHgpLHRoaXMuY3R4LmdyaWQ9bmV3IGoodGhpcy5jdHgpLHRoaXMuY3R4LmdyYXBoaWNzPW5ldyBtKHRoaXMuY3R4KSx0aGlzLmN0eC5jb3JlVXRpbHM9bmV3IHkodGhpcy5jdHgpLHRoaXMuY3R4LmNyb3NzaGFpcnM9bmV3IFEodGhpcy5jdHgpLHRoaXMuY3R4LmV2ZW50cz1uZXcgWih0aGlzLmN0eCksdGhpcy5jdHguZXhwb3J0cz1uZXcgRyh0aGlzLmN0eCksdGhpcy5jdHgubG9jYWxpemF0aW9uPW5ldyAkKHRoaXMuY3R4KSx0aGlzLmN0eC5vcHRpb25zPW5ldyBMLHRoaXMuY3R4LnJlc3BvbnNpdmU9bmV3IEsodGhpcy5jdHgpLHRoaXMuY3R4LnNlcmllcz1uZXcgTih0aGlzLmN0eCksdGhpcy5jdHgudGhlbWU9bmV3IHR0KHRoaXMuY3R4KSx0aGlzLmN0eC5mb3JtYXR0ZXJzPW5ldyBNKHRoaXMuY3R4KSx0aGlzLmN0eC50aXRsZVN1YnRpdGxlPW5ldyBldCh0aGlzLmN0eCksdGhpcy5jdHgubGVnZW5kPW5ldyBsdCh0aGlzLmN0eCksdGhpcy5jdHgudG9vbGJhcj1uZXcgaHQodGhpcy5jdHgpLHRoaXMuY3R4LnRvb2x0aXA9bmV3IGJ0KHRoaXMuY3R4KSx0aGlzLmN0eC5kaW1lbnNpb25zPW5ldyBvdCh0aGlzLmN0eCksdGhpcy5jdHgudXBkYXRlSGVscGVycz1uZXcgQnQodGhpcy5jdHgpLHRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb249bmV3IGN0KHRoaXMuY3R4KSx0aGlzLmN0eC53Lmdsb2JhbHMudG9vbHRpcD1uZXcgYnQodGhpcy5jdHgpfX1dKSx0fSgpLFZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJjbGVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaXNVcGRhdGluZzt0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uJiZ0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uLmRlc3Ryb3koKSx0aGlzLmN0eC50b29sYmFyJiZ0aGlzLmN0eC50b29sYmFyLmRlc3Ryb3koKSx0aGlzLmN0eC5hbmltYXRpb25zPW51bGwsdGhpcy5jdHguYXhlcz1udWxsLHRoaXMuY3R4LmFubm90YXRpb25zPW51bGwsdGhpcy5jdHguY29yZT1udWxsLHRoaXMuY3R4LmRhdGE9bnVsbCx0aGlzLmN0eC5ncmlkPW51bGwsdGhpcy5jdHguc2VyaWVzPW51bGwsdGhpcy5jdHgucmVzcG9uc2l2ZT1udWxsLHRoaXMuY3R4LnRoZW1lPW51bGwsdGhpcy5jdHguZm9ybWF0dGVycz1udWxsLHRoaXMuY3R4LnRpdGxlU3VidGl0bGU9bnVsbCx0aGlzLmN0eC5sZWdlbmQ9bnVsbCx0aGlzLmN0eC5kaW1lbnNpb25zPW51bGwsdGhpcy5jdHgub3B0aW9ucz1udWxsLHRoaXMuY3R4LmNyb3NzaGFpcnM9bnVsbCx0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uPW51bGwsdGhpcy5jdHgudXBkYXRlSGVscGVycz1udWxsLHRoaXMuY3R4LnRvb2xiYXI9bnVsbCx0aGlzLmN0eC5sb2NhbGl6YXRpb249bnVsbCx0aGlzLmN0eC53Lmdsb2JhbHMudG9vbHRpcD1udWxsLHRoaXMuY2xlYXJEb21FbGVtZW50cyh7aXNVcGRhdGluZzplfSl9fSx7a2V5Olwia2lsbFNWR1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuZWFjaCgoZnVuY3Rpb24odCxlKXt0aGlzLnJlbW92ZUNsYXNzKFwiKlwiKSx0aGlzLm9mZigpLHRoaXMuc3RvcCgpfSksITApLHQudW5ncm91cCgpLHQuY2xlYXIoKX19LHtrZXk6XCJjbGVhckRvbUVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQuaXNVcGRhdGluZyxhPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ub2RlO2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnBhcmVudE5vZGUmJiFpJiYoYS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0PVwidW5zZXRcIik7dmFyIHM9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbDtzJiZ0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7cy5yZW1vdmVFdmVudExpc3RlbmVyKHQsZS5jdHguZXZlbnRzLmRvY3VtZW50RXZlbnQpfSkpO3ZhciByPXRoaXMudy5nbG9iYWxzLmRvbTtpZihudWxsIT09dGhpcy5jdHguZWwpZm9yKDt0aGlzLmN0eC5lbC5maXJzdENoaWxkOyl0aGlzLmN0eC5lbC5yZW1vdmVDaGlsZCh0aGlzLmN0eC5lbC5maXJzdENoaWxkKTt0aGlzLmtpbGxTVkcoci5QYXBlciksci5QYXBlci5yZW1vdmUoKSxyLmVsV3JhcD1udWxsLHIuZWxHcmFwaGljYWw9bnVsbCxyLmVsTGVnZW5kV3JhcD1udWxsLHIuZWxMZWdlbmRGb3JlaWduPW51bGwsci5iYXNlRWw9bnVsbCxyLmVsR3JpZFJlY3Q9bnVsbCxyLmVsR3JpZFJlY3RNYXNrPW51bGwsci5lbEdyaWRSZWN0TWFya2VyTWFzaz1udWxsLHIuZWxGb3JlY2FzdE1hc2s9bnVsbCxyLmVsTm9uRm9yZWNhc3RNYXNrPW51bGwsci5lbERlZnM9bnVsbH19XSksdH0oKSxqdD1uZXcgV2Vha01hcDt2YXIgX3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMub3B0cz1pLHRoaXMuY3R4PXRoaXMsdGhpcy53PW5ldyBGKGkpLmluaXQoKSx0aGlzLmVsPWUsdGhpcy53Lmdsb2JhbHMuY3VpZD14LnJhbmRvbUlkKCksdGhpcy53Lmdsb2JhbHMuY2hhcnRJRD10aGlzLncuY29uZmlnLmNoYXJ0LmlkP3guZXNjYXBlU3RyaW5nKHRoaXMudy5jb25maWcuY2hhcnQuaWQpOnRoaXMudy5nbG9iYWxzLmN1aWQsbmV3IEd0KHRoaXMpLmluaXRNb2R1bGVzKCksdGhpcy5jcmVhdGU9eC5iaW5kKHRoaXMuY3JlYXRlLHRoaXMpLHRoaXMud2luZG93UmVzaXplSGFuZGxlcj10aGlzLl93aW5kb3dSZXNpemVIYW5kbGVyLmJpbmQodGhpcyksdGhpcy5wYXJlbnRSZXNpemVIYW5kbGVyPXRoaXMuX3BhcmVudFJlc2l6ZUNhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIHIodCxbe2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsaSl7aWYobnVsbCE9PXQuZWwpe3ZvaWQgMD09PUFwZXguX2NoYXJ0SW5zdGFuY2VzJiYoQXBleC5fY2hhcnRJbnN0YW5jZXM9W10pLHQudy5jb25maWcuY2hhcnQuaWQmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLnB1c2goe2lkOnQudy5nbG9iYWxzLmNoYXJ0SUQsZ3JvdXA6dC53LmNvbmZpZy5jaGFydC5ncm91cCxjaGFydDp0fSksdC5zZXRMb2NhbGUodC53LmNvbmZpZy5jaGFydC5kZWZhdWx0TG9jYWxlKTt2YXIgYT10LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVNb3VudDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhJiZhKHQsdC53KSx0LmV2ZW50cy5maXJlRXZlbnQoXCJiZWZvcmVNb3VudFwiLFt0LHQud10pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdC53aW5kb3dSZXNpemVIYW5kbGVyKSxmdW5jdGlvbih0LGUpe3ZhciBpPSExO2lmKHQubm9kZVR5cGUhPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpe3ZhciBhPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XCJub25lXCIhPT10LnN0eWxlLmRpc3BsYXkmJjAhPT1hLndpZHRofHwoaT0hMCl9dmFyIHM9bmV3IFJlc2l6ZU9ic2VydmVyKChmdW5jdGlvbihhKXtpJiZlLmNhbGwodCxhKSxpPSEwfSkpO3Qubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gcy5vYnNlcnZlKHQpfSkpOnMub2JzZXJ2ZSh0KSxqdC5zZXQoZSxzKX0odC5lbC5wYXJlbnROb2RlLHQucGFyZW50UmVzaXplSGFuZGxlciksIXQuY3NzKXt2YXIgcz10LmVsLmdldFJvb3ROb2RlJiZ0LmVsLmdldFJvb3ROb2RlKCkscj14LmlzKFwiU2hhZG93Um9vdFwiLHMpLG89dC5lbC5vd25lckRvY3VtZW50LG49by5nZXRFbGVtZW50QnlJZChcImFwZXhjaGFydHMtY3NzXCIpOyFyJiZufHwodC5jc3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpLHQuY3NzLmlkPVwiYXBleGNoYXJ0cy1jc3NcIix0LmNzcy50ZXh0Q29udGVudD0nQGtleWZyYW1lcyBvcGFxdWUge1xcbiAgMCUge1xcbiAgICAgIG9wYWNpdHk6IDBcXG4gIH1cXG5cXG4gIHRvIHtcXG4gICAgICBvcGFjaXR5OiAxXFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgcmVzaXplYW5pbSB7XFxuICAwJSx0byB7XFxuICAgICAgb3BhY2l0eTogMFxcbiAgfVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbiAgd2lkdGg6IDZweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcXG4gIGJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSlcXG59XFxuXFxuLmFwZXhjaGFydHMtaW5uZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRleHQgdHNwYW4ge1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXRcXG59XFxuXFxuLmxlZ2VuZC1tb3VzZW92ZXItaW5hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbDtcXG4gIG9wYWNpdHk6IC4yXFxufVxcblxcbi5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IHtcXG4gIHBhZGRpbmctbGVmdDogMTVweDtcXG4gIG1hcmdpbi1sZWZ0OiAtMTVweDtcXG59XFxuXFxuLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCB7XFxuICBvcGFjaXR5OiAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAge1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgYm94LXNoYWRvdzogMnB4IDJweCA2cHggLTRweCAjOTk5O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgZm9udC1zaXplOiAxNHB4O1xcbiAgbGVmdDogNjJweDtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMjBweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB6LWluZGV4OiAxMjtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQge1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2UzZTNlMztcXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsLjk2KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMzAsMzAsMzAsLjgpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAgKiB7XFxuICBmb250LWZhbWlseTogaW5oZXJpdFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIHtcXG4gIHBhZGRpbmc6IDZweDtcXG4gIGZvbnQtc2l6ZTogMTVweDtcXG4gIG1hcmdpbi1ib3R0b206IDRweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XFxuICBiYWNrZ3JvdW5kOiAjZWNlZmYxO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGRcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzMzXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBtYXJnaW4tbGVmdDogNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDYwMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWw6ZW1wdHksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LWxhYmVsOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGU6ZW1wdHkge1xcbiAgZGlzcGxheTogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIHtcXG4gIHBhZGRpbmc6IDZweCAwIDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLWdvYWxzLWdyb3VwLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUge1xcbiAgZGlzcGxheTogZmxleFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWw6bm90KDplbXB0eSksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOm5vdCg6ZW1wdHkpIHtcXG4gIG1hcmdpbi10b3A6IC02cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXIge1xcbiAgd2lkdGg6IDEycHg7XFxuICBoZWlnaHQ6IDEycHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB0b3A6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCVcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAge1xcbiAgcGFkZGluZzogMCAxMHB4O1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLmFwZXhjaGFydHMtYWN0aXZlIC5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcXG4gIG9wYWNpdHk6IDFcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAuYXBleGNoYXJ0cy1hY3RpdmUsLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXA6bGFzdC1jaGlsZCB7XFxuICBwYWRkaW5nLWJvdHRvbTogNHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLWhpZGRlbiB7XFxuICBvcGFjaXR5OiAwO1xcbiAgaGVpZ2h0OiAwO1xcbiAgbGluZS1oZWlnaHQ6IDA7XFxuICBwYWRkaW5nOiAwIWltcG9ydGFudFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXktZ3JvdXAge1xcbiAgcGFkZGluZzogNnB4IDAgNXB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLWN1c3RvbS10b29sdGlwLC5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94IHtcXG4gIHBhZGRpbmc6IDRweCA4cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3hQbG90IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2VcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3g+ZGl2IHtcXG4gIG1hcmdpbjogNHB4IDBcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3ggc3Bhbi52YWx1ZSB7XFxuICBmb250LXdlaWdodDogNzAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIge1xcbiAgcGFkZGluZzogNXB4IDhweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIC5jYXRlZ29yeSB7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgY29sb3I6ICM3NzdcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuc2VyaWVzLW5hbWUge1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgbWFyZ2luLWJvdHRvbTogNXB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAge1xcbiAgb3BhY2l0eTogMDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgY29sb3I6ICMzNzNkM2Y7XFxuICBmb250LXNpemU6IDEzcHg7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQ6ICNlY2VmZjE7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCB7XFxuICBwYWRkaW5nOiA5cHggMTBweDtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjUpO1xcbiAgY29sb3I6ICNmZmZcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgbGVmdDogNTAlO1xcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGNvbnRlbnQ6IFwiIFwiO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogNnB4O1xcbiAgbWFyZ2luLWxlZnQ6IC02cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmJlZm9yZSB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXdpZHRoOiA3cHg7XFxuICBtYXJnaW4tbGVmdDogLTdweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcXG4gIGJvdHRvbTogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YmVmb3JlIHtcXG4gIHRvcDogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmFmdGVyIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICNlY2VmZjFcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTpiZWZvcmUge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzkwYTRhZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tLmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tLmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLDAsMCwuNSlcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjZWNlZmYxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YmVmb3JlIHtcXG4gIGJvcmRlci10b3AtY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAge1xcbiAgcGFkZGluZzogNHB4IDEwcHhcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjUpO1xcbiAgY29sb3I6ICNmZmZcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgdG9wOiA1MCU7XFxuICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgY29udGVudDogXCIgXCI7XFxuICBoZWlnaHQ6IDA7XFxuICB3aWR0aDogMDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDphZnRlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXdpZHRoOiA2cHg7XFxuICBtYXJnaW4tdG9wOiAtNnB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogN3B4O1xcbiAgbWFyZ2luLXRvcDogLTdweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDpiZWZvcmUge1xcbiAgbGVmdDogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmJlZm9yZSB7XFxuICByaWdodDogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDphZnRlciB7XFxuICBib3JkZXItbGVmdC1jb2xvcjogI2VjZWZmMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDpiZWZvcmUge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0LmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDphZnRlciB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6ICNlY2VmZjFcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmJlZm9yZSB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0LmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1oaWRkZW4ge1xcbiAgZGlzcGxheTogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycywuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycyB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzLmFwZXhjaGFydHMtYWN0aXZlLC5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLmFwZXhjaGFydHMtYWN0aXZlIHtcXG4gIG9wYWNpdHk6IDE7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlbiB7XFxuICBvcGFjaXR5OiAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0IHtcXG4gIGN1cnNvcjogbW92ZVxcbn1cXG5cXG4uc3ZnX3NlbGVjdF9ib3VuZGluZ1JlY3QsLnN2Z19zZWxlY3RfcG9pbnRzX3JvdCB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW5cXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9ib3VuZGluZ1JlY3QsLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfcm90IHtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW5cXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfbCwuYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCtnIC5zdmdfc2VsZWN0X3BvaW50c19yIHtcXG4gIGN1cnNvcjogZXctcmVzaXplO1xcbiAgb3BhY2l0eTogMTtcXG4gIHZpc2liaWxpdHk6IHZpc2libGVcXG59XFxuXFxuLnN2Z19zZWxlY3RfcG9pbnRzIHtcXG4gIGZpbGw6ICNlZmVmZWY7XFxuICBzdHJva2U6ICMzMzM7XFxuICByeDogMlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zdmcuYXBleGNoYXJ0cy16b29tYWJsZS5ob3ZlcmluZy16b29tIHtcXG4gIGN1cnNvcjogY3Jvc3NoYWlyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXN2Zy5hcGV4Y2hhcnRzLXpvb21hYmxlLmhvdmVyaW5nLXBhbiB7XFxuICBjdXJzb3I6IG1vdmVcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXBhbi1pY29uLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24sLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24sLmFwZXhjaGFydHMtdG9vbGJhci1jdXN0b20taWNvbiwuYXBleGNoYXJ0cy16b29tLWljb24sLmFwZXhjaGFydHMtem9vbWluLWljb24sLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XFxuICBjb2xvcjogIzZlODE5MjtcXG4gIHRleHQtYWxpZ246IGNlbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb20taWNvbiBzdmcsLmFwZXhjaGFydHMtem9vbWluLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiBzdmcge1xcbiAgZmlsbDogIzZlODE5Mlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiBzdmcge1xcbiAgZmlsbDogIzQ0NDtcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjc2KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLW1lbnUtaWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1yZXNldC1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtem9vbS1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiBzdmcge1xcbiAgZmlsbDogI2YzZjRmNVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtcmVzZXQtem9vbS1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnLC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZywuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtem9vbS1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnIHtcXG4gIGZpbGw6ICMwMDhmZmJcXG59XFxuXFxuLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtbWVudS1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1yZXNldC1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbjpub3QoLmFwZXhjaGFydHMtc2VsZWN0ZWQpOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29tLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtem9vbWluLWljb246aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbjpob3ZlciBzdmcge1xcbiAgZmlsbDogIzMzM1xcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWljb24sLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXJlc2V0LWljb24ge1xcbiAgbWFyZ2luLWxlZnQ6IDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWljb24sLmFwZXhjaGFydHMtcmVzZXQtaWNvbiwuYXBleGNoYXJ0cy16b29tLWljb24ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSguODUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXpvb21pbi1pY29uLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKC43KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xcbiAgbWFyZ2luLXJpZ2h0OiAzcHhcXG59XFxuXFxuLmFwZXhjaGFydHMtcGFuLWljb24ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSguNjIpO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgbGVmdDogMXB4O1xcbiAgdG9wOiAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uIHN2ZyB7XFxuICBmaWxsOiAjZmZmO1xcbiAgc3Ryb2tlOiAjNmU4MTkyO1xcbiAgc3Ryb2tlLXdpZHRoOiAyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnIHtcXG4gIHN0cm9rZTogIzAwOGZmYlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1wYW4taWNvbjpub3QoLmFwZXhjaGFydHMtc2VsZWN0ZWQpOmhvdmVyIHN2ZyB7XFxuICBzdHJva2U6ICMzMzNcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbGJhciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMTtcXG4gIG1heC13aWR0aDogMTc2cHg7XFxuICB0ZXh0LWFsaWduOiByaWdodDtcXG4gIGJvcmRlci1yYWRpdXM6IDNweDtcXG4gIHBhZGRpbmc6IDAgNnB4IDJweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUge1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMTAwJTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICBwYWRkaW5nOiAzcHg7XFxuICByaWdodDogMTBweDtcXG4gIG9wYWNpdHk6IDA7XFxuICBtaW4td2lkdGg6IDExMHB4O1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUuYXBleGNoYXJ0cy1tZW51LW9wZW4ge1xcbiAgb3BhY2l0eTogMTtcXG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUtaXRlbSB7XFxuICBwYWRkaW5nOiA2cHggN3B4O1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgY3Vyc29yOiBwb2ludGVyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLW1lbnUtaXRlbTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiAjZWVlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtbWVudSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGNvbG9yOiAjZmZmXFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpIHtcXG4gIC5hcGV4Y2hhcnRzLWNhbnZhczpob3ZlciAuYXBleGNoYXJ0cy10b29sYmFyIHtcXG4gICAgICBvcGFjaXR5OiAxXFxuICB9XFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiwuYXBleGNoYXJ0cy1kYXRhbGFiZWwuYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiwuYXBleGNoYXJ0cy1oaWRlIC5hcGV4Y2hhcnRzLXNlcmllcy1wb2ludHMge1xcbiAgb3BhY2l0eTogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1oaWRkZW4tZWxlbWVudC1zaG93biB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogMC4yNXMgZWFzZSBhbGw7XFxufVxcbi5hcGV4Y2hhcnRzLWRhdGFsYWJlbCwuYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWwsLmFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMsLmFwZXhjaGFydHMtcGllLWxhYmVsIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLXBpZS1sYWJlbC1kZWxheSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgYW5pbWF0aW9uLW5hbWU6IG9wYXF1ZTtcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogLjNzO1xcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlXFxufVxcblxcbi5hcGV4Y2hhcnRzLWFubm90YXRpb24tcmVjdCwuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1hcmVhLC5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlci5uby1wb2ludGVyLWV2ZW50cywuYXBleGNoYXJ0cy1ncmlkbGluZSwuYXBleGNoYXJ0cy1saW5lLC5hcGV4Y2hhcnRzLWxpbmUtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlci5uby1wb2ludGVyLWV2ZW50cywuYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uLWxhYmVsLC5hcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBwYXRoLC5hcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBwb2x5Z29uLC5hcGV4Y2hhcnRzLXRvb2xiYXIgc3ZnLC5hcGV4Y2hhcnRzLXRvb2x0aXAgLmFwZXhjaGFydHMtbWFya2VyLC5hcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb24tbGFiZWwsLmFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbi1sYWJlbCwuYXBleGNoYXJ0cy16b29tLXJlY3Qge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtbWFya2VyIHtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLnJlc2l6ZS10cmlnZ2VycyB7XFxuICBhbmltYXRpb246IDFtcyByZXNpemVhbmltO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgb3BhY2l0eTogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlblxcbn1cXG5cXG4uY29udHJhY3QtdHJpZ2dlcjpiZWZvcmUsLnJlc2l6ZS10cmlnZ2VycywucmVzaXplLXRyaWdnZXJzPmRpdiB7XFxuICBjb250ZW50OiBcIiBcIjtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMFxcbn1cXG5cXG4ucmVzaXplLXRyaWdnZXJzPmRpdiB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJhY2tncm91bmQ6ICNlZWU7XFxuICBvdmVyZmxvdzogYXV0b1xcbn1cXG5cXG4uY29udHJhY3QtdHJpZ2dlcjpiZWZvcmUge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHdpZHRoOiAyMDAlO1xcbiAgaGVpZ2h0OiAyMDAlXFxufVxcblxcbi5hcGV4Y2hhcnRzLWJhci1nb2Fscy1tYXJrZXJze1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtYmFyLXNoYWRvd3N7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1yYW5nZWJhci1nb2Fscy1tYXJrZXJze1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59JyxyP3MucHJlcGVuZCh0LmNzcyk6by5oZWFkLmFwcGVuZENoaWxkKHQuY3NzKSl9dmFyIGw9dC5jcmVhdGUodC53LmNvbmZpZy5zZXJpZXMse30pO2lmKCFsKXJldHVybiBlKHQpO3QubW91bnQobCkudGhlbigoZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VudGVkJiZ0LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VudGVkKHQsdC53KSx0LmV2ZW50cy5maXJlRXZlbnQoXCJtb3VudGVkXCIsW3QsdC53XSksZShsKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7aSh0KX0pKX1lbHNlIGkobmV3IEVycm9yKFwiRWxlbWVudCBub3QgZm91bmRcIikpfSkpfX0se2tleTpcImNyZWF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O25ldyBHdCh0aGlzKS5pbml0TW9kdWxlcygpO3ZhciBhPXRoaXMudy5nbG9iYWxzOyhhLm5vRGF0YT0hMSxhLmFuaW1hdGlvbkVuZGVkPSExLHRoaXMucmVzcG9uc2l2ZS5jaGVja1Jlc3BvbnNpdmVDb25maWcoZSksaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKSYmbmV3IFgoaS5jb25maWcpLmNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyhpLmNvbmZpZyx0aGlzLmN0eCk7aWYobnVsbD09PXRoaXMuZWwpcmV0dXJuIGEuYW5pbWF0aW9uRW5kZWQ9ITAsbnVsbDtpZih0aGlzLmNvcmUuc2V0dXBFbGVtZW50cygpLFwidHJlZW1hcFwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmKGkuY29uZmlnLmdyaWQuc2hvdz0hMSxpLmNvbmZpZy55YXhpc1swXS5zaG93PSExKSwwPT09YS5zdmdXaWR0aClyZXR1cm4gYS5hbmltYXRpb25FbmRlZD0hMCxudWxsO3ZhciBzPXkuY2hlY2tDb21ib1Nlcmllcyh0KTthLmNvbWJvQ2hhcnRzPXMuY29tYm9DaGFydHMsYS5jb21ib0JhckNvdW50PXMuY29tYm9CYXJDb3VudDt2YXIgcj10LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhJiYwPT09dC5kYXRhLmxlbmd0aH0pKTsoMD09PXQubGVuZ3RofHxyKSYmdGhpcy5zZXJpZXMuaGFuZGxlTm9EYXRhKCksdGhpcy5ldmVudHMuc2V0dXBFdmVudEhhbmRsZXJzKCksdGhpcy5kYXRhLnBhcnNlRGF0YSh0KSx0aGlzLnRoZW1lLmluaXQoKSxuZXcgSCh0aGlzKS5zZXRHbG9iYWxNYXJrZXJTaXplKCksdGhpcy5mb3JtYXR0ZXJzLnNldExhYmVsRm9ybWF0dGVycygpLHRoaXMudGl0bGVTdWJ0aXRsZS5kcmF3KCksYS5ub0RhdGEmJmEuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCE9PWEuc2VyaWVzLmxlbmd0aCYmIWkuY29uZmlnLmxlZ2VuZC5zaG93Rm9yU2luZ2xlU2VyaWVzfHx0aGlzLmxlZ2VuZC5pbml0KCksdGhpcy5zZXJpZXMuaGFzQWxsU2VyaWVzRXF1YWxYKCksYS5heGlzQ2hhcnRzJiYodGhpcy5jb3JlLmNvcmVDYWxjdWxhdGlvbnMoKSxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiZ0aGlzLmZvcm1hdHRlcnMuc2V0TGFiZWxGb3JtYXR0ZXJzKCksdGhpcy5jdHgudG9vbGJhci5taW5YPWkuZ2xvYmFscy5taW5YLHRoaXMuY3R4LnRvb2xiYXIubWF4WD1pLmdsb2JhbHMubWF4WCksdGhpcy5mb3JtYXR0ZXJzLmhlYXRtYXBMYWJlbEZvcm1hdHRlcnMoKSxuZXcgeSh0aGlzKS5nZXRMYXJnZXN0TWFya2VyU2l6ZSgpLHRoaXMuZGltZW5zaW9ucy5wbG90Q29vcmRzKCk7dmFyIG89dGhpcy5jb3JlLnh5U2V0dGluZ3MoKTt0aGlzLmdyaWQuY3JlYXRlR3JpZE1hc2soKTt2YXIgbj10aGlzLmNvcmUucGxvdENoYXJ0VHlwZSh0LG8pLGw9bmV3IE8odGhpcyk7cmV0dXJuIGwuYnJpbmdGb3J3YXJkKCksaS5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmVuYWJsZWQmJmwuZGF0YUxhYmVsc0JhY2tncm91bmQoKSx0aGlzLmNvcmUuc2hpZnRHcmFwaFBvc2l0aW9uKCkse2VsR3JhcGg6bix4eVJhdGlvczpvLGRpbWVuc2lvbnM6e3Bsb3Q6e2xlZnQ6aS5nbG9iYWxzLnRyYW5zbGF0ZVgsdG9wOmkuZ2xvYmFscy50cmFuc2xhdGVZLHdpZHRoOmkuZ2xvYmFscy5ncmlkV2lkdGgsaGVpZ2h0OmkuZ2xvYmFscy5ncmlkSGVpZ2h0fX19fX0se2tleTpcIm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsaT10aGlzLGE9aS53O3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyxyKXtpZihudWxsPT09aS5lbClyZXR1cm4gcihuZXcgRXJyb3IoXCJOb3QgZW5vdWdoIGRhdGEgdG8gZGlzcGxheSBvciB0YXJnZXQgZWxlbWVudCBub3QgZm91bmRcIikpOyhudWxsPT09ZXx8YS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZCkmJmkuc2VyaWVzLmhhbmRsZU5vRGF0YSgpLGkuZ3JpZD1uZXcgaihpKTt2YXIgbyxuLGw9aS5ncmlkLmRyYXdHcmlkKCk7KGkuYW5ub3RhdGlvbnM9bmV3IFAoaSksaS5hbm5vdGF0aW9ucy5kcmF3SW1hZ2VBbm5vcygpLGkuYW5ub3RhdGlvbnMuZHJhd1RleHRBbm5vcygpLFwiYmFja1wiPT09YS5jb25maWcuZ3JpZC5wb3NpdGlvbikmJihsJiZhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChsLmVsKSxudWxsIT1sJiZudWxsIT09KG89bC5lbEdyaWRCb3JkZXJzKSYmdm9pZCAwIT09byYmby5ub2RlJiZhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChsLmVsR3JpZEJvcmRlcnMpKTtpZihBcnJheS5pc0FycmF5KGUuZWxHcmFwaCkpZm9yKHZhciBoPTA7aDxlLmVsR3JhcGgubGVuZ3RoO2grKylhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChlLmVsR3JhcGhbaF0pO2Vsc2UgYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoZS5lbEdyYXBoKTtcImZyb250XCI9PT1hLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiYobCYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQobC5lbCksbnVsbCE9bCYmbnVsbCE9PShuPWwuZWxHcmlkQm9yZGVycykmJnZvaWQgMCE9PW4mJm4ubm9kZSYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQobC5lbEdyaWRCb3JkZXJzKSk7XCJmcm9udFwiPT09YS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5wb3NpdGlvbiYmaS5jcm9zc2hhaXJzLmRyYXdYQ3Jvc3NoYWlycygpLFwiZnJvbnRcIj09PWEuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMucG9zaXRpb24mJmkuY3Jvc3NoYWlycy5kcmF3WUNyb3NzaGFpcnMoKSxcInRyZWVtYXBcIiE9PWEuY29uZmlnLmNoYXJ0LnR5cGUmJmkuYXhlcy5kcmF3QXhpcyhhLmNvbmZpZy5jaGFydC50eXBlLGwpO3ZhciBjPW5ldyBWKHQuY3R4LGwpLGQ9bmV3IHEodC5jdHgsbCk7aWYobnVsbCE9PWwmJihjLnhBeGlzTGFiZWxDb3JyZWN0aW9ucyhsLnhBeGlzVGlja1dpZHRoKSxkLnNldFlBeGlzVGV4dEFsaWdubWVudHMoKSxhLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsZSl7LTE9PT1hLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkmJmQueUF4aXNUaXRsZVJvdGF0ZShlLHQub3Bwb3NpdGUpfSkpKSxpLmFubm90YXRpb25zLmRyYXdBeGVzQW5ub3RhdGlvbnMoKSwhYS5nbG9iYWxzLm5vRGF0YSl7aWYoYS5jb25maWcudG9vbHRpcC5lbmFibGVkJiYhYS5nbG9iYWxzLm5vRGF0YSYmaS53Lmdsb2JhbHMudG9vbHRpcC5kcmF3VG9vbHRpcChlLnh5UmF0aW9zKSxhLmdsb2JhbHMuYXhpc0NoYXJ0cyYmKGEuZ2xvYmFscy5pc1hOdW1lcmljfHxhLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fGEuZ2xvYmFscy5pc1JhbmdlQmFyKSkoYS5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkfHxhLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24mJmEuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5lbmFibGVkfHxhLmNvbmZpZy5jaGFydC5wYW4mJmEuY29uZmlnLmNoYXJ0LnBhbi5lbmFibGVkKSYmaS56b29tUGFuU2VsZWN0aW9uLmluaXQoe3h5UmF0aW9zOmUueHlSYXRpb3N9KTtlbHNle3ZhciBnPWEuY29uZmlnLmNoYXJ0LnRvb2xiYXIudG9vbHM7W1wiem9vbVwiLFwiem9vbWluXCIsXCJ6b29tb3V0XCIsXCJzZWxlY3Rpb25cIixcInBhblwiLFwicmVzZXRcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7Z1t0XT0hMX0pKX1hLmNvbmZpZy5jaGFydC50b29sYmFyLnNob3cmJiFhLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkJiZpLnRvb2xiYXIuY3JlYXRlVG9vbGJhcigpfWEuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5sZW5ndGg+MCYmYS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QubWV0aG9kKHQucGFyYW1zLCExLHQuY29udGV4dCl9KSksYS5nbG9iYWxzLmF4aXNDaGFydHN8fGEuZ2xvYmFscy5ub0RhdGF8fGkuY29yZS5yZXNpemVOb25BeGlzQ2hhcnRzKCkscyhpKX0pKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdGhpcy53aW5kb3dSZXNpemVIYW5kbGVyKSx0aGlzLmVsLnBhcmVudE5vZGUsdD10aGlzLnBhcmVudFJlc2l6ZUhhbmRsZXIsKGU9anQuZ2V0KHQpKSYmKGUuZGlzY29ubmVjdCgpLGp0LmRlbGV0ZSh0KSk7dmFyIGk9dGhpcy53LmNvbmZpZy5jaGFydC5pZDtpJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuaWQ9PT14LmVzY2FwZVN0cmluZyhpKSYmQXBleC5fY2hhcnRJbnN0YW5jZXMuc3BsaWNlKGUsMSl9KSksbmV3IFZ0KHRoaXMuY3R4KS5jbGVhcih7aXNVcGRhdGluZzohMX0pfX0se2tleTpcInVwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxhPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scz0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLHI9IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XSxvPXRoaXMudztyZXR1cm4gby5nbG9iYWxzLnNlbGVjdGlvbj12b2lkIDAsdC5zZXJpZXMmJih0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSwhMCwhMSksdC5zZXJpZXMubGVuZ3RoJiZ0LnNlcmllc1swXS5kYXRhJiYodC5zZXJpZXM9dC5zZXJpZXMubWFwKChmdW5jdGlvbih0LGkpe3JldHVybiBlLnVwZGF0ZUhlbHBlcnMuX2V4dGVuZFNlcmllcyh0LGkpfSkpKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksdC54YXhpcyYmKHQ9dGhpcy51cGRhdGVIZWxwZXJzLmZvcmNlWEF4aXNVcGRhdGUodCkpLHQueWF4aXMmJih0PXRoaXMudXBkYXRlSGVscGVycy5mb3JjZVlBeGlzVXBkYXRlKHQpKSxvLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg+MCYmdGhpcy5zZXJpZXMuY2xlYXJQcmV2aW91c1BhdGhzKCksdC50aGVtZSYmKHQ9dGhpcy50aGVtZS51cGRhdGVUaGVtZU9wdGlvbnModCkpLHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh0LGksYSxzLHIpfX0se2tleTpcInVwZGF0ZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdLGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07cmV0dXJuIHRoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKCExKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyh0LGUsaSl9fSx7a2V5OlwiYXBwZW5kU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sYT10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpO3JldHVybiBhLnB1c2godCksdGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoITEpLHRoaXMudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKGEsZSxpKX19LHtrZXk6XCJhcHBlbmREYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPXRoaXM7aS53Lmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAsaS5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpO2Zvcih2YXIgYT1pLncuY29uZmlnLnNlcmllcy5zbGljZSgpLHM9MDtzPGEubGVuZ3RoO3MrKylpZihudWxsIT09dFtzXSYmdm9pZCAwIT09dFtzXSlmb3IodmFyIHI9MDtyPHRbc10uZGF0YS5sZW5ndGg7cisrKWFbc10uZGF0YS5wdXNoKHRbc10uZGF0YVtyXSk7cmV0dXJuIGkudy5jb25maWcuc2VyaWVzPWEsZSYmKGkudy5nbG9iYWxzLmluaXRpYWxTZXJpZXM9eC5jbG9uZShpLncuY29uZmlnLnNlcmllcykpLHRoaXMudXBkYXRlKCl9fSx7a2V5OlwidXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGksYSl7bmV3IFZ0KGUuY3R4KS5jbGVhcih7aXNVcGRhdGluZzohMH0pO3ZhciBzPWUuY3JlYXRlKGUudy5jb25maWcuc2VyaWVzLHQpO2lmKCFzKXJldHVybiBpKGUpO2UubW91bnQocykudGhlbigoZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkJiZlLncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkKGUsZS53KSxlLmV2ZW50cy5maXJlRXZlbnQoXCJ1cGRhdGVkXCIsW2UsZS53XSksZS53Lmdsb2JhbHMuaXNEaXJ0eT0hMCxpKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXthKHQpfSkpfSkpfX0se2tleTpcImdldFN5bmNlZENoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRHcm91cGVkQ2hhcnRzKCksZT1bdGhpc107cmV0dXJuIHQubGVuZ3RoJiYoZT1bXSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pKSksZX19LHtrZXk6XCJnZXRHcm91cGVkQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBBcGV4Ll9jaGFydEluc3RhbmNlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe2lmKHQuZ3JvdXApcmV0dXJuITB9KSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC53LmNvbmZpZy5jaGFydC5ncm91cD09PWUuZ3JvdXA/ZS5jaGFydDp0fSkpfX0se2tleTpcInRvZ2dsZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlcmllcy50b2dnbGVTZXJpZXModCl9fSx7a2V5OlwiaGlnaGxpZ2h0U2VyaWVzT25MZWdlbmRIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2VyaWVzLnRvZ2dsZVNlcmllc09uSG92ZXIodCxlKX19LHtrZXk6XCJzaG93U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zZXJpZXMuc2hvd1Nlcmllcyh0KX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zZXJpZXMuaGlkZVNlcmllcyh0KX19LHtrZXk6XCJpc1Nlcmllc0hpZGRlblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2VyaWVzLmlzU2VyaWVzSGlkZGVuKHQpfX0se2tleTpcInJlc2V0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTt0aGlzLnNlcmllcy5yZXNldFNlcmllcyh0LGUpfX0se2tleTpcImFkZEV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuZXZlbnRzLmFkZEV2ZW50TGlzdGVuZXIodCxlKX19LHtrZXk6XCJyZW1vdmVFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmV2ZW50cy5yZW1vdmVFdmVudExpc3RlbmVyKHQsZSl9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp2b2lkIDAsYT10aGlzO2kmJihhPWkpLGEuYW5ub3RhdGlvbnMuYWRkWGF4aXNBbm5vdGF0aW9uRXh0ZXJuYWwodCxlLGEpfX0se2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcztpJiYoYT1pKSxhLmFubm90YXRpb25zLmFkZFlheGlzQW5ub3RhdGlvbkV4dGVybmFsKHQsZSxhKX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnZvaWQgMCxhPXRoaXM7aSYmKGE9aSksYS5hbm5vdGF0aW9ucy5hZGRQb2ludEFubm90YXRpb25FeHRlcm5hbCh0LGUsYSl9fSx7a2V5OlwiY2xlYXJBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnZvaWQgMCxlPXRoaXM7dCYmKGU9dCksZS5hbm5vdGF0aW9ucy5jbGVhckFubm90YXRpb25zKGUpfX0se2tleTpcInJlbW92ZUFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dm9pZCAwLGk9dGhpcztlJiYoaT1lKSxpLmFubm90YXRpb25zLnJlbW92ZUFubm90YXRpb24oaSx0KX19LHtrZXk6XCJnZXRDaGFydEFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1pbm5lclwiKX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbFhSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY29yZVV0aWxzLmdldFNlcmllc1RvdGFsc1hSYW5nZSh0LGUpfX0se2tleTpcImdldEhpZ2hlc3RWYWx1ZUluU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MDtyZXR1cm4gbmV3IFUodGhpcy5jdHgpLmdldE1pbllNYXhZKHQpLmhpZ2hlc3RZfX0se2tleTpcImdldExvd2VzdFZhbHVlSW5TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO3JldHVybiBuZXcgVSh0aGlzLmN0eCkuZ2V0TWluWU1heFkodCkubG93ZXN0WX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLnNlcmllc1RvdGFsc319LHtrZXk6XCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnVwZGF0ZUhlbHBlcnMudG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uKHQsZSl9fSx7a2V5Olwiem9vbVhcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuY3R4LnRvb2xiYXIuem9vbVVwZGF0ZU9wdGlvbnModCxlKX19LHtrZXk6XCJzZXRMb2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmxvY2FsaXphdGlvbi5zZXRDdXJyZW50TG9jYWxlVmFsdWVzKHQpfX0se2tleTpcImRhdGFVUklcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEcodGhpcy5jdHgpLmRhdGFVUkkodCl9fSx7a2V5OlwiZXhwb3J0VG9DU1ZcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4gbmV3IEcodGhpcy5jdHgpLmV4cG9ydFRvQ1NWKHQpfX0se2tleTpcInBhcGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyfX0se2tleTpcIl9wYXJlbnRSZXNpemVDYWxsYmFja1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQmJnRoaXMudy5jb25maWcuY2hhcnQucmVkcmF3T25QYXJlbnRSZXNpemUmJnRoaXMuX3dpbmRvd1Jlc2l6ZSgpfX0se2tleTpcIl93aW5kb3dSZXNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7Y2xlYXJUaW1lb3V0KHRoaXMudy5nbG9iYWxzLnJlc2l6ZVRpbWVyKSx0aGlzLncuZ2xvYmFscy5yZXNpemVUaW1lcj13aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LncuZ2xvYmFscy5yZXNpemVkPSEwLHQudy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSExLHQuY3R4LnVwZGF0ZSgpfSksMTUwKX19LHtrZXk6XCJfd2luZG93UmVzaXplSGFuZGxlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5jaGFydC5yZWRyYXdPbldpbmRvd1Jlc2l6ZTtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYodD10KCkpLHQmJnRoaXMuX3dpbmRvd1Jlc2l6ZSgpfX1dLFt7a2V5OlwiZ2V0Q2hhcnRCeUlEXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9eC5lc2NhcGVTdHJpbmcodCk7aWYoQXBleC5fY2hhcnRJbnN0YW5jZXMpe3ZhciBpPUFwZXguX2NoYXJ0SW5zdGFuY2VzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1lfSkpWzBdO3JldHVybiBpJiZpLmNoYXJ0fX19LHtrZXk6XCJpbml0T25Mb2FkXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWFwZXhjaGFydHNdXCIpLGk9MDtpPGUubGVuZ3RoO2krKyl7bmV3IHQoZVtpXSxKU09OLnBhcnNlKGVbaV0uZ2V0QXR0cmlidXRlKFwiZGF0YS1vcHRpb25zXCIpKSkucmVuZGVyKCl9fX0se2tleTpcImV4ZWNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0Q2hhcnRCeUlEKHQpO2lmKGkpe2kudy5nbG9iYWxzLmlzRXhlY0NhbGxlZD0hMDt2YXIgYT1udWxsO2lmKC0xIT09aS5wdWJsaWNNZXRob2RzLmluZGV4T2YoZSkpe2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KHM+Mj9zLTI6MCksbz0yO288cztvKyspcltvLTJdPWFyZ3VtZW50c1tvXTthPWlbZV0uYXBwbHkoaSxyKX1yZXR1cm4gYX19fSx7a2V5OlwibWVyZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB4LmV4dGVuZCh0LGUpfX1dKSx0fSgpO21vZHVsZS5leHBvcnRzPV90O1xuIiwgIi8qKlxuICogTG9kYXNoIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgfVxuICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlLFxuICAgIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG52YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xufSgpKTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIFN5bWJvbCA9IHJvb3QuU3ltYm9sLFxuICAgIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXksXG4gICAgYWxsb2NVbnNhZmUgPSBCdWZmZXIgPyBCdWZmZXIuYWxsb2NVbnNhZmUgOiB1bmRlZmluZWQsXG4gICAgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksXG4gICAgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZSxcbiAgICBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUlzQnVmZmVyID0gQnVmZmVyID8gQnVmZmVyLmlzQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIG5hdGl2ZU1heCA9IE1hdGgubWF4LFxuICAgIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKSxcbiAgICBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbnZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBvYmplY3QoKSB7fVxuICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICBpZiAoIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBpZiAob2JqZWN0Q3JlYXRlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTtcbiAgICB9XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgIHZhciByZXN1bHQgPSBuZXcgb2JqZWN0O1xuICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn0oKSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICB9XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gIHJldHVybiB0aGlzO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG5IYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbkhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG5IYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbkhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbkxpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbkxpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbkxpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICByZXR1cm4gdGhpcztcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAqIHZhbHVlIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzSW4ob2JqZWN0KTtcbiAgfVxuICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICByZXN1bHQgPSBbXTtcblxuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKCEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfSwga2V5c0luKTtcbn1cblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gIGlmIChzdGFja2VkKSB7XG4gICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICBpZiAoaXNDb21tb24pIHtcbiAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCAndG9TdHJpbmcnLCB7XG4gICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAndmFsdWUnOiBjb25zdGFudChzdHJpbmcpLFxuICAgICd3cml0YWJsZSc6IHRydWVcbiAgfSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICByZXR1cm4gbmV3IHR5cGVkQXJyYXkuY29uc3RydWN0b3IoYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkubGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgKSB7XG4gICAgcmV0dXJuIGVxKG9iamVjdFtpbmRleF0sIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlclJlc3QoZnVuYywgc3RhcnQsIHRyYW5zZm9ybSkge1xuICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICB9XG4gICAgaW5kZXggPSAtMTtcbiAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgfVxuICAgIG90aGVyQXJnc1tzdGFydF0gPSB0cmFuc2Zvcm0oYXJyYXkpO1xuICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICB9O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Rba2V5XTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIHNldFRvU3RyaW5nID0gc2hvcnRPdXQoYmFzZVNldFRvU3RyaW5nKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXNJbihuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC41LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHtcbiAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAqIH07XG4gKlxuICogdmFyIG90aGVyID0ge1xuICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICogfTtcbiAqXG4gKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG59KTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb25zdGFudCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uY29uc3RhbnQoeyAnYSc6IDEgfSkpO1xuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICogLy8gPT4gW3sgJ2EnOiAxIH0sIHsgJ2EnOiAxIH1dXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKlxuICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZTtcbiIsICJpbXBvcnQgQXBleENoYXJ0cyBmcm9tICdhcGV4Y2hhcnRzJ1xudmFyIG1lcmdlID0gcmVxdWlyZSgnbG9kYXNoLm1lcmdlJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFwZXhjaGFydHMoe1xuICAgIG9wdGlvbnMsXG4gICAgY2hhcnRJZCxcbiAgICB0aGVtZSxcbiAgICBleHRyYUpzT3B0aW9uc1xufSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGNoYXJ0OiBudWxsLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjaGFydElkLFxuICAgICAgICB0aGVtZSxcbiAgICAgICAgZXh0cmFKc09wdGlvbnMsXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgdGhpcy4kd2lyZS4kb24oJ3VwZGF0ZU9wdGlvbnMnLCAoeyBvcHRpb25zIH0pID0+IHtcblxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBtZXJnZShvcHRpb25zLCB0aGlzLmV4dHJhSnNPcHRpb25zKVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhcnQob3B0aW9ucylcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIEFscGluZS5lZmZlY3QoKCkgPT4ge1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGhlbWUgPSBBbHBpbmUuc3RvcmUoJ3RoZW1lJylcblxuICAgICAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGFydCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0Q2hhcnQoKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYXJ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZTogeyBtb2RlOiB0aGVtZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdpbmhlcml0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgaW5pdENoYXJ0OiBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy50aGVtZSA9IHsgbW9kZTogdGhpcy50aGVtZSB9XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuY2hhcnQuYmFja2dyb3VuZCA9ICdpbmhlcml0J1xuXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZSh0aGlzLm9wdGlvbnMsIHRoaXMuZXh0cmFKc09wdGlvbnMpXG5cbiAgICAgICAgICAgIHRoaXMuY2hhcnQgPSBuZXcgQXBleENoYXJ0cyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY2hhcnRJZCksIHRoaXMub3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMuY2hhcnQucmVuZGVyKClcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlQ2hhcnQ6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0LnVwZGF0ZU9wdGlvbnMob3B0aW9ucywgZmFsc2UsIHRydWUsIHRydWUpXG4gICAgICAgIH0sXG4gICAgfVxufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUthLGFBQVMsRUFBRUEsSUFBRUMsSUFBRTtBQUFDLFVBQUlDLEtBQUUsT0FBTyxLQUFLRixFQUFDO0FBQUUsVUFBRyxPQUFPLHVCQUFzQjtBQUFDLFlBQUlHLEtBQUUsT0FBTyxzQkFBc0JILEVBQUM7QUFBRSxRQUFBQyxPQUFJRSxLQUFFQSxHQUFFLE9BQVEsU0FBU0YsSUFBRTtBQUFDLGlCQUFPLE9BQU8seUJBQXlCRCxJQUFFQyxFQUFD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QUFDLG1CQUFPRCxHQUFFLFNBQU9DLEdBQUUsU0FBT0QsS0FBRUM7QUFBQSxVQUFDLENBQUUsSUFBR0QsR0FBRSxTQUFPQyxHQUFFLFNBQU9ELEtBQUVDO0FBQUEsUUFBQyxHQUFHLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksYUFBWSxPQUFNLFdBQVU7QUFBQyxZQUFJRCxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsV0FBVUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFO0FBQUcsZ0JBQU1ELEdBQUUsVUFBVSxHQUFFLENBQUMsTUFBSUEsS0FBRTtBQUFXLFlBQUlFLEtBQUVGLEdBQUUsUUFBUSxLQUFJLEVBQUU7QUFBRSxRQUFBRSxLQUFFQSxHQUFFLE1BQU0sSUFBSSxPQUFPLFFBQU1BLEdBQUUsU0FBTyxJQUFFLE1BQUssR0FBRyxDQUFDO0FBQUUsaUJBQVFDLEtBQUUsR0FBRUEsS0FBRUQsR0FBRSxRQUFPQztBQUFJLFVBQUFELEdBQUVDLEVBQUMsSUFBRSxTQUFTLE1BQUlELEdBQUVDLEVBQUMsRUFBRSxTQUFPRCxHQUFFQyxFQUFDLElBQUVELEdBQUVDLEVBQUMsSUFBRUQsR0FBRUMsRUFBQyxHQUFFLEVBQUU7QUFBRSxlQUFPLFdBQVNGLE1BQUdDLEdBQUUsS0FBS0QsRUFBQyxHQUFFLFVBQVFDLEdBQUUsS0FBSyxHQUFHLElBQUU7QUFBQSxNQUFHLEVBQUMsR0FBRSxFQUFDLEtBQUksc0JBQXFCLE9BQU0sU0FBU0YsSUFBRTtBQUFDLGVBQU8sV0FBV0EsR0FBRSxRQUFRLGNBQWEsSUFBSSxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFdBQVUsT0FBTSxTQUFTQSxJQUFFO0FBQUMsZ0JBQU9BLEtBQUVBLEdBQUUsTUFBTSxzRUFBc0UsTUFBSSxNQUFJQSxHQUFFLFNBQU8sT0FBSyxNQUFJLFNBQVNBLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxT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QUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxXQUFVQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsR0FBRUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLE1BQUtDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRTtBQUFPLGVBQU8sS0FBSyxFQUFFLFFBQVEsSUFBSSxNQUFNLEtBQUssRUFBRSxLQUFLLEVBQUMsSUFBR1AsSUFBRSxJQUFHQyxJQUFFLElBQUdDLElBQUUsSUFBR0MsSUFBRSxRQUFPQyxJQUFFLG9CQUFtQkMsSUFBRSxnQkFBZUMsSUFBRSxrQkFBaUJDLEdBQUMsQ0FBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxZQUFXLE9BQU0sV0FBVTtBQUFDLFlBQUlQLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsR0FBRUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsR0FBRUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLFdBQVVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFB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bUJBQWtCLE1BQUcsWUFBVyxRQUFPLFVBQVMsT0FBRyxVQUFTLE9BQUcsYUFBWSxPQUFHLFNBQVEsSUFBRyxZQUFXLFFBQU8sZ0JBQWUsT0FBRyxLQUFJLFFBQU8sS0FBSSxRQUFPLFVBQVMsT0FBRyxpQkFBZ0IsUUFBTyxRQUFPLEVBQUMsTUFBSyxNQUFHLFVBQVMsR0FBRSxVQUFTLEtBQUksU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLFFBQU8sUUFBTyxHQUFFLFNBQVEsSUFBRyxPQUFNLEVBQUMsUUFBTyxDQUFDLEdBQUUsVUFBUyxRQUFPLFlBQVcsS0FBSSxZQUFXLFFBQU8sVUFBUyxHQUFFLEdBQUUsV0FBVSxPQUFNLEdBQUUsWUFBVyxFQUFDLE1BQUssT0FBRyxPQUFNLFdBQVUsT0FBTSxHQUFFLFNBQVEsR0FBRSxTQUFRLEVBQUMsR0FBRSxXQUFVLEVBQUMsTUFBSyxPQUFHLE9BQU0sV0FBVSxPQUFNLEdBQUUsU0FBUSxHQUFFLFNBQVEsRUFBQyxHQUFFLE9BQU0sRUFBQyxNQUFLLFFBQU8sUUFBTyxLQUFJLFNBQVEsR0FBRSxTQUFRLEdBQUUsT0FBTSxFQUFDLE9BQU0sUUFBTyxVQUFTLFFBQU8sWUFBVyxLQUFJLFlBQVcsUUFBTyxVQUFTLEdBQUUsRUFBQyxHQUFFLFNBQVEsRUFBQyxTQUFRLE9BQUcsU0FBUSxFQUFDLEdBQUUsWUFBVyxFQUFDLE1BQUssTUFBRyxVQUFTLFNBQVEsUUFBTyxFQUFDLE9BQU0sV0FBVSxPQUFNLEdBQUUsV0FBVSxFQUFDLEVBQUMsRUFBQyxHQUFFLEtBQUssa0JBQWdCLEVBQUMsSUFBRyxRQUFPLEdBQUUsR0FBRSxHQUFFLE1BQUssWUFBVyxHQUFFLGFBQVksR0FBRSxZQUFXLFFBQU8sWUFBVyxRQUFPLE9BQU0sUUFBTyxRQUFPLEVBQUMsTUFBSyxHQUFFLFdBQVUsUUFBTyxhQUFZLEdBQUUsYUFBWSxRQUFPLE9BQU0sVUFBUyxTQUFRLEdBQUUsU0FBUSxHQUFFLFFBQU8sR0FBRSxVQUFTLEdBQUUsR0FBRSxPQUFNLEVBQUMsYUFBWSxXQUFVLGFBQVksR0FBRSxjQUFhLEdBQUUsTUFBSyxRQUFPLFlBQVcsVUFBUyxTQUFRLEdBQUUsU0FBUSxHQUFFLFlBQVcsUUFBTyxZQUFXLFFBQU8sT0FBTSxRQUFPLE9BQU0sRUFBQyxZQUFXLFFBQU8sT0FBTSxRQUFPLFVBQVMsUUFBTyxZQUFXLFFBQU8sWUFBVyxLQUFJLFVBQVMsSUFBRyxTQUFRLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxLQUFJLEdBQUUsUUFBTyxFQUFDLEVBQUMsRUFBQyxHQUFFLFdBQVUsRUFBQyxLQUFJLFFBQU8sVUFBUyxRQUFPLFNBQVEsR0FBRSxTQUFRLEVBQUMsR0FBRSxPQUFNLEVBQUMsTUFBSyxRQUFPLE9BQU0sSUFBRyxRQUFPLElBQUcsU0FBUSxHQUFFLFNBQVEsRUFBQyxFQUFDLEdBQUUsS0FBSyxrQkFBZ0IsRUFBQyxJQUFHLFFBQU8sR0FBRSxHQUFFLElBQUcsTUFBSyxpQkFBZ0IsR0FBRSxXQUFVLFdBQVUsYUFBWSxXQUFVLGFBQVksR0FBRSxTQUFRLEtBQUcsU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLFFBQU8sWUFBVyxHQUFFLE9BQU0sRUFBQyxhQUFZLFdBQVUsYUFBWSxHQUFFLGNBQWEsR0FBRSxNQUFLLFFBQU8sWUFBVyxPQUFNLFVBQVMsU0FBUSxTQUFRLEdBQUUsU0FBUSxJQUFHLFlBQVcsUUFBTyxZQUFXLFFBQU8sT0FBTSxRQUFPLE9BQU0sRUFBQyxZQUFXLFFBQU8sT0FBTSxRQUFPLFVBQVMsUUFBTyxZQUFXLFFBQU8sWUFBVyxLQUFJLFVBQVMsSUFBRyxTQUFRLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxLQUFJLEdBQUUsUUFBTyxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsS0FBSyxrQkFBZ0IsRUFBQyxJQUFHLFFBQU8sR0FBRSxHQUFFLElBQUcsTUFBSyxpQkFBZ0IsR0FBRSxXQUFVLFdBQVUsYUFBWSxXQUFVLGFBQVksR0FBRSxTQUFRLEtBQUcsU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLEVBQUMsYUFBWSxXQUFVLGFBQVksR0FBRSxjQUFhLEdBQUUs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QVEsR0FBRSxTQUFRLFFBQU8sWUFBVyxRQUFPLG9CQUFtQixNQUFHLE9BQU0sRUFBQyxNQUFLLFFBQU8sWUFBVyxFQUFDLEVBQUMsR0FBRSxRQUFPLEVBQUMsTUFBSyxRQUFPLE9BQU0sVUFBUyxlQUFjLFVBQVMsU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLEVBQUMsT0FBTSxRQUFPLFVBQVMsUUFBTyxZQUFXLE9BQU0sRUFBQyxHQUFFLFlBQVcsQ0FBQyxHQUFFLFFBQU8sUUFBTyxRQUFPLEVBQUMsUUFBTyxFQUFDLFFBQU8sRUFBQyxNQUFLLFFBQU8sT0FBTSxFQUFDLEVBQUMsR0FBRSxPQUFNLEVBQUMsUUFBTyxFQUFDLE1BQUssV0FBVSxPQUFNLElBQUUsRUFBQyxHQUFFLFFBQU8sRUFBQyxrQ0FBaUMsT0FBRyxRQUFPLEVBQUMsTUFBSyxVQUFTLE9BQU0sSUFBRSxFQUFDLEVBQUMsR0FBRSxPQUFNLEVBQUMsTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLEdBQUUsU0FBUSxHQUFFLFNBQVEsR0FBRSxVQUFTLE9BQUcsT0FBTSxFQUFDLFVBQVMsUUFBTyxZQUFXLEtBQUksWUFBVyxRQUFPLE9BQU0sT0FBTSxFQUFDLEdBQUUsVUFBUyxFQUFDLE1BQUssUUFBTyxPQUFNLFFBQU8sUUFBTyxHQUFFLFNBQVEsR0FBRSxTQUFRLElBQUcsVUFBUyxPQUFHLE9BQU0sRUFBQyxVQUFTLFFBQU8sWUFBVyxLQUFJLFlBQVcsUUFBTyxPQUFNLE9BQU0sRUFBQyxHQUFFLFFBQU8sRUFBQyxNQUFLLE1BQUcsT0FBTSxVQUFTLFNBQVEsUUFBTyxPQUFNLEdBQUUsUUFBTyxRQUFPLFdBQVUsR0FBRSxNQUFLLEVBQUMsTUFBSyxTQUFRLFFBQU8sUUFBTyxTQUFRLE1BQUksVUFBUyxFQUFDLE9BQU0sUUFBTyxNQUFLLGNBQWEsZ0JBQWUsS0FBRyxrQkFBaUIsUUFBTyxlQUFjLE1BQUcsYUFBWSxHQUFFLFdBQVUsR0FBRSxPQUFNLENBQUMsR0FBRSxJQUFHLEdBQUcsR0FBRSxZQUFXLENBQUMsRUFBQyxFQUFDLEVBQUMsR0FBRSxTQUFRLEVBQUMsU0FBUSxNQUFHLGlCQUFnQixRQUFPLFFBQU8sTUFBRyxjQUFhLE9BQUcsV0FBVSxPQUFHLGNBQWEsT0FBRyxRQUFPLFFBQU8saUJBQWdCLE9BQUcsT0FBTSxTQUFRLFVBQVMsSUFBRyxPQUFNLEVBQUMsVUFBUyxRQUFPLFlBQVcsT0FBTSxHQUFFLGdCQUFlLEVBQUMscUJBQW9CLE1BQUUsR0FBRSxHQUFFLEVBQUMsTUFBSyxNQUFHLFFBQU8sVUFBUyxXQUFVLE9BQU0sR0FBRSxHQUFFLEVBQUMsV0FBVSxRQUFPLE9BQU0sRUFBQyxXQUFVLFNBQVNBLElBQUU7QUFBQyxpQkFBT0EsS0FBRUEsS0FBRSxPQUFLO0FBQUEsUUFBRSxFQUFDLEVBQUMsR0FBRSxHQUFFLEVBQUMsV0FBVSxRQUFPLE9BQU0sU0FBUSxHQUFFLFFBQU8sRUFBQyxNQUFLLE1BQUcsWUFBVyxPQUFNLEdBQUUsT0FBTSxFQUFDLFNBQVEsT0FBTSxHQUFFLE9BQU0sRUFBQyxTQUFRLE9BQUcsVUFBUyxZQUFXLFNBQVEsR0FBRSxTQUFRLEVBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxNQUFLLFlBQVcsWUFBVyxDQUFDLEdBQUUsdUJBQXNCLE9BQUcsU0FBUSxHQUFFLFNBQVEsR0FBRSxxQkFBb0IsUUFBTyxRQUFPLEVBQUMsTUFBSyxNQUFHLFFBQU8sS0FBSSxjQUFhLE9BQUcsdUJBQXNCLE1BQUcsTUFBSyxPQUFHLFdBQVUsUUFBTyxXQUFVLEtBQUksZ0JBQWUsTUFBRyxPQUFNLEVBQUMsUUFBTyxDQUFDLEdBQUUsVUFBUyxRQUFPLFlBQVcsS0FBSSxZQUFXLFFBQU8sVUFBUyxHQUFFLEdBQUUsU0FBUSxHQUFFLFNBQVEsR0FBRSxRQUFPLFFBQU8sV0FBVSxRQUFPLGFBQVksTUFBRyxtQkFBa0IsRUFBQyxNQUFLLFFBQU8sT0FBTSxXQUFVLEtBQUksVUFBUyxNQUFLLFNBQVEsUUFBTyxZQUFXLFFBQU8sV0FBVSxFQUFDLEdBQUUsT0FBTSxFQUFDLFFBQU8sQ0FBQyxHQUFFLE9BQU0sRUFBQyxRQUFPLENBQUMsR0FBRSxVQUFTLFFBQU8sWUFBVyxLQUFJLFlBQVcsUUFBTyxVQUFTLEdBQUUsRUFBQyxHQUFFLFlBQVcsRUFBQyxNQUFLLE1BQUcsT0FBTSxXQUFVLE9BQU0sUUFBTyxRQUFPLEdBQUUsU0FBUSxHQUFFLFNBQVEsRUFBQyxHQUFFLFdBQVUsRUFBQyxNQUFLLE1BQUcsT0FBTSxXQUFVLFFBQU8sR0FBRSxTQUFRLEdBQUUsU0FBUSxFQUFDLEdBQUUsWUFBVyxRQUFPLGVBQWMsTUFBSyxLQUFJLFFBQU8sS0FBSSxRQUFPLE9BQU0sUUFBTyxVQUFTLE9BQUcsaUJBQWdCLFFBQU8sVUFBUyxVQUFTLE9BQU0sRUFBQyxNQUFLLFFBQU8sU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLEVBQUMsT0FBTSxRQUFPLFVBQVMsUUFBTyxZQUFXLEtBQUksWUFBVyxRQUFPLFVBQVMsR0FBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLE1BQUssTUFBRyxPQUFNLEdBQUUsVUFBUyxRQUFPLFNBQVEsS0FBRyxRQUFPLEVBQUMsT0FBTSxXQUFVLE9BQU0sR0FBRSxXQUFVLEVBQUMsR0FBRSxNQUFLLEVBQUMsTUFBSyxTQUFRLE9BQU0sV0FBVSxVQUFTLEVBQUMsV0FBVSxXQUFVLFNBQVEsV0FBVSxPQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsYUFBWSxLQUFHLFdBQVUsSUFBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLFNBQVEsT0FBRyxNQUFLLEdBQUUsS0FBSSxHQUFFLE1BQUssR0FBRSxTQUFRLElBQUUsRUFBQyxHQUFFLFNBQVEsRUFBQyxTQUFRLE1BQUcsU0FBUSxHQUFFLFdBQVUsUUFBTyxPQUFNLEVBQUMsVUFBUyxRQUFPLFlBQVcsT0FBTSxFQUFDLEVBQUMsR0FBRSxPQUFNLEtBQUssT0FBTSxPQUFNLEVBQUMsTUFBSyxTQUFRLFNBQVEsWUFBVyxZQUFXLEVBQUMsU0FBUSxPQUFHLE9BQU0sV0FBVSxTQUFRLFNBQVEsZ0JBQWUsS0FBRyxFQUFDLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUVBO0FBQUEsSUFBQyxF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LE9BQUcsU0FBUSxFQUFDLE1BQUssR0FBRSxPQUFNLEdBQUUsS0FBSSxHQUFFLFFBQU8sRUFBQyxFQUFDLEdBQUUsUUFBTyxFQUFDLE1BQUssTUFBRSxHQUFFLE9BQU0sRUFBQyxRQUFPLEVBQUMsTUFBSyxNQUFFLEdBQUUsU0FBUSxFQUFDLFNBQVEsTUFBRSxHQUFFLFlBQVcsRUFBQyxNQUFLLE1BQUUsR0FBRSxXQUFVLEVBQUMsTUFBSyxNQUFFLEVBQUMsR0FBRSxPQUFNLEVBQUMsU0FBUSxFQUFDLE1BQUssTUFBRSxHQUFFLE1BQUssRUFBQyxTQUFRLE1BQUUsRUFBQyxHQUFFLFlBQVcsRUFBQyxTQUFRLE1BQUUsRUFBQyxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLE9BQU0sT0FBTSxXQUFVO0FBQUMsZUFBTSxFQUFDLE9BQU0sRUFBQyxTQUFRLE9BQUcsWUFBVyxFQUFDLFFBQU8sUUFBTyxFQUFDLEdBQUUsYUFBWSxFQUFDLEtBQUksRUFBQyxZQUFXLEVBQUMsVUFBUyxTQUFRLEVBQUMsRUFBQyxHQUFFLFlBQVcsRUFBQyxPQUFNLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLFlBQVcsRUFBQyxTQUFRLE1BQUUsRUFBQyxHQUFFLFFBQU8sRUFBQyxPQUFNLEdBQUUsU0FBUSxRQUFPLEdBQUUsTUFBSyxFQUFDLFNBQVEsS0FBRyxHQUFFLFFBQU8sRUFBQyxTQUFRLEVBQUMsT0FBTSxVQUFTLFFBQU8sR0FBRSxNQUFLLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxRQUFPLE9BQUcsV0FBVSxLQUFFLEdBQUUsT0FBTSxFQUFDLFNBQVEsRUFBQyxTQUFRLE1BQUUsR0FBRSxlQUFjLFdBQVUsWUFBVyxFQUFDLE9BQU0sWUFBVyxVQUFTLFFBQU8sTUFBSyxFQUFDLE1BQUssV0FBVSxHQUFFLFlBQVcsRUFBQyxTQUFRLE1BQUUsR0FBRSxRQUFPLEVBQUMsT0FBTSxFQUFDLEVBQUMsRUFBQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFVBQVMsT0FBTSxXQUFV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TyxPQUFHLFdBQVUsS0FBRSxHQUFFLFNBQVEsRUFBQyxNQUFLLEdBQUUsYUFBWSxHQUFFLE9BQU0sRUFBQyxZQUFXLEVBQUMsRUFBQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFdBQVUsT0FBTSxXQUFVO0FBQUMsZUFBTSxFQUFDLE9BQU0sRUFBQyxTQUFRLE1BQUUsR0FBRSxNQUFLLEVBQUMsU0FBUSxFQUFDLEdBQUUsWUFBVyxFQUFDLE9BQU0sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEVBQUMsR0FBRSxRQUFPLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLFNBQVEsRUFBQyxjQUFhLE1BQUcsUUFBTyxFQUFDLE1BQUssTUFBRSxHQUFFLEdBQUUsRUFBQyxNQUFLLE1BQUUsRUFBQyxHQUFFLFFBQU8sRUFBQyxVQUFTLE9BQU0sU0FBUSxFQUFDLE9BQU0sVUFBUyxNQUFLLElBQUcsU0FBUSxFQUFDLEVBQUMsR0FBRSxNQUFLLEVBQUMsU0FBUSxFQUFDLE9BQU0sR0FBRSxFQUFDLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksV0FBVSxPQUFNLFdBQVU7QUFBQyxlQUFNLEVBQUMsT0FBTSxFQUFDLE1BQUssRUFBQyxTQUFRLE1BQUUsRUFBQyxHQUFFLFlBQVcsRUFBQyxPQUFNLEVBQUMsVUFBUyxJQUFHLFlBQVcsS0FBSSxRQUFPLENBQUMsTUFBTSxFQUFDLEVBQUMsR0FBRSxRQUFPLEVBQUMsTUFBSyxNQUFHLE9BQU0sR0FBRSxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsUUFBTyxFQUFDLE1BQUssTUFBRSxHQUFFLE1BQUssRUFBQyxVQUFTLEVBQUMsT0FBTSxDQUFDLEdBQUUsR0FBRyxFQUFDLEVBQUMsR0FBRSxTQUFRLEVBQUMsY0FBYSxNQUFHLEdBQUUsRUFBQyxNQUFLLE1BQUUsRUFBQyxHQUFFLE1BQUssRUFBQyxTQUFRLEVBQUMsTUFBSyxHQUFFLE9BQU0sRUFBQyxFQUFDLEdBQUUsT0FBTSxFQUFDLFlBQVcsRUFBQyxNQUFLLE1BQUUsR0FBRSxTQUFRLEVBQUMsU0FBUSxNQUFFLEVBQUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxPQUFNLE9BQU0sV0FBVTtBQUFDLGVBQU0sRUFBQyxPQUFNLEVBQUMsU0FBUSxFQUFDLE1BQUssTUFBRSxFQUFDLEdBQUUsYUFBWSxFQUFDLEtBQUksRUFBQyxPQUFNLEVBQUMsUUFBTyxFQUFDLE1BQUssTUFBRSxFQUFDLEVBQUMsRUFBQyxHQUFFLFlBQVcsRUFBQyxXQUFVLFNBQVNBLElBQUU7QUFBQyxpQkFBT0EsR0FBRSxRQUFRLENBQUMsSUFBRTtBQUFBLFFBQUcsR0FBRSxPQUFNLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLFlBQVcsRUFBQyxTQUFRLE1BQUUsR0FBRSxZQUFXLEVBQUMsU0FBUSxLQUFFLEVBQUMsR0FBRSxRQUFPLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLE1BQUssRUFBQyxTQUFRLEdBQUUsVUFBUyxFQUFDLE9BQU0sU0FBUSxPQUFNLENBQUMsR0FBRSxHQUFHLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxPQUFNLFFBQU8saUJBQWdCLEtBQUUsR0FBRSxRQUFPLEVBQUMsVUFBUyxRQUFPLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksU0FBUSxPQUFNLFdBQVU7QUFBQyxlQUFNLEVBQUMsT0FBTSxFQUFDLFNBQVEsRUFBQyxNQUFLLE1BQUUsRUFBQyxHQUFFLFlBQVcsRUFBQyxXQUFVLFNBQVNBLElBQUU7QUFBQyxpQkFBT0EsR0FBRSxRQUFRLENBQUMsSUFBRTtBQUFBLFFBQUcsR0FBRSxPQUFNLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLFlBQVcsRUFBQyxTQUFRLE1BQUUsR0FBRSxZQUFXLEVBQUMsU0FBUSxLQUFFLEVBQUMsR0FBRSxRQUFPLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLE1BQUssRUFBQyxTQUFRLEdBQUUsVUFBUyxFQUFDLE9BQU0sU0FBUSxnQkFBZSxNQUFJLE9BQU0sQ0FBQyxJQUFH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RSxXQUFTSixHQUFFLE1BQU0sVUFBUSxRQUFRLEtBQUssZ0ZBQWdGLEdBQUVBO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHFCQUFvQixPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPLFdBQVNBLEdBQUUsZ0JBQWNBLEdBQUUsY0FBWSxDQUFDLEdBQUVBLEdBQUUsWUFBWSxRQUFNLENBQUMsR0FBRUEsR0FBRSxZQUFZLFFBQU0sQ0FBQyxHQUFFQSxHQUFFLFlBQVksU0FBTyxDQUFDLElBQUdBLEtBQUUsS0FBSyx1QkFBdUJBLEVBQUMsR0FBRUEsS0FBRSxLQUFLLHVCQUF1QkEsRUFBQyxHQUFFQSxLQUFFLEtBQUssdUJBQXVCQSxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDBCQUF5QixPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLElBQUk7QUFBRSxlQUFPRCxHQUFFLFlBQVksUUFBTSxFQUFFLFlBQVksV0FBU0EsR0FBRSxZQUFZLFFBQU1BLEdBQUUsWUFBWSxRQUFNLENBQUMsR0FBRUMsR0FBRSxlQUFlLEdBQUVEO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDBCQUF5QixPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLElBQUk7QUFBRSxlQUFPRCxHQUFFLFlBQVksUUFBTSxFQUFFLFlBQVksV0FBU0EsR0FBRSxZQUFZLFFBQU1BLEdBQUUsWUFBWSxRQUFNLENBQUMsR0FBRUMsR0FBRSxlQUFlLEdBQUVEO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDBCQUF5QixPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLElBQUk7QUFBRSxlQUFPRCxHQUFFLFlBQVksU0FBTyxFQUFFLFlBQVksV0FBU0EsR0FBRSxZQUFZLFNBQU9BLEdBQUUsWUFBWSxTQUFPLENBQUMsR0FBRUMsR0FBRSxlQUFlLEdBQUVEO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHFCQUFvQixPQUFNLFNBQVNBLElBQUU7QUFBQyxRQUFBQSxHQUFFLFNB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QUFFLFNBQVFDLEtBQUUsY0FBWUYsR0FBRSxNQUFNLFFBQU0sY0FBWUEsR0FBRSxPQUFPRCxFQUFDLEVBQUUsTUFBS0ksS0FBRSxHQUFFQSxLQUFFTCxHQUFFQyxFQUFDLEVBQUUsS0FBSyxRQUFPSTtBQUFJLGNBQUcsV0FBU0wsR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxDQUFDLE1BQUksTUFBTSxRQUFRTCxHQUFFQyxFQUFDLEVBQUUsS0FBS0ksRUFBQyxFQUFFLENBQUMsQ0FBQyxLQUFHLE1BQUlMLEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVEsQ0FBQ0QsS0FBRSxLQUFLLFdBQVcsS0FBSyxFQUFFLFlBQVlKLEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUVMLEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLEVBQUUsVUFBUSxJQUFFLEtBQUssV0FBVyxLQUFLLEVBQUUsWUFBWUwsR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFFLEtBQUssV0FBVyxLQUFLLEVBQUUsWUFBWUwsR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFRixHQUFFLHFCQUFtQixPQUFJLGVBQWFELEdBQUUsTUFBTSxNQUFLO0FBQUMsZ0JBQUlJLEtBQUUsSUFBSSxLQUFLTixHQUFFQyxFQUFDLEVBQUUsS0FBS0ksRUFBQyxFQUFFLENBQUMsQ0FBQztBQUFFLFlBQUFDLEtBQUUsSUFBSSxLQUFLQSxFQUFDLEVBQUUsUUFBUSxHQUFFLEtBQUssWUFBWSxLQUFLQSxFQUFDO0FBQUEsVUFBQztBQUFNLGlCQUFLLFlBQVksS0FBS04sR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxDQUFDLENBQUM7QUFBRSxpQkFBUUUsS0FBRSxHQUFFQSxLQUFFUCxHQUFFQyxFQUFDLEVBQUUsS0FBSyxRQUFPTTtBQUFJLHFCQUFTUCxH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V0FBVyxLQUFHTSxJQUFFSCxFQUFDLEdBQUVHLE1BQUdGLE9BQUlJLEtBQUVSLEdBQUUsV0FBV00sSUFBRUgsRUFBQyxHQUFFRyxNQUFHRixLQUFHSCxHQUFFLEtBQUtPLEVBQUM7QUFBQSxVQUFDO0FBQUMsVUFBQVQsR0FBRSxRQUFRLFNBQU9FLEdBQUUsTUFBTTtBQUFBLFFBQUM7QUFBQyxZQUFJUSxLQUFFVixHQUFFLFFBQVEsT0FBTyxNQUFNO0FBQUUsYUFBSyxnQkFBZ0JBLEdBQUUsUUFBUSxNQUFNO0FBQUUsU0FBQyxRQUFPLFFBQVEsRUFBRSxRQUFTLFNBQVNGLElBQUU7QUFBQyxxQkFBU0UsR0FBRSxPQUFPRixFQUFDLEVBQUUsU0FBT0UsR0FBRSxRQUFRRixFQUFDLEVBQUUsU0FBT0MsR0FBRSxZQUFVQyxHQUFFLE9BQU8sU0FBT1UsS0FBRVYsR0FBRSxRQUFRRixFQUFDLEVBQUUsU0FBT0UsR0FBRSxPQUFPRixFQUFDLEVBQUUsT0FBTyxNQUFNLEdBQUVDLEdBQUUsZ0JBQWdCQyxHQUFFLFFBQVFGLEVBQUMsRUFBRSxNQUFNO0FBQUEsUUFBQyxDQUFFLEdBQUUsV0FBU0UsR0FBRSxPQUFPLFdBQVcsTUFBTSxTQUFPQSxHQUFFLFFBQVEsV0FBVyxNQUFNLFNBQU9VLEtBQUVWLEdBQUUsUUFBUSxXQUFXLE1BQU0sU0FBT0EsR0FBRSxPQUFPLFdBQVcsTUFBTSxPQUFPLE1BQU0sR0FBRSxLQUFLLGdCQUFnQkEsR0FBRSxRQUFRLFdBQVcsTUFBTSxRQUFPLEVBQUUsR0FBRSxXQUFTQSxHQUFFLE9BQU8sWUFBWSxNQUFNLFNBQVMsS0FBSyxTQUFPQSxHQUFFLFFBQVEsY0FBYyxLQUFLLFNBQU8sQ0FBQyxXQUFTQSxHQUFFLE9BQU8sTUFBTSxPQUFLLFlBQVUsTUFBTSxJQUFFQSxHQUFFLFFBQVEsY0FBYyxLQUFLLFNBQU9BLEdBQUUsT0FBTyxZQUFZLE1BQU0sU0FBUyxLQUFLLE9BQU8sTUFBTSxHQUFFLEtBQUssZ0JBQWdCQSxHQUFFLFFBQVEsY0FBYyxLQUFLLFFBQU8sRUFBRSxHQUFFLFdBQVNBLEdBQUUsT0FBTyxRQUFRLFNBQU9BLEdBQUUsUUFBUSxRQUFRLFNBQU9VLEtBQUVWLEdBQUUsUUFBUSxRQUFRLFNBQU9BLEdBQUUsT0FBTyxRQUFRLE9BQU8sTUFBTSxHQUFFLEtBQUssZ0JBQWdCQSxHQUFFLFFBQVEsUUFBUSxNQUFNO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLG1CQUFrQixPQUFNLFNBQVNGLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsTUFBS0MsS0FBRSxLQUFLLEdBQUVDLEtBQUVILE1BQUdFLEdBQUUsUUFBUSxPQUFPO0FBQU8sWUFBRyxTQUFPRCxPQUFJQSxLQUFFLEtBQUssb0JBQWtCLEtBQUssd0JBQXNCLGNBQVlDLEdBQUUsT0FBTyxNQUFNLFFBQU1BLEdBQUUsT0FBTyxZQUFZLFFBQVEsV0FBVyxVQUFTRCxNQUFHQyxHQUFFLFFBQVEsT0FBTyxXQUFTQyxLQUFFRCxHQUFFLFFBQVEsT0FBT0EsR0FBRSxRQUFRLG1CQUFtQixFQUFFLFNBQU9BLEdBQUUsUUFBUSxPQUFPLFNBQVFILEdBQUUsU0FBT0k7QUFBRSxtQkFBUUMsS0FBRUQsS0FBRUosR0FBRSxRQUFPTSxLQUFFLEdBQUVBLEtBQUVELElBQUVDO0FBQUksWUFBQU4sR0FBRSxLQUFLQSxHQUFFTSxFQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksc0JBQXFCLE9BQU0sU0FBU04sSUFBRTtBQUFDLFFBQUFBLEdBQUUsUUFBTUEsR0FBRSxTQUFPLENBQUMsR0FBRUEsR0FBRSxVQUFRQSxHQUFFLFdBQVMsQ0FBQztBQUFFLFlBQUlDLEtBQUVELEdBQUUsTUFBTSxRQUFNLFNBQVFFLEtBQUVGLEdBQUUsTUFBTSxVQUFRQSxHQUFFLE1BQU0sVUFBUSxXQUFTQyxLQUFFLGFBQVcsWUFBV0UsS0FBRUgsR0FBRSxNQUFNLFlBQVVBLEdBQUUsTUFBTSxZQUFVLFdBQVNDLEtBQUUsWUFBVTtBQUFVLGVBQU9ELEdBQUUsUUFBUSxRQUFNQyxJQUFFRCxHQUFFLE1BQU0sWUFBVUcsSUFBRUgsR0FBRSxNQUFNLFVBQVFFLElBQUVGO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGNBQWEsT0FBTSxXQUFVO0FBQUMsZ0JBQU8sS0FBSyxFQUFFLE9BQU8sTUFBTSxTQUFRO0FBQUEsVUFBQyxLQUFJO0FBQUEsVUFBVztBQUFRLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFZLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBQSxRQUFDO0FBQUMsZUFBTyxLQUFLO0FBQUEsTUFBTSxFQUFDLENBQUMsQ0FBQyxHQUFFQTtBQUFBLElBQUMsRUFBRTtBQUFoMDRJLFFB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QUMsTUFBSUQsR0FBRUMsRUFBQyxJQUFFLENBQUMsSUFBR0QsR0FBRUMsRUFBQyxFQUFFLFFBQU0sQ0FBQyxHQUFFRCxHQUFFQyxFQUFDLEVBQUUsU0FBTyxDQUFDLEdBQUVELEdBQUVDLEVBQUMsRUFBRSxXQUFTLENBQUMsR0FBRUQsR0FBRUMsRUFBQyxFQUFFLFFBQU0sQ0FBQyxHQUFFRCxHQUFFQyxFQUFDLEVBQUUsU0FBTyxDQUFDLEdBQUVELEdBQUVDLEVBQUMsRUFBRSxXQUFTLENBQUM7QUFBQSxRQUFDLENBQUUsS0FBR0QsR0FBRSxRQUFNLENBQUMsR0FBRUEsR0FBRSxTQUFPLENBQUMsR0FBRUEsR0FBRSxXQUFTLENBQUMsR0FBRUEsR0FBRSxRQUFNLENBQUMsR0FBRUEsR0FBRSxTQUFPLENBQUMsR0FBRUEsR0FBRSxXQUFTLENBQUM7QUFBQSxNQUFFLEVBQUMsR0FBRSxFQUFDLEtBQUksb0JBQW1CLE9BQU0sU0FBU0EsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLElBQUVDLElBQUVDLElBQUVDLElBQUVDLEtBQUUsS0FBSyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLE9BQU8sR0FBRyxHQUFFQyxLQUFFLE1BQUtDLEtBQUUsS0FBSyxPQUFPLFdBQVcsY0FBWVQsS0FBRUQ7QUFBRSxhQUFLLE9BQU8sV0FBVyxPQUFPLE9BQU8sU0FBTyxLQUFHLEtBQUssT0FBTyxXQUFXLE9BQU8sT0FBTyxJQUFLLFNBQVNFLElBQUU7QUFBQyxVQUFBSCxHQUFFQyxFQUFDLEVBQUVDLEVBQUMsS0FBR0MsR0FBRSxRQUFNSCxHQUFFQyxFQUFDLEVBQUVDLEVBQUMsS0FBR0MsR0FBRSxPQUFLTyxLQUFFUCxHQUFFO0FBQUEsUUFBTSxDQUFFO0FBQUUsZUFBT0ssR0FBRSxPQUFPLE9BQU9QLEVBQUMsRUFBRSxLQUFLQyxFQUFDLEtBQUdNLEdBQUUsT0FBTyxPQUFPUCxFQUFDLEVBQUUsS0FBS0MsRUFBQyxFQUFFLGNBQVlRLEtBQUVGLEdBQUUsT0FBTyxPQUFPUCxFQUFDLEVBQUUsS0FBS0MsRUFBQyxFQUFFLFlBQVdPLEdBQUUsU0FBUyxFQUFDLGNBQWEsS0FBSyxPQUFPLFdBQVcsY0FBWUUsS0FBRVIsSUFBRSxnQkFBZUQsSUFBRSxPQUFNUSxJQUFFLE9BQU1WLEdBQUVDLEVBQUMsRUFBRUMsRUFBQyxHQUFFLFlBQVcsVUFBUUUsS0FBRUksR0FBRSxPQUFPLE9BQU9QLEVBQUMsRUFBRSxLQUFLQyxFQUFDLE1BQUksV0FBU0UsS0FBRSxTQUFPQSxHQUFFLE1BQUssVUFBUyxVQUFRQyxLQUFFRyxHQUFFLE9BQU8sT0FBT1AsRUFBQyxFQUFFLEtBQUtDLEVBQUMsTUFBSSxXQUFTRyxNQUFHLFVBQVFDLEtBQUVELEdBQUUsU0FBTyxXQUFTQyxNQUFHQSxHQUFFLE9BQUssVUFBUUMsS0FBRUMsR0FBRSxPQUFPLE9BQU9QLEVBQUMsRUFBRSxLQUFLQyxFQUFDLE1BQUksV0FBU0ssS0FBRSxTQUFPQSxHQUFFLEtBQUssT0FBS0MsR0FBRSxPQUFPLEtBQUssS0FBSSxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGtCQUFpQixPQUFNLFNBQVNSLElBQUVDLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLEdBQUVDLEtBQUUsS0FBSztBQUFFLGVBQU8sS0FBSyxPQUFPLE9BQU9KLEVBQUMsRUFBRUMsRUFBQyxJQUFFLEtBQUssT0FBTyxjQUFZLFFBQUcsS0FBSyxPQUFPLGNBQVksTUFBR0csR0FBRSxPQUFPLE9BQU8sU0FBTyxLQUFLLE9BQU8sZ0JBQWNELEtBQUUsTUFBTSxRQUFRLEtBQUssT0FBTyxXQUFXLElBQUUsS0FBSyxPQUFPLFlBQVlELEVBQUMsSUFBRSxLQUFLLE9BQU8sZUFBY0M7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUkscUJBQW9CLE9BQU0sU0FBU0gsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxHQUFFQyxLQUFFO0FBQUcsZUFBT0QsR0FBRSxPQUFPLFlBQVksSUFBSSxlQUFhLE1BQUlBLEdBQUUsT0FBTyxNQUFNLFdBQVMsV0FBU0EsR0FBRSxPQUFPLFlBQVksSUFBSSwwQkFBd0IsS0FBSyxPQUFPLDRCQUEwQkQsT0FBSUUsS0FBRSxRQUFJQSxLQUFFLE9BQUlBO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGlCQUFnQixPQUFNLFNBQVNGLElBQUU7QUFBQyxZQUFJQyxLQUFFRCxHQUFFLEdBQUVFLEtBQUVGLEdBQUUsR0FBRUcsS0FBRUgsR0FBRSxJQUFHSSxLQUFFSixHQUFFLElBQUdLLEtBQUVMLEdBQUUsSUFBR00sS0FBRU4sR0FBRSxJQUFHTyxLQUFFUCxHQUFFLFVBQVNRLEtBQUUsS0FBSyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLE9BQU8sR0FBRyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLE9BQU8sR0FBRyxFQUFFLDJCQUEyQjtBQUFFLFlBQUcsS0FBSyxPQUFPLFdBQVcsT0FBTyxvQkFBb0IsU0FBTyxLQUFHQSxPQUFJUixJQUFFO0FBQUMsVUFBQUQsTUFBRyxLQUFLLE9BQU8sV0FBVyxPQUFPLG9CQUFvQixXQUFTQSxNQUFHLEtBQUssT0FBTyxXQUFXLE9BQU8sb0JBQW9CO0FBQVEsY0FBSVUsS0FBRSxLQUFLLE9BQU8sV0FBVyxPQUFPLG9CQUFvQlYsRUFBQyxHQUFFVyxLQUFFSCxHQUFFLFNBQVMsV0FBU04sS0FBRUEsS0FBRSxHQUFFLFdBQVNFLEtBQUVBLEtBQUUsR0FBRSxXQUFTRCxLQUFFQSxLQUFFSSxHQUFFLFFBQVEsV0FBVSxXQUFTRixLQUFFQSxLQUFFRSxHQUFFLFFBQVEsWUFBVyxLQUFLLE9BQU8sV0FBVyxPQUFPLHFCQUFvQkcsSUFBRSxLQUFLLE9BQU8sV0FBVyxPQUFPLG9CQUFvQjtBQUFFLFVBQUFKLEdBQUUsSUFBSUssRUFBQyxHQUFFQSxHQUFFLEtBQUssVUFBVSxJQUFJLDBCQUEwQjtBQUFBLFFBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksa0JBQWlCLE9BQU0sU0FBU1osSUFBRTtBQUFDLFlBQUlDLElBQUVDLEtBQUVGLEdBQUUsVUFBU0csS0FBRUgsR0FBRSxjQUFhSSxLQUFFSixHQUFFLElBQUdLLEtBQUVMLEdBQUUsSUFBR00sS0FBRU4sR0FBRSxhQUFZTyxLQUFFUCxHQUFFLGFBQVlRLEtBQUVSLEdBQUUsV0FBVVMsS0FBRVQsR0FBRSxHQUFFVSxLQUFFVixHQUFFLEdBQUVXLEtBQUVYLEdBQUUsR0FBRVksS0FBRSxJQUFJLEVBQUUsS0FBSyxPQUFPLEdBQUc7QUFBRSxTQUFDTixLQUFFLE1BQU0sUUFBUUEsRUFBQyxJQUFFQSxHQUFFRSxFQUFDLElBQUVGLFFBQUtBLEtBQUU7QUFBRyxZQUFJTyxLQUFFWCxJQUFFWSxLQUFFWDtBQUFFLGtCQUFRRixLQUFFVSxHQUFFLE9BQU8sT0FBT0gsRUFBQyxFQUFFLEtBQUtFLEVBQUMsTUFBSSxXQUFTVCxNQUFHQSxHQUFFLHNCQUFvQmEsS0FBRVgsS0FBRVEsR0FBRSxPQUFPLE9BQU9ILEVBQUMsRUFBRSxLQUFLRSxFQUFDLEVBQUUsb0JBQWtCLEdBQUVHLEtBQUVYLEtBQUVTLEdBQUUsT0FBTyxPQUFPSCxFQUFDLEVBQUUsS0FBS0UsRUFBQyxFQUFFO0FBQW1CLFlBQUlLLEtBQUVELElBQUVFLEtBQUVGLEtBQUVEO0FBQUUsUUFBQVQsTUFBRyxNQUFLQyxNQUFHO0FBQUssWUFBSVksS0FBRUwsR0FBRSxLQUFLRyxJQUFFWCxFQUFDLEdBQUVjLEtBQUVOLEdBQUUsS0FBS0csSUFBRVgsRUFBQyxHQUFFZ0IsS0FBRVIsR0FBRSxLQUFLSSxLQUFFVixJQUFFRixFQUFDO0FBQUUsWUFBR08sR0FBRSxRQUFRLGNBQWMsU0FBTyxNQUFJTyxLQUFFLEtBQUssT0FBTyxnQkFBZ0JWLElBQUVFLElBQUUsS0FBRSxJQUFHTyxLQUFFQSxLQUFFTCxHQUFFLEtBQUtHLElBQUVWLEVBQUMsSUFBRU8sR0FBRSxLQUFLSSxLQUFFVixJQUFFRCxFQUFDLElBQUVPLEdBQUUsS0FBS0ksS0FBRVYsSUFBRUYsRUFBQyxLQUFHLGFBQVdPLEdBQUUsT0FBTyxZQUFZLElBQUksMEJBQXdCLE9BQUssT0FBTU8sS0FBRUEsS0FBRU4sR0FBRSxLQUFLRyxJQUFFWCxFQUFDLElBQUVnQixLQUFFQSxLQUFFQSxLQUFFQSxLQUFFQSxLQUFFUixHQUFFLEtBQUtHLElBQUVYLEVBQUMsS0FBRyxhQUFXTyxHQUFFLE9BQU8sWUFBWSxJQUFJLDBCQUF3QixPQUFLLE9BQU0sS0FBSyxrQkFBa0JILEVBQUMsTUFBSVMsS0FBRUwsR0FBRSxpQkFBaUJLLElBQUVOLEdBQUUsT0FBTyxZQUFZLElBQUksWUFBWSxJQUFHQSxHQUFFLE9BQU8sTUFBTSxTQUFRO0FBQUMsY0FBSVUsS0FBRSxLQUFLO0FBQU8sVUFBQVYsR0FBRSxRQUFRLG1CQUFpQkosT0FBSWMsS0FBRSxLQUFLLE9BQU9kLEVBQUMsSUFBR2MsR0FBRSxNQUFNLEtBQUtoQixFQUFDLEdBQUVnQixHQUFFLE9BQU8sS0FBSyxLQUFLLElBQUlqQixLQUFFQyxFQUFDLENBQUMsR0FBRWdCLEdBQUUsU0FBUyxLQUFLLEtBQUssT0FBTyxPQUFPWixFQUFDLEVBQUVDLEVBQUMsQ0FBQztBQUFBLFFBQUM7QUFBQyxlQUFNLEVBQUMsUUFBT08sSUFBRSxVQUFTQyxHQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGVBQWMsT0FBTSxTQUFTbEIsSUFBRTtBQUFDLFlBQUlDLElBQUVDLEtBQUVGLEdBQUUsY0FBYUcsS0FBRUgsR0FBRSxXQUFVSSxLQUFFSixHQUFFLElBQUdLLEtBQUVMLEdBQUUsSUFBR00sS0FBRU4sR0FBRSxhQUFZTyxLQUFFUCxHQUFFLGFBQVlRLEtBQUVSLEdBQUUsV0FBVVMsS0FBRVQsR0FBRSxHQUFFVSxLQUFFVixHQUFFLEdBQUVXLEtBQUVYLEdBQUUsR0FBRVksS0FBRSxJQUFJLEVBQUUsS0FBSyxPQUFPLEdBQUc7QUFBRSxTQUFDTixLQUFFLE1BQU0sUUFBUUEsRUFBQyxJQUFFQSxHQUFFRSxFQUFDLElBQUVGLFFBQUtBLEtBQUU7QUFBRyxZQUFJTyxLQUFFWCxJQUFFWSxLQUFFWDtBQUFFLGtCQUFRRixLQUFFVSxHQUFFLE9BQU8sT0FBT0gsRUFBQyxFQUFFLEtBQUtFLEVBQUMsTUFBSSxXQUFTVCxNQUFHQSxHQUFFLG9CQUFrQlksS0FBRVgsS0FBRVMsR0FBRSxPQUFPLE9BQU9ILEVBQUMsRUFBRSxLQUFLRSxFQUFDLEVBQUUsa0JBQWdCLEdBQUVJLEtBQUVYLEtBQUVRLEdBQUUsT0FBTyxPQUFPSCxFQUFDLEVBQUUsS0FBS0UsRUFBQyxFQUFFO0FBQWlCLFlBQUlLLEtBQUVGLElBQUVHLEtBQUVILEtBQUVDO0FBQUUsUUFBQVYsTUFBRyxNQUFLQyxNQUFHO0FBQUssWUFBSVksS0FBRUwsR0FBRSxLQUFLUixJQUFFVyxFQUFDLEdBQUVHLEtBQUVOLEdBQUUsS0FBS1IsSUFBRVcsRUFBQztBQUFFLFFBQUFKLEdBQUUsUUFBUSxjQUFjLFNBQU8sTUFBSU8sS0FBRSxLQUFLLE9BQU8sZ0JBQWdCVixJQUFFRSxJQUFFLEtBQUU7QUFBRyxZQUFJVSxLQUFFUixHQUFFLEtBQUtSLElBQUVZLEtBQUVWLEVBQUM7QUFBRSxZQUFHVyxLQUFFQSxLQUFFTCxHQUFFLEtBQUtQLElBQUVVLEVBQUMsSUFBRUgsR0FBRSxLQUFLUCxJQUFFVyxLQUFFVixFQUFDLElBQUVjLE1BQUcsYUFBV1QsR0FBRSxPQUFPLFlBQVksSUFBSSwwQkFBd0IsT0FBSyxPQUFNTyxLQUFFQSxLQUFFTixHQUFFLEtBQUtSLElBQUVXLEVBQUMsSUFBRUssS0FBRUEsS0FBRUEsS0FBRUEsS0FBRUEsS0FBRVIsR0FBRSxLQUFLUixJQUFFVyxFQUFDLEtBQUcsYUFBV0osR0FBRSxPQUFPLFlBQVksSUFBSSwwQkFBd0IsT0FBSyxPQUFNLEtBQUssa0JBQWtCSCxFQUFDLE1BQUlTLEtBQUVMLEdBQUUsaUJBQWlCSyxJQUFFTixHQUFFLE9BQU8sWUFBWSxJQUFJLFlBQVksSUFBR0EsR0FBRSxPQUFPLE1BQU0sU0FBUTtBQUFDLGNBQUlVLEtBQUUsS0FBSztBQUFPLFVBQUFWLEdBQUUsUUFBUSxtQkFBaUJKLE9BQUljLEtBQUUsS0FBSyxPQUFPZCxFQUFDLElBQUdjLEdBQUUsTUFBTSxLQUFLaEIsRUFBQyxHQUFFZ0IsR0FBRSxPQUFPLEtBQUssS0FBSyxJQUFJakIsS0FBRUMsRUFBQyxDQUFDLEdBQUVnQixHQUFFLFNBQVMsS0FBSyxLQUFLLE9BQU8sT0FBT1osRUFBQyxFQUFFQyxFQUFDLENBQUM7QUFBQSxRQUFDO0FBQUMsZUFBTSxFQUFDLFFBQU9PLElBQUUsVUFBU0MsR0FBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxtQkFBa0IsT0FBTSxTQUFTbEIsSUFBRTtBQUFDLGlCQUFRQyxLQUFFRCxHQUFFLFFBQU9FLEtBQUUsS0FBSyxHQUFFQyxLQUFFLEdBQUVBLEtBQUVGLEdBQUUsUUFBT0UsTUFBSTtBQUFDLG1CQUFRQyxLQUFFLEdBQUVDLEtBQUUsR0FBRUEsS0FBRUosR0FBRUMsR0FBRSxRQUFRLG1CQUFtQixFQUFFLFFBQU9HO0FBQUksWUFBQUQsTUFBR0gsR0FBRUUsRUFBQyxFQUFFRSxFQUFDO0FBQUUsZ0JBQUlELE1BQUcsS0FBSyxPQUFPLGFBQWEsS0FBS0QsRUFBQztBQUFBLFFBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksZ0JBQWUsT0FBTSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxFQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLE1BQUksVUFBVSxDQUFDLElBQUVELEtBQUU7QUFBSyxlQUFPLFFBQU1ELE9BQUlFLEtBQUVELEtBQUVELEtBQUUsS0FBSyxPQUFPLGlCQUFlLEtBQUcsS0FBSyxPQUFPLGFBQVdBLEtBQUUsS0FBSyxPQUFPLGlCQUFlLEtBQUlFO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGdCQUFlLE9BQU0sU0FBU0YsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsRUFBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxNQUFJLFVBQVUsQ0FBQyxJQUFFRCxLQUFFO0FBQUssZUFBTyxRQUFNRCxPQUFJRSxLQUFFRCxLQUFFRCxLQUFFLEtBQUssT0FBTyxPQUFPLEtBQUssT0FBTyxVQUFVLElBQUUsS0FBRyxLQUFLLE9BQU8sYUFBV0EsS0FBRSxLQUFLLE9BQU8sT0FBTyxLQUFLLE9BQU8sVUFBVSxJQUFFLEtBQUlFO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGlCQUFnQixPQUFNLFNBQVNGLElBQUVFLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxZQUFJRSxLQUFFLE1BQUtDLEtBQUUsS0FBSyxHQUFFQyxLQUFFLENBQUMsR0FBRUMsS0FBRSxTQUFTVCxJQUFFRyxJQUFFO0FBQUMsY0FBSUM7QUFBRSxVQUFBSSxHQUFFLE1BQU0sRUFBRUosS0FBRSxDQUFDLEdBQUVMLElBQUUsUUFBTUEsS0FBRU8sR0FBRSxhQUFhTixJQUFFQyxJQUFFLEtBQUUsSUFBRUssR0FBRSxhQUFhTixJQUFFRSxJQUFFLEtBQUUsQ0FBQyxHQUFFLEVBQUVFLElBQUUsU0FBUUQsRUFBQyxHQUFFQyxHQUFFO0FBQUEsUUFBQztBQUFFLFlBQUdHLEdBQUUsUUFBUSxZQUFZSixFQUFDLEtBQUdJLEdBQUUsUUFBUSxZQUFZSixFQUFDLEVBQUVDLEVBQUMsS0FBRyxNQUFNLFFBQVFHLEdBQUUsUUFBUSxZQUFZSixFQUFDLEVBQUVDLEVBQUMsQ0FBQyxLQUFHRyxHQUFFLFFBQVEsWUFBWUosRUFBQyxFQUFFQyxFQUFDLEVBQUUsUUFBUyxTQUFTTCxJQUFFO0FBQUMsVUFBQVUsR0FBRVYsR0FBRSxPQUFNQSxFQUFDO0FBQUEsUUFBQyxDQUFFLEdBQUUsS0FBSyxPQUFPLFdBQVcsY0FBWVEsR0FBRSxRQUFRLFlBQVksUUFBTztBQUFDLGNBQUlHLEtBQUUsS0FBSyxPQUFPLFdBQVcsaUJBQWUsS0FBSyxPQUFPLFdBQVcsaUJBQWVILEdBQUUsUUFBUSxRQUFPSSxLQUFFLEVBQUMsY0FBYSxRQUFNWixLQUFFLElBQUVRLEdBQUUsUUFBUSxRQUFRLEtBQUtKLEVBQUMsR0FBRSxhQUFZLFFBQU1KLEtBQUVRLEdBQUUsUUFBUSxRQUFRLEtBQUtKLEVBQUMsSUFBRSxHQUFFLGlCQUFnQixHQUFFLGVBQWMsU0FBUSxhQUFZLE1BQU0sUUFBUU8sR0FBRVAsRUFBQyxDQUFDLElBQUVPLEdBQUVQLEVBQUMsRUFBRSxDQUFDLElBQUVPLEdBQUVQLEVBQUMsRUFBQztBQUFFLFVBQUFNLEdBQUVGLEdBQUUsUUFBUSxpQkFBaUJKLEVBQUMsRUFBRUMsRUFBQyxHQUFFTyxFQUFDLEdBQUVGLEdBQUVGLEdBQUUsUUFBUSxlQUFlSixFQUFDLEVBQUVDLEVBQUMsR0FBRSxFQUFFLEVBQUUsQ0FBQyxHQUFFTyxFQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsYUFBWSxNQUFNLFFBQVFELEdBQUVQLEVBQUMsQ0FBQyxJQUFFTyxHQUFFUCxFQUFDLEVBQUUsQ0FBQyxJQUFFTyxHQUFFUCxFQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQUEsUUFBQztBQUFDLGVBQU9LO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGdCQUFlLE9BQU0sU0FBU1QsSUFBRTtBQUFDLFlBQUlDLEtBQUVELEdBQUUsY0FBYUUsS0FBRUYsR0FBRSxjQUFhRyxLQUFFSCxHQUFFLE9BQU1JLEtBQUVKLEdBQUUsT0FBTUssS0FBRUwsR0FBRSxVQUFTTSxLQUFFTixHQUFFLFdBQVVPLEtBQUUsSUFBSSxFQUFFLEtBQUssT0FBTyxHQUFHLEdBQUVDLEtBQUVELEdBQUUsTUFBTSxFQUFDLFdBQVUsOEJBQTZCLENBQUM7QUFBRSxRQUFBQyxHQUFFLEtBQUssVUFBVSxJQUFJLDJCQUEyQixHQUFFLEtBQUssT0FBTyxFQUFFLFFBQVEsZ0JBQWdCLEtBQUssRUFBQyxJQUFHQSxHQUFFLEtBQUksQ0FBQyxHQUFFQSxHQUFFLEtBQUssYUFBWSwwQkFBMEIsT0FBTyxLQUFLLE9BQU8sRUFBRSxRQUFRLE1BQUssR0FBRyxDQUFDO0FBQUUsWUFBSUMsS0FBRTtBQUFLLGVBQU8sS0FBSyxPQUFPLGVBQWEsTUFBTSxRQUFRTixFQUFDLEtBQUdBLEdBQUUsUUFBUyxTQUFTSCxJQUFFO0FBQUMsY0FBSUMsS0FBRSxXQUFTRCxHQUFFLE1BQU0sZUFBYUEsR0FBRSxNQUFNLGVBQWFNLEtBQUUsR0FBRUgsS0FBRUQsS0FBRUQsS0FBRUssS0FBRTtBQUFFLFVBQUFHLEtBQUVGLEdBQUUsU0FBU1AsR0FBRSxHQUFFRyxLQUFFLElBQUVGLElBQUVELEdBQUUsR0FBRUcsSUFBRUgsR0FBRSxNQUFNLGNBQVlBLEdBQUUsTUFBTSxjQUFZLFFBQU9BLEdBQUUsTUFBTSxpQkFBZ0JBLEdBQUUsTUFBTSxjQUFZQSxHQUFFLE1BQU0sY0FBWSxHQUFFQSxHQUFFLE1BQU0sYUFBYSxHQUFFUSxHQUFFLElBQUlDLEVBQUM7QUFBQSxRQUFDLENBQUUsSUFBRSxNQUFNLFFBQVFMLEVBQUMsS0FBR0EsR0FBRSxRQUFTLFNBQVNKLElBQUU7QUFBQyxjQUFJRSxLQUFFLFdBQVNGLEdBQUUsTUFBTSxjQUFZQSxHQUFFLE1BQU0sY0FBWUssS0FBRSxHQUFFRixLQUFFRixLQUFFQyxLQUFFRyxLQUFFO0FBQUUsVUFBQUksS0FBRUYsR0FBRSxTQUFTSixLQUFFLElBQUVELElBQUVGLEdBQUUsR0FBRUcsSUFBRUgsR0FBRSxHQUFFQSxHQUFFLE1BQU0sY0FBWUEsR0FBRSxNQUFNLGNBQVksUUFBT0EsR0FBRSxNQUFNLGlCQUFnQkEsR0FBRSxNQUFNLGVBQWFBLEdBQUUsTUFBTSxlQUFhLEdBQUVBLEdBQUUsTUFBTSxhQUFhLEdBQUVRLEdBQUUsSUFBSUMsRUFBQztBQUFBLFFBQUMsQ0FBRSxHQUFFRDtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxpQkFBZ0IsT0FBTSxTQUFTUixJQUFFO0FBQUMsWUFBSUMsS0FBRUQsR0FBRSxXQUFVRSxLQUFFRixHQUFFLFdBQVVHLEtBQUVILEdBQUUsT0FBTUksS0FBRSxLQUFLLEdBQUVDLEtBQUVKLEdBQUUsR0FBRUssS0FBRUwsR0FBRSxJQUFHTSxLQUFFTixHQUFFLGNBQWFPLEtBQUVOLEdBQUUsR0FBRU8sS0FBRVAsR0FBRSxJQUFHUSxLQUFFUixHQUFFLGNBQWFTLEtBQUVKLEtBQUVMLEdBQUUsV0FBVVUsS0FBRSxJQUFJLEVBQUUsS0FBSyxPQUFPLEdBQUcsR0FBRUMsS0FBRSxJQUFJLEtBQUVDLEtBQUVGLEdBQUUsS0FBS04sSUFBRUssRUFBQyxJQUFFQyxHQUFFLEtBQUtQLElBQUVNLEVBQUMsSUFBRUMsR0FBRSxLQUFLSixJQUFFRSxFQUFDLElBQUVFLEdBQUUsS0FBS0gsSUFBRUMsRUFBQyxJQUFFRSxHQUFFLEtBQUtOLElBQUVLLEVBQUMsS0FBRyxhQUFXUCxHQUFFLE9BQU8sWUFBWSxJQUFJLDBCQUF3QixPQUFLO0FBQU0sZUFBT1EsR0FBRSxTQUFTLEVBQUMsR0FBRUUsSUFBRSxNQUFLRCxHQUFFLFdBQVcsS0FBRyxFQUFFLFFBQVFWLEVBQUMsQ0FBQyxHQUFFLFFBQU8sUUFBTyxhQUFZLEdBQUUsYUFBWSxHQUFFLFNBQVEseUJBQXdCLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksMEJBQXlCLE9BQU0sU0FBU0gsSUFBRTtBQUFDLFlBQUlDLEtBQUVELEdBQUUsR0FBRUUsS0FBRUYsR0FBRSxHQUFFRyxLQUFFLEtBQUssR0FBRUMsS0FBRSxHQUFFQyxLQUFFO0FBQUUsZUFBT0YsR0FBRSxRQUFRLGNBQWMsUUFBUyxTQUFTSCxJQUFFRyxJQUFFO0FBQUMsVUFBQUgsR0FBRUUsRUFBQyxLQUFHRSxNQUFJRCxLQUFFRixNQUFHLE1BQUlELEdBQUVFLEVBQUMsS0FBR0c7QUFBQSxRQUFHLENBQUUsR0FBRSxFQUFDLGdCQUFlRCxJQUFFLGdCQUFlQyxHQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFFTDtBQUFBLElBQUMsRUFBRTtBQUExNi9QLFFBQTQ2L1AsS0FBRyxXQUFVO0FBQUMsZUFBU0EsR0FBRUMsSUFBRUMsSUFBRTtBQUFDLFVBQUUsTUFBS0YsRUFBQyxHQUFFLEtBQUssTUFBSUMsSUFBRSxLQUFLLElBQUVBLEdBQUU7QUFBRSxZQUFJRyxLQUFFLEtBQUs7QUFBRSxhQUFLLGFBQVdBLEdBQUUsT0FBTyxZQUFZLEtBQUksS0FBSyxlQUFhLEtBQUssV0FBVyxZQUFXLEtBQUssY0FBWUEsR0FBRSxPQUFPLE9BQU8sT0FBTSxLQUFLLGNBQVksT0FBRyxLQUFLLGFBQVdBLEdBQUUsUUFBUSxZQUFZLFVBQVEsS0FBSyxjQUFhLEtBQUssNEJBQTBCLENBQUNBLEdBQUUsUUFBUSxtQkFBaUJBLEdBQUUsUUFBUSxZQUFZLFVBQVFBLEdBQUUsT0FBTyxZQUFZLElBQUksbUJBQWtCLEtBQUssV0FBUyxLQUFLLFdBQVcsVUFBUyxLQUFLLFdBQVNGLElBQUUsU0FBTyxLQUFLLGFBQVcsS0FBSyxTQUFPQSxHQUFFLFFBQU8sS0FBSyxnQkFBY0EsR0FBRSxlQUFjLEtBQUssU0FBT0EsR0FBRSxRQUFPLEtBQUssaUJBQWVBLEdBQUUsZ0JBQWUsS0FBSyxpQkFBZUEsR0FBRSxnQkFBZSxLQUFLLFlBQVVBLEdBQUUsV0FBVSxLQUFLLG9CQUFrQkEsR0FBRSxvQkFBbUIsS0FBSyxhQUFXLEdBQUUsS0FBSyxZQUFVLEdBQUUsS0FBSyxVQUFRLENBQUM7QUFBRSxZQUFJRyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUc7QUFBRSxhQUFLLDBCQUF3QkEsR0FBRSwyQkFBMkIsUUFBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO0FBQUUsWUFBSUMsS0FBRUQsR0FBRSxvQkFBb0IsR0FBRUUsS0FBRSxJQUFJLEVBQUUsS0FBSyxHQUFHO0FBQUUsYUFBSyxzQkFBb0JBLEdBQUUsdUJBQXVCLEtBQUssRUFBRSxPQUFPLE9BQU8sSUFBSyxTQUFTUCxJQUFFQyxJQUFFO0FBQUMsaUJBQU0sT0FBS0ssR0FBRSxRQUFRTCxFQUFDLElBQUVBLEtBQUU7QUFBQSxRQUFFLENBQUUsRUFBRSxPQUFRLFNBQVNELElBQUU7QUFBQyxpQkFBTSxPQUFLQTtBQUFBLFFBQUMsQ0FBRSxDQUFDLEdBQUUsS0FBSyxhQUFXLElBQUksR0FBRyxJQUFJO0FBQUEsTUFBQztBQUFDLGFBQU8sRUFBRUEsSUFBRSxDQUFDLEVBQUMsS0FBSSxRQUFPLE9BQU0sU0FBU0EsSUFBRUUsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRUMsS0FBRSxJQUFJLEVBQUUsS0FBSyxLQUFJRixFQUFDO0FBQUUsUUFBQUgsS0FBRUssR0FBRSxhQUFhTCxFQUFDLEdBQUUsS0FBSyxTQUFPQSxJQUFFLEtBQUssU0FBT0ssR0FBRSxjQUFjLEtBQUssTUFBTSxHQUFFLEtBQUssV0FBVyxjQUFjTCxFQUFDO0FBQUUsWUFBSU0sS0FBRUYsR0FBRSxNQUFNLEVBQUMsT0FBTSwrQ0FBOEMsQ0FBQztBQUFFLFFBQUFELEdBQUUsT0FBTyxXQUFXLFdBQVMsS0FBSyxhQUFXLEtBQUssV0FBVyxXQUFXLFlBQVUsUUFBUSxLQUFLLGlJQUFpSTtBQUFFLGlCQUFRSSxLQUFFLEdBQUVDLEtBQUUsR0FBRUQsS0FBRVAsR0FBRSxRQUFPTyxNQUFJQyxNQUFJO0FBQUMsY0FBSUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsS0FBRSxRQUFPQyxLQUFFLFFBQU9DLEtBQUUsQ0FBQyxHQUFFRSxLQUFFLENBQUMsR0FBRUMsS0FBRWYsR0FBRSxRQUFRLGNBQVlELEdBQUVLLEVBQUMsSUFBRUEsSUFBRWMsS0FBRWpCLEdBQUUsTUFBTSxFQUFDLE9BQU0scUJBQW9CLEtBQUlHLEtBQUUsR0FBRSxZQUFXLEVBQUUsYUFBYUosR0FBRSxRQUFRLFlBQVllLEVBQUMsQ0FBQyxHQUFFLGtCQUFpQkEsR0FBQyxDQUFDO0FBQUUsZUFBSyxJQUFJLE9BQU8sMEJBQTBCRyxJQUFFSCxFQUFDLEdBQUVsQixHQUFFTyxFQUFDLEVBQUUsU0FBTyxNQUFJLEtBQUssV0FBUyxLQUFLLFdBQVM7QUFBRyxjQUFJZSxLQUFFLEdBQUVDLEtBQUU7QUFBRSxlQUFLLE9BQU8sU0FBTyxNQUFJLEtBQUssYUFBV0wsS0FBRyxLQUFLLGFBQVdmLEdBQUUsT0FBTyxNQUFNLEtBQUssVUFBVSxLQUFHQSxHQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtBQUFTLGNBQUlxQixLQUFFLEtBQUssV0FBVyxpQkFBaUI7QUFBRSxVQUFBVixLQUFFVSxHQUFFLEdBQUVGLEtBQUVFLEdBQUUsV0FBVWQsS0FBRWMsR0FBRSxXQUFVWixLQUFFWSxHQUFFLE9BQU1YLEtBQUVXLEdBQUUsR0FBRUQsS0FBRUMsR0FBRSxVQUFTZixLQUFFZSxHQUFFLFdBQVViLEtBQUVhLEdBQUUsT0FBTSxLQUFLLGNBQVlQLEdBQUUsS0FBS0osS0FBRVUsS0FBRSxDQUFDO0FBQUUsY0FBSUUsS0FBRXJCLEdBQUUsTUFBTSxFQUFDLE9BQU0seUJBQXdCLGtCQUFpQmMsR0FBQyxDQUFDO0FBQUUsVUFBQWYsR0FBRSxRQUFRLGdCQUFnQixLQUFLLEVBQUMsSUFBR3NCLEdBQUUsS0FBSSxDQUFDLEdBQUVBLEdBQUUsS0FBSyxVQUFVLElBQUksMkJBQTJCO0FBQUUsY0FBSUMsS0FBRXRCLEdBQUUsTUFBTSxFQUFDLE9BQU0sK0JBQThCLENBQUMsR0FBRXVCLEtBQUV2QixHQUFFLE1BQU0sRUFBQyxPQUFNLHlCQUF3QixDQUFDO0FBQUUsVUFBQUQsR0FBRSxRQUFRLGdCQUFnQixLQUFLLEVBQUMsSUFBR3dCLEdBQUUsS0FBSSxDQUFDLEdBQUVBLEdBQUUsS0FBSyxVQUFVLElBQUksMkJBQTJCO0FBQUUsbUJBQVFDLEtBQUUsR0FBRUEsS0FBRXpCLEdBQUUsUUFBUSxZQUFXeUIsTUFBSTtBQUFDLGdCQUFJQyxLQUFFLEtBQUssV0FBVyxlQUFldEIsSUFBRXFCLElBQUVWLEVBQUMsR0FBRVksS0FBRSxNQUFLQyxLQUFFLEVBQUMsU0FBUSxFQUFDLEdBQUV4QixJQUFFLEdBQUVxQixJQUFFLFdBQVVWLElBQUUsSUFBR1YsR0FBQyxHQUFFLEdBQUVLLElBQUUsR0FBRUMsSUFBRSxhQUFZZSxJQUFFLFVBQVNSLEdBQUM7QUFBRSxpQkFBSyxnQkFBY1MsS0FBRSxLQUFLLGFBQWEsRUFBRSxFQUFFLENBQUMsR0FBRUMsRUFBQyxHQUFFLENBQUMsR0FBRSxFQUFDLFdBQVVULElBQUUsT0FBTVYsSUFBRSxXQUFVRixHQUFDLENBQUMsQ0FBQyxHQUFFYSxLQUFFLEtBQUssT0FBT2hCLEVBQUMsRUFBRXFCLEVBQUMsSUFBRSxLQUFLLG1CQUFpQkUsS0FBRSxLQUFLLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxHQUFFQyxFQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsV0FBVXRCLElBQUUsVUFBU2MsSUFBRSxPQUFNWixHQUFDLENBQUMsQ0FBQyxHQUFFVyxLQUFFLEtBQUssT0FBT2YsRUFBQyxFQUFFcUIsRUFBQyxJQUFFLEtBQUssT0FBTyxLQUFLLFVBQVU7QUFBRyxnQkFBSUksS0FBRSxLQUFLLFdBQVcsaUJBQWlCaEMsSUFBRU8sSUFBRXFCLElBQUVWLEVBQUM7QUFBRSxnQkFBRyxLQUFLLFlBQVUsS0FBSyxXQUFXLGNBQVksS0FBSyxRQUFRLFVBQVFVLEtBQUUsR0FBRTtBQUFDLGtCQUFJSyxLQUFFLEtBQUssV0FBVyxjQUFjLEVBQUMsT0FBTSxZQUFVLE9BQU9ELE1BQUcsUUFBTSxRQUFNQSxLQUFFLFNBQU9BLEdBQUUsUUFBUSxLQUFLLEtBQUdBLEtBQUUsRUFBRSxVQUFVN0IsR0FBRSxRQUFRLE9BQU9JLEVBQUMsQ0FBQyxHQUFFLFdBQVUsS0FBSyxRQUFRLEtBQUssUUFBUSxTQUFPLENBQUMsR0FBRSxXQUFVdUIsR0FBQyxDQUFDO0FBQUUsY0FBQUcsTUFBR04sR0FBRSxJQUFJTSxFQUFDO0FBQUEsWUFBQztBQUFDLGlCQUFLLFFBQVEsS0FBS0gsRUFBQztBQUFFLGdCQUFJSSxLQUFFLEtBQUssV0FBVyxhQUFhLEVBQUMsY0FBYUosR0FBRSxjQUFhLGNBQWFBLEdBQUUsY0FBYSxPQUFNQSxHQUFFLE9BQU0sT0FBTUEsR0FBRSxPQUFNLFdBQVVSLElBQUUsVUFBU0MsR0FBQyxDQUFDO0FBQUUsWUFBQVcsTUFBR1IsR0FBRSxJQUFJUSxFQUFDLEdBQUVwQixLQUFFZ0IsR0FBRSxHQUFFakIsS0FBRWlCLEdBQUUsR0FBRUYsS0FBRSxLQUFHWCxHQUFFLEtBQUtKLEtBQUVVLEtBQUUsQ0FBQyxHQUFFUixHQUFFLEtBQUtELEVBQUMsR0FBRSxLQUFLLGFBQWEsRUFBQyxXQUFVSSxJQUFFLFVBQVNjLElBQUUsR0FBRUosSUFBRSxHQUFFckIsSUFBRSxVQUFTdUIsR0FBRSxVQUFTLFFBQU9BLEdBQUUsUUFBTyxhQUFZRCxJQUFFLFVBQVNSLElBQUUsR0FBRVIsSUFBRSxHQUFFQyxJQUFFLFFBQU9kLElBQUUsV0FBVThCLEdBQUUsWUFBVUEsR0FBRSxZQUFVUixJQUFFLFVBQVNRLEdBQUUsV0FBU0EsR0FBRSxXQUFTUCxJQUFFLGtCQUFpQkUsSUFBRSxnQkFBZUMsSUFBRSxjQUFhQyxJQUFFLGVBQWMsS0FBSyxVQUFTLE1BQUssTUFBSyxDQUFDO0FBQUEsVUFBQztBQUFDLFVBQUF4QixHQUFFLFFBQVEsY0FBY2UsRUFBQyxJQUFFRCxJQUFFZCxHQUFFLFFBQVEsY0FBY2UsRUFBQyxJQUFFSCxJQUFFVCxHQUFFLElBQUllLEVBQUM7QUFBQSxRQUFDO0FBQUMsZUFBT2Y7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksZ0JBQWUsT0FBTSxTQUFTTixJQUFFO0FBQUMsWUFBSUMsS0FBRUQsR0FBRSxXQUFVRSxLQUFFRixHQUFFLFVBQVNHLEtBQUVILEdBQUUsVUFBU0ksS0FBRUosR0FBRSxHQUFFSyxLQUFFTCxHQUFFLEdBQUVNLEtBQUVOLEdBQUUsWUFBV08sS0FBRVAsR0FBRSxVQUFTUSxLQUFFUixHQUFFLFFBQU9TLEtBQUVULEdBQUUsYUFBWVUsS0FBRVYsR0FBRSxVQUFTVyxLQUFFWCxHQUFFLEdBQUVZLEtBQUVaLEdBQUUsR0FBRWEsS0FBRWIsR0FBRSxJQUFHYyxLQUFFZCxHQUFFLElBQUdlLEtBQUVmLEdBQUUsUUFBT2dCLEtBQUVoQixHQUFFLFdBQVVpQixLQUFFakIsR0FBRSxVQUFTb0IsS0FBRXBCLEdBQUUsY0FBYXFCLEtBQUVyQixHQUFFLGNBQWFzQixLQUFFdEIsR0FBRSxrQkFBaUJ1QixLQUFFdkIsR0FBRSxnQkFBZXdCLEtBQUV4QixHQUFFLGNBQWF5QixLQUFFekIsR0FBRSxlQUFjMEIsS0FBRTFCLEdBQUUsTUFBSzJCLEtBQUUsS0FBSyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLEdBQUc7QUFBRSxRQUFBekIsT0FBSUEsS0FBRSxLQUFLLFdBQVcsY0FBWXdCLEdBQUUsUUFBUSxPQUFPLE9BQU92QixFQUFDLElBQUV1QixHQUFFLFFBQVEsT0FBTyxPQUFPMUIsRUFBQyxJQUFHMEIsR0FBRSxPQUFPLE9BQU90QixFQUFDLEVBQUUsS0FBS0QsRUFBQyxLQUFHdUIsR0FBRSxPQUFPLE9BQU90QixFQUFDLEVBQUUsS0FBS0QsRUFBQyxFQUFFLGdCQUFjRCxLQUFFd0IsR0FBRSxPQUFPLE9BQU90QixFQUFDLEVBQUUsS0FBS0QsRUFBQyxFQUFFLGNBQWEsS0FBSyxnQkFBY0YsS0FBRTtBQUFRLFlBQUkyQixLQUFFekIsS0FBRXVCLEdBQUUsT0FBTyxNQUFNLFdBQVcsaUJBQWlCLFNBQU9BLEdBQUUsT0FBTyxNQUFNLFdBQVcsUUFBTUEsR0FBRSxRQUFRLGNBQVksS0FBSUcsS0FBRUYsR0FBRSxZQUFZLEVBQUMsR0FBRXZCLElBQUUsR0FBRUQsSUFBRSxXQUFVSCxJQUFFLFVBQVNNLElBQUUsUUFBT0MsSUFBRSxRQUFPTCxJQUFFLGFBQVlNLElBQUUsZUFBY2tCLEdBQUUsT0FBTyxPQUFPLFNBQVEsTUFBS3pCLElBQUUsZ0JBQWUyQixJQUFFLGNBQWFGLEdBQUUsT0FBTyxNQUFNLFdBQVcsT0FBTSxpQkFBZ0JBLEdBQUUsT0FBTyxNQUFNLFdBQVcsaUJBQWlCLE9BQU0sV0FBVSxjQUFjLE9BQU9ELElBQUUsT0FBTyxFQUFDLENBQUM7QUFBRSxRQUFBSSxHQUFFLEtBQUssYUFBWSxvQkFBb0IsT0FBT0gsR0FBRSxRQUFRLE1BQUssR0FBRyxDQUFDO0FBQUUsWUFBSUksS0FBRUosR0FBRSxPQUFPO0FBQW1CLFFBQUFJLEdBQUUsUUFBTSxLQUFHM0IsTUFBR3VCLEdBQUUsUUFBUSxhQUFXSSxHQUFFLFVBQVFELEdBQUUsS0FBSyxhQUFhLG9CQUFtQkMsR0FBRSxTQUFTLEdBQUVELEdBQUUsS0FBSyxhQUFhLGdCQUFlQyxHQUFFLFdBQVcsR0FBRUQsR0FBRSxLQUFLLGFBQWEsZ0JBQWVDLEdBQUUsV0FBVyxJQUFHLFdBQVNsQixNQUFHLFdBQVNDLE9BQUlnQixHQUFFLEtBQUssaUJBQWdCakIsRUFBQyxHQUFFaUIsR0FBRSxLQUFLLGlCQUFnQmhCLEVBQUMsSUFBRyxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsbUJBQW1CZ0IsSUFBRTdCLElBQUVHLEVBQUMsR0FBRU0sR0FBRSxJQUFJb0IsRUFBQztBQUFFLFlBQUlFLEtBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxvQkFBb0IsRUFBQyxHQUFFckIsSUFBRSxHQUFFQyxJQUFFLElBQUdDLElBQUUsSUFBR0MsSUFBRSxHQUFFVCxJQUFFLEdBQUVELElBQUUsUUFBT1csSUFBRSxXQUFVZCxJQUFFLFlBQVdLLElBQUUsV0FBVVUsSUFBRSxVQUFTQyxJQUFFLGNBQWFHLElBQUUsY0FBYUMsSUFBRSxjQUFhUyxJQUFFLGVBQWNMLEdBQUMsQ0FBQztBQUFFLGVBQU8sU0FBT08sR0FBRSxjQUFZVixHQUFFLElBQUlVLEdBQUUsVUFBVSxHQUFFQSxHQUFFLG1CQUFpQlYsR0FBRSxJQUFJVSxHQUFFLGVBQWUsR0FBRXRCLEdBQUUsSUFBSVksRUFBQyxHQUFFQyxNQUFHYixHQUFFLElBQUlhLEVBQUMsR0FBRUMsTUFBR2QsR0FBRSxJQUFJYyxFQUFDLEdBQUVkO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGdCQUFlLE9BQU0sU0FBU1YsSUFBRTtBQUFDLFlBQUlDLElBQUVDLEtBQUVGLEdBQUUsU0FBUUcsS0FBRUgsR0FBRSxXQUFVSSxLQUFFSixHQUFFLGFBQVlLLEtBQUVMLEdBQUUsT0FBTU0sS0FBRU4sR0FBRSxHQUFFTyxLQUFFUCxHQUFFLEdBQUVRLEtBQUVSLEdBQUUsV0FBVVMsS0FBRVQsR0FBRSxVQUFTVSxLQUFFLEtBQUssR0FBRUMsS0FBRVQsR0FBRSxHQUFFVSxLQUFFVixHQUFFO0FBQUUsWUFBR1EsR0FBRSxRQUFRO0FBQVcsVUFBQVQsTUFBR00sTUFBR0csR0FBRSxRQUFRLFFBQVFDLEVBQUMsRUFBRUMsRUFBQyxJQUFFRixHQUFFLFFBQVEsUUFBTSxLQUFLLGlCQUFlUCxNQUFHQSxLQUFFLEtBQUs7QUFBQSxpQkFBaUJPLEdBQUUsT0FBTyxZQUFZLElBQUkseUJBQXdCO0FBQUMsY0FBSUcsS0FBRSxHQUFFQyxLQUFFO0FBQUUsVUFBQUosR0FBRSxRQUFRLGNBQWMsUUFBUyxTQUFTVixJQUFFQyxJQUFFO0FBQUMsWUFBQUQsR0FBRVksRUFBQyxLQUFHQyxNQUFJWixLQUFFVSxNQUFHLE1BQUlYLEdBQUVZLEVBQUMsS0FBR0U7QUFBQSxVQUFHLENBQUUsR0FBRUQsS0FBRSxNQUFJVixLQUFFLEtBQUssWUFBVUEsS0FBRVUsS0FBR1osS0FBRU0sS0FBRUosS0FBRSxLQUFLLFVBQVNGLE1BQUdFLEtBQUVXO0FBQUEsUUFBQztBQUFNLFVBQUFiLEtBQUVNLEtBQUVKLEtBQUUsS0FBSztBQUFTLGFBQUssYUFBV0UsT0FBSSxLQUFLLFdBQVcsYUFBYSxLQUFLLE9BQU9NLEVBQUMsRUFBRUMsRUFBQyxHQUFFUCxFQUFDLElBQUVBLE1BQUcsSUFBR0MsS0FBRSxLQUFLLFdBQVcsYUFBYSxLQUFLLE9BQU9LLEVBQUMsRUFBRUMsRUFBQyxHQUFFUCxFQUFDO0FBQUUsWUFBSVUsS0FBRSxLQUFLLFdBQVcsWUFBWSxFQUFDLGNBQWFkLElBQUUsV0FBVUUsSUFBRSxJQUFHRSxJQUFFLElBQUdDLElBQUUsYUFBWUYsSUFBRSxRQUFPLEtBQUssUUFBTyxXQUFVRixHQUFFLFdBQVUsR0FBRVMsSUFBRSxHQUFFQyxJQUFFLEdBQUVGLEdBQUMsQ0FBQztBQUFFLGVBQU9BLEdBQUUsUUFBUSxlQUFhSCxNQUFHQyxLQUFHLEtBQUssV0FBVyxjQUFjLEVBQUMsR0FBRUksSUFBRSxHQUFFRCxJQUFFLElBQUdWLEtBQUVFLEtBQUUsS0FBSyxVQUFTLElBQUdBLEtBQUUsS0FBSyxXQUFVLFVBQVNNLEdBQUMsQ0FBQyxHQUFFLEVBQUMsUUFBT00sR0FBRSxRQUFPLFVBQVNBLEdBQUUsVUFBUyxJQUFHVixJQUFFLEdBQUVDLElBQUUsR0FBRUMsSUFBRSxPQUFNLEtBQUssV0FBVyxjQUFjLEtBQUlGLElBQUUsTUFBS00sSUFBRUMsRUFBQyxHQUFFLGNBQWFYLElBQUUsV0FBVUUsR0FBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxtQkFBa0IsT0FBTSxTQUFTSCxJQUFFO0FBQUMsWUFBSUMsSUFBRUMsS0FBRUYsR0FBRSxTQUFRRyxLQUFFSCxHQUFFLEdBQUVJLEtBQUVKLEdBQUUsR0FBRUssS0FBRUwsR0FBRSxXQUFVTSxLQUFFTixHQUFFLFVBQVNPLEtBQUVQLEdBQUUsT0FBTVEsS0FBRVIsR0FBRSxhQUFZUyxLQUFFVCxHQUFFLFVBQVNVLEtBQUUsS0FBSyxHQUFFQyxLQUFFVCxHQUFFLFdBQVVVLEtBQUVWLEdBQUUsR0FBRVcsS0FBRVgsR0FBRSxHQUFFWSxLQUFFWixHQUFFO0FBQUcsWUFBR1EsR0FBRSxRQUFRLFlBQVc7QUFBQyxjQUFJSyxLQUFFLEtBQUssdUJBQXVCLEVBQUMsR0FBRVosSUFBRSxHQUFFVSxJQUFFLFdBQVVGLElBQUUsVUFBU0wsR0FBQyxDQUFDO0FBQUUsVUFBQUgsS0FBRVksR0FBRSxHQUFFZCxLQUFFYyxHQUFFO0FBQUEsUUFBWSxXQUFTTCxHQUFFLE9BQU8sWUFBWSxJQUFJLHlCQUF3QjtBQUFDLGNBQUlNLEtBQUUsS0FBSyxXQUFXLHVCQUF1QixFQUFDLEdBQUVKLElBQUUsR0FBRUMsR0FBQyxDQUFDLEdBQUVJLEtBQUVELEdBQUUsZ0JBQWVFLEtBQUVGLEdBQUU7QUFBZSxVQUFBQyxLQUFFLE1BQUlYLEtBQUUsS0FBSyxZQUFVQSxLQUFFVyxLQUFHaEIsS0FBRUUsS0FBRUcsS0FBRSxLQUFLLFVBQVNMLE1BQUdLLEtBQUVZO0FBQUEsUUFBQztBQUFNLFVBQUFqQixLQUFFRSxLQUFFRyxLQUFFLEtBQUs7QUFBUyxRQUFBRixLQUFFLEtBQUssV0FBVyxhQUFhLEtBQUssT0FBT1EsRUFBQyxFQUFFQyxFQUFDLEdBQUVOLEVBQUM7QUFBRSxZQUFJWSxLQUFFLEtBQUssV0FBVyxlQUFlLEVBQUMsY0FBYWxCLElBQUUsVUFBU0ssSUFBRSxJQUFHQyxJQUFFLElBQUdILElBQUUsYUFBWUksSUFBRSxRQUFPLEtBQUssUUFBTyxXQUFVTixHQUFFLFdBQVUsR0FBRVUsSUFBRSxHQUFFQyxJQUFFLEdBQUVILEdBQUMsQ0FBQztBQUFFLGVBQU9BLEdBQUUsUUFBUSxlQUFhUCxNQUFHRSxLQUFHLEtBQUssV0FBVyxjQUFjLEVBQUMsSUFBR1MsSUFBRSxHQUFFRCxJQUFFLEdBQUVELElBQUUsSUFBR1gsS0FBRU8sS0FBRSxJQUFFRixLQUFFLEtBQUssVUFBUyxJQUFHQSxLQUFFLEtBQUssWUFBVUUsS0FBRSxHQUFFLFVBQVNDLEdBQUMsQ0FBQyxHQUFFLEVBQUMsUUFBT1UsR0FBRSxRQUFPLFVBQVNBLEdBQUUsVUFBUyxHQUFFaEIsSUFBRSxHQUFFQyxJQUFFLE9BQU0sS0FBSyxXQUFXLGNBQWMsS0FBSSxNQUFLRyxJQUFFSyxJQUFFQyxFQUFDLEdBQUUsY0FBYVosSUFBRSxVQUFTSyxHQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDBCQUF5QixPQUFNLFNBQVNOLElBQUU7QUFBQyxZQUFJQyxLQUFFRCxHQUFFLEdBQUVFLEtBQUVGLEdBQUUsVUFBU0csS0FBRUgsR0FBRSxXQUFVSSxLQUFFSixHQUFFLEdBQUVLLEtBQUUsS0FBSyxHQUFFQyxLQUFFSDtBQUFFLGVBQU9FLEdBQUUsUUFBUSxRQUFRRixFQUFDLEVBQUUsV0FBU0csS0FBRUQsR0FBRSxRQUFRLHNCQUFxQkEsR0FBRSxRQUFRLFFBQVFDLEVBQUMsRUFBRUYsRUFBQyxNQUFJSCxNQUFHSSxHQUFFLFFBQVEsUUFBUUMsRUFBQyxFQUFFRixFQUFDLElBQUVDLEdBQUUsUUFBUSxRQUFNLEtBQUssU0FBT0gsS0FBRSxLQUFLLFlBQVUsSUFBRyxFQUFDLGNBQWFELEtBQUVDLEtBQUUsS0FBSyxVQUFTLEdBQUVELEdBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksbUJBQWtCLE9BQU0sU0FBU0QsSUFBRUMsSUFBRTtBQUFDLGlCQUFRQyxJQUFFQyxLQUFFLEtBQUssR0FBRUMsS0FBRSxHQUFFQSxLQUFFRCxHQUFFLFFBQVEsY0FBYyxRQUFPQyxNQUFJO0FBQUMsY0FBSUMsS0FBRUYsR0FBRSxRQUFRLGNBQWNDLEVBQUM7QUFBRSxVQUFBQyxHQUFFLFNBQU9BLEdBQUUsTUFBTSxTQUFPLEtBQUcsU0FBU0EsR0FBRSxXQUFVLEVBQUUsTUFBSSxTQUFTTCxJQUFFLEVBQUUsS0FBRyxXQUFTRyxHQUFFLFFBQVEsY0FBY0MsRUFBQyxFQUFFLE1BQU1ILEVBQUMsTUFBSUMsS0FBRUMsR0FBRSxRQUFRLGNBQWNDLEVBQUMsRUFBRSxNQUFNSCxFQUFDLEVBQUU7QUFBQSxRQUFFO0FBQUMsZUFBT0M7QUFBQSxNQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUVGO0FBQUEsSUFBQyxFQUFFO0FBQTVod1EsUUFBOGh3USxLQUFHLFNBQVNBLElBQUU7QUFBQyxRQUFFSSxJQUFFLEVBQUU7QUFBRSxVQUFJRixLQUFFLEVBQUVFLEVBQUM7QUFBRSxlQUFTQSxLQUFHO0FBQUMsZUFBTyxFQUFFLE1BQUtBLEVBQUMsR0FBRUYsR0FBRSxNQUFNLE1BQUssU0FBUztBQUFBLE1BQUM7QUFBQyxhQUFPLEVBQUVFLElBQUUsQ0FBQyxFQUFDLEtBQUksUUFBTyxPQUFNLFNBQVNKLElBQUVFLElBQUU7QUFBQyxZQUFJQyxLQUFFLE1BQUtDLEtBQUUsS0FBSztBQUFFLGFBQUssV0FBUyxJQUFJLEVBQUUsS0FBSyxHQUFHLEdBQUUsS0FBSyxNQUFJLElBQUksR0FBRyxLQUFLLEtBQUksS0FBSyxRQUFRO0FBQUUsWUFBSUMsS0FBRSxJQUFJLEVBQUUsS0FBSyxLQUFJRCxFQUFDO0FBQUUsUUFBQUosS0FBRUssR0FBRSxhQUFhTCxFQUFDLEdBQUUsS0FBSyxTQUFPSyxHQUFFLGNBQWMsS0FBSyxNQUFNLEdBQUUsS0FBSyxXQUFXLGNBQWNMLEVBQUMsR0FBRSxXQUFTSSxHQUFFLE9BQU8sTUFBTSxjQUFZSixLQUFFSSxHQUFFLFFBQVEsY0FBYyxNQUFNLElBQUcsS0FBSyxTQUFPSixJQUFFLEtBQUssV0FBVywwQkFBMEIsSUFBSTtBQUFFLGlCQUFRTSxLQUFFLEtBQUssU0FBUyxNQUFNLEVBQUMsT0FBTSwrQ0FBOEMsQ0FBQyxHQUFFQyxLQUFFLEdBQUVDLEtBQUUsR0FBRUMsS0FBRSxTQUFTSixJQUFFSSxJQUFFO0FBQUMsY0FBSUMsS0FBRSxRQUFPQyxLQUFFLFFBQU9DLEtBQUUsUUFBT0MsS0FBRSxRQUFPQyxLQUFFO0FBQUcsVUFBQVgsR0FBRSxXQUFTQSxJQUFFQyxHQUFFLFFBQVEsYUFBYSxRQUFTLFNBQVNKLElBQUVDLElBQUU7QUFBQyxZQUFBRCxHQUFFLFFBQVFJLEdBQUUsT0FBTyxPQUFPQyxFQUFDLEVBQUUsSUFBSSxJQUFFLE9BQUtTLEtBQUViO0FBQUEsVUFBRSxDQUFFLEdBQUUsT0FBS2EsT0FBSVgsR0FBRSxXQUFTQSxHQUFFQyxHQUFFLFFBQVEsYUFBYVUsRUFBQyxDQUFDO0FBQUcsY0FBSUMsS0FBRSxDQUFDLEdBQUVFLEtBQUUsQ0FBQyxHQUFFQyxLQUFFZCxHQUFFLFFBQVEsY0FBWUYsR0FBRUcsRUFBQyxJQUFFQTtBQUFFLFVBQUFGLEdBQUUsT0FBTyxTQUFPLE1BQUlBLEdBQUUsYUFBV2UsS0FBR2YsR0FBRSxhQUFXQyxHQUFFLE9BQU8sTUFBTUQsR0FBRSxVQUFVLEtBQUdDLEdBQUUsT0FBTyxNQUFNRCxHQUFFLFVBQVUsRUFBRTtBQUFTLGNBQUlnQixLQUFFaEIsR0FBRSxTQUFTLE1BQU0sRUFBQyxPQUFNLHFCQUFvQixZQUFXLEVBQUUsYUFBYUMsR0FBRSxRQUFRLFlBQVljLEVBQUMsQ0FBQyxHQUFFLEtBQUliLEtBQUUsR0FBRSxrQkFBaUJhLEdBQUMsQ0FBQztBQUFFLFVBQUFmLEdBQUUsSUFBSSxPQUFPLDBCQUEwQmdCLElBQUVELEVBQUM7QUFBRSxjQUFJRSxLQUFFakIsR0FBRSxTQUFTLE1BQU0sRUFBQyxPQUFNLHlCQUF3QixrQkFBaUJlLEdBQUMsQ0FBQyxHQUFFRyxLQUFFbEIsR0FBRSxTQUFTLE1BQU0sRUFBQyxPQUFNLCtCQUE4QixDQUFDLEdBQUVtQixLQUFFLEdBQUVDLEtBQUUsR0FBRUMsS0FBRXJCLEdBQUUsaUJBQWlCSSxJQUFFQyxJQUFFRSxJQUFFQyxJQUFFQyxJQUFFQyxFQUFDO0FBQUUsVUFBQUwsS0FBRWdCLEdBQUUsR0FBRUYsS0FBRUUsR0FBRSxXQUFVYixLQUFFYSxHQUFFLFdBQVVYLEtBQUVXLEdBQUUsT0FBTWpCLEtBQUVpQixHQUFFLEdBQUVELEtBQUVDLEdBQUUsVUFBU2QsS0FBRWMsR0FBRSxXQUFVWixLQUFFWSxHQUFFLE9BQU1yQixHQUFFLFdBQVcsd0JBQXdCQSxFQUFDLEdBQUUsTUFBSUEsR0FBRSxTQUFTLE1BQU0sVUFBUUEsR0FBRSxTQUFTLE1BQU0sQ0FBQyxFQUFFLE1BQU8sU0FBU0gsSUFBRTtBQUFDLG1CQUFPLE1BQU1BLEVBQUM7QUFBQSxVQUFDLENBQUUsTUFBSUcsR0FBRSxTQUFTLE1BQU0sQ0FBQyxJQUFFQSxHQUFFLFNBQVMsTUFBTSxDQUFDLEVBQUUsSUFBSyxTQUFTSCxJQUFFO0FBQUMsbUJBQU9ZO0FBQUEsVUFBQyxDQUFFLEdBQUVULEdBQUUsU0FBUyxPQUFPLENBQUMsSUFBRUEsR0FBRSxTQUFTLE9BQU8sQ0FBQyxFQUFFLElBQUssU0FBU0gsSUFBRTtBQUFDLG1CQUFPO0FBQUEsVUFBQyxDQUFFO0FBQUcsbUJBQVF5QixLQUFFLEdBQUVBLEtBQUVyQixHQUFFLFFBQVEsWUFBV3FCLE1BQUk7QUFBQyxnQkFBSUMsS0FBRXZCLEdBQUUsV0FBVyxlQUFlRSxJQUFFb0IsSUFBRVAsRUFBQyxHQUFFUyxLQUFFLEVBQUMsU0FBUSxFQUFDLEdBQUV0QixJQUFFLEdBQUVvQixJQUFFLFdBQVVQLElBQUUsSUFBR1QsR0FBQyxHQUFFLGFBQVlpQixJQUFFLEdBQUVuQixJQUFFLEdBQUVDLElBQUUsVUFBU1csSUFBRSxZQUFXTCxJQUFFLGFBQVlWLEdBQUUsUUFBUSxhQUFhVSxFQUFDLEVBQUMsR0FBRWMsS0FBRTtBQUFLLFlBQUF6QixHQUFFLGdCQUFjeUIsS0FBRXpCLEdBQUUsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLEdBQUV3QixFQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsT0FBTWQsSUFBRSxXQUFVUyxJQUFFLFdBQVVYLEdBQUMsQ0FBQyxDQUFDLEdBQUVZLEtBQUVwQixHQUFFLE9BQU9FLEVBQUMsRUFBRW9CLEVBQUMsSUFBRXRCLEdBQUUsbUJBQWlCeUIsS0FBRXpCLEdBQUUsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLEdBQUV3QixFQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsV0FBVWpCLElBQUUsVUFBU2EsSUFBRSxPQUFNWCxHQUFDLENBQUMsQ0FBQyxHQUFFVSxLQUFFbkIsR0FBRSxPQUFPRSxFQUFDLEVBQUVvQixFQUFDLElBQUV0QixHQUFFLE9BQU9BLEdBQUUsVUFBVTtBQUFHLGdCQUFJMEIsS0FBRTFCLEdBQUUsV0FBVyxhQUFhLEVBQUMsY0FBYXlCLEdBQUUsY0FBYSxjQUFhQSxHQUFFLGNBQWEsT0FBTUEsR0FBRSxPQUFNLE9BQU1BLEdBQUUsT0FBTSxXQUFVTixJQUFFLFVBQVNDLEdBQUMsQ0FBQztBQUFFLFlBQUFNLE1BQUdSLEdBQUUsSUFBSVEsRUFBQyxHQUFFckIsS0FBRW9CLEdBQUUsR0FBRXJCLEtBQUVxQixHQUFFLEdBQUViLEdBQUUsS0FBS1IsRUFBQyxHQUFFVSxHQUFFLEtBQUtULEVBQUM7QUFBRSxnQkFBSXNCLEtBQUUzQixHQUFFLFdBQVcsaUJBQWlCSCxJQUFFSyxJQUFFb0IsSUFBRVAsRUFBQztBQUFFLFlBQUFDLEtBQUVoQixHQUFFLGFBQWEsRUFBQyxXQUFVZSxJQUFFLFVBQVNZLElBQUUsR0FBRUwsSUFBRSxHQUFFcEIsSUFBRSxZQUFXUyxJQUFFLFVBQVNjLEdBQUUsVUFBUyxRQUFPQSxHQUFFLFFBQU8sYUFBWUYsSUFBRSxVQUFTUCxJQUFFLEdBQUVaLElBQUUsR0FBRUMsSUFBRSxRQUFPUixJQUFFLFdBQVVzQixJQUFFLFVBQVNDLElBQUUsa0JBQWlCSCxJQUFFLGdCQUFlQyxJQUFFLE1BQUssT0FBTSxlQUFjLEVBQUMsQ0FBQztBQUFBLFVBQUM7QUFBQyxVQUFBakIsR0FBRSxRQUFRLGNBQWNjLEVBQUMsSUFBRUgsSUFBRVgsR0FBRSxRQUFRLGNBQWNjLEVBQUMsSUFBRUQsSUFBRWQsR0FBRSxTQUFTLE1BQU0sS0FBS0EsR0FBRSxTQUFTLEtBQUssR0FBRUEsR0FBRSxTQUFTLE9BQU8sS0FBS0EsR0FBRSxTQUFTLE1BQU0sR0FBRUEsR0FBRSxTQUFTLFNBQVMsS0FBS0EsR0FBRSxTQUFTLFFBQVEsR0FBRUEsR0FBRSxTQUFTLE1BQU0sS0FBS0EsR0FBRSxTQUFTLEtBQUssR0FBRUEsR0FBRSxTQUFTLE9BQU8sS0FBS0EsR0FBRSxTQUFTLE1BQU0sR0FBRUEsR0FBRSxTQUFTLFNBQVMsS0FBS0EsR0FBRSxTQUFTLFFBQVEsR0FBRUcsR0FBRSxJQUFJYSxFQUFDO0FBQUEsUUFBQyxHQUFFVCxLQUFFLEdBQUVDLEtBQUUsR0FBRUQsS0FBRVYsR0FBRSxRQUFPVSxNQUFJQztBQUFJLFVBQUFGLEdBQUVDLElBQUVDLEVBQUM7QUFBRSxlQUFPTDtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxvQkFBbUIsT0FBTSxTQUFTTixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsS0FBRSxLQUFLO0FBQUUsZUFBTyxLQUFLLGdCQUFjRixNQUFHQSxLQUFFTCxLQUFFTyxHQUFFLFFBQVEsYUFBV0EsR0FBRSxRQUFRLGNBQVksU0FBU0EsR0FBRSxPQUFPLFlBQVksSUFBSSxXQUFVLEVBQUUsSUFBRSxLQUFJLE9BQUssT0FBT0EsR0FBRSxPQUFPLFlBQVksSUFBSSxTQUFTLEVBQUUsUUFBUSxHQUFHLE1BQUlGLEtBQUUsU0FBU0UsR0FBRSxPQUFPLFlBQVksSUFBSSxXQUFVLEVBQUUsSUFBR0wsS0FBRSxLQUFLLG9CQUFrQkssR0FBRSxRQUFRLGlCQUFlLEtBQUssYUFBV0EsR0FBRSxRQUFRLFlBQVUsTUFBSSxLQUFLLGFBQVcsSUFBRSxLQUFLLG9CQUFrQixJQUFHVCxNQUFHRSxLQUFFSyxNQUFHLE1BQUlDLEtBQUVQLEtBQUVRLEdBQUUsUUFBUSxZQUFVQSxHQUFFLFFBQVEsWUFBV0QsS0FBRUMsR0FBRSxRQUFRLGNBQVlBLEdBQUUsUUFBUSxhQUFXLEtBQUdSLEtBQUVRLEdBQUUsUUFBUSxXQUFTLEtBQUssVUFBUSxTQUFTLEtBQUssV0FBVyxhQUFZLEVBQUUsSUFBRSxNQUFJRCxLQUFFLFNBQVNDLEdBQUUsT0FBTyxZQUFZLElBQUksYUFBWSxFQUFFLElBQUUsS0FBSSxPQUFLLE9BQU9BLEdBQUUsT0FBTyxZQUFZLElBQUksV0FBVyxFQUFFLFFBQVEsR0FBRyxNQUFJRCxLQUFFLFNBQVNDLEdBQUUsT0FBTyxZQUFZLElBQUksYUFBWSxFQUFFLElBQUdOLEtBQUVNLEdBQUUsUUFBUSxhQUFXLEtBQUssVUFBVSxLQUFLLFVBQVUsS0FBRyxLQUFLLGFBQVdBLEdBQUUsUUFBUSxhQUFXLE1BQUksS0FBSyxhQUFXLElBQUUsS0FBSyxVQUFVLEtBQUssVUFBVSxJQUFFLElBQUdWLEtBQUVVLEdBQUUsUUFBUSxpQkFBZVIsS0FBRU8sTUFBRyxJQUFHLEVBQUMsR0FBRVQsSUFBRSxHQUFFQyxJQUFFLFdBQVVFLElBQUUsV0FBVUQsSUFBRSxXQUFVLFVBQVFJLEtBQUVJLEdBQUUsUUFBUSxpQkFBZSxXQUFTSixNQUFHQSxHQUFFLFNBQU9FLEtBQUVFLEdBQUUsUUFBUSxhQUFhLFNBQU9GLElBQUUsVUFBUyxVQUFRRCxLQUFFRyxHQUFFLFFBQVEsaUJBQWUsV0FBU0gsTUFBR0EsR0FBRSxTQUFPRSxLQUFFQyxHQUFFLFFBQVEsYUFBYSxTQUFPRCxJQUFFLE9BQU1MLElBQUUsT0FBTUMsR0FBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSx1QkFBc0IsT0FBTSxTQUFTTCxJQUFFO0FBQUMsaUJBQVFDLElBQUVDLEtBQUVGLEdBQUUsU0FBUUcsS0FBRUgsR0FBRSxXQUFVSSxLQUFFSixHQUFFLGFBQVlLLEtBQUVMLEdBQUUsT0FBTU0sS0FBRU4sR0FBRSxHQUFFTyxLQUFFUCxHQUFFLEdBQUVRLEtBQUVSLEdBQUUsWUFBV1MsS0FBRVQsR0FBRSxhQUFZVSxLQUFFVixHQUFFLFdBQVVXLEtBQUVYLEdBQUUsVUFBU1ksS0FBRSxLQUFLLEdBQUVDLEtBQUVOLE1BQUcsT0FBS0MsS0FBRUEsS0FBRUwsS0FBRSxJQUFHVyxLQUFFWixHQUFFLEdBQUVhLEtBQUViLEdBQUUsR0FBRWMsS0FBRSxHQUFFQyxLQUFFLEdBQUVBLEtBQUUsS0FBSyxTQUFTLE9BQU8sUUFBT0E7QUFBSSxVQUFBRCxNQUFHLEtBQUssU0FBUyxPQUFPQyxFQUFDLEVBQUVGLEVBQUM7QUFBRSxZQUFJRyxLQUFFSjtBQUFFLFlBQUdMLE9BQUlTLEtBQUVULEdBQUUsUUFBUUcsR0FBRSxPQUFPLE9BQU9FLEVBQUMsRUFBRSxJQUFJLElBQUdJLEtBQUUsR0FBRTtBQUFDLGNBQUlDLEtBQUVkO0FBQUUsZUFBSyxTQUFTLFNBQVNhLEtBQUUsQ0FBQyxFQUFFSCxFQUFDLElBQUUsSUFBRUksS0FBRSxLQUFLLE9BQU9MLEVBQUMsRUFBRUMsRUFBQyxLQUFHLElBQUUsS0FBSyxTQUFTLE1BQU1HLEtBQUUsQ0FBQyxFQUFFSCxFQUFDLElBQUVDLEtBQUUsS0FBRyxLQUFLLGFBQVdBLEtBQUUsS0FBRyxLQUFLLFNBQVMsTUFBTUUsS0FBRSxDQUFDLEVBQUVILEVBQUMsSUFBRSxLQUFLLFNBQVMsU0FBU0csS0FBRSxDQUFDLEVBQUVILEVBQUMsS0FBRyxNQUFJSSxLQUFFLEtBQUssT0FBT0wsRUFBQyxFQUFFQyxFQUFDLEtBQUcsSUFBRSxLQUFLLFNBQVMsTUFBTUcsS0FBRSxDQUFDLEVBQUVILEVBQUMsSUFBRSxLQUFLLFNBQVMsTUFBTUcsS0FBRSxDQUFDLEVBQUVILEVBQUMsSUFBRUMsS0FBRSxLQUFHLEtBQUssYUFBV0EsS0FBRSxLQUFJZixLQUFFa0I7QUFBQSxRQUFDO0FBQU0sVUFBQWxCLEtBQUVJO0FBQUUsUUFBQUMsS0FBRSxTQUFPLEtBQUssT0FBT1EsRUFBQyxFQUFFQyxFQUFDLElBQUVkLEtBQUVBLEtBQUUsS0FBSyxPQUFPYSxFQUFDLEVBQUVDLEVBQUMsSUFBRSxLQUFLLGlCQUFlLEtBQUcsS0FBSyxhQUFXLEtBQUssT0FBT0QsRUFBQyxFQUFFQyxFQUFDLElBQUUsS0FBSyxpQkFBZTtBQUFHLFlBQUlLLEtBQUUsS0FBSyxXQUFXLFlBQVksRUFBQyxjQUFhUCxJQUFFLFdBQVVWLElBQUUsSUFBR0YsSUFBRSxJQUFHSyxJQUFFLGFBQVlGLElBQUUsUUFBTyxLQUFLLFFBQU8sV0FBVUYsR0FBRSxXQUFVLGFBQVlPLElBQUUsR0FBRUssSUFBRSxHQUFFQyxJQUFFLEdBQUVILEdBQUMsQ0FBQztBQUFFLGVBQU8sS0FBSyxXQUFXLGNBQWMsRUFBQyxHQUFFRyxJQUFFLEdBQUVELElBQUUsSUFBR0QsSUFBRSxJQUFHVixJQUFFLFVBQVNRLEdBQUMsQ0FBQyxHQUFFSixNQUFHRyxJQUFFLEVBQUMsUUFBT1UsR0FBRSxRQUFPLFVBQVNBLEdBQUUsVUFBUyxPQUFNLEtBQUssV0FBVyxjQUFjLEtBQUlmLElBQUUsTUFBS1MsSUFBRUMsRUFBQyxHQUFFLGNBQWFGLElBQUUsR0FBRVAsSUFBRSxHQUFFQyxHQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDBCQUF5QixPQUFNLFNBQVNQLElBQUU7QUFBQyxZQUFJQyxLQUFFRCxHQUFFLFNBQVFFLEtBQUVGLEdBQUUsR0FBRUcsS0FBRUgsR0FBRSxHQUFFSSxLQUFFSixHQUFFLFdBQVVLLEtBQUVMLEdBQUUsVUFBU00sS0FBRU4sR0FBRSxPQUFNTyxLQUFFUCxHQUFFLFlBQVdRLEtBQUVSLEdBQUUsYUFBWVMsS0FBRVQsR0FBRSxVQUFTVSxLQUFFLEtBQUssR0FBRUMsS0FBRVYsR0FBRSxHQUFFVyxLQUFFWCxHQUFFLEdBQUVZLEtBQUVaLEdBQUU7QUFBRyxZQUFHUyxHQUFFLFFBQVEsWUFBVztBQUFDLGNBQUlJLEtBQUVKLEdBQUUsUUFBUSxRQUFRQyxFQUFDLEVBQUVDLEVBQUM7QUFBRSxVQUFBRSxPQUFJQSxLQUFFLElBQUdaLE1BQUdZLEtBQUVKLEdBQUUsUUFBUSxRQUFNLEtBQUssU0FBT0wsS0FBRSxHQUFFSyxHQUFFLFFBQVEsYUFBYSxXQUFTUixNQUFHWSxLQUFFSixHQUFFLFFBQVEsUUFBTSxLQUFLLFNBQU9MLEtBQUUsSUFBRUssR0FBRSxRQUFRLGFBQWE7QUFBQSxRQUFPO0FBQUMsaUJBQVFLLElBQUVDLEtBQUVkLE1BQUcsT0FBS0ssS0FBRUEsS0FBRUYsS0FBRSxJQUFHWSxLQUFFLEdBQUVDLEtBQUUsR0FBRUEsS0FBRSxLQUFLLFNBQVMsT0FBTyxRQUFPQTtBQUFJLFVBQUFELE1BQUcsTUFBTSxLQUFLLFNBQVMsT0FBT0MsRUFBQyxFQUFFTixFQUFDLENBQUMsSUFBRSxJQUFFLEtBQUssU0FBUyxPQUFPTSxFQUFDLEVBQUVOLEVBQUM7QUFBRSxZQUFJTyxLQUFFUjtBQUFFLFlBQUdILE9BQUlXLEtBQUVYLEdBQUUsUUFBUUUsR0FBRSxPQUFPLE9BQU9DLEVBQUMsRUFBRSxJQUFJLElBQUdRLEtBQUUsS0FBRyxDQUFDVCxHQUFFLFFBQVEsY0FBWVMsS0FBRSxLQUFHVCxHQUFFLFFBQVEsY0FBWUEsR0FBRSxRQUFRLFFBQVFDLEtBQUUsQ0FBQyxFQUFFQyxFQUFDLE1BQUlGLEdBQUUsUUFBUSxRQUFRQyxFQUFDLEVBQUVDLEVBQUMsR0FBRTtBQUFDLGNBQUlRLElBQUVDLElBQUVDLElBQUVDLEtBQUUsS0FBSyxJQUFJLEtBQUssT0FBTyxTQUFPLEdBQUVaLEtBQUUsQ0FBQztBQUFFLGNBQUcsV0FBUyxLQUFLLFNBQVMsTUFBTVEsS0FBRSxDQUFDLEtBQUcsS0FBSyxTQUFTLE1BQU1BLEtBQUUsQ0FBQyxFQUFFO0FBQU8scUJBQVFLLEtBQUUsR0FBRUEsS0FBRUQsSUFBRUMsTUFBSTtBQUFDLGtCQUFJQztBQUFFLGtCQUFHLENBQUMsTUFBTSxVQUFRQSxLQUFFLEtBQUssU0FBUyxNQUFNTixLQUFFSyxFQUFDLE1BQUksV0FBU0MsS0FBRSxTQUFPQSxHQUFFYixFQUFDLENBQUMsR0FBRTtBQUFDLGdCQUFBVSxLQUFFLEtBQUssU0FBUyxNQUFNSCxLQUFFSyxFQUFDLEVBQUVaLEVBQUM7QUFBRTtBQUFBLGNBQUs7QUFBQSxZQUFDO0FBQUMsbUJBQVFjLEtBQUUsR0FBRUEsS0FBRUgsSUFBRUcsTUFBSTtBQUFDLGdCQUFJQyxJQUFFQztBQUFFLGlCQUFJLFVBQVFELEtBQUUsS0FBSyxTQUFTLFNBQVNSLEtBQUVPLEVBQUMsTUFBSSxXQUFTQyxLQUFFLFNBQU9BLEdBQUVmLEVBQUMsS0FBRyxHQUFFO0FBQUMsY0FBQVMsS0FBRSxLQUFLLE9BQU9WLEVBQUMsRUFBRUMsRUFBQyxLQUFHLElBQUVVLEtBQUVMLEtBQUUsS0FBRyxLQUFLLGFBQVdBLEtBQUUsS0FBR0s7QUFBRTtBQUFBLFlBQUs7QUFBQyxpQkFBSSxVQUFRTSxLQUFFLEtBQUssU0FBUyxTQUFTVCxLQUFFTyxFQUFDLE1BQUksV0FBU0UsS0FBRSxTQUFPQSxHQUFFaEIsRUFBQyxNQUFJLEdBQUU7QUFBQyxjQUFBUyxLQUFFLEtBQUssT0FBT1YsRUFBQyxFQUFFQyxFQUFDLEtBQUcsSUFBRVUsS0FBRUEsS0FBRUwsS0FBRSxLQUFHLEtBQUssYUFBV0EsS0FBRTtBQUFHO0FBQUEsWUFBSztBQUFBLFVBQUM7QUFBQyxxQkFBU0ksT0FBSUEsS0FBRVgsR0FBRSxRQUFRLGFBQVlLLEtBQUUsVUFBUUssS0FBRSxLQUFLLFNBQVMsT0FBTyxDQUFDLE1BQUksV0FBU0EsTUFBR0EsR0FBRSxNQUFPLFNBQVNwQixJQUFFO0FBQUMsbUJBQU8sTUFBSUE7QUFBQSxVQUFDLENBQUUsS0FBRyxLQUFLLFNBQVMsT0FBTyxNQUFNLEdBQUVtQixFQUFDLEVBQUUsTUFBTyxTQUFTbkIsSUFBRTtBQUFDLG1CQUFPQSxHQUFFLE1BQU8sU0FBU0EsSUFBRTtBQUFDLHFCQUFPLE1BQU1BLEVBQUM7QUFBQSxZQUFDLENBQUU7QUFBQSxVQUFDLENBQUUsSUFBRU0sS0FBRWU7QUFBQSxRQUFDO0FBQU0sVUFBQU4sS0FBRVQ7QUFBRSxRQUFBSCxLQUFFLEtBQUssT0FBT1EsRUFBQyxFQUFFQyxFQUFDLElBQUVHLEtBQUUsS0FBSyxPQUFPSixFQUFDLEVBQUVDLEVBQUMsSUFBRSxLQUFLLE9BQU8sS0FBSyxVQUFVLElBQUUsS0FBRyxLQUFLLGFBQVcsS0FBSyxPQUFPRCxFQUFDLEVBQUVDLEVBQUMsSUFBRSxLQUFLLE9BQU8sS0FBSyxVQUFVLElBQUUsS0FBR0c7QUFBRSxZQUFJYyxLQUFFLEtBQUssV0FBVyxlQUFlLEVBQUMsY0FBYWIsSUFBRSxVQUFTWCxJQUFFLElBQUdVLElBQUUsSUFBR1osSUFBRSxRQUFPLEtBQUssT0FBTyxLQUFLLFVBQVUsR0FBRSxhQUFZLEtBQUssYUFBWSxRQUFPLEtBQUssUUFBTyxhQUFZSyxJQUFFLFdBQVVQLEdBQUUsV0FBVSxHQUFFVSxJQUFFLEdBQUVDLElBQUUsR0FBRUYsR0FBQyxDQUFDO0FBQUUsZUFBTyxLQUFLLFdBQVcsY0FBYyxFQUFDLElBQUdHLElBQUUsR0FBRUQsSUFBRSxHQUFFRCxJQUFFLElBQUdLLElBQUUsSUFBR1gsSUFBRSxVQUFTSSxHQUFDLENBQUMsR0FBRVAsTUFBR0UsSUFBRSxFQUFDLFFBQU95QixHQUFFLFFBQU8sVUFBU0EsR0FBRSxVQUFTLE9BQU0sS0FBSyxXQUFXLGNBQWMsS0FBSSxNQUFLdkIsSUFBRUssSUFBRUMsRUFBQyxHQUFFLGNBQWFJLElBQUUsR0FBRU4sR0FBRSxRQUFRLGFBQVdSLEtBQUVFLEtBQUVGLElBQUUsR0FBRUMsR0FBQztBQUFBLE1BQUMsRUFBQyxDQUFDLENBQUMsR0FBRUM7QUFBQSxJQUFDLEVBQUU7QUFBeHMrUSxRQUEwcytRLEtBQUcsU0FBU0osSUFBRTtBQUFDLFFBQUVJLElBQUUsRUFBRTtBQUFFLFVBQUlGLEtBQUUsRUFBRUUsRUFBQztBQUFFLGVBQVNBLEtBQUc7QUFBQyxlQUFPLEVBQUUsTUFBS0EsRUFBQyxHQUFFRixHQUFFLE1BQU0sTUFBSyxTQUFTO0FBQUEsTUFBQztBQUFDLGFBQU8sRUFBRUUsSUFBRSxDQUFDLEVBQUMsS0FBSSxRQUFPLE9BQU0sU0FBU0osSUFBRUUsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsTUFBS0MsS0FBRSxLQUFLLEdBQUVDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFRixHQUFFLFFBQVEsY0FBWUgsS0FBRUcsR0FBRSxPQUFPLE1BQU0sTUFBS0csS0FBRSxJQUFJLEVBQUUsS0FBSyxHQUFHO0FBQUUsYUFBSyxxQkFBbUIsS0FBSyxFQUFFLE9BQU8sWUFBWSxhQUFZLEtBQUssYUFBVyxLQUFLLEVBQUUsT0FBTyxZQUFZLFNBQVEsS0FBSyxlQUFhSCxHQUFFLE9BQU8sWUFBWSxJQUFJO0FBQVcsWUFBSUksS0FBRSxJQUFJLEVBQUUsS0FBSyxLQUFJSixFQUFDO0FBQUUsUUFBQUwsS0FBRVMsR0FBRSxhQUFhVCxFQUFDLEdBQUUsS0FBSyxTQUFPQSxJQUFFLEtBQUssU0FBT1MsR0FBRSxjQUFjLEtBQUssTUFBTSxHQUFFLEtBQUssV0FBVyxjQUFjVCxFQUFDO0FBQUUsaUJBQVFVLEtBQUVKLEdBQUUsTUFBTSxFQUFDLE9BQU0sY0FBYyxPQUFPQyxJQUFFLGdDQUFnQyxFQUFDLENBQUMsR0FBRUksS0FBRSxTQUFTVCxJQUFFO0FBQUMsVUFBQUUsR0FBRSxZQUFVLGNBQVlDLEdBQUUsT0FBTyxNQUFNLFFBQU0sY0FBWUEsR0FBRSxPQUFPLE9BQU9ILEVBQUMsRUFBRTtBQUFLLGNBQUlLLElBQUVFLElBQUVFLElBQUVDLElBQUVDLEtBQUUsUUFBT0MsS0FBRSxRQUFPQyxLQUFFLENBQUMsR0FBRUUsS0FBRSxDQUFDLEdBQUVDLEtBQUViLEdBQUUsUUFBUSxjQUFZRixHQUFFRCxFQUFDLElBQUVBLElBQUVpQixLQUFFYixHQUFFLE1BQU0sRUFBQyxPQUFNLHFCQUFvQixZQUFXLEVBQUUsYUFBYUQsR0FBRSxRQUFRLFlBQVlhLEVBQUMsQ0FBQyxHQUFFLEtBQUloQixLQUFFLEdBQUUsa0JBQWlCZ0IsR0FBQyxDQUFDO0FBQUUsVUFBQWQsR0FBRSxJQUFJLE9BQU8sMEJBQTBCZSxJQUFFRCxFQUFDLEdBQUVsQixHQUFFRSxFQUFDLEVBQUUsU0FBTyxNQUFJRSxHQUFFLFdBQVNBLEdBQUUsV0FBUztBQUFHLGNBQUlnQixJQUFFQztBQUFFLFVBQUFqQixHQUFFLE9BQU8sU0FBTyxNQUFJQSxHQUFFLGFBQVdjO0FBQUcsY0FBSUksS0FBRWxCLEdBQUUsV0FBVyxpQkFBaUI7QUFBRSxVQUFBVSxLQUFFUSxHQUFFLEdBQUVGLEtBQUVFLEdBQUUsV0FBVWIsS0FBRWEsR0FBRSxXQUFVVixLQUFFVSxHQUFFLE9BQU1ULEtBQUVTLEdBQUUsR0FBRUQsS0FBRUMsR0FBRSxVQUFTZixLQUFFZSxHQUFFLFdBQVVYLEtBQUVXLEdBQUUsT0FBTUwsR0FBRSxLQUFLSixLQUFFUSxLQUFFLENBQUM7QUFBRSxtQkFBUUUsS0FBRWpCLEdBQUUsTUFBTSxFQUFDLE9BQU0seUJBQXdCLGtCQUFpQlksR0FBQyxDQUFDLEdBQUVNLEtBQUUsU0FBU3JCLElBQUU7QUFBQyxnQkFBSUcsS0FBRUYsR0FBRSxXQUFXLGVBQWVGLElBQUVDLElBQUVlLEVBQUMsR0FBRVIsS0FBRSxNQUFLTSxLQUFFLEVBQUMsU0FBUSxFQUFDLEdBQUVkLElBQUUsR0FBRUMsSUFBRSxXQUFVZSxHQUFDLEdBQUUsR0FBRUwsSUFBRSxHQUFFQyxJQUFFLGFBQVlSLElBQUUsVUFBU2EsR0FBQztBQUFFLFlBQUFULEtBQUVOLEdBQUUsZUFBYUEsR0FBRSx1QkFBdUIsRUFBRSxFQUFFLENBQUMsR0FBRVksRUFBQyxHQUFFLENBQUMsR0FBRSxFQUFDLFdBQVVQLElBQUUsV0FBVVcsSUFBRSxPQUFNUixHQUFDLENBQUMsQ0FBQyxJQUFFUixHQUFFLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxHQUFFWSxFQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsV0FBVVQsSUFBRSxVQUFTYyxJQUFFLE9BQU1WLEdBQUMsQ0FBQyxDQUFDLEdBQUVHLEtBQUVKLEdBQUUsR0FBRUcsS0FBRUgsR0FBRSxHQUFFUCxLQUFFLEtBQUdjLEdBQUUsS0FBS0osS0FBRVEsS0FBRSxDQUFDLEdBQUVOLEdBQUUsS0FBS0QsRUFBQyxHQUFFSixHQUFFLE9BQU8sUUFBUyxTQUFTVCxJQUFFTSxJQUFFO0FBQUMsa0JBQUlFLEtBQUUsQ0FBQ0wsR0FBRSxhQUFXQSxHQUFFLG1CQUFtQixLQUFLLGVBQWFNLEdBQUUsTUFBTUgsRUFBQyxJQUFFRixHQUFFLFFBQVEsT0FBTyxPQUFPSCxFQUFDLEdBQUVTLEtBQUVILEdBQUUsU0FBUyxFQUFDLGNBQWFVLElBQUUsZ0JBQWVmLElBQUUsT0FBTU8sR0FBRSxNQUFNSCxFQUFDLEdBQUUsT0FBTVAsR0FBRUUsRUFBQyxFQUFFQyxFQUFDLEVBQUMsQ0FBQztBQUFFLGNBQUFDLEdBQUUsYUFBYSxFQUFDLFdBQVVjLElBQUUsVUFBU1AsSUFBRSxVQUFTRixJQUFFLEdBQUVOLElBQUUsR0FBRUQsSUFBRSxVQUFTUSxHQUFFLFVBQVMsUUFBT1QsSUFBRSxhQUFZSyxJQUFFLFVBQVNhLElBQUUsR0FBRU4sSUFBRSxHQUFFQyxJQUFFLFFBQU9kLElBQUUsV0FBVW9CLElBQUUsVUFBU0MsSUFBRSxrQkFBaUJFLElBQUUsZUFBY25CLEdBQUUsVUFBUyxNQUFLQyxHQUFFLE9BQU8sTUFBTSxLQUFJLENBQUM7QUFBQSxZQUFDLENBQUU7QUFBQSxVQUFDLEdBQUVvQixLQUFFLEdBQUVBLEtBQUVwQixHQUFFLFFBQVEsWUFBV29CO0FBQUksWUFBQUQsR0FBRUMsRUFBQztBQUFFLFVBQUFwQixHQUFFLFFBQVEsY0FBY2EsRUFBQyxJQUFFRCxJQUFFWixHQUFFLFFBQVEsY0FBY2EsRUFBQyxJQUFFSCxJQUFFTCxHQUFFLElBQUlTLEVBQUM7QUFBQSxRQUFDLEdBQUVQLEtBQUUsR0FBRUEsS0FBRVosR0FBRSxRQUFPWTtBQUFJLFVBQUFELEdBQUVDLEVBQUM7QUFBRSxlQUFPRjtBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSx3QkFBdUIsT0FBTSxTQUFTVixJQUFFO0FBQUMsWUFBSUMsS0FBRUQsR0FBRSxTQUFRRSxLQUFFRixHQUFFO0FBQUUsUUFBQUEsR0FBRTtBQUFFLFlBQUlHLEtBQUVILEdBQUUsV0FBVUksS0FBRUosR0FBRSxVQUFTSyxLQUFFTCxHQUFFLE9BQU1NLEtBQUVOLEdBQUUsYUFBWU8sS0FBRSxLQUFLLEdBQUVDLEtBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFFQyxLQUFFUixHQUFFLEdBQUVTLEtBQUVULEdBQUUsR0FBRVUsS0FBRSxNQUFHQyxLQUFFTCxHQUFFLE9BQU8sWUFBWSxZQUFZLE9BQU8sUUFBT00sS0FBRU4sR0FBRSxPQUFPLFlBQVksWUFBWSxPQUFPLFVBQVNPLEtBQUU7QUFBRyxhQUFLLGNBQVlBLEtBQUUsQ0FBQyxLQUFLLFdBQVcsT0FBTyxPQUFNLEtBQUssV0FBVyxPQUFPLEtBQUs7QUFBRyxZQUFJQyxLQUFFLEtBQUssT0FBTyxLQUFLLFVBQVUsR0FBRUMsS0FBRWYsR0FBRSxXQUFVZ0IsS0FBRSxLQUFLLGFBQWFELElBQUVOLEVBQUMsR0FBRVEsS0FBRWIsSUFBRWUsS0FBRWY7QUFBRSxRQUFBWSxHQUFFLElBQUVBLEdBQUUsTUFBSU4sS0FBRTtBQUFJLFlBQUlVLEtBQUUsS0FBSyxJQUFJSixHQUFFLEdBQUVBLEdBQUUsQ0FBQyxHQUFFSyxLQUFFLEtBQUssSUFBSUwsR0FBRSxHQUFFQSxHQUFFLENBQUMsR0FBRU0sS0FBRU4sR0FBRTtBQUFFLFFBQUFWLEdBQUUsUUFBUSxlQUFhTCxNQUFHSyxHQUFFLFFBQVEsUUFBUVMsRUFBQyxFQUFFTixFQUFDLElBQUVILEdBQUUsUUFBUSxRQUFNLEtBQUssU0FBT0gsS0FBRTtBQUFHLFlBQUlvQixLQUFFdEIsS0FBRUUsS0FBRSxLQUFLO0FBQVMsbUJBQVMsS0FBSyxPQUFPSyxFQUFDLEVBQUVDLEVBQUMsS0FBRyxTQUFPLEtBQUssT0FBT0QsRUFBQyxFQUFFQyxFQUFDLEtBQUdXLEtBQUVoQixJQUFFaUIsS0FBRWpCLE9BQUlnQixLQUFFaEIsS0FBRWdCLEtBQUVOLElBQUVPLEtBQUVqQixLQUFFaUIsS0FBRVAsSUFBRUcsS0FBRWIsS0FBRVksR0FBRSxJQUFFRixJQUFFSyxLQUFFZixLQUFFWSxHQUFFLElBQUVGLElBQUVRLEtBQUVsQixLQUFFWSxHQUFFLElBQUVGO0FBQUcsWUFBSVUsS0FBRWpCLEdBQUUsS0FBS2dCLElBQUVuQixFQUFDLEdBQUVxQixLQUFFbEIsR0FBRSxLQUFLZ0IsS0FBRXBCLEtBQUUsR0FBRWlCLEVBQUM7QUFBRSxlQUFPZCxHQUFFLFFBQVEsY0FBYyxTQUFPLE1BQUltQixLQUFFLEtBQUssZ0JBQWdCVixJQUFFTixJQUFFLElBQUUsSUFBR2UsS0FBRSxLQUFLLFlBQVUsQ0FBQ2pCLEdBQUUsS0FBS2dCLElBQUVILEVBQUMsSUFBRWIsR0FBRSxLQUFLZ0IsS0FBRXBCLEtBQUUsR0FBRWlCLEVBQUMsSUFBRWIsR0FBRSxLQUFLZ0IsS0FBRXBCLEtBQUUsR0FBRWMsRUFBQyxJQUFFVixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFYyxFQUFDLElBQUVWLEdBQUUsS0FBS2dCLEtBQUVwQixLQUFFQSxLQUFFLEdBQUVjLEVBQUMsSUFBRVYsR0FBRSxLQUFLZ0IsS0FBRXBCLEtBQUUsR0FBRWMsRUFBQyxJQUFFVixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFaUIsRUFBQyxJQUFFYixHQUFFLEtBQUtnQixLQUFFcEIsSUFBRWlCLEVBQUMsSUFBRWIsR0FBRSxLQUFLZ0IsS0FBRXBCLElBQUVtQixFQUFDLElBQUVmLEdBQUUsS0FBS2dCLElBQUVELEVBQUMsSUFBRWYsR0FBRSxLQUFLZ0IsSUFBRUgsS0FBRWYsS0FBRSxDQUFDLEdBQUVFLEdBQUUsS0FBS2dCLElBQUVELEVBQUMsSUFBRWYsR0FBRSxLQUFLZ0IsS0FBRXBCLElBQUVtQixFQUFDLElBQUVmLEdBQUUsS0FBS2dCLEtBQUVwQixJQUFFa0IsRUFBQyxJQUFFZCxHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFa0IsRUFBQyxJQUFFZCxHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFZ0IsRUFBQyxJQUFFWixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRUEsS0FBRSxHQUFFZ0IsRUFBQyxJQUFFWixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFZ0IsRUFBQyxJQUFFWixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFZ0IsRUFBQyxJQUFFWixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFa0IsRUFBQyxJQUFFZCxHQUFFLEtBQUtnQixJQUFFRixF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RSxLQUFLUyxJQUFFSSxLQUFFakIsS0FBRSxDQUFDLElBQUVJLEdBQUUsS0FBS08sSUFBRU0sS0FBRWpCLEtBQUUsQ0FBQyxJQUFFSSxHQUFFLEtBQUtPLElBQUVNLEtBQUVqQixLQUFFLElBQUVBLEtBQUUsQ0FBQyxJQUFFSSxHQUFFLEtBQUtPLElBQUVNLEtBQUVqQixLQUFFLElBQUVBLEtBQUUsQ0FBQyxJQUFFSSxHQUFFLEtBQUtPLElBQUVNLEtBQUVqQixLQUFFLENBQUMsSUFBRUksR0FBRSxLQUFLUyxJQUFFSSxLQUFFakIsS0FBRSxDQUFDLElBQUVJLEdBQUUsS0FBS1MsSUFBRUksS0FBRWpCLEVBQUMsSUFBRUksR0FBRSxLQUFLWSxJQUFFQyxLQUFFakIsRUFBQyxJQUFFSSxHQUFFLEtBQUtZLElBQUVDLEVBQUMsSUFBRWIsR0FBRSxLQUFLUyxLQUFFWCxLQUFFLEdBQUVlLEVBQUMsR0FBRWIsR0FBRSxLQUFLWSxJQUFFQyxFQUFDLElBQUViLEdBQUUsS0FBS1ksSUFBRUMsS0FBRWpCLEVBQUMsSUFBRUksR0FBRSxLQUFLVSxJQUFFRyxLQUFFakIsRUFBQyxJQUFFSSxHQUFFLEtBQUtVLElBQUVHLEtBQUVqQixLQUFFLENBQUMsSUFBRUksR0FBRSxLQUFLUSxJQUFFSyxLQUFFakIsS0FBRSxDQUFDLElBQUVJLEdBQUUsS0FBS1EsSUFBRUssS0FBRWpCLEtBQUVBLEtBQUUsQ0FBQyxJQUFFSSxHQUFFLEtBQUtRLElBQUVLLEtBQUVqQixLQUFFLENBQUMsSUFBRUksR0FBRSxLQUFLUSxJQUFFSyxLQUFFakIsS0FBRSxDQUFDLElBQUVJLEdBQUUsS0FBS1UsSUFBRUcsS0FBRWpCLEtBQUUsQ0FBQyxJQUFFSSxHQUFFLEtBQUtVLElBQUVHLEVBQUMsSUFBRWIsR0FBRSxLQUFLWSxJQUFFQyxFQUFDLElBQUUsR0FBRyxHQUFFRSxNQUFHZixHQUFFLEtBQUtTLElBQUVJLEVBQUMsR0FBRWQsR0FBRSxRQUFRLGVBQWFMLE1BQUdDLEtBQUcsRUFBQyxRQUFPbUIsSUFBRSxVQUFTQyxJQUFFLEdBQUVM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LE9BQU0sV0FBVTtBQUFDLGVBQU0sTUFBSVMsR0FBRSxLQUFLLENBQUMsSUFBRUEsR0FBRSxLQUFLLENBQUMsSUFBRUEsR0FBRSxLQUFLLENBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxXQUFVO0FBQUMsZUFBTSxTQUFPLENBQUMsS0FBSyxHQUFFLEtBQUssR0FBRSxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUU7QUFBQSxNQUFHLEdBQUUsWUFBVyxXQUFVO0FBQUMsZUFBTyxLQUFLLElBQUUsTUFBSSxNQUFHLEtBQUssSUFBRSxNQUFJLE9BQUksS0FBSyxJQUFFLE1BQUk7QUFBQSxNQUFHLEdBQUUsT0FBTSxTQUFTWixJQUFFO0FBQUMsZUFBTyxLQUFLLGNBQVksSUFBSUcsR0FBRSxNQUFNSCxFQUFDLEdBQUU7QUFBQSxNQUFJLEdBQUUsSUFBRyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLGVBQWFBLEtBQUVBLEtBQUUsSUFBRSxJQUFFQSxLQUFFLElBQUUsSUFBRUEsSUFBRSxJQUFJRyxHQUFFLE1BQU0sRUFBQyxHQUFFLENBQUMsRUFBRSxLQUFLLEtBQUcsS0FBSyxZQUFZLElBQUUsS0FBSyxLQUFHSCxLQUFHLEdBQUUsQ0FBQyxFQUFFLEtBQUssS0FBRyxLQUFLLFlBQVksSUFBRSxLQUFLLEtBQUdBLEtBQUcsR0FBRSxDQUFDLEVBQUUsS0FBSyxLQUFHLEtBQUssWUFBWSxJQUFFLEtBQUssS0FBR0EsSUFBRSxDQUFDLEtBQUc7QUFBQSxNQUFJLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLE1BQU0sT0FBSyxTQUFTSCxJQUFFO0FBQUMsZUFBT0EsTUFBRyxJQUFHRyxHQUFFLE1BQU0sTUFBTSxLQUFLSCxFQUFDLEtBQUdHLEdBQUUsTUFBTSxNQUFNLEtBQUtILEVBQUM7QUFBQSxNQUFDLEdBQUVHLEdBQUUsTUFBTSxRQUFNLFNBQVNILElBQUU7QUFBQyxlQUFPQSxNQUFHLFlBQVUsT0FBT0EsR0FBRSxLQUFHLFlBQVUsT0FBT0EsR0FBRSxLQUFHLFlBQVUsT0FBT0EsR0FBRTtBQUFBLE1BQUMsR0FBRUcsR0FBRSxNQUFNLFVBQVEsU0FBU0gsSUFBRTtBQUFDLGVBQU9HLEdBQUUsTUFBTSxNQUFNSCxFQUFDLEtBQUdHLEdBQUUsTUFBTSxLQUFLSCxFQUFDO0FBQUEsTUFBQyxHQUFFRyxHQUFFLFFBQU0sU0FBU0gsSUFBRUMsSUFBRTtBQUFDLGNBQUlELE1BQUdBLE1BQUcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxVQUFRQyxPQUFJRCxLQUFFQyxHQUFFLFFBQVEsSUFBRyxLQUFLLFFBQU0sS0FBSyxNQUFNRCxFQUFDO0FBQUEsTUFBQyxHQUFFRyxHQUFFLE9BQU9BLEdBQUUsT0FBTSxFQUFDLFVBQVMsV0FBVTtBQUFDLGVBQU8sS0FBSyxNQUFNLEtBQUssR0FBRztBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxlQUFPLEtBQUs7QUFBQSxNQUFLLEdBQUUsT0FBTSxTQUFTSCxJQUFFO0FBQUMsZUFBT0EsS0FBRUEsR0FBRSxRQUFRLEdBQUUsTUFBTSxRQUFRQSxFQUFDLElBQUVBLEtBQUUsS0FBSyxNQUFNQSxFQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxhQUFXLFNBQVNILElBQUVDLElBQUU7QUFBQyxRQUFBRSxHQUFFLE1BQU0sS0FBSyxNQUFLSCxJQUFFQyxNQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFRSxHQUFFLFdBQVcsWUFBVSxJQUFJQSxHQUFFLFNBQU1BLEdBQUUsV0FBVyxVQUFVLGNBQVlBLEdBQUU7QUFBVyxlQUFRQyxLQUFFLEVBQUMsR0FBRSxTQUFTSixJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBT0QsR0FBRSxJQUFFQyxHQUFFLElBQUVGLEdBQUUsQ0FBQyxHQUFFQyxHQUFFLElBQUVDLEdBQUUsSUFBRUYsR0FBRSxDQUFDLEdBQUUsQ0FBQyxLQUFJQyxHQUFFLEdBQUVBLEdBQUUsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNELElBQUVDLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFQyxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFLENBQUMsS0FBSUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLEdBQUUsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU9BLEdBQUUsSUFBRUQsR0FBRSxDQUFDLEdBQUUsQ0FBQyxLQUFJQSxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFLENBQUMsS0FBSUEsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBT0EsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRUMsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRSxDQUFDLEtBQUlBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBT0EsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRUMsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRSxDQUFDLEtBQUlBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLEdBQUUsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU9BLEdBQUUsSUFBRUQsR0FBRSxDQUFDLEdBQUVDLEdBQUUsSUFBRUQsR0FBRSxDQUFDLEdBQUUsQ0FBQyxLQUFJQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFPRCxHQUFFLElBQUVDLEdBQUUsR0FBRUQsR0FBRSxJQUFFQyxHQUFFLEdBQUUsQ0FBQyxHQUFHO0FBQUEsTUFBQyxFQUFDLEdBQUVHLEtBQUUsYUFBYSxNQUFNLEVBQUUsR0FBRUMsS0FBRSxHQUFFQyxLQUFFRixHQUFFLFFBQU9DLEtBQUVDLElBQUUsRUFBRUQ7QUFBRSxRQUFBRixHQUFFQyxHQUFFQyxFQUFDLENBQUMsSUFBRSx5QkFBU04sSUFBRTtBQUFDLGlCQUFPLFNBQVNDLElBQUVDLElBQUVDLElBQUU7QUFBQyxnQkFBRyxPQUFLSDtBQUFFLGNBQUFDLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsSUFBRUMsR0FBRTtBQUFBLHFCQUFVLE9BQUtGO0FBQUUsY0FBQUMsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxJQUFFQyxHQUFFO0FBQUEscUJBQVUsT0FBS0Y7QUFBRSxjQUFBQyxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLElBQUVDLEdBQUUsR0FBRUQsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxJQUFFQyxHQUFFO0FBQUE7QUFBTyx1QkFBUUcsS0FBRSxHQUFFQyxLQUFFTCxHQUFFLFFBQU9JLEtBQUVDLElBQUUsRUFBRUQ7QUFBRSxnQkFBQUosR0FBRUksRUFBQyxJQUFFSixHQUFFSSxFQUFDLEtBQUdBLEtBQUUsSUFBRUgsR0FBRSxJQUFFQSxHQUFFO0FBQUcsZ0JBQUdFLE1BQUcsY0FBWSxPQUFPQSxHQUFFSixFQUFDO0FBQUUscUJBQU9JLEdBQUVKLEVBQUMsRUFBRUMsSUFBRUMsSUFBRUMsRUFBQztBQUFBLFVBQUM7QUFBQSxRQUFDLEVBQUVFLEdBQUVDLEVBQUMsRUFBRSxZQUFZLENBQUM7QUFBRSxNQUFBSCxHQUFFLFlBQVUsU0FBU0gsSUFBRUMsSUFBRTtBQUFDLFFBQUFFLEdBQUUsTUFBTSxLQUFLLE1BQUtILElBQUVDLE1BQUcsQ0FBQyxDQUFDLEtBQUksR0FBRSxDQUFDLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRUUsR0FBRSxVQUFVLFlBQVUsSUFBSUEsR0FBRSxTQUFNQSxHQUFFLFVBQVUsVUFBVSxjQUFZQSxHQUFFLFdBQVVBLEdBQUUsT0FBT0EsR0FBRSxXQUFVLEVBQUMsVUFBUyxXQUFVO0FBQUMsZUFBTyxTQUFTSCxJQUFFO0FBQUMsbUJBQVFDLEtBQUUsR0FBRUMsS0FBRUYsR0FBRSxRQUFPRyxLQUFFLElBQUdGLEtBQUVDLElBQUVEO0FBQUksWUFBQUUsTUFBR0gsR0FBRUMsRUFBQyxFQUFFLENBQUMsR0FBRSxRQUFNRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxNQUFJRSxNQUFHSCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxHQUFFLFFBQU1ELEdBQUVDLEVBQUMsRUFBRSxDQUFDLE1BQUlFLE1BQUcsS0FBSUEsTUFBR0gsR0FBRUMsRUFBQyxFQUFFLENBQUMsR0FBRSxRQUFNRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxNQUFJRSxNQUFHLEtBQUlBLE1BQUdILEdBQUVDLEVBQUMsRUFBRSxDQUFDLEdBQUVFLE1BQUcsS0FBSUEsTUFBR0gsR0FBRUMsRUFBQyxFQUFFLENBQUMsR0FBRSxRQUFNRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxNQUFJRSxNQUFHLEtBQUlBLE1BQUdILEdBQUVDLEVBQUMsRUFBRSxDQUFDLEdBQUVFLE1BQUcsS0FBSUEsTUFBR0gsR0FBRUMsRUFBQyxFQUFFLENBQUMsR0FBRSxRQUFNRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxNQUFJRSxNQUFHLEtBQUlBLE1BQUdILEdBQUVDLEVBQUMsRUFBRSxDQUFDO0FBQU8saUJBQU9FLEtBQUU7QUFBQSxRQUFHLEVBQUUsS0FBSyxLQUFLO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0gsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxLQUFLO0FBQUUsZUFBT0EsR0FBRSxHQUFFQSxHQUFFLEdBQUU7QUFBQSxNQUFJLEdBQUUsSUFBRyxTQUFTRixJQUFFO0FBQUMsWUFBRyxDQUFDLEtBQUs7QUFBWSxpQkFBTztBQUFLLGlCQUFRQyxLQUFFLEtBQUssT0FBTUMsS0FBRSxLQUFLLFlBQVksT0FBTUUsS0FBRSxDQUFDLEdBQUVDLEtBQUUsSUFBSUYsR0FBRSxhQUFVRyxLQUFFLEdBQUVDLEtBQUVOLEdBQUUsUUFBT0ssS0FBRUMsSUFBRUQsTUFBSTtBQUFDLFVBQUFGLEdBQUVFLEVBQUMsSUFBRSxDQUFDTCxHQUFFSyxFQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQUUsbUJBQVFFLEtBQUUsR0FBRUMsS0FBRVIsR0FBRUssRUFBQyxFQUFFLFFBQU9FLEtBQUVDLElBQUVEO0FBQUksWUFBQUosR0FBRUUsRUFBQyxFQUFFRSxFQUFDLElBQUVQLEdBQUVLLEVBQUMsRUFBRUUsRUFBQyxLQUFHTixHQUFFSSxFQUFDLEVBQUVFLEVBQUMsSUFBRVAsR0FBRUssRUFBQyxFQUFFRSxFQUFDLEtBQUdSO0FBQUUsa0JBQU1JLEdBQUVFLEVBQUMsRUFBRSxDQUFDLE1BQUlGLEdBQUVFLEVBQUMsRUFBRSxDQUFDLElBQUUsRUFBRSxLQUFHRixHQUFFRSxFQUFDLEVBQUUsQ0FBQyxJQUFHRixHQUFFRSxFQUFDLEVBQUUsQ0FBQyxJQUFFLEVBQUUsS0FBR0YsR0FBRUUsRUFBQyxFQUFFLENBQUM7QUFBQSxRQUFHO0FBQUMsZUFBT0QsR0FBRSxRQUFNRCxJQUFFQztBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNMLElBQUU7QUFBQyxZQUFHQSxjQUFhRyxHQUFFO0FBQVUsaUJBQU9ILEdBQUUsUUFBUTtBQUFFLFlBQUlDLElBQUVDLEtBQUUsRUFBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUM7QUFBRSxRQUFBRixLQUFFLFlBQVUsT0FBT0EsS0FBRUEsR0FBRSxRQUFRRyxHQUFFLE1BQU0saUJBQWdCTSxFQUFDLEVBQUUsUUFBUU4sR0FBRSxNQUFNLGFBQVksTUFBTSxFQUFFLFFBQVFBLEdBQUUsTUFBTSxRQUFPLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTUEsR0FBRSxNQUFNLFNBQVMsSUFBRUgsR0FBRSxPQUFRLFNBQVNBLElBQUVDLElBQUU7QUFBQyxpQkFBTSxDQUFDLEVBQUUsT0FBTyxLQUFLRCxJQUFFQyxFQUFDO0FBQUEsUUFBQyxHQUFHLENBQUMsQ0FBQztBQUFFLFlBQUlJLEtBQUUsQ0FBQyxHQUFFQyxLQUFFLElBQUlILEdBQUUsU0FBTUksS0FBRSxJQUFJSixHQUFFLFNBQU1LLEtBQUUsR0FBRUUsS0FBRVYsR0FBRTtBQUFPLFdBQUU7QUFBQyxVQUFBRyxHQUFFLE1BQU0sYUFBYSxLQUFLSCxHQUFFUSxFQUFDLENBQUMsS0FBR1AsS0FBRUQsR0FBRVEsRUFBQyxHQUFFLEVBQUVBLE1BQUcsT0FBS1AsS0FBRUEsS0FBRSxNQUFJLE9BQUtBLE9BQUlBLEtBQUUsTUFBS0ksR0FBRSxLQUFLRCxHQUFFSCxFQUFDLEVBQUUsS0FBSyxNQUFLRCxHQUFFLE1BQU1RLElBQUVBLE1BQUdOLEdBQUVELEdBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLFVBQVUsR0FBRUssSUFBRUMsRUFBQyxDQUFDO0FBQUEsUUFBQyxTQUFPRyxLQUFFRjtBQUFHLGVBQU9IO0FBQUEsTUFBQyxHQUFFLE1BQUssV0FBVTtBQUFDLGVBQU9GLEdBQUUsT0FBTyxRQUFNQSxHQUFFLFFBQVEsR0FBRUEsR0FBRSxPQUFPLEtBQUssYUFBYSxLQUFJLEtBQUssU0FBUyxDQUFDLEdBQUVBLEdBQUUsT0FBTyxLQUFLLFFBQVE7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFQSxHQUFFLFNBQU9BLEdBQUUsT0FBTyxFQUFDLFFBQU8sU0FBU0gsSUFBRUMsSUFBRTtBQUFDLGFBQUssUUFBTSxHQUFFLEtBQUssT0FBS0EsTUFBRyxJQUFHLFlBQVUsT0FBT0QsS0FBRSxLQUFLLFFBQU0sTUFBTUEsRUFBQyxJQUFFLElBQUUsU0FBU0EsRUFBQyxJQUFFQSxLQUFFQSxLQUFFLElBQUUsU0FBTyxRQUFNLFlBQVUsT0FBT0EsTUFBR0MsS0FBRUQsR0FBRSxNQUFNRyxHQUFFLE1BQU0sYUFBYSxPQUFLLEtBQUssUUFBTSxXQUFXRixHQUFFLENBQUMsQ0FBQyxHQUFFLE9BQUtBLEdBQUUsQ0FBQyxJQUFFLEtBQUssU0FBTyxNQUFJLE9BQUtBLEdBQUUsQ0FBQyxNQUFJLEtBQUssU0FBTyxNQUFLLEtBQUssT0FBS0EsR0FBRSxDQUFDLEtBQUdELGNBQWFHLEdBQUUsV0FBUyxLQUFLLFFBQU1ILEdBQUUsUUFBUSxHQUFFLEtBQUssT0FBS0EsR0FBRTtBQUFBLE1BQUssR0FBRSxRQUFPLEVBQUMsVUFBUyxXQUFVO0FBQUMsZ0JBQU8sT0FBSyxLQUFLLE9BQUssQ0FBQyxFQUFFLE1BQUksS0FBSyxTQUFPLE1BQUksT0FBSyxLQUFLLE9BQUssS0FBSyxRQUFNLE1BQUksS0FBSyxTQUFPLEtBQUs7QUFBQSxNQUFJLEdBQUUsUUFBTyxXQUFVO0FBQUMsZUFBTyxLQUFLLFNBQVM7QUFBQSxNQUFDLEdBQUUsU0FBUSxXQUFVO0FBQUMsZUFBTyxLQUFLO0FBQUEsTUFBSyxHQUFFLE1BQUssU0FBU0EsSUFBRTtBQUFDLGVBQU9BLEtBQUUsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEdBQUUsSUFBSUcsR0FBRSxPQUFPLE9BQUtILElBQUUsS0FBSyxRQUFNQSxHQUFFLElBQUk7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTQSxJQUFFO0FBQUMsZUFBT0EsS0FBRSxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsR0FBRSxJQUFJRyxHQUFFLE9BQU8sT0FBS0gsSUFBRSxLQUFLLFFBQU1BLEdBQUUsSUFBSTtBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPQSxLQUFFLElBQUlHLEdBQUUsT0FBT0gsRUFBQyxHQUFFLElBQUlHLEdBQUUsT0FBTyxPQUFLSCxJQUFFLEtBQUssUUFBTUEsR0FBRSxJQUFJO0FBQUEsTUFBQyxHQUFFLFFBQU8sU0FBU0EsSUFBRTtBQUFDLGVBQU9BLEtBQUUsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEdBQUUsSUFBSUcsR0FBRSxPQUFPLE9BQUtILElBQUUsS0FBSyxRQUFNQSxHQUFFLElBQUk7QUFBQSxNQUFDLEdBQUUsSUFBRyxTQUFTQSxJQUFFO0FBQUMsWUFBSUMsS0FBRSxJQUFJRSxHQUFFLE9BQU8sSUFBSTtBQUFFLGVBQU0sWUFBVSxPQUFPSCxPQUFJQyxHQUFFLE9BQUtELEtBQUdDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0QsSUFBRTtBQUFDLGVBQU8sS0FBSyxjQUFZLElBQUlHLEdBQUUsT0FBT0gsRUFBQyxHQUFFQSxHQUFFLGFBQVcsS0FBSyxZQUFZLFNBQU8sS0FBSyxRQUFPO0FBQUEsTUFBSSxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxjQUFZLElBQUlHLEdBQUUsT0FBTyxLQUFLLFdBQVcsRUFBRSxNQUFNLElBQUksRUFBRSxNQUFNSCxFQUFDLEVBQUUsS0FBSyxJQUFJLElBQUU7QUFBQSxNQUFJLEVBQUMsRUFBQyxDQUFDLEdBQUVHLEdBQUUsVUFBUUEsR0FBRSxPQUFPLEVBQUMsUUFBTyxTQUFTSCxJQUFFO0FBQUMsYUFBSyxVQUFRRyxHQUFFLFNBQVMsTUFBTSxRQUFPLEtBQUssU0FBTyxNQUFLLEtBQUssTUFBSSxDQUFDLElBQUcsS0FBSyxPQUFLSCxRQUFLLEtBQUssT0FBS0EsR0FBRSxVQUFTLEtBQUssS0FBSyxXQUFTLE1BQUssS0FBSyxVQUFRQSxHQUFFLGFBQWEsUUFBUSxLQUFHLEtBQUs7QUFBQSxNQUFRLEdBQUUsUUFBTyxFQUFDLEdBQUUsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLEtBQUlBLEVBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssS0FBSUEsRUFBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxFQUFFLElBQUUsS0FBSyxNQUFNLElBQUUsSUFBRSxLQUFLLEVBQUVBLEtBQUUsS0FBSyxNQUFNLElBQUUsQ0FBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxFQUFFLElBQUUsS0FBSyxPQUFPLElBQUUsSUFBRSxLQUFLLEVBQUVBLEtBQUUsS0FBSyxPQUFPLElBQUUsQ0FBQztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssRUFBRUQsRUFBQyxFQUFFLEVBQUVDLEVBQUM7QUFBQSxNQUFDLEdBQUUsUUFBTyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLEdBQUdELEVBQUMsRUFBRSxHQUFHQyxFQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0QsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLFNBQVFBLEVBQUM7QUFBQSxNQUFDLEdBQUUsUUFBTyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssVUFBU0EsRUFBQztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFVyxHQUFFLE1BQUtiLElBQUVDLEVBQUM7QUFBRSxlQUFPLEtBQUssTUFBTSxJQUFJRSxHQUFFLE9BQU9ELEdBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJQyxHQUFFLE9BQU9ELEdBQUUsTUFBTSxDQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0YsSUFBRTtBQUFDLGFBQUssZUFBZTtBQUFFLFlBQUlDLEtBQUVlLEdBQUUsS0FBSyxLQUFLLFVBQVUsSUFBRSxDQUFDO0FBQUUsZUFBT2hCLEtBQUVBLEdBQUUsSUFBSUMsRUFBQyxJQUFFLEtBQUssTUFBTUEsRUFBQyxHQUFFQTtBQUFBLE1BQUMsR0FBRSxRQUFPLFdBQVU7QUFBQyxlQUFPLEtBQUssT0FBTyxLQUFHLEtBQUssT0FBTyxFQUFFLGNBQWMsSUFBSSxHQUFFO0FBQUEsTUFBSSxHQUFFLFNBQVEsU0FBU0QsSUFBRTtBQUFDLGVBQU8sS0FBSyxNQUFNQSxFQUFDLEVBQUUsT0FBTyxHQUFFQTtBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUksSUFBSTtBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUksSUFBSTtBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssV0FBVTtBQUFDLGVBQU8sS0FBSyxNQUFNLFdBQVUsRUFBRTtBQUFBLE1BQUMsR0FBRSxNQUFLLFdBQVU7QUFBQyxlQUFPLEtBQUssTUFBTSxXQUFVLE1BQU07QUFBQSxNQUFDLEdBQUUsU0FBUSxXQUFVO0FBQUMsZUFBTSxVQUFRLEtBQUssTUFBTSxTQUFTO0FBQUEsTUFBQyxHQUFFLFVBQVMsV0FBVTtBQUFDLGVBQU8sS0FBSyxLQUFLLElBQUk7QUFBQSxNQUFDLEdBQUUsU0FBUSxXQUFVO0FBQUMsWUFBSUEsS0FBRSxLQUFLLEtBQUssT0FBTztBQUFFLGVBQU8sUUFBTUEsS0FBRSxDQUFDLElBQUVBLEdBQUUsS0FBSyxFQUFFLE1BQU1HLEdBQUUsTUFBTSxTQUFTO0FBQUEsTUFBQyxHQUFFLFVBQVMsU0FBU0gsSUFBRTtBQUFDLGVBQU0sTUFBSSxLQUFLLFFBQVEsRUFBRSxRQUFRQSxFQUFDO0FBQUEsTUFBQyxHQUFFLFVBQVMsU0FBU0EsSUFBRTtBQUFDLFlBQUcsQ0FBQyxLQUFLLFNBQVNBLEVBQUMsR0FBRTtBQUFDLGNBQUlDLEtBQUUsS0FBSyxRQUFRO0FBQUUsVUFBQUEsR0FBRSxLQUFLRCxFQUFDLEdBQUUsS0FBSyxLQUFLLFNBQVFDLEdBQUUsS0FBSyxHQUFHLENBQUM7QUFBQSxRQUFDO0FBQUMsZUFBTztBQUFBLE1BQUksR0FBRSxhQUFZLFNBQVNELElBQUU7QUFBQyxlQUFPLEtBQUssU0FBU0EsRUFBQyxLQUFHLEtBQUssS0FBSyxTQUFRLEtBQUssUUFBUSxFQUFFLE9BQVEsU0FBU0MsSUFBRTtBQUFDLGlCQUFPQSxNQUFHRDtBQUFBLFFBQUMsQ0FBRSxFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUU7QUFBQSxNQUFJLEdBQUUsYUFBWSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLFNBQVNBLEVBQUMsSUFBRSxLQUFLLFlBQVlBLEVBQUMs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QU8sS0FBSyxhQUFhLENBQUMsb0JBQUksTUFBSSxJQUFHLFVBQUssS0FBSyxVQUFVLFNBQU9DLEtBQUUsS0FBSyxJQUFJLEtBQUssUUFBTyxDQUFDLEdBQUVDLEtBQUUsS0FBSyxNQUFNRCxFQUFDLEdBQUUsU0FBSyxLQUFLLFVBQVUsU0FBT0MsS0FBRSxLQUFLLFVBQVUsU0FBTyxLQUFLLE1BQUlELEtBQUVDLElBQUVDLEtBQUUsS0FBSyxVQUFVLE1BQUssS0FBSyxVQUFVLE9BQUtELE9BQUksS0FBSyxTQUFPLEtBQUssVUFBVSxPQUFNLEtBQUssTUFBSSxHQUFFQyxLQUFFLEtBQUssVUFBVSxPQUFLLEdBQUUsS0FBSyxVQUFVLE9BQUssS0FBSyxVQUFVLFFBQU8sS0FBSyxVQUFVLGNBQVksS0FBSyxVQUFVLFdBQVMsS0FBSyxVQUFVLFlBQVUsU0FBUyxLQUFLLFVBQVUsT0FBS0EsTUFBRyxDQUFDLE9BQUssS0FBSyxTQUFPLEtBQUssSUFBSSxLQUFLLFFBQU8sQ0FBQyxHQUFFLEtBQUssTUFBSSxLQUFLLFNBQVEsS0FBSyxNQUFJLE1BQUksS0FBSyxNQUFJLElBQUcsS0FBSyxVQUFVLGFBQVcsS0FBSyxNQUFJLElBQUUsS0FBSztBQUFLLFlBQUlDLEtBQUUsS0FBSyxVQUFVLEtBQUssS0FBSyxHQUFHO0FBQUUsaUJBQVFDLE1BQUssS0FBSyxVQUFVO0FBQUssVUFBQUEsS0FBRSxLQUFLLFdBQVNBLE1BQUdELE9BQUksS0FBSyxVQUFVLEtBQUtDLEVBQUMsRUFBRSxLQUFLLEtBQUssT0FBTyxHQUFFLEtBQUssS0FBSUQsRUFBQyxHQUFFLE9BQU8sS0FBSyxVQUFVLEtBQUtDLEVBQUM7QUFBRyxlQUFPLEtBQUssVUFBUSxLQUFLLE9BQU8sRUFBRSxLQUFLLFVBQVMsRUFBQyxLQUFJLEtBQUssS0FBSSxPQUFNRCxJQUFFLElBQUcsTUFBSyxXQUFVLEtBQUssVUFBUyxDQUFDLEdBQUUsS0FBSyxhQUFXLEtBQUssT0FBTyxHQUFFLEtBQUcsS0FBSyxPQUFLLENBQUMsS0FBSyxVQUFVLFlBQVUsS0FBSyxV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QVU7QUFBQyxlQUFLLE1BQU07QUFBQSxRQUFDLEVBQUUsS0FBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFO0FBQUEsTUFBSSxFQUFDLEdBQUUsUUFBT0UsR0FBRSxTQUFRLFdBQVUsRUFBQyxTQUFRLFNBQVNILElBQUVDLElBQUVDLElBQUU7QUFBQyxnQkFBTyxLQUFLLE9BQUssS0FBSyxLQUFHLElBQUlDLEdBQUUsR0FBRyxJQUFJLElBQUksUUFBUUgsSUFBRUMsSUFBRUMsRUFBQztBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNGLElBQUU7QUFBQyxnQkFBTyxLQUFLLE9BQUssS0FBSyxLQUFHLElBQUlHLEdBQUUsR0FBRyxJQUFJLElBQUksTUFBTUgsRUFBQztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssTUFBSSxLQUFLLEdBQUcsS0FBS0QsSUFBRUMsRUFBQyxHQUFFO0FBQUEsTUFBSSxHQUFFLFFBQU8sV0FBVTtBQUFDLGVBQU8sS0FBSyxNQUFJLEtBQUssR0FBRyxPQUFPLEdBQUU7QUFBQSxNQUFJLEVBQUMsRUFBQyxDQUFDLEdBQUVFLEdBQUUsV0FBU0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBT0UsR0FBRSxNQUFNLFFBQVFGLEVBQUMsSUFBRSxJQUFJRSxHQUFFLE1BQU1ILEVBQUMsRUFBRSxNQUFNQyxFQUFDLElBQUVFLEdBQUUsTUFBTSxVQUFVLEtBQUtILEVBQUMsSUFBRUcsR0FBRSxNQUFNLFlBQVksS0FBS0gsRUFBQyxJQUFFLElBQUlHLEdBQUUsVUFBVUgsRUFBQyxFQUFFLE1BQU1DLEVBQUMsSUFBRSxJQUFJRSxHQUFFLE1BQU1ILEVBQUMsRUFBRSxNQUFNQyxFQUFDLElBQUVFLEdBQUUsTUFBTSxjQUFjLEtBQUtGLEVBQUMsSUFBRSxJQUFJRSxHQUFFLE9BQU9ILEVBQUMsRUFBRSxNQUFNQyxFQUFDLEtBQUcsS0FBSyxRQUFNRCxJQUFFLE1BQUssS0FBSyxjQUFZQztBQUFBLE1BQUcsR0FBRSxRQUFP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QUssTUFBTVMsR0FBRVYsRUFBQyxDQUFDLElBQUUsU0FBT0MsTUFBR0UsR0FBRSxNQUFNLFFBQVEsS0FBS0YsRUFBQyxJQUFFLEtBQUdBO0FBQUUsZUFBTztBQUFBLE1BQUksRUFBQyxDQUFDLEdBQUVFLEdBQUUsU0FBT0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxTQUFTSCxJQUFFO0FBQUMsYUFBSyxZQUFZLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxTQUFRRyxHQUFFLFNBQVEsUUFBTyxFQUFDLFVBQVMsV0FBVTtBQUFDLGVBQU9BLEdBQUUsTUFBTSxJQUFJQSxHQUFFLE1BQU0sa0JBQWtCLEtBQUssS0FBSyxVQUFVLEdBQUcsU0FBU0gsSUFBRTtBQUFDLGlCQUFPRyxHQUFFLE1BQU1ILEVBQUM7QUFBQSxRQUFDLENBQUU7QUFBQSxNQUFDLEdBQUUsS0FBSSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssS0FBSyxZQUFZRCxHQUFFLElBQUksSUFBRUEsR0FBRSxRQUFNLEtBQUssS0FBSyxXQUFXQyxFQUFDLEtBQUcsS0FBSyxLQUFLLGFBQWFELEdBQUUsTUFBSyxLQUFLLEtBQUssV0FBV0MsRUFBQyxDQUFDLEdBQUU7QUFBQSxNQUFJLEdBQUUsS0FBSSxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUlELElBQUVDLEVBQUMsR0FBRUQ7QUFBQSxNQUFDLEdBQUUsS0FBSSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLE1BQU1BLEVBQUMsS0FBRztBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFNLENBQUMsRUFBRSxNQUFNLEtBQUssS0FBSyxLQUFLLFVBQVUsRUFBRSxRQUFRQSxHQUFFLElBQUk7QUFBQSxNQUFDLEdBQUUsS0FBSSxTQUFTQSxJQUFFO0FBQUMsZUFBT0csR0FBRSxNQUFNLEtBQUssS0FBSyxXQUFXSCxFQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxXQUFVO0FBQUMsZUFBTyxLQUFLLElBQUksQ0FB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QUFFLFlBQUlDLEtBQUUsS0FBSyxNQUFLQyxLQUFFYyxHQUFFZixHQUFFLFVBQVUsSUFBRSxDQUFDO0FBQUUsZUFBT0QsTUFBR0EsR0FBRSxRQUFNQSxJQUFHLFlBQVlFLEdBQUUsSUFBSSxJQUFFRCxHQUFFLFdBQVcsYUFBYUMsR0FBRSxNQUFLRCxHQUFFLFdBQVcsR0FBRUM7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVDLEdBQUUsT0FBT0EsR0FBRSxTQUFRLENBQUMsQ0FBQyxHQUFFQSxHQUFFLFdBQVNBLEdBQUUsT0FBTyxFQUFDLFFBQU8sU0FBU0gsSUFBRTtBQUFDLGFBQUssWUFBWSxLQUFLLE1BQUtHLEdBQUUsT0FBT0gsS0FBRSxVQUFVLENBQUMsR0FBRSxLQUFLLE9BQUtBO0FBQUEsTUFBQyxHQUFFLFNBQVFHLEdBQUUsV0FBVSxRQUFPLEVBQUMsSUFBRyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUMsR0FBRSxNQUFJLEVBQUUsT0FBT0gsSUFBRUMsSUFBRUMsRUFBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFNBQVNGLElBQUU7QUFBQyxlQUFPLEtBQUssTUFBTSxHQUFFLGNBQVksT0FBT0EsTUFBR0EsR0FBRSxLQUFLLE1BQUssSUFBSSxHQUFFO0FBQUEsTUFBSSxHQUFFLE1BQUssV0FBVTtBQUFDLGVBQU0sVUFBUSxLQUFLLEdBQUcsSUFBRTtBQUFBLE1BQUcsR0FBRSxVQUFTLFdBQVU7QUFBQyxlQUFPLEtBQUssS0FBSztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFNLGVBQWFGLE9BQUlBLEtBQUUsc0JBQXFCRyxHQUFFLFVBQVUsVUFBVSxLQUFLLEtBQUssTUFBS0gsSUFBRUMsSUFBRUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLFdBQVUsRUFBQyxVQUFTLFNBQVNGLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxFQUFFLFNBQVNELElBQUVDLEVBQUM7QUFBQSxNQUFDLEVBQUMs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RSxRQUFNQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUU7QUFBQyxhQUFLLFlBQVksS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLFNBQVFHLEdBQUUsUUFBTyxDQUFDLEdBQUVBLEdBQUUsU0FBT0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxVQUFTLFNBQVFBLEdBQUUsV0FBVSxXQUFVLEVBQUMsUUFBTyxXQUFVO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUEsR0FBRSxRQUFNO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFQSxHQUFFLE1BQUlBLEdBQUUsT0FBTyxFQUFDLFFBQU8sT0FBTSxTQUFRQSxHQUFFLE9BQU0sUUFBTyxFQUFDLFNBQVEsU0FBU0gsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLFNBQVFBLE1BQUcsTUFBSSxNQUFJRCxJQUFFRyxHQUFFLEtBQUs7QUFBQSxNQUFDLEVBQUMsR0FBRSxXQUFVLEVBQUMsS0FBSSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUUsR0FBRSxLQUFHLEVBQUUsUUFBUUgsSUFBRUMsRUFBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFLQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFFBQU8sU0FBUUEsR0FBRSxPQUFNLFdBQVUsRUFBQyxNQUFLLFNBQVNILElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJRSxHQUFFLE1BQUksRUFBRSxLQUFLSCxJQUFFQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFRSxHQUFFLFNBQU9BLEdBQUUsT0FBTyxFQUFDLFFBQU8sVUFBUyxTQUFRQSxHQUFFLE9BQU0sV0FBVSxFQUFDLFFBQU8sU0FBU0gsSUFBRTtBQUFDLGVBQU8sS0FBSyxJQUFJLElBQUlHLEdBQUUsUUFBTSxFQUFFLEdBQUcsSUFBSUEsR0FBRSxPQUFPSCxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUUsQ0FBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxPQUFPQSxHQUFFLFFBQU9BLEdBQUUsSUFBRyxFQUFDLElBQUcsU0FBU0gsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLEtBQUlBLEVBQUM7QUFBQSxNQUFDLEdBQUUsSUFBRyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEdBQUdBLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLFVBQVFBLEdBQUUsT0FBTyxFQUFDLFFBQU8sV0FBVSxTQUFRQSxHQUFFLE9BQU0sV0FBVSxFQUFDLFNBQVEsU0FBU0gsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxJQUFJLElBQUlFLEdBQUUsU0FBTyxFQUFFLEtBQUtILElBQUVDLEVBQUMsRUFBRSxLQUFLLEdBQUUsQ0FBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFPQSxHQUFFLFNBQVFBLEdBQUUsTUFBS0EsR0FBRSxJQUFHLEVBQUMsSUFBRyxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxPQUFPQSxHQUFFLFFBQU9BLEdBQUUsU0FBUSxFQUFDLEdBQUUsU0FBU0gsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEdBQUcsSUFBRSxLQUFLLEdBQUcsSUFBRSxLQUFLLEdBQUdBLEtBQUUsS0FBSyxHQUFHLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssR0FBRyxJQUFFLEtBQUssR0FBRyxJQUFFLEtBQUssR0FBR0EsS0FBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxLQUFLLElBQUksSUFBRSxLQUFLLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxLQUFLLElBQUksSUFBRSxLQUFLLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsSUFBRSxLQUFLLEdBQUcsSUFBRSxLQUFLLEdBQUcsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsUUFBTyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLElBQUUsS0FBSyxHQUFHLElBQUUsS0FBSyxHQUFHLElBQUlHLEdBQUUsT0FBT0gsRUFBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUVXLEdBQUUsTUFBS2IsSUFBRUMsRUFBQztBQUFFLGVBQU8sS0FBSyxHQUFHLElBQUlFLEdBQUUsT0FBT0QsR0FBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUlDLEdBQUUsT0FBT0QsR0FBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFQyxHQUFFLE9BQUtBLEdBQUUsT0FBTyxFQUFDLFFBQU8sUUFBTyxTQUFRQSxHQUFFLE9BQU0sUUFBTyxFQUFDLE9BQU0sV0FBVTtBQUFDLGVBQU8sSUFBSUEsR0FBRSxXQUFXLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxHQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsR0FBRSxDQUFDLEtBQUssS0FBSyxJQUFJLEdBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsTUFBSyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFRSxJQUFFO0FBQUMsZUFBTyxRQUFNSixLQUFFLEtBQUssTUFBTSxLQUFHQSxLQUFFLFdBQVNDLEtBQUUsRUFBQyxJQUFHRCxJQUFFLElBQUdDLElBQUUsSUFBR0MsSUFBRSxJQUFHRSxHQUFDLElBQUUsSUFBSUQsR0FBRSxXQUFXSCxFQUFDLEVBQUUsT0FBTyxHQUFFLEtBQUssS0FBS0EsRUFBQztBQUFBLE1BQUUsR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxLQUFLLE1BQU0sRUFBRSxLQUFLRCxJQUFFQyxFQUFDLEVBQUUsT0FBTyxDQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0QsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUVXLEdBQUUsTUFBS2IsSUFBRUMsRUFBQztBQUFFLGVBQU8sS0FBSyxLQUFLLEtBQUssTUFBTSxFQUFFLEtBQUtDLEdBQUUsT0FBTUEsR0FBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsV0FBVSxFQUFDLE1BQUssU0FBU0YsSUFBRUMsSUFBRUMsSUFBRUUsSUFBRTtBQUFDLGVBQU9ELEdBQUUsS0FBSyxVQUFVLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSUEsR0FBRSxNQUFJLEdBQUUsUUFBTUgsS0FBRSxDQUFDQSxJQUFFQyxJQUFFQyxJQUFFRSxFQUFDLElBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVELEdBQUUsV0FBU0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxZQUFXLFNBQVFBLEdBQUUsT0FBTSxXQUFVLEVBQUMsVUFBUyxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUcsR0FBRSxVQUFRLEVBQUUsS0FBS0gsTUFBRyxJQUFJRyxHQUFFLFlBQVU7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVBLEdBQUUsVUFBUUEsR0FBRSxPQUFPLEVBQUMsUUFBTyxXQUFVLFNBQVFBLEdBQUUsT0FBTSxXQUFVLEVBQUMsU0FBUSxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUcsR0FBRSxTQUFPLEVBQUUsS0FBS0gsTUFBRyxJQUFJRyxHQUFFLFlBQVU7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVBLEdBQUUsT0FBT0EsR0FBRSxVQUFTQSxHQUFFLFNBQVEsRUFBQyxPQUFNLFdBQVU7QUFBQyxlQUFPLEtBQUssV0FBUyxLQUFLLFNBQU8sSUFBSUEsR0FBRSxXQUFXLEtBQUssS0FBSyxRQUFRLENBQUM7QUFBQSxNQUFFLEdBQUUsTUFBSyxTQUFTSCxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssTUFBTSxJQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssVUFBUyxZQUFVLE9BQU9BLEtBQUVBLEtBQUUsS0FBSyxTQUFPLElBQUlHLEdBQUUsV0FBV0gsRUFBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sV0FBVTtBQUFDLGVBQU8sT0FBTyxLQUFLLFFBQU87QUFBQSxNQUFJLEdBQUUsTUFBSyxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssVUFBUyxLQUFLLE1BQU0sRUFBRSxLQUFLRCxJQUFFQyxFQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsTUFBSyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRVcsR0FBRSxNQUFLYixJQUFFQyxFQUFDO0FBQUUsZUFBTyxLQUFLLEtBQUssVUFBUyxLQUFLLE1BQU0sRUFBRSxLQUFLQyxHQUFFLE9BQU1BLEdBQUUsTUFBTSxDQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRUMsR0FBRSxPQUFPQSxHQUFFLE1BQUtBLEdBQUUsVUFBU0EsR0FBRSxTQUFRLEVBQUMsWUFBV0EsR0FBRSxZQUFXLEdBQUUsU0FBU0gsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEtBQUssRUFBRSxJQUFFLEtBQUssS0FBS0EsSUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQUEsTUFBQyxHQUFFLEdBQUUsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEtBQUssRUFBRSxJQUFFLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxHQUFFQSxFQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxLQUFLO0FBQUUsZUFBTyxRQUFNRCxLQUFFQyxHQUFFLFFBQU0sS0FBSyxLQUFLRCxJQUFFQyxHQUFFLE1BQU07QUFBQSxNQUFDLEdBQUUsUUFBTyxTQUFTRCxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEtBQUs7QUFBRSxlQUFPLFFBQU1ELEtBQUVDLEdBQUUsU0FBTyxLQUFLLEtBQUtBLEdBQUUsT0FBTUQsRUFBQztBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUVHLEdBQUUsT0FBS0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxRQUFPLFNBQVFBLEdBQUUsT0FBTSxRQUFPLEVBQUMsWUFBV0EsR0FBRSxXQUFVLE9BQU0sV0FBVTtBQUFDLGVBQU8sS0FBSyxXQUFTLEtBQUssU0FBTyxJQUFJQSxHQUFFLFVBQVUsS0FBSyxLQUFLLEdBQUcsQ0FBQztBQUFBLE1BQUUsR0FBRSxNQUFLLFNBQVNILElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxNQUFNLElBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxLQUFJLFlBQVUsT0FBT0EsS0FBRUEsS0FBRSxLQUFLLFNBQU8sSUFBSUcsR0FBRSxVQUFVSCxFQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxXQUFVO0FBQUMsZUFBTyxPQUFPLEtBQUssUUFBTztBQUFBLE1BQUksRUFBQyxHQUFFLFdBQVUsRUFBQyxNQUFLLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJRyxHQUFFLE1BQUksRUFBRSxLQUFLSCxNQUFHLElBQUlHLEdBQUUsV0FBUztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUEsR0FBRSxRQUFNQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVEsU0FBUUEsR0FBRSxPQUFNLFFBQU8sRUFBQyxNQUFLLFNBQVNGLElBQUU7QUFBQyxZQUFHLENBQUNBO0FBQUUsaUJBQU87QUFBSyxZQUFJQyxLQUFFLE1BQUtFLEtBQUUsSUFBSUosR0FBRTtBQUFNLGVB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LENBQUMsR0FBRSxJQUFJLE9BQU8sSUFBSSxXQUFVLEVBQUMsUUFBTyxTQUFTRCxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssRUFBRSxPQUFPQSxFQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRSxJQUFJLE9BQU8sSUFBSSxTQUFRLElBQUksR0FBRSxJQUFJLFFBQU8sRUFBQyxRQUFPLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssV0FBU0EsY0FBYSxJQUFJLFVBQVFBLEtBQUUsS0FBSyxJQUFJLEVBQUUsT0FBT0EsRUFBQyxHQUFFLEtBQUssSUFBSSxLQUFHLEtBQUssU0FBUyxJQUFJLE1BQUksS0FBSyxJQUFJLEtBQUcsS0FBSyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxRQUFRLEdBQUUsS0FBSyxLQUFLLFVBQVMsS0FBSyxRQUFRLEdBQUUsS0FBSztBQUFBLE1BQVEsR0FBRSxVQUFTLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssWUFBVSxTQUFLQSxNQUFHLEtBQUssU0FBUyxPQUFPLEdBQUUsT0FBTyxLQUFLLFVBQVMsS0FBSyxLQUFLLFVBQVMsSUFBSTtBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUUsSUFBSSxTQUFPLElBQUksT0FBTyxFQUFDLFFBQU8sV0FBVTtBQUFDLGFBQUssWUFBWSxLQUFLLElBQUk7QUFBQSxNQUFDLEdBQUUsU0FBUSxJQUFJLFNBQVEsUUFBTyxFQUFDLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLE9BQU8sS0FBRyxLQUFLLE9BQU8sRUFBRSxPQUFPLGNBQVksS0FBSyxLQUFLLElBQUksSUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUcsS0FBSyxLQUFLLElBQUksSUFBRSxLQUFLLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxLQUFLLFFBQVEsSUFBRSxLQUFLLEtBQUssVUFBU0EsRUFBQztBQUFBLE1BQUMsR0FBRSxVQUFTLFdBQVU7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RVYsR0FBRSxNQUFNSSxJQUFFQyxNQUFHSSxFQUFDLEdBQUVFLEtBQUVMLEdBQUUsTUFBTUMsSUFBRUMsTUFBR0MsRUFBQyxHQUFFRyxLQUFFLEdBQUVDLEtBQUUsRUFBQyxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTSxDQUFDLEdBQUUsQ0FBQyxFQUFDLEdBQUVDLEtBQUUsRUFBQyxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTSxDQUFDLEdBQUUsQ0FBQyxFQUFDLE9BQUk7QUFBQyxjQUFHSixHQUFFRSxFQUFDLElBQUVYLEdBQUUsS0FBS1ksSUFBRUgsR0FBRUUsRUFBQyxDQUFDLEdBQUVELEdBQUVDLEVBQUMsSUFBRVgsR0FBRSxLQUFLYSxJQUFFSCxHQUFFQyxFQUFDLENBQUMsR0FBRUYsR0FBRUUsRUFBQyxFQUFFLENBQUMsS0FBR0QsR0FBRUMsRUFBQyxFQUFFLENBQUMsS0FBRyxPQUFLRixHQUFFRSxFQUFDLEVBQUUsQ0FBQyxLQUFHLE9BQUtGLEdBQUVFLEVBQUMsRUFBRSxDQUFDLE1BQUlGLEdBQUVFLEVBQUMsRUFBRSxDQUFDLEtBQUdELEdBQUVDLEVBQUMsRUFBRSxDQUFDLEtBQUdGLEdBQUVFLEVBQUMsRUFBRSxDQUFDLEtBQUdELEdBQUVDLEVBQUMsRUFBRSxDQUFDLE1BQUksTUFBTSxVQUFVLE9BQU8sTUFBTUYsSUFBRSxDQUFDRSxJQUFFLENBQUMsRUFBRSxPQUFPVCxHQUFFLEtBQUtVLElBQUVILEdBQUVFLEVBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxNQUFNLFVBQVUsT0FBTyxNQUFNRCxJQUFFLENBQUNDLElBQUUsQ0FBQyxFQUFFLE9BQU9ULEdBQUUsS0FBS1csSUFBRUgsR0FBRUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxNQUFJRixHQUFFRSxFQUFDLElBQUVWLEdBQUUsS0FBS1csSUFBRUgsR0FBRUUsRUFBQyxDQUFDLEdBQUVELEdBQUVDLEVBQUMsSUFBRVYsR0FBRSxLQUFLWSxJQUFFSCxHQUFFQyxFQUFDLENBQUMsSUFBRyxFQUFFQSxNQUFHRixHQUFFLFVBQVFFLE1BQUdELEdBQUU7QUFBTztBQUFNLFVBQUFDLE1BQUdGLEdBQUUsVUFBUUEsR0FBRSxLQUFLLENBQUMsS0FBSUcsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUVELE1BQUdELEdBQUUsVUFBUUEsR0FBRSxLQUFLLENBQUMsS0FBSUcsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQUEsUUFBQztBQUFDLGVBQU0sRUFBQyxPQUFNSixJQUFFLE1BQUtDLEdBQUM7QUFBQSxNQUFDO0FBQUMsZUFBU1YsR0FBRUQsSUFBRTtBQUFDLGdCQUFPQSxHQUFFLENBQUMsR0FBRTtBQUFBLFVBQUMsS0FBSTtBQUFBLFVBQUksS0FBSTtBQUFJLFlBQUFBLEdBQUUsQ0FBQyxJQUFFLEtBQUlBLEdBQUUsQ0FBQyxJQUFFLEtBQUssTUFBTSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssTUFBTSxDQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQSxHQUFFLENBQUMsSUFBRSxLQUFJQSxHQUFFLENBQUMsSUFBRSxLQUFLLElBQUksQ0FBQztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQUksWUFBQUEsR0FBRSxDQUFDLElBQUUsS0FBSUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRSxLQUFLLElBQUksQ0FBQztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQUksWUFBQUEsR0FBRSxDQUFDLElBQUUsS0FBSUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssV0FBVyxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssV0FBVyxDQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQSxHQUFFLENBQUMsSUFBRSxLQUFJQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssV0FBVyxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssV0FBVyxDQUFDO0FBQUEsUUFBQztBQUFDLGVBQU9BO0FBQUEsTUFBQztBQUFDLGVBQVNFLEdBQUVGLElBQUU7QUFBQyxZQUFJQyxLQUFFRCxHQUFFO0FBQU8sZUFBTyxLQUFLLE1BQUksQ0FBQ0EsR0FBRUMsS0FBRSxDQUFDLEdBQUVELEdBQUVDLEtBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxPQUFPLFFBQVFELEdBQUUsQ0FBQyxDQUFDLE1BQUksS0FBSyxhQUFXLENBQUMsSUFBRSxLQUFLLElBQUksQ0FBQyxJQUFFQSxHQUFFQyxLQUFFLENBQUMsR0FBRSxJQUFFLEtBQUssSUFBSSxDQUFDLElBQUVELEdBQUVDLEtBQUUsQ0FBQyxDQUFDLElBQUdEO0FBQUEsTUFBQztBQUFDLGVBQVNHLEdBQUVILElBQUU7QUFBQyxZQUFJQyxLQUFFLENBQUNELEVBQUM7QUFBRSxnQkFBT0EsR0FBRSxDQUFDLEdBQUU7QUFBQSxVQUFDLEtBQUk7QUFBSSxtQkFBTyxLQUFLLE1BQUksS0FBSyxRQUFNLENBQUNBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsQ0FBQyxHQUFFQztBQUFBLFVBQUUsS0FBSTtBQUFJLFlBQUFELEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssSUFBSSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssSUFBSSxDQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsSUFBRUEsR0FBRSxDQUFDLElBQUUsSUFBRSxJQUFFQSxHQUFFLENBQUMsSUFBRSxHQUFFQSxHQUFFLENBQUMsSUFBRSxJQUFFQSxHQUFFLENBQUMsSUFBRSxJQUFFLElBQUVBLEdBQUUsQ0FBQyxJQUFFLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLElBQUUsS0FBSyxJQUFJLENBQUMsSUFBRSxJQUFFLElBQUVBLEdBQUUsQ0FBQyxJQUFFLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLElBQUUsS0FBSyxJQUFJLENBQUMsSUFBRSxJQUFFLElBQUVBLEdBQUUsQ0FBQyxJQUFFO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQyxLQUFFLFNBQVNELElBQUVDLElBQUU7QUFBQyxrQkFBSUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsS0FBRSxLQUFLLElBQUkzQixHQUFFLENBQUMsQ0FBQyxHQUFFNEIsS0FBRSxLQUFLLElBQUk1QixHQUFFLENBQUMsQ0FBQyxHQUFFNkIsS0FBRTdCLEdBQUUsQ0FBQyxJQUFFLEtBQUk4QixLQUFFOUIsR0FBRSxDQUFDLEdBQUUrQixLQUFFL0IsR0FBRSxDQUFDLEdBQUVnQyxLQUFFaEMsR0FBRSxDQUFDLEdBQUVpQyxLQUFFakMsR0FBRSxDQUFDLEdBQUVrQyxLQUFFLElBQUksSUFB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QUFDLEdBQUUsSUFBSUQsRUFBQztBQUFBLFlBQUMsQ0FBRSxHQUFFLEtBQUssR0FBRyxLQUFLLGFBQVksRUFBQyxPQUFNQSxJQUFFLEdBQUUsS0FBSyxZQUFZLE9BQU0sR0FBRSxLQUFLLEdBQUUsU0FBUSxLQUFJLENBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsR0FBRUEsR0FBRSxVQUFVLE9BQUssU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxRQUFRLEdBQUVDLEtBQUUsS0FBSyxlQUFlRixFQUFDLEdBQUVHLEtBQUUsS0FBSyxZQUFZLElBQUksSUFBRUQsR0FBRSxJQUFFLEtBQUssWUFBWSxNQUFNLEdBQUVFLEtBQUUsS0FBSyxZQUFZLElBQUksSUFBRUYsR0FBRSxJQUFFLEtBQUssWUFBWSxNQUFNLEdBQUVHLEtBQUUsS0FBSyxZQUFXQyxLQUFFSixHQUFFLElBQUUsS0FBSyxZQUFZLE1BQU0sR0FBRUssS0FBRUwsR0FBRSxJQUFFLEtBQUssWUFBWSxNQUFNO0FBQUUsWUFBRyxLQUFLLEdBQUcsS0FBSyxZQUFXLEVBQUMsT0FBTUYsSUFBRSxHQUFFRSxJQUFFLEdBQUUsS0FBSyxHQUFFLFNBQVEsS0FBSSxDQUFDLEdBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUFpQixpQkFBT0E7QUFBRSxZQUFHLGNBQVksT0FBT0csSUFBRTtBQUFDLGNBQUlHLEtBQUVILEdBQUUsS0FBSyxLQUFLLElBQUdGLElBQUVDLElBQUUsS0FBSyxDQUFDO0FBQUUsdUJBQVcsT0FBT0ksT0FBSUEsS0FBRSxFQUFDLEdBQUVBLElBQUUsR0FBRUEsR0FBQyxJQUFHLFNBQUtBLEdBQUUsSUFBRSxLQUFLLEdBQUcsRUFBRUwsRUFBQyxJQUFFLFVBQUtLLEdBQUUsS0FBRyxLQUFLLEdBQUcsRUFBRUEsR0FBRSxDQUFDLEdBQUUsU0FBS0EsR0FBRSxJQUFFLEtBQUssR0FBRyxFQUFFSixFQUFDLElBQUUsVUFBS0ksR0FBRSxLQUFHLEtBQUssR0FBRyxFQUFFQSxHQUFFLENBQUM7QUFBQSxRQUFDO0FB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QUVELElBQUUsUUFBTUQsTUFBRyxRQUFNQSxFQUFDLEdBQUUsR0FBRSxLQUFLLFdBQVdFLEdBQUUsQ0FBQyxHQUFFRCxJQUFFLFFBQU1ELE1BQUcsUUFBTUEsRUFBQyxFQUFDO0FBQUEsUUFBQztBQUFBLE1BQUM7QUFBQyxNQUFBQSxHQUFFLFVBQVUsT0FBSyxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEdBQUcsS0FBSztBQUFFLGFBQUssVUFBUSxDQUFDO0FBQUUsWUFBSUMsS0FBRSxLQUFLLEdBQUcsVUFBVSxTQUFTO0FBQU8saUJBQVFDLE1BQUssS0FBSyxHQUFHLFVBQVU7QUFBUyxlQUFLLFFBQVFBLEVBQUMsSUFBRSxLQUFLLEdBQUcsVUFBVSxTQUFTQSxFQUFDLEdBQUUsV0FBU0gsR0FBRUcsRUFBQyxNQUFJLEtBQUssUUFBUUEsRUFBQyxJQUFFSCxHQUFFRyxFQUFDO0FBQUcsWUFBSUMsS0FBRSxDQUFDLFVBQVMsZUFBZTtBQUFFLGlCQUFRRCxNQUFLQyxJQUFFO0FBQUMsY0FBSUMsS0FBRSxLQUFLLFFBQVFELEdBQUVELEVBQUMsQ0FBQztBQUFFLHNCQUFVLE9BQU9FLEtBQUVBLEtBQUVBLEdBQUUsU0FBTyxJQUFFQSxHQUFFLE1BQU0sVUFBVSxJQUFFLENBQUMsSUFBRSxhQUFXLE9BQU9BLE1BQUcsYUFBV0QsR0FBRUQsRUFBQyxNQUFJRSxLQUFFQSxLQUFFSCxLQUFFLENBQUMsSUFBRyxLQUFLLFFBQVFFLEdBQUVELEVBQUMsQ0FBQyxJQUFFRTtBQUFBLFFBQUM7QUFBQyxhQUFLLFFBQVEsU0FBTyxDQUFDSCxJQUFFLEtBQUssUUFBUSxNQUFNLEVBQUUsT0FBUSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsaUJBQU9ELEdBQUUsT0FBUSxTQUFTQSxJQUFFO0FBQUMsbUJBQU9DLEdBQUUsUUFBUUQsRUFBQyxJQUFFO0FBQUEsVUFBRSxDQUFFO0FBQUEsUUFBQyxDQUFFLEdBQUUsS0FBSyxRQUFRLFNBQU8sQ0FBQyxLQUFLLFFBQVEsUUFBTyxLQUFLLFFBQVEsYUFBYSxF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QUFBQyxlQUFPLEtBQUssT0FBTyxPQUFPLEtBQUssUUFBUSxTQUFTLEVBQUUsT0FBT0QsSUFBRUMsRUFBQztBQUFBLE1BQUMsR0FBRUQsR0FBRSxVQUFVLFdBQVMsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxPQUFPLEtBQUssS0FBSyxRQUFRLFdBQVUsS0FBSyxRQUFRLFNBQVMsRUFBRSxPQUFPRCxJQUFFQyxFQUFDO0FBQUEsTUFBQyxHQUFFRCxHQUFFLFVBQVUsdUJBQXFCLFdBQVU7QUFBQyxZQUFJQSxLQUFFLEtBQUssY0FBYztBQUFFLGFBQUssZUFBZSxJQUFJLEtBQU0sU0FBU0MsSUFBRTtBQUFDLGVBQUssR0FBRyxNQUFJRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxLQUFHLEtBQUssR0FBRyxNQUFJRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxLQUFHLEtBQUssT0FBT0QsR0FBRUMsRUFBQyxFQUFFLENBQUMsR0FBRUQsR0FBRUMsRUFBQyxFQUFFLENBQUMsQ0FBQztBQUFBLFFBQUMsQ0FBRTtBQUFBLE1BQUMsR0FBRUQsR0FBRSxVQUFVLHNCQUFvQixXQUFVO0FBQUMsWUFBSUEsS0FBRSxNQUFLQyxLQUFFLEtBQUssR0FBRyxLQUFLO0FBQUUsWUFBRyxLQUFLLGNBQWMsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUMsT0FBTUEsR0FBRSxPQUFNLFFBQU9BLEdBQUUsT0FBTSxDQUFDLEdBQUUsS0FBSyxRQUFRLE9BQU8sVUFBUSxLQUFLLFFBQVEsT0FBTyxJQUFLLFNBQVNDLElBQUVDLElBQUU7QUFBQyxjQUFJQyxLQUFFSixHQUFFLFlBQVlFLElBQUVELEVBQUM7QUFBRSxVQUFBRCxHQUFFLGNBQWMsSUFBSSxJQUFJRyxLQUFFLENBQUMsRUFBRSxPQUFPQyxHQUFFLEdBQUVBLEdBQUUsQ0FBQztBQUFBLFFBQUMsQ0FBRSxHQUFFLEtBQUssUUFBUSxlQUFjO0FBQUMsY0FBSUYsS0FBRSxLQUFLLGNBQWMsSUFBSSxPQUFPO0FBQUUsZUFBSyxjQUFjLElBQUksSUFBSUEsS0FBRSxD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LGNBQUM7QUFBRTtBQUFBLFlBQU0sS0FBSTtBQUFJLG1CQUFLLE9BQUssU0FBU0YsSUFBRUMsSUFBRTtBQUFDLG9CQUFJQyxLQUFFLEtBQUssV0FBV0YsSUFBRUMsSUFBRSxDQUFDO0FBQUUsb0JBQUcsS0FBSyxXQUFXLElBQUksUUFBTUMsR0FBRSxDQUFDLElBQUUsR0FBRTtBQUFDLHNCQUFHLFdBQVMsS0FBSyxXQUFXO0FBQUs7QUFBTyx1QkFBSyxHQUFHLEtBQUssS0FBSyxXQUFXLElBQUksSUFBRUEsR0FBRSxDQUFDLEdBQUUsS0FBSyxXQUFXLElBQUksQ0FBQyxFQUFFLE1BQU0sS0FBSyxXQUFXLElBQUksUUFBTUEsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBRTtBQUFBLFlBQU0sS0FBSTtBQUFNLG1CQUFLLE9BQUssU0FBU0YsSUFBRUMsSUFBRTtBQUFDLG9CQUFJQyxLQUFFRixLQUFFLEtBQUssV0FBVyxFQUFFLEdBQUVHLEtBQUVGLEtBQUUsS0FBSyxXQUFXLEVBQUUsR0FBRUcsS0FBRSxLQUFLLE1BQU0sS0FBSyxXQUFXLEVBQUUsSUFBRSxLQUFLLFdBQVcsSUFBSSxJQUFFLEtBQUssV0FBVyxJQUFJLFNBQU8sR0FBRSxLQUFLLFdBQVcsRUFBRSxJQUFFLEtBQUssV0FBVyxJQUFJLElBQUUsS0FBSyxXQUFXLElBQUksUUFBTSxDQUFDLEdBQUVDLEtBQUUsS0FBSyxNQUFNRixLQUFFLEtBQUssV0FBVyxJQUFJLElBQUUsS0FBSyxXQUFXLElBQUksU0FBTyxHQUFFRCxLQUFFLEtBQUssV0FBVyxJQUFJLElBQUUsS0FBSyxXQUFXLElBQUksUUFBTSxDQUFDLEdBQUVJLEtBQUUsS0FBSyxXQUFXLFdBQVMsT0FBS0QsS0FBRUQsTUFBRyxLQUFLLEtBQUcsS0FBSyxRQUFRLGNBQVk7QUFBRSxxQkFBSyxHQUFHLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBRyxLQUFLLFdBQVcsSUFBSSxFQUFFLEVBQUUsT0FBT0UsS0FBRUEsS0FBRSxLQUFLLFFBQVEsYUFBWSxLQUFLLFdB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LElBQUksa0JBQUFDLFFBQVcsU0FBUyxjQUFjLEtBQUssT0FBTyxHQUFHLEtBQUssT0FBTztBQUM5RSxXQUFLLE1BQU0sT0FBTztBQUFBLElBQ3RCO0FBQUEsSUFDQSxhQUFhLFNBQVVGLFVBQVM7QUFDNUIsV0FBSyxNQUFNLGNBQWNBLFVBQVMsT0FBTyxNQUFNLElBQUk7QUFBQSxJQUN2RDtBQUFBLEVBQ0o7QUFDSjsiLAogICJuYW1lcyI6IFsidCIsICJlIiwgImkiLCAiYSIsICJzIiwgInIiLCAibyIsICJuIiwgImwiLCAiaCIsICJjIiwgImQiLCAiZyIsICJ1IiwgInAiLCAiZiIsICJ4IiwgImIiLCAidiIsICJtIiwgInkiLCAidyIsICJrIiwgIkEiLCAiUyIsICJDIiwgIkwiLCAiUCIsICJJIiwgIk0iLCAiVCIsICJ6IiwgIlgiLCAiRSIsICJZIiwgIkYiLCAiUiIsICJIIiwgIkQiLCAiTyIsICJCdWZmZXIiLCAiU3ltYm9sIiwgIlVpbnQ4QXJyYXkiLCAibWVyZ2UiLCAib3B0aW9ucyIsICJ0aGVtZSIsICJBcGV4Q2hhcnRzIl0KfQo= diff --git a/package-lock.json b/package-lock.json index d84ea02..9e237c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,8 @@ "version": "3.0.1", "license": "MIT", "dependencies": { - "apexcharts": "^3.44.0" + "apexcharts": "^3.44.0", + "lodash.merge": "^4.6.2" }, "devDependencies": { "esbuild": "^0.19.7" @@ -423,6 +424,11 @@ "@esbuild/win32-x64": "0.19.7" } }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, "node_modules/svg.draggable.js": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", diff --git a/package.json b/package.json index 9424c5b..b22908e 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "esbuild": "^0.19.7" }, "dependencies": { - "apexcharts": "^3.44.0" + "apexcharts": "^3.44.0", + "lodash.merge": "^4.6.2" } -} \ No newline at end of file +} diff --git a/resources/views/widgets/components/chart.blade.php b/resources/views/widgets/components/chart.blade.php index 9b707e0..becf032 100644 --- a/resources/views/widgets/components/chart.blade.php +++ b/resources/views/widgets/components/chart.blade.php @@ -20,7 +20,7 @@ options: @js($chartOptions), chartId: '#{{ $chartId }}', theme: {{ $darkMode ? "document.querySelector('html').matches('.dark') ? 'dark' : 'light'" : "'light'" }}, - extraJsOptions: {{ $extraJsOptions }}, + extraJsOptions: {{ $extraJsOptions ?? '{}' }}, })">
From a135426c506dd7a81929f194e42081e6f566c3eb Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Thu, 11 Jan 2024 11:11:15 -0300 Subject: [PATCH 06/11] docs --- README.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d7c6349..f8f9a72 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,6 @@ composer require leandrocfe/filament-apex-charts:"^3.0" **Filament V2** - if you are using Filament v2.x, you can use [this section](https://github.com/leandrocfe/filament-apex-charts/tree/2.0.2) -Optionally, you can publish the views using: - -```bash -php artisan vendor:publish --tag="filament-apex-charts-views" -``` - ## Usage Start by creating a widget with the command: @@ -101,7 +95,7 @@ class BlogPostsChart extends ApexChartWidget 'categories' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], 'labels' => [ 'style' => [ - 'colors' => '#9ca3af', + 'fontFamily' => 'inherit', 'fontWeight' => 600, ], ], @@ -109,12 +103,11 @@ class BlogPostsChart extends ApexChartWidget 'yaxis' => [ 'labels' => [ 'style' => [ - 'colors' => '#9ca3af', - 'fontWeight' => 600, + 'fontFamily' => 'inherit', ], ], ], - 'colors' => ['#6366f1'], + 'colors' => ['#f59e0b'], ]; } } @@ -267,7 +260,7 @@ protected function getFormSchema(): array return [ TextInput::make('title') ->default('My Chart') - ->reactive() + ->live() ->afterStateUpdated(function () { $this->updateChartOptions(); }), @@ -403,6 +396,58 @@ protected function getOptions(): array } ``` +## Extra options and Formatters + +You can use the `extraJsOptions` method to add additional options to the chart: + +```php +protected function extraJsOptions(): ?RawJs +{ + return RawJs::make(<<<'JS' + { + xaxis: { + labels: { + formatter: function (val, timestamp, opts) { + return val + '/24' + } + } + }, + yaxis: { + labels: { + formatter: function (val, index) { + return '$' + val + } + } + }, + tooltip: { + x: { + formatter: function (val) { + return val + '/24' + } + } + }, + dataLabels: { + enabled: true, + formatter: function (val, opt) { + return opt.w.globals.labels[opt.dataPointIndex] + ': $' + val + }, + dropShadow: { + enabled: true + }, + } + } + JS); +} +``` + +## Publishing views + +Optionally, you can publish the views using: + +```bash +php artisan vendor:publish --tag="filament-apex-charts-views" +``` + ## Testing ```bash From 7b7f31ada07632e513438b41af36bb3f6db220ca Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Thu, 11 Jan 2024 11:27:47 -0300 Subject: [PATCH 07/11] update packages --- composer.json | 6 +- dist/apexcharts.js | 9739 ++++---------------------------------------- package-lock.json | 205 +- 3 files changed, 808 insertions(+), 9142 deletions(-) diff --git a/composer.json b/composer.json index 2f4cc98..004bd1a 100644 --- a/composer.json +++ b/composer.json @@ -24,10 +24,10 @@ "spatie/laravel-package-tools": "^1.13.0" }, "require-dev": { + "larastan/larastan": "^2.0.1", "laravel/pint": "^1.0", "nunomaduro/collision": "^6.0|^7.0", - "nunomaduro/larastan": "^2.0.1", - "orchestra/testbench": "^7.0|^8.0", + "orchestra/testbench": "8.14", "pestphp/pest": "^1.21", "pestphp/pest-plugin-laravel": "^1.1", "phpstan/extension-installer": "^1.1", @@ -71,4 +71,4 @@ }, "minimum-stability": "dev", "prefer-stable": true -} +} \ No newline at end of file diff --git a/dist/apexcharts.js b/dist/apexcharts.js index 7fcd13c..57b5d7c 100644 --- a/dist/apexcharts.js +++ b/dist/apexcharts.js @@ -1,9060 +1,709 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); +var bi=Object.create;var pt=Object.defineProperty;var mi=Object.getOwnPropertyDescriptor;var vi=Object.getOwnPropertyNames;var yi=Object.getPrototypeOf,wi=Object.prototype.hasOwnProperty;var xt=(f,e)=>()=>(e||f((e={exports:{}}).exports,e),e.exports);var ki=(f,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of vi(e))!wi.call(f,a)&&a!==t&&pt(f,a,{get:()=>e[a],enumerable:!(i=mi(e,a))||i.enumerable});return f};var Ai=(f,e,t)=>(t=f!=null?bi(yi(f)):{},ki(e||!f||!f.__esModule?pt(t,"default",{value:f,enumerable:!0}):t,f));var Dt=xt((it,Ye)=>{"use strict";function bt(f,e){var t=Object.keys(f);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(f);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(f,a).enumerable})),t.push.apply(t,i)}return t}function E(f){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var t,i=Me(f);if(e){var a=Me(this).constructor;t=Reflect.construct(i,arguments,a)}else t=i.apply(this,arguments);return function(s,r){if(r&&(typeof r=="object"||typeof r=="function"))return r;if(r!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return St(s)}(this,t)}}function Ct(f,e){return function(t){if(Array.isArray(t))return t}(f)||function(t,i){var a=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(a!=null){var s,r,n=[],o=!0,h=!1;try{for(a=a.call(t);!(o=(s=a.next()).done)&&(n.push(s.value),!i||n.length!==i);o=!0);}catch(c){h=!0,r=c}finally{try{o||a.return==null||a.return()}finally{if(h)throw r}}return n}}(f,e)||Lt(f,e)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function J(f){return function(e){if(Array.isArray(e))return Qe(e)}(f)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(f)||Lt(f)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Lt(f,e){if(f){if(typeof f=="string")return Qe(f,e);var t=Object.prototype.toString.call(f).slice(8,-1);return t==="Object"&&f.constructor&&(t=f.constructor.name),t==="Map"||t==="Set"?Array.from(f):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Qe(f,e):void 0}}function Qe(f,e){(e==null||e>f.length)&&(e=f.length);for(var t=0,i=new Array(e);t>16,n=i>>8&255,o=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-n)*s)+n)+(Math.round((a-o)*s)+o)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,t){return f.isColorHex(t)?this.shadeHexColor(e,t):this.shadeRGBColor(e,t)}}],[{key:"bind",value:function(e,t){return function(){return e.apply(t,arguments)}}},{key:"isObject",value:function(e){return e&&_(e)==="object"&&!Array.isArray(e)&&e!=null}},{key:"is",value:function(e,t){return Object.prototype.toString.call(t)==="[object "+e+"]"}},{key:"listToArray",value:function(e){var t,i=[];for(t=0;t1&&arguments[1]!==void 0?arguments[1]:2;return Number.isInteger(e)?e:parseFloat(e.toPrecision(t))}},{key:"randomId",value:function(){return(Math.random()+1).toString(36).substring(4)}},{key:"noExponents",value:function(e){var t=String(e).split(/[eE]/);if(t.length===1)return t[0];var i="",a=e<0?"-":"",s=t[0].replace(".",""),r=Number(t[1])+1;if(r<0){for(i=a+"0.";r++;)i+="0";return i+s.replace(/^-/,"")}for(r-=s.length;r--;)i+="0";return s+i}},{key:"getDimensions",value:function(e){var t=getComputedStyle(e,null),i=e.clientHeight,a=e.clientWidth;return i-=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom),[a-=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),i]}},{key:"getBoundingClientRect",value:function(e){var t=e.getBoundingClientRect();return{top:t.top,right:t.right,bottom:t.bottom,left:t.left,width:e.clientWidth,height:e.clientHeight,x:t.left,y:t.top}}},{key:"getLargestStringFromArr",value:function(e){return e.reduce(function(t,i){return Array.isArray(i)&&(i=i.reduce(function(a,s){return a.length>s.length?a:s})),t.length>i.length?t:i},0)}},{key:"hexToRgba",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"#999999",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.6;e.substring(0,1)!=="#"&&(e="#999999");var i=e.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&arguments[1]!==void 0?arguments[1]:"x",i=e.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,t)}},{key:"negToZero",value:function(e){return e<0?0:e}},{key:"moveIndexInArray",value:function(e,t,i){if(i>=e.length)for(var a=i-e.length+1;a--;)e.push(void 0);return e.splice(i,0,e.splice(t,1)[0]),e}},{key:"extractNumber",value:function(e){return parseFloat(e.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e}},{key:"setELstyles",value:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e.style.key=t[i])}},{key:"isNumber",value:function(e){return!isNaN(e)&&parseFloat(Number(e))===e&&!isNaN(parseInt(e,10))}},{key:"isFloat",value:function(e){return Number(e)===e&&e%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(window.navigator.userAgent.indexOf("MSIE")!==-1||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){var i=e.indexOf("rv:");return parseInt(e.substring(i+3,e.indexOf(".",i)),10)}var a=e.indexOf("Edge/");return a>0&&parseInt(e.substring(a+5,e.indexOf(".",a)),10)}}]),f}(),fe=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return F(f,[{key:"setEasingFunctions",value:function(){var e;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case"linear":e="-";break;case"easein":e="<";break;case"easeout":e=">";break;case"easeinout":default:e="<>";break;case"swing":e=function(t){var i=1.70158;return(t-=1)*t*((i+1)*t+i)+1};break;case"bounce":e=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":e=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=e}}},{key:"animateLine",value:function(e,t,i,a){e.attr(t).animate(a).attr(i)}},{key:"animateMarker",value:function(e,t,i,a,s,r){t||(t=0),e.attr({r:t,width:t,height:t}).animate(a,s).attr({r:i,width:i.width,height:i.height}).afterAll(function(){r()})}},{key:"animateCircle",value:function(e,t,i,a,s){e.attr({r:t.r,cx:t.cx,cy:t.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(e,t,i,a,s){e.attr(t).animate(a).attr(i).afterAll(function(){return s()})}},{key:"animatePathsGradually",value:function(e){var t=e.el,i=e.realIndex,a=e.j,s=e.fill,r=e.pathFrom,n=e.pathTo,o=e.speed,h=e.delay,c=this.w,d=0;c.config.chart.animations.animateGradually.enabled&&(d=c.config.chart.animations.animateGradually.delay),c.config.chart.animations.dynamicAnimation.enabled&&c.globals.dataChanged&&c.config.chart.type!=="bar"&&(d=0),this.morphSVG(t,i,a,c.config.chart.type!=="line"||c.globals.comboCharts?s:"stroke",r,n,o,h*d)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach(function(e){var t=e.el;t.classList.remove("apexcharts-element-hidden"),t.classList.add("apexcharts-hidden-element-shown")})}},{key:"animationCompleted",value:function(e){var t=this.w;t.globals.animationEnded||(t.globals.animationEnded=!0,this.showDelayedElements(),typeof t.config.chart.events.animationEnd=="function"&&t.config.chart.events.animationEnd(this.ctx,{el:e,w:t}))}},{key:"morphSVG",value:function(e,t,i,a,s,r,n,o){var h=this,c=this.w;s||(s=e.attr("pathFrom")),r||(r=e.attr("pathTo"));var d=function(g){return c.config.chart.type==="radar"&&(n=1),"M 0 ".concat(c.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=d()),(!r||r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=d()),c.globals.shouldAnimate||(n=1),e.plot(s).animate(1,c.globals.easing,o).plot(s).animate(n,c.globals.easing,o).plot(r).afterAll(function(){P.isNumber(i)?i===c.globals.series[c.globals.maxValsInArrayIndex].length-2&&c.globals.shouldAnimate&&h.animationCompleted(e):a!=="none"&&c.globals.shouldAnimate&&(!c.globals.comboCharts&&t===c.globals.series.length-1||c.globals.comboCharts)&&h.animationCompleted(e),h.showDelayedElements()})}}]),f}(),q=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"getDefaultFilter",value:function(e,t){var i=this.w;e.unfilter(!0),new window.SVG.Filter().size("120%","180%","-5%","-40%"),i.config.states.normal.filter!=="none"?this.applyFilter(e,t,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(e,i.config.chart.dropShadow,t)}},{key:"addNormalFilter",value:function(e,t){var i=this.w;i.config.chart.dropShadow.enabled&&!e.node.classList.contains("apexcharts-marker")&&this.dropShadow(e,i.config.chart.dropShadow,t)}},{key:"addLightenFilter",value:function(e,t,i){var a=this,s=this.w,r=i.intensity;e.unfilter(!0),new window.SVG.Filter,e.filter(function(n){var o=s.config.chart.dropShadow;(o.enabled?a.addShadow(n,t,o):n).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:r}})}),e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)}},{key:"addDarkenFilter",value:function(e,t,i){var a=this,s=this.w,r=i.intensity;e.unfilter(!0),new window.SVG.Filter,e.filter(function(n){var o=s.config.chart.dropShadow;(o.enabled?a.addShadow(n,t,o):n).componentTransfer({rgb:{type:"linear",slope:r}})}),e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)}},{key:"applyFilter",value:function(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(e,t);break;case"lighten":this.addLightenFilter(e,t,{intensity:a});break;case"darken":this.addDarkenFilter(e,t,{intensity:a})}}},{key:"addShadow",value:function(e,t,i){var a=i.blur,s=i.top,r=i.left,n=i.color,o=i.opacity,h=e.flood(Array.isArray(n)?n[t]:n,o).composite(e.sourceAlpha,"in").offset(r,s).gaussianBlur(a).merge(e.source);return e.blend(e.source,h)}},{key:"dropShadow",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=t.top,s=t.left,r=t.blur,n=t.color,o=t.opacity,h=t.noUserSpaceOnUse,c=this.w;return e.unfilter(!0),P.isIE()&&c.config.chart.type==="radialBar"||(n=Array.isArray(n)?n[i]:n,e.filter(function(d){var g=null;g=P.isSafari()||P.isFirefox()||P.isIE()?d.flood(n,o).composite(d.sourceAlpha,"in").offset(s,a).gaussianBlur(r):d.flood(n,o).composite(d.sourceAlpha,"in").offset(s,a).gaussianBlur(r).merge(d.source),d.blend(d.source,g)}),h||e.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(e.filterer.node)),e}},{key:"setSelectionFilter",value:function(e,t,i){var a=this.w;if(a.globals.selectedDataPoints[t]!==void 0&&a.globals.selectedDataPoints[t].indexOf(i)>-1){e.node.setAttribute("selected",!0);var s=a.config.states.active.filter;s!=="none"&&this.applyFilter(e,t,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(e){(function(t){for(var i in t)t.hasOwnProperty(i)&&e.setAttribute(i,t[i])})({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}]),f}(),M=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"roundPathCorners",value:function(e,t){function i(S,C,L){var T=C.x-S.x,z=C.y-S.y,I=Math.sqrt(T*T+z*z);return a(S,C,Math.min(1,L/I))}function a(S,C,L){return{x:S.x+(C.x-S.x)*L,y:S.y+(C.y-S.y)*L}}function s(S,C){S.length>2&&(S[S.length-2]=C.x,S[S.length-1]=C.y)}function r(S){return{x:parseFloat(S[S.length-2]),y:parseFloat(S[S.length-1])}}e.indexOf("NaN")>-1&&(e="");var n=e.split(/[,\s]/).reduce(function(S,C){var L=C.match("([a-zA-Z])(.+)");return L?(S.push(L[1]),S.push(L[2])):S.push(C),S},[]).reduce(function(S,C){return parseFloat(C)==C&&S.length?S[S.length-1].push(C):S.push([C]),S},[]),o=[];if(n.length>1){var h=r(n[0]),c=null;n[n.length-1][0]=="Z"&&n[0].length>2&&(c=["L",h.x,h.y],n[n.length-1]=c),o.push(n[0]);for(var d=1;d2&&p[0]=="L"&&x.length>2&&x[0]=="L"){var m,v,w=r(g),A=r(p),l=r(x);m=i(A,w,t),v=i(A,l,t),s(p,m),p.origPoint=A,o.push(p);var u=a(m,A,.5),b=a(A,v,.5),y=["C",u.x,u.y,b.x,b.y,v.x,v.y];y.origPoint=A,o.push(y)}else o.push(p)}if(c){var k=r(o[o.length-1]);o.push(["Z"]),s(o[0],k)}}else o=n;return o.reduce(function(S,C){return S+C.join(" ")+" "},"")}},{key:"drawLine",value:function(e,t,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"#a8a8a8",r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,n=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null,o=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"butt";return this.w.globals.dom.Paper.line().attr({x1:e,y1:t,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":n,"stroke-linecap":o})}},{key:"drawRect",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"#fefefe",n=arguments.length>6&&arguments[6]!==void 0?arguments[6]:1,o=arguments.length>7&&arguments[7]!==void 0?arguments[7]:null,h=arguments.length>8&&arguments[8]!==void 0?arguments[8]:null,c=arguments.length>9&&arguments[9]!==void 0?arguments[9]:0,d=this.w.globals.dom.Paper.rect();return d.attr({x:e,y:t,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:n,"stroke-width":o!==null?o:0,stroke:h!==null?h:"none","stroke-dasharray":c}),d.node.setAttribute("fill",r),d}},{key:"drawPolygon",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"#e1e1e1",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"none";return this.w.globals.dom.Paper.polygon(e).attr({fill:a,stroke:t,"stroke-width":i})}},{key:"drawCircle",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;e<0&&(e=0);var i=this.w.globals.dom.Paper.circle(2*e);return t!==null&&i.attr(t),i}},{key:"drawPath",value:function(e){var t=e.d,i=t===void 0?"":t,a=e.stroke,s=a===void 0?"#a8a8a8":a,r=e.strokeWidth,n=r===void 0?1:r,o=e.fill,h=e.fillOpacity,c=h===void 0?1:h,d=e.strokeOpacity,g=d===void 0?1:d,p=e.classes,x=e.strokeLinecap,m=x===void 0?null:x,v=e.strokeDashArray,w=v===void 0?0:v,A=this.w;return m===null&&(m=A.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(A.globals.gridHeight)),A.globals.dom.Paper.path(i).attr({fill:o,"fill-opacity":c,stroke:s,"stroke-opacity":g,"stroke-linecap":m,"stroke-width":n,"stroke-dasharray":w,class:p})}},{key:"group",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=this.w.globals.dom.Paper.group();return e!==null&&t.attr(e),t}},{key:"move",value:function(e,t){var i=["M",e,t].join(" ");return i}},{key:"line",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=null;return i===null?a=[" L",e,t].join(" "):i==="H"?a=[" H",e].join(" "):i==="V"&&(a=[" V",t].join(" ")),a}},{key:"curve",value:function(e,t,i,a,s,r){var n=["C",e,t,i,a,s,r].join(" ");return n}},{key:"quadraticCurve",value:function(e,t,i,a){return["Q",e,t,i,a].join(" ")}},{key:"arc",value:function(e,t,i,a,s,r,n){var o="A";arguments.length>7&&arguments[7]!==void 0&&arguments[7]&&(o="a");var h=[o,e,t,i,a,s,r,n].join(" ");return h}},{key:"renderPaths",value:function(e){var t,i=e.j,a=e.realIndex,s=e.pathFrom,r=e.pathTo,n=e.stroke,o=e.strokeWidth,h=e.strokeLinecap,c=e.fill,d=e.animationDelay,g=e.initialSpeed,p=e.dataChangeSpeed,x=e.className,m=e.shouldClipToGrid,v=m===void 0||m,w=e.bindEventsOnPaths,A=w===void 0||w,l=e.drawShadow,u=l===void 0||l,b=this.w,y=new q(this.ctx),k=new fe(this.ctx),S=this.w.config.chart.animations.enabled,C=S&&this.w.config.chart.animations.dynamicAnimation.enabled,L=!!(S&&!b.globals.resized||C&&b.globals.dataChanged&&b.globals.shouldAnimate);L?t=s:(t=r,b.globals.animationEnded=!0);var T=b.config.stroke.dashArray,z=0;z=Array.isArray(T)?T[a]:b.config.stroke.dashArray;var I=this.drawPath({d:t,stroke:n,strokeWidth:o,fill:c,fillOpacity:1,classes:x,strokeLinecap:h,strokeDashArray:z});if(I.attr("index",a),v&&I.attr({"clip-path":"url(#gridRectMask".concat(b.globals.cuid,")")}),b.config.states.normal.filter.type!=="none")y.getDefaultFilter(I,a);else if(b.config.chart.dropShadow.enabled&&u&&(!b.config.chart.dropShadow.enabledOnSeries||b.config.chart.dropShadow.enabledOnSeries&&b.config.chart.dropShadow.enabledOnSeries.indexOf(a)!==-1)){var X=b.config.chart.dropShadow;y.dropShadow(I,X,a)}A&&(I.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,I)),I.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,I)),I.node.addEventListener("mousedown",this.pathMouseDown.bind(this,I))),I.attr({pathTo:r,pathFrom:s});var R={el:I,j:i,realIndex:a,pathFrom:s,pathTo:r,fill:c,strokeWidth:o,delay:d};return!S||b.globals.resized||b.globals.dataChanged?!b.globals.resized&&b.globals.dataChanged||k.showDelayedElements():k.animatePathsGradually(E(E({},R),{},{speed:g})),b.globals.dataChanged&&C&&L&&k.animatePathsGradually(E(E({},R),{},{speed:p})),I}},{key:"drawPattern",value:function(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"#a8a8a8",s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;return this.w.globals.dom.Paper.pattern(t,i,function(r){e==="horizontalLines"?r.line(0,0,i,0).stroke({color:a,width:s+1}):e==="verticalLines"?r.line(0,0,0,t).stroke({color:a,width:s+1}):e==="slantedLines"?r.line(0,0,t,i).stroke({color:a,width:s}):e==="squares"?r.rect(t,i).fill("none").stroke({color:a,width:s}):e==="circles"&&r.circle(t).fill("none").stroke({color:a,width:s})})}},{key:"drawGradient",value:function(e,t,i,a,s){var r,n=arguments.length>5&&arguments[5]!==void 0?arguments[5]:null,o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null,h=arguments.length>7&&arguments[7]!==void 0?arguments[7]:null,c=arguments.length>8&&arguments[8]!==void 0?arguments[8]:0,d=this.w;t.length<9&&t.indexOf("#")===0&&(t=P.hexToRgba(t,a)),i.length<9&&i.indexOf("#")===0&&(i=P.hexToRgba(i,s));var g=0,p=1,x=1,m=null;o!==null&&(g=o[0]!==void 0?o[0]/100:0,p=o[1]!==void 0?o[1]/100:1,x=o[2]!==void 0?o[2]/100:1,m=o[3]!==void 0?o[3]/100:null);var v=!(d.config.chart.type!=="donut"&&d.config.chart.type!=="pie"&&d.config.chart.type!=="polarArea"&&d.config.chart.type!=="bubble");if(r=h===null||h.length===0?d.globals.dom.Paper.gradient(v?"radial":"linear",function(l){l.at(g,t,a),l.at(p,i,s),l.at(x,i,s),m!==null&&l.at(m,t,a)}):d.globals.dom.Paper.gradient(v?"radial":"linear",function(l){(Array.isArray(h[c])?h[c]:h).forEach(function(u){l.at(u.offset/100,u.color,u.opacity)})}),v){var w=d.globals.gridWidth/2,A=d.globals.gridHeight/2;d.config.chart.type!=="bubble"?r.attr({gradientUnits:"userSpaceOnUse",cx:w,cy:A,r:n}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else e==="vertical"?r.from(0,0).to(0,1):e==="diagonal"?r.from(0,0).to(1,1):e==="horizontal"?r.from(0,1).to(1,1):e==="diagonal2"&&r.from(1,0).to(0,1);return r}},{key:"getTextBasedOnMaxWidth",value:function(e){var t=e.text,i=e.maxWidth,a=e.fontSize,s=e.fontFamily,r=this.getTextRects(t,a,s),n=r.width/t.length,o=Math.floor(i/n);return i-1){var o=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var h=i.globals.dom.Paper.select(".apexcharts-series path").members,c=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,d=function(x){Array.prototype.forEach.call(x,function(m){m.node.setAttribute("selected","false"),a.getDefaultFilter(m,s)})};d(h),d(c)}e.node.setAttribute("selected","true"),n="true",i.globals.selectedDataPoints[s]===void 0&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if(n==="true"){var g=i.config.states.active.filter;if(g!=="none")a.applyFilter(e,s,g.type,g.value);else if(i.config.states.hover.filter!=="none"&&!i.globals.isTouchDevice){var p=i.config.states.hover.filter;a.applyFilter(e,s,p.type,p.value)}}else i.config.states.active.filter.type!=="none"&&(i.config.states.hover.filter.type==="none"||i.globals.isTouchDevice?a.getDefaultFilter(e,s):(p=i.config.states.hover.filter,a.applyFilter(e,s,p.type,p.value)));typeof i.config.chart.events.dataPointSelection=="function"&&i.config.chart.events.dataPointSelection(t,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),t&&this.ctx.events.fireEvent("dataPointSelection",[t,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(e){var t={};return e&&typeof e.getBBox=="function"&&(t=e.getBBox()),{x:t.x+t.width/2,y:t.y+t.height/2}}},{key:"getTextRects",value:function(e,t,i,a){var s=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],r=this.w,n=this.drawText({x:-200,y:-200,text:e,textAnchor:"start",fontSize:t,fontFamily:i,foreColor:"#fff",opacity:0});a&&n.attr("transform",a),r.globals.dom.Paper.add(n);var o=n.bbox();return s||(o=n.node.getBoundingClientRect()),n.remove(),{width:o.width,height:o.height}}},{key:"placeTextWithEllipsis",value:function(e,t,i){if(typeof e.getComputedTextLength=="function"&&(e.textContent=t,t.length>0&&e.getComputedTextLength()>=i/1.1)){for(var a=t.length-3;a>0;a-=3)if(e.getSubStringLength(0,a)<=i/1.1)return void(e.textContent=t.substring(0,a)+"...");e.textContent="."}}}],[{key:"setAttrs",value:function(e,t){for(var i in t)t.hasOwnProperty(i)&&e.setAttribute(i,t[i])}}]),f}(),V=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"getStackedSeriesTotals",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=this.w,i=[];if(t.globals.series.length===0)return i;for(var a=0;a0&&arguments[0]!==void 0?arguments[0]:null;return e===null?this.w.config.series.reduce(function(t,i){return t+i},0):this.w.globals.series[e].reduce(function(t,i){return t+i},0)}},{key:"getStackedSeriesTotalsByGroups",value:function(){var e=this,t=this.w,i=[];return t.globals.seriesGroups.forEach(function(a){var s=[];t.config.series.forEach(function(n,o){a.indexOf(n.name)>-1&&s.push(o)});var r=t.globals.series.map(function(n,o){return s.indexOf(o)===-1?o:-1}).filter(function(n){return n!==-1});i.push(e.getStackedSeriesTotals(r))}),i}},{key:"isSeriesNull",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return(e===null?this.w.config.series.filter(function(t){return t!==null}):this.w.config.series[e].data.filter(function(t){return t!==null})).length===0}},{key:"seriesHaveSameValues",value:function(e){return this.w.globals.series[e].every(function(t,i,a){return t===a[0]})}},{key:"getCategoryLabels",value:function(e){var t=this.w,i=e.slice();return t.config.xaxis.convertedCatToNumeric&&(i=e.map(function(a,s){return t.config.xaxis.labels.formatter(a-t.globals.minX+1)})),i}},{key:"getLargestSeries",value:function(){var e=this.w;e.globals.maxValsInArrayIndex=e.globals.series.map(function(t){return t.length}).indexOf(Math.max.apply(Math,e.globals.series.map(function(t){return t.length})))}},{key:"getLargestMarkerSize",value:function(){var e=this.w,t=0;return e.globals.markers.size.forEach(function(i){t=Math.max(t,i)}),e.config.markers.discrete&&e.config.markers.discrete.length&&e.config.markers.discrete.forEach(function(i){t=Math.max(t,i.size)}),t>0&&(t+=e.config.markers.hover.sizeOffset+1),e.globals.markers.largestSize=t,t}},{key:"getSeriesTotals",value:function(){var e=this.w;e.globals.seriesTotals=e.globals.series.map(function(t,i){var a=0;if(Array.isArray(t))for(var s=0;se&&i.globals.seriesX[s][n]0&&(t=!0),{comboBarCount:i,comboCharts:t}}},{key:"extendArrayProps",value:function(e,t,i){return t.yaxis&&(t=e.extendYAxis(t,i)),t.annotations&&(t.annotations.yaxis&&(t=e.extendYAxisAnnotations(t)),t.annotations.xaxis&&(t=e.extendXAxisAnnotations(t)),t.annotations.points&&(t=e.extendPointAnnotations(t))),t}}]),f}(),Fe=function(){function f(e){Y(this,f),this.w=e.w,this.annoCtx=e}return F(f,[{key:"setOrientations",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=this.w;if(e.label.orientation==="vertical"){var a=t!==null?t:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(s!==null){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4),e.label.position==="top"?s.setAttribute("y",parseFloat(s.getAttribute("y"))+r.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-r.width);var n=this.annoCtx.graphics.rotateAroundCenter(s),o=n.x,h=n.y;s.setAttribute("transform","rotate(-90 ".concat(o," ").concat(h,")"))}}}},{key:"addBackgroundToAnno",value:function(e,t){var i=this.w;if(!e||t.label.text===void 0||t.label.text!==void 0&&!String(t.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=e.getBoundingClientRect(),r=t.label.style.padding.left,n=t.label.style.padding.right,o=t.label.style.padding.top,h=t.label.style.padding.bottom;t.label.orientation==="vertical"&&(o=t.label.style.padding.left,h=t.label.style.padding.right,r=t.label.style.padding.top,n=t.label.style.padding.bottom);var c=s.left-a.left-r,d=s.top-a.top-o,g=this.annoCtx.graphics.drawRect(c-i.globals.barPadForNumericAxis,d,s.width+r+n,s.height+o+h,t.label.borderRadius,t.label.style.background,1,t.label.borderWidth,t.label.borderColor,0);return t.id&&g.node.classList.add(t.id),g}},{key:"annotationsBackground",value:function(){var e=this,t=this.w,i=function(a,s,r){var n=t.globals.dom.baseEl.querySelector(".apexcharts-".concat(r,"-annotations .apexcharts-").concat(r,"-annotation-label[rel='").concat(s,"']"));if(n){var o=n.parentNode,h=e.addBackgroundToAnno(n,a);h&&(o.insertBefore(h.node,n),a.label.mouseEnter&&h.node.addEventListener("mouseenter",a.label.mouseEnter.bind(e,a)),a.label.mouseLeave&&h.node.addEventListener("mouseleave",a.label.mouseLeave.bind(e,a)),a.label.click&&h.node.addEventListener("click",a.label.click.bind(e,a)))}};t.config.annotations.xaxis.map(function(a,s){i(a,s,"xaxis")}),t.config.annotations.yaxis.map(function(a,s){i(a,s,"yaxis")}),t.config.annotations.points.map(function(a,s){i(a,s,"point")})}},{key:"getY1Y2",value:function(e,t){var i,a=e==="y1"?t.y:t.y2,s=this.w;if(this.annoCtx.invertAxis){var r=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(r=s.globals.categoryLabels.indexOf(a));var n=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(r+1)+")");n&&(i=parseFloat(n.getAttribute("y"))),t.seriesIndex!==void 0&&s.globals.barHeight&&(i=i-s.globals.barHeight/2*(s.globals.series.length-1)+s.globals.barHeight*t.seriesIndex)}else{var o;s.config.yaxis[t.yAxisIndex].logarithmic?o=(a=new V(this.annoCtx.ctx).getLogVal(a,t.yAxisIndex))/s.globals.yLogRatio[t.yAxisIndex]:o=(a-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight),i=s.globals.gridHeight-o,!t.marker||t.y!==void 0&&t.y!==null||(i=0),s.config.yaxis[t.yAxisIndex]&&s.config.yaxis[t.yAxisIndex].reversed&&(i=o)}return typeof a=="string"&&a.indexOf("px")>-1&&(i=parseFloat(a)),i}},{key:"getX1X2",value:function(e,t){var i=this.w,a=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,s=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,r=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,n=(t.x-a)/(r/i.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(n=(s-t.x)/(r/i.globals.gridWidth)),i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(n=this.getStringX(t.x));var o=(t.x2-a)/(r/i.globals.gridWidth);return this.annoCtx.inversedReversedAxis&&(o=(s-t.x2)/(r/i.globals.gridWidth)),i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(o=this.getStringX(t.x2)),t.x!==void 0&&t.x!==null||!t.marker||(n=i.globals.gridWidth),e==="x1"&&typeof t.x=="string"&&t.x.indexOf("px")>-1&&(n=parseFloat(t.x)),e==="x2"&&typeof t.x2=="string"&&t.x2.indexOf("px")>-1&&(o=parseFloat(t.x2)),t.seriesIndex!==void 0&&i.globals.barWidth&&!this.annoCtx.invertAxis&&(n=n-i.globals.barWidth/2*(i.globals.series.length-1)+i.globals.barWidth*t.seriesIndex),e==="x1"?n:o}},{key:"getStringX",value:function(e){var t=this.w,i=e;t.config.xaxis.convertedCatToNumeric&&t.globals.categoryLabels.length&&(e=t.globals.categoryLabels.indexOf(e)+1);var a=t.globals.labels.indexOf(e),s=t.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),f}(),Si=function(){function f(e){Y(this,f),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new Fe(this.annoCtx)}return F(f,[{key:"addXaxisAnnotation",value:function(e,t,i){var a,s=this.w,r=this.helpers.getX1X2("x1",e),n=e.label.text,o=e.strokeDashArray;if(P.isNumber(r)){if(e.x2===null||e.x2===void 0){var h=this.annoCtx.graphics.drawLine(r+e.offsetX,0+e.offsetY,r+e.offsetX,s.globals.gridHeight+e.offsetY,e.borderColor,o,e.borderWidth);t.appendChild(h.node),e.id&&h.node.classList.add(e.id)}else{if((a=this.helpers.getX1X2("x2",e))n){var c=n;n=a,a=c}var d=this.annoCtx.graphics.drawRect(0+e.offsetX,a+e.offsetY,this._getYAxisAnnotationWidth(e),n-a,0,e.fillColor,e.opacity,1,e.borderColor,r);d.node.classList.add("apexcharts-annotation-rect"),d.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),t.appendChild(d.node),e.id&&d.node.classList.add(e.id)}var g=e.label.position==="right"?s.globals.gridWidth:e.label.position==="center"?s.globals.gridWidth/2:0,p=this.annoCtx.graphics.drawText({x:g+e.label.offsetX,y:(a??n)+e.label.offsetY-3,text:o,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(e.label.style.cssClass," ").concat(e.id?e.id:"")});p.attr({rel:i}),t.appendChild(p.node)}},{key:"_getYAxisAnnotationWidth",value:function(e){var t=this.w;return t.globals.gridWidth,(e.width.indexOf("%")>-1?t.globals.gridWidth*parseInt(e.width,10)/100:parseInt(e.width,10))+e.offsetX}},{key:"drawYAxisAnnotations",value:function(){var e=this,t=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return t.config.annotations.yaxis.map(function(a,s){e.addYaxisAnnotation(a,i.node,s)}),i}}]),f}(),Li=function(){function f(e){Y(this,f),this.w=e.w,this.annoCtx=e,this.helpers=new Fe(this.annoCtx)}return F(f,[{key:"addPointAnnotation",value:function(e,t,i){this.w;var a=this.helpers.getX1X2("x1",e),s=this.helpers.getY1Y2("y1",e);if(P.isNumber(a)){var r={pSize:e.marker.size,pointStrokeWidth:e.marker.strokeWidth,pointFillColor:e.marker.fillColor,pointStrokeColor:e.marker.strokeColor,shape:e.marker.shape,pRadius:e.marker.radius,class:"apexcharts-point-annotation-marker ".concat(e.marker.cssClass," ").concat(e.id?e.id:"")},n=this.annoCtx.graphics.drawMarker(a+e.marker.offsetX,s+e.marker.offsetY,r);t.appendChild(n.node);var o=e.label.text?e.label.text:"",h=this.annoCtx.graphics.drawText({x:a+e.label.offsetX,y:s+e.label.offsetY-e.marker.size-parseFloat(e.label.style.fontSize)/1.6,text:o,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(e.label.style.cssClass," ").concat(e.id?e.id:"")});if(h.attr({rel:i}),t.appendChild(h.node),e.customSVG.SVG){var c=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+e.customSVG.cssClass});c.attr({transform:"translate(".concat(a+e.customSVG.offsetX,", ").concat(s+e.customSVG.offsetY,")")}),c.node.innerHTML=e.customSVG.SVG,t.appendChild(c.node)}if(e.image.path){var d=e.image.width?e.image.width:20,g=e.image.height?e.image.height:20;n=this.annoCtx.addImage({x:a+e.image.offsetX-d/2,y:s+e.image.offsetY-g/2,width:d,height:g,path:e.image.path,appendTo:".apexcharts-point-annotations"})}e.mouseEnter&&n.node.addEventListener("mouseenter",e.mouseEnter.bind(this,e)),e.mouseLeave&&n.node.addEventListener("mouseleave",e.mouseLeave.bind(this,e)),e.click&&n.node.addEventListener("click",e.click.bind(this,e))}}},{key:"drawPointAnnotations",value:function(){var e=this,t=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return t.config.annotations.points.map(function(a,s){e.addPointAnnotation(a,i.node,s)}),i}}]),f}(),Pt={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},re=function(){function f(){Y(this,f),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,stepSize:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:void 0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return F(f,[{key:"init",value:function(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[Pt],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,nonce:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackOnlyBar:!0,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",dateFormatter:function(e){return new Date(e).toDateString()}},png:{filename:void 0},svg:{filename:void 0}},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,dataLabels:{format:"scale"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(e){return e}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(e){return e+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(e){return e.globals.seriesTotals.reduce(function(t,i){return t+i},0)/e.globals.series.length+"%"}}},barLabels:{enabled:!1,margin:5,useSeriesColors:!0,fontFamily:void 0,fontWeight:600,fontSize:"16px",formatter:function(e){return e},onClick:void 0}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(e){return e}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(e){return e}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(e){return e.globals.seriesTotals.reduce(function(t,i){return t+i},0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(e){return e!==null?e:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:2},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",width:8,height:8,radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.5}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,hideEmptySeries:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(e){return e?e+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},stepSize:void 0,tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),f}(),Pi=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.graphics=new M(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new Fe(this),this.xAxisAnnotations=new Si(this),this.yAxisAnnotations=new Ci(this),this.pointsAnnotations=new Li(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return F(f,[{key:"drawAxesAnnotations",value:function(){var e=this.w;if(e.globals.axisCharts){for(var t=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=e.config.chart.animations.enabled,r=[t,i,a],n=[i.node,t.node,a.node],o=0;o<3;o++)e.globals.dom.elGraphical.add(r[o]),!s||e.globals.resized||e.globals.dataChanged||e.config.chart.type!=="scatter"&&e.config.chart.type!=="bubble"&&e.globals.dataPoints>1&&n[o].classList.add("apexcharts-element-hidden"),e.globals.delayedElements.push({el:n[o],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var e=this;this.w.config.annotations.images.map(function(t,i){e.addImage(t,i)})}},{key:"drawTextAnnos",value:function(){var e=this;this.w.config.annotations.texts.map(function(t,i){e.addText(t,i)})}},{key:"addXaxisAnnotation",value:function(e,t,i){this.xAxisAnnotations.addXaxisAnnotation(e,t,i)}},{key:"addYaxisAnnotation",value:function(e,t,i){this.yAxisAnnotations.addYaxisAnnotation(e,t,i)}},{key:"addPointAnnotation",value:function(e,t,i){this.pointsAnnotations.addPointAnnotation(e,t,i)}},{key:"addText",value:function(e,t){var i=e.x,a=e.y,s=e.text,r=e.textAnchor,n=e.foreColor,o=e.fontSize,h=e.fontFamily,c=e.fontWeight,d=e.cssClass,g=e.backgroundColor,p=e.borderWidth,x=e.strokeDashArray,m=e.borderRadius,v=e.borderColor,w=e.appendTo,A=w===void 0?".apexcharts-svg":w,l=e.paddingLeft,u=l===void 0?4:l,b=e.paddingRight,y=b===void 0?4:b,k=e.paddingBottom,S=k===void 0?2:k,C=e.paddingTop,L=C===void 0?2:C,T=this.w,z=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:o||"12px",fontWeight:c||"regular",fontFamily:h||T.config.chart.fontFamily,foreColor:n||T.config.chart.foreColor,cssClass:d}),I=T.globals.dom.baseEl.querySelector(A);I&&I.appendChild(z.node);var X=z.bbox();if(s){var R=this.graphics.drawRect(X.x-u,X.y-L,X.width+u+y,X.height+S+L,m,g||"transparent",1,p,v,x);I.insertBefore(R.node,z.node)}}},{key:"addImage",value:function(e,t){var i=this.w,a=e.path,s=e.x,r=s===void 0?0:s,n=e.y,o=n===void 0?0:n,h=e.width,c=h===void 0?20:h,d=e.height,g=d===void 0?20:d,p=e.appendTo,x=p===void 0?".apexcharts-svg":p,m=i.globals.dom.Paper.image(a);m.size(c,g).move(r,o);var v=i.globals.dom.baseEl.querySelector(x);return v&&v.appendChild(m.node),m}},{key:"addXaxisAnnotationExternal",value:function(e,t,i){return this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(e,t,i){return this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(e,t,i){return this.invertAxis===void 0&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:e,pushToMemory:t,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(e){var t=e.params,i=e.pushToMemory,a=e.context,s=e.type,r=e.contextMethod,n=a,o=n.w,h=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),c=h.childNodes.length+1,d=new re,g=Object.assign({},s==="xaxis"?d.xAxisAnnotation:s==="yaxis"?d.yAxisAnnotation:d.pointAnnotation),p=P.extend(g,t);switch(s){case"xaxis":this.addXaxisAnnotation(p,h,c);break;case"yaxis":this.addYaxisAnnotation(p,h,c);break;case"point":this.addPointAnnotation(p,h,c)}var x=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(c,"']")),m=this.helpers.addBackgroundToAnno(x,p);return m&&h.insertBefore(m.node,x),i&&o.globals.memory.methodsToExec.push({context:n,id:p.id?p.id:P.randomId(),method:r,label:"addAnnotation",params:t}),a}},{key:"clearAnnotations",value:function(e){var t=e.w,i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");t.globals.memory.methodsToExec.map(function(a,s){a.label!=="addText"&&a.label!=="addAnnotation"||t.globals.memory.methodsToExec.splice(s,1)}),i=P.listToArray(i),Array.prototype.forEach.call(i,function(a){for(;a.firstChild;)a.removeChild(a.firstChild)})}},{key:"removeAnnotation",value:function(e,t){var i=e.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(t));a&&(i.globals.memory.methodsToExec.map(function(s,r){s.id===t&&i.globals.memory.methodsToExec.splice(r,1)}),Array.prototype.forEach.call(a,function(s){s.parentElement.removeChild(s)}))}}]),f}(),j=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return F(f,[{key:"isValidDate",value:function(e){return typeof e!="number"&&!isNaN(this.parseDate(e))}},{key:"getTimeStamp",value:function(e){return Date.parse(e)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(e).toISOString().substr(0,25)).getTime():new Date(e).getTime():e}},{key:"getDate",value:function(e){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(e).toUTCString()):new Date(e)}},{key:"parseDate",value:function(e){var t=Date.parse(e);if(!isNaN(t))return this.getTimeStamp(e);var i=Date.parse(e.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getTimeStamp(i)}},{key:"parseDateWithTimezone",value:function(e){return Date.parse(e.replace(/-/g,"/").replace(/[a-z]+/gi," "))}},{key:"formatDate",value:function(e,t){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=["\0"].concat(J(i.months)),r=[""].concat(J(i.shortMonths)),n=[""].concat(J(i.days)),o=[""].concat(J(i.shortDays));function h(S,C){var L=S+"";for(C=C||2;L.length12?p-12:p===0?12:p;t=(t=(t=(t=t.replace(/(^|[^\\])HH+/g,"$1"+h(p))).replace(/(^|[^\\])H/g,"$1"+p)).replace(/(^|[^\\])hh+/g,"$1"+h(x))).replace(/(^|[^\\])h/g,"$1"+x);var m=a?e.getUTCMinutes():e.getMinutes();t=(t=t.replace(/(^|[^\\])mm+/g,"$1"+h(m))).replace(/(^|[^\\])m/g,"$1"+m);var v=a?e.getUTCSeconds():e.getSeconds();t=(t=t.replace(/(^|[^\\])ss+/g,"$1"+h(v))).replace(/(^|[^\\])s/g,"$1"+v);var w=a?e.getUTCMilliseconds():e.getMilliseconds();t=t.replace(/(^|[^\\])fff+/g,"$1"+h(w,3)),w=Math.round(w/10),t=t.replace(/(^|[^\\])ff/g,"$1"+h(w)),w=Math.round(w/10);var A=p<12?"AM":"PM";t=(t=(t=t.replace(/(^|[^\\])f/g,"$1"+w)).replace(/(^|[^\\])TT+/g,"$1"+A)).replace(/(^|[^\\])T/g,"$1"+A.charAt(0));var l=A.toLowerCase();t=(t=t.replace(/(^|[^\\])tt+/g,"$1"+l)).replace(/(^|[^\\])t/g,"$1"+l.charAt(0));var u=-e.getTimezoneOffset(),b=a||!u?"Z":u>0?"+":"-";if(!a){var y=(u=Math.abs(u))%60;b+=h(Math.floor(u/60))+":"+h(y)}t=t.replace(/(^|[^\\])K/g,"$1"+b);var k=(a?e.getUTCDay():e.getDay())+1;return t=(t=(t=(t=(t=t.replace(new RegExp(n[0],"g"),n[k])).replace(new RegExp(o[0],"g"),o[k])).replace(new RegExp(s[0],"g"),s[d])).replace(new RegExp(r[0],"g"),r[d])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(e,t,i){var a=this.w;a.config.xaxis.min!==void 0&&(e=a.config.xaxis.min),a.config.xaxis.max!==void 0&&(t=a.config.xaxis.max);var s=this.getDate(e),r=this.getDate(t),n=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),o=this.formatDate(r,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(n[6],10),maxMillisecond:parseInt(o[6],10),minSecond:parseInt(n[5],10),maxSecond:parseInt(o[5],10),minMinute:parseInt(n[4],10),maxMinute:parseInt(o[4],10),minHour:parseInt(n[3],10),maxHour:parseInt(o[3],10),minDate:parseInt(n[2],10),maxDate:parseInt(o[2],10),minMonth:parseInt(n[1],10)-1,maxMonth:parseInt(o[1],10)-1,minYear:parseInt(n[0],10),maxYear:parseInt(o[0],10)}}},{key:"isLeapYear",value:function(e){return e%4==0&&e%100!=0||e%400==0}},{key:"calculcateLastDaysOfMonth",value:function(e,t,i){return this.determineDaysOfMonths(e,t)-i}},{key:"determineDaysOfYear",value:function(e){var t=365;return this.isLeapYear(e)&&(t=366),t}},{key:"determineRemainingDaysOfYear",value:function(e,t,i){var a=this.daysCntOfYear[t]+i;return t>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(e,t){var i=30;switch(e=P.monthMod(e),!0){case this.months30.indexOf(e)>-1:e===2&&(i=this.isLeapYear(t)?29:28);break;case this.months31.indexOf(e)>-1:default:i=31}return i}}]),f}(),Se=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.tooltipKeyFormat="dd MMM"}return F(f,[{key:"xLabelFormat",value:function(e,t,i,a){var s=this.w;if(s.config.xaxis.type==="datetime"&&s.config.xaxis.labels.formatter===void 0&&s.config.tooltip.x.formatter===void 0){var r=new j(this.ctx);return r.formatDate(r.getDate(t),s.config.tooltip.x.format)}return e(t,i,a)}},{key:"defaultGeneralFormatter",value:function(e){return Array.isArray(e)?e.map(function(t){return t}):e}},{key:"defaultYFormatter",value:function(e,t,i){var a=this.w;return P.isNumber(e)&&(e=a.globals.yValueDecimal!==0?e.toFixed(t.decimalsInFloat!==void 0?t.decimalsInFloat:a.globals.yValueDecimal):a.globals.maxYArr[i]-a.globals.minYArr[i]<5?e.toFixed(1):e.toFixed(0)),e}},{key:"setLabelFormatters",value:function(){var e=this,t=this.w;return t.globals.xaxisTooltipFormatter=function(i){return e.defaultGeneralFormatter(i)},t.globals.ttKeyFormatter=function(i){return e.defaultGeneralFormatter(i)},t.globals.ttZFormatter=function(i){return i},t.globals.legendFormatter=function(i){return e.defaultGeneralFormatter(i)},t.config.xaxis.labels.formatter!==void 0?t.globals.xLabelFormatter=t.config.xaxis.labels.formatter:t.globals.xLabelFormatter=function(i){if(P.isNumber(i)){if(!t.config.xaxis.convertedCatToNumeric&&t.config.xaxis.type==="numeric"){if(P.isNumber(t.config.xaxis.decimalsInFloat))return i.toFixed(t.config.xaxis.decimalsInFloat);var a=t.globals.maxX-t.globals.minX;return a>0&&a<100?i.toFixed(1):i.toFixed(0)}return t.globals.isBarHorizontal&&t.globals.maxY-t.globals.minYArr<4?i.toFixed(1):i.toFixed(0)}return i},typeof t.config.tooltip.x.formatter=="function"?t.globals.ttKeyFormatter=t.config.tooltip.x.formatter:t.globals.ttKeyFormatter=t.globals.xLabelFormatter,typeof t.config.xaxis.tooltip.formatter=="function"&&(t.globals.xaxisTooltipFormatter=t.config.xaxis.tooltip.formatter),(Array.isArray(t.config.tooltip.y)||t.config.tooltip.y.formatter!==void 0)&&(t.globals.ttVal=t.config.tooltip.y),t.config.tooltip.z.formatter!==void 0&&(t.globals.ttZFormatter=t.config.tooltip.z.formatter),t.config.legend.formatter!==void 0&&(t.globals.legendFormatter=t.config.legend.formatter),t.config.yaxis.forEach(function(i,a){i.labels.formatter!==void 0?t.globals.yLabelFormatters[a]=i.labels.formatter:t.globals.yLabelFormatters[a]=function(s){return t.globals.xyCharts?Array.isArray(s)?s.map(function(r){return e.defaultYFormatter(r,i,a)}):e.defaultYFormatter(s,i,a):s}}),t.globals}},{key:"heatmapLabelFormatters",value:function(){var e=this.w;if(e.config.chart.type==="heatmap"){e.globals.yAxisScale[0].result=e.globals.seriesNames.slice();var t=e.globals.seriesNames.reduce(function(i,a){return i.length>a.length?i:a},0);e.globals.yAxisScale[0].niceMax=t,e.globals.yAxisScale[0].niceMin=t}}}]),f}(),_e=function(f){var e,t=f.isTimeline,i=f.ctx,a=f.seriesIndex,s=f.dataPointIndex,r=f.y1,n=f.y2,o=f.w,h=o.globals.seriesRangeStart[a][s],c=o.globals.seriesRangeEnd[a][s],d=o.globals.labels[s],g=o.config.series[a].name?o.config.series[a].name:"",p=o.globals.ttKeyFormatter,x=o.config.tooltip.y.title.formatter,m={w:o,seriesIndex:a,dataPointIndex:s,start:h,end:c};typeof x=="function"&&(g=x(g,m)),(e=o.config.series[a].data[s])!==null&&e!==void 0&&e.x&&(d=o.config.series[a].data[s].x),t||o.config.xaxis.type==="datetime"&&(d=new Se(i).xLabelFormat(o.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new j(i).formatDate,w:o})),typeof p=="function"&&(d=p(d,m)),Number.isFinite(r)&&Number.isFinite(n)&&(h=r,c=n);var v="",w="",A=o.globals.colors[a];if(o.config.tooltip.x.formatter===void 0)if(o.config.xaxis.type==="datetime"){var l=new j(i);v=l.formatDate(l.getDate(h),o.config.tooltip.x.format),w=l.formatDate(l.getDate(c),o.config.tooltip.x.format)}else v=h,w=c;else v=o.config.tooltip.x.formatter(h),w=o.config.tooltip.x.formatter(c);return{start:h,end:c,startVal:v,endVal:w,ylabel:d,color:A,seriesName:g}},je=function(f){var e=f.color,t=f.seriesName,i=f.ylabel,a=f.start,s=f.end,r=f.seriesIndex,n=f.dataPointIndex,o=f.ctx.tooltip.tooltipLabels.getFormatters(r);a=o.yLbFormatter(a),s=o.yLbFormatter(s);var h=o.yLbFormatter(f.w.globals.series[r][n]),c=` + `.concat(a,` + - + `).concat(s,` + `);return'
'+(t||"")+'
'+i+": "+(f.w.globals.comboCharts?f.w.config.series[r].type==="rangeArea"||f.w.config.series[r].type==="rangeBar"?c:"".concat(h,""):c)+"
"},ve=function(){function f(e){Y(this,f),this.opts=e}return F(f,[{key:"hideYAxis",value:function(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}},{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(e){return this.hideYAxis(),P.extend(e,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"round"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"funnel",value:function(){return this.hideYAxis(),E(E({},this.bar()),{},{chart:{animations:{easing:"linear",speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:"around",borderRadius:0,dataLabels:{position:"center"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}},{key:"candlestick",value:function(){var e=this;return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var i=t.seriesIndex,a=t.dataPointIndex,s=t.w;return e._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var e=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var i=t.seriesIndex,a=t.dataPointIndex,s=t.w;return e._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:5,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(e,t){t.ctx;var i=t.seriesIndex,a=t.dataPointIndex,s=t.w,r=function(){var n=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-n};return s.globals.comboCharts?s.config.series[i].type==="rangeBar"||s.config.series[i].type==="rangeArea"?r():e:r()},background:{enabled:!1},style:{colors:["#fff"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom:function(e){return e.w.config.plotOptions&&e.w.config.plotOptions.bar&&e.w.config.plotOptions.bar.horizontal?function(t){var i=_e(E(E({},t),{},{isTimeline:!0})),a=i.color,s=i.seriesName,r=i.ylabel,n=i.startVal,o=i.endVal;return je(E(E({},t),{},{color:a,seriesName:s,ylabel:r,start:n,end:o}))}(e):function(t){var i=_e(t),a=i.color,s=i.seriesName,r=i.ylabel,n=i.start,o=i.end;return je(E(E({},t),{},{color:a,seriesName:s,ylabel:r,start:n,end:o}))}(e)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"dumbbell",value:function(e){var t,i;return(t=e.plotOptions.bar)!==null&&t!==void 0&&t.barHeight||(e.plotOptions.bar.barHeight=2),(i=e.plotOptions.bar)!==null&&i!==void 0&&i.columnWidth||(e.plotOptions.bar.columnWidth=2),e}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(e){return function(t){var i=_e(t),a=i.color,s=i.seriesName,r=i.ylabel,n=i.start,o=i.end;return je(E(E({},t),{},{color:a,seriesName:s,ylabel:r,start:n,end:o}))}(e)}}}}},{key:"brush",value:function(e){return P.extend(e,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(e){e.dataLabels=e.dataLabels||{},e.dataLabels.formatter=e.dataLabels.formatter||void 0;var t=e.dataLabels.formatter;return e.yaxis.forEach(function(i,a){e.yaxis[a].min=0,e.yaxis[a].max=100}),e.chart.type==="bar"&&(e.dataLabels.formatter=t||function(i){return typeof i=="number"&&i?i.toFixed(0)+"%":i}),e}},{key:"stackedBars",value:function(){var e=this.bar();return E(E({},e),{},{plotOptions:E(E({},e.plotOptions),{},{bar:E(E({},e.plotOptions.bar),{},{borderRadiusApplication:"end",borderRadiusWhenStacked:"last"})})})}},{key:"convertCatToNumeric",value:function(e){return e.xaxis.convertedCatToNumeric=!0,e}},{key:"convertCatToNumericXaxis",value:function(e,t,i){e.xaxis.type="numeric",e.xaxis.labels=e.xaxis.labels||{},e.xaxis.labels.formatter=e.xaxis.labels.formatter||function(r){return P.isNumber(r)?Math.floor(r):r};var a=e.xaxis.labels.formatter,s=e.xaxis.categories&&e.xaxis.categories.length?e.xaxis.categories:e.labels;return i&&i.length&&(s=i.map(function(r){return Array.isArray(r)?r:String(r)})),s&&s.length&&(e.xaxis.labels.formatter=function(r){return P.isNumber(r)?a(s[Math.floor(r)-1]):a(r)}),e.xaxis.categories=[],e.labels=[],e.xaxis.tickAmount=e.xaxis.tickAmount||"dataPoints",e}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return this.opts.yaxis[0].tickAmount=this.opts.yaxis[0].tickAmount?this.opts.yaxis[0].tickAmount:6,{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(e){return e.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(e){return e},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:"_getBoxTooltip",value:function(e,t,i,a,s){var r=e.globals.seriesCandleO[t][i],n=e.globals.seriesCandleH[t][i],o=e.globals.seriesCandleM[t][i],h=e.globals.seriesCandleL[t][i],c=e.globals.seriesCandleC[t][i];return e.config.series[t].type&&e.config.series[t].type!==s?`
+ `.concat(e.config.series[t].name?e.config.series[t].name:"series-"+(t+1),": ").concat(e.globals.series[t][i],` +
`):'
')+"
".concat(a[0],': ')+r+"
"+"
".concat(a[1],': ')+n+"
"+(o?"
".concat(a[2],': ')+o+"
":"")+"
".concat(a[3],': ')+h+"
"+"
".concat(a[4],': ')+c+"
"}}]),f}(),ye=function(){function f(e){Y(this,f),this.opts=e}return F(f,[{key:"init",value:function(e){var t=e.responsiveOverride,i=this.opts,a=new re,s=new ve(i);this.chartType=i.chart.type,i=this.extendYAxis(i),i=this.extendAnnotations(i);var r=a.init(),n={};if(i&&_(i)==="object"){var o,h,c,d,g,p,x,m,v,w,A={};A=["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(i.chart.type)!==-1?s[i.chart.type]():s.line(),(o=i.plotOptions)!==null&&o!==void 0&&(h=o.bar)!==null&&h!==void 0&&h.isFunnel&&(A=s.funnel()),i.chart.stacked&&i.chart.type==="bar"&&(A=s.stackedBars()),(c=i.chart.brush)!==null&&c!==void 0&&c.enabled&&(A=s.brush(A)),i.chart.stacked&&i.chart.stackType==="100%"&&(i=s.stacked100(i)),(d=i.plotOptions)!==null&&d!==void 0&&(g=d.bar)!==null&&g!==void 0&&g.isDumbbell&&(i=s.dumbbell(i)),((p=i)===null||p===void 0||(x=p.stroke)===null||x===void 0?void 0:x.curve)==="monotoneCubic"&&(i.stroke.curve="smooth"),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(i),i.xaxis=i.xaxis||window.Apex.xaxis||{},t||(i.xaxis.convertedCatToNumeric=!1),((m=(i=this.checkForCatToNumericXAxis(this.chartType,A,i)).chart.sparkline)!==null&&m!==void 0&&m.enabled||(v=window.Apex.chart)!==null&&v!==void 0&&(w=v.sparkline)!==null&&w!==void 0&&w.enabled)&&(A=s.sparkline(A)),n=P.extend(r,A)}var l=P.extend(n,window.Apex);return r=P.extend(l,i),r=this.handleUserInputErrors(r)}},{key:"checkForCatToNumericXAxis",value:function(e,t,i){var a,s,r=new ve(i),n=(e==="bar"||e==="boxPlot")&&((a=i.plotOptions)===null||a===void 0||(s=a.bar)===null||s===void 0?void 0:s.horizontal),o=e==="pie"||e==="polarArea"||e==="donut"||e==="radar"||e==="radialBar"||e==="heatmap",h=i.xaxis.type!=="datetime"&&i.xaxis.type!=="numeric",c=i.xaxis.tickPlacement?i.xaxis.tickPlacement:t.xaxis&&t.xaxis.tickPlacement;return n||o||!h||c==="between"||(i=r.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(e,t){var i=new re;(e.yaxis===void 0||!e.yaxis||Array.isArray(e.yaxis)&&e.yaxis.length===0)&&(e.yaxis={}),e.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(e.yaxis=P.extend(e.yaxis,window.Apex.yaxis)),e.yaxis.constructor!==Array?e.yaxis=[P.extend(i.yAxis,e.yaxis)]:e.yaxis=P.extendArray(e.yaxis,i.yAxis);var a=!1;e.yaxis.forEach(function(r){r.logarithmic&&(a=!0)});var s=e.series;return t&&!s&&(s=t.config.series),a&&s.length!==e.yaxis.length&&s.length&&(e.yaxis=s.map(function(r,n){if(r.name||(s[n].name="series-".concat(n+1)),e.yaxis[n])return e.yaxis[n].seriesName=s[n].name,e.yaxis[n];var o=P.extend(i.yAxis,e.yaxis[0]);return o.show=!1,o})),a&&s.length>1&&s.length!==e.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes"),e}},{key:"extendAnnotations",value:function(e){return e.annotations===void 0&&(e.annotations={},e.annotations.yaxis=[],e.annotations.xaxis=[],e.annotations.points=[]),e=this.extendYAxisAnnotations(e),e=this.extendXAxisAnnotations(e),e=this.extendPointAnnotations(e)}},{key:"extendYAxisAnnotations",value:function(e){var t=new re;return e.annotations.yaxis=P.extendArray(e.annotations.yaxis!==void 0?e.annotations.yaxis:[],t.yAxisAnnotation),e}},{key:"extendXAxisAnnotations",value:function(e){var t=new re;return e.annotations.xaxis=P.extendArray(e.annotations.xaxis!==void 0?e.annotations.xaxis:[],t.xAxisAnnotation),e}},{key:"extendPointAnnotations",value:function(e){var t=new re;return e.annotations.points=P.extendArray(e.annotations.points!==void 0?e.annotations.points:[],t.pointAnnotation),e}},{key:"checkForDarkTheme",value:function(e){e.theme&&e.theme.mode==="dark"&&(e.tooltip||(e.tooltip={}),e.tooltip.theme!=="light"&&(e.tooltip.theme="dark"),e.chart.foreColor||(e.chart.foreColor="#f6f7f8"),e.chart.background||(e.chart.background="#424242"),e.theme.palette||(e.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(e){var t=e;if(t.tooltip.shared&&t.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if(t.chart.type==="bar"&&t.plotOptions.bar.horizontal){if(t.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");t.yaxis[0].reversed&&(t.yaxis[0].opposite=!0),t.xaxis.tooltip.enabled=!1,t.yaxis[0].tooltip.enabled=!1,t.chart.zoom.enabled=!1}return t.chart.type!=="bar"&&t.chart.type!=="rangeBar"||t.tooltip.shared&&t.xaxis.crosshairs.width==="barWidth"&&t.series.length>1&&(t.xaxis.crosshairs.width="tickWidth"),t.chart.type!=="candlestick"&&t.chart.type!=="boxPlot"||t.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(t.chart.type," chart is not supported.")),t.yaxis[0].reversed=!1),t}}]),f}(),Tt=function(){function f(){Y(this,f)}return F(f,[{key:"initGlobalVars",value:function(e){e.series=[],e.seriesCandleO=[],e.seriesCandleH=[],e.seriesCandleM=[],e.seriesCandleL=[],e.seriesCandleC=[],e.seriesRangeStart=[],e.seriesRangeEnd=[],e.seriesRange=[],e.seriesPercent=[],e.seriesGoals=[],e.seriesX=[],e.seriesZ=[],e.seriesNames=[],e.seriesTotals=[],e.seriesLog=[],e.seriesColors=[],e.stackedSeriesTotals=[],e.seriesXvalues=[],e.seriesYvalues=[],e.labels=[],e.hasXaxisGroups=!1,e.groups=[],e.hasSeriesGroups=!1,e.seriesGroups=[],e.categoryLabels=[],e.timescaleLabels=[],e.noLabelsProvided=!1,e.resizeTimer=null,e.selectionResizeTimer=null,e.delayedElements=[],e.pointsArray=[],e.dataLabelsRects=[],e.isXNumeric=!1,e.skipLastTimelinelabel=!1,e.skipFirstTimelinelabel=!1,e.isDataXYZ=!1,e.isMultiLineX=!1,e.isMultipleYAxis=!1,e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE,e.minYArr=[],e.maxYArr=[],e.maxX=-Number.MAX_VALUE,e.minX=Number.MAX_VALUE,e.initialMaxX=-Number.MAX_VALUE,e.initialMinX=Number.MAX_VALUE,e.maxDate=0,e.minDate=Number.MAX_VALUE,e.minZ=Number.MAX_VALUE,e.maxZ=-Number.MAX_VALUE,e.minXDiff=Number.MAX_VALUE,e.yAxisScale=[],e.xAxisScale=null,e.xAxisTicksPositions=[],e.yLabelsCoords=[],e.yTitleCoords=[],e.barPadForNumericAxis=0,e.padHorizontal=0,e.xRange=0,e.yRange=[],e.zRange=0,e.dataPoints=0,e.xTickAmount=0}},{key:"globalVars",value:function(e){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:e.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:e.chart.toolbar.autoSelected==="zoom"&&e.chart.toolbar.tools.zoom&&e.chart.zoom.enabled,panEnabled:e.chart.toolbar.autoSelected==="pan"&&e.chart.toolbar.tools.pan,selectionEnabled:e.chart.toolbar.autoSelected==="selection"&&e.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null}}},{key:"init",value:function(e){var t=this.globalVars(e);return this.initGlobalVars(t),t.initialConfig=P.extend({},e),t.initialSeries=P.clone(e.series),t.lastXAxis=P.clone(t.initialConfig.xaxis),t.lastYAxis=P.clone(t.initialConfig.yaxis),t}}]),f}(),Ti=function(){function f(e){Y(this,f),this.opts=e}return F(f,[{key:"init",value:function(){var e=new ye(this.opts).init({responsiveOverride:!1});return{config:e,globals:new Tt().init(e)}}}]),f}(),ee=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return F(f,[{key:"clippedImgArea",value:function(e){var t=this.w,i=t.config,a=parseInt(t.globals.gridWidth,10),s=parseInt(t.globals.gridHeight,10),r=a>s?a:s,n=e.image,o=0,h=0;e.width===void 0&&e.height===void 0?i.fill.image.width!==void 0&&i.fill.image.height!==void 0?(o=i.fill.image.width+1,h=i.fill.image.height):(o=r+1,h=r):(o=e.width,h=e.height);var c=document.createElementNS(t.globals.SVGNS,"pattern");M.setAttrs(c,{id:e.patternID,patternUnits:e.patternUnits?e.patternUnits:"userSpaceOnUse",width:o+"px",height:h+"px"});var d=document.createElementNS(t.globals.SVGNS,"image");c.appendChild(d),d.setAttributeNS(window.SVG.xlink,"href",n),M.setAttrs(d,{x:0,y:0,preserveAspectRatio:"none",width:o+"px",height:h+"px"}),d.style.opacity=e.opacity,t.globals.dom.elDefs.node.appendChild(c)}},{key:"getSeriesIndex",value:function(e){var t=this.w,i=t.config.chart.type;return(i==="bar"||i==="rangeBar")&&t.config.plotOptions.bar.distributed||i==="heatmap"||i==="treemap"?this.seriesIndex=e.seriesNumber:this.seriesIndex=e.seriesNumber%t.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(e){var t=this.w;this.opts=e;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(e);var n=this.getFillColors()[this.seriesIndex];t.globals.seriesColors[this.seriesIndex]!==void 0&&(n=t.globals.seriesColors[this.seriesIndex]),typeof n=="function"&&(n=n({seriesIndex:this.seriesIndex,dataPointIndex:e.dataPointIndex,value:e.value,w:t}));var o=e.fillType?e.fillType:this.getFillType(this.seriesIndex),h=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;e.color&&(n=e.color),n||(n="#fff",console.warn("undefined color - ApexCharts"));var c=n;if(n.indexOf("rgb")===-1?n.length<9&&(c=P.hexToRgba(n,h)):n.indexOf("rgba")>-1&&(h=P.getOpacityFromRGBA(n)),e.opacity&&(h=e.opacity),o==="pattern"&&(a=this.handlePatternFill({fillConfig:e.fillConfig,patternFill:a,fillColor:n,fillOpacity:h,defaultColor:c})),o==="gradient"&&(s=this.handleGradientFill({fillConfig:e.fillConfig,fillColor:n,fillOpacity:h,i:this.seriesIndex})),o==="image"){var d=r.fill.image.src,g=e.patternID?e.patternID:"";this.clippedImgArea({opacity:h,image:Array.isArray(d)?e.seriesNumber-1&&(p=P.getOpacityFromRGBA(g));var x=r.gradient.opacityTo===void 0?i:Array.isArray(r.gradient.opacityTo)?r.gradient.opacityTo[s]:r.gradient.opacityTo;if(r.gradient.gradientToColors===void 0||r.gradient.gradientToColors.length===0)n=r.gradient.shade==="dark"?c.shadeColor(-1*parseFloat(r.gradient.shadeIntensity),t.indexOf("rgb")>-1?P.rgb2hex(t):t):c.shadeColor(parseFloat(r.gradient.shadeIntensity),t.indexOf("rgb")>-1?P.rgb2hex(t):t);else if(r.gradient.gradientToColors[o.seriesNumber]){var m=r.gradient.gradientToColors[o.seriesNumber];n=m,m.indexOf("rgba")>-1&&(x=P.getOpacityFromRGBA(m))}else n=t;if(r.gradient.gradientFrom&&(g=r.gradient.gradientFrom),r.gradient.gradientTo&&(n=r.gradient.gradientTo),r.gradient.inverseColors){var v=g;g=n,n=v}return g.indexOf("rgb")>-1&&(g=P.rgb2hex(g)),n.indexOf("rgb")>-1&&(n=P.rgb2hex(n)),h.drawGradient(d,g,n,p,x,o.size,r.gradient.stops,r.gradient.colorStops,s)}}]),f}(),Ce=function(){function f(e,t){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"setGlobalMarkerSize",value:function(){var e=this.w;if(e.globals.markers.size=Array.isArray(e.config.markers.size)?e.config.markers.size:[e.config.markers.size],e.globals.markers.size.length>0){if(e.globals.markers.size.length4&&arguments[4]!==void 0&&arguments[4],n=this.w,o=t,h=e,c=null,d=new M(this.ctx),g=n.config.markers.discrete&&n.config.markers.discrete.length;if((n.globals.markers.size[t]>0||r||g)&&(c=d.group({class:r||g?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(n.globals.cuid,")")),Array.isArray(h.x))for(var p=0;p0:n.config.markers.size>0)||r||g){P.isNumber(h.y[p])?m+=" w".concat(P.randomId()):m="apexcharts-nullpoint";var v=this.getMarkerConfig({cssClass:m,seriesIndex:t,dataPointIndex:x});n.config.series[o].data[x]&&(n.config.series[o].data[x].fillColor&&(v.pointFillColor=n.config.series[o].data[x].fillColor),n.config.series[o].data[x].strokeColor&&(v.pointStrokeColor=n.config.series[o].data[x].strokeColor)),a&&(v.pSize=a),(h.x[p]<0||h.x[p]>n.globals.gridWidth||h.y[p]<-n.globals.markers.largestSize||h.y[p]>n.globals.gridHeight+n.globals.markers.largestSize)&&(v.pSize=0),(s=d.drawMarker(h.x[p],h.y[p],v)).attr("rel",x),s.attr("j",x),s.attr("index",t),s.node.setAttribute("default-marker-size",v.pSize),new q(this.ctx).setSelectionFilter(s,t,x),this.addEvents(s),c&&c.add(s)}else n.globals.pointsArray[t]===void 0&&(n.globals.pointsArray[t]=[]),n.globals.pointsArray[t].push([h.x[p],h.y[p]])}return c}},{key:"getMarkerConfig",value:function(e){var t=e.cssClass,i=e.seriesIndex,a=e.dataPointIndex,s=a===void 0?null:a,r=e.finishRadius,n=r===void 0?null:r,o=this.w,h=this.getMarkerStyle(i),c=o.globals.markers.size[i],d=o.config.markers;return s!==null&&d.discrete.length&&d.discrete.map(function(g){g.seriesIndex===i&&g.dataPointIndex===s&&(h.pointStrokeColor=g.strokeColor,h.pointFillColor=g.fillColor,c=g.size,h.pointShape=g.shape)}),{pSize:n===null?c:n,pRadius:d.radius,width:Array.isArray(d.width)?d.width[i]:d.width,height:Array.isArray(d.height)?d.height[i]:d.height,pointStrokeWidth:Array.isArray(d.strokeWidth)?d.strokeWidth[i]:d.strokeWidth,pointStrokeColor:h.pointStrokeColor,pointFillColor:h.pointFillColor,shape:h.pointShape||(Array.isArray(d.shape)?d.shape[i]:d.shape),class:t,pointStrokeOpacity:Array.isArray(d.strokeOpacity)?d.strokeOpacity[i]:d.strokeOpacity,pointStrokeDashArray:Array.isArray(d.strokeDashArray)?d.strokeDashArray[i]:d.strokeDashArray,pointFillOpacity:Array.isArray(d.fillOpacity)?d.fillOpacity[i]:d.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(e){var t=this.w,i=new M(this.ctx);e.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,e)),e.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,e)),e.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,e)),e.node.addEventListener("click",t.config.markers.onClick),e.node.addEventListener("dblclick",t.config.markers.onDblClick),e.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,e),{passive:!0})}},{key:"getMarkerStyle",value:function(e){var t=this.w,i=t.globals.markers.colors,a=t.config.markers.strokeColor||t.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[e]:a,pointFillColor:Array.isArray(i)?i[e]:i}}}]),f}(),It=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return F(f,[{key:"draw",value:function(e,t,i){var a=this.w,s=new M(this.ctx),r=i.realIndex,n=i.pointsPos,o=i.zRatio,h=i.elParent,c=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(c.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),Array.isArray(n.x))for(var d=0;dv.maxBubbleRadius&&(m=v.maxBubbleRadius)}a.config.chart.animations.enabled||(x=m);var w=n.x[d],A=n.y[d];if(x=x||0,A!==null&&a.globals.series[r][g]!==void 0||(p=!1),p){var l=this.drawPoint(w,A,x,m,r,g,t);c.add(l)}h.add(c)}}},{key:"drawPoint",value:function(e,t,i,a,s,r,n){var o=this.w,h=s,c=new fe(this.ctx),d=new q(this.ctx),g=new ee(this.ctx),p=new Ce(this.ctx),x=new M(this.ctx),m=p.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:h,dataPointIndex:r,finishRadius:o.config.chart.type==="bubble"||o.globals.comboCharts&&o.config.series[s]&&o.config.series[s].type==="bubble"?a:null});a=m.pSize;var v,w=g.fillPath({seriesNumber:s,dataPointIndex:r,color:m.pointFillColor,patternUnits:"objectBoundingBox",value:o.globals.series[s][n]});if(m.shape==="circle"?v=x.drawCircle(i):m.shape!=="square"&&m.shape!=="rect"||(v=x.drawRect(0,0,m.width-m.pointStrokeWidth/2,m.height-m.pointStrokeWidth/2,m.pRadius)),o.config.series[h].data[r]&&o.config.series[h].data[r].fillColor&&(w=o.config.series[h].data[r].fillColor),v.attr({x:e-m.width/2-m.pointStrokeWidth/2,y:t-m.height/2-m.pointStrokeWidth/2,cx:e,cy:t,fill:w,"fill-opacity":m.pointFillOpacity,stroke:m.pointStrokeColor,r:a,"stroke-width":m.pointStrokeWidth,"stroke-dasharray":m.pointStrokeDashArray,"stroke-opacity":m.pointStrokeOpacity}),o.config.chart.dropShadow.enabled){var A=o.config.chart.dropShadow;d.dropShadow(v,A,s)}if(!this.initialAnim||o.globals.dataChanged||o.globals.resized)o.globals.animationEnded=!0;else{var l=o.config.chart.animations.speed;c.animateMarker(v,0,m.shape==="circle"?a:{width:m.width,height:m.height},l,o.globals.easing,function(){window.setTimeout(function(){c.animationCompleted(v)},100)})}if(o.globals.dataChanged&&m.shape==="circle")if(this.dynamicAnim){var u,b,y,k,S=o.config.chart.animations.dynamicAnimation.speed;(k=o.globals.previousPaths[s]&&o.globals.previousPaths[s][n])!=null&&(u=k.x,b=k.y,y=k.r!==void 0?k.r:a);for(var C=0;Co.globals.gridHeight+g&&(t=o.globals.gridHeight+g/2),o.globals.dataLabelsRects[a]===void 0&&(o.globals.dataLabelsRects[a]=[]),o.globals.dataLabelsRects[a].push({x:e,y:t,width:d,height:g});var p=o.globals.dataLabelsRects[a].length-2,x=o.globals.lastDrawnDataLabelsIndexes[a]!==void 0?o.globals.lastDrawnDataLabelsIndexes[a][o.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(o.globals.dataLabelsRects[a][p]!==void 0){var m=o.globals.dataLabelsRects[a][x];(e>m.x+m.width||t>m.y+m.height||t+gt.globals.gridWidth+v.textRects.width+30)&&(o="");var w=t.globals.dataLabels.style.colors[r];((t.config.chart.type==="bar"||t.config.chart.type==="rangeBar")&&t.config.plotOptions.bar.distributed||t.config.dataLabels.distributed)&&(w=t.globals.dataLabels.style.colors[n]),typeof w=="function"&&(w=w({series:t.globals.series,seriesIndex:r,dataPointIndex:n,w:t})),p&&(w=p);var A=g.offsetX,l=g.offsetY;if(t.config.chart.type!=="bar"&&t.config.chart.type!=="rangeBar"||(A=0,l=0),v.drawnextLabel){var u=i.drawText({width:100,height:parseInt(g.style.fontSize,10),x:a+A,y:s+l,foreColor:w,textAnchor:h||g.textAnchor,text:o,fontSize:c||g.style.fontSize,fontFamily:g.style.fontFamily,fontWeight:g.style.fontWeight||"normal"});if(u.attr({class:"apexcharts-datalabel",cx:a,cy:s}),g.dropShadow.enabled){var b=g.dropShadow;new q(this.ctx).dropShadow(u,b)}d.add(u),t.globals.lastDrawnDataLabelsIndexes[r]===void 0&&(t.globals.lastDrawnDataLabelsIndexes[r]=[]),t.globals.lastDrawnDataLabelsIndexes[r].push(n)}}}},{key:"addBackgroundToDataLabel",value:function(e,t){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,n=t.width,o=t.height,h=new M(this.ctx).drawRect(t.x-s,t.y-r/2,n+2*s,o+r,a.borderRadius,i.config.chart.background==="transparent"?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);return a.dropShadow.enabled&&new q(this.ctx).dropShadow(h,a.dropShadow),h}},{key:"dataLabelsBackground",value:function(){var e=this.w;if(e.config.chart.type!=="bubble")for(var t=e.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&arguments[0]!==void 0)||arguments[0],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],a=this.w,s=P.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,e&&(t&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(e){for(var t=this.w,i=0;i-1&&(e[i].data=[]);return e}},{key:"toggleSeriesOnHover",value:function(e,t){var i=this.w;t||(t=e.target);var a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if(e.type==="mousemove"){var s=parseInt(t.getAttribute("rel"),10)-1,r=null,n=null;i.globals.axisCharts||i.config.chart.type==="radialBar"?i.globals.axisCharts?(r=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),n=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var o=0;o=o.from&&c<=o.to&&s[h].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[n])}else e.type==="mouseout"&&r("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"asc",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1){for(var s=i.config.series.map(function(n,o){return n.data&&n.data.length>0&&i.globals.collapsedSeriesIndices.indexOf(o)===-1&&(!i.globals.comboCharts||t.length===0||t.length&&t.indexOf(i.config.series[o].type)>-1)?o:-1}),r=e==="asc"?0:s.length-1;e==="asc"?r=0;e==="asc"?r++:r--)if(s[r]!==-1){a=s[r];break}}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map(function(e,t){return e.type==="bar"||e.type==="column"?t:-1}).filter(function(e){return e!==-1}):this.w.config.series.map(function(e,t){return t})}},{key:"getPreviousPaths",value:function(){var e=this.w;function t(r,n,o){for(var h=r[n].childNodes,c={type:o,paths:[],realIndex:r[n].getAttribute("data:realIndex")},d=0;d0)for(var a=function(r){for(var n=e.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(e.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(r,"'] rect")),o=[],h=function(d){var g=function(x){return n[d].getAttribute(x)},p={x:parseFloat(g("x")),y:parseFloat(g("y")),width:parseFloat(g("width")),height:parseFloat(g("height"))};o.push({rect:p,color:n[d].getAttribute("color")})},c=0;c0)for(var a=0;a0?t:[]});return e}}]),f}(),zt=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new V(this.ctx)}return F(f,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var e=this.w.config.series.slice(),t=new Q(this.ctx);if(this.activeSeriesIndex=t.getActiveConfigSeriesIndex(),e[this.activeSeriesIndex].data!==void 0&&e[this.activeSeriesIndex].data.length>0&&e[this.activeSeriesIndex].data[0]!==null&&e[this.activeSeriesIndex].data[0].x!==void 0&&e[this.activeSeriesIndex].data[0]!==null)return!0}},{key:"isFormat2DArray",value:function(){var e=this.w.config.series.slice(),t=new Q(this.ctx);if(this.activeSeriesIndex=t.getActiveConfigSeriesIndex(),e[this.activeSeriesIndex].data!==void 0&&e[this.activeSeriesIndex].data.length>0&&e[this.activeSeriesIndex].data[0]!==void 0&&e[this.activeSeriesIndex].data[0]!==null&&e[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(e,t){for(var i=this.w.config,a=this.w.globals,s=i.chart.type==="boxPlot"||i.series[t].type==="boxPlot",r=0;r=5?this.twoDSeries.push(P.parseNumber(e[t].data[r][4])):this.twoDSeries.push(P.parseNumber(e[t].data[r][1])),a.dataFormatXNumeric=!0),i.xaxis.type==="datetime"){var n=new Date(e[t].data[r][0]);n=new Date(n).getTime(),this.twoDSeriesX.push(n)}else this.twoDSeriesX.push(e[t].data[r][0]);for(var o=0;o-1&&(r=this.activeSeriesIndex);for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:this.ctx,s=this.w.config,r=this.w.globals,n=new j(a),o=s.labels.length>0?s.labels.slice():s.xaxis.categories.slice();if(r.isRangeBar=s.chart.type==="rangeBar"&&r.isBarHorizontal,r.hasXaxisGroups=s.xaxis.type==="category"&&s.xaxis.group.groups.length>0,r.hasXaxisGroups&&(r.groups=s.xaxis.group.groups),r.hasSeriesGroups=(t=e[0])===null||t===void 0?void 0:t.group,r.hasSeriesGroups){var h=[],c=J(new Set(e.map(function(x){return x.group})));e.forEach(function(x,m){var v=c.indexOf(x.group);h[v]||(h[v]=[]),h[v].push(x.name)}),r.seriesGroups=h}for(var d=function(){for(var x=0;x0&&(this.twoDSeriesX=o,r.seriesX.push(this.twoDSeriesX))),r.labels.push(this.twoDSeriesX);var p=e[g].data.map(function(x){return P.parseNumber(x)});r.series.push(p)}r.seriesZ.push(this.threeDSeries),e[g].name!==void 0?r.seriesNames.push(e[g].name):r.seriesNames.push("series-"+parseInt(g+1,10)),e[g].color!==void 0?r.seriesColors.push(e[g].color):r.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(e){var t=this.w.globals,i=this.w.config;t.series=e.slice(),t.seriesNames=i.labels.slice();for(var a=0;a0?i.labels=t.xaxis.categories:t.labels.length>0?i.labels=t.labels.slice():this.fallbackToCategory?(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map(function(a){a.forEach(function(s){i.labels.indexOf(s.x)<0&&s.x&&i.labels.push(s.x)})}),i.labels=Array.from(new Set(i.labels.map(JSON.stringify)),JSON.parse)),t.xaxis.convertedCatToNumeric&&(new ve(t).convertCatToNumericXaxis(t,this.ctx,i.seriesX[0]),this._generateExternalLabels(e))):this._generateExternalLabels(e)}},{key:"_generateExternalLabels",value:function(e){var t=this.w.globals,i=this.w.config,a=[];if(t.axisCharts){if(t.series.length>0)if(this.isFormatXY())for(var s=i.series.map(function(d,g){return d.data.filter(function(p,x,m){return m.findIndex(function(v){return v.x===p.x})===x})}),r=s.reduce(function(d,g,p,x){return x[d].length>g.length?d:p},0),n=0;n4&&arguments[4]!==void 0?arguments[4]:[],r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:"12px",n=!(arguments.length>6&&arguments[6]!==void 0)||arguments[6],o=this.w,h=e[a]===void 0?"":e[a],c=h,d=o.globals.xLabelFormatter,g=o.config.xaxis.labels.formatter,p=!1,x=new Se(this.ctx),m=h;n&&(c=x.xLabelFormat(d,h,m,{i:a,dateFormatter:new j(this.ctx).formatDate,w:o}),g!==void 0&&(c=g(h,e[a],{i:a,dateFormatter:new j(this.ctx).formatDate,w:o})));var v,w;t.length>0?(v=t[a].unit,w=null,t.forEach(function(b){b.unit==="month"?w="year":b.unit==="day"?w="month":b.unit==="hour"?w="day":b.unit==="minute"&&(w="hour")}),p=w===v,i=t[a].position,c=t[a].value):o.config.xaxis.type==="datetime"&&g===void 0&&(c=""),c===void 0&&(c=""),c=Array.isArray(c)?c:c.toString();var A=new M(this.ctx),l={};l=o.globals.rotateXLabels&&n?A.getTextRects(c,parseInt(r,10),null,"rotate(".concat(o.config.xaxis.labels.rotate," 0 0)"),!1):A.getTextRects(c,parseInt(r,10));var u=!o.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(c)&&(c.indexOf("NaN")===0||c.toLowerCase().indexOf("invalid")===0||c.toLowerCase().indexOf("infinity")>=0||s.indexOf(c)>=0&&u)&&(c=""),{x:i,text:c,textRect:l,isBold:p}}},{key:"checkLabelBasedOnTickamount",value:function(e,t,i){var a=this.w,s=a.config.xaxis.tickAmount;return s==="dataPoints"&&(s=Math.round(a.globals.gridWidth/120)),s>i||e%Math.round(i/(s+1))==0||(t.text=""),t}},{key:"checkForOverflowingLabels",value:function(e,t,i,a,s){var r=this.w;if(e===0&&r.globals.skipFirstTimelinelabel&&(t.text=""),e===i-1&&r.globals.skipLastTimelinelabel&&(t.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var n=s[s.length-1];t.x0){o.config.yaxis[s].opposite===!0&&(e+=a.width);for(var d=t;d>=0;d--){var g=c+t/10+o.config.yaxis[s].labels.offsetY-1;o.globals.isBarHorizontal&&(g=r*d),o.config.chart.type==="heatmap"&&(g+=r/2);var p=h.drawLine(e+i.offsetX-a.width+a.offsetX,g+a.offsetY,e+i.offsetX+a.offsetX,g+a.offsetY,a.color);n.add(p),c+=r}}}}]),f}(),Xe=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"scaleSvgNode",value:function(e,t){var i=parseFloat(e.getAttributeNS(null,"width")),a=parseFloat(e.getAttributeNS(null,"height"));e.setAttributeNS(null,"width",i*t),e.setAttributeNS(null,"height",a*t),e.setAttributeNS(null,"viewBox","0 0 "+i+" "+a)}},{key:"fixSvgStringForIe11",value:function(e){if(!P.isIE11())return e.replace(/ /g," ");var t=0,i=e.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g,function(a){return++t===2?'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"':a});return i=(i=i.replace(/xmlns:NS\d+=""/g,"")).replace(/NS\d+:(\w+:\w+=")/g,"$1")}},{key:"getSvgString",value:function(e){e==null&&(e=1);var t=this.w.globals.dom.Paper.svg();if(e!==1){var i=this.w.globals.dom.Paper.node.cloneNode(!0);this.scaleSvgNode(i,e),t=new XMLSerializer().serializeToString(i)}return this.fixSvgStringForIe11(t)}},{key:"cleanup",value:function(){var e=this.w,t=e.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"),i=e.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"),a=e.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");Array.prototype.forEach.call(a,function(s){s.setAttribute("width",0)}),t&&t[0]&&(t[0].setAttribute("x",-500),t[0].setAttribute("x1",-500),t[0].setAttribute("x2",-500)),i&&i[0]&&(i[0].setAttribute("y",-100),i[0].setAttribute("y1",-100),i[0].setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var e=this.getSvgString(),t=new Blob([e],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(t)}},{key:"dataURI",value:function(e){var t=this;return new Promise(function(i){var a=t.w,s=e?e.scale||e.width/a.globals.svgWidth:1;t.cleanup();var r=document.createElement("canvas");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var n=a.config.chart.background==="transparent"?"#fff":a.config.chart.background,o=r.getContext("2d");o.fillStyle=n,o.fillRect(0,0,r.width*s,r.height*s);var h=t.getSvgString(s);if(window.canvg&&P.isIE11()){var c=window.canvg.Canvg.fromString(o,h,{ignoreClear:!0,ignoreDimensions:!0});c.start();var d=r.msToBlob();c.stop(),i({blob:d})}else{var g="data:image/svg+xml,"+encodeURIComponent(h),p=new Image;p.crossOrigin="anonymous",p.onload=function(){if(o.drawImage(p,0,0),r.msToBlob){var x=r.msToBlob();i({blob:x})}else{var m=r.toDataURL("image/png");i({imgURI:m})}},p.src=g}})}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),this.w.config.chart.toolbar.export.svg.filename,".svg")}},{key:"exportToPng",value:function(){var e=this;this.dataURI().then(function(t){var i=t.imgURI,a=t.blob;a?navigator.msSaveOrOpenBlob(a,e.w.globals.chartID+".png"):e.triggerDownload(i,e.w.config.chart.toolbar.export.png.filename,".png")})}},{key:"exportToCSV",value:function(e){var t=this,i=e.series,a=e.fileName,s=e.columnDelimiter,r=s===void 0?",":s,n=e.lineDelimiter,o=n===void 0?` +`:n,h=this.w;i||(i=h.config.series);var c,d,g=[],p=[],x="",m=h.globals.series.map(function(y,k){return h.globals.collapsedSeriesIndices.indexOf(k)===-1?y:[]}),v=function(y){return h.config.xaxis.type==="datetime"&&String(y).length>=10},w=Math.max.apply(Math,J(i.map(function(y){return y.data?y.data.length:0}))),A=new zt(this.ctx),l=new ne(this.ctx),u=function(y){var k="";if(h.globals.axisCharts){if(h.config.xaxis.type==="category"||h.config.xaxis.convertedCatToNumeric)if(h.globals.isBarHorizontal){var S=h.globals.yLabelFormatters[0],C=new Q(t.ctx).getActiveConfigSeriesIndex();k=S(h.globals.labels[y],{seriesIndex:C,dataPointIndex:y,w:h})}else k=l.getLabel(h.globals.labels,h.globals.timescaleLabels,0,y).text;h.config.xaxis.type==="datetime"&&(h.config.xaxis.categories.length?k=h.config.xaxis.categories[y]:h.config.labels.length&&(k=h.config.labels[y]))}else k=h.config.labels[y];return Array.isArray(k)&&(k=k.join(" ")),P.isNumber(k)?k:k.split(r).join("")},b=function(y,k){if(g.length&&k===0&&p.push(g.join(r)),y.data){y.data=y.data.length&&y.data||J(Array(w)).map(function(){return""});for(var S=0;S0&&!i.globals.isBarHorizontal&&(this.xaxisLabels=i.globals.timescaleLabels.slice()),i.config.xaxis.overwriteCategories&&(this.xaxisLabels=i.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],i.config.xaxis.position==="top"?this.offY=0:this.offY=i.globals.gridHeight+1,this.offY=this.offY+i.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal=i.config.chart.type==="bar"&&i.config.plotOptions.bar.horizontal,this.xaxisFontSize=i.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=i.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=i.config.xaxis.labels.style.colors,this.xaxisBorderWidth=i.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=i.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=i.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=i.config.xaxis.axisBorder.height,this.yaxis=i.config.yaxis[0]}return F(f,[{key:"drawXaxis",value:function(){var e=this.w,t=new M(this.ctx),i=t.group({class:"apexcharts-xaxis",transform:"translate(".concat(e.config.xaxis.offsetX,", ").concat(e.config.xaxis.offsetY,")")}),a=t.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});i.add(a);for(var s=[],r=0;r6&&arguments[6]!==void 0?arguments[6]:{},c=[],d=[],g=this.w,p=h.xaxisFontSize||this.xaxisFontSize,x=h.xaxisFontFamily||this.xaxisFontFamily,m=h.xaxisForeColors||this.xaxisForeColors,v=h.fontWeight||g.config.xaxis.labels.style.fontWeight,w=h.cssClass||g.config.xaxis.labels.style.cssClass,A=g.globals.padHorizontal,l=a.length,u=g.config.xaxis.type==="category"?g.globals.dataPoints:l;if(u===0&&l>u&&(u=l),s){var b=u>1?u-1:u;n=g.globals.gridWidth/Math.min(b,l-1),A=A+r(0,n)/2+g.config.xaxis.labels.offsetX}else n=g.globals.gridWidth/u,A=A+r(0,n)+g.config.xaxis.labels.offsetX;for(var y=function(S){var C=A-r(S,n)/2+g.config.xaxis.labels.offsetX;S===0&&l===1&&n/2===A&&u===1&&(C=g.globals.gridWidth/2);var L=o.axesUtils.getLabel(a,g.globals.timescaleLabels,C,S,c,p,e),T=28;if(g.globals.rotateXLabels&&e&&(T=22),g.config.xaxis.title.text&&g.config.xaxis.position==="top"&&(T+=parseFloat(g.config.xaxis.title.style.fontSize)+2),e||(T=T+parseFloat(p)+(g.globals.xAxisLabelsHeight-g.globals.xAxisGroupLabelsHeight)+(g.globals.rotateXLabels?10:0)),L=g.config.xaxis.tickAmount!==void 0&&g.config.xaxis.tickAmount!=="dataPoints"&&g.config.xaxis.type!=="datetime"?o.axesUtils.checkLabelBasedOnTickamount(S,L,l):o.axesUtils.checkForOverflowingLabels(S,L,l,c,d),g.config.xaxis.labels.show){var z=t.drawText({x:L.x,y:o.offY+g.config.xaxis.labels.offsetY+T-(g.config.xaxis.position==="top"?g.globals.xAxisHeight+g.config.xaxis.axisTicks.height-2:0),text:L.text,textAnchor:"middle",fontWeight:L.isBold?600:v,fontSize:p,fontFamily:x,foreColor:Array.isArray(m)?e&&g.config.xaxis.convertedCatToNumeric?m[g.globals.minX+S-1]:m[S]:m,isPlainText:!1,cssClass:(e?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+w});if(i.add(z),z.on("click",function(X){if(typeof g.config.chart.events.xAxisLabelClick=="function"){var R=Object.assign({},g,{labelIndex:S});g.config.chart.events.xAxisLabelClick(X,o.ctx,R)}}),e){var I=document.createElementNS(g.globals.SVGNS,"title");I.textContent=Array.isArray(L.text)?L.text.join(" "):L.text,z.node.appendChild(I),L.text!==""&&(c.push(L.text),d.push(L))}}Sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(t=t+r+a.config.xaxis.axisTicks.height,a.config.xaxis.position==="top"&&(t=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var n=new M(this.ctx).drawLine(e+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,t+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(n),n.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var e=this.w,t=[],i=this.xaxisLabels.length,a=e.globals.padHorizontal;if(e.globals.timescaleLabels.length>0)for(var s=0;s0){var c=s[s.length-1].getBBox(),d=s[0].getBBox();c.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),d.x+d.width>e.globals.gridWidth&&!e.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var g=0;g0&&(this.xaxisLabels=t.globals.timescaleLabels.slice())}return F(f,[{key:"drawGridArea",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=this.w,i=new M(this.ctx);e===null&&(e=i.group({class:"apexcharts-grid"}));var a=i.drawLine(t.globals.padHorizontal,1,t.globals.padHorizontal,t.globals.gridHeight,"transparent"),s=i.drawLine(t.globals.padHorizontal,t.globals.gridHeight,t.globals.gridWidth,t.globals.gridHeight,"transparent");return e.add(s),e.add(a),e}},{key:"drawGrid",value:function(){var e=null;return this.w.globals.axisCharts&&(e=this.renderGrid(),this.drawGridArea(e.el)),e}},{key:"createGridMask",value:function(){var e=this.w,t=e.globals,i=new M(this.ctx),a=Array.isArray(e.config.stroke.width)?0:e.config.stroke.width;if(Array.isArray(e.config.stroke.width)){var s=0;e.config.stroke.width.forEach(function(d){s=Math.max(s,d)}),a=s}t.dom.elGridRectMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(t.cuid)),t.dom.elGridRectMarkerMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(t.cuid)),t.dom.elForecastMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elForecastMask.setAttribute("id","forecastMask".concat(t.cuid)),t.dom.elNonForecastMask=document.createElementNS(t.SVGNS,"clipPath"),t.dom.elNonForecastMask.setAttribute("id","nonForecastMask".concat(t.cuid));var r=e.config.chart.type,n=0,o=0;(r==="bar"||r==="rangeBar"||r==="candlestick"||r==="boxPlot"||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&(n=e.config.grid.padding.left,o=e.config.grid.padding.right,t.barPadForNumericAxis>n&&(n=t.barPadForNumericAxis,o=t.barPadForNumericAxis)),t.dom.elGridRect=i.drawRect(-a-n-2,2*-a-2,t.gridWidth+a+o+n+4,t.gridHeight+4*a+4,0,"#fff");var h=e.globals.markers.largestSize+1;t.dom.elGridRectMarker=i.drawRect(2*-h,2*-h,t.gridWidth+4*h,t.gridHeight+4*h,0,"#fff"),t.dom.elGridRectMask.appendChild(t.dom.elGridRect.node),t.dom.elGridRectMarkerMask.appendChild(t.dom.elGridRectMarker.node);var c=t.dom.baseEl.querySelector("defs");c.appendChild(t.dom.elGridRectMask),c.appendChild(t.dom.elForecastMask),c.appendChild(t.dom.elNonForecastMask),c.appendChild(t.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(e){var t=e.i,i=e.x1,a=e.y1,s=e.x2,r=e.y2,n=e.xCount,o=e.parent,h=this.w;if(!(t===0&&h.globals.skipFirstTimelinelabel||t===n-1&&h.globals.skipLastTimelinelabel&&!h.config.xaxis.labels.formatter||h.config.chart.type==="radar")){h.config.grid.xaxis.lines.show&&this._drawGridLine({i:t,x1:i,y1:a,x2:s,y2:r,xCount:n,parent:o});var c=0;if(h.globals.hasXaxisGroups&&h.config.xaxis.tickPlacement==="between"){var d=h.globals.groups;if(d){for(var g=0,p=0;g2));s++);if(!e.globals.isBarHorizontal||this.isRangeBar){var r,n,o;i=this.xaxisLabels.length,this.isRangeBar&&(i--,a=e.globals.labels.length,e.config.xaxis.tickAmount&&e.config.xaxis.labels.formatter&&(i=e.config.xaxis.tickAmount),((r=e.globals.yAxisScale)===null||r===void 0||(n=r[0])===null||n===void 0||(o=n.result)===null||o===void 0?void 0:o.length)>0&&e.config.xaxis.type!=="datetime"&&(i=e.globals.yAxisScale[0].result.length-1)),this._drawXYLines({xCount:i,tickAmount:a})}else i=a,a=e.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a});return this.drawGridBands(i,a),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:e.globals.gridWidth/i}}},{key:"drawGridBands",value:function(e,t){var i=this.w;if(i.config.grid.row.colors!==void 0&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/t,r=i.globals.gridWidth,n=0,o=0;n=i.config.grid.row.colors.length&&(o=0),this._drawGridBandRect({c:o,x1:0,y1:a,x2:r,y2:s,type:"row"}),a+=i.globals.gridHeight/t;if(i.config.grid.column.colors!==void 0&&i.config.grid.column.colors.length>0)for(var h=i.globals.isBarHorizontal||i.config.xaxis.tickPlacement!=="on"||i.config.xaxis.type!=="category"&&!i.config.xaxis.convertedCatToNumeric?e:e-1,c=i.globals.padHorizontal,d=i.globals.padHorizontal+i.globals.gridWidth/h,g=i.globals.gridHeight,p=0,x=0;p=i.config.grid.column.colors.length&&(x=0),this._drawGridBandRect({c:x,x1:c,y1:0,x2:d,y2:g,type:"column"}),c+=i.globals.gridWidth/h}}]),f}(),ge=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"niceScale",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:5,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=arguments.length>4?arguments[4]:void 0,r=this.w,n=Math.abs(t-e);if((i=this._adjustTicksForSmallRange(i,a,n))==="dataPoints"&&(i=r.globals.dataPoints-1),e===Number.MIN_VALUE&&t===0||!P.isNumber(e)&&!P.isNumber(t)||e===Number.MIN_VALUE&&t===-Number.MAX_VALUE)return e=0,t=i,this.linearScale(e,t,i,a,r.config.yaxis[a].stepSize);e>t?(console.warn("axis.min cannot be greater than axis.max"),t=e+.1):e===t&&(e=e===0?0:e-.5,t=t===0?2:t+.5);var o=[];n<1&&s&&(r.config.chart.type==="candlestick"||r.config.series[a].type==="candlestick"||r.config.chart.type==="boxPlot"||r.config.series[a].type==="boxPlot"||r.globals.isRangeData)&&(t*=1.01);var h=i+1;h<2?h=2:h>2&&(h-=2);var c=n/h,d=Math.floor(P.log10(c)),g=Math.pow(10,d),p=Math.round(c/g);p<1&&(p=1);var x=p*g;r.config.yaxis[a].stepSize&&(x=r.config.yaxis[a].stepSize),r.globals.isBarHorizontal&&r.config.xaxis.stepSize&&r.config.xaxis.type!=="datetime"&&(x=r.config.xaxis.stepSize);var m=x*Math.floor(e/x),v=x*Math.ceil(t/x),w=m;if(s&&n>2){for(;o.push(P.stripNumber(w,7)),!((w+=x)>v););return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}var A=e;(o=[]).push(P.stripNumber(A,7));for(var l=Math.abs(t-e)/i,u=0;u<=i;u++)A+=l,o.push(A);return o[o.length-2]>=t&&o.pop(),{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"linearScale",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:5,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0,r=Math.abs(t-e);(i=this._adjustTicksForSmallRange(i,a,r))==="dataPoints"&&(i=this.w.globals.dataPoints-1),s||(s=r/i),i===Number.MAX_VALUE&&(i=5,s=1);for(var n=[],o=e;i>=0;)n.push(o),o+=s,i-=1;return{result:n,niceMin:n[0],niceMax:n[n.length-1]}}},{key:"logarithmicScaleNice",value:function(e,t,i){t<=0&&(t=Math.max(e,i)),e<=0&&(e=Math.min(t,i));for(var a=[],s=Math.ceil(Math.log(t)/Math.log(i)+1),r=Math.floor(Math.log(e)/Math.log(i));r5)a.allSeriesCollapsed=!1,a.yAxisScale[e]=this.logarithmicScale(t,i,r.logBase),a.yAxisScale[e]=r.forceNiceScale?this.logarithmicScaleNice(t,i,r.logBase):this.logarithmicScale(t,i,r.logBase);else if(i!==-Number.MAX_VALUE&&P.isNumber(i))if(a.allSeriesCollapsed=!1,r.min===void 0&&r.max===void 0||r.forceNiceScale){var o=s.yaxis[e].max===void 0&&s.yaxis[e].min===void 0||s.yaxis[e].forceNiceScale;a.yAxisScale[e]=this.niceScale(t,i,r.tickAmount?r.tickAmount:n<5&&n>1?n+1:5,e,o)}else a.yAxisScale[e]=this.linearScale(t,i,r.tickAmount,e,s.yaxis[e].stepSize);else a.yAxisScale[e]=this.linearScale(0,5,5,e,s.yaxis[e].stepSize)}},{key:"setXScale",value:function(e,t){var i=this.w,a=i.globals,s=Math.abs(t-e);return t!==-Number.MAX_VALUE&&P.isNumber(t)?a.xAxisScale=this.linearScale(e,t,i.config.xaxis.tickAmount?i.config.xaxis.tickAmount:s<5&&s>1?s+1:5,0,i.config.xaxis.stepSize):a.xAxisScale=this.linearScale(0,5,5),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var e=this,t=this.w.globals,i=this.w.config,a=t.minYArr.concat([]),s=t.maxYArr.concat([]),r=[];i.yaxis.forEach(function(n,o){var h=o;i.series.forEach(function(g,p){g.name===n.seriesName&&(h=p,o!==p?r.push({index:p,similarIndex:o,alreadyExists:!0}):r.push({index:p}))});var c=a[h],d=s[h];e.setYScaleForIndex(o,c,d)}),this.sameScaleInMultipleAxes(a,s,r)}},{key:"sameScaleInMultipleAxes",value:function(e,t,i){var a=this,s=this.w.config,r=this.w.globals,n=[];i.forEach(function(m){m.alreadyExists&&(n[m.index]===void 0&&(n[m.index]=[]),n[m.index].push(m.index),n[m.index].push(m.similarIndex))}),r.yAxisSameScaleIndices=n,n.forEach(function(m,v){n.forEach(function(w,A){var l,u;v!==A&&(l=m,u=w,l.filter(function(b){return u.indexOf(b)!==-1})).length>0&&(n[v]=n[v].concat(n[A]))})});var o=n.map(function(m){return m.filter(function(v,w){return m.indexOf(v)===w})}).map(function(m){return m.sort()});n=n.filter(function(m){return!!m});var h=o.slice(),c=h.map(function(m){return JSON.stringify(m)});h=h.filter(function(m,v){return c.indexOf(JSON.stringify(m))===v});var d=[],g=[];e.forEach(function(m,v){h.forEach(function(w,A){w.indexOf(v)>-1&&(d[A]===void 0&&(d[A]=[],g[A]=[]),d[A].push({key:v,value:m}),g[A].push({key:v,value:t[v]}))})});var p=Array.apply(null,Array(h.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),x=Array.apply(null,Array(h.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);d.forEach(function(m,v){m.forEach(function(w,A){p[v]=Math.min(w.value,p[v])})}),g.forEach(function(m,v){m.forEach(function(w,A){x[v]=Math.max(w.value,x[v])})}),e.forEach(function(m,v){g.forEach(function(w,A){var l=p[A],u=x[A];s.chart.stacked&&(u=0,w.forEach(function(b,y){b.value!==-Number.MAX_VALUE&&(u+=b.value),l!==Number.MIN_VALUE&&(l+=d[A][y].value)})),w.forEach(function(b,y){w[y].key===v&&(s.yaxis[v].min!==void 0&&(l=typeof s.yaxis[v].min=="function"?s.yaxis[v].min(r.minY):s.yaxis[v].min),s.yaxis[v].max!==void 0&&(u=typeof s.yaxis[v].max=="function"?s.yaxis[v].max(r.maxY):s.yaxis[v].max),a.setYScaleForIndex(v,l,u))})})})}},{key:"autoScaleY",value:function(e,t,i){e||(e=this);var a=e.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis not supported in a multi-yaxis chart."),t;var s=a.globals.seriesX[0],r=a.config.chart.stacked;return t.forEach(function(n,o){for(var h=0,c=0;c=i.xaxis.min){h=c;break}var d,g,p=a.globals.minYArr[o],x=a.globals.maxYArr[o],m=a.globals.stackedSeriesTotals;a.globals.series.forEach(function(v,w){var A=v[h];r?(A=m[h],d=g=A,m.forEach(function(l,u){s[u]<=i.xaxis.max&&s[u]>=i.xaxis.min&&(l>g&&l!==null&&(g=l),v[u]=i.xaxis.min){var b=l,y=l;a.globals.series.forEach(function(k,S){l!==null&&(b=Math.min(k[u],b),y=Math.max(k[u],y))}),y>g&&y!==null&&(g=y),bp&&(d=p),t.length>1?(t[w].min=n.min===void 0?d:n.min,t[w].max=n.max===void 0?g:n.max):(t[0].min=n.min===void 0?d:n.min,t[0].max=n.max===void 0?g:n.max)})}),t}}]),f}(),et=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.scales=new ge(e)}return F(f,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=this.w.config,r=this.w.globals,n=-Number.MAX_VALUE,o=Number.MIN_VALUE;a===null&&(a=e+1);var h=r.series,c=h,d=h;s.chart.type==="candlestick"?(c=r.seriesCandleL,d=r.seriesCandleH):s.chart.type==="boxPlot"?(c=r.seriesCandleO,d=r.seriesCandleC):r.isRangeData&&(c=r.seriesRangeStart,d=r.seriesRangeEnd);for(var g=e;gc[g][p]&&c[g][p]<0&&(o=c[g][p])):r.hasNullValues=!0}}return s.chart.type==="rangeBar"&&r.seriesRangeStart.length&&r.isBarHorizontal&&(o=t),s.chart.type==="bar"&&(o<0&&n<0&&(n=0),o===Number.MIN_VALUE&&(o=0)),{minY:o,maxY:n,lowestY:t,highestY:i}}},{key:"setYRange",value:function(){var e=this.w.globals,t=this.w.config;e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(e.isMultipleYAxis)for(var a=0;a=0&&i<=10||t.yaxis[0].min!==void 0||t.yaxis[0].max!==void 0)&&(n=0),e.minY=i-5*n/100,i>0&&e.minY<0&&(e.minY=0),e.maxY=e.maxY+5*n/100}return t.yaxis.forEach(function(o,h){o.max!==void 0&&(typeof o.max=="number"?e.maxYArr[h]=o.max:typeof o.max=="function"&&(e.maxYArr[h]=o.max(e.isMultipleYAxis?e.maxYArr[h]:e.maxY)),e.maxY=e.maxYArr[h]),o.min!==void 0&&(typeof o.min=="number"?e.minYArr[h]=o.min:typeof o.min=="function"&&(e.minYArr[h]=o.min(e.isMultipleYAxis?e.minYArr[h]===Number.MIN_VALUE?0:e.minYArr[h]:e.minY)),e.minY=e.minYArr[h])}),e.isBarHorizontal&&["min","max"].forEach(function(o){t.xaxis[o]!==void 0&&typeof t.xaxis[o]=="number"&&(o==="min"?e.minY=t.xaxis[o]:e.maxY=t.xaxis[o])}),e.isMultipleYAxis?(this.scales.setMultipleYScales(),e.minY=i,e.yAxisScale.forEach(function(o,h){e.minYArr[h]=o.niceMin,e.maxYArr[h]=o.niceMax})):(this.scales.setYScaleForIndex(0,e.minY,e.maxY),e.minY=e.yAxisScale[0].niceMin,e.maxY=e.yAxisScale[0].niceMax,e.minYArr[0]=e.yAxisScale[0].niceMin,e.maxYArr[0]=e.yAxisScale[0].niceMax),{minY:e.minY,maxY:e.maxY,minYArr:e.minYArr,maxYArr:e.maxYArr,yAxisScale:e.yAxisScale}}},{key:"setXRange",value:function(){var e=this.w.globals,t=this.w.config,i=t.xaxis.type==="numeric"||t.xaxis.type==="datetime"||t.xaxis.type==="category"&&!e.noLabelsProvided||e.noLabelsProvided||e.isXNumeric;if(e.isXNumeric&&function(){for(var n=0;ne.dataPoints&&e.dataPoints!==0&&(a=e.dataPoints-1)):t.xaxis.tickAmount==="dataPoints"?(e.series.length>1&&(a=e.series[e.maxValsInArrayIndex].length-1),e.isXNumeric&&(a=e.maxX-e.minX-1)):a=t.xaxis.tickAmount,e.xTickAmount=a,t.xaxis.max!==void 0&&typeof t.xaxis.max=="number"&&(e.maxX=t.xaxis.max),t.xaxis.min!==void 0&&typeof t.xaxis.min=="number"&&(e.minX=t.xaxis.min),t.xaxis.range!==void 0&&(e.minX=e.maxX-t.xaxis.range),e.minX!==Number.MAX_VALUE&&e.maxX!==-Number.MAX_VALUE)if(t.xaxis.convertedCatToNumeric&&!e.dataFormatXNumeric){for(var s=[],r=e.minX-1;r0&&(e.xAxisScale=this.scales.linearScale(1,e.labels.length,a-1,0,t.xaxis.stepSize),e.seriesX=e.labels.slice());i&&(e.labels=e.xAxisScale.result.slice())}return e.isBarHorizontal&&e.labels.length&&(e.xTickAmount=e.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:e.minX,maxX:e.maxX}}},{key:"setZRange",value:function(){var e=this.w.globals;if(e.isDataXYZ){for(var t=0;t0){var n=s-a[r-1];n>0&&(e.minXDiff=Math.min(n,e.minXDiff))}}),e.dataPoints!==1&&e.minXDiff!==Number.MAX_VALUE||(e.minXDiff=.5)})}},{key:"_setStackedMinMax",value:function(){var e=this,t=this.w.globals;if(t.series.length){var i=t.seriesGroups;i.length||(i=[this.w.config.series.map(function(r){return r.name})]);var a={},s={};i.forEach(function(r){a[r]=[],s[r]=[],e.w.config.series.map(function(n,o){return r.indexOf(n.name)>-1?o:null}).filter(function(n){return n!==null}).forEach(function(n){for(var o=0;o0?a[r][o]+=parseFloat(t.series[n][o])+1e-4:s[r][o]+=parseFloat(t.series[n][o]))}})}),Object.entries(a).forEach(function(r){var n=Ct(r,1)[0];a[n].forEach(function(o,h){t.maxY=Math.max(t.maxY,a[n][h]),t.minY=Math.min(t.minY,s[n][h])})})}}}]),f}(),at=function(){function f(e,t){Y(this,f),this.ctx=e,this.elgrid=t,this.w=e.w;var i=this.w;this.xaxisFontSize=i.config.xaxis.labels.style.fontSize,this.axisFontFamily=i.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=i.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal=i.config.chart.type==="bar"&&i.config.plotOptions.bar.horizontal,this.xAxisoffX=0,i.config.xaxis.position==="bottom"&&(this.xAxisoffX=i.globals.gridHeight),this.drawnLabels=[],this.axesUtils=new ne(e)}return F(f,[{key:"drawYaxis",value:function(e){var t=this,i=this.w,a=new M(this.ctx),s=i.config.yaxis[e].labels.style,r=s.fontSize,n=s.fontFamily,o=s.fontWeight,h=a.group({class:"apexcharts-yaxis",rel:e,transform:"translate("+i.globals.translateYAxisX[e]+", 0)"});if(this.axesUtils.isYAxisHidden(e))return h;var c=a.group({class:"apexcharts-yaxis-texts-g"});h.add(c);var d=i.globals.yAxisScale[e].result.length-1,g=i.globals.gridHeight/d,p=i.globals.translateY,x=i.globals.yLabelFormatters[e],m=i.globals.yAxisScale[e].result.slice();m=this.axesUtils.checkForReversedLabels(e,m);var v="";if(i.config.yaxis[e].labels.show)for(var w=function(C){var L=m[C];L=x(L,C,i);var T=i.config.yaxis[e].labels.padding;i.config.yaxis[e].opposite&&i.config.yaxis.length!==0&&(T*=-1);var z="end";i.config.yaxis[e].opposite&&(z="start"),i.config.yaxis[e].labels.align==="left"?z="start":i.config.yaxis[e].labels.align==="center"?z="middle":i.config.yaxis[e].labels.align==="right"&&(z="end");var I=t.axesUtils.getYAxisForeColor(s.colors,e),X=i.config.yaxis[e].labels.offsetY;i.config.chart.type==="heatmap"&&(X-=(i.globals.gridHeight/i.globals.series.length-1)/2);var R=a.drawText({x:T,y:p+d/10+X+1,text:L,textAnchor:z,fontSize:r,fontFamily:n,fontWeight:o,maxWidth:i.config.yaxis[e].labels.maxWidth,foreColor:Array.isArray(I)?I[C]:I,isPlainText:!1,cssClass:"apexcharts-yaxis-label "+s.cssClass});C===d&&(v=R),c.add(R);var H=document.createElementNS(i.globals.SVGNS,"title");if(H.textContent=Array.isArray(L)?L.join(" "):L,R.node.appendChild(H),i.config.yaxis[e].labels.rotate!==0){var O=a.rotateAroundCenter(v.node),D=a.rotateAroundCenter(R.node);R.node.setAttribute("transform","rotate(".concat(i.config.yaxis[e].labels.rotate," ").concat(O.x," ").concat(D.y,")"))}p+=g},A=d;A>=0;A--)w(A);if(i.config.yaxis[e].title.text!==void 0){var l=a.group({class:"apexcharts-yaxis-title"}),u=0;i.config.yaxis[e].opposite&&(u=i.globals.translateYAxisX[e]);var b=a.drawText({x:u,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[e].title.offsetY,text:i.config.yaxis[e].title.text,textAnchor:"end",foreColor:i.config.yaxis[e].title.style.color,fontSize:i.config.yaxis[e].title.style.fontSize,fontWeight:i.config.yaxis[e].title.style.fontWeight,fontFamily:i.config.yaxis[e].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+i.config.yaxis[e].title.style.cssClass});l.add(b),h.add(l)}var y=i.config.yaxis[e].axisBorder,k=31+y.offsetX;if(i.config.yaxis[e].opposite&&(k=-31-y.offsetX),y.show){var S=a.drawLine(k,i.globals.translateY+y.offsetY-2,k,i.globals.gridHeight+i.globals.translateY+y.offsetY+2,y.color,0,y.width);h.add(S)}return i.config.yaxis[e].axisTicks.show&&this.axesUtils.drawYAxisTicks(k,d,y,i.config.yaxis[e].axisTicks,e,g,h),h}},{key:"drawYaxisInversed",value:function(e){var t=this.w,i=new M(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});a.add(s);var r=t.globals.yAxisScale[e].result.length-1,n=t.globals.gridWidth/r+.1,o=n+t.config.xaxis.labels.offsetX,h=t.globals.xLabelFormatter,c=t.globals.yAxisScale[e].result.slice(),d=t.globals.timescaleLabels;d.length>0&&(this.xaxisLabels=d.slice(),r=(c=d.slice()).length),c=this.axesUtils.checkForReversedLabels(e,c);var g=d.length;if(t.config.xaxis.labels.show)for(var p=g?0:r;g?p=0;g?p++:p--){var x=c[p];x=h(x,p,t);var m=t.globals.gridWidth+t.globals.padHorizontal-(o-n+t.config.xaxis.labels.offsetX);if(d.length){var v=this.axesUtils.getLabel(c,d,m,p,this.drawnLabels,this.xaxisFontSize);m=v.x,x=v.text,this.drawnLabels.push(v.text),p===0&&t.globals.skipFirstTimelinelabel&&(x=""),p===c.length-1&&t.globals.skipLastTimelinelabel&&(x="")}var w=i.drawText({x:m,y:this.xAxisoffX+t.config.xaxis.labels.offsetY+30-(t.config.xaxis.position==="top"?t.globals.xAxisHeight+t.config.xaxis.axisTicks.height-2:0),text:x,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[e]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:t.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+t.config.xaxis.labels.style.cssClass});s.add(w),w.tspan(x);var A=document.createElementNS(t.globals.SVGNS,"title");A.textContent=x,w.node.appendChild(A),o+=n}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(e){var t=this.w,i=new M(this.ctx),a=t.config.xaxis.axisBorder;if(a.show){var s=0;t.config.chart.type==="bar"&&t.globals.isXNumeric&&(s-=15);var r=i.drawLine(t.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,t.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders&&t.config.grid.show?this.elgrid.elGridBorders.add(r):e.add(r)}}},{key:"inversedYAxisTitleText",value:function(e){var t=this.w,i=new M(this.ctx);if(t.config.xaxis.title.text!==void 0){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:t.globals.gridWidth/2+t.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(t.config.xaxis.title.style.fontSize)+t.config.xaxis.title.offsetY+20,text:t.config.xaxis.title.text,textAnchor:"middle",fontSize:t.config.xaxis.title.style.fontSize,fontFamily:t.config.xaxis.title.style.fontFamily,fontWeight:t.config.xaxis.title.style.fontWeight,foreColor:t.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+t.config.xaxis.title.style.cssClass});a.add(s),e.add(a)}}},{key:"yAxisTitleRotate",value:function(e,t){var i=this.w,a=new M(this.ctx),s={width:0,height:0},r={width:0,height:0},n=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(e,"'] .apexcharts-yaxis-texts-g"));n!==null&&(s=n.getBoundingClientRect());var o=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(e,"'] .apexcharts-yaxis-title text"));if(o!==null&&(r=o.getBoundingClientRect()),o!==null){var h=this.xPaddingForYAxisTitle(e,s,r,t);o.setAttribute("x",h.xPos-(t?10:0))}if(o!==null){var c=a.rotateAroundCenter(o);o.setAttribute("transform","rotate(".concat(t?-1*i.config.yaxis[e].title.rotate:i.config.yaxis[e].title.rotate," ").concat(c.x," ").concat(c.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(e,t,i,a){var s=this.w,r=0,n=0,o=10;return s.config.yaxis[e].title.text===void 0||e<0?{xPos:n,padd:0}:(a?(n=t.width+s.config.yaxis[e].title.offsetX+i.width/2+o/2,(r+=1)===0&&(n-=o/2)):(n=-1*t.width+s.config.yaxis[e].title.offsetX+o/2+i.width/2,s.globals.isBarHorizontal&&(o=25,n=-1*t.width-s.config.yaxis[e].title.offsetX-o)),{xPos:n,padd:o})}},{key:"setYAxisXPosition",value:function(e,t){var i=this.w,a=0,s=0,r=18,n=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map(function(o,h){var c=i.globals.ignoreYAxisIndexes.indexOf(h)>-1||!o.show||o.floating||e[h].width===0,d=e[h].width+t[h].width;o.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[h]=s-o.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+n,c||(n=n+d+20),i.globals.translateYAxisX[h]=s-o.labels.offsetX+20):(a=i.globals.translateX-r,c||(r=r+d+20),i.globals.translateYAxisX[h]=a+o.labels.offsetX)})}},{key:"setYAxisTextAlignments",value:function(){var e=this.w,t=e.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(t=P.listToArray(t)).forEach(function(i,a){var s=e.config.yaxis[a];if(s&&!s.floating&&s.labels.align!==void 0){var r=e.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(a,"'] .apexcharts-yaxis-texts-g")),n=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(a,"'] .apexcharts-yaxis-label"));n=P.listToArray(n);var o=r.getBoundingClientRect();s.labels.align==="left"?(n.forEach(function(h,c){h.setAttribute("text-anchor","start")}),s.opposite||r.setAttribute("transform","translate(-".concat(o.width,", 0)"))):s.labels.align==="center"?(n.forEach(function(h,c){h.setAttribute("text-anchor","middle")}),r.setAttribute("transform","translate(".concat(o.width/2*(s.opposite?1:-1),", 0)"))):s.labels.align==="right"&&(n.forEach(function(h,c){h.setAttribute("text-anchor","end")}),s.opposite&&r.setAttribute("transform","translate(".concat(o.width,", 0)")))}})}}]),f}(),Ii=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.documentEvent=P.bind(this.documentEvent,this)}return F(f,[{key:"addEventListener",value:function(e,t){var i=this.w;i.globals.events.hasOwnProperty(e)?i.globals.events[e].push(t):i.globals.events[e]=[t]}},{key:"removeEventListener",value:function(e,t){var i=this.w;if(i.globals.events.hasOwnProperty(e)){var a=i.globals.events[e].indexOf(t);a!==-1&&i.globals.events[e].splice(a,1)}}},{key:"fireEvent",value:function(e,t){var i=this.w;if(i.globals.events.hasOwnProperty(e)){t&&t.length||(t=[]);for(var a=i.globals.events[e],s=a.length,r=0;r0&&(t=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=t.filter(function(s){return s.name===e})[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=P.extend(Pt,i);this.w.globals.locale=a.options}}]),f}(),Mi=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"drawAxis",value:function(e,t){var i,a,s=this,r=this.w.globals,n=this.w.config,o=new we(this.ctx,t),h=new at(this.ctx,t);r.axisCharts&&e!=="radar"&&(r.isBarHorizontal?(a=h.drawYaxisInversed(0),i=o.drawXaxisInversed(0),r.dom.elGraphical.add(i),r.dom.elGraphical.add(a)):(i=o.drawXaxis(),r.dom.elGraphical.add(i),n.yaxis.map(function(c,d){if(r.ignoreYAxisIndexes.indexOf(d)===-1&&(a=h.drawYaxis(d),r.dom.Paper.add(a),s.w.config.grid.position==="back")){var g=r.dom.Paper.children()[1];g.remove(),r.dom.Paper.add(g)}})))}}]),f}(),tt=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"drawXCrosshairs",value:function(){var e=this.w,t=new M(this.ctx),i=new q(this.ctx),a=e.config.xaxis.crosshairs.fill.gradient,s=e.config.xaxis.crosshairs.dropShadow,r=e.config.xaxis.crosshairs.fill.type,n=a.colorFrom,o=a.colorTo,h=a.opacityFrom,c=a.opacityTo,d=a.stops,g=s.enabled,p=s.left,x=s.top,m=s.blur,v=s.color,w=s.opacity,A=e.config.xaxis.crosshairs.fill.color;if(e.config.xaxis.crosshairs.show){r==="gradient"&&(A=t.drawGradient("vertical",n,o,h,c,null,d,null));var l=t.drawRect();e.config.xaxis.crosshairs.width===1&&(l=t.drawLine());var u=e.globals.gridHeight;(!P.isNumber(u)||u<0)&&(u=0);var b=e.config.xaxis.crosshairs.width;(!P.isNumber(b)||b<0)&&(b=0),l.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:u,width:b,height:u,fill:A,filter:"none","fill-opacity":e.config.xaxis.crosshairs.opacity,stroke:e.config.xaxis.crosshairs.stroke.color,"stroke-width":e.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":e.config.xaxis.crosshairs.stroke.dashArray}),g&&(l=i.dropShadow(l,{left:p,top:x,blur:m,color:v,opacity:w})),e.globals.dom.elGraphical.add(l)}}},{key:"drawYCrosshairs",value:function(){var e=this.w,t=new M(this.ctx),i=e.config.yaxis[0].crosshairs,a=e.globals.barPadForNumericAxis;if(e.config.yaxis[0].crosshairs.show){var s=t.drawLine(-a,0,e.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),e.globals.dom.elGraphical.add(s)}var r=t.drawLine(-a,0,e.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:"apexcharts-ycrosshairs-hidden"}),e.globals.dom.elGraphical.add(r)}}]),f}(),Xi=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"checkResponsiveConfig",value:function(e){var t=this,i=this.w,a=i.config;if(a.responsive.length!==0){var s=a.responsive.slice();s.sort(function(h,c){return h.breakpoint>c.breakpoint?1:c.breakpoint>h.breakpoint?-1:0}).reverse();var r=new ye({}),n=function(){var h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},c=s[0].breakpoint,d=window.innerWidth>0?window.innerWidth:screen.width;if(d>c){var g=V.extendArrayProps(r,i.globals.initialConfig,i);h=P.extend(g,h),h=P.extend(i.config,h),t.overrideResponsiveOptions(h)}else for(var p=0;p0&&typeof i.config.colors[0]=="function"&&(i.globals.colors=i.config.series.map(function(x,m){var v=i.config.colors[m];return v||(v=i.config.colors[0]),typeof v=="function"?(t.isColorFn=!0,v({value:i.globals.axisCharts?i.globals.series[m][0]?i.globals.series[m][0]:0:i.globals.series[m],seriesIndex:m,dataPointIndex:m,w:i})):v}))),i.globals.seriesColors.map(function(x,m){x&&(i.globals.colors[m]=x)}),i.config.theme.monochrome.enabled){var s=[],r=i.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(r=i.globals.series[0].length*i.globals.series.length);for(var n=i.config.theme.monochrome.color,o=1/(r/i.config.theme.monochrome.shadeIntensity),h=i.config.theme.monochrome.shadeTo,c=0,d=0;d2&&arguments[2]!==void 0?arguments[2]:null,a=this.w,s=t||a.globals.series.length;if(i===null&&(i=this.isBarDistributed||this.isHeatmapDistributed||a.config.chart.type==="heatmap"&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),e.lengthe.globals.svgWidth&&(this.dCtx.lgRect.width=e.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(e,t){var i=e;if(this.w.globals.isMultiLineX){var a=t.map(function(r,n){return Array.isArray(r)?r.length:1}),s=Math.max.apply(Math,J(a));i=t[a.indexOf(s)]}return i}}]),f}(),Ri=function(){function f(e){Y(this,f),this.w=e.w,this.dCtx=e}return F(f,[{key:"getxAxisLabelsCoords",value:function(){var e,t=this.w,i=t.globals.labels.slice();if(t.config.xaxis.convertedCatToNumeric&&i.length===0&&(i=t.globals.categoryLabels),t.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();e={width:a.width,height:a.height},t.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends=t.config.legend.position!=="left"&&t.config.legend.position!=="right"||t.config.legend.floating?0:this.dCtx.lgRect.width;var s=t.globals.xLabelFormatter,r=P.getLargestStringFromArr(i),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);t.globals.isBarHorizontal&&(n=r=t.globals.yAxisScale[0].result.reduce(function(x,m){return x.length>m.length?x:m},0));var o=new Se(this.dCtx.ctx),h=r;r=o.xLabelFormat(s,r,h,{i:void 0,dateFormatter:new j(this.dCtx.ctx).formatDate,w:t}),n=o.xLabelFormat(s,n,h,{i:void 0,dateFormatter:new j(this.dCtx.ctx).formatDate,w:t}),(t.config.xaxis.convertedCatToNumeric&&r===void 0||String(r).trim()==="")&&(n=r="1");var c=new M(this.dCtx.ctx),d=c.getTextRects(r,t.config.xaxis.labels.style.fontSize),g=d;if(r!==n&&(g=c.getTextRects(n,t.config.xaxis.labels.style.fontSize)),(e={width:d.width>=g.width?d.width:g.width,height:d.height>=g.height?d.height:g.height}).width*i.length>t.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&t.config.xaxis.labels.rotate!==0||t.config.xaxis.labels.rotateAlways){if(!t.globals.isBarHorizontal){t.globals.rotateXLabels=!0;var p=function(x){return c.getTextRects(x,t.config.xaxis.labels.style.fontSize,t.config.xaxis.labels.style.fontFamily,"rotate(".concat(t.config.xaxis.labels.rotate," 0 0)"),!1)};d=p(r),r!==n&&(g=p(n)),e.height=(d.height>g.height?d.height:g.height)/1.5,e.width=d.width>g.width?d.width:g.width}}else t.globals.rotateXLabels=!1}return t.config.xaxis.labels.show||(e={width:0,height:0}),{width:e.width,height:e.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var e,t=this.w;if(!t.globals.hasXaxisGroups)return{width:0,height:0};var i,a=((e=t.config.xaxis.group.style)===null||e===void 0?void 0:e.fontSize)||t.config.xaxis.labels.style.fontSize,s=t.globals.groups.map(function(d){return d.title}),r=P.getLargestStringFromArr(s),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),o=new M(this.dCtx.ctx),h=o.getTextRects(r,a),c=h;return r!==n&&(c=o.getTextRects(n,a)),i={width:h.width>=c.width?h.width:c.width,height:h.height>=c.height?h.height:c.height},t.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var e=this.w,t=0,i=0;if(e.config.xaxis.title.text!==void 0){var a=new M(this.dCtx.ctx).getTextRects(e.config.xaxis.title.text,e.config.xaxis.title.style.fontSize);t=a.width,i=a.height}return{width:t,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var e,t=this.w;this.dCtx.timescaleLabels=t.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map(function(s){return s.value}),a=i.reduce(function(s,r){return s===void 0?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):s.length>r.length?s:r},0);return 1.05*(e=new M(this.dCtx.ctx).getTextRects(a,t.config.xaxis.labels.style.fontSize)).width*i.length>t.globals.gridWidth&&t.config.xaxis.labels.rotate!==0&&(t.globals.overlappingXLabels=!0),e}},{key:"additionalPaddingXLabels",value:function(e){var t=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,n=e.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var o=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,h=function(c,d){s.yaxis.length>1&&function(g){return a.collapsedSeriesIndices.indexOf(g)!==-1}(d)||function(g){if(t.dCtx.timescaleLabels&&t.dCtx.timescaleLabels.length){var p=t.dCtx.timescaleLabels[0],x=t.dCtx.timescaleLabels[t.dCtx.timescaleLabels.length-1].position+n/1.75-t.dCtx.yAxisWidthRight,m=p.position-n/1.75+t.dCtx.yAxisWidthLeft,v=i.config.legend.position==="right"&&t.dCtx.lgRect.width>0?t.dCtx.lgRect.width:0;x>a.svgWidth-a.translateX-v&&(a.skipLastTimelinelabel=!0),m<-(g.show&&!g.floating||s.chart.type!=="bar"&&s.chart.type!=="candlestick"&&s.chart.type!=="rangeBar"&&s.chart.type!=="boxPlot"?10:n/1.75)&&(a.skipFirstTimelinelabel=!0)}else r==="datetime"?t.dCtx.gridPad.right((k=String(d(b,o)))===null||k===void 0?void 0:k.length)?u:b},g),x=p=d(p,o);if(p!==void 0&&p.length!==0||(p=h.niceMax),t.globals.isBarHorizontal){a=0;var m=t.globals.labels.slice();p=P.getLargestStringFromArr(m),p=d(p,{seriesIndex:n,dataPointIndex:-1,w:t}),x=e.dCtx.dimHelpers.getLargestStringFromMultiArr(p,m)}var v=new M(e.dCtx.ctx),w="rotate(".concat(r.labels.rotate," 0 0)"),A=v.getTextRects(p,r.labels.style.fontSize,r.labels.style.fontFamily,w,!1),l=A;p!==x&&(l=v.getTextRects(x,r.labels.style.fontSize,r.labels.style.fontFamily,w,!1)),i.push({width:(c>l.width||c>A.width?c:l.width>A.width?l.width:A.width)+a,height:l.height>A.height?l.height:A.height})}else i.push({width:0,height:0})}),i}},{key:"getyAxisTitleCoords",value:function(){var e=this,t=this.w,i=[];return t.config.yaxis.map(function(a,s){if(a.show&&a.title.text!==void 0){var r=new M(e.dCtx.ctx),n="rotate(".concat(a.title.rotate," 0 0)"),o=r.getTextRects(a.title.text,a.title.style.fontSize,a.title.style.fontFamily,n,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})}),i}},{key:"getTotalYAxisWidth",value:function(){var e=this.w,t=0,i=0,a=0,s=e.globals.yAxisScale.length>1?10:0,r=new ne(this.dCtx.ctx),n=function(o,h){var c=e.config.yaxis[h].floating,d=0;o.width>0&&!c?(d=o.width+s,function(g){return e.globals.ignoreYAxisIndexes.indexOf(g)>-1}(h)&&(d=d-o.width-s)):d=c||r.isYAxisHidden(h)?0:5,e.config.yaxis[h].opposite?a+=d:i+=d,t+=d};return e.globals.yLabelsCoords.map(function(o,h){n(o,h)}),e.globals.yTitleCoords.map(function(o,h){n(o,h)}),e.globals.isBarHorizontal&&!e.config.yaxis[0].floating&&(t=e.globals.yLabelsCoords[0].width+e.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,t}}]),f}(),Hi=function(){function f(e){Y(this,f),this.w=e.w,this.dCtx=e}return F(f,[{key:"gridPadForColumnsInNumericAxis",value:function(e){var t=this.w;if(t.globals.noData||t.globals.allSeriesCollapsed)return 0;var i=function(c){return c==="bar"||c==="rangeBar"||c==="candlestick"||c==="boxPlot"},a=t.config.chart.type,s=0,r=i(a)?t.config.series.length:1;if(t.globals.comboBarCount>0&&(r=t.globals.comboBarCount),t.globals.collapsedSeries.forEach(function(c){i(c.type)&&(r-=1)}),t.config.chart.stacked&&(r=1),(i(a)||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&r>0){var n,o,h=Math.abs(t.globals.initialMaxX-t.globals.initialMinX);h<=3&&(h=t.globals.dataPoints),n=h/e,t.globals.minXDiff&&t.globals.minXDiff/n>0&&(o=t.globals.minXDiff/n),o>e/2&&(o/=2),(s=o/r*parseInt(t.config.plotOptions.bar.columnWidth,10)/100)<1&&(s=1),s=s/(r>1?1:1.5)+5,t.globals.barPadForNumericAxis=s}return s}},{key:"gridPadFortitleSubtitle",value:function(){var e=this,t=this.w,i=t.globals,a=this.dCtx.isSparkline||!t.globals.axisCharts?0:10;["title","subtitle"].forEach(function(n){t.config[n].text!==void 0?a+=t.config[n].margin:a+=e.dCtx.isSparkline||!t.globals.axisCharts?0:5}),!t.config.legend.show||t.config.legend.position!=="bottom"||t.config.legend.floating||t.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-s.height-r.height-a,i.translateY=i.translateY+s.height+r.height+a}},{key:"setGridXPosForDualYAxis",value:function(e,t){var i=this.w,a=new ne(this.dCtx.ctx);i.config.yaxis.map(function(s,r){i.globals.ignoreYAxisIndexes.indexOf(r)!==-1||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(t[r].width+e[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))})}}]),f}(),Ee=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new Fi(this),this.dimYAxis=new Oi(this),this.dimXAxis=new Ri(this),this.dimGrid=new Hi(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return F(f,[{key:"plotCoords",value:function(){var e=this,t=this.w,i=t.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.isSparkline&&((t.config.markers.discrete.length>0||t.config.markers.size>0)&&Object.entries(this.gridPad).forEach(function(s){var r=Ct(s,2),n=r[0],o=r[1];e.gridPad[n]=Math.max(o,e.w.globals.markers.largestSize/1.5)}),this.gridPad.top=Math.max(t.config.stroke.width/2,this.gridPad.top),this.gridPad.bottom=Math.max(t.config.stroke.width/2,this.gridPad.bottom)),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var e=this,t=this.w,i=t.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();t.globals.yLabelsCoords=[],t.globals.yTitleCoords=[],t.config.yaxis.map(function(p,x){t.globals.yLabelsCoords.push({width:a[x].width,index:x}),t.globals.yTitleCoords.push({width:s[x].width,index:x})}),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),n=this.dimXAxis.getxAxisGroupLabelsCoords(),o=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,o,n),i.translateXAxisY=t.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=t.globals.rotateXLabels&&t.globals.isXNumeric&&t.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,t.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(t.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+t.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+t.config.xaxis.labels.offsetX;var h=this.yAxisWidth,c=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-o.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var d=10;(t.config.chart.type==="radar"||this.isSparkline)&&(h=0,c=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||t.config.chart.type==="treemap")&&(h=0,c=0,d=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(r);var g=function(){i.translateX=h,i.gridHeight=i.svgHeight-e.lgRect.height-c-(e.isSparkline||t.config.chart.type==="treemap"?0:t.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-h};switch(t.config.xaxis.position==="top"&&(d=i.xAxisHeight-t.config.xaxis.axisTicks.height-5),t.config.legend.position){case"bottom":i.translateY=d,g();break;case"top":i.translateY=this.lgRect.height+d,g();break;case"left":i.translateY=d,i.translateX=this.lgRect.width+h,i.gridHeight=i.svgHeight-c-12,i.gridWidth=i.svgWidth-this.lgRect.width-h;break;case"right":i.translateY=d,i.translateX=h,i.gridHeight=i.svgHeight-c-12,i.gridWidth=i.svgWidth-this.lgRect.width-h-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new at(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var e=this.w,t=e.globals,i=e.config,a=0;e.config.legend.show&&!e.config.legend.floating&&(a=20);var s=i.chart.type==="pie"||i.chart.type==="polarArea"||i.chart.type==="donut"?"pie":"radialBar",r=i.plotOptions[s].offsetY,n=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return t.gridHeight=t.svgHeight-i.grid.padding.left+i.grid.padding.right,t.gridWidth=t.gridHeight,t.translateY=r,void(t.translateX=n+(t.svgWidth-t.gridWidth)/2);switch(i.legend.position){case"bottom":t.gridHeight=t.svgHeight-this.lgRect.height-t.goldenPadding,t.gridWidth=t.svgWidth,t.translateY=r-10,t.translateX=n+(t.svgWidth-t.gridWidth)/2;break;case"top":t.gridHeight=t.svgHeight-this.lgRect.height-t.goldenPadding,t.gridWidth=t.svgWidth,t.translateY=this.lgRect.height+r+10,t.translateX=n+(t.svgWidth-t.gridWidth)/2;break;case"left":t.gridWidth=t.svgWidth-this.lgRect.width-a,t.gridHeight=i.chart.height!=="auto"?t.svgHeight:t.gridWidth,t.translateY=r,t.translateX=n+this.lgRect.width+a;break;case"right":t.gridWidth=t.svgWidth-this.lgRect.width-a-5,t.gridHeight=i.chart.height!=="auto"?t.svgHeight:t.gridWidth,t.translateY=r,t.translateX=n+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(e,t,i){var a=this.w,s=a.globals.hasXaxisGroups?2:1,r=i.height+e.height+t.height,n=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,o=a.globals.rotateXLabels?22:10,h=a.globals.rotateXLabels&&a.config.legend.position==="bottom"?10:0;this.xAxisHeight=r*n+s*o+h,this.xAxisWidth=e.width,this.xAxisHeight-t.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightd&&(this.yAxisWidth=d)}}]),f}(),Di=function(){function f(e){Y(this,f),this.w=e.w,this.lgCtx=e}return F(f,[{key:"getLegendStyles",value:function(){var e,t,i,a=document.createElement("style");a.setAttribute("type","text/css");var s=((e=this.lgCtx.ctx)===null||e===void 0||(t=e.opts)===null||t===void 0||(i=t.chart)===null||i===void 0?void 0:i.nonce)||this.w.config.chart.nonce;s&&a.setAttribute("nonce",s);var r=document.createTextNode(` + + .apexcharts-legend { + display: flex; + overflow: auto; + padding: 0 10px; + } + .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top { + flex-wrap: wrap + } + .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left { + flex-direction: column; + bottom: 0; + } + .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left { + justify-content: flex-start; + } + .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center { + justify-content: center; + } + .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right { + justify-content: flex-end; + } + .apexcharts-legend-series { + cursor: pointer; + line-height: normal; + } + .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{ + display: flex; + align-items: center; + } + .apexcharts-legend-text { + position: relative; + font-size: 14px; + } + .apexcharts-legend-text *, .apexcharts-legend-marker * { + pointer-events: none; + } + .apexcharts-legend-marker { + position: relative; + display: inline-block; + cursor: pointer; + margin-right: 3px; + border-style: solid; + } + + .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{ + display: inline-block; + } + .apexcharts-legend-series.apexcharts-no-click { + cursor: auto; + } + .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series { + display: none !important; + } + .apexcharts-inactive-legend { + opacity: 0.45; + }`);return a.appendChild(r),a}},{key:"getLegendBBox",value:function(){var e=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),t=e.width;return{clwh:e.height,clww:t}}},{key:"appendToForeignObject",value:function(){this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles())}},{key:"toggleDataSeries",value:function(e,t){var i=this,a=this.w;if(a.globals.axisCharts||a.config.chart.type==="radialBar"){a.globals.resized=!0;var s=null,r=null;a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(e,"']")),r=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(e+1,"']")),r=parseInt(s.getAttribute("rel"),10)-1),t?[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach(function(c){i.riseCollapsedSeries(c.cs,c.csi,r)}):this.hideSeries({seriesEl:s,realIndex:r})}else{var n=a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(e+1,"'] path")),o=a.config.chart.type;if(o==="pie"||o==="polarArea"||o==="donut"){var h=a.config.plotOptions.pie.donut.labels;new M(this.lgCtx.ctx).pathMouseDown(n.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(n.members[0].node,h)}n.fire("click")}}},{key:"hideSeries",value:function(e){var t=e.seriesEl,i=e.realIndex,a=this.w,s=P.clone(a.config.series);if(a.globals.axisCharts){var r=!1;if(a.config.yaxis[i]&&a.config.yaxis[i].show&&a.config.yaxis[i].showAlways&&(r=!0,a.globals.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(a.globals.ancillaryCollapsedSeries.push({index:i,data:s[i].data.slice(),type:t.parentNode.className.baseVal.split("-")[1]}),a.globals.ancillaryCollapsedSeriesIndices.push(i))),!r){a.globals.collapsedSeries.push({index:i,data:s[i].data.slice(),type:t.parentNode.className.baseVal.split("-")[1]}),a.globals.collapsedSeriesIndices.push(i);var n=a.globals.risingSeries.indexOf(i);a.globals.risingSeries.splice(n,1)}}else a.globals.collapsedSeries.push({index:i,data:s[i]}),a.globals.collapsedSeriesIndices.push(i);for(var o=t.childNodes,h=0;h0){for(var r=0;r-1&&(e[a].data=[])}):e.forEach(function(i,a){t.globals.collapsedSeriesIndices.indexOf(a)>-1&&(e[a]=0)}),e}}]),f}(),Xt=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed=this.w.config.chart.type==="bar"&&this.w.config.plotOptions.bar.distributed&&this.w.config.series.length===1,this.legendHelpers=new Di(this)}return F(f,[{key:"init",value:function(){var e=this.w,t=e.globals,i=e.config;if((i.legend.showForSingleSeries&&t.series.length===1||this.isBarsDistributed||t.series.length>1||!t.axisCharts)&&i.legend.show){for(;t.dom.elLegendWrap.firstChild;)t.dom.elLegendWrap.removeChild(t.dom.elLegendWrap.firstChild);this.drawLegends(),P.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),i.legend.position==="bottom"||i.legend.position==="top"?this.legendAlignHorizontal():i.legend.position!=="right"&&i.legend.position!=="left"||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var e=this,t=this.w,i=t.config.legend.fontFamily,a=t.globals.seriesNames,s=t.globals.colors.slice();if(t.config.chart.type==="heatmap"){var r=t.config.plotOptions.heatmap.colorScale.ranges;a=r.map(function(I){return I.name?I.name:I.from+" - "+I.to}),s=r.map(function(I){return I.color})}else this.isBarsDistributed&&(a=t.globals.labels.slice());t.config.legend.customLegendItems.length&&(a=t.config.legend.customLegendItems);for(var n=t.globals.legendFormatter,o=t.config.legend.inverseOrder,h=o?a.length-1:0;o?h>=0:h<=a.length-1;o?h--:h++){var c,d=n(a[h],{seriesIndex:h,w:t}),g=!1,p=!1;if(t.globals.collapsedSeries.length>0)for(var x=0;x0)for(var m=0;m0?h-10:0)+(c>0?c-10:0)}a.style.position="absolute",r=r+e+i.config.legend.offsetX,n=n+t+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=n+"px",i.config.legend.position==="bottom"?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):i.config.legend.position==="right"&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px"),["width","height"].forEach(function(d){a.style[d]&&(a.style[d]=parseInt(i.config.legend[d],10)+"px")})}},{key:"legendAlignHorizontal",value:function(){var e=this.w;e.globals.dom.elLegendWrap.style.right=0;var t=this.legendHelpers.getLegendBBox(),i=new Ee(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),r=0;e.config.legend.position==="bottom"?r=-t.clwh/1.8:e.config.legend.position==="top"&&(r=a.height+s.height+e.config.title.margin+e.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:"legendAlignVertical",value:function(){var e=this.w,t=this.legendHelpers.getLegendBBox(),i=0;e.config.legend.position==="left"&&(i=20),e.config.legend.position==="right"&&(i=e.globals.svgWidth-t.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(e){var t=this.w,i=e.target.classList.contains("apexcharts-legend-series")||e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker");if(t.config.chart.type==="heatmap"||this.isBarsDistributed){if(i){var a=parseInt(e.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new Q(this.ctx).highlightRangeInSeries(e,e.target)}}else!e.target.classList.contains("apexcharts-inactive-legend")&&i&&new Q(this.ctx).toggleSeriesOnHover(e,e.target)}},{key:"onLegendClick",value:function(e){var t=this.w;if(!t.config.legend.customLegendItems.length&&(e.target.classList.contains("apexcharts-legend-series")||e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(e.target.getAttribute("rel"),10)-1,a=e.target.getAttribute("data:collapsed")==="true",s=this.w.config.chart.events.legendClick;typeof s=="function"&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;typeof r=="function"&&e.target.classList.contains("apexcharts-legend-marker")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),t.config.chart.type!=="treemap"&&t.config.chart.type!=="heatmap"&&!this.isBarsDistributed&&t.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),f}(),Et=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w;var t=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=t.globals.minX,this.maxX=t.globals.maxX}return F(f,[{key:"createToolbar",value:function(){var e=this,t=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=t.config.chart.toolbar.offsetY+"px",a.style.right=3-t.config.chart.toolbar.offsetX+"px",t.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=t.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s + + + +`),n("zoomOut",this.elZoomOut,` + + + +`);var o=function(d){e.t[d]&&t.config.chart[d].enabled&&r.push({el:d==="zoom"?e.elZoom:e.elSelection,icon:typeof e.t[d]=="string"?e.t[d]:d==="zoom"?` + + + +`:` + + +`,title:e.localeValues[d==="zoom"?"selectionZoom":"selection"],class:t.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-".concat(d,"-icon")})};o("zoom"),o("selection"),this.t.pan&&t.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:typeof this.t.pan=="string"?this.t.pan:` + + + + + + + +`,title:this.localeValues.pan,class:t.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-pan-icon"}),n("reset",this.elZoomReset,` + + +`),this.t.download&&r.push({el:this.elMenuIcon,icon:typeof this.t.download=="string"?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var h=0;h0&&a.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:i.globals.gridWidth,maxY:i.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var i=this.w,a=this.xyRatios;if(!i.globals.zoomEnabled){if(i.globals.selection!==void 0&&i.globals.selection!==null)this.drawSelectionRect(i.globals.selection);else if(i.config.chart.selection.xaxis.min!==void 0&&i.config.chart.selection.xaxis.max!==void 0){var s=(i.config.chart.selection.xaxis.min-i.globals.minX)/a.xRatio,r=i.globals.gridWidth-(i.globals.maxX-i.config.chart.selection.xaxis.max)/a.xRatio-s;i.globals.isRangeBar&&(s=(i.config.chart.selection.xaxis.min-i.globals.yAxisScale[0].niceMin)/a.invertedYRatio,r=(i.config.chart.selection.xaxis.max-i.config.chart.selection.xaxis.min)/a.invertedYRatio);var n={x:s,y:0,width:r,height:i.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(n),this.makeSelectionRectDraggable(),typeof i.config.chart.events.selection=="function"&&i.config.chart.events.selection(this.ctx,{xaxis:{min:i.config.chart.selection.xaxis.min,max:i.config.chart.selection.xaxis.max},yaxis:{}})}}}},{key:"drawSelectionRect",value:function(i){var a=i.x,s=i.y,r=i.width,n=i.height,o=i.translateX,h=o===void 0?0:o,c=i.translateY,d=c===void 0?0:c,g=this.w,p=this.zoomRect,x=this.selectionRect;if(this.dragged||g.globals.selection!==null){var m={transform:"translate("+h+", "+d+")"};g.globals.zoomEnabled&&this.dragged&&(r<0&&(r=1),p.attr({x:a,y:s,width:r,height:n,fill:g.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":g.config.chart.zoom.zoomedArea.fill.opacity,stroke:g.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":g.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":g.config.chart.zoom.zoomedArea.stroke.opacity}),M.setAttrs(p.node,m)),g.globals.selectionEnabled&&(x.attr({x:a,y:s,width:r>0?r:0,height:n>0?n:0,fill:g.config.chart.selection.fill.color,"fill-opacity":g.config.chart.selection.fill.opacity,stroke:g.config.chart.selection.stroke.color,"stroke-width":g.config.chart.selection.stroke.width,"stroke-dasharray":g.config.chart.selection.stroke.dashArray,"stroke-opacity":g.config.chart.selection.stroke.opacity}),M.setAttrs(x.node,m))}}},{key:"hideSelectionRect",value:function(i){i&&i.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(i){var a=i.context,s=i.zoomtype,r=this.w,n=a,o=this.gridRect.getBoundingClientRect(),h=n.startX-1,c=n.startY,d=!1,g=!1,p=n.clientX-o.left-h,x=n.clientY-o.top-c,m={};return Math.abs(p+h)>r.globals.gridWidth?p=r.globals.gridWidth-h:n.clientX-o.left<0&&(p=h),h>n.clientX-o.left&&(d=!0,p=Math.abs(p)),c>n.clientY-o.top&&(g=!0,x=Math.abs(x)),m=s==="x"?{x:d?h-p:h,y:0,width:p,height:r.globals.gridHeight}:s==="y"?{x:0,y:g?c-x:c,width:r.globals.gridWidth,height:x}:{x:d?h-p:h,y:g?c-x:c,width:p,height:x},n.drawSelectionRect(m),n.selectionDragging("resizing"),m}},{key:"selectionDragging",value:function(i,a){var s=this,r=this.w,n=this.xyRatios,o=this.selectionRect,h=0;i==="resizing"&&(h=30);var c=function(g){return parseFloat(o.node.getAttribute(g))},d={x:c("x"),y:c("y"),width:c("width"),height:c("height")};r.globals.selection=d,typeof r.config.chart.events.selection=="function"&&r.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout(function(){var g,p,x,m,v=s.gridRect.getBoundingClientRect(),w=o.node.getBoundingClientRect();r.globals.isRangeBar?(g=r.globals.yAxisScale[0].niceMin+(w.left-v.left)*n.invertedYRatio,p=r.globals.yAxisScale[0].niceMin+(w.right-v.left)*n.invertedYRatio,x=0,m=1):(g=r.globals.xAxisScale.niceMin+(w.left-v.left)*n.xRatio,p=r.globals.xAxisScale.niceMin+(w.right-v.left)*n.xRatio,x=r.globals.yAxisScale[0].niceMin+(v.bottom-w.bottom)*n.yRatio[0],m=r.globals.yAxisScale[0].niceMax-(w.top-v.top)*n.yRatio[0]);var A={xaxis:{min:g,max:p},yaxis:{min:x,max:m}};r.config.chart.events.selection(s.ctx,A),r.config.chart.brush.enabled&&r.config.chart.events.brushScrolled!==void 0&&r.config.chart.events.brushScrolled(s.ctx,A)},h))}},{key:"selectionDrawn",value:function(i){var a=i.context,s=i.zoomtype,r=this.w,n=a,o=this.xyRatios,h=this.ctx.toolbar;if(n.startX>n.endX){var c=n.startX;n.startX=n.endX,n.endX=c}if(n.startY>n.endY){var d=n.startY;n.startY=n.endY,n.endY=d}var g=void 0,p=void 0;r.globals.isRangeBar?(g=r.globals.yAxisScale[0].niceMin+n.startX*o.invertedYRatio,p=r.globals.yAxisScale[0].niceMin+n.endX*o.invertedYRatio):(g=r.globals.xAxisScale.niceMin+n.startX*o.xRatio,p=r.globals.xAxisScale.niceMin+n.endX*o.xRatio);var x=[],m=[];if(r.config.yaxis.forEach(function(k,S){x.push(r.globals.yAxisScale[S].niceMax-o.yRatio[S]*n.startY),m.push(r.globals.yAxisScale[S].niceMax-o.yRatio[S]*n.endY)}),n.dragged&&(n.dragX>10||n.dragY>10)&&g!==p){if(r.globals.zoomEnabled){var v=P.clone(r.globals.initialConfig.yaxis),w=P.clone(r.globals.initialConfig.xaxis);if(r.globals.zoomed=!0,r.config.xaxis.convertedCatToNumeric&&(g=Math.floor(g),p=Math.floor(p),g<1&&(g=1,p=r.globals.dataPoints),p-g<2&&(p=g+1)),s!=="xy"&&s!=="x"||(w={min:g,max:p}),s!=="xy"&&s!=="y"||v.forEach(function(k,S){v[S].min=m[S],v[S].max=x[S]}),r.config.chart.zoom.autoScaleYaxis){var A=new ge(n.ctx);v=A.autoScaleY(n.ctx,v,{xaxis:w})}if(h){var l=h.getBeforeZoomRange(w,v);l&&(w=l.xaxis?l.xaxis:w,v=l.yaxis?l.yaxis:v)}var u={xaxis:w};r.config.chart.group||(u.yaxis=v),n.ctx.updateHelpers._updateOptions(u,!1,n.w.config.chart.animations.dynamicAnimation.enabled),typeof r.config.chart.events.zoomed=="function"&&h.zoomCallback(w,v)}else if(r.globals.selectionEnabled){var b,y=null;b={min:g,max:p},s!=="xy"&&s!=="y"||(y=P.clone(r.config.yaxis)).forEach(function(k,S){y[S].min=m[S],y[S].max=x[S]}),r.globals.selection=n.selection,typeof r.config.chart.events.selection=="function"&&r.config.chart.events.selection(n.ctx,{xaxis:b,yaxis:y})}}}},{key:"panDragging",value:function(i){var a=i.context,s=this.w,r=a;if(s.globals.lastClientPosition.x!==void 0){var n=s.globals.lastClientPosition.x-r.clientX,o=s.globals.lastClientPosition.y-r.clientY;Math.abs(n)>Math.abs(o)&&n>0?this.moveDirection="left":Math.abs(n)>Math.abs(o)&&n<0?this.moveDirection="right":Math.abs(o)>Math.abs(n)&&o>0?this.moveDirection="up":Math.abs(o)>Math.abs(n)&&o<0&&(this.moveDirection="down")}s.globals.lastClientPosition={x:r.clientX,y:r.clientY};var h=s.globals.isRangeBar?s.globals.minY:s.globals.minX,c=s.globals.isRangeBar?s.globals.maxY:s.globals.maxX;s.config.xaxis.convertedCatToNumeric||r.panScrolled(h,c)}},{key:"delayedPanScrolled",value:function(){var i=this.w,a=i.globals.minX,s=i.globals.maxX,r=(i.globals.maxX-i.globals.minX)/2;this.moveDirection==="left"?(a=i.globals.minX+r,s=i.globals.maxX+r):this.moveDirection==="right"&&(a=i.globals.minX-r,s=i.globals.maxX-r),a=Math.floor(a),s=Math.floor(s),this.updateScrolledChart({xaxis:{min:a,max:s}},a,s)}},{key:"panScrolled",value:function(i,a){var s=this.w,r=this.xyRatios,n=P.clone(s.globals.initialConfig.yaxis),o=r.xRatio,h=s.globals.minX,c=s.globals.maxX;s.globals.isRangeBar&&(o=r.invertedYRatio,h=s.globals.minY,c=s.globals.maxY),this.moveDirection==="left"?(i=h+s.globals.gridWidth/15*o,a=c+s.globals.gridWidth/15*o):this.moveDirection==="right"&&(i=h-s.globals.gridWidth/15*o,a=c-s.globals.gridWidth/15*o),s.globals.isRangeBar||(is.globals.initialMaxX)&&(i=h,a=c);var d={min:i,max:a};s.config.chart.zoom.autoScaleYaxis&&(n=new ge(this.ctx).autoScaleY(this.ctx,n,{xaxis:d}));var g={xaxis:{min:i,max:a}};s.config.chart.group||(g.yaxis=n),this.updateScrolledChart(g,i,a)}},{key:"updateScrolledChart",value:function(i,a,s){var r=this.w;this.ctx.updateHelpers._updateOptions(i,!1,!1),typeof r.config.chart.events.scrolled=="function"&&r.config.chart.events.scrolled(this.ctx,{xaxis:{min:a,max:s}})}}]),t}(),Yt=function(){function f(e){Y(this,f),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return F(f,[{key:"getNearestValues",value:function(e){var t=e.hoverArea,i=e.elGrid,a=e.clientX,s=e.clientY,r=this.w,n=i.getBoundingClientRect(),o=n.width,h=n.height,c=o/(r.globals.dataPoints-1),d=h/r.globals.dataPoints,g=this.hasBars();!r.globals.comboCharts&&!g||r.config.xaxis.convertedCatToNumeric||(c=o/r.globals.dataPoints);var p=a-n.left-r.globals.barPadForNumericAxis,x=s-n.top;p<0||x<0||p>o||x>h?(t.classList.remove("hovering-zoom"),t.classList.remove("hovering-pan")):r.globals.zoomEnabled?(t.classList.remove("hovering-pan"),t.classList.add("hovering-zoom")):r.globals.panEnabled&&(t.classList.remove("hovering-zoom"),t.classList.add("hovering-pan"));var m=Math.round(p/c),v=Math.floor(x/d);g&&!r.config.xaxis.convertedCatToNumeric&&(m=Math.ceil(p/c),m-=1);var w=null,A=null,l=r.globals.seriesXvalues.map(function(S){return S.filter(function(C){return P.isNumber(C)})}),u=r.globals.seriesYvalues.map(function(S){return S.filter(function(C){return P.isNumber(C)})});if(r.globals.isXNumeric){var b=this.ttCtx.getElGrid().getBoundingClientRect(),y=p*(b.width/o),k=x*(b.height/h);w=(A=this.closestInMultiArray(y,k,l,u)).index,m=A.j,w!==null&&(l=r.globals.seriesXvalues[w],m=(A=this.closestInArray(y,l)).index)}return r.globals.capturedSeriesIndex=w===null?-1:w,(!m||m<1)&&(m=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=v:r.globals.capturedDataPointIndex=m,{capturedSeries:w,j:r.globals.isBarHorizontal?v:m,hoverX:p,hoverY:x}}},{key:"closestInMultiArray",value:function(e,t,i,a){var s=this.w,r=0,n=null,o=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):n=0;var h=i[r][0],c=Math.abs(e-h);if(i.forEach(function(p){p.forEach(function(x,m){var v=Math.abs(e-x);v<=c&&(c=v,o=m)})}),o!==-1){var d=a[r][o],g=Math.abs(t-d);n=r,a.forEach(function(p,x){var m=Math.abs(t-p[o]);m<=g&&(g=m,n=x)})}return{index:n,j:o}}},{key:"getFirstActiveXArray",value:function(e){for(var t=this.w,i=0,a=e.map(function(r,n){return r.length>0?n:-1}),s=0;s0)for(var a=0;a *")):this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap > *")}},{key:"getAllMarkers",value:function(){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap");(e=J(e)).sort(function(i,a){var s=Number(i.getAttribute("data:realIndex")),r=Number(a.getAttribute("data:realIndex"));return rs?-1:0});var t=[];return e.forEach(function(i){t.push(i.querySelector(".apexcharts-marker"))}),t}},{key:"hasMarkers",value:function(e){return this.getElMarkers(e).length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(e){var t=this.w,i=t.config.markers.hover.size;return i===void 0&&(i=t.globals.markers.size[e]+t.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(e){var t=this.w,i=this.ttCtx;i.allTooltipSeriesGroups.length===0&&(i.allTooltipSeriesGroups=t.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s ').concat(L.attrs.name,"
"),C+="
".concat(L.val,"
")}),l.innerHTML=S+"
",u.innerHTML=C+"
"};n?h.globals.seriesGoals[t][i]&&Array.isArray(h.globals.seriesGoals[t][i])?b():(l.innerHTML="",u.innerHTML=""):b()}else l.innerHTML="",u.innerHTML="";if(m!==null&&(a[t].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=h.config.tooltip.z.title,a[t].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=m!==void 0?m:""),n&&v[0]){if(h.config.tooltip.hideEmptySeries){var y=a[t].querySelector(".apexcharts-tooltip-marker"),k=a[t].querySelector(".apexcharts-tooltip-text");parseFloat(d)==0?(y.style.display="none",k.style.display="none"):(y.style.display="block",k.style.display="block")}d==null||h.globals.ancillaryCollapsedSeriesIndices.indexOf(t)>-1||h.globals.collapsedSeriesIndices.indexOf(t)>-1?v[0].parentNode.style.display="none":v[0].parentNode.style.display=h.config.tooltip.items.display}}},{key:"toggleActiveInactiveSeries",value:function(e){var t=this.w;if(e)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=t.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=t.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(e){var t=e.i,i=e.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",n="",o=null,h=null,c={series:a.globals.series,seriesIndex:t,dataPointIndex:i,w:a},d=a.globals.ttZFormatter;i===null?h=a.globals.series[t]:a.globals.isXNumeric&&a.config.chart.type!=="treemap"?(r=s[t][i],s[t].length===0&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=a.globals.labels[i]!==void 0?a.globals.labels[i]:"";var g=r;return a.globals.isXNumeric&&a.config.xaxis.type==="datetime"?r=new Se(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,g,g,{i:void 0,dateFormatter:new j(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](g,c):a.globals.xLabelFormatter(g,c),a.config.tooltip.x.formatter!==void 0&&(r=a.globals.ttKeyFormatter(g,c)),a.globals.seriesZ.length>0&&a.globals.seriesZ[t].length>0&&(o=d(a.globals.seriesZ[t][i],a)),n=typeof a.config.xaxis.tooltip.formatter=="function"?a.globals.xaxisTooltipFormatter(g,c):r,{val:Array.isArray(h)?h.join(" "):h,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(n)?n.join(" "):n,zVal:o}}},{key:"handleCustomTooltip",value:function(e){var t=e.i,i=e.j,a=e.y1,s=e.y2,r=e.w,n=this.ttCtx.getElTooltip(),o=r.config.tooltip.custom;Array.isArray(o)&&o[t]&&(o=o[t]),n.innerHTML=o({ctx:this.ctx,series:r.globals.series,seriesIndex:t,dataPointIndex:i,y1:a,y2:s,w:r})}}]),f}(),Ft=function(){function f(e){Y(this,f),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return F(f,[{key:"moveXCrosshairs",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=e-i.xcrosshairsWidth/2,n=a.globals.labels.slice().length;if(t!==null&&(r=a.globals.gridWidth/n*t),s===null||a.globals.isBarHorizontal||(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var o=r;a.config.xaxis.crosshairs.width!=="tickWidth"&&a.config.xaxis.crosshairs.width!=="barWidth"||(o=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:"moveYCrosshairs",value:function(e){var t=this.ttCtx;t.ycrosshairs!==null&&M.setAttrs(t.ycrosshairs,{y1:e,y2:e}),t.ycrosshairsHidden!==null&&M.setAttrs(t.ycrosshairsHidden,{y1:e,y2:e})}},{key:"moveXAxisTooltip",value:function(e){var t=this.w,i=this.ttCtx;if(i.xaxisTooltip!==null&&i.xcrosshairsWidth!==0){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+t.config.xaxis.tooltip.offsetY+t.globals.translateY+1+t.config.xaxis.offsetY;if(e-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(e)){e+=t.globals.translateX;var s;s=new M(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=e+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(e){var t=this.w,i=this.ttCtx;i.yaxisTTEls===null&&(i.yaxisTTEls=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=t.globals.translateY+a,r=i.yaxisTTEls[e].getBoundingClientRect().height,n=t.globals.translateYAxisX[e]-2;t.config.yaxis[e].opposite&&(n-=26),s-=r/2,t.globals.ignoreYAxisIndexes.indexOf(e)===-1?(i.yaxisTTEls[e].classList.add("apexcharts-active"),i.yaxisTTEls[e].style.top=s+"px",i.yaxisTTEls[e].style.left=n+t.config.yaxis[e].tooltip.offsetX+"px"):i.yaxisTTEls[e].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),n=s.tooltipRect,o=i!==null?parseFloat(i):1,h=parseFloat(e)+o+5,c=parseFloat(t)+o/2;if(h>a.globals.gridWidth/2&&(h=h-n.ttWidth-o-10),h>a.globals.gridWidth-n.ttWidth-10&&(h=a.globals.gridWidth-n.ttWidth),h<-20&&(h=-20),a.config.tooltip.followCursor){var d=s.getElGrid().getBoundingClientRect();(h=s.e.clientX-d.left)>a.globals.gridWidth/2&&(h-=s.tooltipRect.ttWidth),(c=s.e.clientY+a.globals.translateY-d.top)>a.globals.gridHeight/2&&(c-=s.tooltipRect.ttHeight)}else a.globals.isBarHorizontal||n.ttHeight/2+c>a.globals.gridHeight&&(c=a.globals.gridHeight-n.ttHeight+a.globals.translateY);isNaN(h)||(h+=a.globals.translateX,r.style.left=h+"px",r.style.top=c+"px")}},{key:"moveMarkers",value:function(e,t){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[e]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(e,"'] .apexcharts-marker")),r=0;r0&&(c.setAttribute("r",o),c.setAttribute("cx",i),c.setAttribute("cy",a)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,a,o)}}},{key:"moveDynamicPointsOnHover",value:function(e){var t,i=this.ttCtx,a=i.w,s=0,r=0,n=a.globals.pointsArray;t=new Q(this.ctx).getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var o=i.tooltipUtil.getHoverMarkerSize(t);n[t]&&(s=n[t][e][0],r=n[t][e][1]);var h=i.tooltipUtil.getAllMarkers();if(h!==null)for(var c=0;c0?(h[c]&&h[c].setAttribute("r",o),h[c]&&h[c].setAttribute("cy",g)):h[c]&&h[c].setAttribute("r",0)}}this.moveXCrosshairs(s),i.fixedTooltip||this.moveTooltip(s,r||a.globals.gridHeight,o)}},{key:"moveStickyTooltipOverBars",value:function(e,t){var i=this.w,a=this.ttCtx,s=i.globals.columnSeries?i.globals.columnSeries.length:i.globals.series.length,r=s>=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1;i.globals.isBarHorizontal&&(r=new Q(this.ctx).getActiveConfigSeriesIndex("desc")+1);var n=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(r,"'] path[j='").concat(e,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(e,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(e,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(e,"']"));n||typeof t!="number"||(n=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[data\\:realIndex='".concat(t,"'] path[j='").concat(e,`'], + .apexcharts-candlestick-series .apexcharts-series[data\\:realIndex='`).concat(t,"'] path[j='").concat(e,`'], + .apexcharts-boxPlot-series .apexcharts-series[data\\:realIndex='`).concat(t,"'] path[j='").concat(e,`'], + .apexcharts-rangebar-series .apexcharts-series[data\\:realIndex='`).concat(t,"'] path[j='").concat(e,"']")));var o=n?parseFloat(n.getAttribute("cx")):0,h=n?parseFloat(n.getAttribute("cy")):0,c=n?parseFloat(n.getAttribute("barWidth")):0,d=a.getElGrid().getBoundingClientRect(),g=n&&(n.classList.contains("apexcharts-candlestick-area")||n.classList.contains("apexcharts-boxPlot-area"));i.globals.isXNumeric?(n&&!g&&(o-=s%2!=0?c/2:0),n&&g&&i.globals.comboCharts&&(o-=c/2)):i.globals.isBarHorizontal||(o=a.xAxisTicksPositions[e-1]+a.dataPointsDividedWidth/2,isNaN(o)&&(o=a.xAxisTicksPositions[e]-a.dataPointsDividedWidth/2)),i.globals.isBarHorizontal?h-=a.tooltipRect.ttHeight:i.config.tooltip.followCursor?h=a.e.clientY-d.top-a.tooltipRect.ttHeight/2:h+a.tooltipRect.ttHeight+15>i.globals.gridHeight&&(h=i.globals.gridHeight),i.globals.isBarHorizontal||this.moveXCrosshairs(o),a.fixedTooltip||this.moveTooltip(o,h||i.globals.gridHeight)}}]),f}(),Bi=function(){function f(e){Y(this,f),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new Ft(e)}return F(f,[{key:"drawDynamicPoints",value:function(){var e=this.w,t=new M(this.ctx),i=new Ce(this.ctx),a=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series");a=J(a),e.config.chart.stacked&&a.sort(function(d,g){return parseFloat(d.getAttribute("data:realIndex"))-parseFloat(g.getAttribute("data:realIndex"))});for(var s=0;s2&&arguments[2]!==void 0?arguments[2]:null,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=this.w;s.config.chart.type!=="bubble"&&this.newPointSize(e,t);var r=t.getAttribute("cx"),n=t.getAttribute("cy");if(i!==null&&a!==null&&(r=i,n=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if(s.config.chart.type==="radar"){var o=this.ttCtx.getElGrid().getBoundingClientRect();r=this.ttCtx.e.clientX-o.left}this.tooltipPosition.moveTooltip(r,n,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(e){for(var t=this.w,i=this,a=this.ttCtx,s=e,r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),n=t.config.markers.hover.size,o=0;o=0?e[t].setAttribute("r",i):e[t].setAttribute("r",0)}}}]),f}(),Gi=function(){function f(e){Y(this,f),this.w=e.w;var t=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!t.globals.isBarHorizontal&&t.config.chart.type==="rangeBar"&&t.config.plotOptions.bar.rangeBarGroupRows}return F(f,[{key:"getAttr",value:function(e,t){return parseFloat(e.target.getAttribute(t))}},{key:"handleHeatTreeTooltip",value:function(e){var t=e.e,i=e.opt,a=e.x,s=e.y,r=e.type,n=this.ttCtx,o=this.w;if(t.target.classList.contains("apexcharts-".concat(r,"-rect"))){var h=this.getAttr(t,"i"),c=this.getAttr(t,"j"),d=this.getAttr(t,"cx"),g=this.getAttr(t,"cy"),p=this.getAttr(t,"width"),x=this.getAttr(t,"height");if(n.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:h,j:c,shared:!1,e:t}),o.globals.capturedSeriesIndex=h,o.globals.capturedDataPointIndex=c,a=d+n.tooltipRect.ttWidth/2+p,s=g+n.tooltipRect.ttHeight/2-x/2,n.tooltipPosition.moveXCrosshairs(d+p/2),a>o.globals.gridWidth/2&&(a=d-n.tooltipRect.ttWidth/2+p),n.w.config.tooltip.followCursor){var m=o.globals.dom.elWrap.getBoundingClientRect();a=o.globals.clientX-m.left-(a>o.globals.gridWidth/2?n.tooltipRect.ttWidth:0),s=o.globals.clientY-m.top-(s>o.globals.gridHeight/2?n.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(e){var t,i,a=e.e,s=e.opt,r=e.x,n=e.y,o=this.w,h=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var c=parseInt(s.paths.getAttribute("cx"),10),d=parseInt(s.paths.getAttribute("cy"),10),g=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),t=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,h.intersect){var p=P.findAncestor(s.paths,"apexcharts-series");p&&(t=parseInt(p.getAttribute("data:realIndex"),10))}if(h.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:t,j:i,shared:!h.showOnIntersect&&o.config.tooltip.shared,e:a}),a.type==="mouseup"&&h.markerClick(a,t,i),o.globals.capturedSeriesIndex=t,o.globals.capturedDataPointIndex=i,r=c,n=d+o.globals.translateY-1.4*h.tooltipRect.ttHeight,h.w.config.tooltip.followCursor){var x=h.getElGrid().getBoundingClientRect();n=h.e.clientY+o.globals.translateY-x.top}g<0&&(n=d),h.marker.enlargeCurrentPoint(i,s.paths,r,n)}return{x:r,y:n}}},{key:"handleBarTooltip",value:function(e){var t,i,a=e.e,s=e.opt,r=this.w,n=this.ttCtx,o=n.getElTooltip(),h=0,c=0,d=0,g=this.getBarTooltipXY({e:a,opt:s});t=g.i;var p=g.barHeight,x=g.j;r.globals.capturedSeriesIndex=t,r.globals.capturedDataPointIndex=x,r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||!r.config.tooltip.shared?(c=g.x,d=g.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[t]:r.config.stroke.width,h=c):r.globals.comboCharts||r.config.tooltip.shared||(h/=2),isNaN(d)&&(d=r.globals.svgHeight-n.tooltipRect.ttHeight);var m=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),v=r.globals.isMultipleYAxis?r.config.yaxis[m]&&r.config.yaxis[m].reversed:r.config.yaxis[0].reversed;if(c+n.tooltipRect.ttWidth>r.globals.gridWidth&&!v?c-=n.tooltipRect.ttWidth:c<0&&(c=0),n.w.config.tooltip.followCursor){var w=n.getElGrid().getBoundingClientRect();d=n.e.clientY-w.top}n.tooltip===null&&(n.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?n.tooltipPosition.moveXCrosshairs(h+i/2):n.tooltipPosition.moveXCrosshairs(h)),!n.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars())&&(v&&(c-=n.tooltipRect.ttWidth)<0&&(c=0),!v||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||(d=d+p-2*(r.globals.series[t][x]<0?p:0)),d=d+r.globals.translateY-n.tooltipRect.ttHeight/2,o.style.left=c+r.globals.translateX+"px",o.style.top=d+"px")}},{key:"getBarTooltipXY",value:function(e){var t=this,i=e.e,a=e.opt,s=this.w,r=null,n=this.ttCtx,o=0,h=0,c=0,d=0,g=0,p=i.target.classList;if(p.contains("apexcharts-bar-area")||p.contains("apexcharts-candlestick-area")||p.contains("apexcharts-boxPlot-area")||p.contains("apexcharts-rangebar-area")){var x=i.target,m=x.getBoundingClientRect(),v=a.elGrid.getBoundingClientRect(),w=m.height;g=m.height;var A=m.width,l=parseInt(x.getAttribute("cx"),10),u=parseInt(x.getAttribute("cy"),10);d=parseFloat(x.getAttribute("barWidth"));var b=i.type==="touchmove"?i.touches[0].clientX:i.clientX;r=parseInt(x.getAttribute("j"),10),o=parseInt(x.parentNode.getAttribute("rel"),10)-1;var y=x.getAttribute("data-range-y1"),k=x.getAttribute("data-range-y2");s.globals.comboCharts&&(o=parseInt(x.parentNode.getAttribute("data:realIndex"),10));var S=function(L){return s.globals.isXNumeric?l-A/2:t.isVerticalGroupedRangeBar?l+A/2:l-n.dataPointsDividedWidth+A/2},C=function(){return u-n.dataPointsDividedHeight+w/2-n.tooltipRect.ttHeight/2};n.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:o,j:r,y1:y?parseInt(y,10):null,y2:k?parseInt(k,10):null,shared:!n.showOnIntersect&&s.config.tooltip.shared,e:i}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(h=b-v.left+15,c=C()):(h=S(),c=i.clientY-v.top-n.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((h=l)0&&i.setAttribute("width",t.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var e=this.w,t=this.ttCtx;t.ycrosshairs=e.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),t.ycrosshairsHidden=e.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(e,t,i){var a=this.ttCtx,s=this.w,r=s.globals.yLabelFormatters[e];if(a.yaxisTooltips[e]){var n=a.getElGrid().getBoundingClientRect(),o=(t-n.top)*i.yRatio[e],h=s.globals.maxYArr[e]-s.globals.minYArr[e],c=s.globals.minYArr[e]+(h-o);a.tooltipPosition.moveYCrosshairs(t-n.top),a.yaxisTooltipText[e].innerHTML=r(c),a.tooltipPosition.moveYAxisTooltip(e)}}}]),f}(),vt=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w;var t=this.w;this.tConfig=t.config.tooltip,this.tooltipUtil=new Yt(this),this.tooltipLabels=new Wi(this),this.tooltipPosition=new Ft(this),this.marker=new Bi(this),this.intersect=new Gi(this),this.axesTooltip=new Vi(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!t.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return F(f,[{key:"getElTooltip",value:function(e){return e||(e=this),e.w.globals.dom.baseEl?e.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(e){var t=this.w;this.xyRatios=e,this.isXAxisTooltipEnabled=t.config.xaxis.tooltip.enabled&&t.globals.axisCharts,this.yaxisTooltips=t.config.yaxis.map(function(r,n){return!!(r.show&&r.tooltip.enabled&&t.globals.axisCharts)}),this.allTooltipSeriesGroups=[],t.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),t.config.tooltip.cssClass&&i.classList.add(t.config.tooltip.cssClass),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),t.globals.dom.elWrap.appendChild(i),t.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new we(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!t.globals.comboCharts&&!this.tConfig.intersect&&t.config.chart.type!=="rangeBar"||this.tConfig.shared||(this.showOnIntersect=!0),t.config.markers.size!==0&&t.globals.markers.largestSize!==0||this.marker.drawDynamicPoints(this),t.globals.collapsedSeries.length!==t.globals.series.length){this.dataPointsDividedHeight=t.globals.gridHeight/t.globals.dataPoints,this.dataPointsDividedWidth=t.globals.gridWidth/t.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||t.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=t.globals.series.length;(t.globals.xyCharts||t.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:t.globals.series.length),this.legendLabels=t.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(e){for(var t=this,i=this.w,a=[],s=this.getElTooltip(),r=function(o){var h=document.createElement("div");h.classList.add("apexcharts-tooltip-series-group"),h.style.order=i.config.tooltip.inverseOrder?e-o:o+1,t.tConfig.shared&&t.tConfig.enabledOnSeries&&Array.isArray(t.tConfig.enabledOnSeries)&&t.tConfig.enabledOnSeries.indexOf(o)<0&&h.classList.add("apexcharts-tooltip-series-group-hidden");var c=document.createElement("span");c.classList.add("apexcharts-tooltip-marker"),c.style.backgroundColor=i.globals.colors[o],h.appendChild(c);var d=document.createElement("div");d.classList.add("apexcharts-tooltip-text"),d.style.fontFamily=t.tConfig.style.fontFamily||i.config.chart.fontFamily,d.style.fontSize=t.tConfig.style.fontSize,["y","goals","z"].forEach(function(g){var p=document.createElement("div");p.classList.add("apexcharts-tooltip-".concat(g,"-group"));var x=document.createElement("span");x.classList.add("apexcharts-tooltip-text-".concat(g,"-label")),p.appendChild(x);var m=document.createElement("span");m.classList.add("apexcharts-tooltip-text-".concat(g,"-value")),p.appendChild(m),d.appendChild(p)}),h.appendChild(d),s.appendChild(h),a.push(h)},n=0;n0&&this.addPathsEventListeners(x,d),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(d)}}},{key:"drawFixedTooltipRect",value:function(){var e=this.w,t=this.getElTooltip(),i=t.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,n=this.tConfig.fixed.offsetY,o=this.tConfig.fixed.position.toLowerCase();return o.indexOf("right")>-1&&(r=r+e.globals.svgWidth-a+10),o.indexOf("bottom")>-1&&(n=n+e.globals.svgHeight-s-10),t.style.left=r+"px",t.style.top=n+"px",{x:r,y:n,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(e){var t=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(t,e)}},{key:"addPathsEventListeners",value:function(e,t){for(var i=this,a=function(r){var n={paths:e[r],tooltipEl:t.tooltipEl,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:t.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map(function(o){return e[r].addEventListener(o,i.onSeriesHover.bind(i,n),{capture:!1,passive:!0})})},s=0;s=100?this.seriesHover(e,t):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout(function(){i.seriesHover(e,t)},100-a))}},{key:"seriesHover",value:function(e,t){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||s.globals.dataPoints===0)||(a.length?a.forEach(function(r){var n=i.getElTooltip(r),o={paths:e.paths,tooltipEl:n,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:r.w.globals.tooltip.ttItems};r.w.globals.minX===i.w.globals.minX&&r.w.globals.maxX===i.w.globals.maxX&&r.w.globals.tooltip.seriesHoverByContext({chartCtx:r,ttCtx:r.w.globals.tooltip,opt:o,e:t})}):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:e,e:t}))}},{key:"seriesHoverByContext",value:function(e){var t=e.chartCtx,i=e.ttCtx,a=e.opt,s=e.e,r=t.w,n=this.getElTooltip();n&&(i.tooltipRect={x:0,y:0,ttWidth:n.getBoundingClientRect().width,ttHeight:n.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared&&this.tConfig.onDatasetHover.highlightDataSeries&&new Q(t).toggleSeriesOnHover(s,s.target.parentNode),i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}))}},{key:"axisChartsTooltips",value:function(e){var t,i,a=e.e,s=e.opt,r=this.w,n=s.elGrid.getBoundingClientRect(),o=a.type==="touchmove"?a.touches[0].clientX:a.clientX,h=a.type==="touchmove"?a.touches[0].clientY:a.clientY;if(this.clientY=h,this.clientX=o,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,hn.top+n.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var c=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(c)<0)return void this.handleMouseOut(s)}var d=this.getElTooltip(),g=this.getElXCrosshairs(),p=r.globals.xyCharts||r.config.chart.type==="bar"&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if(a.type==="mousemove"||a.type==="touchmove"||a.type==="mouseup"){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;g!==null&&g.classList.add("apexcharts-active");var x=this.yaxisTooltips.filter(function(w){return w===!0});if(this.ycrosshairs!==null&&x.length&&this.ycrosshairs.classList.add("apexcharts-active"),p&&!this.showOnIntersect)this.handleStickyTooltip(a,o,h,s);else if(r.config.chart.type==="heatmap"||r.config.chart.type==="treemap"){var m=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:t,y:i,type:r.config.chart.type});t=m.x,i=m.y,d.style.left=t+"px",d.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:t,y:i});if(this.yaxisTooltips.length)for(var v=0;vh.width)this.handleMouseOut(a);else if(o!==null)this.handleStickyCapturedSeries(e,o,a,n);else if(this.tooltipUtil.isXoverlap(n)||s.globals.isBarHorizontal){var c=s.globals.series.findIndex(function(d,g){return!s.globals.collapsedSeriesIndices.includes(g)});this.create(e,this,c,n,a.ttItems)}}},{key:"handleStickyCapturedSeries",value:function(e,t,i,a){var s=this.w;if(!this.tConfig.shared&&s.globals.series[t][a]===null)return void this.handleMouseOut(i);if(s.globals.series[t][a]!==void 0)this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(e,this,t,a,i.ttItems):this.create(e,this,t,a,i.ttItems,!1);else if(this.tooltipUtil.isXoverlap(a)){var r=s.globals.series.findIndex(function(n,o){return!s.globals.collapsedSeriesIndices.includes(o)});this.create(e,this,r,a,i.ttItems)}}},{key:"deactivateHoverFilter",value:function(){for(var e=this.w,t=new M(this.ctx),i=e.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&arguments[5]!==void 0?arguments[5]:null,k=this.w,S=t;e.type==="mouseup"&&this.markerClick(e,i,a),y===null&&(y=this.tConfig.shared);var C=this.tooltipUtil.hasMarkers(i),L=this.tooltipUtil.getElBars();if(k.config.legend.tooltipHoverFormatter){var T=k.config.legend.tooltipHoverFormatter,z=Array.from(this.legendLabels);z.forEach(function(Z){var K=Z.getAttribute("data:default-text");Z.innerHTML=decodeURIComponent(K)});for(var I=0;I0?S.marker.enlargePoints(a):S.tooltipPosition.moveDynamicPointsOnHover(a);else if(this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(L),this.barSeriesHeight>0)){var G=new M(this.ctx),N=k.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(a,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a,i);for(var W=0;W0&&a.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(x-=d*k)),y&&(x=x+p.height/2-l/2-2);var C=this.barCtx.series[s][r]<0,L=h;switch(this.barCtx.isReversed&&(L=h-g+(C?2*g:0),h-=g),w.position){case"center":m=y?C?L-g/2+b:L+g/2-b:C?L-g/2+p.height/2+b:L+g/2+p.height/2-b;break;case"bottom":m=y?C?L-g+b:L+g-b:C?L-g+p.height+l+b:L+g-p.height/2+l-b;break;case"top":m=y?C?L+b:L-b:C?L-p.height/2-b:L+p.height+b}if(this.barCtx.lastActiveBarSerieIndex===n&&A.enabled){var T=new M(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:n,j:r}),v.fontSize);t=C?L-T.height/2-b-A.offsetY+18:L+T.height+b+A.offsetY-18,i=x+A.offsetX}return a.config.chart.stacked||(m<0?m=0+l:m+p.height/3>a.globals.gridHeight&&(m=a.globals.gridHeight-l)),{bcx:c,bcy:h,dataLabelsX:x,dataLabelsY:m,totalDataLabelsX:i,totalDataLabelsY:t,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(e){var t=this.w,i=e.x,a=e.i,s=e.j,r=e.realIndex,n=e.groupIndex,o=e.bcy,h=e.barHeight,c=e.barWidth,d=e.textRects,g=e.dataLabelsX,p=e.strokeWidth,x=e.dataLabelsConfig,m=e.barDataLabelsConfig,v=e.barTotalDataLabelsConfig,w=e.offX,A=e.offY,l=t.globals.gridHeight/t.globals.dataPoints;c=Math.abs(c);var u,b,y=(o+=n!==-1?n*h:0)-(this.barCtx.isRangeBar?0:l)+h/2+d.height/2+A-3,k="start",S=this.barCtx.series[a][s]<0,C=i;switch(this.barCtx.isReversed&&(C=i+c-(S?2*c:0),i=t.globals.gridWidth-c),m.position){case"center":g=S?C+c/2-w:Math.max(d.width/2,C-c/2)+w;break;case"bottom":g=S?C+c-p-Math.round(d.width/2)-w:C-c+p+Math.round(d.width/2)+w;break;case"top":g=S?C-p+Math.round(d.width/2)-w:C-p-Math.round(d.width/2)+w}if(this.barCtx.lastActiveBarSerieIndex===r&&v.enabled){var L=new M(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),x.fontSize);S?(u=C-p+Math.round(L.width/2)-w-v.offsetX-15,k="end"):u=C-p-Math.round(L.width/2)+w+v.offsetX+15,b=y+v.offsetY}return t.config.chart.stacked||(g<0?g=g+d.width+p:g+d.width/2>t.globals.gridWidth&&(g=t.globals.gridWidth-d.width-p)),{bcx:i,bcy:o,dataLabelsX:g,dataLabelsY:y,totalDataLabelsX:u,totalDataLabelsY:b,totalDataLabelsAnchor:k}}},{key:"drawCalculatedDataLabels",value:function(e){var t=e.x,i=e.y,a=e.val,s=e.i,r=e.j,n=e.textRects,o=e.barHeight,h=e.barWidth,c=e.dataLabelsConfig,d=this.w,g="rotate(0)";d.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(g="rotate(-90, ".concat(t,", ").concat(i,")"));var p=new de(this.barCtx.ctx),x=new M(this.barCtx.ctx),m=c.formatter,v=null,w=d.globals.collapsedSeriesIndices.indexOf(s)>-1;if(c.enabled&&!w){v=x.group({class:"apexcharts-data-labels",transform:g});var A="";a!==void 0&&(A=m(a,E(E({},d),{},{seriesIndex:s,dataPointIndex:r,w:d}))),!a&&d.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(A="");var l=d.globals.series[s][r]<0,u=d.config.plotOptions.bar.dataLabels.position;d.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(u==="top"&&(c.textAnchor=l?"end":"start"),u==="center"&&(c.textAnchor="middle"),u==="bottom"&&(c.textAnchor=l?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels&&hMath.abs(h)&&(A=""):n.height/1.6>Math.abs(o)&&(A=""));var b=E({},c);this.barCtx.isHorizontal&&a<0&&(c.textAnchor==="start"?b.textAnchor="end":c.textAnchor==="end"&&(b.textAnchor="start")),p.plotDataLabelsText({x:t,y:i,text:A,i:s,j:r,parent:v,dataLabelsConfig:b,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return v}},{key:"drawTotalDataLabels",value:function(e){var t,i=e.x,a=e.y,s=e.val,r=e.barWidth,n=e.barHeight,o=e.realIndex,h=e.textAnchor,c=e.barTotalDataLabelsConfig,d=this.w,g=new M(this.barCtx.ctx);return c.enabled&&i!==void 0&&a!==void 0&&this.barCtx.lastActiveBarSerieIndex===o&&(t=g.drawText({x:i-(!d.globals.isBarHorizontal&&d.globals.seriesGroups.length?r/d.globals.seriesGroups.length:0),y:a-(d.globals.isBarHorizontal&&d.globals.seriesGroups.length?n/d.globals.seriesGroups.length:0),foreColor:c.style.color,text:s,textAnchor:h,fontFamily:c.style.fontFamily,fontSize:c.style.fontSize,fontWeight:c.style.fontWeight})),t}}]),f}(),ji=function(){function f(e){Y(this,f),this.w=e.w,this.barCtx=e}return F(f,[{key:"initVariables",value:function(e){var t=this.w;this.barCtx.series=e,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=e[i].length),t.globals.isXNumeric)for(var a=0;at.globals.minX&&t.globals.seriesX[i][a]0&&(a=h.globals.minXDiff/g),(r=a/d*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}String(this.barCtx.barOptions.columnWidth).indexOf("%")===-1&&(r=parseInt(this.barCtx.barOptions.columnWidth,10)),n=h.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?h.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),e=h.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return h.globals.barHeight=s,h.globals.barWidth=r,{x:e,y:t,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:n,zeroW:o}}},{key:"initializeStackedPrevVars",value:function(e){var t=e.w;t.globals.hasSeriesGroups?t.globals.seriesGroups.forEach(function(i){e[i]||(e[i]={}),e[i].prevY=[],e[i].prevX=[],e[i].prevYF=[],e[i].prevXF=[],e[i].prevYVal=[],e[i].prevXVal=[]}):(e.prevY=[],e.prevX=[],e.prevYF=[],e.prevXF=[],e.prevYVal=[],e.prevXVal=[])}},{key:"initializeStackedXYVars",value:function(e){var t=e.w;t.globals.hasSeriesGroups?t.globals.seriesGroups.forEach(function(i){e[i]||(e[i]={}),e[i].xArrj=[],e[i].xArrjF=[],e[i].xArrjVal=[],e[i].yArrj=[],e[i].yArrjF=[],e[i].yArrjVal=[]}):(e.xArrj=[],e.xArrjF=[],e.xArrjVal=[],e.yArrj=[],e.yArrjF=[],e.yArrjVal=[])}},{key:"getPathFillColor",value:function(e,t,i,a){var s,r,n,o,h=this.w,c=new ee(this.barCtx.ctx),d=null,g=this.barCtx.barOptions.distributed?i:t;return this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map(function(p){e[t][i]>=p.from&&e[t][i]<=p.to&&(d=p.color)}),h.config.series[t].data[i]&&h.config.series[t].data[i].fillColor&&(d=h.config.series[t].data[i].fillColor),c.fillPath({seriesNumber:this.barCtx.barOptions.distributed?g:a,dataPointIndex:i,color:d,value:e[t][i],fillConfig:(s=h.config.series[t].data[i])===null||s===void 0?void 0:s.fill,fillType:(r=h.config.series[t].data[i])!==null&&r!==void 0&&(n=r.fill)!==null&&n!==void 0&&n.type?(o=h.config.series[t].data[i])===null||o===void 0?void 0:o.fill.type:Array.isArray(h.config.fill.type)?h.config.fill.type[t]:h.config.fill.type})}},{key:"getStrokeWidth",value:function(e,t,i){var a=0,s=this.w;return this.barCtx.series[e][t]?this.barCtx.isNullValue=!1:this.barCtx.isNullValue=!0,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"shouldApplyRadius",value:function(e){var t=this.w,i=!1;return t.config.plotOptions.bar.borderRadius>0&&(t.config.chart.stacked&&t.config.plotOptions.bar.borderRadiusWhenStacked==="last"?this.barCtx.lastActiveBarSerieIndex===e&&(i=!0):i=!0),i}},{key:"barBackground",value:function(e){var t=e.j,i=e.i,a=e.x1,s=e.x2,r=e.y1,n=e.y2,o=e.elSeries,h=this.w,c=new M(this.barCtx.ctx),d=new Q(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&d===i){t>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(t%=this.barCtx.barOptions.colors.backgroundBarColors.length);var g=this.barCtx.barOptions.colors.backgroundBarColors[t],p=c.drawRect(a!==void 0?a:0,r!==void 0?r:0,s!==void 0?s:h.globals.gridWidth,n!==void 0?n:h.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,g,this.barCtx.barOptions.colors.backgroundBarOpacity);o.add(p),p.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(e){var t,i=e.barWidth,a=e.barXPosition,s=e.y1,r=e.y2,n=e.strokeWidth,o=e.seriesGroup,h=e.realIndex,c=e.i,d=e.j,g=e.w,p=new M(this.barCtx.ctx);(n=Array.isArray(n)?n[h]:n)||(n=0);var x=i,m=a;(t=g.config.series[h].data[d])!==null&&t!==void 0&&t.columnWidthOffset&&(m=a-g.config.series[h].data[d].columnWidthOffset/2,x=i+g.config.series[h].data[d].columnWidthOffset);var v=m,w=m+x;s+=.001,r+=.001;var A=p.move(v,s),l=p.move(v,s),u=p.line(w-n,s);if(g.globals.previousPaths.length>0&&(l=this.barCtx.getPreviousPath(h,d,!1)),A=A+p.line(v,r)+p.line(w-n,r)+p.line(w-n,s)+(g.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),l=l+p.line(v,s)+u+u+u+u+u+p.line(v,s)+(g.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),this.shouldApplyRadius(h)&&(A=p.roundPathCorners(A,g.config.plotOptions.bar.borderRadius)),g.config.chart.stacked){var b=this.barCtx;g.globals.hasSeriesGroups&&o&&(b=this.barCtx[o]),b.yArrj.push(r),b.yArrjF.push(Math.abs(s-r)),b.yArrjVal.push(this.barCtx.series[c][d])}return{pathTo:A,pathFrom:l}}},{key:"getBarpaths",value:function(e){var t,i=e.barYPosition,a=e.barHeight,s=e.x1,r=e.x2,n=e.strokeWidth,o=e.seriesGroup,h=e.realIndex,c=e.i,d=e.j,g=e.w,p=new M(this.barCtx.ctx);(n=Array.isArray(n)?n[h]:n)||(n=0);var x=i,m=a;(t=g.config.series[h].data[d])!==null&&t!==void 0&&t.barHeightOffset&&(x=i-g.config.series[h].data[d].barHeightOffset/2,m=a+g.config.series[h].data[d].barHeightOffset);var v=x,w=x+m;s+=.001,r+=.001;var A=p.move(s,v),l=p.move(s,v);g.globals.previousPaths.length>0&&(l=this.barCtx.getPreviousPath(h,d,!1));var u=p.line(s,w-n);if(A=A+p.line(r,v)+p.line(r,w-n)+u+(g.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),l=l+p.line(s,v)+u+u+u+u+u+p.line(s,v)+(g.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z"),this.shouldApplyRadius(h)&&(A=p.roundPathCorners(A,g.config.plotOptions.bar.borderRadius)),g.config.chart.stacked){var b=this.barCtx;g.globals.hasSeriesGroups&&o&&(b=this.barCtx[o]),b.xArrj.push(r),b.xArrjF.push(Math.abs(s-r)),b.xArrjVal.push(this.barCtx.series[c][d])}return{pathTo:A,pathFrom:l}}},{key:"checkZeroSeries",value:function(e){for(var t=e.series,i=this.w,a=0;a2&&arguments[2]!==void 0)||arguments[2]?t:null;return e!=null&&(i=t+e/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?e/this.barCtx.invertedYRatio:0)),i}},{key:"getYForValue",value:function(e,t){var i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2]?t:null;return e!=null&&(i=t-e/this.barCtx.yRatio[this.barCtx.yaxisIndex]+2*(this.barCtx.isReversed?e/this.barCtx.yRatio[this.barCtx.yaxisIndex]:0)),i}},{key:"getGoalValues",value:function(e,t,i,a,s){var r=this,n=this.w,o=[],h=function(g,p){var x;o.push((ie(x={},e,e==="x"?r.getXForValue(g,t,!1):r.getYForValue(g,i,!1)),ie(x,"attrs",p),x))};if(n.globals.seriesGoals[a]&&n.globals.seriesGoals[a][s]&&Array.isArray(n.globals.seriesGoals[a][s])&&n.globals.seriesGoals[a][s].forEach(function(g){h(g.value,g)}),this.barCtx.barOptions.isDumbbell&&n.globals.seriesRange.length){var c=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:n.globals.colors,d={strokeHeight:e==="x"?0:n.globals.markers.size[a],strokeWidth:e==="x"?n.globals.markers.size[a]:0,strokeDashArray:0,strokeLineCap:"round",strokeColor:Array.isArray(c[a])?c[a][0]:c[a]};h(n.globals.seriesRangeStart[a][s],d),h(n.globals.seriesRangeEnd[a][s],E(E({},d),{},{strokeColor:Array.isArray(c[a])?c[a][1]:c[a]}))}return o}},{key:"drawGoalLine",value:function(e){var t=e.barXPosition,i=e.barYPosition,a=e.goalX,s=e.goalY,r=e.barWidth,n=e.barHeight,o=new M(this.barCtx.ctx),h=o.group({className:"apexcharts-bar-goals-groups"});h.node.classList.add("apexcharts-element-hidden"),this.barCtx.w.globals.delayedElements.push({el:h.node}),h.attr("clip-path","url(#gridRectMarkerMask".concat(this.barCtx.w.globals.cuid,")"));var c=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach(function(d){var g=d.attrs.strokeHeight!==void 0?d.attrs.strokeHeight:n/2,p=i+g+n/2;c=o.drawLine(d.x,p-2*g,d.x,p,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeWidth?d.attrs.strokeWidth:2,d.attrs.strokeLineCap),h.add(c)}):Array.isArray(s)&&s.forEach(function(d){var g=d.attrs.strokeWidth!==void 0?d.attrs.strokeWidth:r/2,p=t+g+r/2;c=o.drawLine(p-2*g,d.y,p,d.y,d.attrs.strokeColor?d.attrs.strokeColor:void 0,d.attrs.strokeDashArray,d.attrs.strokeHeight?d.attrs.strokeHeight:2,d.attrs.strokeLineCap),h.add(c)}),h}},{key:"drawBarShadow",value:function(e){var t=e.prevPaths,i=e.currPaths,a=e.color,s=this.w,r=t.x,n=t.x1,o=t.barYPosition,h=i.x,c=i.x1,d=i.barYPosition,g=o+i.barHeight,p=new M(this.barCtx.ctx),x=new P,m=p.move(n,g)+p.line(r,g)+p.line(h,d)+p.line(c,d)+p.line(n,g)+(s.config.plotOptions.bar.borderRadiusApplication==="around"?" Z":" z");return p.drawPath({d:m,fill:x.shadeColor(.5,P.rgb2hex(a)),stroke:"none",strokeWidth:0,fillOpacity:1,classes:"apexcharts-bar-shadows"})}},{key:"getZeroValueEncounters",value:function(e){var t=e.i,i=e.j,a=this.w,s=0,r=0;return a.globals.seriesPercent.forEach(function(n,o){n[i]&&s++,othis.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts");for(var n=0,o=0;n0&&(this.visibleI=this.visibleI+1);var l=0,u=0;this.yRatio.length>1&&(this.yaxisIndex=w),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var b=this.barHelpers.initialPositions();x=b.y,l=b.barHeight,c=b.yDivision,g=b.zeroW,p=b.x,u=b.barWidth,h=b.xDivision,d=b.zeroH,this.horizontal||v.push(p+u/2);var y=a.group({class:"apexcharts-datalabels","data:realIndex":w});i.globals.delayedElements.push({el:y.node}),y.node.classList.add("apexcharts-element-hidden");var k=a.group({class:"apexcharts-bar-goals-markers"}),S=a.group({class:"apexcharts-bar-shadows"});i.globals.delayedElements.push({el:S.node}),S.node.classList.add("apexcharts-element-hidden");for(var C=0;C0){var X=this.barHelpers.drawBarShadow({color:typeof I=="string"&&I?.indexOf("url")===-1?I:P.hexToRgba(i.globals.colors[n]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:T});X&&S.add(X)}this.pathArr.push(T);var R=this.barHelpers.drawGoalLine({barXPosition:T.barXPosition,barYPosition:T.barYPosition,goalX:T.goalX,goalY:T.goalY,barHeight:l,barWidth:u});R&&k.add(R),x=T.y,p=T.x,C>0&&v.push(p+u/2),m.push(x),this.renderSeries({realIndex:w,pathFill:I,j:C,i:n,pathFrom:T.pathFrom,pathTo:T.pathTo,strokeWidth:L,elSeries:A,x:p,y:x,series:e,barHeight:T.barHeight?T.barHeight:l,barWidth:T.barWidth?T.barWidth:u,elDataLabelsWrap:y,elGoalsMarkers:k,elBarShadows:S,visibleSeries:this.visibleI,type:"bar"})}i.globals.seriesXvalues[w]=v,i.globals.seriesYvalues[w]=m,r.add(A)}return r}},{key:"renderSeries",value:function(e){var t=e.realIndex,i=e.pathFill,a=e.lineFill,s=e.j,r=e.i,n=e.groupIndex,o=e.pathFrom,h=e.pathTo,c=e.strokeWidth,d=e.elSeries,g=e.x,p=e.y,x=e.y1,m=e.y2,v=e.series,w=e.barHeight,A=e.barWidth,l=e.barXPosition,u=e.barYPosition,b=e.elDataLabelsWrap,y=e.elGoalsMarkers,k=e.elBarShadows,S=e.visibleSeries,C=e.type,L=this.w,T=new M(this.ctx);a||(a=this.barOptions.distributed?L.globals.stroke.colors[s]:L.globals.stroke.colors[t]),L.config.series[r].data[s]&&L.config.series[r].data[s].strokeColor&&(a=L.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var z=s/L.config.chart.animations.animateGradually.delay*(L.config.chart.animations.speed/L.globals.dataPoints)/2.4,I=T.renderPaths({i:r,j:s,realIndex:t,pathFrom:o,pathTo:h,stroke:a,strokeWidth:c,strokeLineCap:L.config.stroke.lineCap,fill:i,animationDelay:z,initialSpeed:L.config.chart.animations.speed,dataChangeSpeed:L.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(C,"-area")});I.attr("clip-path","url(#gridRectMask".concat(L.globals.cuid,")"));var X=L.config.forecastDataPoints;X.count>0&&s>=L.globals.dataPoints-X.count&&(I.node.setAttribute("stroke-dasharray",X.dashArray),I.node.setAttribute("stroke-width",X.strokeWidth),I.node.setAttribute("fill-opacity",X.fillOpacity)),x!==void 0&&m!==void 0&&(I.attr("data-range-y1",x),I.attr("data-range-y2",m)),new q(this.ctx).setSelectionFilter(I,t,s),d.add(I);var R=new _i(this).handleBarDataLabels({x:g,y:p,y1:x,y2:m,i:r,j:s,series:v,realIndex:t,groupIndex:n,barHeight:w,barWidth:A,barXPosition:l,barYPosition:u,renderedPath:I,visibleSeries:S});return R.dataLabels!==null&&b.add(R.dataLabels),R.totalDataLabels&&b.add(R.totalDataLabels),d.add(b),y&&d.add(y),k&&d.add(k),d}},{key:"drawBarPaths",value:function(e){var t,i=e.indexes,a=e.barHeight,s=e.strokeWidth,r=e.zeroW,n=e.x,o=e.y,h=e.yDivision,c=e.elSeries,d=this.w,g=i.i,p=i.j;if(d.globals.isXNumeric)t=(o=(d.globals.seriesX[g][p]-d.globals.minX)/this.invertedXRatio-a)+a*this.visibleI;else if(d.config.plotOptions.bar.hideZeroBarsWhenGrouped){var x=0,m=0;d.globals.seriesPercent.forEach(function(w,A){w[p]&&x++,A0&&(a=this.seriesLen*a/x),t=o+a*this.visibleI,t-=a*m}else t=o+a*this.visibleI;this.isFunnel&&(r-=(this.barHelpers.getXForValue(this.series[g][p],r)-r)/2),n=this.barHelpers.getXForValue(this.series[g][p],r);var v=this.barHelpers.getBarpaths({barYPosition:t,barHeight:a,x1:r,x2:n,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:g,j:p,w:d});return d.globals.isXNumeric||(o+=h),this.barHelpers.barBackground({j:p,i:g,y1:t-a*this.visibleI,y2:a*this.seriesLen,elSeries:c}),{pathTo:v.pathTo,pathFrom:v.pathFrom,x1:r,x:n,y:o,goalX:this.barHelpers.getGoalValues("x",r,null,g,p),barYPosition:t,barHeight:a}}},{key:"drawColumnPaths",value:function(e){var t,i=e.indexes,a=e.x,s=e.y,r=e.xDivision,n=e.barWidth,o=e.zeroH,h=e.strokeWidth,c=e.elSeries,d=this.w,g=i.realIndex,p=i.i,x=i.j,m=i.bc;if(d.globals.isXNumeric){var v=this.getBarXForNumericXAxis({x:a,j:x,realIndex:g,barWidth:n});a=v.x,t=v.barXPosition}else if(d.config.plotOptions.bar.hideZeroBarsWhenGrouped){var w=this.barHelpers.getZeroValueEncounters({i:p,j:x}),A=w.nonZeroColumns,l=w.zeroEncounters;A>0&&(n=this.seriesLen*n/A),t=a+n*this.visibleI,t-=n*l}else t=a+n*this.visibleI;s=this.barHelpers.getYForValue(this.series[p][x],o);var u=this.barHelpers.getColumnPaths({barXPosition:t,barWidth:n,y1:o,y2:s,strokeWidth:h,series:this.series,realIndex:i.realIndex,i:p,j:x,w:d});return d.globals.isXNumeric||(a+=r),this.barHelpers.barBackground({bc:m,j:x,i:p,x1:t-h/2-n*this.visibleI,x2:n*this.seriesLen+h/2,elSeries:c}),{pathTo:u.pathTo,pathFrom:u.pathFrom,x:a,y:s,goalY:this.barHelpers.getGoalValues("y",null,o,p,x),barXPosition:t,barWidth:n}}},{key:"getBarXForNumericXAxis",value:function(e){var t=e.x,i=e.barWidth,a=e.realIndex,s=e.j,r=this.w,n=a;return r.globals.seriesX[a].length||(n=r.globals.maxValsInArrayIndex),r.globals.seriesX[n][s]&&(t=(r.globals.seriesX[n][s]-r.globals.minX)/this.xRatio-i*this.seriesLen/2),{barXPosition:t+i*this.visibleI,x:t}}},{key:"getPreviousPath",value:function(e,t){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(e,10)&&a.globals.previousPaths[s].paths[t]!==void 0&&(i=a.globals.previousPaths[s].paths[t].d)}return i}}]),f}(),yt=function(f){ke(t,ue);var e=Ae(t);function t(){return Y(this,t),e.apply(this,arguments)}return F(t,[{key:"draw",value:function(i,a){var s=this,r=this.w;this.graphics=new M(this.ctx),this.bar=new ue(this.ctx,this.xyRatios);var n=new V(this.ctx,r);i=n.getLogSeries(i),this.yRatio=n.getLogYRatios(this.yRatio),this.barHelpers.initVariables(i),r.config.chart.stackType==="100%"&&(i=r.globals.seriesPercent.slice()),this.series=i,this.barHelpers.initializeStackedPrevVars(this);for(var o=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),h=0,c=0,d=function(x,m){var v=void 0,w=void 0,A=void 0,l=void 0,u=-1;s.groupCtx=s,r.globals.seriesGroups.forEach(function(N,W){N.indexOf(r.config.series[x].name)>-1&&(u=W)}),u!==-1&&(s.groupCtx=s[r.globals.seriesGroups[u]]);var b=[],y=[],k=r.globals.comboCharts?a[x]:x;s.yRatio.length>1&&(s.yaxisIndex=k),s.isReversed=r.config.yaxis[s.yaxisIndex]&&r.config.yaxis[s.yaxisIndex].reversed;var S=s.graphics.group({class:"apexcharts-series",seriesName:P.escapeString(r.globals.seriesNames[k]),rel:x+1,"data:realIndex":k});s.ctx.series.addCollapsedClassToSeries(S,k);var C=s.graphics.group({class:"apexcharts-datalabels","data:realIndex":k}),L=s.graphics.group({class:"apexcharts-bar-goals-markers"}),T=0,z=0,I=s.initialPositions(h,c,v,w,A,l);c=I.y,T=I.barHeight,w=I.yDivision,l=I.zeroW,h=I.x,z=I.barWidth,v=I.xDivision,A=I.zeroH,r.globals.barHeight=T,r.globals.barWidth=z,s.barHelpers.initializeStackedXYVars(s),s.groupCtx.prevY.length===1&&s.groupCtx.prevY[0].every(function(N){return isNaN(N)})&&(s.groupCtx.prevY[0]=s.groupCtx.prevY[0].map(function(N){return A}),s.groupCtx.prevYF[0]=s.groupCtx.prevYF[0].map(function(N){return 0}));for(var X=0;X1?(s=p.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:g*parseInt(p.config.plotOptions.bar.columnWidth,10)/100,String(p.config.plotOptions.bar.columnWidth).indexOf("%")===-1&&(g=parseInt(p.config.plotOptions.bar.columnWidth,10)),n=p.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?p.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),i=p.globals.padHorizontal+(s-g)/2),{x:i,y:a,yDivision:r,xDivision:s,barHeight:(h=p.globals.seriesGroups)!==null&&h!==void 0&&h.length?d/p.globals.seriesGroups.length:d,barWidth:(c=p.globals.seriesGroups)!==null&&c!==void 0&&c.length?g/p.globals.seriesGroups.length:g,zeroH:n,zeroW:o}}},{key:"drawStackedBarPaths",value:function(i){for(var a,s=i.indexes,r=i.barHeight,n=i.strokeWidth,o=i.zeroW,h=i.x,c=i.y,d=i.groupIndex,g=i.seriesGroup,p=i.yDivision,x=i.elSeries,m=this.w,v=c+(d!==-1?d*r:0),w=s.i,A=s.j,l=0,u=0;u0){var y=o;this.groupCtx.prevXVal[b-1][A]<0?y=this.series[w][A]>=0?this.groupCtx.prevX[b-1][A]+l-2*(this.isReversed?l:0):this.groupCtx.prevX[b-1][A]:this.groupCtx.prevXVal[b-1][A]>=0&&(y=this.series[w][A]>=0?this.groupCtx.prevX[b-1][A]:this.groupCtx.prevX[b-1][A]-l+2*(this.isReversed?l:0)),a=y}else a=o;h=this.series[w][A]===null?a:a+this.series[w][A]/this.invertedYRatio-2*(this.isReversed?this.series[w][A]/this.invertedYRatio:0);var k=this.barHelpers.getBarpaths({barYPosition:v,barHeight:r,x1:a,x2:h,strokeWidth:n,series:this.series,realIndex:s.realIndex,seriesGroup:g,i:w,j:A,w:m});return this.barHelpers.barBackground({j:A,i:w,y1:v,y2:r,elSeries:x}),c+=p,{pathTo:k.pathTo,pathFrom:k.pathFrom,goalX:this.barHelpers.getGoalValues("x",o,null,w,A),barYPosition:v,x:h,y:c}}},{key:"drawStackedColumnPaths",value:function(i){var a=i.indexes,s=i.x,r=i.y,n=i.xDivision,o=i.barWidth,h=i.zeroH,c=i.groupIndex,d=i.seriesGroup,g=i.elSeries,p=this.w,x=a.i,m=a.j,v=a.bc;if(p.globals.isXNumeric){var w=p.globals.seriesX[x][m];w||(w=0),s=(w-p.globals.minX)/this.xRatio-o/2,p.globals.seriesGroups.length&&(s=(w-p.globals.minX)/this.xRatio-o/2*p.globals.seriesGroups.length)}for(var A,l=s+(c!==-1?c*o:0),u=0,b=0;b0&&!p.globals.isXNumeric||y>0&&p.globals.isXNumeric&&p.globals.seriesX[x-1][m]===p.globals.seriesX[x][m]){var k,S,C,L=Math.min(this.yRatio.length+1,x+1);if(this.groupCtx.prevY[y-1]!==void 0&&this.groupCtx.prevY[y-1].length)for(var T=1;T=0?C-u+2*(this.isReversed?u:0):C;break}if(((R=this.groupCtx.prevYVal[y-I])===null||R===void 0?void 0:R[m])>=0){S=this.series[x][m]>=0?C:C+u-2*(this.isReversed?u:0);break}}S===void 0&&(S=p.globals.gridHeight),A=(k=this.groupCtx.prevYF[0])!==null&&k!==void 0&&k.every(function(O){return O===0})&&this.groupCtx.prevYF.slice(1,y).every(function(O){return O.every(function(D){return isNaN(D)})})?h:S}else A=h;r=this.series[x][m]?A-this.series[x][m]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[x][m]/this.yRatio[this.yaxisIndex]:0):A;var H=this.barHelpers.getColumnPaths({barXPosition:l,barWidth:o,y1:A,y2:r,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,seriesGroup:d,realIndex:a.realIndex,i:x,j:m,w:p});return this.barHelpers.barBackground({bc:v,j:m,i:x,x1:l,x2:o,elSeries:g}),s+=n,{pathTo:H.pathTo,pathFrom:H.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,h,x,m),barXPosition:l,x:p.globals.isXNumeric?s-n:s,y:r}}}]),t}(),Ue=function(f){ke(t,ue);var e=Ae(t);function t(){return Y(this,t),e.apply(this,arguments)}return F(t,[{key:"draw",value:function(i,a,s){var r=this,n=this.w,o=new M(this.ctx),h=n.globals.comboCharts?a:n.config.chart.type,c=new ee(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=n.config.plotOptions.bar.horizontal;var d=new V(this.ctx,n);i=d.getLogSeries(i),this.series=i,this.yRatio=d.getLogYRatios(this.yRatio),this.barHelpers.initVariables(i);for(var g=o.group({class:"apexcharts-".concat(h,"-series apexcharts-plot-series")}),p=function(m){r.isBoxPlot=n.config.chart.type==="boxPlot"||n.config.series[m].type==="boxPlot";var v,w,A,l,u=void 0,b=void 0,y=[],k=[],S=n.globals.comboCharts?s[m]:m,C=o.group({class:"apexcharts-series",seriesName:P.escapeString(n.globals.seriesNames[S]),rel:m+1,"data:realIndex":S});r.ctx.series.addCollapsedClassToSeries(C,S),i[m].length>0&&(r.visibleI=r.visibleI+1);var L,T;r.yRatio.length>1&&(r.yaxisIndex=S);var z=r.barHelpers.initialPositions();b=z.y,L=z.barHeight,w=z.yDivision,l=z.zeroW,u=z.x,T=z.barWidth,v=z.xDivision,A=z.zeroH,k.push(u+T/2);for(var I=o.group({class:"apexcharts-datalabels","data:realIndex":S}),X=function(H){var O=r.barHelpers.getStrokeWidth(m,H,S),D=null,G={indexes:{i:m,j:H,realIndex:S},x:u,y:b,strokeWidth:O,elSeries:C};D=r.isHorizontal?r.drawHorizontalBoxPaths(E(E({},G),{},{yDivision:w,barHeight:L,zeroW:l})):r.drawVerticalBoxPaths(E(E({},G),{},{xDivision:v,barWidth:T,zeroH:A})),b=D.y,u=D.x,H>0&&k.push(u+T/2),y.push(b),D.pathTo.forEach(function(N,W){var Z=!r.isBoxPlot&&r.candlestickOptions.wick.useFillColor?D.color[W]:n.globals.stroke.colors[m],K=c.fillPath({seriesNumber:S,dataPointIndex:H,color:D.color[W],value:i[m][H]});r.renderSeries({realIndex:S,pathFill:K,lineFill:Z,j:H,i:m,pathFrom:D.pathFrom,pathTo:N,strokeWidth:O,elSeries:C,x:u,y:b,series:i,barHeight:L,barWidth:T,elDataLabelsWrap:I,visibleSeries:r.visibleI,type:n.config.chart.type})})},R=0;Ru.c&&(x=!1);var k=Math.min(u.o,u.c),S=Math.max(u.o,u.c),C=u.m;c.globals.isXNumeric&&(s=(c.globals.seriesX[l][p]-c.globals.minX)/this.xRatio-n/2);var L=s+n*this.visibleI;this.series[g][p]===void 0||this.series[g][p]===null?(k=o,S=o):(k=o-k/A,S=o-S/A,b=o-u.h/A,y=o-u.l/A,C=o-u.m/A);var T=d.move(L,o),z=d.move(L+n/2,k);return c.globals.previousPaths.length>0&&(z=this.getPreviousPath(l,p,!0)),T=this.isBoxPlot?[d.move(L,k)+d.line(L+n/2,k)+d.line(L+n/2,b)+d.line(L+n/4,b)+d.line(L+n-n/4,b)+d.line(L+n/2,b)+d.line(L+n/2,k)+d.line(L+n,k)+d.line(L+n,C)+d.line(L,C)+d.line(L,k+h/2),d.move(L,C)+d.line(L+n,C)+d.line(L+n,S)+d.line(L+n/2,S)+d.line(L+n/2,y)+d.line(L+n-n/4,y)+d.line(L+n/4,y)+d.line(L+n/2,y)+d.line(L+n/2,S)+d.line(L,S)+d.line(L,C)+"z"]:[d.move(L,S)+d.line(L+n/2,S)+d.line(L+n/2,b)+d.line(L+n/2,S)+d.line(L+n,S)+d.line(L+n,k)+d.line(L+n/2,k)+d.line(L+n/2,y)+d.line(L+n/2,k)+d.line(L,k)+d.line(L,S-h/2)],z+=d.move(L,k),c.globals.isXNumeric||(s+=r),{pathTo:T,pathFrom:z,x:s,y:S,barXPosition:L,color:this.isBoxPlot?w:x?[m]:[v]}}},{key:"drawHorizontalBoxPaths",value:function(i){var a=i.indexes;i.x;var s=i.y,r=i.yDivision,n=i.barHeight,o=i.zeroW,h=i.strokeWidth,c=this.w,d=new M(this.ctx),g=a.i,p=a.j,x=this.boxOptions.colors.lower;this.isBoxPlot&&(x=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var m=this.invertedYRatio,v=a.realIndex,w=this.getOHLCValue(v,p),A=o,l=o,u=Math.min(w.o,w.c),b=Math.max(w.o,w.c),y=w.m;c.globals.isXNumeric&&(s=(c.globals.seriesX[v][p]-c.globals.minX)/this.invertedXRatio-n/2);var k=s+n*this.visibleI;this.series[g][p]===void 0||this.series[g][p]===null?(u=o,b=o):(u=o+u/m,b=o+b/m,A=o+w.h/m,l=o+w.l/m,y=o+w.m/m);var S=d.move(o,k),C=d.move(u,k+n/2);return c.globals.previousPaths.length>0&&(C=this.getPreviousPath(v,p,!0)),S=[d.move(u,k)+d.line(u,k+n/2)+d.line(A,k+n/2)+d.line(A,k+n/2-n/4)+d.line(A,k+n/2+n/4)+d.line(A,k+n/2)+d.line(u,k+n/2)+d.line(u,k+n)+d.line(y,k+n)+d.line(y,k)+d.line(u+h/2,k),d.move(y,k)+d.line(y,k+n)+d.line(b,k+n)+d.line(b,k+n/2)+d.line(l,k+n/2)+d.line(l,k+n-n/4)+d.line(l,k+n/4)+d.line(l,k+n/2)+d.line(b,k+n/2)+d.line(b,k)+d.line(y,k)+"z"],C+=d.move(u,k),c.globals.isXNumeric||(s+=r),{pathTo:S,pathFrom:C,x:b,y:s,barYPosition:k,color:x}}},{key:"getOHLCValue",value:function(i,a){var s=this.w;return{o:this.isBoxPlot?s.globals.seriesCandleH[i][a]:s.globals.seriesCandleO[i][a],h:this.isBoxPlot?s.globals.seriesCandleO[i][a]:s.globals.seriesCandleH[i][a],m:s.globals.seriesCandleM[i][a],l:this.isBoxPlot?s.globals.seriesCandleC[i][a]:s.globals.seriesCandleL[i][a],c:this.isBoxPlot?s.globals.seriesCandleL[i][a]:s.globals.seriesCandleC[i][a]}}}]),t}(),Rt=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"checkColorRange",value:function(){var e=this.w,t=!1,i=e.config.plotOptions[e.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map(function(a,s){a.from<=0&&(t=!0)}),t}},{key:"getShadeColor",value:function(e,t,i,a){var s=this.w,r=1,n=s.config.plotOptions[e].shadeIntensity,o=this.determineColor(e,t,i);s.globals.hasNegs||a?r=s.config.plotOptions[e].reverseNegativeShade?o.percent<0?o.percent/100*(1.25*n):(1-o.percent/100)*(1.25*n):o.percent<=0?1-(1+o.percent/100)*n:(1-o.percent/100)*n:(r=1-o.percent/100,e==="treemap"&&(r=(1-o.percent/100)*(1.25*n)));var h=o.color,c=new P;return s.config.plotOptions[e].enableShades&&(h=this.w.config.theme.mode==="dark"?P.hexToRgba(c.shadeColor(-1*r,o.color),s.config.fill.opacity):P.hexToRgba(c.shadeColor(r,o.color),s.config.fill.opacity)),{color:h,colorProps:o}}},{key:"determineColor",value:function(e,t,i){var a=this.w,s=a.globals.series[t][i],r=a.config.plotOptions[e],n=r.colorScale.inverse?i:t;r.distributed&&a.config.chart.type==="treemap"&&(n=i);var o=a.globals.colors[n],h=null,c=Math.min.apply(Math,J(a.globals.series[t])),d=Math.max.apply(Math,J(a.globals.series[t]));r.distributed||e!=="heatmap"||(c=a.globals.minY,d=a.globals.maxY),r.colorScale.min!==void 0&&(c=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var g=Math.abs(d)+Math.abs(c),p=100*s/(g===0?g-1e-6:g);return r.colorScale.ranges.length>0&&r.colorScale.ranges.map(function(x,m){if(s>=x.from&&s<=x.to){o=x.color,h=x.foreColor?x.foreColor:null,c=x.from,d=x.to;var v=Math.abs(d)+Math.abs(c);p=100*s/(v===0?v-1e-6:v)}}),{color:o,foreColor:h,percent:p}}},{key:"calculateDataLabels",value:function(e){var t=e.text,i=e.x,a=e.y,s=e.i,r=e.j,n=e.colorProps,o=e.fontSize,h=this.w.config.dataLabels,c=new M(this.ctx),d=new de(this.ctx),g=null;if(h.enabled){g=c.group({class:"apexcharts-data-labels"});var p=h.offsetX,x=h.offsetY,m=i+p,v=a+parseFloat(h.style.fontSize)/3+x;d.plotDataLabelsText({x:m,y:v,text:t,i:s,j:r,color:n.foreColor,parent:g,fontSize:o,dataLabelsConfig:h})}return g}},{key:"addListeners",value:function(e){var t=new M(this.ctx);e.node.addEventListener("mouseenter",t.pathMouseEnter.bind(this,e)),e.node.addEventListener("mouseleave",t.pathMouseLeave.bind(this,e)),e.node.addEventListener("mousedown",t.pathMouseDown.bind(this,e))}}]),f}(),Ui=function(){function f(e,t){Y(this,f),this.ctx=e,this.w=e.w,this.xRatio=t.xRatio,this.yRatio=t.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new Rt(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return F(f,[{key:"draw",value:function(e){var t=this.w,i=new M(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(t.globals.cuid,")"));var s=t.globals.gridWidth/t.globals.dataPoints,r=t.globals.gridHeight/t.globals.series.length,n=0,o=!1;this.negRange=this.helpers.checkColorRange();var h=e.slice();t.config.yaxis[0].reversed&&(o=!0,h.reverse());for(var c=o?0:h.length-1;o?c=0;o?c++:c--){var d=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:P.escapeString(t.globals.seriesNames[c]),rel:c+1,"data:realIndex":c});if(this.ctx.series.addCollapsedClassToSeries(d,c),t.config.chart.dropShadow.enabled){var g=t.config.chart.dropShadow;new q(this.ctx).dropShadow(d,g,c)}for(var p=0,x=t.config.plotOptions.heatmap.shadeIntensity,m=0;m-1&&this.pieClicked(g),i.config.dataLabels.enabled){var b=l.x,y=l.y,k=100*x/this.fullAngle+"%";if(x!==0&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?t.endAngle=t.endAngle-(a+n):a+n=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(c=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(c)>this.fullAngle&&(c-=this.fullAngle);var d=Math.PI*(c-90)/180,g=i.centerX+r*Math.cos(h),p=i.centerY+r*Math.sin(h),x=i.centerX+r*Math.cos(d),m=i.centerY+r*Math.sin(d),v=P.polarToCartesian(i.centerX,i.centerY,i.donutSize,c),w=P.polarToCartesian(i.centerX,i.centerY,i.donutSize,o),A=s>180?1:0,l=["M",g,p,"A",r,r,0,A,1,x,m];return t=i.chartType==="donut"?[].concat(l,["L",v.x,v.y,"A",i.donutSize,i.donutSize,0,A,0,w.x,w.y,"L",g,p,"z"]).join(" "):i.chartType==="pie"||i.chartType==="polarArea"?[].concat(l,["L",i.centerX,i.centerY,"L",g,p]).join(" "):[].concat(l).join(" "),n.roundPathCorners(t,2*this.strokeWidth)}},{key:"drawPolarElements",value:function(e){var t=this.w,i=new ge(this.ctx),a=new M(this.ctx),s=new Ot(this.ctx),r=a.group(),n=a.group(),o=i.niceScale(0,Math.ceil(this.maxY),t.config.yaxis[0].tickAmount,0,!0),h=o.result.reverse(),c=o.result.length;this.maxY=o.niceMax;for(var d=t.globals.radialSize,g=d/(c-1),p=0;p1&&e.total.show&&(s=e.total.color);var n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,e.value.formatter)(i,r),a||typeof e.total.formatter!="function"||(i=e.total.formatter(r));var h=t===e.total.label;t=e.name.formatter(t,h,r),n!==null&&(n.textContent=t),o!==null&&(o.textContent=i),n!==null&&(n.style.fill=s)}},{key:"printDataLabelsInner",value:function(e,t){var i=this.w,a=e.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(e.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(t,s,a,e);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");r!==null&&(r.style.opacity=1)}},{key:"drawSpokes",value:function(e){var t=this,i=this.w,a=new M(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(s.strokeWidth!==0){for(var r=[],n=360/i.globals.series.length,o=0;o1)n&&!t.total.showAlways?h({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(t,t.total.label,t.total.formatter(s));else if(h({makeSliceOut:!1,printLabel:!0}),!n)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var c=s.globals.selectedDataPoints[0],d=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(c));this.printDataLabelsInner(d,t)}else r&&s.globals.selectedDataPoints.length&&s.globals.selectedDataPoints[0].length===0&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}]),f}(),qi=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var t=this.w;this.graphics=new M(this.ctx),this.lineColorArr=t.globals.stroke.colors!==void 0?t.globals.stroke.colors:t.globals.colors,this.defaultSize=t.globals.svgHeight0&&(y=t.getPreviousPath(w));for(var k=0;k=10?e.x>0?(i="start",a+=10):e.x<0&&(i="end",a-=10):i="middle",Math.abs(e.y)>=t-10&&(e.y<0?s-=10:e.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(e){for(var t=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(e,10)&&t.globals.previousPaths[a].paths[0]!==void 0&&(i=t.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.dataPointsLen;e=e||[],t=t||[];for(var a=[],s=0;s=360&&(m=360-Math.abs(this.startAngle)-.1);var v=s.drawPath({d:"",stroke:p,strokeWidth:h*parseInt(g.strokeWidth,10)/100,fill:"none",strokeOpacity:g.opacity,classes:"apexcharts-radialbar-area"});if(g.dropShadow.enabled){var w=g.dropShadow;n.dropShadow(v,w)}d.add(v),v.attr("id","apexcharts-radialbarTrack-"+c),this.animatePaths(v,{centerX:i.centerX,centerY:i.centerY,endAngle:m,startAngle:x,size:i.size,i:c,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:a.globals.easing})}return r}},{key:"drawArcs",value:function(i){var a=this.w,s=new M(this.ctx),r=new ee(this.ctx),n=new q(this.ctx),o=s.group(),h=this.getStrokeWidth(i);i.size=i.size-h/2;var c=a.config.plotOptions.radialBar.hollow.background,d=i.size-h*i.series.length-this.margin*i.series.length-h*parseInt(a.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,g=d-a.config.plotOptions.radialBar.hollow.margin;a.config.plotOptions.radialBar.hollow.image!==void 0&&(c=this.drawHollowImage(i,o,d,c));var p=this.drawHollow({size:g,centerX:i.centerX,centerY:i.centerY,fill:c||"transparent"});if(a.config.plotOptions.radialBar.hollow.dropShadow.enabled){var x=a.config.plotOptions.radialBar.hollow.dropShadow;n.dropShadow(p,x)}var m=1;!this.radialDataLabels.total.show&&a.globals.series.length>1&&(m=0);var v=null;this.radialDataLabels.show&&(v=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:d,centerX:i.centerX,centerY:i.centerY,opacity:m})),a.config.plotOptions.radialBar.hollow.position==="back"&&(o.add(p),v&&o.add(v));var w=!1;a.config.plotOptions.radialBar.inverseOrder&&(w=!0);for(var A=w?i.series.length-1:0;w?A>=0:A100?100:i.series[A])/100,S=Math.round(this.totalAngle*k)+this.startAngle,C=void 0;a.globals.dataChanged&&(y=this.startAngle,C=Math.round(this.totalAngle*P.negToZero(a.globals.previousPaths[A])/100)+y),Math.abs(S)+Math.abs(b)>=360&&(S-=.01),Math.abs(C)+Math.abs(y)>=360&&(C-=.01);var L=S-b,T=Array.isArray(a.config.stroke.dashArray)?a.config.stroke.dashArray[A]:a.config.stroke.dashArray,z=s.drawPath({d:"",stroke:u,strokeWidth:h,fill:"none",fillOpacity:a.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+A,strokeDashArray:T});if(M.setAttrs(z.node,{"data:angle":L,"data:value":i.series[A]}),a.config.chart.dropShadow.enabled){var I=a.config.chart.dropShadow;n.dropShadow(z,I,A)}if(n.setSelectionFilter(z,0,A),this.addListeners(z,this.radialDataLabels),l.add(z),z.attr({index:0,j:A}),this.barLabels.enabled){var X=P.polarToCartesian(i.centerX,i.centerY,i.size,b),R=this.barLabels.formatter(a.globals.seriesNames[A],{seriesIndex:A,w:a}),H=["apexcharts-radialbar-label"];this.barLabels.onClick||H.push("apexcharts-no-click");var O=this.barLabels.useSeriesColors?a.globals.colors[A]:a.config.chart.foreColor;O||(O=a.config.chart.foreColor);var D=X.x-this.barLabels.margin,G=X.y,N=s.drawText({x:D,y:G,text:R,textAnchor:"end",dominantBaseline:"middle",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:O,cssClass:H.join(" ")});N.on("click",this.onBarLabelClick),N.attr({rel:A+1}),b!==0&&N.attr({"transform-origin":"".concat(D," ").concat(G),transform:"rotate(".concat(b," 0 0)")}),l.add(N)}var W=0;!this.initialAnim||a.globals.resized||a.globals.dataChanged||(W=a.config.chart.animations.speed),a.globals.dataChanged&&(W=a.config.chart.animations.dynamicAnimation.speed),this.animDur=W/(1.2*i.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(z,{centerX:i.centerX,centerY:i.centerY,endAngle:S,startAngle:b,prevEndAngle:C,prevStartAngle:y,size:i.size,i:A,totalItems:2,animBeginArr:this.animBeginArr,dur:W,shouldSetPrevPaths:!0,easing:a.globals.easing})}return{g:o,elHollow:p,dataLabels:v}}},{key:"drawHollow",value:function(i){var a=new M(this.ctx).drawCircle(2*i.size);return a.attr({class:"apexcharts-radialbar-hollow",cx:i.centerX,cy:i.centerY,r:i.size,fill:i.fill}),a}},{key:"drawHollowImage",value:function(i,a,s,r){var n=this.w,o=new ee(this.ctx),h=P.randomId(),c=n.config.plotOptions.radialBar.hollow.image;if(n.config.plotOptions.radialBar.hollow.imageClipped)o.clippedImgArea({width:s,height:s,image:c,patternID:"pattern".concat(n.globals.cuid).concat(h)}),r="url(#pattern".concat(n.globals.cuid).concat(h,")");else{var d=n.config.plotOptions.radialBar.hollow.imageWidth,g=n.config.plotOptions.radialBar.hollow.imageHeight;if(d===void 0&&g===void 0){var p=n.globals.dom.Paper.image(c).loaded(function(m){this.move(i.centerX-m.width/2+n.config.plotOptions.radialBar.hollow.imageOffsetX,i.centerY-m.height/2+n.config.plotOptions.radialBar.hollow.imageOffsetY)});a.add(p)}else{var x=n.globals.dom.Paper.image(c).loaded(function(m){this.move(i.centerX-d/2+n.config.plotOptions.radialBar.hollow.imageOffsetX,i.centerY-g/2+n.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(d,g)});a.add(x)}}return r}},{key:"getStrokeWidth",value:function(i){var a=this.w;return i.size*(100-parseInt(a.config.plotOptions.radialBar.hollow.size,10))/100/(i.series.length+1)-this.margin}},{key:"onBarLabelClick",value:function(i){var a=parseInt(i.target.getAttribute("rel"),10)-1,s=this.barLabels.onClick,r=this.w;s&&s(r.globals.seriesNames[a],{w:r,seriesIndex:a})}}]),t}(),$i=function(f){ke(t,ue);var e=Ae(t);function t(){return Y(this,t),e.apply(this,arguments)}return F(t,[{key:"draw",value:function(i,a){var s=this.w,r=new M(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=i,this.seriesRangeStart=s.globals.seriesRangeStart,this.seriesRangeEnd=s.globals.seriesRangeEnd,this.barHelpers.initVariables(i);for(var n=r.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),o=0;o0&&(this.visibleI=this.visibleI+1);var w=0,A=0;this.yRatio.length>1&&(this.yaxisIndex=m);var l=this.barHelpers.initialPositions();x=l.y,g=l.zeroW,p=l.x,A=l.barWidth,w=l.barHeight,h=l.xDivision,c=l.yDivision,d=l.zeroH;for(var u=r.group({class:"apexcharts-datalabels","data:realIndex":m}),b=r.group({class:"apexcharts-rangebar-goals-markers"}),y=0;y0});return this.isHorizontal?(r=m.config.plotOptions.bar.rangeBarGroupRows?o+g*u:o+c*this.visibleI+g*u,b>-1&&!m.config.plotOptions.bar.rangeBarOverlap&&(v=m.globals.seriesRange[a][b].overlaps).indexOf(w)>-1&&(r=(c=x.barHeight/v.length)*this.visibleI+g*(100-parseInt(this.barOptions.barHeight,10))/100/2+c*(this.visibleI+v.indexOf(w))+g*u)):(u>-1&&(n=m.config.plotOptions.bar.rangeBarGroupRows?h+p*u:h+d*this.visibleI+p*u),b>-1&&!m.config.plotOptions.bar.rangeBarOverlap&&(v=m.globals.seriesRange[a][b].overlaps).indexOf(w)>-1&&(n=(d=x.barWidth/v.length)*this.visibleI+p*(100-parseInt(this.barOptions.barWidth,10))/100/2+d*(this.visibleI+v.indexOf(w))+p*u)),{barYPosition:r,barXPosition:n,barHeight:c,barWidth:d}}},{key:"drawRangeColumnPaths",value:function(i){var a=i.indexes,s=i.x,r=i.xDivision,n=i.barWidth,o=i.barXPosition,h=i.zeroH,c=this.w,d=a.i,g=a.j,p=this.yRatio[this.yaxisIndex],x=a.realIndex,m=this.getRangeValue(x,g),v=Math.min(m.start,m.end),w=Math.max(m.start,m.end);this.series[d][g]===void 0||this.series[d][g]===null?v=h:(v=h-v/p,w=h-w/p);var A=Math.abs(w-v),l=this.barHelpers.getColumnPaths({barXPosition:o,barWidth:n,y1:v,y2:w,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:a.realIndex,i:x,j:g,w:c});if(c.globals.isXNumeric){var u=this.getBarXForNumericXAxis({x:s,j:g,realIndex:x,barWidth:n});s=u.x,o=u.barXPosition}else s+=r;return{pathTo:l.pathTo,pathFrom:l.pathFrom,barHeight:A,x:s,y:w,goalY:this.barHelpers.getGoalValues("y",null,h,d,g),barXPosition:o}}},{key:"drawRangeBarPaths",value:function(i){var a=i.indexes,s=i.y,r=i.y1,n=i.y2,o=i.yDivision,h=i.barHeight,c=i.barYPosition,d=i.zeroW,g=this.w,p=d+r/this.invertedYRatio,x=d+n/this.invertedYRatio,m=Math.abs(x-p),v=this.barHelpers.getBarpaths({barYPosition:c,barHeight:h,x1:p,x2:x,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:a.realIndex,realIndex:a.realIndex,j:a.j,w:g});return g.globals.isXNumeric||(s+=o),{pathTo:v.pathTo,pathFrom:v.pathFrom,barWidth:m,x,goalX:this.barHelpers.getGoalValues("x",d,null,a.realIndex,a.j),y:s}}},{key:"getRangeValue",value:function(i,a){var s=this.w;return{start:s.globals.seriesRangeStart[i][a],end:s.globals.seriesRangeEnd[i][a]}}}]),t}(),Ji=function(){function f(e){Y(this,f),this.w=e.w,this.lineCtx=e}return F(f,[{key:"sameValueSeriesFix",value:function(e,t){var i=this.w;if((i.config.fill.type==="gradient"||i.config.fill.type[e]==="gradient")&&new V(this.lineCtx.ctx,i).seriesHaveSameValues(e)){var a=t[e].slice();a[a.length-1]=a[a.length-1]+1e-6,t[e]=a}return t}},{key:"calculatePoints",value:function(e){var t=e.series,i=e.realIndex,a=e.x,s=e.y,r=e.i,n=e.j,o=e.prevY,h=this.w,c=[],d=[];if(n===0){var g=this.lineCtx.categoryAxisCorrection+h.config.markers.offsetX;h.globals.isXNumeric&&(g=(h.globals.seriesX[i][0]-h.globals.minX)/this.lineCtx.xRatio+h.config.markers.offsetX),c.push(g),d.push(P.isNumber(t[r][0])?o+h.config.markers.offsetY:null),c.push(a+h.config.markers.offsetX),d.push(P.isNumber(t[r][n+1])?s+h.config.markers.offsetY:null)}else c.push(a+h.config.markers.offsetX),d.push(P.isNumber(t[r][n+1])?s+h.config.markers.offsetY:null);return{x:c,y:d}}},{key:"checkPreviousPaths",value:function(e){for(var t=e.pathFromLine,i=e.pathFromArea,a=e.realIndex,s=this.w,r=0;r0&&parseInt(n.realIndex,10)===parseInt(a,10)&&(n.type==="line"?(this.lineCtx.appendPathFrom=!1,t=s.globals.previousPaths[r].paths[0].d):n.type==="area"&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(t=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:t,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(e){var t,i,a=e.i,s=e.series,r=e.prevY,n=e.lineYPosition,o=this.w,h=o.config.chart.stacked&&!o.globals.comboCharts||o.config.chart.stacked&&o.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||((t=this.w.config.series[a])===null||t===void 0?void 0:t.type)==="bar");if(((i=s[a])===null||i===void 0?void 0:i[0])!==void 0)r=(n=h&&a>0?this.lineCtx.prevSeriesY[a-1][0]:this.lineCtx.zeroY)-s[a][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?s[a][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(h&&a>0&&s[a][0]===void 0){for(var c=a-1;c>=0;c--)if(s[c][0]!==null&&s[c][0]!==void 0){r=n=this.lineCtx.prevSeriesY[c][0];break}}return{prevY:r,lineYPosition:n}}}]),f}(),Ki=function(f){for(var e,t,i,a,s=function(c){for(var d=[],g=c[0],p=c[1],x=d[0]=Ze(g,p),m=1,v=c.length-1;m9&&(a=3*i/Math.sqrt(a),s[o]=a*e,s[o+1]=a*t);for(var h=0;h<=r;h++)a=(f[Math.min(r,h+1)][0]-f[Math.max(0,h-1)][0])/(6*(1+s[h]*s[h])),n.push([a||0,s[h]*a||0]);return n},qe=function(f,e){for(var t="",i=0;i1&&Math.abs(a[r-2]-s[n-2])4?(t+="C".concat(a[0],", ").concat(a[1]),t+=", ".concat(a[2],", ").concat(a[3]),t+=", ".concat(a[4],", ").concat(a[5])):r>2&&(t+="S".concat(a[0],", ").concat(a[1]),t+=", ".concat(a[2],", ").concat(a[3]))}return t},wt=function(f){var e=Ki(f),t=f[1],i=f[0],a=[],s=e[1],r=e[0];a.push(i,[i[0]+r[0],i[1]+r[1],t[0]-s[0],t[1]-s[1],t[0],t[1]]);for(var n=2,o=e.length;n0&&(w=(r.globals.seriesX[p][0]-r.globals.minX)/this.xRatio),v.push(w);var A=w,l=this.zeroY,u=this.zeroY;l=this.lineHelpers.determineFirstPrevY({i:g,series:e,prevY:l,lineYPosition:0}).prevY,r.config.stroke.curve==="smooth"&&e[g][0]===null?x.push(null):x.push(l),o==="rangeArea"&&(u=this.lineHelpers.determineFirstPrevY({i:g,series:a,prevY:u,lineYPosition:0}).prevY,m.push(u));var b={type:o,series:e,realIndex:p,i:g,x:w,y:1,pathsFrom:this._calculatePathsFrom({type:o,series:e,i:g,realIndex:p,prevX:A,prevY:l,prevY2:u}),linePaths:[],areaPaths:[],seriesIndex:i,lineYPosition:0,xArrj:v,yArrj:x,y2Arrj:m,seriesRangeEnd:a},y=this._iterateOverDataPoints(E(E({},b),{},{iterations:o==="rangeArea"?e[g].length-1:void 0,isRangeStart:!0}));if(o==="rangeArea"){var k=this._calculatePathsFrom({series:a,i:g,realIndex:p,prevX:A,prevY:u}),S=this._iterateOverDataPoints(E(E({},b),{},{series:a,pathsFrom:k,iterations:a[g].length-1,isRangeStart:!1}));y.linePaths[0]=S.linePath+y.linePath,y.pathFromLine=S.pathFromLine+y.pathFromLine}this._handlePaths({type:o,realIndex:p,i:g,paths:y}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),d.push(this.elSeries)}if(((s=r.config.series[0])===null||s===void 0?void 0:s.zIndex)!==void 0&&d.sort(function(T,z){return Number(T.node.getAttribute("zIndex"))-Number(z.node.getAttribute("zIndex"))}),r.config.chart.stacked)for(var C=d.length;C>0;C--)h.add(d[C-1]);else for(var L=0;L1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||a.config.plotOptions.area.fillTo==="end")&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",zIndex:a.config.series[i].zIndex!==void 0?a.config.series[i].zIndex:i,seriesName:P.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var r=e[t].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":r,rel:t+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(e){var t,i,a,s,r=e.type,n=e.series,o=e.i,h=e.realIndex,c=e.prevX,d=e.prevY,g=e.prevY2,p=this.w,x=new M(this.ctx);if(n[o][0]===null){for(var m=0;m0){var v=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:h});a=v.pathFromLine,s=v.pathFromArea}return{prevX:c,prevY:d,linePath:t,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(e){var t=e.type,i=e.realIndex,a=e.i,s=e.paths,r=this.w,n=new M(this.ctx),o=new ee(this.ctx);this.prevSeriesY.push(s.yArrj),r.globals.seriesXvalues[i]=s.xArrj,r.globals.seriesYvalues[i]=s.yArrj;var h=r.config.forecastDataPoints;if(h.count>0&&t!=="rangeArea"){var c=r.globals.seriesXvalues[i][r.globals.seriesXvalues[i].length-h.count-1],d=n.drawRect(c,0,r.globals.gridWidth,r.globals.gridHeight,0);r.globals.dom.elForecastMask.appendChild(d.node);var g=n.drawRect(0,0,c,r.globals.gridHeight,0);r.globals.dom.elNonForecastMask.appendChild(g.node)}this.pointsChart||r.globals.delayedElements.push({el:this.elPointsMain.node,index:i});var p={i:a,realIndex:i,animationDelay:a,initialSpeed:r.config.chart.animations.speed,dataChangeSpeed:r.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(t)};if(t==="area")for(var x=o.fillPath({seriesNumber:i}),m=0;m0&&t!=="rangeArea"){var k=n.renderPaths(b);k.node.setAttribute("stroke-dasharray",h.dashArray),h.strokeWidth&&k.node.setAttribute("stroke-width",h.strokeWidth),this.elSeries.add(k),k.attr("clip-path","url(#forecastMask".concat(r.globals.cuid,")")),y.attr("clip-path","url(#nonForecastMask".concat(r.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(e){var t,i=this,a=e.type,s=e.series,r=e.iterations,n=e.realIndex,o=e.i,h=e.x,c=e.y,d=e.pathsFrom,g=e.linePaths,p=e.areaPaths,x=e.seriesIndex,m=e.lineYPosition,v=e.xArrj,w=e.yArrj,A=e.y2Arrj,l=e.isRangeStart,u=e.seriesRangeEnd,b=this.w,y=new M(this.ctx),k=this.yRatio,S=d.prevY,C=d.linePath,L=d.areaPath,T=d.pathFromLine,z=d.pathFromArea,I=P.isNumber(b.globals.minYArr[n])?b.globals.minYArr[n]:b.globals.minY;r||(r=b.globals.dataPoints>1?b.globals.dataPoints-1:b.globals.dataPoints);for(var X=function(Z,K){return K-Z/k[i.yaxisIndex]+2*(i.isReversed?Z/k[i.yaxisIndex]:0)},R=c,H=b.config.chart.stacked&&!b.globals.comboCharts||b.config.chart.stacked&&b.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||((t=this.w.config.series[n])===null||t===void 0?void 0:t.type)==="bar"),O=0;O0&&b.globals.collapsedSeries.length-1){K--;break}return K>=0?K:0}(o-1)][O+1]:m=this.zeroY:m=this.zeroY,D?c=X(I,m):(c=X(s[o][O+1],m),a==="rangeArea"&&(R=X(u[o][O+1],m))),v.push(h),D&&b.config.stroke.curve==="smooth"?w.push(null):w.push(c),A.push(R);var N=this.lineHelpers.calculatePoints({series:s,x:h,y:c,realIndex:n,i:o,j:O,prevY:S}),W=this._createPaths({type:a,series:s,i:o,realIndex:n,j:O,x:h,y:c,y2:R,xArrj:v,yArrj:w,y2Arrj:A,linePath:C,areaPath:L,linePaths:g,areaPaths:p,seriesIndex:x,isRangeStart:l});p=W.areaPaths,g=W.linePaths,L=W.areaPath,C=W.linePath,!this.appendPathFrom||b.config.stroke.curve==="smooth"&&a==="rangeArea"||(T+=y.line(h,this.zeroY),z+=y.line(h,this.zeroY)),this.handleNullDataPoints(s,N,o,O,n),this._handleMarkersAndLabels({type:a,pointsPos:N,i:o,j:O,realIndex:n,isRangeStart:l})}return{yArrj:w,xArrj:v,pathFromArea:z,areaPaths:p,pathFromLine:T,linePaths:g,linePath:C,areaPath:L}}},{key:"_handleMarkersAndLabels",value:function(e){var t=e.type,i=e.pointsPos,a=e.isRangeStart,s=e.i,r=e.j,n=e.realIndex,o=this.w,h=new de(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:n,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{o.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var c=this.markers.plotChartMarkers(i,n,r+1);c!==null&&this.elPointsMain.add(c)}var d=h.drawDataLabel({type:t,isRangeStart:a,pos:i,i:n,j:r+1});d!==null&&this.elDataLabelsWrap.add(d)}},{key:"_createPaths",value:function(e){var t=e.type,i=e.series,a=e.i,s=e.realIndex,r=e.j,n=e.x,o=e.y,h=e.xArrj,c=e.yArrj,d=e.y2,g=e.y2Arrj,p=e.linePath,x=e.areaPath,m=e.linePaths,v=e.areaPaths,w=e.seriesIndex,A=e.isRangeStart,l=this.w,u=new M(this.ctx),b=l.config.stroke.curve,y=this.areaBottomY;if(Array.isArray(l.config.stroke.curve)&&(b=Array.isArray(w)?l.config.stroke.curve[w[a]]:l.config.stroke.curve[a]),t==="rangeArea"&&(l.globals.hasNullValues||l.config.forecastDataPoints.count>0)&&b==="smooth"&&(b="straight"),b==="smooth"){var k=t==="rangeArea"?h.length===l.globals.dataPoints:r===i[a].length-2,S=h.map(function(R,H){return[h[H],c[H]]}).filter(function(R){return R[1]!==null});if(k&&S.length>1){var C=wt(S);if(p+=qe(C,l.globals.gridWidth),i[a][0]===null?x=p:x+=qe(C,l.globals.gridWidth),t==="rangeArea"&&A){p+=u.line(h[h.length-1],g[g.length-1]);var L=h.slice().reverse(),T=g.slice().reverse(),z=L.map(function(R,H){return[L[H],T[H]]}),I=wt(z);x=p+=qe(I,l.globals.gridWidth)}else x+=u.line(S[S.length-1][0],y)+u.line(S[0][0],y)+u.move(S[0][0],S[0][1])+"z";m.push(p),v.push(x)}}else{if(i[a][r+1]===null){p+=u.move(n,o);var X=l.globals.isXNumeric?(l.globals.seriesX[s][r]-l.globals.minX)/this.xRatio:n-this.xDivision;x=x+u.line(X,y)+u.move(n,o)+"z"}i[a][r]===null&&(p+=u.move(n,o),x+=u.move(n,y)),b==="stepline"?(p=p+u.line(n,null,"H")+u.line(null,o,"V"),x=x+u.line(n,null,"H")+u.line(null,o,"V")):b==="straight"&&(p+=u.line(n,o),x+=u.line(n,o)),r===i[a].length-2&&(x=x+u.line(n,y)+u.move(n,o)+"z",t==="rangeArea"&&A?p=p+u.line(n,d)+u.move(n,d)+"z":(m.push(p),v.push(x)))}return{linePaths:m,areaPaths:v,linePath:p,areaPath:x}}},{key:"handleNullDataPoints",value:function(e,t,i,a,s){var r=this.w;if(e[i][a]===null&&r.config.markers.showNullDataPoints||e[i].length===1){var n=this.markers.plotChartMarkers(t,s,a+1,this.strokeWidth-r.config.markers.strokeWidth/2,!0);n!==null&&this.elPointsMain.add(n)}}}]),f}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function f(n,o,h,c){this.xoffset=n,this.yoffset=o,this.height=c,this.width=h,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(d){var g,p=[],x=this.xoffset,m=this.yoffset,v=s(d)/this.height,w=s(d)/this.width;if(this.width>=this.height)for(g=0;g=this.height){var p=d/this.height,x=this.width-p;g=new f(this.xoffset+p,this.yoffset,x,this.height)}else{var m=d/this.width,v=this.height-m;g=new f(this.xoffset,this.yoffset+m,this.width,v)}return g}}function e(n,o,h,c,d){c=c===void 0?0:c,d=d===void 0?0:d;var g=t(function(p,x){var m,v=[],w=x/s(p);for(m=0;m=l}(o,g=n[0],d)?(o.push(g),t(n.slice(1),o,h,c)):(p=h.cutArea(s(o),c),c.push(h.getCoordinates(o)),t(n,[],p,c)),c;c.push(h.getCoordinates(o))}function i(n,o){var h=Math.min.apply(Math,n),c=Math.max.apply(Math,n),d=s(n);return Math.max(Math.pow(o,2)*c/Math.pow(d,2),Math.pow(d,2)/(Math.pow(o,2)*h))}function a(n){return n&&n.constructor===Array}function s(n){var o,h=0;for(o=0;or-a&&h.width<=n-s){var c=o.rotateAroundCenter(e.node);e.node.setAttribute("transform","rotate(-90 ".concat(c.x," ").concat(c.y,") translate(").concat(h.height/3,")"))}}},{key:"truncateLabels",value:function(e,t,i,a,s,r){var n=new M(this.ctx),o=n.getTextRects(e,t).width+this.w.config.stroke.width+5>s-i&&r-a>s-i?r-a:s-i,h=n.getTextBasedOnMaxWidth({text:e,maxWidth:o,fontSize:t});return e.length!==h.length&&o/t<5?"":h}},{key:"animateTreemap",value:function(e,t,i,a){var s=new fe(this.ctx);s.animateRect(e,{x:t.x,y:t.y,width:t.width,height:t.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,function(){s.animationCompleted(e)})}}]),f}(),ea=86400,ta=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return F(f,[{key:"calculateTimeScaleTicks",value:function(e,t){var i=this,a=this.w;if(a.globals.allSeriesCollapsed)return a.globals.labels=[],a.globals.timescaleLabels=[],[];var s=new j(this.ctx),r=(t-e)/864e5;this.determineInterval(r),a.globals.disableZoomIn=!1,a.globals.disableZoomOut=!1,r<.00011574074074074075?a.globals.disableZoomIn=!0:r>5e4&&(a.globals.disableZoomOut=!0);var n=s.getTimeUnitsfromTimestamp(e,t,this.utc),o=a.globals.gridWidth/r,h=o/24,c=h/60,d=c/60,g=Math.floor(24*r),p=Math.floor(1440*r),x=Math.floor(r*ea),m=Math.floor(r),v=Math.floor(r/30),w=Math.floor(r/365),A={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},l={firstVal:A,currentMillisecond:A.minMillisecond,currentSecond:A.minSecond,currentMinute:A.minMinute,currentHour:A.minHour,currentMonthDate:A.minDate,currentDate:A.minDate,currentMonth:A.minMonth,currentYear:A.minYear,daysWidthOnXAxis:o,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,secondsWidthOnXAxis:d,numberOfSeconds:x,numberOfMinutes:p,numberOfHours:g,numberOfDays:m,numberOfMonths:v,numberOfYears:w};switch(this.tickInterval){case"years":this.generateYearScale(l);break;case"months":case"half_year":this.generateMonthScale(l);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(l);break;case"hours":this.generateHourScale(l);break;case"minutes_fives":case"minutes":this.generateMinuteScale(l);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(l)}var u=this.timeScaleArray.map(function(b){var y={position:b.position,unit:b.unit,year:b.year,day:b.day?b.day:1,hour:b.hour?b.hour:0,month:b.month+1};return b.unit==="month"?E(E({},y),{},{day:1,value:b.value+1}):b.unit==="day"||b.unit==="hour"?E(E({},y),{},{value:b.value}):b.unit==="minute"?E(E({},y),{},{value:b.value,minute:b.value}):b.unit==="second"?E(E({},y),{},{value:b.value,minute:b.minute,second:b.second}):b});return u.filter(function(b){var y=1,k=Math.ceil(a.globals.gridWidth/120),S=b.value;a.config.xaxis.tickAmount!==void 0&&(k=a.config.xaxis.tickAmount),u.length>k&&(y=Math.floor(u.length/k));var C=!1,L=!1;switch(i.tickInterval){case"years":b.unit==="year"&&(C=!0);break;case"half_year":y=7,b.unit==="year"&&(C=!0);break;case"months":y=1,b.unit==="year"&&(C=!0);break;case"months_fortnight":y=15,b.unit!=="year"&&b.unit!=="month"||(C=!0),S===30&&(L=!0);break;case"months_days":y=10,b.unit==="month"&&(C=!0),S===30&&(L=!0);break;case"week_days":y=8,b.unit==="month"&&(C=!0);break;case"days":y=1,b.unit==="month"&&(C=!0);break;case"hours":b.unit==="day"&&(C=!0);break;case"minutes_fives":case"seconds_fives":S%5!=0&&(L=!0);break;case"seconds_tens":S%10!=0&&(L=!0)}if(i.tickInterval==="hours"||i.tickInterval==="minutes_fives"||i.tickInterval==="seconds_tens"||i.tickInterval==="seconds_fives"){if(!L)return!0}else if((S%y==0||C)&&!L)return!0})}},{key:"recalcDimensionsBasedOnFormat",value:function(e,t){var i=this.w,a=this.formatDates(e),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new Ee(this.ctx).plotCoords()}},{key:"determineInterval",value:function(e){var t=24*e,i=60*t;switch(!0){case e/365>5:this.tickInterval="years";break;case e>800:this.tickInterval="half_year";break;case e>180:this.tickInterval="months";break;case e>90:this.tickInterval="months_fortnight";break;case e>60:this.tickInterval="months_days";break;case e>30:this.tickInterval="week_days";break;case e>2:this.tickInterval="days";break;case t>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(e){var t=e.firstVal,i=e.currentMonth,a=e.currentYear,s=e.daysWidthOnXAxis,r=e.numberOfYears,n=t.minYear,o=0,h=new j(this.ctx),c="year";if(t.minDate>1||t.minMonth>0){var d=h.determineRemainingDaysOfYear(t.minYear,t.minMonth,t.minDate);o=(h.determineDaysOfYear(t.minYear)-d+1)*s,n=t.minYear+1,this.timeScaleArray.push({position:o,value:n,unit:c,year:n,month:P.monthMod(i+1)})}else t.minDate===1&&t.minMonth===0&&this.timeScaleArray.push({position:o,value:n,unit:c,year:a,month:P.monthMod(i+1)});for(var g=n,p=o,x=0;x1){h=(c.determineDaysOfMonths(a+1,t.minYear)-i+1)*r,o=P.monthMod(a+1);var p=s+g,x=P.monthMod(o),m=o;o===0&&(d="year",m=p,x=1,p+=g+=1),this.timeScaleArray.push({position:h,value:m,unit:d,year:p,month:x})}else this.timeScaleArray.push({position:h,value:o,unit:d,year:s,month:P.monthMod(a)});for(var v=o+1,w=h,A=0,l=1;An.determineDaysOfMonths(u+1,b)&&(c=1,o="month",p=u+=1),u},g=(24-t.minHour)*s,p=h,x=d(c,i,a);t.minHour===0&&t.minDate===1?(g=0,p=P.monthMod(t.minMonth),o="month",c=t.minDate):t.minDate!==1&&t.minHour===0&&t.minMinute===0&&(g=0,h=t.minDate,p=h,x=d(c=h,i,a)),this.timeScaleArray.push({position:g,value:p,unit:o,year:this._getYear(a,x,0),month:P.monthMod(x),day:c});for(var m=g,v=0;vo.determineDaysOfMonths(k+1,s)&&(v=1,k+=1),{month:k,date:v}},d=function(y,k){return y>o.determineDaysOfMonths(k+1,s)?k+=1:k},g=60-(t.minMinute+t.minSecond/60),p=g*r,x=t.minHour+1,m=x;g===60&&(p=0,m=x=t.minHour);var v=i;m>=24&&(m=0,v+=1,h="day");var w=c(v,a).month;w=d(v,w),this.timeScaleArray.push({position:p,value:x,unit:h,day:v,hour:m,year:s,month:P.monthMod(w)}),m++;for(var A=p,l=0;l=24&&(m=0,h="day",w=c(v+=1,w).month,w=d(v,w));var u=this._getYear(s,w,0);A=60*r+A;var b=m===0?v:m;this.timeScaleArray.push({position:A,value:b,unit:h,hour:m,day:v,year:u,month:P.monthMod(w)}),m++}}},{key:"generateMinuteScale",value:function(e){for(var t=e.currentMillisecond,i=e.currentSecond,a=e.currentMinute,s=e.currentHour,r=e.currentDate,n=e.currentMonth,o=e.currentYear,h=e.minutesWidthOnXAxis,c=e.secondsWidthOnXAxis,d=e.numberOfMinutes,g=a+1,p=r,x=n,m=o,v=s,w=(60-i-t/1e3)*c,A=0;A=60&&(g=0,(v+=1)===24&&(v=0)),this.timeScaleArray.push({position:w,value:g,unit:"minute",hour:v,minute:g,day:p,year:this._getYear(m,x,0),month:P.monthMod(x)}),w+=h,g++}},{key:"generateSecondScale",value:function(e){for(var t=e.currentMillisecond,i=e.currentSecond,a=e.currentMinute,s=e.currentHour,r=e.currentDate,n=e.currentMonth,o=e.currentYear,h=e.secondsWidthOnXAxis,c=e.numberOfSeconds,d=i+1,g=a,p=r,x=n,m=o,v=s,w=(1e3-t)/1e3*h,A=0;A=60&&(d=0,++g>=60&&(g=0,++v===24&&(v=0))),this.timeScaleArray.push({position:w,value:d,unit:"second",hour:v,minute:g,second:d,day:p,year:this._getYear(m,x,0),month:P.monthMod(x)}),w+=h,d++}},{key:"createRawDateString",value:function(e,t){var i=e.year;return e.month===0&&(e.month=1),i+="-"+("0"+e.month.toString()).slice(-2),e.unit==="day"?i+=e.unit==="day"?"-"+("0"+t).slice(-2):"-01":i+="-"+("0"+(e.day?e.day:"1")).slice(-2),e.unit==="hour"?i+=e.unit==="hour"?"T"+("0"+t).slice(-2):"T00":i+="T"+("0"+(e.hour?e.hour:"0")).slice(-2),e.unit==="minute"?i+=":"+("0"+t).slice(-2):i+=":"+(e.minute?("0"+e.minute).slice(-2):"00"),e.unit==="second"?i+=":"+("0"+t).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(e){var t=this,i=this.w;return e.map(function(a){var s=a.value.toString(),r=new j(t.ctx),n=t.createRawDateString(a,s),o=r.getDate(r.parseDate(n));if(t.utc||(o=r.getDate(r.parseDateWithTimezone(n))),i.config.xaxis.labels.format===void 0){var h="dd MMM",c=i.config.xaxis.labels.datetimeFormatter;a.unit==="year"&&(h=c.year),a.unit==="month"&&(h=c.month),a.unit==="day"&&(h=c.day),a.unit==="hour"&&(h=c.hour),a.unit==="minute"&&(h=c.minute),a.unit==="second"&&(h=c.second),s=r.formatDate(o,h)}else s=r.formatDate(o,i.config.xaxis.labels.format);return{dateString:n,position:a.position,value:s,unit:a.unit,year:a.year,month:a.month}})}},{key:"removeOverlappingTS",value:function(e){var t,i=this,a=new M(this.ctx),s=!1;e.length>0&&e[0].value&&e.every(function(o){return o.value.length===e[0].value.length})&&(s=!0,t=a.getTextRects(e[0].value).width);var r=0,n=e.map(function(o,h){if(h>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var c=s?t:a.getTextRects(e[r].value).width,d=e[r].position;return o.position>d+c+10?(r=h,o):null}return o});return n=n.filter(function(o){return o!==null})}},{key:"_getYear",value:function(e,t,i){return e+Math.floor(t/12)+i}}]),f}(),ia=function(){function f(e,t){Y(this,f),this.ctx=t,this.w=t.w,this.el=e}return F(f,[{key:"setupElements",value:function(){var e=this.w.globals,t=this.w.config,i=t.chart.type;e.axisCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"].indexOf(i)>-1,e.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].indexOf(i)>-1,e.isBarHorizontal=(t.chart.type==="bar"||t.chart.type==="rangeBar"||t.chart.type==="boxPlot")&&t.plotOptions.bar.horizontal,e.chartClass=".apexcharts"+e.chartID,e.dom.baseEl=this.el,e.dom.elWrap=document.createElement("div"),M.setAttrs(e.dom.elWrap,{id:e.chartClass.substring(1),class:"apexcharts-canvas "+e.chartClass.substring(1)}),this.el.appendChild(e.dom.elWrap),e.dom.Paper=new window.SVG.Doc(e.dom.elWrap),e.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(t.chart.offsetX,", ").concat(t.chart.offsetY,")")}),e.dom.Paper.node.style.background=t.theme.mode!=="dark"||t.chart.background?t.chart.background:"rgba(0, 0, 0, 0.8)",this.setSVGDimensions(),e.dom.elLegendForeign=document.createElementNS(e.SVGNS,"foreignObject"),M.setAttrs(e.dom.elLegendForeign,{x:0,y:0,width:e.svgWidth,height:e.svgHeight}),e.dom.elLegendWrap=document.createElement("div"),e.dom.elLegendWrap.classList.add("apexcharts-legend"),e.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),e.dom.elLegendForeign.appendChild(e.dom.elLegendWrap),e.dom.Paper.node.appendChild(e.dom.elLegendForeign),e.dom.elGraphical=e.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),e.dom.elDefs=e.dom.Paper.defs(),e.dom.Paper.add(e.dom.elGraphical),e.dom.elGraphical.add(e.dom.elDefs)}},{key:"plotChartType",value:function(e,t){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},n={series:[],i:[]},o={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]},d={series:[],i:[]},g={series:[],i:[]},p={series:[],i:[]},x={series:[],seriesRangeEnd:[],i:[]};s.series.map(function(k,S){var C=0;e[S].type!==void 0?(e[S].type==="column"||e[S].type==="bar"?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),c.series.push(k),c.i.push(S),C++,i.globals.columnSeries=c.series):e[S].type==="area"?(n.series.push(k),n.i.push(S),C++):e[S].type==="line"?(r.series.push(k),r.i.push(S),C++):e[S].type==="scatter"?(o.series.push(k),o.i.push(S)):e[S].type==="bubble"?(h.series.push(k),h.i.push(S),C++):e[S].type==="candlestick"?(d.series.push(k),d.i.push(S),C++):e[S].type==="boxPlot"?(g.series.push(k),g.i.push(S),C++):e[S].type==="rangeBar"?(p.series.push(k),p.i.push(S),C++):e[S].type==="rangeArea"?(x.series.push(s.seriesRangeStart[S]),x.seriesRangeEnd.push(s.seriesRangeEnd[S]),x.i.push(S),C++):console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble/candlestick/boxPlot/rangeBar/rangeArea"),C>1&&(s.comboCharts=!0)):(r.series.push(k),r.i.push(S))});var m=new $e(this.ctx,t),v=new Ue(this.ctx,t);this.ctx.pie=new Ht(this.ctx);var w=new Zi(this.ctx);this.ctx.rangeBar=new $i(this.ctx,t);var A=new qi(this.ctx),l=[];if(s.comboCharts){if(n.series.length>0&&l.push(m.draw(n.series,"area",n.i)),c.series.length>0)if(i.config.chart.stacked){var u=new yt(this.ctx,t);l.push(u.draw(c.series,c.i))}else this.ctx.bar=new ue(this.ctx,t),l.push(this.ctx.bar.draw(c.series,c.i));if(x.series.length>0&&l.push(m.draw(x.series,"rangeArea",x.i,x.seriesRangeEnd)),r.series.length>0&&l.push(m.draw(r.series,"line",r.i)),d.series.length>0&&l.push(v.draw(d.series,"candlestick",d.i)),g.series.length>0&&l.push(v.draw(g.series,"boxPlot",g.i)),p.series.length>0&&l.push(this.ctx.rangeBar.draw(p.series,p.i)),o.series.length>0){var b=new $e(this.ctx,t,!0);l.push(b.draw(o.series,"scatter",o.i))}if(h.series.length>0){var y=new $e(this.ctx,t,!0);l.push(y.draw(h.series,"bubble",h.i))}}else switch(a.chart.type){case"line":l=m.draw(s.series,"line");break;case"area":l=m.draw(s.series,"area");break;case"bar":a.chart.stacked?l=new yt(this.ctx,t).draw(s.series):(this.ctx.bar=new ue(this.ctx,t),l=this.ctx.bar.draw(s.series));break;case"candlestick":l=new Ue(this.ctx,t).draw(s.series,"candlestick");break;case"boxPlot":l=new Ue(this.ctx,t).draw(s.series,a.chart.type);break;case"rangeBar":l=this.ctx.rangeBar.draw(s.series);break;case"rangeArea":l=m.draw(s.seriesRangeStart,"rangeArea",void 0,s.seriesRangeEnd);break;case"heatmap":l=new Ui(this.ctx,t).draw(s.series);break;case"treemap":l=new Qi(this.ctx,t).draw(s.series);break;case"pie":case"donut":case"polarArea":l=this.ctx.pie.draw(s.series);break;case"radialBar":l=w.draw(s.series);break;case"radar":l=A.draw(s.series);break;default:l=m.draw(s.series)}return l}},{key:"setSVGDimensions",value:function(){var e=this.w.globals,t=this.w.config;e.svgWidth=t.chart.width,e.svgHeight=t.chart.height;var i=P.getDimensions(this.el),a=t.chart.width.toString().split(/[0-9]+/g).pop();a==="%"?P.isNumber(i[0])&&(i[0].width===0&&(i=P.getDimensions(this.el.parentNode)),e.svgWidth=i[0]*parseInt(t.chart.width,10)/100):a!=="px"&&a!==""||(e.svgWidth=parseInt(t.chart.width,10));var s=t.chart.height.toString().split(/[0-9]+/g).pop();if(e.svgHeight!=="auto"&&e.svgHeight!=="")if(s==="%"){var r=P.getDimensions(this.el.parentNode);e.svgHeight=r[1]*parseInt(t.chart.height,10)/100}else e.svgHeight=parseInt(t.chart.height,10);else e.axisCharts?e.svgHeight=e.svgWidth/1.61:e.svgHeight=e.svgWidth/1.2;if(e.svgWidth<0&&(e.svgWidth=0),e.svgHeight<0&&(e.svgHeight=0),M.setAttrs(e.dom.Paper.node,{width:e.svgWidth,height:e.svgHeight}),s!=="%"){var n=t.chart.sparkline.enabled?0:e.axisCharts?t.chart.parentHeightOffset:0;e.dom.Paper.node.parentNode.parentNode.style.minHeight=e.svgHeight+n+"px"}e.dom.elWrap.style.width=e.svgWidth+"px",e.dom.elWrap.style.height=e.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var e=this.w.globals,t=e.translateY,i={transform:"translate("+e.translateX+", "+t+")"};M.setAttrs(e.dom.elGraphical.node,i)}},{key:"resizeNonAxisCharts",value:function(){var e=this.w,t=e.globals,i=0,a=e.config.chart.sparkline.enabled?1:15;a+=e.config.grid.padding.bottom,e.config.legend.position!=="top"&&e.config.legend.position!=="bottom"||!e.config.legend.show||e.config.legend.floating||(i=new Xt(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=e.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),r=2.05*e.globals.radialSize;if(s&&!e.config.chart.sparkline.enabled&&e.config.plotOptions.radialBar.startAngle!==0){var n=P.getBoundingClientRect(s);r=n.bottom;var o=n.bottom-n.top;r=Math.max(2.05*e.globals.radialSize,o)}var h=r+t.translateY+i+a;t.dom.elLegendForeign&&t.dom.elLegendForeign.setAttribute("height",h),e.config.chart.height&&String(e.config.chart.height).indexOf("%")>0||(t.dom.elWrap.style.height=h+"px",M.setAttrs(t.dom.Paper.node,{height:h}),t.dom.Paper.node.parentNode.parentNode.style.minHeight=h+"px")}},{key:"coreCalculations",value:function(){new et(this.ctx).init()}},{key:"resetGlobals",value:function(){var e=this,t=function(){return e.w.config.series.map(function(s){return[]})},i=new Tt,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=t(),a.seriesYvalues=t()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var e=null,t=this.w;if(t.globals.axisCharts){if(t.config.xaxis.crosshairs.position==="back"&&new tt(this.ctx).drawXCrosshairs(),t.config.yaxis[0].crosshairs.position==="back"&&new tt(this.ctx).drawYCrosshairs(),t.config.xaxis.type==="datetime"&&t.config.xaxis.labels.formatter===void 0){this.ctx.timeScale=new ta(this.ctx);var i=[];isFinite(t.globals.minX)&&isFinite(t.globals.maxX)&&!t.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minX,t.globals.maxX):t.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(t.globals.minY,t.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}e=new V(this.ctx).getCalculatedRatios()}return e}},{key:"updateSourceChart",value:function(e){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:e.w.globals.minX,max:e.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var e=this,t=this.w;if(t.config.chart.brush.enabled&&typeof t.config.chart.events.selection!="function"){var i=Array.isArray(t.config.chart.brush.targets)||[t.config.chart.brush.target];i.forEach(function(a){var s=ApexCharts.getChartByID(a);s.w.globals.brushSource=e.ctx,typeof s.w.config.chart.events.zoomed!="function"&&(s.w.config.chart.events.zoomed=function(){e.updateSourceChart(s)}),typeof s.w.config.chart.events.scrolled!="function"&&(s.w.config.chart.events.scrolled=function(){e.updateSourceChart(s)})}),t.config.chart.events.selection=function(a,s){i.forEach(function(r){var n=ApexCharts.getChartByID(r),o=P.clone(t.config.yaxis);if(t.config.chart.brush.autoScaleYaxis&&n.w.globals.series.length===1){var h=new ge(n);o=h.autoScaleY(n,o,s)}var c=n.w.config.yaxis.reduce(function(d,g,p){return[].concat(J(d),[E(E({},n.w.config.yaxis[p]),{},{min:o[0].min,max:o[0].max})])},[]);n.ctx.updateHelpers._updateOptions({xaxis:{min:s.xaxis.min,max:s.xaxis.max},yaxis:c},!1,!1,!1,!1)})}}}}]),f}(),aa=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"_updateOptions",value:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0&&arguments[1],a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],s=!(arguments.length>3&&arguments[3]!==void 0)||arguments[3],r=arguments.length>4&&arguments[4]!==void 0&&arguments[4];return new Promise(function(n){var o=[t.ctx];s&&(o=t.ctx.getSyncedCharts()),t.ctx.w.globals.isExecCalled&&(o=[t.ctx],t.ctx.w.globals.isExecCalled=!1),o.forEach(function(h,c){var d=h.w;if(d.globals.shouldAnimate=a,i||(d.globals.resized=!0,d.globals.dataChanged=!0,a&&h.series.getPreviousPaths()),e&&_(e)==="object"&&(h.config=new ye(e),e=V.extendArrayProps(h.config,e,d),h.w.globals.chartID!==t.ctx.w.globals.chartID&&delete e.series,d.config=P.extend(d.config,e),r&&(d.globals.lastXAxis=e.xaxis?P.clone(e.xaxis):[],d.globals.lastYAxis=e.yaxis?P.clone(e.yaxis):[],d.globals.initialConfig=P.extend({},d.config),d.globals.initialSeries=P.clone(d.config.series),e.series))){for(var g=0;g2&&arguments[2]!==void 0&&arguments[2];return new Promise(function(s){var r,n=i.w;return n.globals.shouldAnimate=t,n.globals.dataChanged=!0,t&&i.ctx.series.getPreviousPaths(),n.globals.axisCharts?((r=e.map(function(o,h){return i._extendSeries(o,h)})).length===0&&(r=[{data:[]}]),n.config.series=r):n.config.series=e.slice(),a&&(n.globals.initialConfig.series=P.clone(n.config.series),n.globals.initialSeries=P.clone(n.config.series)),i.ctx.update().then(function(){s(i.ctx)})})}},{key:"_extendSeries",value:function(e,t){var i=this.w,a=i.config.series[t];return E(E({},i.config.series[t]),{},{name:e.name?e.name:a?.name,color:e.color?e.color:a?.color,type:e.type?e.type:a?.type,group:e.group?e.group:a?.group,data:e.data?e.data:a?.data,zIndex:e.zIndex!==void 0?e.zIndex:t})}},{key:"toggleDataPointSelection",value:function(e,t){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(e,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"'], ").concat(s," circle[j='").concat(t,"'], ").concat(s," rect[j='").concat(t,"']")).members[0]:t===void 0&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"']")).members[0],i.config.chart.type!=="pie"&&i.config.chart.type!=="polarArea"&&i.config.chart.type!=="donut"||this.ctx.pie.pieClicked(e)),a?(new M(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(e){var t=this.w;if(["min","max"].forEach(function(a){e.xaxis[a]!==void 0&&(t.config.xaxis[a]=e.xaxis[a],t.globals.lastXAxis[a]=e.xaxis[a])}),e.xaxis.categories&&e.xaxis.categories.length&&(t.config.xaxis.categories=e.xaxis.categories),t.config.xaxis.convertedCatToNumeric){var i=new ve(e);e=i.convertCatToNumericXaxis(e,this.ctx)}return e}},{key:"forceYAxisUpdate",value:function(e){return e.chart&&e.chart.stacked&&e.chart.stackType==="100%"&&(Array.isArray(e.yaxis)?e.yaxis.forEach(function(t,i){e.yaxis[i].min=0,e.yaxis[i].max=100}):(e.yaxis.min=0,e.yaxis.max=100)),e}},{key:"revertDefaultAxisMinMax",value:function(e){var t=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;e&&e.xaxis&&(a=e.xaxis),e&&e.yaxis&&(s=e.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(n){s[n]!==void 0&&(i.config.yaxis[n].min=s[n].min,i.config.yaxis[n].max=s[n].max)};i.config.yaxis.map(function(n,o){i.globals.zoomed||s[o]!==void 0?r(o):t.ctx.opts.yaxis[o]!==void 0&&(n.min=t.ctx.opts.yaxis[o].min,n.max=t.ctx.opts.yaxis[o].max)})}}]),f}();te=typeof window<"u"?window:void 0,me=function(f,e){var t=(this!==void 0?this:f).SVG=function(l){if(t.supported)return l=new t.Doc(l),t.parser.draw||t.prepare(),l};if(t.ns="http://www.w3.org/2000/svg",t.xmlns="http://www.w3.org/2000/xmlns/",t.xlink="http://www.w3.org/1999/xlink",t.svgjs="http://svgjs.dev",t.supported=!0,!t.supported)return!1;t.did=1e3,t.eid=function(l){return"Svgjs"+c(l)+t.did++},t.create=function(l){var u=e.createElementNS(this.ns,l);return u.setAttribute("id",this.eid(l)),u},t.extend=function(){var l,u;u=(l=[].slice.call(arguments)).pop();for(var b=l.length-1;b>=0;b--)if(l[b])for(var y in u)l[b].prototype[y]=u[y];t.Set&&t.Set.inherit&&t.Set.inherit()},t.invent=function(l){var u=typeof l.create=="function"?l.create:function(){this.constructor.call(this,t.create(l.create))};return l.inherit&&(u.prototype=new l.inherit),l.extend&&t.extend(u,l.extend),l.construct&&t.extend(l.parent||t.Container,l.construct),u},t.adopt=function(l){return l?l.instance?l.instance:((u=l.nodeName=="svg"?l.parentNode instanceof f.SVGElement?new t.Nested:new t.Doc:l.nodeName=="linearGradient"?new t.Gradient("linear"):l.nodeName=="radialGradient"?new t.Gradient("radial"):t[c(l.nodeName)]?new t[c(l.nodeName)]:new t.Element(l)).type=l.nodeName,u.node=l,l.instance=u,u instanceof t.Doc&&u.namespace().defs(),u.setData(JSON.parse(l.getAttribute("svgjs:data"))||{}),u):null;var u},t.prepare=function(){var l=e.getElementsByTagName("body")[0],u=(l?new t.Doc(l):t.adopt(e.documentElement).nested()).size(2,0);t.parser={body:l||e.documentElement,draw:u.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:u.polyline().node,path:u.path().node,native:t.create("svg")}},t.parser={native:t.create("svg")},e.addEventListener("DOMContentLoaded",function(){t.parser.draw||t.prepare()},!1),t.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},t.utils={map:function(l,u){for(var b=l.length,y=[],k=0;k1?1:l,new t.Color({r:~~(this.r+(this.destination.r-this.r)*l),g:~~(this.g+(this.destination.g-this.g)*l),b:~~(this.b+(this.destination.b-this.b)*l)})):this}}),t.Color.test=function(l){return l+="",t.regex.isHex.test(l)||t.regex.isRgb.test(l)},t.Color.isRgb=function(l){return l&&typeof l.r=="number"&&typeof l.g=="number"&&typeof l.b=="number"},t.Color.isColor=function(l){return t.Color.isRgb(l)||t.Color.test(l)},t.Array=function(l,u){(l=(l||[]).valueOf()).length==0&&u&&(l=u.valueOf()),this.value=this.parse(l)},t.extend(t.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(l){return l=l.valueOf(),Array.isArray(l)?l:this.split(l)}}),t.PointArray=function(l,u){t.Array.call(this,l,u||[[0,0]])},t.PointArray.prototype=new t.Array,t.PointArray.prototype.constructor=t.PointArray;for(var i={M:function(l,u,b){return u.x=b.x=l[0],u.y=b.y=l[1],["M",u.x,u.y]},L:function(l,u){return u.x=l[0],u.y=l[1],["L",l[0],l[1]]},H:function(l,u){return u.x=l[0],["H",l[0]]},V:function(l,u){return u.y=l[0],["V",l[0]]},C:function(l,u){return u.x=l[4],u.y=l[5],["C",l[0],l[1],l[2],l[3],l[4],l[5]]},Q:function(l,u){return u.x=l[2],u.y=l[3],["Q",l[0],l[1],l[2],l[3]]},S:function(l,u){return u.x=l[2],u.y=l[3],["S",l[0],l[1],l[2],l[3]]},Z:function(l,u,b){return u.x=b.x,u.y=b.y,["Z"]}},a="mlhvqtcsaz".split(""),s=0,r=a.length;sC);return y},bbox:function(){return t.parser.draw||t.prepare(),t.parser.path.setAttribute("d",this.toString()),t.parser.path.getBBox()}}),t.Number=t.invent({create:function(l,u){this.value=0,this.unit=u||"",typeof l=="number"?this.value=isNaN(l)?0:isFinite(l)?l:l<0?-34e37:34e37:typeof l=="string"?(u=l.match(t.regex.numberAndUnit))&&(this.value=parseFloat(u[1]),u[5]=="%"?this.value/=100:u[5]=="s"&&(this.value*=1e3),this.unit=u[5]):l instanceof t.Number&&(this.value=l.valueOf(),this.unit=l.unit)},extend:{toString:function(){return(this.unit=="%"?~~(1e8*this.value)/1e6:this.unit=="s"?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(l){return l=new t.Number(l),new t.Number(this+l,this.unit||l.unit)},minus:function(l){return l=new t.Number(l),new t.Number(this-l,this.unit||l.unit)},times:function(l){return l=new t.Number(l),new t.Number(this*l,this.unit||l.unit)},divide:function(l){return l=new t.Number(l),new t.Number(this/l,this.unit||l.unit)},to:function(l){var u=new t.Number(this);return typeof l=="string"&&(u.unit=l),u},morph:function(l){return this.destination=new t.Number(l),l.relative&&(this.destination.value+=this.value),this},at:function(l){return this.destination?new t.Number(this.destination).minus(this).times(l).plus(this):this}}}),t.Element=t.invent({create:function(l){this._stroke=t.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=l)&&(this.type=l.nodeName,this.node.instance=this,this._stroke=l.getAttribute("stroke")||this._stroke)},extend:{x:function(l){return this.attr("x",l)},y:function(l){return this.attr("y",l)},cx:function(l){return l==null?this.x()+this.width()/2:this.x(l-this.width()/2)},cy:function(l){return l==null?this.y()+this.height()/2:this.y(l-this.height()/2)},move:function(l,u){return this.x(l).y(u)},center:function(l,u){return this.cx(l).cy(u)},width:function(l){return this.attr("width",l)},height:function(l){return this.attr("height",l)},size:function(l,u){var b=g(this,l,u);return this.width(new t.Number(b.width)).height(new t.Number(b.height))},clone:function(l){this.writeDataToDom();var u=m(this.node.cloneNode(!0));return l?l.add(u):this.after(u),u},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(l){return this.after(l).remove(),l},addTo:function(l){return l.put(this)},putIn:function(l){return l.add(this)},id:function(l){return this.attr("id",l)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return this.style("display")!="none"},toString:function(){return this.attr("id")},classes:function(){var l=this.attr("class");return l==null?[]:l.trim().split(t.regex.delimiter)},hasClass:function(l){return this.classes().indexOf(l)!=-1},addClass:function(l){if(!this.hasClass(l)){var u=this.classes();u.push(l),this.attr("class",u.join(" "))}return this},removeClass:function(l){return this.hasClass(l)&&this.attr("class",this.classes().filter(function(u){return u!=l}).join(" ")),this},toggleClass:function(l){return this.hasClass(l)?this.removeClass(l):this.addClass(l)},reference:function(l){return t.get(this.attr(l))},parent:function(l){var u=this;if(!u.node.parentNode)return null;if(u=t.adopt(u.node.parentNode),!l)return u;for(;u&&u.node instanceof f.SVGElement;){if(typeof l=="string"?u.matches(l):u instanceof l)return u;if(!u.node.parentNode||u.node.parentNode.nodeName=="#document")return null;u=t.adopt(u.node.parentNode)}},doc:function(){return this instanceof t.Doc?this:this.parent(t.Doc)},parents:function(l){var u=[],b=this;do{if(!(b=b.parent(l))||!b.node)break;u.push(b)}while(b.parent);return u},matches:function(l){return function(u,b){return(u.matches||u.matchesSelector||u.msMatchesSelector||u.mozMatchesSelector||u.webkitMatchesSelector||u.oMatchesSelector).call(u,b)}(this.node,l)},native:function(){return this.node},svg:function(l){var u=e.createElement("svg");if(!(l&&this instanceof t.Parent))return u.appendChild(l=e.createElement("svg")),this.writeDataToDom(),l.appendChild(this.node.cloneNode(!0)),u.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");u.innerHTML=""+l.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var b=0,y=u.firstChild.childNodes.length;b":function(l){return-Math.cos(l*Math.PI)/2+.5},">":function(l){return Math.sin(l*Math.PI/2)},"<":function(l){return 1-Math.cos(l*Math.PI/2)}},t.morph=function(l){return function(u,b){return new t.MorphObj(u,b).at(l)}},t.Situation=t.invent({create:function(l){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new t.Number(l.duration).valueOf(),this.delay=new t.Number(l.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=l.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),t.FX=t.invent({create:function(l){this._target=l,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(l,u,b){_(l)==="object"&&(u=l.ease,b=l.delay,l=l.duration);var y=new t.Situation({duration:l||1e3,delay:b||0,ease:t.easing[u||"-"]||u});return this.queue(y),this},target:function(l){return l&&l instanceof t.Element?(this._target=l,this):this._target},timeToAbsPos:function(l){return(l-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(l){return this.situation.duration/this._speed*l+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=f.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){f.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(l){return(typeof l=="function"||l instanceof t.Situation)&&this.situations.push(l),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof t.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var l,u=this.situation;if(u.init)return this;for(var b in u.animations){l=this.target()[b](),Array.isArray(l)||(l=[l]),Array.isArray(u.animations[b])||(u.animations[b]=[u.animations[b]]);for(var y=l.length;y--;)u.animations[b][y]instanceof t.Number&&(l[y]=new t.Number(l[y])),u.animations[b][y]=l[y].morph(u.animations[b][y])}for(var b in u.attrs)u.attrs[b]=new t.MorphObj(this.target().attr(b),u.attrs[b]);for(var b in u.styles)u.styles[b]=new t.MorphObj(this.target().style(b),u.styles[b]);return u.initialTransformation=this.target().matrixify(),u.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(l,u){var b=this.active;return this.active=!1,u&&this.clearQueue(),l&&this.situation&&(!b&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(l){var u=this.last();return this.target().on("finished.fx",function b(y){y.detail.situation==u&&(l.call(this,u),this.off("finished.fx",b))}),this._callStart()},during:function(l){var u=this.last(),b=function(y){y.detail.situation==u&&l.call(this,y.detail.pos,t.morph(y.detail.pos),y.detail.eased,u)};return this.target().off("during.fx",b).on("during.fx",b),this.after(function(){this.off("during.fx",b)}),this._callStart()},afterAll:function(l){var u=function b(y){l.call(this),this.off("allfinished.fx",b)};return this.target().off("allfinished.fx",u).on("allfinished.fx",u),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(l,u,b){return this.last()[b||"animations"][l]=u,this._callStart()},step:function(l){var u,b,y;l||(this.absPos=this.timeToAbsPos(+new Date)),this.situation.loops!==!1?(u=Math.max(this.absPos,0),b=Math.floor(u),this.situation.loops===!0||bthis.lastPos&&S<=k&&(this.situation.once[S].call(this.target(),this.pos,k),delete this.situation.once[S]);return this.active&&this.target().fire("during",{pos:this.pos,eased:k,fx:this,situation:this.situation}),this.situation?(this.eachAt(),this.pos==1&&!this.situation.reversed||this.situation.reversed&&this.pos==0?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=k,this):this},eachAt:function(){var l,u=this,b=this.target(),y=this.situation;for(var k in y.animations)l=[].concat(y.animations[k]).map(function(L){return typeof L!="string"&&L.at?L.at(y.ease(u.pos),u.pos):L}),b[k].apply(b,l);for(var k in y.attrs)l=[k].concat(y.attrs[k]).map(function(T){return typeof T!="string"&&T.at?T.at(y.ease(u.pos),u.pos):T}),b.attr.apply(b,l);for(var k in y.styles)l=[k].concat(y.styles[k]).map(function(T){return typeof T!="string"&&T.at?T.at(y.ease(u.pos),u.pos):T}),b.style.apply(b,l);if(y.transforms.length){l=y.initialTransformation,k=0;for(var S=y.transforms.length;k=0;--b)this[w[b]]=l[w[b]]!=null?l[w[b]]:u[w[b]]},extend:{extract:function(){var l=p(this,0,1);p(this,1,0);var u=180/Math.PI*Math.atan2(l.y,l.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(u*Math.PI/180)+this.f*Math.sin(u*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(u*Math.PI/180)+this.e*Math.sin(-u*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:u,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new t.Matrix(this)}},clone:function(){return new t.Matrix(this)},morph:function(l){return this.destination=new t.Matrix(l),this},multiply:function(l){return new t.Matrix(this.native().multiply(function(u){return u instanceof t.Matrix||(u=new t.Matrix(u)),u}(l).native()))},inverse:function(){return new t.Matrix(this.native().inverse())},translate:function(l,u){return new t.Matrix(this.native().translate(l||0,u||0))},native:function(){for(var l=t.parser.native.createSVGMatrix(),u=w.length-1;u>=0;u--)l[w[u]]=this[w[u]];return l},toString:function(){return"matrix("+v(this.a)+","+v(this.b)+","+v(this.c)+","+v(this.d)+","+v(this.e)+","+v(this.f)+")"}},parent:t.Element,construct:{ctm:function(){return new t.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof t.Nested){var l=this.rect(1,1),u=l.node.getScreenCTM();return l.remove(),new t.Matrix(u)}return new t.Matrix(this.node.getScreenCTM())}}}),t.Point=t.invent({create:function(l,u){var b;b=Array.isArray(l)?{x:l[0],y:l[1]}:_(l)==="object"?{x:l.x,y:l.y}:l!=null?{x:l,y:u??l}:{x:0,y:0},this.x=b.x,this.y=b.y},extend:{clone:function(){return new t.Point(this)},morph:function(l,u){return this.destination=new t.Point(l,u),this}}}),t.extend(t.Element,{point:function(l,u){return new t.Point(l,u).transform(this.screenCTM().inverse())}}),t.extend(t.Element,{attr:function(l,u,b){if(l==null){for(l={},b=(u=this.node.attributes).length-1;b>=0;b--)l[u[b].nodeName]=t.regex.isNumber.test(u[b].nodeValue)?parseFloat(u[b].nodeValue):u[b].nodeValue;return l}if(_(l)==="object")for(var y in l)this.attr(y,l[y]);else if(u===null)this.node.removeAttribute(l);else{if(u==null)return(u=this.node.getAttribute(l))==null?t.defaults.attrs[l]:t.regex.isNumber.test(u)?parseFloat(u):u;l=="stroke-width"?this.attr("stroke",parseFloat(u)>0?this._stroke:null):l=="stroke"&&(this._stroke=u),l!="fill"&&l!="stroke"||(t.regex.isImage.test(u)&&(u=this.doc().defs().image(u,0,0)),u instanceof t.Image&&(u=this.doc().defs().pattern(0,0,function(){this.add(u)}))),typeof u=="number"?u=new t.Number(u):t.Color.isColor(u)?u=new t.Color(u):Array.isArray(u)&&(u=new t.Array(u)),l=="leading"?this.leading&&this.leading(u):typeof b=="string"?this.node.setAttributeNS(b,l,u.toString()):this.node.setAttribute(l,u.toString()),!this.rebuild||l!="font-size"&&l!="x"||this.rebuild(l,u)}return this}}),t.extend(t.Element,{transform:function(l,u){var b;return _(l)!=="object"?(b=new t.Matrix(this).extract(),typeof l=="string"?b[l]:b):(b=new t.Matrix(this),u=!!u||!!l.relative,l.a!=null&&(b=u?b.multiply(new t.Matrix(l)):new t.Matrix(l)),this.attr("transform",b))}}),t.extend(t.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(t.regex.transforms).slice(0,-1).map(function(l){var u=l.trim().split("(");return[u[0],u[1].split(t.regex.delimiter).map(function(b){return parseFloat(b)})]}).reduce(function(l,u){return u[0]=="matrix"?l.multiply(x(u[1])):l[u[0]].apply(l,u[1])},new t.Matrix)},toParent:function(l){if(this==l)return this;var u=this.screenCTM(),b=l.screenCTM().inverse();return this.addTo(l).untransform().transform(b.multiply(u)),this},toDoc:function(){return this.toParent(this.doc())}}),t.Transformation=t.invent({create:function(l,u){if(arguments.length>1&&typeof u!="boolean")return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(l))for(var b=0,y=this.arguments.length;b=0},index:function(l){return[].slice.call(this.node.childNodes).indexOf(l.node)},get:function(l){return t.adopt(this.node.childNodes[l])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(l,u){for(var b=this.children(),y=0,k=b.length;y=0;u--)l.childNodes[u]instanceof f.SVGElement&&m(l.childNodes[u]);return t.adopt(l).id(t.eid(l.nodeName))}function v(l){return Math.abs(l)>1e-37?l:0}["fill","stroke"].forEach(function(l){var u={};u[l]=function(b){if(b===void 0)return this;if(typeof b=="string"||t.Color.isRgb(b)||b&&typeof b.fill=="function")this.attr(l,b);else for(var y=n[l].length-1;y>=0;y--)b[n[l][y]]!=null&&this.attr(n.prefix(l,n[l][y]),b[n[l][y]]);return this},t.extend(t.Element,t.FX,u)}),t.extend(t.Element,t.FX,{translate:function(l,u){return this.transform({x:l,y:u})},matrix:function(l){return this.attr("transform",new t.Matrix(arguments.length==6?[].slice.call(arguments):l))},opacity:function(l){return this.attr("opacity",l)},dx:function(l){return this.x(new t.Number(l).plus(this instanceof t.FX?0:this.x()),!0)},dy:function(l){return this.y(new t.Number(l).plus(this instanceof t.FX?0:this.y()),!0)}}),t.extend(t.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(l){return this.node.getPointAtLength(l)}}),t.Set=t.invent({create:function(l){Array.isArray(l)?this.members=l:this.clear()},extend:{add:function(){for(var l=[].slice.call(arguments),u=0,b=l.length;u-1&&this.members.splice(u,1),this},each:function(l){for(var u=0,b=this.members.length;u=0},index:function(l){return this.members.indexOf(l)},get:function(l){return this.members[l]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(l){return new t.Set(l)}}}),t.FX.Set=t.invent({create:function(l){this.set=l}}),t.Set.inherit=function(){var l=[];for(var u in t.Shape.prototype)typeof t.Shape.prototype[u]=="function"&&typeof t.Set.prototype[u]!="function"&&l.push(u);for(var u in l.forEach(function(y){t.Set.prototype[y]=function(){for(var k=0,S=this.members.length;k=0;l--)delete this.memory()[arguments[l]];return this},memory:function(){return this._memory||(this._memory={})}}),t.get=function(l){var u=e.getElementById(function(b){var y=(b||"").toString().match(t.regex.reference);if(y)return y[1]}(l)||l);return t.adopt(u)},t.select=function(l,u){return new t.Set(t.utils.map((u||e).querySelectorAll(l),function(b){return t.adopt(b)}))},t.extend(t.Parent,{select:function(l){return t.select(l,this.node)}});var w="abcdef".split("");if(typeof f.CustomEvent!="function"){var A=function(l,u){u=u||{bubbles:!1,cancelable:!1,detail:void 0};var b=e.createEvent("CustomEvent");return b.initCustomEvent(l,u.bubbles,u.cancelable,u.detail),b};A.prototype=f.Event.prototype,t.CustomEvent=A}else t.CustomEvent=f.CustomEvent;return t},typeof define=="function"&&define.amd?define(function(){return me(te,te.document)}):(typeof it>"u"?"undefined":_(it))==="object"&&typeof Ye<"u"?Ye.exports=te.document?me(te,te.document):function(f){return me(f,f.document)}:te.SVG=me(te,te.document),function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(r,n){return this.add(r,n),!r.attr("in")&&this.autoSetIn&&r.attr("in",this.source),r.attr("result")||r.attr("result",r),r},blend:function(r,n,o){return this.put(new SVG.BlendEffect(r,n,o))},colorMatrix:function(r,n){return this.put(new SVG.ColorMatrixEffect(r,n))},convolveMatrix:function(r){return this.put(new SVG.ConvolveMatrixEffect(r))},componentTransfer:function(r){return this.put(new SVG.ComponentTransferEffect(r))},composite:function(r,n,o){return this.put(new SVG.CompositeEffect(r,n,o))},flood:function(r,n){return this.put(new SVG.FloodEffect(r,n))},offset:function(r,n){return this.put(new SVG.OffsetEffect(r,n))},image:function(r){return this.put(new SVG.ImageEffect(r))},merge:function(){var r=[void 0];for(var n in arguments)r.push(arguments[n]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,r)))},gaussianBlur:function(r,n){return this.put(new SVG.GaussianBlurEffect(r,n))},morphology:function(r,n){return this.put(new SVG.MorphologyEffect(r,n))},diffuseLighting:function(r,n,o){return this.put(new SVG.DiffuseLightingEffect(r,n,o))},displacementMap:function(r,n,o,h,c){return this.put(new SVG.DisplacementMapEffect(r,n,o,h,c))},specularLighting:function(r,n,o,h){return this.put(new SVG.SpecularLightingEffect(r,n,o,h))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(r,n,o,h,c){return this.put(new SVG.TurbulenceEffect(r,n,o,h,c))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(r){var n=this.put(new SVG.Filter);return typeof r=="function"&&r.call(n,n),n}}),SVG.extend(SVG.Container,{filter:function(r){return this.defs().filter(r)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(r){return this.filterer=r instanceof SVG.Element?r:this.doc().filter(r),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(r){return this.filterer&&r===!0&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(r){return r==null?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",r)},result:function(r){return r==null?this.attr("result"):this.attr("result",r)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(r){return r==null?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",r)},result:function(r){return r==null?this.attr("result"):this.attr("result",r)},toString:function(){return this.result()}}});var f={blend:function(r,n){return this.parent()&&this.parent().blend(this,r,n)},colorMatrix:function(r,n){return this.parent()&&this.parent().colorMatrix(r,n).in(this)},convolveMatrix:function(r){return this.parent()&&this.parent().convolveMatrix(r).in(this)},componentTransfer:function(r){return this.parent()&&this.parent().componentTransfer(r).in(this)},composite:function(r,n){return this.parent()&&this.parent().composite(this,r,n)},flood:function(r,n){return this.parent()&&this.parent().flood(r,n)},offset:function(r,n){return this.parent()&&this.parent().offset(r,n).in(this)},image:function(r){return this.parent()&&this.parent().image(r)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(r,n){return this.parent()&&this.parent().gaussianBlur(r,n).in(this)},morphology:function(r,n){return this.parent()&&this.parent().morphology(r,n).in(this)},diffuseLighting:function(r,n,o){return this.parent()&&this.parent().diffuseLighting(r,n,o).in(this)},displacementMap:function(r,n,o,h){return this.parent()&&this.parent().displacementMap(this,r,n,o,h)},specularLighting:function(r,n,o,h){return this.parent()&&this.parent().specularLighting(r,n,o,h).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(r,n,o,h,c){return this.parent()&&this.parent().turbulence(r,n,o,h,c).in(this)}};SVG.extend(SVG.Effect,f),SVG.extend(SVG.ParentEffect,f),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(r){this.attr("in",r)}}});var e={blend:function(r,n,o){this.attr({in:r,in2:n,mode:o||"normal"})},colorMatrix:function(r,n){r=="matrix"&&(n=a(n)),this.attr({type:r,values:n===void 0?null:n})},convolveMatrix:function(r){r=a(r),this.attr({order:Math.sqrt(r.split(" ").length),kernelMatrix:r})},composite:function(r,n,o){this.attr({in:r,in2:n,operator:o})},flood:function(r,n){this.attr("flood-color",r),n!=null&&this.attr("flood-opacity",n)},offset:function(r,n){this.attr({dx:r,dy:n})},image:function(r){this.attr("href",r,SVG.xlink)},displacementMap:function(r,n,o,h,c){this.attr({in:r,in2:n,scale:o,xChannelSelector:h,yChannelSelector:c})},gaussianBlur:function(r,n){r!=null||n!=null?this.attr("stdDeviation",function(o){if(!Array.isArray(o))return o;for(var h=0,c=o.length,d=[];h1&&(G*=c=Math.sqrt(c),N*=c),d=new SVG.Matrix().rotate(W).scale(1/G,1/N).rotate(-W),$=$.transform(d),U=U.transform(d),g=[U.x-$.x,U.y-$.y],x=g[0]*g[0]+g[1]*g[1],p=Math.sqrt(x),g[0]/=p,g[1]/=p,m=x<4?Math.sqrt(1-x/4):0,Z===K&&(m*=-1),v=new SVG.Point((U.x+$.x)/2+m*-g[1],(U.y+$.y)/2+m*g[0]),w=new SVG.Point($.x-v.x,$.y-v.y),A=new SVG.Point(U.x-v.x,U.y-v.y),l=Math.acos(w.x/Math.sqrt(w.x*w.x+w.y*w.y)),w.y<0&&(l*=-1),u=Math.acos(A.x/Math.sqrt(A.x*A.x+A.y*A.y)),A.y<0&&(u*=-1),K&&l>u&&(u+=2*Math.PI),!K&&lr.maxX-t.width&&(n=(a=r.maxX-t.width)-this.startPoints.box.x),r.minY!=null&&sr.maxY-t.height&&(o=(s=r.maxY-t.height)-this.startPoints.box.y),r.snapToGrid!=null&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,n-=n%r.snapToGrid,o-=o%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:n,y:o},!0):this.el.move(a,s));return i},f.prototype.end=function(e){var t=this.drag(e);this.el.fire("dragend",{event:e,p:t,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,t){typeof e!="function"&&typeof e!="object"||(t=e,e=!0);var i=this.remember("_draggable")||new f(this);return(e=e===void 0||e)?i.init(t||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function f(e){this.el=e,e.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,i,a){var s=typeof t!="string"?t:i[t];return a?s/2:s},this.pointCoords=function(t,i){var a=this.pointsList[t];return{x:this.pointCoord(a[0],i,t==="t"||t==="b"),y:this.pointCoord(a[1],i,t==="r"||t==="l")}}}f.prototype.init=function(e,t){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],t[s]!==void 0&&(this.options[s]=t[s]);var r=["points","pointsExclude"];for(var s in r){var n=this.options[r[s]];typeof n=="string"?n=n.length>0?n.split(/\s*,\s*/i):[]:typeof n=="boolean"&&r[s]==="points"&&(n=n?a:[]),this.options[r[s]]=n}this.options.points=[a,this.options.points].reduce(function(o,h){return o.filter(function(c){return h.indexOf(c)>-1})}),this.options.points=[this.options.points,this.options.pointsExclude].reduce(function(o,h){return o.filter(function(c){return h.indexOf(c)<0})}),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&["line","polyline","polygon"].indexOf(this.el.type)!==-1?this.selectPoints(e):this.selectRect(e),this.observe(),this.cleanup()},f.prototype.selectPoints=function(e){return this.pointSelection.isSelected=e,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},f.prototype.getPointArray=function(){var e=this.el.bbox();return this.el.array().valueOf().map(function(t){return[t[0]-e.x,t[1]-e.y]})},f.prototype.drawPoints=function(){for(var e=this,t=this.getPointArray(),i=0,a=t.length;i0&&this.parameters.box.height-n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x+n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-n[0]);n=this.checkAspectRatio(n),this.el.move(this.parameters.box.x+n[0],this.parameters.box.y+n[1]).size(this.parameters.box.width-n[0],this.parameters.box.height-n[1])}};break;case"rt":this.calc=function(s,r){var n=this.snapToGrid(s,r,2);if(this.parameters.box.width+n[0]>0&&this.parameters.box.height-n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x-n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+n[0]);n=this.checkAspectRatio(n,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+n[1]).size(this.parameters.box.width+n[0],this.parameters.box.height-n[1])}};break;case"rb":this.calc=function(s,r){var n=this.snapToGrid(s,r,0);if(this.parameters.box.width+n[0]>0&&this.parameters.box.height+n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x-n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+n[0]);n=this.checkAspectRatio(n),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+n[0],this.parameters.box.height+n[1])}};break;case"lb":this.calc=function(s,r){var n=this.snapToGrid(s,r,1);if(this.parameters.box.width-n[0]>0&&this.parameters.box.height+n[1]>0){if(this.parameters.type==="text")return this.el.move(this.parameters.box.x+n[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-n[0]);n=this.checkAspectRatio(n,!0),this.el.move(this.parameters.box.x+n[0],this.parameters.box.y).size(this.parameters.box.width-n[0],this.parameters.box.height+n[1])}};break;case"t":this.calc=function(s,r){var n=this.snapToGrid(s,r,2);if(this.parameters.box.height-n[1]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y+n[1]).height(this.parameters.box.height-n[1])}};break;case"r":this.calc=function(s,r){var n=this.snapToGrid(s,r,0);if(this.parameters.box.width+n[0]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+n[0])}};break;case"b":this.calc=function(s,r){var n=this.snapToGrid(s,r,0);if(this.parameters.box.height+n[1]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+n[1])}};break;case"l":this.calc=function(s,r){var n=this.snapToGrid(s,r,1);if(this.parameters.box.width-n[0]>0){if(this.parameters.type==="text")return;this.el.move(this.parameters.box.x+n[0],this.parameters.box.y).width(this.parameters.box.width-n[0])}};break;case"rot":this.calc=function(s,r){var n=s+this.parameters.p.x,o=r+this.parameters.p.y,h=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),c=Math.atan2(o-this.parameters.box.y-this.parameters.box.height/2,n-this.parameters.box.x-this.parameters.box.width/2),d=this.parameters.rotation+180*(c-h)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(d-d%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(s,r){var n=this.snapToGrid(s,r,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),o=this.el.array().valueOf();o[this.parameters.i][0]=this.parameters.pointCoords[0]+n[0],o[this.parameters.i][1]=this.parameters.pointCoords[1]+n[1],this.el.plot(o)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:e}),SVG.on(window,"touchmove.resize",function(s){t.update(s||window.event)}),SVG.on(window,"touchend.resize",function(){t.done()}),SVG.on(window,"mousemove.resize",function(s){t.update(s||window.event)}),SVG.on(window,"mouseup.resize",function(){t.done()})},f.prototype.update=function(e){if(e){var t=this._extractPosition(e),i=this.transformPoint(t.x,t.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:e})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},f.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},f.prototype.snapToGrid=function(e,t,i,a){var s;return a!==void 0?s=[(i+e)%this.options.snapToGrid,(a+t)%this.options.snapToGrid]:(i=i??3,s=[(this.parameters.box.x+e+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+t+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),e<0&&(s[0]-=this.options.snapToGrid),t<0&&(s[1]-=this.options.snapToGrid),e-=Math.abs(s[0])n.maxX&&(e=n.maxX-s),n.minY!==void 0&&r+tn.maxY&&(t=n.maxY-r),[e,t]},f.prototype.checkAspectRatio=function(e,t){if(!this.options.saveAspectRatio)return e;var i=e.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+e[0],r=this.parameters.box.height-e[1],n=s/r;return na&&(i[0]=this.parameters.box.width-r*a,t&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new f(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),window.Apex===void 0&&(window.Apex={});var kt=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"initModules",value:function(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","isSeriesHidden","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","exportToCSV","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","mouseleave","touchstart","touchmove","touchleave","mouseup","touchend"],this.ctx.animations=new fe(this.ctx),this.ctx.axes=new Mi(this.ctx),this.ctx.core=new ia(this.ctx.el,this.ctx),this.ctx.config=new ye({}),this.ctx.data=new zt(this.ctx),this.ctx.grid=new Mt(this.ctx),this.ctx.graphics=new M(this.ctx),this.ctx.coreUtils=new V(this.ctx),this.ctx.crosshairs=new tt(this.ctx),this.ctx.events=new Ii(this.ctx),this.ctx.exports=new Xe(this.ctx),this.ctx.localization=new zi(this.ctx),this.ctx.options=new re,this.ctx.responsive=new Xi(this.ctx),this.ctx.series=new Q(this.ctx),this.ctx.theme=new Ei(this.ctx),this.ctx.formatters=new Se(this.ctx),this.ctx.titleSubtitle=new Yi(this.ctx),this.ctx.legend=new Xt(this.ctx),this.ctx.toolbar=new Et(this.ctx),this.ctx.tooltip=new vt(this.ctx),this.ctx.dimensions=new Ee(this.ctx),this.ctx.updateHelpers=new aa(this.ctx),this.ctx.zoomPanSelection=new Ni(this.ctx),this.ctx.w.globals.tooltip=new vt(this.ctx)}}]),f}(),At=function(){function f(e){Y(this,f),this.ctx=e,this.w=e.w}return F(f,[{key:"clear",value:function(e){var t=e.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:t})}},{key:"killSVG",value:function(e){e.each(function(t,i){this.removeClass("*"),this.off(),this.stop()},!0),e.ungroup(),e.clear()}},{key:"clearDomElements",value:function(e){var t=this,i=e.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight="unset");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach(function(n){s.removeEventListener(n,t.ctx.events.documentEvent)});var r=this.w.globals.dom;if(this.ctx.el!==null)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elLegendWrap=null,r.elLegendForeign=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),f}(),Je=new WeakMap,sa=function(){function f(e,t){Y(this,f),this.opts=t,this.ctx=this,this.w=new Ti(t).init(),this.el=e,this.w.globals.cuid=P.randomId(),this.w.globals.chartID=this.w.config.chart.id?P.escapeString(this.w.config.chart.id):this.w.globals.cuid,new kt(this).initModules(),this.create=P.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return F(f,[{key:"render",value:function(){var e=this;return new Promise(function(t,i){if(e.el!==null){Apex._chartInstances===void 0&&(Apex._chartInstances=[]),e.w.config.chart.id&&Apex._chartInstances.push({id:e.w.globals.chartID,group:e.w.config.chart.group,chart:e}),e.setLocale(e.w.config.chart.defaultLocale);var a=e.w.config.chart.events.beforeMount;if(typeof a=="function"&&a(e,e.w),e.events.fireEvent("beforeMount",[e,e.w]),window.addEventListener("resize",e.windowResizeHandler),function(g,p){var x=!1;if(g.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var m=g.getBoundingClientRect();g.style.display!=="none"&&m.width!==0||(x=!0)}var v=new ResizeObserver(function(w){x&&p.call(g,w),x=!0});g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(g.children).forEach(function(w){return v.observe(w)}):v.observe(g),Je.set(p,v)}(e.el.parentNode,e.parentResizeHandler),!e.css){var s=e.el.getRootNode&&e.el.getRootNode(),r=P.is("ShadowRoot",s),n=e.el.ownerDocument,o=n.getElementById("apexcharts-css");if(r||!o){var h;e.css=document.createElement("style"),e.css.id="apexcharts-css",e.css.textContent=`@keyframes opaque { + 0% { + opacity: 0 } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -// node_modules/apexcharts/dist/apexcharts.common.js -var require_apexcharts_common = __commonJS({ - "node_modules/apexcharts/dist/apexcharts.common.js"(exports, module) { - "use strict"; - function t(t2, e2) { - var i2 = Object.keys(t2); - if (Object.getOwnPropertySymbols) { - var a2 = Object.getOwnPropertySymbols(t2); - e2 && (a2 = a2.filter(function(e3) { - return Object.getOwnPropertyDescriptor(t2, e3).enumerable; - })), i2.push.apply(i2, a2); - } - return i2; - } - function e(e2) { - for (var i2 = 1; i2 < arguments.length; i2++) { - var a2 = null != arguments[i2] ? arguments[i2] : {}; - i2 % 2 ? t(Object(a2), true).forEach(function(t2) { - o(e2, t2, a2[t2]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(a2)) : t(Object(a2)).forEach(function(t2) { - Object.defineProperty(e2, t2, Object.getOwnPropertyDescriptor(a2, t2)); - }); - } - return e2; - } - function i(t2) { - return i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t3) { - return typeof t3; - } : function(t3) { - return t3 && "function" == typeof Symbol && t3.constructor === Symbol && t3 !== Symbol.prototype ? "symbol" : typeof t3; - }, i(t2); - } - function a(t2, e2) { - if (!(t2 instanceof e2)) - throw new TypeError("Cannot call a class as a function"); - } - function s(t2, e2) { - for (var i2 = 0; i2 < e2.length; i2++) { - var a2 = e2[i2]; - a2.enumerable = a2.enumerable || false, a2.configurable = true, "value" in a2 && (a2.writable = true), Object.defineProperty(t2, a2.key, a2); - } - } - function r(t2, e2, i2) { - return e2 && s(t2.prototype, e2), i2 && s(t2, i2), t2; - } - function o(t2, e2, i2) { - return e2 in t2 ? Object.defineProperty(t2, e2, { value: i2, enumerable: true, configurable: true, writable: true }) : t2[e2] = i2, t2; - } - function n(t2, e2) { - if ("function" != typeof e2 && null !== e2) - throw new TypeError("Super expression must either be null or a function"); - t2.prototype = Object.create(e2 && e2.prototype, { constructor: { value: t2, writable: true, configurable: true } }), e2 && h(t2, e2); - } - function l(t2) { - return l = Object.setPrototypeOf ? Object.getPrototypeOf : function(t3) { - return t3.__proto__ || Object.getPrototypeOf(t3); - }, l(t2); - } - function h(t2, e2) { - return h = Object.setPrototypeOf || function(t3, e3) { - return t3.__proto__ = e3, t3; - }, h(t2, e2); - } - function c(t2, e2) { - if (e2 && ("object" == typeof e2 || "function" == typeof e2)) - return e2; - if (void 0 !== e2) - throw new TypeError("Derived constructors may only return object or undefined"); - return function(t3) { - if (void 0 === t3) - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - return t3; - }(t2); - } - function d(t2) { - var e2 = function() { - if ("undefined" == typeof Reflect || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if ("function" == typeof Proxy) - return true; - try { - return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })), true; - } catch (t3) { - return false; - } - }(); - return function() { - var i2, a2 = l(t2); - if (e2) { - var s2 = l(this).constructor; - i2 = Reflect.construct(a2, arguments, s2); - } else - i2 = a2.apply(this, arguments); - return c(this, i2); - }; - } - function g(t2, e2) { - return function(t3) { - if (Array.isArray(t3)) - return t3; - }(t2) || function(t3, e3) { - var i2 = null == t3 ? null : "undefined" != typeof Symbol && t3[Symbol.iterator] || t3["@@iterator"]; - if (null == i2) - return; - var a2, s2, r2 = [], o2 = true, n2 = false; - try { - for (i2 = i2.call(t3); !(o2 = (a2 = i2.next()).done) && (r2.push(a2.value), !e3 || r2.length !== e3); o2 = true) - ; - } catch (t4) { - n2 = true, s2 = t4; - } finally { - try { - o2 || null == i2.return || i2.return(); - } finally { - if (n2) - throw s2; - } - } - return r2; - }(t2, e2) || p(t2, e2) || function() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - }(); - } - function u(t2) { - return function(t3) { - if (Array.isArray(t3)) - return f(t3); - }(t2) || function(t3) { - if ("undefined" != typeof Symbol && null != t3[Symbol.iterator] || null != t3["@@iterator"]) - return Array.from(t3); - }(t2) || p(t2) || function() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - }(); - } - function p(t2, e2) { - if (t2) { - if ("string" == typeof t2) - return f(t2, e2); - var i2 = Object.prototype.toString.call(t2).slice(8, -1); - return "Object" === i2 && t2.constructor && (i2 = t2.constructor.name), "Map" === i2 || "Set" === i2 ? Array.from(t2) : "Arguments" === i2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i2) ? f(t2, e2) : void 0; - } - } - function f(t2, e2) { - (null == e2 || e2 > t2.length) && (e2 = t2.length); - for (var i2 = 0, a2 = new Array(e2); i2 < e2; i2++) - a2[i2] = t2[i2]; - return a2; - } - var x = function() { - function t2() { - a(this, t2); - } - return r(t2, [{ key: "shadeRGBColor", value: function(t3, e2) { - var i2 = e2.split(","), a2 = t3 < 0 ? 0 : 255, s2 = t3 < 0 ? -1 * t3 : t3, r2 = parseInt(i2[0].slice(4), 10), o2 = parseInt(i2[1], 10), n2 = parseInt(i2[2], 10); - return "rgb(" + (Math.round((a2 - r2) * s2) + r2) + "," + (Math.round((a2 - o2) * s2) + o2) + "," + (Math.round((a2 - n2) * s2) + n2) + ")"; - } }, { key: "shadeHexColor", value: function(t3, e2) { - var i2 = parseInt(e2.slice(1), 16), a2 = t3 < 0 ? 0 : 255, s2 = t3 < 0 ? -1 * t3 : t3, r2 = i2 >> 16, o2 = i2 >> 8 & 255, n2 = 255 & i2; - return "#" + (16777216 + 65536 * (Math.round((a2 - r2) * s2) + r2) + 256 * (Math.round((a2 - o2) * s2) + o2) + (Math.round((a2 - n2) * s2) + n2)).toString(16).slice(1); - } }, { key: "shadeColor", value: function(e2, i2) { - return t2.isColorHex(i2) ? this.shadeHexColor(e2, i2) : this.shadeRGBColor(e2, i2); - } }], [{ key: "bind", value: function(t3, e2) { - return function() { - return t3.apply(e2, arguments); - }; - } }, { key: "isObject", value: function(t3) { - return t3 && "object" === i(t3) && !Array.isArray(t3) && null != t3; - } }, { key: "is", value: function(t3, e2) { - return Object.prototype.toString.call(e2) === "[object " + t3 + "]"; - } }, { key: "listToArray", value: function(t3) { - var e2, i2 = []; - for (e2 = 0; e2 < t3.length; e2++) - i2[e2] = t3[e2]; - return i2; - } }, { key: "extend", value: function(t3, e2) { - var i2 = this; - "function" != typeof Object.assign && (Object.assign = function(t4) { - if (null == t4) - throw new TypeError("Cannot convert undefined or null to object"); - for (var e3 = Object(t4), i3 = 1; i3 < arguments.length; i3++) { - var a3 = arguments[i3]; - if (null != a3) - for (var s2 in a3) - a3.hasOwnProperty(s2) && (e3[s2] = a3[s2]); - } - return e3; - }); - var a2 = Object.assign({}, t3); - return this.isObject(t3) && this.isObject(e2) && Object.keys(e2).forEach(function(s2) { - i2.isObject(e2[s2]) && s2 in t3 ? a2[s2] = i2.extend(t3[s2], e2[s2]) : Object.assign(a2, o({}, s2, e2[s2])); - }), a2; - } }, { key: "extendArray", value: function(e2, i2) { - var a2 = []; - return e2.map(function(e3) { - a2.push(t2.extend(i2, e3)); - }), e2 = a2; - } }, { key: "monthMod", value: function(t3) { - return t3 % 12; - } }, { key: "clone", value: function(e2) { - if (t2.is("Array", e2)) { - for (var a2 = [], s2 = 0; s2 < e2.length; s2++) - a2[s2] = this.clone(e2[s2]); - return a2; - } - if (t2.is("Null", e2)) - return null; - if (t2.is("Date", e2)) - return e2; - if ("object" === i(e2)) { - var r2 = {}; - for (var o2 in e2) - e2.hasOwnProperty(o2) && (r2[o2] = this.clone(e2[o2])); - return r2; - } - return e2; - } }, { key: "log10", value: function(t3) { - return Math.log(t3) / Math.LN10; - } }, { key: "roundToBase10", value: function(t3) { - return Math.pow(10, Math.floor(Math.log10(t3))); - } }, { key: "roundToBase", value: function(t3, e2) { - return Math.pow(e2, Math.floor(Math.log(t3) / Math.log(e2))); - } }, { key: "parseNumber", value: function(t3) { - return null === t3 ? t3 : parseFloat(t3); - } }, { key: "stripNumber", value: function(t3) { - var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 2; - return Number.isInteger(t3) ? t3 : parseFloat(t3.toPrecision(e2)); - } }, { key: "randomId", value: function() { - return (Math.random() + 1).toString(36).substring(4); - } }, { key: "noExponents", value: function(t3) { - var e2 = String(t3).split(/[eE]/); - if (1 === e2.length) - return e2[0]; - var i2 = "", a2 = t3 < 0 ? "-" : "", s2 = e2[0].replace(".", ""), r2 = Number(e2[1]) + 1; - if (r2 < 0) { - for (i2 = a2 + "0."; r2++; ) - i2 += "0"; - return i2 + s2.replace(/^-/, ""); - } - for (r2 -= s2.length; r2--; ) - i2 += "0"; - return s2 + i2; - } }, { key: "getDimensions", value: function(t3) { - var e2 = getComputedStyle(t3, null), i2 = t3.clientHeight, a2 = t3.clientWidth; - return i2 -= parseFloat(e2.paddingTop) + parseFloat(e2.paddingBottom), [a2 -= parseFloat(e2.paddingLeft) + parseFloat(e2.paddingRight), i2]; - } }, { key: "getBoundingClientRect", value: function(t3) { - var e2 = t3.getBoundingClientRect(); - return { top: e2.top, right: e2.right, bottom: e2.bottom, left: e2.left, width: t3.clientWidth, height: t3.clientHeight, x: e2.left, y: e2.top }; - } }, { key: "getLargestStringFromArr", value: function(t3) { - return t3.reduce(function(t4, e2) { - return Array.isArray(e2) && (e2 = e2.reduce(function(t5, e3) { - return t5.length > e3.length ? t5 : e3; - })), t4.length > e2.length ? t4 : e2; - }, 0); - } }, { key: "hexToRgba", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "#999999", e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0.6; - "#" !== t3.substring(0, 1) && (t3 = "#999999"); - var i2 = t3.replace("#", ""); - i2 = i2.match(new RegExp("(.{" + i2.length / 3 + "})", "g")); - for (var a2 = 0; a2 < i2.length; a2++) - i2[a2] = parseInt(1 === i2[a2].length ? i2[a2] + i2[a2] : i2[a2], 16); - return void 0 !== e2 && i2.push(e2), "rgba(" + i2.join(",") + ")"; - } }, { key: "getOpacityFromRGBA", value: function(t3) { - return parseFloat(t3.replace(/^.*,(.+)\)/, "$1")); - } }, { key: "rgb2hex", value: function(t3) { - return (t3 = t3.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i)) && 4 === t3.length ? "#" + ("0" + parseInt(t3[1], 10).toString(16)).slice(-2) + ("0" + parseInt(t3[2], 10).toString(16)).slice(-2) + ("0" + parseInt(t3[3], 10).toString(16)).slice(-2) : ""; - } }, { key: "isColorHex", value: function(t3) { - return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)|(^#[0-9A-F]{8}$)/i.test(t3); - } }, { key: "getPolygonPos", value: function(t3, e2) { - for (var i2 = [], a2 = 2 * Math.PI / e2, s2 = 0; s2 < e2; s2++) { - var r2 = {}; - r2.x = t3 * Math.sin(s2 * a2), r2.y = -t3 * Math.cos(s2 * a2), i2.push(r2); - } - return i2; - } }, { key: "polarToCartesian", value: function(t3, e2, i2, a2) { - var s2 = (a2 - 90) * Math.PI / 180; - return { x: t3 + i2 * Math.cos(s2), y: e2 + i2 * Math.sin(s2) }; - } }, { key: "escapeString", value: function(t3) { - var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "x", i2 = t3.toString().slice(); - return i2 = i2.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi, e2); - } }, { key: "negToZero", value: function(t3) { - return t3 < 0 ? 0 : t3; - } }, { key: "moveIndexInArray", value: function(t3, e2, i2) { - if (i2 >= t3.length) - for (var a2 = i2 - t3.length + 1; a2--; ) - t3.push(void 0); - return t3.splice(i2, 0, t3.splice(e2, 1)[0]), t3; - } }, { key: "extractNumber", value: function(t3) { - return parseFloat(t3.replace(/[^\d.]*/g, "")); - } }, { key: "findAncestor", value: function(t3, e2) { - for (; (t3 = t3.parentElement) && !t3.classList.contains(e2); ) - ; - return t3; - } }, { key: "setELstyles", value: function(t3, e2) { - for (var i2 in e2) - e2.hasOwnProperty(i2) && (t3.style.key = e2[i2]); - } }, { key: "isNumber", value: function(t3) { - return !isNaN(t3) && parseFloat(Number(t3)) === t3 && !isNaN(parseInt(t3, 10)); - } }, { key: "isFloat", value: function(t3) { - return Number(t3) === t3 && t3 % 1 != 0; - } }, { key: "isSafari", value: function() { - return /^((?!chrome|android).)*safari/i.test(navigator.userAgent); - } }, { key: "isFirefox", value: function() { - return navigator.userAgent.toLowerCase().indexOf("firefox") > -1; - } }, { key: "isIE11", value: function() { - if (-1 !== window.navigator.userAgent.indexOf("MSIE") || window.navigator.appVersion.indexOf("Trident/") > -1) - return true; - } }, { key: "isIE", value: function() { - var t3 = window.navigator.userAgent, e2 = t3.indexOf("MSIE "); - if (e2 > 0) - return parseInt(t3.substring(e2 + 5, t3.indexOf(".", e2)), 10); - if (t3.indexOf("Trident/") > 0) { - var i2 = t3.indexOf("rv:"); - return parseInt(t3.substring(i2 + 3, t3.indexOf(".", i2)), 10); - } - var a2 = t3.indexOf("Edge/"); - return a2 > 0 && parseInt(t3.substring(a2 + 5, t3.indexOf(".", a2)), 10); - } }]), t2; - }(); - var b = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.setEasingFunctions(); - } - return r(t2, [{ key: "setEasingFunctions", value: function() { - var t3; - if (!this.w.globals.easing) { - switch (this.w.config.chart.animations.easing) { - case "linear": - t3 = "-"; - break; - case "easein": - t3 = "<"; - break; - case "easeout": - t3 = ">"; - break; - case "easeinout": - default: - t3 = "<>"; - break; - case "swing": - t3 = function(t4) { - var e2 = 1.70158; - return (t4 -= 1) * t4 * ((e2 + 1) * t4 + e2) + 1; - }; - break; - case "bounce": - t3 = function(t4) { - return t4 < 1 / 2.75 ? 7.5625 * t4 * t4 : t4 < 2 / 2.75 ? 7.5625 * (t4 -= 1.5 / 2.75) * t4 + 0.75 : t4 < 2.5 / 2.75 ? 7.5625 * (t4 -= 2.25 / 2.75) * t4 + 0.9375 : 7.5625 * (t4 -= 2.625 / 2.75) * t4 + 0.984375; - }; - break; - case "elastic": - t3 = function(t4) { - return t4 === !!t4 ? t4 : Math.pow(2, -10 * t4) * Math.sin((t4 - 0.075) * (2 * Math.PI) / 0.3) + 1; - }; - } - this.w.globals.easing = t3; - } - } }, { key: "animateLine", value: function(t3, e2, i2, a2) { - t3.attr(e2).animate(a2).attr(i2); - } }, { key: "animateMarker", value: function(t3, e2, i2, a2, s2, r2) { - e2 || (e2 = 0), t3.attr({ r: e2, width: e2, height: e2 }).animate(a2, s2).attr({ r: i2, width: i2.width, height: i2.height }).afterAll(function() { - r2(); - }); - } }, { key: "animateCircle", value: function(t3, e2, i2, a2, s2) { - t3.attr({ r: e2.r, cx: e2.cx, cy: e2.cy }).animate(a2, s2).attr({ r: i2.r, cx: i2.cx, cy: i2.cy }); - } }, { key: "animateRect", value: function(t3, e2, i2, a2, s2) { - t3.attr(e2).animate(a2).attr(i2).afterAll(function() { - return s2(); - }); - } }, { key: "animatePathsGradually", value: function(t3) { - var e2 = t3.el, i2 = t3.realIndex, a2 = t3.j, s2 = t3.fill, r2 = t3.pathFrom, o2 = t3.pathTo, n2 = t3.speed, l2 = t3.delay, h2 = this.w, c2 = 0; - h2.config.chart.animations.animateGradually.enabled && (c2 = h2.config.chart.animations.animateGradually.delay), h2.config.chart.animations.dynamicAnimation.enabled && h2.globals.dataChanged && "bar" !== h2.config.chart.type && (c2 = 0), this.morphSVG(e2, i2, a2, "line" !== h2.config.chart.type || h2.globals.comboCharts ? s2 : "stroke", r2, o2, n2, l2 * c2); - } }, { key: "showDelayedElements", value: function() { - this.w.globals.delayedElements.forEach(function(t3) { - var e2 = t3.el; - e2.classList.remove("apexcharts-element-hidden"), e2.classList.add("apexcharts-hidden-element-shown"); - }); - } }, { key: "animationCompleted", value: function(t3) { - var e2 = this.w; - e2.globals.animationEnded || (e2.globals.animationEnded = true, this.showDelayedElements(), "function" == typeof e2.config.chart.events.animationEnd && e2.config.chart.events.animationEnd(this.ctx, { el: t3, w: e2 })); - } }, { key: "morphSVG", value: function(t3, e2, i2, a2, s2, r2, o2, n2) { - var l2 = this, h2 = this.w; - s2 || (s2 = t3.attr("pathFrom")), r2 || (r2 = t3.attr("pathTo")); - var c2 = function(t4) { - return "radar" === h2.config.chart.type && (o2 = 1), "M 0 ".concat(h2.globals.gridHeight); - }; - (!s2 || s2.indexOf("undefined") > -1 || s2.indexOf("NaN") > -1) && (s2 = c2()), (!r2 || r2.indexOf("undefined") > -1 || r2.indexOf("NaN") > -1) && (r2 = c2()), h2.globals.shouldAnimate || (o2 = 1), t3.plot(s2).animate(1, h2.globals.easing, n2).plot(s2).animate(o2, h2.globals.easing, n2).plot(r2).afterAll(function() { - x.isNumber(i2) ? i2 === h2.globals.series[h2.globals.maxValsInArrayIndex].length - 2 && h2.globals.shouldAnimate && l2.animationCompleted(t3) : "none" !== a2 && h2.globals.shouldAnimate && (!h2.globals.comboCharts && e2 === h2.globals.series.length - 1 || h2.globals.comboCharts) && l2.animationCompleted(t3), l2.showDelayedElements(); - }); - } }]), t2; - }(); - var v = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "getDefaultFilter", value: function(t3, e2) { - var i2 = this.w; - t3.unfilter(true), new window.SVG.Filter().size("120%", "180%", "-5%", "-40%"), "none" !== i2.config.states.normal.filter ? this.applyFilter(t3, e2, i2.config.states.normal.filter.type, i2.config.states.normal.filter.value) : i2.config.chart.dropShadow.enabled && this.dropShadow(t3, i2.config.chart.dropShadow, e2); - } }, { key: "addNormalFilter", value: function(t3, e2) { - var i2 = this.w; - i2.config.chart.dropShadow.enabled && !t3.node.classList.contains("apexcharts-marker") && this.dropShadow(t3, i2.config.chart.dropShadow, e2); - } }, { key: "addLightenFilter", value: function(t3, e2, i2) { - var a2 = this, s2 = this.w, r2 = i2.intensity; - t3.unfilter(true); - new window.SVG.Filter(); - t3.filter(function(t4) { - var i3 = s2.config.chart.dropShadow; - (i3.enabled ? a2.addShadow(t4, e2, i3) : t4).componentTransfer({ rgb: { type: "linear", slope: 1.5, intercept: r2 } }); - }), t3.filterer.node.setAttribute("filterUnits", "userSpaceOnUse"), this._scaleFilterSize(t3.filterer.node); - } }, { key: "addDarkenFilter", value: function(t3, e2, i2) { - var a2 = this, s2 = this.w, r2 = i2.intensity; - t3.unfilter(true); - new window.SVG.Filter(); - t3.filter(function(t4) { - var i3 = s2.config.chart.dropShadow; - (i3.enabled ? a2.addShadow(t4, e2, i3) : t4).componentTransfer({ rgb: { type: "linear", slope: r2 } }); - }), t3.filterer.node.setAttribute("filterUnits", "userSpaceOnUse"), this._scaleFilterSize(t3.filterer.node); - } }, { key: "applyFilter", value: function(t3, e2, i2) { - var a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0.5; - switch (i2) { - case "none": - this.addNormalFilter(t3, e2); - break; - case "lighten": - this.addLightenFilter(t3, e2, { intensity: a2 }); - break; - case "darken": - this.addDarkenFilter(t3, e2, { intensity: a2 }); - } - } }, { key: "addShadow", value: function(t3, e2, i2) { - var a2 = i2.blur, s2 = i2.top, r2 = i2.left, o2 = i2.color, n2 = i2.opacity, l2 = t3.flood(Array.isArray(o2) ? o2[e2] : o2, n2).composite(t3.sourceAlpha, "in").offset(r2, s2).gaussianBlur(a2).merge(t3.source); - return t3.blend(t3.source, l2); - } }, { key: "dropShadow", value: function(t3, e2) { - var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, a2 = e2.top, s2 = e2.left, r2 = e2.blur, o2 = e2.color, n2 = e2.opacity, l2 = e2.noUserSpaceOnUse, h2 = this.w; - return t3.unfilter(true), x.isIE() && "radialBar" === h2.config.chart.type || (o2 = Array.isArray(o2) ? o2[i2] : o2, t3.filter(function(t4) { - var e3 = null; - e3 = x.isSafari() || x.isFirefox() || x.isIE() ? t4.flood(o2, n2).composite(t4.sourceAlpha, "in").offset(s2, a2).gaussianBlur(r2) : t4.flood(o2, n2).composite(t4.sourceAlpha, "in").offset(s2, a2).gaussianBlur(r2).merge(t4.source), t4.blend(t4.source, e3); - }), l2 || t3.filterer.node.setAttribute("filterUnits", "userSpaceOnUse"), this._scaleFilterSize(t3.filterer.node)), t3; - } }, { key: "setSelectionFilter", value: function(t3, e2, i2) { - var a2 = this.w; - if (void 0 !== a2.globals.selectedDataPoints[e2] && a2.globals.selectedDataPoints[e2].indexOf(i2) > -1) { - t3.node.setAttribute("selected", true); - var s2 = a2.config.states.active.filter; - "none" !== s2 && this.applyFilter(t3, e2, s2.type, s2.value); - } - } }, { key: "_scaleFilterSize", value: function(t3) { - !function(e2) { - for (var i2 in e2) - e2.hasOwnProperty(i2) && t3.setAttribute(i2, e2[i2]); - }({ width: "200%", height: "200%", x: "-50%", y: "-50%" }); - } }]), t2; - }(); - var m = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "roundPathCorners", value: function(t3, e2) { - function i2(t4, e3, i3) { - var s3 = e3.x - t4.x, r3 = e3.y - t4.y, o3 = Math.sqrt(s3 * s3 + r3 * r3); - return a2(t4, e3, Math.min(1, i3 / o3)); - } - function a2(t4, e3, i3) { - return { x: t4.x + (e3.x - t4.x) * i3, y: t4.y + (e3.y - t4.y) * i3 }; - } - function s2(t4, e3) { - t4.length > 2 && (t4[t4.length - 2] = e3.x, t4[t4.length - 1] = e3.y); - } - function r2(t4) { - return { x: parseFloat(t4[t4.length - 2]), y: parseFloat(t4[t4.length - 1]) }; - } - t3.indexOf("NaN") > -1 && (t3 = ""); - var o2 = t3.split(/[,\s]/).reduce(function(t4, e3) { - var i3 = e3.match("([a-zA-Z])(.+)"); - return i3 ? (t4.push(i3[1]), t4.push(i3[2])) : t4.push(e3), t4; - }, []).reduce(function(t4, e3) { - return parseFloat(e3) == e3 && t4.length ? t4[t4.length - 1].push(e3) : t4.push([e3]), t4; - }, []), n2 = []; - if (o2.length > 1) { - var l2 = r2(o2[0]), h2 = null; - "Z" == o2[o2.length - 1][0] && o2[0].length > 2 && (h2 = ["L", l2.x, l2.y], o2[o2.length - 1] = h2), n2.push(o2[0]); - for (var c2 = 1; c2 < o2.length; c2++) { - var d2 = n2[n2.length - 1], g2 = o2[c2], u2 = g2 == h2 ? o2[1] : o2[c2 + 1]; - if (u2 && d2 && d2.length > 2 && "L" == g2[0] && u2.length > 2 && "L" == u2[0]) { - var p2, f2, x2 = r2(d2), b2 = r2(g2), v2 = r2(u2); - p2 = i2(b2, x2, e2), f2 = i2(b2, v2, e2), s2(g2, p2), g2.origPoint = b2, n2.push(g2); - var m2 = a2(p2, b2, 0.5), y2 = a2(b2, f2, 0.5), w2 = ["C", m2.x, m2.y, y2.x, y2.y, f2.x, f2.y]; - w2.origPoint = b2, n2.push(w2); - } else - n2.push(g2); - } - if (h2) { - var k2 = r2(n2[n2.length - 1]); - n2.push(["Z"]), s2(n2[0], k2); - } - } else - n2 = o2; - return n2.reduce(function(t4, e3) { - return t4 + e3.join(" ") + " "; - }, ""); - } }, { key: "drawLine", value: function(t3, e2, i2, a2) { - var s2 = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : "#a8a8a8", r2 = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0, o2 = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : null, n2 = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : "butt"; - return this.w.globals.dom.Paper.line().attr({ x1: t3, y1: e2, x2: i2, y2: a2, stroke: s2, "stroke-dasharray": r2, "stroke-width": o2, "stroke-linecap": n2 }); - } }, { key: "drawRect", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, s2 = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0, r2 = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : "#fefefe", o2 = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : 1, n2 = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : null, l2 = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : null, h2 = arguments.length > 9 && void 0 !== arguments[9] ? arguments[9] : 0, c2 = this.w.globals.dom.Paper.rect(); - return c2.attr({ x: t3, y: e2, width: i2 > 0 ? i2 : 0, height: a2 > 0 ? a2 : 0, rx: s2, ry: s2, opacity: o2, "stroke-width": null !== n2 ? n2 : 0, stroke: null !== l2 ? l2 : "none", "stroke-dasharray": h2 }), c2.node.setAttribute("fill", r2), c2; - } }, { key: "drawPolygon", value: function(t3) { - var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "#e1e1e1", i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "none"; - return this.w.globals.dom.Paper.polygon(t3).attr({ fill: a2, stroke: e2, "stroke-width": i2 }); - } }, { key: "drawCircle", value: function(t3) { - var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null; - t3 < 0 && (t3 = 0); - var i2 = this.w.globals.dom.Paper.circle(2 * t3); - return null !== e2 && i2.attr(e2), i2; - } }, { key: "drawPath", value: function(t3) { - var e2 = t3.d, i2 = void 0 === e2 ? "" : e2, a2 = t3.stroke, s2 = void 0 === a2 ? "#a8a8a8" : a2, r2 = t3.strokeWidth, o2 = void 0 === r2 ? 1 : r2, n2 = t3.fill, l2 = t3.fillOpacity, h2 = void 0 === l2 ? 1 : l2, c2 = t3.strokeOpacity, d2 = void 0 === c2 ? 1 : c2, g2 = t3.classes, u2 = t3.strokeLinecap, p2 = void 0 === u2 ? null : u2, f2 = t3.strokeDashArray, x2 = void 0 === f2 ? 0 : f2, b2 = this.w; - return null === p2 && (p2 = b2.config.stroke.lineCap), (i2.indexOf("undefined") > -1 || i2.indexOf("NaN") > -1) && (i2 = "M 0 ".concat(b2.globals.gridHeight)), b2.globals.dom.Paper.path(i2).attr({ fill: n2, "fill-opacity": h2, stroke: s2, "stroke-opacity": d2, "stroke-linecap": p2, "stroke-width": o2, "stroke-dasharray": x2, class: g2 }); - } }, { key: "group", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, e2 = this.w.globals.dom.Paper.group(); - return null !== t3 && e2.attr(t3), e2; - } }, { key: "move", value: function(t3, e2) { - var i2 = ["M", t3, e2].join(" "); - return i2; - } }, { key: "line", value: function(t3, e2) { - var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, a2 = null; - return null === i2 ? a2 = [" L", t3, e2].join(" ") : "H" === i2 ? a2 = [" H", t3].join(" ") : "V" === i2 && (a2 = [" V", e2].join(" ")), a2; - } }, { key: "curve", value: function(t3, e2, i2, a2, s2, r2) { - var o2 = ["C", t3, e2, i2, a2, s2, r2].join(" "); - return o2; - } }, { key: "quadraticCurve", value: function(t3, e2, i2, a2) { - return ["Q", t3, e2, i2, a2].join(" "); - } }, { key: "arc", value: function(t3, e2, i2, a2, s2, r2, o2) { - var n2 = "A"; - arguments.length > 7 && void 0 !== arguments[7] && arguments[7] && (n2 = "a"); - var l2 = [n2, t3, e2, i2, a2, s2, r2, o2].join(" "); - return l2; - } }, { key: "renderPaths", value: function(t3) { - var i2, a2 = t3.j, s2 = t3.realIndex, r2 = t3.pathFrom, o2 = t3.pathTo, n2 = t3.stroke, l2 = t3.strokeWidth, h2 = t3.strokeLinecap, c2 = t3.fill, d2 = t3.animationDelay, g2 = t3.initialSpeed, u2 = t3.dataChangeSpeed, p2 = t3.className, f2 = t3.shouldClipToGrid, x2 = void 0 === f2 || f2, m2 = t3.bindEventsOnPaths, y2 = void 0 === m2 || m2, w2 = t3.drawShadow, k2 = void 0 === w2 || w2, A2 = this.w, S2 = new v(this.ctx), C2 = new b(this.ctx), L2 = this.w.config.chart.animations.enabled, P2 = L2 && this.w.config.chart.animations.dynamicAnimation.enabled, I2 = !!(L2 && !A2.globals.resized || P2 && A2.globals.dataChanged && A2.globals.shouldAnimate); - I2 ? i2 = r2 : (i2 = o2, A2.globals.animationEnded = true); - var M2 = A2.config.stroke.dashArray, T2 = 0; - T2 = Array.isArray(M2) ? M2[s2] : A2.config.stroke.dashArray; - var z2 = this.drawPath({ d: i2, stroke: n2, strokeWidth: l2, fill: c2, fillOpacity: 1, classes: p2, strokeLinecap: h2, strokeDashArray: T2 }); - if (z2.attr("index", s2), x2 && z2.attr({ "clip-path": "url(#gridRectMask".concat(A2.globals.cuid, ")") }), "none" !== A2.config.states.normal.filter.type) - S2.getDefaultFilter(z2, s2); - else if (A2.config.chart.dropShadow.enabled && k2 && (!A2.config.chart.dropShadow.enabledOnSeries || A2.config.chart.dropShadow.enabledOnSeries && -1 !== A2.config.chart.dropShadow.enabledOnSeries.indexOf(s2))) { - var X2 = A2.config.chart.dropShadow; - S2.dropShadow(z2, X2, s2); - } - y2 && (z2.node.addEventListener("mouseenter", this.pathMouseEnter.bind(this, z2)), z2.node.addEventListener("mouseleave", this.pathMouseLeave.bind(this, z2)), z2.node.addEventListener("mousedown", this.pathMouseDown.bind(this, z2))), z2.attr({ pathTo: o2, pathFrom: r2 }); - var E2 = { el: z2, j: a2, realIndex: s2, pathFrom: r2, pathTo: o2, fill: c2, strokeWidth: l2, delay: d2 }; - return !L2 || A2.globals.resized || A2.globals.dataChanged ? !A2.globals.resized && A2.globals.dataChanged || C2.showDelayedElements() : C2.animatePathsGradually(e(e({}, E2), {}, { speed: g2 })), A2.globals.dataChanged && P2 && I2 && C2.animatePathsGradually(e(e({}, E2), {}, { speed: u2 })), z2; - } }, { key: "drawPattern", value: function(t3, e2, i2) { - var a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "#a8a8a8", s2 = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0; - return this.w.globals.dom.Paper.pattern(e2, i2, function(r2) { - "horizontalLines" === t3 ? r2.line(0, 0, i2, 0).stroke({ color: a2, width: s2 + 1 }) : "verticalLines" === t3 ? r2.line(0, 0, 0, e2).stroke({ color: a2, width: s2 + 1 }) : "slantedLines" === t3 ? r2.line(0, 0, e2, i2).stroke({ color: a2, width: s2 }) : "squares" === t3 ? r2.rect(e2, i2).fill("none").stroke({ color: a2, width: s2 }) : "circles" === t3 && r2.circle(e2).fill("none").stroke({ color: a2, width: s2 }); - }); - } }, { key: "drawGradient", value: function(t3, e2, i2, a2, s2) { - var r2, o2 = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : null, n2 = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : null, l2 = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : null, h2 = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : 0, c2 = this.w; - e2.length < 9 && 0 === e2.indexOf("#") && (e2 = x.hexToRgba(e2, a2)), i2.length < 9 && 0 === i2.indexOf("#") && (i2 = x.hexToRgba(i2, s2)); - var d2 = 0, g2 = 1, u2 = 1, p2 = null; - null !== n2 && (d2 = void 0 !== n2[0] ? n2[0] / 100 : 0, g2 = void 0 !== n2[1] ? n2[1] / 100 : 1, u2 = void 0 !== n2[2] ? n2[2] / 100 : 1, p2 = void 0 !== n2[3] ? n2[3] / 100 : null); - var f2 = !("donut" !== c2.config.chart.type && "pie" !== c2.config.chart.type && "polarArea" !== c2.config.chart.type && "bubble" !== c2.config.chart.type); - if (r2 = null === l2 || 0 === l2.length ? c2.globals.dom.Paper.gradient(f2 ? "radial" : "linear", function(t4) { - t4.at(d2, e2, a2), t4.at(g2, i2, s2), t4.at(u2, i2, s2), null !== p2 && t4.at(p2, e2, a2); - }) : c2.globals.dom.Paper.gradient(f2 ? "radial" : "linear", function(t4) { - (Array.isArray(l2[h2]) ? l2[h2] : l2).forEach(function(e3) { - t4.at(e3.offset / 100, e3.color, e3.opacity); - }); - }), f2) { - var b2 = c2.globals.gridWidth / 2, v2 = c2.globals.gridHeight / 2; - "bubble" !== c2.config.chart.type ? r2.attr({ gradientUnits: "userSpaceOnUse", cx: b2, cy: v2, r: o2 }) : r2.attr({ cx: 0.5, cy: 0.5, r: 0.8, fx: 0.2, fy: 0.2 }); - } else - "vertical" === t3 ? r2.from(0, 0).to(0, 1) : "diagonal" === t3 ? r2.from(0, 0).to(1, 1) : "horizontal" === t3 ? r2.from(0, 1).to(1, 1) : "diagonal2" === t3 && r2.from(1, 0).to(0, 1); - return r2; - } }, { key: "getTextBasedOnMaxWidth", value: function(t3) { - var e2 = t3.text, i2 = t3.maxWidth, a2 = t3.fontSize, s2 = t3.fontFamily, r2 = this.getTextRects(e2, a2, s2), o2 = r2.width / e2.length, n2 = Math.floor(i2 / o2); - return i2 < r2.width ? e2.slice(0, n2 - 3) + "..." : e2; - } }, { key: "drawText", value: function(t3) { - var i2 = this, a2 = t3.x, s2 = t3.y, r2 = t3.text, o2 = t3.textAnchor, n2 = t3.fontSize, l2 = t3.fontFamily, h2 = t3.fontWeight, c2 = t3.foreColor, d2 = t3.opacity, g2 = t3.maxWidth, u2 = t3.cssClass, p2 = void 0 === u2 ? "" : u2, f2 = t3.isPlainText, x2 = void 0 === f2 || f2, b2 = this.w; - void 0 === r2 && (r2 = ""); - var v2 = r2; - o2 || (o2 = "start"), c2 && c2.length || (c2 = b2.config.chart.foreColor), l2 = l2 || b2.config.chart.fontFamily, h2 = h2 || "regular"; - var m2, y2 = { maxWidth: g2, fontSize: n2 = n2 || "11px", fontFamily: l2 }; - return Array.isArray(r2) ? m2 = b2.globals.dom.Paper.text(function(t4) { - for (var a3 = 0; a3 < r2.length; a3++) - v2 = r2[a3], g2 && (v2 = i2.getTextBasedOnMaxWidth(e({ text: r2[a3] }, y2))), 0 === a3 ? t4.tspan(v2) : t4.tspan(v2).newLine(); - }) : (g2 && (v2 = this.getTextBasedOnMaxWidth(e({ text: r2 }, y2))), m2 = x2 ? b2.globals.dom.Paper.plain(r2) : b2.globals.dom.Paper.text(function(t4) { - return t4.tspan(v2); - })), m2.attr({ x: a2, y: s2, "text-anchor": o2, "dominant-baseline": "auto", "font-size": n2, "font-family": l2, "font-weight": h2, fill: c2, class: "apexcharts-text " + p2 }), m2.node.style.fontFamily = l2, m2.node.style.opacity = d2, m2; - } }, { key: "drawMarker", value: function(t3, e2, i2) { - t3 = t3 || 0; - var a2 = i2.pSize || 0, s2 = null; - if ("square" === i2.shape || "rect" === i2.shape) { - var r2 = void 0 === i2.pRadius ? a2 / 2 : i2.pRadius; - null !== e2 && a2 || (a2 = 0, r2 = 0); - var o2 = 1.2 * a2 + r2, n2 = this.drawRect(o2, o2, o2, o2, r2); - n2.attr({ x: t3 - o2 / 2, y: e2 - o2 / 2, cx: t3, cy: e2, class: i2.class ? i2.class : "", fill: i2.pointFillColor, "fill-opacity": i2.pointFillOpacity ? i2.pointFillOpacity : 1, stroke: i2.pointStrokeColor, "stroke-width": i2.pointStrokeWidth ? i2.pointStrokeWidth : 0, "stroke-opacity": i2.pointStrokeOpacity ? i2.pointStrokeOpacity : 1 }), s2 = n2; - } else - "circle" !== i2.shape && i2.shape || (x.isNumber(e2) || (a2 = 0, e2 = 0), s2 = this.drawCircle(a2, { cx: t3, cy: e2, class: i2.class ? i2.class : "", stroke: i2.pointStrokeColor, fill: i2.pointFillColor, "fill-opacity": i2.pointFillOpacity ? i2.pointFillOpacity : 1, "stroke-width": i2.pointStrokeWidth ? i2.pointStrokeWidth : 0, "stroke-opacity": i2.pointStrokeOpacity ? i2.pointStrokeOpacity : 1 })); - return s2; - } }, { key: "pathMouseEnter", value: function(t3, e2) { - var i2 = this.w, a2 = new v(this.ctx), s2 = parseInt(t3.node.getAttribute("index"), 10), r2 = parseInt(t3.node.getAttribute("j"), 10); - if ("function" == typeof i2.config.chart.events.dataPointMouseEnter && i2.config.chart.events.dataPointMouseEnter(e2, this.ctx, { seriesIndex: s2, dataPointIndex: r2, w: i2 }), this.ctx.events.fireEvent("dataPointMouseEnter", [e2, this.ctx, { seriesIndex: s2, dataPointIndex: r2, w: i2 }]), ("none" === i2.config.states.active.filter.type || "true" !== t3.node.getAttribute("selected")) && "none" !== i2.config.states.hover.filter.type && !i2.globals.isTouchDevice) { - var o2 = i2.config.states.hover.filter; - a2.applyFilter(t3, s2, o2.type, o2.value); - } - } }, { key: "pathMouseLeave", value: function(t3, e2) { - var i2 = this.w, a2 = new v(this.ctx), s2 = parseInt(t3.node.getAttribute("index"), 10), r2 = parseInt(t3.node.getAttribute("j"), 10); - "function" == typeof i2.config.chart.events.dataPointMouseLeave && i2.config.chart.events.dataPointMouseLeave(e2, this.ctx, { seriesIndex: s2, dataPointIndex: r2, w: i2 }), this.ctx.events.fireEvent("dataPointMouseLeave", [e2, this.ctx, { seriesIndex: s2, dataPointIndex: r2, w: i2 }]), "none" !== i2.config.states.active.filter.type && "true" === t3.node.getAttribute("selected") || "none" !== i2.config.states.hover.filter.type && a2.getDefaultFilter(t3, s2); - } }, { key: "pathMouseDown", value: function(t3, e2) { - var i2 = this.w, a2 = new v(this.ctx), s2 = parseInt(t3.node.getAttribute("index"), 10), r2 = parseInt(t3.node.getAttribute("j"), 10), o2 = "false"; - if ("true" === t3.node.getAttribute("selected")) { - if (t3.node.setAttribute("selected", "false"), i2.globals.selectedDataPoints[s2].indexOf(r2) > -1) { - var n2 = i2.globals.selectedDataPoints[s2].indexOf(r2); - i2.globals.selectedDataPoints[s2].splice(n2, 1); - } - } else { - if (!i2.config.states.active.allowMultipleDataPointsSelection && i2.globals.selectedDataPoints.length > 0) { - i2.globals.selectedDataPoints = []; - var l2 = i2.globals.dom.Paper.select(".apexcharts-series path").members, h2 = i2.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members, c2 = function(t4) { - Array.prototype.forEach.call(t4, function(t5) { - t5.node.setAttribute("selected", "false"), a2.getDefaultFilter(t5, s2); - }); - }; - c2(l2), c2(h2); - } - t3.node.setAttribute("selected", "true"), o2 = "true", void 0 === i2.globals.selectedDataPoints[s2] && (i2.globals.selectedDataPoints[s2] = []), i2.globals.selectedDataPoints[s2].push(r2); - } - if ("true" === o2) { - var d2 = i2.config.states.active.filter; - if ("none" !== d2) - a2.applyFilter(t3, s2, d2.type, d2.value); - else if ("none" !== i2.config.states.hover.filter && !i2.globals.isTouchDevice) { - var g2 = i2.config.states.hover.filter; - a2.applyFilter(t3, s2, g2.type, g2.value); - } - } else if ("none" !== i2.config.states.active.filter.type) - if ("none" === i2.config.states.hover.filter.type || i2.globals.isTouchDevice) - a2.getDefaultFilter(t3, s2); - else { - g2 = i2.config.states.hover.filter; - a2.applyFilter(t3, s2, g2.type, g2.value); - } - "function" == typeof i2.config.chart.events.dataPointSelection && i2.config.chart.events.dataPointSelection(e2, this.ctx, { selectedDataPoints: i2.globals.selectedDataPoints, seriesIndex: s2, dataPointIndex: r2, w: i2 }), e2 && this.ctx.events.fireEvent("dataPointSelection", [e2, this.ctx, { selectedDataPoints: i2.globals.selectedDataPoints, seriesIndex: s2, dataPointIndex: r2, w: i2 }]); - } }, { key: "rotateAroundCenter", value: function(t3) { - var e2 = {}; - return t3 && "function" == typeof t3.getBBox && (e2 = t3.getBBox()), { x: e2.x + e2.width / 2, y: e2.y + e2.height / 2 }; - } }, { key: "getTextRects", value: function(t3, e2, i2, a2) { - var s2 = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4], r2 = this.w, o2 = this.drawText({ x: -200, y: -200, text: t3, textAnchor: "start", fontSize: e2, fontFamily: i2, foreColor: "#fff", opacity: 0 }); - a2 && o2.attr("transform", a2), r2.globals.dom.Paper.add(o2); - var n2 = o2.bbox(); - return s2 || (n2 = o2.node.getBoundingClientRect()), o2.remove(), { width: n2.width, height: n2.height }; - } }, { key: "placeTextWithEllipsis", value: function(t3, e2, i2) { - if ("function" == typeof t3.getComputedTextLength && (t3.textContent = e2, e2.length > 0 && t3.getComputedTextLength() >= i2 / 1.1)) { - for (var a2 = e2.length - 3; a2 > 0; a2 -= 3) - if (t3.getSubStringLength(0, a2) <= i2 / 1.1) - return void (t3.textContent = e2.substring(0, a2) + "..."); - t3.textContent = "."; - } - } }], [{ key: "setAttrs", value: function(t3, e2) { - for (var i2 in e2) - e2.hasOwnProperty(i2) && t3.setAttribute(i2, e2[i2]); - } }]), t2; - }(); - var y = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "getStackedSeriesTotals", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], e2 = this.w, i2 = []; - if (0 === e2.globals.series.length) - return i2; - for (var a2 = 0; a2 < e2.globals.series[e2.globals.maxValsInArrayIndex].length; a2++) { - for (var s2 = 0, r2 = 0; r2 < e2.globals.series.length; r2++) - void 0 !== e2.globals.series[r2][a2] && -1 === t3.indexOf(r2) && (s2 += e2.globals.series[r2][a2]); - i2.push(s2); - } - return i2; - } }, { key: "getSeriesTotalByIndex", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null; - return null === t3 ? this.w.config.series.reduce(function(t4, e2) { - return t4 + e2; - }, 0) : this.w.globals.series[t3].reduce(function(t4, e2) { - return t4 + e2; - }, 0); - } }, { key: "isSeriesNull", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null; - return 0 === (null === t3 ? this.w.config.series.filter(function(t4) { - return null !== t4; - }) : this.w.config.series[t3].data.filter(function(t4) { - return null !== t4; - })).length; - } }, { key: "seriesHaveSameValues", value: function(t3) { - return this.w.globals.series[t3].every(function(t4, e2, i2) { - return t4 === i2[0]; - }); - } }, { key: "getCategoryLabels", value: function(t3) { - var e2 = this.w, i2 = t3.slice(); - return e2.config.xaxis.convertedCatToNumeric && (i2 = t3.map(function(t4, i3) { - return e2.config.xaxis.labels.formatter(t4 - e2.globals.minX + 1); - })), i2; - } }, { key: "getLargestSeries", value: function() { - var t3 = this.w; - t3.globals.maxValsInArrayIndex = t3.globals.series.map(function(t4) { - return t4.length; - }).indexOf(Math.max.apply(Math, t3.globals.series.map(function(t4) { - return t4.length; - }))); - } }, { key: "getLargestMarkerSize", value: function() { - var t3 = this.w, e2 = 0; - return t3.globals.markers.size.forEach(function(t4) { - e2 = Math.max(e2, t4); - }), t3.config.markers.discrete && t3.config.markers.discrete.length && t3.config.markers.discrete.forEach(function(t4) { - e2 = Math.max(e2, t4.size); - }), e2 > 0 && (e2 += t3.config.markers.hover.sizeOffset + 1), t3.globals.markers.largestSize = e2, e2; - } }, { key: "getSeriesTotals", value: function() { - var t3 = this.w; - t3.globals.seriesTotals = t3.globals.series.map(function(t4, e2) { - var i2 = 0; - if (Array.isArray(t4)) - for (var a2 = 0; a2 < t4.length; a2++) - i2 += t4[a2]; - else - i2 += t4; - return i2; - }); - } }, { key: "getSeriesTotalsXRange", value: function(t3, e2) { - var i2 = this.w; - return i2.globals.series.map(function(a2, s2) { - for (var r2 = 0, o2 = 0; o2 < a2.length; o2++) - i2.globals.seriesX[s2][o2] > t3 && i2.globals.seriesX[s2][o2] < e2 && (r2 += a2[o2]); - return r2; - }); - } }, { key: "getPercentSeries", value: function() { - var t3 = this.w; - t3.globals.seriesPercent = t3.globals.series.map(function(e2, i2) { - var a2 = []; - if (Array.isArray(e2)) - for (var s2 = 0; s2 < e2.length; s2++) { - var r2 = t3.globals.stackedSeriesTotals[s2], o2 = 0; - r2 && (o2 = 100 * e2[s2] / r2), a2.push(o2); - } - else { - var n2 = 100 * e2 / t3.globals.seriesTotals.reduce(function(t4, e3) { - return t4 + e3; - }, 0); - a2.push(n2); - } - return a2; - }); - } }, { key: "getCalculatedRatios", value: function() { - var t3, e2, i2, a2, s2 = this.w.globals, r2 = [], o2 = 0, n2 = [], l2 = 0.1, h2 = 0; - if (s2.yRange = [], s2.isMultipleYAxis) - for (var c2 = 0; c2 < s2.minYArr.length; c2++) - s2.yRange.push(Math.abs(s2.minYArr[c2] - s2.maxYArr[c2])), n2.push(0); - else - s2.yRange.push(Math.abs(s2.minY - s2.maxY)); - s2.xRange = Math.abs(s2.maxX - s2.minX), s2.zRange = Math.abs(s2.maxZ - s2.minZ); - for (var d2 = 0; d2 < s2.yRange.length; d2++) - r2.push(s2.yRange[d2] / s2.gridHeight); - if (e2 = s2.xRange / s2.gridWidth, i2 = Math.abs(s2.initialMaxX - s2.initialMinX) / s2.gridWidth, t3 = s2.yRange / s2.gridWidth, a2 = s2.xRange / s2.gridHeight, (o2 = s2.zRange / s2.gridHeight * 16) || (o2 = 1), s2.minY !== Number.MIN_VALUE && 0 !== Math.abs(s2.minY) && (s2.hasNegs = true), s2.isMultipleYAxis) { - n2 = []; - for (var g2 = 0; g2 < r2.length; g2++) - n2.push(-s2.minYArr[g2] / r2[g2]); - } else - n2.push(-s2.minY / r2[0]), s2.minY !== Number.MIN_VALUE && 0 !== Math.abs(s2.minY) && (l2 = -s2.minY / t3, h2 = s2.minX / e2); - return { yRatio: r2, invertedYRatio: t3, zRatio: o2, xRatio: e2, initialXRatio: i2, invertedXRatio: a2, baseLineInvertedY: l2, baseLineY: n2, baseLineX: h2 }; - } }, { key: "getLogSeries", value: function(t3) { - var e2 = this, i2 = this.w; - return i2.globals.seriesLog = t3.map(function(t4, a2) { - return i2.config.yaxis[a2] && i2.config.yaxis[a2].logarithmic ? t4.map(function(t5) { - return null === t5 ? null : e2.getLogVal(i2.config.yaxis[a2].logBase, t5, a2); - }) : t4; - }), i2.globals.invalidLogScale ? t3 : i2.globals.seriesLog; - } }, { key: "getBaseLog", value: function(t3, e2) { - return Math.log(e2) / Math.log(t3); - } }, { key: "getLogVal", value: function(t3, e2, i2) { - if (0 === e2) - return 0; - var a2 = this.w, s2 = 0 === a2.globals.minYArr[i2] ? -1 : this.getBaseLog(t3, a2.globals.minYArr[i2]), r2 = (0 === a2.globals.maxYArr[i2] ? 0 : this.getBaseLog(t3, a2.globals.maxYArr[i2])) - s2; - return e2 < 1 ? e2 / r2 : (this.getBaseLog(t3, e2) - s2) / r2; - } }, { key: "getLogYRatios", value: function(t3) { - var e2 = this, i2 = this.w, a2 = this.w.globals; - return a2.yLogRatio = t3.slice(), a2.logYRange = a2.yRange.map(function(t4, s2) { - if (i2.config.yaxis[s2] && e2.w.config.yaxis[s2].logarithmic) { - var r2, o2 = -Number.MAX_VALUE, n2 = Number.MIN_VALUE; - return a2.seriesLog.forEach(function(t5, e3) { - t5.forEach(function(t6) { - i2.config.yaxis[e3] && i2.config.yaxis[e3].logarithmic && (o2 = Math.max(t6, o2), n2 = Math.min(t6, n2)); - }); - }), r2 = Math.pow(a2.yRange[s2], Math.abs(n2 - o2) / a2.yRange[s2]), a2.yLogRatio[s2] = r2 / a2.gridHeight, r2; - } - }), a2.invalidLogScale ? t3.slice() : a2.yLogRatio; - } }], [{ key: "checkComboSeries", value: function(t3) { - var e2 = false, i2 = 0, a2 = 0; - return t3.length && void 0 !== t3[0].type && t3.forEach(function(t4) { - "bar" !== t4.type && "column" !== t4.type && "candlestick" !== t4.type && "boxPlot" !== t4.type || i2++, void 0 !== t4.type && a2++; - }), a2 > 0 && (e2 = true), { comboBarCount: i2, comboCharts: e2 }; - } }, { key: "extendArrayProps", value: function(t3, e2, i2) { - return e2.yaxis && (e2 = t3.extendYAxis(e2, i2)), e2.annotations && (e2.annotations.yaxis && (e2 = t3.extendYAxisAnnotations(e2)), e2.annotations.xaxis && (e2 = t3.extendXAxisAnnotations(e2)), e2.annotations.points && (e2 = t3.extendPointAnnotations(e2))), e2; - } }]), t2; - }(); - var w = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.annoCtx = e2; - } - return r(t2, [{ key: "setOrientations", value: function(t3) { - var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, i2 = this.w; - if ("vertical" === t3.label.orientation) { - var a2 = null !== e2 ? e2 : 0, s2 = i2.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a2, "']")); - if (null !== s2) { - var r2 = s2.getBoundingClientRect(); - s2.setAttribute("x", parseFloat(s2.getAttribute("x")) - r2.height + 4), "top" === t3.label.position ? s2.setAttribute("y", parseFloat(s2.getAttribute("y")) + r2.width) : s2.setAttribute("y", parseFloat(s2.getAttribute("y")) - r2.width); - var o2 = this.annoCtx.graphics.rotateAroundCenter(s2), n2 = o2.x, l2 = o2.y; - s2.setAttribute("transform", "rotate(-90 ".concat(n2, " ").concat(l2, ")")); - } - } - } }, { key: "addBackgroundToAnno", value: function(t3, e2) { - var i2 = this.w; - if (!t3 || void 0 === e2.label.text || void 0 !== e2.label.text && !String(e2.label.text).trim()) - return null; - var a2 = i2.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(), s2 = t3.getBoundingClientRect(), r2 = e2.label.style.padding.left, o2 = e2.label.style.padding.right, n2 = e2.label.style.padding.top, l2 = e2.label.style.padding.bottom; - "vertical" === e2.label.orientation && (n2 = e2.label.style.padding.left, l2 = e2.label.style.padding.right, r2 = e2.label.style.padding.top, o2 = e2.label.style.padding.bottom); - var h2 = s2.left - a2.left - r2, c2 = s2.top - a2.top - n2, d2 = this.annoCtx.graphics.drawRect(h2 - i2.globals.barPadForNumericAxis, c2, s2.width + r2 + o2, s2.height + n2 + l2, e2.label.borderRadius, e2.label.style.background, 1, e2.label.borderWidth, e2.label.borderColor, 0); - return e2.id && d2.node.classList.add(e2.id), d2; - } }, { key: "annotationsBackground", value: function() { - var t3 = this, e2 = this.w, i2 = function(i3, a2, s2) { - var r2 = e2.globals.dom.baseEl.querySelector(".apexcharts-".concat(s2, "-annotations .apexcharts-").concat(s2, "-annotation-label[rel='").concat(a2, "']")); - if (r2) { - var o2 = r2.parentNode, n2 = t3.addBackgroundToAnno(r2, i3); - n2 && (o2.insertBefore(n2.node, r2), i3.label.mouseEnter && n2.node.addEventListener("mouseenter", i3.label.mouseEnter.bind(t3, i3)), i3.label.mouseLeave && n2.node.addEventListener("mouseleave", i3.label.mouseLeave.bind(t3, i3)), i3.label.click && n2.node.addEventListener("click", i3.label.click.bind(t3, i3))); - } - }; - e2.config.annotations.xaxis.map(function(t4, e3) { - i2(t4, e3, "xaxis"); - }), e2.config.annotations.yaxis.map(function(t4, e3) { - i2(t4, e3, "yaxis"); - }), e2.config.annotations.points.map(function(t4, e3) { - i2(t4, e3, "point"); - }); - } }, { key: "getY1Y2", value: function(t3, e2) { - var i2, a2 = "y1" === t3 ? e2.y : e2.y2, s2 = this.w; - if (this.annoCtx.invertAxis) { - var r2 = s2.globals.labels.indexOf(a2); - s2.config.xaxis.convertedCatToNumeric && (r2 = s2.globals.categoryLabels.indexOf(a2)); - var o2 = s2.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child(" + (r2 + 1) + ")"); - o2 && (i2 = parseFloat(o2.getAttribute("y"))); - } else { - var n2; - if (s2.config.yaxis[e2.yAxisIndex].logarithmic) - n2 = (a2 = new y(this.annoCtx.ctx).getLogVal(a2, e2.yAxisIndex)) / s2.globals.yLogRatio[e2.yAxisIndex]; - else - n2 = (a2 - s2.globals.minYArr[e2.yAxisIndex]) / (s2.globals.yRange[e2.yAxisIndex] / s2.globals.gridHeight); - i2 = s2.globals.gridHeight - n2, !e2.marker || void 0 !== e2.y && null !== e2.y || (i2 = 0), s2.config.yaxis[e2.yAxisIndex] && s2.config.yaxis[e2.yAxisIndex].reversed && (i2 = n2); - } - return "string" == typeof a2 && a2.indexOf("px") > -1 && (i2 = parseFloat(a2)), i2; - } }, { key: "getX1X2", value: function(t3, e2) { - var i2 = this.w, a2 = this.annoCtx.invertAxis ? i2.globals.minY : i2.globals.minX, s2 = this.annoCtx.invertAxis ? i2.globals.maxY : i2.globals.maxX, r2 = this.annoCtx.invertAxis ? i2.globals.yRange[0] : i2.globals.xRange, o2 = (e2.x - a2) / (r2 / i2.globals.gridWidth); - this.annoCtx.inversedReversedAxis && (o2 = (s2 - e2.x) / (r2 / i2.globals.gridWidth)), "category" !== i2.config.xaxis.type && !i2.config.xaxis.convertedCatToNumeric || this.annoCtx.invertAxis || i2.globals.dataFormatXNumeric || (o2 = this.getStringX(e2.x)); - var n2 = (e2.x2 - a2) / (r2 / i2.globals.gridWidth); - return this.annoCtx.inversedReversedAxis && (n2 = (s2 - e2.x2) / (r2 / i2.globals.gridWidth)), "category" !== i2.config.xaxis.type && !i2.config.xaxis.convertedCatToNumeric || this.annoCtx.invertAxis || i2.globals.dataFormatXNumeric || (n2 = this.getStringX(e2.x2)), void 0 !== e2.x && null !== e2.x || !e2.marker || (o2 = i2.globals.gridWidth), "x1" === t3 && "string" == typeof e2.x && e2.x.indexOf("px") > -1 && (o2 = parseFloat(e2.x)), "x2" === t3 && "string" == typeof e2.x2 && e2.x2.indexOf("px") > -1 && (n2 = parseFloat(e2.x2)), "x1" === t3 ? o2 : n2; - } }, { key: "getStringX", value: function(t3) { - var e2 = this.w, i2 = t3; - e2.config.xaxis.convertedCatToNumeric && e2.globals.categoryLabels.length && (t3 = e2.globals.categoryLabels.indexOf(t3) + 1); - var a2 = e2.globals.labels.indexOf(t3), s2 = e2.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child(" + (a2 + 1) + ")"); - return s2 && (i2 = parseFloat(s2.getAttribute("x"))), i2; - } }]), t2; - }(); - var k = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.annoCtx = e2, this.invertAxis = this.annoCtx.invertAxis, this.helpers = new w(this.annoCtx); - } - return r(t2, [{ key: "addXaxisAnnotation", value: function(t3, e2, i2) { - var a2, s2 = this.w, r2 = this.helpers.getX1X2("x1", t3), o2 = t3.label.text, n2 = t3.strokeDashArray; - if (x.isNumber(r2)) { - if (null === t3.x2 || void 0 === t3.x2) { - var l2 = this.annoCtx.graphics.drawLine(r2 + t3.offsetX, 0 + t3.offsetY, r2 + t3.offsetX, s2.globals.gridHeight + t3.offsetY, t3.borderColor, n2, t3.borderWidth); - e2.appendChild(l2.node), t3.id && l2.node.classList.add(t3.id); - } else { - if ((a2 = this.helpers.getX1X2("x2", t3)) < r2) { - var h2 = r2; - r2 = a2, a2 = h2; - } - var c2 = this.annoCtx.graphics.drawRect(r2 + t3.offsetX, 0 + t3.offsetY, a2 - r2, s2.globals.gridHeight + t3.offsetY, 0, t3.fillColor, t3.opacity, 1, t3.borderColor, n2); - c2.node.classList.add("apexcharts-annotation-rect"), c2.attr("clip-path", "url(#gridRectMask".concat(s2.globals.cuid, ")")), e2.appendChild(c2.node), t3.id && c2.node.classList.add(t3.id); - } - var d2 = this.annoCtx.graphics.getTextRects(o2, parseFloat(t3.label.style.fontSize)), g2 = "top" === t3.label.position ? 4 : "center" === t3.label.position ? s2.globals.gridHeight / 2 + ("vertical" === t3.label.orientation ? d2.width / 2 : 0) : s2.globals.gridHeight, u2 = this.annoCtx.graphics.drawText({ x: r2 + t3.label.offsetX, y: g2 + t3.label.offsetY - ("vertical" === t3.label.orientation ? "top" === t3.label.position ? d2.width / 2 - 12 : -d2.width / 2 : 0), text: o2, textAnchor: t3.label.textAnchor, fontSize: t3.label.style.fontSize, fontFamily: t3.label.style.fontFamily, fontWeight: t3.label.style.fontWeight, foreColor: t3.label.style.color, cssClass: "apexcharts-xaxis-annotation-label ".concat(t3.label.style.cssClass, " ").concat(t3.id ? t3.id : "") }); - u2.attr({ rel: i2 }), e2.appendChild(u2.node), this.annoCtx.helpers.setOrientations(t3, i2); - } - } }, { key: "drawXAxisAnnotations", value: function() { - var t3 = this, e2 = this.w, i2 = this.annoCtx.graphics.group({ class: "apexcharts-xaxis-annotations" }); - return e2.config.annotations.xaxis.map(function(e3, a2) { - t3.addXaxisAnnotation(e3, i2.node, a2); - }), i2; - } }]), t2; - }(); - var A = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.annoCtx = e2, this.helpers = new w(this.annoCtx); - } - return r(t2, [{ key: "addYaxisAnnotation", value: function(t3, e2, i2) { - var a2, s2 = this.w, r2 = t3.strokeDashArray, o2 = this.helpers.getY1Y2("y1", t3), n2 = t3.label.text; - if (null === t3.y2 || void 0 === t3.y2) { - var l2 = this.annoCtx.graphics.drawLine(0 + t3.offsetX, o2 + t3.offsetY, this._getYAxisAnnotationWidth(t3), o2 + t3.offsetY, t3.borderColor, r2, t3.borderWidth); - e2.appendChild(l2.node), t3.id && l2.node.classList.add(t3.id); - } else { - if ((a2 = this.helpers.getY1Y2("y2", t3)) > o2) { - var h2 = o2; - o2 = a2, a2 = h2; - } - var c2 = this.annoCtx.graphics.drawRect(0 + t3.offsetX, a2 + t3.offsetY, this._getYAxisAnnotationWidth(t3), o2 - a2, 0, t3.fillColor, t3.opacity, 1, t3.borderColor, r2); - c2.node.classList.add("apexcharts-annotation-rect"), c2.attr("clip-path", "url(#gridRectMask".concat(s2.globals.cuid, ")")), e2.appendChild(c2.node), t3.id && c2.node.classList.add(t3.id); - } - var d2 = "right" === t3.label.position ? s2.globals.gridWidth : "center" === t3.label.position ? s2.globals.gridWidth / 2 : 0, g2 = this.annoCtx.graphics.drawText({ x: d2 + t3.label.offsetX, y: (null != a2 ? a2 : o2) + t3.label.offsetY - 3, text: n2, textAnchor: t3.label.textAnchor, fontSize: t3.label.style.fontSize, fontFamily: t3.label.style.fontFamily, fontWeight: t3.label.style.fontWeight, foreColor: t3.label.style.color, cssClass: "apexcharts-yaxis-annotation-label ".concat(t3.label.style.cssClass, " ").concat(t3.id ? t3.id : "") }); - g2.attr({ rel: i2 }), e2.appendChild(g2.node); - } }, { key: "_getYAxisAnnotationWidth", value: function(t3) { - var e2 = this.w; - e2.globals.gridWidth; - return (t3.width.indexOf("%") > -1 ? e2.globals.gridWidth * parseInt(t3.width, 10) / 100 : parseInt(t3.width, 10)) + t3.offsetX; - } }, { key: "drawYAxisAnnotations", value: function() { - var t3 = this, e2 = this.w, i2 = this.annoCtx.graphics.group({ class: "apexcharts-yaxis-annotations" }); - return e2.config.annotations.yaxis.map(function(e3, a2) { - t3.addYaxisAnnotation(e3, i2.node, a2); - }), i2; - } }]), t2; - }(); - var S = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.annoCtx = e2, this.helpers = new w(this.annoCtx); - } - return r(t2, [{ key: "addPointAnnotation", value: function(t3, e2, i2) { - this.w; - var a2 = this.helpers.getX1X2("x1", t3), s2 = this.helpers.getY1Y2("y1", t3); - if (x.isNumber(a2)) { - var r2 = { pSize: t3.marker.size, pointStrokeWidth: t3.marker.strokeWidth, pointFillColor: t3.marker.fillColor, pointStrokeColor: t3.marker.strokeColor, shape: t3.marker.shape, pRadius: t3.marker.radius, class: "apexcharts-point-annotation-marker ".concat(t3.marker.cssClass, " ").concat(t3.id ? t3.id : "") }, o2 = this.annoCtx.graphics.drawMarker(a2 + t3.marker.offsetX, s2 + t3.marker.offsetY, r2); - e2.appendChild(o2.node); - var n2 = t3.label.text ? t3.label.text : "", l2 = this.annoCtx.graphics.drawText({ x: a2 + t3.label.offsetX, y: s2 + t3.label.offsetY - t3.marker.size - parseFloat(t3.label.style.fontSize) / 1.6, text: n2, textAnchor: t3.label.textAnchor, fontSize: t3.label.style.fontSize, fontFamily: t3.label.style.fontFamily, fontWeight: t3.label.style.fontWeight, foreColor: t3.label.style.color, cssClass: "apexcharts-point-annotation-label ".concat(t3.label.style.cssClass, " ").concat(t3.id ? t3.id : "") }); - if (l2.attr({ rel: i2 }), e2.appendChild(l2.node), t3.customSVG.SVG) { - var h2 = this.annoCtx.graphics.group({ class: "apexcharts-point-annotations-custom-svg " + t3.customSVG.cssClass }); - h2.attr({ transform: "translate(".concat(a2 + t3.customSVG.offsetX, ", ").concat(s2 + t3.customSVG.offsetY, ")") }), h2.node.innerHTML = t3.customSVG.SVG, e2.appendChild(h2.node); - } - if (t3.image.path) { - var c2 = t3.image.width ? t3.image.width : 20, d2 = t3.image.height ? t3.image.height : 20; - o2 = this.annoCtx.addImage({ x: a2 + t3.image.offsetX - c2 / 2, y: s2 + t3.image.offsetY - d2 / 2, width: c2, height: d2, path: t3.image.path, appendTo: ".apexcharts-point-annotations" }); - } - t3.mouseEnter && o2.node.addEventListener("mouseenter", t3.mouseEnter.bind(this, t3)), t3.mouseLeave && o2.node.addEventListener("mouseleave", t3.mouseLeave.bind(this, t3)), t3.click && o2.node.addEventListener("click", t3.click.bind(this, t3)); - } - } }, { key: "drawPointAnnotations", value: function() { - var t3 = this, e2 = this.w, i2 = this.annoCtx.graphics.group({ class: "apexcharts-point-annotations" }); - return e2.config.annotations.points.map(function(e3, a2) { - t3.addPointAnnotation(e3, i2.node, a2); - }), i2; - } }]), t2; - }(); - var C = { name: "en", options: { months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], toolbar: { exportToSVG: "Download SVG", exportToPNG: "Download PNG", exportToCSV: "Download CSV", menu: "Menu", selection: "Selection", selectionZoom: "Selection Zoom", zoomIn: "Zoom In", zoomOut: "Zoom Out", pan: "Panning", reset: "Reset Zoom" } } }; - var L = function() { - function t2() { - a(this, t2), this.yAxis = { show: true, showAlways: false, showForNullSeries: true, seriesName: void 0, opposite: false, reversed: false, logarithmic: false, logBase: 10, tickAmount: void 0, forceNiceScale: false, max: void 0, min: void 0, floating: false, decimalsInFloat: void 0, labels: { show: true, minWidth: 0, maxWidth: 160, offsetX: 0, offsetY: 0, align: void 0, rotate: 0, padding: 20, style: { colors: [], fontSize: "11px", fontWeight: 400, fontFamily: void 0, cssClass: "" }, formatter: void 0 }, axisBorder: { show: false, color: "#e0e0e0", width: 1, offsetX: 0, offsetY: 0 }, axisTicks: { show: false, color: "#e0e0e0", width: 6, offsetX: 0, offsetY: 0 }, title: { text: void 0, rotate: -90, offsetY: 0, offsetX: 0, style: { color: void 0, fontSize: "11px", fontWeight: 900, fontFamily: void 0, cssClass: "" } }, tooltip: { enabled: false, offsetX: 0 }, crosshairs: { show: true, position: "front", stroke: { color: "#b6b6b6", width: 1, dashArray: 0 } } }, this.pointAnnotation = { id: void 0, x: 0, y: null, yAxisIndex: 0, seriesIndex: 0, mouseEnter: void 0, mouseLeave: void 0, click: void 0, marker: { size: 4, fillColor: "#fff", strokeWidth: 2, strokeColor: "#333", shape: "circle", offsetX: 0, offsetY: 0, radius: 2, cssClass: "" }, label: { borderColor: "#c2c2c2", borderWidth: 1, borderRadius: 2, text: void 0, textAnchor: "middle", offsetX: 0, offsetY: 0, mouseEnter: void 0, mouseLeave: void 0, click: void 0, style: { background: "#fff", color: void 0, fontSize: "11px", fontFamily: void 0, fontWeight: 400, cssClass: "", padding: { left: 5, right: 5, top: 2, bottom: 2 } } }, customSVG: { SVG: void 0, cssClass: void 0, offsetX: 0, offsetY: 0 }, image: { path: void 0, width: 20, height: 20, offsetX: 0, offsetY: 0 } }, this.yAxisAnnotation = { id: void 0, y: 0, y2: null, strokeDashArray: 1, fillColor: "#c2c2c2", borderColor: "#c2c2c2", borderWidth: 1, opacity: 0.3, offsetX: 0, offsetY: 0, width: "100%", yAxisIndex: 0, label: { borderColor: "#c2c2c2", borderWidth: 1, borderRadius: 2, text: void 0, textAnchor: "end", position: "right", offsetX: 0, offsetY: -3, mouseEnter: void 0, mouseLeave: void 0, click: void 0, style: { background: "#fff", color: void 0, fontSize: "11px", fontFamily: void 0, fontWeight: 400, cssClass: "", padding: { left: 5, right: 5, top: 2, bottom: 2 } } } }, this.xAxisAnnotation = { id: void 0, x: 0, x2: null, strokeDashArray: 1, fillColor: "#c2c2c2", borderColor: "#c2c2c2", borderWidth: 1, opacity: 0.3, offsetX: 0, offsetY: 0, label: { borderColor: "#c2c2c2", borderWidth: 1, borderRadius: 2, text: void 0, textAnchor: "middle", orientation: "vertical", position: "top", offsetX: 0, offsetY: 0, mouseEnter: void 0, mouseLeave: void 0, click: void 0, style: { background: "#fff", color: void 0, fontSize: "11px", fontFamily: void 0, fontWeight: 400, cssClass: "", padding: { left: 5, right: 5, top: 2, bottom: 2 } } } }, this.text = { x: 0, y: 0, text: "", textAnchor: "start", foreColor: void 0, fontSize: "13px", fontFamily: void 0, fontWeight: 400, appendTo: ".apexcharts-annotations", backgroundColor: "transparent", borderColor: "#c2c2c2", borderRadius: 0, borderWidth: 0, paddingLeft: 4, paddingRight: 4, paddingTop: 2, paddingBottom: 2 }; - } - return r(t2, [{ key: "init", value: function() { - return { annotations: { yaxis: [this.yAxisAnnotation], xaxis: [this.xAxisAnnotation], points: [this.pointAnnotation], texts: [], images: [], shapes: [] }, chart: { animations: { enabled: true, easing: "easeinout", speed: 800, animateGradually: { delay: 150, enabled: true }, dynamicAnimation: { enabled: true, speed: 350 } }, background: "transparent", locales: [C], defaultLocale: "en", dropShadow: { enabled: false, enabledOnSeries: void 0, top: 2, left: 2, blur: 4, color: "#000", opacity: 0.35 }, events: { animationEnd: void 0, beforeMount: void 0, mounted: void 0, updated: void 0, click: void 0, mouseMove: void 0, mouseLeave: void 0, xAxisLabelClick: void 0, legendClick: void 0, markerClick: void 0, selection: void 0, dataPointSelection: void 0, dataPointMouseEnter: void 0, dataPointMouseLeave: void 0, beforeZoom: void 0, beforeResetZoom: void 0, zoomed: void 0, scrolled: void 0, brushScrolled: void 0 }, foreColor: "#373d3f", fontFamily: "Helvetica, Arial, sans-serif", height: "auto", parentHeightOffset: 15, redrawOnParentResize: true, redrawOnWindowResize: true, id: void 0, group: void 0, offsetX: 0, offsetY: 0, selection: { enabled: false, type: "x", fill: { color: "#24292e", opacity: 0.1 }, stroke: { width: 1, color: "#24292e", opacity: 0.4, dashArray: 3 }, xaxis: { min: void 0, max: void 0 }, yaxis: { min: void 0, max: void 0 } }, sparkline: { enabled: false }, brush: { enabled: false, autoScaleYaxis: true, target: void 0, targets: void 0 }, stacked: false, stackType: "normal", toolbar: { show: true, offsetX: 0, offsetY: 0, tools: { download: true, selection: true, zoom: true, zoomin: true, zoomout: true, pan: true, reset: true, customIcons: [] }, export: { csv: { filename: void 0, columnDelimiter: ",", headerCategory: "category", headerValue: "value", dateFormatter: function(t3) { - return new Date(t3).toDateString(); - } }, png: { filename: void 0 }, svg: { filename: void 0 } }, autoSelected: "zoom" }, type: "line", width: "100%", zoom: { enabled: true, type: "x", autoScaleYaxis: false, zoomedArea: { fill: { color: "#90CAF9", opacity: 0.4 }, stroke: { color: "#0D47A1", opacity: 0.4, width: 1 } } } }, plotOptions: { area: { fillTo: "origin" }, bar: { horizontal: false, columnWidth: "70%", barHeight: "70%", distributed: false, borderRadius: 0, borderRadiusApplication: "around", borderRadiusWhenStacked: "last", rangeBarOverlap: true, rangeBarGroupRows: false, hideZeroBarsWhenGrouped: false, isDumbbell: false, dumbbellColors: void 0, isFunnel: false, isFunnel3d: true, colors: { ranges: [], backgroundBarColors: [], backgroundBarOpacity: 1, backgroundBarRadius: 0 }, dataLabels: { position: "top", maxItems: 100, hideOverflowingLabels: true, orientation: "horizontal", total: { enabled: false, formatter: void 0, offsetX: 0, offsetY: 0, style: { color: "#373d3f", fontSize: "12px", fontFamily: void 0, fontWeight: 600 } } } }, bubble: { zScaling: true, minBubbleRadius: void 0, maxBubbleRadius: void 0 }, candlestick: { colors: { upward: "#00B746", downward: "#EF403C" }, wick: { useFillColor: true } }, boxPlot: { colors: { upper: "#00E396", lower: "#008FFB" } }, heatmap: { radius: 2, enableShades: true, shadeIntensity: 0.5, reverseNegativeShade: false, distributed: false, useFillColorAsStroke: false, colorScale: { inverse: false, ranges: [], min: void 0, max: void 0 } }, treemap: { enableShades: true, shadeIntensity: 0.5, distributed: false, reverseNegativeShade: false, useFillColorAsStroke: false, dataLabels: { format: "scale" }, colorScale: { inverse: false, ranges: [], min: void 0, max: void 0 } }, radialBar: { inverseOrder: false, startAngle: 0, endAngle: 360, offsetX: 0, offsetY: 0, hollow: { margin: 5, size: "50%", background: "transparent", image: void 0, imageWidth: 150, imageHeight: 150, imageOffsetX: 0, imageOffsetY: 0, imageClipped: true, position: "front", dropShadow: { enabled: false, top: 0, left: 0, blur: 3, color: "#000", opacity: 0.5 } }, track: { show: true, startAngle: void 0, endAngle: void 0, background: "#f2f2f2", strokeWidth: "97%", opacity: 1, margin: 5, dropShadow: { enabled: false, top: 0, left: 0, blur: 3, color: "#000", opacity: 0.5 } }, dataLabels: { show: true, name: { show: true, fontSize: "16px", fontFamily: void 0, fontWeight: 600, color: void 0, offsetY: 0, formatter: function(t3) { - return t3; - } }, value: { show: true, fontSize: "14px", fontFamily: void 0, fontWeight: 400, color: void 0, offsetY: 16, formatter: function(t3) { - return t3 + "%"; - } }, total: { show: false, label: "Total", fontSize: "16px", fontWeight: 600, fontFamily: void 0, color: void 0, formatter: function(t3) { - return t3.globals.seriesTotals.reduce(function(t4, e2) { - return t4 + e2; - }, 0) / t3.globals.series.length + "%"; - } } } }, pie: { customScale: 1, offsetX: 0, offsetY: 0, startAngle: 0, endAngle: 360, expandOnClick: true, dataLabels: { offset: 0, minAngleToShowLabel: 10 }, donut: { size: "65%", background: "transparent", labels: { show: false, name: { show: true, fontSize: "16px", fontFamily: void 0, fontWeight: 600, color: void 0, offsetY: -10, formatter: function(t3) { - return t3; - } }, value: { show: true, fontSize: "20px", fontFamily: void 0, fontWeight: 400, color: void 0, offsetY: 10, formatter: function(t3) { - return t3; - } }, total: { show: false, showAlways: false, label: "Total", fontSize: "16px", fontWeight: 400, fontFamily: void 0, color: void 0, formatter: function(t3) { - return t3.globals.seriesTotals.reduce(function(t4, e2) { - return t4 + e2; - }, 0); - } } } } }, polarArea: { rings: { strokeWidth: 1, strokeColor: "#e8e8e8" }, spokes: { strokeWidth: 1, connectorColors: "#e8e8e8" } }, radar: { size: void 0, offsetX: 0, offsetY: 0, polygons: { strokeWidth: 1, strokeColors: "#e8e8e8", connectorColors: "#e8e8e8", fill: { colors: void 0 } } } }, colors: void 0, dataLabels: { enabled: true, enabledOnSeries: void 0, formatter: function(t3) { - return null !== t3 ? t3 : ""; - }, textAnchor: "middle", distributed: false, offsetX: 0, offsetY: 0, style: { fontSize: "12px", fontFamily: void 0, fontWeight: 600, colors: void 0 }, background: { enabled: true, foreColor: "#fff", borderRadius: 2, padding: 4, opacity: 0.9, borderWidth: 1, borderColor: "#fff", dropShadow: { enabled: false, top: 1, left: 1, blur: 1, color: "#000", opacity: 0.45 } }, dropShadow: { enabled: false, top: 1, left: 1, blur: 1, color: "#000", opacity: 0.45 } }, fill: { type: "solid", colors: void 0, opacity: 0.85, gradient: { shade: "dark", type: "horizontal", shadeIntensity: 0.5, gradientToColors: void 0, inverseColors: true, opacityFrom: 1, opacityTo: 1, stops: [0, 50, 100], colorStops: [] }, image: { src: [], width: void 0, height: void 0 }, pattern: { style: "squares", width: 6, height: 6, strokeWidth: 2 } }, forecastDataPoints: { count: 0, fillOpacity: 0.5, strokeWidth: void 0, dashArray: 4 }, grid: { show: true, borderColor: "#e0e0e0", strokeDashArray: 0, position: "back", xaxis: { lines: { show: false } }, yaxis: { lines: { show: true } }, row: { colors: void 0, opacity: 0.5 }, column: { colors: void 0, opacity: 0.5 }, padding: { top: 0, right: 10, bottom: 0, left: 12 } }, labels: [], legend: { show: true, showForSingleSeries: false, showForNullSeries: true, showForZeroSeries: true, floating: false, position: "bottom", horizontalAlign: "center", inverseOrder: false, fontSize: "12px", fontFamily: void 0, fontWeight: 400, width: void 0, height: void 0, formatter: void 0, tooltipHoverFormatter: void 0, offsetX: -20, offsetY: 4, customLegendItems: [], labels: { colors: void 0, useSeriesColors: false }, markers: { width: 12, height: 12, strokeWidth: 0, fillColors: void 0, strokeColor: "#fff", radius: 12, customHTML: void 0, offsetX: 0, offsetY: 0, onClick: void 0 }, itemMargin: { horizontal: 5, vertical: 2 }, onItemClick: { toggleDataSeries: true }, onItemHover: { highlightDataSeries: true } }, markers: { discrete: [], size: 0, colors: void 0, strokeColors: "#fff", strokeWidth: 2, strokeOpacity: 0.9, strokeDashArray: 0, fillOpacity: 1, shape: "circle", width: 8, height: 8, radius: 2, offsetX: 0, offsetY: 0, onClick: void 0, onDblClick: void 0, showNullDataPoints: true, hover: { size: void 0, sizeOffset: 3 } }, noData: { text: void 0, align: "center", verticalAlign: "middle", offsetX: 0, offsetY: 0, style: { color: void 0, fontSize: "14px", fontFamily: void 0 } }, responsive: [], series: void 0, states: { normal: { filter: { type: "none", value: 0 } }, hover: { filter: { type: "lighten", value: 0.1 } }, active: { allowMultipleDataPointsSelection: false, filter: { type: "darken", value: 0.5 } } }, title: { text: void 0, align: "left", margin: 5, offsetX: 0, offsetY: 0, floating: false, style: { fontSize: "14px", fontWeight: 900, fontFamily: void 0, color: void 0 } }, subtitle: { text: void 0, align: "left", margin: 5, offsetX: 0, offsetY: 30, floating: false, style: { fontSize: "12px", fontWeight: 400, fontFamily: void 0, color: void 0 } }, stroke: { show: true, curve: "smooth", lineCap: "butt", width: 2, colors: void 0, dashArray: 0, fill: { type: "solid", colors: void 0, opacity: 0.85, gradient: { shade: "dark", type: "horizontal", shadeIntensity: 0.5, gradientToColors: void 0, inverseColors: true, opacityFrom: 1, opacityTo: 1, stops: [0, 50, 100], colorStops: [] } } }, tooltip: { enabled: true, enabledOnSeries: void 0, shared: true, followCursor: false, intersect: false, inverseOrder: false, custom: void 0, fillSeriesColor: false, theme: "light", cssClass: "", style: { fontSize: "12px", fontFamily: void 0 }, onDatasetHover: { highlightDataSeries: false }, x: { show: true, format: "dd MMM", formatter: void 0 }, y: { formatter: void 0, title: { formatter: function(t3) { - return t3 ? t3 + ": " : ""; - } } }, z: { formatter: void 0, title: "Size: " }, marker: { show: true, fillColors: void 0 }, items: { display: "flex" }, fixed: { enabled: false, position: "topRight", offsetX: 0, offsetY: 0 } }, xaxis: { type: "category", categories: [], convertedCatToNumeric: false, offsetX: 0, offsetY: 0, overwriteCategories: void 0, labels: { show: true, rotate: -45, rotateAlways: false, hideOverlappingLabels: true, trim: false, minHeight: void 0, maxHeight: 120, showDuplicates: true, style: { colors: [], fontSize: "12px", fontWeight: 400, fontFamily: void 0, cssClass: "" }, offsetX: 0, offsetY: 0, format: void 0, formatter: void 0, datetimeUTC: true, datetimeFormatter: { year: "yyyy", month: "MMM 'yy", day: "dd MMM", hour: "HH:mm", minute: "HH:mm:ss", second: "HH:mm:ss" } }, group: { groups: [], style: { colors: [], fontSize: "12px", fontWeight: 400, fontFamily: void 0, cssClass: "" } }, axisBorder: { show: true, color: "#e0e0e0", width: "100%", height: 1, offsetX: 0, offsetY: 0 }, axisTicks: { show: true, color: "#e0e0e0", height: 6, offsetX: 0, offsetY: 0 }, tickAmount: void 0, tickPlacement: "on", min: void 0, max: void 0, range: void 0, floating: false, decimalsInFloat: void 0, position: "bottom", title: { text: void 0, offsetX: 0, offsetY: 0, style: { color: void 0, fontSize: "12px", fontWeight: 900, fontFamily: void 0, cssClass: "" } }, crosshairs: { show: true, width: 1, position: "back", opacity: 0.9, stroke: { color: "#b6b6b6", width: 1, dashArray: 3 }, fill: { type: "solid", color: "#B1B9C4", gradient: { colorFrom: "#D8E3F0", colorTo: "#BED1E6", stops: [0, 100], opacityFrom: 0.4, opacityTo: 0.5 } }, dropShadow: { enabled: false, left: 0, top: 0, blur: 1, opacity: 0.4 } }, tooltip: { enabled: true, offsetY: 0, formatter: void 0, style: { fontSize: "12px", fontFamily: void 0 } } }, yaxis: this.yAxis, theme: { mode: "light", palette: "palette1", monochrome: { enabled: false, color: "#008FFB", shadeTo: "light", shadeIntensity: 0.65 } } }; - } }]), t2; - }(); - var P = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.graphics = new m(this.ctx), this.w.globals.isBarHorizontal && (this.invertAxis = true), this.helpers = new w(this), this.xAxisAnnotations = new k(this), this.yAxisAnnotations = new A(this), this.pointsAnnotations = new S(this), this.w.globals.isBarHorizontal && this.w.config.yaxis[0].reversed && (this.inversedReversedAxis = true), this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints; - } - return r(t2, [{ key: "drawAxesAnnotations", value: function() { - var t3 = this.w; - if (t3.globals.axisCharts) { - for (var e2 = this.yAxisAnnotations.drawYAxisAnnotations(), i2 = this.xAxisAnnotations.drawXAxisAnnotations(), a2 = this.pointsAnnotations.drawPointAnnotations(), s2 = t3.config.chart.animations.enabled, r2 = [e2, i2, a2], o2 = [i2.node, e2.node, a2.node], n2 = 0; n2 < 3; n2++) - t3.globals.dom.elGraphical.add(r2[n2]), !s2 || t3.globals.resized || t3.globals.dataChanged || "scatter" !== t3.config.chart.type && "bubble" !== t3.config.chart.type && t3.globals.dataPoints > 1 && o2[n2].classList.add("apexcharts-element-hidden"), t3.globals.delayedElements.push({ el: o2[n2], index: 0 }); - this.helpers.annotationsBackground(); - } - } }, { key: "drawImageAnnos", value: function() { - var t3 = this; - this.w.config.annotations.images.map(function(e2, i2) { - t3.addImage(e2, i2); - }); - } }, { key: "drawTextAnnos", value: function() { - var t3 = this; - this.w.config.annotations.texts.map(function(e2, i2) { - t3.addText(e2, i2); - }); - } }, { key: "addXaxisAnnotation", value: function(t3, e2, i2) { - this.xAxisAnnotations.addXaxisAnnotation(t3, e2, i2); - } }, { key: "addYaxisAnnotation", value: function(t3, e2, i2) { - this.yAxisAnnotations.addYaxisAnnotation(t3, e2, i2); - } }, { key: "addPointAnnotation", value: function(t3, e2, i2) { - this.pointsAnnotations.addPointAnnotation(t3, e2, i2); - } }, { key: "addText", value: function(t3, e2) { - var i2 = t3.x, a2 = t3.y, s2 = t3.text, r2 = t3.textAnchor, o2 = t3.foreColor, n2 = t3.fontSize, l2 = t3.fontFamily, h2 = t3.fontWeight, c2 = t3.cssClass, d2 = t3.backgroundColor, g2 = t3.borderWidth, u2 = t3.strokeDashArray, p2 = t3.borderRadius, f2 = t3.borderColor, x2 = t3.appendTo, b2 = void 0 === x2 ? ".apexcharts-annotations" : x2, v2 = t3.paddingLeft, m2 = void 0 === v2 ? 4 : v2, y2 = t3.paddingRight, w2 = void 0 === y2 ? 4 : y2, k2 = t3.paddingBottom, A2 = void 0 === k2 ? 2 : k2, S2 = t3.paddingTop, C2 = void 0 === S2 ? 2 : S2, L2 = this.w, P2 = this.graphics.drawText({ x: i2, y: a2, text: s2, textAnchor: r2 || "start", fontSize: n2 || "12px", fontWeight: h2 || "regular", fontFamily: l2 || L2.config.chart.fontFamily, foreColor: o2 || L2.config.chart.foreColor, cssClass: c2 }), I2 = L2.globals.dom.baseEl.querySelector(b2); - I2 && I2.appendChild(P2.node); - var M2 = P2.bbox(); - if (s2) { - var T2 = this.graphics.drawRect(M2.x - m2, M2.y - C2, M2.width + m2 + w2, M2.height + A2 + C2, p2, d2 || "transparent", 1, g2, f2, u2); - I2.insertBefore(T2.node, P2.node); - } - } }, { key: "addImage", value: function(t3, e2) { - var i2 = this.w, a2 = t3.path, s2 = t3.x, r2 = void 0 === s2 ? 0 : s2, o2 = t3.y, n2 = void 0 === o2 ? 0 : o2, l2 = t3.width, h2 = void 0 === l2 ? 20 : l2, c2 = t3.height, d2 = void 0 === c2 ? 20 : c2, g2 = t3.appendTo, u2 = void 0 === g2 ? ".apexcharts-annotations" : g2, p2 = i2.globals.dom.Paper.image(a2); - p2.size(h2, d2).move(r2, n2); - var f2 = i2.globals.dom.baseEl.querySelector(u2); - return f2 && f2.appendChild(p2.node), p2; - } }, { key: "addXaxisAnnotationExternal", value: function(t3, e2, i2) { - return this.addAnnotationExternal({ params: t3, pushToMemory: e2, context: i2, type: "xaxis", contextMethod: i2.addXaxisAnnotation }), i2; - } }, { key: "addYaxisAnnotationExternal", value: function(t3, e2, i2) { - return this.addAnnotationExternal({ params: t3, pushToMemory: e2, context: i2, type: "yaxis", contextMethod: i2.addYaxisAnnotation }), i2; - } }, { key: "addPointAnnotationExternal", value: function(t3, e2, i2) { - return void 0 === this.invertAxis && (this.invertAxis = i2.w.globals.isBarHorizontal), this.addAnnotationExternal({ params: t3, pushToMemory: e2, context: i2, type: "point", contextMethod: i2.addPointAnnotation }), i2; - } }, { key: "addAnnotationExternal", value: function(t3) { - var e2 = t3.params, i2 = t3.pushToMemory, a2 = t3.context, s2 = t3.type, r2 = t3.contextMethod, o2 = a2, n2 = o2.w, l2 = n2.globals.dom.baseEl.querySelector(".apexcharts-".concat(s2, "-annotations")), h2 = l2.childNodes.length + 1, c2 = new L(), d2 = Object.assign({}, "xaxis" === s2 ? c2.xAxisAnnotation : "yaxis" === s2 ? c2.yAxisAnnotation : c2.pointAnnotation), g2 = x.extend(d2, e2); - switch (s2) { - case "xaxis": - this.addXaxisAnnotation(g2, l2, h2); - break; - case "yaxis": - this.addYaxisAnnotation(g2, l2, h2); - break; - case "point": - this.addPointAnnotation(g2, l2, h2); - } - var u2 = n2.globals.dom.baseEl.querySelector(".apexcharts-".concat(s2, "-annotations .apexcharts-").concat(s2, "-annotation-label[rel='").concat(h2, "']")), p2 = this.helpers.addBackgroundToAnno(u2, g2); - return p2 && l2.insertBefore(p2.node, u2), i2 && n2.globals.memory.methodsToExec.push({ context: o2, id: g2.id ? g2.id : x.randomId(), method: r2, label: "addAnnotation", params: e2 }), a2; - } }, { key: "clearAnnotations", value: function(t3) { - var e2 = t3.w, i2 = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations"); - e2.globals.memory.methodsToExec.map(function(t4, i3) { - "addText" !== t4.label && "addAnnotation" !== t4.label || e2.globals.memory.methodsToExec.splice(i3, 1); - }), i2 = x.listToArray(i2), Array.prototype.forEach.call(i2, function(t4) { - for (; t4.firstChild; ) - t4.removeChild(t4.firstChild); - }); - } }, { key: "removeAnnotation", value: function(t3, e2) { - var i2 = t3.w, a2 = i2.globals.dom.baseEl.querySelectorAll(".".concat(e2)); - a2 && (i2.globals.memory.methodsToExec.map(function(t4, a3) { - t4.id === e2 && i2.globals.memory.methodsToExec.splice(a3, 1); - }), Array.prototype.forEach.call(a2, function(t4) { - t4.parentElement.removeChild(t4); - })); - } }]), t2; - }(); - var I = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.months31 = [1, 3, 5, 7, 8, 10, 12], this.months30 = [2, 4, 6, 9, 11], this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; - } - return r(t2, [{ key: "isValidDate", value: function(t3) { - return !isNaN(this.parseDate(t3)); - } }, { key: "getTimeStamp", value: function(t3) { - return Date.parse(t3) ? this.w.config.xaxis.labels.datetimeUTC ? new Date(new Date(t3).toISOString().substr(0, 25)).getTime() : new Date(t3).getTime() : t3; - } }, { key: "getDate", value: function(t3) { - return this.w.config.xaxis.labels.datetimeUTC ? new Date(new Date(t3).toUTCString()) : new Date(t3); - } }, { key: "parseDate", value: function(t3) { - var e2 = Date.parse(t3); - if (!isNaN(e2)) - return this.getTimeStamp(t3); - var i2 = Date.parse(t3.replace(/-/g, "/").replace(/[a-z]+/gi, " ")); - return i2 = this.getTimeStamp(i2); - } }, { key: "parseDateWithTimezone", value: function(t3) { - return Date.parse(t3.replace(/-/g, "/").replace(/[a-z]+/gi, " ")); - } }, { key: "formatDate", value: function(t3, e2) { - var i2 = this.w.globals.locale, a2 = this.w.config.xaxis.labels.datetimeUTC, s2 = ["\0"].concat(u(i2.months)), r2 = [""].concat(u(i2.shortMonths)), o2 = [""].concat(u(i2.days)), n2 = [""].concat(u(i2.shortDays)); - function l2(t4, e3) { - var i3 = t4 + ""; - for (e3 = e3 || 2; i3.length < e3; ) - i3 = "0" + i3; - return i3; - } - var h2 = a2 ? t3.getUTCFullYear() : t3.getFullYear(); - e2 = (e2 = (e2 = e2.replace(/(^|[^\\])yyyy+/g, "$1" + h2)).replace(/(^|[^\\])yy/g, "$1" + h2.toString().substr(2, 2))).replace(/(^|[^\\])y/g, "$1" + h2); - var c2 = (a2 ? t3.getUTCMonth() : t3.getMonth()) + 1; - e2 = (e2 = (e2 = (e2 = e2.replace(/(^|[^\\])MMMM+/g, "$1" + s2[0])).replace(/(^|[^\\])MMM/g, "$1" + r2[0])).replace(/(^|[^\\])MM/g, "$1" + l2(c2))).replace(/(^|[^\\])M/g, "$1" + c2); - var d2 = a2 ? t3.getUTCDate() : t3.getDate(); - e2 = (e2 = (e2 = (e2 = e2.replace(/(^|[^\\])dddd+/g, "$1" + o2[0])).replace(/(^|[^\\])ddd/g, "$1" + n2[0])).replace(/(^|[^\\])dd/g, "$1" + l2(d2))).replace(/(^|[^\\])d/g, "$1" + d2); - var g2 = a2 ? t3.getUTCHours() : t3.getHours(), p2 = g2 > 12 ? g2 - 12 : 0 === g2 ? 12 : g2; - e2 = (e2 = (e2 = (e2 = e2.replace(/(^|[^\\])HH+/g, "$1" + l2(g2))).replace(/(^|[^\\])H/g, "$1" + g2)).replace(/(^|[^\\])hh+/g, "$1" + l2(p2))).replace(/(^|[^\\])h/g, "$1" + p2); - var f2 = a2 ? t3.getUTCMinutes() : t3.getMinutes(); - e2 = (e2 = e2.replace(/(^|[^\\])mm+/g, "$1" + l2(f2))).replace(/(^|[^\\])m/g, "$1" + f2); - var x2 = a2 ? t3.getUTCSeconds() : t3.getSeconds(); - e2 = (e2 = e2.replace(/(^|[^\\])ss+/g, "$1" + l2(x2))).replace(/(^|[^\\])s/g, "$1" + x2); - var b2 = a2 ? t3.getUTCMilliseconds() : t3.getMilliseconds(); - e2 = e2.replace(/(^|[^\\])fff+/g, "$1" + l2(b2, 3)), b2 = Math.round(b2 / 10), e2 = e2.replace(/(^|[^\\])ff/g, "$1" + l2(b2)), b2 = Math.round(b2 / 10); - var v2 = g2 < 12 ? "AM" : "PM"; - e2 = (e2 = (e2 = e2.replace(/(^|[^\\])f/g, "$1" + b2)).replace(/(^|[^\\])TT+/g, "$1" + v2)).replace(/(^|[^\\])T/g, "$1" + v2.charAt(0)); - var m2 = v2.toLowerCase(); - e2 = (e2 = e2.replace(/(^|[^\\])tt+/g, "$1" + m2)).replace(/(^|[^\\])t/g, "$1" + m2.charAt(0)); - var y2 = -t3.getTimezoneOffset(), w2 = a2 || !y2 ? "Z" : y2 > 0 ? "+" : "-"; - if (!a2) { - var k2 = (y2 = Math.abs(y2)) % 60; - w2 += l2(Math.floor(y2 / 60)) + ":" + l2(k2); - } - e2 = e2.replace(/(^|[^\\])K/g, "$1" + w2); - var A2 = (a2 ? t3.getUTCDay() : t3.getDay()) + 1; - return e2 = (e2 = (e2 = (e2 = (e2 = e2.replace(new RegExp(o2[0], "g"), o2[A2])).replace(new RegExp(n2[0], "g"), n2[A2])).replace(new RegExp(s2[0], "g"), s2[c2])).replace(new RegExp(r2[0], "g"), r2[c2])).replace(/\\(.)/g, "$1"); - } }, { key: "getTimeUnitsfromTimestamp", value: function(t3, e2, i2) { - var a2 = this.w; - void 0 !== a2.config.xaxis.min && (t3 = a2.config.xaxis.min), void 0 !== a2.config.xaxis.max && (e2 = a2.config.xaxis.max); - var s2 = this.getDate(t3), r2 = this.getDate(e2), o2 = this.formatDate(s2, "yyyy MM dd HH mm ss fff").split(" "), n2 = this.formatDate(r2, "yyyy MM dd HH mm ss fff").split(" "); - return { minMillisecond: parseInt(o2[6], 10), maxMillisecond: parseInt(n2[6], 10), minSecond: parseInt(o2[5], 10), maxSecond: parseInt(n2[5], 10), minMinute: parseInt(o2[4], 10), maxMinute: parseInt(n2[4], 10), minHour: parseInt(o2[3], 10), maxHour: parseInt(n2[3], 10), minDate: parseInt(o2[2], 10), maxDate: parseInt(n2[2], 10), minMonth: parseInt(o2[1], 10) - 1, maxMonth: parseInt(n2[1], 10) - 1, minYear: parseInt(o2[0], 10), maxYear: parseInt(n2[0], 10) }; - } }, { key: "isLeapYear", value: function(t3) { - return t3 % 4 == 0 && t3 % 100 != 0 || t3 % 400 == 0; - } }, { key: "calculcateLastDaysOfMonth", value: function(t3, e2, i2) { - return this.determineDaysOfMonths(t3, e2) - i2; - } }, { key: "determineDaysOfYear", value: function(t3) { - var e2 = 365; - return this.isLeapYear(t3) && (e2 = 366), e2; - } }, { key: "determineRemainingDaysOfYear", value: function(t3, e2, i2) { - var a2 = this.daysCntOfYear[e2] + i2; - return e2 > 1 && this.isLeapYear() && a2++, a2; - } }, { key: "determineDaysOfMonths", value: function(t3, e2) { - var i2 = 30; - switch (t3 = x.monthMod(t3), true) { - case this.months30.indexOf(t3) > -1: - 2 === t3 && (i2 = this.isLeapYear(e2) ? 29 : 28); - break; - case this.months31.indexOf(t3) > -1: - default: - i2 = 31; - } - return i2; - } }]), t2; - }(); - var M = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.tooltipKeyFormat = "dd MMM"; - } - return r(t2, [{ key: "xLabelFormat", value: function(t3, e2, i2, a2) { - var s2 = this.w; - if ("datetime" === s2.config.xaxis.type && void 0 === s2.config.xaxis.labels.formatter && void 0 === s2.config.tooltip.x.formatter) { - var r2 = new I(this.ctx); - return r2.formatDate(r2.getDate(e2), s2.config.tooltip.x.format); - } - return t3(e2, i2, a2); - } }, { key: "defaultGeneralFormatter", value: function(t3) { - return Array.isArray(t3) ? t3.map(function(t4) { - return t4; - }) : t3; - } }, { key: "defaultYFormatter", value: function(t3, e2, i2) { - var a2 = this.w; - return x.isNumber(t3) && (t3 = 0 !== a2.globals.yValueDecimal ? t3.toFixed(void 0 !== e2.decimalsInFloat ? e2.decimalsInFloat : a2.globals.yValueDecimal) : a2.globals.maxYArr[i2] - a2.globals.minYArr[i2] < 5 ? t3.toFixed(1) : t3.toFixed(0)), t3; - } }, { key: "setLabelFormatters", value: function() { - var t3 = this, e2 = this.w; - return e2.globals.xaxisTooltipFormatter = function(e3) { - return t3.defaultGeneralFormatter(e3); - }, e2.globals.ttKeyFormatter = function(e3) { - return t3.defaultGeneralFormatter(e3); - }, e2.globals.ttZFormatter = function(t4) { - return t4; - }, e2.globals.legendFormatter = function(e3) { - return t3.defaultGeneralFormatter(e3); - }, void 0 !== e2.config.xaxis.labels.formatter ? e2.globals.xLabelFormatter = e2.config.xaxis.labels.formatter : e2.globals.xLabelFormatter = function(t4) { - if (x.isNumber(t4)) { - if (!e2.config.xaxis.convertedCatToNumeric && "numeric" === e2.config.xaxis.type) { - if (x.isNumber(e2.config.xaxis.decimalsInFloat)) - return t4.toFixed(e2.config.xaxis.decimalsInFloat); - var i2 = e2.globals.maxX - e2.globals.minX; - return i2 > 0 && i2 < 100 ? t4.toFixed(1) : t4.toFixed(0); - } - if (e2.globals.isBarHorizontal) { - if (e2.globals.maxY - e2.globals.minYArr < 4) - return t4.toFixed(1); - } - return t4.toFixed(0); - } - return t4; - }, "function" == typeof e2.config.tooltip.x.formatter ? e2.globals.ttKeyFormatter = e2.config.tooltip.x.formatter : e2.globals.ttKeyFormatter = e2.globals.xLabelFormatter, "function" == typeof e2.config.xaxis.tooltip.formatter && (e2.globals.xaxisTooltipFormatter = e2.config.xaxis.tooltip.formatter), (Array.isArray(e2.config.tooltip.y) || void 0 !== e2.config.tooltip.y.formatter) && (e2.globals.ttVal = e2.config.tooltip.y), void 0 !== e2.config.tooltip.z.formatter && (e2.globals.ttZFormatter = e2.config.tooltip.z.formatter), void 0 !== e2.config.legend.formatter && (e2.globals.legendFormatter = e2.config.legend.formatter), e2.config.yaxis.forEach(function(i2, a2) { - void 0 !== i2.labels.formatter ? e2.globals.yLabelFormatters[a2] = i2.labels.formatter : e2.globals.yLabelFormatters[a2] = function(s2) { - return e2.globals.xyCharts ? Array.isArray(s2) ? s2.map(function(e3) { - return t3.defaultYFormatter(e3, i2, a2); - }) : t3.defaultYFormatter(s2, i2, a2) : s2; - }; - }), e2.globals; - } }, { key: "heatmapLabelFormatters", value: function() { - var t3 = this.w; - if ("heatmap" === t3.config.chart.type) { - t3.globals.yAxisScale[0].result = t3.globals.seriesNames.slice(); - var e2 = t3.globals.seriesNames.reduce(function(t4, e3) { - return t4.length > e3.length ? t4 : e3; - }, 0); - t3.globals.yAxisScale[0].niceMax = e2, t3.globals.yAxisScale[0].niceMin = e2; - } - } }]), t2; - }(); - var T = function(t2) { - var e2, i2 = t2.isTimeline, a2 = t2.ctx, s2 = t2.seriesIndex, r2 = t2.dataPointIndex, o2 = t2.y1, n2 = t2.y2, l2 = t2.w, h2 = l2.globals.seriesRangeStart[s2][r2], c2 = l2.globals.seriesRangeEnd[s2][r2], d2 = l2.globals.labels[r2], g2 = l2.config.series[s2].name ? l2.config.series[s2].name : "", u2 = l2.globals.ttKeyFormatter, p2 = l2.config.tooltip.y.title.formatter, f2 = { w: l2, seriesIndex: s2, dataPointIndex: r2, start: h2, end: c2 }; - ("function" == typeof p2 && (g2 = p2(g2, f2)), null !== (e2 = l2.config.series[s2].data[r2]) && void 0 !== e2 && e2.x && (d2 = l2.config.series[s2].data[r2].x), i2) || "datetime" === l2.config.xaxis.type && (d2 = new M(a2).xLabelFormat(l2.globals.ttKeyFormatter, d2, d2, { i: void 0, dateFormatter: new I(a2).formatDate, w: l2 })); - "function" == typeof u2 && (d2 = u2(d2, f2)), Number.isFinite(o2) && Number.isFinite(n2) && (h2 = o2, c2 = n2); - var x2 = "", b2 = "", v2 = l2.globals.colors[s2]; - if (void 0 === l2.config.tooltip.x.formatter) - if ("datetime" === l2.config.xaxis.type) { - var m2 = new I(a2); - x2 = m2.formatDate(m2.getDate(h2), l2.config.tooltip.x.format), b2 = m2.formatDate(m2.getDate(c2), l2.config.tooltip.x.format); - } else - x2 = h2, b2 = c2; - else - x2 = l2.config.tooltip.x.formatter(h2), b2 = l2.config.tooltip.x.formatter(c2); - return { start: h2, end: c2, startVal: x2, endVal: b2, ylabel: d2, color: v2, seriesName: g2 }; - }; - var z = function(t2) { - var e2 = t2.color, i2 = t2.seriesName, a2 = t2.ylabel, s2 = t2.start, r2 = t2.end, o2 = t2.seriesIndex, n2 = t2.dataPointIndex, l2 = t2.ctx.tooltip.tooltipLabels.getFormatters(o2); - s2 = l2.yLbFormatter(s2), r2 = l2.yLbFormatter(r2); - var h2 = l2.yLbFormatter(t2.w.globals.series[o2][n2]), c2 = '\n '.concat(s2, '\n - \n ').concat(r2, "\n "); - return '
' + (i2 || "") + '
' + a2 + ": " + (t2.w.globals.comboCharts ? "rangeArea" === t2.w.config.series[o2].type || "rangeBar" === t2.w.config.series[o2].type ? c2 : "".concat(h2, "") : c2) + "
"; - }; - var X = function() { - function t2(e2) { - a(this, t2), this.opts = e2; - } - return r(t2, [{ key: "hideYAxis", value: function() { - this.opts.yaxis[0].show = false, this.opts.yaxis[0].title.text = "", this.opts.yaxis[0].axisBorder.show = false, this.opts.yaxis[0].axisTicks.show = false, this.opts.yaxis[0].floating = true; - } }, { key: "line", value: function() { - return { chart: { animations: { easing: "swing" } }, dataLabels: { enabled: false }, stroke: { width: 5, curve: "straight" }, markers: { size: 0, hover: { sizeOffset: 6 } }, xaxis: { crosshairs: { width: 1 } } }; - } }, { key: "sparkline", value: function(t3) { - this.hideYAxis(); - return x.extend(t3, { grid: { show: false, padding: { left: 0, right: 0, top: 0, bottom: 0 } }, legend: { show: false }, xaxis: { labels: { show: false }, tooltip: { enabled: false }, axisBorder: { show: false }, axisTicks: { show: false } }, chart: { toolbar: { show: false }, zoom: { enabled: false } }, dataLabels: { enabled: false } }); - } }, { key: "bar", value: function() { - return { chart: { stacked: false, animations: { easing: "swing" } }, plotOptions: { bar: { dataLabels: { position: "center" } } }, dataLabels: { style: { colors: ["#fff"] }, background: { enabled: false } }, stroke: { width: 0, lineCap: "round" }, fill: { opacity: 0.85 }, legend: { markers: { shape: "square", radius: 2, size: 8 } }, tooltip: { shared: false, intersect: true }, xaxis: { tooltip: { enabled: false }, tickPlacement: "between", crosshairs: { width: "barWidth", position: "back", fill: { type: "gradient" }, dropShadow: { enabled: false }, stroke: { width: 0 } } } }; - } }, { key: "funnel", value: function() { - return this.hideYAxis(), e(e({}, this.bar()), {}, { chart: { animations: { easing: "linear", speed: 800, animateGradually: { enabled: false } } }, plotOptions: { bar: { horizontal: true, borderRadiusApplication: "around", borderRadius: 0, dataLabels: { position: "center" } } }, grid: { show: false, padding: { left: 0, right: 0 } }, xaxis: { labels: { show: false }, tooltip: { enabled: false }, axisBorder: { show: false }, axisTicks: { show: false } } }); - } }, { key: "candlestick", value: function() { - var t3 = this; - return { stroke: { width: 1, colors: ["#333"] }, fill: { opacity: 1 }, dataLabels: { enabled: false }, tooltip: { shared: true, custom: function(e2) { - var i2 = e2.seriesIndex, a2 = e2.dataPointIndex, s2 = e2.w; - return t3._getBoxTooltip(s2, i2, a2, ["Open", "High", "", "Low", "Close"], "candlestick"); - } }, states: { active: { filter: { type: "none" } } }, xaxis: { crosshairs: { width: 1 } } }; - } }, { key: "boxPlot", value: function() { - var t3 = this; - return { chart: { animations: { dynamicAnimation: { enabled: false } } }, stroke: { width: 1, colors: ["#24292e"] }, dataLabels: { enabled: false }, tooltip: { shared: true, custom: function(e2) { - var i2 = e2.seriesIndex, a2 = e2.dataPointIndex, s2 = e2.w; - return t3._getBoxTooltip(s2, i2, a2, ["Minimum", "Q1", "Median", "Q3", "Maximum"], "boxPlot"); - } }, markers: { size: 5, strokeWidth: 1, strokeColors: "#111" }, xaxis: { crosshairs: { width: 1 } } }; - } }, { key: "rangeBar", value: function() { - return { chart: { animations: { animateGradually: false } }, stroke: { width: 0, lineCap: "square" }, plotOptions: { bar: { borderRadius: 0, dataLabels: { position: "center" } } }, dataLabels: { enabled: false, formatter: function(t3, e2) { - e2.ctx; - var i2 = e2.seriesIndex, a2 = e2.dataPointIndex, s2 = e2.w, r2 = function() { - var t4 = s2.globals.seriesRangeStart[i2][a2]; - return s2.globals.seriesRangeEnd[i2][a2] - t4; - }; - return s2.globals.comboCharts ? "rangeBar" === s2.config.series[i2].type || "rangeArea" === s2.config.series[i2].type ? r2() : t3 : r2(); - }, background: { enabled: false }, style: { colors: ["#fff"] } }, markers: { size: 10 }, tooltip: { shared: false, followCursor: true, custom: function(t3) { - return t3.w.config.plotOptions && t3.w.config.plotOptions.bar && t3.w.config.plotOptions.bar.horizontal ? function(t4) { - var i2 = T(e(e({}, t4), {}, { isTimeline: true })), a2 = i2.color, s2 = i2.seriesName, r2 = i2.ylabel, o2 = i2.startVal, n2 = i2.endVal; - return z(e(e({}, t4), {}, { color: a2, seriesName: s2, ylabel: r2, start: o2, end: n2 })); - }(t3) : function(t4) { - var i2 = T(t4), a2 = i2.color, s2 = i2.seriesName, r2 = i2.ylabel, o2 = i2.start, n2 = i2.end; - return z(e(e({}, t4), {}, { color: a2, seriesName: s2, ylabel: r2, start: o2, end: n2 })); - }(t3); - } }, xaxis: { tickPlacement: "between", tooltip: { enabled: false }, crosshairs: { stroke: { width: 0 } } } }; - } }, { key: "dumbbell", value: function(t3) { - var e2, i2; - return null !== (e2 = t3.plotOptions.bar) && void 0 !== e2 && e2.barHeight || (t3.plotOptions.bar.barHeight = 2), null !== (i2 = t3.plotOptions.bar) && void 0 !== i2 && i2.columnWidth || (t3.plotOptions.bar.columnWidth = 2), t3; - } }, { key: "area", value: function() { - return { stroke: { width: 4, fill: { type: "solid", gradient: { inverseColors: false, shade: "light", type: "vertical", opacityFrom: 0.65, opacityTo: 0.5, stops: [0, 100, 100] } } }, fill: { type: "gradient", gradient: { inverseColors: false, shade: "light", type: "vertical", opacityFrom: 0.65, opacityTo: 0.5, stops: [0, 100, 100] } }, markers: { size: 0, hover: { sizeOffset: 6 } }, tooltip: { followCursor: false } }; - } }, { key: "rangeArea", value: function() { - return { stroke: { curve: "straight", width: 0 }, fill: { type: "solid", opacity: 0.6 }, markers: { size: 0 }, states: { hover: { filter: { type: "none" } }, active: { filter: { type: "none" } } }, tooltip: { intersect: false, shared: true, followCursor: true, custom: function(t3) { - return function(t4) { - var i2 = T(t4), a2 = i2.color, s2 = i2.seriesName, r2 = i2.ylabel, o2 = i2.start, n2 = i2.end; - return z(e(e({}, t4), {}, { color: a2, seriesName: s2, ylabel: r2, start: o2, end: n2 })); - }(t3); - } } }; - } }, { key: "brush", value: function(t3) { - return x.extend(t3, { chart: { toolbar: { autoSelected: "selection", show: false }, zoom: { enabled: false } }, dataLabels: { enabled: false }, stroke: { width: 1 }, tooltip: { enabled: false }, xaxis: { tooltip: { enabled: false } } }); - } }, { key: "stacked100", value: function(t3) { - t3.dataLabels = t3.dataLabels || {}, t3.dataLabels.formatter = t3.dataLabels.formatter || void 0; - var e2 = t3.dataLabels.formatter; - return t3.yaxis.forEach(function(e3, i2) { - t3.yaxis[i2].min = 0, t3.yaxis[i2].max = 100; - }), "bar" === t3.chart.type && (t3.dataLabels.formatter = e2 || function(t4) { - return "number" == typeof t4 && t4 ? t4.toFixed(0) + "%" : t4; - }), t3; - } }, { key: "stackedBars", value: function() { - var t3 = this.bar(); - return e(e({}, t3), {}, { plotOptions: e(e({}, t3.plotOptions), {}, { bar: e(e({}, t3.plotOptions.bar), {}, { borderRadiusApplication: "end", borderRadiusWhenStacked: "last" }) }) }); - } }, { key: "convertCatToNumeric", value: function(t3) { - return t3.xaxis.convertedCatToNumeric = true, t3; - } }, { key: "convertCatToNumericXaxis", value: function(t3, e2, i2) { - t3.xaxis.type = "numeric", t3.xaxis.labels = t3.xaxis.labels || {}, t3.xaxis.labels.formatter = t3.xaxis.labels.formatter || function(t4) { - return x.isNumber(t4) ? Math.floor(t4) : t4; - }; - var a2 = t3.xaxis.labels.formatter, s2 = t3.xaxis.categories && t3.xaxis.categories.length ? t3.xaxis.categories : t3.labels; - return i2 && i2.length && (s2 = i2.map(function(t4) { - return Array.isArray(t4) ? t4 : String(t4); - })), s2 && s2.length && (t3.xaxis.labels.formatter = function(t4) { - return x.isNumber(t4) ? a2(s2[Math.floor(t4) - 1]) : a2(t4); - }), t3.xaxis.categories = [], t3.labels = [], t3.xaxis.tickAmount = t3.xaxis.tickAmount || "dataPoints", t3; - } }, { key: "bubble", value: function() { - return { dataLabels: { style: { colors: ["#fff"] } }, tooltip: { shared: false, intersect: true }, xaxis: { crosshairs: { width: 0 } }, fill: { type: "solid", gradient: { shade: "light", inverse: true, shadeIntensity: 0.55, opacityFrom: 0.4, opacityTo: 0.8 } } }; - } }, { key: "scatter", value: function() { - return { dataLabels: { enabled: false }, tooltip: { shared: false, intersect: true }, markers: { size: 6, strokeWidth: 1, hover: { sizeOffset: 2 } } }; - } }, { key: "heatmap", value: function() { - return { chart: { stacked: false }, fill: { opacity: 1 }, dataLabels: { style: { colors: ["#fff"] } }, stroke: { colors: ["#fff"] }, tooltip: { followCursor: true, marker: { show: false }, x: { show: false } }, legend: { position: "top", markers: { shape: "square", size: 10, offsetY: 2 } }, grid: { padding: { right: 20 } } }; - } }, { key: "treemap", value: function() { - return { chart: { zoom: { enabled: false } }, dataLabels: { style: { fontSize: 14, fontWeight: 600, colors: ["#fff"] } }, stroke: { show: true, width: 2, colors: ["#fff"] }, legend: { show: false }, fill: { gradient: { stops: [0, 100] } }, tooltip: { followCursor: true, x: { show: false } }, grid: { padding: { left: 0, right: 0 } }, xaxis: { crosshairs: { show: false }, tooltip: { enabled: false } } }; - } }, { key: "pie", value: function() { - return { chart: { toolbar: { show: false } }, plotOptions: { pie: { donut: { labels: { show: false } } } }, dataLabels: { formatter: function(t3) { - return t3.toFixed(1) + "%"; - }, style: { colors: ["#fff"] }, background: { enabled: false }, dropShadow: { enabled: true } }, stroke: { colors: ["#fff"] }, fill: { opacity: 1, gradient: { shade: "light", stops: [0, 100] } }, tooltip: { theme: "dark", fillSeriesColor: true }, legend: { position: "right" } }; - } }, { key: "donut", value: function() { - return { chart: { toolbar: { show: false } }, dataLabels: { formatter: function(t3) { - return t3.toFixed(1) + "%"; - }, style: { colors: ["#fff"] }, background: { enabled: false }, dropShadow: { enabled: true } }, stroke: { colors: ["#fff"] }, fill: { opacity: 1, gradient: { shade: "light", shadeIntensity: 0.35, stops: [80, 100], opacityFrom: 1, opacityTo: 1 } }, tooltip: { theme: "dark", fillSeriesColor: true }, legend: { position: "right" } }; - } }, { key: "polarArea", value: function() { - return this.opts.yaxis[0].tickAmount = this.opts.yaxis[0].tickAmount ? this.opts.yaxis[0].tickAmount : 6, { chart: { toolbar: { show: false } }, dataLabels: { formatter: function(t3) { - return t3.toFixed(1) + "%"; - }, enabled: false }, stroke: { show: true, width: 2 }, fill: { opacity: 0.7 }, tooltip: { theme: "dark", fillSeriesColor: true }, legend: { position: "right" } }; - } }, { key: "radar", value: function() { - return this.opts.yaxis[0].labels.offsetY = this.opts.yaxis[0].labels.offsetY ? this.opts.yaxis[0].labels.offsetY : 6, { dataLabels: { enabled: false, style: { fontSize: "11px" } }, stroke: { width: 2 }, markers: { size: 3, strokeWidth: 1, strokeOpacity: 1 }, fill: { opacity: 0.2 }, tooltip: { shared: false, intersect: true, followCursor: true }, grid: { show: false }, xaxis: { labels: { formatter: function(t3) { - return t3; - }, style: { colors: ["#a8a8a8"], fontSize: "11px" } }, tooltip: { enabled: false }, crosshairs: { show: false } } }; - } }, { key: "radialBar", value: function() { - return { chart: { animations: { dynamicAnimation: { enabled: true, speed: 800 } }, toolbar: { show: false } }, fill: { gradient: { shade: "dark", shadeIntensity: 0.4, inverseColors: false, type: "diagonal2", opacityFrom: 1, opacityTo: 1, stops: [70, 98, 100] } }, legend: { show: false, position: "right" }, tooltip: { enabled: false, fillSeriesColor: true } }; - } }, { key: "_getBoxTooltip", value: function(t3, e2, i2, a2, s2) { - var r2 = t3.globals.seriesCandleO[e2][i2], o2 = t3.globals.seriesCandleH[e2][i2], n2 = t3.globals.seriesCandleM[e2][i2], l2 = t3.globals.seriesCandleL[e2][i2], h2 = t3.globals.seriesCandleC[e2][i2]; - return t3.config.series[e2].type && t3.config.series[e2].type !== s2 ? '
\n '.concat(t3.config.series[e2].name ? t3.config.series[e2].name : "series-" + (e2 + 1), ": ").concat(t3.globals.series[e2][i2], "\n
") : '
') + "
".concat(a2[0], ': ') + r2 + "
" + "
".concat(a2[1], ': ') + o2 + "
" + (n2 ? "
".concat(a2[2], ': ') + n2 + "
" : "") + "
".concat(a2[3], ': ') + l2 + "
" + "
".concat(a2[4], ': ') + h2 + "
"; - } }]), t2; - }(); - var E = function() { - function t2(e2) { - a(this, t2), this.opts = e2; - } - return r(t2, [{ key: "init", value: function(t3) { - var e2 = t3.responsiveOverride, a2 = this.opts, s2 = new L(), r2 = new X(a2); - this.chartType = a2.chart.type, a2 = this.extendYAxis(a2), a2 = this.extendAnnotations(a2); - var o2 = s2.init(), n2 = {}; - if (a2 && "object" === i(a2)) { - var l2, h2, c2, d2, g2, u2, p2, f2, b2, v2, m2 = {}; - m2 = -1 !== ["line", "area", "bar", "candlestick", "boxPlot", "rangeBar", "rangeArea", "bubble", "scatter", "heatmap", "treemap", "pie", "polarArea", "donut", "radar", "radialBar"].indexOf(a2.chart.type) ? r2[a2.chart.type]() : r2.line(), null !== (l2 = a2.plotOptions) && void 0 !== l2 && null !== (h2 = l2.bar) && void 0 !== h2 && h2.isFunnel && (m2 = r2.funnel()), a2.chart.stacked && "bar" === a2.chart.type && (m2 = r2.stackedBars()), null !== (c2 = a2.chart.brush) && void 0 !== c2 && c2.enabled && (m2 = r2.brush(m2)), a2.chart.stacked && "100%" === a2.chart.stackType && (a2 = r2.stacked100(a2)), null !== (d2 = a2.plotOptions) && void 0 !== d2 && null !== (g2 = d2.bar) && void 0 !== g2 && g2.isDumbbell && (a2 = r2.dumbbell(a2)), "monotoneCubic" === (null === (u2 = a2) || void 0 === u2 || null === (p2 = u2.stroke) || void 0 === p2 ? void 0 : p2.curve) && (a2.stroke.curve = "smooth"), this.checkForDarkTheme(window.Apex), this.checkForDarkTheme(a2), a2.xaxis = a2.xaxis || window.Apex.xaxis || {}, e2 || (a2.xaxis.convertedCatToNumeric = false), (null !== (f2 = (a2 = this.checkForCatToNumericXAxis(this.chartType, m2, a2)).chart.sparkline) && void 0 !== f2 && f2.enabled || null !== (b2 = window.Apex.chart) && void 0 !== b2 && null !== (v2 = b2.sparkline) && void 0 !== v2 && v2.enabled) && (m2 = r2.sparkline(m2)), n2 = x.extend(o2, m2); - } - var y2 = x.extend(n2, window.Apex); - return o2 = x.extend(y2, a2), o2 = this.handleUserInputErrors(o2); - } }, { key: "checkForCatToNumericXAxis", value: function(t3, e2, i2) { - var a2, s2, r2 = new X(i2), o2 = ("bar" === t3 || "boxPlot" === t3) && (null === (a2 = i2.plotOptions) || void 0 === a2 || null === (s2 = a2.bar) || void 0 === s2 ? void 0 : s2.horizontal), n2 = "pie" === t3 || "polarArea" === t3 || "donut" === t3 || "radar" === t3 || "radialBar" === t3 || "heatmap" === t3, l2 = "datetime" !== i2.xaxis.type && "numeric" !== i2.xaxis.type, h2 = i2.xaxis.tickPlacement ? i2.xaxis.tickPlacement : e2.xaxis && e2.xaxis.tickPlacement; - return o2 || n2 || !l2 || "between" === h2 || (i2 = r2.convertCatToNumeric(i2)), i2; - } }, { key: "extendYAxis", value: function(t3, e2) { - var i2 = new L(); - (void 0 === t3.yaxis || !t3.yaxis || Array.isArray(t3.yaxis) && 0 === t3.yaxis.length) && (t3.yaxis = {}), t3.yaxis.constructor !== Array && window.Apex.yaxis && window.Apex.yaxis.constructor !== Array && (t3.yaxis = x.extend(t3.yaxis, window.Apex.yaxis)), t3.yaxis.constructor !== Array ? t3.yaxis = [x.extend(i2.yAxis, t3.yaxis)] : t3.yaxis = x.extendArray(t3.yaxis, i2.yAxis); - var a2 = false; - t3.yaxis.forEach(function(t4) { - t4.logarithmic && (a2 = true); - }); - var s2 = t3.series; - return e2 && !s2 && (s2 = e2.config.series), a2 && s2.length !== t3.yaxis.length && s2.length && (t3.yaxis = s2.map(function(e3, a3) { - if (e3.name || (s2[a3].name = "series-".concat(a3 + 1)), t3.yaxis[a3]) - return t3.yaxis[a3].seriesName = s2[a3].name, t3.yaxis[a3]; - var r2 = x.extend(i2.yAxis, t3.yaxis[0]); - return r2.show = false, r2; - })), a2 && s2.length > 1 && s2.length !== t3.yaxis.length && console.warn("A multi-series logarithmic chart should have equal number of series and y-axes"), t3; - } }, { key: "extendAnnotations", value: function(t3) { - return void 0 === t3.annotations && (t3.annotations = {}, t3.annotations.yaxis = [], t3.annotations.xaxis = [], t3.annotations.points = []), t3 = this.extendYAxisAnnotations(t3), t3 = this.extendXAxisAnnotations(t3), t3 = this.extendPointAnnotations(t3); - } }, { key: "extendYAxisAnnotations", value: function(t3) { - var e2 = new L(); - return t3.annotations.yaxis = x.extendArray(void 0 !== t3.annotations.yaxis ? t3.annotations.yaxis : [], e2.yAxisAnnotation), t3; - } }, { key: "extendXAxisAnnotations", value: function(t3) { - var e2 = new L(); - return t3.annotations.xaxis = x.extendArray(void 0 !== t3.annotations.xaxis ? t3.annotations.xaxis : [], e2.xAxisAnnotation), t3; - } }, { key: "extendPointAnnotations", value: function(t3) { - var e2 = new L(); - return t3.annotations.points = x.extendArray(void 0 !== t3.annotations.points ? t3.annotations.points : [], e2.pointAnnotation), t3; - } }, { key: "checkForDarkTheme", value: function(t3) { - t3.theme && "dark" === t3.theme.mode && (t3.tooltip || (t3.tooltip = {}), "light" !== t3.tooltip.theme && (t3.tooltip.theme = "dark"), t3.chart.foreColor || (t3.chart.foreColor = "#f6f7f8"), t3.chart.background || (t3.chart.background = "#424242"), t3.theme.palette || (t3.theme.palette = "palette4")); - } }, { key: "handleUserInputErrors", value: function(t3) { - var e2 = t3; - if (e2.tooltip.shared && e2.tooltip.intersect) - throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false."); - if ("bar" === e2.chart.type && e2.plotOptions.bar.horizontal) { - if (e2.yaxis.length > 1) - throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false"); - e2.yaxis[0].reversed && (e2.yaxis[0].opposite = true), e2.xaxis.tooltip.enabled = false, e2.yaxis[0].tooltip.enabled = false, e2.chart.zoom.enabled = false; - } - return "bar" !== e2.chart.type && "rangeBar" !== e2.chart.type || e2.tooltip.shared && "barWidth" === e2.xaxis.crosshairs.width && e2.series.length > 1 && (e2.xaxis.crosshairs.width = "tickWidth"), "candlestick" !== e2.chart.type && "boxPlot" !== e2.chart.type || e2.yaxis[0].reversed && (console.warn("Reversed y-axis in ".concat(e2.chart.type, " chart is not supported.")), e2.yaxis[0].reversed = false), e2; - } }]), t2; - }(); - var Y = function() { - function t2() { - a(this, t2); - } - return r(t2, [{ key: "initGlobalVars", value: function(t3) { - t3.series = [], t3.seriesCandleO = [], t3.seriesCandleH = [], t3.seriesCandleM = [], t3.seriesCandleL = [], t3.seriesCandleC = [], t3.seriesRangeStart = [], t3.seriesRangeEnd = [], t3.seriesRange = [], t3.seriesPercent = [], t3.seriesGoals = [], t3.seriesX = [], t3.seriesZ = [], t3.seriesNames = [], t3.seriesTotals = [], t3.seriesLog = [], t3.seriesColors = [], t3.stackedSeriesTotals = [], t3.seriesXvalues = [], t3.seriesYvalues = [], t3.labels = [], t3.hasXaxisGroups = false, t3.groups = [], t3.hasSeriesGroups = false, t3.seriesGroups = [], t3.categoryLabels = [], t3.timescaleLabels = [], t3.noLabelsProvided = false, t3.resizeTimer = null, t3.selectionResizeTimer = null, t3.delayedElements = [], t3.pointsArray = [], t3.dataLabelsRects = [], t3.isXNumeric = false, t3.skipLastTimelinelabel = false, t3.skipFirstTimelinelabel = false, t3.isDataXYZ = false, t3.isMultiLineX = false, t3.isMultipleYAxis = false, t3.maxY = -Number.MAX_VALUE, t3.minY = Number.MIN_VALUE, t3.minYArr = [], t3.maxYArr = [], t3.maxX = -Number.MAX_VALUE, t3.minX = Number.MAX_VALUE, t3.initialMaxX = -Number.MAX_VALUE, t3.initialMinX = Number.MAX_VALUE, t3.maxDate = 0, t3.minDate = Number.MAX_VALUE, t3.minZ = Number.MAX_VALUE, t3.maxZ = -Number.MAX_VALUE, t3.minXDiff = Number.MAX_VALUE, t3.yAxisScale = [], t3.xAxisScale = null, t3.xAxisTicksPositions = [], t3.yLabelsCoords = [], t3.yTitleCoords = [], t3.barPadForNumericAxis = 0, t3.padHorizontal = 0, t3.xRange = 0, t3.yRange = [], t3.zRange = 0, t3.dataPoints = 0, t3.xTickAmount = 0; - } }, { key: "globalVars", value: function(t3) { - return { chartID: null, cuid: null, events: { beforeMount: [], mounted: [], updated: [], clicked: [], selection: [], dataPointSelection: [], zoomed: [], scrolled: [] }, colors: [], clientX: null, clientY: null, fill: { colors: [] }, stroke: { colors: [] }, dataLabels: { style: { colors: [] } }, radarPolygons: { fill: { colors: [] } }, markers: { colors: [], size: t3.markers.size, largestSize: 0 }, animationEnded: false, isTouchDevice: "ontouchstart" in window || navigator.msMaxTouchPoints, isDirty: false, isExecCalled: false, initialConfig: null, initialSeries: [], lastXAxis: [], lastYAxis: [], columnSeries: null, labels: [], timescaleLabels: [], noLabelsProvided: false, allSeriesCollapsed: false, collapsedSeries: [], collapsedSeriesIndices: [], ancillaryCollapsedSeries: [], ancillaryCollapsedSeriesIndices: [], risingSeries: [], dataFormatXNumeric: false, capturedSeriesIndex: -1, capturedDataPointIndex: -1, selectedDataPoints: [], goldenPadding: 35, invalidLogScale: false, ignoreYAxisIndexes: [], yAxisSameScaleIndices: [], maxValsInArrayIndex: 0, radialSize: 0, selection: void 0, zoomEnabled: "zoom" === t3.chart.toolbar.autoSelected && t3.chart.toolbar.tools.zoom && t3.chart.zoom.enabled, panEnabled: "pan" === t3.chart.toolbar.autoSelected && t3.chart.toolbar.tools.pan, selectionEnabled: "selection" === t3.chart.toolbar.autoSelected && t3.chart.toolbar.tools.selection, yaxis: null, mousedown: false, lastClientPosition: {}, visibleXRange: void 0, yValueDecimal: 0, total: 0, SVGNS: "http://www.w3.org/2000/svg", svgWidth: 0, svgHeight: 0, noData: false, locale: {}, dom: {}, memory: { methodsToExec: [] }, shouldAnimate: true, skipLastTimelinelabel: false, skipFirstTimelinelabel: false, delayedElements: [], axisCharts: true, isDataXYZ: false, resized: false, resizeTimer: null, comboCharts: false, dataChanged: false, previousPaths: [], allSeriesHasEqualX: true, pointsArray: [], dataLabelsRects: [], lastDrawnDataLabelsIndexes: [], hasNullValues: false, easing: null, zoomed: false, gridWidth: 0, gridHeight: 0, rotateXLabels: false, defaultLabels: false, xLabelFormatter: void 0, yLabelFormatters: [], xaxisTooltipFormatter: void 0, ttKeyFormatter: void 0, ttVal: void 0, ttZFormatter: void 0, LINE_HEIGHT_RATIO: 1.618, xAxisLabelsHeight: 0, xAxisGroupLabelsHeight: 0, xAxisLabelsWidth: 0, yAxisLabelsWidth: 0, scaleX: 1, scaleY: 1, translateX: 0, translateY: 0, translateYAxisX: [], yAxisWidths: [], translateXAxisY: 0, translateXAxisX: 0, tooltip: null }; - } }, { key: "init", value: function(t3) { - var e2 = this.globalVars(t3); - return this.initGlobalVars(e2), e2.initialConfig = x.extend({}, t3), e2.initialSeries = x.clone(t3.series), e2.lastXAxis = x.clone(e2.initialConfig.xaxis), e2.lastYAxis = x.clone(e2.initialConfig.yaxis), e2; - } }]), t2; - }(); - var F = function() { - function t2(e2) { - a(this, t2), this.opts = e2; - } - return r(t2, [{ key: "init", value: function() { - var t3 = new E(this.opts).init({ responsiveOverride: false }); - return { config: t3, globals: new Y().init(t3) }; - } }]), t2; - }(); - var R = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.opts = null, this.seriesIndex = 0; - } - return r(t2, [{ key: "clippedImgArea", value: function(t3) { - var e2 = this.w, i2 = e2.config, a2 = parseInt(e2.globals.gridWidth, 10), s2 = parseInt(e2.globals.gridHeight, 10), r2 = a2 > s2 ? a2 : s2, o2 = t3.image, n2 = 0, l2 = 0; - void 0 === t3.width && void 0 === t3.height ? void 0 !== i2.fill.image.width && void 0 !== i2.fill.image.height ? (n2 = i2.fill.image.width + 1, l2 = i2.fill.image.height) : (n2 = r2 + 1, l2 = r2) : (n2 = t3.width, l2 = t3.height); - var h2 = document.createElementNS(e2.globals.SVGNS, "pattern"); - m.setAttrs(h2, { id: t3.patternID, patternUnits: t3.patternUnits ? t3.patternUnits : "userSpaceOnUse", width: n2 + "px", height: l2 + "px" }); - var c2 = document.createElementNS(e2.globals.SVGNS, "image"); - h2.appendChild(c2), c2.setAttributeNS(window.SVG.xlink, "href", o2), m.setAttrs(c2, { x: 0, y: 0, preserveAspectRatio: "none", width: n2 + "px", height: l2 + "px" }), c2.style.opacity = t3.opacity, e2.globals.dom.elDefs.node.appendChild(h2); - } }, { key: "getSeriesIndex", value: function(t3) { - var e2 = this.w, i2 = e2.config.chart.type; - return ("bar" === i2 || "rangeBar" === i2) && e2.config.plotOptions.bar.distributed || "heatmap" === i2 || "treemap" === i2 ? this.seriesIndex = t3.seriesNumber : this.seriesIndex = t3.seriesNumber % e2.globals.series.length, this.seriesIndex; - } }, { key: "fillPath", value: function(t3) { - var e2 = this.w; - this.opts = t3; - var i2, a2, s2, r2 = this.w.config; - this.seriesIndex = this.getSeriesIndex(t3); - var o2 = this.getFillColors()[this.seriesIndex]; - void 0 !== e2.globals.seriesColors[this.seriesIndex] && (o2 = e2.globals.seriesColors[this.seriesIndex]), "function" == typeof o2 && (o2 = o2({ seriesIndex: this.seriesIndex, dataPointIndex: t3.dataPointIndex, value: t3.value, w: e2 })); - var n2 = t3.fillType ? t3.fillType : this.getFillType(this.seriesIndex), l2 = Array.isArray(r2.fill.opacity) ? r2.fill.opacity[this.seriesIndex] : r2.fill.opacity; - t3.color && (o2 = t3.color), o2 || (o2 = "#fff", console.warn("undefined color - ApexCharts")); - var h2 = o2; - if (-1 === o2.indexOf("rgb") ? o2.length < 9 && (h2 = x.hexToRgba(o2, l2)) : o2.indexOf("rgba") > -1 && (l2 = x.getOpacityFromRGBA(o2)), t3.opacity && (l2 = t3.opacity), "pattern" === n2 && (a2 = this.handlePatternFill({ fillConfig: t3.fillConfig, patternFill: a2, fillColor: o2, fillOpacity: l2, defaultColor: h2 })), "gradient" === n2 && (s2 = this.handleGradientFill({ fillConfig: t3.fillConfig, fillColor: o2, fillOpacity: l2, i: this.seriesIndex })), "image" === n2) { - var c2 = r2.fill.image.src, d2 = t3.patternID ? t3.patternID : ""; - this.clippedImgArea({ opacity: l2, image: Array.isArray(c2) ? t3.seriesNumber < c2.length ? c2[t3.seriesNumber] : c2[0] : c2, width: t3.width ? t3.width : void 0, height: t3.height ? t3.height : void 0, patternUnits: t3.patternUnits, patternID: "pattern".concat(e2.globals.cuid).concat(t3.seriesNumber + 1).concat(d2) }), i2 = "url(#pattern".concat(e2.globals.cuid).concat(t3.seriesNumber + 1).concat(d2, ")"); - } else - i2 = "gradient" === n2 ? s2 : "pattern" === n2 ? a2 : h2; - return t3.solid && (i2 = h2), i2; - } }, { key: "getFillType", value: function(t3) { - var e2 = this.w; - return Array.isArray(e2.config.fill.type) ? e2.config.fill.type[t3] : e2.config.fill.type; - } }, { key: "getFillColors", value: function() { - var t3 = this.w, e2 = t3.config, i2 = this.opts, a2 = []; - return t3.globals.comboCharts ? "line" === t3.config.series[this.seriesIndex].type ? Array.isArray(t3.globals.stroke.colors) ? a2 = t3.globals.stroke.colors : a2.push(t3.globals.stroke.colors) : Array.isArray(t3.globals.fill.colors) ? a2 = t3.globals.fill.colors : a2.push(t3.globals.fill.colors) : "line" === e2.chart.type ? Array.isArray(t3.globals.stroke.colors) ? a2 = t3.globals.stroke.colors : a2.push(t3.globals.stroke.colors) : Array.isArray(t3.globals.fill.colors) ? a2 = t3.globals.fill.colors : a2.push(t3.globals.fill.colors), void 0 !== i2.fillColors && (a2 = [], Array.isArray(i2.fillColors) ? a2 = i2.fillColors.slice() : a2.push(i2.fillColors)), a2; - } }, { key: "handlePatternFill", value: function(t3) { - var e2 = t3.fillConfig, i2 = t3.patternFill, a2 = t3.fillColor, s2 = t3.fillOpacity, r2 = t3.defaultColor, o2 = this.w.config.fill; - e2 && (o2 = e2); - var n2 = this.opts, l2 = new m(this.ctx), h2 = Array.isArray(o2.pattern.strokeWidth) ? o2.pattern.strokeWidth[this.seriesIndex] : o2.pattern.strokeWidth, c2 = a2; - Array.isArray(o2.pattern.style) ? i2 = void 0 !== o2.pattern.style[n2.seriesNumber] ? l2.drawPattern(o2.pattern.style[n2.seriesNumber], o2.pattern.width, o2.pattern.height, c2, h2, s2) : r2 : i2 = l2.drawPattern(o2.pattern.style, o2.pattern.width, o2.pattern.height, c2, h2, s2); - return i2; - } }, { key: "handleGradientFill", value: function(t3) { - var i2 = t3.fillColor, a2 = t3.fillOpacity, s2 = t3.fillConfig, r2 = t3.i, o2 = this.w.config.fill; - s2 && (o2 = e(e({}, o2), s2)); - var n2, l2 = this.opts, h2 = new m(this.ctx), c2 = new x(), d2 = o2.gradient.type, g2 = i2, u2 = void 0 === o2.gradient.opacityFrom ? a2 : Array.isArray(o2.gradient.opacityFrom) ? o2.gradient.opacityFrom[r2] : o2.gradient.opacityFrom; - g2.indexOf("rgba") > -1 && (u2 = x.getOpacityFromRGBA(g2)); - var p2 = void 0 === o2.gradient.opacityTo ? a2 : Array.isArray(o2.gradient.opacityTo) ? o2.gradient.opacityTo[r2] : o2.gradient.opacityTo; - if (void 0 === o2.gradient.gradientToColors || 0 === o2.gradient.gradientToColors.length) - n2 = "dark" === o2.gradient.shade ? c2.shadeColor(-1 * parseFloat(o2.gradient.shadeIntensity), i2.indexOf("rgb") > -1 ? x.rgb2hex(i2) : i2) : c2.shadeColor(parseFloat(o2.gradient.shadeIntensity), i2.indexOf("rgb") > -1 ? x.rgb2hex(i2) : i2); - else if (o2.gradient.gradientToColors[l2.seriesNumber]) { - var f2 = o2.gradient.gradientToColors[l2.seriesNumber]; - n2 = f2, f2.indexOf("rgba") > -1 && (p2 = x.getOpacityFromRGBA(f2)); - } else - n2 = i2; - if (o2.gradient.gradientFrom && (g2 = o2.gradient.gradientFrom), o2.gradient.gradientTo && (n2 = o2.gradient.gradientTo), o2.gradient.inverseColors) { - var b2 = g2; - g2 = n2, n2 = b2; - } - return g2.indexOf("rgb") > -1 && (g2 = x.rgb2hex(g2)), n2.indexOf("rgb") > -1 && (n2 = x.rgb2hex(n2)), h2.drawGradient(d2, g2, n2, u2, p2, l2.size, o2.gradient.stops, o2.gradient.colorStops, r2); - } }]), t2; - }(); - var H = function() { - function t2(e2, i2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "setGlobalMarkerSize", value: function() { - var t3 = this.w; - if (t3.globals.markers.size = Array.isArray(t3.config.markers.size) ? t3.config.markers.size : [t3.config.markers.size], t3.globals.markers.size.length > 0) { - if (t3.globals.markers.size.length < t3.globals.series.length + 1) - for (var e2 = 0; e2 <= t3.globals.series.length; e2++) - void 0 === t3.globals.markers.size[e2] && t3.globals.markers.size.push(t3.globals.markers.size[0]); - } else - t3.globals.markers.size = t3.config.series.map(function(e3) { - return t3.config.markers.size; - }); - } }, { key: "plotChartMarkers", value: function(t3, e2, i2, a2) { - var s2, r2 = arguments.length > 4 && void 0 !== arguments[4] && arguments[4], o2 = this.w, n2 = e2, l2 = t3, h2 = null, c2 = new m(this.ctx), d2 = o2.config.markers.discrete && o2.config.markers.discrete.length; - if ((o2.globals.markers.size[e2] > 0 || r2 || d2) && (h2 = c2.group({ class: r2 || d2 ? "" : "apexcharts-series-markers" })).attr("clip-path", "url(#gridRectMarkerMask".concat(o2.globals.cuid, ")")), Array.isArray(l2.x)) - for (var g2 = 0; g2 < l2.x.length; g2++) { - var u2 = i2; - 1 === i2 && 0 === g2 && (u2 = 0), 1 === i2 && 1 === g2 && (u2 = 1); - var p2 = "apexcharts-marker"; - if ("line" !== o2.config.chart.type && "area" !== o2.config.chart.type || o2.globals.comboCharts || o2.config.tooltip.intersect || (p2 += " no-pointer-events"), (Array.isArray(o2.config.markers.size) ? o2.globals.markers.size[e2] > 0 : o2.config.markers.size > 0) || r2 || d2) { - x.isNumber(l2.y[g2]) ? p2 += " w".concat(x.randomId()) : p2 = "apexcharts-nullpoint"; - var f2 = this.getMarkerConfig({ cssClass: p2, seriesIndex: e2, dataPointIndex: u2 }); - o2.config.series[n2].data[u2] && (o2.config.series[n2].data[u2].fillColor && (f2.pointFillColor = o2.config.series[n2].data[u2].fillColor), o2.config.series[n2].data[u2].strokeColor && (f2.pointStrokeColor = o2.config.series[n2].data[u2].strokeColor)), a2 && (f2.pSize = a2), (l2.x[g2] < 0 || l2.x[g2] > o2.globals.gridWidth || l2.y[g2] < -o2.globals.markers.largestSize || l2.y[g2] > o2.globals.gridHeight + o2.globals.markers.largestSize) && (f2.pSize = 0), (s2 = c2.drawMarker(l2.x[g2], l2.y[g2], f2)).attr("rel", u2), s2.attr("j", u2), s2.attr("index", e2), s2.node.setAttribute("default-marker-size", f2.pSize), new v(this.ctx).setSelectionFilter(s2, e2, u2), this.addEvents(s2), h2 && h2.add(s2); - } else - void 0 === o2.globals.pointsArray[e2] && (o2.globals.pointsArray[e2] = []), o2.globals.pointsArray[e2].push([l2.x[g2], l2.y[g2]]); - } - return h2; - } }, { key: "getMarkerConfig", value: function(t3) { - var e2 = t3.cssClass, i2 = t3.seriesIndex, a2 = t3.dataPointIndex, s2 = void 0 === a2 ? null : a2, r2 = t3.finishRadius, o2 = void 0 === r2 ? null : r2, n2 = this.w, l2 = this.getMarkerStyle(i2), h2 = n2.globals.markers.size[i2], c2 = n2.config.markers; - return null !== s2 && c2.discrete.length && c2.discrete.map(function(t4) { - t4.seriesIndex === i2 && t4.dataPointIndex === s2 && (l2.pointStrokeColor = t4.strokeColor, l2.pointFillColor = t4.fillColor, h2 = t4.size, l2.pointShape = t4.shape); - }), { pSize: null === o2 ? h2 : o2, pRadius: c2.radius, width: Array.isArray(c2.width) ? c2.width[i2] : c2.width, height: Array.isArray(c2.height) ? c2.height[i2] : c2.height, pointStrokeWidth: Array.isArray(c2.strokeWidth) ? c2.strokeWidth[i2] : c2.strokeWidth, pointStrokeColor: l2.pointStrokeColor, pointFillColor: l2.pointFillColor, shape: l2.pointShape || (Array.isArray(c2.shape) ? c2.shape[i2] : c2.shape), class: e2, pointStrokeOpacity: Array.isArray(c2.strokeOpacity) ? c2.strokeOpacity[i2] : c2.strokeOpacity, pointStrokeDashArray: Array.isArray(c2.strokeDashArray) ? c2.strokeDashArray[i2] : c2.strokeDashArray, pointFillOpacity: Array.isArray(c2.fillOpacity) ? c2.fillOpacity[i2] : c2.fillOpacity, seriesIndex: i2 }; - } }, { key: "addEvents", value: function(t3) { - var e2 = this.w, i2 = new m(this.ctx); - t3.node.addEventListener("mouseenter", i2.pathMouseEnter.bind(this.ctx, t3)), t3.node.addEventListener("mouseleave", i2.pathMouseLeave.bind(this.ctx, t3)), t3.node.addEventListener("mousedown", i2.pathMouseDown.bind(this.ctx, t3)), t3.node.addEventListener("click", e2.config.markers.onClick), t3.node.addEventListener("dblclick", e2.config.markers.onDblClick), t3.node.addEventListener("touchstart", i2.pathMouseDown.bind(this.ctx, t3), { passive: true }); - } }, { key: "getMarkerStyle", value: function(t3) { - var e2 = this.w, i2 = e2.globals.markers.colors, a2 = e2.config.markers.strokeColor || e2.config.markers.strokeColors; - return { pointStrokeColor: Array.isArray(a2) ? a2[t3] : a2, pointFillColor: Array.isArray(i2) ? i2[t3] : i2 }; - } }]), t2; - }(); - var D = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.initialAnim = this.w.config.chart.animations.enabled, this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; - } - return r(t2, [{ key: "draw", value: function(t3, e2, i2) { - var a2 = this.w, s2 = new m(this.ctx), r2 = i2.realIndex, o2 = i2.pointsPos, n2 = i2.zRatio, l2 = i2.elParent, h2 = s2.group({ class: "apexcharts-series-markers apexcharts-series-".concat(a2.config.chart.type) }); - if (h2.attr("clip-path", "url(#gridRectMarkerMask".concat(a2.globals.cuid, ")")), Array.isArray(o2.x)) - for (var c2 = 0; c2 < o2.x.length; c2++) { - var d2 = e2 + 1, g2 = true; - 0 === e2 && 0 === c2 && (d2 = 0), 0 === e2 && 1 === c2 && (d2 = 1); - var u2 = 0, p2 = a2.globals.markers.size[r2]; - if (n2 !== 1 / 0) { - var f2 = a2.config.plotOptions.bubble; - p2 = a2.globals.seriesZ[r2][d2], f2.zScaling && (p2 /= n2), f2.minBubbleRadius && p2 < f2.minBubbleRadius && (p2 = f2.minBubbleRadius), f2.maxBubbleRadius && p2 > f2.maxBubbleRadius && (p2 = f2.maxBubbleRadius); - } - a2.config.chart.animations.enabled || (u2 = p2); - var x2 = o2.x[c2], b2 = o2.y[c2]; - if (u2 = u2 || 0, null !== b2 && void 0 !== a2.globals.series[r2][d2] || (g2 = false), g2) { - var v2 = this.drawPoint(x2, b2, u2, p2, r2, d2, e2); - h2.add(v2); - } - l2.add(h2); - } - } }, { key: "drawPoint", value: function(t3, e2, i2, a2, s2, r2, o2) { - var n2 = this.w, l2 = s2, h2 = new b(this.ctx), c2 = new v(this.ctx), d2 = new R(this.ctx), g2 = new H(this.ctx), u2 = new m(this.ctx), p2 = g2.getMarkerConfig({ cssClass: "apexcharts-marker", seriesIndex: l2, dataPointIndex: r2, finishRadius: "bubble" === n2.config.chart.type || n2.globals.comboCharts && n2.config.series[s2] && "bubble" === n2.config.series[s2].type ? a2 : null }); - a2 = p2.pSize; - var f2, x2 = d2.fillPath({ seriesNumber: s2, dataPointIndex: r2, color: p2.pointFillColor, patternUnits: "objectBoundingBox", value: n2.globals.series[s2][o2] }); - if ("circle" === p2.shape ? f2 = u2.drawCircle(i2) : "square" !== p2.shape && "rect" !== p2.shape || (f2 = u2.drawRect(0, 0, p2.width - p2.pointStrokeWidth / 2, p2.height - p2.pointStrokeWidth / 2, p2.pRadius)), n2.config.series[l2].data[r2] && n2.config.series[l2].data[r2].fillColor && (x2 = n2.config.series[l2].data[r2].fillColor), f2.attr({ x: t3 - p2.width / 2 - p2.pointStrokeWidth / 2, y: e2 - p2.height / 2 - p2.pointStrokeWidth / 2, cx: t3, cy: e2, fill: x2, "fill-opacity": p2.pointFillOpacity, stroke: p2.pointStrokeColor, r: a2, "stroke-width": p2.pointStrokeWidth, "stroke-dasharray": p2.pointStrokeDashArray, "stroke-opacity": p2.pointStrokeOpacity }), n2.config.chart.dropShadow.enabled) { - var y2 = n2.config.chart.dropShadow; - c2.dropShadow(f2, y2, s2); - } - if (!this.initialAnim || n2.globals.dataChanged || n2.globals.resized) - n2.globals.animationEnded = true; - else { - var w2 = n2.config.chart.animations.speed; - h2.animateMarker(f2, 0, "circle" === p2.shape ? a2 : { width: p2.width, height: p2.height }, w2, n2.globals.easing, function() { - window.setTimeout(function() { - h2.animationCompleted(f2); - }, 100); - }); - } - if (n2.globals.dataChanged && "circle" === p2.shape) - if (this.dynamicAnim) { - var k2, A2, S2, C2, L2 = n2.config.chart.animations.dynamicAnimation.speed; - null != (C2 = n2.globals.previousPaths[s2] && n2.globals.previousPaths[s2][o2]) && (k2 = C2.x, A2 = C2.y, S2 = void 0 !== C2.r ? C2.r : a2); - for (var P2 = 0; P2 < n2.globals.collapsedSeries.length; P2++) - n2.globals.collapsedSeries[P2].index === s2 && (L2 = 1, a2 = 0); - 0 === t3 && 0 === e2 && (a2 = 0), h2.animateCircle(f2, { cx: k2, cy: A2, r: S2 }, { cx: t3, cy: e2, r: a2 }, L2, n2.globals.easing); - } else - f2.attr({ r: a2 }); - return f2.attr({ rel: r2, j: r2, index: s2, "default-marker-size": a2 }), c2.setSelectionFilter(f2, s2, r2), g2.addEvents(f2), f2.node.classList.add("apexcharts-marker"), f2; - } }, { key: "centerTextInBubble", value: function(t3) { - var e2 = this.w; - return { y: t3 += parseInt(e2.config.dataLabels.style.fontSize, 10) / 4 }; - } }]), t2; - }(); - var O = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "dataLabelsCorrection", value: function(t3, e2, i2, a2, s2, r2, o2) { - var n2 = this.w, l2 = false, h2 = new m(this.ctx).getTextRects(i2, o2), c2 = h2.width, d2 = h2.height; - e2 < 0 && (e2 = 0), e2 > n2.globals.gridHeight + d2 && (e2 = n2.globals.gridHeight + d2 / 2), void 0 === n2.globals.dataLabelsRects[a2] && (n2.globals.dataLabelsRects[a2] = []), n2.globals.dataLabelsRects[a2].push({ x: t3, y: e2, width: c2, height: d2 }); - var g2 = n2.globals.dataLabelsRects[a2].length - 2, u2 = void 0 !== n2.globals.lastDrawnDataLabelsIndexes[a2] ? n2.globals.lastDrawnDataLabelsIndexes[a2][n2.globals.lastDrawnDataLabelsIndexes[a2].length - 1] : 0; - if (void 0 !== n2.globals.dataLabelsRects[a2][g2]) { - var p2 = n2.globals.dataLabelsRects[a2][u2]; - (t3 > p2.x + p2.width || e2 > p2.y + p2.height || e2 + d2 < p2.y || t3 + c2 < p2.x) && (l2 = true); - } - return (0 === s2 || r2) && (l2 = true), { x: t3, y: e2, textRects: h2, drawnextLabel: l2 }; - } }, { key: "drawDataLabel", value: function(t3) { - var e2 = this, i2 = t3.type, a2 = t3.pos, s2 = t3.i, r2 = t3.j, o2 = t3.isRangeStart, n2 = t3.strokeWidth, l2 = void 0 === n2 ? 2 : n2, h2 = this.w, c2 = new m(this.ctx), d2 = h2.config.dataLabels, g2 = 0, u2 = 0, p2 = r2, f2 = null; - if (!d2.enabled || !Array.isArray(a2.x)) - return f2; - f2 = c2.group({ class: "apexcharts-data-labels" }); - for (var x2 = 0; x2 < a2.x.length; x2++) - if (g2 = a2.x[x2] + d2.offsetX, u2 = a2.y[x2] + d2.offsetY + l2, !isNaN(g2)) { - 1 === r2 && 0 === x2 && (p2 = 0), 1 === r2 && 1 === x2 && (p2 = 1); - var b2 = h2.globals.series[s2][p2]; - "rangeArea" === i2 && (b2 = o2 ? h2.globals.seriesRangeStart[s2][p2] : h2.globals.seriesRangeEnd[s2][p2]); - var v2 = "", y2 = function(t4) { - return h2.config.dataLabels.formatter(t4, { ctx: e2.ctx, seriesIndex: s2, dataPointIndex: p2, w: h2 }); - }; - if ("bubble" === h2.config.chart.type) - v2 = y2(b2 = h2.globals.seriesZ[s2][p2]), u2 = a2.y[x2], u2 = new D(this.ctx).centerTextInBubble(u2, s2, p2).y; - else - void 0 !== b2 && (v2 = y2(b2)); - this.plotDataLabelsText({ x: g2, y: u2, text: v2, i: s2, j: p2, parent: f2, offsetCorrection: true, dataLabelsConfig: h2.config.dataLabels }); - } - return f2; - } }, { key: "plotDataLabelsText", value: function(t3) { - var e2 = this.w, i2 = new m(this.ctx), a2 = t3.x, s2 = t3.y, r2 = t3.i, o2 = t3.j, n2 = t3.text, l2 = t3.textAnchor, h2 = t3.fontSize, c2 = t3.parent, d2 = t3.dataLabelsConfig, g2 = t3.color, u2 = t3.alwaysDrawDataLabel, p2 = t3.offsetCorrection; - if (!(Array.isArray(e2.config.dataLabels.enabledOnSeries) && e2.config.dataLabels.enabledOnSeries.indexOf(r2) < 0)) { - var f2 = { x: a2, y: s2, drawnextLabel: true, textRects: null }; - p2 && (f2 = this.dataLabelsCorrection(a2, s2, n2, r2, o2, u2, parseInt(d2.style.fontSize, 10))), e2.globals.zoomed || (a2 = f2.x, s2 = f2.y), f2.textRects && (a2 < -10 - f2.textRects.width || a2 > e2.globals.gridWidth + f2.textRects.width + 10) && (n2 = ""); - var x2 = e2.globals.dataLabels.style.colors[r2]; - (("bar" === e2.config.chart.type || "rangeBar" === e2.config.chart.type) && e2.config.plotOptions.bar.distributed || e2.config.dataLabels.distributed) && (x2 = e2.globals.dataLabels.style.colors[o2]), "function" == typeof x2 && (x2 = x2({ series: e2.globals.series, seriesIndex: r2, dataPointIndex: o2, w: e2 })), g2 && (x2 = g2); - var b2 = d2.offsetX, y2 = d2.offsetY; - if ("bar" !== e2.config.chart.type && "rangeBar" !== e2.config.chart.type || (b2 = 0, y2 = 0), f2.drawnextLabel) { - var w2 = i2.drawText({ width: 100, height: parseInt(d2.style.fontSize, 10), x: a2 + b2, y: s2 + y2, foreColor: x2, textAnchor: l2 || d2.textAnchor, text: n2, fontSize: h2 || d2.style.fontSize, fontFamily: d2.style.fontFamily, fontWeight: d2.style.fontWeight || "normal" }); - if (w2.attr({ class: "apexcharts-datalabel", cx: a2, cy: s2 }), d2.dropShadow.enabled) { - var k2 = d2.dropShadow; - new v(this.ctx).dropShadow(w2, k2); - } - c2.add(w2), void 0 === e2.globals.lastDrawnDataLabelsIndexes[r2] && (e2.globals.lastDrawnDataLabelsIndexes[r2] = []), e2.globals.lastDrawnDataLabelsIndexes[r2].push(o2); - } - } - } }, { key: "addBackgroundToDataLabel", value: function(t3, e2) { - var i2 = this.w, a2 = i2.config.dataLabels.background, s2 = a2.padding, r2 = a2.padding / 2, o2 = e2.width, n2 = e2.height, l2 = new m(this.ctx).drawRect(e2.x - s2, e2.y - r2 / 2, o2 + 2 * s2, n2 + r2, a2.borderRadius, "transparent" === i2.config.chart.background ? "#fff" : i2.config.chart.background, a2.opacity, a2.borderWidth, a2.borderColor); - a2.dropShadow.enabled && new v(this.ctx).dropShadow(l2, a2.dropShadow); - return l2; - } }, { key: "dataLabelsBackground", value: function() { - var t3 = this.w; - if ("bubble" !== t3.config.chart.type) - for (var e2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"), i2 = 0; i2 < e2.length; i2++) { - var a2 = e2[i2], s2 = a2.getBBox(), r2 = null; - if (s2.width && s2.height && (r2 = this.addBackgroundToDataLabel(a2, s2)), r2) { - a2.parentNode.insertBefore(r2.node, a2); - var o2 = a2.getAttribute("fill"); - t3.config.chart.animations.enabled && !t3.globals.resized && !t3.globals.dataChanged ? r2.animate().attr({ fill: o2 }) : r2.attr({ fill: o2 }), a2.setAttribute("fill", t3.config.dataLabels.background.foreColor); - } - } - } }, { key: "bringForward", value: function() { - for (var t3 = this.w, e2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels"), i2 = t3.globals.dom.baseEl.querySelector(".apexcharts-plot-series:last-child"), a2 = 0; a2 < e2.length; a2++) - i2 && i2.insertBefore(e2[a2], i2.nextSibling); - } }]), t2; - }(); - var N = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.legendInactiveClass = "legend-mouseover-inactive"; - } - return r(t2, [{ key: "getAllSeriesEls", value: function() { - return this.w.globals.dom.baseEl.getElementsByClassName("apexcharts-series"); - } }, { key: "getSeriesByName", value: function(t3) { - return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner .apexcharts-series[seriesName='".concat(x.escapeString(t3), "']")); - } }, { key: "isSeriesHidden", value: function(t3) { - var e2 = this.getSeriesByName(t3), i2 = parseInt(e2.getAttribute("data:realIndex"), 10); - return { isHidden: e2.classList.contains("apexcharts-series-collapsed"), realIndex: i2 }; - } }, { key: "addCollapsedClassToSeries", value: function(t3, e2) { - var i2 = this.w; - function a2(i3) { - for (var a3 = 0; a3 < i3.length; a3++) - i3[a3].index === e2 && t3.node.classList.add("apexcharts-series-collapsed"); - } - a2(i2.globals.collapsedSeries), a2(i2.globals.ancillaryCollapsedSeries); - } }, { key: "toggleSeries", value: function(t3) { - var e2 = this.isSeriesHidden(t3); - return this.ctx.legend.legendHelpers.toggleDataSeries(e2.realIndex, e2.isHidden), e2.isHidden; - } }, { key: "showSeries", value: function(t3) { - var e2 = this.isSeriesHidden(t3); - e2.isHidden && this.ctx.legend.legendHelpers.toggleDataSeries(e2.realIndex, true); - } }, { key: "hideSeries", value: function(t3) { - var e2 = this.isSeriesHidden(t3); - e2.isHidden || this.ctx.legend.legendHelpers.toggleDataSeries(e2.realIndex, false); - } }, { key: "resetSeries", value: function() { - var t3 = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0], e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], a2 = this.w, s2 = x.clone(a2.globals.initialSeries); - a2.globals.previousPaths = [], i2 ? (a2.globals.collapsedSeries = [], a2.globals.ancillaryCollapsedSeries = [], a2.globals.collapsedSeriesIndices = [], a2.globals.ancillaryCollapsedSeriesIndices = []) : s2 = this.emptyCollapsedSeries(s2), a2.config.series = s2, t3 && (e2 && (a2.globals.zoomed = false, this.ctx.updateHelpers.revertDefaultAxisMinMax()), this.ctx.updateHelpers._updateSeries(s2, a2.config.chart.animations.dynamicAnimation.enabled)); - } }, { key: "emptyCollapsedSeries", value: function(t3) { - for (var e2 = this.w, i2 = 0; i2 < t3.length; i2++) - e2.globals.collapsedSeriesIndices.indexOf(i2) > -1 && (t3[i2].data = []); - return t3; - } }, { key: "toggleSeriesOnHover", value: function(t3, e2) { - var i2 = this.w; - e2 || (e2 = t3.target); - var a2 = i2.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels"); - if ("mousemove" === t3.type) { - var s2 = parseInt(e2.getAttribute("rel"), 10) - 1, r2 = null, o2 = null; - i2.globals.axisCharts || "radialBar" === i2.config.chart.type ? i2.globals.axisCharts ? (r2 = i2.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s2, "']")), o2 = i2.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s2, "']"))) : r2 = i2.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s2 + 1, "']")) : r2 = i2.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s2 + 1, "'] path")); - for (var n2 = 0; n2 < a2.length; n2++) - a2[n2].classList.add(this.legendInactiveClass); - null !== r2 && (i2.globals.axisCharts || r2.parentNode.classList.remove(this.legendInactiveClass), r2.classList.remove(this.legendInactiveClass), null !== o2 && o2.classList.remove(this.legendInactiveClass)); - } else if ("mouseout" === t3.type) - for (var l2 = 0; l2 < a2.length; l2++) - a2[l2].classList.remove(this.legendInactiveClass); - } }, { key: "highlightRangeInSeries", value: function(t3, e2) { - var i2 = this, a2 = this.w, s2 = a2.globals.dom.baseEl.getElementsByClassName("apexcharts-heatmap-rect"), r2 = function(t4) { - for (var e3 = 0; e3 < s2.length; e3++) - s2[e3].classList[t4](i2.legendInactiveClass); - }; - if ("mousemove" === t3.type) { - var o2 = parseInt(e2.getAttribute("rel"), 10) - 1; - r2("add"), function(t4) { - for (var e3 = 0; e3 < s2.length; e3++) { - var a3 = parseInt(s2[e3].getAttribute("val"), 10); - a3 >= t4.from && a3 <= t4.to && s2[e3].classList.remove(i2.legendInactiveClass); - } - }(a2.config.plotOptions.heatmap.colorScale.ranges[o2]); - } else - "mouseout" === t3.type && r2("remove"); - } }, { key: "getActiveConfigSeriesIndex", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "asc", e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], i2 = this.w, a2 = 0; - if (i2.config.series.length > 1) { - for (var s2 = i2.config.series.map(function(t4, a3) { - return t4.data && t4.data.length > 0 && -1 === i2.globals.collapsedSeriesIndices.indexOf(a3) && (!i2.globals.comboCharts || 0 === e2.length || e2.length && e2.indexOf(i2.config.series[a3].type) > -1) ? a3 : -1; - }), r2 = "asc" === t3 ? 0 : s2.length - 1; "asc" === t3 ? r2 < s2.length : r2 >= 0; "asc" === t3 ? r2++ : r2--) - if (-1 !== s2[r2]) { - a2 = s2[r2]; - break; - } - } - return a2; - } }, { key: "getBarSeriesIndices", value: function() { - return this.w.globals.comboCharts ? this.w.config.series.map(function(t3, e2) { - return "bar" === t3.type || "column" === t3.type ? e2 : -1; - }).filter(function(t3) { - return -1 !== t3; - }) : this.w.config.series.map(function(t3, e2) { - return e2; - }); - } }, { key: "getPreviousPaths", value: function() { - var t3 = this.w; - function e2(e3, i3, a3) { - for (var s3 = e3[i3].childNodes, r2 = { type: a3, paths: [], realIndex: e3[i3].getAttribute("data:realIndex") }, o2 = 0; o2 < s3.length; o2++) - if (s3[o2].hasAttribute("pathTo")) { - var n2 = s3[o2].getAttribute("pathTo"); - r2.paths.push({ d: n2 }); - } - t3.globals.previousPaths.push(r2); - } - t3.globals.previousPaths = []; - ["line", "area", "bar", "rangebar", "rangeArea", "candlestick", "radar"].forEach(function(i3) { - for (var a3, s3 = (a3 = i3, t3.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(a3, "-series .apexcharts-series"))), r2 = 0; r2 < s3.length; r2++) - e2(s3, r2, i3); - }), this.handlePrevBubbleScatterPaths("bubble"), this.handlePrevBubbleScatterPaths("scatter"); - var i2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t3.config.chart.type, " .apexcharts-series")); - if (i2.length > 0) - for (var a2 = function(e3) { - for (var i3 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t3.config.chart.type, " .apexcharts-series[data\\:realIndex='").concat(e3, "'] rect")), a3 = [], s3 = function(t4) { - var e4 = function(e5) { - return i3[t4].getAttribute(e5); - }, s4 = { x: parseFloat(e4("x")), y: parseFloat(e4("y")), width: parseFloat(e4("width")), height: parseFloat(e4("height")) }; - a3.push({ rect: s4, color: i3[t4].getAttribute("color") }); - }, r2 = 0; r2 < i3.length; r2++) - s3(r2); - t3.globals.previousPaths.push(a3); - }, s2 = 0; s2 < i2.length; s2++) - a2(s2); - t3.globals.axisCharts || (t3.globals.previousPaths = t3.globals.series); - } }, { key: "handlePrevBubbleScatterPaths", value: function(t3) { - var e2 = this.w, i2 = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t3, "-series .apexcharts-series")); - if (i2.length > 0) - for (var a2 = 0; a2 < i2.length; a2++) { - for (var s2 = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t3, "-series .apexcharts-series[data\\:realIndex='").concat(a2, "'] circle")), r2 = [], o2 = 0; o2 < s2.length; o2++) - r2.push({ x: s2[o2].getAttribute("cx"), y: s2[o2].getAttribute("cy"), r: s2[o2].getAttribute("r") }); - e2.globals.previousPaths.push(r2); - } - } }, { key: "clearPreviousPaths", value: function() { - var t3 = this.w; - t3.globals.previousPaths = [], t3.globals.allSeriesCollapsed = false; - } }, { key: "handleNoData", value: function() { - var t3 = this.w, e2 = t3.config.noData, i2 = new m(this.ctx), a2 = t3.globals.svgWidth / 2, s2 = t3.globals.svgHeight / 2, r2 = "middle"; - if (t3.globals.noData = true, t3.globals.animationEnded = true, "left" === e2.align ? (a2 = 10, r2 = "start") : "right" === e2.align && (a2 = t3.globals.svgWidth - 10, r2 = "end"), "top" === e2.verticalAlign ? s2 = 50 : "bottom" === e2.verticalAlign && (s2 = t3.globals.svgHeight - 50), a2 += e2.offsetX, s2 = s2 + parseInt(e2.style.fontSize, 10) + 2 + e2.offsetY, void 0 !== e2.text && "" !== e2.text) { - var o2 = i2.drawText({ x: a2, y: s2, text: e2.text, textAnchor: r2, fontSize: e2.style.fontSize, fontFamily: e2.style.fontFamily, foreColor: e2.style.color, opacity: 1, class: "apexcharts-text-nodata" }); - t3.globals.dom.Paper.add(o2); - } - } }, { key: "setNullSeriesToZeroValues", value: function(t3) { - for (var e2 = this.w, i2 = 0; i2 < t3.length; i2++) - if (0 === t3[i2].length) - for (var a2 = 0; a2 < t3[e2.globals.maxValsInArrayIndex].length; a2++) - t3[i2].push(0); - return t3; - } }, { key: "hasAllSeriesEqualX", value: function() { - for (var t3 = true, e2 = this.w, i2 = this.filteredSeriesX(), a2 = 0; a2 < i2.length - 1; a2++) - if (i2[a2][0] !== i2[a2 + 1][0]) { - t3 = false; - break; - } - return e2.globals.allSeriesHasEqualX = t3, t3; - } }, { key: "filteredSeriesX", value: function() { - var t3 = this.w.globals.seriesX.map(function(t4) { - return t4.length > 0 ? t4 : []; - }); - return t3; - } }]), t2; - }(); - var W = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.twoDSeries = [], this.threeDSeries = [], this.twoDSeriesX = [], this.seriesGoals = [], this.coreUtils = new y(this.ctx); - } - return r(t2, [{ key: "isMultiFormat", value: function() { - return this.isFormatXY() || this.isFormat2DArray(); - } }, { key: "isFormatXY", value: function() { - var t3 = this.w.config.series.slice(), e2 = new N(this.ctx); - if (this.activeSeriesIndex = e2.getActiveConfigSeriesIndex(), void 0 !== t3[this.activeSeriesIndex].data && t3[this.activeSeriesIndex].data.length > 0 && null !== t3[this.activeSeriesIndex].data[0] && void 0 !== t3[this.activeSeriesIndex].data[0].x && null !== t3[this.activeSeriesIndex].data[0]) - return true; - } }, { key: "isFormat2DArray", value: function() { - var t3 = this.w.config.series.slice(), e2 = new N(this.ctx); - if (this.activeSeriesIndex = e2.getActiveConfigSeriesIndex(), void 0 !== t3[this.activeSeriesIndex].data && t3[this.activeSeriesIndex].data.length > 0 && void 0 !== t3[this.activeSeriesIndex].data[0] && null !== t3[this.activeSeriesIndex].data[0] && t3[this.activeSeriesIndex].data[0].constructor === Array) - return true; - } }, { key: "handleFormat2DArray", value: function(t3, e2) { - for (var i2 = this.w.config, a2 = this.w.globals, s2 = "boxPlot" === i2.chart.type || "boxPlot" === i2.series[e2].type, r2 = 0; r2 < t3[e2].data.length; r2++) - if (void 0 !== t3[e2].data[r2][1] && (Array.isArray(t3[e2].data[r2][1]) && 4 === t3[e2].data[r2][1].length && !s2 ? this.twoDSeries.push(x.parseNumber(t3[e2].data[r2][1][3])) : t3[e2].data[r2].length >= 5 ? this.twoDSeries.push(x.parseNumber(t3[e2].data[r2][4])) : this.twoDSeries.push(x.parseNumber(t3[e2].data[r2][1])), a2.dataFormatXNumeric = true), "datetime" === i2.xaxis.type) { - var o2 = new Date(t3[e2].data[r2][0]); - o2 = new Date(o2).getTime(), this.twoDSeriesX.push(o2); - } else - this.twoDSeriesX.push(t3[e2].data[r2][0]); - for (var n2 = 0; n2 < t3[e2].data.length; n2++) - void 0 !== t3[e2].data[n2][2] && (this.threeDSeries.push(t3[e2].data[n2][2]), a2.isDataXYZ = true); - } }, { key: "handleFormatXY", value: function(t3, e2) { - var i2 = this.w.config, a2 = this.w.globals, s2 = new I(this.ctx), r2 = e2; - a2.collapsedSeriesIndices.indexOf(e2) > -1 && (r2 = this.activeSeriesIndex); - for (var o2 = 0; o2 < t3[e2].data.length; o2++) - void 0 !== t3[e2].data[o2].y && (Array.isArray(t3[e2].data[o2].y) ? this.twoDSeries.push(x.parseNumber(t3[e2].data[o2].y[t3[e2].data[o2].y.length - 1])) : this.twoDSeries.push(x.parseNumber(t3[e2].data[o2].y))), void 0 !== t3[e2].data[o2].goals && Array.isArray(t3[e2].data[o2].goals) ? (void 0 === this.seriesGoals[e2] && (this.seriesGoals[e2] = []), this.seriesGoals[e2].push(t3[e2].data[o2].goals)) : (void 0 === this.seriesGoals[e2] && (this.seriesGoals[e2] = []), this.seriesGoals[e2].push(null)); - for (var n2 = 0; n2 < t3[r2].data.length; n2++) { - var l2 = "string" == typeof t3[r2].data[n2].x, h2 = Array.isArray(t3[r2].data[n2].x), c2 = !h2 && !!s2.isValidDate(t3[r2].data[n2].x.toString()); - if (l2 || c2) - if (l2 || i2.xaxis.convertedCatToNumeric) { - var d2 = a2.isBarHorizontal && a2.isRangeData; - "datetime" !== i2.xaxis.type || d2 ? (this.fallbackToCategory = true, this.twoDSeriesX.push(t3[r2].data[n2].x), isNaN(t3[r2].data[n2].x) || "category" === this.w.config.xaxis.type || "string" == typeof t3[r2].data[n2].x || (a2.isXNumeric = true)) : this.twoDSeriesX.push(s2.parseDate(t3[r2].data[n2].x)); - } else - "datetime" === i2.xaxis.type ? this.twoDSeriesX.push(s2.parseDate(t3[r2].data[n2].x.toString())) : (a2.dataFormatXNumeric = true, a2.isXNumeric = true, this.twoDSeriesX.push(parseFloat(t3[r2].data[n2].x))); - else - h2 ? (this.fallbackToCategory = true, this.twoDSeriesX.push(t3[r2].data[n2].x)) : (a2.isXNumeric = true, a2.dataFormatXNumeric = true, this.twoDSeriesX.push(t3[r2].data[n2].x)); - } - if (t3[e2].data[0] && void 0 !== t3[e2].data[0].z) { - for (var g2 = 0; g2 < t3[e2].data.length; g2++) - this.threeDSeries.push(t3[e2].data[g2].z); - a2.isDataXYZ = true; - } - } }, { key: "handleRangeData", value: function(t3, e2) { - var i2 = this.w.globals, a2 = {}; - return this.isFormat2DArray() ? a2 = this.handleRangeDataFormat("array", t3, e2) : this.isFormatXY() && (a2 = this.handleRangeDataFormat("xy", t3, e2)), i2.seriesRangeStart.push(a2.start), i2.seriesRangeEnd.push(a2.end), i2.seriesRange.push(a2.rangeUniques), i2.seriesRange.forEach(function(t4, e3) { - t4 && t4.forEach(function(t5, e4) { - t5.y.forEach(function(e5, i3) { - for (var a3 = 0; a3 < t5.y.length; a3++) - if (i3 !== a3) { - var s2 = e5.y1, r2 = e5.y2, o2 = t5.y[a3].y1; - s2 <= t5.y[a3].y2 && o2 <= r2 && (t5.overlaps.indexOf(e5.rangeName) < 0 && t5.overlaps.push(e5.rangeName), t5.overlaps.indexOf(t5.y[a3].rangeName) < 0 && t5.overlaps.push(t5.y[a3].rangeName)); - } - }); - }); - }), a2; - } }, { key: "handleCandleStickBoxData", value: function(t3, e2) { - var i2 = this.w.globals, a2 = {}; - return this.isFormat2DArray() ? a2 = this.handleCandleStickBoxDataFormat("array", t3, e2) : this.isFormatXY() && (a2 = this.handleCandleStickBoxDataFormat("xy", t3, e2)), i2.seriesCandleO[e2] = a2.o, i2.seriesCandleH[e2] = a2.h, i2.seriesCandleM[e2] = a2.m, i2.seriesCandleL[e2] = a2.l, i2.seriesCandleC[e2] = a2.c, a2; - } }, { key: "handleRangeDataFormat", value: function(t3, e2, i2) { - var a2 = [], s2 = [], r2 = e2[i2].data.filter(function(t4, e3, i3) { - return e3 === i3.findIndex(function(e4) { - return e4.x === t4.x; - }); - }).map(function(t4, e3) { - return { x: t4.x, overlaps: [], y: [] }; - }); - if ("array" === t3) - for (var o2 = 0; o2 < e2[i2].data.length; o2++) - Array.isArray(e2[i2].data[o2]) ? (a2.push(e2[i2].data[o2][1][0]), s2.push(e2[i2].data[o2][1][1])) : (a2.push(e2[i2].data[o2]), s2.push(e2[i2].data[o2])); - else if ("xy" === t3) - for (var n2 = function(t4) { - var o3 = Array.isArray(e2[i2].data[t4].y), n3 = x.randomId(), l3 = e2[i2].data[t4].x, h2 = { y1: o3 ? e2[i2].data[t4].y[0] : e2[i2].data[t4].y, y2: o3 ? e2[i2].data[t4].y[1] : e2[i2].data[t4].y, rangeName: n3 }; - e2[i2].data[t4].rangeName = n3; - var c2 = r2.findIndex(function(t5) { - return t5.x === l3; - }); - r2[c2].y.push(h2), a2.push(h2.y1), s2.push(h2.y2); - }, l2 = 0; l2 < e2[i2].data.length; l2++) - n2(l2); - return { start: a2, end: s2, rangeUniques: r2 }; - } }, { key: "handleCandleStickBoxDataFormat", value: function(t3, e2, i2) { - var a2 = this.w, s2 = "boxPlot" === a2.config.chart.type || "boxPlot" === a2.config.series[i2].type, r2 = [], o2 = [], n2 = [], l2 = [], h2 = []; - if ("array" === t3) - if (s2 && 6 === e2[i2].data[0].length || !s2 && 5 === e2[i2].data[0].length) - for (var c2 = 0; c2 < e2[i2].data.length; c2++) - r2.push(e2[i2].data[c2][1]), o2.push(e2[i2].data[c2][2]), s2 ? (n2.push(e2[i2].data[c2][3]), l2.push(e2[i2].data[c2][4]), h2.push(e2[i2].data[c2][5])) : (l2.push(e2[i2].data[c2][3]), h2.push(e2[i2].data[c2][4])); - else - for (var d2 = 0; d2 < e2[i2].data.length; d2++) - Array.isArray(e2[i2].data[d2][1]) && (r2.push(e2[i2].data[d2][1][0]), o2.push(e2[i2].data[d2][1][1]), s2 ? (n2.push(e2[i2].data[d2][1][2]), l2.push(e2[i2].data[d2][1][3]), h2.push(e2[i2].data[d2][1][4])) : (l2.push(e2[i2].data[d2][1][2]), h2.push(e2[i2].data[d2][1][3]))); - else if ("xy" === t3) - for (var g2 = 0; g2 < e2[i2].data.length; g2++) - Array.isArray(e2[i2].data[g2].y) && (r2.push(e2[i2].data[g2].y[0]), o2.push(e2[i2].data[g2].y[1]), s2 ? (n2.push(e2[i2].data[g2].y[2]), l2.push(e2[i2].data[g2].y[3]), h2.push(e2[i2].data[g2].y[4])) : (l2.push(e2[i2].data[g2].y[2]), h2.push(e2[i2].data[g2].y[3]))); - return { o: r2, h: o2, m: n2, l: l2, c: h2 }; - } }, { key: "parseDataAxisCharts", value: function(t3) { - var e2, i2 = this, a2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.ctx, s2 = this.w.config, r2 = this.w.globals, o2 = new I(a2), n2 = s2.labels.length > 0 ? s2.labels.slice() : s2.xaxis.categories.slice(); - if (r2.isRangeBar = "rangeBar" === s2.chart.type && r2.isBarHorizontal, r2.hasXaxisGroups = "category" === s2.xaxis.type && s2.xaxis.group.groups.length > 0, r2.hasXaxisGroups && (r2.groups = s2.xaxis.group.groups), r2.hasSeriesGroups = null === (e2 = t3[0]) || void 0 === e2 ? void 0 : e2.group, r2.hasSeriesGroups) { - var l2 = [], h2 = u(new Set(t3.map(function(t4) { - return t4.group; - }))); - t3.forEach(function(t4, e3) { - var i3 = h2.indexOf(t4.group); - l2[i3] || (l2[i3] = []), l2[i3].push(t4.name); - }), r2.seriesGroups = l2; - } - for (var c2 = function() { - for (var t4 = 0; t4 < n2.length; t4++) - if ("string" == typeof n2[t4]) { - if (!o2.isValidDate(n2[t4])) - throw new Error("You have provided invalid Date format. Please provide a valid JavaScript Date"); - i2.twoDSeriesX.push(o2.parseDate(n2[t4])); - } else - i2.twoDSeriesX.push(n2[t4]); - }, d2 = 0; d2 < t3.length; d2++) { - if (this.twoDSeries = [], this.twoDSeriesX = [], this.threeDSeries = [], void 0 === t3[d2].data) - return void console.error("It is a possibility that you may have not included 'data' property in series."); - if ("rangeBar" !== s2.chart.type && "rangeArea" !== s2.chart.type && "rangeBar" !== t3[d2].type && "rangeArea" !== t3[d2].type || (r2.isRangeData = true, r2.isComboCharts ? "rangeBar" !== t3[d2].type && "rangeArea" !== t3[d2].type || this.handleRangeData(t3, d2) : "rangeBar" !== s2.chart.type && "rangeArea" !== s2.chart.type || this.handleRangeData(t3, d2)), this.isMultiFormat()) - this.isFormat2DArray() ? this.handleFormat2DArray(t3, d2) : this.isFormatXY() && this.handleFormatXY(t3, d2), "candlestick" !== s2.chart.type && "candlestick" !== t3[d2].type && "boxPlot" !== s2.chart.type && "boxPlot" !== t3[d2].type || this.handleCandleStickBoxData(t3, d2), r2.series.push(this.twoDSeries), r2.labels.push(this.twoDSeriesX), r2.seriesX.push(this.twoDSeriesX), r2.seriesGoals = this.seriesGoals, d2 !== this.activeSeriesIndex || this.fallbackToCategory || (r2.isXNumeric = true); - else { - "datetime" === s2.xaxis.type ? (r2.isXNumeric = true, c2(), r2.seriesX.push(this.twoDSeriesX)) : "numeric" === s2.xaxis.type && (r2.isXNumeric = true, n2.length > 0 && (this.twoDSeriesX = n2, r2.seriesX.push(this.twoDSeriesX))), r2.labels.push(this.twoDSeriesX); - var g2 = t3[d2].data.map(function(t4) { - return x.parseNumber(t4); - }); - r2.series.push(g2); - } - r2.seriesZ.push(this.threeDSeries), void 0 !== t3[d2].name ? r2.seriesNames.push(t3[d2].name) : r2.seriesNames.push("series-" + parseInt(d2 + 1, 10)), void 0 !== t3[d2].color ? r2.seriesColors.push(t3[d2].color) : r2.seriesColors.push(void 0); - } - return this.w; - } }, { key: "parseDataNonAxisCharts", value: function(t3) { - var e2 = this.w.globals, i2 = this.w.config; - e2.series = t3.slice(), e2.seriesNames = i2.labels.slice(); - for (var a2 = 0; a2 < e2.series.length; a2++) - void 0 === e2.seriesNames[a2] && e2.seriesNames.push("series-" + (a2 + 1)); - return this.w; - } }, { key: "handleExternalLabelsData", value: function(t3) { - var e2 = this.w.config, i2 = this.w.globals; - if (e2.xaxis.categories.length > 0) - i2.labels = e2.xaxis.categories; - else if (e2.labels.length > 0) - i2.labels = e2.labels.slice(); - else if (this.fallbackToCategory) { - if (i2.labels = i2.labels[0], i2.seriesRange.length && (i2.seriesRange.map(function(t4) { - t4.forEach(function(t5) { - i2.labels.indexOf(t5.x) < 0 && t5.x && i2.labels.push(t5.x); - }); - }), i2.labels = Array.from(new Set(i2.labels.map(JSON.stringify)), JSON.parse)), e2.xaxis.convertedCatToNumeric) - new X(e2).convertCatToNumericXaxis(e2, this.ctx, i2.seriesX[0]), this._generateExternalLabels(t3); - } else - this._generateExternalLabels(t3); - } }, { key: "_generateExternalLabels", value: function(t3) { - var e2 = this.w.globals, i2 = this.w.config, a2 = []; - if (e2.axisCharts) { - if (e2.series.length > 0) - if (this.isFormatXY()) - for (var s2 = i2.series.map(function(t4, e3) { - return t4.data.filter(function(t5, e4, i3) { - return i3.findIndex(function(e5) { - return e5.x === t5.x; - }) === e4; - }); - }), r2 = s2.reduce(function(t4, e3, i3, a3) { - return a3[t4].length > e3.length ? t4 : i3; - }, 0), o2 = 0; o2 < s2[r2].length; o2++) - a2.push(o2 + 1); - else - for (var n2 = 0; n2 < e2.series[e2.maxValsInArrayIndex].length; n2++) - a2.push(n2 + 1); - e2.seriesX = []; - for (var l2 = 0; l2 < t3.length; l2++) - e2.seriesX.push(a2); - this.w.globals.isBarHorizontal || (e2.isXNumeric = true); - } - if (0 === a2.length) { - a2 = e2.axisCharts ? [] : e2.series.map(function(t4, e3) { - return e3 + 1; - }); - for (var h2 = 0; h2 < t3.length; h2++) - e2.seriesX.push(a2); - } - e2.labels = a2, i2.xaxis.convertedCatToNumeric && (e2.categoryLabels = a2.map(function(t4) { - return i2.xaxis.labels.formatter(t4); - })), e2.noLabelsProvided = true; - } }, { key: "parseData", value: function(t3) { - var e2 = this.w, i2 = e2.config, a2 = e2.globals; - if (this.excludeCollapsedSeriesInYAxis(), this.fallbackToCategory = false, this.ctx.core.resetGlobals(), this.ctx.core.isMultipleY(), a2.axisCharts ? (this.parseDataAxisCharts(t3), this.coreUtils.getLargestSeries()) : this.parseDataNonAxisCharts(t3), i2.chart.stacked) { - var s2 = new N(this.ctx); - a2.series = s2.setNullSeriesToZeroValues(a2.series); - } - this.coreUtils.getSeriesTotals(), a2.axisCharts && (a2.stackedSeriesTotals = this.coreUtils.getStackedSeriesTotals()), this.coreUtils.getPercentSeries(), a2.dataFormatXNumeric || a2.isXNumeric && ("numeric" !== i2.xaxis.type || 0 !== i2.labels.length || 0 !== i2.xaxis.categories.length) || this.handleExternalLabelsData(t3); - for (var r2 = this.coreUtils.getCategoryLabels(a2.labels), o2 = 0; o2 < r2.length; o2++) - if (Array.isArray(r2[o2])) { - a2.isMultiLineX = true; - break; - } - } }, { key: "excludeCollapsedSeriesInYAxis", value: function() { - var t3 = this, e2 = this.w; - e2.globals.ignoreYAxisIndexes = e2.globals.collapsedSeries.map(function(i2, a2) { - if (t3.w.globals.isMultipleYAxis && !e2.config.chart.stacked) - return i2.index; - }); - } }]), t2; - }(); - var B = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "getLabel", value: function(t3, e2, i2, a2) { - var s2 = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : [], r2 = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : "12px", o2 = !(arguments.length > 6 && void 0 !== arguments[6]) || arguments[6], n2 = this.w, l2 = void 0 === t3[a2] ? "" : t3[a2], h2 = l2, c2 = n2.globals.xLabelFormatter, d2 = n2.config.xaxis.labels.formatter, g2 = false, u2 = new M(this.ctx), p2 = l2; - o2 && (h2 = u2.xLabelFormat(c2, l2, p2, { i: a2, dateFormatter: new I(this.ctx).formatDate, w: n2 }), void 0 !== d2 && (h2 = d2(l2, t3[a2], { i: a2, dateFormatter: new I(this.ctx).formatDate, w: n2 }))); - var f2, x2; - e2.length > 0 ? (f2 = e2[a2].unit, x2 = null, e2.forEach(function(t4) { - "month" === t4.unit ? x2 = "year" : "day" === t4.unit ? x2 = "month" : "hour" === t4.unit ? x2 = "day" : "minute" === t4.unit && (x2 = "hour"); - }), g2 = x2 === f2, i2 = e2[a2].position, h2 = e2[a2].value) : "datetime" === n2.config.xaxis.type && void 0 === d2 && (h2 = ""), void 0 === h2 && (h2 = ""), h2 = Array.isArray(h2) ? h2 : h2.toString(); - var b2 = new m(this.ctx), v2 = {}; - v2 = n2.globals.rotateXLabels && o2 ? b2.getTextRects(h2, parseInt(r2, 10), null, "rotate(".concat(n2.config.xaxis.labels.rotate, " 0 0)"), false) : b2.getTextRects(h2, parseInt(r2, 10)); - var y2 = !n2.config.xaxis.labels.showDuplicates && this.ctx.timeScale; - return !Array.isArray(h2) && (0 === h2.indexOf("NaN") || 0 === h2.toLowerCase().indexOf("invalid") || h2.toLowerCase().indexOf("infinity") >= 0 || s2.indexOf(h2) >= 0 && y2) && (h2 = ""), { x: i2, text: h2, textRect: v2, isBold: g2 }; - } }, { key: "checkLabelBasedOnTickamount", value: function(t3, e2, i2) { - var a2 = this.w, s2 = a2.config.xaxis.tickAmount; - return "dataPoints" === s2 && (s2 = Math.round(a2.globals.gridWidth / 120)), s2 > i2 || t3 % Math.round(i2 / (s2 + 1)) == 0 || (e2.text = ""), e2; - } }, { key: "checkForOverflowingLabels", value: function(t3, e2, i2, a2, s2) { - var r2 = this.w; - if (0 === t3 && r2.globals.skipFirstTimelinelabel && (e2.text = ""), t3 === i2 - 1 && r2.globals.skipLastTimelinelabel && (e2.text = ""), r2.config.xaxis.labels.hideOverlappingLabels && a2.length > 0) { - var o2 = s2[s2.length - 1]; - e2.x < o2.textRect.width / (r2.globals.rotateXLabels ? Math.abs(r2.config.xaxis.labels.rotate) / 12 : 1.01) + o2.x && (e2.text = ""); - } - return e2; - } }, { key: "checkForReversedLabels", value: function(t3, e2) { - var i2 = this.w; - return i2.config.yaxis[t3] && i2.config.yaxis[t3].reversed && e2.reverse(), e2; - } }, { key: "isYAxisHidden", value: function(t3) { - var e2 = this.w, i2 = new y(this.ctx); - return !e2.config.yaxis[t3].show || !e2.config.yaxis[t3].showForNullSeries && i2.isSeriesNull(t3) && -1 === e2.globals.collapsedSeriesIndices.indexOf(t3); - } }, { key: "getYAxisForeColor", value: function(t3, e2) { - var i2 = this.w; - return Array.isArray(t3) && i2.globals.yAxisScale[e2] && this.ctx.theme.pushExtraColors(t3, i2.globals.yAxisScale[e2].result.length, false), t3; - } }, { key: "drawYAxisTicks", value: function(t3, e2, i2, a2, s2, r2, o2) { - var n2 = this.w, l2 = new m(this.ctx), h2 = n2.globals.translateY; - if (a2.show && e2 > 0) { - true === n2.config.yaxis[s2].opposite && (t3 += a2.width); - for (var c2 = e2; c2 >= 0; c2--) { - var d2 = h2 + e2 / 10 + n2.config.yaxis[s2].labels.offsetY - 1; - n2.globals.isBarHorizontal && (d2 = r2 * c2), "heatmap" === n2.config.chart.type && (d2 += r2 / 2); - var g2 = l2.drawLine(t3 + i2.offsetX - a2.width + a2.offsetX, d2 + a2.offsetY, t3 + i2.offsetX + a2.offsetX, d2 + a2.offsetY, a2.color); - o2.add(g2), h2 += r2; - } - } - } }]), t2; - }(); - var G = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "scaleSvgNode", value: function(t3, e2) { - var i2 = parseFloat(t3.getAttributeNS(null, "width")), a2 = parseFloat(t3.getAttributeNS(null, "height")); - t3.setAttributeNS(null, "width", i2 * e2), t3.setAttributeNS(null, "height", a2 * e2), t3.setAttributeNS(null, "viewBox", "0 0 " + i2 + " " + a2); - } }, { key: "fixSvgStringForIe11", value: function(t3) { - if (!x.isIE11()) - return t3.replace(/ /g, " "); - var e2 = 0, i2 = t3.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g, function(t4) { - return 2 === ++e2 ? 'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"' : t4; - }); - return i2 = (i2 = i2.replace(/xmlns:NS\d+=""/g, "")).replace(/NS\d+:(\w+:\w+=")/g, "$1"); - } }, { key: "getSvgString", value: function(t3) { - null == t3 && (t3 = 1); - var e2 = this.w.globals.dom.Paper.svg(); - if (1 !== t3) { - var i2 = this.w.globals.dom.Paper.node.cloneNode(true); - this.scaleSvgNode(i2, t3), e2 = new XMLSerializer().serializeToString(i2); - } - return this.fixSvgStringForIe11(e2); - } }, { key: "cleanup", value: function() { - var t3 = this.w, e2 = t3.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"), i2 = t3.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"), a2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect"); - Array.prototype.forEach.call(a2, function(t4) { - t4.setAttribute("width", 0); - }), e2 && e2[0] && (e2[0].setAttribute("x", -500), e2[0].setAttribute("x1", -500), e2[0].setAttribute("x2", -500)), i2 && i2[0] && (i2[0].setAttribute("y", -100), i2[0].setAttribute("y1", -100), i2[0].setAttribute("y2", -100)); - } }, { key: "svgUrl", value: function() { - this.cleanup(); - var t3 = this.getSvgString(), e2 = new Blob([t3], { type: "image/svg+xml;charset=utf-8" }); - return URL.createObjectURL(e2); - } }, { key: "dataURI", value: function(t3) { - var e2 = this; - return new Promise(function(i2) { - var a2 = e2.w, s2 = t3 ? t3.scale || t3.width / a2.globals.svgWidth : 1; - e2.cleanup(); - var r2 = document.createElement("canvas"); - r2.width = a2.globals.svgWidth * s2, r2.height = parseInt(a2.globals.dom.elWrap.style.height, 10) * s2; - var o2 = "transparent" === a2.config.chart.background ? "#fff" : a2.config.chart.background, n2 = r2.getContext("2d"); - n2.fillStyle = o2, n2.fillRect(0, 0, r2.width * s2, r2.height * s2); - var l2 = e2.getSvgString(s2); - if (window.canvg && x.isIE11()) { - var h2 = window.canvg.Canvg.fromString(n2, l2, { ignoreClear: true, ignoreDimensions: true }); - h2.start(); - var c2 = r2.msToBlob(); - h2.stop(), i2({ blob: c2 }); - } else { - var d2 = "data:image/svg+xml," + encodeURIComponent(l2), g2 = new Image(); - g2.crossOrigin = "anonymous", g2.onload = function() { - if (n2.drawImage(g2, 0, 0), r2.msToBlob) { - var t4 = r2.msToBlob(); - i2({ blob: t4 }); - } else { - var e3 = r2.toDataURL("image/png"); - i2({ imgURI: e3 }); - } - }, g2.src = d2; - } - }); - } }, { key: "exportToSVG", value: function() { - this.triggerDownload(this.svgUrl(), this.w.config.chart.toolbar.export.svg.filename, ".svg"); - } }, { key: "exportToPng", value: function() { - var t3 = this; - this.dataURI().then(function(e2) { - var i2 = e2.imgURI, a2 = e2.blob; - a2 ? navigator.msSaveOrOpenBlob(a2, t3.w.globals.chartID + ".png") : t3.triggerDownload(i2, t3.w.config.chart.toolbar.export.png.filename, ".png"); - }); - } }, { key: "exportToCSV", value: function(t3) { - var e2 = this, i2 = t3.series, a2 = t3.fileName, s2 = t3.columnDelimiter, r2 = void 0 === s2 ? "," : s2, o2 = t3.lineDelimiter, n2 = void 0 === o2 ? "\n" : o2, l2 = this.w; - i2 || (i2 = l2.config.series); - var h2 = [], c2 = [], d2 = "", g2 = l2.globals.series.map(function(t4, e3) { - return -1 === l2.globals.collapsedSeriesIndices.indexOf(e3) ? t4 : []; - }), p2 = Math.max.apply(Math, u(i2.map(function(t4) { - return t4.data ? t4.data.length : 0; - }))), f2 = new W(this.ctx), b2 = new B(this.ctx), v2 = function(t4) { - var i3 = ""; - if (l2.globals.axisCharts) { - if ("category" === l2.config.xaxis.type || l2.config.xaxis.convertedCatToNumeric) - if (l2.globals.isBarHorizontal) { - var a3 = l2.globals.yLabelFormatters[0], s3 = new N(e2.ctx).getActiveConfigSeriesIndex(); - i3 = a3(l2.globals.labels[t4], { seriesIndex: s3, dataPointIndex: t4, w: l2 }); - } else - i3 = b2.getLabel(l2.globals.labels, l2.globals.timescaleLabels, 0, t4).text; - "datetime" === l2.config.xaxis.type && (l2.config.xaxis.categories.length ? i3 = l2.config.xaxis.categories[t4] : l2.config.labels.length && (i3 = l2.config.labels[t4])); - } else - i3 = l2.config.labels[t4]; - return Array.isArray(i3) && (i3 = i3.join(" ")), x.isNumber(i3) ? i3 : i3.split(r2).join(""); - }, m2 = function(t4, e3) { - if (h2.length && 0 === e3 && c2.push(h2.join(r2)), t4.data) { - t4.data = t4.data.length && t4.data || u(Array(p2)).map(function() { - return ""; - }); - for (var a3 = 0; a3 < t4.data.length; a3++) { - h2 = []; - var s3 = v2(a3); - if (s3 || (f2.isFormatXY() ? s3 = i2[e3].data[a3].x : f2.isFormat2DArray() && (s3 = i2[e3].data[a3] ? i2[e3].data[a3][0] : "")), 0 === e3) { - h2.push((d3 = s3, "datetime" === l2.config.xaxis.type && String(d3).length >= 10 ? l2.config.chart.toolbar.export.csv.dateFormatter(s3) : x.isNumber(s3) ? s3 : s3.split(r2).join(""))); - for (var o3 = 0; o3 < l2.globals.series.length; o3++) { - var n3; - if (f2.isFormatXY()) - h2.push(null === (n3 = i2[o3].data[a3]) || void 0 === n3 ? void 0 : n3.y); - else - h2.push(g2[o3][a3]); - } - } - ("candlestick" === l2.config.chart.type || t4.type && "candlestick" === t4.type) && (h2.pop(), h2.push(l2.globals.seriesCandleO[e3][a3]), h2.push(l2.globals.seriesCandleH[e3][a3]), h2.push(l2.globals.seriesCandleL[e3][a3]), h2.push(l2.globals.seriesCandleC[e3][a3])), ("boxPlot" === l2.config.chart.type || t4.type && "boxPlot" === t4.type) && (h2.pop(), h2.push(l2.globals.seriesCandleO[e3][a3]), h2.push(l2.globals.seriesCandleH[e3][a3]), h2.push(l2.globals.seriesCandleM[e3][a3]), h2.push(l2.globals.seriesCandleL[e3][a3]), h2.push(l2.globals.seriesCandleC[e3][a3])), "rangeBar" === l2.config.chart.type && (h2.pop(), h2.push(l2.globals.seriesRangeStart[e3][a3]), h2.push(l2.globals.seriesRangeEnd[e3][a3])), h2.length && c2.push(h2.join(r2)); - } - } - var d3; - }; - h2.push(l2.config.chart.toolbar.export.csv.headerCategory), "boxPlot" === l2.config.chart.type ? (h2.push("minimum"), h2.push("q1"), h2.push("median"), h2.push("q3"), h2.push("maximum")) : "candlestick" === l2.config.chart.type ? (h2.push("open"), h2.push("high"), h2.push("low"), h2.push("close")) : "rangeBar" === l2.config.chart.type ? (h2.push("minimum"), h2.push("maximum")) : i2.map(function(t4, e3) { - var i3 = (t4.name ? t4.name : "series-".concat(e3)) + ""; - l2.globals.axisCharts && h2.push(i3.split(r2).join("") ? i3.split(r2).join("") : "series-".concat(e3)); - }), l2.globals.axisCharts || (h2.push(l2.config.chart.toolbar.export.csv.headerValue), c2.push(h2.join(r2))), i2.map(function(t4, e3) { - l2.globals.axisCharts ? m2(t4, e3) : ((h2 = []).push(l2.globals.labels[e3].split(r2).join("")), h2.push(g2[e3]), c2.push(h2.join(r2))); - }), d2 += c2.join(n2), this.triggerDownload("data:text/csv; charset=utf-8," + encodeURIComponent("\uFEFF" + d2), a2 || l2.config.chart.toolbar.export.csv.filename, ".csv"); - } }, { key: "triggerDownload", value: function(t3, e2, i2) { - var a2 = document.createElement("a"); - a2.href = t3, a2.download = (e2 || this.w.globals.chartID) + i2, document.body.appendChild(a2), a2.click(), document.body.removeChild(a2); - } }]), t2; - }(); - var V = function() { - function t2(e2, i2) { - a(this, t2), this.ctx = e2, this.elgrid = i2, this.w = e2.w; - var s2 = this.w; - this.axesUtils = new B(e2), this.xaxisLabels = s2.globals.labels.slice(), s2.globals.timescaleLabels.length > 0 && !s2.globals.isBarHorizontal && (this.xaxisLabels = s2.globals.timescaleLabels.slice()), s2.config.xaxis.overwriteCategories && (this.xaxisLabels = s2.config.xaxis.overwriteCategories), this.drawnLabels = [], this.drawnLabelsRects = [], "top" === s2.config.xaxis.position ? this.offY = 0 : this.offY = s2.globals.gridHeight + 1, this.offY = this.offY + s2.config.xaxis.axisBorder.offsetY, this.isCategoryBarHorizontal = "bar" === s2.config.chart.type && s2.config.plotOptions.bar.horizontal, this.xaxisFontSize = s2.config.xaxis.labels.style.fontSize, this.xaxisFontFamily = s2.config.xaxis.labels.style.fontFamily, this.xaxisForeColors = s2.config.xaxis.labels.style.colors, this.xaxisBorderWidth = s2.config.xaxis.axisBorder.width, this.isCategoryBarHorizontal && (this.xaxisBorderWidth = s2.config.yaxis[0].axisBorder.width.toString()), this.xaxisBorderWidth.indexOf("%") > -1 ? this.xaxisBorderWidth = s2.globals.gridWidth * parseInt(this.xaxisBorderWidth, 10) / 100 : this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth, 10), this.xaxisBorderHeight = s2.config.xaxis.axisBorder.height, this.yaxis = s2.config.yaxis[0]; - } - return r(t2, [{ key: "drawXaxis", value: function() { - var t3 = this.w, e2 = new m(this.ctx), i2 = e2.group({ class: "apexcharts-xaxis", transform: "translate(".concat(t3.config.xaxis.offsetX, ", ").concat(t3.config.xaxis.offsetY, ")") }), a2 = e2.group({ class: "apexcharts-xaxis-texts-g", transform: "translate(".concat(t3.globals.translateXAxisX, ", ").concat(t3.globals.translateXAxisY, ")") }); - i2.add(a2); - for (var s2 = [], r2 = 0; r2 < this.xaxisLabels.length; r2++) - s2.push(this.xaxisLabels[r2]); - if (this.drawXAxisLabelAndGroup(true, e2, a2, s2, t3.globals.isXNumeric, function(t4, e3) { - return e3; - }), t3.globals.hasXaxisGroups) { - var o2 = t3.globals.groups; - s2 = []; - for (var n2 = 0; n2 < o2.length; n2++) - s2.push(o2[n2].title); - var l2 = {}; - t3.config.xaxis.group.style && (l2.xaxisFontSize = t3.config.xaxis.group.style.fontSize, l2.xaxisFontFamily = t3.config.xaxis.group.style.fontFamily, l2.xaxisForeColors = t3.config.xaxis.group.style.colors, l2.fontWeight = t3.config.xaxis.group.style.fontWeight, l2.cssClass = t3.config.xaxis.group.style.cssClass), this.drawXAxisLabelAndGroup(false, e2, a2, s2, false, function(t4, e3) { - return o2[t4].cols * e3; - }, l2); - } - if (void 0 !== t3.config.xaxis.title.text) { - var h2 = e2.group({ class: "apexcharts-xaxis-title" }), c2 = e2.drawText({ x: t3.globals.gridWidth / 2 + t3.config.xaxis.title.offsetX, y: this.offY + parseFloat(this.xaxisFontSize) + ("bottom" === t3.config.xaxis.position ? t3.globals.xAxisLabelsHeight : -t3.globals.xAxisLabelsHeight - 10) + t3.config.xaxis.title.offsetY, text: t3.config.xaxis.title.text, textAnchor: "middle", fontSize: t3.config.xaxis.title.style.fontSize, fontFamily: t3.config.xaxis.title.style.fontFamily, fontWeight: t3.config.xaxis.title.style.fontWeight, foreColor: t3.config.xaxis.title.style.color, cssClass: "apexcharts-xaxis-title-text " + t3.config.xaxis.title.style.cssClass }); - h2.add(c2), i2.add(h2); - } - if (t3.config.xaxis.axisBorder.show) { - var d2 = t3.globals.barPadForNumericAxis, g2 = e2.drawLine(t3.globals.padHorizontal + t3.config.xaxis.axisBorder.offsetX - d2, this.offY, this.xaxisBorderWidth + d2, this.offY, t3.config.xaxis.axisBorder.color, 0, this.xaxisBorderHeight); - this.elgrid && this.elgrid.elGridBorders && t3.config.grid.show ? this.elgrid.elGridBorders.add(g2) : i2.add(g2); - } - return i2; - } }, { key: "drawXAxisLabelAndGroup", value: function(t3, e2, i2, a2, s2, r2) { - var o2, n2 = this, l2 = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : {}, h2 = [], c2 = [], d2 = this.w, g2 = l2.xaxisFontSize || this.xaxisFontSize, u2 = l2.xaxisFontFamily || this.xaxisFontFamily, p2 = l2.xaxisForeColors || this.xaxisForeColors, f2 = l2.fontWeight || d2.config.xaxis.labels.style.fontWeight, x2 = l2.cssClass || d2.config.xaxis.labels.style.cssClass, b2 = d2.globals.padHorizontal, v2 = a2.length, m2 = "category" === d2.config.xaxis.type ? d2.globals.dataPoints : v2; - if (0 === m2 && v2 > m2 && (m2 = v2), s2) { - var y2 = m2 > 1 ? m2 - 1 : m2; - o2 = d2.globals.gridWidth / Math.min(y2, v2 - 1), b2 = b2 + r2(0, o2) / 2 + d2.config.xaxis.labels.offsetX; - } else - o2 = d2.globals.gridWidth / m2, b2 = b2 + r2(0, o2) + d2.config.xaxis.labels.offsetX; - for (var w2 = function(s3) { - var l3 = b2 - r2(s3, o2) / 2 + d2.config.xaxis.labels.offsetX; - 0 === s3 && 1 === v2 && o2 / 2 === b2 && 1 === m2 && (l3 = d2.globals.gridWidth / 2); - var y3 = n2.axesUtils.getLabel(a2, d2.globals.timescaleLabels, l3, s3, h2, g2, t3), w3 = 28; - d2.globals.rotateXLabels && t3 && (w3 = 22), d2.config.xaxis.title.text && "top" === d2.config.xaxis.position && (w3 += parseFloat(d2.config.xaxis.title.style.fontSize) + 2), t3 || (w3 = w3 + parseFloat(g2) + (d2.globals.xAxisLabelsHeight - d2.globals.xAxisGroupLabelsHeight) + (d2.globals.rotateXLabels ? 10 : 0)), y3 = void 0 !== d2.config.xaxis.tickAmount && "dataPoints" !== d2.config.xaxis.tickAmount && "datetime" !== d2.config.xaxis.type ? n2.axesUtils.checkLabelBasedOnTickamount(s3, y3, v2) : n2.axesUtils.checkForOverflowingLabels(s3, y3, v2, h2, c2); - if (d2.config.xaxis.labels.show) { - var k3 = e2.drawText({ x: y3.x, y: n2.offY + d2.config.xaxis.labels.offsetY + w3 - ("top" === d2.config.xaxis.position ? d2.globals.xAxisHeight + d2.config.xaxis.axisTicks.height - 2 : 0), text: y3.text, textAnchor: "middle", fontWeight: y3.isBold ? 600 : f2, fontSize: g2, fontFamily: u2, foreColor: Array.isArray(p2) ? t3 && d2.config.xaxis.convertedCatToNumeric ? p2[d2.globals.minX + s3 - 1] : p2[s3] : p2, isPlainText: false, cssClass: (t3 ? "apexcharts-xaxis-label " : "apexcharts-xaxis-group-label ") + x2 }); - if (i2.add(k3), k3.on("click", function(t4) { - if ("function" == typeof d2.config.chart.events.xAxisLabelClick) { - var e3 = Object.assign({}, d2, { labelIndex: s3 }); - d2.config.chart.events.xAxisLabelClick(t4, n2.ctx, e3); - } - }), t3) { - var A2 = document.createElementNS(d2.globals.SVGNS, "title"); - A2.textContent = Array.isArray(y3.text) ? y3.text.join(" ") : y3.text, k3.node.appendChild(A2), "" !== y3.text && (h2.push(y3.text), c2.push(y3)); - } - } - s3 < v2 - 1 && (b2 += r2(s3 + 1, o2)); - }, k2 = 0; k2 <= v2 - 1; k2++) - w2(k2); - } }, { key: "drawXaxisInversed", value: function(t3) { - var e2, i2, a2 = this, s2 = this.w, r2 = new m(this.ctx), o2 = s2.config.yaxis[0].opposite ? s2.globals.translateYAxisX[t3] : 0, n2 = r2.group({ class: "apexcharts-yaxis apexcharts-xaxis-inversed", rel: t3 }), l2 = r2.group({ class: "apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g", transform: "translate(" + o2 + ", 0)" }); - n2.add(l2); - var h2 = []; - if (s2.config.yaxis[t3].show) - for (var c2 = 0; c2 < this.xaxisLabels.length; c2++) - h2.push(this.xaxisLabels[c2]); - e2 = s2.globals.gridHeight / h2.length, i2 = -e2 / 2.2; - var d2 = s2.globals.yLabelFormatters[0], g2 = s2.config.yaxis[0].labels; - if (g2.show) - for (var u2 = function(o3) { - var n3 = void 0 === h2[o3] ? "" : h2[o3]; - n3 = d2(n3, { seriesIndex: t3, dataPointIndex: o3, w: s2 }); - var c3 = a2.axesUtils.getYAxisForeColor(g2.style.colors, t3), u3 = 0; - Array.isArray(n3) && (u3 = n3.length / 2 * parseInt(g2.style.fontSize, 10)); - var p3 = g2.offsetX - 15, f3 = "end"; - a2.yaxis.opposite && (f3 = "start"), "left" === s2.config.yaxis[0].labels.align ? (p3 = g2.offsetX, f3 = "start") : "center" === s2.config.yaxis[0].labels.align ? (p3 = g2.offsetX, f3 = "middle") : "right" === s2.config.yaxis[0].labels.align && (f3 = "end"); - var x3 = r2.drawText({ x: p3, y: i2 + e2 + g2.offsetY - u3, text: n3, textAnchor: f3, foreColor: Array.isArray(c3) ? c3[o3] : c3, fontSize: g2.style.fontSize, fontFamily: g2.style.fontFamily, fontWeight: g2.style.fontWeight, isPlainText: false, cssClass: "apexcharts-yaxis-label " + g2.style.cssClass, maxWidth: g2.maxWidth }); - l2.add(x3), x3.on("click", function(t4) { - if ("function" == typeof s2.config.chart.events.xAxisLabelClick) { - var e3 = Object.assign({}, s2, { labelIndex: o3 }); - s2.config.chart.events.xAxisLabelClick(t4, a2.ctx, e3); - } - }); - var b3 = document.createElementNS(s2.globals.SVGNS, "title"); - if (b3.textContent = Array.isArray(n3) ? n3.join(" ") : n3, x3.node.appendChild(b3), 0 !== s2.config.yaxis[t3].labels.rotate) { - var v3 = r2.rotateAroundCenter(x3.node); - x3.node.setAttribute("transform", "rotate(".concat(s2.config.yaxis[t3].labels.rotate, " 0 ").concat(v3.y, ")")); - } - i2 += e2; - }, p2 = 0; p2 <= h2.length - 1; p2++) - u2(p2); - if (void 0 !== s2.config.yaxis[0].title.text) { - var f2 = r2.group({ class: "apexcharts-yaxis-title apexcharts-xaxis-title-inversed", transform: "translate(" + o2 + ", 0)" }), x2 = r2.drawText({ x: s2.config.yaxis[0].title.offsetX, y: s2.globals.gridHeight / 2 + s2.config.yaxis[0].title.offsetY, text: s2.config.yaxis[0].title.text, textAnchor: "middle", foreColor: s2.config.yaxis[0].title.style.color, fontSize: s2.config.yaxis[0].title.style.fontSize, fontWeight: s2.config.yaxis[0].title.style.fontWeight, fontFamily: s2.config.yaxis[0].title.style.fontFamily, cssClass: "apexcharts-yaxis-title-text " + s2.config.yaxis[0].title.style.cssClass }); - f2.add(x2), n2.add(f2); - } - var b2 = 0; - this.isCategoryBarHorizontal && s2.config.yaxis[0].opposite && (b2 = s2.globals.gridWidth); - var v2 = s2.config.xaxis.axisBorder; - if (v2.show) { - var y2 = r2.drawLine(s2.globals.padHorizontal + v2.offsetX + b2, 1 + v2.offsetY, s2.globals.padHorizontal + v2.offsetX + b2, s2.globals.gridHeight + v2.offsetY, v2.color, 0); - this.elgrid && this.elgrid.elGridBorders && s2.config.grid.show ? this.elgrid.elGridBorders.add(y2) : n2.add(y2); - } - return s2.config.yaxis[0].axisTicks.show && this.axesUtils.drawYAxisTicks(b2, h2.length, s2.config.yaxis[0].axisBorder, s2.config.yaxis[0].axisTicks, 0, e2, n2), n2; - } }, { key: "drawXaxisTicks", value: function(t3, e2, i2) { - var a2 = this.w, s2 = t3; - if (!(t3 < 0 || t3 - 2 > a2.globals.gridWidth)) { - var r2 = this.offY + a2.config.xaxis.axisTicks.offsetY; - if (e2 = e2 + r2 + a2.config.xaxis.axisTicks.height, "top" === a2.config.xaxis.position && (e2 = r2 - a2.config.xaxis.axisTicks.height), a2.config.xaxis.axisTicks.show) { - var o2 = new m(this.ctx).drawLine(t3 + a2.config.xaxis.axisTicks.offsetX, r2 + a2.config.xaxis.offsetY, s2 + a2.config.xaxis.axisTicks.offsetX, e2 + a2.config.xaxis.offsetY, a2.config.xaxis.axisTicks.color); - i2.add(o2), o2.node.classList.add("apexcharts-xaxis-tick"); - } - } - } }, { key: "getXAxisTicksPositions", value: function() { - var t3 = this.w, e2 = [], i2 = this.xaxisLabels.length, a2 = t3.globals.padHorizontal; - if (t3.globals.timescaleLabels.length > 0) - for (var s2 = 0; s2 < i2; s2++) - a2 = this.xaxisLabels[s2].position, e2.push(a2); - else - for (var r2 = i2, o2 = 0; o2 < r2; o2++) { - var n2 = r2; - t3.globals.isXNumeric && "bar" !== t3.config.chart.type && (n2 -= 1), a2 += t3.globals.gridWidth / n2, e2.push(a2); - } - return e2; - } }, { key: "xAxisLabelCorrections", value: function() { - var t3 = this.w, e2 = new m(this.ctx), i2 = t3.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g"), a2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-xaxis-texts-g text:not(.apexcharts-xaxis-group-label)"), s2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-inversed text"), r2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-xaxis-inversed-texts-g text tspan"); - if (t3.globals.rotateXLabels || t3.config.xaxis.labels.rotateAlways) - for (var o2 = 0; o2 < a2.length; o2++) { - var n2 = e2.rotateAroundCenter(a2[o2]); - n2.y = n2.y - 1, n2.x = n2.x + 1, a2[o2].setAttribute("transform", "rotate(".concat(t3.config.xaxis.labels.rotate, " ").concat(n2.x, " ").concat(n2.y, ")")), a2[o2].setAttribute("text-anchor", "end"); - i2.setAttribute("transform", "translate(0, ".concat(-10, ")")); - var l2 = a2[o2].childNodes; - t3.config.xaxis.labels.trim && Array.prototype.forEach.call(l2, function(i3) { - e2.placeTextWithEllipsis(i3, i3.textContent, t3.globals.xAxisLabelsHeight - ("bottom" === t3.config.legend.position ? 20 : 10)); - }); - } - else - !function() { - for (var i3 = t3.globals.gridWidth / (t3.globals.labels.length + 1), s3 = 0; s3 < a2.length; s3++) { - var r3 = a2[s3].childNodes; - t3.config.xaxis.labels.trim && "datetime" !== t3.config.xaxis.type && Array.prototype.forEach.call(r3, function(t4) { - e2.placeTextWithEllipsis(t4, t4.textContent, i3); - }); - } - }(); - if (s2.length > 0) { - var h2 = s2[s2.length - 1].getBBox(), c2 = s2[0].getBBox(); - h2.x < -20 && s2[s2.length - 1].parentNode.removeChild(s2[s2.length - 1]), c2.x + c2.width > t3.globals.gridWidth && !t3.globals.isBarHorizontal && s2[0].parentNode.removeChild(s2[0]); - for (var d2 = 0; d2 < r2.length; d2++) - e2.placeTextWithEllipsis(r2[d2], r2[d2].textContent, t3.config.yaxis[0].labels.maxWidth - (t3.config.yaxis[0].title.text ? 2 * parseFloat(t3.config.yaxis[0].title.style.fontSize) : 0) - 15); - } - } }]), t2; - }(); - var j = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - var i2 = this.w; - this.xaxisLabels = i2.globals.labels.slice(), this.axesUtils = new B(e2), this.isRangeBar = i2.globals.seriesRange.length && i2.globals.isBarHorizontal, i2.globals.timescaleLabels.length > 0 && (this.xaxisLabels = i2.globals.timescaleLabels.slice()); - } - return r(t2, [{ key: "drawGridArea", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, e2 = this.w, i2 = new m(this.ctx); - null === t3 && (t3 = i2.group({ class: "apexcharts-grid" })); - var a2 = i2.drawLine(e2.globals.padHorizontal, 1, e2.globals.padHorizontal, e2.globals.gridHeight, "transparent"), s2 = i2.drawLine(e2.globals.padHorizontal, e2.globals.gridHeight, e2.globals.gridWidth, e2.globals.gridHeight, "transparent"); - return t3.add(s2), t3.add(a2), t3; - } }, { key: "drawGrid", value: function() { - var t3 = null; - return this.w.globals.axisCharts && (t3 = this.renderGrid(), this.drawGridArea(t3.el)), t3; - } }, { key: "createGridMask", value: function() { - var t3 = this.w, e2 = t3.globals, i2 = new m(this.ctx), a2 = Array.isArray(t3.config.stroke.width) ? 0 : t3.config.stroke.width; - if (Array.isArray(t3.config.stroke.width)) { - var s2 = 0; - t3.config.stroke.width.forEach(function(t4) { - s2 = Math.max(s2, t4); - }), a2 = s2; - } - e2.dom.elGridRectMask = document.createElementNS(e2.SVGNS, "clipPath"), e2.dom.elGridRectMask.setAttribute("id", "gridRectMask".concat(e2.cuid)), e2.dom.elGridRectMarkerMask = document.createElementNS(e2.SVGNS, "clipPath"), e2.dom.elGridRectMarkerMask.setAttribute("id", "gridRectMarkerMask".concat(e2.cuid)), e2.dom.elForecastMask = document.createElementNS(e2.SVGNS, "clipPath"), e2.dom.elForecastMask.setAttribute("id", "forecastMask".concat(e2.cuid)), e2.dom.elNonForecastMask = document.createElementNS(e2.SVGNS, "clipPath"), e2.dom.elNonForecastMask.setAttribute("id", "nonForecastMask".concat(e2.cuid)); - var r2 = t3.config.chart.type, o2 = 0, n2 = 0; - ("bar" === r2 || "rangeBar" === r2 || "candlestick" === r2 || "boxPlot" === r2 || t3.globals.comboBarCount > 0) && t3.globals.isXNumeric && !t3.globals.isBarHorizontal && (o2 = t3.config.grid.padding.left, n2 = t3.config.grid.padding.right, e2.barPadForNumericAxis > o2 && (o2 = e2.barPadForNumericAxis, n2 = e2.barPadForNumericAxis)), e2.dom.elGridRect = i2.drawRect(-a2 - o2 - 2, 2 * -a2 - 2, e2.gridWidth + a2 + n2 + o2 + 4, e2.gridHeight + 4 * a2 + 4, 0, "#fff"); - var l2 = t3.globals.markers.largestSize + 1; - e2.dom.elGridRectMarker = i2.drawRect(2 * -l2, 2 * -l2, e2.gridWidth + 4 * l2, e2.gridHeight + 4 * l2, 0, "#fff"), e2.dom.elGridRectMask.appendChild(e2.dom.elGridRect.node), e2.dom.elGridRectMarkerMask.appendChild(e2.dom.elGridRectMarker.node); - var h2 = e2.dom.baseEl.querySelector("defs"); - h2.appendChild(e2.dom.elGridRectMask), h2.appendChild(e2.dom.elForecastMask), h2.appendChild(e2.dom.elNonForecastMask), h2.appendChild(e2.dom.elGridRectMarkerMask); - } }, { key: "_drawGridLines", value: function(t3) { - var e2 = t3.i, i2 = t3.x1, a2 = t3.y1, s2 = t3.x2, r2 = t3.y2, o2 = t3.xCount, n2 = t3.parent, l2 = this.w; - if (!(0 === e2 && l2.globals.skipFirstTimelinelabel || e2 === o2 - 1 && l2.globals.skipLastTimelinelabel && !l2.config.xaxis.labels.formatter || "radar" === l2.config.chart.type)) { - l2.config.grid.xaxis.lines.show && this._drawGridLine({ i: e2, x1: i2, y1: a2, x2: s2, y2: r2, xCount: o2, parent: n2 }); - var h2 = 0; - if (l2.globals.hasXaxisGroups && "between" === l2.config.xaxis.tickPlacement) { - var c2 = l2.globals.groups; - if (c2) { - for (var d2 = 0, g2 = 0; d2 < e2 && g2 < c2.length; g2++) - d2 += c2[g2].cols; - d2 === e2 && (h2 = 0.6 * l2.globals.xAxisLabelsHeight); - } - } - new V(this.ctx).drawXaxisTicks(i2, h2, l2.globals.dom.elGraphical); - } - } }, { key: "_drawGridLine", value: function(t3) { - var e2 = t3.i, i2 = t3.x1, a2 = t3.y1, s2 = t3.x2, r2 = t3.y2, o2 = t3.xCount, n2 = t3.parent, l2 = this.w, h2 = false, c2 = n2.node.classList.contains("apexcharts-gridlines-horizontal"), d2 = l2.config.grid.strokeDashArray, g2 = l2.globals.barPadForNumericAxis; - (0 === a2 && 0 === r2 || 0 === i2 && 0 === s2) && (h2 = true), a2 === l2.globals.gridHeight && r2 === l2.globals.gridHeight && (h2 = true), !l2.globals.isBarHorizontal || 0 !== e2 && e2 !== o2 - 1 || (h2 = true); - var u2 = new m(this).drawLine(i2 - (c2 ? g2 : 0), a2, s2 + (c2 ? g2 : 0), r2, l2.config.grid.borderColor, d2); - u2.node.classList.add("apexcharts-gridline"), h2 && l2.config.grid.show ? this.elGridBorders.add(u2) : n2.add(u2); - } }, { key: "_drawGridBandRect", value: function(t3) { - var e2 = t3.c, i2 = t3.x1, a2 = t3.y1, s2 = t3.x2, r2 = t3.y2, o2 = t3.type, n2 = this.w, l2 = new m(this.ctx), h2 = n2.globals.barPadForNumericAxis; - if ("column" !== o2 || "datetime" !== n2.config.xaxis.type) { - var c2 = n2.config.grid[o2].colors[e2], d2 = l2.drawRect(i2 - ("row" === o2 ? h2 : 0), a2, s2 + ("row" === o2 ? 2 * h2 : 0), r2, 0, c2, n2.config.grid[o2].opacity); - this.elg.add(d2), d2.attr("clip-path", "url(#gridRectMask".concat(n2.globals.cuid, ")")), d2.node.classList.add("apexcharts-grid-".concat(o2)); - } - } }, { key: "_drawXYLines", value: function(t3) { - var e2 = this, i2 = t3.xCount, a2 = t3.tickAmount, s2 = this.w; - if (s2.config.grid.xaxis.lines.show || s2.config.xaxis.axisTicks.show) { - var r2, o2 = s2.globals.padHorizontal, n2 = s2.globals.gridHeight; - s2.globals.timescaleLabels.length ? function(t4) { - for (var a3 = t4.xC, s3 = t4.x1, r3 = t4.y1, o3 = t4.x2, n3 = t4.y2, l3 = 0; l3 < a3; l3++) - s3 = e2.xaxisLabels[l3].position, o3 = e2.xaxisLabels[l3].position, e2._drawGridLines({ i: l3, x1: s3, y1: r3, x2: o3, y2: n3, xCount: i2, parent: e2.elgridLinesV }); - }({ xC: i2, x1: o2, y1: 0, x2: r2, y2: n2 }) : (s2.globals.isXNumeric && (i2 = s2.globals.xAxisScale.result.length), function(t4) { - for (var a3 = t4.xC, r3 = t4.x1, o3 = t4.y1, n3 = t4.x2, l3 = t4.y2, h3 = 0; h3 < a3 + (s2.globals.isXNumeric ? 0 : 1); h3++) - 0 === h3 && 1 === a3 && 1 === s2.globals.dataPoints && (n3 = r3 = s2.globals.gridWidth / 2), e2._drawGridLines({ i: h3, x1: r3, y1: o3, x2: n3, y2: l3, xCount: i2, parent: e2.elgridLinesV }), n3 = r3 += s2.globals.gridWidth / (s2.globals.isXNumeric ? a3 - 1 : a3); - }({ xC: i2, x1: o2, y1: 0, x2: r2, y2: n2 })); - } - if (s2.config.grid.yaxis.lines.show) { - var l2 = 0, h2 = 0, c2 = s2.globals.gridWidth, d2 = a2 + 1; - this.isRangeBar && (d2 = s2.globals.labels.length); - for (var g2 = 0; g2 < d2 + (this.isRangeBar ? 1 : 0); g2++) - this._drawGridLine({ i: g2, xCount: d2 + (this.isRangeBar ? 1 : 0), x1: 0, y1: l2, x2: c2, y2: h2, parent: this.elgridLinesH }), h2 = l2 += s2.globals.gridHeight / (this.isRangeBar ? d2 : a2); - } - } }, { key: "_drawInvertedXYLines", value: function(t3) { - var e2 = t3.xCount, i2 = this.w; - if (i2.config.grid.xaxis.lines.show || i2.config.xaxis.axisTicks.show) - for (var a2, s2 = i2.globals.padHorizontal, r2 = i2.globals.gridHeight, o2 = 0; o2 < e2 + 1; o2++) { - i2.config.grid.xaxis.lines.show && this._drawGridLine({ i: o2, xCount: e2 + 1, x1: s2, y1: 0, x2: a2, y2: r2, parent: this.elgridLinesV }), new V(this.ctx).drawXaxisTicks(s2, 0, i2.globals.dom.elGraphical), a2 = s2 = s2 + i2.globals.gridWidth / e2 + 0.3; - } - if (i2.config.grid.yaxis.lines.show) - for (var n2 = 0, l2 = 0, h2 = i2.globals.gridWidth, c2 = 0; c2 < i2.globals.dataPoints + 1; c2++) - this._drawGridLine({ i: c2, xCount: i2.globals.dataPoints + 1, x1: 0, y1: n2, x2: h2, y2: l2, parent: this.elgridLinesH }), l2 = n2 += i2.globals.gridHeight / i2.globals.dataPoints; - } }, { key: "renderGrid", value: function() { - var t3 = this.w, e2 = new m(this.ctx); - this.elg = e2.group({ class: "apexcharts-grid" }), this.elgridLinesH = e2.group({ class: "apexcharts-gridlines-horizontal" }), this.elgridLinesV = e2.group({ class: "apexcharts-gridlines-vertical" }), this.elGridBorders = e2.group({ class: "apexcharts-grid-borders" }), this.elg.add(this.elgridLinesH), this.elg.add(this.elgridLinesV), t3.config.grid.show || (this.elgridLinesV.hide(), this.elgridLinesH.hide(), this.elGridBorders.hide()); - for (var i2, a2 = t3.globals.yAxisScale.length ? t3.globals.yAxisScale[0].result.length - 1 : 5, s2 = 0; s2 < t3.globals.series.length && (void 0 !== t3.globals.yAxisScale[s2] && (a2 = t3.globals.yAxisScale[s2].result.length - 1), !(a2 > 2)); s2++) - ; - return !t3.globals.isBarHorizontal || this.isRangeBar ? (i2 = this.xaxisLabels.length, this.isRangeBar && (i2--, a2 = t3.globals.labels.length, t3.config.xaxis.tickAmount && t3.config.xaxis.labels.formatter && (i2 = t3.config.xaxis.tickAmount)), this._drawXYLines({ xCount: i2, tickAmount: a2 })) : (i2 = a2, a2 = t3.globals.xTickAmount, this._drawInvertedXYLines({ xCount: i2, tickAmount: a2 })), this.drawGridBands(i2, a2), { el: this.elg, elGridBorders: this.elGridBorders, xAxisTickWidth: t3.globals.gridWidth / i2 }; - } }, { key: "drawGridBands", value: function(t3, e2) { - var i2 = this.w; - if (void 0 !== i2.config.grid.row.colors && i2.config.grid.row.colors.length > 0) - for (var a2 = 0, s2 = i2.globals.gridHeight / e2, r2 = i2.globals.gridWidth, o2 = 0, n2 = 0; o2 < e2; o2++, n2++) - n2 >= i2.config.grid.row.colors.length && (n2 = 0), this._drawGridBandRect({ c: n2, x1: 0, y1: a2, x2: r2, y2: s2, type: "row" }), a2 += i2.globals.gridHeight / e2; - if (void 0 !== i2.config.grid.column.colors && i2.config.grid.column.colors.length > 0) - for (var l2 = i2.globals.isBarHorizontal || "on" !== i2.config.xaxis.tickPlacement || "category" !== i2.config.xaxis.type && !i2.config.xaxis.convertedCatToNumeric ? t3 : t3 - 1, h2 = i2.globals.padHorizontal, c2 = i2.globals.padHorizontal + i2.globals.gridWidth / l2, d2 = i2.globals.gridHeight, g2 = 0, u2 = 0; g2 < t3; g2++, u2++) - u2 >= i2.config.grid.column.colors.length && (u2 = 0), this._drawGridBandRect({ c: u2, x1: h2, y1: 0, x2: c2, y2: d2, type: "column" }), h2 += i2.globals.gridWidth / l2; - } }]), t2; - }(); - var _ = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "niceScale", value: function(t3, e2) { - var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10, a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, s2 = arguments.length > 4 ? arguments[4] : void 0, r2 = this.w, o2 = Math.abs(e2 - t3); - if ("dataPoints" === (i2 = this._adjustTicksForSmallRange(i2, a2, o2)) && (i2 = r2.globals.dataPoints - 1), t3 === Number.MIN_VALUE && 0 === e2 || !x.isNumber(t3) && !x.isNumber(e2) || t3 === Number.MIN_VALUE && e2 === -Number.MAX_VALUE) - return t3 = 0, e2 = i2, this.linearScale(t3, e2, i2); - t3 > e2 ? (console.warn("axis.min cannot be greater than axis.max"), e2 = t3 + 0.1) : t3 === e2 && (t3 = 0 === t3 ? 0 : t3 - 0.5, e2 = 0 === e2 ? 2 : e2 + 0.5); - var n2 = []; - o2 < 1 && s2 && ("candlestick" === r2.config.chart.type || "candlestick" === r2.config.series[a2].type || "boxPlot" === r2.config.chart.type || "boxPlot" === r2.config.series[a2].type || r2.globals.isRangeData) && (e2 *= 1.01); - var l2 = i2 + 1; - l2 < 2 ? l2 = 2 : l2 > 2 && (l2 -= 2); - var h2 = o2 / l2, c2 = Math.floor(x.log10(h2)), d2 = Math.pow(10, c2), g2 = Math.round(h2 / d2); - g2 < 1 && (g2 = 1); - var u2 = g2 * d2, p2 = u2 * Math.floor(t3 / u2), f2 = u2 * Math.ceil(e2 / u2), b2 = p2; - if (s2 && o2 > 2) { - for (; n2.push(x.stripNumber(b2, 7)), !((b2 += u2) > f2); ) - ; - return { result: n2, niceMin: n2[0], niceMax: n2[n2.length - 1] }; - } - var v2 = t3; - (n2 = []).push(x.stripNumber(v2, 7)); - for (var m2 = Math.abs(e2 - t3) / i2, y2 = 0; y2 <= i2; y2++) - v2 += m2, n2.push(v2); - return n2[n2.length - 2] >= e2 && n2.pop(), { result: n2, niceMin: n2[0], niceMax: n2[n2.length - 1] }; - } }, { key: "linearScale", value: function(t3, e2) { - var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10, a2 = arguments.length > 3 ? arguments[3] : void 0, s2 = Math.abs(e2 - t3); - "dataPoints" === (i2 = this._adjustTicksForSmallRange(i2, a2, s2)) && (i2 = this.w.globals.dataPoints - 1); - var r2 = s2 / i2; - i2 === Number.MAX_VALUE && (i2 = 10, r2 = 1); - for (var o2 = [], n2 = t3; i2 >= 0; ) - o2.push(n2), n2 += r2, i2 -= 1; - return { result: o2, niceMin: o2[0], niceMax: o2[o2.length - 1] }; - } }, { key: "logarithmicScaleNice", value: function(t3, e2, i2) { - e2 <= 0 && (e2 = Math.max(t3, i2)), t3 <= 0 && (t3 = Math.min(e2, i2)); - for (var a2 = [], s2 = Math.ceil(Math.log(e2) / Math.log(i2) + 1), r2 = Math.floor(Math.log(t3) / Math.log(i2)); r2 < s2; r2++) - a2.push(Math.pow(i2, r2)); - return { result: a2, niceMin: a2[0], niceMax: a2[a2.length - 1] }; - } }, { key: "logarithmicScale", value: function(t3, e2, i2) { - e2 <= 0 && (e2 = Math.max(t3, i2)), t3 <= 0 && (t3 = Math.min(e2, i2)); - for (var a2 = [], s2 = Math.log(e2) / Math.log(i2), r2 = Math.log(t3) / Math.log(i2), o2 = s2 - r2, n2 = Math.round(o2), l2 = o2 / n2, h2 = 0, c2 = r2; h2 < n2; h2++, c2 += l2) - a2.push(Math.pow(i2, c2)); - return a2.push(Math.pow(i2, s2)), { result: a2, niceMin: t3, niceMax: e2 }; - } }, { key: "_adjustTicksForSmallRange", value: function(t3, e2, i2) { - var a2 = t3; - if (void 0 !== e2 && this.w.config.yaxis[e2].labels.formatter && void 0 === this.w.config.yaxis[e2].tickAmount) { - var s2 = Number(this.w.config.yaxis[e2].labels.formatter(1)); - x.isNumber(s2) && 0 === this.w.globals.yValueDecimal && (a2 = Math.ceil(i2)); - } - return a2 < t3 ? a2 : t3; - } }, { key: "setYScaleForIndex", value: function(t3, e2, i2) { - var a2 = this.w.globals, s2 = this.w.config, r2 = a2.isBarHorizontal ? s2.xaxis : s2.yaxis[t3]; - void 0 === a2.yAxisScale[t3] && (a2.yAxisScale[t3] = []); - var o2 = Math.abs(i2 - e2); - if (r2.logarithmic && o2 <= 5 && (a2.invalidLogScale = true), r2.logarithmic && o2 > 5) - a2.allSeriesCollapsed = false, a2.yAxisScale[t3] = this.logarithmicScale(e2, i2, r2.logBase), a2.yAxisScale[t3] = r2.forceNiceScale ? this.logarithmicScaleNice(e2, i2, r2.logBase) : this.logarithmicScale(e2, i2, r2.logBase); - else if (i2 !== -Number.MAX_VALUE && x.isNumber(i2)) - if (a2.allSeriesCollapsed = false, void 0 === r2.min && void 0 === r2.max || r2.forceNiceScale) { - var n2 = void 0 === s2.yaxis[t3].max && void 0 === s2.yaxis[t3].min || s2.yaxis[t3].forceNiceScale; - a2.yAxisScale[t3] = this.niceScale(e2, i2, r2.tickAmount ? r2.tickAmount : o2 < 5 && o2 > 1 ? o2 + 1 : 5, t3, n2); - } else - a2.yAxisScale[t3] = this.linearScale(e2, i2, r2.tickAmount, t3); - else - a2.yAxisScale[t3] = this.linearScale(0, 5, 5); - } }, { key: "setXScale", value: function(t3, e2) { - var i2 = this.w, a2 = i2.globals, s2 = i2.config.xaxis, r2 = Math.abs(e2 - t3); - return e2 !== -Number.MAX_VALUE && x.isNumber(e2) ? a2.xAxisScale = this.linearScale(t3, e2, s2.tickAmount ? s2.tickAmount : r2 < 5 && r2 > 1 ? r2 + 1 : 5, 0) : a2.xAxisScale = this.linearScale(0, 5, 5), a2.xAxisScale; - } }, { key: "setMultipleYScales", value: function() { - var t3 = this, e2 = this.w.globals, i2 = this.w.config, a2 = e2.minYArr.concat([]), s2 = e2.maxYArr.concat([]), r2 = []; - i2.yaxis.forEach(function(e3, o2) { - var n2 = o2; - i2.series.forEach(function(t4, i3) { - t4.name === e3.seriesName && (n2 = i3, o2 !== i3 ? r2.push({ index: i3, similarIndex: o2, alreadyExists: true }) : r2.push({ index: i3 })); - }); - var l2 = a2[n2], h2 = s2[n2]; - t3.setYScaleForIndex(o2, l2, h2); - }), this.sameScaleInMultipleAxes(a2, s2, r2); - } }, { key: "sameScaleInMultipleAxes", value: function(t3, e2, i2) { - var a2 = this, s2 = this.w.config, r2 = this.w.globals, o2 = []; - i2.forEach(function(t4) { - t4.alreadyExists && (void 0 === o2[t4.index] && (o2[t4.index] = []), o2[t4.index].push(t4.index), o2[t4.index].push(t4.similarIndex)); - }), r2.yAxisSameScaleIndices = o2, o2.forEach(function(t4, e3) { - o2.forEach(function(i3, a3) { - var s3, r3; - e3 !== a3 && (s3 = t4, r3 = i3, s3.filter(function(t5) { - return -1 !== r3.indexOf(t5); - })).length > 0 && (o2[e3] = o2[e3].concat(o2[a3])); - }); - }); - var n2 = o2.map(function(t4) { - return t4.filter(function(e3, i3) { - return t4.indexOf(e3) === i3; - }); - }).map(function(t4) { - return t4.sort(); - }); - o2 = o2.filter(function(t4) { - return !!t4; - }); - var l2 = n2.slice(), h2 = l2.map(function(t4) { - return JSON.stringify(t4); - }); - l2 = l2.filter(function(t4, e3) { - return h2.indexOf(JSON.stringify(t4)) === e3; - }); - var c2 = [], d2 = []; - t3.forEach(function(t4, i3) { - l2.forEach(function(a3, s3) { - a3.indexOf(i3) > -1 && (void 0 === c2[s3] && (c2[s3] = [], d2[s3] = []), c2[s3].push({ key: i3, value: t4 }), d2[s3].push({ key: i3, value: e2[i3] })); - }); - }); - var g2 = Array.apply(null, Array(l2.length)).map(Number.prototype.valueOf, Number.MIN_VALUE), u2 = Array.apply(null, Array(l2.length)).map(Number.prototype.valueOf, -Number.MAX_VALUE); - c2.forEach(function(t4, e3) { - t4.forEach(function(t5, i3) { - g2[e3] = Math.min(t5.value, g2[e3]); - }); - }), d2.forEach(function(t4, e3) { - t4.forEach(function(t5, i3) { - u2[e3] = Math.max(t5.value, u2[e3]); - }); - }), t3.forEach(function(t4, e3) { - d2.forEach(function(t5, i3) { - var o3 = g2[i3], n3 = u2[i3]; - s2.chart.stacked && (n3 = 0, t5.forEach(function(t6, e4) { - t6.value !== -Number.MAX_VALUE && (n3 += t6.value), o3 !== Number.MIN_VALUE && (o3 += c2[i3][e4].value); - })), t5.forEach(function(i4, l3) { - t5[l3].key === e3 && (void 0 !== s2.yaxis[e3].min && (o3 = "function" == typeof s2.yaxis[e3].min ? s2.yaxis[e3].min(r2.minY) : s2.yaxis[e3].min), void 0 !== s2.yaxis[e3].max && (n3 = "function" == typeof s2.yaxis[e3].max ? s2.yaxis[e3].max(r2.maxY) : s2.yaxis[e3].max), a2.setYScaleForIndex(e3, o3, n3)); - }); - }); - }); - } }, { key: "autoScaleY", value: function(t3, e2, i2) { - t3 || (t3 = this); - var a2 = t3.w; - if (a2.globals.isMultipleYAxis || a2.globals.collapsedSeries.length) - return console.warn("autoScaleYaxis not supported in a multi-yaxis chart."), e2; - var s2 = a2.globals.seriesX[0], r2 = a2.config.chart.stacked; - return e2.forEach(function(t4, o2) { - for (var n2 = 0, l2 = 0; l2 < s2.length; l2++) - if (s2[l2] >= i2.xaxis.min) { - n2 = l2; - break; - } - var h2, c2, d2 = a2.globals.minYArr[o2], g2 = a2.globals.maxYArr[o2], u2 = a2.globals.stackedSeriesTotals; - a2.globals.series.forEach(function(o3, l3) { - var p2 = o3[n2]; - r2 ? (p2 = u2[n2], h2 = c2 = p2, u2.forEach(function(t5, e3) { - s2[e3] <= i2.xaxis.max && s2[e3] >= i2.xaxis.min && (t5 > c2 && null !== t5 && (c2 = t5), o3[e3] < h2 && null !== o3[e3] && (h2 = o3[e3])); - })) : (h2 = c2 = p2, o3.forEach(function(t5, e3) { - if (s2[e3] <= i2.xaxis.max && s2[e3] >= i2.xaxis.min) { - var r3 = t5, o4 = t5; - a2.globals.series.forEach(function(i3, a3) { - null !== t5 && (r3 = Math.min(i3[e3], r3), o4 = Math.max(i3[e3], o4)); - }), o4 > c2 && null !== o4 && (c2 = o4), r3 < h2 && null !== r3 && (h2 = r3); - } - })), void 0 === h2 && void 0 === c2 && (h2 = d2, c2 = g2), c2 *= c2 < 0 ? 0.9 : 1.1, 0 === (h2 *= h2 < 0 ? 1.1 : 0.9) && 0 === c2 && (h2 = -1, c2 = 1), c2 < 0 && c2 < g2 && (c2 = g2), h2 < 0 && h2 > d2 && (h2 = d2), e2.length > 1 ? (e2[l3].min = void 0 === t4.min ? h2 : t4.min, e2[l3].max = void 0 === t4.max ? c2 : t4.max) : (e2[0].min = void 0 === t4.min ? h2 : t4.min, e2[0].max = void 0 === t4.max ? c2 : t4.max); - }); - }), e2; - } }]), t2; - }(); - var U = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.scales = new _(e2); - } - return r(t2, [{ key: "init", value: function() { - this.setYRange(), this.setXRange(), this.setZRange(); - } }, { key: "getMinYMaxY", value: function(t3) { - var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Number.MAX_VALUE, i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : -Number.MAX_VALUE, a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null, s2 = this.w.config, r2 = this.w.globals, o2 = -Number.MAX_VALUE, n2 = Number.MIN_VALUE; - null === a2 && (a2 = t3 + 1); - var l2 = r2.series, h2 = l2, c2 = l2; - "candlestick" === s2.chart.type ? (h2 = r2.seriesCandleL, c2 = r2.seriesCandleH) : "boxPlot" === s2.chart.type ? (h2 = r2.seriesCandleO, c2 = r2.seriesCandleC) : r2.isRangeData && (h2 = r2.seriesRangeStart, c2 = r2.seriesRangeEnd); - for (var d2 = t3; d2 < a2; d2++) { - r2.dataPoints = Math.max(r2.dataPoints, l2[d2].length), r2.categoryLabels.length && (r2.dataPoints = r2.categoryLabels.filter(function(t4) { - return void 0 !== t4; - }).length), r2.labels.length && "datetime" !== s2.xaxis.type && 0 !== r2.series.reduce(function(t4, e3) { - return t4 + e3.length; - }, 0) && (r2.dataPoints = Math.max(r2.dataPoints, r2.labels.length)); - for (var g2 = 0; g2 < r2.series[d2].length; g2++) { - var u2 = l2[d2][g2]; - null !== u2 && x.isNumber(u2) ? (void 0 !== c2[d2][g2] && (o2 = Math.max(o2, c2[d2][g2]), e2 = Math.min(e2, c2[d2][g2])), void 0 !== h2[d2][g2] && (e2 = Math.min(e2, h2[d2][g2]), i2 = Math.max(i2, h2[d2][g2])), "candlestick" !== this.w.config.chart.type && "boxPlot" !== this.w.config.chart.type && "rangeArea" === this.w.config.chart.type && "rangeBar" === this.w.config.chart.type || ("candlestick" !== this.w.config.chart.type && "boxPlot" !== this.w.config.chart.type || void 0 !== r2.seriesCandleC[d2][g2] && (o2 = Math.max(o2, r2.seriesCandleO[d2][g2]), o2 = Math.max(o2, r2.seriesCandleH[d2][g2]), o2 = Math.max(o2, r2.seriesCandleL[d2][g2]), o2 = Math.max(o2, r2.seriesCandleC[d2][g2]), "boxPlot" === this.w.config.chart.type && (o2 = Math.max(o2, r2.seriesCandleM[d2][g2]))), !s2.series[d2].type || "candlestick" === s2.series[d2].type && "boxPlot" === s2.series[d2].type && "rangeArea" === s2.series[d2].type && "rangeBar" === s2.series[d2].type || (o2 = Math.max(o2, r2.series[d2][g2]), e2 = Math.min(e2, r2.series[d2][g2])), i2 = o2), r2.seriesGoals[d2] && r2.seriesGoals[d2][g2] && Array.isArray(r2.seriesGoals[d2][g2]) && r2.seriesGoals[d2][g2].forEach(function(t4) { - n2 !== Number.MIN_VALUE && (n2 = Math.min(n2, t4.value), e2 = n2), o2 = Math.max(o2, t4.value), i2 = o2; - }), x.isFloat(u2) && (u2 = x.noExponents(u2), r2.yValueDecimal = Math.max(r2.yValueDecimal, u2.toString().split(".")[1].length)), n2 > h2[d2][g2] && h2[d2][g2] < 0 && (n2 = h2[d2][g2])) : r2.hasNullValues = true; - } - } - return "rangeBar" === s2.chart.type && r2.seriesRangeStart.length && r2.isBarHorizontal && (n2 = e2), "bar" === s2.chart.type && (n2 < 0 && o2 < 0 && (o2 = 0), n2 === Number.MIN_VALUE && (n2 = 0)), { minY: n2, maxY: o2, lowestY: e2, highestY: i2 }; - } }, { key: "setYRange", value: function() { - var t3 = this.w.globals, e2 = this.w.config; - t3.maxY = -Number.MAX_VALUE, t3.minY = Number.MIN_VALUE; - var i2 = Number.MAX_VALUE; - if (t3.isMultipleYAxis) - for (var a2 = 0; a2 < t3.series.length; a2++) { - var s2 = this.getMinYMaxY(a2, i2, null, a2 + 1); - t3.minYArr.push(s2.minY), t3.maxYArr.push(s2.maxY), i2 = s2.lowestY; - } - var r2 = this.getMinYMaxY(0, i2, null, t3.series.length); - if (t3.minY = r2.minY, t3.maxY = r2.maxY, i2 = r2.lowestY, e2.chart.stacked && this._setStackedMinMax(), ("line" === e2.chart.type || "area" === e2.chart.type || "candlestick" === e2.chart.type || "boxPlot" === e2.chart.type || "rangeBar" === e2.chart.type && !t3.isBarHorizontal) && t3.minY === Number.MIN_VALUE && i2 !== -Number.MAX_VALUE && i2 !== t3.maxY) { - var o2 = t3.maxY - i2; - (i2 >= 0 && i2 <= 10 || void 0 !== e2.yaxis[0].min || void 0 !== e2.yaxis[0].max) && (o2 = 0), t3.minY = i2 - 5 * o2 / 100, i2 > 0 && t3.minY < 0 && (t3.minY = 0), t3.maxY = t3.maxY + 5 * o2 / 100; - } - if (e2.yaxis.forEach(function(e3, i3) { - void 0 !== e3.max && ("number" == typeof e3.max ? t3.maxYArr[i3] = e3.max : "function" == typeof e3.max && (t3.maxYArr[i3] = e3.max(t3.isMultipleYAxis ? t3.maxYArr[i3] : t3.maxY)), t3.maxY = t3.maxYArr[i3]), void 0 !== e3.min && ("number" == typeof e3.min ? t3.minYArr[i3] = e3.min : "function" == typeof e3.min && (t3.minYArr[i3] = e3.min(t3.isMultipleYAxis ? t3.minYArr[i3] === Number.MIN_VALUE ? 0 : t3.minYArr[i3] : t3.minY)), t3.minY = t3.minYArr[i3]); - }), t3.isBarHorizontal) { - ["min", "max"].forEach(function(i3) { - void 0 !== e2.xaxis[i3] && "number" == typeof e2.xaxis[i3] && ("min" === i3 ? t3.minY = e2.xaxis[i3] : t3.maxY = e2.xaxis[i3]); - }); - } - return t3.isMultipleYAxis ? (this.scales.setMultipleYScales(), t3.minY = i2, t3.yAxisScale.forEach(function(e3, i3) { - t3.minYArr[i3] = e3.niceMin, t3.maxYArr[i3] = e3.niceMax; - })) : (this.scales.setYScaleForIndex(0, t3.minY, t3.maxY), t3.minY = t3.yAxisScale[0].niceMin, t3.maxY = t3.yAxisScale[0].niceMax, t3.minYArr[0] = t3.yAxisScale[0].niceMin, t3.maxYArr[0] = t3.yAxisScale[0].niceMax), { minY: t3.minY, maxY: t3.maxY, minYArr: t3.minYArr, maxYArr: t3.maxYArr, yAxisScale: t3.yAxisScale }; - } }, { key: "setXRange", value: function() { - var t3 = this.w.globals, e2 = this.w.config, i2 = "numeric" === e2.xaxis.type || "datetime" === e2.xaxis.type || "category" === e2.xaxis.type && !t3.noLabelsProvided || t3.noLabelsProvided || t3.isXNumeric; - if (t3.isXNumeric && function() { - for (var e3 = 0; e3 < t3.series.length; e3++) - if (t3.labels[e3]) - for (var i3 = 0; i3 < t3.labels[e3].length; i3++) - null !== t3.labels[e3][i3] && x.isNumber(t3.labels[e3][i3]) && (t3.maxX = Math.max(t3.maxX, t3.labels[e3][i3]), t3.initialMaxX = Math.max(t3.maxX, t3.labels[e3][i3]), t3.minX = Math.min(t3.minX, t3.labels[e3][i3]), t3.initialMinX = Math.min(t3.minX, t3.labels[e3][i3])); - }(), t3.noLabelsProvided && 0 === e2.xaxis.categories.length && (t3.maxX = t3.labels[t3.labels.length - 1], t3.initialMaxX = t3.labels[t3.labels.length - 1], t3.minX = 1, t3.initialMinX = 1), t3.isXNumeric || t3.noLabelsProvided || t3.dataFormatXNumeric) { - var a2; - if (void 0 === e2.xaxis.tickAmount ? (a2 = Math.round(t3.svgWidth / 150), "numeric" === e2.xaxis.type && t3.dataPoints < 30 && (a2 = t3.dataPoints - 1), a2 > t3.dataPoints && 0 !== t3.dataPoints && (a2 = t3.dataPoints - 1)) : "dataPoints" === e2.xaxis.tickAmount ? (t3.series.length > 1 && (a2 = t3.series[t3.maxValsInArrayIndex].length - 1), t3.isXNumeric && (a2 = t3.maxX - t3.minX - 1)) : a2 = e2.xaxis.tickAmount, t3.xTickAmount = a2, void 0 !== e2.xaxis.max && "number" == typeof e2.xaxis.max && (t3.maxX = e2.xaxis.max), void 0 !== e2.xaxis.min && "number" == typeof e2.xaxis.min && (t3.minX = e2.xaxis.min), void 0 !== e2.xaxis.range && (t3.minX = t3.maxX - e2.xaxis.range), t3.minX !== Number.MAX_VALUE && t3.maxX !== -Number.MAX_VALUE) - if (e2.xaxis.convertedCatToNumeric && !t3.dataFormatXNumeric) { - for (var s2 = [], r2 = t3.minX - 1; r2 < t3.maxX; r2++) - s2.push(r2 + 1); - t3.xAxisScale = { result: s2, niceMin: s2[0], niceMax: s2[s2.length - 1] }; - } else - t3.xAxisScale = this.scales.setXScale(t3.minX, t3.maxX); - else - t3.xAxisScale = this.scales.linearScale(0, a2, a2), t3.noLabelsProvided && t3.labels.length > 0 && (t3.xAxisScale = this.scales.linearScale(1, t3.labels.length, a2 - 1), t3.seriesX = t3.labels.slice()); - i2 && (t3.labels = t3.xAxisScale.result.slice()); - } - return t3.isBarHorizontal && t3.labels.length && (t3.xTickAmount = t3.labels.length), this._handleSingleDataPoint(), this._getMinXDiff(), { minX: t3.minX, maxX: t3.maxX }; - } }, { key: "setZRange", value: function() { - var t3 = this.w.globals; - if (t3.isDataXYZ) { - for (var e2 = 0; e2 < t3.series.length; e2++) - if (void 0 !== t3.seriesZ[e2]) - for (var i2 = 0; i2 < t3.seriesZ[e2].length; i2++) - null !== t3.seriesZ[e2][i2] && x.isNumber(t3.seriesZ[e2][i2]) && (t3.maxZ = Math.max(t3.maxZ, t3.seriesZ[e2][i2]), t3.minZ = Math.min(t3.minZ, t3.seriesZ[e2][i2])); - } - } }, { key: "_handleSingleDataPoint", value: function() { - var t3 = this.w.globals, e2 = this.w.config; - if (t3.minX === t3.maxX) { - var i2 = new I(this.ctx); - if ("datetime" === e2.xaxis.type) { - var a2 = i2.getDate(t3.minX); - e2.xaxis.labels.datetimeUTC ? a2.setUTCDate(a2.getUTCDate() - 2) : a2.setDate(a2.getDate() - 2), t3.minX = new Date(a2).getTime(); - var s2 = i2.getDate(t3.maxX); - e2.xaxis.labels.datetimeUTC ? s2.setUTCDate(s2.getUTCDate() + 2) : s2.setDate(s2.getDate() + 2), t3.maxX = new Date(s2).getTime(); - } else - ("numeric" === e2.xaxis.type || "category" === e2.xaxis.type && !t3.noLabelsProvided) && (t3.minX = t3.minX - 2, t3.initialMinX = t3.minX, t3.maxX = t3.maxX + 2, t3.initialMaxX = t3.maxX); - } - } }, { key: "_getMinXDiff", value: function() { - var t3 = this.w.globals; - t3.isXNumeric && t3.seriesX.forEach(function(e2, i2) { - 1 === e2.length && e2.push(t3.seriesX[t3.maxValsInArrayIndex][t3.seriesX[t3.maxValsInArrayIndex].length - 1]); - var a2 = e2.slice(); - a2.sort(function(t4, e3) { - return t4 - e3; - }), a2.forEach(function(e3, i3) { - if (i3 > 0) { - var s2 = e3 - a2[i3 - 1]; - s2 > 0 && (t3.minXDiff = Math.min(s2, t3.minXDiff)); - } - }), 1 !== t3.dataPoints && t3.minXDiff !== Number.MAX_VALUE || (t3.minXDiff = 0.5); - }); - } }, { key: "_setStackedMinMax", value: function() { - var t3 = this, e2 = this.w.globals; - if (e2.series.length) { - var i2 = e2.seriesGroups; - i2.length || (i2 = [this.w.config.series.map(function(t4) { - return t4.name; - })]); - var a2 = {}, s2 = {}; - i2.forEach(function(i3) { - a2[i3] = [], s2[i3] = [], t3.w.config.series.map(function(t4, e3) { - return i3.indexOf(t4.name) > -1 ? e3 : null; - }).filter(function(t4) { - return null !== t4; - }).forEach(function(t4) { - for (var r2 = 0; r2 < e2.series[e2.maxValsInArrayIndex].length; r2++) - void 0 === a2[i3][r2] && (a2[i3][r2] = 0, s2[i3][r2] = 0), null !== e2.series[t4][r2] && x.isNumber(e2.series[t4][r2]) && (e2.series[t4][r2] > 0 ? a2[i3][r2] += parseFloat(e2.series[t4][r2]) + 1e-4 : s2[i3][r2] += parseFloat(e2.series[t4][r2])); - }); - }), Object.entries(a2).forEach(function(t4) { - var i3 = g(t4, 1)[0]; - a2[i3].forEach(function(t5, r2) { - e2.maxY = Math.max(e2.maxY, a2[i3][r2]), e2.minY = Math.min(e2.minY, s2[i3][r2]); - }); - }); - } - } }]), t2; - }(); - var q = function() { - function t2(e2, i2) { - a(this, t2), this.ctx = e2, this.elgrid = i2, this.w = e2.w; - var s2 = this.w; - this.xaxisFontSize = s2.config.xaxis.labels.style.fontSize, this.axisFontFamily = s2.config.xaxis.labels.style.fontFamily, this.xaxisForeColors = s2.config.xaxis.labels.style.colors, this.isCategoryBarHorizontal = "bar" === s2.config.chart.type && s2.config.plotOptions.bar.horizontal, this.xAxisoffX = 0, "bottom" === s2.config.xaxis.position && (this.xAxisoffX = s2.globals.gridHeight), this.drawnLabels = [], this.axesUtils = new B(e2); - } - return r(t2, [{ key: "drawYaxis", value: function(t3) { - var e2 = this, i2 = this.w, a2 = new m(this.ctx), s2 = i2.config.yaxis[t3].labels.style, r2 = s2.fontSize, o2 = s2.fontFamily, n2 = s2.fontWeight, l2 = a2.group({ class: "apexcharts-yaxis", rel: t3, transform: "translate(" + i2.globals.translateYAxisX[t3] + ", 0)" }); - if (this.axesUtils.isYAxisHidden(t3)) - return l2; - var h2 = a2.group({ class: "apexcharts-yaxis-texts-g" }); - l2.add(h2); - var c2 = i2.globals.yAxisScale[t3].result.length - 1, d2 = i2.globals.gridHeight / c2, g2 = i2.globals.translateY, u2 = i2.globals.yLabelFormatters[t3], p2 = i2.globals.yAxisScale[t3].result.slice(); - p2 = this.axesUtils.checkForReversedLabels(t3, p2); - var f2 = ""; - if (i2.config.yaxis[t3].labels.show) - for (var x2 = function(l3) { - var x3 = p2[l3]; - x3 = u2(x3, l3, i2); - var b3 = i2.config.yaxis[t3].labels.padding; - i2.config.yaxis[t3].opposite && 0 !== i2.config.yaxis.length && (b3 *= -1); - var v3 = "end"; - i2.config.yaxis[t3].opposite && (v3 = "start"), "left" === i2.config.yaxis[t3].labels.align ? v3 = "start" : "center" === i2.config.yaxis[t3].labels.align ? v3 = "middle" : "right" === i2.config.yaxis[t3].labels.align && (v3 = "end"); - var m2 = e2.axesUtils.getYAxisForeColor(s2.colors, t3), y3 = i2.config.yaxis[t3].labels.offsetY; - "heatmap" === i2.config.chart.type && (y3 -= (i2.globals.gridHeight / i2.globals.series.length - 1) / 2); - var w3 = a2.drawText({ x: b3, y: g2 + c2 / 10 + y3 + 1, text: x3, textAnchor: v3, fontSize: r2, fontFamily: o2, fontWeight: n2, maxWidth: i2.config.yaxis[t3].labels.maxWidth, foreColor: Array.isArray(m2) ? m2[l3] : m2, isPlainText: false, cssClass: "apexcharts-yaxis-label " + s2.cssClass }); - l3 === c2 && (f2 = w3), h2.add(w3); - var k3 = document.createElementNS(i2.globals.SVGNS, "title"); - if (k3.textContent = Array.isArray(x3) ? x3.join(" ") : x3, w3.node.appendChild(k3), 0 !== i2.config.yaxis[t3].labels.rotate) { - var A3 = a2.rotateAroundCenter(f2.node), S3 = a2.rotateAroundCenter(w3.node); - w3.node.setAttribute("transform", "rotate(".concat(i2.config.yaxis[t3].labels.rotate, " ").concat(A3.x, " ").concat(S3.y, ")")); - } - g2 += d2; - }, b2 = c2; b2 >= 0; b2--) - x2(b2); - if (void 0 !== i2.config.yaxis[t3].title.text) { - var v2 = a2.group({ class: "apexcharts-yaxis-title" }), y2 = 0; - i2.config.yaxis[t3].opposite && (y2 = i2.globals.translateYAxisX[t3]); - var w2 = a2.drawText({ x: y2, y: i2.globals.gridHeight / 2 + i2.globals.translateY + i2.config.yaxis[t3].title.offsetY, text: i2.config.yaxis[t3].title.text, textAnchor: "end", foreColor: i2.config.yaxis[t3].title.style.color, fontSize: i2.config.yaxis[t3].title.style.fontSize, fontWeight: i2.config.yaxis[t3].title.style.fontWeight, fontFamily: i2.config.yaxis[t3].title.style.fontFamily, cssClass: "apexcharts-yaxis-title-text " + i2.config.yaxis[t3].title.style.cssClass }); - v2.add(w2), l2.add(v2); - } - var k2 = i2.config.yaxis[t3].axisBorder, A2 = 31 + k2.offsetX; - if (i2.config.yaxis[t3].opposite && (A2 = -31 - k2.offsetX), k2.show) { - var S2 = a2.drawLine(A2, i2.globals.translateY + k2.offsetY - 2, A2, i2.globals.gridHeight + i2.globals.translateY + k2.offsetY + 2, k2.color, 0, k2.width); - l2.add(S2); - } - return i2.config.yaxis[t3].axisTicks.show && this.axesUtils.drawYAxisTicks(A2, c2, k2, i2.config.yaxis[t3].axisTicks, t3, d2, l2), l2; - } }, { key: "drawYaxisInversed", value: function(t3) { - var e2 = this.w, i2 = new m(this.ctx), a2 = i2.group({ class: "apexcharts-xaxis apexcharts-yaxis-inversed" }), s2 = i2.group({ class: "apexcharts-xaxis-texts-g", transform: "translate(".concat(e2.globals.translateXAxisX, ", ").concat(e2.globals.translateXAxisY, ")") }); - a2.add(s2); - var r2 = e2.globals.yAxisScale[t3].result.length - 1, o2 = e2.globals.gridWidth / r2 + 0.1, n2 = o2 + e2.config.xaxis.labels.offsetX, l2 = e2.globals.xLabelFormatter, h2 = e2.globals.yAxisScale[t3].result.slice(), c2 = e2.globals.timescaleLabels; - c2.length > 0 && (this.xaxisLabels = c2.slice(), r2 = (h2 = c2.slice()).length), h2 = this.axesUtils.checkForReversedLabels(t3, h2); - var d2 = c2.length; - if (e2.config.xaxis.labels.show) - for (var g2 = d2 ? 0 : r2; d2 ? g2 < d2 : g2 >= 0; d2 ? g2++ : g2--) { - var u2 = h2[g2]; - u2 = l2(u2, g2, e2); - var p2 = e2.globals.gridWidth + e2.globals.padHorizontal - (n2 - o2 + e2.config.xaxis.labels.offsetX); - if (c2.length) { - var f2 = this.axesUtils.getLabel(h2, c2, p2, g2, this.drawnLabels, this.xaxisFontSize); - p2 = f2.x, u2 = f2.text, this.drawnLabels.push(f2.text), 0 === g2 && e2.globals.skipFirstTimelinelabel && (u2 = ""), g2 === h2.length - 1 && e2.globals.skipLastTimelinelabel && (u2 = ""); - } - var x2 = i2.drawText({ x: p2, y: this.xAxisoffX + e2.config.xaxis.labels.offsetY + 30 - ("top" === e2.config.xaxis.position ? e2.globals.xAxisHeight + e2.config.xaxis.axisTicks.height - 2 : 0), text: u2, textAnchor: "middle", foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[t3] : this.xaxisForeColors, fontSize: this.xaxisFontSize, fontFamily: this.xaxisFontFamily, fontWeight: e2.config.xaxis.labels.style.fontWeight, isPlainText: false, cssClass: "apexcharts-xaxis-label " + e2.config.xaxis.labels.style.cssClass }); - s2.add(x2), x2.tspan(u2); - var b2 = document.createElementNS(e2.globals.SVGNS, "title"); - b2.textContent = u2, x2.node.appendChild(b2), n2 += o2; - } - return this.inversedYAxisTitleText(a2), this.inversedYAxisBorder(a2), a2; - } }, { key: "inversedYAxisBorder", value: function(t3) { - var e2 = this.w, i2 = new m(this.ctx), a2 = e2.config.xaxis.axisBorder; - if (a2.show) { - var s2 = 0; - "bar" === e2.config.chart.type && e2.globals.isXNumeric && (s2 -= 15); - var r2 = i2.drawLine(e2.globals.padHorizontal + s2 + a2.offsetX, this.xAxisoffX, e2.globals.gridWidth, this.xAxisoffX, a2.color, 0, a2.height); - this.elgrid && this.elgrid.elGridBorders && e2.config.grid.show ? this.elgrid.elGridBorders.add(r2) : t3.add(r2); - } - } }, { key: "inversedYAxisTitleText", value: function(t3) { - var e2 = this.w, i2 = new m(this.ctx); - if (void 0 !== e2.config.xaxis.title.text) { - var a2 = i2.group({ class: "apexcharts-xaxis-title apexcharts-yaxis-title-inversed" }), s2 = i2.drawText({ x: e2.globals.gridWidth / 2 + e2.config.xaxis.title.offsetX, y: this.xAxisoffX + parseFloat(this.xaxisFontSize) + parseFloat(e2.config.xaxis.title.style.fontSize) + e2.config.xaxis.title.offsetY + 20, text: e2.config.xaxis.title.text, textAnchor: "middle", fontSize: e2.config.xaxis.title.style.fontSize, fontFamily: e2.config.xaxis.title.style.fontFamily, fontWeight: e2.config.xaxis.title.style.fontWeight, foreColor: e2.config.xaxis.title.style.color, cssClass: "apexcharts-xaxis-title-text " + e2.config.xaxis.title.style.cssClass }); - a2.add(s2), t3.add(a2); - } - } }, { key: "yAxisTitleRotate", value: function(t3, e2) { - var i2 = this.w, a2 = new m(this.ctx), s2 = { width: 0, height: 0 }, r2 = { width: 0, height: 0 }, o2 = i2.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t3, "'] .apexcharts-yaxis-texts-g")); - null !== o2 && (s2 = o2.getBoundingClientRect()); - var n2 = i2.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t3, "'] .apexcharts-yaxis-title text")); - if (null !== n2 && (r2 = n2.getBoundingClientRect()), null !== n2) { - var l2 = this.xPaddingForYAxisTitle(t3, s2, r2, e2); - n2.setAttribute("x", l2.xPos - (e2 ? 10 : 0)); - } - if (null !== n2) { - var h2 = a2.rotateAroundCenter(n2); - n2.setAttribute("transform", "rotate(".concat(e2 ? -1 * i2.config.yaxis[t3].title.rotate : i2.config.yaxis[t3].title.rotate, " ").concat(h2.x, " ").concat(h2.y, ")")); - } - } }, { key: "xPaddingForYAxisTitle", value: function(t3, e2, i2, a2) { - var s2 = this.w, r2 = 0, o2 = 0, n2 = 10; - return void 0 === s2.config.yaxis[t3].title.text || t3 < 0 ? { xPos: o2, padd: 0 } : (a2 ? (o2 = e2.width + s2.config.yaxis[t3].title.offsetX + i2.width / 2 + n2 / 2, 0 === (r2 += 1) && (o2 -= n2 / 2)) : (o2 = -1 * e2.width + s2.config.yaxis[t3].title.offsetX + n2 / 2 + i2.width / 2, s2.globals.isBarHorizontal && (n2 = 25, o2 = -1 * e2.width - s2.config.yaxis[t3].title.offsetX - n2)), { xPos: o2, padd: n2 }); - } }, { key: "setYAxisXPosition", value: function(t3, e2) { - var i2 = this.w, a2 = 0, s2 = 0, r2 = 18, o2 = 1; - i2.config.yaxis.length > 1 && (this.multipleYs = true), i2.config.yaxis.map(function(n2, l2) { - var h2 = i2.globals.ignoreYAxisIndexes.indexOf(l2) > -1 || !n2.show || n2.floating || 0 === t3[l2].width, c2 = t3[l2].width + e2[l2].width; - n2.opposite ? i2.globals.isBarHorizontal ? (s2 = i2.globals.gridWidth + i2.globals.translateX - 1, i2.globals.translateYAxisX[l2] = s2 - n2.labels.offsetX) : (s2 = i2.globals.gridWidth + i2.globals.translateX + o2, h2 || (o2 = o2 + c2 + 20), i2.globals.translateYAxisX[l2] = s2 - n2.labels.offsetX + 20) : (a2 = i2.globals.translateX - r2, h2 || (r2 = r2 + c2 + 20), i2.globals.translateYAxisX[l2] = a2 + n2.labels.offsetX); - }); - } }, { key: "setYAxisTextAlignments", value: function() { - var t3 = this.w, e2 = t3.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis"); - (e2 = x.listToArray(e2)).forEach(function(e3, i2) { - var a2 = t3.config.yaxis[i2]; - if (a2 && !a2.floating && void 0 !== a2.labels.align) { - var s2 = t3.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i2, "'] .apexcharts-yaxis-texts-g")), r2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i2, "'] .apexcharts-yaxis-label")); - r2 = x.listToArray(r2); - var o2 = s2.getBoundingClientRect(); - "left" === a2.labels.align ? (r2.forEach(function(t4, e4) { - t4.setAttribute("text-anchor", "start"); - }), a2.opposite || s2.setAttribute("transform", "translate(-".concat(o2.width, ", 0)"))) : "center" === a2.labels.align ? (r2.forEach(function(t4, e4) { - t4.setAttribute("text-anchor", "middle"); - }), s2.setAttribute("transform", "translate(".concat(o2.width / 2 * (a2.opposite ? 1 : -1), ", 0)"))) : "right" === a2.labels.align && (r2.forEach(function(t4, e4) { - t4.setAttribute("text-anchor", "end"); - }), a2.opposite && s2.setAttribute("transform", "translate(".concat(o2.width, ", 0)"))); - } - }); - } }]), t2; - }(); - var Z = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.documentEvent = x.bind(this.documentEvent, this); - } - return r(t2, [{ key: "addEventListener", value: function(t3, e2) { - var i2 = this.w; - i2.globals.events.hasOwnProperty(t3) ? i2.globals.events[t3].push(e2) : i2.globals.events[t3] = [e2]; - } }, { key: "removeEventListener", value: function(t3, e2) { - var i2 = this.w; - if (i2.globals.events.hasOwnProperty(t3)) { - var a2 = i2.globals.events[t3].indexOf(e2); - -1 !== a2 && i2.globals.events[t3].splice(a2, 1); - } - } }, { key: "fireEvent", value: function(t3, e2) { - var i2 = this.w; - if (i2.globals.events.hasOwnProperty(t3)) { - e2 && e2.length || (e2 = []); - for (var a2 = i2.globals.events[t3], s2 = a2.length, r2 = 0; r2 < s2; r2++) - a2[r2].apply(null, e2); - } - } }, { key: "setupEventHandlers", value: function() { - var t3 = this, e2 = this.w, i2 = this.ctx, a2 = e2.globals.dom.baseEl.querySelector(e2.globals.chartClass); - this.ctx.eventList.forEach(function(t4) { - a2.addEventListener(t4, function(t5) { - var a3 = Object.assign({}, e2, { seriesIndex: e2.globals.capturedSeriesIndex, dataPointIndex: e2.globals.capturedDataPointIndex }); - "mousemove" === t5.type || "touchmove" === t5.type ? "function" == typeof e2.config.chart.events.mouseMove && e2.config.chart.events.mouseMove(t5, i2, a3) : "mouseleave" === t5.type || "touchleave" === t5.type ? "function" == typeof e2.config.chart.events.mouseLeave && e2.config.chart.events.mouseLeave(t5, i2, a3) : ("mouseup" === t5.type && 1 === t5.which || "touchend" === t5.type) && ("function" == typeof e2.config.chart.events.click && e2.config.chart.events.click(t5, i2, a3), i2.ctx.events.fireEvent("click", [t5, i2, a3])); - }, { capture: false, passive: true }); - }), this.ctx.eventList.forEach(function(i3) { - e2.globals.dom.baseEl.addEventListener(i3, t3.documentEvent, { passive: true }); - }), this.ctx.core.setupBrushHandler(); - } }, { key: "documentEvent", value: function(t3) { - var e2 = this.w, i2 = t3.target.className; - if ("click" === t3.type) { - var a2 = e2.globals.dom.baseEl.querySelector(".apexcharts-menu"); - a2 && a2.classList.contains("apexcharts-menu-open") && "apexcharts-menu-icon" !== i2 && a2.classList.remove("apexcharts-menu-open"); - } - e2.globals.clientX = "touchmove" === t3.type ? t3.touches[0].clientX : t3.clientX, e2.globals.clientY = "touchmove" === t3.type ? t3.touches[0].clientY : t3.clientY; - } }]), t2; - }(); - var $ = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "setCurrentLocaleValues", value: function(t3) { - var e2 = this.w.config.chart.locales; - window.Apex.chart && window.Apex.chart.locales && window.Apex.chart.locales.length > 0 && (e2 = this.w.config.chart.locales.concat(window.Apex.chart.locales)); - var i2 = e2.filter(function(e3) { - return e3.name === t3; - })[0]; - if (!i2) - throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options"); - var a2 = x.extend(C, i2); - this.w.globals.locale = a2.options; - } }]), t2; - }(); - var J = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "drawAxis", value: function(t3, e2) { - var i2, a2, s2 = this, r2 = this.w.globals, o2 = this.w.config, n2 = new V(this.ctx, e2), l2 = new q(this.ctx, e2); - r2.axisCharts && "radar" !== t3 && (r2.isBarHorizontal ? (a2 = l2.drawYaxisInversed(0), i2 = n2.drawXaxisInversed(0), r2.dom.elGraphical.add(i2), r2.dom.elGraphical.add(a2)) : (i2 = n2.drawXaxis(), r2.dom.elGraphical.add(i2), o2.yaxis.map(function(t4, e3) { - if (-1 === r2.ignoreYAxisIndexes.indexOf(e3) && (a2 = l2.drawYaxis(e3), r2.dom.Paper.add(a2), "back" === s2.w.config.grid.position)) { - var i3 = r2.dom.Paper.children()[1]; - i3.remove(), r2.dom.Paper.add(i3); - } - }))); - } }]), t2; - }(); - var Q = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "drawXCrosshairs", value: function() { - var t3 = this.w, e2 = new m(this.ctx), i2 = new v(this.ctx), a2 = t3.config.xaxis.crosshairs.fill.gradient, s2 = t3.config.xaxis.crosshairs.dropShadow, r2 = t3.config.xaxis.crosshairs.fill.type, o2 = a2.colorFrom, n2 = a2.colorTo, l2 = a2.opacityFrom, h2 = a2.opacityTo, c2 = a2.stops, d2 = s2.enabled, g2 = s2.left, u2 = s2.top, p2 = s2.blur, f2 = s2.color, b2 = s2.opacity, y2 = t3.config.xaxis.crosshairs.fill.color; - if (t3.config.xaxis.crosshairs.show) { - "gradient" === r2 && (y2 = e2.drawGradient("vertical", o2, n2, l2, h2, null, c2, null)); - var w2 = e2.drawRect(); - 1 === t3.config.xaxis.crosshairs.width && (w2 = e2.drawLine()); - var k2 = t3.globals.gridHeight; - (!x.isNumber(k2) || k2 < 0) && (k2 = 0); - var A2 = t3.config.xaxis.crosshairs.width; - (!x.isNumber(A2) || A2 < 0) && (A2 = 0), w2.attr({ class: "apexcharts-xcrosshairs", x: 0, y: 0, y2: k2, width: A2, height: k2, fill: y2, filter: "none", "fill-opacity": t3.config.xaxis.crosshairs.opacity, stroke: t3.config.xaxis.crosshairs.stroke.color, "stroke-width": t3.config.xaxis.crosshairs.stroke.width, "stroke-dasharray": t3.config.xaxis.crosshairs.stroke.dashArray }), d2 && (w2 = i2.dropShadow(w2, { left: g2, top: u2, blur: p2, color: f2, opacity: b2 })), t3.globals.dom.elGraphical.add(w2); - } - } }, { key: "drawYCrosshairs", value: function() { - var t3 = this.w, e2 = new m(this.ctx), i2 = t3.config.yaxis[0].crosshairs, a2 = t3.globals.barPadForNumericAxis; - if (t3.config.yaxis[0].crosshairs.show) { - var s2 = e2.drawLine(-a2, 0, t3.globals.gridWidth + a2, 0, i2.stroke.color, i2.stroke.dashArray, i2.stroke.width); - s2.attr({ class: "apexcharts-ycrosshairs" }), t3.globals.dom.elGraphical.add(s2); - } - var r2 = e2.drawLine(-a2, 0, t3.globals.gridWidth + a2, 0, i2.stroke.color, 0, 0); - r2.attr({ class: "apexcharts-ycrosshairs-hidden" }), t3.globals.dom.elGraphical.add(r2); - } }]), t2; - }(); - var K = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "checkResponsiveConfig", value: function(t3) { - var e2 = this, i2 = this.w, a2 = i2.config; - if (0 !== a2.responsive.length) { - var s2 = a2.responsive.slice(); - s2.sort(function(t4, e3) { - return t4.breakpoint > e3.breakpoint ? 1 : e3.breakpoint > t4.breakpoint ? -1 : 0; - }).reverse(); - var r2 = new E({}), o2 = function() { - var t4 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, a3 = s2[0].breakpoint, o3 = window.innerWidth > 0 ? window.innerWidth : screen.width; - if (o3 > a3) { - var n3 = y.extendArrayProps(r2, i2.globals.initialConfig, i2); - t4 = x.extend(n3, t4), t4 = x.extend(i2.config, t4), e2.overrideResponsiveOptions(t4); - } else - for (var l2 = 0; l2 < s2.length; l2++) - o3 < s2[l2].breakpoint && (t4 = y.extendArrayProps(r2, s2[l2].options, i2), t4 = x.extend(i2.config, t4), e2.overrideResponsiveOptions(t4)); - }; - if (t3) { - var n2 = y.extendArrayProps(r2, t3, i2); - n2 = x.extend(i2.config, n2), o2(n2 = x.extend(n2, t3)); - } else - o2({}); - } - } }, { key: "overrideResponsiveOptions", value: function(t3) { - var e2 = new E(t3).init({ responsiveOverride: true }); - this.w.config = e2; - } }]), t2; - }(); - var tt = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.colors = [], this.w = e2.w; - var i2 = this.w; - this.isColorFn = false, this.isHeatmapDistributed = "treemap" === i2.config.chart.type && i2.config.plotOptions.treemap.distributed || "heatmap" === i2.config.chart.type && i2.config.plotOptions.heatmap.distributed, this.isBarDistributed = i2.config.plotOptions.bar.distributed && ("bar" === i2.config.chart.type || "rangeBar" === i2.config.chart.type); - } - return r(t2, [{ key: "init", value: function() { - this.setDefaultColors(); - } }, { key: "setDefaultColors", value: function() { - var t3, e2 = this, i2 = this.w, a2 = new x(); - if (i2.globals.dom.elWrap.classList.add("apexcharts-theme-".concat(i2.config.theme.mode)), void 0 === i2.config.colors || 0 === (null === (t3 = i2.config.colors) || void 0 === t3 ? void 0 : t3.length) ? i2.globals.colors = this.predefined() : (i2.globals.colors = i2.config.colors, Array.isArray(i2.config.colors) && i2.config.colors.length > 0 && "function" == typeof i2.config.colors[0] && (i2.globals.colors = i2.config.series.map(function(t4, a3) { - var s3 = i2.config.colors[a3]; - return s3 || (s3 = i2.config.colors[0]), "function" == typeof s3 ? (e2.isColorFn = true, s3({ value: i2.globals.axisCharts ? i2.globals.series[a3][0] ? i2.globals.series[a3][0] : 0 : i2.globals.series[a3], seriesIndex: a3, dataPointIndex: a3, w: i2 })) : s3; - }))), i2.globals.seriesColors.map(function(t4, e3) { - t4 && (i2.globals.colors[e3] = t4); - }), i2.config.theme.monochrome.enabled) { - var s2 = [], r2 = i2.globals.series.length; - (this.isBarDistributed || this.isHeatmapDistributed) && (r2 = i2.globals.series[0].length * i2.globals.series.length); - for (var o2 = i2.config.theme.monochrome.color, n2 = 1 / (r2 / i2.config.theme.monochrome.shadeIntensity), l2 = i2.config.theme.monochrome.shadeTo, h2 = 0, c2 = 0; c2 < r2; c2++) { - var d2 = void 0; - "dark" === l2 ? (d2 = a2.shadeColor(-1 * h2, o2), h2 += n2) : (d2 = a2.shadeColor(h2, o2), h2 += n2), s2.push(d2); - } - i2.globals.colors = s2.slice(); - } - var g2 = i2.globals.colors.slice(); - this.pushExtraColors(i2.globals.colors); - ["fill", "stroke"].forEach(function(t4) { - void 0 === i2.config[t4].colors ? i2.globals[t4].colors = e2.isColorFn ? i2.config.colors : g2 : i2.globals[t4].colors = i2.config[t4].colors.slice(), e2.pushExtraColors(i2.globals[t4].colors); - }), void 0 === i2.config.dataLabels.style.colors ? i2.globals.dataLabels.style.colors = g2 : i2.globals.dataLabels.style.colors = i2.config.dataLabels.style.colors.slice(), this.pushExtraColors(i2.globals.dataLabels.style.colors, 50), void 0 === i2.config.plotOptions.radar.polygons.fill.colors ? i2.globals.radarPolygons.fill.colors = ["dark" === i2.config.theme.mode ? "#424242" : "none"] : i2.globals.radarPolygons.fill.colors = i2.config.plotOptions.radar.polygons.fill.colors.slice(), this.pushExtraColors(i2.globals.radarPolygons.fill.colors, 20), void 0 === i2.config.markers.colors ? i2.globals.markers.colors = g2 : i2.globals.markers.colors = i2.config.markers.colors.slice(), this.pushExtraColors(i2.globals.markers.colors); - } }, { key: "pushExtraColors", value: function(t3, e2) { - var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, a2 = this.w, s2 = e2 || a2.globals.series.length; - if (null === i2 && (i2 = this.isBarDistributed || this.isHeatmapDistributed || "heatmap" === a2.config.chart.type && a2.config.plotOptions.heatmap.colorScale.inverse), i2 && a2.globals.series.length && (s2 = a2.globals.series[a2.globals.maxValsInArrayIndex].length * a2.globals.series.length), t3.length < s2) - for (var r2 = s2 - t3.length, o2 = 0; o2 < r2; o2++) - t3.push(t3[o2]); - } }, { key: "updateThemeOptions", value: function(t3) { - t3.chart = t3.chart || {}, t3.tooltip = t3.tooltip || {}; - var e2 = t3.theme.mode || "light", i2 = t3.theme.palette ? t3.theme.palette : "dark" === e2 ? "palette4" : "palette1", a2 = t3.chart.foreColor ? t3.chart.foreColor : "dark" === e2 ? "#f6f7f8" : "#373d3f"; - return t3.tooltip.theme = e2, t3.chart.foreColor = a2, t3.theme.palette = i2, t3; - } }, { key: "predefined", value: function() { - switch (this.w.config.theme.palette) { - case "palette1": - default: - this.colors = ["#008FFB", "#00E396", "#FEB019", "#FF4560", "#775DD0"]; - break; - case "palette2": - this.colors = ["#3f51b5", "#03a9f4", "#4caf50", "#f9ce1d", "#FF9800"]; - break; - case "palette3": - this.colors = ["#33b2df", "#546E7A", "#d4526e", "#13d8aa", "#A5978B"]; - break; - case "palette4": - this.colors = ["#4ecdc4", "#c7f464", "#81D4FA", "#fd6a6a", "#546E7A"]; - break; - case "palette5": - this.colors = ["#2b908f", "#f9a3a4", "#90ee7e", "#fa4443", "#69d2e7"]; - break; - case "palette6": - this.colors = ["#449DD1", "#F86624", "#EA3546", "#662E9B", "#C5D86D"]; - break; - case "palette7": - this.colors = ["#D7263D", "#1B998B", "#2E294E", "#F46036", "#E2C044"]; - break; - case "palette8": - this.colors = ["#662E9B", "#F86624", "#F9C80E", "#EA3546", "#43BCCD"]; - break; - case "palette9": - this.colors = ["#5C4742", "#A5978B", "#8D5B4C", "#5A2A27", "#C4BBAF"]; - break; - case "palette10": - this.colors = ["#A300D6", "#7D02EB", "#5653FE", "#2983FF", "#00B1F2"]; - } - return this.colors; - } }]), t2; - }(); - var et = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "draw", value: function() { - this.drawTitleSubtitle("title"), this.drawTitleSubtitle("subtitle"); - } }, { key: "drawTitleSubtitle", value: function(t3) { - var e2 = this.w, i2 = "title" === t3 ? e2.config.title : e2.config.subtitle, a2 = e2.globals.svgWidth / 2, s2 = i2.offsetY, r2 = "middle"; - if ("left" === i2.align ? (a2 = 10, r2 = "start") : "right" === i2.align && (a2 = e2.globals.svgWidth - 10, r2 = "end"), a2 += i2.offsetX, s2 = s2 + parseInt(i2.style.fontSize, 10) + i2.margin / 2, void 0 !== i2.text) { - var o2 = new m(this.ctx).drawText({ x: a2, y: s2, text: i2.text, textAnchor: r2, fontSize: i2.style.fontSize, fontFamily: i2.style.fontFamily, fontWeight: i2.style.fontWeight, foreColor: i2.style.color, opacity: 1 }); - o2.node.setAttribute("class", "apexcharts-".concat(t3, "-text")), e2.globals.dom.Paper.add(o2); - } - } }]), t2; - }(); - var it = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.dCtx = e2; - } - return r(t2, [{ key: "getTitleSubtitleCoords", value: function(t3) { - var e2 = this.w, i2 = 0, a2 = 0, s2 = "title" === t3 ? e2.config.title.floating : e2.config.subtitle.floating, r2 = e2.globals.dom.baseEl.querySelector(".apexcharts-".concat(t3, "-text")); - if (null !== r2 && !s2) { - var o2 = r2.getBoundingClientRect(); - i2 = o2.width, a2 = e2.globals.axisCharts ? o2.height + 5 : o2.height; - } - return { width: i2, height: a2 }; - } }, { key: "getLegendsRect", value: function() { - var t3 = this.w, e2 = t3.globals.dom.elLegendWrap; - t3.config.legend.height || "top" !== t3.config.legend.position && "bottom" !== t3.config.legend.position || (e2.style.maxHeight = t3.globals.svgHeight / 2 + "px"); - var i2 = Object.assign({}, x.getBoundingClientRect(e2)); - return null !== e2 && !t3.config.legend.floating && t3.config.legend.show ? this.dCtx.lgRect = { x: i2.x, y: i2.y, height: i2.height, width: 0 === i2.height ? 0 : i2.width } : this.dCtx.lgRect = { x: 0, y: 0, height: 0, width: 0 }, "left" !== t3.config.legend.position && "right" !== t3.config.legend.position || 1.5 * this.dCtx.lgRect.width > t3.globals.svgWidth && (this.dCtx.lgRect.width = t3.globals.svgWidth / 1.5), this.dCtx.lgRect; - } }, { key: "getLargestStringFromMultiArr", value: function(t3, e2) { - var i2 = t3; - if (this.w.globals.isMultiLineX) { - var a2 = e2.map(function(t4, e3) { - return Array.isArray(t4) ? t4.length : 1; - }), s2 = Math.max.apply(Math, u(a2)); - i2 = e2[a2.indexOf(s2)]; - } - return i2; - } }]), t2; - }(); - var at = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.dCtx = e2; - } - return r(t2, [{ key: "getxAxisLabelsCoords", value: function() { - var t3, e2 = this.w, i2 = e2.globals.labels.slice(); - if (e2.config.xaxis.convertedCatToNumeric && 0 === i2.length && (i2 = e2.globals.categoryLabels), e2.globals.timescaleLabels.length > 0) { - var a2 = this.getxAxisTimeScaleLabelsCoords(); - t3 = { width: a2.width, height: a2.height }, e2.globals.rotateXLabels = false; - } else { - this.dCtx.lgWidthForSideLegends = "left" !== e2.config.legend.position && "right" !== e2.config.legend.position || e2.config.legend.floating ? 0 : this.dCtx.lgRect.width; - var s2 = e2.globals.xLabelFormatter, r2 = x.getLargestStringFromArr(i2), o2 = this.dCtx.dimHelpers.getLargestStringFromMultiArr(r2, i2); - e2.globals.isBarHorizontal && (o2 = r2 = e2.globals.yAxisScale[0].result.reduce(function(t4, e3) { - return t4.length > e3.length ? t4 : e3; - }, 0)); - var n2 = new M(this.dCtx.ctx), l2 = r2; - r2 = n2.xLabelFormat(s2, r2, l2, { i: void 0, dateFormatter: new I(this.dCtx.ctx).formatDate, w: e2 }), o2 = n2.xLabelFormat(s2, o2, l2, { i: void 0, dateFormatter: new I(this.dCtx.ctx).formatDate, w: e2 }), (e2.config.xaxis.convertedCatToNumeric && void 0 === r2 || "" === String(r2).trim()) && (o2 = r2 = "1"); - var h2 = new m(this.dCtx.ctx), c2 = h2.getTextRects(r2, e2.config.xaxis.labels.style.fontSize), d2 = c2; - if (r2 !== o2 && (d2 = h2.getTextRects(o2, e2.config.xaxis.labels.style.fontSize)), (t3 = { width: c2.width >= d2.width ? c2.width : d2.width, height: c2.height >= d2.height ? c2.height : d2.height }).width * i2.length > e2.globals.svgWidth - this.dCtx.lgWidthForSideLegends - this.dCtx.yAxisWidth - this.dCtx.gridPad.left - this.dCtx.gridPad.right && 0 !== e2.config.xaxis.labels.rotate || e2.config.xaxis.labels.rotateAlways) { - if (!e2.globals.isBarHorizontal) { - e2.globals.rotateXLabels = true; - var g2 = function(t4) { - return h2.getTextRects(t4, e2.config.xaxis.labels.style.fontSize, e2.config.xaxis.labels.style.fontFamily, "rotate(".concat(e2.config.xaxis.labels.rotate, " 0 0)"), false); - }; - c2 = g2(r2), r2 !== o2 && (d2 = g2(o2)), t3.height = (c2.height > d2.height ? c2.height : d2.height) / 1.5, t3.width = c2.width > d2.width ? c2.width : d2.width; - } - } else - e2.globals.rotateXLabels = false; - } - return e2.config.xaxis.labels.show || (t3 = { width: 0, height: 0 }), { width: t3.width, height: t3.height }; - } }, { key: "getxAxisGroupLabelsCoords", value: function() { - var t3, e2 = this.w; - if (!e2.globals.hasXaxisGroups) - return { width: 0, height: 0 }; - var i2, a2 = (null === (t3 = e2.config.xaxis.group.style) || void 0 === t3 ? void 0 : t3.fontSize) || e2.config.xaxis.labels.style.fontSize, s2 = e2.globals.groups.map(function(t4) { - return t4.title; - }), r2 = x.getLargestStringFromArr(s2), o2 = this.dCtx.dimHelpers.getLargestStringFromMultiArr(r2, s2), n2 = new m(this.dCtx.ctx), l2 = n2.getTextRects(r2, a2), h2 = l2; - return r2 !== o2 && (h2 = n2.getTextRects(o2, a2)), i2 = { width: l2.width >= h2.width ? l2.width : h2.width, height: l2.height >= h2.height ? l2.height : h2.height }, e2.config.xaxis.labels.show || (i2 = { width: 0, height: 0 }), { width: i2.width, height: i2.height }; - } }, { key: "getxAxisTitleCoords", value: function() { - var t3 = this.w, e2 = 0, i2 = 0; - if (void 0 !== t3.config.xaxis.title.text) { - var a2 = new m(this.dCtx.ctx).getTextRects(t3.config.xaxis.title.text, t3.config.xaxis.title.style.fontSize); - e2 = a2.width, i2 = a2.height; - } - return { width: e2, height: i2 }; - } }, { key: "getxAxisTimeScaleLabelsCoords", value: function() { - var t3, e2 = this.w; - this.dCtx.timescaleLabels = e2.globals.timescaleLabels.slice(); - var i2 = this.dCtx.timescaleLabels.map(function(t4) { - return t4.value; - }), a2 = i2.reduce(function(t4, e3) { - return void 0 === t4 ? (console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"), 0) : t4.length > e3.length ? t4 : e3; - }, 0); - return 1.05 * (t3 = new m(this.dCtx.ctx).getTextRects(a2, e2.config.xaxis.labels.style.fontSize)).width * i2.length > e2.globals.gridWidth && 0 !== e2.config.xaxis.labels.rotate && (e2.globals.overlappingXLabels = true), t3; - } }, { key: "additionalPaddingXLabels", value: function(t3) { - var e2 = this, i2 = this.w, a2 = i2.globals, s2 = i2.config, r2 = s2.xaxis.type, o2 = t3.width; - a2.skipLastTimelinelabel = false, a2.skipFirstTimelinelabel = false; - var n2 = i2.config.yaxis[0].opposite && i2.globals.isBarHorizontal, l2 = function(t4, n3) { - s2.yaxis.length > 1 && function(t5) { - return -1 !== a2.collapsedSeriesIndices.indexOf(t5); - }(n3) || function(t5) { - if (e2.dCtx.timescaleLabels && e2.dCtx.timescaleLabels.length) { - var n4 = e2.dCtx.timescaleLabels[0], l3 = e2.dCtx.timescaleLabels[e2.dCtx.timescaleLabels.length - 1].position + o2 / 1.75 - e2.dCtx.yAxisWidthRight, h2 = n4.position - o2 / 1.75 + e2.dCtx.yAxisWidthLeft, c2 = "right" === i2.config.legend.position && e2.dCtx.lgRect.width > 0 ? e2.dCtx.lgRect.width : 0; - l3 > a2.svgWidth - a2.translateX - c2 && (a2.skipLastTimelinelabel = true), h2 < -(t5.show && !t5.floating || "bar" !== s2.chart.type && "candlestick" !== s2.chart.type && "rangeBar" !== s2.chart.type && "boxPlot" !== s2.chart.type ? 10 : o2 / 1.75) && (a2.skipFirstTimelinelabel = true); - } else - "datetime" === r2 ? e2.dCtx.gridPad.right < o2 && !a2.rotateXLabels && (a2.skipLastTimelinelabel = true) : "datetime" !== r2 && e2.dCtx.gridPad.right < o2 / 2 - e2.dCtx.yAxisWidthRight && !a2.rotateXLabels && !i2.config.xaxis.labels.trim && ("between" !== i2.config.xaxis.tickPlacement || i2.globals.isBarHorizontal) && (e2.dCtx.xPadRight = o2 / 2 + 1); - }(t4); - }; - s2.yaxis.forEach(function(t4, i3) { - n2 ? (e2.dCtx.gridPad.left < o2 && (e2.dCtx.xPadLeft = o2 / 2 + 1), e2.dCtx.xPadRight = o2 / 2 + 1) : l2(t4, i3); - }); - } }]), t2; - }(); - var st = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.dCtx = e2; - } - return r(t2, [{ key: "getyAxisLabelsCoords", value: function() { - var t3 = this, e2 = this.w, i2 = [], a2 = 10, s2 = new B(this.dCtx.ctx); - return e2.config.yaxis.map(function(r2, o2) { - var n2 = { seriesIndex: o2, dataPointIndex: -1, w: e2 }, l2 = e2.globals.yAxisScale[o2], h2 = 0; - if (!s2.isYAxisHidden(o2) && r2.labels.show && void 0 !== r2.labels.minWidth && (h2 = r2.labels.minWidth), !s2.isYAxisHidden(o2) && r2.labels.show && l2.result.length) { - var c2 = e2.globals.yLabelFormatters[o2], d2 = l2.niceMin === Number.MIN_VALUE ? 0 : l2.niceMin, g2 = l2.result.reduce(function(t4, e3) { - var i3, a3; - return (null === (i3 = String(c2(t4, n2))) || void 0 === i3 ? void 0 : i3.length) > (null === (a3 = String(c2(e3, n2))) || void 0 === a3 ? void 0 : a3.length) ? t4 : e3; - }, d2), u2 = g2 = c2(g2, n2); - if (void 0 !== g2 && 0 !== g2.length || (g2 = l2.niceMax), e2.globals.isBarHorizontal) { - a2 = 0; - var p2 = e2.globals.labels.slice(); - g2 = x.getLargestStringFromArr(p2), g2 = c2(g2, { seriesIndex: o2, dataPointIndex: -1, w: e2 }), u2 = t3.dCtx.dimHelpers.getLargestStringFromMultiArr(g2, p2); - } - var f2 = new m(t3.dCtx.ctx), b2 = "rotate(".concat(r2.labels.rotate, " 0 0)"), v2 = f2.getTextRects(g2, r2.labels.style.fontSize, r2.labels.style.fontFamily, b2, false), y2 = v2; - g2 !== u2 && (y2 = f2.getTextRects(u2, r2.labels.style.fontSize, r2.labels.style.fontFamily, b2, false)), i2.push({ width: (h2 > y2.width || h2 > v2.width ? h2 : y2.width > v2.width ? y2.width : v2.width) + a2, height: y2.height > v2.height ? y2.height : v2.height }); - } else - i2.push({ width: 0, height: 0 }); - }), i2; - } }, { key: "getyAxisTitleCoords", value: function() { - var t3 = this, e2 = this.w, i2 = []; - return e2.config.yaxis.map(function(e3, a2) { - if (e3.show && void 0 !== e3.title.text) { - var s2 = new m(t3.dCtx.ctx), r2 = "rotate(".concat(e3.title.rotate, " 0 0)"), o2 = s2.getTextRects(e3.title.text, e3.title.style.fontSize, e3.title.style.fontFamily, r2, false); - i2.push({ width: o2.width, height: o2.height }); - } else - i2.push({ width: 0, height: 0 }); - }), i2; - } }, { key: "getTotalYAxisWidth", value: function() { - var t3 = this.w, e2 = 0, i2 = 0, a2 = 0, s2 = t3.globals.yAxisScale.length > 1 ? 10 : 0, r2 = new B(this.dCtx.ctx), o2 = function(o3, n2) { - var l2 = t3.config.yaxis[n2].floating, h2 = 0; - o3.width > 0 && !l2 ? (h2 = o3.width + s2, function(e3) { - return t3.globals.ignoreYAxisIndexes.indexOf(e3) > -1; - }(n2) && (h2 = h2 - o3.width - s2)) : h2 = l2 || r2.isYAxisHidden(n2) ? 0 : 5, t3.config.yaxis[n2].opposite ? a2 += h2 : i2 += h2, e2 += h2; - }; - return t3.globals.yLabelsCoords.map(function(t4, e3) { - o2(t4, e3); - }), t3.globals.yTitleCoords.map(function(t4, e3) { - o2(t4, e3); - }), t3.globals.isBarHorizontal && !t3.config.yaxis[0].floating && (e2 = t3.globals.yLabelsCoords[0].width + t3.globals.yTitleCoords[0].width + 15), this.dCtx.yAxisWidthLeft = i2, this.dCtx.yAxisWidthRight = a2, e2; - } }]), t2; - }(); - var rt = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.dCtx = e2; - } - return r(t2, [{ key: "gridPadForColumnsInNumericAxis", value: function(t3) { - var e2 = this.w; - if (e2.globals.noData || e2.globals.allSeriesCollapsed) - return 0; - var i2 = function(t4) { - return "bar" === t4 || "rangeBar" === t4 || "candlestick" === t4 || "boxPlot" === t4; - }, a2 = e2.config.chart.type, s2 = 0, r2 = i2(a2) ? e2.config.series.length : 1; - if (e2.globals.comboBarCount > 0 && (r2 = e2.globals.comboBarCount), e2.globals.collapsedSeries.forEach(function(t4) { - i2(t4.type) && (r2 -= 1); - }), e2.config.chart.stacked && (r2 = 1), (i2(a2) || e2.globals.comboBarCount > 0) && e2.globals.isXNumeric && !e2.globals.isBarHorizontal && r2 > 0) { - var o2, n2, l2 = Math.abs(e2.globals.initialMaxX - e2.globals.initialMinX); - l2 <= 3 && (l2 = e2.globals.dataPoints), o2 = l2 / t3, e2.globals.minXDiff && e2.globals.minXDiff / o2 > 0 && (n2 = e2.globals.minXDiff / o2), n2 > t3 / 2 && (n2 /= 2), (s2 = n2 / r2 * parseInt(e2.config.plotOptions.bar.columnWidth, 10) / 100) < 1 && (s2 = 1), s2 = s2 / (r2 > 1 ? 1 : 1.5) + 5, e2.globals.barPadForNumericAxis = s2; - } - return s2; - } }, { key: "gridPadFortitleSubtitle", value: function() { - var t3 = this, e2 = this.w, i2 = e2.globals, a2 = this.dCtx.isSparkline || !e2.globals.axisCharts ? 0 : 10; - ["title", "subtitle"].forEach(function(i3) { - void 0 !== e2.config[i3].text ? a2 += e2.config[i3].margin : a2 += t3.dCtx.isSparkline || !e2.globals.axisCharts ? 0 : 5; - }), !e2.config.legend.show || "bottom" !== e2.config.legend.position || e2.config.legend.floating || e2.globals.axisCharts || (a2 += 10); - var s2 = this.dCtx.dimHelpers.getTitleSubtitleCoords("title"), r2 = this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle"); - i2.gridHeight = i2.gridHeight - s2.height - r2.height - a2, i2.translateY = i2.translateY + s2.height + r2.height + a2; - } }, { key: "setGridXPosForDualYAxis", value: function(t3, e2) { - var i2 = this.w, a2 = new B(this.dCtx.ctx); - i2.config.yaxis.map(function(s2, r2) { - -1 !== i2.globals.ignoreYAxisIndexes.indexOf(r2) || s2.floating || a2.isYAxisHidden(r2) || (s2.opposite && (i2.globals.translateX = i2.globals.translateX - (e2[r2].width + t3[r2].width) - parseInt(i2.config.yaxis[r2].labels.style.fontSize, 10) / 1.2 - 12), i2.globals.translateX < 2 && (i2.globals.translateX = 2)); - }); - } }]), t2; - }(); - var ot = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.lgRect = {}, this.yAxisWidth = 0, this.yAxisWidthLeft = 0, this.yAxisWidthRight = 0, this.xAxisHeight = 0, this.isSparkline = this.w.config.chart.sparkline.enabled, this.dimHelpers = new it(this), this.dimYAxis = new st(this), this.dimXAxis = new at(this), this.dimGrid = new rt(this), this.lgWidthForSideLegends = 0, this.gridPad = this.w.config.grid.padding, this.xPadRight = 0, this.xPadLeft = 0; - } - return r(t2, [{ key: "plotCoords", value: function() { - var t3 = this, e2 = this.w, i2 = e2.globals; - this.lgRect = this.dimHelpers.getLegendsRect(), this.isSparkline && ((e2.config.markers.discrete.length > 0 || e2.config.markers.size > 0) && Object.entries(this.gridPad).forEach(function(e3) { - var i3 = g(e3, 2), a3 = i3[0], s2 = i3[1]; - t3.gridPad[a3] = Math.max(s2, t3.w.globals.markers.largestSize / 1.5); - }), this.gridPad.top = Math.max(e2.config.stroke.width / 2, this.gridPad.top), this.gridPad.bottom = Math.max(e2.config.stroke.width / 2, this.gridPad.bottom)), i2.axisCharts ? this.setDimensionsForAxisCharts() : this.setDimensionsForNonAxisCharts(), this.dimGrid.gridPadFortitleSubtitle(), i2.gridHeight = i2.gridHeight - this.gridPad.top - this.gridPad.bottom, i2.gridWidth = i2.gridWidth - this.gridPad.left - this.gridPad.right - this.xPadRight - this.xPadLeft; - var a2 = this.dimGrid.gridPadForColumnsInNumericAxis(i2.gridWidth); - i2.gridWidth = i2.gridWidth - 2 * a2, i2.translateX = i2.translateX + this.gridPad.left + this.xPadLeft + (a2 > 0 ? a2 + 4 : 0), i2.translateY = i2.translateY + this.gridPad.top; - } }, { key: "setDimensionsForAxisCharts", value: function() { - var t3 = this, e2 = this.w, i2 = e2.globals, a2 = this.dimYAxis.getyAxisLabelsCoords(), s2 = this.dimYAxis.getyAxisTitleCoords(); - e2.globals.yLabelsCoords = [], e2.globals.yTitleCoords = [], e2.config.yaxis.map(function(t4, i3) { - e2.globals.yLabelsCoords.push({ width: a2[i3].width, index: i3 }), e2.globals.yTitleCoords.push({ width: s2[i3].width, index: i3 }); - }), this.yAxisWidth = this.dimYAxis.getTotalYAxisWidth(); - var r2 = this.dimXAxis.getxAxisLabelsCoords(), o2 = this.dimXAxis.getxAxisGroupLabelsCoords(), n2 = this.dimXAxis.getxAxisTitleCoords(); - this.conditionalChecksForAxisCoords(r2, n2, o2), i2.translateXAxisY = e2.globals.rotateXLabels ? this.xAxisHeight / 8 : -4, i2.translateXAxisX = e2.globals.rotateXLabels && e2.globals.isXNumeric && e2.config.xaxis.labels.rotate <= -45 ? -this.xAxisWidth / 4 : 0, e2.globals.isBarHorizontal && (i2.rotateXLabels = false, i2.translateXAxisY = parseInt(e2.config.xaxis.labels.style.fontSize, 10) / 1.5 * -1), i2.translateXAxisY = i2.translateXAxisY + e2.config.xaxis.labels.offsetY, i2.translateXAxisX = i2.translateXAxisX + e2.config.xaxis.labels.offsetX; - var l2 = this.yAxisWidth, h2 = this.xAxisHeight; - i2.xAxisLabelsHeight = this.xAxisHeight - n2.height, i2.xAxisGroupLabelsHeight = i2.xAxisLabelsHeight - r2.height, i2.xAxisLabelsWidth = this.xAxisWidth, i2.xAxisHeight = this.xAxisHeight; - var c2 = 10; - ("radar" === e2.config.chart.type || this.isSparkline) && (l2 = 0, h2 = i2.goldenPadding), this.isSparkline && (this.lgRect = { height: 0, width: 0 }), (this.isSparkline || "treemap" === e2.config.chart.type) && (l2 = 0, h2 = 0, c2 = 0), this.isSparkline || this.dimXAxis.additionalPaddingXLabels(r2); - var d2 = function() { - i2.translateX = l2, i2.gridHeight = i2.svgHeight - t3.lgRect.height - h2 - (t3.isSparkline || "treemap" === e2.config.chart.type ? 0 : e2.globals.rotateXLabels ? 10 : 15), i2.gridWidth = i2.svgWidth - l2; - }; - switch ("top" === e2.config.xaxis.position && (c2 = i2.xAxisHeight - e2.config.xaxis.axisTicks.height - 5), e2.config.legend.position) { - case "bottom": - i2.translateY = c2, d2(); - break; - case "top": - i2.translateY = this.lgRect.height + c2, d2(); - break; - case "left": - i2.translateY = c2, i2.translateX = this.lgRect.width + l2, i2.gridHeight = i2.svgHeight - h2 - 12, i2.gridWidth = i2.svgWidth - this.lgRect.width - l2; - break; - case "right": - i2.translateY = c2, i2.translateX = l2, i2.gridHeight = i2.svgHeight - h2 - 12, i2.gridWidth = i2.svgWidth - this.lgRect.width - l2 - 5; - break; - default: - throw new Error("Legend position not supported"); - } - this.dimGrid.setGridXPosForDualYAxis(s2, a2), new q(this.ctx).setYAxisXPosition(a2, s2); - } }, { key: "setDimensionsForNonAxisCharts", value: function() { - var t3 = this.w, e2 = t3.globals, i2 = t3.config, a2 = 0; - t3.config.legend.show && !t3.config.legend.floating && (a2 = 20); - var s2 = "pie" === i2.chart.type || "polarArea" === i2.chart.type || "donut" === i2.chart.type ? "pie" : "radialBar", r2 = i2.plotOptions[s2].offsetY, o2 = i2.plotOptions[s2].offsetX; - if (!i2.legend.show || i2.legend.floating) - return e2.gridHeight = e2.svgHeight - i2.grid.padding.left + i2.grid.padding.right, e2.gridWidth = e2.gridHeight, e2.translateY = r2, void (e2.translateX = o2 + (e2.svgWidth - e2.gridWidth) / 2); - switch (i2.legend.position) { - case "bottom": - e2.gridHeight = e2.svgHeight - this.lgRect.height - e2.goldenPadding, e2.gridWidth = e2.svgWidth, e2.translateY = r2 - 10, e2.translateX = o2 + (e2.svgWidth - e2.gridWidth) / 2; - break; - case "top": - e2.gridHeight = e2.svgHeight - this.lgRect.height - e2.goldenPadding, e2.gridWidth = e2.svgWidth, e2.translateY = this.lgRect.height + r2 + 10, e2.translateX = o2 + (e2.svgWidth - e2.gridWidth) / 2; - break; - case "left": - e2.gridWidth = e2.svgWidth - this.lgRect.width - a2, e2.gridHeight = "auto" !== i2.chart.height ? e2.svgHeight : e2.gridWidth, e2.translateY = r2, e2.translateX = o2 + this.lgRect.width + a2; - break; - case "right": - e2.gridWidth = e2.svgWidth - this.lgRect.width - a2 - 5, e2.gridHeight = "auto" !== i2.chart.height ? e2.svgHeight : e2.gridWidth, e2.translateY = r2, e2.translateX = o2 + 10; - break; - default: - throw new Error("Legend position not supported"); - } - } }, { key: "conditionalChecksForAxisCoords", value: function(t3, e2, i2) { - var a2 = this.w, s2 = a2.globals.hasXaxisGroups ? 2 : 1, r2 = i2.height + t3.height + e2.height, o2 = a2.globals.isMultiLineX ? 1.2 : a2.globals.LINE_HEIGHT_RATIO, n2 = a2.globals.rotateXLabels ? 22 : 10, l2 = a2.globals.rotateXLabels && "bottom" === a2.config.legend.position ? 10 : 0; - this.xAxisHeight = r2 * o2 + s2 * n2 + l2, this.xAxisWidth = t3.width, this.xAxisHeight - e2.height > a2.config.xaxis.labels.maxHeight && (this.xAxisHeight = a2.config.xaxis.labels.maxHeight), a2.config.xaxis.labels.minHeight && this.xAxisHeight < a2.config.xaxis.labels.minHeight && (this.xAxisHeight = a2.config.xaxis.labels.minHeight), a2.config.xaxis.floating && (this.xAxisHeight = 0); - var h2 = 0, c2 = 0; - a2.config.yaxis.forEach(function(t4) { - h2 += t4.labels.minWidth, c2 += t4.labels.maxWidth; - }), this.yAxisWidth < h2 && (this.yAxisWidth = h2), this.yAxisWidth > c2 && (this.yAxisWidth = c2); - } }]), t2; - }(); - var nt = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.lgCtx = e2; - } - return r(t2, [{ key: "getLegendStyles", value: function() { - var t3 = document.createElement("style"); - t3.setAttribute("type", "text/css"); - var e2 = document.createTextNode(" \n \n .apexcharts-legend { \n display: flex; \n overflow: auto; \n padding: 0 10px; \n } \n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top { \n flex-wrap: wrap \n } \n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left { \n flex-direction: column; \n bottom: 0; \n } \n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left { \n justify-content: flex-start; \n } \n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center { \n justify-content: center; \n } \n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right { \n justify-content: flex-end; \n } \n .apexcharts-legend-series { \n cursor: pointer; \n line-height: normal; \n } \n .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{ \n display: flex; \n align-items: center; \n } \n .apexcharts-legend-text { \n position: relative; \n font-size: 14px; \n } \n .apexcharts-legend-text *, .apexcharts-legend-marker * { \n pointer-events: none; \n } \n .apexcharts-legend-marker { \n position: relative; \n display: inline-block; \n cursor: pointer; \n margin-right: 3px; \n border-style: solid;\n } \n \n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{ \n display: inline-block; \n } \n .apexcharts-legend-series.apexcharts-no-click { \n cursor: auto; \n } \n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series { \n display: none !important; \n } \n .apexcharts-inactive-legend { \n opacity: 0.45; \n }"); - return t3.appendChild(e2), t3; - } }, { key: "getLegendBBox", value: function() { - var t3 = this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(), e2 = t3.width; - return { clwh: t3.height, clww: e2 }; - } }, { key: "appendToForeignObject", value: function() { - this.w.globals.dom.elLegendForeign.appendChild(this.getLegendStyles()); - } }, { key: "toggleDataSeries", value: function(t3, e2) { - var i2 = this, a2 = this.w; - if (a2.globals.axisCharts || "radialBar" === a2.config.chart.type) { - a2.globals.resized = true; - var s2 = null, r2 = null; - if (a2.globals.risingSeries = [], a2.globals.axisCharts ? (s2 = a2.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t3, "']")), r2 = parseInt(s2.getAttribute("data:realIndex"), 10)) : (s2 = a2.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t3 + 1, "']")), r2 = parseInt(s2.getAttribute("rel"), 10) - 1), e2) - [{ cs: a2.globals.collapsedSeries, csi: a2.globals.collapsedSeriesIndices }, { cs: a2.globals.ancillaryCollapsedSeries, csi: a2.globals.ancillaryCollapsedSeriesIndices }].forEach(function(t4) { - i2.riseCollapsedSeries(t4.cs, t4.csi, r2); - }); - else - this.hideSeries({ seriesEl: s2, realIndex: r2 }); - } else { - var o2 = a2.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t3 + 1, "'] path")), n2 = a2.config.chart.type; - if ("pie" === n2 || "polarArea" === n2 || "donut" === n2) { - var l2 = a2.config.plotOptions.pie.donut.labels; - new m(this.lgCtx.ctx).pathMouseDown(o2.members[0], null), this.lgCtx.ctx.pie.printDataLabelsInner(o2.members[0].node, l2); - } - o2.fire("click"); - } - } }, { key: "hideSeries", value: function(t3) { - var e2 = t3.seriesEl, i2 = t3.realIndex, a2 = this.w, s2 = x.clone(a2.config.series); - if (a2.globals.axisCharts) { - var r2 = false; - if (a2.config.yaxis[i2] && a2.config.yaxis[i2].show && a2.config.yaxis[i2].showAlways && (r2 = true, a2.globals.ancillaryCollapsedSeriesIndices.indexOf(i2) < 0 && (a2.globals.ancillaryCollapsedSeries.push({ index: i2, data: s2[i2].data.slice(), type: e2.parentNode.className.baseVal.split("-")[1] }), a2.globals.ancillaryCollapsedSeriesIndices.push(i2))), !r2) { - a2.globals.collapsedSeries.push({ index: i2, data: s2[i2].data.slice(), type: e2.parentNode.className.baseVal.split("-")[1] }), a2.globals.collapsedSeriesIndices.push(i2); - var o2 = a2.globals.risingSeries.indexOf(i2); - a2.globals.risingSeries.splice(o2, 1); - } - } else - a2.globals.collapsedSeries.push({ index: i2, data: s2[i2] }), a2.globals.collapsedSeriesIndices.push(i2); - for (var n2 = e2.childNodes, l2 = 0; l2 < n2.length; l2++) - n2[l2].classList.contains("apexcharts-series-markers-wrap") && (n2[l2].classList.contains("apexcharts-hide") ? n2[l2].classList.remove("apexcharts-hide") : n2[l2].classList.add("apexcharts-hide")); - a2.globals.allSeriesCollapsed = a2.globals.collapsedSeries.length === a2.config.series.length, s2 = this._getSeriesBasedOnCollapsedState(s2), this.lgCtx.ctx.updateHelpers._updateSeries(s2, a2.config.chart.animations.dynamicAnimation.enabled); - } }, { key: "riseCollapsedSeries", value: function(t3, e2, i2) { - var a2 = this.w, s2 = x.clone(a2.config.series); - if (t3.length > 0) { - for (var r2 = 0; r2 < t3.length; r2++) - t3[r2].index === i2 && (a2.globals.axisCharts ? (s2[i2].data = t3[r2].data.slice(), t3.splice(r2, 1), e2.splice(r2, 1), a2.globals.risingSeries.push(i2)) : (s2[i2] = t3[r2].data, t3.splice(r2, 1), e2.splice(r2, 1), a2.globals.risingSeries.push(i2))); - s2 = this._getSeriesBasedOnCollapsedState(s2), this.lgCtx.ctx.updateHelpers._updateSeries(s2, a2.config.chart.animations.dynamicAnimation.enabled); - } - } }, { key: "_getSeriesBasedOnCollapsedState", value: function(t3) { - var e2 = this.w; - return e2.globals.axisCharts ? t3.forEach(function(i2, a2) { - e2.globals.collapsedSeriesIndices.indexOf(a2) > -1 && (t3[a2].data = []); - }) : t3.forEach(function(i2, a2) { - e2.globals.collapsedSeriesIndices.indexOf(a2) > -1 && (t3[a2] = 0); - }), t3; - } }]), t2; - }(); - var lt = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.onLegendClick = this.onLegendClick.bind(this), this.onLegendHovered = this.onLegendHovered.bind(this), this.isBarsDistributed = "bar" === this.w.config.chart.type && this.w.config.plotOptions.bar.distributed && 1 === this.w.config.series.length, this.legendHelpers = new nt(this); - } - return r(t2, [{ key: "init", value: function() { - var t3 = this.w, e2 = t3.globals, i2 = t3.config; - if ((i2.legend.showForSingleSeries && 1 === e2.series.length || this.isBarsDistributed || e2.series.length > 1 || !e2.axisCharts) && i2.legend.show) { - for (; e2.dom.elLegendWrap.firstChild; ) - e2.dom.elLegendWrap.removeChild(e2.dom.elLegendWrap.firstChild); - this.drawLegends(), x.isIE11() ? document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()) : this.legendHelpers.appendToForeignObject(), "bottom" === i2.legend.position || "top" === i2.legend.position ? this.legendAlignHorizontal() : "right" !== i2.legend.position && "left" !== i2.legend.position || this.legendAlignVertical(); - } - } }, { key: "drawLegends", value: function() { - var t3 = this, e2 = this.w, i2 = e2.config.legend.fontFamily, a2 = e2.globals.seriesNames, s2 = e2.globals.colors.slice(); - if ("heatmap" === e2.config.chart.type) { - var r2 = e2.config.plotOptions.heatmap.colorScale.ranges; - a2 = r2.map(function(t4) { - return t4.name ? t4.name : t4.from + " - " + t4.to; - }), s2 = r2.map(function(t4) { - return t4.color; - }); - } else - this.isBarsDistributed && (a2 = e2.globals.labels.slice()); - e2.config.legend.customLegendItems.length && (a2 = e2.config.legend.customLegendItems); - for (var o2 = e2.globals.legendFormatter, n2 = e2.config.legend.inverseOrder, l2 = n2 ? a2.length - 1 : 0; n2 ? l2 >= 0 : l2 <= a2.length - 1; n2 ? l2-- : l2++) { - var h2, c2 = o2(a2[l2], { seriesIndex: l2, w: e2 }), d2 = false, g2 = false; - if (e2.globals.collapsedSeries.length > 0) - for (var u2 = 0; u2 < e2.globals.collapsedSeries.length; u2++) - e2.globals.collapsedSeries[u2].index === l2 && (d2 = true); - if (e2.globals.ancillaryCollapsedSeriesIndices.length > 0) - for (var p2 = 0; p2 < e2.globals.ancillaryCollapsedSeriesIndices.length; p2++) - e2.globals.ancillaryCollapsedSeriesIndices[p2] === l2 && (g2 = true); - var f2 = document.createElement("span"); - f2.classList.add("apexcharts-legend-marker"); - var b2 = e2.config.legend.markers.offsetX, v2 = e2.config.legend.markers.offsetY, w2 = e2.config.legend.markers.height, k2 = e2.config.legend.markers.width, A2 = e2.config.legend.markers.strokeWidth, S2 = e2.config.legend.markers.strokeColor, C2 = e2.config.legend.markers.radius, L2 = f2.style; - L2.background = s2[l2], L2.color = s2[l2], L2.setProperty("background", s2[l2], "important"), e2.config.legend.markers.fillColors && e2.config.legend.markers.fillColors[l2] && (L2.background = e2.config.legend.markers.fillColors[l2]), void 0 !== e2.globals.seriesColors[l2] && (L2.background = e2.globals.seriesColors[l2], L2.color = e2.globals.seriesColors[l2]), L2.height = Array.isArray(w2) ? parseFloat(w2[l2]) + "px" : parseFloat(w2) + "px", L2.width = Array.isArray(k2) ? parseFloat(k2[l2]) + "px" : parseFloat(k2) + "px", L2.left = (Array.isArray(b2) ? parseFloat(b2[l2]) : parseFloat(b2)) + "px", L2.top = (Array.isArray(v2) ? parseFloat(v2[l2]) : parseFloat(v2)) + "px", L2.borderWidth = Array.isArray(A2) ? A2[l2] : A2, L2.borderColor = Array.isArray(S2) ? S2[l2] : S2, L2.borderRadius = Array.isArray(C2) ? parseFloat(C2[l2]) + "px" : parseFloat(C2) + "px", e2.config.legend.markers.customHTML && (Array.isArray(e2.config.legend.markers.customHTML) ? e2.config.legend.markers.customHTML[l2] && (f2.innerHTML = e2.config.legend.markers.customHTML[l2]()) : f2.innerHTML = e2.config.legend.markers.customHTML()), m.setAttrs(f2, { rel: l2 + 1, "data:collapsed": d2 || g2 }), (d2 || g2) && f2.classList.add("apexcharts-inactive-legend"); - var P2 = document.createElement("div"), I2 = document.createElement("span"); - I2.classList.add("apexcharts-legend-text"), I2.innerHTML = Array.isArray(c2) ? c2.join(" ") : c2; - var M2 = e2.config.legend.labels.useSeriesColors ? e2.globals.colors[l2] : Array.isArray(e2.config.legend.labels.colors) ? null === (h2 = e2.config.legend.labels.colors) || void 0 === h2 ? void 0 : h2[l2] : e2.config.legend.labels.colors; - M2 || (M2 = e2.config.chart.foreColor), I2.style.color = M2, I2.style.fontSize = parseFloat(e2.config.legend.fontSize) + "px", I2.style.fontWeight = e2.config.legend.fontWeight, I2.style.fontFamily = i2 || e2.config.chart.fontFamily, m.setAttrs(I2, { rel: l2 + 1, i: l2, "data:default-text": encodeURIComponent(c2), "data:collapsed": d2 || g2 }), P2.appendChild(f2), P2.appendChild(I2); - var T2 = new y(this.ctx); - if (!e2.config.legend.showForZeroSeries) - 0 === T2.getSeriesTotalByIndex(l2) && T2.seriesHaveSameValues(l2) && !T2.isSeriesNull(l2) && -1 === e2.globals.collapsedSeriesIndices.indexOf(l2) && -1 === e2.globals.ancillaryCollapsedSeriesIndices.indexOf(l2) && P2.classList.add("apexcharts-hidden-zero-series"); - e2.config.legend.showForNullSeries || T2.isSeriesNull(l2) && -1 === e2.globals.collapsedSeriesIndices.indexOf(l2) && -1 === e2.globals.ancillaryCollapsedSeriesIndices.indexOf(l2) && P2.classList.add("apexcharts-hidden-null-series"), e2.globals.dom.elLegendWrap.appendChild(P2), e2.globals.dom.elLegendWrap.classList.add("apexcharts-align-".concat(e2.config.legend.horizontalAlign)), e2.globals.dom.elLegendWrap.classList.add("apx-legend-position-" + e2.config.legend.position), P2.classList.add("apexcharts-legend-series"), P2.style.margin = "".concat(e2.config.legend.itemMargin.vertical, "px ").concat(e2.config.legend.itemMargin.horizontal, "px"), e2.globals.dom.elLegendWrap.style.width = e2.config.legend.width ? e2.config.legend.width + "px" : "", e2.globals.dom.elLegendWrap.style.height = e2.config.legend.height ? e2.config.legend.height + "px" : "", m.setAttrs(P2, { rel: l2 + 1, seriesName: x.escapeString(a2[l2]), "data:collapsed": d2 || g2 }), (d2 || g2) && P2.classList.add("apexcharts-inactive-legend"), e2.config.legend.onItemClick.toggleDataSeries || P2.classList.add("apexcharts-no-click"); - } - e2.globals.dom.elWrap.addEventListener("click", t3.onLegendClick, true), e2.config.legend.onItemHover.highlightDataSeries && 0 === e2.config.legend.customLegendItems.length && (e2.globals.dom.elWrap.addEventListener("mousemove", t3.onLegendHovered, true), e2.globals.dom.elWrap.addEventListener("mouseout", t3.onLegendHovered, true)); - } }, { key: "setLegendWrapXY", value: function(t3, e2) { - var i2 = this.w, a2 = i2.globals.dom.elLegendWrap, s2 = a2.getBoundingClientRect(), r2 = 0, o2 = 0; - if ("bottom" === i2.config.legend.position) - o2 += i2.globals.svgHeight - s2.height / 2; - else if ("top" === i2.config.legend.position) { - var n2 = new ot(this.ctx), l2 = n2.dimHelpers.getTitleSubtitleCoords("title").height, h2 = n2.dimHelpers.getTitleSubtitleCoords("subtitle").height; - o2 = o2 + (l2 > 0 ? l2 - 10 : 0) + (h2 > 0 ? h2 - 10 : 0); - } - a2.style.position = "absolute", r2 = r2 + t3 + i2.config.legend.offsetX, o2 = o2 + e2 + i2.config.legend.offsetY, a2.style.left = r2 + "px", a2.style.top = o2 + "px", "bottom" === i2.config.legend.position ? (a2.style.top = "auto", a2.style.bottom = 5 - i2.config.legend.offsetY + "px") : "right" === i2.config.legend.position && (a2.style.left = "auto", a2.style.right = 25 + i2.config.legend.offsetX + "px"); - ["width", "height"].forEach(function(t4) { - a2.style[t4] && (a2.style[t4] = parseInt(i2.config.legend[t4], 10) + "px"); - }); - } }, { key: "legendAlignHorizontal", value: function() { - var t3 = this.w; - t3.globals.dom.elLegendWrap.style.right = 0; - var e2 = this.legendHelpers.getLegendBBox(), i2 = new ot(this.ctx), a2 = i2.dimHelpers.getTitleSubtitleCoords("title"), s2 = i2.dimHelpers.getTitleSubtitleCoords("subtitle"), r2 = 0; - "bottom" === t3.config.legend.position ? r2 = -e2.clwh / 1.8 : "top" === t3.config.legend.position && (r2 = a2.height + s2.height + t3.config.title.margin + t3.config.subtitle.margin - 10), this.setLegendWrapXY(20, r2); - } }, { key: "legendAlignVertical", value: function() { - var t3 = this.w, e2 = this.legendHelpers.getLegendBBox(), i2 = 0; - "left" === t3.config.legend.position && (i2 = 20), "right" === t3.config.legend.position && (i2 = t3.globals.svgWidth - e2.clww - 10), this.setLegendWrapXY(i2, 20); - } }, { key: "onLegendHovered", value: function(t3) { - var e2 = this.w, i2 = t3.target.classList.contains("apexcharts-legend-series") || t3.target.classList.contains("apexcharts-legend-text") || t3.target.classList.contains("apexcharts-legend-marker"); - if ("heatmap" === e2.config.chart.type || this.isBarsDistributed) { - if (i2) { - var a2 = parseInt(t3.target.getAttribute("rel"), 10) - 1; - this.ctx.events.fireEvent("legendHover", [this.ctx, a2, this.w]), new N(this.ctx).highlightRangeInSeries(t3, t3.target); - } - } else - !t3.target.classList.contains("apexcharts-inactive-legend") && i2 && new N(this.ctx).toggleSeriesOnHover(t3, t3.target); - } }, { key: "onLegendClick", value: function(t3) { - var e2 = this.w; - if (!e2.config.legend.customLegendItems.length && (t3.target.classList.contains("apexcharts-legend-series") || t3.target.classList.contains("apexcharts-legend-text") || t3.target.classList.contains("apexcharts-legend-marker"))) { - var i2 = parseInt(t3.target.getAttribute("rel"), 10) - 1, a2 = "true" === t3.target.getAttribute("data:collapsed"), s2 = this.w.config.chart.events.legendClick; - "function" == typeof s2 && s2(this.ctx, i2, this.w), this.ctx.events.fireEvent("legendClick", [this.ctx, i2, this.w]); - var r2 = this.w.config.legend.markers.onClick; - "function" == typeof r2 && t3.target.classList.contains("apexcharts-legend-marker") && (r2(this.ctx, i2, this.w), this.ctx.events.fireEvent("legendMarkerClick", [this.ctx, i2, this.w])), "treemap" !== e2.config.chart.type && "heatmap" !== e2.config.chart.type && !this.isBarsDistributed && e2.config.legend.onItemClick.toggleDataSeries && this.legendHelpers.toggleDataSeries(i2, a2); - } - } }]), t2; - }(); - var ht = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - var i2 = this.w; - this.ev = this.w.config.chart.events, this.selectedClass = "apexcharts-selected", this.localeValues = this.w.globals.locale.toolbar, this.minX = i2.globals.minX, this.maxX = i2.globals.maxX; - } - return r(t2, [{ key: "createToolbar", value: function() { - var t3 = this, e2 = this.w, i2 = function() { - return document.createElement("div"); - }, a2 = i2(); - if (a2.setAttribute("class", "apexcharts-toolbar"), a2.style.top = e2.config.chart.toolbar.offsetY + "px", a2.style.right = 3 - e2.config.chart.toolbar.offsetX + "px", e2.globals.dom.elWrap.appendChild(a2), this.elZoom = i2(), this.elZoomIn = i2(), this.elZoomOut = i2(), this.elPan = i2(), this.elSelection = i2(), this.elZoomReset = i2(), this.elMenuIcon = i2(), this.elMenu = i2(), this.elCustomIcons = [], this.t = e2.config.chart.toolbar.tools, Array.isArray(this.t.customIcons)) - for (var s2 = 0; s2 < this.t.customIcons.length; s2++) - this.elCustomIcons.push(i2()); - var r2 = [], o2 = function(i3, a3, s3) { - var o3 = i3.toLowerCase(); - t3.t[o3] && e2.config.chart.zoom.enabled && r2.push({ el: a3, icon: "string" == typeof t3.t[o3] ? t3.t[o3] : s3, title: t3.localeValues[i3], class: "apexcharts-".concat(o3, "-icon") }); - }; - o2("zoomIn", this.elZoomIn, '\n \n \n\n'), o2("zoomOut", this.elZoomOut, '\n \n \n\n'); - var n2 = function(i3) { - t3.t[i3] && e2.config.chart[i3].enabled && r2.push({ el: "zoom" === i3 ? t3.elZoom : t3.elSelection, icon: "string" == typeof t3.t[i3] ? t3.t[i3] : "zoom" === i3 ? '\n \n \n \n' : '\n \n \n', title: t3.localeValues["zoom" === i3 ? "selectionZoom" : "selection"], class: e2.globals.isTouchDevice ? "apexcharts-element-hidden" : "apexcharts-".concat(i3, "-icon") }); - }; - n2("zoom"), n2("selection"), this.t.pan && e2.config.chart.zoom.enabled && r2.push({ el: this.elPan, icon: "string" == typeof this.t.pan ? this.t.pan : '\n \n \n \n \n \n \n \n', title: this.localeValues.pan, class: e2.globals.isTouchDevice ? "apexcharts-element-hidden" : "apexcharts-pan-icon" }), o2("reset", this.elZoomReset, '\n \n \n'), this.t.download && r2.push({ el: this.elMenuIcon, icon: "string" == typeof this.t.download ? this.t.download : '', title: this.localeValues.menu, class: "apexcharts-menu-icon" }); - for (var l2 = 0; l2 < this.elCustomIcons.length; l2++) - r2.push({ el: this.elCustomIcons[l2], icon: this.t.customIcons[l2].icon, title: this.t.customIcons[l2].title, index: this.t.customIcons[l2].index, class: "apexcharts-toolbar-custom-icon " + this.t.customIcons[l2].class }); - r2.forEach(function(t4, e3) { - t4.index && x.moveIndexInArray(r2, e3, t4.index); - }); - for (var h2 = 0; h2 < r2.length; h2++) - m.setAttrs(r2[h2].el, { class: r2[h2].class, title: r2[h2].title }), r2[h2].el.innerHTML = r2[h2].icon, a2.appendChild(r2[h2].el); - this._createHamburgerMenu(a2), e2.globals.zoomEnabled ? this.elZoom.classList.add(this.selectedClass) : e2.globals.panEnabled ? this.elPan.classList.add(this.selectedClass) : e2.globals.selectionEnabled && this.elSelection.classList.add(this.selectedClass), this.addToolbarEventListeners(); - } }, { key: "_createHamburgerMenu", value: function(t3) { - this.elMenuItems = [], t3.appendChild(this.elMenu), m.setAttrs(this.elMenu, { class: "apexcharts-menu" }); - var e2 = [{ name: "exportSVG", title: this.localeValues.exportToSVG }, { name: "exportPNG", title: this.localeValues.exportToPNG }, { name: "exportCSV", title: this.localeValues.exportToCSV }]; - this.w.globals.allSeriesHasEqualX || e2.splice(2, 1); - for (var i2 = 0; i2 < e2.length; i2++) - this.elMenuItems.push(document.createElement("div")), this.elMenuItems[i2].innerHTML = e2[i2].title, m.setAttrs(this.elMenuItems[i2], { class: "apexcharts-menu-item ".concat(e2[i2].name), title: e2[i2].title }), this.elMenu.appendChild(this.elMenuItems[i2]); - } }, { key: "addToolbarEventListeners", value: function() { - var t3 = this; - this.elZoomReset.addEventListener("click", this.handleZoomReset.bind(this)), this.elSelection.addEventListener("click", this.toggleZoomSelection.bind(this, "selection")), this.elZoom.addEventListener("click", this.toggleZoomSelection.bind(this, "zoom")), this.elZoomIn.addEventListener("click", this.handleZoomIn.bind(this)), this.elZoomOut.addEventListener("click", this.handleZoomOut.bind(this)), this.elPan.addEventListener("click", this.togglePanning.bind(this)), this.elMenuIcon.addEventListener("click", this.toggleMenu.bind(this)), this.elMenuItems.forEach(function(e3) { - e3.classList.contains("exportSVG") ? e3.addEventListener("click", t3.handleDownload.bind(t3, "svg")) : e3.classList.contains("exportPNG") ? e3.addEventListener("click", t3.handleDownload.bind(t3, "png")) : e3.classList.contains("exportCSV") && e3.addEventListener("click", t3.handleDownload.bind(t3, "csv")); - }); - for (var e2 = 0; e2 < this.t.customIcons.length; e2++) - this.elCustomIcons[e2].addEventListener("click", this.t.customIcons[e2].click.bind(this, this.ctx, this.ctx.w)); - } }, { key: "toggleZoomSelection", value: function(t3) { - this.ctx.getSyncedCharts().forEach(function(e2) { - e2.ctx.toolbar.toggleOtherControls(); - var i2 = "selection" === t3 ? e2.ctx.toolbar.elSelection : e2.ctx.toolbar.elZoom, a2 = "selection" === t3 ? "selectionEnabled" : "zoomEnabled"; - e2.w.globals[a2] = !e2.w.globals[a2], i2.classList.contains(e2.ctx.toolbar.selectedClass) ? i2.classList.remove(e2.ctx.toolbar.selectedClass) : i2.classList.add(e2.ctx.toolbar.selectedClass); - }); - } }, { key: "getToolbarIconsReference", value: function() { - var t3 = this.w; - this.elZoom || (this.elZoom = t3.globals.dom.baseEl.querySelector(".apexcharts-zoom-icon")), this.elPan || (this.elPan = t3.globals.dom.baseEl.querySelector(".apexcharts-pan-icon")), this.elSelection || (this.elSelection = t3.globals.dom.baseEl.querySelector(".apexcharts-selection-icon")); - } }, { key: "enableZoomPanFromToolbar", value: function(t3) { - this.toggleOtherControls(), "pan" === t3 ? this.w.globals.panEnabled = true : this.w.globals.zoomEnabled = true; - var e2 = "pan" === t3 ? this.elPan : this.elZoom, i2 = "pan" === t3 ? this.elZoom : this.elPan; - e2 && e2.classList.add(this.selectedClass), i2 && i2.classList.remove(this.selectedClass); - } }, { key: "togglePanning", value: function() { - this.ctx.getSyncedCharts().forEach(function(t3) { - t3.ctx.toolbar.toggleOtherControls(), t3.w.globals.panEnabled = !t3.w.globals.panEnabled, t3.ctx.toolbar.elPan.classList.contains(t3.ctx.toolbar.selectedClass) ? t3.ctx.toolbar.elPan.classList.remove(t3.ctx.toolbar.selectedClass) : t3.ctx.toolbar.elPan.classList.add(t3.ctx.toolbar.selectedClass); - }); - } }, { key: "toggleOtherControls", value: function() { - var t3 = this, e2 = this.w; - e2.globals.panEnabled = false, e2.globals.zoomEnabled = false, e2.globals.selectionEnabled = false, this.getToolbarIconsReference(), [this.elPan, this.elSelection, this.elZoom].forEach(function(e3) { - e3 && e3.classList.remove(t3.selectedClass); - }); - } }, { key: "handleZoomIn", value: function() { - var t3 = this.w; - t3.globals.isRangeBar && (this.minX = t3.globals.minY, this.maxX = t3.globals.maxY); - var e2 = (this.minX + this.maxX) / 2, i2 = (this.minX + e2) / 2, a2 = (this.maxX + e2) / 2, s2 = this._getNewMinXMaxX(i2, a2); - t3.globals.disableZoomIn || this.zoomUpdateOptions(s2.minX, s2.maxX); - } }, { key: "handleZoomOut", value: function() { - var t3 = this.w; - if (t3.globals.isRangeBar && (this.minX = t3.globals.minY, this.maxX = t3.globals.maxY), !("datetime" === t3.config.xaxis.type && new Date(this.minX).getUTCFullYear() < 1e3)) { - var e2 = (this.minX + this.maxX) / 2, i2 = this.minX - (e2 - this.minX), a2 = this.maxX - (e2 - this.maxX), s2 = this._getNewMinXMaxX(i2, a2); - t3.globals.disableZoomOut || this.zoomUpdateOptions(s2.minX, s2.maxX); - } - } }, { key: "_getNewMinXMaxX", value: function(t3, e2) { - var i2 = this.w.config.xaxis.convertedCatToNumeric; - return { minX: i2 ? Math.floor(t3) : t3, maxX: i2 ? Math.floor(e2) : e2 }; - } }, { key: "zoomUpdateOptions", value: function(t3, e2) { - var i2 = this.w; - if (void 0 !== t3 || void 0 !== e2) { - if (!(i2.config.xaxis.convertedCatToNumeric && (t3 < 1 && (t3 = 1, e2 = i2.globals.dataPoints), e2 - t3 < 2))) { - var a2 = { min: t3, max: e2 }, s2 = this.getBeforeZoomRange(a2); - s2 && (a2 = s2.xaxis); - var r2 = { xaxis: a2 }, o2 = x.clone(i2.globals.initialConfig.yaxis); - if (i2.config.chart.zoom.autoScaleYaxis) - o2 = new _(this.ctx).autoScaleY(this.ctx, o2, { xaxis: a2 }); - i2.config.chart.group || (r2.yaxis = o2), this.w.globals.zoomed = true, this.ctx.updateHelpers._updateOptions(r2, false, this.w.config.chart.animations.dynamicAnimation.enabled), this.zoomCallback(a2, o2); - } - } else - this.handleZoomReset(); - } }, { key: "zoomCallback", value: function(t3, e2) { - "function" == typeof this.ev.zoomed && this.ev.zoomed(this.ctx, { xaxis: t3, yaxis: e2 }); - } }, { key: "getBeforeZoomRange", value: function(t3, e2) { - var i2 = null; - return "function" == typeof this.ev.beforeZoom && (i2 = this.ev.beforeZoom(this, { xaxis: t3, yaxis: e2 })), i2; - } }, { key: "toggleMenu", value: function() { - var t3 = this; - window.setTimeout(function() { - t3.elMenu.classList.contains("apexcharts-menu-open") ? t3.elMenu.classList.remove("apexcharts-menu-open") : t3.elMenu.classList.add("apexcharts-menu-open"); - }, 0); - } }, { key: "handleDownload", value: function(t3) { - var e2 = this.w, i2 = new G(this.ctx); - switch (t3) { - case "svg": - i2.exportToSVG(this.ctx); - break; - case "png": - i2.exportToPng(this.ctx); - break; - case "csv": - i2.exportToCSV({ series: e2.config.series, columnDelimiter: e2.config.chart.toolbar.export.csv.columnDelimiter }); - } - } }, { key: "handleZoomReset", value: function(t3) { - this.ctx.getSyncedCharts().forEach(function(t4) { - var e2 = t4.w; - if (e2.globals.lastXAxis.min = e2.globals.initialConfig.xaxis.min, e2.globals.lastXAxis.max = e2.globals.initialConfig.xaxis.max, t4.updateHelpers.revertDefaultAxisMinMax(), "function" == typeof e2.config.chart.events.beforeResetZoom) { - var i2 = e2.config.chart.events.beforeResetZoom(t4, e2); - i2 && t4.updateHelpers.revertDefaultAxisMinMax(i2); - } - "function" == typeof e2.config.chart.events.zoomed && t4.ctx.toolbar.zoomCallback({ min: e2.config.xaxis.min, max: e2.config.xaxis.max }), e2.globals.zoomed = false; - var a2 = t4.ctx.series.emptyCollapsedSeries(x.clone(e2.globals.initialSeries)); - t4.updateHelpers._updateSeries(a2, e2.config.chart.animations.dynamicAnimation.enabled); - }); - } }, { key: "destroy", value: function() { - this.elZoom = null, this.elZoomIn = null, this.elZoomOut = null, this.elPan = null, this.elSelection = null, this.elZoomReset = null, this.elMenuIcon = null; - } }]), t2; - }(); - var ct = function(t2) { - n(i2, ht); - var e2 = d(i2); - function i2(t3) { - var s2; - return a(this, i2), (s2 = e2.call(this, t3)).ctx = t3, s2.w = t3.w, s2.dragged = false, s2.graphics = new m(s2.ctx), s2.eventList = ["mousedown", "mouseleave", "mousemove", "touchstart", "touchmove", "mouseup", "touchend"], s2.clientX = 0, s2.clientY = 0, s2.startX = 0, s2.endX = 0, s2.dragX = 0, s2.startY = 0, s2.endY = 0, s2.dragY = 0, s2.moveDirection = "none", s2; - } - return r(i2, [{ key: "init", value: function(t3) { - var e3 = this, i3 = t3.xyRatios, a2 = this.w, s2 = this; - this.xyRatios = i3, this.zoomRect = this.graphics.drawRect(0, 0, 0, 0), this.selectionRect = this.graphics.drawRect(0, 0, 0, 0), this.gridRect = a2.globals.dom.baseEl.querySelector(".apexcharts-grid"), this.zoomRect.node.classList.add("apexcharts-zoom-rect"), this.selectionRect.node.classList.add("apexcharts-selection-rect"), a2.globals.dom.elGraphical.add(this.zoomRect), a2.globals.dom.elGraphical.add(this.selectionRect), "x" === a2.config.chart.selection.type ? this.slDraggableRect = this.selectionRect.draggable({ minX: 0, minY: 0, maxX: a2.globals.gridWidth, maxY: a2.globals.gridHeight }).on("dragmove", this.selectionDragging.bind(this, "dragging")) : "y" === a2.config.chart.selection.type ? this.slDraggableRect = this.selectionRect.draggable({ minX: 0, maxX: a2.globals.gridWidth }).on("dragmove", this.selectionDragging.bind(this, "dragging")) : this.slDraggableRect = this.selectionRect.draggable().on("dragmove", this.selectionDragging.bind(this, "dragging")), this.preselectedSelection(), this.hoverArea = a2.globals.dom.baseEl.querySelector("".concat(a2.globals.chartClass, " .apexcharts-svg")), this.hoverArea.classList.add("apexcharts-zoomable"), this.eventList.forEach(function(t4) { - e3.hoverArea.addEventListener(t4, s2.svgMouseEvents.bind(s2, i3), { capture: false, passive: true }); - }); - } }, { key: "destroy", value: function() { - this.slDraggableRect && (this.slDraggableRect.draggable(false), this.slDraggableRect.off(), this.selectionRect.off()), this.selectionRect = null, this.zoomRect = null, this.gridRect = null; - } }, { key: "svgMouseEvents", value: function(t3, e3) { - var i3 = this.w, a2 = this, s2 = this.ctx.toolbar, r2 = i3.globals.zoomEnabled ? i3.config.chart.zoom.type : i3.config.chart.selection.type, o2 = i3.config.chart.toolbar.autoSelected; - if (e3.shiftKey ? (this.shiftWasPressed = true, s2.enableZoomPanFromToolbar("pan" === o2 ? "zoom" : "pan")) : this.shiftWasPressed && (s2.enableZoomPanFromToolbar(o2), this.shiftWasPressed = false), e3.target) { - var n2, l2 = e3.target.classList; - if (e3.target.parentNode && null !== e3.target.parentNode && (n2 = e3.target.parentNode.classList), !(l2.contains("apexcharts-selection-rect") || l2.contains("apexcharts-legend-marker") || l2.contains("apexcharts-legend-text") || n2 && n2.contains("apexcharts-toolbar"))) { - if (a2.clientX = "touchmove" === e3.type || "touchstart" === e3.type ? e3.touches[0].clientX : "touchend" === e3.type ? e3.changedTouches[0].clientX : e3.clientX, a2.clientY = "touchmove" === e3.type || "touchstart" === e3.type ? e3.touches[0].clientY : "touchend" === e3.type ? e3.changedTouches[0].clientY : e3.clientY, "mousedown" === e3.type && 1 === e3.which) { - var h2 = a2.gridRect.getBoundingClientRect(); - a2.startX = a2.clientX - h2.left, a2.startY = a2.clientY - h2.top, a2.dragged = false, a2.w.globals.mousedown = true; - } - if (("mousemove" === e3.type && 1 === e3.which || "touchmove" === e3.type) && (a2.dragged = true, i3.globals.panEnabled ? (i3.globals.selection = null, a2.w.globals.mousedown && a2.panDragging({ context: a2, zoomtype: r2, xyRatios: t3 })) : (a2.w.globals.mousedown && i3.globals.zoomEnabled || a2.w.globals.mousedown && i3.globals.selectionEnabled) && (a2.selection = a2.selectionDrawing({ context: a2, zoomtype: r2 }))), "mouseup" === e3.type || "touchend" === e3.type || "mouseleave" === e3.type) { - var c2 = a2.gridRect.getBoundingClientRect(); - a2.w.globals.mousedown && (a2.endX = a2.clientX - c2.left, a2.endY = a2.clientY - c2.top, a2.dragX = Math.abs(a2.endX - a2.startX), a2.dragY = Math.abs(a2.endY - a2.startY), (i3.globals.zoomEnabled || i3.globals.selectionEnabled) && a2.selectionDrawn({ context: a2, zoomtype: r2 }), i3.globals.panEnabled && i3.config.xaxis.convertedCatToNumeric && a2.delayedPanScrolled()), i3.globals.zoomEnabled && a2.hideSelectionRect(this.selectionRect), a2.dragged = false, a2.w.globals.mousedown = false; - } - this.makeSelectionRectDraggable(); - } - } - } }, { key: "makeSelectionRectDraggable", value: function() { - var t3 = this.w; - if (this.selectionRect) { - var e3 = this.selectionRect.node.getBoundingClientRect(); - e3.width > 0 && e3.height > 0 && this.slDraggableRect.selectize({ points: "l, r", pointSize: 8, pointType: "rect" }).resize({ constraint: { minX: 0, minY: 0, maxX: t3.globals.gridWidth, maxY: t3.globals.gridHeight } }).on("resizing", this.selectionDragging.bind(this, "resizing")); - } - } }, { key: "preselectedSelection", value: function() { - var t3 = this.w, e3 = this.xyRatios; - if (!t3.globals.zoomEnabled) { - if (void 0 !== t3.globals.selection && null !== t3.globals.selection) - this.drawSelectionRect(t3.globals.selection); - else if (void 0 !== t3.config.chart.selection.xaxis.min && void 0 !== t3.config.chart.selection.xaxis.max) { - var i3 = (t3.config.chart.selection.xaxis.min - t3.globals.minX) / e3.xRatio, a2 = { x: i3, y: 0, width: t3.globals.gridWidth - (t3.globals.maxX - t3.config.chart.selection.xaxis.max) / e3.xRatio - i3, height: t3.globals.gridHeight, translateX: 0, translateY: 0, selectionEnabled: true }; - this.drawSelectionRect(a2), this.makeSelectionRectDraggable(), "function" == typeof t3.config.chart.events.selection && t3.config.chart.events.selection(this.ctx, { xaxis: { min: t3.config.chart.selection.xaxis.min, max: t3.config.chart.selection.xaxis.max }, yaxis: {} }); - } - } - } }, { key: "drawSelectionRect", value: function(t3) { - var e3 = t3.x, i3 = t3.y, a2 = t3.width, s2 = t3.height, r2 = t3.translateX, o2 = void 0 === r2 ? 0 : r2, n2 = t3.translateY, l2 = void 0 === n2 ? 0 : n2, h2 = this.w, c2 = this.zoomRect, d2 = this.selectionRect; - if (this.dragged || null !== h2.globals.selection) { - var g2 = { transform: "translate(" + o2 + ", " + l2 + ")" }; - h2.globals.zoomEnabled && this.dragged && (a2 < 0 && (a2 = 1), c2.attr({ x: e3, y: i3, width: a2, height: s2, fill: h2.config.chart.zoom.zoomedArea.fill.color, "fill-opacity": h2.config.chart.zoom.zoomedArea.fill.opacity, stroke: h2.config.chart.zoom.zoomedArea.stroke.color, "stroke-width": h2.config.chart.zoom.zoomedArea.stroke.width, "stroke-opacity": h2.config.chart.zoom.zoomedArea.stroke.opacity }), m.setAttrs(c2.node, g2)), h2.globals.selectionEnabled && (d2.attr({ x: e3, y: i3, width: a2 > 0 ? a2 : 0, height: s2 > 0 ? s2 : 0, fill: h2.config.chart.selection.fill.color, "fill-opacity": h2.config.chart.selection.fill.opacity, stroke: h2.config.chart.selection.stroke.color, "stroke-width": h2.config.chart.selection.stroke.width, "stroke-dasharray": h2.config.chart.selection.stroke.dashArray, "stroke-opacity": h2.config.chart.selection.stroke.opacity }), m.setAttrs(d2.node, g2)); - } - } }, { key: "hideSelectionRect", value: function(t3) { - t3 && t3.attr({ x: 0, y: 0, width: 0, height: 0 }); - } }, { key: "selectionDrawing", value: function(t3) { - var e3 = t3.context, i3 = t3.zoomtype, a2 = this.w, s2 = e3, r2 = this.gridRect.getBoundingClientRect(), o2 = s2.startX - 1, n2 = s2.startY, l2 = false, h2 = false, c2 = s2.clientX - r2.left - o2, d2 = s2.clientY - r2.top - n2, g2 = {}; - return Math.abs(c2 + o2) > a2.globals.gridWidth ? c2 = a2.globals.gridWidth - o2 : s2.clientX - r2.left < 0 && (c2 = o2), o2 > s2.clientX - r2.left && (l2 = true, c2 = Math.abs(c2)), n2 > s2.clientY - r2.top && (h2 = true, d2 = Math.abs(d2)), g2 = "x" === i3 ? { x: l2 ? o2 - c2 : o2, y: 0, width: c2, height: a2.globals.gridHeight } : "y" === i3 ? { x: 0, y: h2 ? n2 - d2 : n2, width: a2.globals.gridWidth, height: d2 } : { x: l2 ? o2 - c2 : o2, y: h2 ? n2 - d2 : n2, width: c2, height: d2 }, s2.drawSelectionRect(g2), s2.selectionDragging("resizing"), g2; - } }, { key: "selectionDragging", value: function(t3, e3) { - var i3 = this, a2 = this.w, s2 = this.xyRatios, r2 = this.selectionRect, o2 = 0; - "resizing" === t3 && (o2 = 30); - var n2 = function(t4) { - return parseFloat(r2.node.getAttribute(t4)); - }, l2 = { x: n2("x"), y: n2("y"), width: n2("width"), height: n2("height") }; - a2.globals.selection = l2, "function" == typeof a2.config.chart.events.selection && a2.globals.selectionEnabled && (clearTimeout(this.w.globals.selectionResizeTimer), this.w.globals.selectionResizeTimer = window.setTimeout(function() { - var t4 = i3.gridRect.getBoundingClientRect(), e4 = r2.node.getBoundingClientRect(), o3 = { xaxis: { min: a2.globals.xAxisScale.niceMin + (e4.left - t4.left) * s2.xRatio, max: a2.globals.xAxisScale.niceMin + (e4.right - t4.left) * s2.xRatio }, yaxis: { min: a2.globals.yAxisScale[0].niceMin + (t4.bottom - e4.bottom) * s2.yRatio[0], max: a2.globals.yAxisScale[0].niceMax - (e4.top - t4.top) * s2.yRatio[0] } }; - a2.config.chart.events.selection(i3.ctx, o3), a2.config.chart.brush.enabled && void 0 !== a2.config.chart.events.brushScrolled && a2.config.chart.events.brushScrolled(i3.ctx, o3); - }, o2)); - } }, { key: "selectionDrawn", value: function(t3) { - var e3 = t3.context, i3 = t3.zoomtype, a2 = this.w, s2 = e3, r2 = this.xyRatios, o2 = this.ctx.toolbar; - if (s2.startX > s2.endX) { - var n2 = s2.startX; - s2.startX = s2.endX, s2.endX = n2; - } - if (s2.startY > s2.endY) { - var l2 = s2.startY; - s2.startY = s2.endY, s2.endY = l2; - } - var h2 = void 0, c2 = void 0; - a2.globals.isRangeBar ? (h2 = a2.globals.yAxisScale[0].niceMin + s2.startX * r2.invertedYRatio, c2 = a2.globals.yAxisScale[0].niceMin + s2.endX * r2.invertedYRatio) : (h2 = a2.globals.xAxisScale.niceMin + s2.startX * r2.xRatio, c2 = a2.globals.xAxisScale.niceMin + s2.endX * r2.xRatio); - var d2 = [], g2 = []; - if (a2.config.yaxis.forEach(function(t4, e4) { - d2.push(a2.globals.yAxisScale[e4].niceMax - r2.yRatio[e4] * s2.startY), g2.push(a2.globals.yAxisScale[e4].niceMax - r2.yRatio[e4] * s2.endY); - }), s2.dragged && (s2.dragX > 10 || s2.dragY > 10) && h2 !== c2) { - if (a2.globals.zoomEnabled) { - var u2 = x.clone(a2.globals.initialConfig.yaxis), p2 = x.clone(a2.globals.initialConfig.xaxis); - if (a2.globals.zoomed = true, a2.config.xaxis.convertedCatToNumeric && (h2 = Math.floor(h2), c2 = Math.floor(c2), h2 < 1 && (h2 = 1, c2 = a2.globals.dataPoints), c2 - h2 < 2 && (c2 = h2 + 1)), "xy" !== i3 && "x" !== i3 || (p2 = { min: h2, max: c2 }), "xy" !== i3 && "y" !== i3 || u2.forEach(function(t4, e4) { - u2[e4].min = g2[e4], u2[e4].max = d2[e4]; - }), a2.config.chart.zoom.autoScaleYaxis) { - var f2 = new _(s2.ctx); - u2 = f2.autoScaleY(s2.ctx, u2, { xaxis: p2 }); - } - if (o2) { - var b2 = o2.getBeforeZoomRange(p2, u2); - b2 && (p2 = b2.xaxis ? b2.xaxis : p2, u2 = b2.yaxis ? b2.yaxis : u2); - } - var v2 = { xaxis: p2 }; - a2.config.chart.group || (v2.yaxis = u2), s2.ctx.updateHelpers._updateOptions(v2, false, s2.w.config.chart.animations.dynamicAnimation.enabled), "function" == typeof a2.config.chart.events.zoomed && o2.zoomCallback(p2, u2); - } else if (a2.globals.selectionEnabled) { - var m2, y2 = null; - m2 = { min: h2, max: c2 }, "xy" !== i3 && "y" !== i3 || (y2 = x.clone(a2.config.yaxis)).forEach(function(t4, e4) { - y2[e4].min = g2[e4], y2[e4].max = d2[e4]; - }), a2.globals.selection = s2.selection, "function" == typeof a2.config.chart.events.selection && a2.config.chart.events.selection(s2.ctx, { xaxis: m2, yaxis: y2 }); - } - } - } }, { key: "panDragging", value: function(t3) { - var e3 = t3.context, i3 = this.w, a2 = e3; - if (void 0 !== i3.globals.lastClientPosition.x) { - var s2 = i3.globals.lastClientPosition.x - a2.clientX, r2 = i3.globals.lastClientPosition.y - a2.clientY; - Math.abs(s2) > Math.abs(r2) && s2 > 0 ? this.moveDirection = "left" : Math.abs(s2) > Math.abs(r2) && s2 < 0 ? this.moveDirection = "right" : Math.abs(r2) > Math.abs(s2) && r2 > 0 ? this.moveDirection = "up" : Math.abs(r2) > Math.abs(s2) && r2 < 0 && (this.moveDirection = "down"); - } - i3.globals.lastClientPosition = { x: a2.clientX, y: a2.clientY }; - var o2 = i3.globals.isRangeBar ? i3.globals.minY : i3.globals.minX, n2 = i3.globals.isRangeBar ? i3.globals.maxY : i3.globals.maxX; - i3.config.xaxis.convertedCatToNumeric || a2.panScrolled(o2, n2); - } }, { key: "delayedPanScrolled", value: function() { - var t3 = this.w, e3 = t3.globals.minX, i3 = t3.globals.maxX, a2 = (t3.globals.maxX - t3.globals.minX) / 2; - "left" === this.moveDirection ? (e3 = t3.globals.minX + a2, i3 = t3.globals.maxX + a2) : "right" === this.moveDirection && (e3 = t3.globals.minX - a2, i3 = t3.globals.maxX - a2), e3 = Math.floor(e3), i3 = Math.floor(i3), this.updateScrolledChart({ xaxis: { min: e3, max: i3 } }, e3, i3); - } }, { key: "panScrolled", value: function(t3, e3) { - var i3 = this.w, a2 = this.xyRatios, s2 = x.clone(i3.globals.initialConfig.yaxis), r2 = a2.xRatio, o2 = i3.globals.minX, n2 = i3.globals.maxX; - i3.globals.isRangeBar && (r2 = a2.invertedYRatio, o2 = i3.globals.minY, n2 = i3.globals.maxY), "left" === this.moveDirection ? (t3 = o2 + i3.globals.gridWidth / 15 * r2, e3 = n2 + i3.globals.gridWidth / 15 * r2) : "right" === this.moveDirection && (t3 = o2 - i3.globals.gridWidth / 15 * r2, e3 = n2 - i3.globals.gridWidth / 15 * r2), i3.globals.isRangeBar || (t3 < i3.globals.initialMinX || e3 > i3.globals.initialMaxX) && (t3 = o2, e3 = n2); - var l2 = { min: t3, max: e3 }; - i3.config.chart.zoom.autoScaleYaxis && (s2 = new _(this.ctx).autoScaleY(this.ctx, s2, { xaxis: l2 })); - var h2 = { xaxis: { min: t3, max: e3 } }; - i3.config.chart.group || (h2.yaxis = s2), this.updateScrolledChart(h2, t3, e3); - } }, { key: "updateScrolledChart", value: function(t3, e3, i3) { - var a2 = this.w; - this.ctx.updateHelpers._updateOptions(t3, false, false), "function" == typeof a2.config.chart.events.scrolled && a2.config.chart.events.scrolled(this.ctx, { xaxis: { min: e3, max: i3 } }); - } }]), i2; - }(); - var dt = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.ttCtx = e2, this.ctx = e2.ctx; - } - return r(t2, [{ key: "getNearestValues", value: function(t3) { - var e2 = t3.hoverArea, i2 = t3.elGrid, a2 = t3.clientX, s2 = t3.clientY, r2 = this.w, o2 = i2.getBoundingClientRect(), n2 = o2.width, l2 = o2.height, h2 = n2 / (r2.globals.dataPoints - 1), c2 = l2 / r2.globals.dataPoints, d2 = this.hasBars(); - !r2.globals.comboCharts && !d2 || r2.config.xaxis.convertedCatToNumeric || (h2 = n2 / r2.globals.dataPoints); - var g2 = a2 - o2.left - r2.globals.barPadForNumericAxis, u2 = s2 - o2.top; - g2 < 0 || u2 < 0 || g2 > n2 || u2 > l2 ? (e2.classList.remove("hovering-zoom"), e2.classList.remove("hovering-pan")) : r2.globals.zoomEnabled ? (e2.classList.remove("hovering-pan"), e2.classList.add("hovering-zoom")) : r2.globals.panEnabled && (e2.classList.remove("hovering-zoom"), e2.classList.add("hovering-pan")); - var p2 = Math.round(g2 / h2), f2 = Math.floor(u2 / c2); - d2 && !r2.config.xaxis.convertedCatToNumeric && (p2 = Math.ceil(g2 / h2), p2 -= 1); - var b2 = null, v2 = null, m2 = r2.globals.seriesXvalues.map(function(t4) { - return t4.filter(function(t5) { - return x.isNumber(t5); - }); - }), y2 = r2.globals.seriesYvalues.map(function(t4) { - return t4.filter(function(t5) { - return x.isNumber(t5); - }); - }); - if (r2.globals.isXNumeric) { - var w2 = this.ttCtx.getElGrid().getBoundingClientRect(), k2 = g2 * (w2.width / n2), A2 = u2 * (w2.height / l2); - b2 = (v2 = this.closestInMultiArray(k2, A2, m2, y2)).index, p2 = v2.j, null !== b2 && (m2 = r2.globals.seriesXvalues[b2], p2 = (v2 = this.closestInArray(k2, m2)).index); - } - return r2.globals.capturedSeriesIndex = null === b2 ? -1 : b2, (!p2 || p2 < 1) && (p2 = 0), r2.globals.isBarHorizontal ? r2.globals.capturedDataPointIndex = f2 : r2.globals.capturedDataPointIndex = p2, { capturedSeries: b2, j: r2.globals.isBarHorizontal ? f2 : p2, hoverX: g2, hoverY: u2 }; - } }, { key: "closestInMultiArray", value: function(t3, e2, i2, a2) { - var s2 = this.w, r2 = 0, o2 = null, n2 = -1; - s2.globals.series.length > 1 ? r2 = this.getFirstActiveXArray(i2) : o2 = 0; - var l2 = i2[r2][0], h2 = Math.abs(t3 - l2); - if (i2.forEach(function(e3) { - e3.forEach(function(e4, i3) { - var a3 = Math.abs(t3 - e4); - a3 <= h2 && (h2 = a3, n2 = i3); - }); - }), -1 !== n2) { - var c2 = a2[r2][n2], d2 = Math.abs(e2 - c2); - o2 = r2, a2.forEach(function(t4, i3) { - var a3 = Math.abs(e2 - t4[n2]); - a3 <= d2 && (d2 = a3, o2 = i3); - }); - } - return { index: o2, j: n2 }; - } }, { key: "getFirstActiveXArray", value: function(t3) { - for (var e2 = this.w, i2 = 0, a2 = t3.map(function(t4, e3) { - return t4.length > 0 ? e3 : -1; - }), s2 = 0; s2 < a2.length; s2++) - if (-1 !== a2[s2] && -1 === e2.globals.collapsedSeriesIndices.indexOf(s2) && -1 === e2.globals.ancillaryCollapsedSeriesIndices.indexOf(s2)) { - i2 = a2[s2]; - break; - } - return i2; - } }, { key: "closestInArray", value: function(t3, e2) { - for (var i2 = e2[0], a2 = null, s2 = Math.abs(t3 - i2), r2 = 0; r2 < e2.length; r2++) { - var o2 = Math.abs(t3 - e2[r2]); - o2 < s2 && (s2 = o2, a2 = r2); - } - return { index: a2 }; - } }, { key: "isXoverlap", value: function(t3) { - var e2 = [], i2 = this.w.globals.seriesX.filter(function(t4) { - return void 0 !== t4[0]; - }); - if (i2.length > 0) - for (var a2 = 0; a2 < i2.length - 1; a2++) - void 0 !== i2[a2][t3] && void 0 !== i2[a2 + 1][t3] && i2[a2][t3] !== i2[a2 + 1][t3] && e2.push("unEqual"); - return 0 === e2.length; - } }, { key: "isInitialSeriesSameLen", value: function() { - for (var t3 = true, e2 = this.w.globals.initialSeries, i2 = 0; i2 < e2.length - 1; i2++) - if (e2[i2].data.length !== e2[i2 + 1].data.length) { - t3 = false; - break; - } - return t3; - } }, { key: "getBarsHeight", value: function(t3) { - return u(t3).reduce(function(t4, e2) { - return t4 + e2.getBBox().height; - }, 0); - } }, { key: "getElMarkers", value: function(t3) { - return "number" == typeof t3 ? this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:realIndex='".concat(t3, "'] .apexcharts-series-markers-wrap > *")) : this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap > *"); - } }, { key: "getAllMarkers", value: function() { - var t3 = this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap"); - (t3 = u(t3)).sort(function(t4, e3) { - var i2 = Number(t4.getAttribute("data:realIndex")), a2 = Number(e3.getAttribute("data:realIndex")); - return a2 < i2 ? 1 : a2 > i2 ? -1 : 0; - }); - var e2 = []; - return t3.forEach(function(t4) { - e2.push(t4.querySelector(".apexcharts-marker")); - }), e2; - } }, { key: "hasMarkers", value: function(t3) { - return this.getElMarkers(t3).length > 0; - } }, { key: "getElBars", value: function() { - return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series"); - } }, { key: "hasBars", value: function() { - return this.getElBars().length > 0; - } }, { key: "getHoverMarkerSize", value: function(t3) { - var e2 = this.w, i2 = e2.config.markers.hover.size; - return void 0 === i2 && (i2 = e2.globals.markers.size[t3] + e2.config.markers.hover.sizeOffset), i2; - } }, { key: "toggleAllTooltipSeriesGroups", value: function(t3) { - var e2 = this.w, i2 = this.ttCtx; - 0 === i2.allTooltipSeriesGroups.length && (i2.allTooltipSeriesGroups = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group")); - for (var a2 = i2.allTooltipSeriesGroups, s2 = 0; s2 < a2.length; s2++) - "enable" === t3 ? (a2[s2].classList.add("apexcharts-active"), a2[s2].style.display = e2.config.tooltip.items.display) : (a2[s2].classList.remove("apexcharts-active"), a2[s2].style.display = "none"); - } }]), t2; - }(); - var gt = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.ctx = e2.ctx, this.ttCtx = e2, this.tooltipUtil = new dt(e2); - } - return r(t2, [{ key: "drawSeriesTexts", value: function(t3) { - var e2 = t3.shared, i2 = void 0 === e2 || e2, a2 = t3.ttItems, s2 = t3.i, r2 = void 0 === s2 ? 0 : s2, o2 = t3.j, n2 = void 0 === o2 ? null : o2, l2 = t3.y1, h2 = t3.y2, c2 = t3.e, d2 = this.w; - void 0 !== d2.config.tooltip.custom ? this.handleCustomTooltip({ i: r2, j: n2, y1: l2, y2: h2, w: d2 }) : this.toggleActiveInactiveSeries(i2); - var g2 = this.getValuesToPrint({ i: r2, j: n2 }); - this.printLabels({ i: r2, j: n2, values: g2, ttItems: a2, shared: i2, e: c2 }); - var u2 = this.ttCtx.getElTooltip(); - this.ttCtx.tooltipRect.ttWidth = u2.getBoundingClientRect().width, this.ttCtx.tooltipRect.ttHeight = u2.getBoundingClientRect().height; - } }, { key: "printLabels", value: function(t3) { - var i2, a2 = this, s2 = t3.i, r2 = t3.j, o2 = t3.values, n2 = t3.ttItems, l2 = t3.shared, h2 = t3.e, c2 = this.w, d2 = [], g2 = function(t4) { - return c2.globals.seriesGoals[t4] && c2.globals.seriesGoals[t4][r2] && Array.isArray(c2.globals.seriesGoals[t4][r2]); - }, u2 = o2.xVal, p2 = o2.zVal, f2 = o2.xAxisTTVal, x2 = "", b2 = c2.globals.colors[s2]; - null !== r2 && c2.config.plotOptions.bar.distributed && (b2 = c2.globals.colors[r2]); - for (var v2 = function(t4, o3) { - var v3 = a2.getFormatters(s2); - x2 = a2.getSeriesName({ fn: v3.yLbTitleFormatter, index: s2, seriesIndex: s2, j: r2 }), "treemap" === c2.config.chart.type && (x2 = v3.yLbTitleFormatter(String(c2.config.series[s2].data[r2].x), { series: c2.globals.series, seriesIndex: s2, dataPointIndex: r2, w: c2 })); - var m3 = c2.config.tooltip.inverseOrder ? o3 : t4; - if (c2.globals.axisCharts) { - var y3 = function(t5) { - var e2, i3, a3, s3; - return c2.globals.isRangeData ? v3.yLbFormatter(null === (e2 = c2.globals.seriesRangeStart) || void 0 === e2 || null === (i3 = e2[t5]) || void 0 === i3 ? void 0 : i3[r2], { series: c2.globals.seriesRangeStart, seriesIndex: t5, dataPointIndex: r2, w: c2 }) + " - " + v3.yLbFormatter(null === (a3 = c2.globals.seriesRangeEnd) || void 0 === a3 || null === (s3 = a3[t5]) || void 0 === s3 ? void 0 : s3[r2], { series: c2.globals.seriesRangeEnd, seriesIndex: t5, dataPointIndex: r2, w: c2 }) : v3.yLbFormatter(c2.globals.series[t5][r2], { series: c2.globals.series, seriesIndex: t5, dataPointIndex: r2, w: c2 }); - }; - if (l2) - v3 = a2.getFormatters(m3), x2 = a2.getSeriesName({ fn: v3.yLbTitleFormatter, index: m3, seriesIndex: s2, j: r2 }), b2 = c2.globals.colors[m3], i2 = y3(m3), g2(m3) && (d2 = c2.globals.seriesGoals[m3][r2].map(function(t5) { - return { attrs: t5, val: v3.yLbFormatter(t5.value, { seriesIndex: m3, dataPointIndex: r2, w: c2 }) }; - })); - else { - var w2, k2 = null == h2 || null === (w2 = h2.target) || void 0 === w2 ? void 0 : w2.getAttribute("fill"); - k2 && (b2 = -1 !== k2.indexOf("url") ? document.querySelector(k2.substr(4).slice(0, -1)).childNodes[0].getAttribute("stroke") : k2), i2 = y3(s2), g2(s2) && Array.isArray(c2.globals.seriesGoals[s2][r2]) && (d2 = c2.globals.seriesGoals[s2][r2].map(function(t5) { - return { attrs: t5, val: v3.yLbFormatter(t5.value, { seriesIndex: s2, dataPointIndex: r2, w: c2 }) }; - })); - } - } - null === r2 && (i2 = v3.yLbFormatter(c2.globals.series[s2], e(e({}, c2), {}, { seriesIndex: s2, dataPointIndex: s2 }))), a2.DOMHandling({ i: s2, t: m3, j: r2, ttItems: n2, values: { val: i2, goalVals: d2, xVal: u2, xAxisTTVal: f2, zVal: p2 }, seriesName: x2, shared: l2, pColor: b2 }); - }, m2 = 0, y2 = c2.globals.series.length - 1; m2 < c2.globals.series.length; m2++, y2--) - v2(m2, y2); - } }, { key: "getFormatters", value: function(t3) { - var e2, i2 = this.w, a2 = i2.globals.yLabelFormatters[t3]; - return void 0 !== i2.globals.ttVal ? Array.isArray(i2.globals.ttVal) ? (a2 = i2.globals.ttVal[t3] && i2.globals.ttVal[t3].formatter, e2 = i2.globals.ttVal[t3] && i2.globals.ttVal[t3].title && i2.globals.ttVal[t3].title.formatter) : (a2 = i2.globals.ttVal.formatter, "function" == typeof i2.globals.ttVal.title.formatter && (e2 = i2.globals.ttVal.title.formatter)) : e2 = i2.config.tooltip.y.title.formatter, "function" != typeof a2 && (a2 = i2.globals.yLabelFormatters[0] ? i2.globals.yLabelFormatters[0] : function(t4) { - return t4; - }), "function" != typeof e2 && (e2 = function(t4) { - return t4; - }), { yLbFormatter: a2, yLbTitleFormatter: e2 }; - } }, { key: "getSeriesName", value: function(t3) { - var e2 = t3.fn, i2 = t3.index, a2 = t3.seriesIndex, s2 = t3.j, r2 = this.w; - return e2(String(r2.globals.seriesNames[i2]), { series: r2.globals.series, seriesIndex: a2, dataPointIndex: s2, w: r2 }); - } }, { key: "DOMHandling", value: function(t3) { - t3.i; - var e2 = t3.t, i2 = t3.j, a2 = t3.ttItems, s2 = t3.values, r2 = t3.seriesName, o2 = t3.shared, n2 = t3.pColor, l2 = this.w, h2 = this.ttCtx, c2 = s2.val, d2 = s2.goalVals, g2 = s2.xVal, u2 = s2.xAxisTTVal, p2 = s2.zVal, f2 = null; - f2 = a2[e2].children, l2.config.tooltip.fillSeriesColor && (a2[e2].style.backgroundColor = n2, f2[0].style.display = "none"), h2.showTooltipTitle && (null === h2.tooltipTitle && (h2.tooltipTitle = l2.globals.dom.baseEl.querySelector(".apexcharts-tooltip-title")), h2.tooltipTitle.innerHTML = g2), h2.isXAxisTooltipEnabled && (h2.xaxisTooltipText.innerHTML = "" !== u2 ? u2 : g2); - var x2 = a2[e2].querySelector(".apexcharts-tooltip-text-y-label"); - x2 && (x2.innerHTML = r2 || ""); - var b2 = a2[e2].querySelector(".apexcharts-tooltip-text-y-value"); - b2 && (b2.innerHTML = void 0 !== c2 ? c2 : ""), f2[0] && f2[0].classList.contains("apexcharts-tooltip-marker") && (l2.config.tooltip.marker.fillColors && Array.isArray(l2.config.tooltip.marker.fillColors) && (n2 = l2.config.tooltip.marker.fillColors[e2]), f2[0].style.backgroundColor = n2), l2.config.tooltip.marker.show || (f2[0].style.display = "none"); - var v2 = a2[e2].querySelector(".apexcharts-tooltip-text-goals-label"), m2 = a2[e2].querySelector(".apexcharts-tooltip-text-goals-value"); - if (d2.length && l2.globals.seriesGoals[e2]) { - var y2 = function() { - var t4 = "
", e3 = "
"; - d2.forEach(function(i3, a3) { - t4 += '
').concat(i3.attrs.name, "
"), e3 += "
".concat(i3.val, "
"); - }), v2.innerHTML = t4 + "
", m2.innerHTML = e3 + "
"; - }; - o2 ? l2.globals.seriesGoals[e2][i2] && Array.isArray(l2.globals.seriesGoals[e2][i2]) ? y2() : (v2.innerHTML = "", m2.innerHTML = "") : y2(); - } else - v2.innerHTML = "", m2.innerHTML = ""; - null !== p2 && (a2[e2].querySelector(".apexcharts-tooltip-text-z-label").innerHTML = l2.config.tooltip.z.title, a2[e2].querySelector(".apexcharts-tooltip-text-z-value").innerHTML = void 0 !== p2 ? p2 : ""); - o2 && f2[0] && (null == c2 || l2.globals.ancillaryCollapsedSeriesIndices.indexOf(e2) > -1 || l2.globals.collapsedSeriesIndices.indexOf(e2) > -1 ? f2[0].parentNode.style.display = "none" : f2[0].parentNode.style.display = l2.config.tooltip.items.display); - } }, { key: "toggleActiveInactiveSeries", value: function(t3) { - var e2 = this.w; - if (t3) - this.tooltipUtil.toggleAllTooltipSeriesGroups("enable"); - else { - this.tooltipUtil.toggleAllTooltipSeriesGroups("disable"); - var i2 = e2.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group"); - i2 && (i2.classList.add("apexcharts-active"), i2.style.display = e2.config.tooltip.items.display); - } - } }, { key: "getValuesToPrint", value: function(t3) { - var e2 = t3.i, i2 = t3.j, a2 = this.w, s2 = this.ctx.series.filteredSeriesX(), r2 = "", o2 = "", n2 = null, l2 = null, h2 = { series: a2.globals.series, seriesIndex: e2, dataPointIndex: i2, w: a2 }, c2 = a2.globals.ttZFormatter; - null === i2 ? l2 = a2.globals.series[e2] : a2.globals.isXNumeric && "treemap" !== a2.config.chart.type ? (r2 = s2[e2][i2], 0 === s2[e2].length && (r2 = s2[this.tooltipUtil.getFirstActiveXArray(s2)][i2])) : r2 = void 0 !== a2.globals.labels[i2] ? a2.globals.labels[i2] : ""; - var d2 = r2; - a2.globals.isXNumeric && "datetime" === a2.config.xaxis.type ? r2 = new M(this.ctx).xLabelFormat(a2.globals.ttKeyFormatter, d2, d2, { i: void 0, dateFormatter: new I(this.ctx).formatDate, w: this.w }) : r2 = a2.globals.isBarHorizontal ? a2.globals.yLabelFormatters[0](d2, h2) : a2.globals.xLabelFormatter(d2, h2); - return void 0 !== a2.config.tooltip.x.formatter && (r2 = a2.globals.ttKeyFormatter(d2, h2)), a2.globals.seriesZ.length > 0 && a2.globals.seriesZ[e2].length > 0 && (n2 = c2(a2.globals.seriesZ[e2][i2], a2)), o2 = "function" == typeof a2.config.xaxis.tooltip.formatter ? a2.globals.xaxisTooltipFormatter(d2, h2) : r2, { val: Array.isArray(l2) ? l2.join(" ") : l2, xVal: Array.isArray(r2) ? r2.join(" ") : r2, xAxisTTVal: Array.isArray(o2) ? o2.join(" ") : o2, zVal: n2 }; - } }, { key: "handleCustomTooltip", value: function(t3) { - var e2 = t3.i, i2 = t3.j, a2 = t3.y1, s2 = t3.y2, r2 = t3.w, o2 = this.ttCtx.getElTooltip(), n2 = r2.config.tooltip.custom; - Array.isArray(n2) && n2[e2] && (n2 = n2[e2]), o2.innerHTML = n2({ ctx: this.ctx, series: r2.globals.series, seriesIndex: e2, dataPointIndex: i2, y1: a2, y2: s2, w: r2 }); - } }]), t2; - }(); - var ut = function() { - function t2(e2) { - a(this, t2), this.ttCtx = e2, this.ctx = e2.ctx, this.w = e2.w; - } - return r(t2, [{ key: "moveXCrosshairs", value: function(t3) { - var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, i2 = this.ttCtx, a2 = this.w, s2 = i2.getElXCrosshairs(), r2 = t3 - i2.xcrosshairsWidth / 2, o2 = a2.globals.labels.slice().length; - if (null !== e2 && (r2 = a2.globals.gridWidth / o2 * e2), null === s2 || a2.globals.isBarHorizontal || (s2.setAttribute("x", r2), s2.setAttribute("x1", r2), s2.setAttribute("x2", r2), s2.setAttribute("y2", a2.globals.gridHeight), s2.classList.add("apexcharts-active")), r2 < 0 && (r2 = 0), r2 > a2.globals.gridWidth && (r2 = a2.globals.gridWidth), i2.isXAxisTooltipEnabled) { - var n2 = r2; - "tickWidth" !== a2.config.xaxis.crosshairs.width && "barWidth" !== a2.config.xaxis.crosshairs.width || (n2 = r2 + i2.xcrosshairsWidth / 2), this.moveXAxisTooltip(n2); - } - } }, { key: "moveYCrosshairs", value: function(t3) { - var e2 = this.ttCtx; - null !== e2.ycrosshairs && m.setAttrs(e2.ycrosshairs, { y1: t3, y2: t3 }), null !== e2.ycrosshairsHidden && m.setAttrs(e2.ycrosshairsHidden, { y1: t3, y2: t3 }); - } }, { key: "moveXAxisTooltip", value: function(t3) { - var e2 = this.w, i2 = this.ttCtx; - if (null !== i2.xaxisTooltip && 0 !== i2.xcrosshairsWidth) { - i2.xaxisTooltip.classList.add("apexcharts-active"); - var a2 = i2.xaxisOffY + e2.config.xaxis.tooltip.offsetY + e2.globals.translateY + 1 + e2.config.xaxis.offsetY; - if (t3 -= i2.xaxisTooltip.getBoundingClientRect().width / 2, !isNaN(t3)) { - t3 += e2.globals.translateX; - var s2; - s2 = new m(this.ctx).getTextRects(i2.xaxisTooltipText.innerHTML), i2.xaxisTooltipText.style.minWidth = s2.width + "px", i2.xaxisTooltip.style.left = t3 + "px", i2.xaxisTooltip.style.top = a2 + "px"; - } - } - } }, { key: "moveYAxisTooltip", value: function(t3) { - var e2 = this.w, i2 = this.ttCtx; - null === i2.yaxisTTEls && (i2.yaxisTTEls = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip")); - var a2 = parseInt(i2.ycrosshairsHidden.getAttribute("y1"), 10), s2 = e2.globals.translateY + a2, r2 = i2.yaxisTTEls[t3].getBoundingClientRect().height, o2 = e2.globals.translateYAxisX[t3] - 2; - e2.config.yaxis[t3].opposite && (o2 -= 26), s2 -= r2 / 2, -1 === e2.globals.ignoreYAxisIndexes.indexOf(t3) ? (i2.yaxisTTEls[t3].classList.add("apexcharts-active"), i2.yaxisTTEls[t3].style.top = s2 + "px", i2.yaxisTTEls[t3].style.left = o2 + e2.config.yaxis[t3].tooltip.offsetX + "px") : i2.yaxisTTEls[t3].classList.remove("apexcharts-active"); - } }, { key: "moveTooltip", value: function(t3, e2) { - var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, a2 = this.w, s2 = this.ttCtx, r2 = s2.getElTooltip(), o2 = s2.tooltipRect, n2 = null !== i2 ? parseFloat(i2) : 1, l2 = parseFloat(t3) + n2 + 5, h2 = parseFloat(e2) + n2 / 2; - if (l2 > a2.globals.gridWidth / 2 && (l2 = l2 - o2.ttWidth - n2 - 10), l2 > a2.globals.gridWidth - o2.ttWidth - 10 && (l2 = a2.globals.gridWidth - o2.ttWidth), l2 < -20 && (l2 = -20), a2.config.tooltip.followCursor) { - var c2 = s2.getElGrid().getBoundingClientRect(); - (l2 = s2.e.clientX - c2.left) > a2.globals.gridWidth / 2 && (l2 -= s2.tooltipRect.ttWidth), (h2 = s2.e.clientY + a2.globals.translateY - c2.top) > a2.globals.gridHeight / 2 && (h2 -= s2.tooltipRect.ttHeight); - } else - a2.globals.isBarHorizontal || o2.ttHeight / 2 + h2 > a2.globals.gridHeight && (h2 = a2.globals.gridHeight - o2.ttHeight + a2.globals.translateY); - isNaN(l2) || (l2 += a2.globals.translateX, r2.style.left = l2 + "px", r2.style.top = h2 + "px"); - } }, { key: "moveMarkers", value: function(t3, e2) { - var i2 = this.w, a2 = this.ttCtx; - if (i2.globals.markers.size[t3] > 0) - for (var s2 = i2.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t3, "'] .apexcharts-marker")), r2 = 0; r2 < s2.length; r2++) - parseInt(s2[r2].getAttribute("rel"), 10) === e2 && (a2.marker.resetPointsSize(), a2.marker.enlargeCurrentPoint(e2, s2[r2])); - else - a2.marker.resetPointsSize(), this.moveDynamicPointOnHover(e2, t3); - } }, { key: "moveDynamicPointOnHover", value: function(t3, e2) { - var i2, a2, s2 = this.w, r2 = this.ttCtx, o2 = s2.globals.pointsArray, n2 = r2.tooltipUtil.getHoverMarkerSize(e2), l2 = s2.config.series[e2].type; - if (!l2 || "column" !== l2 && "candlestick" !== l2 && "boxPlot" !== l2) { - i2 = o2[e2][t3][0], a2 = o2[e2][t3][1] ? o2[e2][t3][1] : 0; - var h2 = s2.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(e2, "'] .apexcharts-series-markers circle")); - h2 && a2 < s2.globals.gridHeight && a2 > 0 && (h2.setAttribute("r", n2), h2.setAttribute("cx", i2), h2.setAttribute("cy", a2)), this.moveXCrosshairs(i2), r2.fixedTooltip || this.moveTooltip(i2, a2, n2); - } - } }, { key: "moveDynamicPointsOnHover", value: function(t3) { - var e2, i2 = this.ttCtx, a2 = i2.w, s2 = 0, r2 = 0, o2 = a2.globals.pointsArray; - e2 = new N(this.ctx).getActiveConfigSeriesIndex("asc", ["line", "area", "scatter", "bubble"]); - var n2 = i2.tooltipUtil.getHoverMarkerSize(e2); - o2[e2] && (s2 = o2[e2][t3][0], r2 = o2[e2][t3][1]); - var l2 = i2.tooltipUtil.getAllMarkers(); - if (null !== l2) - for (var h2 = 0; h2 < a2.globals.series.length; h2++) { - var c2 = o2[h2]; - if (a2.globals.comboCharts && void 0 === c2 && l2.splice(h2, 0, null), c2 && c2.length) { - var d2 = o2[h2][t3][1], g2 = void 0; - if (l2[h2].setAttribute("cx", s2), "rangeArea" === a2.config.chart.type && !a2.globals.comboCharts) { - var u2 = t3 + a2.globals.series[h2].length; - g2 = o2[h2][u2][1], d2 -= Math.abs(d2 - g2) / 2; - } - null !== d2 && !isNaN(d2) && d2 < a2.globals.gridHeight + n2 && d2 + n2 > 0 ? (l2[h2] && l2[h2].setAttribute("r", n2), l2[h2] && l2[h2].setAttribute("cy", d2)) : l2[h2] && l2[h2].setAttribute("r", 0); - } - } - this.moveXCrosshairs(s2), i2.fixedTooltip || this.moveTooltip(s2, r2 || a2.globals.gridHeight, n2); - } }, { key: "moveStickyTooltipOverBars", value: function(t3, e2) { - var i2 = this.w, a2 = this.ttCtx, s2 = i2.globals.columnSeries ? i2.globals.columnSeries.length : i2.globals.series.length, r2 = s2 >= 2 && s2 % 2 == 0 ? Math.floor(s2 / 2) : Math.floor(s2 / 2) + 1; - i2.globals.isBarHorizontal && (r2 = new N(this.ctx).getActiveConfigSeriesIndex("desc") + 1); - var o2 = i2.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(r2, "'] path[j='").concat(t3, "'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(r2, "'] path[j='").concat(t3, "'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(r2, "'] path[j='").concat(t3, "'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(r2, "'] path[j='").concat(t3, "']")); - o2 || "number" != typeof e2 || (o2 = i2.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[data\\:realIndex='".concat(e2, "'] path[j='").concat(t3, "'],\n .apexcharts-candlestick-series .apexcharts-series[data\\:realIndex='").concat(e2, "'] path[j='").concat(t3, "'],\n .apexcharts-boxPlot-series .apexcharts-series[data\\:realIndex='").concat(e2, "'] path[j='").concat(t3, "'],\n .apexcharts-rangebar-series .apexcharts-series[data\\:realIndex='").concat(e2, "'] path[j='").concat(t3, "']"))); - var n2 = o2 ? parseFloat(o2.getAttribute("cx")) : 0, l2 = o2 ? parseFloat(o2.getAttribute("cy")) : 0, h2 = o2 ? parseFloat(o2.getAttribute("barWidth")) : 0, c2 = a2.getElGrid().getBoundingClientRect(), d2 = o2 && (o2.classList.contains("apexcharts-candlestick-area") || o2.classList.contains("apexcharts-boxPlot-area")); - i2.globals.isXNumeric ? (o2 && !d2 && (n2 -= s2 % 2 != 0 ? h2 / 2 : 0), o2 && d2 && i2.globals.comboCharts && (n2 -= h2 / 2)) : i2.globals.isBarHorizontal || (n2 = a2.xAxisTicksPositions[t3 - 1] + a2.dataPointsDividedWidth / 2, isNaN(n2) && (n2 = a2.xAxisTicksPositions[t3] - a2.dataPointsDividedWidth / 2)), i2.globals.isBarHorizontal ? l2 -= a2.tooltipRect.ttHeight : i2.config.tooltip.followCursor ? l2 = a2.e.clientY - c2.top - a2.tooltipRect.ttHeight / 2 : l2 + a2.tooltipRect.ttHeight + 15 > i2.globals.gridHeight && (l2 = i2.globals.gridHeight), i2.globals.isBarHorizontal || this.moveXCrosshairs(n2), a2.fixedTooltip || this.moveTooltip(n2, l2 || i2.globals.gridHeight); - } }]), t2; - }(); - var pt = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.ttCtx = e2, this.ctx = e2.ctx, this.tooltipPosition = new ut(e2); - } - return r(t2, [{ key: "drawDynamicPoints", value: function() { - var t3 = this.w, e2 = new m(this.ctx), i2 = new H(this.ctx), a2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-series"); - a2 = u(a2), t3.config.chart.stacked && a2.sort(function(t4, e3) { - return parseFloat(t4.getAttribute("data:realIndex")) - parseFloat(e3.getAttribute("data:realIndex")); - }); - for (var s2 = 0; s2 < a2.length; s2++) { - var r2 = a2[s2].querySelector(".apexcharts-series-markers-wrap"); - if (null !== r2) { - var o2 = void 0, n2 = "apexcharts-marker w".concat((Math.random() + 1).toString(36).substring(4)); - "line" !== t3.config.chart.type && "area" !== t3.config.chart.type || t3.globals.comboCharts || t3.config.tooltip.intersect || (n2 += " no-pointer-events"); - var l2 = i2.getMarkerConfig({ cssClass: n2, seriesIndex: Number(r2.getAttribute("data:realIndex")) }); - (o2 = e2.drawMarker(0, 0, l2)).node.setAttribute("default-marker-size", 0); - var h2 = document.createElementNS(t3.globals.SVGNS, "g"); - h2.classList.add("apexcharts-series-markers"), h2.appendChild(o2.node), r2.appendChild(h2); - } - } - } }, { key: "enlargeCurrentPoint", value: function(t3, e2) { - var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, a2 = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null, s2 = this.w; - "bubble" !== s2.config.chart.type && this.newPointSize(t3, e2); - var r2 = e2.getAttribute("cx"), o2 = e2.getAttribute("cy"); - if (null !== i2 && null !== a2 && (r2 = i2, o2 = a2), this.tooltipPosition.moveXCrosshairs(r2), !this.fixedTooltip) { - if ("radar" === s2.config.chart.type) { - var n2 = this.ttCtx.getElGrid().getBoundingClientRect(); - r2 = this.ttCtx.e.clientX - n2.left; - } - this.tooltipPosition.moveTooltip(r2, o2, s2.config.markers.hover.size); - } - } }, { key: "enlargePoints", value: function(t3) { - for (var e2 = this.w, i2 = this, a2 = this.ttCtx, s2 = t3, r2 = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"), o2 = e2.config.markers.hover.size, n2 = 0; n2 < r2.length; n2++) { - var l2 = r2[n2].getAttribute("rel"), h2 = r2[n2].getAttribute("index"); - if (void 0 === o2 && (o2 = e2.globals.markers.size[h2] + e2.config.markers.hover.sizeOffset), s2 === parseInt(l2, 10)) { - i2.newPointSize(s2, r2[n2]); - var c2 = r2[n2].getAttribute("cx"), d2 = r2[n2].getAttribute("cy"); - i2.tooltipPosition.moveXCrosshairs(c2), a2.fixedTooltip || i2.tooltipPosition.moveTooltip(c2, d2, o2); - } else - i2.oldPointSize(r2[n2]); - } - } }, { key: "newPointSize", value: function(t3, e2) { - var i2 = this.w, a2 = i2.config.markers.hover.size, s2 = 0 === t3 ? e2.parentNode.firstChild : e2.parentNode.lastChild; - if ("0" !== s2.getAttribute("default-marker-size")) { - var r2 = parseInt(s2.getAttribute("index"), 10); - void 0 === a2 && (a2 = i2.globals.markers.size[r2] + i2.config.markers.hover.sizeOffset), a2 < 0 && (a2 = 0), s2.setAttribute("r", a2); - } - } }, { key: "oldPointSize", value: function(t3) { - var e2 = parseFloat(t3.getAttribute("default-marker-size")); - t3.setAttribute("r", e2); - } }, { key: "resetPointsSize", value: function() { - for (var t3 = this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"), e2 = 0; e2 < t3.length; e2++) { - var i2 = parseFloat(t3[e2].getAttribute("default-marker-size")); - x.isNumber(i2) && i2 >= 0 ? t3[e2].setAttribute("r", i2) : t3[e2].setAttribute("r", 0); - } - } }]), t2; - }(); - var ft = function() { - function t2(e2) { - a(this, t2), this.w = e2.w; - var i2 = this.w; - this.ttCtx = e2, this.isVerticalGroupedRangeBar = !i2.globals.isBarHorizontal && "rangeBar" === i2.config.chart.type && i2.config.plotOptions.bar.rangeBarGroupRows; - } - return r(t2, [{ key: "getAttr", value: function(t3, e2) { - return parseFloat(t3.target.getAttribute(e2)); - } }, { key: "handleHeatTreeTooltip", value: function(t3) { - var e2 = t3.e, i2 = t3.opt, a2 = t3.x, s2 = t3.y, r2 = t3.type, o2 = this.ttCtx, n2 = this.w; - if (e2.target.classList.contains("apexcharts-".concat(r2, "-rect"))) { - var l2 = this.getAttr(e2, "i"), h2 = this.getAttr(e2, "j"), c2 = this.getAttr(e2, "cx"), d2 = this.getAttr(e2, "cy"), g2 = this.getAttr(e2, "width"), u2 = this.getAttr(e2, "height"); - if (o2.tooltipLabels.drawSeriesTexts({ ttItems: i2.ttItems, i: l2, j: h2, shared: false, e: e2 }), n2.globals.capturedSeriesIndex = l2, n2.globals.capturedDataPointIndex = h2, a2 = c2 + o2.tooltipRect.ttWidth / 2 + g2, s2 = d2 + o2.tooltipRect.ttHeight / 2 - u2 / 2, o2.tooltipPosition.moveXCrosshairs(c2 + g2 / 2), a2 > n2.globals.gridWidth / 2 && (a2 = c2 - o2.tooltipRect.ttWidth / 2 + g2), o2.w.config.tooltip.followCursor) { - var p2 = n2.globals.dom.elWrap.getBoundingClientRect(); - a2 = n2.globals.clientX - p2.left - (a2 > n2.globals.gridWidth / 2 ? o2.tooltipRect.ttWidth : 0), s2 = n2.globals.clientY - p2.top - (s2 > n2.globals.gridHeight / 2 ? o2.tooltipRect.ttHeight : 0); - } - } - return { x: a2, y: s2 }; - } }, { key: "handleMarkerTooltip", value: function(t3) { - var e2, i2, a2 = t3.e, s2 = t3.opt, r2 = t3.x, o2 = t3.y, n2 = this.w, l2 = this.ttCtx; - if (a2.target.classList.contains("apexcharts-marker")) { - var h2 = parseInt(s2.paths.getAttribute("cx"), 10), c2 = parseInt(s2.paths.getAttribute("cy"), 10), d2 = parseFloat(s2.paths.getAttribute("val")); - if (i2 = parseInt(s2.paths.getAttribute("rel"), 10), e2 = parseInt(s2.paths.parentNode.parentNode.parentNode.getAttribute("rel"), 10) - 1, l2.intersect) { - var g2 = x.findAncestor(s2.paths, "apexcharts-series"); - g2 && (e2 = parseInt(g2.getAttribute("data:realIndex"), 10)); - } - if (l2.tooltipLabels.drawSeriesTexts({ ttItems: s2.ttItems, i: e2, j: i2, shared: !l2.showOnIntersect && n2.config.tooltip.shared, e: a2 }), "mouseup" === a2.type && l2.markerClick(a2, e2, i2), n2.globals.capturedSeriesIndex = e2, n2.globals.capturedDataPointIndex = i2, r2 = h2, o2 = c2 + n2.globals.translateY - 1.4 * l2.tooltipRect.ttHeight, l2.w.config.tooltip.followCursor) { - var u2 = l2.getElGrid().getBoundingClientRect(); - o2 = l2.e.clientY + n2.globals.translateY - u2.top; - } - d2 < 0 && (o2 = c2), l2.marker.enlargeCurrentPoint(i2, s2.paths, r2, o2); - } - return { x: r2, y: o2 }; - } }, { key: "handleBarTooltip", value: function(t3) { - var e2, i2, a2 = t3.e, s2 = t3.opt, r2 = this.w, o2 = this.ttCtx, n2 = o2.getElTooltip(), l2 = 0, h2 = 0, c2 = 0, d2 = this.getBarTooltipXY({ e: a2, opt: s2 }); - e2 = d2.i; - var g2 = d2.barHeight, u2 = d2.j; - r2.globals.capturedSeriesIndex = e2, r2.globals.capturedDataPointIndex = u2, r2.globals.isBarHorizontal && o2.tooltipUtil.hasBars() || !r2.config.tooltip.shared ? (h2 = d2.x, c2 = d2.y, i2 = Array.isArray(r2.config.stroke.width) ? r2.config.stroke.width[e2] : r2.config.stroke.width, l2 = h2) : r2.globals.comboCharts || r2.config.tooltip.shared || (l2 /= 2), isNaN(c2) && (c2 = r2.globals.svgHeight - o2.tooltipRect.ttHeight); - var p2 = parseInt(s2.paths.parentNode.getAttribute("data:realIndex"), 10), f2 = r2.globals.isMultipleYAxis ? r2.config.yaxis[p2] && r2.config.yaxis[p2].reversed : r2.config.yaxis[0].reversed; - if (h2 + o2.tooltipRect.ttWidth > r2.globals.gridWidth && !f2 ? h2 -= o2.tooltipRect.ttWidth : h2 < 0 && (h2 = 0), o2.w.config.tooltip.followCursor) { - var x2 = o2.getElGrid().getBoundingClientRect(); - c2 = o2.e.clientY - x2.top; - } - null === o2.tooltip && (o2.tooltip = r2.globals.dom.baseEl.querySelector(".apexcharts-tooltip")), r2.config.tooltip.shared || (r2.globals.comboBarCount > 0 ? o2.tooltipPosition.moveXCrosshairs(l2 + i2 / 2) : o2.tooltipPosition.moveXCrosshairs(l2)), !o2.fixedTooltip && (!r2.config.tooltip.shared || r2.globals.isBarHorizontal && o2.tooltipUtil.hasBars()) && (f2 && (h2 -= o2.tooltipRect.ttWidth) < 0 && (h2 = 0), !f2 || r2.globals.isBarHorizontal && o2.tooltipUtil.hasBars() || (c2 = c2 + g2 - 2 * (r2.globals.series[e2][u2] < 0 ? g2 : 0)), c2 = c2 + r2.globals.translateY - o2.tooltipRect.ttHeight / 2, n2.style.left = h2 + r2.globals.translateX + "px", n2.style.top = c2 + "px"); - } }, { key: "getBarTooltipXY", value: function(t3) { - var e2 = this, i2 = t3.e, a2 = t3.opt, s2 = this.w, r2 = null, o2 = this.ttCtx, n2 = 0, l2 = 0, h2 = 0, c2 = 0, d2 = 0, g2 = i2.target.classList; - if (g2.contains("apexcharts-bar-area") || g2.contains("apexcharts-candlestick-area") || g2.contains("apexcharts-boxPlot-area") || g2.contains("apexcharts-rangebar-area")) { - var u2 = i2.target, p2 = u2.getBoundingClientRect(), f2 = a2.elGrid.getBoundingClientRect(), x2 = p2.height; - d2 = p2.height; - var b2 = p2.width, v2 = parseInt(u2.getAttribute("cx"), 10), m2 = parseInt(u2.getAttribute("cy"), 10); - c2 = parseFloat(u2.getAttribute("barWidth")); - var y2 = "touchmove" === i2.type ? i2.touches[0].clientX : i2.clientX; - r2 = parseInt(u2.getAttribute("j"), 10), n2 = parseInt(u2.parentNode.getAttribute("rel"), 10) - 1; - var w2 = u2.getAttribute("data-range-y1"), k2 = u2.getAttribute("data-range-y2"); - s2.globals.comboCharts && (n2 = parseInt(u2.parentNode.getAttribute("data:realIndex"), 10)); - var A2 = function(t4) { - return s2.globals.isXNumeric ? v2 - b2 / 2 : e2.isVerticalGroupedRangeBar ? v2 + b2 / 2 : v2 - o2.dataPointsDividedWidth + b2 / 2; - }, S2 = function() { - return m2 - o2.dataPointsDividedHeight + x2 / 2 - o2.tooltipRect.ttHeight / 2; - }; - o2.tooltipLabels.drawSeriesTexts({ ttItems: a2.ttItems, i: n2, j: r2, y1: w2 ? parseInt(w2, 10) : null, y2: k2 ? parseInt(k2, 10) : null, shared: !o2.showOnIntersect && s2.config.tooltip.shared, e: i2 }), s2.config.tooltip.followCursor ? s2.globals.isBarHorizontal ? (l2 = y2 - f2.left + 15, h2 = S2()) : (l2 = A2(), h2 = i2.clientY - f2.top - o2.tooltipRect.ttHeight / 2 - 15) : s2.globals.isBarHorizontal ? ((l2 = v2) < o2.xyRatios.baseLineInvertedY && (l2 = v2 - o2.tooltipRect.ttWidth), h2 = S2()) : (l2 = A2(), h2 = m2); - } - return { x: l2, y: h2, barHeight: d2, barWidth: c2, i: n2, j: r2 }; - } }]), t2; - }(); - var xt = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.ttCtx = e2; - } - return r(t2, [{ key: "drawXaxisTooltip", value: function() { - var t3 = this.w, e2 = this.ttCtx, i2 = "bottom" === t3.config.xaxis.position; - e2.xaxisOffY = i2 ? t3.globals.gridHeight + 1 : -t3.globals.xAxisHeight - t3.config.xaxis.axisTicks.height + 3; - var a2 = i2 ? "apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom" : "apexcharts-xaxistooltip apexcharts-xaxistooltip-top", s2 = t3.globals.dom.elWrap; - e2.isXAxisTooltipEnabled && (null === t3.globals.dom.baseEl.querySelector(".apexcharts-xaxistooltip") && (e2.xaxisTooltip = document.createElement("div"), e2.xaxisTooltip.setAttribute("class", a2 + " apexcharts-theme-" + t3.config.tooltip.theme), s2.appendChild(e2.xaxisTooltip), e2.xaxisTooltipText = document.createElement("div"), e2.xaxisTooltipText.classList.add("apexcharts-xaxistooltip-text"), e2.xaxisTooltipText.style.fontFamily = t3.config.xaxis.tooltip.style.fontFamily || t3.config.chart.fontFamily, e2.xaxisTooltipText.style.fontSize = t3.config.xaxis.tooltip.style.fontSize, e2.xaxisTooltip.appendChild(e2.xaxisTooltipText))); - } }, { key: "drawYaxisTooltip", value: function() { - for (var t3 = this.w, e2 = this.ttCtx, i2 = function(i3) { - var a3 = t3.config.yaxis[i3].opposite || t3.config.yaxis[i3].crosshairs.opposite; - e2.yaxisOffX = a3 ? t3.globals.gridWidth + 1 : 1; - var s2 = "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i3, a3 ? " apexcharts-yaxistooltip-right" : " apexcharts-yaxistooltip-left"); - t3.globals.yAxisSameScaleIndices.map(function(e3, a4) { - e3.map(function(e4, a5) { - a5 === i3 && (s2 += t3.config.yaxis[a5].show ? " " : " apexcharts-yaxistooltip-hidden"); - }); - }); - var r2 = t3.globals.dom.elWrap; - null === t3.globals.dom.baseEl.querySelector(".apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i3)) && (e2.yaxisTooltip = document.createElement("div"), e2.yaxisTooltip.setAttribute("class", s2 + " apexcharts-theme-" + t3.config.tooltip.theme), r2.appendChild(e2.yaxisTooltip), 0 === i3 && (e2.yaxisTooltipText = []), e2.yaxisTooltipText[i3] = document.createElement("div"), e2.yaxisTooltipText[i3].classList.add("apexcharts-yaxistooltip-text"), e2.yaxisTooltip.appendChild(e2.yaxisTooltipText[i3])); - }, a2 = 0; a2 < t3.config.yaxis.length; a2++) - i2(a2); - } }, { key: "setXCrosshairWidth", value: function() { - var t3 = this.w, e2 = this.ttCtx, i2 = e2.getElXCrosshairs(); - if (e2.xcrosshairsWidth = parseInt(t3.config.xaxis.crosshairs.width, 10), t3.globals.comboCharts) { - var a2 = t3.globals.dom.baseEl.querySelector(".apexcharts-bar-area"); - if (null !== a2 && "barWidth" === t3.config.xaxis.crosshairs.width) { - var s2 = parseFloat(a2.getAttribute("barWidth")); - e2.xcrosshairsWidth = s2; - } else if ("tickWidth" === t3.config.xaxis.crosshairs.width) { - var r2 = t3.globals.labels.length; - e2.xcrosshairsWidth = t3.globals.gridWidth / r2; - } - } else if ("tickWidth" === t3.config.xaxis.crosshairs.width) { - var o2 = t3.globals.labels.length; - e2.xcrosshairsWidth = t3.globals.gridWidth / o2; - } else if ("barWidth" === t3.config.xaxis.crosshairs.width) { - var n2 = t3.globals.dom.baseEl.querySelector(".apexcharts-bar-area"); - if (null !== n2) { - var l2 = parseFloat(n2.getAttribute("barWidth")); - e2.xcrosshairsWidth = l2; - } else - e2.xcrosshairsWidth = 1; - } - t3.globals.isBarHorizontal && (e2.xcrosshairsWidth = 0), null !== i2 && e2.xcrosshairsWidth > 0 && i2.setAttribute("width", e2.xcrosshairsWidth); - } }, { key: "handleYCrosshair", value: function() { - var t3 = this.w, e2 = this.ttCtx; - e2.ycrosshairs = t3.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"), e2.ycrosshairsHidden = t3.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden"); - } }, { key: "drawYaxisTooltipText", value: function(t3, e2, i2) { - var a2 = this.ttCtx, s2 = this.w, r2 = s2.globals.yLabelFormatters[t3]; - if (a2.yaxisTooltips[t3]) { - var o2 = a2.getElGrid().getBoundingClientRect(), n2 = (e2 - o2.top) * i2.yRatio[t3], l2 = s2.globals.maxYArr[t3] - s2.globals.minYArr[t3], h2 = s2.globals.minYArr[t3] + (l2 - n2); - a2.tooltipPosition.moveYCrosshairs(e2 - o2.top), a2.yaxisTooltipText[t3].innerHTML = r2(h2), a2.tooltipPosition.moveYAxisTooltip(t3); - } - } }]), t2; - }(); - var bt = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - var i2 = this.w; - this.tConfig = i2.config.tooltip, this.tooltipUtil = new dt(this), this.tooltipLabels = new gt(this), this.tooltipPosition = new ut(this), this.marker = new pt(this), this.intersect = new ft(this), this.axesTooltip = new xt(this), this.showOnIntersect = this.tConfig.intersect, this.showTooltipTitle = this.tConfig.x.show, this.fixedTooltip = this.tConfig.fixed.enabled, this.xaxisTooltip = null, this.yaxisTTEls = null, this.isBarShared = !i2.globals.isBarHorizontal && this.tConfig.shared, this.lastHoverTime = Date.now(); - } - return r(t2, [{ key: "getElTooltip", value: function(t3) { - return t3 || (t3 = this), t3.w.globals.dom.baseEl ? t3.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip") : null; - } }, { key: "getElXCrosshairs", value: function() { - return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs"); - } }, { key: "getElGrid", value: function() { - return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid"); - } }, { key: "drawTooltip", value: function(t3) { - var e2 = this.w; - this.xyRatios = t3, this.isXAxisTooltipEnabled = e2.config.xaxis.tooltip.enabled && e2.globals.axisCharts, this.yaxisTooltips = e2.config.yaxis.map(function(t4, i3) { - return !!(t4.show && t4.tooltip.enabled && e2.globals.axisCharts); - }), this.allTooltipSeriesGroups = [], e2.globals.axisCharts || (this.showTooltipTitle = false); - var i2 = document.createElement("div"); - if (i2.classList.add("apexcharts-tooltip"), e2.config.tooltip.cssClass && i2.classList.add(e2.config.tooltip.cssClass), i2.classList.add("apexcharts-theme-".concat(this.tConfig.theme)), e2.globals.dom.elWrap.appendChild(i2), e2.globals.axisCharts) { - this.axesTooltip.drawXaxisTooltip(), this.axesTooltip.drawYaxisTooltip(), this.axesTooltip.setXCrosshairWidth(), this.axesTooltip.handleYCrosshair(); - var a2 = new V(this.ctx); - this.xAxisTicksPositions = a2.getXAxisTicksPositions(); - } - if (!e2.globals.comboCharts && !this.tConfig.intersect && "rangeBar" !== e2.config.chart.type || this.tConfig.shared || (this.showOnIntersect = true), 0 !== e2.config.markers.size && 0 !== e2.globals.markers.largestSize || this.marker.drawDynamicPoints(this), e2.globals.collapsedSeries.length !== e2.globals.series.length) { - this.dataPointsDividedHeight = e2.globals.gridHeight / e2.globals.dataPoints, this.dataPointsDividedWidth = e2.globals.gridWidth / e2.globals.dataPoints, this.showTooltipTitle && (this.tooltipTitle = document.createElement("div"), this.tooltipTitle.classList.add("apexcharts-tooltip-title"), this.tooltipTitle.style.fontFamily = this.tConfig.style.fontFamily || e2.config.chart.fontFamily, this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize, i2.appendChild(this.tooltipTitle)); - var s2 = e2.globals.series.length; - (e2.globals.xyCharts || e2.globals.comboCharts) && this.tConfig.shared && (s2 = this.showOnIntersect ? 1 : e2.globals.series.length), this.legendLabels = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"), this.ttItems = this.createTTElements(s2), this.addSVGEvents(); - } - } }, { key: "createTTElements", value: function(t3) { - for (var e2 = this, i2 = this.w, a2 = [], s2 = this.getElTooltip(), r2 = function(r3) { - var o3 = document.createElement("div"); - o3.classList.add("apexcharts-tooltip-series-group"), o3.style.order = i2.config.tooltip.inverseOrder ? t3 - r3 : r3 + 1, e2.tConfig.shared && e2.tConfig.enabledOnSeries && Array.isArray(e2.tConfig.enabledOnSeries) && e2.tConfig.enabledOnSeries.indexOf(r3) < 0 && o3.classList.add("apexcharts-tooltip-series-group-hidden"); - var n2 = document.createElement("span"); - n2.classList.add("apexcharts-tooltip-marker"), n2.style.backgroundColor = i2.globals.colors[r3], o3.appendChild(n2); - var l2 = document.createElement("div"); - l2.classList.add("apexcharts-tooltip-text"), l2.style.fontFamily = e2.tConfig.style.fontFamily || i2.config.chart.fontFamily, l2.style.fontSize = e2.tConfig.style.fontSize, ["y", "goals", "z"].forEach(function(t4) { - var e3 = document.createElement("div"); - e3.classList.add("apexcharts-tooltip-".concat(t4, "-group")); - var i3 = document.createElement("span"); - i3.classList.add("apexcharts-tooltip-text-".concat(t4, "-label")), e3.appendChild(i3); - var a3 = document.createElement("span"); - a3.classList.add("apexcharts-tooltip-text-".concat(t4, "-value")), e3.appendChild(a3), l2.appendChild(e3); - }), o3.appendChild(l2), s2.appendChild(o3), a2.push(o3); - }, o2 = 0; o2 < t3; o2++) - r2(o2); - return a2; - } }, { key: "addSVGEvents", value: function() { - var t3 = this.w, e2 = t3.config.chart.type, i2 = this.getElTooltip(), a2 = !("bar" !== e2 && "candlestick" !== e2 && "boxPlot" !== e2 && "rangeBar" !== e2), s2 = "area" === e2 || "line" === e2 || "scatter" === e2 || "bubble" === e2 || "radar" === e2, r2 = t3.globals.dom.Paper.node, o2 = this.getElGrid(); - o2 && (this.seriesBound = o2.getBoundingClientRect()); - var n2, l2 = [], h2 = [], c2 = { hoverArea: r2, elGrid: o2, tooltipEl: i2, tooltipY: l2, tooltipX: h2, ttItems: this.ttItems }; - if (t3.globals.axisCharts && (s2 ? n2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker") : a2 ? n2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-boxPlot-area, .apexcharts-series .apexcharts-rangebar-area") : "heatmap" !== e2 && "treemap" !== e2 || (n2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-heatmap, .apexcharts-series .apexcharts-treemap")), n2 && n2.length)) - for (var d2 = 0; d2 < n2.length; d2++) - l2.push(n2[d2].getAttribute("cy")), h2.push(n2[d2].getAttribute("cx")); - if (t3.globals.xyCharts && !this.showOnIntersect || t3.globals.comboCharts && !this.showOnIntersect || a2 && this.tooltipUtil.hasBars() && this.tConfig.shared) - this.addPathsEventListeners([r2], c2); - else if (a2 && !t3.globals.comboCharts || s2 && this.showOnIntersect) - this.addDatapointEventsListeners(c2); - else if (!t3.globals.axisCharts || "heatmap" === e2 || "treemap" === e2) { - var g2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-series"); - this.addPathsEventListeners(g2, c2); - } - if (this.showOnIntersect) { - var u2 = t3.globals.dom.baseEl.querySelectorAll(".apexcharts-line-series .apexcharts-marker, .apexcharts-area-series .apexcharts-marker"); - u2.length > 0 && this.addPathsEventListeners(u2, c2), this.tooltipUtil.hasBars() && !this.tConfig.shared && this.addDatapointEventsListeners(c2); - } - } }, { key: "drawFixedTooltipRect", value: function() { - var t3 = this.w, e2 = this.getElTooltip(), i2 = e2.getBoundingClientRect(), a2 = i2.width + 10, s2 = i2.height + 10, r2 = this.tConfig.fixed.offsetX, o2 = this.tConfig.fixed.offsetY, n2 = this.tConfig.fixed.position.toLowerCase(); - return n2.indexOf("right") > -1 && (r2 = r2 + t3.globals.svgWidth - a2 + 10), n2.indexOf("bottom") > -1 && (o2 = o2 + t3.globals.svgHeight - s2 - 10), e2.style.left = r2 + "px", e2.style.top = o2 + "px", { x: r2, y: o2, ttWidth: a2, ttHeight: s2 }; - } }, { key: "addDatapointEventsListeners", value: function(t3) { - var e2 = this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area"); - this.addPathsEventListeners(e2, t3); - } }, { key: "addPathsEventListeners", value: function(t3, e2) { - for (var i2 = this, a2 = function(a3) { - var s3 = { paths: t3[a3], tooltipEl: e2.tooltipEl, tooltipY: e2.tooltipY, tooltipX: e2.tooltipX, elGrid: e2.elGrid, hoverArea: e2.hoverArea, ttItems: e2.ttItems }; - ["mousemove", "mouseup", "touchmove", "mouseout", "touchend"].map(function(e3) { - return t3[a3].addEventListener(e3, i2.onSeriesHover.bind(i2, s3), { capture: false, passive: true }); - }); - }, s2 = 0; s2 < t3.length; s2++) - a2(s2); - } }, { key: "onSeriesHover", value: function(t3, e2) { - var i2 = this, a2 = Date.now() - this.lastHoverTime; - a2 >= 100 ? this.seriesHover(t3, e2) : (clearTimeout(this.seriesHoverTimeout), this.seriesHoverTimeout = setTimeout(function() { - i2.seriesHover(t3, e2); - }, 100 - a2)); - } }, { key: "seriesHover", value: function(t3, e2) { - var i2 = this; - this.lastHoverTime = Date.now(); - var a2 = [], s2 = this.w; - s2.config.chart.group && (a2 = this.ctx.getGroupedCharts()), s2.globals.axisCharts && (s2.globals.minX === -1 / 0 && s2.globals.maxX === 1 / 0 || 0 === s2.globals.dataPoints) || (a2.length ? a2.forEach(function(a3) { - var s3 = i2.getElTooltip(a3), r2 = { paths: t3.paths, tooltipEl: s3, tooltipY: t3.tooltipY, tooltipX: t3.tooltipX, elGrid: t3.elGrid, hoverArea: t3.hoverArea, ttItems: a3.w.globals.tooltip.ttItems }; - a3.w.globals.minX === i2.w.globals.minX && a3.w.globals.maxX === i2.w.globals.maxX && a3.w.globals.tooltip.seriesHoverByContext({ chartCtx: a3, ttCtx: a3.w.globals.tooltip, opt: r2, e: e2 }); - }) : this.seriesHoverByContext({ chartCtx: this.ctx, ttCtx: this.w.globals.tooltip, opt: t3, e: e2 })); - } }, { key: "seriesHoverByContext", value: function(t3) { - var e2 = t3.chartCtx, i2 = t3.ttCtx, a2 = t3.opt, s2 = t3.e, r2 = e2.w, o2 = this.getElTooltip(); - if (o2) { - if (i2.tooltipRect = { x: 0, y: 0, ttWidth: o2.getBoundingClientRect().width, ttHeight: o2.getBoundingClientRect().height }, i2.e = s2, i2.tooltipUtil.hasBars() && !r2.globals.comboCharts && !i2.isBarShared) { - if (this.tConfig.onDatasetHover.highlightDataSeries) - new N(e2).toggleSeriesOnHover(s2, s2.target.parentNode); - } - i2.fixedTooltip && i2.drawFixedTooltipRect(), r2.globals.axisCharts ? i2.axisChartsTooltips({ e: s2, opt: a2, tooltipRect: i2.tooltipRect }) : i2.nonAxisChartsTooltips({ e: s2, opt: a2, tooltipRect: i2.tooltipRect }); - } - } }, { key: "axisChartsTooltips", value: function(t3) { - var e2, i2, a2 = t3.e, s2 = t3.opt, r2 = this.w, o2 = s2.elGrid.getBoundingClientRect(), n2 = "touchmove" === a2.type ? a2.touches[0].clientX : a2.clientX, l2 = "touchmove" === a2.type ? a2.touches[0].clientY : a2.clientY; - if (this.clientY = l2, this.clientX = n2, r2.globals.capturedSeriesIndex = -1, r2.globals.capturedDataPointIndex = -1, l2 < o2.top || l2 > o2.top + o2.height) - this.handleMouseOut(s2); - else { - if (Array.isArray(this.tConfig.enabledOnSeries) && !r2.config.tooltip.shared) { - var h2 = parseInt(s2.paths.getAttribute("index"), 10); - if (this.tConfig.enabledOnSeries.indexOf(h2) < 0) - return void this.handleMouseOut(s2); - } - var c2 = this.getElTooltip(), d2 = this.getElXCrosshairs(), g2 = r2.globals.xyCharts || "bar" === r2.config.chart.type && !r2.globals.isBarHorizontal && this.tooltipUtil.hasBars() && this.tConfig.shared || r2.globals.comboCharts && this.tooltipUtil.hasBars(); - if ("mousemove" === a2.type || "touchmove" === a2.type || "mouseup" === a2.type) { - if (r2.globals.collapsedSeries.length + r2.globals.ancillaryCollapsedSeries.length === r2.globals.series.length) - return; - null !== d2 && d2.classList.add("apexcharts-active"); - var u2 = this.yaxisTooltips.filter(function(t4) { - return true === t4; - }); - if (null !== this.ycrosshairs && u2.length && this.ycrosshairs.classList.add("apexcharts-active"), g2 && !this.showOnIntersect) - this.handleStickyTooltip(a2, n2, l2, s2); - else if ("heatmap" === r2.config.chart.type || "treemap" === r2.config.chart.type) { - var p2 = this.intersect.handleHeatTreeTooltip({ e: a2, opt: s2, x: e2, y: i2, type: r2.config.chart.type }); - e2 = p2.x, i2 = p2.y, c2.style.left = e2 + "px", c2.style.top = i2 + "px"; - } else - this.tooltipUtil.hasBars() && this.intersect.handleBarTooltip({ e: a2, opt: s2 }), this.tooltipUtil.hasMarkers() && this.intersect.handleMarkerTooltip({ e: a2, opt: s2, x: e2, y: i2 }); - if (this.yaxisTooltips.length) - for (var f2 = 0; f2 < r2.config.yaxis.length; f2++) - this.axesTooltip.drawYaxisTooltipText(f2, l2, this.xyRatios); - s2.tooltipEl.classList.add("apexcharts-active"); - } else - "mouseout" !== a2.type && "touchend" !== a2.type || this.handleMouseOut(s2); - } - } }, { key: "nonAxisChartsTooltips", value: function(t3) { - var e2 = t3.e, i2 = t3.opt, a2 = t3.tooltipRect, s2 = this.w, r2 = i2.paths.getAttribute("rel"), o2 = this.getElTooltip(), n2 = s2.globals.dom.elWrap.getBoundingClientRect(); - if ("mousemove" === e2.type || "touchmove" === e2.type) { - o2.classList.add("apexcharts-active"), this.tooltipLabels.drawSeriesTexts({ ttItems: i2.ttItems, i: parseInt(r2, 10) - 1, shared: false }); - var l2 = s2.globals.clientX - n2.left - a2.ttWidth / 2, h2 = s2.globals.clientY - n2.top - a2.ttHeight - 10; - if (o2.style.left = l2 + "px", o2.style.top = h2 + "px", s2.config.legend.tooltipHoverFormatter) { - var c2 = r2 - 1, d2 = (0, s2.config.legend.tooltipHoverFormatter)(this.legendLabels[c2].getAttribute("data:default-text"), { seriesIndex: c2, dataPointIndex: c2, w: s2 }); - this.legendLabels[c2].innerHTML = d2; - } - } else - "mouseout" !== e2.type && "touchend" !== e2.type || (o2.classList.remove("apexcharts-active"), s2.config.legend.tooltipHoverFormatter && this.legendLabels.forEach(function(t4) { - var e3 = t4.getAttribute("data:default-text"); - t4.innerHTML = decodeURIComponent(e3); - })); - } }, { key: "handleStickyTooltip", value: function(t3, e2, i2, a2) { - var s2 = this.w, r2 = this.tooltipUtil.getNearestValues({ context: this, hoverArea: a2.hoverArea, elGrid: a2.elGrid, clientX: e2, clientY: i2 }), o2 = r2.j, n2 = r2.capturedSeries; - s2.globals.collapsedSeriesIndices.includes(n2) && (n2 = null); - var l2 = a2.elGrid.getBoundingClientRect(); - if (r2.hoverX < 0 || r2.hoverX > l2.width) - this.handleMouseOut(a2); - else if (null !== n2) - this.handleStickyCapturedSeries(t3, n2, a2, o2); - else if (this.tooltipUtil.isXoverlap(o2) || s2.globals.isBarHorizontal) { - var h2 = s2.globals.series.findIndex(function(t4, e3) { - return !s2.globals.collapsedSeriesIndices.includes(e3); - }); - this.create(t3, this, h2, o2, a2.ttItems); - } - } }, { key: "handleStickyCapturedSeries", value: function(t3, e2, i2, a2) { - var s2 = this.w; - if (!this.tConfig.shared && null === s2.globals.series[e2][a2]) - return void this.handleMouseOut(i2); - if (void 0 !== s2.globals.series[e2][a2]) - this.tConfig.shared && this.tooltipUtil.isXoverlap(a2) && this.tooltipUtil.isInitialSeriesSameLen() ? this.create(t3, this, e2, a2, i2.ttItems) : this.create(t3, this, e2, a2, i2.ttItems, false); - else if (this.tooltipUtil.isXoverlap(a2)) { - var r2 = s2.globals.series.findIndex(function(t4, e3) { - return !s2.globals.collapsedSeriesIndices.includes(e3); - }); - this.create(t3, this, r2, a2, i2.ttItems); - } - } }, { key: "deactivateHoverFilter", value: function() { - for (var t3 = this.w, e2 = new m(this.ctx), i2 = t3.globals.dom.Paper.select(".apexcharts-bar-area"), a2 = 0; a2 < i2.length; a2++) - e2.pathMouseLeave(i2[a2]); - } }, { key: "handleMouseOut", value: function(t3) { - var e2 = this.w, i2 = this.getElXCrosshairs(); - if (t3.tooltipEl.classList.remove("apexcharts-active"), this.deactivateHoverFilter(), "bubble" !== e2.config.chart.type && this.marker.resetPointsSize(), null !== i2 && i2.classList.remove("apexcharts-active"), null !== this.ycrosshairs && this.ycrosshairs.classList.remove("apexcharts-active"), this.isXAxisTooltipEnabled && this.xaxisTooltip.classList.remove("apexcharts-active"), this.yaxisTooltips.length) { - null === this.yaxisTTEls && (this.yaxisTTEls = e2.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip")); - for (var a2 = 0; a2 < this.yaxisTTEls.length; a2++) - this.yaxisTTEls[a2].classList.remove("apexcharts-active"); - } - e2.config.legend.tooltipHoverFormatter && this.legendLabels.forEach(function(t4) { - var e3 = t4.getAttribute("data:default-text"); - t4.innerHTML = decodeURIComponent(e3); - }); - } }, { key: "markerClick", value: function(t3, e2, i2) { - var a2 = this.w; - "function" == typeof a2.config.chart.events.markerClick && a2.config.chart.events.markerClick(t3, this.ctx, { seriesIndex: e2, dataPointIndex: i2, w: a2 }), this.ctx.events.fireEvent("markerClick", [t3, this.ctx, { seriesIndex: e2, dataPointIndex: i2, w: a2 }]); - } }, { key: "create", value: function(t3, i2, a2, s2, r2) { - var o2, n2, l2, h2, c2, d2, g2, u2, p2, f2, x2, b2, v2, y2, w2, k2, A2 = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : null, S2 = this.w, C2 = i2; - "mouseup" === t3.type && this.markerClick(t3, a2, s2), null === A2 && (A2 = this.tConfig.shared); - var L2 = this.tooltipUtil.hasMarkers(a2), P2 = this.tooltipUtil.getElBars(); - if (S2.config.legend.tooltipHoverFormatter) { - var I2 = S2.config.legend.tooltipHoverFormatter, M2 = Array.from(this.legendLabels); - M2.forEach(function(t4) { - var e2 = t4.getAttribute("data:default-text"); - t4.innerHTML = decodeURIComponent(e2); - }); - for (var T2 = 0; T2 < M2.length; T2++) { - var z2 = M2[T2], X2 = parseInt(z2.getAttribute("i"), 10), E2 = decodeURIComponent(z2.getAttribute("data:default-text")), Y2 = I2(E2, { seriesIndex: A2 ? X2 : a2, dataPointIndex: s2, w: S2 }); - if (A2) - z2.innerHTML = S2.globals.collapsedSeriesIndices.indexOf(X2) < 0 ? Y2 : E2; - else if (z2.innerHTML = X2 === a2 ? Y2 : E2, a2 === X2) - break; - } - } - var F2 = e(e({ ttItems: r2, i: a2, j: s2 }, void 0 !== (null === (o2 = S2.globals.seriesRange) || void 0 === o2 || null === (n2 = o2[a2]) || void 0 === n2 || null === (l2 = n2[s2]) || void 0 === l2 || null === (h2 = l2.y[0]) || void 0 === h2 ? void 0 : h2.y1) && { y1: null === (c2 = S2.globals.seriesRange) || void 0 === c2 || null === (d2 = c2[a2]) || void 0 === d2 || null === (g2 = d2[s2]) || void 0 === g2 || null === (u2 = g2.y[0]) || void 0 === u2 ? void 0 : u2.y1 }), void 0 !== (null === (p2 = S2.globals.seriesRange) || void 0 === p2 || null === (f2 = p2[a2]) || void 0 === f2 || null === (x2 = f2[s2]) || void 0 === x2 || null === (b2 = x2.y[0]) || void 0 === b2 ? void 0 : b2.y2) && { y2: null === (v2 = S2.globals.seriesRange) || void 0 === v2 || null === (y2 = v2[a2]) || void 0 === y2 || null === (w2 = y2[s2]) || void 0 === w2 || null === (k2 = w2.y[0]) || void 0 === k2 ? void 0 : k2.y2 }); - if (A2) { - if (C2.tooltipLabels.drawSeriesTexts(e(e({}, F2), {}, { shared: !this.showOnIntersect && this.tConfig.shared })), L2) - S2.globals.markers.largestSize > 0 ? C2.marker.enlargePoints(s2) : C2.tooltipPosition.moveDynamicPointsOnHover(s2); - else if (this.tooltipUtil.hasBars() && (this.barSeriesHeight = this.tooltipUtil.getBarsHeight(P2), this.barSeriesHeight > 0)) { - var R2 = new m(this.ctx), H2 = S2.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(s2, "']")); - this.deactivateHoverFilter(), this.tooltipPosition.moveStickyTooltipOverBars(s2, a2); - for (var D2 = 0; D2 < H2.length; D2++) - R2.pathMouseEnter(H2[D2]); - } - } else - C2.tooltipLabels.drawSeriesTexts(e({ shared: false }, F2)), this.tooltipUtil.hasBars() && C2.tooltipPosition.moveStickyTooltipOverBars(s2, a2), L2 && C2.tooltipPosition.moveMarkers(a2, s2); - } }]), t2; - }(); - var vt = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.barCtx = e2, this.totalFormatter = this.w.config.plotOptions.bar.dataLabels.total.formatter, this.totalFormatter || (this.totalFormatter = this.w.config.dataLabels.formatter); - } - return r(t2, [{ key: "handleBarDataLabels", value: function(t3) { - var e2 = t3.x, i2 = t3.y, a2 = t3.y1, s2 = t3.y2, r2 = t3.i, o2 = t3.j, n2 = t3.realIndex, l2 = t3.groupIndex, h2 = t3.series, c2 = t3.barHeight, d2 = t3.barWidth, g2 = t3.barXPosition, u2 = t3.barYPosition, p2 = t3.visibleSeries, f2 = t3.renderedPath, x2 = this.w, b2 = new m(this.barCtx.ctx), v2 = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[n2] : this.barCtx.strokeWidth, y2 = e2 + parseFloat(d2 * p2), w2 = i2 + parseFloat(c2 * p2); - x2.globals.isXNumeric && !x2.globals.isBarHorizontal && (y2 = e2 + parseFloat(d2 * (p2 + 1)), w2 = i2 + parseFloat(c2 * (p2 + 1)) - v2); - var k2, A2 = null, S2 = e2, C2 = i2, L2 = {}, P2 = x2.config.dataLabels, I2 = this.barCtx.barOptions.dataLabels, M2 = this.barCtx.barOptions.dataLabels.total; - void 0 !== u2 && this.barCtx.isRangeBar && (w2 = u2, C2 = u2), void 0 !== g2 && this.barCtx.isVerticalGroupedRangeBar && (y2 = g2, S2 = g2); - var T2 = P2.offsetX, z2 = P2.offsetY, X2 = { width: 0, height: 0 }; - if (x2.config.dataLabels.enabled) { - var E2 = this.barCtx.series[r2][o2]; - X2 = b2.getTextRects(x2.globals.yLabelFormatters[0](E2), parseFloat(P2.style.fontSize)); - } - var Y2 = { x: e2, y: i2, i: r2, j: o2, realIndex: n2, groupIndex: l2 || -1, renderedPath: f2, bcx: y2, bcy: w2, barHeight: c2, barWidth: d2, textRects: X2, strokeWidth: v2, dataLabelsX: S2, dataLabelsY: C2, dataLabelsConfig: P2, barDataLabelsConfig: I2, barTotalDataLabelsConfig: M2, offX: T2, offY: z2 }; - return L2 = this.barCtx.isHorizontal ? this.calculateBarsDataLabelsPosition(Y2) : this.calculateColumnsDataLabelsPosition(Y2), f2.attr({ cy: L2.bcy, cx: L2.bcx, j: o2, val: h2[r2][o2], barHeight: c2, barWidth: d2 }), k2 = this.drawCalculatedDataLabels({ x: L2.dataLabelsX, y: L2.dataLabelsY, val: this.barCtx.isRangeBar ? [a2, s2] : h2[r2][o2], i: n2, j: o2, barWidth: d2, barHeight: c2, textRects: X2, dataLabelsConfig: P2 }), x2.config.chart.stacked && M2.enabled && (A2 = this.drawTotalDataLabels({ x: L2.totalDataLabelsX, y: L2.totalDataLabelsY, realIndex: n2, textAnchor: L2.totalDataLabelsAnchor, val: this.getStackedTotalDataLabel({ realIndex: n2, j: o2 }), dataLabelsConfig: P2, barTotalDataLabelsConfig: M2 })), { dataLabels: k2, totalDataLabels: A2 }; - } }, { key: "getStackedTotalDataLabel", value: function(t3) { - var i2 = t3.realIndex, a2 = t3.j, s2 = this.w, r2 = this.barCtx.stackedSeriesTotals[a2]; - return this.totalFormatter && (r2 = this.totalFormatter(r2, e(e({}, s2), {}, { seriesIndex: i2, dataPointIndex: a2, w: s2 }))), r2; - } }, { key: "calculateColumnsDataLabelsPosition", value: function(t3) { - var e2, i2, a2 = this.w, s2 = t3.i, r2 = t3.j, o2 = t3.realIndex, n2 = t3.groupIndex, l2 = t3.y, h2 = t3.bcx, c2 = t3.barWidth, d2 = t3.barHeight, g2 = t3.textRects, u2 = t3.dataLabelsX, p2 = t3.dataLabelsY, f2 = t3.dataLabelsConfig, x2 = t3.barDataLabelsConfig, b2 = t3.barTotalDataLabelsConfig, v2 = t3.strokeWidth, y2 = t3.offX, w2 = t3.offY; - d2 = Math.abs(d2); - var k2 = "vertical" === a2.config.plotOptions.bar.dataLabels.orientation, A2 = this.barCtx.barHelpers.getZeroValueEncounters({ i: s2, j: r2 }).zeroEncounters; - h2 = h2 - v2 / 2 + (-1 !== n2 ? n2 * c2 : 0); - var S2 = a2.globals.gridWidth / a2.globals.dataPoints; - if (this.barCtx.isVerticalGroupedRangeBar ? u2 += c2 / 2 : (u2 = a2.globals.isXNumeric ? h2 - c2 / 2 + y2 : h2 - S2 + c2 / 2 + y2, A2 > 0 && a2.config.plotOptions.bar.hideZeroBarsWhenGrouped && (u2 -= c2 * A2)), k2) { - u2 = u2 + g2.height / 2 - v2 / 2 - 2; - } - var C2 = this.barCtx.series[s2][r2] < 0, L2 = l2; - switch (this.barCtx.isReversed && (L2 = l2 - d2 + (C2 ? 2 * d2 : 0), l2 -= d2), x2.position) { - case "center": - p2 = k2 ? C2 ? L2 - d2 / 2 + w2 : L2 + d2 / 2 - w2 : C2 ? L2 - d2 / 2 + g2.height / 2 + w2 : L2 + d2 / 2 + g2.height / 2 - w2; - break; - case "bottom": - p2 = k2 ? C2 ? L2 - d2 + w2 : L2 + d2 - w2 : C2 ? L2 - d2 + g2.height + v2 + w2 : L2 + d2 - g2.height / 2 + v2 - w2; - break; - case "top": - p2 = k2 ? C2 ? L2 + w2 : L2 - w2 : C2 ? L2 - g2.height / 2 - w2 : L2 + g2.height + w2; - } - if (this.barCtx.lastActiveBarSerieIndex === o2 && b2.enabled) { - var P2 = new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({ realIndex: o2, j: r2 }), f2.fontSize); - e2 = C2 ? L2 - P2.height / 2 - w2 - b2.offsetY + 18 : L2 + P2.height + w2 + b2.offsetY - 18, i2 = u2 + b2.offsetX; - } - return a2.config.chart.stacked || (p2 < 0 ? p2 = 0 + v2 : p2 + g2.height / 3 > a2.globals.gridHeight && (p2 = a2.globals.gridHeight - v2)), { bcx: h2, bcy: l2, dataLabelsX: u2, dataLabelsY: p2, totalDataLabelsX: i2, totalDataLabelsY: e2, totalDataLabelsAnchor: "middle" }; - } }, { key: "calculateBarsDataLabelsPosition", value: function(t3) { - var e2 = this.w, i2 = t3.x, a2 = t3.i, s2 = t3.j, r2 = t3.realIndex, o2 = t3.groupIndex, n2 = t3.bcy, l2 = t3.barHeight, h2 = t3.barWidth, c2 = t3.textRects, d2 = t3.dataLabelsX, g2 = t3.strokeWidth, u2 = t3.dataLabelsConfig, p2 = t3.barDataLabelsConfig, f2 = t3.barTotalDataLabelsConfig, x2 = t3.offX, b2 = t3.offY, v2 = e2.globals.gridHeight / e2.globals.dataPoints; - h2 = Math.abs(h2); - var y2, w2, k2 = (n2 += -1 !== o2 ? o2 * l2 : 0) - (this.barCtx.isRangeBar ? 0 : v2) + l2 / 2 + c2.height / 2 + b2 - 3, A2 = "start", S2 = this.barCtx.series[a2][s2] < 0, C2 = i2; - switch (this.barCtx.isReversed && (C2 = i2 + h2 - (S2 ? 2 * h2 : 0), i2 = e2.globals.gridWidth - h2), p2.position) { - case "center": - d2 = S2 ? C2 + h2 / 2 - x2 : Math.max(c2.width / 2, C2 - h2 / 2) + x2; - break; - case "bottom": - d2 = S2 ? C2 + h2 - g2 - Math.round(c2.width / 2) - x2 : C2 - h2 + g2 + Math.round(c2.width / 2) + x2; - break; - case "top": - d2 = S2 ? C2 - g2 + Math.round(c2.width / 2) - x2 : C2 - g2 - Math.round(c2.width / 2) + x2; - } - if (this.barCtx.lastActiveBarSerieIndex === r2 && f2.enabled) { - var L2 = new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({ realIndex: r2, j: s2 }), u2.fontSize); - S2 ? (y2 = C2 - g2 + Math.round(L2.width / 2) - x2 - f2.offsetX - 15, A2 = "end") : y2 = C2 - g2 - Math.round(L2.width / 2) + x2 + f2.offsetX + 15, w2 = k2 + f2.offsetY; - } - return e2.config.chart.stacked || (d2 < 0 ? d2 = d2 + c2.width + g2 : d2 + c2.width / 2 > e2.globals.gridWidth && (d2 = e2.globals.gridWidth - c2.width - g2)), { bcx: i2, bcy: n2, dataLabelsX: d2, dataLabelsY: k2, totalDataLabelsX: y2, totalDataLabelsY: w2, totalDataLabelsAnchor: A2 }; - } }, { key: "drawCalculatedDataLabels", value: function(t3) { - var i2 = t3.x, a2 = t3.y, s2 = t3.val, r2 = t3.i, o2 = t3.j, n2 = t3.textRects, l2 = t3.barHeight, h2 = t3.barWidth, c2 = t3.dataLabelsConfig, d2 = this.w, g2 = "rotate(0)"; - "vertical" === d2.config.plotOptions.bar.dataLabels.orientation && (g2 = "rotate(-90, ".concat(i2, ", ").concat(a2, ")")); - var u2 = new O(this.barCtx.ctx), p2 = new m(this.barCtx.ctx), f2 = c2.formatter, x2 = null, b2 = d2.globals.collapsedSeriesIndices.indexOf(r2) > -1; - if (c2.enabled && !b2) { - x2 = p2.group({ class: "apexcharts-data-labels", transform: g2 }); - var v2 = ""; - void 0 !== s2 && (v2 = f2(s2, e(e({}, d2), {}, { seriesIndex: r2, dataPointIndex: o2, w: d2 }))), !s2 && d2.config.plotOptions.bar.hideZeroBarsWhenGrouped && (v2 = ""); - var y2 = d2.globals.series[r2][o2] < 0, w2 = d2.config.plotOptions.bar.dataLabels.position; - if ("vertical" === d2.config.plotOptions.bar.dataLabels.orientation && ("top" === w2 && (c2.textAnchor = y2 ? "end" : "start"), "center" === w2 && (c2.textAnchor = "middle"), "bottom" === w2 && (c2.textAnchor = y2 ? "end" : "start")), this.barCtx.isRangeBar && this.barCtx.barOptions.dataLabels.hideOverflowingLabels) - h2 < p2.getTextRects(v2, parseFloat(c2.style.fontSize)).width && (v2 = ""); - d2.config.chart.stacked && this.barCtx.barOptions.dataLabels.hideOverflowingLabels && (this.barCtx.isHorizontal ? n2.width / 1.6 > Math.abs(h2) && (v2 = "") : n2.height / 1.6 > Math.abs(l2) && (v2 = "")); - var k2 = e({}, c2); - this.barCtx.isHorizontal && s2 < 0 && ("start" === c2.textAnchor ? k2.textAnchor = "end" : "end" === c2.textAnchor && (k2.textAnchor = "start")), u2.plotDataLabelsText({ x: i2, y: a2, text: v2, i: r2, j: o2, parent: x2, dataLabelsConfig: k2, alwaysDrawDataLabel: true, offsetCorrection: true }); - } - return x2; - } }, { key: "drawTotalDataLabels", value: function(t3) { - var e2, i2 = t3.x, a2 = t3.y, s2 = t3.val, r2 = t3.realIndex, o2 = t3.textAnchor, n2 = t3.barTotalDataLabelsConfig, l2 = new m(this.barCtx.ctx); - return n2.enabled && void 0 !== i2 && void 0 !== a2 && this.barCtx.lastActiveBarSerieIndex === r2 && (e2 = l2.drawText({ x: i2, y: a2, foreColor: n2.style.color, text: s2, textAnchor: o2, fontFamily: n2.style.fontFamily, fontSize: n2.style.fontSize, fontWeight: n2.style.fontWeight })), e2; - } }]), t2; - }(); - var mt = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.barCtx = e2; - } - return r(t2, [{ key: "initVariables", value: function(t3) { - var e2 = this.w; - this.barCtx.series = t3, this.barCtx.totalItems = 0, this.barCtx.seriesLen = 0, this.barCtx.visibleI = -1, this.barCtx.visibleItems = 1; - for (var i2 = 0; i2 < t3.length; i2++) - if (t3[i2].length > 0 && (this.barCtx.seriesLen = this.barCtx.seriesLen + 1, this.barCtx.totalItems += t3[i2].length), e2.globals.isXNumeric) - for (var a2 = 0; a2 < t3[i2].length; a2++) - e2.globals.seriesX[i2][a2] > e2.globals.minX && e2.globals.seriesX[i2][a2] < e2.globals.maxX && this.barCtx.visibleItems++; - else - this.barCtx.visibleItems = e2.globals.dataPoints; - 0 === this.barCtx.seriesLen && (this.barCtx.seriesLen = 1), this.barCtx.zeroSerieses = [], e2.globals.comboCharts || this.checkZeroSeries({ series: t3 }); - } }, { key: "initialPositions", value: function() { - var t3, e2, i2, a2, s2, r2, o2, n2, l2 = this.w, h2 = l2.globals.dataPoints; - this.barCtx.isRangeBar && (h2 = l2.globals.labels.length); - var c2 = this.barCtx.seriesLen; - if (l2.config.plotOptions.bar.rangeBarGroupRows && (c2 = 1), this.barCtx.isHorizontal) - s2 = (i2 = l2.globals.gridHeight / h2) / c2, l2.globals.isXNumeric && (s2 = (i2 = l2.globals.gridHeight / this.barCtx.totalItems) / this.barCtx.seriesLen), s2 = s2 * parseInt(this.barCtx.barOptions.barHeight, 10) / 100, -1 === String(this.barCtx.barOptions.barHeight).indexOf("%") && (s2 = parseInt(this.barCtx.barOptions.barHeight, 10)), n2 = this.barCtx.baseLineInvertedY + l2.globals.padHorizontal + (this.barCtx.isReversed ? l2.globals.gridWidth : 0) - (this.barCtx.isReversed ? 2 * this.barCtx.baseLineInvertedY : 0), this.barCtx.isFunnel && (n2 = l2.globals.gridWidth / 2), e2 = (i2 - s2 * this.barCtx.seriesLen) / 2; - else { - if (a2 = l2.globals.gridWidth / this.barCtx.visibleItems, l2.config.xaxis.convertedCatToNumeric && (a2 = l2.globals.gridWidth / l2.globals.dataPoints), r2 = a2 / c2 * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100, l2.globals.isXNumeric) { - var d2 = this.barCtx.xRatio; - l2.config.xaxis.convertedCatToNumeric && (d2 = this.barCtx.initialXRatio), l2.globals.minXDiff && 0.5 !== l2.globals.minXDiff && l2.globals.minXDiff / d2 > 0 && (a2 = l2.globals.minXDiff / d2), (r2 = a2 / c2 * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100) < 1 && (r2 = 1); - } - -1 === String(this.barCtx.barOptions.columnWidth).indexOf("%") && (r2 = parseInt(this.barCtx.barOptions.columnWidth, 10)), o2 = l2.globals.gridHeight - this.barCtx.baseLineY[this.barCtx.yaxisIndex] - (this.barCtx.isReversed ? l2.globals.gridHeight : 0) + (this.barCtx.isReversed ? 2 * this.barCtx.baseLineY[this.barCtx.yaxisIndex] : 0), t3 = l2.globals.padHorizontal + (a2 - r2 * this.barCtx.seriesLen) / 2; - } - return { x: t3, y: e2, yDivision: i2, xDivision: a2, barHeight: s2, barWidth: r2, zeroH: o2, zeroW: n2 }; - } }, { key: "initializeStackedPrevVars", value: function(t3) { - var e2 = t3.w; - e2.globals.hasSeriesGroups ? e2.globals.seriesGroups.forEach(function(e3) { - t3[e3] || (t3[e3] = {}), t3[e3].prevY = [], t3[e3].prevX = [], t3[e3].prevYF = [], t3[e3].prevXF = [], t3[e3].prevYVal = [], t3[e3].prevXVal = []; - }) : (t3.prevY = [], t3.prevX = [], t3.prevYF = [], t3.prevXF = [], t3.prevYVal = [], t3.prevXVal = []); - } }, { key: "initializeStackedXYVars", value: function(t3) { - var e2 = t3.w; - e2.globals.hasSeriesGroups ? e2.globals.seriesGroups.forEach(function(e3) { - t3[e3] || (t3[e3] = {}), t3[e3].xArrj = [], t3[e3].xArrjF = [], t3[e3].xArrjVal = [], t3[e3].yArrj = [], t3[e3].yArrjF = [], t3[e3].yArrjVal = []; - }) : (t3.xArrj = [], t3.xArrjF = [], t3.xArrjVal = [], t3.yArrj = [], t3.yArrjF = [], t3.yArrjVal = []); - } }, { key: "getPathFillColor", value: function(t3, e2, i2, a2) { - var s2, r2, o2, n2, l2 = this.w, h2 = new R(this.barCtx.ctx), c2 = null, d2 = this.barCtx.barOptions.distributed ? i2 : e2; - this.barCtx.barOptions.colors.ranges.length > 0 && this.barCtx.barOptions.colors.ranges.map(function(a3) { - t3[e2][i2] >= a3.from && t3[e2][i2] <= a3.to && (c2 = a3.color); - }); - return l2.config.series[e2].data[i2] && l2.config.series[e2].data[i2].fillColor && (c2 = l2.config.series[e2].data[i2].fillColor), h2.fillPath({ seriesNumber: this.barCtx.barOptions.distributed ? d2 : a2, dataPointIndex: i2, color: c2, value: t3[e2][i2], fillConfig: null === (s2 = l2.config.series[e2].data[i2]) || void 0 === s2 ? void 0 : s2.fill, fillType: null !== (r2 = l2.config.series[e2].data[i2]) && void 0 !== r2 && null !== (o2 = r2.fill) && void 0 !== o2 && o2.type ? null === (n2 = l2.config.series[e2].data[i2]) || void 0 === n2 ? void 0 : n2.fill.type : l2.config.fill.type }); - } }, { key: "getStrokeWidth", value: function(t3, e2, i2) { - var a2 = 0, s2 = this.w; - return this.barCtx.series[t3][e2] ? this.barCtx.isNullValue = false : this.barCtx.isNullValue = true, s2.config.stroke.show && (this.barCtx.isNullValue || (a2 = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[i2] : this.barCtx.strokeWidth)), a2; - } }, { key: "shouldApplyRadius", value: function(t3) { - var e2 = this.w, i2 = false; - return e2.config.plotOptions.bar.borderRadius > 0 && (e2.config.chart.stacked && "last" === e2.config.plotOptions.bar.borderRadiusWhenStacked ? this.barCtx.lastActiveBarSerieIndex === t3 && (i2 = true) : i2 = true), i2; - } }, { key: "barBackground", value: function(t3) { - var e2 = t3.j, i2 = t3.i, a2 = t3.x1, s2 = t3.x2, r2 = t3.y1, o2 = t3.y2, n2 = t3.elSeries, l2 = this.w, h2 = new m(this.barCtx.ctx), c2 = new N(this.barCtx.ctx).getActiveConfigSeriesIndex(); - if (this.barCtx.barOptions.colors.backgroundBarColors.length > 0 && c2 === i2) { - e2 >= this.barCtx.barOptions.colors.backgroundBarColors.length && (e2 %= this.barCtx.barOptions.colors.backgroundBarColors.length); - var d2 = this.barCtx.barOptions.colors.backgroundBarColors[e2], g2 = h2.drawRect(void 0 !== a2 ? a2 : 0, void 0 !== r2 ? r2 : 0, void 0 !== s2 ? s2 : l2.globals.gridWidth, void 0 !== o2 ? o2 : l2.globals.gridHeight, this.barCtx.barOptions.colors.backgroundBarRadius, d2, this.barCtx.barOptions.colors.backgroundBarOpacity); - n2.add(g2), g2.node.classList.add("apexcharts-backgroundBar"); - } - } }, { key: "getColumnPaths", value: function(t3) { - var e2, i2 = t3.barWidth, a2 = t3.barXPosition, s2 = t3.y1, r2 = t3.y2, o2 = t3.strokeWidth, n2 = t3.seriesGroup, l2 = t3.realIndex, h2 = t3.i, c2 = t3.j, d2 = t3.w, g2 = new m(this.barCtx.ctx); - (o2 = Array.isArray(o2) ? o2[l2] : o2) || (o2 = 0); - var u2 = i2, p2 = a2; - null !== (e2 = d2.config.series[l2].data[c2]) && void 0 !== e2 && e2.columnWidthOffset && (p2 = a2 - d2.config.series[l2].data[c2].columnWidthOffset / 2, u2 = i2 + d2.config.series[l2].data[c2].columnWidthOffset); - var f2 = p2, x2 = p2 + u2; - s2 += 1e-3, r2 += 1e-3; - var b2 = g2.move(f2, s2), v2 = g2.move(f2, s2), y2 = g2.line(x2 - o2, s2); - if (d2.globals.previousPaths.length > 0 && (v2 = this.barCtx.getPreviousPath(l2, c2, false)), b2 = b2 + g2.line(f2, r2) + g2.line(x2 - o2, r2) + g2.line(x2 - o2, s2) + ("around" === d2.config.plotOptions.bar.borderRadiusApplication ? " Z" : " z"), v2 = v2 + g2.line(f2, s2) + y2 + y2 + y2 + y2 + y2 + g2.line(f2, s2) + ("around" === d2.config.plotOptions.bar.borderRadiusApplication ? " Z" : " z"), this.shouldApplyRadius(l2) && (b2 = g2.roundPathCorners(b2, d2.config.plotOptions.bar.borderRadius)), d2.config.chart.stacked) { - var w2 = this.barCtx; - d2.globals.hasSeriesGroups && n2 && (w2 = this.barCtx[n2]), w2.yArrj.push(r2), w2.yArrjF.push(Math.abs(s2 - r2)), w2.yArrjVal.push(this.barCtx.series[h2][c2]); - } - return { pathTo: b2, pathFrom: v2 }; - } }, { key: "getBarpaths", value: function(t3) { - var e2, i2 = t3.barYPosition, a2 = t3.barHeight, s2 = t3.x1, r2 = t3.x2, o2 = t3.strokeWidth, n2 = t3.seriesGroup, l2 = t3.realIndex, h2 = t3.i, c2 = t3.j, d2 = t3.w, g2 = new m(this.barCtx.ctx); - (o2 = Array.isArray(o2) ? o2[l2] : o2) || (o2 = 0); - var u2 = i2, p2 = a2; - null !== (e2 = d2.config.series[l2].data[c2]) && void 0 !== e2 && e2.barHeightOffset && (u2 = i2 - d2.config.series[l2].data[c2].barHeightOffset / 2, p2 = a2 + d2.config.series[l2].data[c2].barHeightOffset); - var f2 = u2, x2 = u2 + p2; - s2 += 1e-3, r2 += 1e-3; - var b2 = g2.move(s2, f2), v2 = g2.move(s2, f2); - d2.globals.previousPaths.length > 0 && (v2 = this.barCtx.getPreviousPath(l2, c2, false)); - var y2 = g2.line(s2, x2 - o2); - if (b2 = b2 + g2.line(r2, f2) + g2.line(r2, x2 - o2) + y2 + ("around" === d2.config.plotOptions.bar.borderRadiusApplication ? " Z" : " z"), v2 = v2 + g2.line(s2, f2) + y2 + y2 + y2 + y2 + y2 + g2.line(s2, f2) + ("around" === d2.config.plotOptions.bar.borderRadiusApplication ? " Z" : " z"), this.shouldApplyRadius(l2) && (b2 = g2.roundPathCorners(b2, d2.config.plotOptions.bar.borderRadius)), d2.config.chart.stacked) { - var w2 = this.barCtx; - d2.globals.hasSeriesGroups && n2 && (w2 = this.barCtx[n2]), w2.xArrj.push(r2), w2.xArrjF.push(Math.abs(s2 - r2)), w2.xArrjVal.push(this.barCtx.series[h2][c2]); - } - return { pathTo: b2, pathFrom: v2 }; - } }, { key: "checkZeroSeries", value: function(t3) { - for (var e2 = t3.series, i2 = this.w, a2 = 0; a2 < e2.length; a2++) { - for (var s2 = 0, r2 = 0; r2 < e2[i2.globals.maxValsInArrayIndex].length; r2++) - s2 += e2[a2][r2]; - 0 === s2 && this.barCtx.zeroSerieses.push(a2); - } - } }, { key: "getXForValue", value: function(t3, e2) { - var i2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2] ? e2 : null; - return null != t3 && (i2 = e2 + t3 / this.barCtx.invertedYRatio - 2 * (this.barCtx.isReversed ? t3 / this.barCtx.invertedYRatio : 0)), i2; - } }, { key: "getYForValue", value: function(t3, e2) { - var i2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2] ? e2 : null; - return null != t3 && (i2 = e2 - t3 / this.barCtx.yRatio[this.barCtx.yaxisIndex] + 2 * (this.barCtx.isReversed ? t3 / this.barCtx.yRatio[this.barCtx.yaxisIndex] : 0)), i2; - } }, { key: "getGoalValues", value: function(t3, i2, a2, s2, r2) { - var n2 = this, l2 = this.w, h2 = [], c2 = function(e2, s3) { - var r3; - h2.push((o(r3 = {}, t3, "x" === t3 ? n2.getXForValue(e2, i2, false) : n2.getYForValue(e2, a2, false)), o(r3, "attrs", s3), r3)); - }; - if (l2.globals.seriesGoals[s2] && l2.globals.seriesGoals[s2][r2] && Array.isArray(l2.globals.seriesGoals[s2][r2]) && l2.globals.seriesGoals[s2][r2].forEach(function(t4) { - c2(t4.value, t4); - }), this.barCtx.barOptions.isDumbbell && l2.globals.seriesRange.length) { - var d2 = this.barCtx.barOptions.dumbbellColors ? this.barCtx.barOptions.dumbbellColors : l2.globals.colors, g2 = { strokeHeight: "x" === t3 ? 0 : l2.globals.markers.size[s2], strokeWidth: "x" === t3 ? l2.globals.markers.size[s2] : 0, strokeDashArray: 0, strokeLineCap: "round", strokeColor: Array.isArray(d2[s2]) ? d2[s2][0] : d2[s2] }; - c2(l2.globals.seriesRangeStart[s2][r2], g2), c2(l2.globals.seriesRangeEnd[s2][r2], e(e({}, g2), {}, { strokeColor: Array.isArray(d2[s2]) ? d2[s2][1] : d2[s2] })); - } - return h2; - } }, { key: "drawGoalLine", value: function(t3) { - var e2 = t3.barXPosition, i2 = t3.barYPosition, a2 = t3.goalX, s2 = t3.goalY, r2 = t3.barWidth, o2 = t3.barHeight, n2 = new m(this.barCtx.ctx), l2 = n2.group({ className: "apexcharts-bar-goals-groups" }); - l2.node.classList.add("apexcharts-element-hidden"), this.barCtx.w.globals.delayedElements.push({ el: l2.node }), l2.attr("clip-path", "url(#gridRectMarkerMask".concat(this.barCtx.w.globals.cuid, ")")); - var h2 = null; - return this.barCtx.isHorizontal ? Array.isArray(a2) && a2.forEach(function(t4) { - var e3 = void 0 !== t4.attrs.strokeHeight ? t4.attrs.strokeHeight : o2 / 2, a3 = i2 + e3 + o2 / 2; - h2 = n2.drawLine(t4.x, a3 - 2 * e3, t4.x, a3, t4.attrs.strokeColor ? t4.attrs.strokeColor : void 0, t4.attrs.strokeDashArray, t4.attrs.strokeWidth ? t4.attrs.strokeWidth : 2, t4.attrs.strokeLineCap), l2.add(h2); - }) : Array.isArray(s2) && s2.forEach(function(t4) { - var i3 = void 0 !== t4.attrs.strokeWidth ? t4.attrs.strokeWidth : r2 / 2, a3 = e2 + i3 + r2 / 2; - h2 = n2.drawLine(a3 - 2 * i3, t4.y, a3, t4.y, t4.attrs.strokeColor ? t4.attrs.strokeColor : void 0, t4.attrs.strokeDashArray, t4.attrs.strokeHeight ? t4.attrs.strokeHeight : 2, t4.attrs.strokeLineCap), l2.add(h2); - }), l2; - } }, { key: "drawBarShadow", value: function(t3) { - var e2 = t3.prevPaths, i2 = t3.currPaths, a2 = t3.color, s2 = this.w, r2 = e2.x, o2 = e2.x1, n2 = e2.barYPosition, l2 = i2.x, h2 = i2.x1, c2 = i2.barYPosition, d2 = n2 + i2.barHeight, g2 = new m(this.barCtx.ctx), u2 = new x(), p2 = g2.move(o2, d2) + g2.line(r2, d2) + g2.line(l2, c2) + g2.line(h2, c2) + g2.line(o2, d2) + ("around" === s2.config.plotOptions.bar.borderRadiusApplication ? " Z" : " z"); - return g2.drawPath({ d: p2, fill: u2.shadeColor(0.5, x.rgb2hex(a2)), stroke: "none", strokeWidth: 0, fillOpacity: 1, classes: "apexcharts-bar-shadows" }); - } }, { key: "getZeroValueEncounters", value: function(t3) { - var e2 = t3.i, i2 = t3.j, a2 = this.w, s2 = 0, r2 = 0; - return a2.globals.seriesPercent.forEach(function(t4, a3) { - t4[i2] && s2++, a3 < e2 && 0 === t4[i2] && r2++; - }), { nonZeroColumns: s2, zeroEncounters: r2 }; - } }]), t2; - }(); - var yt = function() { - function t2(e2, i2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - var s2 = this.w; - this.barOptions = s2.config.plotOptions.bar, this.isHorizontal = this.barOptions.horizontal, this.strokeWidth = s2.config.stroke.width, this.isNullValue = false, this.isRangeBar = s2.globals.seriesRange.length && this.isHorizontal, this.isVerticalGroupedRangeBar = !s2.globals.isBarHorizontal && s2.globals.seriesRange.length && s2.config.plotOptions.bar.rangeBarGroupRows, this.isFunnel = this.barOptions.isFunnel, this.xyRatios = i2, null !== this.xyRatios && (this.xRatio = i2.xRatio, this.initialXRatio = i2.initialXRatio, this.yRatio = i2.yRatio, this.invertedXRatio = i2.invertedXRatio, this.invertedYRatio = i2.invertedYRatio, this.baseLineY = i2.baseLineY, this.baseLineInvertedY = i2.baseLineInvertedY), this.yaxisIndex = 0, this.seriesLen = 0, this.pathArr = []; - var r2 = new N(this.ctx); - this.lastActiveBarSerieIndex = r2.getActiveConfigSeriesIndex("desc", ["bar", "column"]); - var o2 = r2.getBarSeriesIndices(), n2 = new y(this.ctx); - this.stackedSeriesTotals = n2.getStackedSeriesTotals(this.w.config.series.map(function(t3, e3) { - return -1 === o2.indexOf(e3) ? e3 : -1; - }).filter(function(t3) { - return -1 !== t3; - })), this.barHelpers = new mt(this); - } - return r(t2, [{ key: "draw", value: function(t3, i2) { - var a2 = this.w, s2 = new m(this.ctx), r2 = new y(this.ctx, a2); - t3 = r2.getLogSeries(t3), this.series = t3, this.yRatio = r2.getLogYRatios(this.yRatio), this.barHelpers.initVariables(t3); - var o2 = s2.group({ class: "apexcharts-bar-series apexcharts-plot-series" }); - a2.config.dataLabels.enabled && this.totalItems > this.barOptions.dataLabels.maxItems && console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts"); - for (var n2 = 0, l2 = 0; n2 < t3.length; n2++, l2++) { - var h2, c2, d2, g2, u2 = void 0, p2 = void 0, f2 = [], b2 = [], v2 = a2.globals.comboCharts ? i2[n2] : n2, w2 = s2.group({ class: "apexcharts-series", rel: n2 + 1, seriesName: x.escapeString(a2.globals.seriesNames[v2]), "data:realIndex": v2 }); - this.ctx.series.addCollapsedClassToSeries(w2, v2), t3[n2].length > 0 && (this.visibleI = this.visibleI + 1); - var k2 = 0, A2 = 0; - this.yRatio.length > 1 && (this.yaxisIndex = v2), this.isReversed = a2.config.yaxis[this.yaxisIndex] && a2.config.yaxis[this.yaxisIndex].reversed; - var S2 = this.barHelpers.initialPositions(); - p2 = S2.y, k2 = S2.barHeight, c2 = S2.yDivision, g2 = S2.zeroW, u2 = S2.x, A2 = S2.barWidth, h2 = S2.xDivision, d2 = S2.zeroH, this.horizontal || b2.push(u2 + A2 / 2); - var C2 = s2.group({ class: "apexcharts-datalabels", "data:realIndex": v2 }); - a2.globals.delayedElements.push({ el: C2.node }), C2.node.classList.add("apexcharts-element-hidden"); - var L2 = s2.group({ class: "apexcharts-bar-goals-markers" }), P2 = s2.group({ class: "apexcharts-bar-shadows" }); - a2.globals.delayedElements.push({ el: P2.node }), P2.node.classList.add("apexcharts-element-hidden"); - for (var I2 = 0; I2 < a2.globals.dataPoints; I2++) { - var M2 = this.barHelpers.getStrokeWidth(n2, I2, v2), T2 = null, z2 = { indexes: { i: n2, j: I2, realIndex: v2, bc: l2 }, x: u2, y: p2, strokeWidth: M2, elSeries: w2 }; - this.isHorizontal ? (T2 = this.drawBarPaths(e(e({}, z2), {}, { barHeight: k2, zeroW: g2, yDivision: c2 })), A2 = this.series[n2][I2] / this.invertedYRatio) : (T2 = this.drawColumnPaths(e(e({}, z2), {}, { xDivision: h2, barWidth: A2, zeroH: d2 })), k2 = this.series[n2][I2] / this.yRatio[this.yaxisIndex]); - var X2 = this.barHelpers.getPathFillColor(t3, n2, I2, v2); - if (this.isFunnel && this.barOptions.isFunnel3d && this.pathArr.length && I2 > 0) { - var E2 = this.barHelpers.drawBarShadow({ color: "string" == typeof X2 && -1 === (null == X2 ? void 0 : X2.indexOf("url")) ? X2 : x.hexToRgba(a2.globals.colors[n2]), prevPaths: this.pathArr[this.pathArr.length - 1], currPaths: T2 }); - E2 && P2.add(E2); - } - this.pathArr.push(T2); - var Y2 = this.barHelpers.drawGoalLine({ barXPosition: T2.barXPosition, barYPosition: T2.barYPosition, goalX: T2.goalX, goalY: T2.goalY, barHeight: k2, barWidth: A2 }); - Y2 && L2.add(Y2), p2 = T2.y, u2 = T2.x, I2 > 0 && b2.push(u2 + A2 / 2), f2.push(p2), this.renderSeries({ realIndex: v2, pathFill: X2, j: I2, i: n2, pathFrom: T2.pathFrom, pathTo: T2.pathTo, strokeWidth: M2, elSeries: w2, x: u2, y: p2, series: t3, barHeight: T2.barHeight ? T2.barHeight : k2, barWidth: T2.barWidth ? T2.barWidth : A2, elDataLabelsWrap: C2, elGoalsMarkers: L2, elBarShadows: P2, visibleSeries: this.visibleI, type: "bar" }); - } - a2.globals.seriesXvalues[v2] = b2, a2.globals.seriesYvalues[v2] = f2, o2.add(w2); - } - return o2; - } }, { key: "renderSeries", value: function(t3) { - var e2 = t3.realIndex, i2 = t3.pathFill, a2 = t3.lineFill, s2 = t3.j, r2 = t3.i, o2 = t3.groupIndex, n2 = t3.pathFrom, l2 = t3.pathTo, h2 = t3.strokeWidth, c2 = t3.elSeries, d2 = t3.x, g2 = t3.y, u2 = t3.y1, p2 = t3.y2, f2 = t3.series, x2 = t3.barHeight, b2 = t3.barWidth, y2 = t3.barXPosition, w2 = t3.barYPosition, k2 = t3.elDataLabelsWrap, A2 = t3.elGoalsMarkers, S2 = t3.elBarShadows, C2 = t3.visibleSeries, L2 = t3.type, P2 = this.w, I2 = new m(this.ctx); - a2 || (a2 = this.barOptions.distributed ? P2.globals.stroke.colors[s2] : P2.globals.stroke.colors[e2]), P2.config.series[r2].data[s2] && P2.config.series[r2].data[s2].strokeColor && (a2 = P2.config.series[r2].data[s2].strokeColor), this.isNullValue && (i2 = "none"); - var M2 = s2 / P2.config.chart.animations.animateGradually.delay * (P2.config.chart.animations.speed / P2.globals.dataPoints) / 2.4, T2 = I2.renderPaths({ i: r2, j: s2, realIndex: e2, pathFrom: n2, pathTo: l2, stroke: a2, strokeWidth: h2, strokeLineCap: P2.config.stroke.lineCap, fill: i2, animationDelay: M2, initialSpeed: P2.config.chart.animations.speed, dataChangeSpeed: P2.config.chart.animations.dynamicAnimation.speed, className: "apexcharts-".concat(L2, "-area") }); - T2.attr("clip-path", "url(#gridRectMask".concat(P2.globals.cuid, ")")); - var z2 = P2.config.forecastDataPoints; - z2.count > 0 && s2 >= P2.globals.dataPoints - z2.count && (T2.node.setAttribute("stroke-dasharray", z2.dashArray), T2.node.setAttribute("stroke-width", z2.strokeWidth), T2.node.setAttribute("fill-opacity", z2.fillOpacity)), void 0 !== u2 && void 0 !== p2 && (T2.attr("data-range-y1", u2), T2.attr("data-range-y2", p2)), new v(this.ctx).setSelectionFilter(T2, e2, s2), c2.add(T2); - var X2 = new vt(this).handleBarDataLabels({ x: d2, y: g2, y1: u2, y2: p2, i: r2, j: s2, series: f2, realIndex: e2, groupIndex: o2, barHeight: x2, barWidth: b2, barXPosition: y2, barYPosition: w2, renderedPath: T2, visibleSeries: C2 }); - return null !== X2.dataLabels && k2.add(X2.dataLabels), X2.totalDataLabels && k2.add(X2.totalDataLabels), c2.add(k2), A2 && c2.add(A2), S2 && c2.add(S2), c2; - } }, { key: "drawBarPaths", value: function(t3) { - var e2, i2 = t3.indexes, a2 = t3.barHeight, s2 = t3.strokeWidth, r2 = t3.zeroW, o2 = t3.x, n2 = t3.y, l2 = t3.yDivision, h2 = t3.elSeries, c2 = this.w, d2 = i2.i, g2 = i2.j; - if (c2.globals.isXNumeric) - e2 = (n2 = (c2.globals.seriesX[d2][g2] - c2.globals.minX) / this.invertedXRatio - a2) + a2 * this.visibleI; - else if (c2.config.plotOptions.bar.hideZeroBarsWhenGrouped) { - var u2 = 0, p2 = 0; - c2.globals.seriesPercent.forEach(function(t4, e3) { - t4[g2] && u2++, e3 < d2 && 0 === t4[g2] && p2++; - }), u2 > 0 && (a2 = this.seriesLen * a2 / u2), e2 = n2 + a2 * this.visibleI, e2 -= a2 * p2; - } else - e2 = n2 + a2 * this.visibleI; - this.isFunnel && (r2 -= (this.barHelpers.getXForValue(this.series[d2][g2], r2) - r2) / 2), o2 = this.barHelpers.getXForValue(this.series[d2][g2], r2); - var f2 = this.barHelpers.getBarpaths({ barYPosition: e2, barHeight: a2, x1: r2, x2: o2, strokeWidth: s2, series: this.series, realIndex: i2.realIndex, i: d2, j: g2, w: c2 }); - return c2.globals.isXNumeric || (n2 += l2), this.barHelpers.barBackground({ j: g2, i: d2, y1: e2 - a2 * this.visibleI, y2: a2 * this.seriesLen, elSeries: h2 }), { pathTo: f2.pathTo, pathFrom: f2.pathFrom, x1: r2, x: o2, y: n2, goalX: this.barHelpers.getGoalValues("x", r2, null, d2, g2), barYPosition: e2, barHeight: a2 }; - } }, { key: "drawColumnPaths", value: function(t3) { - var e2, i2 = t3.indexes, a2 = t3.x, s2 = t3.y, r2 = t3.xDivision, o2 = t3.barWidth, n2 = t3.zeroH, l2 = t3.strokeWidth, h2 = t3.elSeries, c2 = this.w, d2 = i2.realIndex, g2 = i2.i, u2 = i2.j, p2 = i2.bc; - if (c2.globals.isXNumeric) { - var f2 = this.getBarXForNumericXAxis({ x: a2, j: u2, realIndex: d2, barWidth: o2 }); - a2 = f2.x, e2 = f2.barXPosition; - } else if (c2.config.plotOptions.bar.hideZeroBarsWhenGrouped) { - var x2 = this.barHelpers.getZeroValueEncounters({ i: g2, j: u2 }), b2 = x2.nonZeroColumns, v2 = x2.zeroEncounters; - b2 > 0 && (o2 = this.seriesLen * o2 / b2), e2 = a2 + o2 * this.visibleI, e2 -= o2 * v2; - } else - e2 = a2 + o2 * this.visibleI; - s2 = this.barHelpers.getYForValue(this.series[g2][u2], n2); - var m2 = this.barHelpers.getColumnPaths({ barXPosition: e2, barWidth: o2, y1: n2, y2: s2, strokeWidth: l2, series: this.series, realIndex: i2.realIndex, i: g2, j: u2, w: c2 }); - return c2.globals.isXNumeric || (a2 += r2), this.barHelpers.barBackground({ bc: p2, j: u2, i: g2, x1: e2 - l2 / 2 - o2 * this.visibleI, x2: o2 * this.seriesLen + l2 / 2, elSeries: h2 }), { pathTo: m2.pathTo, pathFrom: m2.pathFrom, x: a2, y: s2, goalY: this.barHelpers.getGoalValues("y", null, n2, g2, u2), barXPosition: e2, barWidth: o2 }; - } }, { key: "getBarXForNumericXAxis", value: function(t3) { - var e2 = t3.x, i2 = t3.barWidth, a2 = t3.realIndex, s2 = t3.j, r2 = this.w, o2 = a2; - return r2.globals.seriesX[a2].length || (o2 = r2.globals.maxValsInArrayIndex), r2.globals.seriesX[o2][s2] && (e2 = (r2.globals.seriesX[o2][s2] - r2.globals.minX) / this.xRatio - i2 * this.seriesLen / 2), { barXPosition: e2 + i2 * this.visibleI, x: e2 }; - } }, { key: "getPreviousPath", value: function(t3, e2) { - for (var i2, a2 = this.w, s2 = 0; s2 < a2.globals.previousPaths.length; s2++) { - var r2 = a2.globals.previousPaths[s2]; - r2.paths && r2.paths.length > 0 && parseInt(r2.realIndex, 10) === parseInt(t3, 10) && void 0 !== a2.globals.previousPaths[s2].paths[e2] && (i2 = a2.globals.previousPaths[s2].paths[e2].d); - } - return i2; - } }]), t2; - }(); - var wt = function(t2) { - n(s2, yt); - var i2 = d(s2); - function s2() { - return a(this, s2), i2.apply(this, arguments); - } - return r(s2, [{ key: "draw", value: function(t3, i3) { - var a2 = this, s3 = this.w; - this.graphics = new m(this.ctx), this.bar = new yt(this.ctx, this.xyRatios); - var r2 = new y(this.ctx, s3); - t3 = r2.getLogSeries(t3), this.yRatio = r2.getLogYRatios(this.yRatio), this.barHelpers.initVariables(t3), "100%" === s3.config.chart.stackType && (t3 = s3.globals.seriesPercent.slice()), this.series = t3, this.barHelpers.initializeStackedPrevVars(this); - for (var o2 = this.graphics.group({ class: "apexcharts-bar-series apexcharts-plot-series" }), n2 = 0, l2 = 0, h2 = function(r3, h3) { - var c3 = void 0, d3 = void 0, g2 = void 0, u2 = void 0, p2 = -1; - a2.groupCtx = a2, s3.globals.seriesGroups.forEach(function(t4, e2) { - t4.indexOf(s3.config.series[r3].name) > -1 && (p2 = e2); - }), -1 !== p2 && (a2.groupCtx = a2[s3.globals.seriesGroups[p2]]); - var f2 = [], b2 = [], v2 = s3.globals.comboCharts ? i3[r3] : r3; - a2.yRatio.length > 1 && (a2.yaxisIndex = v2), a2.isReversed = s3.config.yaxis[a2.yaxisIndex] && s3.config.yaxis[a2.yaxisIndex].reversed; - var m2 = a2.graphics.group({ class: "apexcharts-series", seriesName: x.escapeString(s3.globals.seriesNames[v2]), rel: r3 + 1, "data:realIndex": v2 }); - a2.ctx.series.addCollapsedClassToSeries(m2, v2); - var y2 = a2.graphics.group({ class: "apexcharts-datalabels", "data:realIndex": v2 }), w2 = a2.graphics.group({ class: "apexcharts-bar-goals-markers" }), k2 = 0, A2 = 0, S2 = a2.initialPositions(n2, l2, c3, d3, g2, u2); - l2 = S2.y, k2 = S2.barHeight, d3 = S2.yDivision, u2 = S2.zeroW, n2 = S2.x, A2 = S2.barWidth, c3 = S2.xDivision, g2 = S2.zeroH, a2.barHelpers.initializeStackedXYVars(a2), 1 === a2.groupCtx.prevY.length && a2.groupCtx.prevY[0].every(function(t4) { - return isNaN(t4); - }) && (a2.groupCtx.prevY[0] = a2.groupCtx.prevY[0].map(function(t4) { - return g2; - }), a2.groupCtx.prevYF[0] = a2.groupCtx.prevYF[0].map(function(t4) { - return 0; - })); - for (var C2 = 0; C2 < s3.globals.dataPoints; C2++) { - var L2 = a2.barHelpers.getStrokeWidth(r3, C2, v2), P2 = { indexes: { i: r3, j: C2, realIndex: v2, bc: h3 }, strokeWidth: L2, x: n2, y: l2, elSeries: m2, groupIndex: p2, seriesGroup: s3.globals.seriesGroups[p2] }, I2 = null; - a2.isHorizontal ? (I2 = a2.drawStackedBarPaths(e(e({}, P2), {}, { zeroW: u2, barHeight: k2, yDivision: d3 })), A2 = a2.series[r3][C2] / a2.invertedYRatio) : (I2 = a2.drawStackedColumnPaths(e(e({}, P2), {}, { xDivision: c3, barWidth: A2, zeroH: g2 })), k2 = a2.series[r3][C2] / a2.yRatio[a2.yaxisIndex]); - var M2 = a2.barHelpers.drawGoalLine({ barXPosition: I2.barXPosition, barYPosition: I2.barYPosition, goalX: I2.goalX, goalY: I2.goalY, barHeight: k2, barWidth: A2 }); - M2 && w2.add(M2), l2 = I2.y, n2 = I2.x, f2.push(n2), b2.push(l2); - var T2 = a2.barHelpers.getPathFillColor(t3, r3, C2, v2); - m2 = a2.renderSeries({ realIndex: v2, pathFill: T2, j: C2, i: r3, groupIndex: p2, pathFrom: I2.pathFrom, pathTo: I2.pathTo, strokeWidth: L2, elSeries: m2, x: n2, y: l2, series: t3, barHeight: k2, barWidth: A2, elDataLabelsWrap: y2, elGoalsMarkers: w2, type: "bar", visibleSeries: 0 }); - } - s3.globals.seriesXvalues[v2] = f2, s3.globals.seriesYvalues[v2] = b2, a2.groupCtx.prevY.push(a2.groupCtx.yArrj), a2.groupCtx.prevYF.push(a2.groupCtx.yArrjF), a2.groupCtx.prevYVal.push(a2.groupCtx.yArrjVal), a2.groupCtx.prevX.push(a2.groupCtx.xArrj), a2.groupCtx.prevXF.push(a2.groupCtx.xArrjF), a2.groupCtx.prevXVal.push(a2.groupCtx.xArrjVal), o2.add(m2); - }, c2 = 0, d2 = 0; c2 < t3.length; c2++, d2++) - h2(c2, d2); - return o2; - } }, { key: "initialPositions", value: function(t3, e2, i3, a2, s3, r2) { - var o2, n2, l2, h2, c2 = this.w; - return this.isHorizontal ? (l2 = (l2 = a2 = c2.globals.gridHeight / c2.globals.dataPoints) * parseInt(c2.config.plotOptions.bar.barHeight, 10) / 100, -1 === String(c2.config.plotOptions.bar.barHeight).indexOf("%") && (l2 = parseInt(c2.config.plotOptions.bar.barHeight, 10)), r2 = this.baseLineInvertedY + c2.globals.padHorizontal + (this.isReversed ? c2.globals.gridWidth : 0) - (this.isReversed ? 2 * this.baseLineInvertedY : 0), e2 = (a2 - l2) / 2) : (h2 = i3 = c2.globals.gridWidth / c2.globals.dataPoints, h2 = c2.globals.isXNumeric && c2.globals.dataPoints > 1 ? (i3 = c2.globals.minXDiff / this.xRatio) * parseInt(this.barOptions.columnWidth, 10) / 100 : h2 * parseInt(c2.config.plotOptions.bar.columnWidth, 10) / 100, -1 === String(c2.config.plotOptions.bar.columnWidth).indexOf("%") && (h2 = parseInt(c2.config.plotOptions.bar.columnWidth, 10)), s3 = c2.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? c2.globals.gridHeight : 0) + (this.isReversed ? 2 * this.baseLineY[this.yaxisIndex] : 0), t3 = c2.globals.padHorizontal + (i3 - h2) / 2), { x: t3, y: e2, yDivision: a2, xDivision: i3, barHeight: null !== (o2 = c2.globals.seriesGroups) && void 0 !== o2 && o2.length ? l2 / c2.globals.seriesGroups.length : l2, barWidth: null !== (n2 = c2.globals.seriesGroups) && void 0 !== n2 && n2.length ? h2 / c2.globals.seriesGroups.length : h2, zeroH: s3, zeroW: r2 }; - } }, { key: "drawStackedBarPaths", value: function(t3) { - for (var e2, i3 = t3.indexes, a2 = t3.barHeight, s3 = t3.strokeWidth, r2 = t3.zeroW, o2 = t3.x, n2 = t3.y, l2 = t3.groupIndex, h2 = t3.seriesGroup, c2 = t3.yDivision, d2 = t3.elSeries, g2 = this.w, u2 = n2 + (-1 !== l2 ? l2 * a2 : 0), p2 = i3.i, f2 = i3.j, x2 = 0, b2 = 0; b2 < this.groupCtx.prevXF.length; b2++) - x2 += this.groupCtx.prevXF[b2][f2]; - var v2 = p2; - if (h2 && (v2 = h2.indexOf(g2.config.series[p2].name)), v2 > 0) { - var m2 = r2; - this.groupCtx.prevXVal[v2 - 1][f2] < 0 ? m2 = this.series[p2][f2] >= 0 ? this.groupCtx.prevX[v2 - 1][f2] + x2 - 2 * (this.isReversed ? x2 : 0) : this.groupCtx.prevX[v2 - 1][f2] : this.groupCtx.prevXVal[v2 - 1][f2] >= 0 && (m2 = this.series[p2][f2] >= 0 ? this.groupCtx.prevX[v2 - 1][f2] : this.groupCtx.prevX[v2 - 1][f2] - x2 + 2 * (this.isReversed ? x2 : 0)), e2 = m2; - } else - e2 = r2; - o2 = null === this.series[p2][f2] ? e2 : e2 + this.series[p2][f2] / this.invertedYRatio - 2 * (this.isReversed ? this.series[p2][f2] / this.invertedYRatio : 0); - var y2 = this.barHelpers.getBarpaths({ barYPosition: u2, barHeight: a2, x1: e2, x2: o2, strokeWidth: s3, series: this.series, realIndex: i3.realIndex, seriesGroup: h2, i: p2, j: f2, w: g2 }); - return this.barHelpers.barBackground({ j: f2, i: p2, y1: u2, y2: a2, elSeries: d2 }), n2 += c2, { pathTo: y2.pathTo, pathFrom: y2.pathFrom, goalX: this.barHelpers.getGoalValues("x", r2, null, p2, f2), barYPosition: u2, x: o2, y: n2 }; - } }, { key: "drawStackedColumnPaths", value: function(t3) { - var e2 = t3.indexes, i3 = t3.x, a2 = t3.y, s3 = t3.xDivision, r2 = t3.barWidth, o2 = t3.zeroH, n2 = t3.groupIndex, l2 = t3.seriesGroup, h2 = t3.elSeries, c2 = this.w, d2 = e2.i, g2 = e2.j, u2 = e2.bc; - if (c2.globals.isXNumeric) { - var p2 = c2.globals.seriesX[d2][g2]; - p2 || (p2 = 0), i3 = (p2 - c2.globals.minX) / this.xRatio - r2 / 2, c2.globals.seriesGroups.length && (i3 = (p2 - c2.globals.minX) / this.xRatio - r2 / 2 * c2.globals.seriesGroups.length); - } - for (var f2, x2 = i3 + (-1 !== n2 ? n2 * r2 : 0), b2 = 0, v2 = 0; v2 < this.groupCtx.prevYF.length; v2++) - b2 += isNaN(this.groupCtx.prevYF[v2][g2]) ? 0 : this.groupCtx.prevYF[v2][g2]; - var m2 = d2; - if (l2 && (m2 = l2.indexOf(c2.config.series[d2].name)), m2 > 0 && !c2.globals.isXNumeric || m2 > 0 && c2.globals.isXNumeric && c2.globals.seriesX[d2 - 1][g2] === c2.globals.seriesX[d2][g2]) { - var y2, w2, k2, A2 = Math.min(this.yRatio.length + 1, d2 + 1); - if (void 0 !== this.groupCtx.prevY[m2 - 1] && this.groupCtx.prevY[m2 - 1].length) - for (var S2 = 1; S2 < A2; S2++) { - var C2; - if (!isNaN(null === (C2 = this.groupCtx.prevY[m2 - S2]) || void 0 === C2 ? void 0 : C2[g2])) { - k2 = this.groupCtx.prevY[m2 - S2][g2]; - break; - } - } - for (var L2 = 1; L2 < A2; L2++) { - var P2, I2; - if ((null === (P2 = this.groupCtx.prevYVal[m2 - L2]) || void 0 === P2 ? void 0 : P2[g2]) < 0) { - w2 = this.series[d2][g2] >= 0 ? k2 - b2 + 2 * (this.isReversed ? b2 : 0) : k2; - break; - } - if ((null === (I2 = this.groupCtx.prevYVal[m2 - L2]) || void 0 === I2 ? void 0 : I2[g2]) >= 0) { - w2 = this.series[d2][g2] >= 0 ? k2 : k2 + b2 - 2 * (this.isReversed ? b2 : 0); - break; - } - } - void 0 === w2 && (w2 = c2.globals.gridHeight), f2 = null !== (y2 = this.groupCtx.prevYF[0]) && void 0 !== y2 && y2.every(function(t4) { - return 0 === t4; - }) && this.groupCtx.prevYF.slice(1, m2).every(function(t4) { - return t4.every(function(t5) { - return isNaN(t5); - }); - }) ? o2 : w2; - } else - f2 = o2; - a2 = this.series[d2][g2] ? f2 - this.series[d2][g2] / this.yRatio[this.yaxisIndex] + 2 * (this.isReversed ? this.series[d2][g2] / this.yRatio[this.yaxisIndex] : 0) : f2; - var M2 = this.barHelpers.getColumnPaths({ barXPosition: x2, barWidth: r2, y1: f2, y2: a2, yRatio: this.yRatio[this.yaxisIndex], strokeWidth: this.strokeWidth, series: this.series, seriesGroup: l2, realIndex: e2.realIndex, i: d2, j: g2, w: c2 }); - return this.barHelpers.barBackground({ bc: u2, j: g2, i: d2, x1: x2, x2: r2, elSeries: h2 }), i3 += s3, { pathTo: M2.pathTo, pathFrom: M2.pathFrom, goalY: this.barHelpers.getGoalValues("y", null, o2, d2, g2), barXPosition: x2, x: c2.globals.isXNumeric ? i3 - s3 : i3, y: a2 }; - } }]), s2; - }(); - var kt = function(t2) { - n(s2, yt); - var i2 = d(s2); - function s2() { - return a(this, s2), i2.apply(this, arguments); - } - return r(s2, [{ key: "draw", value: function(t3, i3, a2) { - var s3 = this, r2 = this.w, o2 = new m(this.ctx), n2 = r2.globals.comboCharts ? i3 : r2.config.chart.type, l2 = new R(this.ctx); - this.candlestickOptions = this.w.config.plotOptions.candlestick, this.boxOptions = this.w.config.plotOptions.boxPlot, this.isHorizontal = r2.config.plotOptions.bar.horizontal; - var h2 = new y(this.ctx, r2); - t3 = h2.getLogSeries(t3), this.series = t3, this.yRatio = h2.getLogYRatios(this.yRatio), this.barHelpers.initVariables(t3); - for (var c2 = o2.group({ class: "apexcharts-".concat(n2, "-series apexcharts-plot-series") }), d2 = function(i4) { - s3.isBoxPlot = "boxPlot" === r2.config.chart.type || "boxPlot" === r2.config.series[i4].type; - var n3, h3, d3, g3, u2 = void 0, p2 = void 0, f2 = [], b2 = [], v2 = r2.globals.comboCharts ? a2[i4] : i4, m2 = o2.group({ class: "apexcharts-series", seriesName: x.escapeString(r2.globals.seriesNames[v2]), rel: i4 + 1, "data:realIndex": v2 }); - s3.ctx.series.addCollapsedClassToSeries(m2, v2), t3[i4].length > 0 && (s3.visibleI = s3.visibleI + 1); - var y2, w2; - s3.yRatio.length > 1 && (s3.yaxisIndex = v2); - var k2 = s3.barHelpers.initialPositions(); - p2 = k2.y, y2 = k2.barHeight, h3 = k2.yDivision, g3 = k2.zeroW, u2 = k2.x, w2 = k2.barWidth, n3 = k2.xDivision, d3 = k2.zeroH, b2.push(u2 + w2 / 2); - for (var A2 = o2.group({ class: "apexcharts-datalabels", "data:realIndex": v2 }), S2 = function(a3) { - var o3 = s3.barHelpers.getStrokeWidth(i4, a3, v2), c3 = null, x2 = { indexes: { i: i4, j: a3, realIndex: v2 }, x: u2, y: p2, strokeWidth: o3, elSeries: m2 }; - c3 = s3.isHorizontal ? s3.drawHorizontalBoxPaths(e(e({}, x2), {}, { yDivision: h3, barHeight: y2, zeroW: g3 })) : s3.drawVerticalBoxPaths(e(e({}, x2), {}, { xDivision: n3, barWidth: w2, zeroH: d3 })), p2 = c3.y, u2 = c3.x, a3 > 0 && b2.push(u2 + w2 / 2), f2.push(p2), c3.pathTo.forEach(function(e2, n4) { - var h4 = !s3.isBoxPlot && s3.candlestickOptions.wick.useFillColor ? c3.color[n4] : r2.globals.stroke.colors[i4], d4 = l2.fillPath({ seriesNumber: v2, dataPointIndex: a3, color: c3.color[n4], value: t3[i4][a3] }); - s3.renderSeries({ realIndex: v2, pathFill: d4, lineFill: h4, j: a3, i: i4, pathFrom: c3.pathFrom, pathTo: e2, strokeWidth: o3, elSeries: m2, x: u2, y: p2, series: t3, barHeight: y2, barWidth: w2, elDataLabelsWrap: A2, visibleSeries: s3.visibleI, type: r2.config.chart.type }); - }); - }, C2 = 0; C2 < r2.globals.dataPoints; C2++) - S2(C2); - r2.globals.seriesXvalues[v2] = b2, r2.globals.seriesYvalues[v2] = f2, c2.add(m2); - }, g2 = 0; g2 < t3.length; g2++) - d2(g2); - return c2; - } }, { key: "drawVerticalBoxPaths", value: function(t3) { - var e2 = t3.indexes, i3 = t3.x; - t3.y; - var a2 = t3.xDivision, s3 = t3.barWidth, r2 = t3.zeroH, o2 = t3.strokeWidth, n2 = this.w, l2 = new m(this.ctx), h2 = e2.i, c2 = e2.j, d2 = true, g2 = n2.config.plotOptions.candlestick.colors.upward, u2 = n2.config.plotOptions.candlestick.colors.downward, p2 = ""; - this.isBoxPlot && (p2 = [this.boxOptions.colors.lower, this.boxOptions.colors.upper]); - var f2 = this.yRatio[this.yaxisIndex], x2 = e2.realIndex, b2 = this.getOHLCValue(x2, c2), v2 = r2, y2 = r2; - b2.o > b2.c && (d2 = false); - var w2 = Math.min(b2.o, b2.c), k2 = Math.max(b2.o, b2.c), A2 = b2.m; - n2.globals.isXNumeric && (i3 = (n2.globals.seriesX[x2][c2] - n2.globals.minX) / this.xRatio - s3 / 2); - var S2 = i3 + s3 * this.visibleI; - void 0 === this.series[h2][c2] || null === this.series[h2][c2] ? (w2 = r2, k2 = r2) : (w2 = r2 - w2 / f2, k2 = r2 - k2 / f2, v2 = r2 - b2.h / f2, y2 = r2 - b2.l / f2, A2 = r2 - b2.m / f2); - var C2 = l2.move(S2, r2), L2 = l2.move(S2 + s3 / 2, w2); - return n2.globals.previousPaths.length > 0 && (L2 = this.getPreviousPath(x2, c2, true)), C2 = this.isBoxPlot ? [l2.move(S2, w2) + l2.line(S2 + s3 / 2, w2) + l2.line(S2 + s3 / 2, v2) + l2.line(S2 + s3 / 4, v2) + l2.line(S2 + s3 - s3 / 4, v2) + l2.line(S2 + s3 / 2, v2) + l2.line(S2 + s3 / 2, w2) + l2.line(S2 + s3, w2) + l2.line(S2 + s3, A2) + l2.line(S2, A2) + l2.line(S2, w2 + o2 / 2), l2.move(S2, A2) + l2.line(S2 + s3, A2) + l2.line(S2 + s3, k2) + l2.line(S2 + s3 / 2, k2) + l2.line(S2 + s3 / 2, y2) + l2.line(S2 + s3 - s3 / 4, y2) + l2.line(S2 + s3 / 4, y2) + l2.line(S2 + s3 / 2, y2) + l2.line(S2 + s3 / 2, k2) + l2.line(S2, k2) + l2.line(S2, A2) + "z"] : [l2.move(S2, k2) + l2.line(S2 + s3 / 2, k2) + l2.line(S2 + s3 / 2, v2) + l2.line(S2 + s3 / 2, k2) + l2.line(S2 + s3, k2) + l2.line(S2 + s3, w2) + l2.line(S2 + s3 / 2, w2) + l2.line(S2 + s3 / 2, y2) + l2.line(S2 + s3 / 2, w2) + l2.line(S2, w2) + l2.line(S2, k2 - o2 / 2)], L2 += l2.move(S2, w2), n2.globals.isXNumeric || (i3 += a2), { pathTo: C2, pathFrom: L2, x: i3, y: k2, barXPosition: S2, color: this.isBoxPlot ? p2 : d2 ? [g2] : [u2] }; - } }, { key: "drawHorizontalBoxPaths", value: function(t3) { - var e2 = t3.indexes; - t3.x; - var i3 = t3.y, a2 = t3.yDivision, s3 = t3.barHeight, r2 = t3.zeroW, o2 = t3.strokeWidth, n2 = this.w, l2 = new m(this.ctx), h2 = e2.i, c2 = e2.j, d2 = this.boxOptions.colors.lower; - this.isBoxPlot && (d2 = [this.boxOptions.colors.lower, this.boxOptions.colors.upper]); - var g2 = this.invertedYRatio, u2 = e2.realIndex, p2 = this.getOHLCValue(u2, c2), f2 = r2, x2 = r2, b2 = Math.min(p2.o, p2.c), v2 = Math.max(p2.o, p2.c), y2 = p2.m; - n2.globals.isXNumeric && (i3 = (n2.globals.seriesX[u2][c2] - n2.globals.minX) / this.invertedXRatio - s3 / 2); - var w2 = i3 + s3 * this.visibleI; - void 0 === this.series[h2][c2] || null === this.series[h2][c2] ? (b2 = r2, v2 = r2) : (b2 = r2 + b2 / g2, v2 = r2 + v2 / g2, f2 = r2 + p2.h / g2, x2 = r2 + p2.l / g2, y2 = r2 + p2.m / g2); - var k2 = l2.move(r2, w2), A2 = l2.move(b2, w2 + s3 / 2); - return n2.globals.previousPaths.length > 0 && (A2 = this.getPreviousPath(u2, c2, true)), k2 = [l2.move(b2, w2) + l2.line(b2, w2 + s3 / 2) + l2.line(f2, w2 + s3 / 2) + l2.line(f2, w2 + s3 / 2 - s3 / 4) + l2.line(f2, w2 + s3 / 2 + s3 / 4) + l2.line(f2, w2 + s3 / 2) + l2.line(b2, w2 + s3 / 2) + l2.line(b2, w2 + s3) + l2.line(y2, w2 + s3) + l2.line(y2, w2) + l2.line(b2 + o2 / 2, w2), l2.move(y2, w2) + l2.line(y2, w2 + s3) + l2.line(v2, w2 + s3) + l2.line(v2, w2 + s3 / 2) + l2.line(x2, w2 + s3 / 2) + l2.line(x2, w2 + s3 - s3 / 4) + l2.line(x2, w2 + s3 / 4) + l2.line(x2, w2 + s3 / 2) + l2.line(v2, w2 + s3 / 2) + l2.line(v2, w2) + l2.line(y2, w2) + "z"], A2 += l2.move(b2, w2), n2.globals.isXNumeric || (i3 += a2), { pathTo: k2, pathFrom: A2, x: v2, y: i3, barYPosition: w2, color: d2 }; - } }, { key: "getOHLCValue", value: function(t3, e2) { - var i3 = this.w; - return { o: this.isBoxPlot ? i3.globals.seriesCandleH[t3][e2] : i3.globals.seriesCandleO[t3][e2], h: this.isBoxPlot ? i3.globals.seriesCandleO[t3][e2] : i3.globals.seriesCandleH[t3][e2], m: i3.globals.seriesCandleM[t3][e2], l: this.isBoxPlot ? i3.globals.seriesCandleC[t3][e2] : i3.globals.seriesCandleL[t3][e2], c: this.isBoxPlot ? i3.globals.seriesCandleL[t3][e2] : i3.globals.seriesCandleC[t3][e2] }; - } }]), s2; - }(); - var At = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "checkColorRange", value: function() { - var t3 = this.w, e2 = false, i2 = t3.config.plotOptions[t3.config.chart.type]; - return i2.colorScale.ranges.length > 0 && i2.colorScale.ranges.map(function(t4, i3) { - t4.from <= 0 && (e2 = true); - }), e2; - } }, { key: "getShadeColor", value: function(t3, e2, i2, a2) { - var s2 = this.w, r2 = 1, o2 = s2.config.plotOptions[t3].shadeIntensity, n2 = this.determineColor(t3, e2, i2); - s2.globals.hasNegs || a2 ? r2 = s2.config.plotOptions[t3].reverseNegativeShade ? n2.percent < 0 ? n2.percent / 100 * (1.25 * o2) : (1 - n2.percent / 100) * (1.25 * o2) : n2.percent <= 0 ? 1 - (1 + n2.percent / 100) * o2 : (1 - n2.percent / 100) * o2 : (r2 = 1 - n2.percent / 100, "treemap" === t3 && (r2 = (1 - n2.percent / 100) * (1.25 * o2))); - var l2 = n2.color, h2 = new x(); - return s2.config.plotOptions[t3].enableShades && (l2 = "dark" === this.w.config.theme.mode ? x.hexToRgba(h2.shadeColor(-1 * r2, n2.color), s2.config.fill.opacity) : x.hexToRgba(h2.shadeColor(r2, n2.color), s2.config.fill.opacity)), { color: l2, colorProps: n2 }; - } }, { key: "determineColor", value: function(t3, e2, i2) { - var a2 = this.w, s2 = a2.globals.series[e2][i2], r2 = a2.config.plotOptions[t3], o2 = r2.colorScale.inverse ? i2 : e2; - r2.distributed && "treemap" === a2.config.chart.type && (o2 = i2); - var n2 = a2.globals.colors[o2], l2 = null, h2 = Math.min.apply(Math, u(a2.globals.series[e2])), c2 = Math.max.apply(Math, u(a2.globals.series[e2])); - r2.distributed || "heatmap" !== t3 || (h2 = a2.globals.minY, c2 = a2.globals.maxY), void 0 !== r2.colorScale.min && (h2 = r2.colorScale.min < a2.globals.minY ? r2.colorScale.min : a2.globals.minY, c2 = r2.colorScale.max > a2.globals.maxY ? r2.colorScale.max : a2.globals.maxY); - var d2 = Math.abs(c2) + Math.abs(h2), g2 = 100 * s2 / (0 === d2 ? d2 - 1e-6 : d2); - r2.colorScale.ranges.length > 0 && r2.colorScale.ranges.map(function(t4, e3) { - if (s2 >= t4.from && s2 <= t4.to) { - n2 = t4.color, l2 = t4.foreColor ? t4.foreColor : null, h2 = t4.from, c2 = t4.to; - var i3 = Math.abs(c2) + Math.abs(h2); - g2 = 100 * s2 / (0 === i3 ? i3 - 1e-6 : i3); - } - }); - return { color: n2, foreColor: l2, percent: g2 }; - } }, { key: "calculateDataLabels", value: function(t3) { - var e2 = t3.text, i2 = t3.x, a2 = t3.y, s2 = t3.i, r2 = t3.j, o2 = t3.colorProps, n2 = t3.fontSize, l2 = this.w.config.dataLabels, h2 = new m(this.ctx), c2 = new O(this.ctx), d2 = null; - if (l2.enabled) { - d2 = h2.group({ class: "apexcharts-data-labels" }); - var g2 = l2.offsetX, u2 = l2.offsetY, p2 = i2 + g2, f2 = a2 + parseFloat(l2.style.fontSize) / 3 + u2; - c2.plotDataLabelsText({ x: p2, y: f2, text: e2, i: s2, j: r2, color: o2.foreColor, parent: d2, fontSize: n2, dataLabelsConfig: l2 }); - } - return d2; - } }, { key: "addListeners", value: function(t3) { - var e2 = new m(this.ctx); - t3.node.addEventListener("mouseenter", e2.pathMouseEnter.bind(this, t3)), t3.node.addEventListener("mouseleave", e2.pathMouseLeave.bind(this, t3)), t3.node.addEventListener("mousedown", e2.pathMouseDown.bind(this, t3)); - } }]), t2; - }(); - var St = function() { - function t2(e2, i2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.xRatio = i2.xRatio, this.yRatio = i2.yRatio, this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation, this.helpers = new At(e2), this.rectRadius = this.w.config.plotOptions.heatmap.radius, this.strokeWidth = this.w.config.stroke.show ? this.w.config.stroke.width : 0; - } - return r(t2, [{ key: "draw", value: function(t3) { - var e2 = this.w, i2 = new m(this.ctx), a2 = i2.group({ class: "apexcharts-heatmap" }); - a2.attr("clip-path", "url(#gridRectMask".concat(e2.globals.cuid, ")")); - var s2 = e2.globals.gridWidth / e2.globals.dataPoints, r2 = e2.globals.gridHeight / e2.globals.series.length, o2 = 0, n2 = false; - this.negRange = this.helpers.checkColorRange(); - var l2 = t3.slice(); - e2.config.yaxis[0].reversed && (n2 = true, l2.reverse()); - for (var h2 = n2 ? 0 : l2.length - 1; n2 ? h2 < l2.length : h2 >= 0; n2 ? h2++ : h2--) { - var c2 = i2.group({ class: "apexcharts-series apexcharts-heatmap-series", seriesName: x.escapeString(e2.globals.seriesNames[h2]), rel: h2 + 1, "data:realIndex": h2 }); - if (this.ctx.series.addCollapsedClassToSeries(c2, h2), e2.config.chart.dropShadow.enabled) { - var d2 = e2.config.chart.dropShadow; - new v(this.ctx).dropShadow(c2, d2, h2); - } - for (var g2 = 0, u2 = e2.config.plotOptions.heatmap.shadeIntensity, p2 = 0; p2 < l2[h2].length; p2++) { - var f2 = this.helpers.getShadeColor(e2.config.chart.type, h2, p2, this.negRange), b2 = f2.color, y2 = f2.colorProps; - if ("image" === e2.config.fill.type) - b2 = new R(this.ctx).fillPath({ seriesNumber: h2, dataPointIndex: p2, opacity: e2.globals.hasNegs ? y2.percent < 0 ? 1 - (1 + y2.percent / 100) : u2 + y2.percent / 100 : y2.percent / 100, patternID: x.randomId(), width: e2.config.fill.image.width ? e2.config.fill.image.width : s2, height: e2.config.fill.image.height ? e2.config.fill.image.height : r2 }); - var w2 = this.rectRadius, k2 = i2.drawRect(g2, o2, s2, r2, w2); - if (k2.attr({ cx: g2, cy: o2 }), k2.node.classList.add("apexcharts-heatmap-rect"), c2.add(k2), k2.attr({ fill: b2, i: h2, index: h2, j: p2, val: l2[h2][p2], "stroke-width": this.strokeWidth, stroke: e2.config.plotOptions.heatmap.useFillColorAsStroke ? b2 : e2.globals.stroke.colors[0], color: b2 }), this.helpers.addListeners(k2), e2.config.chart.animations.enabled && !e2.globals.dataChanged) { - var A2 = 1; - e2.globals.resized || (A2 = e2.config.chart.animations.speed), this.animateHeatMap(k2, g2, o2, s2, r2, A2); - } - if (e2.globals.dataChanged) { - var S2 = 1; - if (this.dynamicAnim.enabled && e2.globals.shouldAnimate) { - S2 = this.dynamicAnim.speed; - var C2 = e2.globals.previousPaths[h2] && e2.globals.previousPaths[h2][p2] && e2.globals.previousPaths[h2][p2].color; - C2 || (C2 = "rgba(255, 255, 255, 0)"), this.animateHeatColor(k2, x.isColorHex(C2) ? C2 : x.rgb2hex(C2), x.isColorHex(b2) ? b2 : x.rgb2hex(b2), S2); - } - } - var L2 = (0, e2.config.dataLabels.formatter)(e2.globals.series[h2][p2], { value: e2.globals.series[h2][p2], seriesIndex: h2, dataPointIndex: p2, w: e2 }), P2 = this.helpers.calculateDataLabels({ text: L2, x: g2 + s2 / 2, y: o2 + r2 / 2, i: h2, j: p2, colorProps: y2, series: l2 }); - null !== P2 && c2.add(P2), g2 += s2; - } - o2 += r2, a2.add(c2); - } - var I2 = e2.globals.yAxisScale[0].result.slice(); - return e2.config.yaxis[0].reversed ? I2.unshift("") : I2.push(""), e2.globals.yAxisScale[0].result = I2, a2; - } }, { key: "animateHeatMap", value: function(t3, e2, i2, a2, s2, r2) { - var o2 = new b(this.ctx); - o2.animateRect(t3, { x: e2 + a2 / 2, y: i2 + s2 / 2, width: 0, height: 0 }, { x: e2, y: i2, width: a2, height: s2 }, r2, function() { - o2.animationCompleted(t3); - }); - } }, { key: "animateHeatColor", value: function(t3, e2, i2, a2) { - t3.attr({ fill: e2 }).animate(a2).attr({ fill: i2 }); - } }]), t2; - }(); - var Ct = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "drawYAxisTexts", value: function(t3, e2, i2, a2) { - var s2 = this.w, r2 = s2.config.yaxis[0], o2 = s2.globals.yLabelFormatters[0]; - return new m(this.ctx).drawText({ x: t3 + r2.labels.offsetX, y: e2 + r2.labels.offsetY, text: o2(a2, i2), textAnchor: "middle", fontSize: r2.labels.style.fontSize, fontFamily: r2.labels.style.fontFamily, foreColor: Array.isArray(r2.labels.style.colors) ? r2.labels.style.colors[i2] : r2.labels.style.colors }); - } }]), t2; - }(); - var Lt = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - var i2 = this.w; - this.chartType = this.w.config.chart.type, this.initialAnim = this.w.config.chart.animations.enabled, this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled, this.animBeginArr = [0], this.animDur = 0, this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels, this.lineColorArr = void 0 !== i2.globals.stroke.colors ? i2.globals.stroke.colors : i2.globals.colors, this.defaultSize = Math.min(i2.globals.gridWidth, i2.globals.gridHeight), this.centerY = this.defaultSize / 2, this.centerX = i2.globals.gridWidth / 2, "radialBar" === i2.config.chart.type ? this.fullAngle = 360 : this.fullAngle = Math.abs(i2.config.plotOptions.pie.endAngle - i2.config.plotOptions.pie.startAngle), this.initialAngle = i2.config.plotOptions.pie.startAngle % this.fullAngle, i2.globals.radialSize = this.defaultSize / 2.05 - i2.config.stroke.width - (i2.config.chart.sparkline.enabled ? 0 : i2.config.chart.dropShadow.blur), this.donutSize = i2.globals.radialSize * parseInt(i2.config.plotOptions.pie.donut.size, 10) / 100, this.maxY = 0, this.sliceLabels = [], this.sliceSizes = [], this.prevSectorAngleArr = []; - } - return r(t2, [{ key: "draw", value: function(t3) { - var e2 = this, i2 = this.w, a2 = new m(this.ctx); - if (this.ret = a2.group({ class: "apexcharts-pie" }), i2.globals.noData) - return this.ret; - for (var s2 = 0, r2 = 0; r2 < t3.length; r2++) - s2 += x.negToZero(t3[r2]); - var o2 = [], n2 = a2.group(); - 0 === s2 && (s2 = 1e-5), t3.forEach(function(t4) { - e2.maxY = Math.max(e2.maxY, t4); - }), i2.config.yaxis[0].max && (this.maxY = i2.config.yaxis[0].max), "back" === i2.config.grid.position && "polarArea" === this.chartType && this.drawPolarElements(this.ret); - for (var l2 = 0; l2 < t3.length; l2++) { - var h2 = this.fullAngle * x.negToZero(t3[l2]) / s2; - o2.push(h2), "polarArea" === this.chartType ? (o2[l2] = this.fullAngle / t3.length, this.sliceSizes.push(i2.globals.radialSize * t3[l2] / this.maxY)) : this.sliceSizes.push(i2.globals.radialSize); - } - if (i2.globals.dataChanged) { - for (var c2, d2 = 0, g2 = 0; g2 < i2.globals.previousPaths.length; g2++) - d2 += x.negToZero(i2.globals.previousPaths[g2]); - for (var u2 = 0; u2 < i2.globals.previousPaths.length; u2++) - c2 = this.fullAngle * x.negToZero(i2.globals.previousPaths[u2]) / d2, this.prevSectorAngleArr.push(c2); - } - this.donutSize < 0 && (this.donutSize = 0); - var p2 = i2.config.plotOptions.pie.customScale, f2 = i2.globals.gridWidth / 2, b2 = i2.globals.gridHeight / 2, v2 = f2 - i2.globals.gridWidth / 2 * p2, y2 = b2 - i2.globals.gridHeight / 2 * p2; - if ("donut" === this.chartType) { - var w2 = a2.drawCircle(this.donutSize); - w2.attr({ cx: this.centerX, cy: this.centerY, fill: i2.config.plotOptions.pie.donut.background ? i2.config.plotOptions.pie.donut.background : "transparent" }), n2.add(w2); - } - var k2 = this.drawArcs(o2, t3); - if (this.sliceLabels.forEach(function(t4) { - k2.add(t4); - }), n2.attr({ transform: "translate(".concat(v2, ", ").concat(y2, ") scale(").concat(p2, ")") }), n2.add(k2), this.ret.add(n2), this.donutDataLabels.show) { - var A2 = this.renderInnerDataLabels(this.donutDataLabels, { hollowSize: this.donutSize, centerX: this.centerX, centerY: this.centerY, opacity: this.donutDataLabels.show, translateX: v2, translateY: y2 }); - this.ret.add(A2); - } - return "front" === i2.config.grid.position && "polarArea" === this.chartType && this.drawPolarElements(this.ret), this.ret; - } }, { key: "drawArcs", value: function(t3, e2) { - var i2 = this.w, a2 = new v(this.ctx), s2 = new m(this.ctx), r2 = new R(this.ctx), o2 = s2.group({ class: "apexcharts-slices" }), n2 = this.initialAngle, l2 = this.initialAngle, h2 = this.initialAngle, c2 = this.initialAngle; - this.strokeWidth = i2.config.stroke.show ? i2.config.stroke.width : 0; - for (var d2 = 0; d2 < t3.length; d2++) { - var g2 = s2.group({ class: "apexcharts-series apexcharts-pie-series", seriesName: x.escapeString(i2.globals.seriesNames[d2]), rel: d2 + 1, "data:realIndex": d2 }); - o2.add(g2), l2 = c2, h2 = (n2 = h2) + t3[d2], c2 = l2 + this.prevSectorAngleArr[d2]; - var u2 = h2 < n2 ? this.fullAngle + h2 - n2 : h2 - n2, p2 = r2.fillPath({ seriesNumber: d2, size: this.sliceSizes[d2], value: e2[d2] }), f2 = this.getChangedPath(l2, c2), b2 = s2.drawPath({ d: f2, stroke: Array.isArray(this.lineColorArr) ? this.lineColorArr[d2] : this.lineColorArr, strokeWidth: 0, fill: p2, fillOpacity: i2.config.fill.opacity, classes: "apexcharts-pie-area apexcharts-".concat(this.chartType.toLowerCase(), "-slice-").concat(d2) }); - if (b2.attr({ index: 0, j: d2 }), a2.setSelectionFilter(b2, 0, d2), i2.config.chart.dropShadow.enabled) { - var y2 = i2.config.chart.dropShadow; - a2.dropShadow(b2, y2, d2); - } - this.addListeners(b2, this.donutDataLabels), m.setAttrs(b2.node, { "data:angle": u2, "data:startAngle": n2, "data:strokeWidth": this.strokeWidth, "data:value": e2[d2] }); - var w2 = { x: 0, y: 0 }; - "pie" === this.chartType || "polarArea" === this.chartType ? w2 = x.polarToCartesian(this.centerX, this.centerY, i2.globals.radialSize / 1.25 + i2.config.plotOptions.pie.dataLabels.offset, (n2 + u2 / 2) % this.fullAngle) : "donut" === this.chartType && (w2 = x.polarToCartesian(this.centerX, this.centerY, (i2.globals.radialSize + this.donutSize) / 2 + i2.config.plotOptions.pie.dataLabels.offset, (n2 + u2 / 2) % this.fullAngle)), g2.add(b2); - var k2 = 0; - if (!this.initialAnim || i2.globals.resized || i2.globals.dataChanged ? this.animBeginArr.push(0) : (0 === (k2 = u2 / this.fullAngle * i2.config.chart.animations.speed) && (k2 = 1), this.animDur = k2 + this.animDur, this.animBeginArr.push(this.animDur)), this.dynamicAnim && i2.globals.dataChanged ? this.animatePaths(b2, { size: this.sliceSizes[d2], endAngle: h2, startAngle: n2, prevStartAngle: l2, prevEndAngle: c2, animateStartingPos: true, i: d2, animBeginArr: this.animBeginArr, shouldSetPrevPaths: true, dur: i2.config.chart.animations.dynamicAnimation.speed }) : this.animatePaths(b2, { size: this.sliceSizes[d2], endAngle: h2, startAngle: n2, i: d2, totalItems: t3.length - 1, animBeginArr: this.animBeginArr, dur: k2 }), i2.config.plotOptions.pie.expandOnClick && "polarArea" !== this.chartType && b2.click(this.pieClicked.bind(this, d2)), void 0 !== i2.globals.selectedDataPoints[0] && i2.globals.selectedDataPoints[0].indexOf(d2) > -1 && this.pieClicked(d2), i2.config.dataLabels.enabled) { - var A2 = w2.x, S2 = w2.y, C2 = 100 * u2 / this.fullAngle + "%"; - if (0 !== u2 && i2.config.plotOptions.pie.dataLabels.minAngleToShowLabel < t3[d2]) { - var L2 = i2.config.dataLabels.formatter; - void 0 !== L2 && (C2 = L2(i2.globals.seriesPercent[d2][0], { seriesIndex: d2, w: i2 })); - var P2 = i2.globals.dataLabels.style.colors[d2], I2 = s2.group({ class: "apexcharts-datalabels" }), M2 = s2.drawText({ x: A2, y: S2, text: C2, textAnchor: "middle", fontSize: i2.config.dataLabels.style.fontSize, fontFamily: i2.config.dataLabels.style.fontFamily, fontWeight: i2.config.dataLabels.style.fontWeight, foreColor: P2 }); - if (I2.add(M2), i2.config.dataLabels.dropShadow.enabled) { - var T2 = i2.config.dataLabels.dropShadow; - a2.dropShadow(M2, T2); - } - M2.node.classList.add("apexcharts-pie-label"), i2.config.chart.animations.animate && false === i2.globals.resized && (M2.node.classList.add("apexcharts-pie-label-delay"), M2.node.style.animationDelay = i2.config.chart.animations.speed / 940 + "s"), this.sliceLabels.push(I2); - } - } - } - return o2; - } }, { key: "addListeners", value: function(t3, e2) { - var i2 = new m(this.ctx); - t3.node.addEventListener("mouseenter", i2.pathMouseEnter.bind(this, t3)), t3.node.addEventListener("mouseleave", i2.pathMouseLeave.bind(this, t3)), t3.node.addEventListener("mouseleave", this.revertDataLabelsInner.bind(this, t3.node, e2)), t3.node.addEventListener("mousedown", i2.pathMouseDown.bind(this, t3)), this.donutDataLabels.total.showAlways || (t3.node.addEventListener("mouseenter", this.printDataLabelsInner.bind(this, t3.node, e2)), t3.node.addEventListener("mousedown", this.printDataLabelsInner.bind(this, t3.node, e2))); - } }, { key: "animatePaths", value: function(t3, e2) { - var i2 = this.w, a2 = e2.endAngle < e2.startAngle ? this.fullAngle + e2.endAngle - e2.startAngle : e2.endAngle - e2.startAngle, s2 = a2, r2 = e2.startAngle, o2 = e2.startAngle; - void 0 !== e2.prevStartAngle && void 0 !== e2.prevEndAngle && (r2 = e2.prevEndAngle, s2 = e2.prevEndAngle < e2.prevStartAngle ? this.fullAngle + e2.prevEndAngle - e2.prevStartAngle : e2.prevEndAngle - e2.prevStartAngle), e2.i === i2.config.series.length - 1 && (a2 + o2 > this.fullAngle ? e2.endAngle = e2.endAngle - (a2 + o2) : a2 + o2 < this.fullAngle && (e2.endAngle = e2.endAngle + (this.fullAngle - (a2 + o2)))), a2 === this.fullAngle && (a2 = this.fullAngle - 0.01), this.animateArc(t3, r2, o2, a2, s2, e2); - } }, { key: "animateArc", value: function(t3, e2, i2, a2, s2, r2) { - var o2, n2 = this, l2 = this.w, h2 = new b(this.ctx), c2 = r2.size; - (isNaN(e2) || isNaN(s2)) && (e2 = i2, s2 = a2, r2.dur = 0); - var d2 = a2, g2 = i2, u2 = e2 < i2 ? this.fullAngle + e2 - i2 : e2 - i2; - l2.globals.dataChanged && r2.shouldSetPrevPaths && r2.prevEndAngle && (o2 = n2.getPiePath({ me: n2, startAngle: r2.prevStartAngle, angle: r2.prevEndAngle < r2.prevStartAngle ? this.fullAngle + r2.prevEndAngle - r2.prevStartAngle : r2.prevEndAngle - r2.prevStartAngle, size: c2 }), t3.attr({ d: o2 })), 0 !== r2.dur ? t3.animate(r2.dur, l2.globals.easing, r2.animBeginArr[r2.i]).afterAll(function() { - "pie" !== n2.chartType && "donut" !== n2.chartType && "polarArea" !== n2.chartType || this.animate(l2.config.chart.animations.dynamicAnimation.speed).attr({ "stroke-width": n2.strokeWidth }), r2.i === l2.config.series.length - 1 && h2.animationCompleted(t3); - }).during(function(l3) { - d2 = u2 + (a2 - u2) * l3, r2.animateStartingPos && (d2 = s2 + (a2 - s2) * l3, g2 = e2 - s2 + (i2 - (e2 - s2)) * l3), o2 = n2.getPiePath({ me: n2, startAngle: g2, angle: d2, size: c2 }), t3.node.setAttribute("data:pathOrig", o2), t3.attr({ d: o2 }); - }) : (o2 = n2.getPiePath({ me: n2, startAngle: g2, angle: a2, size: c2 }), r2.isTrack || (l2.globals.animationEnded = true), t3.node.setAttribute("data:pathOrig", o2), t3.attr({ d: o2, "stroke-width": n2.strokeWidth })); - } }, { key: "pieClicked", value: function(t3) { - var e2, i2 = this.w, a2 = this, s2 = a2.sliceSizes[t3] + (i2.config.plotOptions.pie.expandOnClick ? 4 : 0), r2 = i2.globals.dom.Paper.select(".apexcharts-".concat(a2.chartType.toLowerCase(), "-slice-").concat(t3)).members[0]; - if ("true" !== r2.attr("data:pieClicked")) { - var o2 = i2.globals.dom.baseEl.getElementsByClassName("apexcharts-pie-area"); - Array.prototype.forEach.call(o2, function(t4) { - t4.setAttribute("data:pieClicked", "false"); - var e3 = t4.getAttribute("data:pathOrig"); - e3 && t4.setAttribute("d", e3); - }), r2.attr("data:pieClicked", "true"); - var n2 = parseInt(r2.attr("data:startAngle"), 10), l2 = parseInt(r2.attr("data:angle"), 10); - e2 = a2.getPiePath({ me: a2, startAngle: n2, angle: l2, size: s2 }), 360 !== l2 && r2.plot(e2); - } else { - r2.attr({ "data:pieClicked": "false" }), this.revertDataLabelsInner(r2.node, this.donutDataLabels); - var h2 = r2.attr("data:pathOrig"); - r2.attr({ d: h2 }); - } - } }, { key: "getChangedPath", value: function(t3, e2) { - var i2 = ""; - return this.dynamicAnim && this.w.globals.dataChanged && (i2 = this.getPiePath({ me: this, startAngle: t3, angle: e2 - t3, size: this.size })), i2; - } }, { key: "getPiePath", value: function(t3) { - var e2 = t3.me, i2 = t3.startAngle, a2 = t3.angle, s2 = t3.size, r2 = i2, o2 = Math.PI * (r2 - 90) / 180, n2 = a2 + i2; - Math.ceil(n2) >= this.fullAngle + this.w.config.plotOptions.pie.startAngle % this.fullAngle && (n2 = this.fullAngle + this.w.config.plotOptions.pie.startAngle % this.fullAngle - 0.01), Math.ceil(n2) > this.fullAngle && (n2 -= this.fullAngle); - var l2 = Math.PI * (n2 - 90) / 180, h2 = e2.centerX + s2 * Math.cos(o2), c2 = e2.centerY + s2 * Math.sin(o2), d2 = e2.centerX + s2 * Math.cos(l2), g2 = e2.centerY + s2 * Math.sin(l2), u2 = x.polarToCartesian(e2.centerX, e2.centerY, e2.donutSize, n2), p2 = x.polarToCartesian(e2.centerX, e2.centerY, e2.donutSize, r2), f2 = a2 > 180 ? 1 : 0, b2 = ["M", h2, c2, "A", s2, s2, 0, f2, 1, d2, g2]; - return "donut" === e2.chartType ? [].concat(b2, ["L", u2.x, u2.y, "A", e2.donutSize, e2.donutSize, 0, f2, 0, p2.x, p2.y, "L", h2, c2, "z"]).join(" ") : "pie" === e2.chartType || "polarArea" === e2.chartType ? [].concat(b2, ["L", e2.centerX, e2.centerY, "L", h2, c2]).join(" ") : [].concat(b2).join(" "); - } }, { key: "drawPolarElements", value: function(t3) { - var e2 = this.w, i2 = new _(this.ctx), a2 = new m(this.ctx), s2 = new Ct(this.ctx), r2 = a2.group(), o2 = a2.group(), n2 = i2.niceScale(0, Math.ceil(this.maxY), e2.config.yaxis[0].tickAmount, 0, true), l2 = n2.result.reverse(), h2 = n2.result.length; - this.maxY = n2.niceMax; - for (var c2 = e2.globals.radialSize, d2 = c2 / (h2 - 1), g2 = 0; g2 < h2 - 1; g2++) { - var u2 = a2.drawCircle(c2); - if (u2.attr({ cx: this.centerX, cy: this.centerY, fill: "none", "stroke-width": e2.config.plotOptions.polarArea.rings.strokeWidth, stroke: e2.config.plotOptions.polarArea.rings.strokeColor }), e2.config.yaxis[0].show) { - var p2 = s2.drawYAxisTexts(this.centerX, this.centerY - c2 + parseInt(e2.config.yaxis[0].labels.style.fontSize, 10) / 2, g2, l2[g2]); - o2.add(p2); - } - r2.add(u2), c2 -= d2; - } - this.drawSpokes(t3), t3.add(r2), t3.add(o2); - } }, { key: "renderInnerDataLabels", value: function(t3, e2) { - var i2 = this.w, a2 = new m(this.ctx), s2 = a2.group({ class: "apexcharts-datalabels-group", transform: "translate(".concat(e2.translateX ? e2.translateX : 0, ", ").concat(e2.translateY ? e2.translateY : 0, ") scale(").concat(i2.config.plotOptions.pie.customScale, ")") }), r2 = t3.total.show; - s2.node.style.opacity = e2.opacity; - var o2, n2, l2 = e2.centerX, h2 = e2.centerY; - o2 = void 0 === t3.name.color ? i2.globals.colors[0] : t3.name.color; - var c2 = t3.name.fontSize, d2 = t3.name.fontFamily, g2 = t3.name.fontWeight; - n2 = void 0 === t3.value.color ? i2.config.chart.foreColor : t3.value.color; - var u2 = t3.value.formatter, p2 = "", f2 = ""; - if (r2 ? (o2 = t3.total.color, c2 = t3.total.fontSize, d2 = t3.total.fontFamily, g2 = t3.total.fontWeight, f2 = t3.total.label, p2 = t3.total.formatter(i2)) : 1 === i2.globals.series.length && (p2 = u2(i2.globals.series[0], i2), f2 = i2.globals.seriesNames[0]), f2 && (f2 = t3.name.formatter(f2, t3.total.show, i2)), t3.name.show) { - var x2 = a2.drawText({ x: l2, y: h2 + parseFloat(t3.name.offsetY), text: f2, textAnchor: "middle", foreColor: o2, fontSize: c2, fontWeight: g2, fontFamily: d2 }); - x2.node.classList.add("apexcharts-datalabel-label"), s2.add(x2); - } - if (t3.value.show) { - var b2 = t3.name.show ? parseFloat(t3.value.offsetY) + 16 : t3.value.offsetY, v2 = a2.drawText({ x: l2, y: h2 + b2, text: p2, textAnchor: "middle", foreColor: n2, fontWeight: t3.value.fontWeight, fontSize: t3.value.fontSize, fontFamily: t3.value.fontFamily }); - v2.node.classList.add("apexcharts-datalabel-value"), s2.add(v2); - } - return s2; - } }, { key: "printInnerLabels", value: function(t3, e2, i2, a2) { - var s2, r2 = this.w; - a2 ? s2 = void 0 === t3.name.color ? r2.globals.colors[parseInt(a2.parentNode.getAttribute("rel"), 10) - 1] : t3.name.color : r2.globals.series.length > 1 && t3.total.show && (s2 = t3.total.color); - var o2 = r2.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"), n2 = r2.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value"); - i2 = (0, t3.value.formatter)(i2, r2), a2 || "function" != typeof t3.total.formatter || (i2 = t3.total.formatter(r2)); - var l2 = e2 === t3.total.label; - e2 = t3.name.formatter(e2, l2, r2), null !== o2 && (o2.textContent = e2), null !== n2 && (n2.textContent = i2), null !== o2 && (o2.style.fill = s2); - } }, { key: "printDataLabelsInner", value: function(t3, e2) { - var i2 = this.w, a2 = t3.getAttribute("data:value"), s2 = i2.globals.seriesNames[parseInt(t3.parentNode.getAttribute("rel"), 10) - 1]; - i2.globals.series.length > 1 && this.printInnerLabels(e2, s2, a2, t3); - var r2 = i2.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group"); - null !== r2 && (r2.style.opacity = 1); - } }, { key: "drawSpokes", value: function(t3) { - var e2 = this, i2 = this.w, a2 = new m(this.ctx), s2 = i2.config.plotOptions.polarArea.spokes; - if (0 !== s2.strokeWidth) { - for (var r2 = [], o2 = 360 / i2.globals.series.length, n2 = 0; n2 < i2.globals.series.length; n2++) - r2.push(x.polarToCartesian(this.centerX, this.centerY, i2.globals.radialSize, i2.config.plotOptions.pie.startAngle + o2 * n2)); - r2.forEach(function(i3, r3) { - var o3 = a2.drawLine(i3.x, i3.y, e2.centerX, e2.centerY, Array.isArray(s2.connectorColors) ? s2.connectorColors[r3] : s2.connectorColors); - t3.add(o3); - }); - } - } }, { key: "revertDataLabelsInner", value: function(t3, e2, i2) { - var a2 = this, s2 = this.w, r2 = s2.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group"), o2 = false, n2 = s2.globals.dom.baseEl.getElementsByClassName("apexcharts-pie-area"), l2 = function(t4) { - var i3 = t4.makeSliceOut, s3 = t4.printLabel; - Array.prototype.forEach.call(n2, function(t5) { - "true" === t5.getAttribute("data:pieClicked") && (i3 && (o2 = true), s3 && a2.printDataLabelsInner(t5, e2)); - }); - }; - if (l2({ makeSliceOut: true, printLabel: false }), e2.total.show && s2.globals.series.length > 1) - o2 && !e2.total.showAlways ? l2({ makeSliceOut: false, printLabel: true }) : this.printInnerLabels(e2, e2.total.label, e2.total.formatter(s2)); - else if (l2({ makeSliceOut: false, printLabel: true }), !o2) - if (s2.globals.selectedDataPoints.length && s2.globals.series.length > 1) - if (s2.globals.selectedDataPoints[0].length > 0) { - var h2 = s2.globals.selectedDataPoints[0], c2 = s2.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(), "-slice-").concat(h2)); - this.printDataLabelsInner(c2, e2); - } else - r2 && s2.globals.selectedDataPoints.length && 0 === s2.globals.selectedDataPoints[0].length && (r2.style.opacity = 0); - else - r2 && s2.globals.series.length > 1 && (r2.style.opacity = 0); - } }]), t2; - }(); - var Pt = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.chartType = this.w.config.chart.type, this.initialAnim = this.w.config.chart.animations.enabled, this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled, this.animDur = 0; - var i2 = this.w; - this.graphics = new m(this.ctx), this.lineColorArr = void 0 !== i2.globals.stroke.colors ? i2.globals.stroke.colors : i2.globals.colors, this.defaultSize = i2.globals.svgHeight < i2.globals.svgWidth ? i2.globals.gridHeight + 1.5 * i2.globals.goldenPadding : i2.globals.gridWidth, this.isLog = i2.config.yaxis[0].logarithmic, this.coreUtils = new y(this.ctx), this.maxValue = this.isLog ? this.coreUtils.getLogVal(i2.globals.maxY, 0) : i2.globals.maxY, this.minValue = this.isLog ? this.coreUtils.getLogVal(this.w.globals.minY, 0) : i2.globals.minY, this.polygons = i2.config.plotOptions.radar.polygons, this.strokeWidth = i2.config.stroke.show ? i2.config.stroke.width : 0, this.size = this.defaultSize / 2.1 - this.strokeWidth - i2.config.chart.dropShadow.blur, i2.config.xaxis.labels.show && (this.size = this.size - i2.globals.xAxisLabelsWidth / 1.75), void 0 !== i2.config.plotOptions.radar.size && (this.size = i2.config.plotOptions.radar.size), this.dataRadiusOfPercent = [], this.dataRadius = [], this.angleArr = [], this.yaxisLabelsTextsPos = []; - } - return r(t2, [{ key: "draw", value: function(t3) { - var i2 = this, a2 = this.w, s2 = new R(this.ctx), r2 = [], o2 = new O(this.ctx); - t3.length && (this.dataPointsLen = t3[a2.globals.maxValsInArrayIndex].length), this.disAngle = 2 * Math.PI / this.dataPointsLen; - var n2 = a2.globals.gridWidth / 2, l2 = a2.globals.gridHeight / 2, h2 = n2 + a2.config.plotOptions.radar.offsetX, c2 = l2 + a2.config.plotOptions.radar.offsetY, d2 = this.graphics.group({ class: "apexcharts-radar-series apexcharts-plot-series", transform: "translate(".concat(h2 || 0, ", ").concat(c2 || 0, ")") }), g2 = [], u2 = null, p2 = null; - if (this.yaxisLabels = this.graphics.group({ class: "apexcharts-yaxis" }), t3.forEach(function(t4, n3) { - var l3 = t4.length === a2.globals.dataPoints, h3 = i2.graphics.group().attr({ class: "apexcharts-series", "data:longestSeries": l3, seriesName: x.escapeString(a2.globals.seriesNames[n3]), rel: n3 + 1, "data:realIndex": n3 }); - i2.dataRadiusOfPercent[n3] = [], i2.dataRadius[n3] = [], i2.angleArr[n3] = [], t4.forEach(function(t5, e2) { - var a3 = Math.abs(i2.maxValue - i2.minValue); - t5 += Math.abs(i2.minValue), i2.isLog && (t5 = i2.coreUtils.getLogVal(t5, 0)), i2.dataRadiusOfPercent[n3][e2] = t5 / a3, i2.dataRadius[n3][e2] = i2.dataRadiusOfPercent[n3][e2] * i2.size, i2.angleArr[n3][e2] = e2 * i2.disAngle; - }), g2 = i2.getDataPointsPos(i2.dataRadius[n3], i2.angleArr[n3]); - var c3 = i2.createPaths(g2, { x: 0, y: 0 }); - u2 = i2.graphics.group({ class: "apexcharts-series-markers-wrap apexcharts-element-hidden" }), p2 = i2.graphics.group({ class: "apexcharts-datalabels", "data:realIndex": n3 }), a2.globals.delayedElements.push({ el: u2.node, index: n3 }); - var d3 = { i: n3, realIndex: n3, animationDelay: n3, initialSpeed: a2.config.chart.animations.speed, dataChangeSpeed: a2.config.chart.animations.dynamicAnimation.speed, className: "apexcharts-radar", shouldClipToGrid: false, bindEventsOnPaths: false, stroke: a2.globals.stroke.colors[n3], strokeLineCap: a2.config.stroke.lineCap }, f3 = null; - a2.globals.previousPaths.length > 0 && (f3 = i2.getPreviousPath(n3)); - for (var b2 = 0; b2 < c3.linePathsTo.length; b2++) { - var m2 = i2.graphics.renderPaths(e(e({}, d3), {}, { pathFrom: null === f3 ? c3.linePathsFrom[b2] : f3, pathTo: c3.linePathsTo[b2], strokeWidth: Array.isArray(i2.strokeWidth) ? i2.strokeWidth[n3] : i2.strokeWidth, fill: "none", drawShadow: false })); - h3.add(m2); - var y2 = s2.fillPath({ seriesNumber: n3 }), w2 = i2.graphics.renderPaths(e(e({}, d3), {}, { pathFrom: null === f3 ? c3.areaPathsFrom[b2] : f3, pathTo: c3.areaPathsTo[b2], strokeWidth: 0, fill: y2, drawShadow: false })); - if (a2.config.chart.dropShadow.enabled) { - var k2 = new v(i2.ctx), A2 = a2.config.chart.dropShadow; - k2.dropShadow(w2, Object.assign({}, A2, { noUserSpaceOnUse: true }), n3); - } - h3.add(w2); - } - t4.forEach(function(t5, s3) { - var r3 = new H(i2.ctx).getMarkerConfig({ cssClass: "apexcharts-marker", seriesIndex: n3, dataPointIndex: s3 }), l4 = i2.graphics.drawMarker(g2[s3].x, g2[s3].y, r3); - l4.attr("rel", s3), l4.attr("j", s3), l4.attr("index", n3), l4.node.setAttribute("default-marker-size", r3.pSize); - var c4 = i2.graphics.group({ class: "apexcharts-series-markers" }); - c4 && c4.add(l4), u2.add(c4), h3.add(u2); - var d4 = a2.config.dataLabels; - if (d4.enabled) { - var f4 = d4.formatter(a2.globals.series[n3][s3], { seriesIndex: n3, dataPointIndex: s3, w: a2 }); - o2.plotDataLabelsText({ x: g2[s3].x, y: g2[s3].y, text: f4, textAnchor: "middle", i: n3, j: n3, parent: p2, offsetCorrection: false, dataLabelsConfig: e({}, d4) }); - } - h3.add(p2); - }), r2.push(h3); - }), this.drawPolygons({ parent: d2 }), a2.config.xaxis.labels.show) { - var f2 = this.drawXAxisTexts(); - d2.add(f2); - } - return r2.forEach(function(t4) { - d2.add(t4); - }), d2.add(this.yaxisLabels), d2; - } }, { key: "drawPolygons", value: function(t3) { - for (var e2 = this, i2 = this.w, a2 = t3.parent, s2 = new Ct(this.ctx), r2 = i2.globals.yAxisScale[0].result.reverse(), o2 = r2.length, n2 = [], l2 = this.size / (o2 - 1), h2 = 0; h2 < o2; h2++) - n2[h2] = l2 * h2; - n2.reverse(); - var c2 = [], d2 = []; - n2.forEach(function(t4, i3) { - var a3 = x.getPolygonPos(t4, e2.dataPointsLen), s3 = ""; - a3.forEach(function(t5, a4) { - if (0 === i3) { - var r3 = e2.graphics.drawLine(t5.x, t5.y, 0, 0, Array.isArray(e2.polygons.connectorColors) ? e2.polygons.connectorColors[a4] : e2.polygons.connectorColors); - d2.push(r3); - } - 0 === a4 && e2.yaxisLabelsTextsPos.push({ x: t5.x, y: t5.y }), s3 += t5.x + "," + t5.y + " "; - }), c2.push(s3); - }), c2.forEach(function(t4, s3) { - var r3 = e2.polygons.strokeColors, o3 = e2.polygons.strokeWidth, n3 = e2.graphics.drawPolygon(t4, Array.isArray(r3) ? r3[s3] : r3, Array.isArray(o3) ? o3[s3] : o3, i2.globals.radarPolygons.fill.colors[s3]); - a2.add(n3); - }), d2.forEach(function(t4) { - a2.add(t4); - }), i2.config.yaxis[0].show && this.yaxisLabelsTextsPos.forEach(function(t4, i3) { - var a3 = s2.drawYAxisTexts(t4.x, t4.y, i3, r2[i3]); - e2.yaxisLabels.add(a3); - }); - } }, { key: "drawXAxisTexts", value: function() { - var t3 = this, i2 = this.w, a2 = i2.config.xaxis.labels, s2 = this.graphics.group({ class: "apexcharts-xaxis" }), r2 = x.getPolygonPos(this.size, this.dataPointsLen); - return i2.globals.labels.forEach(function(o2, n2) { - var l2 = i2.config.xaxis.labels.formatter, h2 = new O(t3.ctx); - if (r2[n2]) { - var c2 = t3.getTextPos(r2[n2], t3.size), d2 = l2(o2, { seriesIndex: -1, dataPointIndex: n2, w: i2 }); - h2.plotDataLabelsText({ x: c2.newX, y: c2.newY, text: d2, textAnchor: c2.textAnchor, i: n2, j: n2, parent: s2, color: Array.isArray(a2.style.colors) && a2.style.colors[n2] ? a2.style.colors[n2] : "#a8a8a8", dataLabelsConfig: e({ textAnchor: c2.textAnchor, dropShadow: { enabled: false } }, a2), offsetCorrection: false }); - } - }), s2; - } }, { key: "createPaths", value: function(t3, e2) { - var i2 = this, a2 = [], s2 = [], r2 = [], o2 = []; - if (t3.length) { - s2 = [this.graphics.move(e2.x, e2.y)], o2 = [this.graphics.move(e2.x, e2.y)]; - var n2 = this.graphics.move(t3[0].x, t3[0].y), l2 = this.graphics.move(t3[0].x, t3[0].y); - t3.forEach(function(e3, a3) { - n2 += i2.graphics.line(e3.x, e3.y), l2 += i2.graphics.line(e3.x, e3.y), a3 === t3.length - 1 && (n2 += "Z", l2 += "Z"); - }), a2.push(n2), r2.push(l2); - } - return { linePathsFrom: s2, linePathsTo: a2, areaPathsFrom: o2, areaPathsTo: r2 }; - } }, { key: "getTextPos", value: function(t3, e2) { - var i2 = "middle", a2 = t3.x, s2 = t3.y; - return Math.abs(t3.x) >= 10 ? t3.x > 0 ? (i2 = "start", a2 += 10) : t3.x < 0 && (i2 = "end", a2 -= 10) : i2 = "middle", Math.abs(t3.y) >= e2 - 10 && (t3.y < 0 ? s2 -= 10 : t3.y > 0 && (s2 += 10)), { textAnchor: i2, newX: a2, newY: s2 }; - } }, { key: "getPreviousPath", value: function(t3) { - for (var e2 = this.w, i2 = null, a2 = 0; a2 < e2.globals.previousPaths.length; a2++) { - var s2 = e2.globals.previousPaths[a2]; - s2.paths.length > 0 && parseInt(s2.realIndex, 10) === parseInt(t3, 10) && void 0 !== e2.globals.previousPaths[a2].paths[0] && (i2 = e2.globals.previousPaths[a2].paths[0].d); - } - return i2; - } }, { key: "getDataPointsPos", value: function(t3, e2) { - var i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.dataPointsLen; - t3 = t3 || [], e2 = e2 || []; - for (var a2 = [], s2 = 0; s2 < i2; s2++) { - var r2 = {}; - r2.x = t3[s2] * Math.sin(e2[s2]), r2.y = -t3[s2] * Math.cos(e2[s2]), a2.push(r2); - } - return a2; - } }]), t2; - }(); - var It = function(t2) { - n(i2, Lt); - var e2 = d(i2); - function i2(t3) { - var s2; - a(this, i2), (s2 = e2.call(this, t3)).ctx = t3, s2.w = t3.w, s2.animBeginArr = [0], s2.animDur = 0; - var r2 = s2.w; - return s2.startAngle = r2.config.plotOptions.radialBar.startAngle, s2.endAngle = r2.config.plotOptions.radialBar.endAngle, s2.totalAngle = Math.abs(r2.config.plotOptions.radialBar.endAngle - r2.config.plotOptions.radialBar.startAngle), s2.trackStartAngle = r2.config.plotOptions.radialBar.track.startAngle, s2.trackEndAngle = r2.config.plotOptions.radialBar.track.endAngle, s2.donutDataLabels = s2.w.config.plotOptions.radialBar.dataLabels, s2.radialDataLabels = s2.donutDataLabels, s2.trackStartAngle || (s2.trackStartAngle = s2.startAngle), s2.trackEndAngle || (s2.trackEndAngle = s2.endAngle), 360 === s2.endAngle && (s2.endAngle = 359.99), s2.margin = parseInt(r2.config.plotOptions.radialBar.track.margin, 10), s2; - } - return r(i2, [{ key: "draw", value: function(t3) { - var e3 = this.w, i3 = new m(this.ctx), a2 = i3.group({ class: "apexcharts-radialbar" }); - if (e3.globals.noData) - return a2; - var s2 = i3.group(), r2 = this.defaultSize / 2, o2 = e3.globals.gridWidth / 2, n2 = this.defaultSize / 2.05; - e3.config.chart.sparkline.enabled || (n2 = n2 - e3.config.stroke.width - e3.config.chart.dropShadow.blur); - var l2 = e3.globals.fill.colors; - if (e3.config.plotOptions.radialBar.track.show) { - var h2 = this.drawTracks({ size: n2, centerX: o2, centerY: r2, colorArr: l2, series: t3 }); - s2.add(h2); - } - var c2 = this.drawArcs({ size: n2, centerX: o2, centerY: r2, colorArr: l2, series: t3 }), d2 = 360; - e3.config.plotOptions.radialBar.startAngle < 0 && (d2 = this.totalAngle); - var g2 = (360 - d2) / 360; - if (e3.globals.radialSize = n2 - n2 * g2, this.radialDataLabels.value.show) { - var u2 = Math.max(this.radialDataLabels.value.offsetY, this.radialDataLabels.name.offsetY); - e3.globals.radialSize += u2 * g2; - } - return s2.add(c2.g), "front" === e3.config.plotOptions.radialBar.hollow.position && (c2.g.add(c2.elHollow), c2.dataLabels && c2.g.add(c2.dataLabels)), a2.add(s2), a2; - } }, { key: "drawTracks", value: function(t3) { - var e3 = this.w, i3 = new m(this.ctx), a2 = i3.group({ class: "apexcharts-tracks" }), s2 = new v(this.ctx), r2 = new R(this.ctx), o2 = this.getStrokeWidth(t3); - t3.size = t3.size - o2 / 2; - for (var n2 = 0; n2 < t3.series.length; n2++) { - var l2 = i3.group({ class: "apexcharts-radialbar-track apexcharts-track" }); - a2.add(l2), l2.attr({ rel: n2 + 1 }), t3.size = t3.size - o2 - this.margin; - var h2 = e3.config.plotOptions.radialBar.track, c2 = r2.fillPath({ seriesNumber: 0, size: t3.size, fillColors: Array.isArray(h2.background) ? h2.background[n2] : h2.background, solid: true }), d2 = this.trackStartAngle, g2 = this.trackEndAngle; - Math.abs(g2) + Math.abs(d2) >= 360 && (g2 = 360 - Math.abs(this.startAngle) - 0.1); - var u2 = i3.drawPath({ d: "", stroke: c2, strokeWidth: o2 * parseInt(h2.strokeWidth, 10) / 100, fill: "none", strokeOpacity: h2.opacity, classes: "apexcharts-radialbar-area" }); - if (h2.dropShadow.enabled) { - var p2 = h2.dropShadow; - s2.dropShadow(u2, p2); - } - l2.add(u2), u2.attr("id", "apexcharts-radialbarTrack-" + n2), this.animatePaths(u2, { centerX: t3.centerX, centerY: t3.centerY, endAngle: g2, startAngle: d2, size: t3.size, i: n2, totalItems: 2, animBeginArr: 0, dur: 0, isTrack: true, easing: e3.globals.easing }); - } - return a2; - } }, { key: "drawArcs", value: function(t3) { - var e3 = this.w, i3 = new m(this.ctx), a2 = new R(this.ctx), s2 = new v(this.ctx), r2 = i3.group(), o2 = this.getStrokeWidth(t3); - t3.size = t3.size - o2 / 2; - var n2 = e3.config.plotOptions.radialBar.hollow.background, l2 = t3.size - o2 * t3.series.length - this.margin * t3.series.length - o2 * parseInt(e3.config.plotOptions.radialBar.track.strokeWidth, 10) / 100 / 2, h2 = l2 - e3.config.plotOptions.radialBar.hollow.margin; - void 0 !== e3.config.plotOptions.radialBar.hollow.image && (n2 = this.drawHollowImage(t3, r2, l2, n2)); - var c2 = this.drawHollow({ size: h2, centerX: t3.centerX, centerY: t3.centerY, fill: n2 || "transparent" }); - if (e3.config.plotOptions.radialBar.hollow.dropShadow.enabled) { - var d2 = e3.config.plotOptions.radialBar.hollow.dropShadow; - s2.dropShadow(c2, d2); - } - var g2 = 1; - !this.radialDataLabels.total.show && e3.globals.series.length > 1 && (g2 = 0); - var u2 = null; - this.radialDataLabels.show && (u2 = this.renderInnerDataLabels(this.radialDataLabels, { hollowSize: l2, centerX: t3.centerX, centerY: t3.centerY, opacity: g2 })), "back" === e3.config.plotOptions.radialBar.hollow.position && (r2.add(c2), u2 && r2.add(u2)); - var p2 = false; - e3.config.plotOptions.radialBar.inverseOrder && (p2 = true); - for (var f2 = p2 ? t3.series.length - 1 : 0; p2 ? f2 >= 0 : f2 < t3.series.length; p2 ? f2-- : f2++) { - var b2 = i3.group({ class: "apexcharts-series apexcharts-radial-series", seriesName: x.escapeString(e3.globals.seriesNames[f2]) }); - r2.add(b2), b2.attr({ rel: f2 + 1, "data:realIndex": f2 }), this.ctx.series.addCollapsedClassToSeries(b2, f2), t3.size = t3.size - o2 - this.margin; - var y2 = a2.fillPath({ seriesNumber: f2, size: t3.size, value: t3.series[f2] }), w2 = this.startAngle, k2 = void 0, A2 = x.negToZero(t3.series[f2] > 100 ? 100 : t3.series[f2]) / 100, S2 = Math.round(this.totalAngle * A2) + this.startAngle, C2 = void 0; - e3.globals.dataChanged && (k2 = this.startAngle, C2 = Math.round(this.totalAngle * x.negToZero(e3.globals.previousPaths[f2]) / 100) + k2), Math.abs(S2) + Math.abs(w2) >= 360 && (S2 -= 0.01), Math.abs(C2) + Math.abs(k2) >= 360 && (C2 -= 0.01); - var L2 = S2 - w2, P2 = Array.isArray(e3.config.stroke.dashArray) ? e3.config.stroke.dashArray[f2] : e3.config.stroke.dashArray, I2 = i3.drawPath({ d: "", stroke: y2, strokeWidth: o2, fill: "none", fillOpacity: e3.config.fill.opacity, classes: "apexcharts-radialbar-area apexcharts-radialbar-slice-" + f2, strokeDashArray: P2 }); - if (m.setAttrs(I2.node, { "data:angle": L2, "data:value": t3.series[f2] }), e3.config.chart.dropShadow.enabled) { - var M2 = e3.config.chart.dropShadow; - s2.dropShadow(I2, M2, f2); - } - s2.setSelectionFilter(I2, 0, f2), this.addListeners(I2, this.radialDataLabels), b2.add(I2), I2.attr({ index: 0, j: f2 }); - var T2 = 0; - !this.initialAnim || e3.globals.resized || e3.globals.dataChanged || (T2 = e3.config.chart.animations.speed), e3.globals.dataChanged && (T2 = e3.config.chart.animations.dynamicAnimation.speed), this.animDur = T2 / (1.2 * t3.series.length) + this.animDur, this.animBeginArr.push(this.animDur), this.animatePaths(I2, { centerX: t3.centerX, centerY: t3.centerY, endAngle: S2, startAngle: w2, prevEndAngle: C2, prevStartAngle: k2, size: t3.size, i: f2, totalItems: 2, animBeginArr: this.animBeginArr, dur: T2, shouldSetPrevPaths: true, easing: e3.globals.easing }); - } - return { g: r2, elHollow: c2, dataLabels: u2 }; - } }, { key: "drawHollow", value: function(t3) { - var e3 = new m(this.ctx).drawCircle(2 * t3.size); - return e3.attr({ class: "apexcharts-radialbar-hollow", cx: t3.centerX, cy: t3.centerY, r: t3.size, fill: t3.fill }), e3; - } }, { key: "drawHollowImage", value: function(t3, e3, i3, a2) { - var s2 = this.w, r2 = new R(this.ctx), o2 = x.randomId(), n2 = s2.config.plotOptions.radialBar.hollow.image; - if (s2.config.plotOptions.radialBar.hollow.imageClipped) - r2.clippedImgArea({ width: i3, height: i3, image: n2, patternID: "pattern".concat(s2.globals.cuid).concat(o2) }), a2 = "url(#pattern".concat(s2.globals.cuid).concat(o2, ")"); - else { - var l2 = s2.config.plotOptions.radialBar.hollow.imageWidth, h2 = s2.config.plotOptions.radialBar.hollow.imageHeight; - if (void 0 === l2 && void 0 === h2) { - var c2 = s2.globals.dom.Paper.image(n2).loaded(function(e4) { - this.move(t3.centerX - e4.width / 2 + s2.config.plotOptions.radialBar.hollow.imageOffsetX, t3.centerY - e4.height / 2 + s2.config.plotOptions.radialBar.hollow.imageOffsetY); - }); - e3.add(c2); - } else { - var d2 = s2.globals.dom.Paper.image(n2).loaded(function(e4) { - this.move(t3.centerX - l2 / 2 + s2.config.plotOptions.radialBar.hollow.imageOffsetX, t3.centerY - h2 / 2 + s2.config.plotOptions.radialBar.hollow.imageOffsetY), this.size(l2, h2); - }); - e3.add(d2); - } - } - return a2; - } }, { key: "getStrokeWidth", value: function(t3) { - var e3 = this.w; - return t3.size * (100 - parseInt(e3.config.plotOptions.radialBar.hollow.size, 10)) / 100 / (t3.series.length + 1) - this.margin; - } }]), i2; - }(); - var Mt = function(t2) { - n(s2, yt); - var i2 = d(s2); - function s2() { - return a(this, s2), i2.apply(this, arguments); - } - return r(s2, [{ key: "draw", value: function(t3, i3) { - var a2 = this.w, s3 = new m(this.ctx); - this.rangeBarOptions = this.w.config.plotOptions.rangeBar, this.series = t3, this.seriesRangeStart = a2.globals.seriesRangeStart, this.seriesRangeEnd = a2.globals.seriesRangeEnd, this.barHelpers.initVariables(t3); - for (var r2 = s3.group({ class: "apexcharts-rangebar-series apexcharts-plot-series" }), n2 = 0; n2 < t3.length; n2++) { - var l2, h2, c2, d2, g2 = void 0, u2 = void 0, p2 = a2.globals.comboCharts ? i3[n2] : n2, f2 = s3.group({ class: "apexcharts-series", seriesName: x.escapeString(a2.globals.seriesNames[p2]), rel: n2 + 1, "data:realIndex": p2 }); - this.ctx.series.addCollapsedClassToSeries(f2, p2), t3[n2].length > 0 && (this.visibleI = this.visibleI + 1); - var b2 = 0, v2 = 0; - this.yRatio.length > 1 && (this.yaxisIndex = p2); - var y2 = this.barHelpers.initialPositions(); - u2 = y2.y, d2 = y2.zeroW, g2 = y2.x, v2 = y2.barWidth, b2 = y2.barHeight, l2 = y2.xDivision, h2 = y2.yDivision, c2 = y2.zeroH; - for (var w2 = s3.group({ class: "apexcharts-datalabels", "data:realIndex": p2 }), k2 = s3.group({ class: "apexcharts-rangebar-goals-markers" }), A2 = 0; A2 < a2.globals.dataPoints; A2++) { - var S2, C2 = this.barHelpers.getStrokeWidth(n2, A2, p2), L2 = this.seriesRangeStart[n2][A2], P2 = this.seriesRangeEnd[n2][A2], I2 = null, M2 = null, T2 = null, z2 = { x: g2, y: u2, strokeWidth: C2, elSeries: f2 }, X2 = this.seriesLen; - if (a2.config.plotOptions.bar.rangeBarGroupRows && (X2 = 1), void 0 === a2.config.series[n2].data[A2]) - break; - if (this.isHorizontal) { - T2 = u2 + b2 * this.visibleI; - var E2 = (h2 - b2 * X2) / 2; - if (a2.config.series[n2].data[A2].x) { - var Y2 = this.detectOverlappingBars({ i: n2, j: A2, barYPosition: T2, srty: E2, barHeight: b2, yDivision: h2, initPositions: y2 }); - b2 = Y2.barHeight, T2 = Y2.barYPosition; - } - v2 = (I2 = this.drawRangeBarPaths(e({ indexes: { i: n2, j: A2, realIndex: p2 }, barHeight: b2, barYPosition: T2, zeroW: d2, yDivision: h2, y1: L2, y2: P2 }, z2))).barWidth; - } else { - a2.globals.isXNumeric && (g2 = (a2.globals.seriesX[n2][A2] - a2.globals.minX) / this.xRatio - v2 / 2), M2 = g2 + v2 * this.visibleI; - var F2 = (l2 - v2 * X2) / 2; - if (a2.config.series[n2].data[A2].x) { - var R2 = this.detectOverlappingBars({ i: n2, j: A2, barXPosition: M2, srtx: F2, barWidth: v2, xDivision: l2, initPositions: y2 }); - v2 = R2.barWidth, M2 = R2.barXPosition; - } - b2 = (I2 = this.drawRangeColumnPaths(e({ indexes: { i: n2, j: A2, realIndex: p2 }, barWidth: v2, barXPosition: M2, zeroH: c2, xDivision: l2 }, z2))).barHeight; - } - var H2 = this.barHelpers.drawGoalLine({ barXPosition: I2.barXPosition, barYPosition: T2, goalX: I2.goalX, goalY: I2.goalY, barHeight: b2, barWidth: v2 }); - H2 && k2.add(H2), u2 = I2.y, g2 = I2.x; - var D2 = this.barHelpers.getPathFillColor(t3, n2, A2, p2), O2 = a2.globals.stroke.colors[p2]; - this.renderSeries((o(S2 = { realIndex: p2, pathFill: D2, lineFill: O2, j: A2, i: n2, x: g2, y: u2, y1: L2, y2: P2, pathFrom: I2.pathFrom, pathTo: I2.pathTo, strokeWidth: C2, elSeries: f2, series: t3, barHeight: b2, barWidth: v2, barXPosition: M2, barYPosition: T2 }, "barWidth", v2), o(S2, "elDataLabelsWrap", w2), o(S2, "elGoalsMarkers", k2), o(S2, "visibleSeries", this.visibleI), o(S2, "type", "rangebar"), S2)); - } - r2.add(f2); - } - return r2; - } }, { key: "detectOverlappingBars", value: function(t3) { - var e2 = t3.i, i3 = t3.j, a2 = t3.barYPosition, s3 = t3.barXPosition, r2 = t3.srty, o2 = t3.srtx, n2 = t3.barHeight, l2 = t3.barWidth, h2 = t3.yDivision, c2 = t3.xDivision, d2 = t3.initPositions, g2 = this.w, u2 = [], p2 = g2.config.series[e2].data[i3].rangeName, f2 = g2.config.series[e2].data[i3].x, x2 = Array.isArray(f2) ? f2.join(" ") : f2, b2 = g2.globals.labels.map(function(t4) { - return Array.isArray(t4) ? t4.join(" ") : t4; - }).indexOf(x2), v2 = g2.globals.seriesRange[e2].findIndex(function(t4) { - return t4.x === x2 && t4.overlaps.length > 0; - }); - return this.isHorizontal ? (a2 = g2.config.plotOptions.bar.rangeBarGroupRows ? r2 + h2 * b2 : r2 + n2 * this.visibleI + h2 * b2, v2 > -1 && !g2.config.plotOptions.bar.rangeBarOverlap && (u2 = g2.globals.seriesRange[e2][v2].overlaps).indexOf(p2) > -1 && (a2 = (n2 = d2.barHeight / u2.length) * this.visibleI + h2 * (100 - parseInt(this.barOptions.barHeight, 10)) / 100 / 2 + n2 * (this.visibleI + u2.indexOf(p2)) + h2 * b2)) : (b2 > -1 && (s3 = g2.config.plotOptions.bar.rangeBarGroupRows ? o2 + c2 * b2 : o2 + l2 * this.visibleI + c2 * b2), v2 > -1 && !g2.config.plotOptions.bar.rangeBarOverlap && (u2 = g2.globals.seriesRange[e2][v2].overlaps).indexOf(p2) > -1 && (s3 = (l2 = d2.barWidth / u2.length) * this.visibleI + c2 * (100 - parseInt(this.barOptions.barWidth, 10)) / 100 / 2 + l2 * (this.visibleI + u2.indexOf(p2)) + c2 * b2)), { barYPosition: a2, barXPosition: s3, barHeight: n2, barWidth: l2 }; - } }, { key: "drawRangeColumnPaths", value: function(t3) { - var e2 = t3.indexes, i3 = t3.x, a2 = t3.xDivision, s3 = t3.barWidth, r2 = t3.barXPosition, o2 = t3.zeroH, n2 = this.w, l2 = e2.i, h2 = e2.j, c2 = this.yRatio[this.yaxisIndex], d2 = e2.realIndex, g2 = this.getRangeValue(d2, h2), u2 = Math.min(g2.start, g2.end), p2 = Math.max(g2.start, g2.end); - void 0 === this.series[l2][h2] || null === this.series[l2][h2] ? u2 = o2 : (u2 = o2 - u2 / c2, p2 = o2 - p2 / c2); - var f2 = Math.abs(p2 - u2), x2 = this.barHelpers.getColumnPaths({ barXPosition: r2, barWidth: s3, y1: u2, y2: p2, strokeWidth: this.strokeWidth, series: this.seriesRangeEnd, realIndex: e2.realIndex, i: d2, j: h2, w: n2 }); - if (n2.globals.isXNumeric) { - var b2 = this.getBarXForNumericXAxis({ x: i3, j: h2, realIndex: d2, barWidth: s3 }); - i3 = b2.x, r2 = b2.barXPosition; - } else - i3 += a2; - return { pathTo: x2.pathTo, pathFrom: x2.pathFrom, barHeight: f2, x: i3, y: p2, goalY: this.barHelpers.getGoalValues("y", null, o2, l2, h2), barXPosition: r2 }; - } }, { key: "drawRangeBarPaths", value: function(t3) { - var e2 = t3.indexes, i3 = t3.y, a2 = t3.y1, s3 = t3.y2, r2 = t3.yDivision, o2 = t3.barHeight, n2 = t3.barYPosition, l2 = t3.zeroW, h2 = this.w, c2 = l2 + a2 / this.invertedYRatio, d2 = l2 + s3 / this.invertedYRatio, g2 = Math.abs(d2 - c2), u2 = this.barHelpers.getBarpaths({ barYPosition: n2, barHeight: o2, x1: c2, x2: d2, strokeWidth: this.strokeWidth, series: this.seriesRangeEnd, i: e2.realIndex, realIndex: e2.realIndex, j: e2.j, w: h2 }); - return h2.globals.isXNumeric || (i3 += r2), { pathTo: u2.pathTo, pathFrom: u2.pathFrom, barWidth: g2, x: d2, goalX: this.barHelpers.getGoalValues("x", l2, null, e2.realIndex, e2.j), y: i3 }; - } }, { key: "getRangeValue", value: function(t3, e2) { - var i3 = this.w; - return { start: i3.globals.seriesRangeStart[t3][e2], end: i3.globals.seriesRangeEnd[t3][e2] }; - } }]), s2; - }(); - var Tt = function() { - function t2(e2) { - a(this, t2), this.w = e2.w, this.lineCtx = e2; - } - return r(t2, [{ key: "sameValueSeriesFix", value: function(t3, e2) { - var i2 = this.w; - if (("gradient" === i2.config.fill.type || "gradient" === i2.config.fill.type[t3]) && new y(this.lineCtx.ctx, i2).seriesHaveSameValues(t3)) { - var a2 = e2[t3].slice(); - a2[a2.length - 1] = a2[a2.length - 1] + 1e-6, e2[t3] = a2; - } - return e2; - } }, { key: "calculatePoints", value: function(t3) { - var e2 = t3.series, i2 = t3.realIndex, a2 = t3.x, s2 = t3.y, r2 = t3.i, o2 = t3.j, n2 = t3.prevY, l2 = this.w, h2 = [], c2 = []; - if (0 === o2) { - var d2 = this.lineCtx.categoryAxisCorrection + l2.config.markers.offsetX; - l2.globals.isXNumeric && (d2 = (l2.globals.seriesX[i2][0] - l2.globals.minX) / this.lineCtx.xRatio + l2.config.markers.offsetX), h2.push(d2), c2.push(x.isNumber(e2[r2][0]) ? n2 + l2.config.markers.offsetY : null), h2.push(a2 + l2.config.markers.offsetX), c2.push(x.isNumber(e2[r2][o2 + 1]) ? s2 + l2.config.markers.offsetY : null); - } else - h2.push(a2 + l2.config.markers.offsetX), c2.push(x.isNumber(e2[r2][o2 + 1]) ? s2 + l2.config.markers.offsetY : null); - return { x: h2, y: c2 }; - } }, { key: "checkPreviousPaths", value: function(t3) { - for (var e2 = t3.pathFromLine, i2 = t3.pathFromArea, a2 = t3.realIndex, s2 = this.w, r2 = 0; r2 < s2.globals.previousPaths.length; r2++) { - var o2 = s2.globals.previousPaths[r2]; - ("line" === o2.type || "area" === o2.type) && o2.paths.length > 0 && parseInt(o2.realIndex, 10) === parseInt(a2, 10) && ("line" === o2.type ? (this.lineCtx.appendPathFrom = false, e2 = s2.globals.previousPaths[r2].paths[0].d) : "area" === o2.type && (this.lineCtx.appendPathFrom = false, i2 = s2.globals.previousPaths[r2].paths[0].d, s2.config.stroke.show && s2.globals.previousPaths[r2].paths[1] && (e2 = s2.globals.previousPaths[r2].paths[1].d))); - } - return { pathFromLine: e2, pathFromArea: i2 }; - } }, { key: "determineFirstPrevY", value: function(t3) { - var e2, i2 = t3.i, a2 = t3.series, s2 = t3.prevY, r2 = t3.lineYPosition, o2 = this.w; - if (void 0 !== (null === (e2 = a2[i2]) || void 0 === e2 ? void 0 : e2[0])) - s2 = (r2 = o2.config.chart.stacked && i2 > 0 ? this.lineCtx.prevSeriesY[i2 - 1][0] : this.lineCtx.zeroY) - a2[i2][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] + 2 * (this.lineCtx.isReversed ? a2[i2][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] : 0); - else if (o2.config.chart.stacked && i2 > 0 && void 0 === a2[i2][0]) { - for (var n2 = i2 - 1; n2 >= 0; n2--) - if (null !== a2[n2][0] && void 0 !== a2[n2][0]) { - s2 = r2 = this.lineCtx.prevSeriesY[n2][0]; - break; - } - } - return { prevY: s2, lineYPosition: r2 }; - } }]), t2; - }(); - var zt = function(t2) { - for (var e2, i2, a2, s2, r2 = function(t3) { - for (var e3 = [], i3 = t3[0], a3 = t3[1], s3 = e3[0] = Yt(i3, a3), r3 = 1, o3 = t3.length - 1; r3 < o3; r3++) - i3 = a3, a3 = t3[r3 + 1], e3[r3] = 0.5 * (s3 + (s3 = Yt(i3, a3))); - return e3[r3] = s3, e3; - }(t2), o2 = t2.length - 1, n2 = [], l2 = 0; l2 < o2; l2++) - a2 = Yt(t2[l2], t2[l2 + 1]), Math.abs(a2) < 1e-6 ? r2[l2] = r2[l2 + 1] = 0 : (s2 = (e2 = r2[l2] / a2) * e2 + (i2 = r2[l2 + 1] / a2) * i2) > 9 && (s2 = 3 * a2 / Math.sqrt(s2), r2[l2] = s2 * e2, r2[l2 + 1] = s2 * i2); - for (var h2 = 0; h2 <= o2; h2++) - s2 = (t2[Math.min(o2, h2 + 1)][0] - t2[Math.max(0, h2 - 1)][0]) / (6 * (1 + r2[h2] * r2[h2])), n2.push([s2 || 0, r2[h2] * s2 || 0]); - return n2; - }; - var Xt = function(t2) { - for (var e2 = "", i2 = 0; i2 < t2.length; i2++) { - var a2 = t2[i2], s2 = t2[i2 - 1], r2 = a2.length, o2 = null == s2 ? void 0 : s2.length; - i2 > 1 && Math.abs(a2[r2 - 2] - s2[o2 - 2]) < 30 ? (e2 += "Q".concat(a2[0], ", ").concat(a2[1]), e2 += ", ".concat(a2[2], ", ").concat(a2[3])) : r2 > 4 ? (e2 += "C".concat(a2[0], ", ").concat(a2[1]), e2 += ", ".concat(a2[2], ", ").concat(a2[3]), e2 += ", ".concat(a2[4], ", ").concat(a2[5])) : r2 > 2 && (e2 += "S".concat(a2[0], ", ").concat(a2[1]), e2 += ", ".concat(a2[2], ", ").concat(a2[3])); - } - return e2; - }; - var Et = function(t2) { - var e2 = zt(t2), i2 = t2[1], a2 = t2[0], s2 = [], r2 = e2[1], o2 = e2[0]; - s2.push(a2, [a2[0] + o2[0], a2[1] + o2[1], i2[0] - r2[0], i2[1] - r2[1], i2[0], i2[1]]); - for (var n2 = 2, l2 = e2.length; n2 < l2; n2++) { - var h2 = t2[n2], c2 = e2[n2]; - s2.push([h2[0] - c2[0], h2[1] - c2[1], h2[0], h2[1]]); - } - return s2; - }; - function Yt(t2, e2) { - return (e2[1] - t2[1]) / (e2[0] - t2[0]); - } - var Ft = function() { - function t2(e2, i2, s2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.xyRatios = i2, this.pointsChart = !("bubble" !== this.w.config.chart.type && "scatter" !== this.w.config.chart.type) || s2, this.scatter = new D(this.ctx), this.noNegatives = this.w.globals.minX === Number.MAX_VALUE, this.lineHelpers = new Tt(this), this.markers = new H(this.ctx), this.prevSeriesY = [], this.categoryAxisCorrection = 0, this.yaxisIndex = 0; - } - return r(t2, [{ key: "draw", value: function(t3, i2, a2, s2) { - var r2, o2 = this.w, n2 = new m(this.ctx), l2 = o2.globals.comboCharts ? i2 : o2.config.chart.type, h2 = n2.group({ class: "apexcharts-".concat(l2, "-series apexcharts-plot-series") }), c2 = new y(this.ctx, o2); - this.yRatio = this.xyRatios.yRatio, this.zRatio = this.xyRatios.zRatio, this.xRatio = this.xyRatios.xRatio, this.baseLineY = this.xyRatios.baseLineY, t3 = c2.getLogSeries(t3), this.yRatio = c2.getLogYRatios(this.yRatio); - for (var d2 = [], g2 = 0; g2 < t3.length; g2++) { - t3 = this.lineHelpers.sameValueSeriesFix(g2, t3); - var u2 = o2.globals.comboCharts ? a2[g2] : g2; - this._initSerieVariables(t3, g2, u2); - var p2 = [], f2 = [], x2 = [], b2 = o2.globals.padHorizontal + this.categoryAxisCorrection; - this.ctx.series.addCollapsedClassToSeries(this.elSeries, u2), o2.globals.isXNumeric && o2.globals.seriesX.length > 0 && (b2 = (o2.globals.seriesX[u2][0] - o2.globals.minX) / this.xRatio), x2.push(b2); - var v2 = b2, w2 = this.zeroY, k2 = this.zeroY; - w2 = this.lineHelpers.determineFirstPrevY({ i: g2, series: t3, prevY: w2, lineYPosition: 0 }).prevY, "smooth" === o2.config.stroke.curve && null === t3[g2][0] ? p2.push(null) : p2.push(w2); - "rangeArea" === l2 && (k2 = this.lineHelpers.determineFirstPrevY({ i: g2, series: s2, prevY: k2, lineYPosition: 0 }).prevY, f2.push(k2)); - var A2 = { type: l2, series: t3, realIndex: u2, i: g2, x: b2, y: 1, pathsFrom: this._calculatePathsFrom({ type: l2, series: t3, i: g2, realIndex: u2, prevX: v2, prevY: w2, prevY2: k2 }), linePaths: [], areaPaths: [], seriesIndex: a2, lineYPosition: 0, xArrj: x2, yArrj: p2, y2Arrj: f2, seriesRangeEnd: s2 }, S2 = this._iterateOverDataPoints(e(e({}, A2), {}, { iterations: "rangeArea" === l2 ? t3[g2].length - 1 : void 0, isRangeStart: true })); - if ("rangeArea" === l2) { - var C2 = this._calculatePathsFrom({ series: s2, i: g2, realIndex: u2, prevX: v2, prevY: k2 }), L2 = this._iterateOverDataPoints(e(e({}, A2), {}, { series: s2, pathsFrom: C2, iterations: s2[g2].length - 1, isRangeStart: false })); - S2.linePaths[0] = L2.linePath + S2.linePath, S2.pathFromLine = L2.pathFromLine + S2.pathFromLine; - } - this._handlePaths({ type: l2, realIndex: u2, i: g2, paths: S2 }), this.elSeries.add(this.elPointsMain), this.elSeries.add(this.elDataLabelsWrap), d2.push(this.elSeries); - } - if (void 0 !== (null === (r2 = o2.config.series[0]) || void 0 === r2 ? void 0 : r2.zIndex) && d2.sort(function(t4, e2) { - return Number(t4.node.getAttribute("zIndex")) - Number(e2.node.getAttribute("zIndex")); - }), o2.config.chart.stacked) - for (var P2 = d2.length; P2 > 0; P2--) - h2.add(d2[P2 - 1]); - else - for (var I2 = 0; I2 < d2.length; I2++) - h2.add(d2[I2]); - return h2; - } }, { key: "_initSerieVariables", value: function(t3, e2, i2) { - var a2 = this.w, s2 = new m(this.ctx); - this.xDivision = a2.globals.gridWidth / (a2.globals.dataPoints - ("on" === a2.config.xaxis.tickPlacement ? 1 : 0)), this.strokeWidth = Array.isArray(a2.config.stroke.width) ? a2.config.stroke.width[i2] : a2.config.stroke.width, this.yRatio.length > 1 && (this.yaxisIndex = i2), this.isReversed = a2.config.yaxis[this.yaxisIndex] && a2.config.yaxis[this.yaxisIndex].reversed, this.zeroY = a2.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? a2.globals.gridHeight : 0) + (this.isReversed ? 2 * this.baseLineY[this.yaxisIndex] : 0), this.areaBottomY = this.zeroY, (this.zeroY > a2.globals.gridHeight || "end" === a2.config.plotOptions.area.fillTo) && (this.areaBottomY = a2.globals.gridHeight), this.categoryAxisCorrection = this.xDivision / 2, this.elSeries = s2.group({ class: "apexcharts-series", zIndex: void 0 !== a2.config.series[i2].zIndex ? a2.config.series[i2].zIndex : i2, seriesName: x.escapeString(a2.globals.seriesNames[i2]) }), this.elPointsMain = s2.group({ class: "apexcharts-series-markers-wrap", "data:realIndex": i2 }), this.elDataLabelsWrap = s2.group({ class: "apexcharts-datalabels", "data:realIndex": i2 }); - var r2 = t3[e2].length === a2.globals.dataPoints; - this.elSeries.attr({ "data:longestSeries": r2, rel: e2 + 1, "data:realIndex": i2 }), this.appendPathFrom = true; - } }, { key: "_calculatePathsFrom", value: function(t3) { - var e2, i2, a2, s2, r2 = t3.type, o2 = t3.series, n2 = t3.i, l2 = t3.realIndex, h2 = t3.prevX, c2 = t3.prevY, d2 = t3.prevY2, g2 = this.w, u2 = new m(this.ctx); - if (null === o2[n2][0]) { - for (var p2 = 0; p2 < o2[n2].length; p2++) - if (null !== o2[n2][p2]) { - h2 = this.xDivision * p2, c2 = this.zeroY - o2[n2][p2] / this.yRatio[this.yaxisIndex], e2 = u2.move(h2, c2), i2 = u2.move(h2, this.areaBottomY); - break; - } - } else - e2 = u2.move(h2, c2), "rangeArea" === r2 && (e2 = u2.move(h2, d2) + u2.line(h2, c2)), i2 = u2.move(h2, this.areaBottomY) + u2.line(h2, c2); - if (a2 = u2.move(-1, this.zeroY) + u2.line(-1, this.zeroY), s2 = u2.move(-1, this.zeroY) + u2.line(-1, this.zeroY), g2.globals.previousPaths.length > 0) { - var f2 = this.lineHelpers.checkPreviousPaths({ pathFromLine: a2, pathFromArea: s2, realIndex: l2 }); - a2 = f2.pathFromLine, s2 = f2.pathFromArea; - } - return { prevX: h2, prevY: c2, linePath: e2, areaPath: i2, pathFromLine: a2, pathFromArea: s2 }; - } }, { key: "_handlePaths", value: function(t3) { - var i2 = t3.type, a2 = t3.realIndex, s2 = t3.i, r2 = t3.paths, o2 = this.w, n2 = new m(this.ctx), l2 = new R(this.ctx); - this.prevSeriesY.push(r2.yArrj), o2.globals.seriesXvalues[a2] = r2.xArrj, o2.globals.seriesYvalues[a2] = r2.yArrj; - var h2 = o2.config.forecastDataPoints; - if (h2.count > 0 && "rangeArea" !== i2) { - var c2 = o2.globals.seriesXvalues[a2][o2.globals.seriesXvalues[a2].length - h2.count - 1], d2 = n2.drawRect(c2, 0, o2.globals.gridWidth, o2.globals.gridHeight, 0); - o2.globals.dom.elForecastMask.appendChild(d2.node); - var g2 = n2.drawRect(0, 0, c2, o2.globals.gridHeight, 0); - o2.globals.dom.elNonForecastMask.appendChild(g2.node); - } - this.pointsChart || o2.globals.delayedElements.push({ el: this.elPointsMain.node, index: a2 }); - var u2 = { i: s2, realIndex: a2, animationDelay: s2, initialSpeed: o2.config.chart.animations.speed, dataChangeSpeed: o2.config.chart.animations.dynamicAnimation.speed, className: "apexcharts-".concat(i2) }; - if ("area" === i2) - for (var p2 = l2.fillPath({ seriesNumber: a2 }), f2 = 0; f2 < r2.areaPaths.length; f2++) { - var x2 = n2.renderPaths(e(e({}, u2), {}, { pathFrom: r2.pathFromArea, pathTo: r2.areaPaths[f2], stroke: "none", strokeWidth: 0, strokeLineCap: null, fill: p2 })); - this.elSeries.add(x2); - } - if (o2.config.stroke.show && !this.pointsChart) { - var b2 = null; - if ("line" === i2) - b2 = l2.fillPath({ seriesNumber: a2, i: s2 }); - else if ("solid" === o2.config.stroke.fill.type) - b2 = o2.globals.stroke.colors[a2]; - else { - var v2 = o2.config.fill; - o2.config.fill = o2.config.stroke.fill, b2 = l2.fillPath({ seriesNumber: a2, i: s2 }), o2.config.fill = v2; - } - for (var y2 = 0; y2 < r2.linePaths.length; y2++) { - var w2 = b2; - "rangeArea" === i2 && (w2 = l2.fillPath({ seriesNumber: a2 })); - var k2 = e(e({}, u2), {}, { pathFrom: r2.pathFromLine, pathTo: r2.linePaths[y2], stroke: b2, strokeWidth: this.strokeWidth, strokeLineCap: o2.config.stroke.lineCap, fill: "rangeArea" === i2 ? w2 : "none" }), A2 = n2.renderPaths(k2); - if (this.elSeries.add(A2), A2.attr("fill-rule", "evenodd"), h2.count > 0 && "rangeArea" !== i2) { - var S2 = n2.renderPaths(k2); - S2.node.setAttribute("stroke-dasharray", h2.dashArray), h2.strokeWidth && S2.node.setAttribute("stroke-width", h2.strokeWidth), this.elSeries.add(S2), S2.attr("clip-path", "url(#forecastMask".concat(o2.globals.cuid, ")")), A2.attr("clip-path", "url(#nonForecastMask".concat(o2.globals.cuid, ")")); - } - } - } - } }, { key: "_iterateOverDataPoints", value: function(t3) { - var e2 = this, i2 = t3.type, a2 = t3.series, s2 = t3.iterations, r2 = t3.realIndex, o2 = t3.i, n2 = t3.x, l2 = t3.y, h2 = t3.pathsFrom, c2 = t3.linePaths, d2 = t3.areaPaths, g2 = t3.seriesIndex, u2 = t3.lineYPosition, p2 = t3.xArrj, f2 = t3.yArrj, b2 = t3.y2Arrj, v2 = t3.isRangeStart, y2 = t3.seriesRangeEnd, w2 = this.w, k2 = new m(this.ctx), A2 = this.yRatio, S2 = h2.prevY, C2 = h2.linePath, L2 = h2.areaPath, P2 = h2.pathFromLine, I2 = h2.pathFromArea, M2 = x.isNumber(w2.globals.minYArr[r2]) ? w2.globals.minYArr[r2] : w2.globals.minY; - s2 || (s2 = w2.globals.dataPoints > 1 ? w2.globals.dataPoints - 1 : w2.globals.dataPoints); - for (var T2 = function(t4, i3) { - return i3 - t4 / A2[e2.yaxisIndex] + 2 * (e2.isReversed ? t4 / A2[e2.yaxisIndex] : 0); - }, z2 = l2, X2 = 0; X2 < s2; X2++) { - var E2 = void 0 === a2[o2][X2 + 1] || null === a2[o2][X2 + 1]; - if (w2.globals.isXNumeric) { - var Y2 = w2.globals.seriesX[r2][X2 + 1]; - void 0 === w2.globals.seriesX[r2][X2 + 1] && (Y2 = w2.globals.seriesX[r2][s2 - 1]), n2 = (Y2 - w2.globals.minX) / this.xRatio; - } else - n2 += this.xDivision; - if (w2.config.chart.stacked) - if (o2 > 0 && w2.globals.collapsedSeries.length < w2.config.series.length - 1) { - u2 = this.prevSeriesY[function(t4) { - for (var e3 = t4, i3 = 0; i3 < w2.globals.series.length; i3++) - if (w2.globals.collapsedSeriesIndices.indexOf(t4) > -1) { - e3--; - break; - } - return e3 >= 0 ? e3 : 0; - }(o2 - 1)][X2 + 1]; - } else - u2 = this.zeroY; - else - u2 = this.zeroY; - E2 ? l2 = T2(M2, u2) : (l2 = T2(a2[o2][X2 + 1], u2), "rangeArea" === i2 && (z2 = T2(y2[o2][X2 + 1], u2))), p2.push(n2), E2 && "smooth" === w2.config.stroke.curve ? f2.push(null) : f2.push(l2), b2.push(z2); - var F2 = this.lineHelpers.calculatePoints({ series: a2, x: n2, y: l2, realIndex: r2, i: o2, j: X2, prevY: S2 }), R2 = this._createPaths({ type: i2, series: a2, i: o2, realIndex: r2, j: X2, x: n2, y: l2, y2: z2, xArrj: p2, yArrj: f2, y2Arrj: b2, linePath: C2, areaPath: L2, linePaths: c2, areaPaths: d2, seriesIndex: g2, isRangeStart: v2 }); - d2 = R2.areaPaths, c2 = R2.linePaths, L2 = R2.areaPath, C2 = R2.linePath, !this.appendPathFrom || "smooth" === w2.config.stroke.curve && "rangeArea" === i2 || (P2 += k2.line(n2, this.zeroY), I2 += k2.line(n2, this.zeroY)), this.handleNullDataPoints(a2, F2, o2, X2, r2), this._handleMarkersAndLabels({ type: i2, pointsPos: F2, i: o2, j: X2, realIndex: r2, isRangeStart: v2 }); - } - return { yArrj: f2, xArrj: p2, pathFromArea: I2, areaPaths: d2, pathFromLine: P2, linePaths: c2, linePath: C2, areaPath: L2 }; - } }, { key: "_handleMarkersAndLabels", value: function(t3) { - var e2 = t3.type, i2 = t3.pointsPos, a2 = t3.isRangeStart, s2 = t3.i, r2 = t3.j, o2 = t3.realIndex, n2 = this.w, l2 = new O(this.ctx); - if (this.pointsChart) - this.scatter.draw(this.elSeries, r2, { realIndex: o2, pointsPos: i2, zRatio: this.zRatio, elParent: this.elPointsMain }); - else { - n2.globals.series[s2].length > 1 && this.elPointsMain.node.classList.add("apexcharts-element-hidden"); - var h2 = this.markers.plotChartMarkers(i2, o2, r2 + 1); - null !== h2 && this.elPointsMain.add(h2); - } - var c2 = l2.drawDataLabel({ type: e2, isRangeStart: a2, pos: i2, i: o2, j: r2 + 1 }); - null !== c2 && this.elDataLabelsWrap.add(c2); - } }, { key: "_createPaths", value: function(t3) { - var e2 = t3.type, i2 = t3.series, a2 = t3.i, s2 = t3.realIndex, r2 = t3.j, o2 = t3.x, n2 = t3.y, l2 = t3.xArrj, h2 = t3.yArrj, c2 = t3.y2, d2 = t3.y2Arrj, g2 = t3.linePath, u2 = t3.areaPath, p2 = t3.linePaths, f2 = t3.areaPaths, x2 = t3.seriesIndex, b2 = t3.isRangeStart, v2 = this.w, y2 = new m(this.ctx), w2 = v2.config.stroke.curve, k2 = this.areaBottomY; - if (Array.isArray(v2.config.stroke.curve) && (w2 = Array.isArray(x2) ? v2.config.stroke.curve[x2[a2]] : v2.config.stroke.curve[a2]), "rangeArea" === e2 && (v2.globals.hasNullValues || v2.config.forecastDataPoints.count > 0) && "smooth" === w2 && (w2 = "straight"), "smooth" === w2) { - var A2 = "rangeArea" === e2 ? l2.length === v2.globals.dataPoints : r2 === i2[a2].length - 2, S2 = l2.map(function(t4, e3) { - return [l2[e3], h2[e3]]; - }).filter(function(t4) { - return null !== t4[1]; - }); - if (A2 && S2.length > 1) { - var C2 = Et(S2); - if (g2 += Xt(C2), null === i2[a2][0] ? u2 = g2 : u2 += Xt(C2), "rangeArea" === e2 && b2) { - g2 += y2.line(l2[l2.length - 1], d2[d2.length - 1]); - var L2 = l2.slice().reverse(), P2 = d2.slice().reverse(), I2 = L2.map(function(t4, e3) { - return [L2[e3], P2[e3]]; - }), M2 = Et(I2); - u2 = g2 += Xt(M2); - } else - u2 += y2.line(S2[S2.length - 1][0], k2) + y2.line(S2[0][0], k2) + y2.move(S2[0][0], S2[0][1]) + "z"; - p2.push(g2), f2.push(u2); - } - } else { - if (null === i2[a2][r2 + 1]) { - g2 += y2.move(o2, n2); - var T2 = v2.globals.isXNumeric ? (v2.globals.seriesX[s2][r2] - v2.globals.minX) / this.xRatio : o2 - this.xDivision; - u2 = u2 + y2.line(T2, k2) + y2.move(o2, n2) + "z"; - } - null === i2[a2][r2] && (g2 += y2.move(o2, n2), u2 += y2.move(o2, k2)), "stepline" === w2 ? (g2 = g2 + y2.line(o2, null, "H") + y2.line(null, n2, "V"), u2 = u2 + y2.line(o2, null, "H") + y2.line(null, n2, "V")) : "straight" === w2 && (g2 += y2.line(o2, n2), u2 += y2.line(o2, n2)), r2 === i2[a2].length - 2 && (u2 = u2 + y2.line(o2, k2) + y2.move(o2, n2) + "z", "rangeArea" === e2 && b2 ? g2 = g2 + y2.line(o2, c2) + y2.move(o2, c2) + "z" : (p2.push(g2), f2.push(u2))); - } - return { linePaths: p2, areaPaths: f2, linePath: g2, areaPath: u2 }; - } }, { key: "handleNullDataPoints", value: function(t3, e2, i2, a2, s2) { - var r2 = this.w; - if (null === t3[i2][a2] && r2.config.markers.showNullDataPoints || 1 === t3[i2].length) { - var o2 = this.markers.plotChartMarkers(e2, s2, a2 + 1, this.strokeWidth - r2.config.markers.strokeWidth / 2, true); - null !== o2 && this.elPointsMain.add(o2); - } - } }]), t2; - }(); - window.TreemapSquared = {}, window.TreemapSquared.generate = /* @__PURE__ */ function() { - function t2(e3, i3, a3, s3) { - this.xoffset = e3, this.yoffset = i3, this.height = s3, this.width = a3, this.shortestEdge = function() { - return Math.min(this.height, this.width); - }, this.getCoordinates = function(t3) { - var e4, i4 = [], a4 = this.xoffset, s4 = this.yoffset, o3 = r2(t3) / this.height, n2 = r2(t3) / this.width; - if (this.width >= this.height) - for (e4 = 0; e4 < t3.length; e4++) - i4.push([a4, s4, a4 + o3, s4 + t3[e4] / o3]), s4 += t3[e4] / o3; - else - for (e4 = 0; e4 < t3.length; e4++) - i4.push([a4, s4, a4 + t3[e4] / n2, s4 + n2]), a4 += t3[e4] / n2; - return i4; - }, this.cutArea = function(e4) { - var i4; - if (this.width >= this.height) { - var a4 = e4 / this.height, s4 = this.width - a4; - i4 = new t2(this.xoffset + a4, this.yoffset, s4, this.height); - } else { - var r3 = e4 / this.width, o3 = this.height - r3; - i4 = new t2(this.xoffset, this.yoffset + r3, this.width, o3); - } - return i4; - }; - } - function e2(e3, a3, s3, o3, n2) { - o3 = void 0 === o3 ? 0 : o3, n2 = void 0 === n2 ? 0 : n2; - var l2 = i2(function(t3, e4) { - var i3, a4 = [], s4 = e4 / r2(t3); - for (i3 = 0; i3 < t3.length; i3++) - a4[i3] = t3[i3] * s4; - return a4; - }(e3, a3 * s3), [], new t2(o3, n2, a3, s3), []); - return function(t3) { - var e4, i3, a4 = []; - for (e4 = 0; e4 < t3.length; e4++) - for (i3 = 0; i3 < t3[e4].length; i3++) - a4.push(t3[e4][i3]); - return a4; - }(l2); - } - function i2(t3, e3, s3, o3) { - var n2, l2, h2; - if (0 !== t3.length) - return n2 = s3.shortestEdge(), function(t4, e4, i3) { - var s4; - if (0 === t4.length) - return true; - (s4 = t4.slice()).push(e4); - var r3 = a2(t4, i3), o4 = a2(s4, i3); - return r3 >= o4; - }(e3, l2 = t3[0], n2) ? (e3.push(l2), i2(t3.slice(1), e3, s3, o3)) : (h2 = s3.cutArea(r2(e3), o3), o3.push(s3.getCoordinates(e3)), i2(t3, [], h2, o3)), o3; - o3.push(s3.getCoordinates(e3)); - } - function a2(t3, e3) { - var i3 = Math.min.apply(Math, t3), a3 = Math.max.apply(Math, t3), s3 = r2(t3); - return Math.max(Math.pow(e3, 2) * a3 / Math.pow(s3, 2), Math.pow(s3, 2) / (Math.pow(e3, 2) * i3)); - } - function s2(t3) { - return t3 && t3.constructor === Array; - } - function r2(t3) { - var e3, i3 = 0; - for (e3 = 0; e3 < t3.length; e3++) - i3 += t3[e3]; - return i3; - } - function o2(t3) { - var e3, i3 = 0; - if (s2(t3[0])) - for (e3 = 0; e3 < t3.length; e3++) - i3 += o2(t3[e3]); - else - i3 = r2(t3); - return i3; - } - return function t3(i3, a3, r3, n2, l2) { - n2 = void 0 === n2 ? 0 : n2, l2 = void 0 === l2 ? 0 : l2; - var h2, c2, d2 = [], g2 = []; - if (s2(i3[0])) { - for (c2 = 0; c2 < i3.length; c2++) - d2[c2] = o2(i3[c2]); - for (h2 = e2(d2, a3, r3, n2, l2), c2 = 0; c2 < i3.length; c2++) - g2.push(t3(i3[c2], h2[c2][2] - h2[c2][0], h2[c2][3] - h2[c2][1], h2[c2][0], h2[c2][1])); - } else - g2 = e2(i3, a3, r3, n2, l2); - return g2; - }; - }(); - var Rt; - var Ht; - var Dt = function() { - function t2(e2, i2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.strokeWidth = this.w.config.stroke.width, this.helpers = new At(e2), this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation, this.labels = []; - } - return r(t2, [{ key: "draw", value: function(t3) { - var e2 = this, i2 = this.w, a2 = new m(this.ctx), s2 = new R(this.ctx), r2 = a2.group({ class: "apexcharts-treemap" }); - if (i2.globals.noData) - return r2; - var o2 = []; - return t3.forEach(function(t4) { - var e3 = t4.map(function(t5) { - return Math.abs(t5); - }); - o2.push(e3); - }), this.negRange = this.helpers.checkColorRange(), i2.config.series.forEach(function(t4, i3) { - t4.data.forEach(function(t5) { - Array.isArray(e2.labels[i3]) || (e2.labels[i3] = []), e2.labels[i3].push(t5.x); - }); - }), window.TreemapSquared.generate(o2, i2.globals.gridWidth, i2.globals.gridHeight).forEach(function(o3, n2) { - var l2 = a2.group({ class: "apexcharts-series apexcharts-treemap-series", seriesName: x.escapeString(i2.globals.seriesNames[n2]), rel: n2 + 1, "data:realIndex": n2 }); - if (i2.config.chart.dropShadow.enabled) { - var h2 = i2.config.chart.dropShadow; - new v(e2.ctx).dropShadow(r2, h2, n2); - } - var c2 = a2.group({ class: "apexcharts-data-labels" }); - o3.forEach(function(r3, o4) { - var h3 = r3[0], c3 = r3[1], d2 = r3[2], g2 = r3[3], u2 = a2.drawRect(h3, c3, d2 - h3, g2 - c3, 0, "#fff", 1, e2.strokeWidth, i2.config.plotOptions.treemap.useFillColorAsStroke ? f2 : i2.globals.stroke.colors[n2]); - u2.attr({ cx: h3, cy: c3, index: n2, i: n2, j: o4, width: d2 - h3, height: g2 - c3 }); - var p2 = e2.helpers.getShadeColor(i2.config.chart.type, n2, o4, e2.negRange), f2 = p2.color; - void 0 !== i2.config.series[n2].data[o4] && i2.config.series[n2].data[o4].fillColor && (f2 = i2.config.series[n2].data[o4].fillColor); - var x2 = s2.fillPath({ color: f2, seriesNumber: n2, dataPointIndex: o4 }); - u2.node.classList.add("apexcharts-treemap-rect"), u2.attr({ fill: x2 }), e2.helpers.addListeners(u2); - var b2 = { x: h3 + (d2 - h3) / 2, y: c3 + (g2 - c3) / 2, width: 0, height: 0 }, v2 = { x: h3, y: c3, width: d2 - h3, height: g2 - c3 }; - if (i2.config.chart.animations.enabled && !i2.globals.dataChanged) { - var m2 = 1; - i2.globals.resized || (m2 = i2.config.chart.animations.speed), e2.animateTreemap(u2, b2, v2, m2); - } - if (i2.globals.dataChanged) { - var y2 = 1; - e2.dynamicAnim.enabled && i2.globals.shouldAnimate && (y2 = e2.dynamicAnim.speed, i2.globals.previousPaths[n2] && i2.globals.previousPaths[n2][o4] && i2.globals.previousPaths[n2][o4].rect && (b2 = i2.globals.previousPaths[n2][o4].rect), e2.animateTreemap(u2, b2, v2, y2)); - } - var w2 = e2.getFontSize(r3), k2 = i2.config.dataLabels.formatter(e2.labels[n2][o4], { value: i2.globals.series[n2][o4], seriesIndex: n2, dataPointIndex: o4, w: i2 }); - "truncate" === i2.config.plotOptions.treemap.dataLabels.format && (w2 = parseInt(i2.config.dataLabels.style.fontSize, 10), k2 = e2.truncateLabels(k2, w2, h3, c3, d2, g2)); - var A2 = e2.helpers.calculateDataLabels({ text: k2, x: (h3 + d2) / 2, y: (c3 + g2) / 2 + e2.strokeWidth / 2 + w2 / 3, i: n2, j: o4, colorProps: p2, fontSize: w2, series: t3 }); - i2.config.dataLabels.enabled && A2 && e2.rotateToFitLabel(A2, w2, k2, h3, c3, d2, g2), l2.add(u2), null !== A2 && l2.add(A2); - }), l2.add(c2), r2.add(l2); - }), r2; - } }, { key: "getFontSize", value: function(t3) { - var e2 = this.w; - var i2, a2, s2, r2, o2 = function t4(e3) { - var i3, a3 = 0; - if (Array.isArray(e3[0])) - for (i3 = 0; i3 < e3.length; i3++) - a3 += t4(e3[i3]); - else - for (i3 = 0; i3 < e3.length; i3++) - a3 += e3[i3].length; - return a3; - }(this.labels) / function t4(e3) { - var i3, a3 = 0; - if (Array.isArray(e3[0])) - for (i3 = 0; i3 < e3.length; i3++) - a3 += t4(e3[i3]); - else - for (i3 = 0; i3 < e3.length; i3++) - a3 += 1; - return a3; - }(this.labels); - return i2 = t3[2] - t3[0], a2 = t3[3] - t3[1], s2 = i2 * a2, r2 = Math.pow(s2, 0.5), Math.min(r2 / o2, parseInt(e2.config.dataLabels.style.fontSize, 10)); - } }, { key: "rotateToFitLabel", value: function(t3, e2, i2, a2, s2, r2, o2) { - var n2 = new m(this.ctx), l2 = n2.getTextRects(i2, e2); - if (l2.width + this.w.config.stroke.width + 5 > r2 - a2 && l2.width <= o2 - s2) { - var h2 = n2.rotateAroundCenter(t3.node); - t3.node.setAttribute("transform", "rotate(-90 ".concat(h2.x, " ").concat(h2.y, ") translate(").concat(l2.height / 3, ")")); - } - } }, { key: "truncateLabels", value: function(t3, e2, i2, a2, s2, r2) { - var o2 = new m(this.ctx), n2 = o2.getTextRects(t3, e2).width + this.w.config.stroke.width + 5 > s2 - i2 && r2 - a2 > s2 - i2 ? r2 - a2 : s2 - i2, l2 = o2.getTextBasedOnMaxWidth({ text: t3, maxWidth: n2, fontSize: e2 }); - return t3.length !== l2.length && n2 / e2 < 5 ? "" : l2; - } }, { key: "animateTreemap", value: function(t3, e2, i2, a2) { - var s2 = new b(this.ctx); - s2.animateRect(t3, { x: e2.x, y: e2.y, width: e2.width, height: e2.height }, { x: i2.x, y: i2.y, width: i2.width, height: i2.height }, a2, function() { - s2.animationCompleted(t3); - }); - } }]), t2; - }(); - var Ot = 86400; - var Nt = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w, this.timeScaleArray = [], this.utc = this.w.config.xaxis.labels.datetimeUTC; - } - return r(t2, [{ key: "calculateTimeScaleTicks", value: function(t3, i2) { - var a2 = this, s2 = this.w; - if (s2.globals.allSeriesCollapsed) - return s2.globals.labels = [], s2.globals.timescaleLabels = [], []; - var r2 = new I(this.ctx), o2 = (i2 - t3) / 864e5; - this.determineInterval(o2), s2.globals.disableZoomIn = false, s2.globals.disableZoomOut = false, o2 < 11574074074074075e-20 ? s2.globals.disableZoomIn = true : o2 > 5e4 && (s2.globals.disableZoomOut = true); - var n2 = r2.getTimeUnitsfromTimestamp(t3, i2, this.utc), l2 = s2.globals.gridWidth / o2, h2 = l2 / 24, c2 = h2 / 60, d2 = c2 / 60, g2 = Math.floor(24 * o2), u2 = Math.floor(1440 * o2), p2 = Math.floor(o2 * Ot), f2 = Math.floor(o2), x2 = Math.floor(o2 / 30), b2 = Math.floor(o2 / 365), v2 = { minMillisecond: n2.minMillisecond, minSecond: n2.minSecond, minMinute: n2.minMinute, minHour: n2.minHour, minDate: n2.minDate, minMonth: n2.minMonth, minYear: n2.minYear }, m2 = { firstVal: v2, currentMillisecond: v2.minMillisecond, currentSecond: v2.minSecond, currentMinute: v2.minMinute, currentHour: v2.minHour, currentMonthDate: v2.minDate, currentDate: v2.minDate, currentMonth: v2.minMonth, currentYear: v2.minYear, daysWidthOnXAxis: l2, hoursWidthOnXAxis: h2, minutesWidthOnXAxis: c2, secondsWidthOnXAxis: d2, numberOfSeconds: p2, numberOfMinutes: u2, numberOfHours: g2, numberOfDays: f2, numberOfMonths: x2, numberOfYears: b2 }; - switch (this.tickInterval) { - case "years": - this.generateYearScale(m2); - break; - case "months": - case "half_year": - this.generateMonthScale(m2); - break; - case "months_days": - case "months_fortnight": - case "days": - case "week_days": - this.generateDayScale(m2); - break; - case "hours": - this.generateHourScale(m2); - break; - case "minutes_fives": - case "minutes": - this.generateMinuteScale(m2); - break; - case "seconds_tens": - case "seconds_fives": - case "seconds": - this.generateSecondScale(m2); - } - var y2 = this.timeScaleArray.map(function(t4) { - var i3 = { position: t4.position, unit: t4.unit, year: t4.year, day: t4.day ? t4.day : 1, hour: t4.hour ? t4.hour : 0, month: t4.month + 1 }; - return "month" === t4.unit ? e(e({}, i3), {}, { day: 1, value: t4.value + 1 }) : "day" === t4.unit || "hour" === t4.unit ? e(e({}, i3), {}, { value: t4.value }) : "minute" === t4.unit ? e(e({}, i3), {}, { value: t4.value, minute: t4.value }) : "second" === t4.unit ? e(e({}, i3), {}, { value: t4.value, minute: t4.minute, second: t4.second }) : t4; - }); - return y2.filter(function(t4) { - var e2 = 1, i3 = Math.ceil(s2.globals.gridWidth / 120), r3 = t4.value; - void 0 !== s2.config.xaxis.tickAmount && (i3 = s2.config.xaxis.tickAmount), y2.length > i3 && (e2 = Math.floor(y2.length / i3)); - var o3 = false, n3 = false; - switch (a2.tickInterval) { - case "years": - "year" === t4.unit && (o3 = true); - break; - case "half_year": - e2 = 7, "year" === t4.unit && (o3 = true); - break; - case "months": - e2 = 1, "year" === t4.unit && (o3 = true); - break; - case "months_fortnight": - e2 = 15, "year" !== t4.unit && "month" !== t4.unit || (o3 = true), 30 === r3 && (n3 = true); - break; - case "months_days": - e2 = 10, "month" === t4.unit && (o3 = true), 30 === r3 && (n3 = true); - break; - case "week_days": - e2 = 8, "month" === t4.unit && (o3 = true); - break; - case "days": - e2 = 1, "month" === t4.unit && (o3 = true); - break; - case "hours": - "day" === t4.unit && (o3 = true); - break; - case "minutes_fives": - case "seconds_fives": - r3 % 5 != 0 && (n3 = true); - break; - case "seconds_tens": - r3 % 10 != 0 && (n3 = true); - } - if ("hours" === a2.tickInterval || "minutes_fives" === a2.tickInterval || "seconds_tens" === a2.tickInterval || "seconds_fives" === a2.tickInterval) { - if (!n3) - return true; - } else if ((r3 % e2 == 0 || o3) && !n3) - return true; - }); - } }, { key: "recalcDimensionsBasedOnFormat", value: function(t3, e2) { - var i2 = this.w, a2 = this.formatDates(t3), s2 = this.removeOverlappingTS(a2); - i2.globals.timescaleLabels = s2.slice(), new ot(this.ctx).plotCoords(); - } }, { key: "determineInterval", value: function(t3) { - var e2 = 24 * t3, i2 = 60 * e2; - switch (true) { - case t3 / 365 > 5: - this.tickInterval = "years"; - break; - case t3 > 800: - this.tickInterval = "half_year"; - break; - case t3 > 180: - this.tickInterval = "months"; - break; - case t3 > 90: - this.tickInterval = "months_fortnight"; - break; - case t3 > 60: - this.tickInterval = "months_days"; - break; - case t3 > 30: - this.tickInterval = "week_days"; - break; - case t3 > 2: - this.tickInterval = "days"; - break; - case e2 > 2.4: - this.tickInterval = "hours"; - break; - case i2 > 15: - this.tickInterval = "minutes_fives"; - break; - case i2 > 5: - this.tickInterval = "minutes"; - break; - case i2 > 1: - this.tickInterval = "seconds_tens"; - break; - case 60 * i2 > 20: - this.tickInterval = "seconds_fives"; - break; - default: - this.tickInterval = "seconds"; - } - } }, { key: "generateYearScale", value: function(t3) { - var e2 = t3.firstVal, i2 = t3.currentMonth, a2 = t3.currentYear, s2 = t3.daysWidthOnXAxis, r2 = t3.numberOfYears, o2 = e2.minYear, n2 = 0, l2 = new I(this.ctx), h2 = "year"; - if (e2.minDate > 1 || e2.minMonth > 0) { - var c2 = l2.determineRemainingDaysOfYear(e2.minYear, e2.minMonth, e2.minDate); - n2 = (l2.determineDaysOfYear(e2.minYear) - c2 + 1) * s2, o2 = e2.minYear + 1, this.timeScaleArray.push({ position: n2, value: o2, unit: h2, year: o2, month: x.monthMod(i2 + 1) }); - } else - 1 === e2.minDate && 0 === e2.minMonth && this.timeScaleArray.push({ position: n2, value: o2, unit: h2, year: a2, month: x.monthMod(i2 + 1) }); - for (var d2 = o2, g2 = n2, u2 = 0; u2 < r2; u2++) - d2++, g2 = l2.determineDaysOfYear(d2 - 1) * s2 + g2, this.timeScaleArray.push({ position: g2, value: d2, unit: h2, year: d2, month: 1 }); - } }, { key: "generateMonthScale", value: function(t3) { - var e2 = t3.firstVal, i2 = t3.currentMonthDate, a2 = t3.currentMonth, s2 = t3.currentYear, r2 = t3.daysWidthOnXAxis, o2 = t3.numberOfMonths, n2 = a2, l2 = 0, h2 = new I(this.ctx), c2 = "month", d2 = 0; - if (e2.minDate > 1) { - l2 = (h2.determineDaysOfMonths(a2 + 1, e2.minYear) - i2 + 1) * r2, n2 = x.monthMod(a2 + 1); - var g2 = s2 + d2, u2 = x.monthMod(n2), p2 = n2; - 0 === n2 && (c2 = "year", p2 = g2, u2 = 1, g2 += d2 += 1), this.timeScaleArray.push({ position: l2, value: p2, unit: c2, year: g2, month: u2 }); - } else - this.timeScaleArray.push({ position: l2, value: n2, unit: c2, year: s2, month: x.monthMod(a2) }); - for (var f2 = n2 + 1, b2 = l2, v2 = 0, m2 = 1; v2 < o2; v2++, m2++) { - 0 === (f2 = x.monthMod(f2)) ? (c2 = "year", d2 += 1) : c2 = "month"; - var y2 = this._getYear(s2, f2, d2); - b2 = h2.determineDaysOfMonths(f2, y2) * r2 + b2; - var w2 = 0 === f2 ? y2 : f2; - this.timeScaleArray.push({ position: b2, value: w2, unit: c2, year: y2, month: 0 === f2 ? 1 : f2 }), f2++; - } - } }, { key: "generateDayScale", value: function(t3) { - var e2 = t3.firstVal, i2 = t3.currentMonth, a2 = t3.currentYear, s2 = t3.hoursWidthOnXAxis, r2 = t3.numberOfDays, o2 = new I(this.ctx), n2 = "day", l2 = e2.minDate + 1, h2 = l2, c2 = function(t4, e3, i3) { - return t4 > o2.determineDaysOfMonths(e3 + 1, i3) ? (h2 = 1, n2 = "month", g2 = e3 += 1, e3) : e3; - }, d2 = (24 - e2.minHour) * s2, g2 = l2, u2 = c2(h2, i2, a2); - 0 === e2.minHour && 1 === e2.minDate ? (d2 = 0, g2 = x.monthMod(e2.minMonth), n2 = "month", h2 = e2.minDate) : 1 !== e2.minDate && 0 === e2.minHour && 0 === e2.minMinute && (d2 = 0, l2 = e2.minDate, g2 = l2, u2 = c2(h2 = l2, i2, a2)), this.timeScaleArray.push({ position: d2, value: g2, unit: n2, year: this._getYear(a2, u2, 0), month: x.monthMod(u2), day: h2 }); - for (var p2 = d2, f2 = 0; f2 < r2; f2++) { - n2 = "day", u2 = c2(h2 += 1, u2, this._getYear(a2, u2, 0)); - var b2 = this._getYear(a2, u2, 0); - p2 = 24 * s2 + p2; - var v2 = 1 === h2 ? x.monthMod(u2) : h2; - this.timeScaleArray.push({ position: p2, value: v2, unit: n2, year: b2, month: x.monthMod(u2), day: v2 }); - } - } }, { key: "generateHourScale", value: function(t3) { - var e2 = t3.firstVal, i2 = t3.currentDate, a2 = t3.currentMonth, s2 = t3.currentYear, r2 = t3.minutesWidthOnXAxis, o2 = t3.numberOfHours, n2 = new I(this.ctx), l2 = "hour", h2 = function(t4, e3) { - return t4 > n2.determineDaysOfMonths(e3 + 1, s2) && (f2 = 1, e3 += 1), { month: e3, date: f2 }; - }, c2 = function(t4, e3) { - return t4 > n2.determineDaysOfMonths(e3 + 1, s2) ? e3 += 1 : e3; - }, d2 = 60 - (e2.minMinute + e2.minSecond / 60), g2 = d2 * r2, u2 = e2.minHour + 1, p2 = u2; - 60 === d2 && (g2 = 0, p2 = (u2 = e2.minHour) + 1); - var f2 = i2; - p2 >= 24 && (p2 = 0, f2 += 1, l2 = "day"); - var b2 = h2(f2, a2).month; - b2 = c2(f2, b2), this.timeScaleArray.push({ position: g2, value: u2, unit: l2, day: f2, hour: p2, year: s2, month: x.monthMod(b2) }), p2++; - for (var v2 = g2, m2 = 0; m2 < o2; m2++) { - if (l2 = "hour", p2 >= 24) - p2 = 0, l2 = "day", b2 = h2(f2 += 1, b2).month, b2 = c2(f2, b2); - var y2 = this._getYear(s2, b2, 0); - v2 = 60 * r2 + v2; - var w2 = 0 === p2 ? f2 : p2; - this.timeScaleArray.push({ position: v2, value: w2, unit: l2, hour: p2, day: f2, year: y2, month: x.monthMod(b2) }), p2++; - } - } }, { key: "generateMinuteScale", value: function(t3) { - for (var e2 = t3.currentMillisecond, i2 = t3.currentSecond, a2 = t3.currentMinute, s2 = t3.currentHour, r2 = t3.currentDate, o2 = t3.currentMonth, n2 = t3.currentYear, l2 = t3.minutesWidthOnXAxis, h2 = t3.secondsWidthOnXAxis, c2 = t3.numberOfMinutes, d2 = a2 + 1, g2 = r2, u2 = o2, p2 = n2, f2 = s2, b2 = (60 - i2 - e2 / 1e3) * h2, v2 = 0; v2 < c2; v2++) - d2 >= 60 && (d2 = 0, 24 === (f2 += 1) && (f2 = 0)), this.timeScaleArray.push({ position: b2, value: d2, unit: "minute", hour: f2, minute: d2, day: g2, year: this._getYear(p2, u2, 0), month: x.monthMod(u2) }), b2 += l2, d2++; - } }, { key: "generateSecondScale", value: function(t3) { - for (var e2 = t3.currentMillisecond, i2 = t3.currentSecond, a2 = t3.currentMinute, s2 = t3.currentHour, r2 = t3.currentDate, o2 = t3.currentMonth, n2 = t3.currentYear, l2 = t3.secondsWidthOnXAxis, h2 = t3.numberOfSeconds, c2 = i2 + 1, d2 = a2, g2 = r2, u2 = o2, p2 = n2, f2 = s2, b2 = (1e3 - e2) / 1e3 * l2, v2 = 0; v2 < h2; v2++) - c2 >= 60 && (c2 = 0, ++d2 >= 60 && (d2 = 0, 24 === ++f2 && (f2 = 0))), this.timeScaleArray.push({ position: b2, value: c2, unit: "second", hour: f2, minute: d2, second: c2, day: g2, year: this._getYear(p2, u2, 0), month: x.monthMod(u2) }), b2 += l2, c2++; - } }, { key: "createRawDateString", value: function(t3, e2) { - var i2 = t3.year; - return 0 === t3.month && (t3.month = 1), i2 += "-" + ("0" + t3.month.toString()).slice(-2), "day" === t3.unit ? i2 += "day" === t3.unit ? "-" + ("0" + e2).slice(-2) : "-01" : i2 += "-" + ("0" + (t3.day ? t3.day : "1")).slice(-2), "hour" === t3.unit ? i2 += "hour" === t3.unit ? "T" + ("0" + e2).slice(-2) : "T00" : i2 += "T" + ("0" + (t3.hour ? t3.hour : "0")).slice(-2), "minute" === t3.unit ? i2 += ":" + ("0" + e2).slice(-2) : i2 += ":" + (t3.minute ? ("0" + t3.minute).slice(-2) : "00"), "second" === t3.unit ? i2 += ":" + ("0" + e2).slice(-2) : i2 += ":00", this.utc && (i2 += ".000Z"), i2; - } }, { key: "formatDates", value: function(t3) { - var e2 = this, i2 = this.w; - return t3.map(function(t4) { - var a2 = t4.value.toString(), s2 = new I(e2.ctx), r2 = e2.createRawDateString(t4, a2), o2 = s2.getDate(s2.parseDate(r2)); - if (e2.utc || (o2 = s2.getDate(s2.parseDateWithTimezone(r2))), void 0 === i2.config.xaxis.labels.format) { - var n2 = "dd MMM", l2 = i2.config.xaxis.labels.datetimeFormatter; - "year" === t4.unit && (n2 = l2.year), "month" === t4.unit && (n2 = l2.month), "day" === t4.unit && (n2 = l2.day), "hour" === t4.unit && (n2 = l2.hour), "minute" === t4.unit && (n2 = l2.minute), "second" === t4.unit && (n2 = l2.second), a2 = s2.formatDate(o2, n2); - } else - a2 = s2.formatDate(o2, i2.config.xaxis.labels.format); - return { dateString: r2, position: t4.position, value: a2, unit: t4.unit, year: t4.year, month: t4.month }; - }); - } }, { key: "removeOverlappingTS", value: function(t3) { - var e2, i2 = this, a2 = new m(this.ctx), s2 = false; - t3.length > 0 && t3[0].value && t3.every(function(e3) { - return e3.value.length === t3[0].value.length; - }) && (s2 = true, e2 = a2.getTextRects(t3[0].value).width); - var r2 = 0, o2 = t3.map(function(o3, n2) { - if (n2 > 0 && i2.w.config.xaxis.labels.hideOverlappingLabels) { - var l2 = s2 ? e2 : a2.getTextRects(t3[r2].value).width, h2 = t3[r2].position; - return o3.position > h2 + l2 + 10 ? (r2 = n2, o3) : null; - } - return o3; - }); - return o2 = o2.filter(function(t4) { - return null !== t4; - }); - } }, { key: "_getYear", value: function(t3, e2, i2) { - return t3 + Math.floor(e2 / 12) + i2; - } }]), t2; - }(); - var Wt = function() { - function t2(e2, i2) { - a(this, t2), this.ctx = i2, this.w = i2.w, this.el = e2; - } - return r(t2, [{ key: "setupElements", value: function() { - var t3 = this.w.globals, e2 = this.w.config, i2 = e2.chart.type; - t3.axisCharts = ["line", "area", "bar", "rangeBar", "rangeArea", "candlestick", "boxPlot", "scatter", "bubble", "radar", "heatmap", "treemap"].indexOf(i2) > -1, t3.xyCharts = ["line", "area", "bar", "rangeBar", "rangeArea", "candlestick", "boxPlot", "scatter", "bubble"].indexOf(i2) > -1, t3.isBarHorizontal = ("bar" === e2.chart.type || "rangeBar" === e2.chart.type || "boxPlot" === e2.chart.type) && e2.plotOptions.bar.horizontal, t3.chartClass = ".apexcharts" + t3.chartID, t3.dom.baseEl = this.el, t3.dom.elWrap = document.createElement("div"), m.setAttrs(t3.dom.elWrap, { id: t3.chartClass.substring(1), class: "apexcharts-canvas " + t3.chartClass.substring(1) }), this.el.appendChild(t3.dom.elWrap), t3.dom.Paper = new window.SVG.Doc(t3.dom.elWrap), t3.dom.Paper.attr({ class: "apexcharts-svg", "xmlns:data": "ApexChartsNS", transform: "translate(".concat(e2.chart.offsetX, ", ").concat(e2.chart.offsetY, ")") }), t3.dom.Paper.node.style.background = "dark" !== e2.theme.mode || e2.chart.background ? e2.chart.background : "rgba(0, 0, 0, 0.8)", this.setSVGDimensions(), t3.dom.elLegendForeign = document.createElementNS(t3.SVGNS, "foreignObject"), m.setAttrs(t3.dom.elLegendForeign, { x: 0, y: 0, width: t3.svgWidth, height: t3.svgHeight }), t3.dom.elLegendWrap = document.createElement("div"), t3.dom.elLegendWrap.classList.add("apexcharts-legend"), t3.dom.elLegendWrap.setAttribute("xmlns", "http://www.w3.org/1999/xhtml"), t3.dom.elLegendForeign.appendChild(t3.dom.elLegendWrap), t3.dom.Paper.node.appendChild(t3.dom.elLegendForeign), t3.dom.elGraphical = t3.dom.Paper.group().attr({ class: "apexcharts-inner apexcharts-graphical" }), t3.dom.elDefs = t3.dom.Paper.defs(), t3.dom.Paper.add(t3.dom.elGraphical), t3.dom.elGraphical.add(t3.dom.elDefs); - } }, { key: "plotChartType", value: function(t3, e2) { - var i2 = this.w, a2 = i2.config, s2 = i2.globals, r2 = { series: [], i: [] }, o2 = { series: [], i: [] }, n2 = { series: [], i: [] }, l2 = { series: [], i: [] }, h2 = { series: [], i: [] }, c2 = { series: [], i: [] }, d2 = { series: [], i: [] }, g2 = { series: [], i: [] }, u2 = { series: [], seriesRangeEnd: [], i: [] }; - s2.series.map(function(e3, p3) { - var f3 = 0; - void 0 !== t3[p3].type ? ("column" === t3[p3].type || "bar" === t3[p3].type ? (s2.series.length > 1 && a2.plotOptions.bar.horizontal && console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"), h2.series.push(e3), h2.i.push(p3), f3++, i2.globals.columnSeries = h2.series) : "area" === t3[p3].type ? (o2.series.push(e3), o2.i.push(p3), f3++) : "line" === t3[p3].type ? (r2.series.push(e3), r2.i.push(p3), f3++) : "scatter" === t3[p3].type ? (n2.series.push(e3), n2.i.push(p3)) : "bubble" === t3[p3].type ? (l2.series.push(e3), l2.i.push(p3), f3++) : "candlestick" === t3[p3].type ? (c2.series.push(e3), c2.i.push(p3), f3++) : "boxPlot" === t3[p3].type ? (d2.series.push(e3), d2.i.push(p3), f3++) : "rangeBar" === t3[p3].type ? (g2.series.push(e3), g2.i.push(p3), f3++) : "rangeArea" === t3[p3].type ? (u2.series.push(s2.seriesRangeStart[p3]), u2.seriesRangeEnd.push(s2.seriesRangeEnd[p3]), u2.i.push(p3), f3++) : console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble/candlestick/boxPlot/rangeBar/rangeArea"), f3 > 1 && (s2.comboCharts = true)) : (r2.series.push(e3), r2.i.push(p3)); - }); - var p2 = new Ft(this.ctx, e2), f2 = new kt(this.ctx, e2); - this.ctx.pie = new Lt(this.ctx); - var x2 = new It(this.ctx); - this.ctx.rangeBar = new Mt(this.ctx, e2); - var b2 = new Pt(this.ctx), v2 = []; - if (s2.comboCharts) { - if (o2.series.length > 0 && v2.push(p2.draw(o2.series, "area", o2.i)), h2.series.length > 0) - if (i2.config.chart.stacked) { - var m2 = new wt(this.ctx, e2); - v2.push(m2.draw(h2.series, h2.i)); - } else - this.ctx.bar = new yt(this.ctx, e2), v2.push(this.ctx.bar.draw(h2.series, h2.i)); - if (u2.series.length > 0 && v2.push(p2.draw(u2.series, "rangeArea", u2.i, u2.seriesRangeEnd)), r2.series.length > 0 && v2.push(p2.draw(r2.series, "line", r2.i)), c2.series.length > 0 && v2.push(f2.draw(c2.series, "candlestick", c2.i)), d2.series.length > 0 && v2.push(f2.draw(d2.series, "boxPlot", d2.i)), g2.series.length > 0 && v2.push(this.ctx.rangeBar.draw(g2.series, g2.i)), n2.series.length > 0) { - var y2 = new Ft(this.ctx, e2, true); - v2.push(y2.draw(n2.series, "scatter", n2.i)); - } - if (l2.series.length > 0) { - var w2 = new Ft(this.ctx, e2, true); - v2.push(w2.draw(l2.series, "bubble", l2.i)); - } - } else - switch (a2.chart.type) { - case "line": - v2 = p2.draw(s2.series, "line"); - break; - case "area": - v2 = p2.draw(s2.series, "area"); - break; - case "bar": - if (a2.chart.stacked) - v2 = new wt(this.ctx, e2).draw(s2.series); - else - this.ctx.bar = new yt(this.ctx, e2), v2 = this.ctx.bar.draw(s2.series); - break; - case "candlestick": - v2 = new kt(this.ctx, e2).draw(s2.series, "candlestick"); - break; - case "boxPlot": - v2 = new kt(this.ctx, e2).draw(s2.series, a2.chart.type); - break; - case "rangeBar": - v2 = this.ctx.rangeBar.draw(s2.series); - break; - case "rangeArea": - v2 = p2.draw(s2.seriesRangeStart, "rangeArea", void 0, s2.seriesRangeEnd); - break; - case "heatmap": - v2 = new St(this.ctx, e2).draw(s2.series); - break; - case "treemap": - v2 = new Dt(this.ctx, e2).draw(s2.series); - break; - case "pie": - case "donut": - case "polarArea": - v2 = this.ctx.pie.draw(s2.series); - break; - case "radialBar": - v2 = x2.draw(s2.series); - break; - case "radar": - v2 = b2.draw(s2.series); - break; - default: - v2 = p2.draw(s2.series); - } - return v2; - } }, { key: "setSVGDimensions", value: function() { - var t3 = this.w.globals, e2 = this.w.config; - t3.svgWidth = e2.chart.width, t3.svgHeight = e2.chart.height; - var i2 = x.getDimensions(this.el), a2 = e2.chart.width.toString().split(/[0-9]+/g).pop(); - "%" === a2 ? x.isNumber(i2[0]) && (0 === i2[0].width && (i2 = x.getDimensions(this.el.parentNode)), t3.svgWidth = i2[0] * parseInt(e2.chart.width, 10) / 100) : "px" !== a2 && "" !== a2 || (t3.svgWidth = parseInt(e2.chart.width, 10)); - var s2 = e2.chart.height.toString().split(/[0-9]+/g).pop(); - if ("auto" !== t3.svgHeight && "" !== t3.svgHeight) - if ("%" === s2) { - var r2 = x.getDimensions(this.el.parentNode); - t3.svgHeight = r2[1] * parseInt(e2.chart.height, 10) / 100; - } else - t3.svgHeight = parseInt(e2.chart.height, 10); - else - t3.axisCharts ? t3.svgHeight = t3.svgWidth / 1.61 : t3.svgHeight = t3.svgWidth / 1.2; - if (t3.svgWidth < 0 && (t3.svgWidth = 0), t3.svgHeight < 0 && (t3.svgHeight = 0), m.setAttrs(t3.dom.Paper.node, { width: t3.svgWidth, height: t3.svgHeight }), "%" !== s2) { - var o2 = e2.chart.sparkline.enabled ? 0 : t3.axisCharts ? e2.chart.parentHeightOffset : 0; - t3.dom.Paper.node.parentNode.parentNode.style.minHeight = t3.svgHeight + o2 + "px"; - } - t3.dom.elWrap.style.width = t3.svgWidth + "px", t3.dom.elWrap.style.height = t3.svgHeight + "px"; - } }, { key: "shiftGraphPosition", value: function() { - var t3 = this.w.globals, e2 = t3.translateY, i2 = { transform: "translate(" + t3.translateX + ", " + e2 + ")" }; - m.setAttrs(t3.dom.elGraphical.node, i2); - } }, { key: "resizeNonAxisCharts", value: function() { - var t3 = this.w, e2 = t3.globals, i2 = 0, a2 = t3.config.chart.sparkline.enabled ? 1 : 15; - a2 += t3.config.grid.padding.bottom, "top" !== t3.config.legend.position && "bottom" !== t3.config.legend.position || !t3.config.legend.show || t3.config.legend.floating || (i2 = new lt(this.ctx).legendHelpers.getLegendBBox().clwh + 10); - var s2 = t3.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"), r2 = 2.05 * t3.globals.radialSize; - if (s2 && !t3.config.chart.sparkline.enabled && 0 !== t3.config.plotOptions.radialBar.startAngle) { - var o2 = x.getBoundingClientRect(s2); - r2 = o2.bottom; - var n2 = o2.bottom - o2.top; - r2 = Math.max(2.05 * t3.globals.radialSize, n2); - } - var l2 = r2 + e2.translateY + i2 + a2; - e2.dom.elLegendForeign && e2.dom.elLegendForeign.setAttribute("height", l2), t3.config.chart.height && String(t3.config.chart.height).indexOf("%") > 0 || (e2.dom.elWrap.style.height = l2 + "px", m.setAttrs(e2.dom.Paper.node, { height: l2 }), e2.dom.Paper.node.parentNode.parentNode.style.minHeight = l2 + "px"); - } }, { key: "coreCalculations", value: function() { - new U(this.ctx).init(); - } }, { key: "resetGlobals", value: function() { - var t3 = this, e2 = function() { - return t3.w.config.series.map(function(t4) { - return []; - }); - }, i2 = new Y(), a2 = this.w.globals; - i2.initGlobalVars(a2), a2.seriesXvalues = e2(), a2.seriesYvalues = e2(); - } }, { key: "isMultipleY", value: function() { - if (this.w.config.yaxis.constructor === Array && this.w.config.yaxis.length > 1) - return this.w.globals.isMultipleYAxis = true, true; - } }, { key: "xySettings", value: function() { - var t3 = null, e2 = this.w; - if (e2.globals.axisCharts) { - if ("back" === e2.config.xaxis.crosshairs.position) - new Q(this.ctx).drawXCrosshairs(); - if ("back" === e2.config.yaxis[0].crosshairs.position) - new Q(this.ctx).drawYCrosshairs(); - if ("datetime" === e2.config.xaxis.type && void 0 === e2.config.xaxis.labels.formatter) { - this.ctx.timeScale = new Nt(this.ctx); - var i2 = []; - isFinite(e2.globals.minX) && isFinite(e2.globals.maxX) && !e2.globals.isBarHorizontal ? i2 = this.ctx.timeScale.calculateTimeScaleTicks(e2.globals.minX, e2.globals.maxX) : e2.globals.isBarHorizontal && (i2 = this.ctx.timeScale.calculateTimeScaleTicks(e2.globals.minY, e2.globals.maxY)), this.ctx.timeScale.recalcDimensionsBasedOnFormat(i2); - } - t3 = new y(this.ctx).getCalculatedRatios(); - } - return t3; - } }, { key: "updateSourceChart", value: function(t3) { - this.ctx.w.globals.selection = void 0, this.ctx.updateHelpers._updateOptions({ chart: { selection: { xaxis: { min: t3.w.globals.minX, max: t3.w.globals.maxX } } } }, false, false); - } }, { key: "setupBrushHandler", value: function() { - var t3 = this, i2 = this.w; - if (i2.config.chart.brush.enabled && "function" != typeof i2.config.chart.events.selection) { - var a2 = Array.isArray(i2.config.chart.brush.targets) || [i2.config.chart.brush.target]; - a2.forEach(function(e2) { - var i3 = ApexCharts.getChartByID(e2); - i3.w.globals.brushSource = t3.ctx, "function" != typeof i3.w.config.chart.events.zoomed && (i3.w.config.chart.events.zoomed = function() { - t3.updateSourceChart(i3); - }), "function" != typeof i3.w.config.chart.events.scrolled && (i3.w.config.chart.events.scrolled = function() { - t3.updateSourceChart(i3); - }); - }), i2.config.chart.events.selection = function(t4, s2) { - a2.forEach(function(t5) { - var a3 = ApexCharts.getChartByID(t5), r2 = x.clone(i2.config.yaxis); - if (i2.config.chart.brush.autoScaleYaxis && 1 === a3.w.globals.series.length) { - var o2 = new _(a3); - r2 = o2.autoScaleY(a3, r2, s2); - } - var n2 = a3.w.config.yaxis.reduce(function(t6, i3, s3) { - return [].concat(u(t6), [e(e({}, a3.w.config.yaxis[s3]), {}, { min: r2[0].min, max: r2[0].max })]); - }, []); - a3.ctx.updateHelpers._updateOptions({ xaxis: { min: s2.xaxis.min, max: s2.xaxis.max }, yaxis: n2 }, false, false, false, false); - }); - }; - } - } }]), t2; - }(); - var Bt = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "_updateOptions", value: function(t3) { - var e2 = this, a2 = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], s2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], r2 = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3], o2 = arguments.length > 4 && void 0 !== arguments[4] && arguments[4]; - return new Promise(function(n2) { - var l2 = [e2.ctx]; - r2 && (l2 = e2.ctx.getSyncedCharts()), e2.ctx.w.globals.isExecCalled && (l2 = [e2.ctx], e2.ctx.w.globals.isExecCalled = false), l2.forEach(function(r3, h2) { - var c2 = r3.w; - if (c2.globals.shouldAnimate = s2, a2 || (c2.globals.resized = true, c2.globals.dataChanged = true, s2 && r3.series.getPreviousPaths()), t3 && "object" === i(t3) && (r3.config = new E(t3), t3 = y.extendArrayProps(r3.config, t3, c2), r3.w.globals.chartID !== e2.ctx.w.globals.chartID && delete t3.series, c2.config = x.extend(c2.config, t3), o2 && (c2.globals.lastXAxis = t3.xaxis ? x.clone(t3.xaxis) : [], c2.globals.lastYAxis = t3.yaxis ? x.clone(t3.yaxis) : [], c2.globals.initialConfig = x.extend({}, c2.config), c2.globals.initialSeries = x.clone(c2.config.series), t3.series))) { - for (var d2 = 0; d2 < c2.globals.collapsedSeriesIndices.length; d2++) { - var g2 = c2.config.series[c2.globals.collapsedSeriesIndices[d2]]; - c2.globals.collapsedSeries[d2].data = c2.globals.axisCharts ? g2.data.slice() : g2; - } - for (var u2 = 0; u2 < c2.globals.ancillaryCollapsedSeriesIndices.length; u2++) { - var p2 = c2.config.series[c2.globals.ancillaryCollapsedSeriesIndices[u2]]; - c2.globals.ancillaryCollapsedSeries[u2].data = c2.globals.axisCharts ? p2.data.slice() : p2; - } - r3.series.emptyCollapsedSeries(c2.config.series); - } - return r3.update(t3).then(function() { - h2 === l2.length - 1 && n2(r3); - }); - }); - }); - } }, { key: "_updateSeries", value: function(t3, e2) { - var i2 = this, a2 = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; - return new Promise(function(s2) { - var r2, o2 = i2.w; - return o2.globals.shouldAnimate = e2, o2.globals.dataChanged = true, e2 && i2.ctx.series.getPreviousPaths(), o2.globals.axisCharts ? (0 === (r2 = t3.map(function(t4, e3) { - return i2._extendSeries(t4, e3); - })).length && (r2 = [{ data: [] }]), o2.config.series = r2) : o2.config.series = t3.slice(), a2 && (o2.globals.initialConfig.series = x.clone(o2.config.series), o2.globals.initialSeries = x.clone(o2.config.series)), i2.ctx.update().then(function() { - s2(i2.ctx); - }); - }); - } }, { key: "_extendSeries", value: function(t3, i2) { - var a2 = this.w, s2 = a2.config.series[i2]; - return e(e({}, a2.config.series[i2]), {}, { name: t3.name ? t3.name : null == s2 ? void 0 : s2.name, color: t3.color ? t3.color : null == s2 ? void 0 : s2.color, type: t3.type ? t3.type : null == s2 ? void 0 : s2.type, group: t3.group ? t3.group : null == s2 ? void 0 : s2.group, data: t3.data ? t3.data : null == s2 ? void 0 : s2.data, zIndex: void 0 !== t3.zIndex ? t3.zIndex : i2 }); - } }, { key: "toggleDataPointSelection", value: function(t3, e2) { - var i2 = this.w, a2 = null, s2 = ".apexcharts-series[data\\:realIndex='".concat(t3, "']"); - return i2.globals.axisCharts ? a2 = i2.globals.dom.Paper.select("".concat(s2, " path[j='").concat(e2, "'], ").concat(s2, " circle[j='").concat(e2, "'], ").concat(s2, " rect[j='").concat(e2, "']")).members[0] : void 0 === e2 && (a2 = i2.globals.dom.Paper.select("".concat(s2, " path[j='").concat(t3, "']")).members[0], "pie" !== i2.config.chart.type && "polarArea" !== i2.config.chart.type && "donut" !== i2.config.chart.type || this.ctx.pie.pieClicked(t3)), a2 ? (new m(this.ctx).pathMouseDown(a2, null), a2.node ? a2.node : null) : (console.warn("toggleDataPointSelection: Element not found"), null); - } }, { key: "forceXAxisUpdate", value: function(t3) { - var e2 = this.w; - if (["min", "max"].forEach(function(i3) { - void 0 !== t3.xaxis[i3] && (e2.config.xaxis[i3] = t3.xaxis[i3], e2.globals.lastXAxis[i3] = t3.xaxis[i3]); - }), t3.xaxis.categories && t3.xaxis.categories.length && (e2.config.xaxis.categories = t3.xaxis.categories), e2.config.xaxis.convertedCatToNumeric) { - var i2 = new X(t3); - t3 = i2.convertCatToNumericXaxis(t3, this.ctx); - } - return t3; - } }, { key: "forceYAxisUpdate", value: function(t3) { - return t3.chart && t3.chart.stacked && "100%" === t3.chart.stackType && (Array.isArray(t3.yaxis) ? t3.yaxis.forEach(function(e2, i2) { - t3.yaxis[i2].min = 0, t3.yaxis[i2].max = 100; - }) : (t3.yaxis.min = 0, t3.yaxis.max = 100)), t3; - } }, { key: "revertDefaultAxisMinMax", value: function(t3) { - var e2 = this, i2 = this.w, a2 = i2.globals.lastXAxis, s2 = i2.globals.lastYAxis; - t3 && t3.xaxis && (a2 = t3.xaxis), t3 && t3.yaxis && (s2 = t3.yaxis), i2.config.xaxis.min = a2.min, i2.config.xaxis.max = a2.max; - var r2 = function(t4) { - void 0 !== s2[t4] && (i2.config.yaxis[t4].min = s2[t4].min, i2.config.yaxis[t4].max = s2[t4].max); - }; - i2.config.yaxis.map(function(t4, a3) { - i2.globals.zoomed || void 0 !== s2[a3] ? r2(a3) : void 0 !== e2.ctx.opts.yaxis[a3] && (t4.min = e2.ctx.opts.yaxis[a3].min, t4.max = e2.ctx.opts.yaxis[a3].max); - }); - } }]), t2; - }(); - Rt = "undefined" != typeof window ? window : void 0, Ht = function(t2, e2) { - var a2 = (void 0 !== this ? this : t2).SVG = function(t3) { - if (a2.supported) - return t3 = new a2.Doc(t3), a2.parser.draw || a2.prepare(), t3; - }; - if (a2.ns = "http://www.w3.org/2000/svg", a2.xmlns = "http://www.w3.org/2000/xmlns/", a2.xlink = "http://www.w3.org/1999/xlink", a2.svgjs = "http://svgjs.dev", a2.supported = true, !a2.supported) - return false; - a2.did = 1e3, a2.eid = function(t3) { - return "Svgjs" + d2(t3) + a2.did++; - }, a2.create = function(t3) { - var i2 = e2.createElementNS(this.ns, t3); - return i2.setAttribute("id", this.eid(t3)), i2; - }, a2.extend = function() { - var t3, e3; - e3 = (t3 = [].slice.call(arguments)).pop(); - for (var i2 = t3.length - 1; i2 >= 0; i2--) - if (t3[i2]) - for (var s3 in e3) - t3[i2].prototype[s3] = e3[s3]; - a2.Set && a2.Set.inherit && a2.Set.inherit(); - }, a2.invent = function(t3) { - var e3 = "function" == typeof t3.create ? t3.create : function() { - this.constructor.call(this, a2.create(t3.create)); - }; - return t3.inherit && (e3.prototype = new t3.inherit()), t3.extend && a2.extend(e3, t3.extend), t3.construct && a2.extend(t3.parent || a2.Container, t3.construct), e3; - }, a2.adopt = function(e3) { - return e3 ? e3.instance ? e3.instance : ((i2 = "svg" == e3.nodeName ? e3.parentNode instanceof t2.SVGElement ? new a2.Nested() : new a2.Doc() : "linearGradient" == e3.nodeName ? new a2.Gradient("linear") : "radialGradient" == e3.nodeName ? new a2.Gradient("radial") : a2[d2(e3.nodeName)] ? new a2[d2(e3.nodeName)]() : new a2.Element(e3)).type = e3.nodeName, i2.node = e3, e3.instance = i2, i2 instanceof a2.Doc && i2.namespace().defs(), i2.setData(JSON.parse(e3.getAttribute("svgjs:data")) || {}), i2) : null; - var i2; - }, a2.prepare = function() { - var t3 = e2.getElementsByTagName("body")[0], i2 = (t3 ? new a2.Doc(t3) : a2.adopt(e2.documentElement).nested()).size(2, 0); - a2.parser = { body: t3 || e2.documentElement, draw: i2.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node, poly: i2.polyline().node, path: i2.path().node, native: a2.create("svg") }; - }, a2.parser = { native: a2.create("svg") }, e2.addEventListener("DOMContentLoaded", function() { - a2.parser.draw || a2.prepare(); - }, false), a2.regex = { numberAndUnit: /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i, hex: /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i, rgb: /rgb\((\d+),(\d+),(\d+)\)/, reference: /#([a-z0-9\-_]+)/i, transforms: /\)\s*,?\s*/, whitespace: /\s/g, isHex: /^#[a-f0-9]{3,6}$/i, isRgb: /^rgb\(/, isCss: /[^:]+:[^;]+;?/, isBlank: /^(\s+)?$/, isNumber: /^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, isPercent: /^-?[\d\.]+%$/, isImage: /\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i, delimiter: /[\s,]+/, hyphen: /([^e])\-/gi, pathLetters: /[MLHVCSQTAZ]/gi, isPathLetter: /[MLHVCSQTAZ]/i, numbersWithDots: /((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi, dots: /\./g }, a2.utils = { map: function(t3, e3) { - for (var i2 = t3.length, a3 = [], s3 = 0; s3 < i2; s3++) - a3.push(e3(t3[s3])); - return a3; - }, filter: function(t3, e3) { - for (var i2 = t3.length, a3 = [], s3 = 0; s3 < i2; s3++) - e3(t3[s3]) && a3.push(t3[s3]); - return a3; - }, filterSVGElements: function(e3) { - return this.filter(e3, function(e4) { - return e4 instanceof t2.SVGElement; - }); - } }, a2.defaults = { attrs: { "fill-opacity": 1, "stroke-opacity": 1, "stroke-width": 0, "stroke-linejoin": "miter", "stroke-linecap": "butt", fill: "#000000", stroke: "#000000", opacity: 1, x: 0, y: 0, cx: 0, cy: 0, width: 0, height: 0, r: 0, rx: 0, ry: 0, offset: 0, "stop-opacity": 1, "stop-color": "#000000", "font-size": 16, "font-family": "Helvetica, Arial, sans-serif", "text-anchor": "start" } }, a2.Color = function(t3) { - var e3, s3; - this.r = 0, this.g = 0, this.b = 0, t3 && ("string" == typeof t3 ? a2.regex.isRgb.test(t3) ? (e3 = a2.regex.rgb.exec(t3.replace(a2.regex.whitespace, "")), this.r = parseInt(e3[1]), this.g = parseInt(e3[2]), this.b = parseInt(e3[3])) : a2.regex.isHex.test(t3) && (e3 = a2.regex.hex.exec(4 == (s3 = t3).length ? ["#", s3.substring(1, 2), s3.substring(1, 2), s3.substring(2, 3), s3.substring(2, 3), s3.substring(3, 4), s3.substring(3, 4)].join("") : s3), this.r = parseInt(e3[1], 16), this.g = parseInt(e3[2], 16), this.b = parseInt(e3[3], 16)) : "object" === i(t3) && (this.r = t3.r, this.g = t3.g, this.b = t3.b)); - }, a2.extend(a2.Color, { toString: function() { - return this.toHex(); - }, toHex: function() { - return "#" + g2(this.r) + g2(this.g) + g2(this.b); - }, toRgb: function() { - return "rgb(" + [this.r, this.g, this.b].join() + ")"; - }, brightness: function() { - return this.r / 255 * 0.3 + this.g / 255 * 0.59 + this.b / 255 * 0.11; - }, morph: function(t3) { - return this.destination = new a2.Color(t3), this; - }, at: function(t3) { - return this.destination ? (t3 = t3 < 0 ? 0 : t3 > 1 ? 1 : t3, new a2.Color({ r: ~~(this.r + (this.destination.r - this.r) * t3), g: ~~(this.g + (this.destination.g - this.g) * t3), b: ~~(this.b + (this.destination.b - this.b) * t3) })) : this; - } }), a2.Color.test = function(t3) { - return t3 += "", a2.regex.isHex.test(t3) || a2.regex.isRgb.test(t3); - }, a2.Color.isRgb = function(t3) { - return t3 && "number" == typeof t3.r && "number" == typeof t3.g && "number" == typeof t3.b; - }, a2.Color.isColor = function(t3) { - return a2.Color.isRgb(t3) || a2.Color.test(t3); - }, a2.Array = function(t3, e3) { - 0 == (t3 = (t3 || []).valueOf()).length && e3 && (t3 = e3.valueOf()), this.value = this.parse(t3); - }, a2.extend(a2.Array, { toString: function() { - return this.value.join(" "); - }, valueOf: function() { - return this.value; - }, parse: function(t3) { - return t3 = t3.valueOf(), Array.isArray(t3) ? t3 : this.split(t3); - } }), a2.PointArray = function(t3, e3) { - a2.Array.call(this, t3, e3 || [[0, 0]]); - }, a2.PointArray.prototype = new a2.Array(), a2.PointArray.prototype.constructor = a2.PointArray; - for (var s2 = { M: function(t3, e3, i2) { - return e3.x = i2.x = t3[0], e3.y = i2.y = t3[1], ["M", e3.x, e3.y]; - }, L: function(t3, e3) { - return e3.x = t3[0], e3.y = t3[1], ["L", t3[0], t3[1]]; - }, H: function(t3, e3) { - return e3.x = t3[0], ["H", t3[0]]; - }, V: function(t3, e3) { - return e3.y = t3[0], ["V", t3[0]]; - }, C: function(t3, e3) { - return e3.x = t3[4], e3.y = t3[5], ["C", t3[0], t3[1], t3[2], t3[3], t3[4], t3[5]]; - }, Q: function(t3, e3) { - return e3.x = t3[2], e3.y = t3[3], ["Q", t3[0], t3[1], t3[2], t3[3]]; - }, S: function(t3, e3) { - return e3.x = t3[2], e3.y = t3[3], ["S", t3[0], t3[1], t3[2], t3[3]]; - }, Z: function(t3, e3, i2) { - return e3.x = i2.x, e3.y = i2.y, ["Z"]; - } }, r2 = "mlhvqtcsaz".split(""), o2 = 0, n2 = r2.length; o2 < n2; ++o2) - s2[r2[o2]] = /* @__PURE__ */ function(t3) { - return function(e3, i2, a3) { - if ("H" == t3) - e3[0] = e3[0] + i2.x; - else if ("V" == t3) - e3[0] = e3[0] + i2.y; - else if ("A" == t3) - e3[5] = e3[5] + i2.x, e3[6] = e3[6] + i2.y; - else - for (var r3 = 0, o3 = e3.length; r3 < o3; ++r3) - e3[r3] = e3[r3] + (r3 % 2 ? i2.y : i2.x); - if (s2 && "function" == typeof s2[t3]) - return s2[t3](e3, i2, a3); - }; - }(r2[o2].toUpperCase()); - a2.PathArray = function(t3, e3) { - a2.Array.call(this, t3, e3 || [["M", 0, 0]]); - }, a2.PathArray.prototype = new a2.Array(), a2.PathArray.prototype.constructor = a2.PathArray, a2.extend(a2.PathArray, { toString: function() { - return function(t3) { - for (var e3 = 0, i2 = t3.length, a3 = ""; e3 < i2; e3++) - a3 += t3[e3][0], null != t3[e3][1] && (a3 += t3[e3][1], null != t3[e3][2] && (a3 += " ", a3 += t3[e3][2], null != t3[e3][3] && (a3 += " ", a3 += t3[e3][3], a3 += " ", a3 += t3[e3][4], null != t3[e3][5] && (a3 += " ", a3 += t3[e3][5], a3 += " ", a3 += t3[e3][6], null != t3[e3][7] && (a3 += " ", a3 += t3[e3][7]))))); - return a3 + " "; - }(this.value); - }, move: function(t3, e3) { - var i2 = this.bbox(); - return i2.x, i2.y, this; - }, at: function(t3) { - if (!this.destination) - return this; - for (var e3 = this.value, i2 = this.destination.value, s3 = [], r3 = new a2.PathArray(), o3 = 0, n3 = e3.length; o3 < n3; o3++) { - s3[o3] = [e3[o3][0]]; - for (var l3 = 1, h3 = e3[o3].length; l3 < h3; l3++) - s3[o3][l3] = e3[o3][l3] + (i2[o3][l3] - e3[o3][l3]) * t3; - "A" === s3[o3][0] && (s3[o3][4] = +(0 != s3[o3][4]), s3[o3][5] = +(0 != s3[o3][5])); - } - return r3.value = s3, r3; - }, parse: function(t3) { - if (t3 instanceof a2.PathArray) - return t3.valueOf(); - var e3, i2 = { M: 2, L: 2, H: 1, V: 1, C: 6, S: 4, Q: 4, T: 2, A: 7, Z: 0 }; - t3 = "string" == typeof t3 ? t3.replace(a2.regex.numbersWithDots, h2).replace(a2.regex.pathLetters, " $& ").replace(a2.regex.hyphen, "$1 -").trim().split(a2.regex.delimiter) : t3.reduce(function(t4, e4) { - return [].concat.call(t4, e4); - }, []); - var r3 = [], o3 = new a2.Point(), n3 = new a2.Point(), l3 = 0, c3 = t3.length; - do { - a2.regex.isPathLetter.test(t3[l3]) ? (e3 = t3[l3], ++l3) : "M" == e3 ? e3 = "L" : "m" == e3 && (e3 = "l"), r3.push(s2[e3].call(null, t3.slice(l3, l3 += i2[e3.toUpperCase()]).map(parseFloat), o3, n3)); - } while (c3 > l3); - return r3; - }, bbox: function() { - return a2.parser.draw || a2.prepare(), a2.parser.path.setAttribute("d", this.toString()), a2.parser.path.getBBox(); - } }), a2.Number = a2.invent({ create: function(t3, e3) { - this.value = 0, this.unit = e3 || "", "number" == typeof t3 ? this.value = isNaN(t3) ? 0 : isFinite(t3) ? t3 : t3 < 0 ? -34e37 : 34e37 : "string" == typeof t3 ? (e3 = t3.match(a2.regex.numberAndUnit)) && (this.value = parseFloat(e3[1]), "%" == e3[5] ? this.value /= 100 : "s" == e3[5] && (this.value *= 1e3), this.unit = e3[5]) : t3 instanceof a2.Number && (this.value = t3.valueOf(), this.unit = t3.unit); - }, extend: { toString: function() { - return ("%" == this.unit ? ~~(1e8 * this.value) / 1e6 : "s" == this.unit ? this.value / 1e3 : this.value) + this.unit; - }, toJSON: function() { - return this.toString(); - }, valueOf: function() { - return this.value; - }, plus: function(t3) { - return t3 = new a2.Number(t3), new a2.Number(this + t3, this.unit || t3.unit); - }, minus: function(t3) { - return t3 = new a2.Number(t3), new a2.Number(this - t3, this.unit || t3.unit); - }, times: function(t3) { - return t3 = new a2.Number(t3), new a2.Number(this * t3, this.unit || t3.unit); - }, divide: function(t3) { - return t3 = new a2.Number(t3), new a2.Number(this / t3, this.unit || t3.unit); - }, to: function(t3) { - var e3 = new a2.Number(this); - return "string" == typeof t3 && (e3.unit = t3), e3; - }, morph: function(t3) { - return this.destination = new a2.Number(t3), t3.relative && (this.destination.value += this.value), this; - }, at: function(t3) { - return this.destination ? new a2.Number(this.destination).minus(this).times(t3).plus(this) : this; - } } }), a2.Element = a2.invent({ create: function(t3) { - this._stroke = a2.defaults.attrs.stroke, this._event = null, this.dom = {}, (this.node = t3) && (this.type = t3.nodeName, this.node.instance = this, this._stroke = t3.getAttribute("stroke") || this._stroke); - }, extend: { x: function(t3) { - return this.attr("x", t3); - }, y: function(t3) { - return this.attr("y", t3); - }, cx: function(t3) { - return null == t3 ? this.x() + this.width() / 2 : this.x(t3 - this.width() / 2); - }, cy: function(t3) { - return null == t3 ? this.y() + this.height() / 2 : this.y(t3 - this.height() / 2); - }, move: function(t3, e3) { - return this.x(t3).y(e3); - }, center: function(t3, e3) { - return this.cx(t3).cy(e3); - }, width: function(t3) { - return this.attr("width", t3); - }, height: function(t3) { - return this.attr("height", t3); - }, size: function(t3, e3) { - var i2 = u2(this, t3, e3); - return this.width(new a2.Number(i2.width)).height(new a2.Number(i2.height)); - }, clone: function(t3) { - this.writeDataToDom(); - var e3 = x2(this.node.cloneNode(true)); - return t3 ? t3.add(e3) : this.after(e3), e3; - }, remove: function() { - return this.parent() && this.parent().removeElement(this), this; - }, replace: function(t3) { - return this.after(t3).remove(), t3; - }, addTo: function(t3) { - return t3.put(this); - }, putIn: function(t3) { - return t3.add(this); - }, id: function(t3) { - return this.attr("id", t3); - }, show: function() { - return this.style("display", ""); - }, hide: function() { - return this.style("display", "none"); - }, visible: function() { - return "none" != this.style("display"); - }, toString: function() { - return this.attr("id"); - }, classes: function() { - var t3 = this.attr("class"); - return null == t3 ? [] : t3.trim().split(a2.regex.delimiter); - }, hasClass: function(t3) { - return -1 != this.classes().indexOf(t3); - }, addClass: function(t3) { - if (!this.hasClass(t3)) { - var e3 = this.classes(); - e3.push(t3), this.attr("class", e3.join(" ")); - } - return this; - }, removeClass: function(t3) { - return this.hasClass(t3) && this.attr("class", this.classes().filter(function(e3) { - return e3 != t3; - }).join(" ")), this; - }, toggleClass: function(t3) { - return this.hasClass(t3) ? this.removeClass(t3) : this.addClass(t3); - }, reference: function(t3) { - return a2.get(this.attr(t3)); - }, parent: function(e3) { - var i2 = this; - if (!i2.node.parentNode) - return null; - if (i2 = a2.adopt(i2.node.parentNode), !e3) - return i2; - for (; i2 && i2.node instanceof t2.SVGElement; ) { - if ("string" == typeof e3 ? i2.matches(e3) : i2 instanceof e3) - return i2; - if (!i2.node.parentNode || "#document" == i2.node.parentNode.nodeName) - return null; - i2 = a2.adopt(i2.node.parentNode); - } - }, doc: function() { - return this instanceof a2.Doc ? this : this.parent(a2.Doc); - }, parents: function(t3) { - var e3 = [], i2 = this; - do { - if (!(i2 = i2.parent(t3)) || !i2.node) - break; - e3.push(i2); - } while (i2.parent); - return e3; - }, matches: function(t3) { - return function(t4, e3) { - return (t4.matches || t4.matchesSelector || t4.msMatchesSelector || t4.mozMatchesSelector || t4.webkitMatchesSelector || t4.oMatchesSelector).call(t4, e3); - }(this.node, t3); - }, native: function() { - return this.node; - }, svg: function(t3) { - var i2 = e2.createElement("svg"); - if (!(t3 && this instanceof a2.Parent)) - return i2.appendChild(t3 = e2.createElement("svg")), this.writeDataToDom(), t3.appendChild(this.node.cloneNode(true)), i2.innerHTML.replace(/^/, "").replace(/<\/svg>$/, ""); - i2.innerHTML = "" + t3.replace(/\n/, "").replace(/<([\w:-]+)([^<]+?)\/>/g, "<$1$2>") + ""; - for (var s3 = 0, r3 = i2.firstChild.childNodes.length; s3 < r3; s3++) - this.node.appendChild(i2.firstChild.firstChild); - return this; - }, writeDataToDom: function() { - return (this.each || this.lines) && (this.each ? this : this.lines()).each(function() { - this.writeDataToDom(); - }), this.node.removeAttribute("svgjs:data"), Object.keys(this.dom).length && this.node.setAttribute("svgjs:data", JSON.stringify(this.dom)), this; - }, setData: function(t3) { - return this.dom = t3, this; - }, is: function(t3) { - return function(t4, e3) { - return t4 instanceof e3; - }(this, t3); - } } }), a2.easing = { "-": function(t3) { - return t3; - }, "<>": function(t3) { - return -Math.cos(t3 * Math.PI) / 2 + 0.5; - }, ">": function(t3) { - return Math.sin(t3 * Math.PI / 2); - }, "<": function(t3) { - return 1 - Math.cos(t3 * Math.PI / 2); - } }, a2.morph = function(t3) { - return function(e3, i2) { - return new a2.MorphObj(e3, i2).at(t3); - }; - }, a2.Situation = a2.invent({ create: function(t3) { - this.init = false, this.reversed = false, this.reversing = false, this.duration = new a2.Number(t3.duration).valueOf(), this.delay = new a2.Number(t3.delay).valueOf(), this.start = +/* @__PURE__ */ new Date() + this.delay, this.finish = this.start + this.duration, this.ease = t3.ease, this.loop = 0, this.loops = false, this.animations = {}, this.attrs = {}, this.styles = {}, this.transforms = [], this.once = {}; - } }), a2.FX = a2.invent({ create: function(t3) { - this._target = t3, this.situations = [], this.active = false, this.situation = null, this.paused = false, this.lastPos = 0, this.pos = 0, this.absPos = 0, this._speed = 1; - }, extend: { animate: function(t3, e3, s3) { - "object" === i(t3) && (e3 = t3.ease, s3 = t3.delay, t3 = t3.duration); - var r3 = new a2.Situation({ duration: t3 || 1e3, delay: s3 || 0, ease: a2.easing[e3 || "-"] || e3 }); - return this.queue(r3), this; - }, target: function(t3) { - return t3 && t3 instanceof a2.Element ? (this._target = t3, this) : this._target; - }, timeToAbsPos: function(t3) { - return (t3 - this.situation.start) / (this.situation.duration / this._speed); - }, absPosToTime: function(t3) { - return this.situation.duration / this._speed * t3 + this.situation.start; - }, startAnimFrame: function() { - this.stopAnimFrame(), this.animationFrame = t2.requestAnimationFrame(function() { - this.step(); - }.bind(this)); - }, stopAnimFrame: function() { - t2.cancelAnimationFrame(this.animationFrame); - }, start: function() { - return !this.active && this.situation && (this.active = true, this.startCurrent()), this; - }, startCurrent: function() { - return this.situation.start = +/* @__PURE__ */ new Date() + this.situation.delay / this._speed, this.situation.finish = this.situation.start + this.situation.duration / this._speed, this.initAnimations().step(); - }, queue: function(t3) { - return ("function" == typeof t3 || t3 instanceof a2.Situation) && this.situations.push(t3), this.situation || (this.situation = this.situations.shift()), this; - }, dequeue: function() { - return this.stop(), this.situation = this.situations.shift(), this.situation && (this.situation instanceof a2.Situation ? this.start() : this.situation.call(this)), this; - }, initAnimations: function() { - var t3, e3 = this.situation; - if (e3.init) - return this; - for (var i2 in e3.animations) { - t3 = this.target()[i2](), Array.isArray(t3) || (t3 = [t3]), Array.isArray(e3.animations[i2]) || (e3.animations[i2] = [e3.animations[i2]]); - for (var s3 = t3.length; s3--; ) - e3.animations[i2][s3] instanceof a2.Number && (t3[s3] = new a2.Number(t3[s3])), e3.animations[i2][s3] = t3[s3].morph(e3.animations[i2][s3]); - } - for (var i2 in e3.attrs) - e3.attrs[i2] = new a2.MorphObj(this.target().attr(i2), e3.attrs[i2]); - for (var i2 in e3.styles) - e3.styles[i2] = new a2.MorphObj(this.target().style(i2), e3.styles[i2]); - return e3.initialTransformation = this.target().matrixify(), e3.init = true, this; - }, clearQueue: function() { - return this.situations = [], this; - }, clearCurrent: function() { - return this.situation = null, this; - }, stop: function(t3, e3) { - var i2 = this.active; - return this.active = false, e3 && this.clearQueue(), t3 && this.situation && (!i2 && this.startCurrent(), this.atEnd()), this.stopAnimFrame(), this.clearCurrent(); - }, after: function(t3) { - var e3 = this.last(); - return this.target().on("finished.fx", function i2(a3) { - a3.detail.situation == e3 && (t3.call(this, e3), this.off("finished.fx", i2)); - }), this._callStart(); - }, during: function(t3) { - var e3 = this.last(), i2 = function(i3) { - i3.detail.situation == e3 && t3.call(this, i3.detail.pos, a2.morph(i3.detail.pos), i3.detail.eased, e3); - }; - return this.target().off("during.fx", i2).on("during.fx", i2), this.after(function() { - this.off("during.fx", i2); - }), this._callStart(); - }, afterAll: function(t3) { - var e3 = function e4(i2) { - t3.call(this), this.off("allfinished.fx", e4); - }; - return this.target().off("allfinished.fx", e3).on("allfinished.fx", e3), this._callStart(); - }, last: function() { - return this.situations.length ? this.situations[this.situations.length - 1] : this.situation; - }, add: function(t3, e3, i2) { - return this.last()[i2 || "animations"][t3] = e3, this._callStart(); - }, step: function(t3) { - var e3, i2, a3; - t3 || (this.absPos = this.timeToAbsPos(+/* @__PURE__ */ new Date())), false !== this.situation.loops ? (e3 = Math.max(this.absPos, 0), i2 = Math.floor(e3), true === this.situation.loops || i2 < this.situation.loops ? (this.pos = e3 - i2, a3 = this.situation.loop, this.situation.loop = i2) : (this.absPos = this.situation.loops, this.pos = 1, a3 = this.situation.loop - 1, this.situation.loop = this.situation.loops), this.situation.reversing && (this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - a3) % 2))) : (this.absPos = Math.min(this.absPos, 1), this.pos = this.absPos), this.pos < 0 && (this.pos = 0), this.situation.reversed && (this.pos = 1 - this.pos); - var s3 = this.situation.ease(this.pos); - for (var r3 in this.situation.once) - r3 > this.lastPos && r3 <= s3 && (this.situation.once[r3].call(this.target(), this.pos, s3), delete this.situation.once[r3]); - return this.active && this.target().fire("during", { pos: this.pos, eased: s3, fx: this, situation: this.situation }), this.situation ? (this.eachAt(), 1 == this.pos && !this.situation.reversed || this.situation.reversed && 0 == this.pos ? (this.stopAnimFrame(), this.target().fire("finished", { fx: this, situation: this.situation }), this.situations.length || (this.target().fire("allfinished"), this.situations.length || (this.target().off(".fx"), this.active = false)), this.active ? this.dequeue() : this.clearCurrent()) : !this.paused && this.active && this.startAnimFrame(), this.lastPos = s3, this) : this; - }, eachAt: function() { - var t3, e3 = this, i2 = this.target(), s3 = this.situation; - for (var r3 in s3.animations) - t3 = [].concat(s3.animations[r3]).map(function(t4) { - return "string" != typeof t4 && t4.at ? t4.at(s3.ease(e3.pos), e3.pos) : t4; - }), i2[r3].apply(i2, t3); - for (var r3 in s3.attrs) - t3 = [r3].concat(s3.attrs[r3]).map(function(t4) { - return "string" != typeof t4 && t4.at ? t4.at(s3.ease(e3.pos), e3.pos) : t4; - }), i2.attr.apply(i2, t3); - for (var r3 in s3.styles) - t3 = [r3].concat(s3.styles[r3]).map(function(t4) { - return "string" != typeof t4 && t4.at ? t4.at(s3.ease(e3.pos), e3.pos) : t4; - }), i2.style.apply(i2, t3); - if (s3.transforms.length) { - t3 = s3.initialTransformation, r3 = 0; - for (var o3 = s3.transforms.length; r3 < o3; r3++) { - var n3 = s3.transforms[r3]; - n3 instanceof a2.Matrix ? t3 = n3.relative ? t3.multiply(new a2.Matrix().morph(n3).at(s3.ease(this.pos))) : t3.morph(n3).at(s3.ease(this.pos)) : (n3.relative || n3.undo(t3.extract()), t3 = t3.multiply(n3.at(s3.ease(this.pos)))); - } - i2.matrix(t3); - } - return this; - }, once: function(t3, e3, i2) { - var a3 = this.last(); - return i2 || (t3 = a3.ease(t3)), a3.once[t3] = e3, this; - }, _callStart: function() { - return setTimeout(function() { - this.start(); - }.bind(this), 0), this; - } }, parent: a2.Element, construct: { animate: function(t3, e3, i2) { - return (this.fx || (this.fx = new a2.FX(this))).animate(t3, e3, i2); - }, delay: function(t3) { - return (this.fx || (this.fx = new a2.FX(this))).delay(t3); - }, stop: function(t3, e3) { - return this.fx && this.fx.stop(t3, e3), this; - }, finish: function() { - return this.fx && this.fx.finish(), this; - } } }), a2.MorphObj = a2.invent({ create: function(t3, e3) { - return a2.Color.isColor(e3) ? new a2.Color(t3).morph(e3) : a2.regex.delimiter.test(t3) ? a2.regex.pathLetters.test(t3) ? new a2.PathArray(t3).morph(e3) : new a2.Array(t3).morph(e3) : a2.regex.numberAndUnit.test(e3) ? new a2.Number(t3).morph(e3) : (this.value = t3, void (this.destination = e3)); - }, extend: { at: function(t3, e3) { - return e3 < 1 ? this.value : this.destination; - }, valueOf: function() { - return this.value; - } } }), a2.extend(a2.FX, { attr: function(t3, e3, a3) { - if ("object" === i(t3)) - for (var s3 in t3) - this.attr(s3, t3[s3]); - else - this.add(t3, e3, "attrs"); - return this; - }, plot: function(t3, e3, i2, a3) { - return 4 == arguments.length ? this.plot([t3, e3, i2, a3]) : this.add("plot", new (this.target()).morphArray(t3)); - } }), a2.Box = a2.invent({ create: function(t3, e3, s3, r3) { - if (!("object" !== i(t3) || t3 instanceof a2.Element)) - return a2.Box.call(this, null != t3.left ? t3.left : t3.x, null != t3.top ? t3.top : t3.y, t3.width, t3.height); - var o3; - 4 == arguments.length && (this.x = t3, this.y = e3, this.width = s3, this.height = r3), null == (o3 = this).x && (o3.x = 0, o3.y = 0, o3.width = 0, o3.height = 0), o3.w = o3.width, o3.h = o3.height, o3.x2 = o3.x + o3.width, o3.y2 = o3.y + o3.height, o3.cx = o3.x + o3.width / 2, o3.cy = o3.y + o3.height / 2; - } }), a2.BBox = a2.invent({ create: function(t3) { - if (a2.Box.apply(this, [].slice.call(arguments)), t3 instanceof a2.Element) { - var i2; - try { - if (!e2.documentElement.contains) { - for (var s3 = t3.node; s3.parentNode; ) - s3 = s3.parentNode; - if (s3 != e2) - throw new Error("Element not in the dom"); - } - i2 = t3.node.getBBox(); - } catch (e3) { - if (t3 instanceof a2.Shape) { - a2.parser.draw || a2.prepare(); - var r3 = t3.clone(a2.parser.draw.instance).show(); - r3 && r3.node && "function" == typeof r3.node.getBBox && (i2 = r3.node.getBBox()), r3 && "function" == typeof r3.remove && r3.remove(); - } else - i2 = { x: t3.node.clientLeft, y: t3.node.clientTop, width: t3.node.clientWidth, height: t3.node.clientHeight }; - } - a2.Box.call(this, i2); - } - }, inherit: a2.Box, parent: a2.Element, construct: { bbox: function() { - return new a2.BBox(this); - } } }), a2.BBox.prototype.constructor = a2.BBox, a2.Matrix = a2.invent({ create: function(t3) { - var e3 = f2([1, 0, 0, 1, 0, 0]); - t3 = null === t3 ? e3 : t3 instanceof a2.Element ? t3.matrixify() : "string" == typeof t3 ? f2(t3.split(a2.regex.delimiter).map(parseFloat)) : 6 == arguments.length ? f2([].slice.call(arguments)) : Array.isArray(t3) ? f2(t3) : t3 && "object" === i(t3) ? t3 : e3; - for (var s3 = v2.length - 1; s3 >= 0; --s3) - this[v2[s3]] = null != t3[v2[s3]] ? t3[v2[s3]] : e3[v2[s3]]; - }, extend: { extract: function() { - var t3 = p2(this, 0, 1); - p2(this, 1, 0); - var e3 = 180 / Math.PI * Math.atan2(t3.y, t3.x) - 90; - return { x: this.e, y: this.f, transformedX: (this.e * Math.cos(e3 * Math.PI / 180) + this.f * Math.sin(e3 * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b), transformedY: (this.f * Math.cos(e3 * Math.PI / 180) + this.e * Math.sin(-e3 * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d), rotation: e3, a: this.a, b: this.b, c: this.c, d: this.d, e: this.e, f: this.f, matrix: new a2.Matrix(this) }; - }, clone: function() { - return new a2.Matrix(this); - }, morph: function(t3) { - return this.destination = new a2.Matrix(t3), this; - }, multiply: function(t3) { - return new a2.Matrix(this.native().multiply(function(t4) { - return t4 instanceof a2.Matrix || (t4 = new a2.Matrix(t4)), t4; - }(t3).native())); - }, inverse: function() { - return new a2.Matrix(this.native().inverse()); - }, translate: function(t3, e3) { - return new a2.Matrix(this.native().translate(t3 || 0, e3 || 0)); - }, native: function() { - for (var t3 = a2.parser.native.createSVGMatrix(), e3 = v2.length - 1; e3 >= 0; e3--) - t3[v2[e3]] = this[v2[e3]]; - return t3; - }, toString: function() { - return "matrix(" + b2(this.a) + "," + b2(this.b) + "," + b2(this.c) + "," + b2(this.d) + "," + b2(this.e) + "," + b2(this.f) + ")"; - } }, parent: a2.Element, construct: { ctm: function() { - return new a2.Matrix(this.node.getCTM()); - }, screenCTM: function() { - if (this instanceof a2.Nested) { - var t3 = this.rect(1, 1), e3 = t3.node.getScreenCTM(); - return t3.remove(), new a2.Matrix(e3); - } - return new a2.Matrix(this.node.getScreenCTM()); - } } }), a2.Point = a2.invent({ create: function(t3, e3) { - var a3; - a3 = Array.isArray(t3) ? { x: t3[0], y: t3[1] } : "object" === i(t3) ? { x: t3.x, y: t3.y } : null != t3 ? { x: t3, y: null != e3 ? e3 : t3 } : { x: 0, y: 0 }, this.x = a3.x, this.y = a3.y; - }, extend: { clone: function() { - return new a2.Point(this); - }, morph: function(t3, e3) { - return this.destination = new a2.Point(t3, e3), this; - } } }), a2.extend(a2.Element, { point: function(t3, e3) { - return new a2.Point(t3, e3).transform(this.screenCTM().inverse()); - } }), a2.extend(a2.Element, { attr: function(t3, e3, s3) { - if (null == t3) { - for (t3 = {}, s3 = (e3 = this.node.attributes).length - 1; s3 >= 0; s3--) - t3[e3[s3].nodeName] = a2.regex.isNumber.test(e3[s3].nodeValue) ? parseFloat(e3[s3].nodeValue) : e3[s3].nodeValue; - return t3; - } - if ("object" === i(t3)) - for (var r3 in t3) - this.attr(r3, t3[r3]); - else if (null === e3) - this.node.removeAttribute(t3); - else { - if (null == e3) - return null == (e3 = this.node.getAttribute(t3)) ? a2.defaults.attrs[t3] : a2.regex.isNumber.test(e3) ? parseFloat(e3) : e3; - "stroke-width" == t3 ? this.attr("stroke", parseFloat(e3) > 0 ? this._stroke : null) : "stroke" == t3 && (this._stroke = e3), "fill" != t3 && "stroke" != t3 || (a2.regex.isImage.test(e3) && (e3 = this.doc().defs().image(e3, 0, 0)), e3 instanceof a2.Image && (e3 = this.doc().defs().pattern(0, 0, function() { - this.add(e3); - }))), "number" == typeof e3 ? e3 = new a2.Number(e3) : a2.Color.isColor(e3) ? e3 = new a2.Color(e3) : Array.isArray(e3) && (e3 = new a2.Array(e3)), "leading" == t3 ? this.leading && this.leading(e3) : "string" == typeof s3 ? this.node.setAttributeNS(s3, t3, e3.toString()) : this.node.setAttribute(t3, e3.toString()), !this.rebuild || "font-size" != t3 && "x" != t3 || this.rebuild(t3, e3); - } - return this; - } }), a2.extend(a2.Element, { transform: function(t3, e3) { - var s3; - return "object" !== i(t3) ? (s3 = new a2.Matrix(this).extract(), "string" == typeof t3 ? s3[t3] : s3) : (s3 = new a2.Matrix(this), e3 = !!e3 || !!t3.relative, null != t3.a && (s3 = e3 ? s3.multiply(new a2.Matrix(t3)) : new a2.Matrix(t3)), this.attr("transform", s3)); - } }), a2.extend(a2.Element, { untransform: function() { - return this.attr("transform", null); - }, matrixify: function() { - return (this.attr("transform") || "").split(a2.regex.transforms).slice(0, -1).map(function(t3) { - var e3 = t3.trim().split("("); - return [e3[0], e3[1].split(a2.regex.delimiter).map(function(t4) { - return parseFloat(t4); - })]; - }).reduce(function(t3, e3) { - return "matrix" == e3[0] ? t3.multiply(f2(e3[1])) : t3[e3[0]].apply(t3, e3[1]); - }, new a2.Matrix()); - }, toParent: function(t3) { - if (this == t3) - return this; - var e3 = this.screenCTM(), i2 = t3.screenCTM().inverse(); - return this.addTo(t3).untransform().transform(i2.multiply(e3)), this; - }, toDoc: function() { - return this.toParent(this.doc()); - } }), a2.Transformation = a2.invent({ create: function(t3, e3) { - if (arguments.length > 1 && "boolean" != typeof e3) - return this.constructor.call(this, [].slice.call(arguments)); - if (Array.isArray(t3)) - for (var a3 = 0, s3 = this.arguments.length; a3 < s3; ++a3) - this[this.arguments[a3]] = t3[a3]; - else if (t3 && "object" === i(t3)) - for (a3 = 0, s3 = this.arguments.length; a3 < s3; ++a3) - this[this.arguments[a3]] = t3[this.arguments[a3]]; - this.inversed = false, true === e3 && (this.inversed = true); - } }), a2.Translate = a2.invent({ parent: a2.Matrix, inherit: a2.Transformation, create: function(t3, e3) { - this.constructor.apply(this, [].slice.call(arguments)); - }, extend: { arguments: ["transformedX", "transformedY"], method: "translate" } }), a2.extend(a2.Element, { style: function(t3, e3) { - if (0 == arguments.length) - return this.node.style.cssText || ""; - if (arguments.length < 2) - if ("object" === i(t3)) - for (var s3 in t3) - this.style(s3, t3[s3]); - else { - if (!a2.regex.isCss.test(t3)) - return this.node.style[c2(t3)]; - for (t3 = t3.split(/\s*;\s*/).filter(function(t4) { - return !!t4; - }).map(function(t4) { - return t4.split(/\s*:\s*/); - }); e3 = t3.pop(); ) - this.style(e3[0], e3[1]); - } - else - this.node.style[c2(t3)] = null === e3 || a2.regex.isBlank.test(e3) ? "" : e3; - return this; - } }), a2.Parent = a2.invent({ create: function(t3) { - this.constructor.call(this, t3); - }, inherit: a2.Element, extend: { children: function() { - return a2.utils.map(a2.utils.filterSVGElements(this.node.childNodes), function(t3) { - return a2.adopt(t3); - }); - }, add: function(t3, e3) { - return null == e3 ? this.node.appendChild(t3.node) : t3.node != this.node.childNodes[e3] && this.node.insertBefore(t3.node, this.node.childNodes[e3]), this; - }, put: function(t3, e3) { - return this.add(t3, e3), t3; - }, has: function(t3) { - return this.index(t3) >= 0; - }, index: function(t3) { - return [].slice.call(this.node.childNodes).indexOf(t3.node); - }, get: function(t3) { - return a2.adopt(this.node.childNodes[t3]); - }, first: function() { - return this.get(0); - }, last: function() { - return this.get(this.node.childNodes.length - 1); - }, each: function(t3, e3) { - for (var i2 = this.children(), s3 = 0, r3 = i2.length; s3 < r3; s3++) - i2[s3] instanceof a2.Element && t3.apply(i2[s3], [s3, i2]), e3 && i2[s3] instanceof a2.Container && i2[s3].each(t3, e3); - return this; - }, removeElement: function(t3) { - return this.node.removeChild(t3.node), this; - }, clear: function() { - for (; this.node.hasChildNodes(); ) - this.node.removeChild(this.node.lastChild); - return delete this._defs, this; - }, defs: function() { - return this.doc().defs(); - } } }), a2.extend(a2.Parent, { ungroup: function(t3, e3) { - return 0 === e3 || this instanceof a2.Defs || this.node == a2.parser.draw || (t3 = t3 || (this instanceof a2.Doc ? this : this.parent(a2.Parent)), e3 = e3 || 1 / 0, this.each(function() { - return this instanceof a2.Defs ? this : this instanceof a2.Parent ? this.ungroup(t3, e3 - 1) : this.toParent(t3); - }), this.node.firstChild || this.remove()), this; - }, flatten: function(t3, e3) { - return this.ungroup(t3, e3); - } }), a2.Container = a2.invent({ create: function(t3) { - this.constructor.call(this, t3); - }, inherit: a2.Parent }), a2.ViewBox = a2.invent({ parent: a2.Container, construct: {} }), ["click", "dblclick", "mousedown", "mouseup", "mouseover", "mouseout", "mousemove", "touchstart", "touchmove", "touchleave", "touchend", "touchcancel"].forEach(function(t3) { - a2.Element.prototype[t3] = function(e3) { - return a2.on(this.node, t3, e3), this; - }; - }), a2.listeners = [], a2.handlerMap = [], a2.listenerId = 0, a2.on = function(t3, e3, i2, s3, r3) { - var o3 = i2.bind(s3 || t3.instance || t3), n3 = (a2.handlerMap.indexOf(t3) + 1 || a2.handlerMap.push(t3)) - 1, l3 = e3.split(".")[0], h3 = e3.split(".")[1] || "*"; - a2.listeners[n3] = a2.listeners[n3] || {}, a2.listeners[n3][l3] = a2.listeners[n3][l3] || {}, a2.listeners[n3][l3][h3] = a2.listeners[n3][l3][h3] || {}, i2._svgjsListenerId || (i2._svgjsListenerId = ++a2.listenerId), a2.listeners[n3][l3][h3][i2._svgjsListenerId] = o3, t3.addEventListener(l3, o3, r3 || { passive: true }); - }, a2.off = function(t3, e3, i2) { - var s3 = a2.handlerMap.indexOf(t3), r3 = e3 && e3.split(".")[0], o3 = e3 && e3.split(".")[1], n3 = ""; - if (-1 != s3) - if (i2) { - if ("function" == typeof i2 && (i2 = i2._svgjsListenerId), !i2) - return; - a2.listeners[s3][r3] && a2.listeners[s3][r3][o3 || "*"] && (t3.removeEventListener(r3, a2.listeners[s3][r3][o3 || "*"][i2], false), delete a2.listeners[s3][r3][o3 || "*"][i2]); - } else if (o3 && r3) { - if (a2.listeners[s3][r3] && a2.listeners[s3][r3][o3]) { - for (var l3 in a2.listeners[s3][r3][o3]) - a2.off(t3, [r3, o3].join("."), l3); - delete a2.listeners[s3][r3][o3]; - } - } else if (o3) - for (var h3 in a2.listeners[s3]) - for (var n3 in a2.listeners[s3][h3]) - o3 === n3 && a2.off(t3, [h3, o3].join(".")); - else if (r3) { - if (a2.listeners[s3][r3]) { - for (var n3 in a2.listeners[s3][r3]) - a2.off(t3, [r3, n3].join(".")); - delete a2.listeners[s3][r3]; - } - } else { - for (var h3 in a2.listeners[s3]) - a2.off(t3, h3); - delete a2.listeners[s3], delete a2.handlerMap[s3]; - } - }, a2.extend(a2.Element, { on: function(t3, e3, i2, s3) { - return a2.on(this.node, t3, e3, i2, s3), this; - }, off: function(t3, e3) { - return a2.off(this.node, t3, e3), this; - }, fire: function(e3, i2) { - return e3 instanceof t2.Event ? this.node.dispatchEvent(e3) : this.node.dispatchEvent(e3 = new a2.CustomEvent(e3, { detail: i2, cancelable: true })), this._event = e3, this; - }, event: function() { - return this._event; - } }), a2.Defs = a2.invent({ create: "defs", inherit: a2.Container }), a2.G = a2.invent({ create: "g", inherit: a2.Container, extend: { x: function(t3) { - return null == t3 ? this.transform("x") : this.transform({ x: t3 - this.x() }, true); - } }, construct: { group: function() { - return this.put(new a2.G()); - } } }), a2.Doc = a2.invent({ create: function(t3) { - t3 && ("svg" == (t3 = "string" == typeof t3 ? e2.getElementById(t3) : t3).nodeName ? this.constructor.call(this, t3) : (this.constructor.call(this, a2.create("svg")), t3.appendChild(this.node), this.size("100%", "100%")), this.namespace().defs()); - }, inherit: a2.Container, extend: { namespace: function() { - return this.attr({ xmlns: a2.ns, version: "1.1" }).attr("xmlns:xlink", a2.xlink, a2.xmlns).attr("xmlns:svgjs", a2.svgjs, a2.xmlns); - }, defs: function() { - var t3; - return this._defs || ((t3 = this.node.getElementsByTagName("defs")[0]) ? this._defs = a2.adopt(t3) : this._defs = new a2.Defs(), this.node.appendChild(this._defs.node)), this._defs; - }, parent: function() { - return this.node.parentNode && "#document" != this.node.parentNode.nodeName ? this.node.parentNode : null; - }, remove: function() { - return this.parent() && this.parent().removeChild(this.node), this; - }, clear: function() { - for (; this.node.hasChildNodes(); ) - this.node.removeChild(this.node.lastChild); - return delete this._defs, a2.parser.draw && !a2.parser.draw.parentNode && this.node.appendChild(a2.parser.draw), this; - }, clone: function(t3) { - this.writeDataToDom(); - var e3 = this.node, i2 = x2(e3.cloneNode(true)); - return t3 ? (t3.node || t3).appendChild(i2.node) : e3.parentNode.insertBefore(i2.node, e3.nextSibling), i2; - } } }), a2.extend(a2.Element, {}), a2.Gradient = a2.invent({ create: function(t3) { - this.constructor.call(this, a2.create(t3 + "Gradient")), this.type = t3; - }, inherit: a2.Container, extend: { at: function(t3, e3, i2) { - return this.put(new a2.Stop()).update(t3, e3, i2); - }, update: function(t3) { - return this.clear(), "function" == typeof t3 && t3.call(this, this), this; - }, fill: function() { - return "url(#" + this.id() + ")"; - }, toString: function() { - return this.fill(); - }, attr: function(t3, e3, i2) { - return "transform" == t3 && (t3 = "gradientTransform"), a2.Container.prototype.attr.call(this, t3, e3, i2); - } }, construct: { gradient: function(t3, e3) { - return this.defs().gradient(t3, e3); - } } }), a2.extend(a2.Gradient, a2.FX, { from: function(t3, e3) { - return "radial" == (this._target || this).type ? this.attr({ fx: new a2.Number(t3), fy: new a2.Number(e3) }) : this.attr({ x1: new a2.Number(t3), y1: new a2.Number(e3) }); - }, to: function(t3, e3) { - return "radial" == (this._target || this).type ? this.attr({ cx: new a2.Number(t3), cy: new a2.Number(e3) }) : this.attr({ x2: new a2.Number(t3), y2: new a2.Number(e3) }); - } }), a2.extend(a2.Defs, { gradient: function(t3, e3) { - return this.put(new a2.Gradient(t3)).update(e3); - } }), a2.Stop = a2.invent({ create: "stop", inherit: a2.Element, extend: { update: function(t3) { - return ("number" == typeof t3 || t3 instanceof a2.Number) && (t3 = { offset: arguments[0], color: arguments[1], opacity: arguments[2] }), null != t3.opacity && this.attr("stop-opacity", t3.opacity), null != t3.color && this.attr("stop-color", t3.color), null != t3.offset && this.attr("offset", new a2.Number(t3.offset)), this; - } } }), a2.Pattern = a2.invent({ create: "pattern", inherit: a2.Container, extend: { fill: function() { - return "url(#" + this.id() + ")"; - }, update: function(t3) { - return this.clear(), "function" == typeof t3 && t3.call(this, this), this; - }, toString: function() { - return this.fill(); - }, attr: function(t3, e3, i2) { - return "transform" == t3 && (t3 = "patternTransform"), a2.Container.prototype.attr.call(this, t3, e3, i2); - } }, construct: { pattern: function(t3, e3, i2) { - return this.defs().pattern(t3, e3, i2); - } } }), a2.extend(a2.Defs, { pattern: function(t3, e3, i2) { - return this.put(new a2.Pattern()).update(i2).attr({ x: 0, y: 0, width: t3, height: e3, patternUnits: "userSpaceOnUse" }); - } }), a2.Shape = a2.invent({ create: function(t3) { - this.constructor.call(this, t3); - }, inherit: a2.Element }), a2.Symbol = a2.invent({ create: "symbol", inherit: a2.Container, construct: { symbol: function() { - return this.put(new a2.Symbol()); - } } }), a2.Use = a2.invent({ create: "use", inherit: a2.Shape, extend: { element: function(t3, e3) { - return this.attr("href", (e3 || "") + "#" + t3, a2.xlink); - } }, construct: { use: function(t3, e3) { - return this.put(new a2.Use()).element(t3, e3); - } } }), a2.Rect = a2.invent({ create: "rect", inherit: a2.Shape, construct: { rect: function(t3, e3) { - return this.put(new a2.Rect()).size(t3, e3); - } } }), a2.Circle = a2.invent({ create: "circle", inherit: a2.Shape, construct: { circle: function(t3) { - return this.put(new a2.Circle()).rx(new a2.Number(t3).divide(2)).move(0, 0); - } } }), a2.extend(a2.Circle, a2.FX, { rx: function(t3) { - return this.attr("r", t3); - }, ry: function(t3) { - return this.rx(t3); - } }), a2.Ellipse = a2.invent({ create: "ellipse", inherit: a2.Shape, construct: { ellipse: function(t3, e3) { - return this.put(new a2.Ellipse()).size(t3, e3).move(0, 0); - } } }), a2.extend(a2.Ellipse, a2.Rect, a2.FX, { rx: function(t3) { - return this.attr("rx", t3); - }, ry: function(t3) { - return this.attr("ry", t3); - } }), a2.extend(a2.Circle, a2.Ellipse, { x: function(t3) { - return null == t3 ? this.cx() - this.rx() : this.cx(t3 + this.rx()); - }, y: function(t3) { - return null == t3 ? this.cy() - this.ry() : this.cy(t3 + this.ry()); - }, cx: function(t3) { - return null == t3 ? this.attr("cx") : this.attr("cx", t3); - }, cy: function(t3) { - return null == t3 ? this.attr("cy") : this.attr("cy", t3); - }, width: function(t3) { - return null == t3 ? 2 * this.rx() : this.rx(new a2.Number(t3).divide(2)); - }, height: function(t3) { - return null == t3 ? 2 * this.ry() : this.ry(new a2.Number(t3).divide(2)); - }, size: function(t3, e3) { - var i2 = u2(this, t3, e3); - return this.rx(new a2.Number(i2.width).divide(2)).ry(new a2.Number(i2.height).divide(2)); - } }), a2.Line = a2.invent({ create: "line", inherit: a2.Shape, extend: { array: function() { - return new a2.PointArray([[this.attr("x1"), this.attr("y1")], [this.attr("x2"), this.attr("y2")]]); - }, plot: function(t3, e3, i2, s3) { - return null == t3 ? this.array() : (t3 = void 0 !== e3 ? { x1: t3, y1: e3, x2: i2, y2: s3 } : new a2.PointArray(t3).toLine(), this.attr(t3)); - }, move: function(t3, e3) { - return this.attr(this.array().move(t3, e3).toLine()); - }, size: function(t3, e3) { - var i2 = u2(this, t3, e3); - return this.attr(this.array().size(i2.width, i2.height).toLine()); - } }, construct: { line: function(t3, e3, i2, s3) { - return a2.Line.prototype.plot.apply(this.put(new a2.Line()), null != t3 ? [t3, e3, i2, s3] : [0, 0, 0, 0]); - } } }), a2.Polyline = a2.invent({ create: "polyline", inherit: a2.Shape, construct: { polyline: function(t3) { - return this.put(new a2.Polyline()).plot(t3 || new a2.PointArray()); - } } }), a2.Polygon = a2.invent({ create: "polygon", inherit: a2.Shape, construct: { polygon: function(t3) { - return this.put(new a2.Polygon()).plot(t3 || new a2.PointArray()); - } } }), a2.extend(a2.Polyline, a2.Polygon, { array: function() { - return this._array || (this._array = new a2.PointArray(this.attr("points"))); - }, plot: function(t3) { - return null == t3 ? this.array() : this.clear().attr("points", "string" == typeof t3 ? t3 : this._array = new a2.PointArray(t3)); - }, clear: function() { - return delete this._array, this; - }, move: function(t3, e3) { - return this.attr("points", this.array().move(t3, e3)); - }, size: function(t3, e3) { - var i2 = u2(this, t3, e3); - return this.attr("points", this.array().size(i2.width, i2.height)); - } }), a2.extend(a2.Line, a2.Polyline, a2.Polygon, { morphArray: a2.PointArray, x: function(t3) { - return null == t3 ? this.bbox().x : this.move(t3, this.bbox().y); - }, y: function(t3) { - return null == t3 ? this.bbox().y : this.move(this.bbox().x, t3); - }, width: function(t3) { - var e3 = this.bbox(); - return null == t3 ? e3.width : this.size(t3, e3.height); - }, height: function(t3) { - var e3 = this.bbox(); - return null == t3 ? e3.height : this.size(e3.width, t3); - } }), a2.Path = a2.invent({ create: "path", inherit: a2.Shape, extend: { morphArray: a2.PathArray, array: function() { - return this._array || (this._array = new a2.PathArray(this.attr("d"))); - }, plot: function(t3) { - return null == t3 ? this.array() : this.clear().attr("d", "string" == typeof t3 ? t3 : this._array = new a2.PathArray(t3)); - }, clear: function() { - return delete this._array, this; - } }, construct: { path: function(t3) { - return this.put(new a2.Path()).plot(t3 || new a2.PathArray()); - } } }), a2.Image = a2.invent({ create: "image", inherit: a2.Shape, extend: { load: function(e3) { - if (!e3) - return this; - var i2 = this, s3 = new t2.Image(); - return a2.on(s3, "load", function() { - a2.off(s3); - var t3 = i2.parent(a2.Pattern); - null !== t3 && (0 == i2.width() && 0 == i2.height() && i2.size(s3.width, s3.height), t3 && 0 == t3.width() && 0 == t3.height() && t3.size(i2.width(), i2.height()), "function" == typeof i2._loaded && i2._loaded.call(i2, { width: s3.width, height: s3.height, ratio: s3.width / s3.height, url: e3 })); - }), a2.on(s3, "error", function(t3) { - a2.off(s3), "function" == typeof i2._error && i2._error.call(i2, t3); - }), this.attr("href", s3.src = this.src = e3, a2.xlink); - }, loaded: function(t3) { - return this._loaded = t3, this; - }, error: function(t3) { - return this._error = t3, this; - } }, construct: { image: function(t3, e3, i2) { - return this.put(new a2.Image()).load(t3).size(e3 || 0, i2 || e3 || 0); - } } }), a2.Text = a2.invent({ create: function() { - this.constructor.call(this, a2.create("text")), this.dom.leading = new a2.Number(1.3), this._rebuild = true, this._build = false, this.attr("font-family", a2.defaults.attrs["font-family"]); - }, inherit: a2.Shape, extend: { x: function(t3) { - return null == t3 ? this.attr("x") : this.attr("x", t3); - }, text: function(t3) { - if (void 0 === t3) { - t3 = ""; - for (var e3 = this.node.childNodes, i2 = 0, s3 = e3.length; i2 < s3; ++i2) - 0 != i2 && 3 != e3[i2].nodeType && 1 == a2.adopt(e3[i2]).dom.newLined && (t3 += "\n"), t3 += e3[i2].textContent; - return t3; - } - if (this.clear().build(true), "function" == typeof t3) - t3.call(this, this); - else { - i2 = 0; - for (var r3 = (t3 = t3.split("\n")).length; i2 < r3; i2++) - this.tspan(t3[i2]).newLine(); - } - return this.build(false).rebuild(); - }, size: function(t3) { - return this.attr("font-size", t3).rebuild(); - }, leading: function(t3) { - return null == t3 ? this.dom.leading : (this.dom.leading = new a2.Number(t3), this.rebuild()); - }, lines: function() { - var t3 = (this.textPath && this.textPath() || this).node, e3 = a2.utils.map(a2.utils.filterSVGElements(t3.childNodes), function(t4) { - return a2.adopt(t4); - }); - return new a2.Set(e3); - }, rebuild: function(t3) { - if ("boolean" == typeof t3 && (this._rebuild = t3), this._rebuild) { - var e3 = this, i2 = 0, s3 = this.dom.leading * new a2.Number(this.attr("font-size")); - this.lines().each(function() { - this.dom.newLined && (e3.textPath() || this.attr("x", e3.attr("x")), "\n" == this.text() ? i2 += s3 : (this.attr("dy", s3 + i2), i2 = 0)); - }), this.fire("rebuild"); - } - return this; - }, build: function(t3) { - return this._build = !!t3, this; - }, setData: function(t3) { - return this.dom = t3, this.dom.leading = new a2.Number(t3.leading || 1.3), this; - } }, construct: { text: function(t3) { - return this.put(new a2.Text()).text(t3); - }, plain: function(t3) { - return this.put(new a2.Text()).plain(t3); - } } }), a2.Tspan = a2.invent({ create: "tspan", inherit: a2.Shape, extend: { text: function(t3) { - return null == t3 ? this.node.textContent + (this.dom.newLined ? "\n" : "") : ("function" == typeof t3 ? t3.call(this, this) : this.plain(t3), this); - }, dx: function(t3) { - return this.attr("dx", t3); - }, dy: function(t3) { - return this.attr("dy", t3); - }, newLine: function() { - var t3 = this.parent(a2.Text); - return this.dom.newLined = true, this.dy(t3.dom.leading * t3.attr("font-size")).attr("x", t3.x()); - } } }), a2.extend(a2.Text, a2.Tspan, { plain: function(t3) { - return false === this._build && this.clear(), this.node.appendChild(e2.createTextNode(t3)), this; - }, tspan: function(t3) { - var e3 = (this.textPath && this.textPath() || this).node, i2 = new a2.Tspan(); - return false === this._build && this.clear(), e3.appendChild(i2.node), i2.text(t3); - }, clear: function() { - for (var t3 = (this.textPath && this.textPath() || this).node; t3.hasChildNodes(); ) - t3.removeChild(t3.lastChild); - return this; - }, length: function() { - return this.node.getComputedTextLength(); - } }), a2.TextPath = a2.invent({ create: "textPath", inherit: a2.Parent, parent: a2.Text, construct: { morphArray: a2.PathArray, array: function() { - var t3 = this.track(); - return t3 ? t3.array() : null; - }, plot: function(t3) { - var e3 = this.track(), i2 = null; - return e3 && (i2 = e3.plot(t3)), null == t3 ? i2 : this; - }, track: function() { - var t3 = this.textPath(); - if (t3) - return t3.reference("href"); - }, textPath: function() { - if (this.node.firstChild && "textPath" == this.node.firstChild.nodeName) - return a2.adopt(this.node.firstChild); - } } }), a2.Nested = a2.invent({ create: function() { - this.constructor.call(this, a2.create("svg")), this.style("overflow", "visible"); - }, inherit: a2.Container, construct: { nested: function() { - return this.put(new a2.Nested()); - } } }); - var l2 = { stroke: ["color", "width", "opacity", "linecap", "linejoin", "miterlimit", "dasharray", "dashoffset"], fill: ["color", "opacity", "rule"], prefix: function(t3, e3) { - return "color" == e3 ? t3 : t3 + "-" + e3; - } }; - function h2(t3, e3, i2, s3) { - return i2 + s3.replace(a2.regex.dots, " ."); - } - function c2(t3) { - return t3.toLowerCase().replace(/-(.)/g, function(t4, e3) { - return e3.toUpperCase(); - }); - } - function d2(t3) { - return t3.charAt(0).toUpperCase() + t3.slice(1); - } - function g2(t3) { - var e3 = t3.toString(16); - return 1 == e3.length ? "0" + e3 : e3; - } - function u2(t3, e3, i2) { - if (null == e3 || null == i2) { - var a3 = t3.bbox(); - null == e3 ? e3 = a3.width / a3.height * i2 : null == i2 && (i2 = a3.height / a3.width * e3); - } - return { width: e3, height: i2 }; - } - function p2(t3, e3, i2) { - return { x: e3 * t3.a + i2 * t3.c + 0, y: e3 * t3.b + i2 * t3.d + 0 }; - } - function f2(t3) { - return { a: t3[0], b: t3[1], c: t3[2], d: t3[3], e: t3[4], f: t3[5] }; - } - function x2(e3) { - for (var i2 = e3.childNodes.length - 1; i2 >= 0; i2--) - e3.childNodes[i2] instanceof t2.SVGElement && x2(e3.childNodes[i2]); - return a2.adopt(e3).id(a2.eid(e3.nodeName)); - } - function b2(t3) { - return Math.abs(t3) > 1e-37 ? t3 : 0; - } - ["fill", "stroke"].forEach(function(t3) { - var e3 = {}; - e3[t3] = function(e4) { - if (void 0 === e4) - return this; - if ("string" == typeof e4 || a2.Color.isRgb(e4) || e4 && "function" == typeof e4.fill) - this.attr(t3, e4); - else - for (var i2 = l2[t3].length - 1; i2 >= 0; i2--) - null != e4[l2[t3][i2]] && this.attr(l2.prefix(t3, l2[t3][i2]), e4[l2[t3][i2]]); - return this; - }, a2.extend(a2.Element, a2.FX, e3); - }), a2.extend(a2.Element, a2.FX, { translate: function(t3, e3) { - return this.transform({ x: t3, y: e3 }); - }, matrix: function(t3) { - return this.attr("transform", new a2.Matrix(6 == arguments.length ? [].slice.call(arguments) : t3)); - }, opacity: function(t3) { - return this.attr("opacity", t3); - }, dx: function(t3) { - return this.x(new a2.Number(t3).plus(this instanceof a2.FX ? 0 : this.x()), true); - }, dy: function(t3) { - return this.y(new a2.Number(t3).plus(this instanceof a2.FX ? 0 : this.y()), true); - } }), a2.extend(a2.Path, { length: function() { - return this.node.getTotalLength(); - }, pointAt: function(t3) { - return this.node.getPointAtLength(t3); - } }), a2.Set = a2.invent({ create: function(t3) { - Array.isArray(t3) ? this.members = t3 : this.clear(); - }, extend: { add: function() { - for (var t3 = [].slice.call(arguments), e3 = 0, i2 = t3.length; e3 < i2; e3++) - this.members.push(t3[e3]); - return this; - }, remove: function(t3) { - var e3 = this.index(t3); - return e3 > -1 && this.members.splice(e3, 1), this; - }, each: function(t3) { - for (var e3 = 0, i2 = this.members.length; e3 < i2; e3++) - t3.apply(this.members[e3], [e3, this.members]); - return this; - }, clear: function() { - return this.members = [], this; - }, length: function() { - return this.members.length; - }, has: function(t3) { - return this.index(t3) >= 0; - }, index: function(t3) { - return this.members.indexOf(t3); - }, get: function(t3) { - return this.members[t3]; - }, first: function() { - return this.get(0); - }, last: function() { - return this.get(this.members.length - 1); - }, valueOf: function() { - return this.members; - } }, construct: { set: function(t3) { - return new a2.Set(t3); - } } }), a2.FX.Set = a2.invent({ create: function(t3) { - this.set = t3; - } }), a2.Set.inherit = function() { - var t3 = []; - for (var e3 in a2.Shape.prototype) - "function" == typeof a2.Shape.prototype[e3] && "function" != typeof a2.Set.prototype[e3] && t3.push(e3); - for (var e3 in t3.forEach(function(t4) { - a2.Set.prototype[t4] = function() { - for (var e4 = 0, i2 = this.members.length; e4 < i2; e4++) - this.members[e4] && "function" == typeof this.members[e4][t4] && this.members[e4][t4].apply(this.members[e4], arguments); - return "animate" == t4 ? this.fx || (this.fx = new a2.FX.Set(this)) : this; - }; - }), t3 = [], a2.FX.prototype) - "function" == typeof a2.FX.prototype[e3] && "function" != typeof a2.FX.Set.prototype[e3] && t3.push(e3); - t3.forEach(function(t4) { - a2.FX.Set.prototype[t4] = function() { - for (var e4 = 0, i2 = this.set.members.length; e4 < i2; e4++) - this.set.members[e4].fx[t4].apply(this.set.members[e4].fx, arguments); - return this; - }; - }); - }, a2.extend(a2.Element, {}), a2.extend(a2.Element, { remember: function(t3, e3) { - if ("object" === i(arguments[0])) - for (var a3 in t3) - this.remember(a3, t3[a3]); - else { - if (1 == arguments.length) - return this.memory()[t3]; - this.memory()[t3] = e3; - } - return this; - }, forget: function() { - if (0 == arguments.length) - this._memory = {}; - else - for (var t3 = arguments.length - 1; t3 >= 0; t3--) - delete this.memory()[arguments[t3]]; - return this; - }, memory: function() { - return this._memory || (this._memory = {}); - } }), a2.get = function(t3) { - var i2 = e2.getElementById(function(t4) { - var e3 = (t4 || "").toString().match(a2.regex.reference); - if (e3) - return e3[1]; - }(t3) || t3); - return a2.adopt(i2); - }, a2.select = function(t3, i2) { - return new a2.Set(a2.utils.map((i2 || e2).querySelectorAll(t3), function(t4) { - return a2.adopt(t4); - })); - }, a2.extend(a2.Parent, { select: function(t3) { - return a2.select(t3, this.node); - } }); - var v2 = "abcdef".split(""); - if ("function" != typeof t2.CustomEvent) { - var m2 = function(t3, i2) { - i2 = i2 || { bubbles: false, cancelable: false, detail: void 0 }; - var a3 = e2.createEvent("CustomEvent"); - return a3.initCustomEvent(t3, i2.bubbles, i2.cancelable, i2.detail), a3; - }; - m2.prototype = t2.Event.prototype, a2.CustomEvent = m2; - } else - a2.CustomEvent = t2.CustomEvent; - return a2; - }, "function" == typeof define && define.amd ? define(function() { - return Ht(Rt, Rt.document); - }) : "object" === ("undefined" == typeof exports ? "undefined" : i(exports)) && "undefined" != typeof module ? module.exports = Rt.document ? Ht(Rt, Rt.document) : function(t2) { - return Ht(t2, t2.document); - } : Rt.SVG = Ht(Rt, Rt.document), /*! svg.filter.js - v2.0.2 - 2016-02-24 - * https://github.com/wout/svg.filter.js - * Copyright (c) 2016 Wout Fierens; Licensed MIT */ - function() { - SVG.Filter = SVG.invent({ create: "filter", inherit: SVG.Parent, extend: { source: "SourceGraphic", sourceAlpha: "SourceAlpha", background: "BackgroundImage", backgroundAlpha: "BackgroundAlpha", fill: "FillPaint", stroke: "StrokePaint", autoSetIn: true, put: function(t3, e3) { - return this.add(t3, e3), !t3.attr("in") && this.autoSetIn && t3.attr("in", this.source), t3.attr("result") || t3.attr("result", t3), t3; - }, blend: function(t3, e3, i3) { - return this.put(new SVG.BlendEffect(t3, e3, i3)); - }, colorMatrix: function(t3, e3) { - return this.put(new SVG.ColorMatrixEffect(t3, e3)); - }, convolveMatrix: function(t3) { - return this.put(new SVG.ConvolveMatrixEffect(t3)); - }, componentTransfer: function(t3) { - return this.put(new SVG.ComponentTransferEffect(t3)); - }, composite: function(t3, e3, i3) { - return this.put(new SVG.CompositeEffect(t3, e3, i3)); - }, flood: function(t3, e3) { - return this.put(new SVG.FloodEffect(t3, e3)); - }, offset: function(t3, e3) { - return this.put(new SVG.OffsetEffect(t3, e3)); - }, image: function(t3) { - return this.put(new SVG.ImageEffect(t3)); - }, merge: function() { - var t3 = [void 0]; - for (var e3 in arguments) - t3.push(arguments[e3]); - return this.put(new (SVG.MergeEffect.bind.apply(SVG.MergeEffect, t3))()); - }, gaussianBlur: function(t3, e3) { - return this.put(new SVG.GaussianBlurEffect(t3, e3)); - }, morphology: function(t3, e3) { - return this.put(new SVG.MorphologyEffect(t3, e3)); - }, diffuseLighting: function(t3, e3, i3) { - return this.put(new SVG.DiffuseLightingEffect(t3, e3, i3)); - }, displacementMap: function(t3, e3, i3, a3, s3) { - return this.put(new SVG.DisplacementMapEffect(t3, e3, i3, a3, s3)); - }, specularLighting: function(t3, e3, i3, a3) { - return this.put(new SVG.SpecularLightingEffect(t3, e3, i3, a3)); - }, tile: function() { - return this.put(new SVG.TileEffect()); - }, turbulence: function(t3, e3, i3, a3, s3) { - return this.put(new SVG.TurbulenceEffect(t3, e3, i3, a3, s3)); - }, toString: function() { - return "url(#" + this.attr("id") + ")"; - } } }), SVG.extend(SVG.Defs, { filter: function(t3) { - var e3 = this.put(new SVG.Filter()); - return "function" == typeof t3 && t3.call(e3, e3), e3; - } }), SVG.extend(SVG.Container, { filter: function(t3) { - return this.defs().filter(t3); - } }), SVG.extend(SVG.Element, SVG.G, SVG.Nested, { filter: function(t3) { - return this.filterer = t3 instanceof SVG.Element ? t3 : this.doc().filter(t3), this.doc() && this.filterer.doc() !== this.doc() && this.doc().defs().add(this.filterer), this.attr("filter", this.filterer), this.filterer; - }, unfilter: function(t3) { - return this.filterer && true === t3 && this.filterer.remove(), delete this.filterer, this.attr("filter", null); - } }), SVG.Effect = SVG.invent({ create: function() { - this.constructor.call(this); - }, inherit: SVG.Element, extend: { in: function(t3) { - return null == t3 ? this.parent() && this.parent().select('[result="' + this.attr("in") + '"]').get(0) || this.attr("in") : this.attr("in", t3); - }, result: function(t3) { - return null == t3 ? this.attr("result") : this.attr("result", t3); - }, toString: function() { - return this.result(); - } } }), SVG.ParentEffect = SVG.invent({ create: function() { - this.constructor.call(this); - }, inherit: SVG.Parent, extend: { in: function(t3) { - return null == t3 ? this.parent() && this.parent().select('[result="' + this.attr("in") + '"]').get(0) || this.attr("in") : this.attr("in", t3); - }, result: function(t3) { - return null == t3 ? this.attr("result") : this.attr("result", t3); - }, toString: function() { - return this.result(); - } } }); - var t2 = { blend: function(t3, e3) { - return this.parent() && this.parent().blend(this, t3, e3); - }, colorMatrix: function(t3, e3) { - return this.parent() && this.parent().colorMatrix(t3, e3).in(this); - }, convolveMatrix: function(t3) { - return this.parent() && this.parent().convolveMatrix(t3).in(this); - }, componentTransfer: function(t3) { - return this.parent() && this.parent().componentTransfer(t3).in(this); - }, composite: function(t3, e3) { - return this.parent() && this.parent().composite(this, t3, e3); - }, flood: function(t3, e3) { - return this.parent() && this.parent().flood(t3, e3); - }, offset: function(t3, e3) { - return this.parent() && this.parent().offset(t3, e3).in(this); - }, image: function(t3) { - return this.parent() && this.parent().image(t3); - }, merge: function() { - return this.parent() && this.parent().merge.apply(this.parent(), [this].concat(arguments)); - }, gaussianBlur: function(t3, e3) { - return this.parent() && this.parent().gaussianBlur(t3, e3).in(this); - }, morphology: function(t3, e3) { - return this.parent() && this.parent().morphology(t3, e3).in(this); - }, diffuseLighting: function(t3, e3, i3) { - return this.parent() && this.parent().diffuseLighting(t3, e3, i3).in(this); - }, displacementMap: function(t3, e3, i3, a3) { - return this.parent() && this.parent().displacementMap(this, t3, e3, i3, a3); - }, specularLighting: function(t3, e3, i3, a3) { - return this.parent() && this.parent().specularLighting(t3, e3, i3, a3).in(this); - }, tile: function() { - return this.parent() && this.parent().tile().in(this); - }, turbulence: function(t3, e3, i3, a3, s3) { - return this.parent() && this.parent().turbulence(t3, e3, i3, a3, s3).in(this); - } }; - SVG.extend(SVG.Effect, t2), SVG.extend(SVG.ParentEffect, t2), SVG.ChildEffect = SVG.invent({ create: function() { - this.constructor.call(this); - }, inherit: SVG.Element, extend: { in: function(t3) { - this.attr("in", t3); - } } }); - var e2 = { blend: function(t3, e3, i3) { - this.attr({ in: t3, in2: e3, mode: i3 || "normal" }); - }, colorMatrix: function(t3, e3) { - "matrix" == t3 && (e3 = s2(e3)), this.attr({ type: t3, values: void 0 === e3 ? null : e3 }); - }, convolveMatrix: function(t3) { - t3 = s2(t3), this.attr({ order: Math.sqrt(t3.split(" ").length), kernelMatrix: t3 }); - }, composite: function(t3, e3, i3) { - this.attr({ in: t3, in2: e3, operator: i3 }); - }, flood: function(t3, e3) { - this.attr("flood-color", t3), null != e3 && this.attr("flood-opacity", e3); - }, offset: function(t3, e3) { - this.attr({ dx: t3, dy: e3 }); - }, image: function(t3) { - this.attr("href", t3, SVG.xlink); - }, displacementMap: function(t3, e3, i3, a3, s3) { - this.attr({ in: t3, in2: e3, scale: i3, xChannelSelector: a3, yChannelSelector: s3 }); - }, gaussianBlur: function(t3, e3) { - null != t3 || null != e3 ? this.attr("stdDeviation", function(t4) { - if (!Array.isArray(t4)) - return t4; - for (var e4 = 0, i3 = t4.length, a3 = []; e4 < i3; e4++) - a3.push(t4[e4]); - return a3.join(" "); - }(Array.prototype.slice.call(arguments))) : this.attr("stdDeviation", "0 0"); - }, morphology: function(t3, e3) { - this.attr({ operator: t3, radius: e3 }); - }, tile: function() { - }, turbulence: function(t3, e3, i3, a3, s3) { - this.attr({ numOctaves: e3, seed: i3, stitchTiles: a3, baseFrequency: t3, type: s3 }); - } }, i2 = { merge: function() { - var t3; - if (arguments[0] instanceof SVG.Set) { - var e3 = this; - arguments[0].each(function(t4) { - this instanceof SVG.MergeNode ? e3.put(this) : (this instanceof SVG.Effect || this instanceof SVG.ParentEffect) && e3.put(new SVG.MergeNode(this)); - }); - } else { - t3 = Array.isArray(arguments[0]) ? arguments[0] : arguments; - for (var i3 = 0; i3 < t3.length; i3++) - t3[i3] instanceof SVG.MergeNode ? this.put(t3[i3]) : this.put(new SVG.MergeNode(t3[i3])); - } - }, componentTransfer: function(t3) { - if (this.rgb = new SVG.Set(), ["r", "g", "b", "a"].forEach(function(t4) { - this[t4] = new SVG["Func" + t4.toUpperCase()]("identity"), this.rgb.add(this[t4]), this.node.appendChild(this[t4].node); - }.bind(this)), t3) - for (var e3 in t3.rgb && (["r", "g", "b"].forEach(function(e4) { - this[e4].attr(t3.rgb); - }.bind(this)), delete t3.rgb), t3) - this[e3].attr(t3[e3]); - }, diffuseLighting: function(t3, e3, i3) { - this.attr({ surfaceScale: t3, diffuseConstant: e3, kernelUnitLength: i3 }); - }, specularLighting: function(t3, e3, i3, a3) { - this.attr({ surfaceScale: t3, diffuseConstant: e3, specularExponent: i3, kernelUnitLength: a3 }); - } }, a2 = { distantLight: function(t3, e3) { - this.attr({ azimuth: t3, elevation: e3 }); - }, pointLight: function(t3, e3, i3) { - this.attr({ x: t3, y: e3, z: i3 }); - }, spotLight: function(t3, e3, i3, a3, s3, r3) { - this.attr({ x: t3, y: e3, z: i3, pointsAtX: a3, pointsAtY: s3, pointsAtZ: r3 }); - }, mergeNode: function(t3) { - this.attr("in", t3); - } }; - function s2(t3) { - return Array.isArray(t3) && (t3 = new SVG.Array(t3)), t3.toString().replace(/^\s+/, "").replace(/\s+$/, "").replace(/\s+/g, " "); - } - function r2() { - var t3 = function() { - }; - for (var e3 in "function" == typeof arguments[arguments.length - 1] && (t3 = arguments[arguments.length - 1], Array.prototype.splice.call(arguments, arguments.length - 1, 1)), arguments) - for (var i3 in arguments[e3]) - t3(arguments[e3][i3], i3, arguments[e3]); - } - ["r", "g", "b", "a"].forEach(function(t3) { - a2["Func" + t3.toUpperCase()] = function(t4) { - switch (this.attr("type", t4), t4) { - case "table": - this.attr("tableValues", arguments[1]); - break; - case "linear": - this.attr("slope", arguments[1]), this.attr("intercept", arguments[2]); - break; - case "gamma": - this.attr("amplitude", arguments[1]), this.attr("exponent", arguments[2]), this.attr("offset", arguments[2]); - } - }; - }), r2(e2, function(t3, e3) { - var i3 = e3.charAt(0).toUpperCase() + e3.slice(1); - SVG[i3 + "Effect"] = SVG.invent({ create: function() { - this.constructor.call(this, SVG.create("fe" + i3)), t3.apply(this, arguments), this.result(this.attr("id") + "Out"); - }, inherit: SVG.Effect, extend: {} }); - }), r2(i2, function(t3, e3) { - var i3 = e3.charAt(0).toUpperCase() + e3.slice(1); - SVG[i3 + "Effect"] = SVG.invent({ create: function() { - this.constructor.call(this, SVG.create("fe" + i3)), t3.apply(this, arguments), this.result(this.attr("id") + "Out"); - }, inherit: SVG.ParentEffect, extend: {} }); - }), r2(a2, function(t3, e3) { - var i3 = e3.charAt(0).toUpperCase() + e3.slice(1); - SVG[i3] = SVG.invent({ create: function() { - this.constructor.call(this, SVG.create("fe" + i3)), t3.apply(this, arguments); - }, inherit: SVG.ChildEffect, extend: {} }); - }), SVG.extend(SVG.MergeEffect, { in: function(t3) { - return t3 instanceof SVG.MergeNode ? this.add(t3, 0) : this.add(new SVG.MergeNode(t3), 0), this; - } }), SVG.extend(SVG.CompositeEffect, SVG.BlendEffect, SVG.DisplacementMapEffect, { in2: function(t3) { - return null == t3 ? this.parent() && this.parent().select('[result="' + this.attr("in2") + '"]').get(0) || this.attr("in2") : this.attr("in2", t3); - } }), SVG.filter = { sepiatone: [0.343, 0.669, 0.119, 0, 0, 0.249, 0.626, 0.13, 0, 0, 0.172, 0.334, 0.111, 0, 0, 0, 0, 0, 1, 0] }; - }.call(void 0), function() { - function t2(t3, s3, r2, o2, n2, l2, h2) { - for (var c2 = t3.slice(s3, r2 || h2), d2 = o2.slice(n2, l2 || h2), g2 = 0, u2 = { pos: [0, 0], start: [0, 0] }, p2 = { pos: [0, 0], start: [0, 0] }; ; ) { - if (c2[g2] = e2.call(u2, c2[g2]), d2[g2] = e2.call(p2, d2[g2]), c2[g2][0] != d2[g2][0] || "M" == c2[g2][0] || "A" == c2[g2][0] && (c2[g2][4] != d2[g2][4] || c2[g2][5] != d2[g2][5]) ? (Array.prototype.splice.apply(c2, [g2, 1].concat(a2.call(u2, c2[g2]))), Array.prototype.splice.apply(d2, [g2, 1].concat(a2.call(p2, d2[g2])))) : (c2[g2] = i2.call(u2, c2[g2]), d2[g2] = i2.call(p2, d2[g2])), ++g2 == c2.length && g2 == d2.length) - break; - g2 == c2.length && c2.push(["C", u2.pos[0], u2.pos[1], u2.pos[0], u2.pos[1], u2.pos[0], u2.pos[1]]), g2 == d2.length && d2.push(["C", p2.pos[0], p2.pos[1], p2.pos[0], p2.pos[1], p2.pos[0], p2.pos[1]]); - } - return { start: c2, dest: d2 }; - } - function e2(t3) { - switch (t3[0]) { - case "z": - case "Z": - t3[0] = "L", t3[1] = this.start[0], t3[2] = this.start[1]; - break; - case "H": - t3[0] = "L", t3[2] = this.pos[1]; - break; - case "V": - t3[0] = "L", t3[2] = t3[1], t3[1] = this.pos[0]; - break; - case "T": - t3[0] = "Q", t3[3] = t3[1], t3[4] = t3[2], t3[1] = this.reflection[1], t3[2] = this.reflection[0]; - break; - case "S": - t3[0] = "C", t3[6] = t3[4], t3[5] = t3[3], t3[4] = t3[2], t3[3] = t3[1], t3[2] = this.reflection[1], t3[1] = this.reflection[0]; - } - return t3; - } - function i2(t3) { - var e3 = t3.length; - return this.pos = [t3[e3 - 2], t3[e3 - 1]], -1 != "SCQT".indexOf(t3[0]) && (this.reflection = [2 * this.pos[0] - t3[e3 - 4], 2 * this.pos[1] - t3[e3 - 3]]), t3; - } - function a2(t3) { - var e3 = [t3]; - switch (t3[0]) { - case "M": - return this.pos = this.start = [t3[1], t3[2]], e3; - case "L": - t3[5] = t3[3] = t3[1], t3[6] = t3[4] = t3[2], t3[1] = this.pos[0], t3[2] = this.pos[1]; - break; - case "Q": - t3[6] = t3[4], t3[5] = t3[3], t3[4] = 1 * t3[4] / 3 + 2 * t3[2] / 3, t3[3] = 1 * t3[3] / 3 + 2 * t3[1] / 3, t3[2] = 1 * this.pos[1] / 3 + 2 * t3[2] / 3, t3[1] = 1 * this.pos[0] / 3 + 2 * t3[1] / 3; - break; - case "A": - e3 = function(t4, e4) { - var i3, a3, s3, r2, o2, n2, l2, h2, c2, d2, g2, u2, p2, f2, x2, b2, v2, m2, y2, w2, k2, A2, S2, C2, L2, P2, I2 = Math.abs(e4[1]), M2 = Math.abs(e4[2]), T2 = e4[3] % 360, z2 = e4[4], X2 = e4[5], E2 = e4[6], Y2 = e4[7], F2 = new SVG.Point(t4), R2 = new SVG.Point(E2, Y2), H2 = []; - if (0 === I2 || 0 === M2 || F2.x === R2.x && F2.y === R2.y) - return [["C", F2.x, F2.y, R2.x, R2.y, R2.x, R2.y]]; - i3 = new SVG.Point((F2.x - R2.x) / 2, (F2.y - R2.y) / 2).transform(new SVG.Matrix().rotate(T2)), (a3 = i3.x * i3.x / (I2 * I2) + i3.y * i3.y / (M2 * M2)) > 1 && (I2 *= a3 = Math.sqrt(a3), M2 *= a3); - s3 = new SVG.Matrix().rotate(T2).scale(1 / I2, 1 / M2).rotate(-T2), F2 = F2.transform(s3), R2 = R2.transform(s3), r2 = [R2.x - F2.x, R2.y - F2.y], n2 = r2[0] * r2[0] + r2[1] * r2[1], o2 = Math.sqrt(n2), r2[0] /= o2, r2[1] /= o2, l2 = n2 < 4 ? Math.sqrt(1 - n2 / 4) : 0, z2 === X2 && (l2 *= -1); - h2 = new SVG.Point((R2.x + F2.x) / 2 + l2 * -r2[1], (R2.y + F2.y) / 2 + l2 * r2[0]), c2 = new SVG.Point(F2.x - h2.x, F2.y - h2.y), d2 = new SVG.Point(R2.x - h2.x, R2.y - h2.y), g2 = Math.acos(c2.x / Math.sqrt(c2.x * c2.x + c2.y * c2.y)), c2.y < 0 && (g2 *= -1); - u2 = Math.acos(d2.x / Math.sqrt(d2.x * d2.x + d2.y * d2.y)), d2.y < 0 && (u2 *= -1); - X2 && g2 > u2 && (u2 += 2 * Math.PI); - !X2 && g2 < u2 && (u2 -= 2 * Math.PI); - for (f2 = Math.ceil(2 * Math.abs(g2 - u2) / Math.PI), b2 = [], v2 = g2, p2 = (u2 - g2) / f2, x2 = 4 * Math.tan(p2 / 4) / 3, k2 = 0; k2 <= f2; k2++) - y2 = Math.cos(v2), m2 = Math.sin(v2), w2 = new SVG.Point(h2.x + y2, h2.y + m2), b2[k2] = [new SVG.Point(w2.x + x2 * m2, w2.y - x2 * y2), w2, new SVG.Point(w2.x - x2 * m2, w2.y + x2 * y2)], v2 += p2; - for (b2[0][0] = b2[0][1].clone(), b2[b2.length - 1][2] = b2[b2.length - 1][1].clone(), s3 = new SVG.Matrix().rotate(T2).scale(I2, M2).rotate(-T2), k2 = 0, A2 = b2.length; k2 < A2; k2++) - b2[k2][0] = b2[k2][0].transform(s3), b2[k2][1] = b2[k2][1].transform(s3), b2[k2][2] = b2[k2][2].transform(s3); - for (k2 = 1, A2 = b2.length; k2 < A2; k2++) - S2 = (w2 = b2[k2 - 1][2]).x, C2 = w2.y, L2 = (w2 = b2[k2][0]).x, P2 = w2.y, E2 = (w2 = b2[k2][1]).x, Y2 = w2.y, H2.push(["C", S2, C2, L2, P2, E2, Y2]); - return H2; - }(this.pos, t3), t3 = e3[0]; - } - return t3[0] = "C", this.pos = [t3[5], t3[6]], this.reflection = [2 * t3[5] - t3[3], 2 * t3[6] - t3[4]], e3; - } - function s2(t3, e3) { - if (false === e3) - return false; - for (var i3 = e3, a3 = t3.length; i3 < a3; ++i3) - if ("M" == t3[i3][0]) - return i3; - return false; - } - SVG.extend(SVG.PathArray, { morph: function(e3) { - for (var i3 = this.value, a3 = this.parse(e3), r2 = 0, o2 = 0, n2 = false, l2 = false; false !== r2 || false !== o2; ) { - var h2; - n2 = s2(i3, false !== r2 && r2 + 1), l2 = s2(a3, false !== o2 && o2 + 1), false === r2 && (r2 = 0 == (h2 = new SVG.PathArray(c2.start).bbox()).height || 0 == h2.width ? i3.push(i3[0]) - 1 : i3.push(["M", h2.x + h2.width / 2, h2.y + h2.height / 2]) - 1), false === o2 && (o2 = 0 == (h2 = new SVG.PathArray(c2.dest).bbox()).height || 0 == h2.width ? a3.push(a3[0]) - 1 : a3.push(["M", h2.x + h2.width / 2, h2.y + h2.height / 2]) - 1); - var c2 = t2(i3, r2, n2, a3, o2, l2); - i3 = i3.slice(0, r2).concat(c2.start, false === n2 ? [] : i3.slice(n2)), a3 = a3.slice(0, o2).concat(c2.dest, false === l2 ? [] : a3.slice(l2)), r2 = false !== n2 && r2 + c2.start.length, o2 = false !== l2 && o2 + c2.dest.length; - } - return this.value = i3, this.destination = new SVG.PathArray(), this.destination.value = a3, this; - } }); - }(), /*! svg.draggable.js - v2.2.2 - 2019-01-08 - * https://github.com/svgdotjs/svg.draggable.js - * Copyright (c) 2019 Wout Fierens; Licensed MIT */ - function() { - function t2(t3) { - t3.remember("_draggable", this), this.el = t3; - } - t2.prototype.init = function(t3, e2) { - var i2 = this; - this.constraint = t3, this.value = e2, this.el.on("mousedown.drag", function(t4) { - i2.start(t4); - }), this.el.on("touchstart.drag", function(t4) { - i2.start(t4); - }); - }, t2.prototype.transformPoint = function(t3, e2) { - var i2 = (t3 = t3 || window.event).changedTouches && t3.changedTouches[0] || t3; - return this.p.x = i2.clientX - (e2 || 0), this.p.y = i2.clientY, this.p.matrixTransform(this.m); - }, t2.prototype.getBBox = function() { - var t3 = this.el.bbox(); - return this.el instanceof SVG.Nested && (t3 = this.el.rbox()), (this.el instanceof SVG.G || this.el instanceof SVG.Use || this.el instanceof SVG.Nested) && (t3.x = this.el.x(), t3.y = this.el.y()), t3; - }, t2.prototype.start = function(t3) { - if ("click" != t3.type && "mousedown" != t3.type && "mousemove" != t3.type || 1 == (t3.which || t3.buttons)) { - var e2 = this; - if (this.el.fire("beforedrag", { event: t3, handler: this }), !this.el.event().defaultPrevented) { - t3.preventDefault(), t3.stopPropagation(), this.parent = this.parent || this.el.parent(SVG.Nested) || this.el.parent(SVG.Doc), this.p = this.parent.node.createSVGPoint(), this.m = this.el.node.getScreenCTM().inverse(); - var i2, a2 = this.getBBox(); - if (this.el instanceof SVG.Text) - switch (i2 = this.el.node.getComputedTextLength(), this.el.attr("text-anchor")) { - case "middle": - i2 /= 2; - break; - case "start": - i2 = 0; - } - this.startPoints = { point: this.transformPoint(t3, i2), box: a2, transform: this.el.transform() }, SVG.on(window, "mousemove.drag", function(t4) { - e2.drag(t4); - }), SVG.on(window, "touchmove.drag", function(t4) { - e2.drag(t4); - }), SVG.on(window, "mouseup.drag", function(t4) { - e2.end(t4); - }), SVG.on(window, "touchend.drag", function(t4) { - e2.end(t4); - }), this.el.fire("dragstart", { event: t3, p: this.startPoints.point, m: this.m, handler: this }); - } - } - }, t2.prototype.drag = function(t3) { - var e2 = this.getBBox(), i2 = this.transformPoint(t3), a2 = this.startPoints.box.x + i2.x - this.startPoints.point.x, s2 = this.startPoints.box.y + i2.y - this.startPoints.point.y, r2 = this.constraint, o2 = i2.x - this.startPoints.point.x, n2 = i2.y - this.startPoints.point.y; - if (this.el.fire("dragmove", { event: t3, p: i2, m: this.m, handler: this }), this.el.event().defaultPrevented) - return i2; - if ("function" == typeof r2) { - var l2 = r2.call(this.el, a2, s2, this.m); - "boolean" == typeof l2 && (l2 = { x: l2, y: l2 }), true === l2.x ? this.el.x(a2) : false !== l2.x && this.el.x(l2.x), true === l2.y ? this.el.y(s2) : false !== l2.y && this.el.y(l2.y); - } else - "object" == typeof r2 && (null != r2.minX && a2 < r2.minX ? o2 = (a2 = r2.minX) - this.startPoints.box.x : null != r2.maxX && a2 > r2.maxX - e2.width && (o2 = (a2 = r2.maxX - e2.width) - this.startPoints.box.x), null != r2.minY && s2 < r2.minY ? n2 = (s2 = r2.minY) - this.startPoints.box.y : null != r2.maxY && s2 > r2.maxY - e2.height && (n2 = (s2 = r2.maxY - e2.height) - this.startPoints.box.y), null != r2.snapToGrid && (a2 -= a2 % r2.snapToGrid, s2 -= s2 % r2.snapToGrid, o2 -= o2 % r2.snapToGrid, n2 -= n2 % r2.snapToGrid), this.el instanceof SVG.G ? this.el.matrix(this.startPoints.transform).transform({ x: o2, y: n2 }, true) : this.el.move(a2, s2)); - return i2; - }, t2.prototype.end = function(t3) { - var e2 = this.drag(t3); - this.el.fire("dragend", { event: t3, p: e2, m: this.m, handler: this }), SVG.off(window, "mousemove.drag"), SVG.off(window, "touchmove.drag"), SVG.off(window, "mouseup.drag"), SVG.off(window, "touchend.drag"); - }, SVG.extend(SVG.Element, { draggable: function(e2, i2) { - "function" != typeof e2 && "object" != typeof e2 || (i2 = e2, e2 = true); - var a2 = this.remember("_draggable") || new t2(this); - return (e2 = void 0 === e2 || e2) ? a2.init(i2 || {}, e2) : (this.off("mousedown.drag"), this.off("touchstart.drag")), this; - } }); - }.call(void 0), function() { - function t2(t3) { - this.el = t3, t3.remember("_selectHandler", this), this.pointSelection = { isSelected: false }, this.rectSelection = { isSelected: false }, this.pointsList = { lt: [0, 0], rt: ["width", 0], rb: ["width", "height"], lb: [0, "height"], t: ["width", 0], r: ["width", "height"], b: ["width", "height"], l: [0, "height"] }, this.pointCoord = function(t4, e2, i2) { - var a2 = "string" != typeof t4 ? t4 : e2[t4]; - return i2 ? a2 / 2 : a2; - }, this.pointCoords = function(t4, e2) { - var i2 = this.pointsList[t4]; - return { x: this.pointCoord(i2[0], e2, "t" === t4 || "b" === t4), y: this.pointCoord(i2[1], e2, "r" === t4 || "l" === t4) }; - }; - } - t2.prototype.init = function(t3, e2) { - var i2 = this.el.bbox(); - this.options = {}; - var a2 = this.el.selectize.defaults.points; - for (var s2 in this.el.selectize.defaults) - this.options[s2] = this.el.selectize.defaults[s2], void 0 !== e2[s2] && (this.options[s2] = e2[s2]); - var r2 = ["points", "pointsExclude"]; - for (var s2 in r2) { - var o2 = this.options[r2[s2]]; - "string" == typeof o2 ? o2 = o2.length > 0 ? o2.split(/\s*,\s*/i) : [] : "boolean" == typeof o2 && "points" === r2[s2] && (o2 = o2 ? a2 : []), this.options[r2[s2]] = o2; - } - this.options.points = [a2, this.options.points].reduce(function(t4, e3) { - return t4.filter(function(t5) { - return e3.indexOf(t5) > -1; - }); - }), this.options.points = [this.options.points, this.options.pointsExclude].reduce(function(t4, e3) { - return t4.filter(function(t5) { - return e3.indexOf(t5) < 0; - }); - }), this.parent = this.el.parent(), this.nested = this.nested || this.parent.group(), this.nested.matrix(new SVG.Matrix(this.el).translate(i2.x, i2.y)), this.options.deepSelect && -1 !== ["line", "polyline", "polygon"].indexOf(this.el.type) ? this.selectPoints(t3) : this.selectRect(t3), this.observe(), this.cleanup(); - }, t2.prototype.selectPoints = function(t3) { - return this.pointSelection.isSelected = t3, this.pointSelection.set || (this.pointSelection.set = this.parent.set(), this.drawPoints()), this; - }, t2.prototype.getPointArray = function() { - var t3 = this.el.bbox(); - return this.el.array().valueOf().map(function(e2) { - return [e2[0] - t3.x, e2[1] - t3.y]; - }); - }, t2.prototype.drawPoints = function() { - for (var t3 = this, e2 = this.getPointArray(), i2 = 0, a2 = e2.length; i2 < a2; ++i2) { - var s2 = /* @__PURE__ */ function(e3) { - return function(i3) { - (i3 = i3 || window.event).preventDefault ? i3.preventDefault() : i3.returnValue = false, i3.stopPropagation(); - var a3 = i3.pageX || i3.touches[0].pageX, s3 = i3.pageY || i3.touches[0].pageY; - t3.el.fire("point", { x: a3, y: s3, i: e3, event: i3 }); - }; - }(i2), r2 = this.drawPoint(e2[i2][0], e2[i2][1]).addClass(this.options.classPoints).addClass(this.options.classPoints + "_point").on("touchstart", s2).on("mousedown", s2); - this.pointSelection.set.add(r2); - } - }, t2.prototype.drawPoint = function(t3, e2) { - var i2 = this.options.pointType; - switch (i2) { - case "circle": - return this.drawCircle(t3, e2); - case "rect": - return this.drawRect(t3, e2); - default: - if ("function" == typeof i2) - return i2.call(this, t3, e2); - throw new Error("Unknown " + i2 + " point type!"); - } - }, t2.prototype.drawCircle = function(t3, e2) { - return this.nested.circle(this.options.pointSize).center(t3, e2); - }, t2.prototype.drawRect = function(t3, e2) { - return this.nested.rect(this.options.pointSize, this.options.pointSize).center(t3, e2); - }, t2.prototype.updatePointSelection = function() { - var t3 = this.getPointArray(); - this.pointSelection.set.each(function(e2) { - this.cx() === t3[e2][0] && this.cy() === t3[e2][1] || this.center(t3[e2][0], t3[e2][1]); - }); - }, t2.prototype.updateRectSelection = function() { - var t3 = this, e2 = this.el.bbox(); - if (this.rectSelection.set.get(0).attr({ width: e2.width, height: e2.height }), this.options.points.length && this.options.points.map(function(i3, a2) { - var s2 = t3.pointCoords(i3, e2); - t3.rectSelection.set.get(a2 + 1).center(s2.x, s2.y); - }), this.options.rotationPoint) { - var i2 = this.rectSelection.set.length(); - this.rectSelection.set.get(i2 - 1).center(e2.width / 2, 20); - } - }, t2.prototype.selectRect = function(t3) { - var e2 = this, i2 = this.el.bbox(); - function a2(t4) { - return function(i3) { - (i3 = i3 || window.event).preventDefault ? i3.preventDefault() : i3.returnValue = false, i3.stopPropagation(); - var a3 = i3.pageX || i3.touches[0].pageX, s3 = i3.pageY || i3.touches[0].pageY; - e2.el.fire(t4, { x: a3, y: s3, event: i3 }); - }; - } - if (this.rectSelection.isSelected = t3, this.rectSelection.set = this.rectSelection.set || this.parent.set(), this.rectSelection.set.get(0) || this.rectSelection.set.add(this.nested.rect(i2.width, i2.height).addClass(this.options.classRect)), this.options.points.length && this.rectSelection.set.length() < 2) { - this.options.points.map(function(t4, s3) { - var r3 = e2.pointCoords(t4, i2), o2 = e2.drawPoint(r3.x, r3.y).attr("class", e2.options.classPoints + "_" + t4).on("mousedown", a2(t4)).on("touchstart", a2(t4)); - e2.rectSelection.set.add(o2); - }), this.rectSelection.set.each(function() { - this.addClass(e2.options.classPoints); - }); - } - if (this.options.rotationPoint && (this.options.points && !this.rectSelection.set.get(9) || !this.options.points && !this.rectSelection.set.get(1))) { - var s2 = function(t4) { - (t4 = t4 || window.event).preventDefault ? t4.preventDefault() : t4.returnValue = false, t4.stopPropagation(); - var i3 = t4.pageX || t4.touches[0].pageX, a3 = t4.pageY || t4.touches[0].pageY; - e2.el.fire("rot", { x: i3, y: a3, event: t4 }); - }, r2 = this.drawPoint(i2.width / 2, 20).attr("class", this.options.classPoints + "_rot").on("touchstart", s2).on("mousedown", s2); - this.rectSelection.set.add(r2); - } - }, t2.prototype.handler = function() { - var t3 = this.el.bbox(); - this.nested.matrix(new SVG.Matrix(this.el).translate(t3.x, t3.y)), this.rectSelection.isSelected && this.updateRectSelection(), this.pointSelection.isSelected && this.updatePointSelection(); - }, t2.prototype.observe = function() { - var t3 = this; - if (MutationObserver) - if (this.rectSelection.isSelected || this.pointSelection.isSelected) - this.observerInst = this.observerInst || new MutationObserver(function() { - t3.handler(); - }), this.observerInst.observe(this.el.node, { attributes: true }); - else - try { - this.observerInst.disconnect(), delete this.observerInst; - } catch (t4) { - } - else - this.el.off("DOMAttrModified.select"), (this.rectSelection.isSelected || this.pointSelection.isSelected) && this.el.on("DOMAttrModified.select", function() { - t3.handler(); - }); - }, t2.prototype.cleanup = function() { - !this.rectSelection.isSelected && this.rectSelection.set && (this.rectSelection.set.each(function() { - this.remove(); - }), this.rectSelection.set.clear(), delete this.rectSelection.set), !this.pointSelection.isSelected && this.pointSelection.set && (this.pointSelection.set.each(function() { - this.remove(); - }), this.pointSelection.set.clear(), delete this.pointSelection.set), this.pointSelection.isSelected || this.rectSelection.isSelected || (this.nested.remove(), delete this.nested); - }, SVG.extend(SVG.Element, { selectize: function(e2, i2) { - return "object" == typeof e2 && (i2 = e2, e2 = true), (this.remember("_selectHandler") || new t2(this)).init(void 0 === e2 || e2, i2 || {}), this; - } }), SVG.Element.prototype.selectize.defaults = { points: ["lt", "rt", "rb", "lb", "t", "r", "b", "l"], pointsExclude: [], classRect: "svg_select_boundingRect", classPoints: "svg_select_points", pointSize: 7, rotationPoint: true, deepSelect: false, pointType: "circle" }; - }(), function() { - (function() { - function t2(t3) { - t3.remember("_resizeHandler", this), this.el = t3, this.parameters = {}, this.lastUpdateCall = null, this.p = t3.doc().node.createSVGPoint(); - } - t2.prototype.transformPoint = function(t3, e2, i2) { - return this.p.x = t3 - (this.offset.x - window.pageXOffset), this.p.y = e2 - (this.offset.y - window.pageYOffset), this.p.matrixTransform(i2 || this.m); - }, t2.prototype._extractPosition = function(t3) { - return { x: null != t3.clientX ? t3.clientX : t3.touches[0].clientX, y: null != t3.clientY ? t3.clientY : t3.touches[0].clientY }; - }, t2.prototype.init = function(t3) { - var e2 = this; - if (this.stop(), "stop" !== t3) { - for (var i2 in this.options = {}, this.el.resize.defaults) - this.options[i2] = this.el.resize.defaults[i2], void 0 !== t3[i2] && (this.options[i2] = t3[i2]); - this.el.on("lt.resize", function(t4) { - e2.resize(t4 || window.event); - }), this.el.on("rt.resize", function(t4) { - e2.resize(t4 || window.event); - }), this.el.on("rb.resize", function(t4) { - e2.resize(t4 || window.event); - }), this.el.on("lb.resize", function(t4) { - e2.resize(t4 || window.event); - }), this.el.on("t.resize", function(t4) { - e2.resize(t4 || window.event); - }), this.el.on("r.resize", function(t4) { - e2.resize(t4 || window.event); - }), this.el.on("b.resize", function(t4) { - e2.resize(t4 || window.event); - }), this.el.on("l.resize", function(t4) { - e2.resize(t4 || window.event); - }), this.el.on("rot.resize", function(t4) { - e2.resize(t4 || window.event); - }), this.el.on("point.resize", function(t4) { - e2.resize(t4 || window.event); - }), this.update(); - } - }, t2.prototype.stop = function() { - return this.el.off("lt.resize"), this.el.off("rt.resize"), this.el.off("rb.resize"), this.el.off("lb.resize"), this.el.off("t.resize"), this.el.off("r.resize"), this.el.off("b.resize"), this.el.off("l.resize"), this.el.off("rot.resize"), this.el.off("point.resize"), this; - }, t2.prototype.resize = function(t3) { - var e2 = this; - this.m = this.el.node.getScreenCTM().inverse(), this.offset = { x: window.pageXOffset, y: window.pageYOffset }; - var i2 = this._extractPosition(t3.detail.event); - if (this.parameters = { type: this.el.type, p: this.transformPoint(i2.x, i2.y), x: t3.detail.x, y: t3.detail.y, box: this.el.bbox(), rotation: this.el.transform().rotation }, "text" === this.el.type && (this.parameters.fontSize = this.el.attr()["font-size"]), void 0 !== t3.detail.i) { - var a2 = this.el.array().valueOf(); - this.parameters.i = t3.detail.i, this.parameters.pointCoords = [a2[t3.detail.i][0], a2[t3.detail.i][1]]; - } - switch (t3.type) { - case "lt": - this.calc = function(t4, e3) { - var i3 = this.snapToGrid(t4, e3); - if (this.parameters.box.width - i3[0] > 0 && this.parameters.box.height - i3[1] > 0) { - if ("text" === this.parameters.type) - return this.el.move(this.parameters.box.x + i3[0], this.parameters.box.y), void this.el.attr("font-size", this.parameters.fontSize - i3[0]); - i3 = this.checkAspectRatio(i3), this.el.move(this.parameters.box.x + i3[0], this.parameters.box.y + i3[1]).size(this.parameters.box.width - i3[0], this.parameters.box.height - i3[1]); - } - }; - break; - case "rt": - this.calc = function(t4, e3) { - var i3 = this.snapToGrid(t4, e3, 2); - if (this.parameters.box.width + i3[0] > 0 && this.parameters.box.height - i3[1] > 0) { - if ("text" === this.parameters.type) - return this.el.move(this.parameters.box.x - i3[0], this.parameters.box.y), void this.el.attr("font-size", this.parameters.fontSize + i3[0]); - i3 = this.checkAspectRatio(i3, true), this.el.move(this.parameters.box.x, this.parameters.box.y + i3[1]).size(this.parameters.box.width + i3[0], this.parameters.box.height - i3[1]); - } - }; - break; - case "rb": - this.calc = function(t4, e3) { - var i3 = this.snapToGrid(t4, e3, 0); - if (this.parameters.box.width + i3[0] > 0 && this.parameters.box.height + i3[1] > 0) { - if ("text" === this.parameters.type) - return this.el.move(this.parameters.box.x - i3[0], this.parameters.box.y), void this.el.attr("font-size", this.parameters.fontSize + i3[0]); - i3 = this.checkAspectRatio(i3), this.el.move(this.parameters.box.x, this.parameters.box.y).size(this.parameters.box.width + i3[0], this.parameters.box.height + i3[1]); - } - }; - break; - case "lb": - this.calc = function(t4, e3) { - var i3 = this.snapToGrid(t4, e3, 1); - if (this.parameters.box.width - i3[0] > 0 && this.parameters.box.height + i3[1] > 0) { - if ("text" === this.parameters.type) - return this.el.move(this.parameters.box.x + i3[0], this.parameters.box.y), void this.el.attr("font-size", this.parameters.fontSize - i3[0]); - i3 = this.checkAspectRatio(i3, true), this.el.move(this.parameters.box.x + i3[0], this.parameters.box.y).size(this.parameters.box.width - i3[0], this.parameters.box.height + i3[1]); - } - }; - break; - case "t": - this.calc = function(t4, e3) { - var i3 = this.snapToGrid(t4, e3, 2); - if (this.parameters.box.height - i3[1] > 0) { - if ("text" === this.parameters.type) - return; - this.el.move(this.parameters.box.x, this.parameters.box.y + i3[1]).height(this.parameters.box.height - i3[1]); - } - }; - break; - case "r": - this.calc = function(t4, e3) { - var i3 = this.snapToGrid(t4, e3, 0); - if (this.parameters.box.width + i3[0] > 0) { - if ("text" === this.parameters.type) - return; - this.el.move(this.parameters.box.x, this.parameters.box.y).width(this.parameters.box.width + i3[0]); - } - }; - break; - case "b": - this.calc = function(t4, e3) { - var i3 = this.snapToGrid(t4, e3, 0); - if (this.parameters.box.height + i3[1] > 0) { - if ("text" === this.parameters.type) - return; - this.el.move(this.parameters.box.x, this.parameters.box.y).height(this.parameters.box.height + i3[1]); - } - }; - break; - case "l": - this.calc = function(t4, e3) { - var i3 = this.snapToGrid(t4, e3, 1); - if (this.parameters.box.width - i3[0] > 0) { - if ("text" === this.parameters.type) - return; - this.el.move(this.parameters.box.x + i3[0], this.parameters.box.y).width(this.parameters.box.width - i3[0]); - } - }; - break; - case "rot": - this.calc = function(t4, e3) { - var i3 = t4 + this.parameters.p.x, a3 = e3 + this.parameters.p.y, s2 = Math.atan2(this.parameters.p.y - this.parameters.box.y - this.parameters.box.height / 2, this.parameters.p.x - this.parameters.box.x - this.parameters.box.width / 2), r2 = Math.atan2(a3 - this.parameters.box.y - this.parameters.box.height / 2, i3 - this.parameters.box.x - this.parameters.box.width / 2), o2 = this.parameters.rotation + 180 * (r2 - s2) / Math.PI + this.options.snapToAngle / 2; - this.el.center(this.parameters.box.cx, this.parameters.box.cy).rotate(o2 - o2 % this.options.snapToAngle, this.parameters.box.cx, this.parameters.box.cy); - }; - break; - case "point": - this.calc = function(t4, e3) { - var i3 = this.snapToGrid(t4, e3, this.parameters.pointCoords[0], this.parameters.pointCoords[1]), a3 = this.el.array().valueOf(); - a3[this.parameters.i][0] = this.parameters.pointCoords[0] + i3[0], a3[this.parameters.i][1] = this.parameters.pointCoords[1] + i3[1], this.el.plot(a3); - }; - } - this.el.fire("resizestart", { dx: this.parameters.x, dy: this.parameters.y, event: t3 }), SVG.on(window, "touchmove.resize", function(t4) { - e2.update(t4 || window.event); - }), SVG.on(window, "touchend.resize", function() { - e2.done(); - }), SVG.on(window, "mousemove.resize", function(t4) { - e2.update(t4 || window.event); - }), SVG.on(window, "mouseup.resize", function() { - e2.done(); - }); - }, t2.prototype.update = function(t3) { - if (t3) { - var e2 = this._extractPosition(t3), i2 = this.transformPoint(e2.x, e2.y), a2 = i2.x - this.parameters.p.x, s2 = i2.y - this.parameters.p.y; - this.lastUpdateCall = [a2, s2], this.calc(a2, s2), this.el.fire("resizing", { dx: a2, dy: s2, event: t3 }); - } else - this.lastUpdateCall && this.calc(this.lastUpdateCall[0], this.lastUpdateCall[1]); - }, t2.prototype.done = function() { - this.lastUpdateCall = null, SVG.off(window, "mousemove.resize"), SVG.off(window, "mouseup.resize"), SVG.off(window, "touchmove.resize"), SVG.off(window, "touchend.resize"), this.el.fire("resizedone"); - }, t2.prototype.snapToGrid = function(t3, e2, i2, a2) { - var s2; - return void 0 !== a2 ? s2 = [(i2 + t3) % this.options.snapToGrid, (a2 + e2) % this.options.snapToGrid] : (i2 = null == i2 ? 3 : i2, s2 = [(this.parameters.box.x + t3 + (1 & i2 ? 0 : this.parameters.box.width)) % this.options.snapToGrid, (this.parameters.box.y + e2 + (2 & i2 ? 0 : this.parameters.box.height)) % this.options.snapToGrid]), t3 < 0 && (s2[0] -= this.options.snapToGrid), e2 < 0 && (s2[1] -= this.options.snapToGrid), t3 -= Math.abs(s2[0]) < this.options.snapToGrid / 2 ? s2[0] : s2[0] - (t3 < 0 ? -this.options.snapToGrid : this.options.snapToGrid), e2 -= Math.abs(s2[1]) < this.options.snapToGrid / 2 ? s2[1] : s2[1] - (e2 < 0 ? -this.options.snapToGrid : this.options.snapToGrid), this.constraintToBox(t3, e2, i2, a2); - }, t2.prototype.constraintToBox = function(t3, e2, i2, a2) { - var s2, r2, o2 = this.options.constraint || {}; - return void 0 !== a2 ? (s2 = i2, r2 = a2) : (s2 = this.parameters.box.x + (1 & i2 ? 0 : this.parameters.box.width), r2 = this.parameters.box.y + (2 & i2 ? 0 : this.parameters.box.height)), void 0 !== o2.minX && s2 + t3 < o2.minX && (t3 = o2.minX - s2), void 0 !== o2.maxX && s2 + t3 > o2.maxX && (t3 = o2.maxX - s2), void 0 !== o2.minY && r2 + e2 < o2.minY && (e2 = o2.minY - r2), void 0 !== o2.maxY && r2 + e2 > o2.maxY && (e2 = o2.maxY - r2), [t3, e2]; - }, t2.prototype.checkAspectRatio = function(t3, e2) { - if (!this.options.saveAspectRatio) - return t3; - var i2 = t3.slice(), a2 = this.parameters.box.width / this.parameters.box.height, s2 = this.parameters.box.width + t3[0], r2 = this.parameters.box.height - t3[1], o2 = s2 / r2; - return o2 < a2 ? (i2[1] = s2 / a2 - this.parameters.box.height, e2 && (i2[1] = -i2[1])) : o2 > a2 && (i2[0] = this.parameters.box.width - r2 * a2, e2 && (i2[0] = -i2[0])), i2; - }, SVG.extend(SVG.Element, { resize: function(e2) { - return (this.remember("_resizeHandler") || new t2(this)).init(e2 || {}), this; - } }), SVG.Element.prototype.resize.defaults = { snapToAngle: 0.1, snapToGrid: 1, constraint: {}, saveAspectRatio: false }; - }).call(this); - }(), void 0 === window.Apex && (window.Apex = {}); - var Gt = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "initModules", value: function() { - this.ctx.publicMethods = ["updateOptions", "updateSeries", "appendData", "appendSeries", "isSeriesHidden", "toggleSeries", "showSeries", "hideSeries", "setLocale", "resetSeries", "zoomX", "toggleDataPointSelection", "dataURI", "exportToCSV", "addXaxisAnnotation", "addYaxisAnnotation", "addPointAnnotation", "clearAnnotations", "removeAnnotation", "paper", "destroy"], this.ctx.eventList = ["click", "mousedown", "mousemove", "mouseleave", "touchstart", "touchmove", "touchleave", "mouseup", "touchend"], this.ctx.animations = new b(this.ctx), this.ctx.axes = new J(this.ctx), this.ctx.core = new Wt(this.ctx.el, this.ctx), this.ctx.config = new E({}), this.ctx.data = new W(this.ctx), this.ctx.grid = new j(this.ctx), this.ctx.graphics = new m(this.ctx), this.ctx.coreUtils = new y(this.ctx), this.ctx.crosshairs = new Q(this.ctx), this.ctx.events = new Z(this.ctx), this.ctx.exports = new G(this.ctx), this.ctx.localization = new $(this.ctx), this.ctx.options = new L(), this.ctx.responsive = new K(this.ctx), this.ctx.series = new N(this.ctx), this.ctx.theme = new tt(this.ctx), this.ctx.formatters = new M(this.ctx), this.ctx.titleSubtitle = new et(this.ctx), this.ctx.legend = new lt(this.ctx), this.ctx.toolbar = new ht(this.ctx), this.ctx.tooltip = new bt(this.ctx), this.ctx.dimensions = new ot(this.ctx), this.ctx.updateHelpers = new Bt(this.ctx), this.ctx.zoomPanSelection = new ct(this.ctx), this.ctx.w.globals.tooltip = new bt(this.ctx); - } }]), t2; - }(); - var Vt = function() { - function t2(e2) { - a(this, t2), this.ctx = e2, this.w = e2.w; - } - return r(t2, [{ key: "clear", value: function(t3) { - var e2 = t3.isUpdating; - this.ctx.zoomPanSelection && this.ctx.zoomPanSelection.destroy(), this.ctx.toolbar && this.ctx.toolbar.destroy(), this.ctx.animations = null, this.ctx.axes = null, this.ctx.annotations = null, this.ctx.core = null, this.ctx.data = null, this.ctx.grid = null, this.ctx.series = null, this.ctx.responsive = null, this.ctx.theme = null, this.ctx.formatters = null, this.ctx.titleSubtitle = null, this.ctx.legend = null, this.ctx.dimensions = null, this.ctx.options = null, this.ctx.crosshairs = null, this.ctx.zoomPanSelection = null, this.ctx.updateHelpers = null, this.ctx.toolbar = null, this.ctx.localization = null, this.ctx.w.globals.tooltip = null, this.clearDomElements({ isUpdating: e2 }); - } }, { key: "killSVG", value: function(t3) { - t3.each(function(t4, e2) { - this.removeClass("*"), this.off(), this.stop(); - }, true), t3.ungroup(), t3.clear(); - } }, { key: "clearDomElements", value: function(t3) { - var e2 = this, i2 = t3.isUpdating, a2 = this.w.globals.dom.Paper.node; - a2.parentNode && a2.parentNode.parentNode && !i2 && (a2.parentNode.parentNode.style.minHeight = "unset"); - var s2 = this.w.globals.dom.baseEl; - s2 && this.ctx.eventList.forEach(function(t4) { - s2.removeEventListener(t4, e2.ctx.events.documentEvent); - }); - var r2 = this.w.globals.dom; - if (null !== this.ctx.el) - for (; this.ctx.el.firstChild; ) - this.ctx.el.removeChild(this.ctx.el.firstChild); - this.killSVG(r2.Paper), r2.Paper.remove(), r2.elWrap = null, r2.elGraphical = null, r2.elLegendWrap = null, r2.elLegendForeign = null, r2.baseEl = null, r2.elGridRect = null, r2.elGridRectMask = null, r2.elGridRectMarkerMask = null, r2.elForecastMask = null, r2.elNonForecastMask = null, r2.elDefs = null; - } }]), t2; - }(); - var jt = /* @__PURE__ */ new WeakMap(); - var _t = function() { - function t2(e2, i2) { - a(this, t2), this.opts = i2, this.ctx = this, this.w = new F(i2).init(), this.el = e2, this.w.globals.cuid = x.randomId(), this.w.globals.chartID = this.w.config.chart.id ? x.escapeString(this.w.config.chart.id) : this.w.globals.cuid, new Gt(this).initModules(), this.create = x.bind(this.create, this), this.windowResizeHandler = this._windowResizeHandler.bind(this), this.parentResizeHandler = this._parentResizeCallback.bind(this); - } - return r(t2, [{ key: "render", value: function() { - var t3 = this; - return new Promise(function(e2, i2) { - if (null !== t3.el) { - void 0 === Apex._chartInstances && (Apex._chartInstances = []), t3.w.config.chart.id && Apex._chartInstances.push({ id: t3.w.globals.chartID, group: t3.w.config.chart.group, chart: t3 }), t3.setLocale(t3.w.config.chart.defaultLocale); - var a2 = t3.w.config.chart.events.beforeMount; - if ("function" == typeof a2 && a2(t3, t3.w), t3.events.fireEvent("beforeMount", [t3, t3.w]), window.addEventListener("resize", t3.windowResizeHandler), function(t4, e3) { - var i3 = false; - if (t4.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) { - var a3 = t4.getBoundingClientRect(); - "none" !== t4.style.display && 0 !== a3.width || (i3 = true); - } - var s3 = new ResizeObserver(function(a4) { - i3 && e3.call(t4, a4), i3 = true; - }); - t4.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? Array.from(t4.children).forEach(function(t5) { - return s3.observe(t5); - }) : s3.observe(t4), jt.set(e3, s3); - }(t3.el.parentNode, t3.parentResizeHandler), !t3.css) { - var s2 = t3.el.getRootNode && t3.el.getRootNode(), r2 = x.is("ShadowRoot", s2), o2 = t3.el.ownerDocument, n2 = o2.getElementById("apexcharts-css"); - !r2 && n2 || (t3.css = document.createElement("style"), t3.css.id = "apexcharts-css", t3.css.textContent = '@keyframes opaque {\n 0% {\n opacity: 0\n }\n\n to {\n opacity: 1\n }\n}\n\n@keyframes resizeanim {\n 0%,to {\n opacity: 0\n }\n}\n\n.apexcharts-canvas {\n position: relative;\n user-select: none\n}\n\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\n}\n\n.apexcharts-inner {\n position: relative\n}\n\n.apexcharts-text tspan {\n font-family: inherit\n}\n\n.legend-mouseover-inactive {\n transition: .15s ease all;\n opacity: .2\n}\n\n.apexcharts-legend-text {\n padding-left: 15px;\n margin-left: -15px;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255,255,255,.96)\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30,30,30,.8)\n}\n\n.apexcharts-tooltip * {\n font-family: inherit\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #eceff1;\n border-bottom: 1px solid #ddd\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0,0,0,.7);\n border-bottom: 1px solid #333\n}\n\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\n display: inline-block;\n margin-left: 5px;\n font-weight: 600\n}\n\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\n display: none\n}\n\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n padding: 6px 0 5px\n}\n\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n display: flex\n}\n\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\n margin-top: -6px\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0;\n margin-right: 10px;\n border-radius: 50%\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0!important\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px\n}\n\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\n padding: 4px 8px\n}\n\n.apexcharts-tooltip-boxPlot {\n display: flex;\n flex-direction: column-reverse\n}\n\n.apexcharts-tooltip-box>div {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_boundingRect,.svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0,0,0,.7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\n opacity: 0\n}\n\n.apexcharts-hidden-element-shown {\n opacity: 1;\n transition: 0.25s ease all;\n}\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\n pointer-events: none\n}\n\n.apexcharts-marker {\n transition: .15s ease all\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\n content: " ";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n\n.apexcharts-bar-goals-markers{\n pointer-events: none\n}\n\n.apexcharts-bar-shadows{\n pointer-events: none\n}\n\n.apexcharts-rangebar-goals-markers{\n pointer-events: none\n}', r2 ? s2.prepend(t3.css) : o2.head.appendChild(t3.css)); - } - var l2 = t3.create(t3.w.config.series, {}); - if (!l2) - return e2(t3); - t3.mount(l2).then(function() { - "function" == typeof t3.w.config.chart.events.mounted && t3.w.config.chart.events.mounted(t3, t3.w), t3.events.fireEvent("mounted", [t3, t3.w]), e2(l2); - }).catch(function(t4) { - i2(t4); - }); - } else - i2(new Error("Element not found")); - }); - } }, { key: "create", value: function(t3, e2) { - var i2 = this.w; - new Gt(this).initModules(); - var a2 = this.w.globals; - (a2.noData = false, a2.animationEnded = false, this.responsive.checkResponsiveConfig(e2), i2.config.xaxis.convertedCatToNumeric) && new X(i2.config).convertCatToNumericXaxis(i2.config, this.ctx); - if (null === this.el) - return a2.animationEnded = true, null; - if (this.core.setupElements(), "treemap" === i2.config.chart.type && (i2.config.grid.show = false, i2.config.yaxis[0].show = false), 0 === a2.svgWidth) - return a2.animationEnded = true, null; - var s2 = y.checkComboSeries(t3); - a2.comboCharts = s2.comboCharts, a2.comboBarCount = s2.comboBarCount; - var r2 = t3.every(function(t4) { - return t4.data && 0 === t4.data.length; - }); - (0 === t3.length || r2) && this.series.handleNoData(), this.events.setupEventHandlers(), this.data.parseData(t3), this.theme.init(), new H(this).setGlobalMarkerSize(), this.formatters.setLabelFormatters(), this.titleSubtitle.draw(), a2.noData && a2.collapsedSeries.length !== a2.series.length && !i2.config.legend.showForSingleSeries || this.legend.init(), this.series.hasAllSeriesEqualX(), a2.axisCharts && (this.core.coreCalculations(), "category" !== i2.config.xaxis.type && this.formatters.setLabelFormatters(), this.ctx.toolbar.minX = i2.globals.minX, this.ctx.toolbar.maxX = i2.globals.maxX), this.formatters.heatmapLabelFormatters(), new y(this).getLargestMarkerSize(), this.dimensions.plotCoords(); - var o2 = this.core.xySettings(); - this.grid.createGridMask(); - var n2 = this.core.plotChartType(t3, o2), l2 = new O(this); - return l2.bringForward(), i2.config.dataLabels.background.enabled && l2.dataLabelsBackground(), this.core.shiftGraphPosition(), { elGraph: n2, xyRatios: o2, dimensions: { plot: { left: i2.globals.translateX, top: i2.globals.translateY, width: i2.globals.gridWidth, height: i2.globals.gridHeight } } }; - } }, { key: "mount", value: function() { - var t3 = this, e2 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, i2 = this, a2 = i2.w; - return new Promise(function(s2, r2) { - if (null === i2.el) - return r2(new Error("Not enough data to display or target element not found")); - (null === e2 || a2.globals.allSeriesCollapsed) && i2.series.handleNoData(), i2.grid = new j(i2); - var o2, n2, l2 = i2.grid.drawGrid(); - (i2.annotations = new P(i2), i2.annotations.drawImageAnnos(), i2.annotations.drawTextAnnos(), "back" === a2.config.grid.position) && (l2 && a2.globals.dom.elGraphical.add(l2.el), null != l2 && null !== (o2 = l2.elGridBorders) && void 0 !== o2 && o2.node && a2.globals.dom.elGraphical.add(l2.elGridBorders)); - if (Array.isArray(e2.elGraph)) - for (var h2 = 0; h2 < e2.elGraph.length; h2++) - a2.globals.dom.elGraphical.add(e2.elGraph[h2]); - else - a2.globals.dom.elGraphical.add(e2.elGraph); - "front" === a2.config.grid.position && (l2 && a2.globals.dom.elGraphical.add(l2.el), null != l2 && null !== (n2 = l2.elGridBorders) && void 0 !== n2 && n2.node && a2.globals.dom.elGraphical.add(l2.elGridBorders)); - "front" === a2.config.xaxis.crosshairs.position && i2.crosshairs.drawXCrosshairs(), "front" === a2.config.yaxis[0].crosshairs.position && i2.crosshairs.drawYCrosshairs(), "treemap" !== a2.config.chart.type && i2.axes.drawAxis(a2.config.chart.type, l2); - var c2 = new V(t3.ctx, l2), d2 = new q(t3.ctx, l2); - if (null !== l2 && (c2.xAxisLabelCorrections(l2.xAxisTickWidth), d2.setYAxisTextAlignments(), a2.config.yaxis.map(function(t4, e3) { - -1 === a2.globals.ignoreYAxisIndexes.indexOf(e3) && d2.yAxisTitleRotate(e3, t4.opposite); - })), i2.annotations.drawAxesAnnotations(), !a2.globals.noData) { - if (a2.config.tooltip.enabled && !a2.globals.noData && i2.w.globals.tooltip.drawTooltip(e2.xyRatios), a2.globals.axisCharts && (a2.globals.isXNumeric || a2.config.xaxis.convertedCatToNumeric || a2.globals.isRangeBar)) - (a2.config.chart.zoom.enabled || a2.config.chart.selection && a2.config.chart.selection.enabled || a2.config.chart.pan && a2.config.chart.pan.enabled) && i2.zoomPanSelection.init({ xyRatios: e2.xyRatios }); - else { - var g2 = a2.config.chart.toolbar.tools; - ["zoom", "zoomin", "zoomout", "selection", "pan", "reset"].forEach(function(t4) { - g2[t4] = false; - }); - } - a2.config.chart.toolbar.show && !a2.globals.allSeriesCollapsed && i2.toolbar.createToolbar(); - } - a2.globals.memory.methodsToExec.length > 0 && a2.globals.memory.methodsToExec.forEach(function(t4) { - t4.method(t4.params, false, t4.context); - }), a2.globals.axisCharts || a2.globals.noData || i2.core.resizeNonAxisCharts(), s2(i2); - }); - } }, { key: "destroy", value: function() { - var t3, e2; - window.removeEventListener("resize", this.windowResizeHandler), this.el.parentNode, t3 = this.parentResizeHandler, (e2 = jt.get(t3)) && (e2.disconnect(), jt.delete(t3)); - var i2 = this.w.config.chart.id; - i2 && Apex._chartInstances.forEach(function(t4, e3) { - t4.id === x.escapeString(i2) && Apex._chartInstances.splice(e3, 1); - }), new Vt(this.ctx).clear({ isUpdating: false }); - } }, { key: "updateOptions", value: function(t3) { - var e2 = this, i2 = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], a2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], s2 = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3], r2 = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4], o2 = this.w; - return o2.globals.selection = void 0, t3.series && (this.series.resetSeries(false, true, false), t3.series.length && t3.series[0].data && (t3.series = t3.series.map(function(t4, i3) { - return e2.updateHelpers._extendSeries(t4, i3); - })), this.updateHelpers.revertDefaultAxisMinMax()), t3.xaxis && (t3 = this.updateHelpers.forceXAxisUpdate(t3)), t3.yaxis && (t3 = this.updateHelpers.forceYAxisUpdate(t3)), o2.globals.collapsedSeriesIndices.length > 0 && this.series.clearPreviousPaths(), t3.theme && (t3 = this.theme.updateThemeOptions(t3)), this.updateHelpers._updateOptions(t3, i2, a2, s2, r2); - } }, { key: "updateSeries", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; - return this.series.resetSeries(false), this.updateHelpers.revertDefaultAxisMinMax(), this.updateHelpers._updateSeries(t3, e2, i2); - } }, { key: "appendSeries", value: function(t3) { - var e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], a2 = this.w.config.series.slice(); - return a2.push(t3), this.series.resetSeries(false), this.updateHelpers.revertDefaultAxisMinMax(), this.updateHelpers._updateSeries(a2, e2, i2); - } }, { key: "appendData", value: function(t3) { - var e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = this; - i2.w.globals.dataChanged = true, i2.series.getPreviousPaths(); - for (var a2 = i2.w.config.series.slice(), s2 = 0; s2 < a2.length; s2++) - if (null !== t3[s2] && void 0 !== t3[s2]) - for (var r2 = 0; r2 < t3[s2].data.length; r2++) - a2[s2].data.push(t3[s2].data[r2]); - return i2.w.config.series = a2, e2 && (i2.w.globals.initialSeries = x.clone(i2.w.config.series)), this.update(); - } }, { key: "update", value: function(t3) { - var e2 = this; - return new Promise(function(i2, a2) { - new Vt(e2.ctx).clear({ isUpdating: true }); - var s2 = e2.create(e2.w.config.series, t3); - if (!s2) - return i2(e2); - e2.mount(s2).then(function() { - "function" == typeof e2.w.config.chart.events.updated && e2.w.config.chart.events.updated(e2, e2.w), e2.events.fireEvent("updated", [e2, e2.w]), e2.w.globals.isDirty = true, i2(e2); - }).catch(function(t4) { - a2(t4); - }); - }); - } }, { key: "getSyncedCharts", value: function() { - var t3 = this.getGroupedCharts(), e2 = [this]; - return t3.length && (e2 = [], t3.forEach(function(t4) { - e2.push(t4); - })), e2; - } }, { key: "getGroupedCharts", value: function() { - var t3 = this; - return Apex._chartInstances.filter(function(t4) { - if (t4.group) - return true; - }).map(function(e2) { - return t3.w.config.chart.group === e2.group ? e2.chart : t3; - }); - } }, { key: "toggleSeries", value: function(t3) { - return this.series.toggleSeries(t3); - } }, { key: "highlightSeriesOnLegendHover", value: function(t3, e2) { - return this.series.toggleSeriesOnHover(t3, e2); - } }, { key: "showSeries", value: function(t3) { - this.series.showSeries(t3); - } }, { key: "hideSeries", value: function(t3) { - this.series.hideSeries(t3); - } }, { key: "isSeriesHidden", value: function(t3) { - this.series.isSeriesHidden(t3); - } }, { key: "resetSeries", value: function() { - var t3 = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0], e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]; - this.series.resetSeries(t3, e2); - } }, { key: "addEventListener", value: function(t3, e2) { - this.events.addEventListener(t3, e2); - } }, { key: "removeEventListener", value: function(t3, e2) { - this.events.removeEventListener(t3, e2); - } }, { key: "addXaxisAnnotation", value: function(t3) { - var e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0, a2 = this; - i2 && (a2 = i2), a2.annotations.addXaxisAnnotationExternal(t3, e2, a2); - } }, { key: "addYaxisAnnotation", value: function(t3) { - var e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0, a2 = this; - i2 && (a2 = i2), a2.annotations.addYaxisAnnotationExternal(t3, e2, a2); - } }, { key: "addPointAnnotation", value: function(t3) { - var e2 = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], i2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0, a2 = this; - i2 && (a2 = i2), a2.annotations.addPointAnnotationExternal(t3, e2, a2); - } }, { key: "clearAnnotations", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0, e2 = this; - t3 && (e2 = t3), e2.annotations.clearAnnotations(e2); - } }, { key: "removeAnnotation", value: function(t3) { - var e2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0, i2 = this; - e2 && (i2 = e2), i2.annotations.removeAnnotation(i2, t3); - } }, { key: "getChartArea", value: function() { - return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner"); - } }, { key: "getSeriesTotalXRange", value: function(t3, e2) { - return this.coreUtils.getSeriesTotalsXRange(t3, e2); - } }, { key: "getHighestValueInSeries", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0; - return new U(this.ctx).getMinYMaxY(t3).highestY; - } }, { key: "getLowestValueInSeries", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0; - return new U(this.ctx).getMinYMaxY(t3).lowestY; - } }, { key: "getSeriesTotal", value: function() { - return this.w.globals.seriesTotals; - } }, { key: "toggleDataPointSelection", value: function(t3, e2) { - return this.updateHelpers.toggleDataPointSelection(t3, e2); - } }, { key: "zoomX", value: function(t3, e2) { - this.ctx.toolbar.zoomUpdateOptions(t3, e2); - } }, { key: "setLocale", value: function(t3) { - this.localization.setCurrentLocaleValues(t3); - } }, { key: "dataURI", value: function(t3) { - return new G(this.ctx).dataURI(t3); - } }, { key: "exportToCSV", value: function() { - var t3 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; - return new G(this.ctx).exportToCSV(t3); - } }, { key: "paper", value: function() { - return this.w.globals.dom.Paper; - } }, { key: "_parentResizeCallback", value: function() { - this.w.globals.animationEnded && this.w.config.chart.redrawOnParentResize && this._windowResize(); - } }, { key: "_windowResize", value: function() { - var t3 = this; - clearTimeout(this.w.globals.resizeTimer), this.w.globals.resizeTimer = window.setTimeout(function() { - t3.w.globals.resized = true, t3.w.globals.dataChanged = false, t3.ctx.update(); - }, 150); - } }, { key: "_windowResizeHandler", value: function() { - var t3 = this.w.config.chart.redrawOnWindowResize; - "function" == typeof t3 && (t3 = t3()), t3 && this._windowResize(); - } }], [{ key: "getChartByID", value: function(t3) { - var e2 = x.escapeString(t3); - if (Apex._chartInstances) { - var i2 = Apex._chartInstances.filter(function(t4) { - return t4.id === e2; - })[0]; - return i2 && i2.chart; - } - } }, { key: "initOnLoad", value: function() { - for (var e2 = document.querySelectorAll("[data-apexcharts]"), i2 = 0; i2 < e2.length; i2++) { - new t2(e2[i2], JSON.parse(e2[i2].getAttribute("data-options"))).render(); - } - } }, { key: "exec", value: function(t3, e2) { - var i2 = this.getChartByID(t3); - if (i2) { - i2.w.globals.isExecCalled = true; - var a2 = null; - if (-1 !== i2.publicMethods.indexOf(e2)) { - for (var s2 = arguments.length, r2 = new Array(s2 > 2 ? s2 - 2 : 0), o2 = 2; o2 < s2; o2++) - r2[o2 - 2] = arguments[o2]; - a2 = i2[e2].apply(i2, r2); - } - return a2; - } - } }, { key: "merge", value: function(t3, e2) { - return x.extend(t3, e2); - } }]), t2; - }(); - module.exports = _t; + to { + opacity: 1 } -}); +} -// node_modules/lodash.merge/index.js -var require_lodash = __commonJS({ - "node_modules/lodash.merge/index.js"(exports, module) { - var LARGE_ARRAY_SIZE = 200; - var HASH_UNDEFINED = "__lodash_hash_undefined__"; - var HOT_COUNT = 800; - var HOT_SPAN = 16; - var MAX_SAFE_INTEGER = 9007199254740991; - var argsTag = "[object Arguments]"; - var arrayTag = "[object Array]"; - var asyncTag = "[object AsyncFunction]"; - var boolTag = "[object Boolean]"; - var dateTag = "[object Date]"; - var errorTag = "[object Error]"; - var funcTag = "[object Function]"; - var genTag = "[object GeneratorFunction]"; - var mapTag = "[object Map]"; - var numberTag = "[object Number]"; - var nullTag = "[object Null]"; - var objectTag = "[object Object]"; - var proxyTag = "[object Proxy]"; - var regexpTag = "[object RegExp]"; - var setTag = "[object Set]"; - var stringTag = "[object String]"; - var undefinedTag = "[object Undefined]"; - var weakMapTag = "[object WeakMap]"; - var arrayBufferTag = "[object ArrayBuffer]"; - var dataViewTag = "[object DataView]"; - var float32Tag = "[object Float32Array]"; - var float64Tag = "[object Float64Array]"; - var int8Tag = "[object Int8Array]"; - var int16Tag = "[object Int16Array]"; - var int32Tag = "[object Int32Array]"; - var uint8Tag = "[object Uint8Array]"; - var uint8ClampedTag = "[object Uint8ClampedArray]"; - var uint16Tag = "[object Uint16Array]"; - var uint32Tag = "[object Uint32Array]"; - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - var reIsHostCtor = /^\[object .+?Constructor\]$/; - var reIsUint = /^(?:0|[1-9]\d*)$/; - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; - var freeGlobal = typeof global == "object" && global && global.Object === Object && global; - var freeSelf = typeof self == "object" && self && self.Object === Object && self; - var root = freeGlobal || freeSelf || Function("return this")(); - var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; - var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module; - var moduleExports = freeModule && freeModule.exports === freeExports; - var freeProcess = moduleExports && freeGlobal.process; - var nodeUtil = function() { - try { - var types = freeModule && freeModule.require && freeModule.require("util").types; - if (types) { - return types; - } - return freeProcess && freeProcess.binding && freeProcess.binding("util"); - } catch (e) { - } - }(); - var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - function apply(func, thisArg, args) { - switch (args.length) { - case 0: - return func.call(thisArg); - case 1: - return func.call(thisArg, args[0]); - case 2: - return func.call(thisArg, args[0], args[1]); - case 3: - return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); - } - function baseTimes(n, iteratee) { - var index = -1, result = Array(n); - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - function baseUnary(func) { - return function(value) { - return func(value); - }; - } - function getValue(object, key) { - return object == null ? void 0 : object[key]; - } - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - var arrayProto = Array.prototype; - var funcProto = Function.prototype; - var objectProto = Object.prototype; - var coreJsData = root["__core-js_shared__"]; - var funcToString = funcProto.toString; - var hasOwnProperty = objectProto.hasOwnProperty; - var maskSrcKey = function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); - return uid ? "Symbol(src)_1." + uid : ""; - }(); - var nativeObjectToString = objectProto.toString; - var objectCtorString = funcToString.call(Object); - var reIsNative = RegExp( - "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" - ); - var Buffer2 = moduleExports ? root.Buffer : void 0; - var Symbol2 = root.Symbol; - var Uint8Array2 = root.Uint8Array; - var allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0; - var getPrototype = overArg(Object.getPrototypeOf, Object); - var objectCreate = Object.create; - var propertyIsEnumerable = objectProto.propertyIsEnumerable; - var splice = arrayProto.splice; - var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0; - var defineProperty = function() { - try { - var func = getNative(Object, "defineProperty"); - func({}, "", {}); - return func; - } catch (e) { - } - }(); - var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0; - var nativeMax = Math.max; - var nativeNow = Date.now; - var Map = getNative(root, "Map"); - var nativeCreate = getNative(Object, "create"); - var baseCreate = /* @__PURE__ */ function() { - function object() { - } - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object(); - object.prototype = void 0; - return result; - }; - }(); - function Hash(entries) { - var index = -1, length = entries == null ? 0 : entries.length; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; - } - function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; - } - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? void 0 : result; - } - return hasOwnProperty.call(data, key) ? data[key] : void 0; - } - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key); - } - function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value; - return this; - } - Hash.prototype.clear = hashClear; - Hash.prototype["delete"] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - function ListCache(entries) { - var index = -1, length = entries == null ? 0 : entries.length; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - function listCacheClear() { - this.__data__ = []; - this.size = 0; - } - function listCacheDelete(key) { - var data = this.__data__, index = assocIndexOf(data, key); - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; - } - function listCacheGet(key) { - var data = this.__data__, index = assocIndexOf(data, key); - return index < 0 ? void 0 : data[index][1]; - } - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - function listCacheSet(key, value) { - var data = this.__data__, index = assocIndexOf(data, key); - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - ListCache.prototype.clear = listCacheClear; - ListCache.prototype["delete"] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - function MapCache(entries) { - var index = -1, length = entries == null ? 0 : entries.length; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - function mapCacheClear() { - this.size = 0; - this.__data__ = { - "hash": new Hash(), - "map": new (Map || ListCache)(), - "string": new Hash() - }; - } - function mapCacheDelete(key) { - var result = getMapData(this, key)["delete"](key); - this.size -= result ? 1 : 0; - return result; - } - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - function mapCacheSet(key, value) { - var data = getMapData(this, key), size = data.size; - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; - } - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype["delete"] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; - } - function stackClear() { - this.__data__ = new ListCache(); - this.size = 0; - } - function stackDelete(key) { - var data = this.__data__, result = data["delete"](key); - this.size = data.size; - return result; - } - function stackGet(key) { - return this.__data__.get(key); - } - function stackHas(key) { - return this.__data__.has(key); - } - function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; - } - Stack.prototype.clear = stackClear; - Stack.prototype["delete"] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length; - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode. - (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. - isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. - isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties. - isIndex(key, length)))) { - result.push(key); - } - } - return result; - } - function assignMergeValue(object, key, value) { - if (value !== void 0 && !eq(object[key], value) || value === void 0 && !(key in object)) { - baseAssignValue(object, key, value); - } - } - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) { - baseAssignValue(object, key, value); - } - } - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - function baseAssignValue(object, key, value) { - if (key == "__proto__" && defineProperty) { - defineProperty(object, key, { - "configurable": true, - "enumerable": true, - "value": value, - "writable": true - }); - } else { - object[key] = value; - } - } - var baseFor = createBaseFor(); - function baseGetTag(value) { - if (value == null) { - return value === void 0 ? undefinedTag : nullTag; - } - return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); - } - function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; - } - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - function baseIsTypedArray(value) { - return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; - } - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), result = []; - for (var key in object) { - if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; - } - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack()); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } else { - var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : void 0; - if (newValue === void 0) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); - } - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue); - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : void 0; - var isCommon = newValue === void 0; - if (isCommon) { - var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue); - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } else { - newValue = []; - } - } else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } else { - isCommon = false; - } - } - if (isCommon) { - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack["delete"](srcValue); - } - assignMergeValue(object, key, newValue); - } - function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ""); - } - var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, "toString", { - "configurable": true, - "enumerable": false, - "value": constant(string), - "writable": true - }); - }; - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - buffer.copy(result); - return result; - } - function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array2(result).set(new Uint8Array2(arrayBuffer)); - return result; - } - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - function copyArray(source, array) { - var index = -1, length = source.length; - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - var index = -1, length = props.length; - while (++index < length) { - var key = props[index]; - var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0; - if (newValue === void 0) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; - } - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0; - customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : void 0; - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? void 0 : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length; - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; - } - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : void 0; - } - function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; - try { - value[symToStringTag] = void 0; - var unmasked = true; - } catch (e) { - } - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result; - } - function initCloneObject(object) { - return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; - } - function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); - } - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) { - return eq(object[index], value); - } - return false; - } - function isKeyable(value) { - var type = typeof value; - return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; - } - function isMasked(func) { - return !!maskSrcKey && maskSrcKey in func; - } - function isPrototype(value) { - var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; - return value === proto; - } - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } - function objectToString(value) { - return nativeObjectToString.call(value); - } - function overRest(func, start, transform) { - start = nativeMax(start === void 0 ? func.length - 1 : start, 0); - return function() { - var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length); - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; - } - function safeGet(object, key) { - if (key === "constructor" && typeof object[key] === "function") { - return; - } - if (key == "__proto__") { - return; - } - return object[key]; - } - var setToString = shortOut(baseSetToString); - function shortOut(func) { - var count = 0, lastCalled = 0; - return function() { - var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(void 0, arguments); - }; - } - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) { - } - try { - return func + ""; - } catch (e) { - } - } - return ""; - } - function eq(value, other) { - return value === other || value !== value && other !== other; - } - var isArguments = baseIsArguments(/* @__PURE__ */ function() { - return arguments; - }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); - }; - var isArray = Array.isArray; - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - var isBuffer = nativeIsBuffer || stubFalse; - function isFunction(value) { - if (!isObject(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; - } - function isLength(value) { - return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - function isObject(value) { - var type = typeof value; - return value != null && (type == "object" || type == "function"); - } - function isObjectLike(value) { - return value != null && typeof value == "object"; - } - function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor; - return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; - } - var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - function toPlainObject(value) { - return copyObject(value, keysIn(value)); - } - function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); - } - var merge2 = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - function constant(value) { - return function() { - return value; - }; - } - function identity(value) { - return value; - } - function stubFalse() { - return false; - } - module.exports = merge2; +@keyframes resizeanim { + 0%,to { + opacity: 0 } -}); +} + +.apexcharts-canvas { + position: relative; + user-select: none +} + +.apexcharts-canvas ::-webkit-scrollbar { + -webkit-appearance: none; + width: 6px +} + +.apexcharts-canvas ::-webkit-scrollbar-thumb { + border-radius: 4px; + background-color: rgba(0,0,0,.5); + box-shadow: 0 0 1px rgba(255,255,255,.5); + -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5) +} + +.apexcharts-inner { + position: relative +} + +.apexcharts-text tspan { + font-family: inherit +} + +.legend-mouseover-inactive { + transition: .15s ease all; + opacity: .2 +} + +.apexcharts-legend-text { + padding-left: 15px; + margin-left: -15px; +} + +.apexcharts-series-collapsed { + opacity: 0 +} + +.apexcharts-tooltip { + border-radius: 5px; + box-shadow: 2px 2px 6px -4px #999; + cursor: default; + font-size: 14px; + left: 62px; + opacity: 0; + pointer-events: none; + position: absolute; + top: 20px; + display: flex; + flex-direction: column; + overflow: hidden; + white-space: nowrap; + z-index: 12; + transition: .15s ease all +} + +.apexcharts-tooltip.apexcharts-active { + opacity: 1; + transition: .15s ease all +} + +.apexcharts-tooltip.apexcharts-theme-light { + border: 1px solid #e3e3e3; + background: rgba(255,255,255,.96) +} + +.apexcharts-tooltip.apexcharts-theme-dark { + color: #fff; + background: rgba(30,30,30,.8) +} + +.apexcharts-tooltip * { + font-family: inherit +} + +.apexcharts-tooltip-title { + padding: 6px; + font-size: 15px; + margin-bottom: 4px +} + +.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title { + background: #eceff1; + border-bottom: 1px solid #ddd +} + +.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title { + background: rgba(0,0,0,.7); + border-bottom: 1px solid #333 +} + +.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value { + display: inline-block; + margin-left: 5px; + font-weight: 600 +} + +.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty { + display: none +} + +.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value { + padding: 6px 0 5px +} + +.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value { + display: flex +} + +.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) { + margin-top: -6px +} + +.apexcharts-tooltip-marker { + width: 12px; + height: 12px; + position: relative; + top: 0; + margin-right: 10px; + border-radius: 50% +} + +.apexcharts-tooltip-series-group { + padding: 0 10px; + display: none; + text-align: left; + justify-content: left; + align-items: center +} + +.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker { + opacity: 1 +} + +.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child { + padding-bottom: 4px +} + +.apexcharts-tooltip-series-group-hidden { + opacity: 0; + height: 0; + line-height: 0; + padding: 0!important +} + +.apexcharts-tooltip-y-group { + padding: 6px 0 5px +} + +.apexcharts-custom-tooltip,.apexcharts-tooltip-box { + padding: 4px 8px +} + +.apexcharts-tooltip-boxPlot { + display: flex; + flex-direction: column-reverse +} + +.apexcharts-tooltip-box>div { + margin: 4px 0 +} + +.apexcharts-tooltip-box span.value { + font-weight: 700 +} + +.apexcharts-tooltip-rangebar { + padding: 5px 8px +} + +.apexcharts-tooltip-rangebar .category { + font-weight: 600; + color: #777 +} + +.apexcharts-tooltip-rangebar .series-name { + font-weight: 700; + display: block; + margin-bottom: 5px +} + +.apexcharts-xaxistooltip,.apexcharts-yaxistooltip { + opacity: 0; + pointer-events: none; + color: #373d3f; + font-size: 13px; + text-align: center; + border-radius: 2px; + position: absolute; + z-index: 10; + background: #eceff1; + border: 1px solid #90a4ae +} + +.apexcharts-xaxistooltip { + padding: 9px 10px; + transition: .15s ease all +} + +.apexcharts-xaxistooltip.apexcharts-theme-dark { + background: rgba(0,0,0,.7); + border: 1px solid rgba(0,0,0,.5); + color: #fff +} + +.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before { + left: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none +} + +.apexcharts-xaxistooltip:after { + border-color: transparent; + border-width: 6px; + margin-left: -6px +} + +.apexcharts-xaxistooltip:before { + border-color: transparent; + border-width: 7px; + margin-left: -7px +} + +.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before { + bottom: 100% +} + +.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before { + top: 100% +} + +.apexcharts-xaxistooltip-bottom:after { + border-bottom-color: #eceff1 +} + +.apexcharts-xaxistooltip-bottom:before { + border-bottom-color: #90a4ae +} + +.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before { + border-bottom-color: rgba(0,0,0,.5) +} + +.apexcharts-xaxistooltip-top:after { + border-top-color: #eceff1 +} + +.apexcharts-xaxistooltip-top:before { + border-top-color: #90a4ae +} + +.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before { + border-top-color: rgba(0,0,0,.5) +} + +.apexcharts-xaxistooltip.apexcharts-active { + opacity: 1; + transition: .15s ease all +} + +.apexcharts-yaxistooltip { + padding: 4px 10px +} + +.apexcharts-yaxistooltip.apexcharts-theme-dark { + background: rgba(0,0,0,.7); + border: 1px solid rgba(0,0,0,.5); + color: #fff +} + +.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before { + top: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none +} + +.apexcharts-yaxistooltip:after { + border-color: transparent; + border-width: 6px; + margin-top: -6px +} + +.apexcharts-yaxistooltip:before { + border-color: transparent; + border-width: 7px; + margin-top: -7px +} -// apexcharts.js -var import_apexcharts = __toESM(require_apexcharts_common(), 1); -var merge = require_lodash(); -function apexcharts({ - options, - chartId, - theme, - extraJsOptions -}) { - return { - chart: null, - options, - chartId, - theme, - extraJsOptions, - init: function() { - this.$wire.$on("updateOptions", ({ options: options2 }) => { - options2 = merge(options2, this.extraJsOptions); - this.updateChart(options2); - }); - Alpine.effect(() => { - const theme2 = Alpine.store("theme"); - this.$nextTick(() => { - if (this.chart === null) { - this.initChart(); - } else { - this.updateChart({ - theme: { mode: theme2 }, - chart: { - background: "inherit" - } - }); - } - }); - }); - }, - initChart: function() { - this.options.theme = { mode: this.theme }; - this.options.chart.background = "inherit"; - this.options = merge(this.options, this.extraJsOptions); - this.chart = new import_apexcharts.default(document.querySelector(this.chartId), this.options); - this.chart.render(); - }, - updateChart: function(options2) { - this.chart.updateOptions(options2, false, true, true); - } - }; +.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before { + left: 100% } -export { - apexcharts as default -}; + +.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before { + right: 100% +} + +.apexcharts-yaxistooltip-left:after { + border-left-color: #eceff1 +} + +.apexcharts-yaxistooltip-left:before { + border-left-color: #90a4ae +} + +.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before { + border-left-color: rgba(0,0,0,.5) +} + +.apexcharts-yaxistooltip-right:after { + border-right-color: #eceff1 +} + +.apexcharts-yaxistooltip-right:before { + border-right-color: #90a4ae +} + +.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before { + border-right-color: rgba(0,0,0,.5) +} + +.apexcharts-yaxistooltip.apexcharts-active { + opacity: 1 +} + +.apexcharts-yaxistooltip-hidden { + display: none +} + +.apexcharts-xcrosshairs,.apexcharts-ycrosshairs { + pointer-events: none; + opacity: 0; + transition: .15s ease all +} + +.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active { + opacity: 1; + transition: .15s ease all +} + +.apexcharts-ycrosshairs-hidden { + opacity: 0 +} + +.apexcharts-selection-rect { + cursor: move +} + +.svg_select_boundingRect,.svg_select_points_rot { + pointer-events: none; + opacity: 0; + visibility: hidden +} + +.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot { + opacity: 0; + visibility: hidden +} + +.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r { + cursor: ew-resize; + opacity: 1; + visibility: visible +} + +.svg_select_points { + fill: #efefef; + stroke: #333; + rx: 2 +} + +.apexcharts-svg.apexcharts-zoomable.hovering-zoom { + cursor: crosshair +} + +.apexcharts-svg.apexcharts-zoomable.hovering-pan { + cursor: move +} + +.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon { + cursor: pointer; + width: 20px; + height: 20px; + line-height: 24px; + color: #6e8192; + text-align: center +} + +.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg { + fill: #6e8192 +} + +.apexcharts-selection-icon svg { + fill: #444; + transform: scale(.76) +} + +.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg { + fill: #f3f4f5 +} + +.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg { + fill: #008ffb +} + +.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg { + fill: #333 +} + +.apexcharts-menu-icon,.apexcharts-selection-icon { + position: relative +} + +.apexcharts-reset-icon { + margin-left: 5px +} + +.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon { + transform: scale(.85) +} + +.apexcharts-zoomin-icon,.apexcharts-zoomout-icon { + transform: scale(.7) +} + +.apexcharts-zoomout-icon { + margin-right: 3px +} + +.apexcharts-pan-icon { + transform: scale(.62); + position: relative; + left: 1px; + top: 0 +} + +.apexcharts-pan-icon svg { + fill: #fff; + stroke: #6e8192; + stroke-width: 2 +} + +.apexcharts-pan-icon.apexcharts-selected svg { + stroke: #008ffb +} + +.apexcharts-pan-icon:not(.apexcharts-selected):hover svg { + stroke: #333 +} + +.apexcharts-toolbar { + position: absolute; + z-index: 11; + max-width: 176px; + text-align: right; + border-radius: 3px; + padding: 0 6px 2px; + display: flex; + justify-content: space-between; + align-items: center +} + +.apexcharts-menu { + background: #fff; + position: absolute; + top: 100%; + border: 1px solid #ddd; + border-radius: 3px; + padding: 3px; + right: 10px; + opacity: 0; + min-width: 110px; + transition: .15s ease all; + pointer-events: none +} + +.apexcharts-menu.apexcharts-menu-open { + opacity: 1; + pointer-events: all; + transition: .15s ease all +} + +.apexcharts-menu-item { + padding: 6px 7px; + font-size: 12px; + cursor: pointer +} + +.apexcharts-theme-light .apexcharts-menu-item:hover { + background: #eee +} + +.apexcharts-theme-dark .apexcharts-menu { + background: rgba(0,0,0,.7); + color: #fff +} + +@media screen and (min-width:768px) { + .apexcharts-canvas:hover .apexcharts-toolbar { + opacity: 1 + } +} + +.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points { + opacity: 0 +} + +.apexcharts-hidden-element-shown { + opacity: 1; + transition: 0.25s ease all; +} +.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label { + cursor: default; + pointer-events: none +} + +.apexcharts-pie-label-delay { + opacity: 0; + animation-name: opaque; + animation-duration: .3s; + animation-fill-mode: forwards; + animation-timing-function: ease +} + +.apexcharts-radialbar-label { + cursor: pointer; +} + +.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect { + pointer-events: none +} + +.apexcharts-marker { + transition: .15s ease all +} + +.resize-triggers { + animation: 1ms resizeanim; + visibility: hidden; + opacity: 0; + height: 100%; + width: 100%; + overflow: hidden +} + +.contract-trigger:before,.resize-triggers,.resize-triggers>div { + content: " "; + display: block; + position: absolute; + top: 0; + left: 0 +} + +.resize-triggers>div { + height: 100%; + width: 100%; + background: #eee; + overflow: auto +} + +.contract-trigger:before { + overflow: hidden; + width: 200%; + height: 200% +} + +.apexcharts-bar-goals-markers{ + pointer-events: none +} + +.apexcharts-bar-shadows{ + pointer-events: none +} + +.apexcharts-rangebar-goals-markers{ + pointer-events: none +}`;var c=((h=e.opts.chart)===null||h===void 0?void 0:h.nonce)||e.w.config.chart.nonce;c&&e.css.setAttribute("nonce",c),r?s.prepend(e.css):n.head.appendChild(e.css)}}var d=e.create(e.w.config.series,{});if(!d)return t(e);e.mount(d).then(function(){typeof e.w.config.chart.events.mounted=="function"&&e.w.config.chart.events.mounted(e,e.w),e.events.fireEvent("mounted",[e,e.w]),t(d)}).catch(function(g){i(g)})}else i(new Error("Element not found"))})}},{key:"create",value:function(e,t){var i=this.w;new kt(this).initModules();var a=this.w.globals;if(a.noData=!1,a.animationEnded=!1,this.responsive.checkResponsiveConfig(t),i.config.xaxis.convertedCatToNumeric&&new ve(i.config).convertCatToNumericXaxis(i.config,this.ctx),this.el===null||(this.core.setupElements(),i.config.chart.type==="treemap"&&(i.config.grid.show=!1,i.config.yaxis[0].show=!1),a.svgWidth===0))return a.animationEnded=!0,null;var s=V.checkComboSeries(e);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount;var r=e.every(function(c){return c.data&&c.data.length===0});(e.length===0||r)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(e),this.theme.init(),new Ce(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),a.noData&&a.collapsedSeries.length!==a.series.length&&!i.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),i.config.xaxis.type!=="category"&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=i.globals.minX,this.ctx.toolbar.maxX=i.globals.maxX),this.formatters.heatmapLabelFormatters(),new V(this).getLargestMarkerSize(),this.dimensions.plotCoords();var n=this.core.xySettings();this.grid.createGridMask();var o=this.core.plotChartType(e,n),h=new de(this);return h.bringForward(),i.config.dataLabels.background.enabled&&h.dataLabelsBackground(),this.core.shiftGraphPosition(),{elGraph:o,xyRatios:n,dimensions:{plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}}}}},{key:"mount",value:function(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,i=this,a=i.w;return new Promise(function(s,r){if(i.el===null)return r(new Error("Not enough data to display or target element not found"));(t===null||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new Mt(i);var n,o,h=i.grid.drawGrid();if(i.annotations=new Pi(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),a.config.grid.position==="back"&&(h&&a.globals.dom.elGraphical.add(h.el),h!=null&&(n=h.elGridBorders)!==null&&n!==void 0&&n.node&&a.globals.dom.elGraphical.add(h.elGridBorders)),Array.isArray(t.elGraph))for(var c=0;c0&&a.globals.memory.methodsToExec.forEach(function(x){x.method(x.params,!1,x.context)}),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)})}},{key:"destroy",value:function(){var e,t;window.removeEventListener("resize",this.windowResizeHandler),this.el.parentNode,e=this.parentResizeHandler,(t=Je.get(e))&&(t.disconnect(),Je.delete(e));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach(function(a,s){a.id===P.escapeString(i)&&Apex._chartInstances.splice(s,1)}),new At(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0&&arguments[1],a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],s=!(arguments.length>3&&arguments[3]!==void 0)||arguments[3],r=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],n=this.w;return n.globals.selection=void 0,e.series&&(this.series.resetSeries(!1,!0,!1),e.series.length&&e.series[0].data&&(e.series=e.series.map(function(o,h){return t.updateHelpers._extendSeries(o,h)})),this.updateHelpers.revertDefaultAxisMinMax()),e.xaxis&&(e=this.updateHelpers.forceXAxisUpdate(e)),e.yaxis&&(e=this.updateHelpers.forceYAxisUpdate(e)),n.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),e.theme&&(e=this.theme.updateThemeOptions(e)),this.updateHelpers._updateOptions(e,i,a,s,r)}},{key:"updateSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(e,t,i)}},{key:"appendSeries",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],a=this.w.config.series.slice();return a.push(e),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,t,i)}},{key:"appendData",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&arguments[0]!==void 0)||arguments[0],t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];this.series.resetSeries(e,t)}},{key:"addEventListener",value:function(e,t){this.events.addEventListener(e,t)}},{key:"removeEventListener",value:function(e,t){this.events.removeEventListener(e,t)}},{key:"addXaxisAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(e,t,a)}},{key:"addYaxisAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(e,t,a)}},{key:"addPointAnnotation",value:function(e){var t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(e,t,a)}},{key:"clearAnnotations",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:void 0,t=this;e&&(t=e),t.annotations.clearAnnotations(t)}},{key:"removeAnnotation",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,i=this;t&&(i=t),i.annotations.removeAnnotation(i,e)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(e,t){return this.coreUtils.getSeriesTotalsXRange(e,t)}},{key:"getHighestValueInSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return new et(this.ctx).getMinYMaxY(e).highestY}},{key:"getLowestValueInSeries",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return new et(this.ctx).getMinYMaxY(e).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(e,t){return this.updateHelpers.toggleDataPointSelection(e,t)}},{key:"zoomX",value:function(e,t){this.ctx.toolbar.zoomUpdateOptions(e,t)}},{key:"setLocale",value:function(e){this.localization.setCurrentLocaleValues(e)}},{key:"dataURI",value:function(e){return new Xe(this.ctx).dataURI(e)}},{key:"exportToCSV",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return new Xe(this.ctx).exportToCSV(e)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var e=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout(function(){e.w.globals.resized=!0,e.w.globals.dataChanged=!1,e.ctx.update()},150)}},{key:"_windowResizeHandler",value:function(){var e=this.w.config.chart.redrawOnWindowResize;typeof e=="function"&&(e=e()),e&&this._windowResize()}}],[{key:"getChartByID",value:function(e){var t=P.escapeString(e);if(Apex._chartInstances){var i=Apex._chartInstances.filter(function(a){return a.id===t})[0];return i&&i.chart}}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),t=0;t2?s-2:0),n=2;n{var ra=200,Zt="__lodash_hash_undefined__",na=800,oa=16,$t=9007199254740991,Jt="[object Arguments]",la="[object Array]",ha="[object AsyncFunction]",ca="[object Boolean]",da="[object Date]",ga="[object Error]",Kt="[object Function]",ua="[object GeneratorFunction]",fa="[object Map]",pa="[object Number]",xa="[object Null]",Qt="[object Object]",ba="[object Proxy]",ma="[object RegExp]",va="[object Set]",ya="[object String]",wa="[object Undefined]",ka="[object WeakMap]",Aa="[object ArrayBuffer]",Sa="[object DataView]",Ca="[object Float32Array]",La="[object Float64Array]",Pa="[object Int8Array]",Ta="[object Int16Array]",Ia="[object Int32Array]",za="[object Uint8Array]",Ma="[object Uint8ClampedArray]",Xa="[object Uint16Array]",Ea="[object Uint32Array]",Ya=/[\\^$.*+?()[\]{}|]/g,Fa=/^\[object .+?Constructor\]$/,Ra=/^(?:0|[1-9]\d*)$/,B={};B[Ca]=B[La]=B[Pa]=B[Ta]=B[Ia]=B[za]=B[Ma]=B[Xa]=B[Ea]=!0;B[Jt]=B[la]=B[Aa]=B[ca]=B[Sa]=B[da]=B[ga]=B[Kt]=B[fa]=B[pa]=B[Qt]=B[ma]=B[va]=B[ya]=B[ka]=!1;var ei=typeof global=="object"&&global&&global.Object===Object&&global,Oa=typeof self=="object"&&self&&self.Object===Object&&self,Ie=ei||Oa||Function("return this")(),ti=typeof Le=="object"&&Le&&!Le.nodeType&&Le,Pe=ti&&typeof pe=="object"&&pe&&!pe.nodeType&&pe,ii=Pe&&Pe.exports===ti,st=ii&&ei.process,Nt=function(){try{var f=Pe&&Pe.require&&Pe.require("util").types;return f||st&&st.binding&&st.binding("util")}catch{}}(),Wt=Nt&&Nt.isTypedArray;function Ha(f,e,t){switch(t.length){case 0:return f.call(e);case 1:return f.call(e,t[0]);case 2:return f.call(e,t[0],t[1]);case 3:return f.call(e,t[0],t[1],t[2])}return f.apply(e,t)}function Da(f,e){for(var t=-1,i=Array(f);++t-1}function os(f,e){var t=this.__data__,i=Ne(t,f);return i<0?(++this.size,t.push([f,e])):t[i][1]=e,this}se.prototype.clear=as;se.prototype.delete=ss;se.prototype.get=rs;se.prototype.has=ns;se.prototype.set=os;function xe(f){var e=-1,t=f==null?0:f.length;for(this.clear();++e1?t[a-1]:void 0,r=a>2?t[2]:void 0;for(s=f.length>3&&typeof s=="function"?(a--,s):void 0,r&&Rs(t[0],t[1],r)&&(s=a<3?void 0:s,a=1),e=Object(e);++i-1&&f%1==0&&f0){if(++e>=na)return arguments[0]}else e=0;return f.apply(void 0,arguments)}}function Vs(f){if(f!=null){try{return De.call(f)}catch{}try{return f+""}catch{}}return""}function Ge(f,e){return f===e||f!==f&&e!==e}var lt=qt(function(){return arguments}())?qt:function(f){return ze(f)&&ae.call(f,"callee")&&!Ua.call(f,"callee")},ht=Array.isArray;function gt(f){return f!=null&&ci(f.length)&&!ut(f)}function _s(f){return ze(f)&>(f)}var hi=Za||$s;function ut(f){if(!he(f))return!1;var e=We(f);return e==Kt||e==ua||e==ha||e==ba}function ci(f){return typeof f=="number"&&f>-1&&f%1==0&&f<=$t}function he(f){var e=typeof f;return f!=null&&(e=="object"||e=="function")}function ze(f){return f!=null&&typeof f=="object"}function js(f){if(!ze(f)||We(f)!=Qt)return!1;var e=si(f);if(e===null)return!0;var t=ae.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&De.call(t)==_a}var di=Wt?Na(Wt):ks;function Us(f){return Ms(f,gi(f))}function gi(f){return gt(f)?ms(f,!0):As(f)}var qs=Xs(function(f,e,t){ni(f,e,t)});function Zs(f){return function(){return f}}function ui(f){return f}function $s(){return!1}pe.exports=qs});var xi=Ai(Dt(),1),pi=fi();function Js({options:f,chartId:e,theme:t,extraJsOptions:i}){return{chart:null,options:f,chartId:e,theme:t,extraJsOptions:i,init:function(){this.$wire.$on("updateOptions",({options:a})=>{a=pi(a,this.extraJsOptions),this.updateChart(a)}),Alpine.effect(()=>{let a=Alpine.store("theme");this.$nextTick(()=>{this.chart===null?this.initChart():this.updateChart({theme:{mode:a},chart:{background:"inherit"}})})})},initChart:function(){this.options.theme={mode:this.theme},this.options.chart.background="inherit",this.options=pi(this.options,this.extraJsOptions),this.chart=new xi.default(document.querySelector(this.chartId),this.options),this.chart.render()},updateChart:function(a){this.chart.updateOptions(a,!1,!0,!0)}}}export{Js as default}; /*! Bundled license information: apexcharts/dist/apexcharts.common.js: (*! - * ApexCharts v3.44.0 + * ApexCharts v3.45.1 * (c) 2018-2023 ApexCharts * Released under the MIT License. *) */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzL2FwZXhjaGFydHMvZGlzdC9hcGV4Y2hhcnRzLmNvbW1vbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoLm1lcmdlL2luZGV4LmpzIiwgIi4uL2FwZXhjaGFydHMuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIVxuICogQXBleENoYXJ0cyB2My40NC4wXG4gKiAoYykgMjAxOC0yMDIzIEFwZXhDaGFydHNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gdCh0LGUpe3ZhciBpPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKGE9YS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksaS5wdXNoLmFwcGx5KGksYSl9cmV0dXJuIGl9ZnVuY3Rpb24gZShlKXtmb3IodmFyIGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgYT1udWxsIT1hcmd1bWVudHNbaV0/YXJndW1lbnRzW2ldOnt9O2klMj90KE9iamVjdChhKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7byhlLHQsYVt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhhKSk6dChPYmplY3QoYSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBpKHQpe3JldHVybiBpPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIHR9LGkodCl9ZnVuY3Rpb24gYSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gcyh0LGUpe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lW2ldO2EuZW51bWVyYWJsZT1hLmVudW1lcmFibGV8fCExLGEuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIGEmJihhLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxhLmtleSxhKX19ZnVuY3Rpb24gcih0LGUsaSl7cmV0dXJuIGUmJnModC5wcm90b3R5cGUsZSksaSYmcyh0LGkpLHR9ZnVuY3Rpb24gbyh0LGUsaSl7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1pLHR9ZnVuY3Rpb24gbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmaCh0LGUpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0sbCh0KX1mdW5jdGlvbiBoKHQsZSl7cmV0dXJuIGg9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9LGgodCxlKX1mdW5jdGlvbiBjKHQsZSl7aWYoZSYmKFwib2JqZWN0XCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKSlyZXR1cm4gZTtpZih2b2lkIDAhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIHR9KHQpfWZ1bmN0aW9uIGQodCl7dmFyIGU9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaSxhPWwodCk7aWYoZSl7dmFyIHM9bCh0aGlzKS5jb25zdHJ1Y3RvcjtpPVJlZmxlY3QuY29uc3RydWN0KGEsYXJndW1lbnRzLHMpfWVsc2UgaT1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYyh0aGlzLGkpfX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHR9KHQpfHxmdW5jdGlvbih0LGUpe3ZhciBpPW51bGw9PXQ/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PWkpcmV0dXJuO3ZhciBhLHMscj1bXSxvPSEwLG49ITE7dHJ5e2ZvcihpPWkuY2FsbCh0KTshKG89KGE9aS5uZXh0KCkpLmRvbmUpJiYoci5wdXNoKGEudmFsdWUpLCFlfHxyLmxlbmd0aCE9PWUpO289ITApO31jYXRjaCh0KXtuPSEwLHM9dH1maW5hbGx5e3RyeXtvfHxudWxsPT1pLnJldHVybnx8aS5yZXR1cm4oKX1maW5hbGx5e2lmKG4pdGhyb3cgc319cmV0dXJuIHJ9KHQsZSl8fHAodCxlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGYodCl9KHQpfHxmdW5jdGlvbih0KXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT10W1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPXRbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8cCh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBwKHQsZSl7aWYodCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIGYodCxlKTt2YXIgaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PWkmJnQuY29uc3RydWN0b3ImJihpPXQuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PWl8fFwiU2V0XCI9PT1pP0FycmF5LmZyb20odCk6XCJBcmd1bWVudHNcIj09PWl8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGkpP2YodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIGYodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIGk9MCxhPW5ldyBBcnJheShlKTtpPGU7aSsrKWFbaV09dFtpXTtyZXR1cm4gYX12YXIgeD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXthKHRoaXMsdCl9cmV0dXJuIHIodCxbe2tleTpcInNoYWRlUkdCQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWUuc3BsaXQoXCIsXCIpLGE9dDwwPzA6MjU1LHM9dDwwPy0xKnQ6dCxyPXBhcnNlSW50KGlbMF0uc2xpY2UoNCksMTApLG89cGFyc2VJbnQoaVsxXSwxMCksbj1wYXJzZUludChpWzJdLDEwKTtyZXR1cm5cInJnYihcIisoTWF0aC5yb3VuZCgoYS1yKSpzKStyKStcIixcIisoTWF0aC5yb3VuZCgoYS1vKSpzKStvKStcIixcIisoTWF0aC5yb3VuZCgoYS1uKSpzKStuKStcIilcIn19LHtrZXk6XCJzaGFkZUhleENvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1wYXJzZUludChlLnNsaWNlKDEpLDE2KSxhPXQ8MD8wOjI1NSxzPXQ8MD8tMSp0OnQscj1pPj4xNixvPWk+PjgmMjU1LG49MjU1Jmk7cmV0dXJuXCIjXCIrKDE2Nzc3MjE2KzY1NTM2KihNYXRoLnJvdW5kKChhLXIpKnMpK3IpKzI1NiooTWF0aC5yb3VuZCgoYS1vKSpzKStvKSsoTWF0aC5yb3VuZCgoYS1uKSpzKStuKSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpfX0se2tleTpcInNoYWRlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbihlLGkpe3JldHVybiB0LmlzQ29sb3JIZXgoaSk/dGhpcy5zaGFkZUhleENvbG9yKGUsaSk6dGhpcy5zaGFkZVJHQkNvbG9yKGUsaSl9fV0sW3trZXk6XCJiaW5kXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fX0se2tleTpcImlzT2JqZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwib2JqZWN0XCI9PT1pKHQpJiYhQXJyYXkuaXNBcnJheSh0KSYmbnVsbCE9dH19LHtrZXk6XCJpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PVwiW29iamVjdCBcIit0K1wiXVwifX0se2tleTpcImxpc3RUb0FycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT1bXTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWlbZV09dFtlXTtyZXR1cm4gaX19LHtrZXk6XCJleHRlbmRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7XCJmdW5jdGlvblwiIT10eXBlb2YgT2JqZWN0LmFzc2lnbiYmKE9iamVjdC5hc3NpZ249ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0XCIpO2Zvcih2YXIgZT1PYmplY3QodCksaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciBhPWFyZ3VtZW50c1tpXTtpZihudWxsIT1hKWZvcih2YXIgcyBpbiBhKWEuaGFzT3duUHJvcGVydHkocykmJihlW3NdPWFbc10pfXJldHVybiBlfSk7dmFyIGE9T2JqZWN0LmFzc2lnbih7fSx0KTtyZXR1cm4gdGhpcy5pc09iamVjdCh0KSYmdGhpcy5pc09iamVjdChlKSYmT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocyl7aS5pc09iamVjdChlW3NdKSYmcyBpbiB0P2Fbc109aS5leHRlbmQodFtzXSxlW3NdKTpPYmplY3QuYXNzaWduKGEsbyh7fSxzLGVbc10pKX0pKSxhfX0se2tleTpcImV4dGVuZEFycmF5XCIsdmFsdWU6ZnVuY3Rpb24oZSxpKXt2YXIgYT1bXTtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe2EucHVzaCh0LmV4dGVuZChpLGUpKX0pKSxlPWF9fSx7a2V5OlwibW9udGhNb2RcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCUxMn19LHtrZXk6XCJjbG9uZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHQuaXMoXCJBcnJheVwiLGUpKXtmb3IodmFyIGE9W10scz0wO3M8ZS5sZW5ndGg7cysrKWFbc109dGhpcy5jbG9uZShlW3NdKTtyZXR1cm4gYX1pZih0LmlzKFwiTnVsbFwiLGUpKXJldHVybiBudWxsO2lmKHQuaXMoXCJEYXRlXCIsZSkpcmV0dXJuIGU7aWYoXCJvYmplY3RcIj09PWkoZSkpe3ZhciByPXt9O2Zvcih2YXIgbyBpbiBlKWUuaGFzT3duUHJvcGVydHkobykmJihyW29dPXRoaXMuY2xvbmUoZVtvXSkpO3JldHVybiByfXJldHVybiBlfX0se2tleTpcImxvZzEwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4xMH19LHtrZXk6XCJyb3VuZFRvQmFzZTEwXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2cxMCh0KSkpfX0se2tleTpcInJvdW5kVG9CYXNlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5wb3coZSxNYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGgubG9nKGUpKSl9fSx7a2V5OlwicGFyc2VOdW1iZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQ/dDpwYXJzZUZsb2F0KHQpfX0se2tleTpcInN0cmlwTnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjI7cmV0dXJuIE51bWJlci5pc0ludGVnZXIodCk/dDpwYXJzZUZsb2F0KHQudG9QcmVjaXNpb24oZSkpfX0se2tleTpcInJhbmRvbUlkXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4oTWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDQpfX0se2tleTpcIm5vRXhwb25lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9U3RyaW5nKHQpLnNwbGl0KC9bZUVdLyk7aWYoMT09PWUubGVuZ3RoKXJldHVybiBlWzBdO3ZhciBpPVwiXCIsYT10PDA/XCItXCI6XCJcIixzPWVbMF0ucmVwbGFjZShcIi5cIixcIlwiKSxyPU51bWJlcihlWzFdKSsxO2lmKHI8MCl7Zm9yKGk9YStcIjAuXCI7cisrOylpKz1cIjBcIjtyZXR1cm4gaStzLnJlcGxhY2UoL14tLyxcIlwiKX1mb3Ioci09cy5sZW5ndGg7ci0tOylpKz1cIjBcIjtyZXR1cm4gcytpfX0se2tleTpcImdldERpbWVuc2lvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCksaT10LmNsaWVudEhlaWdodCxhPXQuY2xpZW50V2lkdGg7cmV0dXJuIGktPXBhcnNlRmxvYXQoZS5wYWRkaW5nVG9wKStwYXJzZUZsb2F0KGUucGFkZGluZ0JvdHRvbSksW2EtPXBhcnNlRmxvYXQoZS5wYWRkaW5nTGVmdCkrcGFyc2VGbG9hdChlLnBhZGRpbmdSaWdodCksaV19fSx7a2V5OlwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOmUudG9wLHJpZ2h0OmUucmlnaHQsYm90dG9tOmUuYm90dG9tLGxlZnQ6ZS5sZWZ0LHdpZHRoOnQuY2xpZW50V2lkdGgsaGVpZ2h0OnQuY2xpZW50SGVpZ2h0LHg6ZS5sZWZ0LHk6ZS50b3B9fX0se2tleTpcImdldExhcmdlc3RTdHJpbmdGcm9tQXJyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYoZT1lLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5sZW5ndGg+ZS5sZW5ndGg/dDplfSkpKSx0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKX19LHtrZXk6XCJoZXhUb1JnYmFcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpcIiM5OTk5OTlcIixlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTouNjtcIiNcIiE9PXQuc3Vic3RyaW5nKDAsMSkmJih0PVwiIzk5OTk5OVwiKTt2YXIgaT10LnJlcGxhY2UoXCIjXCIsXCJcIik7aT1pLm1hdGNoKG5ldyBSZWdFeHAoXCIoLntcIitpLmxlbmd0aC8zK1wifSlcIixcImdcIikpO2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKWlbYV09cGFyc2VJbnQoMT09PWlbYV0ubGVuZ3RoP2lbYV0raVthXTppW2FdLDE2KTtyZXR1cm4gdm9pZCAwIT09ZSYmaS5wdXNoKGUpLFwicmdiYShcIitpLmpvaW4oXCIsXCIpK1wiKVwifX0se2tleTpcImdldE9wYWNpdHlGcm9tUkdCQVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQucmVwbGFjZSgvXi4qLCguKylcXCkvLFwiJDFcIikpfX0se2tleTpcInJnYjJoZXhcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4odD10Lm1hdGNoKC9ecmdiYT9bXFxzK10/XFwoW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8vaSkpJiY0PT09dC5sZW5ndGg/XCIjXCIrKFwiMFwiK3BhcnNlSW50KHRbMV0sMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKyhcIjBcIitwYXJzZUludCh0WzJdLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSsoXCIwXCIrcGFyc2VJbnQodFszXSwxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik6XCJcIn19LHtrZXk6XCJpc0NvbG9ySGV4XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuLyheI1swLTlBLUZdezZ9JCl8KF4jWzAtOUEtRl17M30kKXwoXiNbMC05QS1GXXs4fSQpL2kudGVzdCh0KX19LHtrZXk6XCJnZXRQb2x5Z29uUG9zXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9W10sYT0yKk1hdGguUEkvZSxzPTA7czxlO3MrKyl7dmFyIHI9e307ci54PXQqTWF0aC5zaW4ocyphKSxyLnk9LXQqTWF0aC5jb3MocyphKSxpLnB1c2gocil9cmV0dXJuIGl9fSx7a2V5OlwicG9sYXJUb0NhcnRlc2lhblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPShhLTkwKSpNYXRoLlBJLzE4MDtyZXR1cm57eDp0K2kqTWF0aC5jb3MocykseTplK2kqTWF0aC5zaW4ocyl9fX0se2tleTpcImVzY2FwZVN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcInhcIixpPXQudG9TdHJpbmcoKS5zbGljZSgpO3JldHVybiBpPWkucmVwbGFjZSgvW2AgfiFAIyQlXiYqKCl8K1xcPT87OidcIiwuPD57fVtcXF1cXFxcL10vZ2ksZSl9fSx7a2V5OlwibmVnVG9aZXJvXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD8wOnR9fSx7a2V5OlwibW92ZUluZGV4SW5BcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZihpPj10Lmxlbmd0aClmb3IodmFyIGE9aS10Lmxlbmd0aCsxO2EtLTspdC5wdXNoKHZvaWQgMCk7cmV0dXJuIHQuc3BsaWNlKGksMCx0LnNwbGljZShlLDEpWzBdKSx0fX0se2tleTpcImV4dHJhY3ROdW1iZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0LnJlcGxhY2UoL1teXFxkLl0qL2csXCJcIikpfX0se2tleTpcImZpbmRBbmNlc3RvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKDsodD10LnBhcmVudEVsZW1lbnQpJiYhdC5jbGFzc0xpc3QuY29udGFpbnMoZSk7KTtyZXR1cm4gdH19LHtrZXk6XCJzZXRFTHN0eWxlc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmKHQuc3R5bGUua2V5PWVbaV0pfX0se2tleTpcImlzTnVtYmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIWlzTmFOKHQpJiZwYXJzZUZsb2F0KE51bWJlcih0KSk9PT10JiYhaXNOYU4ocGFyc2VJbnQodCwxMCkpfX0se2tleTpcImlzRmxvYXRcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTnVtYmVyKHQpPT09dCYmdCUxIT0wfX0se2tleTpcImlzU2FmYXJpXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4vXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfX0se2tleTpcImlzRmlyZWZveFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiZmlyZWZveFwiKT4tMX19LHtrZXk6XCJpc0lFMTFcIix2YWx1ZTpmdW5jdGlvbigpe2lmKC0xIT09d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIk1TSUVcIil8fHdpbmRvdy5uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKFwiVHJpZGVudC9cIik+LTEpcmV0dXJuITB9fSx7a2V5OlwiaXNJRVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsZT10LmluZGV4T2YoXCJNU0lFIFwiKTtpZihlPjApcmV0dXJuIHBhcnNlSW50KHQuc3Vic3RyaW5nKGUrNSx0LmluZGV4T2YoXCIuXCIsZSkpLDEwKTtpZih0LmluZGV4T2YoXCJUcmlkZW50L1wiKT4wKXt2YXIgaT10LmluZGV4T2YoXCJydjpcIik7cmV0dXJuIHBhcnNlSW50KHQuc3Vic3RyaW5nKGkrMyx0LmluZGV4T2YoXCIuXCIsaSkpLDEwKX12YXIgYT10LmluZGV4T2YoXCJFZGdlL1wiKTtyZXR1cm4gYT4wJiZwYXJzZUludCh0LnN1YnN0cmluZyhhKzUsdC5pbmRleE9mKFwiLlwiLGEpKSwxMCl9fV0pLHR9KCksYj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnNldEVhc2luZ0Z1bmN0aW9ucygpfXJldHVybiByKHQsW3trZXk6XCJzZXRFYXNpbmdGdW5jdGlvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O2lmKCF0aGlzLncuZ2xvYmFscy5lYXNpbmcpe3N3aXRjaCh0aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZWFzaW5nKXtjYXNlXCJsaW5lYXJcIjp0PVwiLVwiO2JyZWFrO2Nhc2VcImVhc2VpblwiOnQ9XCI8XCI7YnJlYWs7Y2FzZVwiZWFzZW91dFwiOnQ9XCI+XCI7YnJlYWs7Y2FzZVwiZWFzZWlub3V0XCI6ZGVmYXVsdDp0PVwiPD5cIjticmVhaztjYXNlXCJzd2luZ1wiOnQ9ZnVuY3Rpb24odCl7dmFyIGU9MS43MDE1ODtyZXR1cm4odC09MSkqdCooKGUrMSkqdCtlKSsxfTticmVhaztjYXNlXCJib3VuY2VcIjp0PWZ1bmN0aW9uKHQpe3JldHVybiB0PDEvMi43NT83LjU2MjUqdCp0OnQ8Mi8yLjc1PzcuNTYyNSoodC09MS41LzIuNzUpKnQrLjc1OnQ8Mi41LzIuNzU/Ny41NjI1Kih0LT0yLjI1LzIuNzUpKnQrLjkzNzU6Ny41NjI1Kih0LT0yLjYyNS8yLjc1KSp0Ky45ODQzNzV9O2JyZWFrO2Nhc2VcImVsYXN0aWNcIjp0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ISF0P3Q6TWF0aC5wb3coMiwtMTAqdCkqTWF0aC5zaW4oKHQtLjA3NSkqKDIqTWF0aC5QSSkvLjMpKzF9fXRoaXMudy5nbG9iYWxzLmVhc2luZz10fX19LHtrZXk6XCJhbmltYXRlTGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3QuYXR0cihlKS5hbmltYXRlKGEpLmF0dHIoaSl9fSx7a2V5OlwiYW5pbWF0ZU1hcmtlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXtlfHwoZT0wKSx0LmF0dHIoe3I6ZSx3aWR0aDplLGhlaWdodDplfSkuYW5pbWF0ZShhLHMpLmF0dHIoe3I6aSx3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0pLmFmdGVyQWxsKChmdW5jdGlvbigpe3IoKX0pKX19LHtrZXk6XCJhbmltYXRlQ2lyY2xlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt0LmF0dHIoe3I6ZS5yLGN4OmUuY3gsY3k6ZS5jeX0pLmFuaW1hdGUoYSxzKS5hdHRyKHtyOmkucixjeDppLmN4LGN5OmkuY3l9KX19LHtrZXk6XCJhbmltYXRlUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dC5hdHRyKGUpLmFuaW1hdGUoYSkuYXR0cihpKS5hZnRlckFsbCgoZnVuY3Rpb24oKXtyZXR1cm4gcygpfSkpfX0se2tleTpcImFuaW1hdGVQYXRoc0dyYWR1YWxseVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZWwsaT10LnJlYWxJbmRleCxhPXQuaixzPXQuZmlsbCxyPXQucGF0aEZyb20sbz10LnBhdGhUbyxuPXQuc3BlZWQsbD10LmRlbGF5LGg9dGhpcy53LGM9MDtoLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmFuaW1hdGVHcmFkdWFsbHkuZW5hYmxlZCYmKGM9aC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlR3JhZHVhbGx5LmRlbGF5KSxoLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCYmaC5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZcImJhclwiIT09aC5jb25maWcuY2hhcnQudHlwZSYmKGM9MCksdGhpcy5tb3JwaFNWRyhlLGksYSxcImxpbmVcIiE9PWguY29uZmlnLmNoYXJ0LnR5cGV8fGguZ2xvYmFscy5jb21ib0NoYXJ0cz9zOlwic3Ryb2tlXCIscixvLG4sbCpjKX19LHtrZXk6XCJzaG93RGVsYXllZEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLncuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5lbDtlLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpLGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLWVsZW1lbnQtc2hvd25cIil9KSl9fSx7a2V5OlwiYW5pbWF0aW9uQ29tcGxldGVkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2UuZ2xvYmFscy5hbmltYXRpb25FbmRlZHx8KGUuZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMCx0aGlzLnNob3dEZWxheWVkRWxlbWVudHMoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuYW5pbWF0aW9uRW5kJiZlLmNvbmZpZy5jaGFydC5ldmVudHMuYW5pbWF0aW9uRW5kKHRoaXMuY3R4LHtlbDp0LHc6ZX0pKX19LHtrZXk6XCJtb3JwaFNWR1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8sbil7dmFyIGw9dGhpcyxoPXRoaXMudztzfHwocz10LmF0dHIoXCJwYXRoRnJvbVwiKSkscnx8KHI9dC5hdHRyKFwicGF0aFRvXCIpKTt2YXIgYz1mdW5jdGlvbih0KXtyZXR1cm5cInJhZGFyXCI9PT1oLmNvbmZpZy5jaGFydC50eXBlJiYobz0xKSxcIk0gMCBcIi5jb25jYXQoaC5nbG9iYWxzLmdyaWRIZWlnaHQpfTsoIXN8fHMuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8cy5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKHM9YygpKSwoIXJ8fHIuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8ci5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKHI9YygpKSxoLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZXx8KG89MSksdC5wbG90KHMpLmFuaW1hdGUoMSxoLmdsb2JhbHMuZWFzaW5nLG4pLnBsb3QocykuYW5pbWF0ZShvLGguZ2xvYmFscy5lYXNpbmcsbikucGxvdChyKS5hZnRlckFsbCgoZnVuY3Rpb24oKXt4LmlzTnVtYmVyKGkpP2k9PT1oLmdsb2JhbHMuc2VyaWVzW2guZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMiYmaC5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJmwuYW5pbWF0aW9uQ29tcGxldGVkKHQpOlwibm9uZVwiIT09YSYmaC5nbG9iYWxzLnNob3VsZEFuaW1hdGUmJighaC5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZlPT09aC5nbG9iYWxzLnNlcmllcy5sZW5ndGgtMXx8aC5nbG9iYWxzLmNvbWJvQ2hhcnRzKSYmbC5hbmltYXRpb25Db21wbGV0ZWQodCksbC5zaG93RGVsYXllZEVsZW1lbnRzKCl9KSl9fV0pLHR9KCksdj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZ2V0RGVmYXVsdEZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3QudW5maWx0ZXIoITApLChuZXcgd2luZG93LlNWRy5GaWx0ZXIpLnNpemUoXCIxMjAlXCIsXCIxODAlXCIsXCItNSVcIixcIi00MCVcIiksXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlcj90aGlzLmFwcGx5RmlsdGVyKHQsZSxpLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci50eXBlLGkuY29uZmlnLnN0YXRlcy5ub3JtYWwuZmlsdGVyLnZhbHVlKTppLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQmJnRoaXMuZHJvcFNoYWRvdyh0LGkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3csZSl9fSx7a2V5OlwiYWRkTm9ybWFsRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiYhdC5ub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWFya2VyXCIpJiZ0aGlzLmRyb3BTaGFkb3codCxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LGUpfX0se2tleTpcImFkZExpZ2h0ZW5GaWx0ZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcyxzPXRoaXMudyxyPWkuaW50ZW5zaXR5O3QudW5maWx0ZXIoITApO25ldyB3aW5kb3cuU1ZHLkZpbHRlcjt0LmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGk9cy5jb25maWcuY2hhcnQuZHJvcFNoYWRvdzsoaS5lbmFibGVkP2EuYWRkU2hhZG93KHQsZSxpKTp0KS5jb21wb25lbnRUcmFuc2Zlcih7cmdiOnt0eXBlOlwibGluZWFyXCIsc2xvcGU6MS41LGludGVyY2VwdDpyfX0pfSkpLHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSl9fSx7a2V5OlwiYWRkRGFya2VuRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1pLmludGVuc2l0eTt0LnVuZmlsdGVyKCEwKTtuZXcgd2luZG93LlNWRy5GaWx0ZXI7dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBpPXMuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7KGkuZW5hYmxlZD9hLmFkZFNoYWRvdyh0LGUsaSk6dCkuY29tcG9uZW50VHJhbnNmZXIoe3JnYjp7dHlwZTpcImxpbmVhclwiLHNsb3BlOnJ9fSl9KSksdC5maWx0ZXJlci5ub2RlLnNldEF0dHJpYnV0ZShcImZpbHRlclVuaXRzXCIsXCJ1c2VyU3BhY2VPblVzZVwiKSx0aGlzLl9zY2FsZUZpbHRlclNpemUodC5maWx0ZXJlci5ub2RlKX19LHtrZXk6XCJhcHBseUZpbHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106LjU7c3dpdGNoKGkpe2Nhc2VcIm5vbmVcIjp0aGlzLmFkZE5vcm1hbEZpbHRlcih0LGUpO2JyZWFrO2Nhc2VcImxpZ2h0ZW5cIjp0aGlzLmFkZExpZ2h0ZW5GaWx0ZXIodCxlLHtpbnRlbnNpdHk6YX0pO2JyZWFrO2Nhc2VcImRhcmtlblwiOnRoaXMuYWRkRGFya2VuRmlsdGVyKHQsZSx7aW50ZW5zaXR5OmF9KX19fSx7a2V5OlwiYWRkU2hhZG93XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPWkuYmx1cixzPWkudG9wLHI9aS5sZWZ0LG89aS5jb2xvcixuPWkub3BhY2l0eSxsPXQuZmxvb2QoQXJyYXkuaXNBcnJheShvKT9vW2VdOm8sbikuY29tcG9zaXRlKHQuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQocixzKS5nYXVzc2lhbkJsdXIoYSkubWVyZ2UodC5zb3VyY2UpO3JldHVybiB0LmJsZW5kKHQuc291cmNlLGwpfX0se2tleTpcImRyb3BTaGFkb3dcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLGE9ZS50b3Ascz1lLmxlZnQscj1lLmJsdXIsbz1lLmNvbG9yLG49ZS5vcGFjaXR5LGw9ZS5ub1VzZXJTcGFjZU9uVXNlLGg9dGhpcy53O3JldHVybiB0LnVuZmlsdGVyKCEwKSx4LmlzSUUoKSYmXCJyYWRpYWxCYXJcIj09PWguY29uZmlnLmNoYXJ0LnR5cGV8fChvPUFycmF5LmlzQXJyYXkobyk/b1tpXTpvLHQuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgZT1udWxsO2U9eC5pc1NhZmFyaSgpfHx4LmlzRmlyZWZveCgpfHx4LmlzSUUoKT90LmZsb29kKG8sbikuY29tcG9zaXRlKHQuc291cmNlQWxwaGEsXCJpblwiKS5vZmZzZXQocyxhKS5nYXVzc2lhbkJsdXIocik6dC5mbG9vZChvLG4pLmNvbXBvc2l0ZSh0LnNvdXJjZUFscGhhLFwiaW5cIikub2Zmc2V0KHMsYSkuZ2F1c3NpYW5CbHVyKHIpLm1lcmdlKHQuc291cmNlKSx0LmJsZW5kKHQuc291cmNlLGUpfSkpLGx8fHQuZmlsdGVyZXIubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJVbml0c1wiLFwidXNlclNwYWNlT25Vc2VcIiksdGhpcy5fc2NhbGVGaWx0ZXJTaXplKHQuZmlsdGVyZXIubm9kZSkpLHR9fSx7a2V5Olwic2V0U2VsZWN0aW9uRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudztpZih2b2lkIDAhPT1hLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW2VdJiZhLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzW2VdLmluZGV4T2YoaSk+LTEpe3Qubm9kZS5zZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiLCEwKTt2YXIgcz1hLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlcjtcIm5vbmVcIiE9PXMmJnRoaXMuYXBwbHlGaWx0ZXIodCxlLHMudHlwZSxzLnZhbHVlKX19fSx7a2V5OlwiX3NjYWxlRmlsdGVyU2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpeyFmdW5jdGlvbihlKXtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiZ0LnNldEF0dHJpYnV0ZShpLGVbaV0pfSh7d2lkdGg6XCIyMDAlXCIsaGVpZ2h0OlwiMjAwJVwiLHg6XCItNTAlXCIseTpcIi01MCVcIn0pfX1dKSx0fSgpLG09ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcInJvdW5kUGF0aENvcm5lcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCxlLGkpe3ZhciBzPWUueC10Lngscj1lLnktdC55LG89TWF0aC5zcXJ0KHMqcytyKnIpO3JldHVybiBhKHQsZSxNYXRoLm1pbigxLGkvbykpfWZ1bmN0aW9uIGEodCxlLGkpe3JldHVybnt4OnQueCsoZS54LXQueCkqaSx5OnQueSsoZS55LXQueSkqaX19ZnVuY3Rpb24gcyh0LGUpe3QubGVuZ3RoPjImJih0W3QubGVuZ3RoLTJdPWUueCx0W3QubGVuZ3RoLTFdPWUueSl9ZnVuY3Rpb24gcih0KXtyZXR1cm57eDpwYXJzZUZsb2F0KHRbdC5sZW5ndGgtMl0pLHk6cGFyc2VGbG9hdCh0W3QubGVuZ3RoLTFdKX19dC5pbmRleE9mKFwiTmFOXCIpPi0xJiYodD1cIlwiKTt2YXIgbz10LnNwbGl0KC9bLFxcc10vKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5tYXRjaChcIihbYS16QS1aXSkoLispXCIpO3JldHVybiBpPyh0LnB1c2goaVsxXSksdC5wdXNoKGlbMl0pKTp0LnB1c2goZSksdH0pLFtdKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQoZSk9PWUmJnQubGVuZ3RoP3RbdC5sZW5ndGgtMV0ucHVzaChlKTp0LnB1c2goW2VdKSx0fSksW10pLG49W107aWYoby5sZW5ndGg+MSl7dmFyIGw9cihvWzBdKSxoPW51bGw7XCJaXCI9PW9bby5sZW5ndGgtMV1bMF0mJm9bMF0ubGVuZ3RoPjImJihoPVtcIkxcIixsLngsbC55XSxvW28ubGVuZ3RoLTFdPWgpLG4ucHVzaChvWzBdKTtmb3IodmFyIGM9MTtjPG8ubGVuZ3RoO2MrKyl7dmFyIGQ9bltuLmxlbmd0aC0xXSxnPW9bY10sdT1nPT1oP29bMV06b1tjKzFdO2lmKHUmJmQmJmQubGVuZ3RoPjImJlwiTFwiPT1nWzBdJiZ1Lmxlbmd0aD4yJiZcIkxcIj09dVswXSl7dmFyIHAsZix4PXIoZCksYj1yKGcpLHY9cih1KTtwPWkoYix4LGUpLGY9aShiLHYsZSkscyhnLHApLGcub3JpZ1BvaW50PWIsbi5wdXNoKGcpO3ZhciBtPWEocCxiLC41KSx5PWEoYixmLC41KSx3PVtcIkNcIixtLngsbS55LHkueCx5LnksZi54LGYueV07dy5vcmlnUG9pbnQ9YixuLnB1c2godyl9ZWxzZSBuLnB1c2goZyl9aWYoaCl7dmFyIGs9cihuW24ubGVuZ3RoLTFdKTtuLnB1c2goW1wiWlwiXSkscyhuWzBdLGspfX1lbHNlIG49bztyZXR1cm4gbi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5qb2luKFwiIFwiKStcIiBcIn0pLFwiXCIpfX0se2tleTpcImRyYXdMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOlwiI2E4YThhOFwiLHI9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOjAsbz1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06bnVsbCxuPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpcImJ1dHRcIjtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmxpbmUoKS5hdHRyKHt4MTp0LHkxOmUseDI6aSx5MjphLHN0cm9rZTpzLFwic3Ryb2tlLWRhc2hhcnJheVwiOnIsXCJzdHJva2Utd2lkdGhcIjpvLFwic3Ryb2tlLWxpbmVjYXBcIjpufSl9fSx7a2V5OlwiZHJhd1JlY3RcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLHM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOjAscj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06XCIjZmVmZWZlXCIsbz1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06MSxuPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpudWxsLGw9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOm51bGwsaD1hcmd1bWVudHMubGVuZ3RoPjkmJnZvaWQgMCE9PWFyZ3VtZW50c1s5XT9hcmd1bWVudHNbOV06MCxjPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5yZWN0KCk7cmV0dXJuIGMuYXR0cih7eDp0LHk6ZSx3aWR0aDppPjA/aTowLGhlaWdodDphPjA/YTowLHJ4OnMscnk6cyxvcGFjaXR5Om8sXCJzdHJva2Utd2lkdGhcIjpudWxsIT09bj9uOjAsc3Ryb2tlOm51bGwhPT1sP2w6XCJub25lXCIsXCJzdHJva2UtZGFzaGFycmF5XCI6aH0pLGMubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsciksY319LHtrZXk6XCJkcmF3UG9seWdvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcIiNlMWUxZTFcIixpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOlwibm9uZVwiO3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uUGFwZXIucG9seWdvbih0KS5hdHRyKHtmaWxsOmEsc3Ryb2tlOmUsXCJzdHJva2Utd2lkdGhcIjppfSl9fSx7a2V5OlwiZHJhd0NpcmNsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3Q8MCYmKHQ9MCk7dmFyIGk9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLmNpcmNsZSgyKnQpO3JldHVybiBudWxsIT09ZSYmaS5hdHRyKGUpLGl9fSx7a2V5OlwiZHJhd1BhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmQsaT12b2lkIDA9PT1lP1wiXCI6ZSxhPXQuc3Ryb2tlLHM9dm9pZCAwPT09YT9cIiNhOGE4YThcIjphLHI9dC5zdHJva2VXaWR0aCxvPXZvaWQgMD09PXI/MTpyLG49dC5maWxsLGw9dC5maWxsT3BhY2l0eSxoPXZvaWQgMD09PWw/MTpsLGM9dC5zdHJva2VPcGFjaXR5LGQ9dm9pZCAwPT09Yz8xOmMsZz10LmNsYXNzZXMsdT10LnN0cm9rZUxpbmVjYXAscD12b2lkIDA9PT11P251bGw6dSxmPXQuc3Ryb2tlRGFzaEFycmF5LHg9dm9pZCAwPT09Zj8wOmYsYj10aGlzLnc7cmV0dXJuIG51bGw9PT1wJiYocD1iLmNvbmZpZy5zdHJva2UubGluZUNhcCksKGkuaW5kZXhPZihcInVuZGVmaW5lZFwiKT4tMXx8aS5pbmRleE9mKFwiTmFOXCIpPi0xKSYmKGk9XCJNIDAgXCIuY29uY2F0KGIuZ2xvYmFscy5ncmlkSGVpZ2h0KSksYi5nbG9iYWxzLmRvbS5QYXBlci5wYXRoKGkpLmF0dHIoe2ZpbGw6bixcImZpbGwtb3BhY2l0eVwiOmgsc3Ryb2tlOnMsXCJzdHJva2Utb3BhY2l0eVwiOmQsXCJzdHJva2UtbGluZWNhcFwiOnAsXCJzdHJva2Utd2lkdGhcIjpvLFwic3Ryb2tlLWRhc2hhcnJheVwiOngsY2xhc3M6Z30pfX0se2tleTpcImdyb3VwXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCxlPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ncm91cCgpO3JldHVybiBudWxsIT09dCYmZS5hdHRyKHQpLGV9fSx7a2V5OlwibW92ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9W1wiTVwiLHQsZV0uam9pbihcIiBcIik7cmV0dXJuIGl9fSx7a2V5OlwibGluZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsYT1udWxsO3JldHVybiBudWxsPT09aT9hPVtcIiBMXCIsdCxlXS5qb2luKFwiIFwiKTpcIkhcIj09PWk/YT1bXCIgSFwiLHRdLmpvaW4oXCIgXCIpOlwiVlwiPT09aSYmKGE9W1wiIFZcIixlXS5qb2luKFwiIFwiKSksYX19LHtrZXk6XCJjdXJ2ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbz1bXCJDXCIsdCxlLGksYSxzLHJdLmpvaW4oXCIgXCIpO3JldHVybiBvfX0se2tleTpcInF1YWRyYXRpY0N1cnZlXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuW1wiUVwiLHQsZSxpLGFdLmpvaW4oXCIgXCIpfX0se2tleTpcImFyY1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPVwiQVwiO2FyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddJiZhcmd1bWVudHNbN10mJihuPVwiYVwiKTt2YXIgbD1bbix0LGUsaSxhLHMscixvXS5qb2luKFwiIFwiKTtyZXR1cm4gbH19LHtrZXk6XCJyZW5kZXJQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpLGE9dC5qLHM9dC5yZWFsSW5kZXgscj10LnBhdGhGcm9tLG89dC5wYXRoVG8sbj10LnN0cm9rZSxsPXQuc3Ryb2tlV2lkdGgsaD10LnN0cm9rZUxpbmVjYXAsYz10LmZpbGwsZD10LmFuaW1hdGlvbkRlbGF5LGc9dC5pbml0aWFsU3BlZWQsdT10LmRhdGFDaGFuZ2VTcGVlZCxwPXQuY2xhc3NOYW1lLGY9dC5zaG91bGRDbGlwVG9HcmlkLHg9dm9pZCAwPT09Znx8ZixtPXQuYmluZEV2ZW50c09uUGF0aHMseT12b2lkIDA9PT1tfHxtLHc9dC5kcmF3U2hhZG93LGs9dm9pZCAwPT09d3x8dyxBPXRoaXMudyxTPW5ldyB2KHRoaXMuY3R4KSxDPW5ldyBiKHRoaXMuY3R4KSxMPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLFA9TCYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCxJPSEhKEwmJiFBLmdsb2JhbHMucmVzaXplZHx8UCYmQS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZBLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSk7ST9pPXI6KGk9byxBLmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQ9ITApO3ZhciBNPUEuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXksVD0wO1Q9QXJyYXkuaXNBcnJheShNKT9NW3NdOkEuY29uZmlnLnN0cm9rZS5kYXNoQXJyYXk7dmFyIHo9dGhpcy5kcmF3UGF0aCh7ZDppLHN0cm9rZTpuLHN0cm9rZVdpZHRoOmwsZmlsbDpjLGZpbGxPcGFjaXR5OjEsY2xhc3NlczpwLHN0cm9rZUxpbmVjYXA6aCxzdHJva2VEYXNoQXJyYXk6VH0pO2lmKHouYXR0cihcImluZGV4XCIscykseCYmei5hdHRyKHtcImNsaXAtcGF0aFwiOlwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoQS5nbG9iYWxzLmN1aWQsXCIpXCIpfSksXCJub25lXCIhPT1BLmNvbmZpZy5zdGF0ZXMubm9ybWFsLmZpbHRlci50eXBlKVMuZ2V0RGVmYXVsdEZpbHRlcih6LHMpO2Vsc2UgaWYoQS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkJiZrJiYoIUEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZE9uU2VyaWVzfHxBLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllcyYmLTEhPT1BLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWRPblNlcmllcy5pbmRleE9mKHMpKSl7dmFyIFg9QS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztTLmRyb3BTaGFkb3coeixYLHMpfXkmJih6Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIix0aGlzLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyx6KSksei5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdGhpcy5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMseikpLHoubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsdGhpcy5wYXRoTW91c2VEb3duLmJpbmQodGhpcyx6KSkpLHouYXR0cih7cGF0aFRvOm8scGF0aEZyb206cn0pO3ZhciBFPXtlbDp6LGo6YSxyZWFsSW5kZXg6cyxwYXRoRnJvbTpyLHBhdGhUbzpvLGZpbGw6YyxzdHJva2VXaWR0aDpsLGRlbGF5OmR9O3JldHVybiFMfHxBLmdsb2JhbHMucmVzaXplZHx8QS5nbG9iYWxzLmRhdGFDaGFuZ2VkPyFBLmdsb2JhbHMucmVzaXplZCYmQS5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxDLnNob3dEZWxheWVkRWxlbWVudHMoKTpDLmFuaW1hdGVQYXRoc0dyYWR1YWxseShlKGUoe30sRSkse30se3NwZWVkOmd9KSksQS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZQJiZJJiZDLmFuaW1hdGVQYXRoc0dyYWR1YWxseShlKGUoe30sRSkse30se3NwZWVkOnV9KSksen19LHtrZXk6XCJkcmF3UGF0dGVyblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106XCIjYThhOGE4XCIscz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06MDtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnBhdHRlcm4oZSxpLChmdW5jdGlvbihyKXtcImhvcml6b250YWxMaW5lc1wiPT09dD9yLmxpbmUoMCwwLGksMCkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnMrMX0pOlwidmVydGljYWxMaW5lc1wiPT09dD9yLmxpbmUoMCwwLDAsZSkuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnMrMX0pOlwic2xhbnRlZExpbmVzXCI9PT10P3IubGluZSgwLDAsZSxpKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6c30pOlwic3F1YXJlc1wiPT09dD9yLnJlY3QoZSxpKS5maWxsKFwibm9uZVwiKS5zdHJva2Uoe2NvbG9yOmEsd2lkdGg6c30pOlwiY2lyY2xlc1wiPT09dCYmci5jaXJjbGUoZSkuZmlsbChcIm5vbmVcIikuc3Ryb2tlKHtjb2xvcjphLHdpZHRoOnN9KX0pKX19LHtrZXk6XCJkcmF3R3JhZGllbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMpe3ZhciByLG89YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOm51bGwsbj1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06bnVsbCxsPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpudWxsLGg9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOjAsYz10aGlzLnc7ZS5sZW5ndGg8OSYmMD09PWUuaW5kZXhPZihcIiNcIikmJihlPXguaGV4VG9SZ2JhKGUsYSkpLGkubGVuZ3RoPDkmJjA9PT1pLmluZGV4T2YoXCIjXCIpJiYoaT14LmhleFRvUmdiYShpLHMpKTt2YXIgZD0wLGc9MSx1PTEscD1udWxsO251bGwhPT1uJiYoZD12b2lkIDAhPT1uWzBdP25bMF0vMTAwOjAsZz12b2lkIDAhPT1uWzFdP25bMV0vMTAwOjEsdT12b2lkIDAhPT1uWzJdP25bMl0vMTAwOjEscD12b2lkIDAhPT1uWzNdP25bM10vMTAwOm51bGwpO3ZhciBmPSEoXCJkb251dFwiIT09Yy5jb25maWcuY2hhcnQudHlwZSYmXCJwaWVcIiE9PWMuY29uZmlnLmNoYXJ0LnR5cGUmJlwicG9sYXJBcmVhXCIhPT1jLmNvbmZpZy5jaGFydC50eXBlJiZcImJ1YmJsZVwiIT09Yy5jb25maWcuY2hhcnQudHlwZSk7aWYocj1udWxsPT09bHx8MD09PWwubGVuZ3RoP2MuZ2xvYmFscy5kb20uUGFwZXIuZ3JhZGllbnQoZj9cInJhZGlhbFwiOlwibGluZWFyXCIsKGZ1bmN0aW9uKHQpe3QuYXQoZCxlLGEpLHQuYXQoZyxpLHMpLHQuYXQodSxpLHMpLG51bGwhPT1wJiZ0LmF0KHAsZSxhKX0pKTpjLmdsb2JhbHMuZG9tLlBhcGVyLmdyYWRpZW50KGY/XCJyYWRpYWxcIjpcImxpbmVhclwiLChmdW5jdGlvbih0KXsoQXJyYXkuaXNBcnJheShsW2hdKT9sW2hdOmwpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuYXQoZS5vZmZzZXQvMTAwLGUuY29sb3IsZS5vcGFjaXR5KX0pKX0pKSxmKXt2YXIgYj1jLmdsb2JhbHMuZ3JpZFdpZHRoLzIsdj1jLmdsb2JhbHMuZ3JpZEhlaWdodC8yO1wiYnViYmxlXCIhPT1jLmNvbmZpZy5jaGFydC50eXBlP3IuYXR0cih7Z3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY3g6YixjeTp2LHI6b30pOnIuYXR0cih7Y3g6LjUsY3k6LjUscjouOCxmeDouMixmeTouMn0pfWVsc2VcInZlcnRpY2FsXCI9PT10P3IuZnJvbSgwLDApLnRvKDAsMSk6XCJkaWFnb25hbFwiPT09dD9yLmZyb20oMCwwKS50bygxLDEpOlwiaG9yaXpvbnRhbFwiPT09dD9yLmZyb20oMCwxKS50bygxLDEpOlwiZGlhZ29uYWwyXCI9PT10JiZyLmZyb20oMSwwKS50bygwLDEpO3JldHVybiByfX0se2tleTpcImdldFRleHRCYXNlZE9uTWF4V2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnRleHQsaT10Lm1heFdpZHRoLGE9dC5mb250U2l6ZSxzPXQuZm9udEZhbWlseSxyPXRoaXMuZ2V0VGV4dFJlY3RzKGUsYSxzKSxvPXIud2lkdGgvZS5sZW5ndGgsbj1NYXRoLmZsb29yKGkvbyk7cmV0dXJuIGk8ci53aWR0aD9lLnNsaWNlKDAsbi0zKStcIi4uLlwiOmV9fSx7a2V5OlwiZHJhd1RleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLGE9dC54LHM9dC55LHI9dC50ZXh0LG89dC50ZXh0QW5jaG9yLG49dC5mb250U2l6ZSxsPXQuZm9udEZhbWlseSxoPXQuZm9udFdlaWdodCxjPXQuZm9yZUNvbG9yLGQ9dC5vcGFjaXR5LGc9dC5tYXhXaWR0aCx1PXQuY3NzQ2xhc3MscD12b2lkIDA9PT11P1wiXCI6dSxmPXQuaXNQbGFpblRleHQseD12b2lkIDA9PT1mfHxmLGI9dGhpcy53O3ZvaWQgMD09PXImJihyPVwiXCIpO3ZhciB2PXI7b3x8KG89XCJzdGFydFwiKSxjJiZjLmxlbmd0aHx8KGM9Yi5jb25maWcuY2hhcnQuZm9yZUNvbG9yKSxsPWx8fGIuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksaD1ofHxcInJlZ3VsYXJcIjt2YXIgbSx5PXttYXhXaWR0aDpnLGZvbnRTaXplOm49bnx8XCIxMXB4XCIsZm9udEZhbWlseTpsfTtyZXR1cm4gQXJyYXkuaXNBcnJheShyKT9tPWIuZ2xvYmFscy5kb20uUGFwZXIudGV4dCgoZnVuY3Rpb24odCl7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspdj1yW2FdLGcmJih2PWkuZ2V0VGV4dEJhc2VkT25NYXhXaWR0aChlKHt0ZXh0OnJbYV19LHkpKSksMD09PWE/dC50c3Bhbih2KTp0LnRzcGFuKHYpLm5ld0xpbmUoKX0pKTooZyYmKHY9dGhpcy5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKGUoe3RleHQ6cn0seSkpKSxtPXg/Yi5nbG9iYWxzLmRvbS5QYXBlci5wbGFpbihyKTpiLmdsb2JhbHMuZG9tLlBhcGVyLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRzcGFuKHYpfSkpKSxtLmF0dHIoe3g6YSx5OnMsXCJ0ZXh0LWFuY2hvclwiOm8sXCJkb21pbmFudC1iYXNlbGluZVwiOlwiYXV0b1wiLFwiZm9udC1zaXplXCI6bixcImZvbnQtZmFtaWx5XCI6bCxcImZvbnQtd2VpZ2h0XCI6aCxmaWxsOmMsY2xhc3M6XCJhcGV4Y2hhcnRzLXRleHQgXCIrcH0pLG0ubm9kZS5zdHlsZS5mb250RmFtaWx5PWwsbS5ub2RlLnN0eWxlLm9wYWNpdHk9ZCxtfX0se2tleTpcImRyYXdNYXJrZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dD10fHwwO3ZhciBhPWkucFNpemV8fDAscz1udWxsO2lmKFwic3F1YXJlXCI9PT1pLnNoYXBlfHxcInJlY3RcIj09PWkuc2hhcGUpe3ZhciByPXZvaWQgMD09PWkucFJhZGl1cz9hLzI6aS5wUmFkaXVzO251bGwhPT1lJiZhfHwoYT0wLHI9MCk7dmFyIG89MS4yKmErcixuPXRoaXMuZHJhd1JlY3QobyxvLG8sbyxyKTtuLmF0dHIoe3g6dC1vLzIseTplLW8vMixjeDp0LGN5OmUsY2xhc3M6aS5jbGFzcz9pLmNsYXNzOlwiXCIsZmlsbDppLnBvaW50RmlsbENvbG9yLFwiZmlsbC1vcGFjaXR5XCI6aS5wb2ludEZpbGxPcGFjaXR5P2kucG9pbnRGaWxsT3BhY2l0eToxLHN0cm9rZTppLnBvaW50U3Ryb2tlQ29sb3IsXCJzdHJva2Utd2lkdGhcIjppLnBvaW50U3Ryb2tlV2lkdGg/aS5wb2ludFN0cm9rZVdpZHRoOjAsXCJzdHJva2Utb3BhY2l0eVwiOmkucG9pbnRTdHJva2VPcGFjaXR5P2kucG9pbnRTdHJva2VPcGFjaXR5OjF9KSxzPW59ZWxzZVwiY2lyY2xlXCIhPT1pLnNoYXBlJiZpLnNoYXBlfHwoeC5pc051bWJlcihlKXx8KGE9MCxlPTApLHM9dGhpcy5kcmF3Q2lyY2xlKGEse2N4OnQsY3k6ZSxjbGFzczppLmNsYXNzP2kuY2xhc3M6XCJcIixzdHJva2U6aS5wb2ludFN0cm9rZUNvbG9yLGZpbGw6aS5wb2ludEZpbGxDb2xvcixcImZpbGwtb3BhY2l0eVwiOmkucG9pbnRGaWxsT3BhY2l0eT9pLnBvaW50RmlsbE9wYWNpdHk6MSxcInN0cm9rZS13aWR0aFwiOmkucG9pbnRTdHJva2VXaWR0aD9pLnBvaW50U3Ryb2tlV2lkdGg6MCxcInN0cm9rZS1vcGFjaXR5XCI6aS5wb2ludFN0cm9rZU9wYWNpdHk/aS5wb2ludFN0cm9rZU9wYWNpdHk6MX0pKTtyZXR1cm4gc319LHtrZXk6XCJwYXRoTW91c2VFbnRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IHYodGhpcy5jdHgpLHM9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKSxyPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbmZpZy5jaGFydC5ldmVudHMuZGF0YVBvaW50TW91c2VFbnRlciYmaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlRW50ZXIoZSx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6aX0pLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJkYXRhUG9pbnRNb3VzZUVudGVyXCIsW2UsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9XSksKFwibm9uZVwiPT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZXx8XCJ0cnVlXCIhPT10Lm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIikpJiZcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXIudHlwZSYmIWkuZ2xvYmFscy5pc1RvdWNoRGV2aWNlKXt2YXIgbz1pLmNvbmZpZy5zdGF0ZXMuaG92ZXIuZmlsdGVyO2EuYXBwbHlGaWx0ZXIodCxzLG8udHlwZSxvLnZhbHVlKX19fSx7a2V5OlwicGF0aE1vdXNlTGVhdmVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyB2KHRoaXMuY3R4KSxzPXBhcnNlSW50KHQubm9kZS5nZXRBdHRyaWJ1dGUoXCJpbmRleFwiKSwxMCkscj1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwialwiKSwxMCk7XCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludE1vdXNlTGVhdmUmJmkuY29uZmlnLmNoYXJ0LmV2ZW50cy5kYXRhUG9pbnRNb3VzZUxlYXZlKGUsdGhpcy5jdHgse3Nlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cix3Oml9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwiZGF0YVBvaW50TW91c2VMZWF2ZVwiLFtlLHRoaXMuY3R4LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pLFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmFjdGl2ZS5maWx0ZXIudHlwZSYmXCJ0cnVlXCI9PT10Lm5vZGUuZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIil8fFwibm9uZVwiIT09aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlJiZhLmdldERlZmF1bHRGaWx0ZXIodCxzKX19LHtrZXk6XCJwYXRoTW91c2VEb3duXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgdih0aGlzLmN0eCkscz1wYXJzZUludCh0Lm5vZGUuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApLHI9cGFyc2VJbnQodC5ub2RlLmdldEF0dHJpYnV0ZShcImpcIiksMTApLG89XCJmYWxzZVwiO2lmKFwidHJ1ZVwiPT09dC5ub2RlLmdldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIpKXtpZih0Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIixcImZhbHNlXCIpLGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10uaW5kZXhPZihyKT4tMSl7dmFyIG49aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXS5pbmRleE9mKHIpO2kuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10uc3BsaWNlKG4sMSl9fWVsc2V7aWYoIWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuYWxsb3dNdWx0aXBsZURhdGFQb2ludHNTZWxlY3Rpb24mJmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoPjApe2kuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHM9W107dmFyIGw9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1zZXJpZXMgcGF0aFwiKS5tZW1iZXJzLGg9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1zZXJpZXMgY2lyY2xlLCAuYXBleGNoYXJ0cy1zZXJpZXMgcmVjdFwiKS5tZW1iZXJzLGM9ZnVuY3Rpb24odCl7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh0LChmdW5jdGlvbih0KXt0Lm5vZGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIixcImZhbHNlXCIpLGEuZ2V0RGVmYXVsdEZpbHRlcih0LHMpfSkpfTtjKGwpLGMoaCl9dC5ub2RlLnNldEF0dHJpYnV0ZShcInNlbGVjdGVkXCIsXCJ0cnVlXCIpLG89XCJ0cnVlXCIsdm9pZCAwPT09aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1tzXSYmKGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc109W10pLGkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbc10ucHVzaChyKX1pZihcInRydWVcIj09PW8pe3ZhciBkPWkuY29uZmlnLnN0YXRlcy5hY3RpdmUuZmlsdGVyO2lmKFwibm9uZVwiIT09ZClhLmFwcGx5RmlsdGVyKHQscyxkLnR5cGUsZC52YWx1ZSk7ZWxzZSBpZihcIm5vbmVcIiE9PWkuY29uZmlnLnN0YXRlcy5ob3Zlci5maWx0ZXImJiFpLmdsb2JhbHMuaXNUb3VjaERldmljZSl7dmFyIGc9aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKHQscyxnLnR5cGUsZy52YWx1ZSl9fWVsc2UgaWYoXCJub25lXCIhPT1pLmNvbmZpZy5zdGF0ZXMuYWN0aXZlLmZpbHRlci50eXBlKWlmKFwibm9uZVwiPT09aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlci50eXBlfHxpLmdsb2JhbHMuaXNUb3VjaERldmljZSlhLmdldERlZmF1bHRGaWx0ZXIodCxzKTtlbHNle2c9aS5jb25maWcuc3RhdGVzLmhvdmVyLmZpbHRlcjthLmFwcGx5RmlsdGVyKHQscyxnLnR5cGUsZy52YWx1ZSl9XCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludFNlbGVjdGlvbiYmaS5jb25maWcuY2hhcnQuZXZlbnRzLmRhdGFQb2ludFNlbGVjdGlvbihlLHRoaXMuY3R4LHtzZWxlY3RlZERhdGFQb2ludHM6aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cyxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfSksZSYmdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImRhdGFQb2ludFNlbGVjdGlvblwiLFtlLHRoaXMuY3R4LHtzZWxlY3RlZERhdGFQb2ludHM6aS5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50cyxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzppfV0pfX0se2tleTpcInJvdGF0ZUFyb3VuZENlbnRlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldEJCb3gmJihlPXQuZ2V0QkJveCgpKSx7eDplLngrZS53aWR0aC8yLHk6ZS55K2UuaGVpZ2h0LzJ9fX0se2tleTpcImdldFRleHRSZWN0c1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPSEoYXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0pfHxhcmd1bWVudHNbNF0scj10aGlzLncsbz10aGlzLmRyYXdUZXh0KHt4Oi0yMDAseTotMjAwLHRleHQ6dCx0ZXh0QW5jaG9yOlwic3RhcnRcIixmb250U2l6ZTplLGZvbnRGYW1pbHk6aSxmb3JlQ29sb3I6XCIjZmZmXCIsb3BhY2l0eTowfSk7YSYmby5hdHRyKFwidHJhbnNmb3JtXCIsYSksci5nbG9iYWxzLmRvbS5QYXBlci5hZGQobyk7dmFyIG49by5iYm94KCk7cmV0dXJuIHN8fChuPW8ubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksby5yZW1vdmUoKSx7d2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHR9fX0se2tleTpcInBsYWNlVGV4dFdpdGhFbGxpcHNpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldENvbXB1dGVkVGV4dExlbmd0aCYmKHQudGV4dENvbnRlbnQ9ZSxlLmxlbmd0aD4wJiZ0LmdldENvbXB1dGVkVGV4dExlbmd0aCgpPj1pLzEuMSkpe2Zvcih2YXIgYT1lLmxlbmd0aC0zO2E+MDthLT0zKWlmKHQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsYSk8PWkvMS4xKXJldHVybiB2b2lkKHQudGV4dENvbnRlbnQ9ZS5zdWJzdHJpbmcoMCxhKStcIi4uLlwiKTt0LnRleHRDb250ZW50PVwiLlwifX19XSxbe2tleTpcInNldEF0dHJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiZ0LnNldEF0dHJpYnV0ZShpLGVbaV0pfX1dKSx0fSgpLHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImdldFN0YWNrZWRTZXJpZXNUb3RhbHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXSxlPXRoaXMudyxpPVtdO2lmKDA9PT1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aClyZXR1cm4gaTtmb3IodmFyIGE9MDthPGUuZ2xvYmFscy5zZXJpZXNbZS5nbG9iYWxzLm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aDthKyspe2Zvcih2YXIgcz0wLHI9MDtyPGUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO3IrKyl2b2lkIDAhPT1lLmdsb2JhbHMuc2VyaWVzW3JdW2FdJiYtMT09PXQuaW5kZXhPZihyKSYmKHMrPWUuZ2xvYmFscy5zZXJpZXNbcl1bYV0pO2kucHVzaChzKX1yZXR1cm4gaX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbEJ5SW5kZXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiBudWxsPT09dD90aGlzLncuY29uZmlnLnNlcmllcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApOnRoaXMudy5nbG9iYWxzLnNlcmllc1t0XS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApfX0se2tleTpcImlzU2VyaWVzTnVsbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7cmV0dXJuIDA9PT0obnVsbD09PXQ/dGhpcy53LmNvbmZpZy5zZXJpZXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXR9KSk6dGhpcy53LmNvbmZpZy5zZXJpZXNbdF0uZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKSkubGVuZ3RofX0se2tleTpcInNlcmllc0hhdmVTYW1lVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLnNlcmllc1t0XS5ldmVyeSgoZnVuY3Rpb24odCxlLGkpe3JldHVybiB0PT09aVswXX0pKX19LHtrZXk6XCJnZXRDYXRlZ29yeUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQuc2xpY2UoKTtyZXR1cm4gZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYoaT10Lm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcih0LWUuZ2xvYmFscy5taW5YKzEpfSkpKSxpfX0se2tleTpcImdldExhcmdlc3RTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleD10Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpLmluZGV4T2YoTWF0aC5tYXguYXBwbHkoTWF0aCx0Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpKSl9fSx7a2V5OlwiZ2V0TGFyZ2VzdE1hcmtlclNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPTA7cmV0dXJuIHQuZ2xvYmFscy5tYXJrZXJzLnNpemUuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZT1NYXRoLm1heChlLHQpfSkpLHQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUmJnQuY29uZmlnLm1hcmtlcnMuZGlzY3JldGUubGVuZ3RoJiZ0LmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmZvckVhY2goKGZ1bmN0aW9uKHQpe2U9TWF0aC5tYXgoZSx0LnNpemUpfSkpLGU+MCYmKGUrPXQuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCsxKSx0Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZT1lLGV9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLnNlcmllc1RvdGFscz10Lmdsb2JhbHMuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXt2YXIgaT0wO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspaSs9dFthXTtlbHNlIGkrPXQ7cmV0dXJuIGl9KSl9fSx7a2V5OlwiZ2V0U2VyaWVzVG90YWxzWFJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJuIGkuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbihhLHMpe2Zvcih2YXIgcj0wLG89MDtvPGEubGVuZ3RoO28rKylpLmdsb2JhbHMuc2VyaWVzWFtzXVtvXT50JiZpLmdsb2JhbHMuc2VyaWVzWFtzXVtvXTxlJiYocis9YVtvXSk7cmV0dXJuIHJ9KSl9fSx7a2V5OlwiZ2V0UGVyY2VudFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O3QuZ2xvYmFscy5zZXJpZXNQZXJjZW50PXQuZ2xvYmFscy5zZXJpZXMubWFwKChmdW5jdGlvbihlLGkpe3ZhciBhPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBzPTA7czxlLmxlbmd0aDtzKyspe3ZhciByPXQuZ2xvYmFscy5zdGFja2VkU2VyaWVzVG90YWxzW3NdLG89MDtyJiYobz0xMDAqZVtzXS9yKSxhLnB1c2gobyl9ZWxzZXt2YXIgbj0xMDAqZS90Lmdsb2JhbHMuc2VyaWVzVG90YWxzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSksMCk7YS5wdXNoKG4pfXJldHVybiBhfSkpfX0se2tleTpcImdldENhbGN1bGF0ZWRSYXRpb3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGUsaSxhLHM9dGhpcy53Lmdsb2JhbHMscj1bXSxvPTAsbj1bXSxsPS4xLGg9MDtpZihzLnlSYW5nZT1bXSxzLmlzTXVsdGlwbGVZQXhpcylmb3IodmFyIGM9MDtjPHMubWluWUFyci5sZW5ndGg7YysrKXMueVJhbmdlLnB1c2goTWF0aC5hYnMocy5taW5ZQXJyW2NdLXMubWF4WUFycltjXSkpLG4ucHVzaCgwKTtlbHNlIHMueVJhbmdlLnB1c2goTWF0aC5hYnMocy5taW5ZLXMubWF4WSkpO3MueFJhbmdlPU1hdGguYWJzKHMubWF4WC1zLm1pblgpLHMuelJhbmdlPU1hdGguYWJzKHMubWF4Wi1zLm1pblopO2Zvcih2YXIgZD0wO2Q8cy55UmFuZ2UubGVuZ3RoO2QrKylyLnB1c2gocy55UmFuZ2VbZF0vcy5ncmlkSGVpZ2h0KTtpZihlPXMueFJhbmdlL3MuZ3JpZFdpZHRoLGk9TWF0aC5hYnMocy5pbml0aWFsTWF4WC1zLmluaXRpYWxNaW5YKS9zLmdyaWRXaWR0aCx0PXMueVJhbmdlL3MuZ3JpZFdpZHRoLGE9cy54UmFuZ2Uvcy5ncmlkSGVpZ2h0LChvPXMuelJhbmdlL3MuZ3JpZEhlaWdodCoxNil8fChvPTEpLHMubWluWSE9PU51bWJlci5NSU5fVkFMVUUmJjAhPT1NYXRoLmFicyhzLm1pblkpJiYocy5oYXNOZWdzPSEwKSxzLmlzTXVsdGlwbGVZQXhpcyl7bj1bXTtmb3IodmFyIGc9MDtnPHIubGVuZ3RoO2crKyluLnB1c2goLXMubWluWUFycltnXS9yW2ddKX1lbHNlIG4ucHVzaCgtcy5taW5ZL3JbMF0pLHMubWluWSE9PU51bWJlci5NSU5fVkFMVUUmJjAhPT1NYXRoLmFicyhzLm1pblkpJiYobD0tcy5taW5ZL3QsaD1zLm1pblgvZSk7cmV0dXJue3lSYXRpbzpyLGludmVydGVkWVJhdGlvOnQselJhdGlvOm8seFJhdGlvOmUsaW5pdGlhbFhSYXRpbzppLGludmVydGVkWFJhdGlvOmEsYmFzZUxpbmVJbnZlcnRlZFk6bCxiYXNlTGluZVk6bixiYXNlTGluZVg6aH19fSx7a2V5OlwiZ2V0TG9nU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudztyZXR1cm4gaS5nbG9iYWxzLnNlcmllc0xvZz10Lm1hcCgoZnVuY3Rpb24odCxhKXtyZXR1cm4gaS5jb25maWcueWF4aXNbYV0mJmkuY29uZmlnLnlheGlzW2FdLmxvZ2FyaXRobWljP3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQ/bnVsbDplLmdldExvZ1ZhbChpLmNvbmZpZy55YXhpc1thXS5sb2dCYXNlLHQsYSl9KSk6dH0pKSxpLmdsb2JhbHMuaW52YWxpZExvZ1NjYWxlP3Q6aS5nbG9iYWxzLnNlcmllc0xvZ319LHtrZXk6XCJnZXRCYXNlTG9nXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5sb2codCl9fSx7a2V5OlwiZ2V0TG9nVmFsXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe2lmKDA9PT1lKXJldHVybiAwO3ZhciBhPXRoaXMudyxzPTA9PT1hLmdsb2JhbHMubWluWUFycltpXT8tMTp0aGlzLmdldEJhc2VMb2codCxhLmdsb2JhbHMubWluWUFycltpXSkscj0oMD09PWEuZ2xvYmFscy5tYXhZQXJyW2ldPzA6dGhpcy5nZXRCYXNlTG9nKHQsYS5nbG9iYWxzLm1heFlBcnJbaV0pKS1zO3JldHVybiBlPDE/ZS9yOih0aGlzLmdldEJhc2VMb2codCxlKS1zKS9yfX0se2tleTpcImdldExvZ1lSYXRpb3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9dGhpcy53Lmdsb2JhbHM7cmV0dXJuIGEueUxvZ1JhdGlvPXQuc2xpY2UoKSxhLmxvZ1lSYW5nZT1hLnlSYW5nZS5tYXAoKGZ1bmN0aW9uKHQscyl7aWYoaS5jb25maWcueWF4aXNbc10mJmUudy5jb25maWcueWF4aXNbc10ubG9nYXJpdGhtaWMpe3ZhciByLG89LU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUlOX1ZBTFVFO3JldHVybiBhLnNlcmllc0xvZy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5jb25maWcueWF4aXNbZV0mJmkuY29uZmlnLnlheGlzW2VdLmxvZ2FyaXRobWljJiYobz1NYXRoLm1heCh0LG8pLG49TWF0aC5taW4odCxuKSl9KSl9KSkscj1NYXRoLnBvdyhhLnlSYW5nZVtzXSxNYXRoLmFicyhuLW8pL2EueVJhbmdlW3NdKSxhLnlMb2dSYXRpb1tzXT1yL2EuZ3JpZEhlaWdodCxyfX0pKSxhLmludmFsaWRMb2dTY2FsZT90LnNsaWNlKCk6YS55TG9nUmF0aW99fV0sW3trZXk6XCJjaGVja0NvbWJvU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9ITEsaT0wLGE9MDtyZXR1cm4gdC5sZW5ndGgmJnZvaWQgMCE9PXRbMF0udHlwZSYmdC5mb3JFYWNoKChmdW5jdGlvbih0KXtcImJhclwiIT09dC50eXBlJiZcImNvbHVtblwiIT09dC50eXBlJiZcImNhbmRsZXN0aWNrXCIhPT10LnR5cGUmJlwiYm94UGxvdFwiIT09dC50eXBlfHxpKyssdm9pZCAwIT09dC50eXBlJiZhKyt9KSksYT4wJiYoZT0hMCkse2NvbWJvQmFyQ291bnQ6aSxjb21ib0NoYXJ0czplfX19LHtrZXk6XCJleHRlbmRBcnJheVByb3BzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlLnlheGlzJiYoZT10LmV4dGVuZFlBeGlzKGUsaSkpLGUuYW5ub3RhdGlvbnMmJihlLmFubm90YXRpb25zLnlheGlzJiYoZT10LmV4dGVuZFlBeGlzQW5ub3RhdGlvbnMoZSkpLGUuYW5ub3RhdGlvbnMueGF4aXMmJihlPXQuZXh0ZW5kWEF4aXNBbm5vdGF0aW9ucyhlKSksZS5hbm5vdGF0aW9ucy5wb2ludHMmJihlPXQuZXh0ZW5kUG9pbnRBbm5vdGF0aW9ucyhlKSkpLGV9fV0pLHR9KCksdz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcInNldE9yaWVudGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGk9dGhpcy53O2lmKFwidmVydGljYWxcIj09PXQubGFiZWwub3JpZW50YXRpb24pe3ZhciBhPW51bGwhPT1lP2U6MCxzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9ucyAuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIuY29uY2F0KGEsXCInXVwiKSk7aWYobnVsbCE9PXMpe3ZhciByPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cy5zZXRBdHRyaWJ1dGUoXCJ4XCIscGFyc2VGbG9hdChzLmdldEF0dHJpYnV0ZShcInhcIikpLXIuaGVpZ2h0KzQpLFwidG9wXCI9PT10LmxhYmVsLnBvc2l0aW9uP3Muc2V0QXR0cmlidXRlKFwieVwiLHBhcnNlRmxvYXQocy5nZXRBdHRyaWJ1dGUoXCJ5XCIpKStyLndpZHRoKTpzLnNldEF0dHJpYnV0ZShcInlcIixwYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieVwiKSktci53aWR0aCk7dmFyIG89dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLnJvdGF0ZUFyb3VuZENlbnRlcihzKSxuPW8ueCxsPW8ueTtzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwicm90YXRlKC05MCBcIi5jb25jYXQobixcIiBcIikuY29uY2F0KGwsXCIpXCIpKX19fX0se2tleTpcImFkZEJhY2tncm91bmRUb0Fubm9cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZighdHx8dm9pZCAwPT09ZS5sYWJlbC50ZXh0fHx2b2lkIDAhPT1lLmxhYmVsLnRleHQmJiFTdHJpbmcoZS5sYWJlbC50ZXh0KS50cmltKCkpcmV0dXJuIG51bGw7dmFyIGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmxlZnQsbz1lLmxhYmVsLnN0eWxlLnBhZGRpbmcucmlnaHQsbj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcudG9wLGw9ZS5sYWJlbC5zdHlsZS5wYWRkaW5nLmJvdHRvbTtcInZlcnRpY2FsXCI9PT1lLmxhYmVsLm9yaWVudGF0aW9uJiYobj1lLmxhYmVsLnN0eWxlLnBhZGRpbmcubGVmdCxsPWUubGFiZWwuc3R5bGUucGFkZGluZy5yaWdodCxyPWUubGFiZWwuc3R5bGUucGFkZGluZy50b3Asbz1lLmxhYmVsLnN0eWxlLnBhZGRpbmcuYm90dG9tKTt2YXIgaD1zLmxlZnQtYS5sZWZ0LXIsYz1zLnRvcC1hLnRvcC1uLGQ9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KGgtaS5nbG9iYWxzLmJhclBhZEZvck51bWVyaWNBeGlzLGMscy53aWR0aCtyK28scy5oZWlnaHQrbitsLGUubGFiZWwuYm9yZGVyUmFkaXVzLGUubGFiZWwuc3R5bGUuYmFja2dyb3VuZCwxLGUubGFiZWwuYm9yZGVyV2lkdGgsZS5sYWJlbC5ib3JkZXJDb2xvciwwKTtyZXR1cm4gZS5pZCYmZC5ub2RlLmNsYXNzTGlzdC5hZGQoZS5pZCksZH19LHtrZXk6XCJhbm5vdGF0aW9uc0JhY2tncm91bmRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1mdW5jdGlvbihpLGEscyl7dmFyIHI9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdChzLFwiLWFubm90YXRpb25zIC5hcGV4Y2hhcnRzLVwiKS5jb25jYXQocyxcIi1hbm5vdGF0aW9uLWxhYmVsW3JlbD0nXCIpLmNvbmNhdChhLFwiJ11cIikpO2lmKHIpe3ZhciBvPXIucGFyZW50Tm9kZSxuPXQuYWRkQmFja2dyb3VuZFRvQW5ubyhyLGkpO24mJihvLmluc2VydEJlZm9yZShuLm5vZGUsciksaS5sYWJlbC5tb3VzZUVudGVyJiZuLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixpLmxhYmVsLm1vdXNlRW50ZXIuYmluZCh0LGkpKSxpLmxhYmVsLm1vdXNlTGVhdmUmJm4ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGkubGFiZWwubW91c2VMZWF2ZS5iaW5kKHQsaSkpLGkubGFiZWwuY2xpY2smJm4ubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixpLmxhYmVsLmNsaWNrLmJpbmQodCxpKSkpfX07ZS5jb25maWcuYW5ub3RhdGlvbnMueGF4aXMubWFwKChmdW5jdGlvbih0LGUpe2kodCxlLFwieGF4aXNcIil9KSksZS5jb25maWcuYW5ub3RhdGlvbnMueWF4aXMubWFwKChmdW5jdGlvbih0LGUpe2kodCxlLFwieWF4aXNcIil9KSksZS5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24odCxlKXtpKHQsZSxcInBvaW50XCIpfSkpfX0se2tleTpcImdldFkxWTJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLGE9XCJ5MVwiPT09dD9lLnk6ZS55MixzPXRoaXMudztpZih0aGlzLmFubm9DdHguaW52ZXJ0QXhpcyl7dmFyIHI9cy5nbG9iYWxzLmxhYmVscy5pbmRleE9mKGEpO3MuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKHI9cy5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmluZGV4T2YoYSkpO3ZhciBvPXMuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nIHRleHQ6bnRoLWNoaWxkKFwiKyhyKzEpK1wiKVwiKTtvJiYoaT1wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwieVwiKSkpfWVsc2V7dmFyIG47aWYocy5jb25maWcueWF4aXNbZS55QXhpc0luZGV4XS5sb2dhcml0aG1pYyluPShhPW5ldyB5KHRoaXMuYW5ub0N0eC5jdHgpLmdldExvZ1ZhbChhLGUueUF4aXNJbmRleCkpL3MuZ2xvYmFscy55TG9nUmF0aW9bZS55QXhpc0luZGV4XTtlbHNlIG49KGEtcy5nbG9iYWxzLm1pbllBcnJbZS55QXhpc0luZGV4XSkvKHMuZ2xvYmFscy55UmFuZ2VbZS55QXhpc0luZGV4XS9zLmdsb2JhbHMuZ3JpZEhlaWdodCk7aT1zLmdsb2JhbHMuZ3JpZEhlaWdodC1uLCFlLm1hcmtlcnx8dm9pZCAwIT09ZS55JiZudWxsIT09ZS55fHwoaT0wKSxzLmNvbmZpZy55YXhpc1tlLnlBeGlzSW5kZXhdJiZzLmNvbmZpZy55YXhpc1tlLnlBeGlzSW5kZXhdLnJldmVyc2VkJiYoaT1uKX1yZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgYSYmYS5pbmRleE9mKFwicHhcIik+LTEmJihpPXBhcnNlRmxvYXQoYSkpLGl9fSx7a2V5OlwiZ2V0WDFYMlwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy5hbm5vQ3R4LmludmVydEF4aXM/aS5nbG9iYWxzLm1pblk6aS5nbG9iYWxzLm1pblgscz10aGlzLmFubm9DdHguaW52ZXJ0QXhpcz9pLmdsb2JhbHMubWF4WTppLmdsb2JhbHMubWF4WCxyPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzP2kuZ2xvYmFscy55UmFuZ2VbMF06aS5nbG9iYWxzLnhSYW5nZSxvPShlLngtYSkvKHIvaS5nbG9iYWxzLmdyaWRXaWR0aCk7dGhpcy5hbm5vQ3R4LmludmVyc2VkUmV2ZXJzZWRBeGlzJiYobz0ocy1lLngpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpKSxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHx0aGlzLmFubm9DdHguaW52ZXJ0QXhpc3x8aS5nbG9iYWxzLmRhdGFGb3JtYXRYTnVtZXJpY3x8KG89dGhpcy5nZXRTdHJpbmdYKGUueCkpO3ZhciBuPShlLngyLWEpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpO3JldHVybiB0aGlzLmFubm9DdHguaW52ZXJzZWRSZXZlcnNlZEF4aXMmJihuPShzLWUueDIpLyhyL2kuZ2xvYmFscy5ncmlkV2lkdGgpKSxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHx0aGlzLmFubm9DdHguaW52ZXJ0QXhpc3x8aS5nbG9iYWxzLmRhdGFGb3JtYXRYTnVtZXJpY3x8KG49dGhpcy5nZXRTdHJpbmdYKGUueDIpKSx2b2lkIDAhPT1lLngmJm51bGwhPT1lLnh8fCFlLm1hcmtlcnx8KG89aS5nbG9iYWxzLmdyaWRXaWR0aCksXCJ4MVwiPT09dCYmXCJzdHJpbmdcIj09dHlwZW9mIGUueCYmZS54LmluZGV4T2YoXCJweFwiKT4tMSYmKG89cGFyc2VGbG9hdChlLngpKSxcIngyXCI9PT10JiZcInN0cmluZ1wiPT10eXBlb2YgZS54MiYmZS54Mi5pbmRleE9mKFwicHhcIik+LTEmJihuPXBhcnNlRmxvYXQoZS54MikpLFwieDFcIj09PXQ/bzpufX0se2tleTpcImdldFN0cmluZ1hcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10O2UuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmxlbmd0aCYmKHQ9ZS5nbG9iYWxzLmNhdGVnb3J5TGFiZWxzLmluZGV4T2YodCkrMSk7dmFyIGE9ZS5nbG9iYWxzLmxhYmVscy5pbmRleE9mKHQpLHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWcgdGV4dDpudGgtY2hpbGQoXCIrKGErMSkrXCIpXCIpO3JldHVybiBzJiYoaT1wYXJzZUZsb2F0KHMuZ2V0QXR0cmlidXRlKFwieFwiKSkpLGl9fV0pLHR9KCksaz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5pbnZlcnRBeGlzPXRoaXMuYW5ub0N0eC5pbnZlcnRBeGlzLHRoaXMuaGVscGVycz1uZXcgdyh0aGlzLmFubm9DdHgpfXJldHVybiByKHQsW3trZXk6XCJhZGRYYXhpc0Fubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGEscz10aGlzLncscj10aGlzLmhlbHBlcnMuZ2V0WDFYMihcIngxXCIsdCksbz10LmxhYmVsLnRleHQsbj10LnN0cm9rZURhc2hBcnJheTtpZih4LmlzTnVtYmVyKHIpKXtpZihudWxsPT09dC54Mnx8dm9pZCAwPT09dC54Mil7dmFyIGw9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdMaW5lKHIrdC5vZmZzZXRYLDArdC5vZmZzZXRZLHIrdC5vZmZzZXRYLHMuZ2xvYmFscy5ncmlkSGVpZ2h0K3Qub2Zmc2V0WSx0LmJvcmRlckNvbG9yLG4sdC5ib3JkZXJXaWR0aCk7ZS5hcHBlbmRDaGlsZChsLm5vZGUpLHQuaWQmJmwubm9kZS5jbGFzc0xpc3QuYWRkKHQuaWQpfWVsc2V7aWYoKGE9dGhpcy5oZWxwZXJzLmdldFgxWDIoXCJ4MlwiLHQpKTxyKXt2YXIgaD1yO3I9YSxhPWh9dmFyIGM9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdSZWN0KHIrdC5vZmZzZXRYLDArdC5vZmZzZXRZLGEtcixzLmdsb2JhbHMuZ3JpZEhlaWdodCt0Lm9mZnNldFksMCx0LmZpbGxDb2xvcix0Lm9wYWNpdHksMSx0LmJvcmRlckNvbG9yLG4pO2Mubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3RcIiksYy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChzLmdsb2JhbHMuY3VpZCxcIilcIikpLGUuYXBwZW5kQ2hpbGQoYy5ub2RlKSx0LmlkJiZjLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX12YXIgZD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZ2V0VGV4dFJlY3RzKG8scGFyc2VGbG9hdCh0LmxhYmVsLnN0eWxlLmZvbnRTaXplKSksZz1cInRvcFwiPT09dC5sYWJlbC5wb3NpdGlvbj80OlwiY2VudGVyXCI9PT10LmxhYmVsLnBvc2l0aW9uP3MuZ2xvYmFscy5ncmlkSGVpZ2h0LzIrKFwidmVydGljYWxcIj09PXQubGFiZWwub3JpZW50YXRpb24/ZC53aWR0aC8yOjApOnMuZ2xvYmFscy5ncmlkSGVpZ2h0LHU9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmRyYXdUZXh0KHt4OnIrdC5sYWJlbC5vZmZzZXRYLHk6Zyt0LmxhYmVsLm9mZnNldFktKFwidmVydGljYWxcIj09PXQubGFiZWwub3JpZW50YXRpb24/XCJ0b3BcIj09PXQubGFiZWwucG9zaXRpb24/ZC53aWR0aC8yLTEyOi1kLndpZHRoLzI6MCksdGV4dDpvLHRleHRBbmNob3I6dC5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOnQubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb24tbGFiZWwgXCIuY29uY2F0KHQubGFiZWwuc3R5bGUuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdCh0LmlkP3QuaWQ6XCJcIil9KTt1LmF0dHIoe3JlbDppfSksZS5hcHBlbmRDaGlsZCh1Lm5vZGUpLHRoaXMuYW5ub0N0eC5oZWxwZXJzLnNldE9yaWVudGF0aW9ucyh0LGkpfX19LHtrZXk6XCJkcmF3WEF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMueGF4aXMubWFwKChmdW5jdGlvbihlLGEpe3QuYWRkWGF4aXNBbm5vdGF0aW9uKGUsaS5ub2RlLGEpfSkpLGl9fV0pLHR9KCksQT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5hbm5vQ3R4PWUsdGhpcy5oZWxwZXJzPW5ldyB3KHRoaXMuYW5ub0N0eCl9cmV0dXJuIHIodCxbe2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYSxzPXRoaXMudyxyPXQuc3Ryb2tlRGFzaEFycmF5LG89dGhpcy5oZWxwZXJzLmdldFkxWTIoXCJ5MVwiLHQpLG49dC5sYWJlbC50ZXh0O2lmKG51bGw9PT10LnkyfHx2b2lkIDA9PT10LnkyKXt2YXIgbD10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd0xpbmUoMCt0Lm9mZnNldFgsbyt0Lm9mZnNldFksdGhpcy5fZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGgodCksbyt0Lm9mZnNldFksdC5ib3JkZXJDb2xvcixyLHQuYm9yZGVyV2lkdGgpO2UuYXBwZW5kQ2hpbGQobC5ub2RlKSx0LmlkJiZsLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX1lbHNle2lmKChhPXRoaXMuaGVscGVycy5nZXRZMVkyKFwieTJcIix0KSk+byl7dmFyIGg9bztvPWEsYT1ofXZhciBjPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3UmVjdCgwK3Qub2Zmc2V0WCxhK3Qub2Zmc2V0WSx0aGlzLl9nZXRZQXhpc0Fubm90YXRpb25XaWR0aCh0KSxvLWEsMCx0LmZpbGxDb2xvcix0Lm9wYWNpdHksMSx0LmJvcmRlckNvbG9yLHIpO2Mubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hbm5vdGF0aW9uLXJlY3RcIiksYy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChzLmdsb2JhbHMuY3VpZCxcIilcIikpLGUuYXBwZW5kQ2hpbGQoYy5ub2RlKSx0LmlkJiZjLm5vZGUuY2xhc3NMaXN0LmFkZCh0LmlkKX12YXIgZD1cInJpZ2h0XCI9PT10LmxhYmVsLnBvc2l0aW9uP3MuZ2xvYmFscy5ncmlkV2lkdGg6XCJjZW50ZXJcIj09PXQubGFiZWwucG9zaXRpb24/cy5nbG9iYWxzLmdyaWRXaWR0aC8yOjAsZz10aGlzLmFubm9DdHguZ3JhcGhpY3MuZHJhd1RleHQoe3g6ZCt0LmxhYmVsLm9mZnNldFgseToobnVsbCE9YT9hOm8pK3QubGFiZWwub2Zmc2V0WS0zLHRleHQ6bix0ZXh0QW5jaG9yOnQubGFiZWwudGV4dEFuY2hvcixmb250U2l6ZTp0LmxhYmVsLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5sYWJlbC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6dC5sYWJlbC5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjp0LmxhYmVsLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy1hbm5vdGF0aW9uLWxhYmVsIFwiLmNvbmNhdCh0LmxhYmVsLnN0eWxlLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSk7Zy5hdHRyKHtyZWw6aX0pLGUuYXBwZW5kQ2hpbGQoZy5ub2RlKX19LHtrZXk6XCJfZ2V0WUF4aXNBbm5vdGF0aW9uV2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7ZS5nbG9iYWxzLmdyaWRXaWR0aDtyZXR1cm4odC53aWR0aC5pbmRleE9mKFwiJVwiKT4tMT9lLmdsb2JhbHMuZ3JpZFdpZHRoKnBhcnNlSW50KHQud2lkdGgsMTApLzEwMDpwYXJzZUludCh0LndpZHRoLDEwKSkrdC5vZmZzZXRYfX0se2tleTpcImRyYXdZQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbnNcIn0pO3JldHVybiBlLmNvbmZpZy5hbm5vdGF0aW9ucy55YXhpcy5tYXAoKGZ1bmN0aW9uKGUsYSl7dC5hZGRZYXhpc0Fubm90YXRpb24oZSxpLm5vZGUsYSl9KSksaX19XSksdH0oKSxTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmFubm9DdHg9ZSx0aGlzLmhlbHBlcnM9bmV3IHcodGhpcy5hbm5vQ3R4KX1yZXR1cm4gcih0LFt7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMudzt2YXIgYT10aGlzLmhlbHBlcnMuZ2V0WDFYMihcIngxXCIsdCkscz10aGlzLmhlbHBlcnMuZ2V0WTFZMihcInkxXCIsdCk7aWYoeC5pc051bWJlcihhKSl7dmFyIHI9e3BTaXplOnQubWFya2VyLnNpemUscG9pbnRTdHJva2VXaWR0aDp0Lm1hcmtlci5zdHJva2VXaWR0aCxwb2ludEZpbGxDb2xvcjp0Lm1hcmtlci5maWxsQ29sb3IscG9pbnRTdHJva2VDb2xvcjp0Lm1hcmtlci5zdHJva2VDb2xvcixzaGFwZTp0Lm1hcmtlci5zaGFwZSxwUmFkaXVzOnQubWFya2VyLnJhZGl1cyxjbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbi1tYXJrZXIgXCIuY29uY2F0KHQubWFya2VyLmNzc0NsYXNzLFwiIFwiKS5jb25jYXQodC5pZD90LmlkOlwiXCIpfSxvPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3TWFya2VyKGErdC5tYXJrZXIub2Zmc2V0WCxzK3QubWFya2VyLm9mZnNldFkscik7ZS5hcHBlbmRDaGlsZChvLm5vZGUpO3ZhciBuPXQubGFiZWwudGV4dD90LmxhYmVsLnRleHQ6XCJcIixsPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5kcmF3VGV4dCh7eDphK3QubGFiZWwub2Zmc2V0WCx5OnMrdC5sYWJlbC5vZmZzZXRZLXQubWFya2VyLnNpemUtcGFyc2VGbG9hdCh0LmxhYmVsLnN0eWxlLmZvbnRTaXplKS8xLjYsdGV4dDpuLHRleHRBbmNob3I6dC5sYWJlbC50ZXh0QW5jaG9yLGZvbnRTaXplOnQubGFiZWwuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTp0LmxhYmVsLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDp0LmxhYmVsLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQubGFiZWwuc3R5bGUuY29sb3IsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb24tbGFiZWwgXCIuY29uY2F0KHQubGFiZWwuc3R5bGUuY3NzQ2xhc3MsXCIgXCIpLmNvbmNhdCh0LmlkP3QuaWQ6XCJcIil9KTtpZihsLmF0dHIoe3JlbDppfSksZS5hcHBlbmRDaGlsZChsLm5vZGUpLHQuY3VzdG9tU1ZHLlNWRyl7dmFyIGg9dGhpcy5hbm5vQ3R4LmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnMtY3VzdG9tLXN2ZyBcIit0LmN1c3RvbVNWRy5jc3NDbGFzc30pO2guYXR0cih7dHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChhK3QuY3VzdG9tU1ZHLm9mZnNldFgsXCIsIFwiKS5jb25jYXQocyt0LmN1c3RvbVNWRy5vZmZzZXRZLFwiKVwiKX0pLGgubm9kZS5pbm5lckhUTUw9dC5jdXN0b21TVkcuU1ZHLGUuYXBwZW5kQ2hpbGQoaC5ub2RlKX1pZih0LmltYWdlLnBhdGgpe3ZhciBjPXQuaW1hZ2Uud2lkdGg/dC5pbWFnZS53aWR0aDoyMCxkPXQuaW1hZ2UuaGVpZ2h0P3QuaW1hZ2UuaGVpZ2h0OjIwO289dGhpcy5hbm5vQ3R4LmFkZEltYWdlKHt4OmErdC5pbWFnZS5vZmZzZXRYLWMvMix5OnMrdC5pbWFnZS5vZmZzZXRZLWQvMix3aWR0aDpjLGhlaWdodDpkLHBhdGg6dC5pbWFnZS5wYXRoLGFwcGVuZFRvOlwiLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnNcIn0pfXQubW91c2VFbnRlciYmby5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsdC5tb3VzZUVudGVyLmJpbmQodGhpcyx0KSksdC5tb3VzZUxlYXZlJiZvLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIix0Lm1vdXNlTGVhdmUuYmluZCh0aGlzLHQpKSx0LmNsaWNrJiZvLm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdC5jbGljay5iaW5kKHRoaXMsdCkpfX19LHtrZXk6XCJkcmF3UG9pbnRBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPXRoaXMuYW5ub0N0eC5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXBvaW50LWFubm90YXRpb25zXCJ9KTtyZXR1cm4gZS5jb25maWcuYW5ub3RhdGlvbnMucG9pbnRzLm1hcCgoZnVuY3Rpb24oZSxhKXt0LmFkZFBvaW50QW5ub3RhdGlvbihlLGkubm9kZSxhKX0pKSxpfX1dKSx0fSgpO3ZhciBDPXtuYW1lOlwiZW5cIixvcHRpb25zOnttb250aHM6W1wiSmFudWFyeVwiLFwiRmVicnVhcnlcIixcIk1hcmNoXCIsXCJBcHJpbFwiLFwiTWF5XCIsXCJKdW5lXCIsXCJKdWx5XCIsXCJBdWd1c3RcIixcIlNlcHRlbWJlclwiLFwiT2N0b2JlclwiLFwiTm92ZW1iZXJcIixcIkRlY2VtYmVyXCJdLHNob3J0TW9udGhzOltcIkphblwiLFwiRmViXCIsXCJNYXJcIixcIkFwclwiLFwiTWF5XCIsXCJKdW5cIixcIkp1bFwiLFwiQXVnXCIsXCJTZXBcIixcIk9jdFwiLFwiTm92XCIsXCJEZWNcIl0sZGF5czpbXCJTdW5kYXlcIixcIk1vbmRheVwiLFwiVHVlc2RheVwiLFwiV2VkbmVzZGF5XCIsXCJUaHVyc2RheVwiLFwiRnJpZGF5XCIsXCJTYXR1cmRheVwiXSxzaG9ydERheXM6W1wiU3VuXCIsXCJNb25cIixcIlR1ZVwiLFwiV2VkXCIsXCJUaHVcIixcIkZyaVwiLFwiU2F0XCJdLHRvb2xiYXI6e2V4cG9ydFRvU1ZHOlwiRG93bmxvYWQgU1ZHXCIsZXhwb3J0VG9QTkc6XCJEb3dubG9hZCBQTkdcIixleHBvcnRUb0NTVjpcIkRvd25sb2FkIENTVlwiLG1lbnU6XCJNZW51XCIsc2VsZWN0aW9uOlwiU2VsZWN0aW9uXCIsc2VsZWN0aW9uWm9vbTpcIlNlbGVjdGlvbiBab29tXCIsem9vbUluOlwiWm9vbSBJblwiLHpvb21PdXQ6XCJab29tIE91dFwiLHBhbjpcIlBhbm5pbmdcIixyZXNldDpcIlJlc2V0IFpvb21cIn19fSxMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2EodGhpcyx0KSx0aGlzLnlBeGlzPXtzaG93OiEwLHNob3dBbHdheXM6ITEsc2hvd0Zvck51bGxTZXJpZXM6ITAsc2VyaWVzTmFtZTp2b2lkIDAsb3Bwb3NpdGU6ITEscmV2ZXJzZWQ6ITEsbG9nYXJpdGhtaWM6ITEsbG9nQmFzZToxMCx0aWNrQW1vdW50OnZvaWQgMCxmb3JjZU5pY2VTY2FsZTohMSxtYXg6dm9pZCAwLG1pbjp2b2lkIDAsZmxvYXRpbmc6ITEsZGVjaW1hbHNJbkZsb2F0OnZvaWQgMCxsYWJlbHM6e3Nob3c6ITAsbWluV2lkdGg6MCxtYXhXaWR0aDoxNjAsb2Zmc2V0WDowLG9mZnNldFk6MCxhbGlnbjp2b2lkIDAscm90YXRlOjAscGFkZGluZzoyMCxzdHlsZTp7Y29sb3JzOltdLGZvbnRTaXplOlwiMTFweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNzc0NsYXNzOlwiXCJ9LGZvcm1hdHRlcjp2b2lkIDB9LGF4aXNCb3JkZXI6e3Nob3c6ITEsY29sb3I6XCIjZTBlMGUwXCIsd2lkdGg6MSxvZmZzZXRYOjAsb2Zmc2V0WTowfSxheGlzVGlja3M6e3Nob3c6ITEsY29sb3I6XCIjZTBlMGUwXCIsd2lkdGg6NixvZmZzZXRYOjAsb2Zmc2V0WTowfSx0aXRsZTp7dGV4dDp2b2lkIDAscm90YXRlOi05MCxvZmZzZXRZOjAsb2Zmc2V0WDowLHN0eWxlOntjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMXB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LHRvb2x0aXA6e2VuYWJsZWQ6ITEsb2Zmc2V0WDowfSxjcm9zc2hhaXJzOntzaG93OiEwLHBvc2l0aW9uOlwiZnJvbnRcIixzdHJva2U6e2NvbG9yOlwiI2I2YjZiNlwiLHdpZHRoOjEsZGFzaEFycmF5OjB9fX0sdGhpcy5wb2ludEFubm90YXRpb249e2lkOnZvaWQgMCx4OjAseTpudWxsLHlBeGlzSW5kZXg6MCxzZXJpZXNJbmRleDowLG1vdXNlRW50ZXI6dm9pZCAwLG1vdXNlTGVhdmU6dm9pZCAwLGNsaWNrOnZvaWQgMCxtYXJrZXI6e3NpemU6NCxmaWxsQ29sb3I6XCIjZmZmXCIsc3Ryb2tlV2lkdGg6MixzdHJva2VDb2xvcjpcIiMzMzNcIixzaGFwZTpcImNpcmNsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAscmFkaXVzOjIsY3NzQ2xhc3M6XCJcIn0sbGFiZWw6e2JvcmRlckNvbG9yOlwiI2MyYzJjMlwiLGJvcmRlcldpZHRoOjEsYm9yZGVyUmFkaXVzOjIsdGV4dDp2b2lkIDAsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLG9mZnNldFg6MCxvZmZzZXRZOjAsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19LGN1c3RvbVNWRzp7U1ZHOnZvaWQgMCxjc3NDbGFzczp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MH0saW1hZ2U6e3BhdGg6dm9pZCAwLHdpZHRoOjIwLGhlaWdodDoyMCxvZmZzZXRYOjAsb2Zmc2V0WTowfX0sdGhpcy55QXhpc0Fubm90YXRpb249e2lkOnZvaWQgMCx5OjAseTI6bnVsbCxzdHJva2VEYXNoQXJyYXk6MSxmaWxsQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxvcGFjaXR5Oi4zLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6XCIxMDAlXCIseUF4aXNJbmRleDowLGxhYmVsOntib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLGJvcmRlclJhZGl1czoyLHRleHQ6dm9pZCAwLHRleHRBbmNob3I6XCJlbmRcIixwb3NpdGlvbjpcInJpZ2h0XCIsb2Zmc2V0WDowLG9mZnNldFk6LTMsbW91c2VFbnRlcjp2b2lkIDAsbW91c2VMZWF2ZTp2b2lkIDAsY2xpY2s6dm9pZCAwLHN0eWxlOntiYWNrZ3JvdW5kOlwiI2ZmZlwiLGNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjExcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjc3NDbGFzczpcIlwiLHBhZGRpbmc6e2xlZnQ6NSxyaWdodDo1LHRvcDoyLGJvdHRvbToyfX19fSx0aGlzLnhBeGlzQW5ub3RhdGlvbj17aWQ6dm9pZCAwLHg6MCx4MjpudWxsLHN0cm9rZURhc2hBcnJheToxLGZpbGxDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJXaWR0aDoxLG9wYWNpdHk6LjMsb2Zmc2V0WDowLG9mZnNldFk6MCxsYWJlbDp7Ym9yZGVyQ29sb3I6XCIjYzJjMmMyXCIsYm9yZGVyV2lkdGg6MSxib3JkZXJSYWRpdXM6Mix0ZXh0OnZvaWQgMCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsb3JpZW50YXRpb246XCJ2ZXJ0aWNhbFwiLHBvc2l0aW9uOlwidG9wXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxtb3VzZUVudGVyOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCxjbGljazp2b2lkIDAsc3R5bGU6e2JhY2tncm91bmQ6XCIjZmZmXCIsY29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTFweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NDAwLGNzc0NsYXNzOlwiXCIscGFkZGluZzp7bGVmdDo1LHJpZ2h0OjUsdG9wOjIsYm90dG9tOjJ9fX19LHRoaXMudGV4dD17eDowLHk6MCx0ZXh0OlwiXCIsdGV4dEFuY2hvcjpcInN0YXJ0XCIsZm9yZUNvbG9yOnZvaWQgMCxmb250U2l6ZTpcIjEzcHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxhcHBlbmRUbzpcIi5hcGV4Y2hhcnRzLWFubm90YXRpb25zXCIsYmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIixib3JkZXJDb2xvcjpcIiNjMmMyYzJcIixib3JkZXJSYWRpdXM6MCxib3JkZXJXaWR0aDowLHBhZGRpbmdMZWZ0OjQscGFkZGluZ1JpZ2h0OjQscGFkZGluZ1RvcDoyLHBhZGRpbmdCb3R0b206Mn19cmV0dXJuIHIodCxbe2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybnthbm5vdGF0aW9uczp7eWF4aXM6W3RoaXMueUF4aXNBbm5vdGF0aW9uXSx4YXhpczpbdGhpcy54QXhpc0Fubm90YXRpb25dLHBvaW50czpbdGhpcy5wb2ludEFubm90YXRpb25dLHRleHRzOltdLGltYWdlczpbXSxzaGFwZXM6W119LGNoYXJ0OnthbmltYXRpb25zOntlbmFibGVkOiEwLGVhc2luZzpcImVhc2Vpbm91dFwiLHNwZWVkOjgwMCxhbmltYXRlR3JhZHVhbGx5OntkZWxheToxNTAsZW5hYmxlZDohMH0sZHluYW1pY0FuaW1hdGlvbjp7ZW5hYmxlZDohMCxzcGVlZDozNTB9fSxiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixsb2NhbGVzOltDXSxkZWZhdWx0TG9jYWxlOlwiZW5cIixkcm9wU2hhZG93OntlbmFibGVkOiExLGVuYWJsZWRPblNlcmllczp2b2lkIDAsdG9wOjIsbGVmdDoyLGJsdXI6NCxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi4zNX0sZXZlbnRzOnthbmltYXRpb25FbmQ6dm9pZCAwLGJlZm9yZU1vdW50OnZvaWQgMCxtb3VudGVkOnZvaWQgMCx1cGRhdGVkOnZvaWQgMCxjbGljazp2b2lkIDAsbW91c2VNb3ZlOnZvaWQgMCxtb3VzZUxlYXZlOnZvaWQgMCx4QXhpc0xhYmVsQ2xpY2s6dm9pZCAwLGxlZ2VuZENsaWNrOnZvaWQgMCxtYXJrZXJDbGljazp2b2lkIDAsc2VsZWN0aW9uOnZvaWQgMCxkYXRhUG9pbnRTZWxlY3Rpb246dm9pZCAwLGRhdGFQb2ludE1vdXNlRW50ZXI6dm9pZCAwLGRhdGFQb2ludE1vdXNlTGVhdmU6dm9pZCAwLGJlZm9yZVpvb206dm9pZCAwLGJlZm9yZVJlc2V0Wm9vbTp2b2lkIDAsem9vbWVkOnZvaWQgMCxzY3JvbGxlZDp2b2lkIDAsYnJ1c2hTY3JvbGxlZDp2b2lkIDB9LGZvcmVDb2xvcjpcIiMzNzNkM2ZcIixmb250RmFtaWx5OlwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLGhlaWdodDpcImF1dG9cIixwYXJlbnRIZWlnaHRPZmZzZXQ6MTUscmVkcmF3T25QYXJlbnRSZXNpemU6ITAscmVkcmF3T25XaW5kb3dSZXNpemU6ITAsaWQ6dm9pZCAwLGdyb3VwOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHNlbGVjdGlvbjp7ZW5hYmxlZDohMSx0eXBlOlwieFwiLGZpbGw6e2NvbG9yOlwiIzI0MjkyZVwiLG9wYWNpdHk6LjF9LHN0cm9rZTp7d2lkdGg6MSxjb2xvcjpcIiMyNDI5MmVcIixvcGFjaXR5Oi40LGRhc2hBcnJheTozfSx4YXhpczp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfSx5YXhpczp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfX0sc3BhcmtsaW5lOntlbmFibGVkOiExfSxicnVzaDp7ZW5hYmxlZDohMSxhdXRvU2NhbGVZYXhpczohMCx0YXJnZXQ6dm9pZCAwLHRhcmdldHM6dm9pZCAwfSxzdGFja2VkOiExLHN0YWNrVHlwZTpcIm5vcm1hbFwiLHRvb2xiYXI6e3Nob3c6ITAsb2Zmc2V0WDowLG9mZnNldFk6MCx0b29sczp7ZG93bmxvYWQ6ITAsc2VsZWN0aW9uOiEwLHpvb206ITAsem9vbWluOiEwLHpvb21vdXQ6ITAscGFuOiEwLHJlc2V0OiEwLGN1c3RvbUljb25zOltdfSxleHBvcnQ6e2Nzdjp7ZmlsZW5hbWU6dm9pZCAwLGNvbHVtbkRlbGltaXRlcjpcIixcIixoZWFkZXJDYXRlZ29yeTpcImNhdGVnb3J5XCIsaGVhZGVyVmFsdWU6XCJ2YWx1ZVwiLGRhdGVGb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKHQpLnRvRGF0ZVN0cmluZygpfX0scG5nOntmaWxlbmFtZTp2b2lkIDB9LHN2Zzp7ZmlsZW5hbWU6dm9pZCAwfX0sYXV0b1NlbGVjdGVkOlwiem9vbVwifSx0eXBlOlwibGluZVwiLHdpZHRoOlwiMTAwJVwiLHpvb206e2VuYWJsZWQ6ITAsdHlwZTpcInhcIixhdXRvU2NhbGVZYXhpczohMSx6b29tZWRBcmVhOntmaWxsOntjb2xvcjpcIiM5MENBRjlcIixvcGFjaXR5Oi40fSxzdHJva2U6e2NvbG9yOlwiIzBENDdBMVwiLG9wYWNpdHk6LjQsd2lkdGg6MX19fX0scGxvdE9wdGlvbnM6e2FyZWE6e2ZpbGxUbzpcIm9yaWdpblwifSxiYXI6e2hvcml6b250YWw6ITEsY29sdW1uV2lkdGg6XCI3MCVcIixiYXJIZWlnaHQ6XCI3MCVcIixkaXN0cmlidXRlZDohMSxib3JkZXJSYWRpdXM6MCxib3JkZXJSYWRpdXNBcHBsaWNhdGlvbjpcImFyb3VuZFwiLGJvcmRlclJhZGl1c1doZW5TdGFja2VkOlwibGFzdFwiLHJhbmdlQmFyT3ZlcmxhcDohMCxyYW5nZUJhckdyb3VwUm93czohMSxoaWRlWmVyb0JhcnNXaGVuR3JvdXBlZDohMSxpc0R1bWJiZWxsOiExLGR1bWJiZWxsQ29sb3JzOnZvaWQgMCxpc0Z1bm5lbDohMSxpc0Z1bm5lbDNkOiEwLGNvbG9yczp7cmFuZ2VzOltdLGJhY2tncm91bmRCYXJDb2xvcnM6W10sYmFja2dyb3VuZEJhck9wYWNpdHk6MSxiYWNrZ3JvdW5kQmFyUmFkaXVzOjB9LGRhdGFMYWJlbHM6e3Bvc2l0aW9uOlwidG9wXCIsbWF4SXRlbXM6MTAwLGhpZGVPdmVyZmxvd2luZ0xhYmVsczohMCxvcmllbnRhdGlvbjpcImhvcml6b250YWxcIix0b3RhbDp7ZW5hYmxlZDohMSxmb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6MCxvZmZzZXRZOjAsc3R5bGU6e2NvbG9yOlwiIzM3M2QzZlwiLGZvbnRTaXplOlwiMTJweFwiLGZvbnRGYW1pbHk6dm9pZCAwLGZvbnRXZWlnaHQ6NjAwfX19fSxidWJibGU6e3pTY2FsaW5nOiEwLG1pbkJ1YmJsZVJhZGl1czp2b2lkIDAsbWF4QnViYmxlUmFkaXVzOnZvaWQgMH0sY2FuZGxlc3RpY2s6e2NvbG9yczp7dXB3YXJkOlwiIzAwQjc0NlwiLGRvd253YXJkOlwiI0VGNDAzQ1wifSx3aWNrOnt1c2VGaWxsQ29sb3I6ITB9fSxib3hQbG90Ontjb2xvcnM6e3VwcGVyOlwiIzAwRTM5NlwiLGxvd2VyOlwiIzAwOEZGQlwifX0saGVhdG1hcDp7cmFkaXVzOjIsZW5hYmxlU2hhZGVzOiEwLHNoYWRlSW50ZW5zaXR5Oi41LHJldmVyc2VOZWdhdGl2ZVNoYWRlOiExLGRpc3RyaWJ1dGVkOiExLHVzZUZpbGxDb2xvckFzU3Ryb2tlOiExLGNvbG9yU2NhbGU6e2ludmVyc2U6ITEscmFuZ2VzOltdLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH19LHRyZWVtYXA6e2VuYWJsZVNoYWRlczohMCxzaGFkZUludGVuc2l0eTouNSxkaXN0cmlidXRlZDohMSxyZXZlcnNlTmVnYXRpdmVTaGFkZTohMSx1c2VGaWxsQ29sb3JBc1N0cm9rZTohMSxkYXRhTGFiZWxzOntmb3JtYXQ6XCJzY2FsZVwifSxjb2xvclNjYWxlOntpbnZlcnNlOiExLHJhbmdlczpbXSxtaW46dm9pZCAwLG1heDp2b2lkIDB9fSxyYWRpYWxCYXI6e2ludmVyc2VPcmRlcjohMSxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLG9mZnNldFg6MCxvZmZzZXRZOjAsaG9sbG93OnttYXJnaW46NSxzaXplOlwiNTAlXCIsYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsaW1hZ2U6dm9pZCAwLGltYWdlV2lkdGg6MTUwLGltYWdlSGVpZ2h0OjE1MCxpbWFnZU9mZnNldFg6MCxpbWFnZU9mZnNldFk6MCxpbWFnZUNsaXBwZWQ6ITAscG9zaXRpb246XCJmcm9udFwiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjAsbGVmdDowLGJsdXI6Myxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi41fX0sdHJhY2s6e3Nob3c6ITAsc3RhcnRBbmdsZTp2b2lkIDAsZW5kQW5nbGU6dm9pZCAwLGJhY2tncm91bmQ6XCIjZjJmMmYyXCIsc3Ryb2tlV2lkdGg6XCI5NyVcIixvcGFjaXR5OjEsbWFyZ2luOjUsZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSx0b3A6MCxsZWZ0OjAsYmx1cjozLGNvbG9yOlwiIzAwMFwiLG9wYWNpdHk6LjV9fSxkYXRhTGFiZWxzOntzaG93OiEwLG5hbWU6e3Nob3c6ITAsZm9udFNpemU6XCIxNnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo2MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MCxmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSx2YWx1ZTp7c2hvdzohMCxmb250U2l6ZTpcIjE0cHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjQwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WToxNixmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQrXCIlXCJ9fSx0b3RhbDp7c2hvdzohMSxsYWJlbDpcIlRvdGFsXCIsZm9udFNpemU6XCIxNnB4XCIsZm9udFdlaWdodDo2MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApL3QuZ2xvYmFscy5zZXJpZXMubGVuZ3RoK1wiJVwifX19fSxwaWU6e2N1c3RvbVNjYWxlOjEsb2Zmc2V0WDowLG9mZnNldFk6MCxzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MzYwLGV4cGFuZE9uQ2xpY2s6ITAsZGF0YUxhYmVsczp7b2Zmc2V0OjAsbWluQW5nbGVUb1Nob3dMYWJlbDoxMH0sZG9udXQ6e3NpemU6XCI2NSVcIixiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixsYWJlbHM6e3Nob3c6ITEsbmFtZTp7c2hvdzohMCxmb250U2l6ZTpcIjE2cHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcjp2b2lkIDAsb2Zmc2V0WTotMTAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sdmFsdWU6e3Nob3c6ITAsZm9udFNpemU6XCIyMHB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsY29sb3I6dm9pZCAwLG9mZnNldFk6MTAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sdG90YWw6e3Nob3c6ITEsc2hvd0Fsd2F5czohMSxsYWJlbDpcIlRvdGFsXCIsZm9udFNpemU6XCIxNnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY29sb3I6dm9pZCAwLGZvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iYWxzLnNlcmllc1RvdGFscy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApfX19fX0scG9sYXJBcmVhOntyaW5nczp7c3Ryb2tlV2lkdGg6MSxzdHJva2VDb2xvcjpcIiNlOGU4ZThcIn0sc3Bva2VzOntzdHJva2VXaWR0aDoxLGNvbm5lY3RvckNvbG9yczpcIiNlOGU4ZThcIn19LHJhZGFyOntzaXplOnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHBvbHlnb25zOntzdHJva2VXaWR0aDoxLHN0cm9rZUNvbG9yczpcIiNlOGU4ZThcIixjb25uZWN0b3JDb2xvcnM6XCIjZThlOGU4XCIsZmlsbDp7Y29sb3JzOnZvaWQgMH19fX0sY29sb3JzOnZvaWQgMCxkYXRhTGFiZWxzOntlbmFibGVkOiEwLGVuYWJsZWRPblNlcmllczp2b2lkIDAsZm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dD90OlwiXCJ9LHRleHRBbmNob3I6XCJtaWRkbGVcIixkaXN0cmlidXRlZDohMSxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMCxmb250V2VpZ2h0OjYwMCxjb2xvcnM6dm9pZCAwfSxiYWNrZ3JvdW5kOntlbmFibGVkOiEwLGZvcmVDb2xvcjpcIiNmZmZcIixib3JkZXJSYWRpdXM6MixwYWRkaW5nOjQsb3BhY2l0eTouOSxib3JkZXJXaWR0aDoxLGJvcmRlckNvbG9yOlwiI2ZmZlwiLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjEsbGVmdDoxLGJsdXI6MSxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi40NX19LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITEsdG9wOjEsbGVmdDoxLGJsdXI6MSxjb2xvcjpcIiMwMDBcIixvcGFjaXR5Oi40NX19LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yczp2b2lkIDAsb3BhY2l0eTouODUsZ3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHR5cGU6XCJob3Jpem9udGFsXCIsc2hhZGVJbnRlbnNpdHk6LjUsZ3JhZGllbnRUb0NvbG9yczp2b2lkIDAsaW52ZXJzZUNvbG9yczohMCxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOlswLDUwLDEwMF0sY29sb3JTdG9wczpbXX0saW1hZ2U6e3NyYzpbXSx3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMH0scGF0dGVybjp7c3R5bGU6XCJzcXVhcmVzXCIsd2lkdGg6NixoZWlnaHQ6NixzdHJva2VXaWR0aDoyfX0sZm9yZWNhc3REYXRhUG9pbnRzOntjb3VudDowLGZpbGxPcGFjaXR5Oi41LHN0cm9rZVdpZHRoOnZvaWQgMCxkYXNoQXJyYXk6NH0sZ3JpZDp7c2hvdzohMCxib3JkZXJDb2xvcjpcIiNlMGUwZTBcIixzdHJva2VEYXNoQXJyYXk6MCxwb3NpdGlvbjpcImJhY2tcIix4YXhpczp7bGluZXM6e3Nob3c6ITF9fSx5YXhpczp7bGluZXM6e3Nob3c6ITB9fSxyb3c6e2NvbG9yczp2b2lkIDAsb3BhY2l0eTouNX0sY29sdW1uOntjb2xvcnM6dm9pZCAwLG9wYWNpdHk6LjV9LHBhZGRpbmc6e3RvcDowLHJpZ2h0OjEwLGJvdHRvbTowLGxlZnQ6MTJ9fSxsYWJlbHM6W10sbGVnZW5kOntzaG93OiEwLHNob3dGb3JTaW5nbGVTZXJpZXM6ITEsc2hvd0Zvck51bGxTZXJpZXM6ITAsc2hvd0Zvclplcm9TZXJpZXM6ITAsZmxvYXRpbmc6ITEscG9zaXRpb246XCJib3R0b21cIixob3Jpem9udGFsQWxpZ246XCJjZW50ZXJcIixpbnZlcnNlT3JkZXI6ITEsZm9udFNpemU6XCIxMnB4XCIsZm9udEZhbWlseTp2b2lkIDAsZm9udFdlaWdodDo0MDAsd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDAsZm9ybWF0dGVyOnZvaWQgMCx0b29sdGlwSG92ZXJGb3JtYXR0ZXI6dm9pZCAwLG9mZnNldFg6LTIwLG9mZnNldFk6NCxjdXN0b21MZWdlbmRJdGVtczpbXSxsYWJlbHM6e2NvbG9yczp2b2lkIDAsdXNlU2VyaWVzQ29sb3JzOiExfSxtYXJrZXJzOnt3aWR0aDoxMixoZWlnaHQ6MTIsc3Ryb2tlV2lkdGg6MCxmaWxsQ29sb3JzOnZvaWQgMCxzdHJva2VDb2xvcjpcIiNmZmZcIixyYWRpdXM6MTIsY3VzdG9tSFRNTDp2b2lkIDAsb2Zmc2V0WDowLG9mZnNldFk6MCxvbkNsaWNrOnZvaWQgMH0saXRlbU1hcmdpbjp7aG9yaXpvbnRhbDo1LHZlcnRpY2FsOjJ9LG9uSXRlbUNsaWNrOnt0b2dnbGVEYXRhU2VyaWVzOiEwfSxvbkl0ZW1Ib3Zlcjp7aGlnaGxpZ2h0RGF0YVNlcmllczohMH19LG1hcmtlcnM6e2Rpc2NyZXRlOltdLHNpemU6MCxjb2xvcnM6dm9pZCAwLHN0cm9rZUNvbG9yczpcIiNmZmZcIixzdHJva2VXaWR0aDoyLHN0cm9rZU9wYWNpdHk6Ljksc3Ryb2tlRGFzaEFycmF5OjAsZmlsbE9wYWNpdHk6MSxzaGFwZTpcImNpcmNsZVwiLHdpZHRoOjgsaGVpZ2h0OjgscmFkaXVzOjIsb2Zmc2V0WDowLG9mZnNldFk6MCxvbkNsaWNrOnZvaWQgMCxvbkRibENsaWNrOnZvaWQgMCxzaG93TnVsbERhdGFQb2ludHM6ITAsaG92ZXI6e3NpemU6dm9pZCAwLHNpemVPZmZzZXQ6M319LG5vRGF0YTp7dGV4dDp2b2lkIDAsYWxpZ246XCJjZW50ZXJcIix2ZXJ0aWNhbEFsaWduOlwibWlkZGxlXCIsb2Zmc2V0WDowLG9mZnNldFk6MCxzdHlsZTp7Y29sb3I6dm9pZCAwLGZvbnRTaXplOlwiMTRweFwiLGZvbnRGYW1pbHk6dm9pZCAwfX0scmVzcG9uc2l2ZTpbXSxzZXJpZXM6dm9pZCAwLHN0YXRlczp7bm9ybWFsOntmaWx0ZXI6e3R5cGU6XCJub25lXCIsdmFsdWU6MH19LGhvdmVyOntmaWx0ZXI6e3R5cGU6XCJsaWdodGVuXCIsdmFsdWU6LjF9fSxhY3RpdmU6e2FsbG93TXVsdGlwbGVEYXRhUG9pbnRzU2VsZWN0aW9uOiExLGZpbHRlcjp7dHlwZTpcImRhcmtlblwiLHZhbHVlOi41fX19LHRpdGxlOnt0ZXh0OnZvaWQgMCxhbGlnbjpcImxlZnRcIixtYXJnaW46NSxvZmZzZXRYOjAsb2Zmc2V0WTowLGZsb2F0aW5nOiExLHN0eWxlOntmb250U2l6ZTpcIjE0cHhcIixmb250V2VpZ2h0OjkwMCxmb250RmFtaWx5OnZvaWQgMCxjb2xvcjp2b2lkIDB9fSxzdWJ0aXRsZTp7dGV4dDp2b2lkIDAsYWxpZ246XCJsZWZ0XCIsbWFyZ2luOjUsb2Zmc2V0WDowLG9mZnNldFk6MzAsZmxvYXRpbmc6ITEsc3R5bGU6e2ZvbnRTaXplOlwiMTJweFwiLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6dm9pZCAwLGNvbG9yOnZvaWQgMH19LHN0cm9rZTp7c2hvdzohMCxjdXJ2ZTpcInNtb290aFwiLGxpbmVDYXA6XCJidXR0XCIsd2lkdGg6Mixjb2xvcnM6dm9pZCAwLGRhc2hBcnJheTowLGZpbGw6e3R5cGU6XCJzb2xpZFwiLGNvbG9yczp2b2lkIDAsb3BhY2l0eTouODUsZ3JhZGllbnQ6e3NoYWRlOlwiZGFya1wiLHR5cGU6XCJob3Jpem9udGFsXCIsc2hhZGVJbnRlbnNpdHk6LjUsZ3JhZGllbnRUb0NvbG9yczp2b2lkIDAsaW52ZXJzZUNvbG9yczohMCxvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOlswLDUwLDEwMF0sY29sb3JTdG9wczpbXX19fSx0b29sdGlwOntlbmFibGVkOiEwLGVuYWJsZWRPblNlcmllczp2b2lkIDAsc2hhcmVkOiEwLGZvbGxvd0N1cnNvcjohMSxpbnRlcnNlY3Q6ITEsaW52ZXJzZU9yZGVyOiExLGN1c3RvbTp2b2lkIDAsZmlsbFNlcmllc0NvbG9yOiExLHRoZW1lOlwibGlnaHRcIixjc3NDbGFzczpcIlwiLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMH0sb25EYXRhc2V0SG92ZXI6e2hpZ2hsaWdodERhdGFTZXJpZXM6ITF9LHg6e3Nob3c6ITAsZm9ybWF0OlwiZGQgTU1NXCIsZm9ybWF0dGVyOnZvaWQgMH0seTp7Zm9ybWF0dGVyOnZvaWQgMCx0aXRsZTp7Zm9ybWF0dGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0P3QrXCI6IFwiOlwiXCJ9fX0sejp7Zm9ybWF0dGVyOnZvaWQgMCx0aXRsZTpcIlNpemU6IFwifSxtYXJrZXI6e3Nob3c6ITAsZmlsbENvbG9yczp2b2lkIDB9LGl0ZW1zOntkaXNwbGF5OlwiZmxleFwifSxmaXhlZDp7ZW5hYmxlZDohMSxwb3NpdGlvbjpcInRvcFJpZ2h0XCIsb2Zmc2V0WDowLG9mZnNldFk6MH19LHhheGlzOnt0eXBlOlwiY2F0ZWdvcnlcIixjYXRlZ29yaWVzOltdLGNvbnZlcnRlZENhdFRvTnVtZXJpYzohMSxvZmZzZXRYOjAsb2Zmc2V0WTowLG92ZXJ3cml0ZUNhdGVnb3JpZXM6dm9pZCAwLGxhYmVsczp7c2hvdzohMCxyb3RhdGU6LTQ1LHJvdGF0ZUFsd2F5czohMSxoaWRlT3ZlcmxhcHBpbmdMYWJlbHM6ITAsdHJpbTohMSxtaW5IZWlnaHQ6dm9pZCAwLG1heEhlaWdodDoxMjAsc2hvd0R1cGxpY2F0ZXM6ITAsc3R5bGU6e2NvbG9yczpbXSxmb250U2l6ZTpcIjEycHhcIixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OnZvaWQgMCxjc3NDbGFzczpcIlwifSxvZmZzZXRYOjAsb2Zmc2V0WTowLGZvcm1hdDp2b2lkIDAsZm9ybWF0dGVyOnZvaWQgMCxkYXRldGltZVVUQzohMCxkYXRldGltZUZvcm1hdHRlcjp7eWVhcjpcInl5eXlcIixtb250aDpcIk1NTSAneXlcIixkYXk6XCJkZCBNTU1cIixob3VyOlwiSEg6bW1cIixtaW51dGU6XCJISDptbTpzc1wiLHNlY29uZDpcIkhIOm1tOnNzXCJ9fSxncm91cDp7Z3JvdXBzOltdLHN0eWxlOntjb2xvcnM6W10sZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LGF4aXNCb3JkZXI6e3Nob3c6ITAsY29sb3I6XCIjZTBlMGUwXCIsd2lkdGg6XCIxMDAlXCIsaGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MH0sYXhpc1RpY2tzOntzaG93OiEwLGNvbG9yOlwiI2UwZTBlMFwiLGhlaWdodDo2LG9mZnNldFg6MCxvZmZzZXRZOjB9LHRpY2tBbW91bnQ6dm9pZCAwLHRpY2tQbGFjZW1lbnQ6XCJvblwiLG1pbjp2b2lkIDAsbWF4OnZvaWQgMCxyYW5nZTp2b2lkIDAsZmxvYXRpbmc6ITEsZGVjaW1hbHNJbkZsb2F0OnZvaWQgMCxwb3NpdGlvbjpcImJvdHRvbVwiLHRpdGxlOnt0ZXh0OnZvaWQgMCxvZmZzZXRYOjAsb2Zmc2V0WTowLHN0eWxlOntjb2xvcjp2b2lkIDAsZm9udFNpemU6XCIxMnB4XCIsZm9udFdlaWdodDo5MDAsZm9udEZhbWlseTp2b2lkIDAsY3NzQ2xhc3M6XCJcIn19LGNyb3NzaGFpcnM6e3Nob3c6ITAsd2lkdGg6MSxwb3NpdGlvbjpcImJhY2tcIixvcGFjaXR5Oi45LHN0cm9rZTp7Y29sb3I6XCIjYjZiNmI2XCIsd2lkdGg6MSxkYXNoQXJyYXk6M30sZmlsbDp7dHlwZTpcInNvbGlkXCIsY29sb3I6XCIjQjFCOUM0XCIsZ3JhZGllbnQ6e2NvbG9yRnJvbTpcIiNEOEUzRjBcIixjb2xvclRvOlwiI0JFRDFFNlwiLHN0b3BzOlswLDEwMF0sb3BhY2l0eUZyb206LjQsb3BhY2l0eVRvOi41fX0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMSxsZWZ0OjAsdG9wOjAsYmx1cjoxLG9wYWNpdHk6LjR9fSx0b29sdGlwOntlbmFibGVkOiEwLG9mZnNldFk6MCxmb3JtYXR0ZXI6dm9pZCAwLHN0eWxlOntmb250U2l6ZTpcIjEycHhcIixmb250RmFtaWx5OnZvaWQgMH19fSx5YXhpczp0aGlzLnlBeGlzLHRoZW1lOnttb2RlOlwibGlnaHRcIixwYWxldHRlOlwicGFsZXR0ZTFcIixtb25vY2hyb21lOntlbmFibGVkOiExLGNvbG9yOlwiIzAwOEZGQlwiLHNoYWRlVG86XCJsaWdodFwiLHNoYWRlSW50ZW5zaXR5Oi42NX19fX19XSksdH0oKSxQPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuZ3JhcGhpY3M9bmV3IG0odGhpcy5jdHgpLHRoaXMudy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHRoaXMuaW52ZXJ0QXhpcz0hMCksdGhpcy5oZWxwZXJzPW5ldyB3KHRoaXMpLHRoaXMueEF4aXNBbm5vdGF0aW9ucz1uZXcgayh0aGlzKSx0aGlzLnlBeGlzQW5ub3RhdGlvbnM9bmV3IEEodGhpcyksdGhpcy5wb2ludHNBbm5vdGF0aW9ucz1uZXcgUyh0aGlzKSx0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJnRoaXMudy5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQmJih0aGlzLmludmVyc2VkUmV2ZXJzZWRBeGlzPSEwKSx0aGlzLnhEaXZpc2lvbj10aGlzLncuZ2xvYmFscy5ncmlkV2lkdGgvdGhpcy53Lmdsb2JhbHMuZGF0YVBvaW50c31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd0F4ZXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2lmKHQuZ2xvYmFscy5heGlzQ2hhcnRzKXtmb3IodmFyIGU9dGhpcy55QXhpc0Fubm90YXRpb25zLmRyYXdZQXhpc0Fubm90YXRpb25zKCksaT10aGlzLnhBeGlzQW5ub3RhdGlvbnMuZHJhd1hBeGlzQW5ub3RhdGlvbnMoKSxhPXRoaXMucG9pbnRzQW5ub3RhdGlvbnMuZHJhd1BvaW50QW5ub3RhdGlvbnMoKSxzPXQuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCxyPVtlLGksYV0sbz1baS5ub2RlLGUubm9kZSxhLm5vZGVdLG49MDtuPDM7bisrKXQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHJbbl0pLCFzfHx0Lmdsb2JhbHMucmVzaXplZHx8dC5nbG9iYWxzLmRhdGFDaGFuZ2VkfHxcInNjYXR0ZXJcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJlwiYnViYmxlXCIhPT10LmNvbmZpZy5jaGFydC50eXBlJiZ0Lmdsb2JhbHMuZGF0YVBvaW50cz4xJiZvW25dLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpLHQuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6b1tuXSxpbmRleDowfSk7dGhpcy5oZWxwZXJzLmFubm90YXRpb25zQmFja2dyb3VuZCgpfX19LHtrZXk6XCJkcmF3SW1hZ2VBbm5vc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLncuY29uZmlnLmFubm90YXRpb25zLmltYWdlcy5tYXAoKGZ1bmN0aW9uKGUsaSl7dC5hZGRJbWFnZShlLGkpfSkpfX0se2tleTpcImRyYXdUZXh0QW5ub3NcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy53LmNvbmZpZy5hbm5vdGF0aW9ucy50ZXh0cy5tYXAoKGZ1bmN0aW9uKGUsaSl7dC5hZGRUZXh0KGUsaSl9KSl9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3RoaXMueEF4aXNBbm5vdGF0aW9ucy5hZGRYYXhpc0Fubm90YXRpb24odCxlLGkpfX0se2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLnlBeGlzQW5ub3RhdGlvbnMuYWRkWWF4aXNBbm5vdGF0aW9uKHQsZSxpKX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5wb2ludHNBbm5vdGF0aW9ucy5hZGRQb2ludEFubm90YXRpb24odCxlLGkpfX0se2tleTpcImFkZFRleHRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXQueCxhPXQueSxzPXQudGV4dCxyPXQudGV4dEFuY2hvcixvPXQuZm9yZUNvbG9yLG49dC5mb250U2l6ZSxsPXQuZm9udEZhbWlseSxoPXQuZm9udFdlaWdodCxjPXQuY3NzQ2xhc3MsZD10LmJhY2tncm91bmRDb2xvcixnPXQuYm9yZGVyV2lkdGgsdT10LnN0cm9rZURhc2hBcnJheSxwPXQuYm9yZGVyUmFkaXVzLGY9dC5ib3JkZXJDb2xvcix4PXQuYXBwZW5kVG8sYj12b2lkIDA9PT14P1wiLmFwZXhjaGFydHMtYW5ub3RhdGlvbnNcIjp4LHY9dC5wYWRkaW5nTGVmdCxtPXZvaWQgMD09PXY/NDp2LHk9dC5wYWRkaW5nUmlnaHQsdz12b2lkIDA9PT15PzQ6eSxrPXQucGFkZGluZ0JvdHRvbSxBPXZvaWQgMD09PWs/MjprLFM9dC5wYWRkaW5nVG9wLEM9dm9pZCAwPT09Uz8yOlMsTD10aGlzLncsUD10aGlzLmdyYXBoaWNzLmRyYXdUZXh0KHt4OmkseTphLHRleHQ6cyx0ZXh0QW5jaG9yOnJ8fFwic3RhcnRcIixmb250U2l6ZTpufHxcIjEycHhcIixmb250V2VpZ2h0Omh8fFwicmVndWxhclwiLGZvbnRGYW1pbHk6bHx8TC5jb25maWcuY2hhcnQuZm9udEZhbWlseSxmb3JlQ29sb3I6b3x8TC5jb25maWcuY2hhcnQuZm9yZUNvbG9yLGNzc0NsYXNzOmN9KSxJPUwuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoYik7SSYmSS5hcHBlbmRDaGlsZChQLm5vZGUpO3ZhciBNPVAuYmJveCgpO2lmKHMpe3ZhciBUPXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoTS54LW0sTS55LUMsTS53aWR0aCttK3csTS5oZWlnaHQrQStDLHAsZHx8XCJ0cmFuc3BhcmVudFwiLDEsZyxmLHUpO0kuaW5zZXJ0QmVmb3JlKFQubm9kZSxQLm5vZGUpfX19LHtrZXk6XCJhZGRJbWFnZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dC5wYXRoLHM9dC54LHI9dm9pZCAwPT09cz8wOnMsbz10Lnksbj12b2lkIDA9PT1vPzA6byxsPXQud2lkdGgsaD12b2lkIDA9PT1sPzIwOmwsYz10LmhlaWdodCxkPXZvaWQgMD09PWM/MjA6YyxnPXQuYXBwZW5kVG8sdT12b2lkIDA9PT1nP1wiLmFwZXhjaGFydHMtYW5ub3RhdGlvbnNcIjpnLHA9aS5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShhKTtwLnNpemUoaCxkKS5tb3ZlKHIsbik7dmFyIGY9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3Rvcih1KTtyZXR1cm4gZiYmZi5hcHBlbmRDaGlsZChwLm5vZGUpLHB9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6dCxwdXNoVG9NZW1vcnk6ZSxjb250ZXh0OmksdHlwZTpcInhheGlzXCIsY29udGV4dE1ldGhvZDppLmFkZFhheGlzQW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkWWF4aXNBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6dCxwdXNoVG9NZW1vcnk6ZSxjb250ZXh0OmksdHlwZTpcInlheGlzXCIsY29udGV4dE1ldGhvZDppLmFkZFlheGlzQW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkUG9pbnRBbm5vdGF0aW9uRXh0ZXJuYWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHZvaWQgMD09PXRoaXMuaW52ZXJ0QXhpcyYmKHRoaXMuaW52ZXJ0QXhpcz1pLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpLHRoaXMuYWRkQW5ub3RhdGlvbkV4dGVybmFsKHtwYXJhbXM6dCxwdXNoVG9NZW1vcnk6ZSxjb250ZXh0OmksdHlwZTpcInBvaW50XCIsY29udGV4dE1ldGhvZDppLmFkZFBvaW50QW5ub3RhdGlvbn0pLGl9fSx7a2V5OlwiYWRkQW5ub3RhdGlvbkV4dGVybmFsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5wYXJhbXMsaT10LnB1c2hUb01lbW9yeSxhPXQuY29udGV4dCxzPXQudHlwZSxyPXQuY29udGV4dE1ldGhvZCxvPWEsbj1vLncsbD1uLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHMsXCItYW5ub3RhdGlvbnNcIikpLGg9bC5jaGlsZE5vZGVzLmxlbmd0aCsxLGM9bmV3IEwsZD1PYmplY3QuYXNzaWduKHt9LFwieGF4aXNcIj09PXM/Yy54QXhpc0Fubm90YXRpb246XCJ5YXhpc1wiPT09cz9jLnlBeGlzQW5ub3RhdGlvbjpjLnBvaW50QW5ub3RhdGlvbiksZz14LmV4dGVuZChkLGUpO3N3aXRjaChzKXtjYXNlXCJ4YXhpc1wiOnRoaXMuYWRkWGF4aXNBbm5vdGF0aW9uKGcsbCxoKTticmVhaztjYXNlXCJ5YXhpc1wiOnRoaXMuYWRkWWF4aXNBbm5vdGF0aW9uKGcsbCxoKTticmVhaztjYXNlXCJwb2ludFwiOnRoaXMuYWRkUG9pbnRBbm5vdGF0aW9uKGcsbCxoKX12YXIgdT1uLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHMsXCItYW5ub3RhdGlvbnMgLmFwZXhjaGFydHMtXCIpLmNvbmNhdChzLFwiLWFubm90YXRpb24tbGFiZWxbcmVsPSdcIikuY29uY2F0KGgsXCInXVwiKSkscD10aGlzLmhlbHBlcnMuYWRkQmFja2dyb3VuZFRvQW5ubyh1LGcpO3JldHVybiBwJiZsLmluc2VydEJlZm9yZShwLm5vZGUsdSksaSYmbi5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnB1c2goe2NvbnRleHQ6byxpZDpnLmlkP2cuaWQ6eC5yYW5kb21JZCgpLG1ldGhvZDpyLGxhYmVsOlwiYWRkQW5ub3RhdGlvblwiLHBhcmFtczplfSksYX19LHtrZXk6XCJjbGVhckFubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC53LGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzLWFubm90YXRpb25zLCAuYXBleGNoYXJ0cy14YXhpcy1hbm5vdGF0aW9ucywgLmFwZXhjaGFydHMtcG9pbnQtYW5ub3RhdGlvbnNcIik7ZS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLm1hcCgoZnVuY3Rpb24odCxpKXtcImFkZFRleHRcIiE9PXQubGFiZWwmJlwiYWRkQW5ub3RhdGlvblwiIT09dC5sYWJlbHx8ZS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLnNwbGljZShpLDEpfSkpLGk9eC5saXN0VG9BcnJheShpKSxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGksKGZ1bmN0aW9uKHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9KSl9fSx7a2V5OlwicmVtb3ZlQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dC53LGE9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5cIi5jb25jYXQoZSkpO2EmJihpLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMubWFwKChmdW5jdGlvbih0LGEpe3QuaWQ9PT1lJiZpLmdsb2JhbHMubWVtb3J5Lm1ldGhvZHNUb0V4ZWMuc3BsaWNlKGEsMSl9KSksQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLChmdW5jdGlvbih0KXt0LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodCl9KSkpfX1dKSx0fSgpLEk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5tb250aHMzMT1bMSwzLDUsNyw4LDEwLDEyXSx0aGlzLm1vbnRoczMwPVsyLDQsNiw5LDExXSx0aGlzLmRheXNDbnRPZlllYXI9WzAsMzEsNTksOTAsMTIwLDE1MSwxODEsMjEyLDI0MywyNzMsMzA0LDMzNF19cmV0dXJuIHIodCxbe2tleTpcImlzVmFsaWREYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIWlzTmFOKHRoaXMucGFyc2VEYXRlKHQpKX19LHtrZXk6XCJnZXRUaW1lU3RhbXBcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gRGF0ZS5wYXJzZSh0KT90aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9uZXcgRGF0ZShuZXcgRGF0ZSh0KS50b0lTT1N0cmluZygpLnN1YnN0cigwLDI1KSkuZ2V0VGltZSgpOm5ldyBEYXRlKHQpLmdldFRpbWUoKTp0fX0se2tleTpcImdldERhdGVcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53LmNvbmZpZy54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/bmV3IERhdGUobmV3IERhdGUodCkudG9VVENTdHJpbmcoKSk6bmV3IERhdGUodCl9fSx7a2V5OlwicGFyc2VEYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9RGF0ZS5wYXJzZSh0KTtpZighaXNOYU4oZSkpcmV0dXJuIHRoaXMuZ2V0VGltZVN0YW1wKHQpO3ZhciBpPURhdGUucGFyc2UodC5yZXBsYWNlKC8tL2csXCIvXCIpLnJlcGxhY2UoL1thLXpdKy9naSxcIiBcIikpO3JldHVybiBpPXRoaXMuZ2V0VGltZVN0YW1wKGkpfX0se2tleTpcInBhcnNlRGF0ZVdpdGhUaW1lem9uZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBEYXRlLnBhcnNlKHQucmVwbGFjZSgvLS9nLFwiL1wiKS5yZXBsYWNlKC9bYS16XSsvZ2ksXCIgXCIpKX19LHtrZXk6XCJmb3JtYXREYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscy5sb2NhbGUsYT10aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQyxzPVtcIlxcMFwiXS5jb25jYXQodShpLm1vbnRocykpLHI9W1wiXFx4MDFcIl0uY29uY2F0KHUoaS5zaG9ydE1vbnRocykpLG89W1wiXFx4MDJcIl0uY29uY2F0KHUoaS5kYXlzKSksbj1bXCJcXHgwM1wiXS5jb25jYXQodShpLnNob3J0RGF5cykpO2Z1bmN0aW9uIGwodCxlKXt2YXIgaT10K1wiXCI7Zm9yKGU9ZXx8MjtpLmxlbmd0aDxlOylpPVwiMFwiK2k7cmV0dXJuIGl9dmFyIGg9YT90LmdldFVUQ0Z1bGxZZWFyKCk6dC5nZXRGdWxsWWVhcigpO2U9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXl5eXkrL2csXCIkMVwiK2gpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXl5L2csXCIkMVwiK2gudG9TdHJpbmcoKS5zdWJzdHIoMiwyKSkpLnJlcGxhY2UoLyhefFteXFxcXF0peS9nLFwiJDFcIitoKTt2YXIgYz0oYT90LmdldFVUQ01vbnRoKCk6dC5nZXRNb250aCgpKSsxO2U9KGU9KGU9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NTU0rL2csXCIkMVwiK3NbMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKU1NTS9nLFwiJDFcIityWzBdKSkucmVwbGFjZSgvKF58W15cXFxcXSlNTS9nLFwiJDFcIitsKGMpKSkucmVwbGFjZSgvKF58W15cXFxcXSlNL2csXCIkMVwiK2MpO3ZhciBkPWE/dC5nZXRVVENEYXRlKCk6dC5nZXREYXRlKCk7ZT0oZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZGRkZCsvZyxcIiQxXCIrb1swXSkpLnJlcGxhY2UoLyhefFteXFxcXF0pZGRkL2csXCIkMVwiK25bMF0pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWRkL2csXCIkMVwiK2woZCkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWQvZyxcIiQxXCIrZCk7dmFyIGc9YT90LmdldFVUQ0hvdXJzKCk6dC5nZXRIb3VycygpLHA9Zz4xMj9nLTEyOjA9PT1nPzEyOmc7ZT0oZT0oZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pSEgrL2csXCIkMVwiK2woZykpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKUgvZyxcIiQxXCIrZykpLnJlcGxhY2UoLyhefFteXFxcXF0paGgrL2csXCIkMVwiK2wocCkpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKWgvZyxcIiQxXCIrcCk7dmFyIGY9YT90LmdldFVUQ01pbnV0ZXMoKTp0LmdldE1pbnV0ZXMoKTtlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSltbSsvZyxcIiQxXCIrbChmKSkpLnJlcGxhY2UoLyhefFteXFxcXF0pbS9nLFwiJDFcIitmKTt2YXIgeD1hP3QuZ2V0VVRDU2Vjb25kcygpOnQuZ2V0U2Vjb25kcygpO2U9KGU9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKXNzKy9nLFwiJDFcIitsKHgpKSkucmVwbGFjZSgvKF58W15cXFxcXSlzL2csXCIkMVwiK3gpO3ZhciBiPWE/dC5nZXRVVENNaWxsaXNlY29uZHMoKTp0LmdldE1pbGxpc2Vjb25kcygpO2U9ZS5yZXBsYWNlKC8oXnxbXlxcXFxdKWZmZisvZyxcIiQxXCIrbChiLDMpKSxiPU1hdGgucm91bmQoYi8xMCksZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pZmYvZyxcIiQxXCIrbChiKSksYj1NYXRoLnJvdW5kKGIvMTApO3ZhciB2PWc8MTI/XCJBTVwiOlwiUE1cIjtlPShlPShlPWUucmVwbGFjZSgvKF58W15cXFxcXSlmL2csXCIkMVwiK2IpKS5yZXBsYWNlKC8oXnxbXlxcXFxdKVRUKy9nLFwiJDFcIit2KSkucmVwbGFjZSgvKF58W15cXFxcXSlUL2csXCIkMVwiK3YuY2hhckF0KDApKTt2YXIgbT12LnRvTG93ZXJDYXNlKCk7ZT0oZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pdHQrL2csXCIkMVwiK20pKS5yZXBsYWNlKC8oXnxbXlxcXFxdKXQvZyxcIiQxXCIrbS5jaGFyQXQoMCkpO3ZhciB5PS10LmdldFRpbWV6b25lT2Zmc2V0KCksdz1hfHwheT9cIlpcIjp5PjA/XCIrXCI6XCItXCI7aWYoIWEpe3ZhciBrPSh5PU1hdGguYWJzKHkpKSU2MDt3Kz1sKE1hdGguZmxvb3IoeS82MCkpK1wiOlwiK2woayl9ZT1lLnJlcGxhY2UoLyhefFteXFxcXF0pSy9nLFwiJDFcIit3KTt2YXIgQT0oYT90LmdldFVUQ0RheSgpOnQuZ2V0RGF5KCkpKzE7cmV0dXJuIGU9KGU9KGU9KGU9KGU9ZS5yZXBsYWNlKG5ldyBSZWdFeHAob1swXSxcImdcIiksb1tBXSkpLnJlcGxhY2UobmV3IFJlZ0V4cChuWzBdLFwiZ1wiKSxuW0FdKSkucmVwbGFjZShuZXcgUmVnRXhwKHNbMF0sXCJnXCIpLHNbY10pKS5yZXBsYWNlKG5ldyBSZWdFeHAoclswXSxcImdcIikscltjXSkpLnJlcGxhY2UoL1xcXFwoLikvZyxcIiQxXCIpfX0se2tleTpcImdldFRpbWVVbml0c2Zyb21UaW1lc3RhbXBcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O3ZvaWQgMCE9PWEuY29uZmlnLnhheGlzLm1pbiYmKHQ9YS5jb25maWcueGF4aXMubWluKSx2b2lkIDAhPT1hLmNvbmZpZy54YXhpcy5tYXgmJihlPWEuY29uZmlnLnhheGlzLm1heCk7dmFyIHM9dGhpcy5nZXREYXRlKHQpLHI9dGhpcy5nZXREYXRlKGUpLG89dGhpcy5mb3JtYXREYXRlKHMsXCJ5eXl5IE1NIGRkIEhIIG1tIHNzIGZmZlwiKS5zcGxpdChcIiBcIiksbj10aGlzLmZvcm1hdERhdGUocixcInl5eXkgTU0gZGQgSEggbW0gc3MgZmZmXCIpLnNwbGl0KFwiIFwiKTtyZXR1cm57bWluTWlsbGlzZWNvbmQ6cGFyc2VJbnQob1s2XSwxMCksbWF4TWlsbGlzZWNvbmQ6cGFyc2VJbnQobls2XSwxMCksbWluU2Vjb25kOnBhcnNlSW50KG9bNV0sMTApLG1heFNlY29uZDpwYXJzZUludChuWzVdLDEwKSxtaW5NaW51dGU6cGFyc2VJbnQob1s0XSwxMCksbWF4TWludXRlOnBhcnNlSW50KG5bNF0sMTApLG1pbkhvdXI6cGFyc2VJbnQob1szXSwxMCksbWF4SG91cjpwYXJzZUludChuWzNdLDEwKSxtaW5EYXRlOnBhcnNlSW50KG9bMl0sMTApLG1heERhdGU6cGFyc2VJbnQoblsyXSwxMCksbWluTW9udGg6cGFyc2VJbnQob1sxXSwxMCktMSxtYXhNb250aDpwYXJzZUludChuWzFdLDEwKS0xLG1pblllYXI6cGFyc2VJbnQob1swXSwxMCksbWF4WWVhcjpwYXJzZUludChuWzBdLDEwKX19fSx7a2V5OlwiaXNMZWFwWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JTQ9PTAmJnQlMTAwIT0wfHx0JTQwMD09MH19LHtrZXk6XCJjYWxjdWxjYXRlTGFzdERheXNPZk1vbnRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmRldGVybWluZURheXNPZk1vbnRocyh0LGUpLWl9fSx7a2V5OlwiZGV0ZXJtaW5lRGF5c09mWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTM2NTtyZXR1cm4gdGhpcy5pc0xlYXBZZWFyKHQpJiYoZT0zNjYpLGV9fSx7a2V5OlwiZGV0ZXJtaW5lUmVtYWluaW5nRGF5c09mWWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLmRheXNDbnRPZlllYXJbZV0raTtyZXR1cm4gZT4xJiZ0aGlzLmlzTGVhcFllYXIoKSYmYSsrLGF9fSx7a2V5OlwiZGV0ZXJtaW5lRGF5c09mTW9udGhzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT0zMDtzd2l0Y2godD14Lm1vbnRoTW9kKHQpLCEwKXtjYXNlIHRoaXMubW9udGhzMzAuaW5kZXhPZih0KT4tMToyPT09dCYmKGk9dGhpcy5pc0xlYXBZZWFyKGUpPzI5OjI4KTticmVhaztjYXNlIHRoaXMubW9udGhzMzEuaW5kZXhPZih0KT4tMTpkZWZhdWx0Omk9MzF9cmV0dXJuIGl9fV0pLHR9KCksTT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnRvb2x0aXBLZXlGb3JtYXQ9XCJkZCBNTU1cIn1yZXR1cm4gcih0LFt7a2V5OlwieExhYmVsRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53O2lmKFwiZGF0ZXRpbWVcIj09PXMuY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PXMuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXImJnZvaWQgMD09PXMuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIpe3ZhciByPW5ldyBJKHRoaXMuY3R4KTtyZXR1cm4gci5mb3JtYXREYXRlKHIuZ2V0RGF0ZShlKSxzLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KX1yZXR1cm4gdChlLGksYSl9fSx7a2V5OlwiZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSk6dH19LHtrZXk6XCJkZWZhdWx0WUZvcm1hdHRlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnc7cmV0dXJuIHguaXNOdW1iZXIodCkmJih0PTAhPT1hLmdsb2JhbHMueVZhbHVlRGVjaW1hbD90LnRvRml4ZWQodm9pZCAwIT09ZS5kZWNpbWFsc0luRmxvYXQ/ZS5kZWNpbWFsc0luRmxvYXQ6YS5nbG9iYWxzLnlWYWx1ZURlY2ltYWwpOmEuZ2xvYmFscy5tYXhZQXJyW2ldLWEuZ2xvYmFscy5taW5ZQXJyW2ldPDU/dC50b0ZpeGVkKDEpOnQudG9GaXhlZCgwKSksdH19LHtrZXk6XCJzZXRMYWJlbEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnc7cmV0dXJuIGUuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZGVmYXVsdEdlbmVyYWxGb3JtYXR0ZXIoZSl9LGUuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5kZWZhdWx0R2VuZXJhbEZvcm1hdHRlcihlKX0sZS5nbG9iYWxzLnR0WkZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdH0sZS5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5kZWZhdWx0R2VuZXJhbEZvcm1hdHRlcihlKX0sdm9pZCAwIT09ZS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlcj9lLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyPWUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXI6ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcj1mdW5jdGlvbih0KXtpZih4LmlzTnVtYmVyKHQpKXtpZighZS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZcIm51bWVyaWNcIj09PWUuY29uZmlnLnhheGlzLnR5cGUpe2lmKHguaXNOdW1iZXIoZS5jb25maWcueGF4aXMuZGVjaW1hbHNJbkZsb2F0KSlyZXR1cm4gdC50b0ZpeGVkKGUuY29uZmlnLnhheGlzLmRlY2ltYWxzSW5GbG9hdCk7dmFyIGk9ZS5nbG9iYWxzLm1heFgtZS5nbG9iYWxzLm1pblg7cmV0dXJuIGk+MCYmaTwxMDA/dC50b0ZpeGVkKDEpOnQudG9GaXhlZCgwKX1pZihlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKWlmKGUuZ2xvYmFscy5tYXhZLWUuZ2xvYmFscy5taW5ZQXJyPDQpcmV0dXJuIHQudG9GaXhlZCgxKTtyZXR1cm4gdC50b0ZpeGVkKDApfXJldHVybiB0fSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyP2UuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1lLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyOmUuZ2xvYmFscy50dEtleUZvcm1hdHRlcj1lLmdsb2JhbHMueExhYmVsRm9ybWF0dGVyLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyJiYoZS5nbG9iYWxzLnhheGlzVG9vbHRpcEZvcm1hdHRlcj1lLmNvbmZpZy54YXhpcy50b29sdGlwLmZvcm1hdHRlciksKEFycmF5LmlzQXJyYXkoZS5jb25maWcudG9vbHRpcC55KXx8dm9pZCAwIT09ZS5jb25maWcudG9vbHRpcC55LmZvcm1hdHRlcikmJihlLmdsb2JhbHMudHRWYWw9ZS5jb25maWcudG9vbHRpcC55KSx2b2lkIDAhPT1lLmNvbmZpZy50b29sdGlwLnouZm9ybWF0dGVyJiYoZS5nbG9iYWxzLnR0WkZvcm1hdHRlcj1lLmNvbmZpZy50b29sdGlwLnouZm9ybWF0dGVyKSx2b2lkIDAhPT1lLmNvbmZpZy5sZWdlbmQuZm9ybWF0dGVyJiYoZS5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcj1lLmNvbmZpZy5sZWdlbmQuZm9ybWF0dGVyKSxlLmNvbmZpZy55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihpLGEpe3ZvaWQgMCE9PWkubGFiZWxzLmZvcm1hdHRlcj9lLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1thXT1pLmxhYmVscy5mb3JtYXR0ZXI6ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbYV09ZnVuY3Rpb24ocyl7cmV0dXJuIGUuZ2xvYmFscy54eUNoYXJ0cz9BcnJheS5pc0FycmF5KHMpP3MubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5kZWZhdWx0WUZvcm1hdHRlcihlLGksYSl9KSk6dC5kZWZhdWx0WUZvcm1hdHRlcihzLGksYSk6c319KSksZS5nbG9iYWxzfX0se2tleTpcImhlYXRtYXBMYWJlbEZvcm1hdHRlcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudztpZihcImhlYXRtYXBcIj09PXQuY29uZmlnLmNoYXJ0LnR5cGUpe3QuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdD10Lmdsb2JhbHMuc2VyaWVzTmFtZXMuc2xpY2UoKTt2YXIgZT10Lmdsb2JhbHMuc2VyaWVzTmFtZXMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKTt0Lmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWF4PWUsdC5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbj1lfX19XSksdH0oKSxUPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5pc1RpbWVsaW5lLGE9dC5jdHgscz10LnNlcmllc0luZGV4LHI9dC5kYXRhUG9pbnRJbmRleCxvPXQueTEsbj10LnkyLGw9dC53LGg9bC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbc11bcl0sYz1sLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmRbc11bcl0sZD1sLmdsb2JhbHMubGFiZWxzW3JdLGc9bC5jb25maWcuc2VyaWVzW3NdLm5hbWU/bC5jb25maWcuc2VyaWVzW3NdLm5hbWU6XCJcIix1PWwuZ2xvYmFscy50dEtleUZvcm1hdHRlcixwPWwuY29uZmlnLnRvb2x0aXAueS50aXRsZS5mb3JtYXR0ZXIsZj17dzpsLHNlcmllc0luZGV4OnMsZGF0YVBvaW50SW5kZXg6cixzdGFydDpoLGVuZDpjfTsoXCJmdW5jdGlvblwiPT10eXBlb2YgcCYmKGc9cChnLGYpKSxudWxsIT09KGU9bC5jb25maWcuc2VyaWVzW3NdLmRhdGFbcl0pJiZ2b2lkIDAhPT1lJiZlLngmJihkPWwuY29uZmlnLnNlcmllc1tzXS5kYXRhW3JdLngpLGkpfHxcImRhdGV0aW1lXCI9PT1sLmNvbmZpZy54YXhpcy50eXBlJiYoZD1uZXcgTShhKS54TGFiZWxGb3JtYXQobC5nbG9iYWxzLnR0S2V5Rm9ybWF0dGVyLGQsZCx7aTp2b2lkIDAsZGF0ZUZvcm1hdHRlcjpuZXcgSShhKS5mb3JtYXREYXRlLHc6bH0pKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiB1JiYoZD11KGQsZikpLE51bWJlci5pc0Zpbml0ZShvKSYmTnVtYmVyLmlzRmluaXRlKG4pJiYoaD1vLGM9bik7dmFyIHg9XCJcIixiPVwiXCIsdj1sLmdsb2JhbHMuY29sb3JzW3NdO2lmKHZvaWQgMD09PWwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIpaWYoXCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSl7dmFyIG09bmV3IEkoYSk7eD1tLmZvcm1hdERhdGUobS5nZXREYXRlKGgpLGwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXQpLGI9bS5mb3JtYXREYXRlKG0uZ2V0RGF0ZShjKSxsLmNvbmZpZy50b29sdGlwLnguZm9ybWF0KX1lbHNlIHg9aCxiPWM7ZWxzZSB4PWwuY29uZmlnLnRvb2x0aXAueC5mb3JtYXR0ZXIoaCksYj1sLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyKGMpO3JldHVybntzdGFydDpoLGVuZDpjLHN0YXJ0VmFsOngsZW5kVmFsOmIseWxhYmVsOmQsY29sb3I6dixzZXJpZXNOYW1lOmd9fSx6PWZ1bmN0aW9uKHQpe3ZhciBlPXQuY29sb3IsaT10LnNlcmllc05hbWUsYT10LnlsYWJlbCxzPXQuc3RhcnQscj10LmVuZCxvPXQuc2VyaWVzSW5kZXgsbj10LmRhdGFQb2ludEluZGV4LGw9dC5jdHgudG9vbHRpcC50b29sdGlwTGFiZWxzLmdldEZvcm1hdHRlcnMobyk7cz1sLnlMYkZvcm1hdHRlcihzKSxyPWwueUxiRm9ybWF0dGVyKHIpO3ZhciBoPWwueUxiRm9ybWF0dGVyKHQudy5nbG9iYWxzLnNlcmllc1tvXVtuXSksYz0nPHNwYW4gY2xhc3M9XCJ2YWx1ZSBzdGFydC12YWx1ZVwiPlxcbiAgJy5jb25jYXQocywnXFxuICA8L3NwYW4+IDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yXCI+LTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJ2YWx1ZSBlbmQtdmFsdWVcIj5cXG4gICcpLmNvbmNhdChyLFwiXFxuICA8L3NwYW4+XCIpO3JldHVybic8ZGl2IGNsYXNzPVwiYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyXCI+PGRpdj4gPHNwYW4gY2xhc3M9XCJzZXJpZXMtbmFtZVwiIHN0eWxlPVwiY29sb3I6ICcrZSsnXCI+JysoaXx8XCJcIikrJzwvc3Bhbj48L2Rpdj48ZGl2PiA8c3BhbiBjbGFzcz1cImNhdGVnb3J5XCI+JythK1wiOiA8L3NwYW4+IFwiKyh0LncuZ2xvYmFscy5jb21ib0NoYXJ0cz9cInJhbmdlQXJlYVwiPT09dC53LmNvbmZpZy5zZXJpZXNbb10udHlwZXx8XCJyYW5nZUJhclwiPT09dC53LmNvbmZpZy5zZXJpZXNbb10udHlwZT9jOlwiPHNwYW4+XCIuY29uY2F0KGgsXCI8L3NwYW4+XCIpOmMpK1wiIDwvZGl2PjwvZGl2PlwifSxYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5vcHRzPWV9cmV0dXJuIHIodCxbe2tleTpcImhpZGVZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5vcHRzLnlheGlzWzBdLnNob3c9ITEsdGhpcy5vcHRzLnlheGlzWzBdLnRpdGxlLnRleHQ9XCJcIix0aGlzLm9wdHMueWF4aXNbMF0uYXhpc0JvcmRlci5zaG93PSExLHRoaXMub3B0cy55YXhpc1swXS5heGlzVGlja3Muc2hvdz0hMSx0aGlzLm9wdHMueWF4aXNbMF0uZmxvYXRpbmc9ITB9fSx7a2V5OlwibGluZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2NoYXJ0OnthbmltYXRpb25zOntlYXNpbmc6XCJzd2luZ1wifX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDo1LGN1cnZlOlwic3RyYWlnaHRcIn0sbWFya2Vyczp7c2l6ZTowLGhvdmVyOntzaXplT2Zmc2V0OjZ9fSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MX19fX19LHtrZXk6XCJzcGFya2xpbmVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmhpZGVZQXhpcygpO3JldHVybiB4LmV4dGVuZCh0LHtncmlkOntzaG93OiExLHBhZGRpbmc6e2xlZnQ6MCxyaWdodDowLHRvcDowLGJvdHRvbTowfX0sbGVnZW5kOntzaG93OiExfSx4YXhpczp7bGFiZWxzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfSxheGlzQm9yZGVyOntzaG93OiExfSxheGlzVGlja3M6e3Nob3c6ITF9fSxjaGFydDp7dG9vbGJhcjp7c2hvdzohMX0sem9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9fSl9fSx7a2V5OlwiYmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3N0YWNrZWQ6ITEsYW5pbWF0aW9uczp7ZWFzaW5nOlwic3dpbmdcIn19LHBsb3RPcHRpb25zOntiYXI6e2RhdGFMYWJlbHM6e3Bvc2l0aW9uOlwiY2VudGVyXCJ9fX0sZGF0YUxhYmVsczp7c3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfX0sc3Ryb2tlOnt3aWR0aDowLGxpbmVDYXA6XCJyb3VuZFwifSxmaWxsOntvcGFjaXR5Oi44NX0sbGVnZW5kOnttYXJrZXJzOntzaGFwZTpcInNxdWFyZVwiLHJhZGl1czoyLHNpemU6OH19LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITB9LHhheGlzOnt0b29sdGlwOntlbmFibGVkOiExfSx0aWNrUGxhY2VtZW50OlwiYmV0d2VlblwiLGNyb3NzaGFpcnM6e3dpZHRoOlwiYmFyV2lkdGhcIixwb3NpdGlvbjpcImJhY2tcIixmaWxsOnt0eXBlOlwiZ3JhZGllbnRcIn0sZHJvcFNoYWRvdzp7ZW5hYmxlZDohMX0sc3Ryb2tlOnt3aWR0aDowfX19fX19LHtrZXk6XCJmdW5uZWxcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhpZGVZQXhpcygpLGUoZSh7fSx0aGlzLmJhcigpKSx7fSx7Y2hhcnQ6e2FuaW1hdGlvbnM6e2Vhc2luZzpcImxpbmVhclwiLHNwZWVkOjgwMCxhbmltYXRlR3JhZHVhbGx5OntlbmFibGVkOiExfX19LHBsb3RPcHRpb25zOntiYXI6e2hvcml6b250YWw6ITAsYm9yZGVyUmFkaXVzQXBwbGljYXRpb246XCJhcm91bmRcIixib3JkZXJSYWRpdXM6MCxkYXRhTGFiZWxzOntwb3NpdGlvbjpcImNlbnRlclwifX19LGdyaWQ6e3Nob3c6ITEscGFkZGluZzp7bGVmdDowLHJpZ2h0OjB9fSx4YXhpczp7bGFiZWxzOntzaG93OiExfSx0b29sdGlwOntlbmFibGVkOiExfSxheGlzQm9yZGVyOntzaG93OiExfSxheGlzVGlja3M6e3Nob3c6ITF9fX0pfX0se2tleTpcImNhbmRsZXN0aWNrXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybntzdHJva2U6e3dpZHRoOjEsY29sb3JzOltcIiMzMzNcIl19LGZpbGw6e29wYWNpdHk6MX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMX0sdG9vbHRpcDp7c2hhcmVkOiEwLGN1c3RvbTpmdW5jdGlvbihlKXt2YXIgaT1lLnNlcmllc0luZGV4LGE9ZS5kYXRhUG9pbnRJbmRleCxzPWUudztyZXR1cm4gdC5fZ2V0Qm94VG9vbHRpcChzLGksYSxbXCJPcGVuXCIsXCJIaWdoXCIsXCJcIixcIkxvd1wiLFwiQ2xvc2VcIl0sXCJjYW5kbGVzdGlja1wiKX19LHN0YXRlczp7YWN0aXZlOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fX0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OlwiYm94UGxvdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2R5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITF9fX0sc3Ryb2tlOnt3aWR0aDoxLGNvbG9yczpbXCIjMjQyOTJlXCJdfSxkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITAsY3VzdG9tOmZ1bmN0aW9uKGUpe3ZhciBpPWUuc2VyaWVzSW5kZXgsYT1lLmRhdGFQb2ludEluZGV4LHM9ZS53O3JldHVybiB0Ll9nZXRCb3hUb29sdGlwKHMsaSxhLFtcIk1pbmltdW1cIixcIlExXCIsXCJNZWRpYW5cIixcIlEzXCIsXCJNYXhpbXVtXCJdLFwiYm94UGxvdFwiKX19LG1hcmtlcnM6e3NpemU6NSxzdHJva2VXaWR0aDoxLHN0cm9rZUNvbG9yczpcIiMxMTFcIn0seGF4aXM6e2Nyb3NzaGFpcnM6e3dpZHRoOjF9fX19fSx7a2V5OlwicmFuZ2VCYXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7YW5pbWF0aW9uczp7YW5pbWF0ZUdyYWR1YWxseTohMX19LHN0cm9rZTp7d2lkdGg6MCxsaW5lQ2FwOlwic3F1YXJlXCJ9LHBsb3RPcHRpb25zOntiYXI6e2JvcmRlclJhZGl1czowLGRhdGFMYWJlbHM6e3Bvc2l0aW9uOlwiY2VudGVyXCJ9fX0sZGF0YUxhYmVsczp7ZW5hYmxlZDohMSxmb3JtYXR0ZXI6ZnVuY3Rpb24odCxlKXtlLmN0eDt2YXIgaT1lLnNlcmllc0luZGV4LGE9ZS5kYXRhUG9pbnRJbmRleCxzPWUudyxyPWZ1bmN0aW9uKCl7dmFyIHQ9cy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbaV1bYV07cmV0dXJuIHMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtpXVthXS10fTtyZXR1cm4gcy5nbG9iYWxzLmNvbWJvQ2hhcnRzP1wicmFuZ2VCYXJcIj09PXMuY29uZmlnLnNlcmllc1tpXS50eXBlfHxcInJhbmdlQXJlYVwiPT09cy5jb25maWcuc2VyaWVzW2ldLnR5cGU/cigpOnQ6cigpfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSxtYXJrZXJzOntzaXplOjEwfSx0b29sdGlwOntzaGFyZWQ6ITEsZm9sbG93Q3Vyc29yOiEwLGN1c3RvbTpmdW5jdGlvbih0KXtyZXR1cm4gdC53LmNvbmZpZy5wbG90T3B0aW9ucyYmdC53LmNvbmZpZy5wbG90T3B0aW9ucy5iYXImJnQudy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWw/ZnVuY3Rpb24odCl7dmFyIGk9VChlKGUoe30sdCkse30se2lzVGltZWxpbmU6ITB9KSksYT1pLmNvbG9yLHM9aS5zZXJpZXNOYW1lLHI9aS55bGFiZWwsbz1pLnN0YXJ0VmFsLG49aS5lbmRWYWw7cmV0dXJuIHooZShlKHt9LHQpLHt9LHtjb2xvcjphLHNlcmllc05hbWU6cyx5bGFiZWw6cixzdGFydDpvLGVuZDpufSkpfSh0KTpmdW5jdGlvbih0KXt2YXIgaT1UKHQpLGE9aS5jb2xvcixzPWkuc2VyaWVzTmFtZSxyPWkueWxhYmVsLG89aS5zdGFydCxuPWkuZW5kO3JldHVybiB6KGUoZSh7fSx0KSx7fSx7Y29sb3I6YSxzZXJpZXNOYW1lOnMseWxhYmVsOnIsc3RhcnQ6byxlbmQ6bn0pKX0odCl9fSx4YXhpczp7dGlja1BsYWNlbWVudDpcImJldHdlZW5cIix0b29sdGlwOntlbmFibGVkOiExfSxjcm9zc2hhaXJzOntzdHJva2U6e3dpZHRoOjB9fX19fX0se2tleTpcImR1bWJiZWxsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaTtyZXR1cm4gbnVsbCE9PShlPXQucGxvdE9wdGlvbnMuYmFyKSYmdm9pZCAwIT09ZSYmZS5iYXJIZWlnaHR8fCh0LnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQ9MiksbnVsbCE9PShpPXQucGxvdE9wdGlvbnMuYmFyKSYmdm9pZCAwIT09aSYmaS5jb2x1bW5XaWR0aHx8KHQucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoPTIpLHR9fSx7a2V5OlwiYXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3N0cm9rZTp7d2lkdGg6NCxmaWxsOnt0eXBlOlwic29saWRcIixncmFkaWVudDp7aW52ZXJzZUNvbG9yczohMSxzaGFkZTpcImxpZ2h0XCIsdHlwZTpcInZlcnRpY2FsXCIsb3BhY2l0eUZyb206LjY1LG9wYWNpdHlUbzouNSxzdG9wczpbMCwxMDAsMTAwXX19fSxmaWxsOnt0eXBlOlwiZ3JhZGllbnRcIixncmFkaWVudDp7aW52ZXJzZUNvbG9yczohMSxzaGFkZTpcImxpZ2h0XCIsdHlwZTpcInZlcnRpY2FsXCIsb3BhY2l0eUZyb206LjY1LG9wYWNpdHlUbzouNSxzdG9wczpbMCwxMDAsMTAwXX19LG1hcmtlcnM6e3NpemU6MCxob3Zlcjp7c2l6ZU9mZnNldDo2fX0sdG9vbHRpcDp7Zm9sbG93Q3Vyc29yOiExfX19fSx7a2V5OlwicmFuZ2VBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57c3Ryb2tlOntjdXJ2ZTpcInN0cmFpZ2h0XCIsd2lkdGg6MH0sZmlsbDp7dHlwZTpcInNvbGlkXCIsb3BhY2l0eTouNn0sbWFya2Vyczp7c2l6ZTowfSxzdGF0ZXM6e2hvdmVyOntmaWx0ZXI6e3R5cGU6XCJub25lXCJ9fSxhY3RpdmU6e2ZpbHRlcjp7dHlwZTpcIm5vbmVcIn19fSx0b29sdGlwOntpbnRlcnNlY3Q6ITEsc2hhcmVkOiEwLGZvbGxvd0N1cnNvcjohMCxjdXN0b206ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpPVQodCksYT1pLmNvbG9yLHM9aS5zZXJpZXNOYW1lLHI9aS55bGFiZWwsbz1pLnN0YXJ0LG49aS5lbmQ7cmV0dXJuIHooZShlKHt9LHQpLHt9LHtjb2xvcjphLHNlcmllc05hbWU6cyx5bGFiZWw6cixzdGFydDpvLGVuZDpufSkpfSh0KX19fX19LHtrZXk6XCJicnVzaFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB4LmV4dGVuZCh0LHtjaGFydDp7dG9vbGJhcjp7YXV0b1NlbGVjdGVkOlwic2VsZWN0aW9uXCIsc2hvdzohMX0sem9vbTp7ZW5hYmxlZDohMX19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITF9LHN0cm9rZTp7d2lkdGg6MX0sdG9vbHRpcDp7ZW5hYmxlZDohMX0seGF4aXM6e3Rvb2x0aXA6e2VuYWJsZWQ6ITF9fX0pfX0se2tleTpcInN0YWNrZWQxMDBcIix2YWx1ZTpmdW5jdGlvbih0KXt0LmRhdGFMYWJlbHM9dC5kYXRhTGFiZWxzfHx7fSx0LmRhdGFMYWJlbHMuZm9ybWF0dGVyPXQuZGF0YUxhYmVscy5mb3JtYXR0ZXJ8fHZvaWQgMDt2YXIgZT10LmRhdGFMYWJlbHMuZm9ybWF0dGVyO3JldHVybiB0LnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dC55YXhpc1tpXS5taW49MCx0LnlheGlzW2ldLm1heD0xMDB9KSksXCJiYXJcIj09PXQuY2hhcnQudHlwZSYmKHQuZGF0YUxhYmVscy5mb3JtYXR0ZXI9ZXx8ZnVuY3Rpb24odCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ/dC50b0ZpeGVkKDApK1wiJVwiOnR9KSx0fX0se2tleTpcInN0YWNrZWRCYXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJhcigpO3JldHVybiBlKGUoe30sdCkse30se3Bsb3RPcHRpb25zOmUoZSh7fSx0LnBsb3RPcHRpb25zKSx7fSx7YmFyOmUoZSh7fSx0LnBsb3RPcHRpb25zLmJhcikse30se2JvcmRlclJhZGl1c0FwcGxpY2F0aW9uOlwiZW5kXCIsYm9yZGVyUmFkaXVzV2hlblN0YWNrZWQ6XCJsYXN0XCJ9KX0pfSl9fSx7a2V5OlwiY29udmVydENhdFRvTnVtZXJpY1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYz0hMCx0fX0se2tleTpcImNvbnZlcnRDYXRUb051bWVyaWNYYXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt0LnhheGlzLnR5cGU9XCJudW1lcmljXCIsdC54YXhpcy5sYWJlbHM9dC54YXhpcy5sYWJlbHN8fHt9LHQueGF4aXMubGFiZWxzLmZvcm1hdHRlcj10LnhheGlzLmxhYmVscy5mb3JtYXR0ZXJ8fGZ1bmN0aW9uKHQpe3JldHVybiB4LmlzTnVtYmVyKHQpP01hdGguZmxvb3IodCk6dH07dmFyIGE9dC54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLHM9dC54YXhpcy5jYXRlZ29yaWVzJiZ0LnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoP3QueGF4aXMuY2F0ZWdvcmllczp0LmxhYmVscztyZXR1cm4gaSYmaS5sZW5ndGgmJihzPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90OlN0cmluZyh0KX0pKSkscyYmcy5sZW5ndGgmJih0LnhheGlzLmxhYmVscy5mb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHguaXNOdW1iZXIodCk/YShzW01hdGguZmxvb3IodCktMV0pOmEodCl9KSx0LnhheGlzLmNhdGVnb3JpZXM9W10sdC5sYWJlbHM9W10sdC54YXhpcy50aWNrQW1vdW50PXQueGF4aXMudGlja0Ftb3VudHx8XCJkYXRhUG9pbnRzXCIsdH19LHtrZXk6XCJidWJibGVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSx4YXhpczp7Y3Jvc3NoYWlyczp7d2lkdGg6MH19LGZpbGw6e3R5cGU6XCJzb2xpZFwiLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsaW52ZXJzZTohMCxzaGFkZUludGVuc2l0eTouNTUsb3BhY2l0eUZyb206LjQsb3BhY2l0eVRvOi44fX19fX0se2tleTpcInNjYXR0ZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhTGFiZWxzOntlbmFibGVkOiExfSx0b29sdGlwOntzaGFyZWQ6ITEsaW50ZXJzZWN0OiEwfSxtYXJrZXJzOntzaXplOjYsc3Ryb2tlV2lkdGg6MSxob3Zlcjp7c2l6ZU9mZnNldDoyfX19fX0se2tleTpcImhlYXRtYXBcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7c3RhY2tlZDohMX0sZmlsbDp7b3BhY2l0eToxfSxkYXRhTGFiZWxzOntzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSx0b29sdGlwOntmb2xsb3dDdXJzb3I6ITAsbWFya2VyOntzaG93OiExfSx4OntzaG93OiExfX0sbGVnZW5kOntwb3NpdGlvbjpcInRvcFwiLG1hcmtlcnM6e3NoYXBlOlwic3F1YXJlXCIsc2l6ZToxMCxvZmZzZXRZOjJ9fSxncmlkOntwYWRkaW5nOntyaWdodDoyMH19fX19LHtrZXk6XCJ0cmVlbWFwXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3pvb206e2VuYWJsZWQ6ITF9fSxkYXRhTGFiZWxzOntzdHlsZTp7Zm9udFNpemU6MTQsZm9udFdlaWdodDo2MDAsY29sb3JzOltcIiNmZmZcIl19fSxzdHJva2U6e3Nob3c6ITAsd2lkdGg6Mixjb2xvcnM6W1wiI2ZmZlwiXX0sbGVnZW5kOntzaG93OiExfSxmaWxsOntncmFkaWVudDp7c3RvcHM6WzAsMTAwXX19LHRvb2x0aXA6e2ZvbGxvd0N1cnNvcjohMCx4OntzaG93OiExfX0sZ3JpZDp7cGFkZGluZzp7bGVmdDowLHJpZ2h0OjB9fSx4YXhpczp7Y3Jvc3NoYWlyczp7c2hvdzohMX0sdG9vbHRpcDp7ZW5hYmxlZDohMX19fX19LHtrZXk6XCJwaWVcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntjaGFydDp7dG9vbGJhcjp7c2hvdzohMX19LHBsb3RPcHRpb25zOntwaWU6e2RvbnV0OntsYWJlbHM6e3Nob3c6ITF9fX19LGRhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC50b0ZpeGVkKDEpK1wiJVwifSxzdHlsZTp7Y29sb3JzOltcIiNmZmZcIl19LGJhY2tncm91bmQ6e2VuYWJsZWQ6ITF9LGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITB9fSxzdHJva2U6e2NvbG9yczpbXCIjZmZmXCJdfSxmaWxsOntvcGFjaXR5OjEsZ3JhZGllbnQ6e3NoYWRlOlwibGlnaHRcIixzdG9wczpbMCwxMDBdfX0sdG9vbHRpcDp7dGhlbWU6XCJkYXJrXCIsZmlsbFNlcmllc0NvbG9yOiEwfSxsZWdlbmQ6e3Bvc2l0aW9uOlwicmlnaHRcIn19fX0se2tleTpcImRvbnV0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9GaXhlZCgxKStcIiVcIn0sc3R5bGU6e2NvbG9yczpbXCIjZmZmXCJdfSxiYWNrZ3JvdW5kOntlbmFibGVkOiExfSxkcm9wU2hhZG93OntlbmFibGVkOiEwfX0sc3Ryb2tlOntjb2xvcnM6W1wiI2ZmZlwiXX0sZmlsbDp7b3BhY2l0eToxLGdyYWRpZW50OntzaGFkZTpcImxpZ2h0XCIsc2hhZGVJbnRlbnNpdHk6LjM1LHN0b3BzOls4MCwxMDBdLG9wYWNpdHlGcm9tOjEsb3BhY2l0eVRvOjF9fSx0b29sdGlwOnt0aGVtZTpcImRhcmtcIixmaWxsU2VyaWVzQ29sb3I6ITB9LGxlZ2VuZDp7cG9zaXRpb246XCJyaWdodFwifX19fSx7a2V5OlwicG9sYXJBcmVhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ9dGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ/dGhpcy5vcHRzLnlheGlzWzBdLnRpY2tBbW91bnQ6Nix7Y2hhcnQ6e3Rvb2xiYXI6e3Nob3c6ITF9fSxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9GaXhlZCgxKStcIiVcIn0sZW5hYmxlZDohMX0sc3Ryb2tlOntzaG93OiEwLHdpZHRoOjJ9LGZpbGw6e29wYWNpdHk6Ljd9LHRvb2x0aXA6e3RoZW1lOlwiZGFya1wiLGZpbGxTZXJpZXNDb2xvcjohMH0sbGVnZW5kOntwb3NpdGlvbjpcInJpZ2h0XCJ9fX19LHtrZXk6XCJyYWRhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0cy55YXhpc1swXS5sYWJlbHMub2Zmc2V0WT10aGlzLm9wdHMueWF4aXNbMF0ubGFiZWxzLm9mZnNldFk/dGhpcy5vcHRzLnlheGlzWzBdLmxhYmVscy5vZmZzZXRZOjYse2RhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsc3R5bGU6e2ZvbnRTaXplOlwiMTFweFwifX0sc3Ryb2tlOnt3aWR0aDoyfSxtYXJrZXJzOntzaXplOjMsc3Ryb2tlV2lkdGg6MSxzdHJva2VPcGFjaXR5OjF9LGZpbGw6e29wYWNpdHk6LjJ9LHRvb2x0aXA6e3NoYXJlZDohMSxpbnRlcnNlY3Q6ITAsZm9sbG93Q3Vyc29yOiEwfSxncmlkOntzaG93OiExfSx4YXhpczp7bGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHN0eWxlOntjb2xvcnM6W1wiI2E4YThhOFwiXSxmb250U2l6ZTpcIjExcHhcIn19LHRvb2x0aXA6e2VuYWJsZWQ6ITF9LGNyb3NzaGFpcnM6e3Nob3c6ITF9fX19fSx7a2V5OlwicmFkaWFsQmFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57Y2hhcnQ6e2FuaW1hdGlvbnM6e2R5bmFtaWNBbmltYXRpb246e2VuYWJsZWQ6ITAsc3BlZWQ6ODAwfX0sdG9vbGJhcjp7c2hvdzohMX19LGZpbGw6e2dyYWRpZW50OntzaGFkZTpcImRhcmtcIixzaGFkZUludGVuc2l0eTouNCxpbnZlcnNlQ29sb3JzOiExLHR5cGU6XCJkaWFnb25hbDJcIixvcGFjaXR5RnJvbToxLG9wYWNpdHlUbzoxLHN0b3BzOls3MCw5OCwxMDBdfX0sbGVnZW5kOntzaG93OiExLHBvc2l0aW9uOlwicmlnaHRcIn0sdG9vbHRpcDp7ZW5hYmxlZDohMSxmaWxsU2VyaWVzQ29sb3I6ITB9fX19LHtrZXk6XCJfZ2V0Qm94VG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dmFyIHI9dC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1baV0sbz10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVtpXSxuPXQuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW2VdW2ldLGw9dC5nbG9iYWxzLnNlcmllc0NhbmRsZUxbZV1baV0saD10Lmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVtpXTtyZXR1cm4gdC5jb25maWcuc2VyaWVzW2VdLnR5cGUmJnQuY29uZmlnLnNlcmllc1tlXS50eXBlIT09cz8nPGRpdiBjbGFzcz1cImFwZXhjaGFydHMtY3VzdG9tLXRvb2x0aXBcIj5cXG4gICAgICAgICAgJy5jb25jYXQodC5jb25maWcuc2VyaWVzW2VdLm5hbWU/dC5jb25maWcuc2VyaWVzW2VdLm5hbWU6XCJzZXJpZXMtXCIrKGUrMSksXCI6IDxzdHJvbmc+XCIpLmNvbmNhdCh0Lmdsb2JhbHMuc2VyaWVzW2VdW2ldLFwiPC9zdHJvbmc+XFxuICAgICAgICA8L2Rpdj5cIik6JzxkaXYgY2xhc3M9XCJhcGV4Y2hhcnRzLXRvb2x0aXAtYm94IGFwZXhjaGFydHMtdG9vbHRpcC0nLmNvbmNhdCh0LmNvbmZpZy5jaGFydC50eXBlLCdcIj4nKStcIjxkaXY+XCIuY29uY2F0KGFbMF0sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK3IrXCI8L3NwYW4+PC9kaXY+XCIrXCI8ZGl2PlwiLmNvbmNhdChhWzFdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStvK1wiPC9zcGFuPjwvZGl2PlwiKyhuP1wiPGRpdj5cIi5jb25jYXQoYVsyXSwnOiA8c3BhbiBjbGFzcz1cInZhbHVlXCI+JykrbitcIjwvc3Bhbj48L2Rpdj5cIjpcIlwiKStcIjxkaXY+XCIuY29uY2F0KGFbM10sJzogPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPicpK2wrXCI8L3NwYW4+PC9kaXY+XCIrXCI8ZGl2PlwiLmNvbmNhdChhWzRdLCc6IDxzcGFuIGNsYXNzPVwidmFsdWVcIj4nKStoK1wiPC9zcGFuPjwvZGl2PjwvZGl2PlwifX1dKSx0fSgpLEU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLm9wdHM9ZX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQucmVzcG9uc2l2ZU92ZXJyaWRlLGE9dGhpcy5vcHRzLHM9bmV3IEwscj1uZXcgWChhKTt0aGlzLmNoYXJ0VHlwZT1hLmNoYXJ0LnR5cGUsYT10aGlzLmV4dGVuZFlBeGlzKGEpLGE9dGhpcy5leHRlbmRBbm5vdGF0aW9ucyhhKTt2YXIgbz1zLmluaXQoKSxuPXt9O2lmKGEmJlwib2JqZWN0XCI9PT1pKGEpKXt2YXIgbCxoLGMsZCxnLHUscCxmLGIsdixtPXt9O209LTEhPT1bXCJsaW5lXCIsXCJhcmVhXCIsXCJiYXJcIixcImNhbmRsZXN0aWNrXCIsXCJib3hQbG90XCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJidWJibGVcIixcInNjYXR0ZXJcIixcImhlYXRtYXBcIixcInRyZWVtYXBcIixcInBpZVwiLFwicG9sYXJBcmVhXCIsXCJkb251dFwiLFwicmFkYXJcIixcInJhZGlhbEJhclwiXS5pbmRleE9mKGEuY2hhcnQudHlwZSk/clthLmNoYXJ0LnR5cGVdKCk6ci5saW5lKCksbnVsbCE9PShsPWEucGxvdE9wdGlvbnMpJiZ2b2lkIDAhPT1sJiZudWxsIT09KGg9bC5iYXIpJiZ2b2lkIDAhPT1oJiZoLmlzRnVubmVsJiYobT1yLmZ1bm5lbCgpKSxhLmNoYXJ0LnN0YWNrZWQmJlwiYmFyXCI9PT1hLmNoYXJ0LnR5cGUmJihtPXIuc3RhY2tlZEJhcnMoKSksbnVsbCE9PShjPWEuY2hhcnQuYnJ1c2gpJiZ2b2lkIDAhPT1jJiZjLmVuYWJsZWQmJihtPXIuYnJ1c2gobSkpLGEuY2hhcnQuc3RhY2tlZCYmXCIxMDAlXCI9PT1hLmNoYXJ0LnN0YWNrVHlwZSYmKGE9ci5zdGFja2VkMTAwKGEpKSxudWxsIT09KGQ9YS5wbG90T3B0aW9ucykmJnZvaWQgMCE9PWQmJm51bGwhPT0oZz1kLmJhcikmJnZvaWQgMCE9PWcmJmcuaXNEdW1iYmVsbCYmKGE9ci5kdW1iYmVsbChhKSksXCJtb25vdG9uZUN1YmljXCI9PT0obnVsbD09PSh1PWEpfHx2b2lkIDA9PT11fHxudWxsPT09KHA9dS5zdHJva2UpfHx2b2lkIDA9PT1wP3ZvaWQgMDpwLmN1cnZlKSYmKGEuc3Ryb2tlLmN1cnZlPVwic21vb3RoXCIpLHRoaXMuY2hlY2tGb3JEYXJrVGhlbWUod2luZG93LkFwZXgpLHRoaXMuY2hlY2tGb3JEYXJrVGhlbWUoYSksYS54YXhpcz1hLnhheGlzfHx3aW5kb3cuQXBleC54YXhpc3x8e30sZXx8KGEueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljPSExKSwobnVsbCE9PShmPShhPXRoaXMuY2hlY2tGb3JDYXRUb051bWVyaWNYQXhpcyh0aGlzLmNoYXJ0VHlwZSxtLGEpKS5jaGFydC5zcGFya2xpbmUpJiZ2b2lkIDAhPT1mJiZmLmVuYWJsZWR8fG51bGwhPT0oYj13aW5kb3cuQXBleC5jaGFydCkmJnZvaWQgMCE9PWImJm51bGwhPT0odj1iLnNwYXJrbGluZSkmJnZvaWQgMCE9PXYmJnYuZW5hYmxlZCkmJihtPXIuc3BhcmtsaW5lKG0pKSxuPXguZXh0ZW5kKG8sbSl9dmFyIHk9eC5leHRlbmQobix3aW5kb3cuQXBleCk7cmV0dXJuIG89eC5leHRlbmQoeSxhKSxvPXRoaXMuaGFuZGxlVXNlcklucHV0RXJyb3JzKG8pfX0se2tleTpcImNoZWNrRm9yQ2F0VG9OdW1lcmljWEF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGEscyxyPW5ldyBYKGkpLG89KFwiYmFyXCI9PT10fHxcImJveFBsb3RcIj09PXQpJiYobnVsbD09PShhPWkucGxvdE9wdGlvbnMpfHx2b2lkIDA9PT1hfHxudWxsPT09KHM9YS5iYXIpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmhvcml6b250YWwpLG49XCJwaWVcIj09PXR8fFwicG9sYXJBcmVhXCI9PT10fHxcImRvbnV0XCI9PT10fHxcInJhZGFyXCI9PT10fHxcInJhZGlhbEJhclwiPT09dHx8XCJoZWF0bWFwXCI9PT10LGw9XCJkYXRldGltZVwiIT09aS54YXhpcy50eXBlJiZcIm51bWVyaWNcIiE9PWkueGF4aXMudHlwZSxoPWkueGF4aXMudGlja1BsYWNlbWVudD9pLnhheGlzLnRpY2tQbGFjZW1lbnQ6ZS54YXhpcyYmZS54YXhpcy50aWNrUGxhY2VtZW50O3JldHVybiBvfHxufHwhbHx8XCJiZXR3ZWVuXCI9PT1ofHwoaT1yLmNvbnZlcnRDYXRUb051bWVyaWMoaSkpLGl9fSx7a2V5OlwiZXh0ZW5kWUF4aXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPW5ldyBMOyh2b2lkIDA9PT10LnlheGlzfHwhdC55YXhpc3x8QXJyYXkuaXNBcnJheSh0LnlheGlzKSYmMD09PXQueWF4aXMubGVuZ3RoKSYmKHQueWF4aXM9e30pLHQueWF4aXMuY29uc3RydWN0b3IhPT1BcnJheSYmd2luZG93LkFwZXgueWF4aXMmJndpbmRvdy5BcGV4LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXkmJih0LnlheGlzPXguZXh0ZW5kKHQueWF4aXMsd2luZG93LkFwZXgueWF4aXMpKSx0LnlheGlzLmNvbnN0cnVjdG9yIT09QXJyYXk/dC55YXhpcz1beC5leHRlbmQoaS55QXhpcyx0LnlheGlzKV06dC55YXhpcz14LmV4dGVuZEFycmF5KHQueWF4aXMsaS55QXhpcyk7dmFyIGE9ITE7dC55YXhpcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmxvZ2FyaXRobWljJiYoYT0hMCl9KSk7dmFyIHM9dC5zZXJpZXM7cmV0dXJuIGUmJiFzJiYocz1lLmNvbmZpZy5zZXJpZXMpLGEmJnMubGVuZ3RoIT09dC55YXhpcy5sZW5ndGgmJnMubGVuZ3RoJiYodC55YXhpcz1zLm1hcCgoZnVuY3Rpb24oZSxhKXtpZihlLm5hbWV8fChzW2FdLm5hbWU9XCJzZXJpZXMtXCIuY29uY2F0KGErMSkpLHQueWF4aXNbYV0pcmV0dXJuIHQueWF4aXNbYV0uc2VyaWVzTmFtZT1zW2FdLm5hbWUsdC55YXhpc1thXTt2YXIgcj14LmV4dGVuZChpLnlBeGlzLHQueWF4aXNbMF0pO3JldHVybiByLnNob3c9ITEscn0pKSksYSYmcy5sZW5ndGg+MSYmcy5sZW5ndGghPT10LnlheGlzLmxlbmd0aCYmY29uc29sZS53YXJuKFwiQSBtdWx0aS1zZXJpZXMgbG9nYXJpdGhtaWMgY2hhcnQgc2hvdWxkIGhhdmUgZXF1YWwgbnVtYmVyIG9mIHNlcmllcyBhbmQgeS1heGVzXCIpLHR9fSx7a2V5OlwiZXh0ZW5kQW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dC5hbm5vdGF0aW9ucyYmKHQuYW5ub3RhdGlvbnM9e30sdC5hbm5vdGF0aW9ucy55YXhpcz1bXSx0LmFubm90YXRpb25zLnhheGlzPVtdLHQuYW5ub3RhdGlvbnMucG9pbnRzPVtdKSx0PXRoaXMuZXh0ZW5kWUF4aXNBbm5vdGF0aW9ucyh0KSx0PXRoaXMuZXh0ZW5kWEF4aXNBbm5vdGF0aW9ucyh0KSx0PXRoaXMuZXh0ZW5kUG9pbnRBbm5vdGF0aW9ucyh0KX19LHtrZXk6XCJleHRlbmRZQXhpc0Fubm90YXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEw7cmV0dXJuIHQuYW5ub3RhdGlvbnMueWF4aXM9eC5leHRlbmRBcnJheSh2b2lkIDAhPT10LmFubm90YXRpb25zLnlheGlzP3QuYW5ub3RhdGlvbnMueWF4aXM6W10sZS55QXhpc0Fubm90YXRpb24pLHR9fSx7a2V5OlwiZXh0ZW5kWEF4aXNBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBMO3JldHVybiB0LmFubm90YXRpb25zLnhheGlzPXguZXh0ZW5kQXJyYXkodm9pZCAwIT09dC5hbm5vdGF0aW9ucy54YXhpcz90LmFubm90YXRpb25zLnhheGlzOltdLGUueEF4aXNBbm5vdGF0aW9uKSx0fX0se2tleTpcImV4dGVuZFBvaW50QW5ub3RhdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgTDtyZXR1cm4gdC5hbm5vdGF0aW9ucy5wb2ludHM9eC5leHRlbmRBcnJheSh2b2lkIDAhPT10LmFubm90YXRpb25zLnBvaW50cz90LmFubm90YXRpb25zLnBvaW50czpbXSxlLnBvaW50QW5ub3RhdGlvbiksdH19LHtrZXk6XCJjaGVja0ZvckRhcmtUaGVtZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3QudGhlbWUmJlwiZGFya1wiPT09dC50aGVtZS5tb2RlJiYodC50b29sdGlwfHwodC50b29sdGlwPXt9KSxcImxpZ2h0XCIhPT10LnRvb2x0aXAudGhlbWUmJih0LnRvb2x0aXAudGhlbWU9XCJkYXJrXCIpLHQuY2hhcnQuZm9yZUNvbG9yfHwodC5jaGFydC5mb3JlQ29sb3I9XCIjZjZmN2Y4XCIpLHQuY2hhcnQuYmFja2dyb3VuZHx8KHQuY2hhcnQuYmFja2dyb3VuZD1cIiM0MjQyNDJcIiksdC50aGVtZS5wYWxldHRlfHwodC50aGVtZS5wYWxldHRlPVwicGFsZXR0ZTRcIikpfX0se2tleTpcImhhbmRsZVVzZXJJbnB1dEVycm9yc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQ7aWYoZS50b29sdGlwLnNoYXJlZCYmZS50b29sdGlwLmludGVyc2VjdCl0aHJvdyBuZXcgRXJyb3IoXCJ0b29sdGlwLnNoYXJlZCBjYW5ub3QgYmUgZW5hYmxlZCB3aGVuIHRvb2x0aXAuaW50ZXJzZWN0IGlzIHRydWUuIFR1cm4gb2ZmIGFueSBvdGhlciBvcHRpb24gYnkgc2V0dGluZyBpdCB0byBmYWxzZS5cIik7aWYoXCJiYXJcIj09PWUuY2hhcnQudHlwZSYmZS5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCl7aWYoZS55YXhpcy5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoXCJNdWx0aXBsZSBZIEF4aXMgZm9yIGJhcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIFN3aXRjaCB0byBjb2x1bW4gY2hhcnQgYnkgc2V0dGluZyBwbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbD1mYWxzZVwiKTtlLnlheGlzWzBdLnJldmVyc2VkJiYoZS55YXhpc1swXS5vcHBvc2l0ZT0hMCksZS54YXhpcy50b29sdGlwLmVuYWJsZWQ9ITEsZS55YXhpc1swXS50b29sdGlwLmVuYWJsZWQ9ITEsZS5jaGFydC56b29tLmVuYWJsZWQ9ITF9cmV0dXJuXCJiYXJcIiE9PWUuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiIT09ZS5jaGFydC50eXBlfHxlLnRvb2x0aXAuc2hhcmVkJiZcImJhcldpZHRoXCI9PT1lLnhheGlzLmNyb3NzaGFpcnMud2lkdGgmJmUuc2VyaWVzLmxlbmd0aD4xJiYoZS54YXhpcy5jcm9zc2hhaXJzLndpZHRoPVwidGlja1dpZHRoXCIpLFwiY2FuZGxlc3RpY2tcIiE9PWUuY2hhcnQudHlwZSYmXCJib3hQbG90XCIhPT1lLmNoYXJ0LnR5cGV8fGUueWF4aXNbMF0ucmV2ZXJzZWQmJihjb25zb2xlLndhcm4oXCJSZXZlcnNlZCB5LWF4aXMgaW4gXCIuY29uY2F0KGUuY2hhcnQudHlwZSxcIiBjaGFydCBpcyBub3Qgc3VwcG9ydGVkLlwiKSksZS55YXhpc1swXS5yZXZlcnNlZD0hMSksZX19XSksdH0oKSxZPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2EodGhpcyx0KX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdEdsb2JhbFZhcnNcIix2YWx1ZTpmdW5jdGlvbih0KXt0LnNlcmllcz1bXSx0LnNlcmllc0NhbmRsZU89W10sdC5zZXJpZXNDYW5kbGVIPVtdLHQuc2VyaWVzQ2FuZGxlTT1bXSx0LnNlcmllc0NhbmRsZUw9W10sdC5zZXJpZXNDYW5kbGVDPVtdLHQuc2VyaWVzUmFuZ2VTdGFydD1bXSx0LnNlcmllc1JhbmdlRW5kPVtdLHQuc2VyaWVzUmFuZ2U9W10sdC5zZXJpZXNQZXJjZW50PVtdLHQuc2VyaWVzR29hbHM9W10sdC5zZXJpZXNYPVtdLHQuc2VyaWVzWj1bXSx0LnNlcmllc05hbWVzPVtdLHQuc2VyaWVzVG90YWxzPVtdLHQuc2VyaWVzTG9nPVtdLHQuc2VyaWVzQ29sb3JzPVtdLHQuc3RhY2tlZFNlcmllc1RvdGFscz1bXSx0LnNlcmllc1h2YWx1ZXM9W10sdC5zZXJpZXNZdmFsdWVzPVtdLHQubGFiZWxzPVtdLHQuaGFzWGF4aXNHcm91cHM9ITEsdC5ncm91cHM9W10sdC5oYXNTZXJpZXNHcm91cHM9ITEsdC5zZXJpZXNHcm91cHM9W10sdC5jYXRlZ29yeUxhYmVscz1bXSx0LnRpbWVzY2FsZUxhYmVscz1bXSx0Lm5vTGFiZWxzUHJvdmlkZWQ9ITEsdC5yZXNpemVUaW1lcj1udWxsLHQuc2VsZWN0aW9uUmVzaXplVGltZXI9bnVsbCx0LmRlbGF5ZWRFbGVtZW50cz1bXSx0LnBvaW50c0FycmF5PVtdLHQuZGF0YUxhYmVsc1JlY3RzPVtdLHQuaXNYTnVtZXJpYz0hMSx0LnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMSx0LnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITEsdC5pc0RhdGFYWVo9ITEsdC5pc011bHRpTGluZVg9ITEsdC5pc011bHRpcGxlWUF4aXM9ITEsdC5tYXhZPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWT1OdW1iZXIuTUlOX1ZBTFVFLHQubWluWUFycj1bXSx0Lm1heFlBcnI9W10sdC5tYXhYPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWD1OdW1iZXIuTUFYX1ZBTFVFLHQuaW5pdGlhbE1heFg9LU51bWJlci5NQVhfVkFMVUUsdC5pbml0aWFsTWluWD1OdW1iZXIuTUFYX1ZBTFVFLHQubWF4RGF0ZT0wLHQubWluRGF0ZT1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWj1OdW1iZXIuTUFYX1ZBTFVFLHQubWF4Wj0tTnVtYmVyLk1BWF9WQUxVRSx0Lm1pblhEaWZmPU51bWJlci5NQVhfVkFMVUUsdC55QXhpc1NjYWxlPVtdLHQueEF4aXNTY2FsZT1udWxsLHQueEF4aXNUaWNrc1Bvc2l0aW9ucz1bXSx0LnlMYWJlbHNDb29yZHM9W10sdC55VGl0bGVDb29yZHM9W10sdC5iYXJQYWRGb3JOdW1lcmljQXhpcz0wLHQucGFkSG9yaXpvbnRhbD0wLHQueFJhbmdlPTAsdC55UmFuZ2U9W10sdC56UmFuZ2U9MCx0LmRhdGFQb2ludHM9MCx0LnhUaWNrQW1vdW50PTB9fSx7a2V5OlwiZ2xvYmFsVmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybntjaGFydElEOm51bGwsY3VpZDpudWxsLGV2ZW50czp7YmVmb3JlTW91bnQ6W10sbW91bnRlZDpbXSx1cGRhdGVkOltdLGNsaWNrZWQ6W10sc2VsZWN0aW9uOltdLGRhdGFQb2ludFNlbGVjdGlvbjpbXSx6b29tZWQ6W10sc2Nyb2xsZWQ6W119LGNvbG9yczpbXSxjbGllbnRYOm51bGwsY2xpZW50WTpudWxsLGZpbGw6e2NvbG9yczpbXX0sc3Ryb2tlOntjb2xvcnM6W119LGRhdGFMYWJlbHM6e3N0eWxlOntjb2xvcnM6W119fSxyYWRhclBvbHlnb25zOntmaWxsOntjb2xvcnM6W119fSxtYXJrZXJzOntjb2xvcnM6W10sc2l6ZTp0Lm1hcmtlcnMuc2l6ZSxsYXJnZXN0U2l6ZTowfSxhbmltYXRpb25FbmRlZDohMSxpc1RvdWNoRGV2aWNlOlwib250b3VjaHN0YXJ0XCJpbiB3aW5kb3d8fG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzLGlzRGlydHk6ITEsaXNFeGVjQ2FsbGVkOiExLGluaXRpYWxDb25maWc6bnVsbCxpbml0aWFsU2VyaWVzOltdLGxhc3RYQXhpczpbXSxsYXN0WUF4aXM6W10sY29sdW1uU2VyaWVzOm51bGwsbGFiZWxzOltdLHRpbWVzY2FsZUxhYmVsczpbXSxub0xhYmVsc1Byb3ZpZGVkOiExLGFsbFNlcmllc0NvbGxhcHNlZDohMSxjb2xsYXBzZWRTZXJpZXM6W10sY29sbGFwc2VkU2VyaWVzSW5kaWNlczpbXSxhbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXM6W10sYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlczpbXSxyaXNpbmdTZXJpZXM6W10sZGF0YUZvcm1hdFhOdW1lcmljOiExLGNhcHR1cmVkU2VyaWVzSW5kZXg6LTEsY2FwdHVyZWREYXRhUG9pbnRJbmRleDotMSxzZWxlY3RlZERhdGFQb2ludHM6W10sZ29sZGVuUGFkZGluZzozNSxpbnZhbGlkTG9nU2NhbGU6ITEsaWdub3JlWUF4aXNJbmRleGVzOltdLHlBeGlzU2FtZVNjYWxlSW5kaWNlczpbXSxtYXhWYWxzSW5BcnJheUluZGV4OjAscmFkaWFsU2l6ZTowLHNlbGVjdGlvbjp2b2lkIDAsem9vbUVuYWJsZWQ6XCJ6b29tXCI9PT10LmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkJiZ0LmNoYXJ0LnRvb2xiYXIudG9vbHMuem9vbSYmdC5jaGFydC56b29tLmVuYWJsZWQscGFuRW5hYmxlZDpcInBhblwiPT09dC5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZCYmdC5jaGFydC50b29sYmFyLnRvb2xzLnBhbixzZWxlY3Rpb25FbmFibGVkOlwic2VsZWN0aW9uXCI9PT10LmNoYXJ0LnRvb2xiYXIuYXV0b1NlbGVjdGVkJiZ0LmNoYXJ0LnRvb2xiYXIudG9vbHMuc2VsZWN0aW9uLHlheGlzOm51bGwsbW91c2Vkb3duOiExLGxhc3RDbGllbnRQb3NpdGlvbjp7fSx2aXNpYmxlWFJhbmdlOnZvaWQgMCx5VmFsdWVEZWNpbWFsOjAsdG90YWw6MCxTVkdOUzpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsc3ZnV2lkdGg6MCxzdmdIZWlnaHQ6MCxub0RhdGE6ITEsbG9jYWxlOnt9LGRvbTp7fSxtZW1vcnk6e21ldGhvZHNUb0V4ZWM6W119LHNob3VsZEFuaW1hdGU6ITAsc2tpcExhc3RUaW1lbGluZWxhYmVsOiExLHNraXBGaXJzdFRpbWVsaW5lbGFiZWw6ITEsZGVsYXllZEVsZW1lbnRzOltdLGF4aXNDaGFydHM6ITAsaXNEYXRhWFlaOiExLHJlc2l6ZWQ6ITEscmVzaXplVGltZXI6bnVsbCxjb21ib0NoYXJ0czohMSxkYXRhQ2hhbmdlZDohMSxwcmV2aW91c1BhdGhzOltdLGFsbFNlcmllc0hhc0VxdWFsWDohMCxwb2ludHNBcnJheTpbXSxkYXRhTGFiZWxzUmVjdHM6W10sbGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXM6W10saGFzTnVsbFZhbHVlczohMSxlYXNpbmc6bnVsbCx6b29tZWQ6ITEsZ3JpZFdpZHRoOjAsZ3JpZEhlaWdodDowLHJvdGF0ZVhMYWJlbHM6ITEsZGVmYXVsdExhYmVsczohMSx4TGFiZWxGb3JtYXR0ZXI6dm9pZCAwLHlMYWJlbEZvcm1hdHRlcnM6W10seGF4aXNUb29sdGlwRm9ybWF0dGVyOnZvaWQgMCx0dEtleUZvcm1hdHRlcjp2b2lkIDAsdHRWYWw6dm9pZCAwLHR0WkZvcm1hdHRlcjp2b2lkIDAsTElORV9IRUlHSFRfUkFUSU86MS42MTgseEF4aXNMYWJlbHNIZWlnaHQ6MCx4QXhpc0dyb3VwTGFiZWxzSGVpZ2h0OjAseEF4aXNMYWJlbHNXaWR0aDowLHlBeGlzTGFiZWxzV2lkdGg6MCxzY2FsZVg6MSxzY2FsZVk6MSx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHRyYW5zbGF0ZVlBeGlzWDpbXSx5QXhpc1dpZHRoczpbXSx0cmFuc2xhdGVYQXhpc1k6MCx0cmFuc2xhdGVYQXhpc1g6MCx0b29sdGlwOm51bGx9fX0se2tleTpcImluaXRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdsb2JhbFZhcnModCk7cmV0dXJuIHRoaXMuaW5pdEdsb2JhbFZhcnMoZSksZS5pbml0aWFsQ29uZmlnPXguZXh0ZW5kKHt9LHQpLGUuaW5pdGlhbFNlcmllcz14LmNsb25lKHQuc2VyaWVzKSxlLmxhc3RYQXhpcz14LmNsb25lKGUuaW5pdGlhbENvbmZpZy54YXhpcyksZS5sYXN0WUF4aXM9eC5jbG9uZShlLmluaXRpYWxDb25maWcueWF4aXMpLGV9fV0pLHR9KCksRj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMub3B0cz1lfXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRSh0aGlzLm9wdHMpLmluaXQoe3Jlc3BvbnNpdmVPdmVycmlkZTohMX0pO3JldHVybntjb25maWc6dCxnbG9iYWxzOihuZXcgWSkuaW5pdCh0KX19fV0pLHR9KCksUj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLm9wdHM9bnVsbCx0aGlzLnNlcmllc0luZGV4PTB9cmV0dXJuIHIodCxbe2tleTpcImNsaXBwZWRJbWdBcmVhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcsYT1wYXJzZUludChlLmdsb2JhbHMuZ3JpZFdpZHRoLDEwKSxzPXBhcnNlSW50KGUuZ2xvYmFscy5ncmlkSGVpZ2h0LDEwKSxyPWE+cz9hOnMsbz10LmltYWdlLG49MCxsPTA7dm9pZCAwPT09dC53aWR0aCYmdm9pZCAwPT09dC5oZWlnaHQ/dm9pZCAwIT09aS5maWxsLmltYWdlLndpZHRoJiZ2b2lkIDAhPT1pLmZpbGwuaW1hZ2UuaGVpZ2h0PyhuPWkuZmlsbC5pbWFnZS53aWR0aCsxLGw9aS5maWxsLmltYWdlLmhlaWdodCk6KG49cisxLGw9cik6KG49dC53aWR0aCxsPXQuaGVpZ2h0KTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5nbG9iYWxzLlNWR05TLFwicGF0dGVyblwiKTttLnNldEF0dHJzKGgse2lkOnQucGF0dGVybklELHBhdHRlcm5Vbml0czp0LnBhdHRlcm5Vbml0cz90LnBhdHRlcm5Vbml0czpcInVzZXJTcGFjZU9uVXNlXCIsd2lkdGg6bitcInB4XCIsaGVpZ2h0OmwrXCJweFwifSk7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcImltYWdlXCIpO2guYXBwZW5kQ2hpbGQoYyksYy5zZXRBdHRyaWJ1dGVOUyh3aW5kb3cuU1ZHLnhsaW5rLFwiaHJlZlwiLG8pLG0uc2V0QXR0cnMoYyx7eDowLHk6MCxwcmVzZXJ2ZUFzcGVjdFJhdGlvOlwibm9uZVwiLHdpZHRoOm4rXCJweFwiLGhlaWdodDpsK1wicHhcIn0pLGMuc3R5bGUub3BhY2l0eT10Lm9wYWNpdHksZS5nbG9iYWxzLmRvbS5lbERlZnMubm9kZS5hcHBlbmRDaGlsZChoKX19LHtrZXk6XCJnZXRTZXJpZXNJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPWUuY29uZmlnLmNoYXJ0LnR5cGU7cmV0dXJuKFwiYmFyXCI9PT1pfHxcInJhbmdlQmFyXCI9PT1pKSYmZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRpc3RyaWJ1dGVkfHxcImhlYXRtYXBcIj09PWl8fFwidHJlZW1hcFwiPT09aT90aGlzLnNlcmllc0luZGV4PXQuc2VyaWVzTnVtYmVyOnRoaXMuc2VyaWVzSW5kZXg9dC5zZXJpZXNOdW1iZXIlZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgsdGhpcy5zZXJpZXNJbmRleH19LHtrZXk6XCJmaWxsUGF0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudzt0aGlzLm9wdHM9dDt2YXIgaSxhLHMscj10aGlzLncuY29uZmlnO3RoaXMuc2VyaWVzSW5kZXg9dGhpcy5nZXRTZXJpZXNJbmRleCh0KTt2YXIgbz10aGlzLmdldEZpbGxDb2xvcnMoKVt0aGlzLnNlcmllc0luZGV4XTt2b2lkIDAhPT1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW3RoaXMuc2VyaWVzSW5kZXhdJiYobz1lLmdsb2JhbHMuc2VyaWVzQ29sb3JzW3RoaXMuc2VyaWVzSW5kZXhdKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBvJiYobz1vKHtzZXJpZXNJbmRleDp0aGlzLnNlcmllc0luZGV4LGRhdGFQb2ludEluZGV4OnQuZGF0YVBvaW50SW5kZXgsdmFsdWU6dC52YWx1ZSx3OmV9KSk7dmFyIG49dC5maWxsVHlwZT90LmZpbGxUeXBlOnRoaXMuZ2V0RmlsbFR5cGUodGhpcy5zZXJpZXNJbmRleCksbD1BcnJheS5pc0FycmF5KHIuZmlsbC5vcGFjaXR5KT9yLmZpbGwub3BhY2l0eVt0aGlzLnNlcmllc0luZGV4XTpyLmZpbGwub3BhY2l0eTt0LmNvbG9yJiYobz10LmNvbG9yKSxvfHwobz1cIiNmZmZcIixjb25zb2xlLndhcm4oXCJ1bmRlZmluZWQgY29sb3IgLSBBcGV4Q2hhcnRzXCIpKTt2YXIgaD1vO2lmKC0xPT09by5pbmRleE9mKFwicmdiXCIpP28ubGVuZ3RoPDkmJihoPXguaGV4VG9SZ2JhKG8sbCkpOm8uaW5kZXhPZihcInJnYmFcIik+LTEmJihsPXguZ2V0T3BhY2l0eUZyb21SR0JBKG8pKSx0Lm9wYWNpdHkmJihsPXQub3BhY2l0eSksXCJwYXR0ZXJuXCI9PT1uJiYoYT10aGlzLmhhbmRsZVBhdHRlcm5GaWxsKHtmaWxsQ29uZmlnOnQuZmlsbENvbmZpZyxwYXR0ZXJuRmlsbDphLGZpbGxDb2xvcjpvLGZpbGxPcGFjaXR5OmwsZGVmYXVsdENvbG9yOmh9KSksXCJncmFkaWVudFwiPT09biYmKHM9dGhpcy5oYW5kbGVHcmFkaWVudEZpbGwoe2ZpbGxDb25maWc6dC5maWxsQ29uZmlnLGZpbGxDb2xvcjpvLGZpbGxPcGFjaXR5OmwsaTp0aGlzLnNlcmllc0luZGV4fSkpLFwiaW1hZ2VcIj09PW4pe3ZhciBjPXIuZmlsbC5pbWFnZS5zcmMsZD10LnBhdHRlcm5JRD90LnBhdHRlcm5JRDpcIlwiO3RoaXMuY2xpcHBlZEltZ0FyZWEoe29wYWNpdHk6bCxpbWFnZTpBcnJheS5pc0FycmF5KGMpP3Quc2VyaWVzTnVtYmVyPGMubGVuZ3RoP2NbdC5zZXJpZXNOdW1iZXJdOmNbMF06Yyx3aWR0aDp0LndpZHRoP3Qud2lkdGg6dm9pZCAwLGhlaWdodDp0LmhlaWdodD90LmhlaWdodDp2b2lkIDAscGF0dGVyblVuaXRzOnQucGF0dGVyblVuaXRzLHBhdHRlcm5JRDpcInBhdHRlcm5cIi5jb25jYXQoZS5nbG9iYWxzLmN1aWQpLmNvbmNhdCh0LnNlcmllc051bWJlcisxKS5jb25jYXQoZCl9KSxpPVwidXJsKCNwYXR0ZXJuXCIuY29uY2F0KGUuZ2xvYmFscy5jdWlkKS5jb25jYXQodC5zZXJpZXNOdW1iZXIrMSkuY29uY2F0KGQsXCIpXCIpfWVsc2UgaT1cImdyYWRpZW50XCI9PT1uP3M6XCJwYXR0ZXJuXCI9PT1uP2E6aDtyZXR1cm4gdC5zb2xpZCYmKGk9aCksaX19LHtrZXk6XCJnZXRGaWxsVHlwZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztyZXR1cm4gQXJyYXkuaXNBcnJheShlLmNvbmZpZy5maWxsLnR5cGUpP2UuY29uZmlnLmZpbGwudHlwZVt0XTplLmNvbmZpZy5maWxsLnR5cGV9fSx7a2V5OlwiZ2V0RmlsbENvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcsaT10aGlzLm9wdHMsYT1bXTtyZXR1cm4gdC5nbG9iYWxzLmNvbWJvQ2hhcnRzP1wibGluZVwiPT09dC5jb25maWcuc2VyaWVzW3RoaXMuc2VyaWVzSW5kZXhdLnR5cGU/QXJyYXkuaXNBcnJheSh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk/YT10Lmdsb2JhbHMuc3Ryb2tlLmNvbG9yczphLnB1c2godC5nbG9iYWxzLnN0cm9rZS5jb2xvcnMpOkFycmF5LmlzQXJyYXkodC5nbG9iYWxzLmZpbGwuY29sb3JzKT9hPXQuZ2xvYmFscy5maWxsLmNvbG9yczphLnB1c2godC5nbG9iYWxzLmZpbGwuY29sb3JzKTpcImxpbmVcIj09PWUuY2hhcnQudHlwZT9BcnJheS5pc0FycmF5KHQuZ2xvYmFscy5zdHJva2UuY29sb3JzKT9hPXQuZ2xvYmFscy5zdHJva2UuY29sb3JzOmEucHVzaCh0Lmdsb2JhbHMuc3Ryb2tlLmNvbG9ycyk6QXJyYXkuaXNBcnJheSh0Lmdsb2JhbHMuZmlsbC5jb2xvcnMpP2E9dC5nbG9iYWxzLmZpbGwuY29sb3JzOmEucHVzaCh0Lmdsb2JhbHMuZmlsbC5jb2xvcnMpLHZvaWQgMCE9PWkuZmlsbENvbG9ycyYmKGE9W10sQXJyYXkuaXNBcnJheShpLmZpbGxDb2xvcnMpP2E9aS5maWxsQ29sb3JzLnNsaWNlKCk6YS5wdXNoKGkuZmlsbENvbG9ycykpLGF9fSx7a2V5OlwiaGFuZGxlUGF0dGVybkZpbGxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpbGxDb25maWcsaT10LnBhdHRlcm5GaWxsLGE9dC5maWxsQ29sb3Iscz10LmZpbGxPcGFjaXR5LHI9dC5kZWZhdWx0Q29sb3Isbz10aGlzLncuY29uZmlnLmZpbGw7ZSYmKG89ZSk7dmFyIG49dGhpcy5vcHRzLGw9bmV3IG0odGhpcy5jdHgpLGg9QXJyYXkuaXNBcnJheShvLnBhdHRlcm4uc3Ryb2tlV2lkdGgpP28ucGF0dGVybi5zdHJva2VXaWR0aFt0aGlzLnNlcmllc0luZGV4XTpvLnBhdHRlcm4uc3Ryb2tlV2lkdGgsYz1hO0FycmF5LmlzQXJyYXkoby5wYXR0ZXJuLnN0eWxlKT9pPXZvaWQgMCE9PW8ucGF0dGVybi5zdHlsZVtuLnNlcmllc051bWJlcl0/bC5kcmF3UGF0dGVybihvLnBhdHRlcm4uc3R5bGVbbi5zZXJpZXNOdW1iZXJdLG8ucGF0dGVybi53aWR0aCxvLnBhdHRlcm4uaGVpZ2h0LGMsaCxzKTpyOmk9bC5kcmF3UGF0dGVybihvLnBhdHRlcm4uc3R5bGUsby5wYXR0ZXJuLndpZHRoLG8ucGF0dGVybi5oZWlnaHQsYyxoLHMpO3JldHVybiBpfX0se2tleTpcImhhbmRsZUdyYWRpZW50RmlsbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXQuZmlsbENvbG9yLGE9dC5maWxsT3BhY2l0eSxzPXQuZmlsbENvbmZpZyxyPXQuaSxvPXRoaXMudy5jb25maWcuZmlsbDtzJiYobz1lKGUoe30sbykscykpO3ZhciBuLGw9dGhpcy5vcHRzLGg9bmV3IG0odGhpcy5jdHgpLGM9bmV3IHgsZD1vLmdyYWRpZW50LnR5cGUsZz1pLHU9dm9pZCAwPT09by5ncmFkaWVudC5vcGFjaXR5RnJvbT9hOkFycmF5LmlzQXJyYXkoby5ncmFkaWVudC5vcGFjaXR5RnJvbSk/by5ncmFkaWVudC5vcGFjaXR5RnJvbVtyXTpvLmdyYWRpZW50Lm9wYWNpdHlGcm9tO2cuaW5kZXhPZihcInJnYmFcIik+LTEmJih1PXguZ2V0T3BhY2l0eUZyb21SR0JBKGcpKTt2YXIgcD12b2lkIDA9PT1vLmdyYWRpZW50Lm9wYWNpdHlUbz9hOkFycmF5LmlzQXJyYXkoby5ncmFkaWVudC5vcGFjaXR5VG8pP28uZ3JhZGllbnQub3BhY2l0eVRvW3JdOm8uZ3JhZGllbnQub3BhY2l0eVRvO2lmKHZvaWQgMD09PW8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9yc3x8MD09PW8uZ3JhZGllbnQuZ3JhZGllbnRUb0NvbG9ycy5sZW5ndGgpbj1cImRhcmtcIj09PW8uZ3JhZGllbnQuc2hhZGU/Yy5zaGFkZUNvbG9yKC0xKnBhcnNlRmxvYXQoby5ncmFkaWVudC5zaGFkZUludGVuc2l0eSksaS5pbmRleE9mKFwicmdiXCIpPi0xP3gucmdiMmhleChpKTppKTpjLnNoYWRlQ29sb3IocGFyc2VGbG9hdChvLmdyYWRpZW50LnNoYWRlSW50ZW5zaXR5KSxpLmluZGV4T2YoXCJyZ2JcIik+LTE/eC5yZ2IyaGV4KGkpOmkpO2Vsc2UgaWYoby5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzW2wuc2VyaWVzTnVtYmVyXSl7dmFyIGY9by5ncmFkaWVudC5ncmFkaWVudFRvQ29sb3JzW2wuc2VyaWVzTnVtYmVyXTtuPWYsZi5pbmRleE9mKFwicmdiYVwiKT4tMSYmKHA9eC5nZXRPcGFjaXR5RnJvbVJHQkEoZikpfWVsc2Ugbj1pO2lmKG8uZ3JhZGllbnQuZ3JhZGllbnRGcm9tJiYoZz1vLmdyYWRpZW50LmdyYWRpZW50RnJvbSksby5ncmFkaWVudC5ncmFkaWVudFRvJiYobj1vLmdyYWRpZW50LmdyYWRpZW50VG8pLG8uZ3JhZGllbnQuaW52ZXJzZUNvbG9ycyl7dmFyIGI9ZztnPW4sbj1ifXJldHVybiBnLmluZGV4T2YoXCJyZ2JcIik+LTEmJihnPXgucmdiMmhleChnKSksbi5pbmRleE9mKFwicmdiXCIpPi0xJiYobj14LnJnYjJoZXgobikpLGguZHJhd0dyYWRpZW50KGQsZyxuLHUscCxsLnNpemUsby5ncmFkaWVudC5zdG9wcyxvLmdyYWRpZW50LmNvbG9yU3RvcHMscil9fV0pLHR9KCksSD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJzZXRHbG9iYWxNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodC5nbG9iYWxzLm1hcmtlcnMuc2l6ZT1BcnJheS5pc0FycmF5KHQuY29uZmlnLm1hcmtlcnMuc2l6ZSk/dC5jb25maWcubWFya2Vycy5zaXplOlt0LmNvbmZpZy5tYXJrZXJzLnNpemVdLHQuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPjApe2lmKHQuZ2xvYmFscy5tYXJrZXJzLnNpemUubGVuZ3RoPHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKzEpZm9yKHZhciBlPTA7ZTw9dC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7ZSsrKXZvaWQgMD09PXQuZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0mJnQuZ2xvYmFscy5tYXJrZXJzLnNpemUucHVzaCh0Lmdsb2JhbHMubWFya2Vycy5zaXplWzBdKX1lbHNlIHQuZ2xvYmFscy5tYXJrZXJzLnNpemU9dC5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY29uZmlnLm1hcmtlcnMuc2l6ZX0pKX19LHtrZXk6XCJwbG90Q2hhcnRNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHMscj1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdLG89dGhpcy53LG49ZSxsPXQsaD1udWxsLGM9bmV3IG0odGhpcy5jdHgpLGQ9by5jb25maWcubWFya2Vycy5kaXNjcmV0ZSYmby5jb25maWcubWFya2Vycy5kaXNjcmV0ZS5sZW5ndGg7aWYoKG8uZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0+MHx8cnx8ZCkmJihoPWMuZ3JvdXAoe2NsYXNzOnJ8fGQ/XCJcIjpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIn0pKS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdChvLmdsb2JhbHMuY3VpZCxcIilcIikpLEFycmF5LmlzQXJyYXkobC54KSlmb3IodmFyIGc9MDtnPGwueC5sZW5ndGg7ZysrKXt2YXIgdT1pOzE9PT1pJiYwPT09ZyYmKHU9MCksMT09PWkmJjE9PT1nJiYodT0xKTt2YXIgcD1cImFwZXhjaGFydHMtbWFya2VyXCI7aWYoXCJsaW5lXCIhPT1vLmNvbmZpZy5jaGFydC50eXBlJiZcImFyZWFcIiE9PW8uY29uZmlnLmNoYXJ0LnR5cGV8fG8uZ2xvYmFscy5jb21ib0NoYXJ0c3x8by5jb25maWcudG9vbHRpcC5pbnRlcnNlY3R8fChwKz1cIiBuby1wb2ludGVyLWV2ZW50c1wiKSwoQXJyYXkuaXNBcnJheShvLmNvbmZpZy5tYXJrZXJzLnNpemUpP28uZ2xvYmFscy5tYXJrZXJzLnNpemVbZV0+MDpvLmNvbmZpZy5tYXJrZXJzLnNpemU+MCl8fHJ8fGQpe3guaXNOdW1iZXIobC55W2ddKT9wKz1cIiB3XCIuY29uY2F0KHgucmFuZG9tSWQoKSk6cD1cImFwZXhjaGFydHMtbnVsbHBvaW50XCI7dmFyIGY9dGhpcy5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOnAsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDp1fSk7by5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0mJihvLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVt1XS5maWxsQ29sb3ImJihmLnBvaW50RmlsbENvbG9yPW8uY29uZmlnLnNlcmllc1tuXS5kYXRhW3VdLmZpbGxDb2xvciksby5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uc3Ryb2tlQ29sb3ImJihmLnBvaW50U3Ryb2tlQ29sb3I9by5jb25maWcuc2VyaWVzW25dLmRhdGFbdV0uc3Ryb2tlQ29sb3IpKSxhJiYoZi5wU2l6ZT1hKSwobC54W2ddPDB8fGwueFtnXT5vLmdsb2JhbHMuZ3JpZFdpZHRofHxsLnlbZ108LW8uZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplfHxsLnlbZ10+by5nbG9iYWxzLmdyaWRIZWlnaHQrby5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemUpJiYoZi5wU2l6ZT0wKSwocz1jLmRyYXdNYXJrZXIobC54W2ddLGwueVtnXSxmKSkuYXR0cihcInJlbFwiLHUpLHMuYXR0cihcImpcIix1KSxzLmF0dHIoXCJpbmRleFwiLGUpLHMubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsZi5wU2l6ZSksbmV3IHYodGhpcy5jdHgpLnNldFNlbGVjdGlvbkZpbHRlcihzLGUsdSksdGhpcy5hZGRFdmVudHMocyksaCYmaC5hZGQocyl9ZWxzZSB2b2lkIDA9PT1vLmdsb2JhbHMucG9pbnRzQXJyYXlbZV0mJihvLmdsb2JhbHMucG9pbnRzQXJyYXlbZV09W10pLG8uZ2xvYmFscy5wb2ludHNBcnJheVtlXS5wdXNoKFtsLnhbZ10sbC55W2ddXSl9cmV0dXJuIGh9fSx7a2V5OlwiZ2V0TWFya2VyQ29uZmlnXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jc3NDbGFzcyxpPXQuc2VyaWVzSW5kZXgsYT10LmRhdGFQb2ludEluZGV4LHM9dm9pZCAwPT09YT9udWxsOmEscj10LmZpbmlzaFJhZGl1cyxvPXZvaWQgMD09PXI/bnVsbDpyLG49dGhpcy53LGw9dGhpcy5nZXRNYXJrZXJTdHlsZShpKSxoPW4uZ2xvYmFscy5tYXJrZXJzLnNpemVbaV0sYz1uLmNvbmZpZy5tYXJrZXJzO3JldHVybiBudWxsIT09cyYmYy5kaXNjcmV0ZS5sZW5ndGgmJmMuZGlzY3JldGUubWFwKChmdW5jdGlvbih0KXt0LnNlcmllc0luZGV4PT09aSYmdC5kYXRhUG9pbnRJbmRleD09PXMmJihsLnBvaW50U3Ryb2tlQ29sb3I9dC5zdHJva2VDb2xvcixsLnBvaW50RmlsbENvbG9yPXQuZmlsbENvbG9yLGg9dC5zaXplLGwucG9pbnRTaGFwZT10LnNoYXBlKX0pKSx7cFNpemU6bnVsbD09PW8/aDpvLHBSYWRpdXM6Yy5yYWRpdXMsd2lkdGg6QXJyYXkuaXNBcnJheShjLndpZHRoKT9jLndpZHRoW2ldOmMud2lkdGgsaGVpZ2h0OkFycmF5LmlzQXJyYXkoYy5oZWlnaHQpP2MuaGVpZ2h0W2ldOmMuaGVpZ2h0LHBvaW50U3Ryb2tlV2lkdGg6QXJyYXkuaXNBcnJheShjLnN0cm9rZVdpZHRoKT9jLnN0cm9rZVdpZHRoW2ldOmMuc3Ryb2tlV2lkdGgscG9pbnRTdHJva2VDb2xvcjpsLnBvaW50U3Ryb2tlQ29sb3IscG9pbnRGaWxsQ29sb3I6bC5wb2ludEZpbGxDb2xvcixzaGFwZTpsLnBvaW50U2hhcGV8fChBcnJheS5pc0FycmF5KGMuc2hhcGUpP2Muc2hhcGVbaV06Yy5zaGFwZSksY2xhc3M6ZSxwb2ludFN0cm9rZU9wYWNpdHk6QXJyYXkuaXNBcnJheShjLnN0cm9rZU9wYWNpdHkpP2Muc3Ryb2tlT3BhY2l0eVtpXTpjLnN0cm9rZU9wYWNpdHkscG9pbnRTdHJva2VEYXNoQXJyYXk6QXJyYXkuaXNBcnJheShjLnN0cm9rZURhc2hBcnJheSk/Yy5zdHJva2VEYXNoQXJyYXlbaV06Yy5zdHJva2VEYXNoQXJyYXkscG9pbnRGaWxsT3BhY2l0eTpBcnJheS5pc0FycmF5KGMuZmlsbE9wYWNpdHkpP2MuZmlsbE9wYWNpdHlbaV06Yy5maWxsT3BhY2l0eSxzZXJpZXNJbmRleDppfX19LHtrZXk6XCJhZGRFdmVudHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCk7dC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsaS5wYXRoTW91c2VFbnRlci5iaW5kKHRoaXMuY3R4LHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixpLnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcy5jdHgsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsaS5wYXRoTW91c2VEb3duLmJpbmQodGhpcy5jdHgsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixlLmNvbmZpZy5tYXJrZXJzLm9uQ2xpY2spLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwiZGJsY2xpY2tcIixlLmNvbmZpZy5tYXJrZXJzLm9uRGJsQ2xpY2spLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLGkucGF0aE1vdXNlRG93bi5iaW5kKHRoaXMuY3R4LHQpLHtwYXNzaXZlOiEwfSl9fSx7a2V5OlwiZ2V0TWFya2VyU3R5bGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmdsb2JhbHMubWFya2Vycy5jb2xvcnMsYT1lLmNvbmZpZy5tYXJrZXJzLnN0cm9rZUNvbG9yfHxlLmNvbmZpZy5tYXJrZXJzLnN0cm9rZUNvbG9ycztyZXR1cm57cG9pbnRTdHJva2VDb2xvcjpBcnJheS5pc0FycmF5KGEpP2FbdF06YSxwb2ludEZpbGxDb2xvcjpBcnJheS5pc0FycmF5KGkpP2lbdF06aX19fV0pLHR9KCksRD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZH1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1uZXcgbSh0aGlzLmN0eCkscj1pLnJlYWxJbmRleCxvPWkucG9pbnRzUG9zLG49aS56UmF0aW8sbD1pLmVsUGFyZW50LGg9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIGFwZXhjaGFydHMtc2VyaWVzLVwiLmNvbmNhdChhLmNvbmZpZy5jaGFydC50eXBlKX0pO2lmKGguYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hcmtlck1hc2tcIi5jb25jYXQoYS5nbG9iYWxzLmN1aWQsXCIpXCIpKSxBcnJheS5pc0FycmF5KG8ueCkpZm9yKHZhciBjPTA7YzxvLngubGVuZ3RoO2MrKyl7dmFyIGQ9ZSsxLGc9ITA7MD09PWUmJjA9PT1jJiYoZD0wKSwwPT09ZSYmMT09PWMmJihkPTEpO3ZhciB1PTAscD1hLmdsb2JhbHMubWFya2Vycy5zaXplW3JdO2lmKG4hPT0xLzApe3ZhciBmPWEuY29uZmlnLnBsb3RPcHRpb25zLmJ1YmJsZTtwPWEuZ2xvYmFscy5zZXJpZXNaW3JdW2RdLGYuelNjYWxpbmcmJihwLz1uKSxmLm1pbkJ1YmJsZVJhZGl1cyYmcDxmLm1pbkJ1YmJsZVJhZGl1cyYmKHA9Zi5taW5CdWJibGVSYWRpdXMpLGYubWF4QnViYmxlUmFkaXVzJiZwPmYubWF4QnViYmxlUmFkaXVzJiYocD1mLm1heEJ1YmJsZVJhZGl1cyl9YS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkfHwodT1wKTt2YXIgeD1vLnhbY10sYj1vLnlbY107aWYodT11fHwwLG51bGwhPT1iJiZ2b2lkIDAhPT1hLmdsb2JhbHMuc2VyaWVzW3JdW2RdfHwoZz0hMSksZyl7dmFyIHY9dGhpcy5kcmF3UG9pbnQoeCxiLHUscCxyLGQsZSk7aC5hZGQodil9bC5hZGQoaCl9fX0se2tleTpcImRyYXdQb2ludFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyLG8pe3ZhciBuPXRoaXMudyxsPXMsaD1uZXcgYih0aGlzLmN0eCksYz1uZXcgdih0aGlzLmN0eCksZD1uZXcgUih0aGlzLmN0eCksZz1uZXcgSCh0aGlzLmN0eCksdT1uZXcgbSh0aGlzLmN0eCkscD1nLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLW1hcmtlclwiLHNlcmllc0luZGV4OmwsZGF0YVBvaW50SW5kZXg6cixmaW5pc2hSYWRpdXM6XCJidWJibGVcIj09PW4uY29uZmlnLmNoYXJ0LnR5cGV8fG4uZ2xvYmFscy5jb21ib0NoYXJ0cyYmbi5jb25maWcuc2VyaWVzW3NdJiZcImJ1YmJsZVwiPT09bi5jb25maWcuc2VyaWVzW3NdLnR5cGU/YTpudWxsfSk7YT1wLnBTaXplO3ZhciBmLHg9ZC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnMsZGF0YVBvaW50SW5kZXg6cixjb2xvcjpwLnBvaW50RmlsbENvbG9yLHBhdHRlcm5Vbml0czpcIm9iamVjdEJvdW5kaW5nQm94XCIsdmFsdWU6bi5nbG9iYWxzLnNlcmllc1tzXVtvXX0pO2lmKFwiY2lyY2xlXCI9PT1wLnNoYXBlP2Y9dS5kcmF3Q2lyY2xlKGkpOlwic3F1YXJlXCIhPT1wLnNoYXBlJiZcInJlY3RcIiE9PXAuc2hhcGV8fChmPXUuZHJhd1JlY3QoMCwwLHAud2lkdGgtcC5wb2ludFN0cm9rZVdpZHRoLzIscC5oZWlnaHQtcC5wb2ludFN0cm9rZVdpZHRoLzIscC5wUmFkaXVzKSksbi5jb25maWcuc2VyaWVzW2xdLmRhdGFbcl0mJm4uY29uZmlnLnNlcmllc1tsXS5kYXRhW3JdLmZpbGxDb2xvciYmKHg9bi5jb25maWcuc2VyaWVzW2xdLmRhdGFbcl0uZmlsbENvbG9yKSxmLmF0dHIoe3g6dC1wLndpZHRoLzItcC5wb2ludFN0cm9rZVdpZHRoLzIseTplLXAuaGVpZ2h0LzItcC5wb2ludFN0cm9rZVdpZHRoLzIsY3g6dCxjeTplLGZpbGw6eCxcImZpbGwtb3BhY2l0eVwiOnAucG9pbnRGaWxsT3BhY2l0eSxzdHJva2U6cC5wb2ludFN0cm9rZUNvbG9yLHI6YSxcInN0cm9rZS13aWR0aFwiOnAucG9pbnRTdHJva2VXaWR0aCxcInN0cm9rZS1kYXNoYXJyYXlcIjpwLnBvaW50U3Ryb2tlRGFzaEFycmF5LFwic3Ryb2tlLW9wYWNpdHlcIjpwLnBvaW50U3Ryb2tlT3BhY2l0eX0pLG4uY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIHk9bi5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztjLmRyb3BTaGFkb3coZix5LHMpfWlmKCF0aGlzLmluaXRpYWxBbmltfHxuLmdsb2JhbHMuZGF0YUNoYW5nZWR8fG4uZ2xvYmFscy5yZXNpemVkKW4uZ2xvYmFscy5hbmltYXRpb25FbmRlZD0hMDtlbHNle3ZhciB3PW4uY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQ7aC5hbmltYXRlTWFya2VyKGYsMCxcImNpcmNsZVwiPT09cC5zaGFwZT9hOnt3aWR0aDpwLndpZHRoLGhlaWdodDpwLmhlaWdodH0sdyxuLmdsb2JhbHMuZWFzaW5nLChmdW5jdGlvbigpe3dpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2guYW5pbWF0aW9uQ29tcGxldGVkKGYpfSksMTAwKX0pKX1pZihuLmdsb2JhbHMuZGF0YUNoYW5nZWQmJlwiY2lyY2xlXCI9PT1wLnNoYXBlKWlmKHRoaXMuZHluYW1pY0FuaW0pe3ZhciBrLEEsUyxDLEw9bi5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkO251bGwhPShDPW4uZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdJiZuLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXVtvXSkmJihrPUMueCxBPUMueSxTPXZvaWQgMCE9PUMucj9DLnI6YSk7Zm9yKHZhciBQPTA7UDxuLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDtQKyspbi5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc1tQXS5pbmRleD09PXMmJihMPTEsYT0wKTswPT09dCYmMD09PWUmJihhPTApLGguYW5pbWF0ZUNpcmNsZShmLHtjeDprLGN5OkEscjpTfSx7Y3g6dCxjeTplLHI6YX0sTCxuLmdsb2JhbHMuZWFzaW5nKX1lbHNlIGYuYXR0cih7cjphfSk7cmV0dXJuIGYuYXR0cih7cmVsOnIsajpyLGluZGV4OnMsXCJkZWZhdWx0LW1hcmtlci1zaXplXCI6YX0pLGMuc2V0U2VsZWN0aW9uRmlsdGVyKGYscyxyKSxnLmFkZEV2ZW50cyhmKSxmLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbWFya2VyXCIpLGZ9fSx7a2V5OlwiY2VudGVyVGV4dEluQnViYmxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybnt5OnQrPXBhcnNlSW50KGUuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLzR9fX1dKSx0fSgpLE89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRhdGFMYWJlbHNDb3JyZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIsbyl7dmFyIG49dGhpcy53LGw9ITEsaD1uZXcgbSh0aGlzLmN0eCkuZ2V0VGV4dFJlY3RzKGksbyksYz1oLndpZHRoLGQ9aC5oZWlnaHQ7ZTwwJiYoZT0wKSxlPm4uZ2xvYmFscy5ncmlkSGVpZ2h0K2QmJihlPW4uZ2xvYmFscy5ncmlkSGVpZ2h0K2QvMiksdm9pZCAwPT09bi5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXSYmKG4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV09W10pLG4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV0ucHVzaCh7eDp0LHk6ZSx3aWR0aDpjLGhlaWdodDpkfSk7dmFyIGc9bi5nbG9iYWxzLmRhdGFMYWJlbHNSZWN0c1thXS5sZW5ndGgtMix1PXZvaWQgMCE9PW4uZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1thXT9uLmdsb2JhbHMubGFzdERyYXduRGF0YUxhYmVsc0luZGV4ZXNbYV1bbi5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW2FdLmxlbmd0aC0xXTowO2lmKHZvaWQgMCE9PW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV1bZ10pe3ZhciBwPW4uZ2xvYmFscy5kYXRhTGFiZWxzUmVjdHNbYV1bdV07KHQ+cC54K3Aud2lkdGh8fGU+cC55K3AuaGVpZ2h0fHxlK2Q8cC55fHx0K2M8cC54KSYmKGw9ITApfXJldHVybigwPT09c3x8cikmJihsPSEwKSx7eDp0LHk6ZSx0ZXh0UmVjdHM6aCxkcmF3bmV4dExhYmVsOmx9fX0se2tleTpcImRyYXdEYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC50eXBlLGE9dC5wb3Mscz10Lmkscj10Lmosbz10LmlzUmFuZ2VTdGFydCxuPXQuc3Ryb2tlV2lkdGgsbD12b2lkIDA9PT1uPzI6bixoPXRoaXMudyxjPW5ldyBtKHRoaXMuY3R4KSxkPWguY29uZmlnLmRhdGFMYWJlbHMsZz0wLHU9MCxwPXIsZj1udWxsO2lmKCFkLmVuYWJsZWR8fCFBcnJheS5pc0FycmF5KGEueCkpcmV0dXJuIGY7Zj1jLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YS1sYWJlbHNcIn0pO2Zvcih2YXIgeD0wO3g8YS54Lmxlbmd0aDt4KyspaWYoZz1hLnhbeF0rZC5vZmZzZXRYLHU9YS55W3hdK2Qub2Zmc2V0WStsLCFpc05hTihnKSl7MT09PXImJjA9PT14JiYocD0wKSwxPT09ciYmMT09PXgmJihwPTEpO3ZhciBiPWguZ2xvYmFscy5zZXJpZXNbc11bcF07XCJyYW5nZUFyZWFcIj09PWkmJihiPW8/aC5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbc11bcF06aC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3NdW3BdKTt2YXIgdj1cIlwiLHk9ZnVuY3Rpb24odCl7cmV0dXJuIGguY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKHQse2N0eDplLmN0eCxzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnAsdzpofSl9O2lmKFwiYnViYmxlXCI9PT1oLmNvbmZpZy5jaGFydC50eXBlKXY9eShiPWguZ2xvYmFscy5zZXJpZXNaW3NdW3BdKSx1PWEueVt4XSx1PW5ldyBEKHRoaXMuY3R4KS5jZW50ZXJUZXh0SW5CdWJibGUodSxzLHApLnk7ZWxzZSB2b2lkIDAhPT1iJiYodj15KGIpKTt0aGlzLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpnLHk6dSx0ZXh0OnYsaTpzLGo6cCxwYXJlbnQ6ZixvZmZzZXRDb3JyZWN0aW9uOiEwLGRhdGFMYWJlbHNDb25maWc6aC5jb25maWcuZGF0YUxhYmVsc30pfXJldHVybiBmfX0se2tleTpcInBsb3REYXRhTGFiZWxzVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KSxhPXQueCxzPXQueSxyPXQuaSxvPXQuaixuPXQudGV4dCxsPXQudGV4dEFuY2hvcixoPXQuZm9udFNpemUsYz10LnBhcmVudCxkPXQuZGF0YUxhYmVsc0NvbmZpZyxnPXQuY29sb3IsdT10LmFsd2F5c0RyYXdEYXRhTGFiZWwscD10Lm9mZnNldENvcnJlY3Rpb247aWYoIShBcnJheS5pc0FycmF5KGUuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZE9uU2VyaWVzKSYmZS5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihyKTwwKSl7dmFyIGY9e3g6YSx5OnMsZHJhd25leHRMYWJlbDohMCx0ZXh0UmVjdHM6bnVsbH07cCYmKGY9dGhpcy5kYXRhTGFiZWxzQ29ycmVjdGlvbihhLHMsbixyLG8sdSxwYXJzZUludChkLnN0eWxlLmZvbnRTaXplLDEwKSkpLGUuZ2xvYmFscy56b29tZWR8fChhPWYueCxzPWYueSksZi50ZXh0UmVjdHMmJihhPC0xMC1mLnRleHRSZWN0cy53aWR0aHx8YT5lLmdsb2JhbHMuZ3JpZFdpZHRoK2YudGV4dFJlY3RzLndpZHRoKzEwKSYmKG49XCJcIik7dmFyIHg9ZS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW3JdOygoXCJiYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpJiZlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWR8fGUuY29uZmlnLmRhdGFMYWJlbHMuZGlzdHJpYnV0ZWQpJiYoeD1lLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnNbb10pLFwiZnVuY3Rpb25cIj09dHlwZW9mIHgmJih4PXgoe3NlcmllczplLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OnIsZGF0YVBvaW50SW5kZXg6byx3OmV9KSksZyYmKHg9Zyk7dmFyIGI9ZC5vZmZzZXRYLHk9ZC5vZmZzZXRZO2lmKFwiYmFyXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiZcInJhbmdlQmFyXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlfHwoYj0wLHk9MCksZi5kcmF3bmV4dExhYmVsKXt2YXIgdz1pLmRyYXdUZXh0KHt3aWR0aDoxMDAsaGVpZ2h0OnBhcnNlSW50KGQuc3R5bGUuZm9udFNpemUsMTApLHg6YStiLHk6cyt5LGZvcmVDb2xvcjp4LHRleHRBbmNob3I6bHx8ZC50ZXh0QW5jaG9yLHRleHQ6bixmb250U2l6ZTpofHxkLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZC5zdHlsZS5mb250RmFtaWx5LGZvbnRXZWlnaHQ6ZC5zdHlsZS5mb250V2VpZ2h0fHxcIm5vcm1hbFwifSk7aWYody5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsXCIsY3g6YSxjeTpzfSksZC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBrPWQuZHJvcFNoYWRvdztuZXcgdih0aGlzLmN0eCkuZHJvcFNoYWRvdyh3LGspfWMuYWRkKHcpLHZvaWQgMD09PWUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXSYmKGUuZ2xvYmFscy5sYXN0RHJhd25EYXRhTGFiZWxzSW5kZXhlc1tyXT1bXSksZS5nbG9iYWxzLmxhc3REcmF3bkRhdGFMYWJlbHNJbmRleGVzW3JdLnB1c2gobyl9fX19LHtrZXk6XCJhZGRCYWNrZ3JvdW5kVG9EYXRhTGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLmRhdGFMYWJlbHMuYmFja2dyb3VuZCxzPWEucGFkZGluZyxyPWEucGFkZGluZy8yLG89ZS53aWR0aCxuPWUuaGVpZ2h0LGw9bmV3IG0odGhpcy5jdHgpLmRyYXdSZWN0KGUueC1zLGUueS1yLzIsbysyKnMsbityLGEuYm9yZGVyUmFkaXVzLFwidHJhbnNwYXJlbnRcIj09PWkuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQ/XCIjZmZmXCI6aS5jb25maWcuY2hhcnQuYmFja2dyb3VuZCxhLm9wYWNpdHksYS5ib3JkZXJXaWR0aCxhLmJvcmRlckNvbG9yKTthLmRyb3BTaGFkb3cuZW5hYmxlZCYmbmV3IHYodGhpcy5jdHgpLmRyb3BTaGFkb3cobCxhLmRyb3BTaGFkb3cpO3JldHVybiBsfX0se2tleTpcImRhdGFMYWJlbHNCYWNrZ3JvdW5kXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYoXCJidWJibGVcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUpZm9yKHZhciBlPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzIHRleHRcIiksaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lW2ldLHM9YS5nZXRCQm94KCkscj1udWxsO2lmKHMud2lkdGgmJnMuaGVpZ2h0JiYocj10aGlzLmFkZEJhY2tncm91bmRUb0RhdGFMYWJlbChhLHMpKSxyKXthLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIubm9kZSxhKTt2YXIgbz1hLmdldEF0dHJpYnV0ZShcImZpbGxcIik7dC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkJiYhdC5nbG9iYWxzLnJlc2l6ZWQmJiF0Lmdsb2JhbHMuZGF0YUNoYW5nZWQ/ci5hbmltYXRlKCkuYXR0cih7ZmlsbDpvfSk6ci5hdHRyKHtmaWxsOm99KSxhLnNldEF0dHJpYnV0ZShcImZpbGxcIix0LmNvbmZpZy5kYXRhTGFiZWxzLmJhY2tncm91bmQuZm9yZUNvbG9yKX19fX0se2tleTpcImJyaW5nRm9yd2FyZFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzOmxhc3QtY2hpbGRcIiksYT0wO2E8ZS5sZW5ndGg7YSsrKWkmJmkuaW5zZXJ0QmVmb3JlKGVbYV0saS5uZXh0U2libGluZyl9fV0pLHR9KCksTj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3M9XCJsZWdlbmQtbW91c2VvdmVyLWluYWN0aXZlXCJ9cmV0dXJuIHIodCxbe2tleTpcImdldEFsbFNlcmllc0Vsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtc2VyaWVzXCIpfX0se2tleTpcImdldFNlcmllc0J5TmFtZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1pbm5lciAuYXBleGNoYXJ0cy1zZXJpZXNbc2VyaWVzTmFtZT0nXCIuY29uY2F0KHguZXNjYXBlU3RyaW5nKHQpLFwiJ11cIikpfX0se2tleTpcImlzU2VyaWVzSGlkZGVuXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRTZXJpZXNCeU5hbWUodCksaT1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKTtyZXR1cm57aXNIaWRkZW46ZS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXNlcmllcy1jb2xsYXBzZWRcIikscmVhbEluZGV4Oml9fX0se2tleTpcImFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztmdW5jdGlvbiBhKGkpe2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKWlbYV0uaW5kZXg9PT1lJiZ0Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZFwiKX1hKGkuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMpLGEoaS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcyl9fSx7a2V5OlwidG9nZ2xlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc1Nlcmllc0hpZGRlbih0KTtyZXR1cm4gdGhpcy5jdHgubGVnZW5kLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhlLnJlYWxJbmRleCxlLmlzSGlkZGVuKSxlLmlzSGlkZGVufX0se2tleTpcInNob3dTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmlzU2VyaWVzSGlkZGVuKHQpO2UuaXNIaWRkZW4mJnRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsITApfX0se2tleTpcImhpZGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmlzU2VyaWVzSGlkZGVuKHQpO2UuaXNIaWRkZW58fHRoaXMuY3R4LmxlZ2VuZC5sZWdlbmRIZWxwZXJzLnRvZ2dsZURhdGFTZXJpZXMoZS5yZWFsSW5kZXgsITEpfX0se2tleTpcInJlc2V0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sYT10aGlzLncscz14LmNsb25lKGEuZ2xvYmFscy5pbml0aWFsU2VyaWVzKTthLmdsb2JhbHMucHJldmlvdXNQYXRocz1bXSxpPyhhLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzPVtdLGEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXM9W10sYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXM9W10sYS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXM9W10pOnM9dGhpcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhzKSxhLmNvbmZpZy5zZXJpZXM9cyx0JiYoZSYmKGEuZ2xvYmFscy56b29tZWQ9ITEsdGhpcy5jdHgudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpKSx0aGlzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxhLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCkpfX0se2tleTpcImVtcHR5Q29sbGFwc2VkU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTA7aTx0Lmxlbmd0aDtpKyspZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihpKT4tMSYmKHRbaV0uZGF0YT1bXSk7cmV0dXJuIHR9fSx7a2V5OlwidG9nZ2xlU2VyaWVzT25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2V8fChlPXQudGFyZ2V0KTt2YXIgYT1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLCAuYXBleGNoYXJ0cy1kYXRhbGFiZWxzXCIpO2lmKFwibW91c2Vtb3ZlXCI9PT10LnR5cGUpe3ZhciBzPXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xLHI9bnVsbCxvPW51bGw7aS5nbG9iYWxzLmF4aXNDaGFydHN8fFwicmFkaWFsQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlP2kuZ2xvYmFscy5heGlzQ2hhcnRzPyhyPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIi5jb25jYXQocyxcIiddXCIpKSxvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHMsXCInXVwiKSkpOnI9aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChzKzEsXCInXVwiKSk6cj1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW3JlbD0nXCIuY29uY2F0KHMrMSxcIiddIHBhdGhcIikpO2Zvcih2YXIgbj0wO248YS5sZW5ndGg7bisrKWFbbl0uY2xhc3NMaXN0LmFkZCh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpO251bGwhPT1yJiYoaS5nbG9iYWxzLmF4aXNDaGFydHN8fHIucGFyZW50Tm9kZS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyksci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMubGVnZW5kSW5hY3RpdmVDbGFzcyksbnVsbCE9PW8mJm8uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmxlZ2VuZEluYWN0aXZlQ2xhc3MpKX1lbHNlIGlmKFwibW91c2VvdXRcIj09PXQudHlwZSlmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKylhW2xdLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5sZWdlbmRJbmFjdGl2ZUNsYXNzKX19LHtrZXk6XCJoaWdobGlnaHRSYW5nZUluU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLGE9dGhpcy53LHM9YS5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtaGVhdG1hcC1yZWN0XCIpLHI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxzLmxlbmd0aDtlKyspc1tlXS5jbGFzc0xpc3RbdF0oaS5sZWdlbmRJbmFjdGl2ZUNsYXNzKX07aWYoXCJtb3VzZW1vdmVcIj09PXQudHlwZSl7dmFyIG89cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTE7cihcImFkZFwiKSxmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHMubGVuZ3RoO2UrKyl7dmFyIGE9cGFyc2VJbnQoc1tlXS5nZXRBdHRyaWJ1dGUoXCJ2YWxcIiksMTApO2E+PXQuZnJvbSYmYTw9dC50byYmc1tlXS5jbGFzc0xpc3QucmVtb3ZlKGkubGVnZW5kSW5hY3RpdmVDbGFzcyl9fShhLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLmNvbG9yU2NhbGUucmFuZ2VzW29dKX1lbHNlXCJtb3VzZW91dFwiPT09dC50eXBlJiZyKFwicmVtb3ZlXCIpfX0se2tleTpcImdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCJhc2NcIixlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXSxpPXRoaXMudyxhPTA7aWYoaS5jb25maWcuc2VyaWVzLmxlbmd0aD4xKWZvcih2YXIgcz1pLmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGEpe3JldHVybiB0LmRhdGEmJnQuZGF0YS5sZW5ndGg+MCYmLTE9PT1pLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGEpJiYoIWkuZ2xvYmFscy5jb21ib0NoYXJ0c3x8MD09PWUubGVuZ3RofHxlLmxlbmd0aCYmZS5pbmRleE9mKGkuY29uZmlnLnNlcmllc1thXS50eXBlKT4tMSk/YTotMX0pKSxyPVwiYXNjXCI9PT10PzA6cy5sZW5ndGgtMTtcImFzY1wiPT09dD9yPHMubGVuZ3RoOnI+PTA7XCJhc2NcIj09PXQ/cisrOnItLSlpZigtMSE9PXNbcl0pe2E9c1tyXTticmVha31yZXR1cm4gYX19LHtrZXk6XCJnZXRCYXJTZXJpZXNJbmRpY2VzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuY29tYm9DaGFydHM/dGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVyblwiYmFyXCI9PT10LnR5cGV8fFwiY29sdW1uXCI9PT10LnR5cGU/ZTotMX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xIT09dH0pKTp0aGlzLncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSl9fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53O2Z1bmN0aW9uIGUoZSxpLGEpe2Zvcih2YXIgcz1lW2ldLmNoaWxkTm9kZXMscj17dHlwZTphLHBhdGhzOltdLHJlYWxJbmRleDplW2ldLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpfSxvPTA7bzxzLmxlbmd0aDtvKyspaWYoc1tvXS5oYXNBdHRyaWJ1dGUoXCJwYXRoVG9cIikpe3ZhciBuPXNbb10uZ2V0QXR0cmlidXRlKFwicGF0aFRvXCIpO3IucGF0aHMucHVzaCh7ZDpufSl9dC5nbG9iYWxzLnByZXZpb3VzUGF0aHMucHVzaChyKX10Lmdsb2JhbHMucHJldmlvdXNQYXRocz1bXTtbXCJsaW5lXCIsXCJhcmVhXCIsXCJiYXJcIixcInJhbmdlYmFyXCIsXCJyYW5nZUFyZWFcIixcImNhbmRsZXN0aWNrXCIsXCJyYWRhclwiXS5mb3JFYWNoKChmdW5jdGlvbihpKXtmb3IodmFyIGEscz0oYT1pLHQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoYSxcIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzXCIpKSkscj0wO3I8cy5sZW5ndGg7cisrKWUocyxyLGkpfSkpLHRoaXMuaGFuZGxlUHJldkJ1YmJsZVNjYXR0ZXJQYXRocyhcImJ1YmJsZVwiKSx0aGlzLmhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHMoXCJzY2F0dGVyXCIpO3ZhciBpPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodC5jb25maWcuY2hhcnQudHlwZSxcIiAuYXBleGNoYXJ0cy1zZXJpZXNcIikpO2lmKGkubGVuZ3RoPjApZm9yKHZhciBhPWZ1bmN0aW9uKGUpe2Zvcih2YXIgaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQuY29uZmlnLmNoYXJ0LnR5cGUsXCIgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChlLFwiJ10gcmVjdFwiKSksYT1bXSxzPWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBpW3RdLmdldEF0dHJpYnV0ZShlKX0scz17eDpwYXJzZUZsb2F0KGUoXCJ4XCIpKSx5OnBhcnNlRmxvYXQoZShcInlcIikpLHdpZHRoOnBhcnNlRmxvYXQoZShcIndpZHRoXCIpKSxoZWlnaHQ6cGFyc2VGbG9hdChlKFwiaGVpZ2h0XCIpKX07YS5wdXNoKHtyZWN0OnMsY29sb3I6aVt0XS5nZXRBdHRyaWJ1dGUoXCJjb2xvclwiKX0pfSxyPTA7cjxpLmxlbmd0aDtyKyspcyhyKTt0Lmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKGEpfSxzPTA7czxpLmxlbmd0aDtzKyspYShzKTt0Lmdsb2JhbHMuYXhpc0NoYXJ0c3x8KHQuZ2xvYmFscy5wcmV2aW91c1BhdGhzPXQuZ2xvYmFscy5zZXJpZXMpfX0se2tleTpcImhhbmRsZVByZXZCdWJibGVTY2F0dGVyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1wiKSk7aWYoaS5sZW5ndGg+MClmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKyl7Zm9yKHZhciBzPWUuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQodCxcIi1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIpLmNvbmNhdChhLFwiJ10gY2lyY2xlXCIpKSxyPVtdLG89MDtvPHMubGVuZ3RoO28rKylyLnB1c2goe3g6c1tvXS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSx5OnNbb10uZ2V0QXR0cmlidXRlKFwiY3lcIikscjpzW29dLmdldEF0dHJpYnV0ZShcInJcIil9KTtlLmdsb2JhbHMucHJldmlvdXNQYXRocy5wdXNoKHIpfX19LHtrZXk6XCJjbGVhclByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMucHJldmlvdXNQYXRocz1bXSx0Lmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkPSExfX0se2tleTpcImhhbmRsZU5vRGF0YVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcubm9EYXRhLGk9bmV3IG0odGhpcy5jdHgpLGE9dC5nbG9iYWxzLnN2Z1dpZHRoLzIscz10Lmdsb2JhbHMuc3ZnSGVpZ2h0LzIscj1cIm1pZGRsZVwiO2lmKHQuZ2xvYmFscy5ub0RhdGE9ITAsdC5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwLFwibGVmdFwiPT09ZS5hbGlnbj8oYT0xMCxyPVwic3RhcnRcIik6XCJyaWdodFwiPT09ZS5hbGlnbiYmKGE9dC5nbG9iYWxzLnN2Z1dpZHRoLTEwLHI9XCJlbmRcIiksXCJ0b3BcIj09PWUudmVydGljYWxBbGlnbj9zPTUwOlwiYm90dG9tXCI9PT1lLnZlcnRpY2FsQWxpZ24mJihzPXQuZ2xvYmFscy5zdmdIZWlnaHQtNTApLGErPWUub2Zmc2V0WCxzPXMrcGFyc2VJbnQoZS5zdHlsZS5mb250U2l6ZSwxMCkrMitlLm9mZnNldFksdm9pZCAwIT09ZS50ZXh0JiZcIlwiIT09ZS50ZXh0KXt2YXIgbz1pLmRyYXdUZXh0KHt4OmEseTpzLHRleHQ6ZS50ZXh0LHRleHRBbmNob3I6cixmb250U2l6ZTplLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6ZS5zdHlsZS5mb250RmFtaWx5LGZvcmVDb2xvcjplLnN0eWxlLmNvbG9yLG9wYWNpdHk6MSxjbGFzczpcImFwZXhjaGFydHMtdGV4dC1ub2RhdGFcIn0pO3QuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG8pfX19LHtrZXk6XCJzZXROdWxsU2VyaWVzVG9aZXJvVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudyxpPTA7aTx0Lmxlbmd0aDtpKyspaWYoMD09PXRbaV0ubGVuZ3RoKWZvcih2YXIgYT0wO2E8dFtlLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO2ErKyl0W2ldLnB1c2goMCk7cmV0dXJuIHR9fSx7a2V5OlwiaGFzQWxsU2VyaWVzRXF1YWxYXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ITAsZT10aGlzLncsaT10aGlzLmZpbHRlcmVkU2VyaWVzWCgpLGE9MDthPGkubGVuZ3RoLTE7YSsrKWlmKGlbYV1bMF0hPT1pW2ErMV1bMF0pe3Q9ITE7YnJlYWt9cmV0dXJuIGUuZ2xvYmFscy5hbGxTZXJpZXNIYXNFcXVhbFg9dCx0fX0se2tleTpcImZpbHRlcmVkU2VyaWVzWFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMuc2VyaWVzWC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aD4wP3Q6W119KSk7cmV0dXJuIHR9fV0pLHR9KCksVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnR3b0RTZXJpZXM9W10sdGhpcy50aHJlZURTZXJpZXM9W10sdGhpcy50d29EU2VyaWVzWD1bXSx0aGlzLnNlcmllc0dvYWxzPVtdLHRoaXMuY29yZVV0aWxzPW5ldyB5KHRoaXMuY3R4KX1yZXR1cm4gcih0LFt7a2V5OlwiaXNNdWx0aUZvcm1hdFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNGb3JtYXRYWSgpfHx0aGlzLmlzRm9ybWF0MkRBcnJheSgpfX0se2tleTpcImlzRm9ybWF0WFlcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5jb25maWcuc2VyaWVzLnNsaWNlKCksZT1uZXcgTih0aGlzLmN0eCk7aWYodGhpcy5hY3RpdmVTZXJpZXNJbmRleD1lLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCksdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEubGVuZ3RoPjAmJm51bGwhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0mJnZvaWQgMCE9PXRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YVswXS54JiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdKXJldHVybiEwfX0se2tleTpcImlzRm9ybWF0MkRBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5zZXJpZXMuc2xpY2UoKSxlPW5ldyBOKHRoaXMuY3R4KTtpZih0aGlzLmFjdGl2ZVNlcmllc0luZGV4PWUuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKSx2b2lkIDAhPT10W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGEmJnRbdGhpcy5hY3RpdmVTZXJpZXNJbmRleF0uZGF0YS5sZW5ndGg+MCYmdm9pZCAwIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZudWxsIT09dFt0aGlzLmFjdGl2ZVNlcmllc0luZGV4XS5kYXRhWzBdJiZ0W3RoaXMuYWN0aXZlU2VyaWVzSW5kZXhdLmRhdGFbMF0uY29uc3RydWN0b3I9PT1BcnJheSlyZXR1cm4hMH19LHtrZXk6XCJoYW5kbGVGb3JtYXQyREFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcy53LmNvbmZpZyxhPXRoaXMudy5nbG9iYWxzLHM9XCJib3hQbG90XCI9PT1pLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09aS5zZXJpZXNbZV0udHlwZSxyPTA7cjx0W2VdLmRhdGEubGVuZ3RoO3IrKylpZih2b2lkIDAhPT10W2VdLmRhdGFbcl1bMV0mJihBcnJheS5pc0FycmF5KHRbZV0uZGF0YVtyXVsxXSkmJjQ9PT10W2VdLmRhdGFbcl1bMV0ubGVuZ3RoJiYhcz90aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtyXVsxXVszXSkpOnRbZV0uZGF0YVtyXS5sZW5ndGg+PTU/dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbcl1bNF0pKTp0aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtyXVsxXSkpLGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwKSxcImRhdGV0aW1lXCI9PT1pLnhheGlzLnR5cGUpe3ZhciBvPW5ldyBEYXRlKHRbZV0uZGF0YVtyXVswXSk7bz1uZXcgRGF0ZShvKS5nZXRUaW1lKCksdGhpcy50d29EU2VyaWVzWC5wdXNoKG8pfWVsc2UgdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbZV0uZGF0YVtyXVswXSk7Zm9yKHZhciBuPTA7bjx0W2VdLmRhdGEubGVuZ3RoO24rKyl2b2lkIDAhPT10W2VdLmRhdGFbbl1bMl0mJih0aGlzLnRocmVlRFNlcmllcy5wdXNoKHRbZV0uZGF0YVtuXVsyXSksYS5pc0RhdGFYWVo9ITApfX0se2tleTpcImhhbmRsZUZvcm1hdFhZXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuY29uZmlnLGE9dGhpcy53Lmdsb2JhbHMscz1uZXcgSSh0aGlzLmN0eCkscj1lO2EuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpPi0xJiYocj10aGlzLmFjdGl2ZVNlcmllc0luZGV4KTtmb3IodmFyIG89MDtvPHRbZV0uZGF0YS5sZW5ndGg7bysrKXZvaWQgMCE9PXRbZV0uZGF0YVtvXS55JiYoQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbb10ueSk/dGhpcy50d29EU2VyaWVzLnB1c2goeC5wYXJzZU51bWJlcih0W2VdLmRhdGFbb10ueVt0W2VdLmRhdGFbb10ueS5sZW5ndGgtMV0pKTp0aGlzLnR3b0RTZXJpZXMucHVzaCh4LnBhcnNlTnVtYmVyKHRbZV0uZGF0YVtvXS55KSkpLHZvaWQgMCE9PXRbZV0uZGF0YVtvXS5nb2FscyYmQXJyYXkuaXNBcnJheSh0W2VdLmRhdGFbb10uZ29hbHMpPyh2b2lkIDA9PT10aGlzLnNlcmllc0dvYWxzW2VdJiYodGhpcy5zZXJpZXNHb2Fsc1tlXT1bXSksdGhpcy5zZXJpZXNHb2Fsc1tlXS5wdXNoKHRbZV0uZGF0YVtvXS5nb2FscykpOih2b2lkIDA9PT10aGlzLnNlcmllc0dvYWxzW2VdJiYodGhpcy5zZXJpZXNHb2Fsc1tlXT1bXSksdGhpcy5zZXJpZXNHb2Fsc1tlXS5wdXNoKG51bGwpKTtmb3IodmFyIG49MDtuPHRbcl0uZGF0YS5sZW5ndGg7bisrKXt2YXIgbD1cInN0cmluZ1wiPT10eXBlb2YgdFtyXS5kYXRhW25dLngsaD1BcnJheS5pc0FycmF5KHRbcl0uZGF0YVtuXS54KSxjPSFoJiYhIXMuaXNWYWxpZERhdGUodFtyXS5kYXRhW25dLngudG9TdHJpbmcoKSk7aWYobHx8YylpZihsfHxpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyl7dmFyIGQ9YS5pc0Jhckhvcml6b250YWwmJmEuaXNSYW5nZURhdGE7XCJkYXRldGltZVwiIT09aS54YXhpcy50eXBlfHxkPyh0aGlzLmZhbGxiYWNrVG9DYXRlZ29yeT0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2godFtyXS5kYXRhW25dLngpLGlzTmFOKHRbcl0uZGF0YVtuXS54KXx8XCJjYXRlZ29yeVwiPT09dGhpcy53LmNvbmZpZy54YXhpcy50eXBlfHxcInN0cmluZ1wiPT10eXBlb2YgdFtyXS5kYXRhW25dLnh8fChhLmlzWE51bWVyaWM9ITApKTp0aGlzLnR3b0RTZXJpZXNYLnB1c2gocy5wYXJzZURhdGUodFtyXS5kYXRhW25dLngpKX1lbHNlXCJkYXRldGltZVwiPT09aS54YXhpcy50eXBlP3RoaXMudHdvRFNlcmllc1gucHVzaChzLnBhcnNlRGF0ZSh0W3JdLmRhdGFbbl0ueC50b1N0cmluZygpKSk6KGEuZGF0YUZvcm1hdFhOdW1lcmljPSEwLGEuaXNYTnVtZXJpYz0hMCx0aGlzLnR3b0RTZXJpZXNYLnB1c2gocGFyc2VGbG9hdCh0W3JdLmRhdGFbbl0ueCkpKTtlbHNlIGg/KHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5PSEwLHRoaXMudHdvRFNlcmllc1gucHVzaCh0W3JdLmRhdGFbbl0ueCkpOihhLmlzWE51bWVyaWM9ITAsYS5kYXRhRm9ybWF0WE51bWVyaWM9ITAsdGhpcy50d29EU2VyaWVzWC5wdXNoKHRbcl0uZGF0YVtuXS54KSl9aWYodFtlXS5kYXRhWzBdJiZ2b2lkIDAhPT10W2VdLmRhdGFbMF0ueil7Zm9yKHZhciBnPTA7Zzx0W2VdLmRhdGEubGVuZ3RoO2crKyl0aGlzLnRocmVlRFNlcmllcy5wdXNoKHRbZV0uZGF0YVtnXS56KTthLmlzRGF0YVhZWj0hMH19fSx7a2V5OlwiaGFuZGxlUmFuZ2VEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscyxhPXt9O3JldHVybiB0aGlzLmlzRm9ybWF0MkRBcnJheSgpP2E9dGhpcy5oYW5kbGVSYW5nZURhdGFGb3JtYXQoXCJhcnJheVwiLHQsZSk6dGhpcy5pc0Zvcm1hdFhZKCkmJihhPXRoaXMuaGFuZGxlUmFuZ2VEYXRhRm9ybWF0KFwieHlcIix0LGUpKSxpLnNlcmllc1JhbmdlU3RhcnQucHVzaChhLnN0YXJ0KSxpLnNlcmllc1JhbmdlRW5kLnB1c2goYS5lbmQpLGkuc2VyaWVzUmFuZ2UucHVzaChhLnJhbmdlVW5pcXVlcyksaS5zZXJpZXNSYW5nZS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QmJnQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnkuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXtmb3IodmFyIGE9MDthPHQueS5sZW5ndGg7YSsrKWlmKGkhPT1hKXt2YXIgcz1lLnkxLHI9ZS55MixvPXQueVthXS55MTtzPD10LnlbYV0ueTImJm88PXImJih0Lm92ZXJsYXBzLmluZGV4T2YoZS5yYW5nZU5hbWUpPDAmJnQub3ZlcmxhcHMucHVzaChlLnJhbmdlTmFtZSksdC5vdmVybGFwcy5pbmRleE9mKHQueVthXS5yYW5nZU5hbWUpPDAmJnQub3ZlcmxhcHMucHVzaCh0LnlbYV0ucmFuZ2VOYW1lKSl9fSkpfSkpfSkpLGF9fSx7a2V5OlwiaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuZ2xvYmFscyxhPXt9O3JldHVybiB0aGlzLmlzRm9ybWF0MkRBcnJheSgpP2E9dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXQoXCJhcnJheVwiLHQsZSk6dGhpcy5pc0Zvcm1hdFhZKCkmJihhPXRoaXMuaGFuZGxlQ2FuZGxlU3RpY2tCb3hEYXRhRm9ybWF0KFwieHlcIix0LGUpKSxpLnNlcmllc0NhbmRsZU9bZV09YS5vLGkuc2VyaWVzQ2FuZGxlSFtlXT1hLmgsaS5zZXJpZXNDYW5kbGVNW2VdPWEubSxpLnNlcmllc0NhbmRsZUxbZV09YS5sLGkuc2VyaWVzQ2FuZGxlQ1tlXT1hLmMsYX19LHtrZXk6XCJoYW5kbGVSYW5nZURhdGFGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9W10scz1bXSxyPWVbaV0uZGF0YS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZT09PWkuZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gZS54PT09dC54fSkpfSkpLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm57eDp0Lngsb3ZlcmxhcHM6W10seTpbXX19KSk7aWYoXCJhcnJheVwiPT09dClmb3IodmFyIG89MDtvPGVbaV0uZGF0YS5sZW5ndGg7bysrKUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW29dKT8oYS5wdXNoKGVbaV0uZGF0YVtvXVsxXVswXSkscy5wdXNoKGVbaV0uZGF0YVtvXVsxXVsxXSkpOihhLnB1c2goZVtpXS5kYXRhW29dKSxzLnB1c2goZVtpXS5kYXRhW29dKSk7ZWxzZSBpZihcInh5XCI9PT10KWZvcih2YXIgbj1mdW5jdGlvbih0KXt2YXIgbz1BcnJheS5pc0FycmF5KGVbaV0uZGF0YVt0XS55KSxuPXgucmFuZG9tSWQoKSxsPWVbaV0uZGF0YVt0XS54LGg9e3kxOm8/ZVtpXS5kYXRhW3RdLnlbMF06ZVtpXS5kYXRhW3RdLnkseTI6bz9lW2ldLmRhdGFbdF0ueVsxXTplW2ldLmRhdGFbdF0ueSxyYW5nZU5hbWU6bn07ZVtpXS5kYXRhW3RdLnJhbmdlTmFtZT1uO3ZhciBjPXIuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC54PT09bH0pKTtyW2NdLnkucHVzaChoKSxhLnB1c2goaC55MSkscy5wdXNoKGgueTIpfSxsPTA7bDxlW2ldLmRhdGEubGVuZ3RoO2wrKyluKGwpO3JldHVybntzdGFydDphLGVuZDpzLHJhbmdlVW5pcXVlczpyfX19LHtrZXk6XCJoYW5kbGVDYW5kbGVTdGlja0JveERhdGFGb3JtYXRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53LHM9XCJib3hQbG90XCI9PT1hLmNvbmZpZy5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PWEuY29uZmlnLnNlcmllc1tpXS50eXBlLHI9W10sbz1bXSxuPVtdLGw9W10saD1bXTtpZihcImFycmF5XCI9PT10KWlmKHMmJjY9PT1lW2ldLmRhdGFbMF0ubGVuZ3RofHwhcyYmNT09PWVbaV0uZGF0YVswXS5sZW5ndGgpZm9yKHZhciBjPTA7YzxlW2ldLmRhdGEubGVuZ3RoO2MrKylyLnB1c2goZVtpXS5kYXRhW2NdWzFdKSxvLnB1c2goZVtpXS5kYXRhW2NdWzJdKSxzPyhuLnB1c2goZVtpXS5kYXRhW2NdWzNdKSxsLnB1c2goZVtpXS5kYXRhW2NdWzRdKSxoLnB1c2goZVtpXS5kYXRhW2NdWzVdKSk6KGwucHVzaChlW2ldLmRhdGFbY11bM10pLGgucHVzaChlW2ldLmRhdGFbY11bNF0pKTtlbHNlIGZvcih2YXIgZD0wO2Q8ZVtpXS5kYXRhLmxlbmd0aDtkKyspQXJyYXkuaXNBcnJheShlW2ldLmRhdGFbZF1bMV0pJiYoci5wdXNoKGVbaV0uZGF0YVtkXVsxXVswXSksby5wdXNoKGVbaV0uZGF0YVtkXVsxXVsxXSkscz8obi5wdXNoKGVbaV0uZGF0YVtkXVsxXVsyXSksbC5wdXNoKGVbaV0uZGF0YVtkXVsxXVszXSksaC5wdXNoKGVbaV0uZGF0YVtkXVsxXVs0XSkpOihsLnB1c2goZVtpXS5kYXRhW2RdWzFdWzJdKSxoLnB1c2goZVtpXS5kYXRhW2RdWzFdWzNdKSkpO2Vsc2UgaWYoXCJ4eVwiPT09dClmb3IodmFyIGc9MDtnPGVbaV0uZGF0YS5sZW5ndGg7ZysrKUFycmF5LmlzQXJyYXkoZVtpXS5kYXRhW2ddLnkpJiYoci5wdXNoKGVbaV0uZGF0YVtnXS55WzBdKSxvLnB1c2goZVtpXS5kYXRhW2ddLnlbMV0pLHM/KG4ucHVzaChlW2ldLmRhdGFbZ10ueVsyXSksbC5wdXNoKGVbaV0uZGF0YVtnXS55WzNdKSxoLnB1c2goZVtpXS5kYXRhW2ddLnlbNF0pKToobC5wdXNoKGVbaV0uZGF0YVtnXS55WzJdKSxoLnB1c2goZVtpXS5kYXRhW2ddLnlbM10pKSk7cmV0dXJue286cixoOm8sbTpuLGw6bCxjOmh9fX0se2tleTpcInBhcnNlRGF0YUF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMsYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5jdHgscz10aGlzLncuY29uZmlnLHI9dGhpcy53Lmdsb2JhbHMsbz1uZXcgSShhKSxuPXMubGFiZWxzLmxlbmd0aD4wP3MubGFiZWxzLnNsaWNlKCk6cy54YXhpcy5jYXRlZ29yaWVzLnNsaWNlKCk7aWYoci5pc1JhbmdlQmFyPVwicmFuZ2VCYXJcIj09PXMuY2hhcnQudHlwZSYmci5pc0Jhckhvcml6b250YWwsci5oYXNYYXhpc0dyb3Vwcz1cImNhdGVnb3J5XCI9PT1zLnhheGlzLnR5cGUmJnMueGF4aXMuZ3JvdXAuZ3JvdXBzLmxlbmd0aD4wLHIuaGFzWGF4aXNHcm91cHMmJihyLmdyb3Vwcz1zLnhheGlzLmdyb3VwLmdyb3Vwcyksci5oYXNTZXJpZXNHcm91cHM9bnVsbD09PShlPXRbMF0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmdyb3VwLHIuaGFzU2VyaWVzR3JvdXBzKXt2YXIgbD1bXSxoPXUobmV3IFNldCh0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ3JvdXB9KSkpKTt0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGk9aC5pbmRleE9mKHQuZ3JvdXApO2xbaV18fChsW2ldPVtdKSxsW2ldLnB1c2godC5uYW1lKX0pKSxyLnNlcmllc0dyb3Vwcz1sfWZvcih2YXIgYz1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8bi5sZW5ndGg7dCsrKWlmKFwic3RyaW5nXCI9PXR5cGVvZiBuW3RdKXtpZighby5pc1ZhbGlkRGF0ZShuW3RdKSl0aHJvdyBuZXcgRXJyb3IoXCJZb3UgaGF2ZSBwcm92aWRlZCBpbnZhbGlkIERhdGUgZm9ybWF0LiBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZVwiKTtpLnR3b0RTZXJpZXNYLnB1c2goby5wYXJzZURhdGUoblt0XSkpfWVsc2UgaS50d29EU2VyaWVzWC5wdXNoKG5bdF0pfSxkPTA7ZDx0Lmxlbmd0aDtkKyspe2lmKHRoaXMudHdvRFNlcmllcz1bXSx0aGlzLnR3b0RTZXJpZXNYPVtdLHRoaXMudGhyZWVEU2VyaWVzPVtdLHZvaWQgMD09PXRbZF0uZGF0YSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKFwiSXQgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHlvdSBtYXkgaGF2ZSBub3QgaW5jbHVkZWQgJ2RhdGEnIHByb3BlcnR5IGluIHNlcmllcy5cIik7aWYoXCJyYW5nZUJhclwiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQXJlYVwiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQmFyXCIhPT10W2RdLnR5cGUmJlwicmFuZ2VBcmVhXCIhPT10W2RdLnR5cGV8fChyLmlzUmFuZ2VEYXRhPSEwLHIuaXNDb21ib0NoYXJ0cz9cInJhbmdlQmFyXCIhPT10W2RdLnR5cGUmJlwicmFuZ2VBcmVhXCIhPT10W2RdLnR5cGV8fHRoaXMuaGFuZGxlUmFuZ2VEYXRhKHQsZCk6XCJyYW5nZUJhclwiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQXJlYVwiIT09cy5jaGFydC50eXBlfHx0aGlzLmhhbmRsZVJhbmdlRGF0YSh0LGQpKSx0aGlzLmlzTXVsdGlGb3JtYXQoKSl0aGlzLmlzRm9ybWF0MkRBcnJheSgpP3RoaXMuaGFuZGxlRm9ybWF0MkRBcnJheSh0LGQpOnRoaXMuaXNGb3JtYXRYWSgpJiZ0aGlzLmhhbmRsZUZvcm1hdFhZKHQsZCksXCJjYW5kbGVzdGlja1wiIT09cy5jaGFydC50eXBlJiZcImNhbmRsZXN0aWNrXCIhPT10W2RdLnR5cGUmJlwiYm94UGxvdFwiIT09cy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXRbZF0udHlwZXx8dGhpcy5oYW5kbGVDYW5kbGVTdGlja0JveERhdGEodCxkKSxyLnNlcmllcy5wdXNoKHRoaXMudHdvRFNlcmllcyksci5sYWJlbHMucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSxyLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSxyLnNlcmllc0dvYWxzPXRoaXMuc2VyaWVzR29hbHMsZCE9PXRoaXMuYWN0aXZlU2VyaWVzSW5kZXh8fHRoaXMuZmFsbGJhY2tUb0NhdGVnb3J5fHwoci5pc1hOdW1lcmljPSEwKTtlbHNle1wiZGF0ZXRpbWVcIj09PXMueGF4aXMudHlwZT8oci5pc1hOdW1lcmljPSEwLGMoKSxyLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSk6XCJudW1lcmljXCI9PT1zLnhheGlzLnR5cGUmJihyLmlzWE51bWVyaWM9ITAsbi5sZW5ndGg+MCYmKHRoaXMudHdvRFNlcmllc1g9bixyLnNlcmllc1gucHVzaCh0aGlzLnR3b0RTZXJpZXNYKSkpLHIubGFiZWxzLnB1c2godGhpcy50d29EU2VyaWVzWCk7dmFyIGc9dFtkXS5kYXRhLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHgucGFyc2VOdW1iZXIodCl9KSk7ci5zZXJpZXMucHVzaChnKX1yLnNlcmllc1oucHVzaCh0aGlzLnRocmVlRFNlcmllcyksdm9pZCAwIT09dFtkXS5uYW1lP3Iuc2VyaWVzTmFtZXMucHVzaCh0W2RdLm5hbWUpOnIuc2VyaWVzTmFtZXMucHVzaChcInNlcmllcy1cIitwYXJzZUludChkKzEsMTApKSx2b2lkIDAhPT10W2RdLmNvbG9yP3Iuc2VyaWVzQ29sb3JzLnB1c2godFtkXS5jb2xvcik6ci5zZXJpZXNDb2xvcnMucHVzaCh2b2lkIDApfXJldHVybiB0aGlzLnd9fSx7a2V5OlwicGFyc2VEYXRhTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZztlLnNlcmllcz10LnNsaWNlKCksZS5zZXJpZXNOYW1lcz1pLmxhYmVscy5zbGljZSgpO2Zvcih2YXIgYT0wO2E8ZS5zZXJpZXMubGVuZ3RoO2ErKyl2b2lkIDA9PT1lLnNlcmllc05hbWVzW2FdJiZlLnNlcmllc05hbWVzLnB1c2goXCJzZXJpZXMtXCIrKGErMSkpO3JldHVybiB0aGlzLnd9fSx7a2V5OlwiaGFuZGxlRXh0ZXJuYWxMYWJlbHNEYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LmNvbmZpZyxpPXRoaXMudy5nbG9iYWxzO2lmKGUueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGg+MClpLmxhYmVscz1lLnhheGlzLmNhdGVnb3JpZXM7ZWxzZSBpZihlLmxhYmVscy5sZW5ndGg+MClpLmxhYmVscz1lLmxhYmVscy5zbGljZSgpO2Vsc2UgaWYodGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnkpe2lmKGkubGFiZWxzPWkubGFiZWxzWzBdLGkuc2VyaWVzUmFuZ2UubGVuZ3RoJiYoaS5zZXJpZXNSYW5nZS5tYXAoKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5sYWJlbHMuaW5kZXhPZih0LngpPDAmJnQueCYmaS5sYWJlbHMucHVzaCh0LngpfSkpfSkpLGkubGFiZWxzPUFycmF5LmZyb20obmV3IFNldChpLmxhYmVscy5tYXAoSlNPTi5zdHJpbmdpZnkpKSxKU09OLnBhcnNlKSksZS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpbmV3IFgoZSkuY29udmVydENhdFRvTnVtZXJpY1hheGlzKGUsdGhpcy5jdHgsaS5zZXJpZXNYWzBdKSx0aGlzLl9nZW5lcmF0ZUV4dGVybmFsTGFiZWxzKHQpfWVsc2UgdGhpcy5fZ2VuZXJhdGVFeHRlcm5hbExhYmVscyh0KX19LHtrZXk6XCJfZ2VuZXJhdGVFeHRlcm5hbExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLGk9dGhpcy53LmNvbmZpZyxhPVtdO2lmKGUuYXhpc0NoYXJ0cyl7aWYoZS5zZXJpZXMubGVuZ3RoPjApaWYodGhpcy5pc0Zvcm1hdFhZKCkpZm9yKHZhciBzPWkuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kYXRhLmZpbHRlcigoZnVuY3Rpb24odCxlLGkpe3JldHVybiBpLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUueD09PXQueH0pKT09PWV9KSl9KSkscj1zLnJlZHVjZSgoZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIGFbdF0ubGVuZ3RoPmUubGVuZ3RoP3Q6aX0pLDApLG89MDtvPHNbcl0ubGVuZ3RoO28rKylhLnB1c2gobysxKTtlbHNlIGZvcih2YXIgbj0wO248ZS5zZXJpZXNbZS5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7bisrKWEucHVzaChuKzEpO2Uuc2VyaWVzWD1bXTtmb3IodmFyIGw9MDtsPHQubGVuZ3RoO2wrKyllLnNlcmllc1gucHVzaChhKTt0aGlzLncuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fChlLmlzWE51bWVyaWM9ITApfWlmKDA9PT1hLmxlbmd0aCl7YT1lLmF4aXNDaGFydHM/W106ZS5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlKzF9KSk7Zm9yKHZhciBoPTA7aDx0Lmxlbmd0aDtoKyspZS5zZXJpZXNYLnB1c2goYSl9ZS5sYWJlbHM9YSxpLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGUuY2F0ZWdvcnlMYWJlbHM9YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBpLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIodCl9KSkpLGUubm9MYWJlbHNQcm92aWRlZD0hMH19LHtrZXk6XCJwYXJzZURhdGFcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1lLmNvbmZpZyxhPWUuZ2xvYmFscztpZih0aGlzLmV4Y2x1ZGVDb2xsYXBzZWRTZXJpZXNJbllBeGlzKCksdGhpcy5mYWxsYmFja1RvQ2F0ZWdvcnk9ITEsdGhpcy5jdHguY29yZS5yZXNldEdsb2JhbHMoKSx0aGlzLmN0eC5jb3JlLmlzTXVsdGlwbGVZKCksYS5heGlzQ2hhcnRzPyh0aGlzLnBhcnNlRGF0YUF4aXNDaGFydHModCksdGhpcy5jb3JlVXRpbHMuZ2V0TGFyZ2VzdFNlcmllcygpKTp0aGlzLnBhcnNlRGF0YU5vbkF4aXNDaGFydHModCksaS5jaGFydC5zdGFja2VkKXt2YXIgcz1uZXcgTih0aGlzLmN0eCk7YS5zZXJpZXM9cy5zZXROdWxsU2VyaWVzVG9aZXJvVmFsdWVzKGEuc2VyaWVzKX10aGlzLmNvcmVVdGlscy5nZXRTZXJpZXNUb3RhbHMoKSxhLmF4aXNDaGFydHMmJihhLnN0YWNrZWRTZXJpZXNUb3RhbHM9dGhpcy5jb3JlVXRpbHMuZ2V0U3RhY2tlZFNlcmllc1RvdGFscygpKSx0aGlzLmNvcmVVdGlscy5nZXRQZXJjZW50U2VyaWVzKCksYS5kYXRhRm9ybWF0WE51bWVyaWN8fGEuaXNYTnVtZXJpYyYmKFwibnVtZXJpY1wiIT09aS54YXhpcy50eXBlfHwwIT09aS5sYWJlbHMubGVuZ3RofHwwIT09aS54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCl8fHRoaXMuaGFuZGxlRXh0ZXJuYWxMYWJlbHNEYXRhKHQpO2Zvcih2YXIgcj10aGlzLmNvcmVVdGlscy5nZXRDYXRlZ29yeUxhYmVscyhhLmxhYmVscyksbz0wO288ci5sZW5ndGg7bysrKWlmKEFycmF5LmlzQXJyYXkocltvXSkpe2EuaXNNdWx0aUxpbmVYPSEwO2JyZWFrfX19LHtrZXk6XCJleGNsdWRlQ29sbGFwc2VkU2VyaWVzSW5ZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudztlLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzPWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubWFwKChmdW5jdGlvbihpLGEpe2lmKHQudy5nbG9iYWxzLmlzTXVsdGlwbGVZQXhpcyYmIWUuY29uZmlnLmNoYXJ0LnN0YWNrZWQpcmV0dXJuIGkuaW5kZXh9KSl9fV0pLHR9KCksQj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZ2V0TGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06W10scj1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06XCIxMnB4XCIsbz0hKGFyZ3VtZW50cy5sZW5ndGg+NiYmdm9pZCAwIT09YXJndW1lbnRzWzZdKXx8YXJndW1lbnRzWzZdLG49dGhpcy53LGw9dm9pZCAwPT09dFthXT9cIlwiOnRbYV0saD1sLGM9bi5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixkPW4uY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIsZz0hMSx1PW5ldyBNKHRoaXMuY3R4KSxwPWw7byYmKGg9dS54TGFiZWxGb3JtYXQoYyxsLHAse2k6YSxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuY3R4KS5mb3JtYXREYXRlLHc6bn0pLHZvaWQgMCE9PWQmJihoPWQobCx0W2FdLHtpOmEsZGF0ZUZvcm1hdHRlcjpuZXcgSSh0aGlzLmN0eCkuZm9ybWF0RGF0ZSx3Om59KSkpO3ZhciBmLHg7ZS5sZW5ndGg+MD8oZj1lW2FdLnVuaXQseD1udWxsLGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7XCJtb250aFwiPT09dC51bml0P3g9XCJ5ZWFyXCI6XCJkYXlcIj09PXQudW5pdD94PVwibW9udGhcIjpcImhvdXJcIj09PXQudW5pdD94PVwiZGF5XCI6XCJtaW51dGVcIj09PXQudW5pdCYmKHg9XCJob3VyXCIpfSkpLGc9eD09PWYsaT1lW2FdLnBvc2l0aW9uLGg9ZVthXS52YWx1ZSk6XCJkYXRldGltZVwiPT09bi5jb25maWcueGF4aXMudHlwZSYmdm9pZCAwPT09ZCYmKGg9XCJcIiksdm9pZCAwPT09aCYmKGg9XCJcIiksaD1BcnJheS5pc0FycmF5KGgpP2g6aC50b1N0cmluZygpO3ZhciBiPW5ldyBtKHRoaXMuY3R4KSx2PXt9O3Y9bi5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJm8/Yi5nZXRUZXh0UmVjdHMoaCxwYXJzZUludChyLDEwKSxudWxsLFwicm90YXRlKFwiLmNvbmNhdChuLmNvbmZpZy54YXhpcy5sYWJlbHMucm90YXRlLFwiIDAgMClcIiksITEpOmIuZ2V0VGV4dFJlY3RzKGgscGFyc2VJbnQociwxMCkpO3ZhciB5PSFuLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvd0R1cGxpY2F0ZXMmJnRoaXMuY3R4LnRpbWVTY2FsZTtyZXR1cm4hQXJyYXkuaXNBcnJheShoKSYmKDA9PT1oLmluZGV4T2YoXCJOYU5cIil8fDA9PT1oLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImludmFsaWRcIil8fGgudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiaW5maW5pdHlcIik+PTB8fHMuaW5kZXhPZihoKT49MCYmeSkmJihoPVwiXCIpLHt4OmksdGV4dDpoLHRleHRSZWN0OnYsaXNCb2xkOmd9fX0se2tleTpcImNoZWNrTGFiZWxCYXNlZE9uVGlja2Ftb3VudFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1hLmNvbmZpZy54YXhpcy50aWNrQW1vdW50O3JldHVyblwiZGF0YVBvaW50c1wiPT09cyYmKHM9TWF0aC5yb3VuZChhLmdsb2JhbHMuZ3JpZFdpZHRoLzEyMCkpLHM+aXx8dCVNYXRoLnJvdW5kKGkvKHMrMSkpPT0wfHwoZS50ZXh0PVwiXCIpLGV9fSx7a2V5OlwiY2hlY2tGb3JPdmVyZmxvd2luZ0xhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyl7dmFyIHI9dGhpcy53O2lmKDA9PT10JiZyLmdsb2JhbHMuc2tpcEZpcnN0VGltZWxpbmVsYWJlbCYmKGUudGV4dD1cIlwiKSx0PT09aS0xJiZyLmdsb2JhbHMuc2tpcExhc3RUaW1lbGluZWxhYmVsJiYoZS50ZXh0PVwiXCIpLHIuY29uZmlnLnhheGlzLmxhYmVscy5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMmJmEubGVuZ3RoPjApe3ZhciBvPXNbcy5sZW5ndGgtMV07ZS54PG8udGV4dFJlY3Qud2lkdGgvKHIuZ2xvYmFscy5yb3RhdGVYTGFiZWxzP01hdGguYWJzKHIuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUpLzEyOjEuMDEpK28ueCYmKGUudGV4dD1cIlwiKX1yZXR1cm4gZX19LHtrZXk6XCJjaGVja0ZvclJldmVyc2VkTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7cmV0dXJuIGkuY29uZmlnLnlheGlzW3RdJiZpLmNvbmZpZy55YXhpc1t0XS5yZXZlcnNlZCYmZS5yZXZlcnNlKCksZX19LHtrZXk6XCJpc1lBeGlzSGlkZGVuXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IHkodGhpcy5jdHgpO3JldHVybiFlLmNvbmZpZy55YXhpc1t0XS5zaG93fHwhZS5jb25maWcueWF4aXNbdF0uc2hvd0Zvck51bGxTZXJpZXMmJmkuaXNTZXJpZXNOdWxsKHQpJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YodCl9fSx7a2V5OlwiZ2V0WUF4aXNGb3JlQ29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmaS5nbG9iYWxzLnlBeGlzU2NhbGVbZV0mJnRoaXMuY3R4LnRoZW1lLnB1c2hFeHRyYUNvbG9ycyh0LGkuZ2xvYmFscy55QXhpc1NjYWxlW2VdLnJlc3VsdC5sZW5ndGgsITEpLHR9fSx7a2V5OlwiZHJhd1lBeGlzVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1uLmdsb2JhbHMudHJhbnNsYXRlWTtpZihhLnNob3cmJmU+MCl7ITA9PT1uLmNvbmZpZy55YXhpc1tzXS5vcHBvc2l0ZSYmKHQrPWEud2lkdGgpO2Zvcih2YXIgYz1lO2M+PTA7Yy0tKXt2YXIgZD1oK2UvMTArbi5jb25maWcueWF4aXNbc10ubGFiZWxzLm9mZnNldFktMTtuLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoZD1yKmMpLFwiaGVhdG1hcFwiPT09bi5jb25maWcuY2hhcnQudHlwZSYmKGQrPXIvMik7dmFyIGc9bC5kcmF3TGluZSh0K2kub2Zmc2V0WC1hLndpZHRoK2Eub2Zmc2V0WCxkK2Eub2Zmc2V0WSx0K2kub2Zmc2V0WCthLm9mZnNldFgsZCthLm9mZnNldFksYS5jb2xvcik7by5hZGQoZyksaCs9cn19fX1dKSx0fSgpLEc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcInNjYWxlU3ZnTm9kZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9cGFyc2VGbG9hdCh0LmdldEF0dHJpYnV0ZU5TKG51bGwsXCJ3aWR0aFwiKSksYT1wYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlTlMobnVsbCxcImhlaWdodFwiKSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLFwid2lkdGhcIixpKmUpLHQuc2V0QXR0cmlidXRlTlMobnVsbCxcImhlaWdodFwiLGEqZSksdC5zZXRBdHRyaWJ1dGVOUyhudWxsLFwidmlld0JveFwiLFwiMCAwIFwiK2krXCIgXCIrYSl9fSx7a2V5OlwiZml4U3ZnU3RyaW5nRm9ySWUxMVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF4LmlzSUUxMSgpKXJldHVybiB0LnJlcGxhY2UoLyZuYnNwOy9nLFwiJiMxNjA7XCIpO3ZhciBlPTAsaT10LnJlcGxhY2UoL3htbG5zPVwiaHR0cDpcXC9cXC93d3cudzMub3JnXFwvMjAwMFxcL3N2Z1wiL2csKGZ1bmN0aW9uKHQpe3JldHVybiAyPT09KytlPyd4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB4bWxuczpzdmdqcz1cImh0dHA6Ly9zdmdqcy5kZXZcIic6dH0pKTtyZXR1cm4gaT0oaT1pLnJlcGxhY2UoL3htbG5zOk5TXFxkKz1cIlwiL2csXCJcIikpLnJlcGxhY2UoL05TXFxkKzooXFx3KzpcXHcrPVwiKS9nLFwiJDFcIil9fSx7a2V5OlwiZ2V0U3ZnU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7bnVsbD09dCYmKHQ9MSk7dmFyIGU9dGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyLnN2ZygpO2lmKDEhPT10KXt2YXIgaT10aGlzLncuZ2xvYmFscy5kb20uUGFwZXIubm9kZS5jbG9uZU5vZGUoITApO3RoaXMuc2NhbGVTdmdOb2RlKGksdCksZT0obmV3IFhNTFNlcmlhbGl6ZXIpLnNlcmlhbGl6ZVRvU3RyaW5nKGkpfXJldHVybiB0aGlzLmZpeFN2Z1N0cmluZ0ZvckllMTEoZSl9fSx7a2V5OlwiY2xlYW51cFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMteGNyb3NzaGFpcnNcIiksaT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy15Y3Jvc3NoYWlyc1wiKSxhPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy16b29tLXJlY3QsIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0XCIpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSwoZnVuY3Rpb24odCl7dC5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLDApfSkpLGUmJmVbMF0mJihlWzBdLnNldEF0dHJpYnV0ZShcInhcIiwtNTAwKSxlWzBdLnNldEF0dHJpYnV0ZShcIngxXCIsLTUwMCksZVswXS5zZXRBdHRyaWJ1dGUoXCJ4MlwiLC01MDApKSxpJiZpWzBdJiYoaVswXS5zZXRBdHRyaWJ1dGUoXCJ5XCIsLTEwMCksaVswXS5zZXRBdHRyaWJ1dGUoXCJ5MVwiLC0xMDApLGlbMF0uc2V0QXR0cmlidXRlKFwieTJcIiwtMTAwKSl9fSx7a2V5Olwic3ZnVXJsXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNsZWFudXAoKTt2YXIgdD10aGlzLmdldFN2Z1N0cmluZygpLGU9bmV3IEJsb2IoW3RdLHt0eXBlOlwiaW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04XCJ9KTtyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChlKX19LHtrZXk6XCJkYXRhVVJJXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGkpe3ZhciBhPWUudyxzPXQ/dC5zY2FsZXx8dC53aWR0aC9hLmdsb2JhbHMuc3ZnV2lkdGg6MTtlLmNsZWFudXAoKTt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO3Iud2lkdGg9YS5nbG9iYWxzLnN2Z1dpZHRoKnMsci5oZWlnaHQ9cGFyc2VJbnQoYS5nbG9iYWxzLmRvbS5lbFdyYXAuc3R5bGUuaGVpZ2h0LDEwKSpzO3ZhciBvPVwidHJhbnNwYXJlbnRcIj09PWEuY29uZmlnLmNoYXJ0LmJhY2tncm91bmQ/XCIjZmZmXCI6YS5jb25maWcuY2hhcnQuYmFja2dyb3VuZCxuPXIuZ2V0Q29udGV4dChcIjJkXCIpO24uZmlsbFN0eWxlPW8sbi5maWxsUmVjdCgwLDAsci53aWR0aCpzLHIuaGVpZ2h0KnMpO3ZhciBsPWUuZ2V0U3ZnU3RyaW5nKHMpO2lmKHdpbmRvdy5jYW52ZyYmeC5pc0lFMTEoKSl7dmFyIGg9d2luZG93LmNhbnZnLkNhbnZnLmZyb21TdHJpbmcobixsLHtpZ25vcmVDbGVhcjohMCxpZ25vcmVEaW1lbnNpb25zOiEwfSk7aC5zdGFydCgpO3ZhciBjPXIubXNUb0Jsb2IoKTtoLnN0b3AoKSxpKHtibG9iOmN9KX1lbHNle3ZhciBkPVwiZGF0YTppbWFnZS9zdmcreG1sLFwiK2VuY29kZVVSSUNvbXBvbmVudChsKSxnPW5ldyBJbWFnZTtnLmNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCIsZy5vbmxvYWQ9ZnVuY3Rpb24oKXtpZihuLmRyYXdJbWFnZShnLDAsMCksci5tc1RvQmxvYil7dmFyIHQ9ci5tc1RvQmxvYigpO2koe2Jsb2I6dH0pfWVsc2V7dmFyIGU9ci50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7aSh7aW1nVVJJOmV9KX19LGcuc3JjPWR9fSkpfX0se2tleTpcImV4cG9ydFRvU1ZHXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRyaWdnZXJEb3dubG9hZCh0aGlzLnN2Z1VybCgpLHRoaXMudy5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuc3ZnLmZpbGVuYW1lLFwiLnN2Z1wiKX19LHtrZXk6XCJleHBvcnRUb1BuZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmRhdGFVUkkoKS50aGVuKChmdW5jdGlvbihlKXt2YXIgaT1lLmltZ1VSSSxhPWUuYmxvYjthP25hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGEsdC53Lmdsb2JhbHMuY2hhcnRJRCtcIi5wbmdcIik6dC50cmlnZ2VyRG93bmxvYWQoaSx0LncuY29uZmlnLmNoYXJ0LnRvb2xiYXIuZXhwb3J0LnBuZy5maWxlbmFtZSxcIi5wbmdcIil9KSl9fSx7a2V5OlwiZXhwb3J0VG9DU1ZcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC5zZXJpZXMsYT10LmZpbGVOYW1lLHM9dC5jb2x1bW5EZWxpbWl0ZXIscj12b2lkIDA9PT1zP1wiLFwiOnMsbz10LmxpbmVEZWxpbWl0ZXIsbj12b2lkIDA9PT1vP1wiXFxuXCI6byxsPXRoaXMudztpfHwoaT1sLmNvbmZpZy5zZXJpZXMpO3ZhciBoPVtdLGM9W10sZD1cIlwiLGc9bC5nbG9iYWxzLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuLTE9PT1sLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGUpP3Q6W119KSkscD1NYXRoLm1heC5hcHBseShNYXRoLHUoaS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGE/dC5kYXRhLmxlbmd0aDowfSkpKSksZj1uZXcgVyh0aGlzLmN0eCksYj1uZXcgQih0aGlzLmN0eCksdj1mdW5jdGlvbih0KXt2YXIgaT1cIlwiO2lmKGwuZ2xvYmFscy5heGlzQ2hhcnRzKXtpZihcImNhdGVnb3J5XCI9PT1sLmNvbmZpZy54YXhpcy50eXBlfHxsLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpaWYobC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCl7dmFyIGE9bC5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0scz1uZXcgTihlLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoKTtpPWEobC5nbG9iYWxzLmxhYmVsc1t0XSx7c2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDp0LHc6bH0pfWVsc2UgaT1iLmdldExhYmVsKGwuZ2xvYmFscy5sYWJlbHMsbC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscywwLHQpLnRleHQ7XCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSYmKGwuY29uZmlnLnhheGlzLmNhdGVnb3JpZXMubGVuZ3RoP2k9bC5jb25maWcueGF4aXMuY2F0ZWdvcmllc1t0XTpsLmNvbmZpZy5sYWJlbHMubGVuZ3RoJiYoaT1sLmNvbmZpZy5sYWJlbHNbdF0pKX1lbHNlIGk9bC5jb25maWcubGFiZWxzW3RdO3JldHVybiBBcnJheS5pc0FycmF5KGkpJiYoaT1pLmpvaW4oXCIgXCIpKSx4LmlzTnVtYmVyKGkpP2k6aS5zcGxpdChyKS5qb2luKFwiXCIpfSxtPWZ1bmN0aW9uKHQsZSl7aWYoaC5sZW5ndGgmJjA9PT1lJiZjLnB1c2goaC5qb2luKHIpKSx0LmRhdGEpe3QuZGF0YT10LmRhdGEubGVuZ3RoJiZ0LmRhdGF8fHUoQXJyYXkocCkpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm5cIlwifSkpO2Zvcih2YXIgYT0wO2E8dC5kYXRhLmxlbmd0aDthKyspe2g9W107dmFyIHM9dihhKTtpZihzfHwoZi5pc0Zvcm1hdFhZKCk/cz1pW2VdLmRhdGFbYV0ueDpmLmlzRm9ybWF0MkRBcnJheSgpJiYocz1pW2VdLmRhdGFbYV0/aVtlXS5kYXRhW2FdWzBdOlwiXCIpKSwwPT09ZSl7aC5wdXNoKChkPXMsXCJkYXRldGltZVwiPT09bC5jb25maWcueGF4aXMudHlwZSYmU3RyaW5nKGQpLmxlbmd0aD49MTA/bC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmRhdGVGb3JtYXR0ZXIocyk6eC5pc051bWJlcihzKT9zOnMuc3BsaXQocikuam9pbihcIlwiKSkpO2Zvcih2YXIgbz0wO288bC5nbG9iYWxzLnNlcmllcy5sZW5ndGg7bysrKXt2YXIgbjtpZihmLmlzRm9ybWF0WFkoKSloLnB1c2gobnVsbD09PShuPWlbb10uZGF0YVthXSl8fHZvaWQgMD09PW4/dm9pZCAwOm4ueSk7ZWxzZSBoLnB1c2goZ1tvXVthXSl9fShcImNhbmRsZXN0aWNrXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlfHx0LnR5cGUmJlwiY2FuZGxlc3RpY2tcIj09PXQudHlwZSkmJihoLnBvcCgpLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlT1tlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUxbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVthXSkpLChcImJveFBsb3RcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGV8fHQudHlwZSYmXCJib3hQbG90XCI9PT10LnR5cGUpJiYoaC5wb3AoKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZU9bZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlSFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNDYW5kbGVNW2VdW2FdKSxoLnB1c2gobC5nbG9iYWxzLnNlcmllc0NhbmRsZUxbZV1bYV0pLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzQ2FuZGxlQ1tlXVthXSkpLFwicmFuZ2VCYXJcIj09PWwuY29uZmlnLmNoYXJ0LnR5cGUmJihoLnBvcCgpLGgucHVzaChsLmdsb2JhbHMuc2VyaWVzUmFuZ2VTdGFydFtlXVthXSksaC5wdXNoKGwuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFtlXVthXSkpLGgubGVuZ3RoJiZjLnB1c2goaC5qb2luKHIpKX19dmFyIGR9O2gucHVzaChsLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuaGVhZGVyQ2F0ZWdvcnkpLFwiYm94UGxvdFwiPT09bC5jb25maWcuY2hhcnQudHlwZT8oaC5wdXNoKFwibWluaW11bVwiKSxoLnB1c2goXCJxMVwiKSxoLnB1c2goXCJtZWRpYW5cIiksaC5wdXNoKFwicTNcIiksaC5wdXNoKFwibWF4aW11bVwiKSk6XCJjYW5kbGVzdGlja1wiPT09bC5jb25maWcuY2hhcnQudHlwZT8oaC5wdXNoKFwib3BlblwiKSxoLnB1c2goXCJoaWdoXCIpLGgucHVzaChcImxvd1wiKSxoLnB1c2goXCJjbG9zZVwiKSk6XCJyYW5nZUJhclwiPT09bC5jb25maWcuY2hhcnQudHlwZT8oaC5wdXNoKFwibWluaW11bVwiKSxoLnB1c2goXCJtYXhpbXVtXCIpKTppLm1hcCgoZnVuY3Rpb24odCxlKXt2YXIgaT0odC5uYW1lP3QubmFtZTpcInNlcmllcy1cIi5jb25jYXQoZSkpK1wiXCI7bC5nbG9iYWxzLmF4aXNDaGFydHMmJmgucHVzaChpLnNwbGl0KHIpLmpvaW4oXCJcIik/aS5zcGxpdChyKS5qb2luKFwiXCIpOlwic2VyaWVzLVwiLmNvbmNhdChlKSl9KSksbC5nbG9iYWxzLmF4aXNDaGFydHN8fChoLnB1c2gobC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmhlYWRlclZhbHVlKSxjLnB1c2goaC5qb2luKHIpKSksaS5tYXAoKGZ1bmN0aW9uKHQsZSl7bC5nbG9iYWxzLmF4aXNDaGFydHM/bSh0LGUpOigoaD1bXSkucHVzaChsLmdsb2JhbHMubGFiZWxzW2VdLnNwbGl0KHIpLmpvaW4oXCJcIikpLGgucHVzaChnW2VdKSxjLnB1c2goaC5qb2luKHIpKSl9KSksZCs9Yy5qb2luKG4pLHRoaXMudHJpZ2dlckRvd25sb2FkKFwiZGF0YTp0ZXh0L2NzdjsgY2hhcnNldD11dGYtOCxcIitlbmNvZGVVUklDb21wb25lbnQoXCJcXHVmZWZmXCIrZCksYXx8bC5jb25maWcuY2hhcnQudG9vbGJhci5leHBvcnQuY3N2LmZpbGVuYW1lLFwiLmNzdlwiKX19LHtrZXk6XCJ0cmlnZ2VyRG93bmxvYWRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7YS5ocmVmPXQsYS5kb3dubG9hZD0oZXx8dGhpcy53Lmdsb2JhbHMuY2hhcnRJRCkraSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGEuY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpfX1dKSx0fSgpLFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy5lbGdyaWQ9aSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLmF4ZXNVdGlscz1uZXcgQihlKSx0aGlzLnhheGlzTGFiZWxzPXMuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSxzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLmxlbmd0aD4wJiYhcy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKHRoaXMueGF4aXNMYWJlbHM9cy5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5zbGljZSgpKSxzLmNvbmZpZy54YXhpcy5vdmVyd3JpdGVDYXRlZ29yaWVzJiYodGhpcy54YXhpc0xhYmVscz1zLmNvbmZpZy54YXhpcy5vdmVyd3JpdGVDYXRlZ29yaWVzKSx0aGlzLmRyYXduTGFiZWxzPVtdLHRoaXMuZHJhd25MYWJlbHNSZWN0cz1bXSxcInRvcFwiPT09cy5jb25maWcueGF4aXMucG9zaXRpb24/dGhpcy5vZmZZPTA6dGhpcy5vZmZZPXMuZ2xvYmFscy5ncmlkSGVpZ2h0KzEsdGhpcy5vZmZZPXRoaXMub2ZmWStzLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLm9mZnNldFksdGhpcy5pc0NhdGVnb3J5QmFySG9yaXpvbnRhbD1cImJhclwiPT09cy5jb25maWcuY2hhcnQudHlwZSYmcy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwsdGhpcy54YXhpc0ZvbnRTaXplPXMuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSx0aGlzLnhheGlzRm9udEZhbWlseT1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSx0aGlzLnhheGlzRm9yZUNvbG9ycz1zLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuY29sb3JzLHRoaXMueGF4aXNCb3JkZXJXaWR0aD1zLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLndpZHRoLHRoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWwmJih0aGlzLnhheGlzQm9yZGVyV2lkdGg9cy5jb25maWcueWF4aXNbMF0uYXhpc0JvcmRlci53aWR0aC50b1N0cmluZygpKSx0aGlzLnhheGlzQm9yZGVyV2lkdGguaW5kZXhPZihcIiVcIik+LTE/dGhpcy54YXhpc0JvcmRlcldpZHRoPXMuZ2xvYmFscy5ncmlkV2lkdGgqcGFyc2VJbnQodGhpcy54YXhpc0JvcmRlcldpZHRoLDEwKS8xMDA6dGhpcy54YXhpc0JvcmRlcldpZHRoPXBhcnNlSW50KHRoaXMueGF4aXNCb3JkZXJXaWR0aCwxMCksdGhpcy54YXhpc0JvcmRlckhlaWdodD1zLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyLmhlaWdodCx0aGlzLnlheGlzPXMuY29uZmlnLnlheGlzWzBdfXJldHVybiByKHQsW3trZXk6XCJkcmF3WGF4aXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPWUuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpc1wiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQodC5jb25maWcueGF4aXMub2Zmc2V0WCxcIiwgXCIpLmNvbmNhdCh0LmNvbmZpZy54YXhpcy5vZmZzZXRZLFwiKVwiKX0pLGE9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KHQuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1gsXCIsIFwiKS5jb25jYXQodC5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWSxcIilcIil9KTtpLmFkZChhKTtmb3IodmFyIHM9W10scj0wO3I8dGhpcy54YXhpc0xhYmVscy5sZW5ndGg7cisrKXMucHVzaCh0aGlzLnhheGlzTGFiZWxzW3JdKTtpZih0aGlzLmRyYXdYQXhpc0xhYmVsQW5kR3JvdXAoITAsZSxhLHMsdC5nbG9iYWxzLmlzWE51bWVyaWMsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSksdC5nbG9iYWxzLmhhc1hheGlzR3JvdXBzKXt2YXIgbz10Lmdsb2JhbHMuZ3JvdXBzO3M9W107Zm9yKHZhciBuPTA7bjxvLmxlbmd0aDtuKyspcy5wdXNoKG9bbl0udGl0bGUpO3ZhciBsPXt9O3QuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlJiYobC54YXhpc0ZvbnRTaXplPXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRTaXplLGwueGF4aXNGb250RmFtaWx5PXQuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlLmZvbnRGYW1pbHksbC54YXhpc0ZvcmVDb2xvcnM9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY29sb3JzLGwuZm9udFdlaWdodD10LmNvbmZpZy54YXhpcy5ncm91cC5zdHlsZS5mb250V2VpZ2h0LGwuY3NzQ2xhc3M9dC5jb25maWcueGF4aXMuZ3JvdXAuc3R5bGUuY3NzQ2xhc3MpLHRoaXMuZHJhd1hBeGlzTGFiZWxBbmRHcm91cCghMSxlLGEscywhMSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gb1t0XS5jb2xzKmV9KSxsKX1pZih2b2lkIDAhPT10LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgaD1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGVcIn0pLGM9ZS5kcmF3VGV4dCh7eDp0Lmdsb2JhbHMuZ3JpZFdpZHRoLzIrdC5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WCx5OnRoaXMub2ZmWStwYXJzZUZsb2F0KHRoaXMueGF4aXNGb250U2l6ZSkrKFwiYm90dG9tXCI9PT10LmNvbmZpZy54YXhpcy5wb3NpdGlvbj90Lmdsb2JhbHMueEF4aXNMYWJlbHNIZWlnaHQ6LXQuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC0xMCkrdC5jb25maWcueGF4aXMudGl0bGUub2Zmc2V0WSx0ZXh0OnQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRGYW1pbHk6dC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udEZhbWlseSxmb250V2VpZ2h0OnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOnQuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNvbG9yLGNzc0NsYXNzOlwiYXBleGNoYXJ0cy14YXhpcy10aXRsZS10ZXh0IFwiK3QuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmNzc0NsYXNzfSk7aC5hZGQoYyksaS5hZGQoaCl9aWYodC5jb25maWcueGF4aXMuYXhpc0JvcmRlci5zaG93KXt2YXIgZD10Lmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsZz1lLmRyYXdMaW5lKHQuZ2xvYmFscy5wYWRIb3Jpem9udGFsK3QuY29uZmlnLnhheGlzLmF4aXNCb3JkZXIub2Zmc2V0WC1kLHRoaXMub2ZmWSx0aGlzLnhheGlzQm9yZGVyV2lkdGgrZCx0aGlzLm9mZlksdC5jb25maWcueGF4aXMuYXhpc0JvcmRlci5jb2xvciwwLHRoaXMueGF4aXNCb3JkZXJIZWlnaHQpO3RoaXMuZWxncmlkJiZ0aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzJiZ0LmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycy5hZGQoZyk6aS5hZGQoZyl9cmV0dXJuIGl9fSx7a2V5OlwiZHJhd1hBeGlzTGFiZWxBbmRHcm91cFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbyxuPXRoaXMsbD1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06e30saD1bXSxjPVtdLGQ9dGhpcy53LGc9bC54YXhpc0ZvbnRTaXplfHx0aGlzLnhheGlzRm9udFNpemUsdT1sLnhheGlzRm9udEZhbWlseXx8dGhpcy54YXhpc0ZvbnRGYW1pbHkscD1sLnhheGlzRm9yZUNvbG9yc3x8dGhpcy54YXhpc0ZvcmVDb2xvcnMsZj1sLmZvbnRXZWlnaHR8fGQuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250V2VpZ2h0LHg9bC5jc3NDbGFzc3x8ZC5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNzc0NsYXNzLGI9ZC5nbG9iYWxzLnBhZEhvcml6b250YWwsdj1hLmxlbmd0aCxtPVwiY2F0ZWdvcnlcIj09PWQuY29uZmlnLnhheGlzLnR5cGU/ZC5nbG9iYWxzLmRhdGFQb2ludHM6djtpZigwPT09bSYmdj5tJiYobT12KSxzKXt2YXIgeT1tPjE/bS0xOm07bz1kLmdsb2JhbHMuZ3JpZFdpZHRoL01hdGgubWluKHksdi0xKSxiPWIrcigwLG8pLzIrZC5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFh9ZWxzZSBvPWQuZ2xvYmFscy5ncmlkV2lkdGgvbSxiPWIrcigwLG8pK2QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYO2Zvcih2YXIgdz1mdW5jdGlvbihzKXt2YXIgbD1iLXIocyxvKS8yK2QuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYOzA9PT1zJiYxPT09diYmby8yPT09YiYmMT09PW0mJihsPWQuZ2xvYmFscy5ncmlkV2lkdGgvMik7dmFyIHk9bi5heGVzVXRpbHMuZ2V0TGFiZWwoYSxkLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzLGwscyxoLGcsdCksdz0yODtkLmdsb2JhbHMucm90YXRlWExhYmVscyYmdCYmKHc9MjIpLGQuY29uZmlnLnhheGlzLnRpdGxlLnRleHQmJlwidG9wXCI9PT1kLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKHcrPXBhcnNlRmxvYXQoZC5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpKzIpLHR8fCh3PXcrcGFyc2VGbG9hdChnKSsoZC5nbG9iYWxzLnhBeGlzTGFiZWxzSGVpZ2h0LWQuZ2xvYmFscy54QXhpc0dyb3VwTGFiZWxzSGVpZ2h0KSsoZC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM/MTA6MCkpLHk9dm9pZCAwIT09ZC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmXCJkYXRhUG9pbnRzXCIhPT1kLmNvbmZpZy54YXhpcy50aWNrQW1vdW50JiZcImRhdGV0aW1lXCIhPT1kLmNvbmZpZy54YXhpcy50eXBlP24uYXhlc1V0aWxzLmNoZWNrTGFiZWxCYXNlZE9uVGlja2Ftb3VudChzLHksdik6bi5heGVzVXRpbHMuY2hlY2tGb3JPdmVyZmxvd2luZ0xhYmVscyhzLHksdixoLGMpO2lmKGQuY29uZmlnLnhheGlzLmxhYmVscy5zaG93KXt2YXIgaz1lLmRyYXdUZXh0KHt4OnkueCx5Om4ub2ZmWStkLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSt3LShcInRvcFwiPT09ZC5jb25maWcueGF4aXMucG9zaXRpb24/ZC5nbG9iYWxzLnhBeGlzSGVpZ2h0K2QuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtMjowKSx0ZXh0OnkudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFdlaWdodDp5LmlzQm9sZD82MDA6Zixmb250U2l6ZTpnLGZvbnRGYW1pbHk6dSxmb3JlQ29sb3I6QXJyYXkuaXNBcnJheShwKT90JiZkLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWM/cFtkLmdsb2JhbHMubWluWCtzLTFdOnBbc106cCxpc1BsYWluVGV4dDohMSxjc3NDbGFzczoodD9cImFwZXhjaGFydHMteGF4aXMtbGFiZWwgXCI6XCJhcGV4Y2hhcnRzLXhheGlzLWdyb3VwLWxhYmVsIFwiKSt4fSk7aWYoaS5hZGQoayksay5vbihcImNsaWNrXCIsKGZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGQuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2spe3ZhciBlPU9iamVjdC5hc3NpZ24oe30sZCx7bGFiZWxJbmRleDpzfSk7ZC5jb25maWcuY2hhcnQuZXZlbnRzLnhBeGlzTGFiZWxDbGljayh0LG4uY3R4LGUpfX0pKSx0KXt2YXIgQT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZC5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7QS50ZXh0Q29udGVudD1BcnJheS5pc0FycmF5KHkudGV4dCk/eS50ZXh0LmpvaW4oXCIgXCIpOnkudGV4dCxrLm5vZGUuYXBwZW5kQ2hpbGQoQSksXCJcIiE9PXkudGV4dCYmKGgucHVzaCh5LnRleHQpLGMucHVzaCh5KSl9fXM8di0xJiYoYis9cihzKzEsbykpfSxrPTA7azw9di0xO2srKyl3KGspfX0se2tleTpcImRyYXdYYXhpc0ludmVyc2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXRoaXMscz10aGlzLncscj1uZXcgbSh0aGlzLmN0eCksbz1zLmNvbmZpZy55YXhpc1swXS5vcHBvc2l0ZT9zLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdOjAsbj1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMgYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZFwiLHJlbDp0fSksbD1yLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGV4dHMtZyBhcGV4Y2hhcnRzLXhheGlzLWludmVyc2VkLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrbytcIiwgMClcIn0pO24uYWRkKGwpO3ZhciBoPVtdO2lmKHMuY29uZmlnLnlheGlzW3RdLnNob3cpZm9yKHZhciBjPTA7Yzx0aGlzLnhheGlzTGFiZWxzLmxlbmd0aDtjKyspaC5wdXNoKHRoaXMueGF4aXNMYWJlbHNbY10pO2U9cy5nbG9iYWxzLmdyaWRIZWlnaHQvaC5sZW5ndGgsaT0tZS8yLjI7dmFyIGQ9cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbMF0sZz1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHM7aWYoZy5zaG93KWZvcih2YXIgdT1mdW5jdGlvbihvKXt2YXIgbj12b2lkIDA9PT1oW29dP1wiXCI6aFtvXTtuPWQobix7c2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpvLHc6c30pO3ZhciBjPWEuYXhlc1V0aWxzLmdldFlBeGlzRm9yZUNvbG9yKGcuc3R5bGUuY29sb3JzLHQpLHU9MDtBcnJheS5pc0FycmF5KG4pJiYodT1uLmxlbmd0aC8yKnBhcnNlSW50KGcuc3R5bGUuZm9udFNpemUsMTApKTt2YXIgcD1nLm9mZnNldFgtMTUsZj1cImVuZFwiO2EueWF4aXMub3Bwb3NpdGUmJihmPVwic3RhcnRcIiksXCJsZWZ0XCI9PT1zLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuYWxpZ24/KHA9Zy5vZmZzZXRYLGY9XCJzdGFydFwiKTpcImNlbnRlclwiPT09cy5jb25maWcueWF4aXNbMF0ubGFiZWxzLmFsaWduPyhwPWcub2Zmc2V0WCxmPVwibWlkZGxlXCIpOlwicmlnaHRcIj09PXMuY29uZmlnLnlheGlzWzBdLmxhYmVscy5hbGlnbiYmKGY9XCJlbmRcIik7dmFyIHg9ci5kcmF3VGV4dCh7eDpwLHk6aStlK2cub2Zmc2V0WS11LHRleHQ6bix0ZXh0QW5jaG9yOmYsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkoYyk/Y1tvXTpjLGZvbnRTaXplOmcuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTpnLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDpnLnN0eWxlLmZvbnRXZWlnaHQsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLWxhYmVsIFwiK2cuc3R5bGUuY3NzQ2xhc3MsbWF4V2lkdGg6Zy5tYXhXaWR0aH0pO2wuYWRkKHgpLHgub24oXCJjbGlja1wiLChmdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzLmNvbmZpZy5jaGFydC5ldmVudHMueEF4aXNMYWJlbENsaWNrKXt2YXIgZT1PYmplY3QuYXNzaWduKHt9LHMse2xhYmVsSW5kZXg6b30pO3MuY29uZmlnLmNoYXJ0LmV2ZW50cy54QXhpc0xhYmVsQ2xpY2sodCxhLmN0eCxlKX19KSk7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHMuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2lmKGIudGV4dENvbnRlbnQ9QXJyYXkuaXNBcnJheShuKT9uLmpvaW4oXCIgXCIpOm4seC5ub2RlLmFwcGVuZENoaWxkKGIpLDAhPT1zLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMucm90YXRlKXt2YXIgdj1yLnJvdGF0ZUFyb3VuZENlbnRlcih4Lm5vZGUpO3gubm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQocy5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSxcIiAwIFwiKS5jb25jYXQodi55LFwiKVwiKSl9aSs9ZX0scD0wO3A8PWgubGVuZ3RoLTE7cCsrKXUocCk7aWYodm9pZCAwIT09cy5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCl7dmFyIGY9ci5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlIGFwZXhjaGFydHMteGF4aXMtdGl0bGUtaW52ZXJzZWRcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrbytcIiwgMClcIn0pLHg9ci5kcmF3VGV4dCh7eDpzLmNvbmZpZy55YXhpc1swXS50aXRsZS5vZmZzZXRYLHk6cy5nbG9iYWxzLmdyaWRIZWlnaHQvMitzLmNvbmZpZy55YXhpc1swXS50aXRsZS5vZmZzZXRZLHRleHQ6cy5jb25maWcueWF4aXNbMF0udGl0bGUudGV4dCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmNvbG9yLGZvbnRTaXplOnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplLGZvbnRXZWlnaHQ6cy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuZm9udFdlaWdodCxmb250RmFtaWx5OnMuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzLXRpdGxlLXRleHQgXCIrcy5jb25maWcueWF4aXNbMF0udGl0bGUuc3R5bGUuY3NzQ2xhc3N9KTtmLmFkZCh4KSxuLmFkZChmKX12YXIgYj0wO3RoaXMuaXNDYXRlZ29yeUJhckhvcml6b250YWwmJnMuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlJiYoYj1zLmdsb2JhbHMuZ3JpZFdpZHRoKTt2YXIgdj1zLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyO2lmKHYuc2hvdyl7dmFyIHk9ci5kcmF3TGluZShzLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt2Lm9mZnNldFgrYiwxK3Yub2Zmc2V0WSxzLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt2Lm9mZnNldFgrYixzLmdsb2JhbHMuZ3JpZEhlaWdodCt2Lm9mZnNldFksdi5jb2xvciwwKTt0aGlzLmVsZ3JpZCYmdGhpcy5lbGdyaWQuZWxHcmlkQm9yZGVycyYmcy5jb25maWcuZ3JpZC5zaG93P3RoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMuYWRkKHkpOm4uYWRkKHkpfXJldHVybiBzLmNvbmZpZy55YXhpc1swXS5heGlzVGlja3Muc2hvdyYmdGhpcy5heGVzVXRpbHMuZHJhd1lBeGlzVGlja3MoYixoLmxlbmd0aCxzLmNvbmZpZy55YXhpc1swXS5heGlzQm9yZGVyLHMuY29uZmlnLnlheGlzWzBdLmF4aXNUaWNrcywwLGUsbiksbn19LHtrZXk6XCJkcmF3WGF4aXNUaWNrc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz10O2lmKCEodDwwfHx0LTI+YS5nbG9iYWxzLmdyaWRXaWR0aCkpe3ZhciByPXRoaXMub2ZmWSthLmNvbmZpZy54YXhpcy5heGlzVGlja3Mub2Zmc2V0WTtpZihlPWUrcithLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0LFwidG9wXCI9PT1hLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKGU9ci1hLmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0KSxhLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdyl7dmFyIG89bmV3IG0odGhpcy5jdHgpLmRyYXdMaW5lKHQrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFgscithLmNvbmZpZy54YXhpcy5vZmZzZXRZLHMrYS5jb25maWcueGF4aXMuYXhpc1RpY2tzLm9mZnNldFgsZSthLmNvbmZpZy54YXhpcy5vZmZzZXRZLGEuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5jb2xvcik7aS5hZGQobyksby5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXhheGlzLXRpY2tcIil9fX19LHtrZXk6XCJnZXRYQXhpc1RpY2tzUG9zaXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1bXSxpPXRoaXMueGF4aXNMYWJlbHMubGVuZ3RoLGE9dC5nbG9iYWxzLnBhZEhvcml6b250YWw7aWYodC5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscy5sZW5ndGg+MClmb3IodmFyIHM9MDtzPGk7cysrKWE9dGhpcy54YXhpc0xhYmVsc1tzXS5wb3NpdGlvbixlLnB1c2goYSk7ZWxzZSBmb3IodmFyIHI9aSxvPTA7bzxyO28rKyl7dmFyIG49cjt0Lmdsb2JhbHMuaXNYTnVtZXJpYyYmXCJiYXJcIiE9PXQuY29uZmlnLmNoYXJ0LnR5cGUmJihuLT0xKSxhKz10Lmdsb2JhbHMuZ3JpZFdpZHRoL24sZS5wdXNoKGEpfXJldHVybiBlfX0se2tleTpcInhBeGlzTGFiZWxDb3JyZWN0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIiksYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteGF4aXMtdGV4dHMtZyB0ZXh0Om5vdCguYXBleGNoYXJ0cy14YXhpcy1ncm91cC1sYWJlbClcIikscz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXMtaW52ZXJzZWQgdGV4dFwiKSxyPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy14YXhpcy1pbnZlcnNlZC10ZXh0cy1nIHRleHQgdHNwYW5cIik7aWYodC5nbG9iYWxzLnJvdGF0ZVhMYWJlbHN8fHQuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGVBbHdheXMpZm9yKHZhciBvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBuPWUucm90YXRlQXJvdW5kQ2VudGVyKGFbb10pO24ueT1uLnktMSxuLng9bi54KzEsYVtvXS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQodC5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiBcIikuY29uY2F0KG4ueCxcIiBcIikuY29uY2F0KG4ueSxcIilcIikpLGFbb10uc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcImVuZFwiKTtpLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKDAsIFwiLmNvbmNhdCgtMTAsXCIpXCIpKTt2YXIgbD1hW29dLmNoaWxkTm9kZXM7dC5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobCwoZnVuY3Rpb24oaSl7ZS5wbGFjZVRleHRXaXRoRWxsaXBzaXMoaSxpLnRleHRDb250ZW50LHQuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodC0oXCJib3R0b21cIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj8yMDoxMCkpfSkpfWVsc2UhZnVuY3Rpb24oKXtmb3IodmFyIGk9dC5nbG9iYWxzLmdyaWRXaWR0aC8odC5nbG9iYWxzLmxhYmVscy5sZW5ndGgrMSkscz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgcj1hW3NdLmNoaWxkTm9kZXM7dC5jb25maWcueGF4aXMubGFiZWxzLnRyaW0mJlwiZGF0ZXRpbWVcIiE9PXQuY29uZmlnLnhheGlzLnR5cGUmJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwociwoZnVuY3Rpb24odCl7ZS5wbGFjZVRleHRXaXRoRWxsaXBzaXModCx0LnRleHRDb250ZW50LGkpfSkpfX0oKTtpZihzLmxlbmd0aD4wKXt2YXIgaD1zW3MubGVuZ3RoLTFdLmdldEJCb3goKSxjPXNbMF0uZ2V0QkJveCgpO2gueDwtMjAmJnNbcy5sZW5ndGgtMV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzW3MubGVuZ3RoLTFdKSxjLngrYy53aWR0aD50Lmdsb2JhbHMuZ3JpZFdpZHRoJiYhdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmc1swXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNbMF0pO2Zvcih2YXIgZD0wO2Q8ci5sZW5ndGg7ZCsrKWUucGxhY2VUZXh0V2l0aEVsbGlwc2lzKHJbZF0scltkXS50ZXh0Q29udGVudCx0LmNvbmZpZy55YXhpc1swXS5sYWJlbHMubWF4V2lkdGgtKHQuY29uZmlnLnlheGlzWzBdLnRpdGxlLnRleHQ/MipwYXJzZUZsb2F0KHQuY29uZmlnLnlheGlzWzBdLnRpdGxlLnN0eWxlLmZvbnRTaXplKTowKS0xNSl9fX1dKSx0fSgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMueGF4aXNMYWJlbHM9aS5nbG9iYWxzLmxhYmVscy5zbGljZSgpLHRoaXMuYXhlc1V0aWxzPW5ldyBCKGUpLHRoaXMuaXNSYW5nZUJhcj1pLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoJiZpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsLGkuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjAmJih0aGlzLnhheGlzTGFiZWxzPWkuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKSl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdHcmlkQXJlYVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCk7bnVsbD09PXQmJih0PWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1ncmlkXCJ9KSk7dmFyIGE9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCwxLGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LFwidHJhbnNwYXJlbnRcIikscz1pLmRyYXdMaW5lKGUuZ2xvYmFscy5wYWRIb3Jpem9udGFsLGUuZ2xvYmFscy5ncmlkSGVpZ2h0LGUuZ2xvYmFscy5ncmlkV2lkdGgsZS5nbG9iYWxzLmdyaWRIZWlnaHQsXCJ0cmFuc3BhcmVudFwiKTtyZXR1cm4gdC5hZGQocyksdC5hZGQoYSksdH19LHtrZXk6XCJkcmF3R3JpZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bnVsbDtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuYXhpc0NoYXJ0cyYmKHQ9dGhpcy5yZW5kZXJHcmlkKCksdGhpcy5kcmF3R3JpZEFyZWEodC5lbCkpLHR9fSx7a2V5OlwiY3JlYXRlR3JpZE1hc2tcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscyxpPW5ldyBtKHRoaXMuY3R4KSxhPUFycmF5LmlzQXJyYXkodC5jb25maWcuc3Ryb2tlLndpZHRoKT8wOnQuY29uZmlnLnN0cm9rZS53aWR0aDtpZihBcnJheS5pc0FycmF5KHQuY29uZmlnLnN0cm9rZS53aWR0aCkpe3ZhciBzPTA7dC5jb25maWcuc3Ryb2tlLndpZHRoLmZvckVhY2goKGZ1bmN0aW9uKHQpe3M9TWF0aC5tYXgocyx0KX0pKSxhPXN9ZS5kb20uZWxHcmlkUmVjdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbEdyaWRSZWN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwiZ3JpZFJlY3RNYXNrXCIuY29uY2F0KGUuY3VpZCkpLGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLlNWR05TLFwiY2xpcFBhdGhcIiksZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2suc2V0QXR0cmlidXRlKFwiaWRcIixcImdyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdChlLmN1aWQpKSxlLmRvbS5lbEZvcmVjYXN0TWFzaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5TVkdOUyxcImNsaXBQYXRoXCIpLGUuZG9tLmVsRm9yZWNhc3RNYXNrLnNldEF0dHJpYnV0ZShcImlkXCIsXCJmb3JlY2FzdE1hc2tcIi5jb25jYXQoZS5jdWlkKSksZS5kb20uZWxOb25Gb3JlY2FzdE1hc2s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHTlMsXCJjbGlwUGF0aFwiKSxlLmRvbS5lbE5vbkZvcmVjYXN0TWFzay5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwibm9uRm9yZWNhc3RNYXNrXCIuY29uY2F0KGUuY3VpZCkpO3ZhciByPXQuY29uZmlnLmNoYXJ0LnR5cGUsbz0wLG49MDsoXCJiYXJcIj09PXJ8fFwicmFuZ2VCYXJcIj09PXJ8fFwiY2FuZGxlc3RpY2tcIj09PXJ8fFwiYm94UGxvdFwiPT09cnx8dC5nbG9iYWxzLmNvbWJvQmFyQ291bnQ+MCkmJnQuZ2xvYmFscy5pc1hOdW1lcmljJiYhdC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG89dC5jb25maWcuZ3JpZC5wYWRkaW5nLmxlZnQsbj10LmNvbmZpZy5ncmlkLnBhZGRpbmcucmlnaHQsZS5iYXJQYWRGb3JOdW1lcmljQXhpcz5vJiYobz1lLmJhclBhZEZvck51bWVyaWNBeGlzLG49ZS5iYXJQYWRGb3JOdW1lcmljQXhpcykpLGUuZG9tLmVsR3JpZFJlY3Q9aS5kcmF3UmVjdCgtYS1vLTIsMiotYS0yLGUuZ3JpZFdpZHRoK2ErbitvKzQsZS5ncmlkSGVpZ2h0KzQqYSs0LDAsXCIjZmZmXCIpO3ZhciBsPXQuZ2xvYmFscy5tYXJrZXJzLmxhcmdlc3RTaXplKzE7ZS5kb20uZWxHcmlkUmVjdE1hcmtlcj1pLmRyYXdSZWN0KDIqLWwsMiotbCxlLmdyaWRXaWR0aCs0KmwsZS5ncmlkSGVpZ2h0KzQqbCwwLFwiI2ZmZlwiKSxlLmRvbS5lbEdyaWRSZWN0TWFzay5hcHBlbmRDaGlsZChlLmRvbS5lbEdyaWRSZWN0Lm5vZGUpLGUuZG9tLmVsR3JpZFJlY3RNYXJrZXJNYXNrLmFwcGVuZENoaWxkKGUuZG9tLmVsR3JpZFJlY3RNYXJrZXIubm9kZSk7dmFyIGg9ZS5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCJkZWZzXCIpO2guYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdE1hc2spLGguYXBwZW5kQ2hpbGQoZS5kb20uZWxGb3JlY2FzdE1hc2spLGguYXBwZW5kQ2hpbGQoZS5kb20uZWxOb25Gb3JlY2FzdE1hc2spLGguYXBwZW5kQ2hpbGQoZS5kb20uZWxHcmlkUmVjdE1hcmtlck1hc2spfX0se2tleTpcIl9kcmF3R3JpZExpbmVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC54MSxhPXQueTEscz10LngyLHI9dC55MixvPXQueENvdW50LG49dC5wYXJlbnQsbD10aGlzLnc7aWYoISgwPT09ZSYmbC5nbG9iYWxzLnNraXBGaXJzdFRpbWVsaW5lbGFiZWx8fGU9PT1vLTEmJmwuZ2xvYmFscy5za2lwTGFzdFRpbWVsaW5lbGFiZWwmJiFsLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyfHxcInJhZGFyXCI9PT1sLmNvbmZpZy5jaGFydC50eXBlKSl7bC5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93JiZ0aGlzLl9kcmF3R3JpZExpbmUoe2k6ZSx4MTppLHkxOmEseDI6cyx5MjpyLHhDb3VudDpvLHBhcmVudDpufSk7dmFyIGg9MDtpZihsLmdsb2JhbHMuaGFzWGF4aXNHcm91cHMmJlwiYmV0d2VlblwiPT09bC5jb25maWcueGF4aXMudGlja1BsYWNlbWVudCl7dmFyIGM9bC5nbG9iYWxzLmdyb3VwcztpZihjKXtmb3IodmFyIGQ9MCxnPTA7ZDxlJiZnPGMubGVuZ3RoO2crKylkKz1jW2ddLmNvbHM7ZD09PWUmJihoPS42KmwuZ2xvYmFscy54QXhpc0xhYmVsc0hlaWdodCl9fW5ldyBWKHRoaXMuY3R4KS5kcmF3WGF4aXNUaWNrcyhpLGgsbC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbCl9fX0se2tleTpcIl9kcmF3R3JpZExpbmVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmksaT10LngxLGE9dC55MSxzPXQueDIscj10LnkyLG89dC54Q291bnQsbj10LnBhcmVudCxsPXRoaXMudyxoPSExLGM9bi5ub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtZ3JpZGxpbmVzLWhvcml6b250YWxcIiksZD1sLmNvbmZpZy5ncmlkLnN0cm9rZURhc2hBcnJheSxnPWwuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpczsoMD09PWEmJjA9PT1yfHwwPT09aSYmMD09PXMpJiYoaD0hMCksYT09PWwuZ2xvYmFscy5ncmlkSGVpZ2h0JiZyPT09bC5nbG9iYWxzLmdyaWRIZWlnaHQmJihoPSEwKSwhbC5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8MCE9PWUmJmUhPT1vLTF8fChoPSEwKTt2YXIgdT1uZXcgbSh0aGlzKS5kcmF3TGluZShpLShjP2c6MCksYSxzKyhjP2c6MCkscixsLmNvbmZpZy5ncmlkLmJvcmRlckNvbG9yLGQpO3Uubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1ncmlkbGluZVwiKSxoJiZsLmNvbmZpZy5ncmlkLnNob3c/dGhpcy5lbEdyaWRCb3JkZXJzLmFkZCh1KTpuLmFkZCh1KX19LHtrZXk6XCJfZHJhd0dyaWRCYW5kUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuYyxpPXQueDEsYT10LnkxLHM9dC54MixyPXQueTIsbz10LnR5cGUsbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1uLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7aWYoXCJjb2x1bW5cIiE9PW98fFwiZGF0ZXRpbWVcIiE9PW4uY29uZmlnLnhheGlzLnR5cGUpe3ZhciBjPW4uY29uZmlnLmdyaWRbb10uY29sb3JzW2VdLGQ9bC5kcmF3UmVjdChpLShcInJvd1wiPT09bz9oOjApLGEscysoXCJyb3dcIj09PW8/MipoOjApLHIsMCxjLG4uY29uZmlnLmdyaWRbb10ub3BhY2l0eSk7dGhpcy5lbGcuYWRkKGQpLGQuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQobi5nbG9iYWxzLmN1aWQsXCIpXCIpKSxkLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZ3JpZC1cIi5jb25jYXQobykpfX19LHtrZXk6XCJfZHJhd1hZTGluZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dC54Q291bnQsYT10LnRpY2tBbW91bnQscz10aGlzLnc7aWYocy5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93fHxzLmNvbmZpZy54YXhpcy5heGlzVGlja3Muc2hvdyl7dmFyIHIsbz1zLmdsb2JhbHMucGFkSG9yaXpvbnRhbCxuPXMuZ2xvYmFscy5ncmlkSGVpZ2h0O3MuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoP2Z1bmN0aW9uKHQpe2Zvcih2YXIgYT10LnhDLHM9dC54MSxyPXQueTEsbz10LngyLG49dC55MixsPTA7bDxhO2wrKylzPWUueGF4aXNMYWJlbHNbbF0ucG9zaXRpb24sbz1lLnhheGlzTGFiZWxzW2xdLnBvc2l0aW9uLGUuX2RyYXdHcmlkTGluZXMoe2k6bCx4MTpzLHkxOnIseDI6byx5MjpuLHhDb3VudDppLHBhcmVudDplLmVsZ3JpZExpbmVzVn0pfSh7eEM6aSx4MTpvLHkxOjAseDI6cix5MjpufSk6KHMuZ2xvYmFscy5pc1hOdW1lcmljJiYoaT1zLmdsb2JhbHMueEF4aXNTY2FsZS5yZXN1bHQubGVuZ3RoKSxmdW5jdGlvbih0KXtmb3IodmFyIGE9dC54QyxyPXQueDEsbz10LnkxLG49dC54MixsPXQueTIsaD0wO2g8YSsocy5nbG9iYWxzLmlzWE51bWVyaWM/MDoxKTtoKyspMD09PWgmJjE9PT1hJiYxPT09cy5nbG9iYWxzLmRhdGFQb2ludHMmJihuPXI9cy5nbG9iYWxzLmdyaWRXaWR0aC8yKSxlLl9kcmF3R3JpZExpbmVzKHtpOmgseDE6cix5MTpvLHgyOm4seTI6bCx4Q291bnQ6aSxwYXJlbnQ6ZS5lbGdyaWRMaW5lc1Z9KSxuPXIrPXMuZ2xvYmFscy5ncmlkV2lkdGgvKHMuZ2xvYmFscy5pc1hOdW1lcmljP2EtMTphKX0oe3hDOmkseDE6byx5MTowLHgyOnIseTI6bn0pKX1pZihzLmNvbmZpZy5ncmlkLnlheGlzLmxpbmVzLnNob3cpe3ZhciBsPTAsaD0wLGM9cy5nbG9iYWxzLmdyaWRXaWR0aCxkPWErMTt0aGlzLmlzUmFuZ2VCYXImJihkPXMuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKTtmb3IodmFyIGc9MDtnPGQrKHRoaXMuaXNSYW5nZUJhcj8xOjApO2crKyl0aGlzLl9kcmF3R3JpZExpbmUoe2k6Zyx4Q291bnQ6ZCsodGhpcy5pc1JhbmdlQmFyPzE6MCkseDE6MCx5MTpsLHgyOmMseTI6aCxwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc0h9KSxoPWwrPXMuZ2xvYmFscy5ncmlkSGVpZ2h0Lyh0aGlzLmlzUmFuZ2VCYXI/ZDphKX19fSx7a2V5OlwiX2RyYXdJbnZlcnRlZFhZTGluZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnhDb3VudCxpPXRoaXMudztpZihpLmNvbmZpZy5ncmlkLnhheGlzLmxpbmVzLnNob3d8fGkuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5zaG93KWZvcih2YXIgYSxzPWkuZ2xvYmFscy5wYWRIb3Jpem9udGFsLHI9aS5nbG9iYWxzLmdyaWRIZWlnaHQsbz0wO288ZSsxO28rKyl7aS5jb25maWcuZ3JpZC54YXhpcy5saW5lcy5zaG93JiZ0aGlzLl9kcmF3R3JpZExpbmUoe2k6byx4Q291bnQ6ZSsxLHgxOnMseTE6MCx4MjphLHkyOnIscGFyZW50OnRoaXMuZWxncmlkTGluZXNWfSksbmV3IFYodGhpcy5jdHgpLmRyYXdYYXhpc1RpY2tzKHMsMCxpLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsKSxhPXM9cytpLmdsb2JhbHMuZ3JpZFdpZHRoL2UrLjN9aWYoaS5jb25maWcuZ3JpZC55YXhpcy5saW5lcy5zaG93KWZvcih2YXIgbj0wLGw9MCxoPWkuZ2xvYmFscy5ncmlkV2lkdGgsYz0wO2M8aS5nbG9iYWxzLmRhdGFQb2ludHMrMTtjKyspdGhpcy5fZHJhd0dyaWRMaW5lKHtpOmMseENvdW50OmkuZ2xvYmFscy5kYXRhUG9pbnRzKzEseDE6MCx5MTpuLHgyOmgseTI6bCxwYXJlbnQ6dGhpcy5lbGdyaWRMaW5lc0h9KSxsPW4rPWkuZ2xvYmFscy5ncmlkSGVpZ2h0L2kuZ2xvYmFscy5kYXRhUG9pbnRzfX0se2tleTpcInJlbmRlckdyaWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KTt0aGlzLmVsZz1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZFwifSksdGhpcy5lbGdyaWRMaW5lc0g9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWRsaW5lcy1ob3Jpem9udGFsXCJ9KSx0aGlzLmVsZ3JpZExpbmVzVj1lLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZ3JpZGxpbmVzLXZlcnRpY2FsXCJ9KSx0aGlzLmVsR3JpZEJvcmRlcnM9ZS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWdyaWQtYm9yZGVyc1wifSksdGhpcy5lbGcuYWRkKHRoaXMuZWxncmlkTGluZXNIKSx0aGlzLmVsZy5hZGQodGhpcy5lbGdyaWRMaW5lc1YpLHQuY29uZmlnLmdyaWQuc2hvd3x8KHRoaXMuZWxncmlkTGluZXNWLmhpZGUoKSx0aGlzLmVsZ3JpZExpbmVzSC5oaWRlKCksdGhpcy5lbEdyaWRCb3JkZXJzLmhpZGUoKSk7Zm9yKHZhciBpLGE9dC5nbG9iYWxzLnlBeGlzU2NhbGUubGVuZ3RoP3QuZ2xvYmFscy55QXhpc1NjYWxlWzBdLnJlc3VsdC5sZW5ndGgtMTo1LHM9MDtzPHQuZ2xvYmFscy5zZXJpZXMubGVuZ3RoJiYodm9pZCAwIT09dC5nbG9iYWxzLnlBeGlzU2NhbGVbc10mJihhPXQuZ2xvYmFscy55QXhpc1NjYWxlW3NdLnJlc3VsdC5sZW5ndGgtMSksIShhPjIpKTtzKyspO3JldHVybiF0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHx0aGlzLmlzUmFuZ2VCYXI/KGk9dGhpcy54YXhpc0xhYmVscy5sZW5ndGgsdGhpcy5pc1JhbmdlQmFyJiYoaS0tLGE9dC5nbG9iYWxzLmxhYmVscy5sZW5ndGgsdC5jb25maWcueGF4aXMudGlja0Ftb3VudCYmdC5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdHRlciYmKGk9dC5jb25maWcueGF4aXMudGlja0Ftb3VudCkpLHRoaXMuX2RyYXdYWUxpbmVzKHt4Q291bnQ6aSx0aWNrQW1vdW50OmF9KSk6KGk9YSxhPXQuZ2xvYmFscy54VGlja0Ftb3VudCx0aGlzLl9kcmF3SW52ZXJ0ZWRYWUxpbmVzKHt4Q291bnQ6aSx0aWNrQW1vdW50OmF9KSksdGhpcy5kcmF3R3JpZEJhbmRzKGksYSkse2VsOnRoaXMuZWxnLGVsR3JpZEJvcmRlcnM6dGhpcy5lbEdyaWRCb3JkZXJzLHhBeGlzVGlja1dpZHRoOnQuZ2xvYmFscy5ncmlkV2lkdGgvaX19fSx7a2V5OlwiZHJhd0dyaWRCYW5kc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKHZvaWQgMCE9PWkuY29uZmlnLmdyaWQucm93LmNvbG9ycyYmaS5jb25maWcuZ3JpZC5yb3cuY29sb3JzLmxlbmd0aD4wKWZvcih2YXIgYT0wLHM9aS5nbG9iYWxzLmdyaWRIZWlnaHQvZSxyPWkuZ2xvYmFscy5ncmlkV2lkdGgsbz0wLG49MDtvPGU7bysrLG4rKyluPj1pLmNvbmZpZy5ncmlkLnJvdy5jb2xvcnMubGVuZ3RoJiYobj0wKSx0aGlzLl9kcmF3R3JpZEJhbmRSZWN0KHtjOm4seDE6MCx5MTphLHgyOnIseTI6cyx0eXBlOlwicm93XCJ9KSxhKz1pLmdsb2JhbHMuZ3JpZEhlaWdodC9lO2lmKHZvaWQgMCE9PWkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycyYmaS5jb25maWcuZ3JpZC5jb2x1bW4uY29sb3JzLmxlbmd0aD4wKWZvcih2YXIgbD1pLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsfHxcIm9uXCIhPT1pLmNvbmZpZy54YXhpcy50aWNrUGxhY2VtZW50fHxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiYhaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljP3Q6dC0xLGg9aS5nbG9iYWxzLnBhZEhvcml6b250YWwsYz1pLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtpLmdsb2JhbHMuZ3JpZFdpZHRoL2wsZD1pLmdsb2JhbHMuZ3JpZEhlaWdodCxnPTAsdT0wO2c8dDtnKyssdSsrKXU+PWkuY29uZmlnLmdyaWQuY29sdW1uLmNvbG9ycy5sZW5ndGgmJih1PTApLHRoaXMuX2RyYXdHcmlkQmFuZFJlY3Qoe2M6dSx4MTpoLHkxOjAseDI6Yyx5MjpkLHR5cGU6XCJjb2x1bW5cIn0pLGgrPWkuZ2xvYmFscy5ncmlkV2lkdGgvbH19XSksdH0oKSxfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJuaWNlU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxMCxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTowLHM9YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTp2b2lkIDAscj10aGlzLncsbz1NYXRoLmFicyhlLXQpO2lmKFwiZGF0YVBvaW50c1wiPT09KGk9dGhpcy5fYWRqdXN0VGlja3NGb3JTbWFsbFJhbmdlKGksYSxvKSkmJihpPXIuZ2xvYmFscy5kYXRhUG9pbnRzLTEpLHQ9PT1OdW1iZXIuTUlOX1ZBTFVFJiYwPT09ZXx8IXguaXNOdW1iZXIodCkmJiF4LmlzTnVtYmVyKGUpfHx0PT09TnVtYmVyLk1JTl9WQUxVRSYmZT09PS1OdW1iZXIuTUFYX1ZBTFVFKXJldHVybiB0PTAsZT1pLHRoaXMubGluZWFyU2NhbGUodCxlLGkpO3Q+ZT8oY29uc29sZS53YXJuKFwiYXhpcy5taW4gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBheGlzLm1heFwiKSxlPXQrLjEpOnQ9PT1lJiYodD0wPT09dD8wOnQtLjUsZT0wPT09ZT8yOmUrLjUpO3ZhciBuPVtdO288MSYmcyYmKFwiY2FuZGxlc3RpY2tcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwiY2FuZGxlc3RpY2tcIj09PXIuY29uZmlnLnNlcmllc1thXS50eXBlfHxcImJveFBsb3RcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09ci5jb25maWcuc2VyaWVzW2FdLnR5cGV8fHIuZ2xvYmFscy5pc1JhbmdlRGF0YSkmJihlKj0xLjAxKTt2YXIgbD1pKzE7bDwyP2w9MjpsPjImJihsLT0yKTt2YXIgaD1vL2wsYz1NYXRoLmZsb29yKHgubG9nMTAoaCkpLGQ9TWF0aC5wb3coMTAsYyksZz1NYXRoLnJvdW5kKGgvZCk7ZzwxJiYoZz0xKTt2YXIgdT1nKmQscD11Kk1hdGguZmxvb3IodC91KSxmPXUqTWF0aC5jZWlsKGUvdSksYj1wO2lmKHMmJm8+Mil7Zm9yKDtuLnB1c2goeC5zdHJpcE51bWJlcihiLDcpKSwhKChiKz11KT5mKTspO3JldHVybntyZXN1bHQ6bixuaWNlTWluOm5bMF0sbmljZU1heDpuW24ubGVuZ3RoLTFdfX12YXIgdj10OyhuPVtdKS5wdXNoKHguc3RyaXBOdW1iZXIodiw3KSk7Zm9yKHZhciBtPU1hdGguYWJzKGUtdCkvaSx5PTA7eTw9aTt5Kyspdis9bSxuLnB1c2godik7cmV0dXJuIG5bbi5sZW5ndGgtMl0+PWUmJm4ucG9wKCkse3Jlc3VsdDpuLG5pY2VNaW46blswXSxuaWNlTWF4Om5bbi5sZW5ndGgtMV19fX0se2tleTpcImxpbmVhclNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAsYT1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMCxzPU1hdGguYWJzKGUtdCk7XCJkYXRhUG9pbnRzXCI9PT0oaT10aGlzLl9hZGp1c3RUaWNrc0ZvclNtYWxsUmFuZ2UoaSxhLHMpKSYmKGk9dGhpcy53Lmdsb2JhbHMuZGF0YVBvaW50cy0xKTt2YXIgcj1zL2k7aT09PU51bWJlci5NQVhfVkFMVUUmJihpPTEwLHI9MSk7Zm9yKHZhciBvPVtdLG49dDtpPj0wOylvLnB1c2gobiksbis9cixpLT0xO3JldHVybntyZXN1bHQ6byxuaWNlTWluOm9bMF0sbmljZU1heDpvW28ubGVuZ3RoLTFdfX19LHtrZXk6XCJsb2dhcml0aG1pY1NjYWxlTmljZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtlPD0wJiYoZT1NYXRoLm1heCh0LGkpKSx0PD0wJiYodD1NYXRoLm1pbihlLGkpKTtmb3IodmFyIGE9W10scz1NYXRoLmNlaWwoTWF0aC5sb2coZSkvTWF0aC5sb2coaSkrMSkscj1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGgubG9nKGkpKTtyPHM7cisrKWEucHVzaChNYXRoLnBvdyhpLHIpKTtyZXR1cm57cmVzdWx0OmEsbmljZU1pbjphWzBdLG5pY2VNYXg6YVthLmxlbmd0aC0xXX19fSx7a2V5OlwibG9nYXJpdGhtaWNTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtlPD0wJiYoZT1NYXRoLm1heCh0LGkpKSx0PD0wJiYodD1NYXRoLm1pbihlLGkpKTtmb3IodmFyIGE9W10scz1NYXRoLmxvZyhlKS9NYXRoLmxvZyhpKSxyPU1hdGgubG9nKHQpL01hdGgubG9nKGkpLG89cy1yLG49TWF0aC5yb3VuZChvKSxsPW8vbixoPTAsYz1yO2g8bjtoKyssYys9bClhLnB1c2goTWF0aC5wb3coaSxjKSk7cmV0dXJuIGEucHVzaChNYXRoLnBvdyhpLHMpKSx7cmVzdWx0OmEsbmljZU1pbjp0LG5pY2VNYXg6ZX19fSx7a2V5OlwiX2FkanVzdFRpY2tzRm9yU21hbGxSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10O2lmKHZvaWQgMCE9PWUmJnRoaXMudy5jb25maWcueWF4aXNbZV0ubGFiZWxzLmZvcm1hdHRlciYmdm9pZCAwPT09dGhpcy53LmNvbmZpZy55YXhpc1tlXS50aWNrQW1vdW50KXt2YXIgcz1OdW1iZXIodGhpcy53LmNvbmZpZy55YXhpc1tlXS5sYWJlbHMuZm9ybWF0dGVyKDEpKTt4LmlzTnVtYmVyKHMpJiYwPT09dGhpcy53Lmdsb2JhbHMueVZhbHVlRGVjaW1hbCYmKGE9TWF0aC5jZWlsKGkpKX1yZXR1cm4gYTx0P2E6dH19LHtrZXk6XCJzZXRZU2NhbGVGb3JJbmRleFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncuZ2xvYmFscyxzPXRoaXMudy5jb25maWcscj1hLmlzQmFySG9yaXpvbnRhbD9zLnhheGlzOnMueWF4aXNbdF07dm9pZCAwPT09YS55QXhpc1NjYWxlW3RdJiYoYS55QXhpc1NjYWxlW3RdPVtdKTt2YXIgbz1NYXRoLmFicyhpLWUpO2lmKHIubG9nYXJpdGhtaWMmJm88PTUmJihhLmludmFsaWRMb2dTY2FsZT0hMCksci5sb2dhcml0aG1pYyYmbz41KWEuYWxsU2VyaWVzQ29sbGFwc2VkPSExLGEueUF4aXNTY2FsZVt0XT10aGlzLmxvZ2FyaXRobWljU2NhbGUoZSxpLHIubG9nQmFzZSksYS55QXhpc1NjYWxlW3RdPXIuZm9yY2VOaWNlU2NhbGU/dGhpcy5sb2dhcml0aG1pY1NjYWxlTmljZShlLGksci5sb2dCYXNlKTp0aGlzLmxvZ2FyaXRobWljU2NhbGUoZSxpLHIubG9nQmFzZSk7ZWxzZSBpZihpIT09LU51bWJlci5NQVhfVkFMVUUmJnguaXNOdW1iZXIoaSkpaWYoYS5hbGxTZXJpZXNDb2xsYXBzZWQ9ITEsdm9pZCAwPT09ci5taW4mJnZvaWQgMD09PXIubWF4fHxyLmZvcmNlTmljZVNjYWxlKXt2YXIgbj12b2lkIDA9PT1zLnlheGlzW3RdLm1heCYmdm9pZCAwPT09cy55YXhpc1t0XS5taW58fHMueWF4aXNbdF0uZm9yY2VOaWNlU2NhbGU7YS55QXhpc1NjYWxlW3RdPXRoaXMubmljZVNjYWxlKGUsaSxyLnRpY2tBbW91bnQ/ci50aWNrQW1vdW50Om88NSYmbz4xP28rMTo1LHQsbil9ZWxzZSBhLnlBeGlzU2NhbGVbdF09dGhpcy5saW5lYXJTY2FsZShlLGksci50aWNrQW1vdW50LHQpO2Vsc2UgYS55QXhpc1NjYWxlW3RdPXRoaXMubGluZWFyU2NhbGUoMCw1LDUpfX0se2tleTpcInNldFhTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9aS5nbG9iYWxzLHM9aS5jb25maWcueGF4aXMscj1NYXRoLmFicyhlLXQpO3JldHVybiBlIT09LU51bWJlci5NQVhfVkFMVUUmJnguaXNOdW1iZXIoZSk/YS54QXhpc1NjYWxlPXRoaXMubGluZWFyU2NhbGUodCxlLHMudGlja0Ftb3VudD9zLnRpY2tBbW91bnQ6cjw1JiZyPjE/cisxOjUsMCk6YS54QXhpc1NjYWxlPXRoaXMubGluZWFyU2NhbGUoMCw1LDUpLGEueEF4aXNTY2FsZX19LHtrZXk6XCJzZXRNdWx0aXBsZVlTY2FsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncuZ2xvYmFscyxpPXRoaXMudy5jb25maWcsYT1lLm1pbllBcnIuY29uY2F0KFtdKSxzPWUubWF4WUFyci5jb25jYXQoW10pLHI9W107aS55YXhpcy5mb3JFYWNoKChmdW5jdGlvbihlLG8pe3ZhciBuPW87aS5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt0Lm5hbWU9PT1lLnNlcmllc05hbWUmJihuPWksbyE9PWk/ci5wdXNoKHtpbmRleDppLHNpbWlsYXJJbmRleDpvLGFscmVhZHlFeGlzdHM6ITB9KTpyLnB1c2goe2luZGV4Oml9KSl9KSk7dmFyIGw9YVtuXSxoPXNbbl07dC5zZXRZU2NhbGVGb3JJbmRleChvLGwsaCl9KSksdGhpcy5zYW1lU2NhbGVJbk11bHRpcGxlQXhlcyhhLHMscil9fSx7a2V5Olwic2FtZVNjYWxlSW5NdWx0aXBsZUF4ZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcyxzPXRoaXMudy5jb25maWcscj10aGlzLncuZ2xvYmFscyxvPVtdO2kuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5hbHJlYWR5RXhpc3RzJiYodm9pZCAwPT09b1t0LmluZGV4XSYmKG9bdC5pbmRleF09W10pLG9bdC5pbmRleF0ucHVzaCh0LmluZGV4KSxvW3QuaW5kZXhdLnB1c2godC5zaW1pbGFySW5kZXgpKX0pKSxyLnlBeGlzU2FtZVNjYWxlSW5kaWNlcz1vLG8uZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtvLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7dmFyIHMscjtlIT09YSYmKHM9dCxyPWkscy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xIT09ci5pbmRleE9mKHQpfSkpKS5sZW5ndGg+MCYmKG9bZV09b1tlXS5jb25jYXQob1thXSkpfSkpfSkpO3ZhciBuPW8ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQuaW5kZXhPZihlKT09PWl9KSl9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zb3J0KCl9KSk7bz1vLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISF0fSkpO3ZhciBsPW4uc2xpY2UoKSxoPWwubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9KSk7bD1sLmZpbHRlcigoZnVuY3Rpb24odCxlKXtyZXR1cm4gaC5pbmRleE9mKEpTT04uc3RyaW5naWZ5KHQpKT09PWV9KSk7dmFyIGM9W10sZD1bXTt0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7bC5mb3JFYWNoKChmdW5jdGlvbihhLHMpe2EuaW5kZXhPZihpKT4tMSYmKHZvaWQgMD09PWNbc10mJihjW3NdPVtdLGRbc109W10pLGNbc10ucHVzaCh7a2V5OmksdmFsdWU6dH0pLGRbc10ucHVzaCh7a2V5OmksdmFsdWU6ZVtpXX0pKX0pKX0pKTt2YXIgZz1BcnJheS5hcHBseShudWxsLEFycmF5KGwubGVuZ3RoKSkubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZixOdW1iZXIuTUlOX1ZBTFVFKSx1PUFycmF5LmFwcGx5KG51bGwsQXJyYXkobC5sZW5ndGgpKS5tYXAoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLC1OdW1iZXIuTUFYX1ZBTFVFKTtjLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2dbZV09TWF0aC5taW4odC52YWx1ZSxnW2VdKX0pKX0pKSxkLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3VbZV09TWF0aC5tYXgodC52YWx1ZSx1W2VdKX0pKX0pKSx0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7ZC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3ZhciBvPWdbaV0sbj11W2ldO3MuY2hhcnQuc3RhY2tlZCYmKG49MCx0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC52YWx1ZSE9PS1OdW1iZXIuTUFYX1ZBTFVFJiYobis9dC52YWx1ZSksbyE9PU51bWJlci5NSU5fVkFMVUUmJihvKz1jW2ldW2VdLnZhbHVlKX0pKSksdC5mb3JFYWNoKChmdW5jdGlvbihpLGwpe3RbbF0ua2V5PT09ZSYmKHZvaWQgMCE9PXMueWF4aXNbZV0ubWluJiYobz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzLnlheGlzW2VdLm1pbj9zLnlheGlzW2VdLm1pbihyLm1pblkpOnMueWF4aXNbZV0ubWluKSx2b2lkIDAhPT1zLnlheGlzW2VdLm1heCYmKG49XCJmdW5jdGlvblwiPT10eXBlb2Ygcy55YXhpc1tlXS5tYXg/cy55YXhpc1tlXS5tYXgoci5tYXhZKTpzLnlheGlzW2VdLm1heCksYS5zZXRZU2NhbGVGb3JJbmRleChlLG8sbikpfSkpfSkpfSkpfX0se2tleTpcImF1dG9TY2FsZVlcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dHx8KHQ9dGhpcyk7dmFyIGE9dC53O2lmKGEuZ2xvYmFscy5pc011bHRpcGxlWUF4aXN8fGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoKXJldHVybiBjb25zb2xlLndhcm4oXCJhdXRvU2NhbGVZYXhpcyBub3Qgc3VwcG9ydGVkIGluIGEgbXVsdGkteWF4aXMgY2hhcnQuXCIpLGU7dmFyIHM9YS5nbG9iYWxzLnNlcmllc1hbMF0scj1hLmNvbmZpZy5jaGFydC5zdGFja2VkO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQsbyl7Zm9yKHZhciBuPTAsbD0wO2w8cy5sZW5ndGg7bCsrKWlmKHNbbF0+PWkueGF4aXMubWluKXtuPWw7YnJlYWt9dmFyIGgsYyxkPWEuZ2xvYmFscy5taW5ZQXJyW29dLGc9YS5nbG9iYWxzLm1heFlBcnJbb10sdT1hLmdsb2JhbHMuc3RhY2tlZFNlcmllc1RvdGFsczthLmdsb2JhbHMuc2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKG8sbCl7dmFyIHA9b1tuXTtyPyhwPXVbbl0saD1jPXAsdS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3NbZV08PWkueGF4aXMubWF4JiZzW2VdPj1pLnhheGlzLm1pbiYmKHQ+YyYmbnVsbCE9PXQmJihjPXQpLG9bZV08aCYmbnVsbCE9PW9bZV0mJihoPW9bZV0pKX0pKSk6KGg9Yz1wLG8uZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtpZihzW2VdPD1pLnhheGlzLm1heCYmc1tlXT49aS54YXhpcy5taW4pe3ZhciByPXQsbz10O2EuZ2xvYmFscy5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXtudWxsIT09dCYmKHI9TWF0aC5taW4oaVtlXSxyKSxvPU1hdGgubWF4KGlbZV0sbykpfSkpLG8+YyYmbnVsbCE9PW8mJihjPW8pLHI8aCYmbnVsbCE9PXImJihoPXIpfX0pKSksdm9pZCAwPT09aCYmdm9pZCAwPT09YyYmKGg9ZCxjPWcpLGMqPWM8MD8uOToxLjEsMD09PShoKj1oPDA/MS4xOi45KSYmMD09PWMmJihoPS0xLGM9MSksYzwwJiZjPGcmJihjPWcpLGg8MCYmaD5kJiYoaD1kKSxlLmxlbmd0aD4xPyhlW2xdLm1pbj12b2lkIDA9PT10Lm1pbj9oOnQubWluLGVbbF0ubWF4PXZvaWQgMD09PXQubWF4P2M6dC5tYXgpOihlWzBdLm1pbj12b2lkIDA9PT10Lm1pbj9oOnQubWluLGVbMF0ubWF4PXZvaWQgMD09PXQubWF4P2M6dC5tYXgpfSkpfSkpLGV9fV0pLHR9KCksVT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnNjYWxlcz1uZXcgXyhlKX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRZUmFuZ2UoKSx0aGlzLnNldFhSYW5nZSgpLHRoaXMuc2V0WlJhbmdlKCl9fSx7a2V5OlwiZ2V0TWluWU1heFlcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06TnVtYmVyLk1BWF9WQUxVRSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTotTnVtYmVyLk1BWF9WQUxVRSxhPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLHM9dGhpcy53LmNvbmZpZyxyPXRoaXMudy5nbG9iYWxzLG89LU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUlOX1ZBTFVFO251bGw9PT1hJiYoYT10KzEpO3ZhciBsPXIuc2VyaWVzLGg9bCxjPWw7XCJjYW5kbGVzdGlja1wiPT09cy5jaGFydC50eXBlPyhoPXIuc2VyaWVzQ2FuZGxlTCxjPXIuc2VyaWVzQ2FuZGxlSCk6XCJib3hQbG90XCI9PT1zLmNoYXJ0LnR5cGU/KGg9ci5zZXJpZXNDYW5kbGVPLGM9ci5zZXJpZXNDYW5kbGVDKTpyLmlzUmFuZ2VEYXRhJiYoaD1yLnNlcmllc1JhbmdlU3RhcnQsYz1yLnNlcmllc1JhbmdlRW5kKTtmb3IodmFyIGQ9dDtkPGE7ZCsrKXtyLmRhdGFQb2ludHM9TWF0aC5tYXgoci5kYXRhUG9pbnRzLGxbZF0ubGVuZ3RoKSxyLmNhdGVnb3J5TGFiZWxzLmxlbmd0aCYmKHIuZGF0YVBvaW50cz1yLmNhdGVnb3J5TGFiZWxzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXR9KSkubGVuZ3RoKSxyLmxhYmVscy5sZW5ndGgmJlwiZGF0ZXRpbWVcIiE9PXMueGF4aXMudHlwZSYmMCE9PXIuc2VyaWVzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmxlbmd0aH0pLDApJiYoci5kYXRhUG9pbnRzPU1hdGgubWF4KHIuZGF0YVBvaW50cyxyLmxhYmVscy5sZW5ndGgpKTtmb3IodmFyIGc9MDtnPHIuc2VyaWVzW2RdLmxlbmd0aDtnKyspe3ZhciB1PWxbZF1bZ107bnVsbCE9PXUmJnguaXNOdW1iZXIodSk/KHZvaWQgMCE9PWNbZF1bZ10mJihvPU1hdGgubWF4KG8sY1tkXVtnXSksZT1NYXRoLm1pbihlLGNbZF1bZ10pKSx2b2lkIDAhPT1oW2RdW2ddJiYoZT1NYXRoLm1pbihlLGhbZF1bZ10pLGk9TWF0aC5tYXgoaSxoW2RdW2ddKSksXCJjYW5kbGVzdGlja1wiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJyYW5nZUFyZWFcIj09PXRoaXMudy5jb25maWcuY2hhcnQudHlwZSYmXCJyYW5nZUJhclwiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlfHwoXCJjYW5kbGVzdGlja1wiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZcImJveFBsb3RcIiE9PXRoaXMudy5jb25maWcuY2hhcnQudHlwZXx8dm9pZCAwIT09ci5zZXJpZXNDYW5kbGVDW2RdW2ddJiYobz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlT1tkXVtnXSksbz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlSFtkXVtnXSksbz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlTFtkXVtnXSksbz1NYXRoLm1heChvLHIuc2VyaWVzQ2FuZGxlQ1tkXVtnXSksXCJib3hQbG90XCI9PT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJihvPU1hdGgubWF4KG8sci5zZXJpZXNDYW5kbGVNW2RdW2ddKSkpLCFzLnNlcmllc1tkXS50eXBlfHxcImNhbmRsZXN0aWNrXCI9PT1zLnNlcmllc1tkXS50eXBlJiZcImJveFBsb3RcIj09PXMuc2VyaWVzW2RdLnR5cGUmJlwicmFuZ2VBcmVhXCI9PT1zLnNlcmllc1tkXS50eXBlJiZcInJhbmdlQmFyXCI9PT1zLnNlcmllc1tkXS50eXBlfHwobz1NYXRoLm1heChvLHIuc2VyaWVzW2RdW2ddKSxlPU1hdGgubWluKGUsci5zZXJpZXNbZF1bZ10pKSxpPW8pLHIuc2VyaWVzR29hbHNbZF0mJnIuc2VyaWVzR29hbHNbZF1bZ10mJkFycmF5LmlzQXJyYXkoci5zZXJpZXNHb2Fsc1tkXVtnXSkmJnIuc2VyaWVzR29hbHNbZF1bZ10uZm9yRWFjaCgoZnVuY3Rpb24odCl7biE9PU51bWJlci5NSU5fVkFMVUUmJihuPU1hdGgubWluKG4sdC52YWx1ZSksZT1uKSxvPU1hdGgubWF4KG8sdC52YWx1ZSksaT1vfSkpLHguaXNGbG9hdCh1KSYmKHU9eC5ub0V4cG9uZW50cyh1KSxyLnlWYWx1ZURlY2ltYWw9TWF0aC5tYXgoci55VmFsdWVEZWNpbWFsLHUudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0ubGVuZ3RoKSksbj5oW2RdW2ddJiZoW2RdW2ddPDAmJihuPWhbZF1bZ10pKTpyLmhhc051bGxWYWx1ZXM9ITB9fXJldHVyblwicmFuZ2VCYXJcIj09PXMuY2hhcnQudHlwZSYmci5zZXJpZXNSYW5nZVN0YXJ0Lmxlbmd0aCYmci5pc0Jhckhvcml6b250YWwmJihuPWUpLFwiYmFyXCI9PT1zLmNoYXJ0LnR5cGUmJihuPDAmJm88MCYmKG89MCksbj09PU51bWJlci5NSU5fVkFMVUUmJihuPTApKSx7bWluWTpuLG1heFk6byxsb3dlc3RZOmUsaGlnaGVzdFk6aX19fSx7a2V5Olwic2V0WVJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWc7dC5tYXhZPS1OdW1iZXIuTUFYX1ZBTFVFLHQubWluWT1OdW1iZXIuTUlOX1ZBTFVFO3ZhciBpPU51bWJlci5NQVhfVkFMVUU7aWYodC5pc011bHRpcGxlWUF4aXMpZm9yKHZhciBhPTA7YTx0LnNlcmllcy5sZW5ndGg7YSsrKXt2YXIgcz10aGlzLmdldE1pbllNYXhZKGEsaSxudWxsLGErMSk7dC5taW5ZQXJyLnB1c2gocy5taW5ZKSx0Lm1heFlBcnIucHVzaChzLm1heFkpLGk9cy5sb3dlc3RZfXZhciByPXRoaXMuZ2V0TWluWU1heFkoMCxpLG51bGwsdC5zZXJpZXMubGVuZ3RoKTtpZih0Lm1pblk9ci5taW5ZLHQubWF4WT1yLm1heFksaT1yLmxvd2VzdFksZS5jaGFydC5zdGFja2VkJiZ0aGlzLl9zZXRTdGFja2VkTWluTWF4KCksKFwibGluZVwiPT09ZS5jaGFydC50eXBlfHxcImFyZWFcIj09PWUuY2hhcnQudHlwZXx8XCJjYW5kbGVzdGlja1wiPT09ZS5jaGFydC50eXBlfHxcImJveFBsb3RcIj09PWUuY2hhcnQudHlwZXx8XCJyYW5nZUJhclwiPT09ZS5jaGFydC50eXBlJiYhdC5pc0Jhckhvcml6b250YWwpJiZ0Lm1pblk9PT1OdW1iZXIuTUlOX1ZBTFVFJiZpIT09LU51bWJlci5NQVhfVkFMVUUmJmkhPT10Lm1heFkpe3ZhciBvPXQubWF4WS1pOyhpPj0wJiZpPD0xMHx8dm9pZCAwIT09ZS55YXhpc1swXS5taW58fHZvaWQgMCE9PWUueWF4aXNbMF0ubWF4KSYmKG89MCksdC5taW5ZPWktNSpvLzEwMCxpPjAmJnQubWluWTwwJiYodC5taW5ZPTApLHQubWF4WT10Lm1heFkrNSpvLzEwMH1pZihlLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dm9pZCAwIT09ZS5tYXgmJihcIm51bWJlclwiPT10eXBlb2YgZS5tYXg/dC5tYXhZQXJyW2ldPWUubWF4OlwiZnVuY3Rpb25cIj09dHlwZW9mIGUubWF4JiYodC5tYXhZQXJyW2ldPWUubWF4KHQuaXNNdWx0aXBsZVlBeGlzP3QubWF4WUFycltpXTp0Lm1heFkpKSx0Lm1heFk9dC5tYXhZQXJyW2ldKSx2b2lkIDAhPT1lLm1pbiYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLm1pbj90Lm1pbllBcnJbaV09ZS5taW46XCJmdW5jdGlvblwiPT10eXBlb2YgZS5taW4mJih0Lm1pbllBcnJbaV09ZS5taW4odC5pc011bHRpcGxlWUF4aXM/dC5taW5ZQXJyW2ldPT09TnVtYmVyLk1JTl9WQUxVRT8wOnQubWluWUFycltpXTp0Lm1pblkpKSx0Lm1pblk9dC5taW5ZQXJyW2ldKX0pKSx0LmlzQmFySG9yaXpvbnRhbCl7W1wibWluXCIsXCJtYXhcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7dm9pZCAwIT09ZS54YXhpc1tpXSYmXCJudW1iZXJcIj09dHlwZW9mIGUueGF4aXNbaV0mJihcIm1pblwiPT09aT90Lm1pblk9ZS54YXhpc1tpXTp0Lm1heFk9ZS54YXhpc1tpXSl9KSl9cmV0dXJuIHQuaXNNdWx0aXBsZVlBeGlzPyh0aGlzLnNjYWxlcy5zZXRNdWx0aXBsZVlTY2FsZXMoKSx0Lm1pblk9aSx0LnlBeGlzU2NhbGUuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt0Lm1pbllBcnJbaV09ZS5uaWNlTWluLHQubWF4WUFycltpXT1lLm5pY2VNYXh9KSkpOih0aGlzLnNjYWxlcy5zZXRZU2NhbGVGb3JJbmRleCgwLHQubWluWSx0Lm1heFkpLHQubWluWT10LnlBeGlzU2NhbGVbMF0ubmljZU1pbix0Lm1heFk9dC55QXhpc1NjYWxlWzBdLm5pY2VNYXgsdC5taW5ZQXJyWzBdPXQueUF4aXNTY2FsZVswXS5uaWNlTWluLHQubWF4WUFyclswXT10LnlBeGlzU2NhbGVbMF0ubmljZU1heCkse21pblk6dC5taW5ZLG1heFk6dC5tYXhZLG1pbllBcnI6dC5taW5ZQXJyLG1heFlBcnI6dC5tYXhZQXJyLHlBeGlzU2NhbGU6dC55QXhpc1NjYWxlfX19LHtrZXk6XCJzZXRYUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZyxpPVwibnVtZXJpY1wiPT09ZS54YXhpcy50eXBlfHxcImRhdGV0aW1lXCI9PT1lLnhheGlzLnR5cGV8fFwiY2F0ZWdvcnlcIj09PWUueGF4aXMudHlwZSYmIXQubm9MYWJlbHNQcm92aWRlZHx8dC5ub0xhYmVsc1Byb3ZpZGVkfHx0LmlzWE51bWVyaWM7aWYodC5pc1hOdW1lcmljJiZmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dC5zZXJpZXMubGVuZ3RoO2UrKylpZih0LmxhYmVsc1tlXSlmb3IodmFyIGk9MDtpPHQubGFiZWxzW2VdLmxlbmd0aDtpKyspbnVsbCE9PXQubGFiZWxzW2VdW2ldJiZ4LmlzTnVtYmVyKHQubGFiZWxzW2VdW2ldKSYmKHQubWF4WD1NYXRoLm1heCh0Lm1heFgsdC5sYWJlbHNbZV1baV0pLHQuaW5pdGlhbE1heFg9TWF0aC5tYXgodC5tYXhYLHQubGFiZWxzW2VdW2ldKSx0Lm1pblg9TWF0aC5taW4odC5taW5YLHQubGFiZWxzW2VdW2ldKSx0LmluaXRpYWxNaW5YPU1hdGgubWluKHQubWluWCx0LmxhYmVsc1tlXVtpXSkpfSgpLHQubm9MYWJlbHNQcm92aWRlZCYmMD09PWUueGF4aXMuY2F0ZWdvcmllcy5sZW5ndGgmJih0Lm1heFg9dC5sYWJlbHNbdC5sYWJlbHMubGVuZ3RoLTFdLHQuaW5pdGlhbE1heFg9dC5sYWJlbHNbdC5sYWJlbHMubGVuZ3RoLTFdLHQubWluWD0xLHQuaW5pdGlhbE1pblg9MSksdC5pc1hOdW1lcmljfHx0Lm5vTGFiZWxzUHJvdmlkZWR8fHQuZGF0YUZvcm1hdFhOdW1lcmljKXt2YXIgYTtpZih2b2lkIDA9PT1lLnhheGlzLnRpY2tBbW91bnQ/KGE9TWF0aC5yb3VuZCh0LnN2Z1dpZHRoLzE1MCksXCJudW1lcmljXCI9PT1lLnhheGlzLnR5cGUmJnQuZGF0YVBvaW50czwzMCYmKGE9dC5kYXRhUG9pbnRzLTEpLGE+dC5kYXRhUG9pbnRzJiYwIT09dC5kYXRhUG9pbnRzJiYoYT10LmRhdGFQb2ludHMtMSkpOlwiZGF0YVBvaW50c1wiPT09ZS54YXhpcy50aWNrQW1vdW50Pyh0LnNlcmllcy5sZW5ndGg+MSYmKGE9dC5zZXJpZXNbdC5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgtMSksdC5pc1hOdW1lcmljJiYoYT10Lm1heFgtdC5taW5YLTEpKTphPWUueGF4aXMudGlja0Ftb3VudCx0LnhUaWNrQW1vdW50PWEsdm9pZCAwIT09ZS54YXhpcy5tYXgmJlwibnVtYmVyXCI9PXR5cGVvZiBlLnhheGlzLm1heCYmKHQubWF4WD1lLnhheGlzLm1heCksdm9pZCAwIT09ZS54YXhpcy5taW4mJlwibnVtYmVyXCI9PXR5cGVvZiBlLnhheGlzLm1pbiYmKHQubWluWD1lLnhheGlzLm1pbiksdm9pZCAwIT09ZS54YXhpcy5yYW5nZSYmKHQubWluWD10Lm1heFgtZS54YXhpcy5yYW5nZSksdC5taW5YIT09TnVtYmVyLk1BWF9WQUxVRSYmdC5tYXhYIT09LU51bWJlci5NQVhfVkFMVUUpaWYoZS54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJiF0LmRhdGFGb3JtYXRYTnVtZXJpYyl7Zm9yKHZhciBzPVtdLHI9dC5taW5YLTE7cjx0Lm1heFg7cisrKXMucHVzaChyKzEpO3QueEF4aXNTY2FsZT17cmVzdWx0OnMsbmljZU1pbjpzWzBdLG5pY2VNYXg6c1tzLmxlbmd0aC0xXX19ZWxzZSB0LnhBeGlzU2NhbGU9dGhpcy5zY2FsZXMuc2V0WFNjYWxlKHQubWluWCx0Lm1heFgpO2Vsc2UgdC54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLmxpbmVhclNjYWxlKDAsYSxhKSx0Lm5vTGFiZWxzUHJvdmlkZWQmJnQubGFiZWxzLmxlbmd0aD4wJiYodC54QXhpc1NjYWxlPXRoaXMuc2NhbGVzLmxpbmVhclNjYWxlKDEsdC5sYWJlbHMubGVuZ3RoLGEtMSksdC5zZXJpZXNYPXQubGFiZWxzLnNsaWNlKCkpO2kmJih0LmxhYmVscz10LnhBeGlzU2NhbGUucmVzdWx0LnNsaWNlKCkpfXJldHVybiB0LmlzQmFySG9yaXpvbnRhbCYmdC5sYWJlbHMubGVuZ3RoJiYodC54VGlja0Ftb3VudD10LmxhYmVscy5sZW5ndGgpLHRoaXMuX2hhbmRsZVNpbmdsZURhdGFQb2ludCgpLHRoaXMuX2dldE1pblhEaWZmKCkse21pblg6dC5taW5YLG1heFg6dC5tYXhYfX19LHtrZXk6XCJzZXRaUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzO2lmKHQuaXNEYXRhWFlaKWZvcih2YXIgZT0wO2U8dC5zZXJpZXMubGVuZ3RoO2UrKylpZih2b2lkIDAhPT10LnNlcmllc1pbZV0pZm9yKHZhciBpPTA7aTx0LnNlcmllc1pbZV0ubGVuZ3RoO2krKyludWxsIT09dC5zZXJpZXNaW2VdW2ldJiZ4LmlzTnVtYmVyKHQuc2VyaWVzWltlXVtpXSkmJih0Lm1heFo9TWF0aC5tYXgodC5tYXhaLHQuc2VyaWVzWltlXVtpXSksdC5taW5aPU1hdGgubWluKHQubWluWix0LnNlcmllc1pbZV1baV0pKX19LHtrZXk6XCJfaGFuZGxlU2luZ2xlRGF0YVBvaW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXRoaXMudy5jb25maWc7aWYodC5taW5YPT09dC5tYXhYKXt2YXIgaT1uZXcgSSh0aGlzLmN0eCk7aWYoXCJkYXRldGltZVwiPT09ZS54YXhpcy50eXBlKXt2YXIgYT1pLmdldERhdGUodC5taW5YKTtlLnhheGlzLmxhYmVscy5kYXRldGltZVVUQz9hLnNldFVUQ0RhdGUoYS5nZXRVVENEYXRlKCktMik6YS5zZXREYXRlKGEuZ2V0RGF0ZSgpLTIpLHQubWluWD1uZXcgRGF0ZShhKS5nZXRUaW1lKCk7dmFyIHM9aS5nZXREYXRlKHQubWF4WCk7ZS54YXhpcy5sYWJlbHMuZGF0ZXRpbWVVVEM/cy5zZXRVVENEYXRlKHMuZ2V0VVRDRGF0ZSgpKzIpOnMuc2V0RGF0ZShzLmdldERhdGUoKSsyKSx0Lm1heFg9bmV3IERhdGUocykuZ2V0VGltZSgpfWVsc2UoXCJudW1lcmljXCI9PT1lLnhheGlzLnR5cGV8fFwiY2F0ZWdvcnlcIj09PWUueGF4aXMudHlwZSYmIXQubm9MYWJlbHNQcm92aWRlZCkmJih0Lm1pblg9dC5taW5YLTIsdC5pbml0aWFsTWluWD10Lm1pblgsdC5tYXhYPXQubWF4WCsyLHQuaW5pdGlhbE1heFg9dC5tYXhYKX19fSx7a2V5OlwiX2dldE1pblhEaWZmXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFsczt0LmlzWE51bWVyaWMmJnQuc2VyaWVzWC5mb3JFYWNoKChmdW5jdGlvbihlLGkpezE9PT1lLmxlbmd0aCYmZS5wdXNoKHQuc2VyaWVzWFt0Lm1heFZhbHNJbkFycmF5SW5kZXhdW3Quc2VyaWVzWFt0Lm1heFZhbHNJbkFycmF5SW5kZXhdLmxlbmd0aC0xXSk7dmFyIGE9ZS5zbGljZSgpO2Euc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpLGEuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXtpZihpPjApe3ZhciBzPWUtYVtpLTFdO3M+MCYmKHQubWluWERpZmY9TWF0aC5taW4ocyx0Lm1pblhEaWZmKSl9fSkpLDEhPT10LmRhdGFQb2ludHMmJnQubWluWERpZmYhPT1OdW1iZXIuTUFYX1ZBTFVFfHwodC5taW5YRGlmZj0uNSl9KSl9fSx7a2V5OlwiX3NldFN0YWNrZWRNaW5NYXhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncuZ2xvYmFscztpZihlLnNlcmllcy5sZW5ndGgpe3ZhciBpPWUuc2VyaWVzR3JvdXBzO2kubGVuZ3RofHwoaT1bdGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lfSkpXSk7dmFyIGE9e30scz17fTtpLmZvckVhY2goKGZ1bmN0aW9uKGkpe2FbaV09W10sc1tpXT1bXSx0LncuY29uZmlnLnNlcmllcy5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuaW5kZXhPZih0Lm5hbWUpPi0xP2U6bnVsbH0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIHI9MDtyPGUuc2VyaWVzW2UubWF4VmFsc0luQXJyYXlJbmRleF0ubGVuZ3RoO3IrKyl2b2lkIDA9PT1hW2ldW3JdJiYoYVtpXVtyXT0wLHNbaV1bcl09MCksbnVsbCE9PWUuc2VyaWVzW3RdW3JdJiZ4LmlzTnVtYmVyKGUuc2VyaWVzW3RdW3JdKSYmKGUuc2VyaWVzW3RdW3JdPjA/YVtpXVtyXSs9cGFyc2VGbG9hdChlLnNlcmllc1t0XVtyXSkrMWUtNDpzW2ldW3JdKz1wYXJzZUZsb2F0KGUuc2VyaWVzW3RdW3JdKSl9KSl9KSksT2JqZWN0LmVudHJpZXMoYSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9Zyh0LDEpWzBdO2FbaV0uZm9yRWFjaCgoZnVuY3Rpb24odCxyKXtlLm1heFk9TWF0aC5tYXgoZS5tYXhZLGFbaV1bcl0pLGUubWluWT1NYXRoLm1pbihlLm1pblksc1tpXVtyXSl9KSl9KSl9fX1dKSx0fSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy5lbGdyaWQ9aSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLnhheGlzRm9udFNpemU9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHRoaXMuYXhpc0ZvbnRGYW1pbHk9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksdGhpcy54YXhpc0ZvcmVDb2xvcnM9cy5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmNvbG9ycyx0aGlzLmlzQ2F0ZWdvcnlCYXJIb3Jpem9udGFsPVwiYmFyXCI9PT1zLmNvbmZpZy5jaGFydC50eXBlJiZzLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbCx0aGlzLnhBeGlzb2ZmWD0wLFwiYm90dG9tXCI9PT1zLmNvbmZpZy54YXhpcy5wb3NpdGlvbiYmKHRoaXMueEF4aXNvZmZYPXMuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmRyYXduTGFiZWxzPVtdLHRoaXMuYXhlc1V0aWxzPW5ldyBCKGUpfXJldHVybiByKHQsW3trZXk6XCJkcmF3WWF4aXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnN0eWxlLHI9cy5mb250U2l6ZSxvPXMuZm9udEZhbWlseSxuPXMuZm9udFdlaWdodCxsPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpc1wiLHJlbDp0LHRyYW5zZm9ybTpcInRyYW5zbGF0ZShcIitpLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdK1wiLCAwKVwifSk7aWYodGhpcy5heGVzVXRpbHMuaXNZQXhpc0hpZGRlbih0KSlyZXR1cm4gbDt2YXIgaD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGV4dHMtZ1wifSk7bC5hZGQoaCk7dmFyIGM9aS5nbG9iYWxzLnlBeGlzU2NhbGVbdF0ucmVzdWx0Lmxlbmd0aC0xLGQ9aS5nbG9iYWxzLmdyaWRIZWlnaHQvYyxnPWkuZ2xvYmFscy50cmFuc2xhdGVZLHU9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF0scD1pLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQuc2xpY2UoKTtwPXRoaXMuYXhlc1V0aWxzLmNoZWNrRm9yUmV2ZXJzZWRMYWJlbHModCxwKTt2YXIgZj1cIlwiO2lmKGkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5zaG93KWZvcih2YXIgeD1mdW5jdGlvbihsKXt2YXIgeD1wW2xdO3g9dSh4LGwsaSk7dmFyIGI9aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnBhZGRpbmc7aS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJjAhPT1pLmNvbmZpZy55YXhpcy5sZW5ndGgmJihiKj0tMSk7dmFyIHY9XCJlbmRcIjtpLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKHY9XCJzdGFydFwiKSxcImxlZnRcIj09PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5hbGlnbj92PVwic3RhcnRcIjpcImNlbnRlclwiPT09aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLmFsaWduP3Y9XCJtaWRkbGVcIjpcInJpZ2h0XCI9PT1pLmNvbmZpZy55YXhpc1t0XS5sYWJlbHMuYWxpZ24mJih2PVwiZW5kXCIpO3ZhciBtPWUuYXhlc1V0aWxzLmdldFlBeGlzRm9yZUNvbG9yKHMuY29sb3JzLHQpLHk9aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLm9mZnNldFk7XCJoZWF0bWFwXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiYoeS09KGkuZ2xvYmFscy5ncmlkSGVpZ2h0L2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLTEpLzIpO3ZhciB3PWEuZHJhd1RleHQoe3g6Yix5OmcrYy8xMCt5KzEsdGV4dDp4LHRleHRBbmNob3I6dixmb250U2l6ZTpyLGZvbnRGYW1pbHk6byxmb250V2VpZ2h0Om4sbWF4V2lkdGg6aS5jb25maWcueWF4aXNbdF0ubGFiZWxzLm1heFdpZHRoLGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KG0pP21bbF06bSxpc1BsYWluVGV4dDohMSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtbGFiZWwgXCIrcy5jc3NDbGFzc30pO2w9PT1jJiYoZj13KSxoLmFkZCh3KTt2YXIgaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoaS5nbG9iYWxzLlNWR05TLFwidGl0bGVcIik7aWYoay50ZXh0Q29udGVudD1BcnJheS5pc0FycmF5KHgpP3guam9pbihcIiBcIik6eCx3Lm5vZGUuYXBwZW5kQ2hpbGQoayksMCE9PWkuY29uZmlnLnlheGlzW3RdLmxhYmVscy5yb3RhdGUpe3ZhciBBPWEucm90YXRlQXJvdW5kQ2VudGVyKGYubm9kZSksUz1hLnJvdGF0ZUFyb3VuZENlbnRlcih3Lm5vZGUpO3cubm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIixcInJvdGF0ZShcIi5jb25jYXQoaS5jb25maWcueWF4aXNbdF0ubGFiZWxzLnJvdGF0ZSxcIiBcIikuY29uY2F0KEEueCxcIiBcIikuY29uY2F0KFMueSxcIilcIikpfWcrPWR9LGI9YztiPj0wO2ItLSl4KGIpO2lmKHZvaWQgMCE9PWkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnRleHQpe3ZhciB2PWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy15YXhpcy10aXRsZVwifSkseT0wO2kuY29uZmlnLnlheGlzW3RdLm9wcG9zaXRlJiYoeT1pLmdsb2JhbHMudHJhbnNsYXRlWUF4aXNYW3RdKTt2YXIgdz1hLmRyYXdUZXh0KHt4OnkseTppLmdsb2JhbHMuZ3JpZEhlaWdodC8yK2kuZ2xvYmFscy50cmFuc2xhdGVZK2kuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFksdGV4dDppLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJlbmRcIixmb3JlQ29sb3I6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuY29sb3IsZm9udFNpemU6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udFNpemUsZm9udFdlaWdodDppLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvbnRGYW1pbHk6aS5jb25maWcueWF4aXNbdF0udGl0bGUuc3R5bGUuZm9udEZhbWlseSxjc3NDbGFzczpcImFwZXhjaGFydHMteWF4aXMtdGl0bGUtdGV4dCBcIitpLmNvbmZpZy55YXhpc1t0XS50aXRsZS5zdHlsZS5jc3NDbGFzc30pO3YuYWRkKHcpLGwuYWRkKHYpfXZhciBrPWkuY29uZmlnLnlheGlzW3RdLmF4aXNCb3JkZXIsQT0zMStrLm9mZnNldFg7aWYoaS5jb25maWcueWF4aXNbdF0ub3Bwb3NpdGUmJihBPS0zMS1rLm9mZnNldFgpLGsuc2hvdyl7dmFyIFM9YS5kcmF3TGluZShBLGkuZ2xvYmFscy50cmFuc2xhdGVZK2sub2Zmc2V0WS0yLEEsaS5nbG9iYWxzLmdyaWRIZWlnaHQraS5nbG9iYWxzLnRyYW5zbGF0ZVkray5vZmZzZXRZKzIsay5jb2xvciwwLGsud2lkdGgpO2wuYWRkKFMpfXJldHVybiBpLmNvbmZpZy55YXhpc1t0XS5heGlzVGlja3Muc2hvdyYmdGhpcy5heGVzVXRpbHMuZHJhd1lBeGlzVGlja3MoQSxjLGssaS5jb25maWcueWF4aXNbdF0uYXhpc1RpY2tzLHQsZCxsKSxsfX0se2tleTpcImRyYXdZYXhpc0ludmVyc2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IG0odGhpcy5jdHgpLGE9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzIGFwZXhjaGFydHMteWF4aXMtaW52ZXJzZWRcIn0pLHM9aS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLXRleHRzLWdcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGUuZ2xvYmFscy50cmFuc2xhdGVYQXhpc1gsXCIsIFwiKS5jb25jYXQoZS5nbG9iYWxzLnRyYW5zbGF0ZVhBeGlzWSxcIilcIil9KTthLmFkZChzKTt2YXIgcj1lLmdsb2JhbHMueUF4aXNTY2FsZVt0XS5yZXN1bHQubGVuZ3RoLTEsbz1lLmdsb2JhbHMuZ3JpZFdpZHRoL3IrLjEsbj1vK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYLGw9ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixoPWUuZ2xvYmFscy55QXhpc1NjYWxlW3RdLnJlc3VsdC5zbGljZSgpLGM9ZS5nbG9iYWxzLnRpbWVzY2FsZUxhYmVscztjLmxlbmd0aD4wJiYodGhpcy54YXhpc0xhYmVscz1jLnNsaWNlKCkscj0oaD1jLnNsaWNlKCkpLmxlbmd0aCksaD10aGlzLmF4ZXNVdGlscy5jaGVja0ZvclJldmVyc2VkTGFiZWxzKHQsaCk7dmFyIGQ9Yy5sZW5ndGg7aWYoZS5jb25maWcueGF4aXMubGFiZWxzLnNob3cpZm9yKHZhciBnPWQ/MDpyO2Q/ZzxkOmc+PTA7ZD9nKys6Zy0tKXt2YXIgdT1oW2ddO3U9bCh1LGcsZSk7dmFyIHA9ZS5nbG9iYWxzLmdyaWRXaWR0aCtlLmdsb2JhbHMucGFkSG9yaXpvbnRhbC0obi1vK2UuY29uZmlnLnhheGlzLmxhYmVscy5vZmZzZXRYKTtpZihjLmxlbmd0aCl7dmFyIGY9dGhpcy5heGVzVXRpbHMuZ2V0TGFiZWwoaCxjLHAsZyx0aGlzLmRyYXduTGFiZWxzLHRoaXMueGF4aXNGb250U2l6ZSk7cD1mLngsdT1mLnRleHQsdGhpcy5kcmF3bkxhYmVscy5wdXNoKGYudGV4dCksMD09PWcmJmUuZ2xvYmFscy5za2lwRmlyc3RUaW1lbGluZWxhYmVsJiYodT1cIlwiKSxnPT09aC5sZW5ndGgtMSYmZS5nbG9iYWxzLnNraXBMYXN0VGltZWxpbmVsYWJlbCYmKHU9XCJcIil9dmFyIHg9aS5kcmF3VGV4dCh7eDpwLHk6dGhpcy54QXhpc29mZlgrZS5jb25maWcueGF4aXMubGFiZWxzLm9mZnNldFkrMzAtKFwidG9wXCI9PT1lLmNvbmZpZy54YXhpcy5wb3NpdGlvbj9lLmdsb2JhbHMueEF4aXNIZWlnaHQrZS5jb25maWcueGF4aXMuYXhpc1RpY2tzLmhlaWdodC0yOjApLHRleHQ6dSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOkFycmF5LmlzQXJyYXkodGhpcy54YXhpc0ZvcmVDb2xvcnMpP3RoaXMueGF4aXNGb3JlQ29sb3JzW3RdOnRoaXMueGF4aXNGb3JlQ29sb3JzLGZvbnRTaXplOnRoaXMueGF4aXNGb250U2l6ZSxmb250RmFtaWx5OnRoaXMueGF4aXNGb250RmFtaWx5LGZvbnRXZWlnaHQ6ZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRXZWlnaHQsaXNQbGFpblRleHQ6ITEsY3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLXhheGlzLWxhYmVsIFwiK2UuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5jc3NDbGFzc30pO3MuYWRkKHgpLHgudHNwYW4odSk7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuZ2xvYmFscy5TVkdOUyxcInRpdGxlXCIpO2IudGV4dENvbnRlbnQ9dSx4Lm5vZGUuYXBwZW5kQ2hpbGQoYiksbis9b31yZXR1cm4gdGhpcy5pbnZlcnNlZFlBeGlzVGl0bGVUZXh0KGEpLHRoaXMuaW52ZXJzZWRZQXhpc0JvcmRlcihhKSxhfX0se2tleTpcImludmVyc2VkWUF4aXNCb3JkZXJcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1lLmNvbmZpZy54YXhpcy5heGlzQm9yZGVyO2lmKGEuc2hvdyl7dmFyIHM9MDtcImJhclwiPT09ZS5jb25maWcuY2hhcnQudHlwZSYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJihzLT0xNSk7dmFyIHI9aS5kcmF3TGluZShlLmdsb2JhbHMucGFkSG9yaXpvbnRhbCtzK2Eub2Zmc2V0WCx0aGlzLnhBeGlzb2ZmWCxlLmdsb2JhbHMuZ3JpZFdpZHRoLHRoaXMueEF4aXNvZmZYLGEuY29sb3IsMCxhLmhlaWdodCk7dGhpcy5lbGdyaWQmJnRoaXMuZWxncmlkLmVsR3JpZEJvcmRlcnMmJmUuY29uZmlnLmdyaWQuc2hvdz90aGlzLmVsZ3JpZC5lbEdyaWRCb3JkZXJzLmFkZChyKTp0LmFkZChyKX19fSx7a2V5OlwiaW52ZXJzZWRZQXhpc1RpdGxlVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPW5ldyBtKHRoaXMuY3R4KTtpZih2b2lkIDAhPT1lLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUgYXBleGNoYXJ0cy15YXhpcy10aXRsZS1pbnZlcnNlZFwifSkscz1pLmRyYXdUZXh0KHt4OmUuZ2xvYmFscy5ncmlkV2lkdGgvMitlLmNvbmZpZy54YXhpcy50aXRsZS5vZmZzZXRYLHk6dGhpcy54QXhpc29mZlgrcGFyc2VGbG9hdCh0aGlzLnhheGlzRm9udFNpemUpK3BhcnNlRmxvYXQoZS5jb25maWcueGF4aXMudGl0bGUuc3R5bGUuZm9udFNpemUpK2UuY29uZmlnLnhheGlzLnRpdGxlLm9mZnNldFkrMjAsdGV4dDplLmNvbmZpZy54YXhpcy50aXRsZS50ZXh0LHRleHRBbmNob3I6XCJtaWRkbGVcIixmb250U2l6ZTplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSxmb250RmFtaWx5OmUuY29uZmlnLnhheGlzLnRpdGxlLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250V2VpZ2h0LGZvcmVDb2xvcjplLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jb2xvcixjc3NDbGFzczpcImFwZXhjaGFydHMteGF4aXMtdGl0bGUtdGV4dCBcIitlLmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5jc3NDbGFzc30pO2EuYWRkKHMpLHQuYWRkKGEpfX19LHtrZXk6XCJ5QXhpc1RpdGxlUm90YXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz17d2lkdGg6MCxoZWlnaHQ6MH0scj17d2lkdGg6MCxoZWlnaHQ6MH0sbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiIC5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy15YXhpcy10ZXh0cy1nXCIpKTtudWxsIT09byYmKHM9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7dmFyIG49aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy15YXhpcy10aXRsZSB0ZXh0XCIpKTtpZihudWxsIT09biYmKHI9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksbnVsbCE9PW4pe3ZhciBsPXRoaXMueFBhZGRpbmdGb3JZQXhpc1RpdGxlKHQscyxyLGUpO24uc2V0QXR0cmlidXRlKFwieFwiLGwueFBvcy0oZT8xMDowKSl9aWYobnVsbCE9PW4pe3ZhciBoPWEucm90YXRlQXJvdW5kQ2VudGVyKG4pO24uc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoXCIuY29uY2F0KGU/LTEqaS5jb25maWcueWF4aXNbdF0udGl0bGUucm90YXRlOmkuY29uZmlnLnlheGlzW3RdLnRpdGxlLnJvdGF0ZSxcIiBcIikuY29uY2F0KGgueCxcIiBcIikuY29uY2F0KGgueSxcIilcIikpfX19LHtrZXk6XCJ4UGFkZGluZ0ZvcllBeGlzVGl0bGVcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt2YXIgcz10aGlzLncscj0wLG89MCxuPTEwO3JldHVybiB2b2lkIDA9PT1zLmNvbmZpZy55YXhpc1t0XS50aXRsZS50ZXh0fHx0PDA/e3hQb3M6byxwYWRkOjB9OihhPyhvPWUud2lkdGgrcy5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WCtpLndpZHRoLzIrbi8yLDA9PT0ocis9MSkmJihvLT1uLzIpKToobz0tMSplLndpZHRoK3MuY29uZmlnLnlheGlzW3RdLnRpdGxlLm9mZnNldFgrbi8yK2kud2lkdGgvMixzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYobj0yNSxvPS0xKmUud2lkdGgtcy5jb25maWcueWF4aXNbdF0udGl0bGUub2Zmc2V0WC1uKSkse3hQb3M6byxwYWRkOm59KX19LHtrZXk6XCJzZXRZQXhpc1hQb3NpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9MCxzPTAscj0xOCxvPTE7aS5jb25maWcueWF4aXMubGVuZ3RoPjEmJih0aGlzLm11bHRpcGxlWXM9ITApLGkuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24obixsKXt2YXIgaD1pLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YobCk+LTF8fCFuLnNob3d8fG4uZmxvYXRpbmd8fDA9PT10W2xdLndpZHRoLGM9dFtsXS53aWR0aCtlW2xdLndpZHRoO24ub3Bwb3NpdGU/aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD8ocz1pLmdsb2JhbHMuZ3JpZFdpZHRoK2kuZ2xvYmFscy50cmFuc2xhdGVYLTEsaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtsXT1zLW4ubGFiZWxzLm9mZnNldFgpOihzPWkuZ2xvYmFscy5ncmlkV2lkdGgraS5nbG9iYWxzLnRyYW5zbGF0ZVgrbyxofHwobz1vK2MrMjApLGkuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbbF09cy1uLmxhYmVscy5vZmZzZXRYKzIwKTooYT1pLmdsb2JhbHMudHJhbnNsYXRlWC1yLGh8fChyPXIrYysyMCksaS5nbG9iYWxzLnRyYW5zbGF0ZVlBeGlzWFtsXT1hK24ubGFiZWxzLm9mZnNldFgpfSkpfX0se2tleTpcInNldFlBeGlzVGV4dEFsaWdubWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXQuZ2xvYmFscy5kb20uYmFzZUVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhcGV4Y2hhcnRzLXlheGlzXCIpOyhlPXgubGlzdFRvQXJyYXkoZSkpLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dmFyIGE9dC5jb25maWcueWF4aXNbaV07aWYoYSYmIWEuZmxvYXRpbmcmJnZvaWQgMCE9PWEubGFiZWxzLmFsaWduKXt2YXIgcz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXNbcmVsPSdcIi5jb25jYXQoaSxcIiddIC5hcGV4Y2hhcnRzLXlheGlzLXRleHRzLWdcIikpLHI9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzW3JlbD0nXCIuY29uY2F0KGksXCInXSAuYXBleGNoYXJ0cy15YXhpcy1sYWJlbFwiKSk7cj14Lmxpc3RUb0FycmF5KHIpO3ZhciBvPXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XCJsZWZ0XCI9PT1hLmxhYmVscy5hbGlnbj8oci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcInN0YXJ0XCIpfSkpLGEub3Bwb3NpdGV8fHMuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoLVwiLmNvbmNhdChvLndpZHRoLFwiLCAwKVwiKSkpOlwiY2VudGVyXCI9PT1hLmxhYmVscy5hbGlnbj8oci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIixcIm1pZGRsZVwiKX0pKSxzLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLFwidHJhbnNsYXRlKFwiLmNvbmNhdChvLndpZHRoLzIqKGEub3Bwb3NpdGU/MTotMSksXCIsIDApXCIpKSk6XCJyaWdodFwiPT09YS5sYWJlbHMuYWxpZ24mJihyLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dC5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLFwiZW5kXCIpfSkpLGEub3Bwb3NpdGUmJnMuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGUoXCIuY29uY2F0KG8ud2lkdGgsXCIsIDApXCIpKSl9fSkpfX1dKSx0fSgpLFo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5kb2N1bWVudEV2ZW50PXguYmluZCh0aGlzLmRvY3VtZW50RXZlbnQsdGhpcyl9cmV0dXJuIHIodCxbe2tleTpcImFkZEV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpLmdsb2JhbHMuZXZlbnRzLmhhc093blByb3BlcnR5KHQpP2kuZ2xvYmFscy5ldmVudHNbdF0ucHVzaChlKTppLmdsb2JhbHMuZXZlbnRzW3RdPVtlXX19LHtrZXk6XCJyZW1vdmVFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIGE9aS5nbG9iYWxzLmV2ZW50c1t0XS5pbmRleE9mKGUpOy0xIT09YSYmaS5nbG9iYWxzLmV2ZW50c1t0XS5zcGxpY2UoYSwxKX19fSx7a2V5OlwiZmlyZUV2ZW50XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnc7aWYoaS5nbG9iYWxzLmV2ZW50cy5oYXNPd25Qcm9wZXJ0eSh0KSl7ZSYmZS5sZW5ndGh8fChlPVtdKTtmb3IodmFyIGE9aS5nbG9iYWxzLmV2ZW50c1t0XSxzPWEubGVuZ3RoLHI9MDtyPHM7cisrKWFbcl0uYXBwbHkobnVsbCxlKX19fSx7a2V5Olwic2V0dXBFdmVudEhhbmRsZXJzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9dGhpcy5jdHgsYT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKGUuZ2xvYmFscy5jaGFydENsYXNzKTt0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7YS5hZGRFdmVudExpc3RlbmVyKHQsKGZ1bmN0aW9uKHQpe3ZhciBhPU9iamVjdC5hc3NpZ24oe30sZSx7c2VyaWVzSW5kZXg6ZS5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXgsZGF0YVBvaW50SW5kZXg6ZS5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXh9KTtcIm1vdXNlbW92ZVwiPT09dC50eXBlfHxcInRvdWNobW92ZVwiPT09dC50eXBlP1wiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZU1vdmUmJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VzZU1vdmUodCxpLGEpOlwibW91c2VsZWF2ZVwiPT09dC50eXBlfHxcInRvdWNobGVhdmVcIj09PXQudHlwZT9cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMubW91c2VMZWF2ZSYmZS5jb25maWcuY2hhcnQuZXZlbnRzLm1vdXNlTGVhdmUodCxpLGEpOihcIm1vdXNldXBcIj09PXQudHlwZSYmMT09PXQud2hpY2h8fFwidG91Y2hlbmRcIj09PXQudHlwZSkmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNvbmZpZy5jaGFydC5ldmVudHMuY2xpY2smJmUuY29uZmlnLmNoYXJ0LmV2ZW50cy5jbGljayh0LGksYSksaS5jdHguZXZlbnRzLmZpcmVFdmVudChcImNsaWNrXCIsW3QsaSxhXSkpfSkse2NhcHR1cmU6ITEscGFzc2l2ZTohMH0pfSkpLHRoaXMuY3R4LmV2ZW50TGlzdC5mb3JFYWNoKChmdW5jdGlvbihpKXtlLmdsb2JhbHMuZG9tLmJhc2VFbC5hZGRFdmVudExpc3RlbmVyKGksdC5kb2N1bWVudEV2ZW50LHtwYXNzaXZlOiEwfSl9KSksdGhpcy5jdHguY29yZS5zZXR1cEJydXNoSGFuZGxlcigpfX0se2tleTpcImRvY3VtZW50RXZlbnRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LnRhcmdldC5jbGFzc05hbWU7aWYoXCJjbGlja1wiPT09dC50eXBlKXt2YXIgYT1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtbWVudVwiKTthJiZhLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpJiZcImFwZXhjaGFydHMtbWVudS1pY29uXCIhPT1pJiZhLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKX1lLmdsb2JhbHMuY2xpZW50WD1cInRvdWNobW92ZVwiPT09dC50eXBlP3QudG91Y2hlc1swXS5jbGllbnRYOnQuY2xpZW50WCxlLmdsb2JhbHMuY2xpZW50WT1cInRvdWNobW92ZVwiPT09dC50eXBlP3QudG91Y2hlc1swXS5jbGllbnRZOnQuY2xpZW50WX19XSksdH0oKSwkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJzZXRDdXJyZW50TG9jYWxlVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LmNvbmZpZy5jaGFydC5sb2NhbGVzO3dpbmRvdy5BcGV4LmNoYXJ0JiZ3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzJiZ3aW5kb3cuQXBleC5jaGFydC5sb2NhbGVzLmxlbmd0aD4wJiYoZT10aGlzLncuY29uZmlnLmNoYXJ0LmxvY2FsZXMuY29uY2F0KHdpbmRvdy5BcGV4LmNoYXJ0LmxvY2FsZXMpKTt2YXIgaT1lLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZT09PXR9KSlbMF07aWYoIWkpdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgbG9jYWxlIG5hbWUgcHJvdmlkZWQuIFBsZWFzZSBtYWtlIHN1cmUgeW91IHNldCB0aGUgY29ycmVjdCBsb2NhbGUgbmFtZSBpbiBvcHRpb25zXCIpO3ZhciBhPXguZXh0ZW5kKEMsaSk7dGhpcy53Lmdsb2JhbHMubG9jYWxlPWEub3B0aW9uc319XSksdH0oKSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkcmF3QXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGksYSxzPXRoaXMscj10aGlzLncuZ2xvYmFscyxvPXRoaXMudy5jb25maWcsbj1uZXcgVih0aGlzLmN0eCxlKSxsPW5ldyBxKHRoaXMuY3R4LGUpO3IuYXhpc0NoYXJ0cyYmXCJyYWRhclwiIT09dCYmKHIuaXNCYXJIb3Jpem9udGFsPyhhPWwuZHJhd1lheGlzSW52ZXJzZWQoMCksaT1uLmRyYXdYYXhpc0ludmVyc2VkKDApLHIuZG9tLmVsR3JhcGhpY2FsLmFkZChpKSxyLmRvbS5lbEdyYXBoaWNhbC5hZGQoYSkpOihpPW4uZHJhd1hheGlzKCksci5kb20uZWxHcmFwaGljYWwuYWRkKGkpLG8ueWF4aXMubWFwKChmdW5jdGlvbih0LGUpe2lmKC0xPT09ci5pZ25vcmVZQXhpc0luZGV4ZXMuaW5kZXhPZihlKSYmKGE9bC5kcmF3WWF4aXMoZSksci5kb20uUGFwZXIuYWRkKGEpLFwiYmFja1wiPT09cy53LmNvbmZpZy5ncmlkLnBvc2l0aW9uKSl7dmFyIGk9ci5kb20uUGFwZXIuY2hpbGRyZW4oKVsxXTtpLnJlbW92ZSgpLHIuZG9tLlBhcGVyLmFkZChpKX19KSkpKX19XSksdH0oKSxRPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJkcmF3WENyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPW5ldyB2KHRoaXMuY3R4KSxhPXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC5ncmFkaWVudCxzPXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZHJvcFNoYWRvdyxyPXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuZmlsbC50eXBlLG89YS5jb2xvckZyb20sbj1hLmNvbG9yVG8sbD1hLm9wYWNpdHlGcm9tLGg9YS5vcGFjaXR5VG8sYz1hLnN0b3BzLGQ9cy5lbmFibGVkLGc9cy5sZWZ0LHU9cy50b3AscD1zLmJsdXIsZj1zLmNvbG9yLGI9cy5vcGFjaXR5LHk9dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5maWxsLmNvbG9yO2lmKHQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc2hvdyl7XCJncmFkaWVudFwiPT09ciYmKHk9ZS5kcmF3R3JhZGllbnQoXCJ2ZXJ0aWNhbFwiLG8sbixsLGgsbnVsbCxjLG51bGwpKTt2YXIgdz1lLmRyYXdSZWN0KCk7MT09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgmJih3PWUuZHJhd0xpbmUoKSk7dmFyIGs9dC5nbG9iYWxzLmdyaWRIZWlnaHQ7KCF4LmlzTnVtYmVyKGspfHxrPDApJiYoaz0wKTt2YXIgQT10LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoOygheC5pc051bWJlcihBKXx8QTwwKSYmKEE9MCksdy5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteGNyb3NzaGFpcnNcIix4OjAseTowLHkyOmssd2lkdGg6QSxoZWlnaHQ6ayxmaWxsOnksZmlsdGVyOlwibm9uZVwiLFwiZmlsbC1vcGFjaXR5XCI6dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5vcGFjaXR5LHN0cm9rZTp0LmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnN0cm9rZS5jb2xvcixcInN0cm9rZS13aWR0aFwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLndpZHRoLFwic3Ryb2tlLWRhc2hhcnJheVwiOnQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMuc3Ryb2tlLmRhc2hBcnJheX0pLGQmJih3PWkuZHJvcFNoYWRvdyh3LHtsZWZ0OmcsdG9wOnUsYmx1cjpwLGNvbG9yOmYsb3BhY2l0eTpifSkpLHQuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHcpfX19LHtrZXk6XCJkcmF3WUNyb3NzaGFpcnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPW5ldyBtKHRoaXMuY3R4KSxpPXQuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMsYT10Lmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXM7aWYodC5jb25maWcueWF4aXNbMF0uY3Jvc3NoYWlycy5zaG93KXt2YXIgcz1lLmRyYXdMaW5lKC1hLDAsdC5nbG9iYWxzLmdyaWRXaWR0aCthLDAsaS5zdHJva2UuY29sb3IsaS5zdHJva2UuZGFzaEFycmF5LGkuc3Ryb2tlLndpZHRoKTtzLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy15Y3Jvc3NoYWlyc1wifSksdC5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQocyl9dmFyIHI9ZS5kcmF3TGluZSgtYSwwLHQuZ2xvYmFscy5ncmlkV2lkdGgrYSwwLGkuc3Ryb2tlLmNvbG9yLDAsMCk7ci5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMteWNyb3NzaGFpcnMtaGlkZGVuXCJ9KSx0Lmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChyKX19XSksdH0oKSxLPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJjaGVja1Jlc3BvbnNpdmVDb25maWdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9aS5jb25maWc7aWYoMCE9PWEucmVzcG9uc2l2ZS5sZW5ndGgpe3ZhciBzPWEucmVzcG9uc2l2ZS5zbGljZSgpO3Muc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5icmVha3BvaW50PmUuYnJlYWtwb2ludD8xOmUuYnJlYWtwb2ludD50LmJyZWFrcG9pbnQ/LTE6MH0pKS5yZXZlcnNlKCk7dmFyIHI9bmV3IEUoe30pLG89ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sYT1zWzBdLmJyZWFrcG9pbnQsbz13aW5kb3cuaW5uZXJXaWR0aD4wP3dpbmRvdy5pbm5lcldpZHRoOnNjcmVlbi53aWR0aDtpZihvPmEpe3ZhciBuPXkuZXh0ZW5kQXJyYXlQcm9wcyhyLGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLGkpO3Q9eC5leHRlbmQobix0KSx0PXguZXh0ZW5kKGkuY29uZmlnLHQpLGUub3ZlcnJpZGVSZXNwb25zaXZlT3B0aW9ucyh0KX1lbHNlIGZvcih2YXIgbD0wO2w8cy5sZW5ndGg7bCsrKW88c1tsXS5icmVha3BvaW50JiYodD15LmV4dGVuZEFycmF5UHJvcHMocixzW2xdLm9wdGlvbnMsaSksdD14LmV4dGVuZChpLmNvbmZpZyx0KSxlLm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnModCkpfTtpZih0KXt2YXIgbj15LmV4dGVuZEFycmF5UHJvcHMocix0LGkpO249eC5leHRlbmQoaS5jb25maWcsbiksbyhuPXguZXh0ZW5kKG4sdCkpfWVsc2Ugbyh7fSl9fX0se2tleTpcIm92ZXJyaWRlUmVzcG9uc2l2ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgRSh0KS5pbml0KHtyZXNwb25zaXZlT3ZlcnJpZGU6ITB9KTt0aGlzLncuY29uZmlnPWV9fV0pLHR9KCksdHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMuY29sb3JzPVtdLHRoaXMudz1lLnc7dmFyIGk9dGhpcy53O3RoaXMuaXNDb2xvckZuPSExLHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWQ9XCJ0cmVlbWFwXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiZpLmNvbmZpZy5wbG90T3B0aW9ucy50cmVlbWFwLmRpc3RyaWJ1dGVkfHxcImhlYXRtYXBcIj09PWkuY29uZmlnLmNoYXJ0LnR5cGUmJmkuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuZGlzdHJpYnV0ZWQsdGhpcy5pc0JhckRpc3RyaWJ1dGVkPWkuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCYmKFwiYmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlfHxcInJhbmdlQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlKX1yZXR1cm4gcih0LFt7a2V5OlwiaW5pdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXREZWZhdWx0Q29sb3JzKCl9fSx7a2V5Olwic2V0RGVmYXVsdENvbG9yc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLGk9dGhpcy53LGE9bmV3IHg7aWYoaS5nbG9iYWxzLmRvbS5lbFdyYXAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdGhlbWUtXCIuY29uY2F0KGkuY29uZmlnLnRoZW1lLm1vZGUpKSx2b2lkIDA9PT1pLmNvbmZpZy5jb2xvcnN8fDA9PT0obnVsbD09PSh0PWkuY29uZmlnLmNvbG9ycyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGVuZ3RoKT9pLmdsb2JhbHMuY29sb3JzPXRoaXMucHJlZGVmaW5lZCgpOihpLmdsb2JhbHMuY29sb3JzPWkuY29uZmlnLmNvbG9ycyxBcnJheS5pc0FycmF5KGkuY29uZmlnLmNvbG9ycykmJmkuY29uZmlnLmNvbG9ycy5sZW5ndGg+MCYmXCJmdW5jdGlvblwiPT10eXBlb2YgaS5jb25maWcuY29sb3JzWzBdJiYoaS5nbG9iYWxzLmNvbG9ycz1pLmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGEpe3ZhciBzPWkuY29uZmlnLmNvbG9yc1thXTtyZXR1cm4gc3x8KHM9aS5jb25maWcuY29sb3JzWzBdKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBzPyhlLmlzQ29sb3JGbj0hMCxzKHt2YWx1ZTppLmdsb2JhbHMuYXhpc0NoYXJ0cz9pLmdsb2JhbHMuc2VyaWVzW2FdWzBdP2kuZ2xvYmFscy5zZXJpZXNbYV1bMF06MDppLmdsb2JhbHMuc2VyaWVzW2FdLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6YSx3Oml9KSk6c30pKSkpLGkuZ2xvYmFscy5zZXJpZXNDb2xvcnMubWFwKChmdW5jdGlvbih0LGUpe3QmJihpLmdsb2JhbHMuY29sb3JzW2VdPXQpfSkpLGkuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuZW5hYmxlZCl7dmFyIHM9W10scj1pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDsodGhpcy5pc0JhckRpc3RyaWJ1dGVkfHx0aGlzLmlzSGVhdG1hcERpc3RyaWJ1dGVkKSYmKHI9aS5nbG9iYWxzLnNlcmllc1swXS5sZW5ndGgqaS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpO2Zvcih2YXIgbz1pLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLmNvbG9yLG49MS8oci9pLmNvbmZpZy50aGVtZS5tb25vY2hyb21lLnNoYWRlSW50ZW5zaXR5KSxsPWkuY29uZmlnLnRoZW1lLm1vbm9jaHJvbWUuc2hhZGVUbyxoPTAsYz0wO2M8cjtjKyspe3ZhciBkPXZvaWQgMDtcImRhcmtcIj09PWw/KGQ9YS5zaGFkZUNvbG9yKC0xKmgsbyksaCs9bik6KGQ9YS5zaGFkZUNvbG9yKGgsbyksaCs9bikscy5wdXNoKGQpfWkuZ2xvYmFscy5jb2xvcnM9cy5zbGljZSgpfXZhciBnPWkuZ2xvYmFscy5jb2xvcnMuc2xpY2UoKTt0aGlzLnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHMuY29sb3JzKTtbXCJmaWxsXCIsXCJzdHJva2VcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7dm9pZCAwPT09aS5jb25maWdbdF0uY29sb3JzP2kuZ2xvYmFsc1t0XS5jb2xvcnM9ZS5pc0NvbG9yRm4/aS5jb25maWcuY29sb3JzOmc6aS5nbG9iYWxzW3RdLmNvbG9ycz1pLmNvbmZpZ1t0XS5jb2xvcnMuc2xpY2UoKSxlLnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHNbdF0uY29sb3JzKX0pKSx2b2lkIDA9PT1pLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmNvbG9ycz9pLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM9ZzppLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnM9aS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMuc2xpY2UoKSx0aGlzLnB1c2hFeHRyYUNvbG9ycyhpLmdsb2JhbHMuZGF0YUxhYmVscy5zdHlsZS5jb2xvcnMsNTApLHZvaWQgMD09PWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLmZpbGwuY29sb3JzP2kuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzPVtcImRhcmtcIj09PWkuY29uZmlnLnRoZW1lLm1vZGU/XCIjNDI0MjQyXCI6XCJub25lXCJdOmkuZ2xvYmFscy5yYWRhclBvbHlnb25zLmZpbGwuY29sb3JzPWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnBvbHlnb25zLmZpbGwuY29sb3JzLnNsaWNlKCksdGhpcy5wdXNoRXh0cmFDb2xvcnMoaS5nbG9iYWxzLnJhZGFyUG9seWdvbnMuZmlsbC5jb2xvcnMsMjApLHZvaWQgMD09PWkuY29uZmlnLm1hcmtlcnMuY29sb3JzP2kuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycz1nOmkuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycz1pLmNvbmZpZy5tYXJrZXJzLmNvbG9ycy5zbGljZSgpLHRoaXMucHVzaEV4dHJhQ29sb3JzKGkuZ2xvYmFscy5tYXJrZXJzLmNvbG9ycyl9fSx7a2V5OlwicHVzaEV4dHJhQ29sb3JzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxhPXRoaXMudyxzPWV8fGEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2lmKG51bGw9PT1pJiYoaT10aGlzLmlzQmFyRGlzdHJpYnV0ZWR8fHRoaXMuaXNIZWF0bWFwRGlzdHJpYnV0ZWR8fFwiaGVhdG1hcFwiPT09YS5jb25maWcuY2hhcnQudHlwZSYmYS5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5jb2xvclNjYWxlLmludmVyc2UpLGkmJmEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoJiYocz1hLmdsb2JhbHMuc2VyaWVzW2EuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgqYS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpLHQubGVuZ3RoPHMpZm9yKHZhciByPXMtdC5sZW5ndGgsbz0wO288cjtvKyspdC5wdXNoKHRbb10pfX0se2tleTpcInVwZGF0ZVRoZW1lT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuY2hhcnQ9dC5jaGFydHx8e30sdC50b29sdGlwPXQudG9vbHRpcHx8e307dmFyIGU9dC50aGVtZS5tb2RlfHxcImxpZ2h0XCIsaT10LnRoZW1lLnBhbGV0dGU/dC50aGVtZS5wYWxldHRlOlwiZGFya1wiPT09ZT9cInBhbGV0dGU0XCI6XCJwYWxldHRlMVwiLGE9dC5jaGFydC5mb3JlQ29sb3I/dC5jaGFydC5mb3JlQ29sb3I6XCJkYXJrXCI9PT1lP1wiI2Y2ZjdmOFwiOlwiIzM3M2QzZlwiO3JldHVybiB0LnRvb2x0aXAudGhlbWU9ZSx0LmNoYXJ0LmZvcmVDb2xvcj1hLHQudGhlbWUucGFsZXR0ZT1pLHR9fSx7a2V5OlwicHJlZGVmaW5lZFwiLHZhbHVlOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMudy5jb25maWcudGhlbWUucGFsZXR0ZSl7Y2FzZVwicGFsZXR0ZTFcIjpkZWZhdWx0OnRoaXMuY29sb3JzPVtcIiMwMDhGRkJcIixcIiMwMEUzOTZcIixcIiNGRUIwMTlcIixcIiNGRjQ1NjBcIixcIiM3NzVERDBcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTJcIjp0aGlzLmNvbG9ycz1bXCIjM2Y1MWI1XCIsXCIjMDNhOWY0XCIsXCIjNGNhZjUwXCIsXCIjZjljZTFkXCIsXCIjRkY5ODAwXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGUzXCI6dGhpcy5jb2xvcnM9W1wiIzMzYjJkZlwiLFwiIzU0NkU3QVwiLFwiI2Q0NTI2ZVwiLFwiIzEzZDhhYVwiLFwiI0E1OTc4QlwiXTticmVhaztjYXNlXCJwYWxldHRlNFwiOnRoaXMuY29sb3JzPVtcIiM0ZWNkYzRcIixcIiNjN2Y0NjRcIixcIiM4MUQ0RkFcIixcIiNmZDZhNmFcIixcIiM1NDZFN0FcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZTVcIjp0aGlzLmNvbG9ycz1bXCIjMmI5MDhmXCIsXCIjZjlhM2E0XCIsXCIjOTBlZTdlXCIsXCIjZmE0NDQzXCIsXCIjNjlkMmU3XCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU2XCI6dGhpcy5jb2xvcnM9W1wiIzQ0OUREMVwiLFwiI0Y4NjYyNFwiLFwiI0VBMzU0NlwiLFwiIzY2MkU5QlwiLFwiI0M1RDg2RFwiXTticmVhaztjYXNlXCJwYWxldHRlN1wiOnRoaXMuY29sb3JzPVtcIiNENzI2M0RcIixcIiMxQjk5OEJcIixcIiMyRTI5NEVcIixcIiNGNDYwMzZcIixcIiNFMkMwNDRcIl07YnJlYWs7Y2FzZVwicGFsZXR0ZThcIjp0aGlzLmNvbG9ycz1bXCIjNjYyRTlCXCIsXCIjRjg2NjI0XCIsXCIjRjlDODBFXCIsXCIjRUEzNTQ2XCIsXCIjNDNCQ0NEXCJdO2JyZWFrO2Nhc2VcInBhbGV0dGU5XCI6dGhpcy5jb2xvcnM9W1wiIzVDNDc0MlwiLFwiI0E1OTc4QlwiLFwiIzhENUI0Q1wiLFwiIzVBMkEyN1wiLFwiI0M0QkJBRlwiXTticmVhaztjYXNlXCJwYWxldHRlMTBcIjp0aGlzLmNvbG9ycz1bXCIjQTMwMEQ2XCIsXCIjN0QwMkVCXCIsXCIjNTY1M0ZFXCIsXCIjMjk4M0ZGXCIsXCIjMDBCMUYyXCJdfXJldHVybiB0aGlzLmNvbG9yc319XSksdH0oKSxldD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kcmF3VGl0bGVTdWJ0aXRsZShcInRpdGxlXCIpLHRoaXMuZHJhd1RpdGxlU3VidGl0bGUoXCJzdWJ0aXRsZVwiKX19LHtrZXk6XCJkcmF3VGl0bGVTdWJ0aXRsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPVwidGl0bGVcIj09PXQ/ZS5jb25maWcudGl0bGU6ZS5jb25maWcuc3VidGl0bGUsYT1lLmdsb2JhbHMuc3ZnV2lkdGgvMixzPWkub2Zmc2V0WSxyPVwibWlkZGxlXCI7aWYoXCJsZWZ0XCI9PT1pLmFsaWduPyhhPTEwLHI9XCJzdGFydFwiKTpcInJpZ2h0XCI9PT1pLmFsaWduJiYoYT1lLmdsb2JhbHMuc3ZnV2lkdGgtMTAscj1cImVuZFwiKSxhKz1pLm9mZnNldFgscz1zK3BhcnNlSW50KGkuc3R5bGUuZm9udFNpemUsMTApK2kubWFyZ2luLzIsdm9pZCAwIT09aS50ZXh0KXt2YXIgbz1uZXcgbSh0aGlzLmN0eCkuZHJhd1RleHQoe3g6YSx5OnMsdGV4dDppLnRleHQsdGV4dEFuY2hvcjpyLGZvbnRTaXplOmkuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTppLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDppLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOmkuc3R5bGUuY29sb3Isb3BhY2l0eToxfSk7by5ub2RlLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsXCJhcGV4Y2hhcnRzLVwiLmNvbmNhdCh0LFwiLXRleHRcIikpLGUuZ2xvYmFscy5kb20uUGFwZXIuYWRkKG8pfX19XSksdH0oKSxpdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldFRpdGxlU3VidGl0bGVDb29yZHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT0wLGE9MCxzPVwidGl0bGVcIj09PXQ/ZS5jb25maWcudGl0bGUuZmxvYXRpbmc6ZS5jb25maWcuc3VidGl0bGUuZmxvYXRpbmcscj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtXCIuY29uY2F0KHQsXCItdGV4dFwiKSk7aWYobnVsbCE9PXImJiFzKXt2YXIgbz1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2k9by53aWR0aCxhPWUuZ2xvYmFscy5heGlzQ2hhcnRzP28uaGVpZ2h0KzU6by5oZWlnaHR9cmV0dXJue3dpZHRoOmksaGVpZ2h0OmF9fX0se2tleTpcImdldExlZ2VuZHNSZWN0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcDt0LmNvbmZpZy5sZWdlbmQuaGVpZ2h0fHxcInRvcFwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZcImJvdHRvbVwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwoZS5zdHlsZS5tYXhIZWlnaHQ9dC5nbG9iYWxzLnN2Z0hlaWdodC8yK1wicHhcIik7dmFyIGk9T2JqZWN0LmFzc2lnbih7fSx4LmdldEJvdW5kaW5nQ2xpZW50UmVjdChlKSk7cmV0dXJuIG51bGwhPT1lJiYhdC5jb25maWcubGVnZW5kLmZsb2F0aW5nJiZ0LmNvbmZpZy5sZWdlbmQuc2hvdz90aGlzLmRDdHgubGdSZWN0PXt4OmkueCx5OmkueSxoZWlnaHQ6aS5oZWlnaHQsd2lkdGg6MD09PWkuaGVpZ2h0PzA6aS53aWR0aH06dGhpcy5kQ3R4LmxnUmVjdD17eDowLHk6MCxoZWlnaHQ6MCx3aWR0aDowfSxcImxlZnRcIiE9PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmXCJyaWdodFwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwxLjUqdGhpcy5kQ3R4LmxnUmVjdC53aWR0aD50Lmdsb2JhbHMuc3ZnV2lkdGgmJih0aGlzLmRDdHgubGdSZWN0LndpZHRoPXQuZ2xvYmFscy5zdmdXaWR0aC8xLjUpLHRoaXMuZEN0eC5sZ1JlY3R9fSx7a2V5OlwiZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFyclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dDtpZih0aGlzLncuZ2xvYmFscy5pc011bHRpTGluZVgpe3ZhciBhPWUubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubGVuZ3RoOjF9KSkscz1NYXRoLm1heC5hcHBseShNYXRoLHUoYSkpO2k9ZVthLmluZGV4T2YocyldfXJldHVybiBpfX1dKSx0fSgpLGF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZ2V0eEF4aXNMYWJlbHNDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy53LGk9ZS5nbG9iYWxzLmxhYmVscy5zbGljZSgpO2lmKGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmMD09PWkubGVuZ3RoJiYoaT1lLmdsb2JhbHMuY2F0ZWdvcnlMYWJlbHMpLGUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMubGVuZ3RoPjApe3ZhciBhPXRoaXMuZ2V0eEF4aXNUaW1lU2NhbGVMYWJlbHNDb29yZHMoKTt0PXt3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodH0sZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITF9ZWxzZXt0aGlzLmRDdHgubGdXaWR0aEZvclNpZGVMZWdlbmRzPVwibGVmdFwiIT09ZS5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZcInJpZ2h0XCIhPT1lLmNvbmZpZy5sZWdlbmQucG9zaXRpb258fGUuY29uZmlnLmxlZ2VuZC5mbG9hdGluZz8wOnRoaXMuZEN0eC5sZ1JlY3Qud2lkdGg7dmFyIHM9ZS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcixyPXguZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIoaSksbz10aGlzLmRDdHguZGltSGVscGVycy5nZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyKHIsaSk7ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKG89cj1lLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD5lLmxlbmd0aD90OmV9KSwwKSk7dmFyIG49bmV3IE0odGhpcy5kQ3R4LmN0eCksbD1yO3I9bi54TGFiZWxGb3JtYXQocyxyLGwse2k6dm9pZCAwLGRhdGVGb3JtYXR0ZXI6bmV3IEkodGhpcy5kQ3R4LmN0eCkuZm9ybWF0RGF0ZSx3OmV9KSxvPW4ueExhYmVsRm9ybWF0KHMsbyxsLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuZEN0eC5jdHgpLmZvcm1hdERhdGUsdzplfSksKGUuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmdm9pZCAwPT09cnx8XCJcIj09PVN0cmluZyhyKS50cmltKCkpJiYobz1yPVwiMVwiKTt2YXIgaD1uZXcgbSh0aGlzLmRDdHguY3R4KSxjPWguZ2V0VGV4dFJlY3RzKHIsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSxkPWM7aWYociE9PW8mJihkPWguZ2V0VGV4dFJlY3RzKG8sZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSksKHQ9e3dpZHRoOmMud2lkdGg+PWQud2lkdGg/Yy53aWR0aDpkLndpZHRoLGhlaWdodDpjLmhlaWdodD49ZC5oZWlnaHQ/Yy5oZWlnaHQ6ZC5oZWlnaHR9KS53aWR0aCppLmxlbmd0aD5lLmdsb2JhbHMuc3ZnV2lkdGgtdGhpcy5kQ3R4LmxnV2lkdGhGb3JTaWRlTGVnZW5kcy10aGlzLmRDdHgueUF4aXNXaWR0aC10aGlzLmRDdHguZ3JpZFBhZC5sZWZ0LXRoaXMuZEN0eC5ncmlkUGFkLnJpZ2h0JiYwIT09ZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZXx8ZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZUFsd2F5cyl7aWYoIWUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe2UuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPSEwO3ZhciBnPWZ1bmN0aW9uKHQpe3JldHVybiBoLmdldFRleHRSZWN0cyh0LGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSxlLmNvbmZpZy54YXhpcy5sYWJlbHMuc3R5bGUuZm9udEZhbWlseSxcInJvdGF0ZShcIi5jb25jYXQoZS5jb25maWcueGF4aXMubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLCExKX07Yz1nKHIpLHIhPT1vJiYoZD1nKG8pKSx0LmhlaWdodD0oYy5oZWlnaHQ+ZC5oZWlnaHQ/Yy5oZWlnaHQ6ZC5oZWlnaHQpLzEuNSx0LndpZHRoPWMud2lkdGg+ZC53aWR0aD9jLndpZHRoOmQud2lkdGh9fWVsc2UgZS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHM9ITF9cmV0dXJuIGUuY29uZmlnLnhheGlzLmxhYmVscy5zaG93fHwodD17d2lkdGg6MCxoZWlnaHQ6MH0pLHt3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19fSx7a2V5OlwiZ2V0eEF4aXNHcm91cExhYmVsc0Nvb3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnc7aWYoIWUuZ2xvYmFscy5oYXNYYXhpc0dyb3VwcylyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH07dmFyIGksYT0obnVsbD09PSh0PWUuY29uZmlnLnhheGlzLmdyb3VwLnN0eWxlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5mb250U2l6ZSl8fGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSxzPWUuZ2xvYmFscy5ncm91cHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50aXRsZX0pKSxyPXguZ2V0TGFyZ2VzdFN0cmluZ0Zyb21BcnIocyksbz10aGlzLmRDdHguZGltSGVscGVycy5nZXRMYXJnZXN0U3RyaW5nRnJvbU11bHRpQXJyKHIscyksbj1uZXcgbSh0aGlzLmRDdHguY3R4KSxsPW4uZ2V0VGV4dFJlY3RzKHIsYSksaD1sO3JldHVybiByIT09byYmKGg9bi5nZXRUZXh0UmVjdHMobyxhKSksaT17d2lkdGg6bC53aWR0aD49aC53aWR0aD9sLndpZHRoOmgud2lkdGgsaGVpZ2h0OmwuaGVpZ2h0Pj1oLmhlaWdodD9sLmhlaWdodDpoLmhlaWdodH0sZS5jb25maWcueGF4aXMubGFiZWxzLnNob3d8fChpPXt3aWR0aDowLGhlaWdodDowfSkse3dpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fX19LHtrZXk6XCJnZXR4QXhpc1RpdGxlQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wLGk9MDtpZih2b2lkIDAhPT10LmNvbmZpZy54YXhpcy50aXRsZS50ZXh0KXt2YXIgYT1uZXcgbSh0aGlzLmRDdHguY3R4KS5nZXRUZXh0UmVjdHModC5jb25maWcueGF4aXMudGl0bGUudGV4dCx0LmNvbmZpZy54YXhpcy50aXRsZS5zdHlsZS5mb250U2l6ZSk7ZT1hLndpZHRoLGk9YS5oZWlnaHR9cmV0dXJue3dpZHRoOmUsaGVpZ2h0Oml9fX0se2tleTpcImdldHhBeGlzVGltZVNjYWxlTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudzt0aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzPWUuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHMuc2xpY2UoKTt2YXIgaT10aGlzLmRDdHgudGltZXNjYWxlTGFiZWxzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSksYT1pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dD8oY29uc29sZS5lcnJvcihcIllvdSBoYXZlIHBvc3NpYmx5IHN1cHBsaWVkIGludmFsaWQgRGF0ZSBmb3JtYXQuIFBsZWFzZSBzdXBwbHkgYSB2YWxpZCBKYXZhU2NyaXB0IERhdGVcIiksMCk6dC5sZW5ndGg+ZS5sZW5ndGg/dDplfSksMCk7cmV0dXJuIDEuMDUqKHQ9bmV3IG0odGhpcy5kQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKGEsZS5jb25maWcueGF4aXMubGFiZWxzLnN0eWxlLmZvbnRTaXplKSkud2lkdGgqaS5sZW5ndGg+ZS5nbG9iYWxzLmdyaWRXaWR0aCYmMCE9PWUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGUmJihlLmdsb2JhbHMub3ZlcmxhcHBpbmdYTGFiZWxzPSEwKSx0fX0se2tleTpcImFkZGl0aW9uYWxQYWRkaW5nWExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1pLmdsb2JhbHMscz1pLmNvbmZpZyxyPXMueGF4aXMudHlwZSxvPXQud2lkdGg7YS5za2lwTGFzdFRpbWVsaW5lbGFiZWw9ITEsYS5za2lwRmlyc3RUaW1lbGluZWxhYmVsPSExO3ZhciBuPWkuY29uZmlnLnlheGlzWzBdLm9wcG9zaXRlJiZpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsLGw9ZnVuY3Rpb24odCxuKXtzLnlheGlzLmxlbmd0aD4xJiZmdW5jdGlvbih0KXtyZXR1cm4tMSE9PWEuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHQpfShuKXx8ZnVuY3Rpb24odCl7aWYoZS5kQ3R4LnRpbWVzY2FsZUxhYmVscyYmZS5kQ3R4LnRpbWVzY2FsZUxhYmVscy5sZW5ndGgpe3ZhciBuPWUuZEN0eC50aW1lc2NhbGVMYWJlbHNbMF0sbD1lLmRDdHgudGltZXNjYWxlTGFiZWxzW2UuZEN0eC50aW1lc2NhbGVMYWJlbHMubGVuZ3RoLTFdLnBvc2l0aW9uK28vMS43NS1lLmRDdHgueUF4aXNXaWR0aFJpZ2h0LGg9bi5wb3NpdGlvbi1vLzEuNzUrZS5kQ3R4LnlBeGlzV2lkdGhMZWZ0LGM9XCJyaWdodFwiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZlLmRDdHgubGdSZWN0LndpZHRoPjA/ZS5kQ3R4LmxnUmVjdC53aWR0aDowO2w+YS5zdmdXaWR0aC1hLnRyYW5zbGF0ZVgtYyYmKGEuc2tpcExhc3RUaW1lbGluZWxhYmVsPSEwKSxoPC0odC5zaG93JiYhdC5mbG9hdGluZ3x8XCJiYXJcIiE9PXMuY2hhcnQudHlwZSYmXCJjYW5kbGVzdGlja1wiIT09cy5jaGFydC50eXBlJiZcInJhbmdlQmFyXCIhPT1zLmNoYXJ0LnR5cGUmJlwiYm94UGxvdFwiIT09cy5jaGFydC50eXBlPzEwOm8vMS43NSkmJihhLnNraXBGaXJzdFRpbWVsaW5lbGFiZWw9ITApfWVsc2VcImRhdGV0aW1lXCI9PT1yP2UuZEN0eC5ncmlkUGFkLnJpZ2h0PG8mJiFhLnJvdGF0ZVhMYWJlbHMmJihhLnNraXBMYXN0VGltZWxpbmVsYWJlbD0hMCk6XCJkYXRldGltZVwiIT09ciYmZS5kQ3R4LmdyaWRQYWQucmlnaHQ8by8yLWUuZEN0eC55QXhpc1dpZHRoUmlnaHQmJiFhLnJvdGF0ZVhMYWJlbHMmJiFpLmNvbmZpZy54YXhpcy5sYWJlbHMudHJpbSYmKFwiYmV0d2VlblwiIT09aS5jb25maWcueGF4aXMudGlja1BsYWNlbWVudHx8aS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCkmJihlLmRDdHgueFBhZFJpZ2h0PW8vMisxKX0odCl9O3MueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtuPyhlLmRDdHguZ3JpZFBhZC5sZWZ0PG8mJihlLmRDdHgueFBhZExlZnQ9by8yKzEpLGUuZEN0eC54UGFkUmlnaHQ9by8yKzEpOmwodCxpKX0pKX19XSksdH0oKSxzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5kQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldHlBeGlzTGFiZWxzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9W10sYT0xMCxzPW5ldyBCKHRoaXMuZEN0eC5jdHgpO3JldHVybiBlLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHIsbyl7dmFyIG49e3Nlcmllc0luZGV4Om8sZGF0YVBvaW50SW5kZXg6LTEsdzplfSxsPWUuZ2xvYmFscy55QXhpc1NjYWxlW29dLGg9MDtpZighcy5pc1lBeGlzSGlkZGVuKG8pJiZyLmxhYmVscy5zaG93JiZ2b2lkIDAhPT1yLmxhYmVscy5taW5XaWR0aCYmKGg9ci5sYWJlbHMubWluV2lkdGgpLCFzLmlzWUF4aXNIaWRkZW4obykmJnIubGFiZWxzLnNob3cmJmwucmVzdWx0Lmxlbmd0aCl7dmFyIGM9ZS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbb10sZD1sLm5pY2VNaW49PT1OdW1iZXIuTUlOX1ZBTFVFPzA6bC5uaWNlTWluLGc9bC5yZXN1bHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBpLGE7cmV0dXJuKG51bGw9PT0oaT1TdHJpbmcoYyh0LG4pKSl8fHZvaWQgMD09PWk/dm9pZCAwOmkubGVuZ3RoKT4obnVsbD09PShhPVN0cmluZyhjKGUsbikpKXx8dm9pZCAwPT09YT92b2lkIDA6YS5sZW5ndGgpP3Q6ZX0pLGQpLHU9Zz1jKGcsbik7aWYodm9pZCAwIT09ZyYmMCE9PWcubGVuZ3RofHwoZz1sLm5pY2VNYXgpLGUuZ2xvYmFscy5pc0Jhckhvcml6b250YWwpe2E9MDt2YXIgcD1lLmdsb2JhbHMubGFiZWxzLnNsaWNlKCk7Zz14LmdldExhcmdlc3RTdHJpbmdGcm9tQXJyKHApLGc9YyhnLHtzZXJpZXNJbmRleDpvLGRhdGFQb2ludEluZGV4Oi0xLHc6ZX0pLHU9dC5kQ3R4LmRpbUhlbHBlcnMuZ2V0TGFyZ2VzdFN0cmluZ0Zyb21NdWx0aUFycihnLHApfXZhciBmPW5ldyBtKHQuZEN0eC5jdHgpLGI9XCJyb3RhdGUoXCIuY29uY2F0KHIubGFiZWxzLnJvdGF0ZSxcIiAwIDApXCIpLHY9Zi5nZXRUZXh0UmVjdHMoZyxyLmxhYmVscy5zdHlsZS5mb250U2l6ZSxyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LGIsITEpLHk9djtnIT09dSYmKHk9Zi5nZXRUZXh0UmVjdHModSxyLmxhYmVscy5zdHlsZS5mb250U2l6ZSxyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LGIsITEpKSxpLnB1c2goe3dpZHRoOihoPnkud2lkdGh8fGg+di53aWR0aD9oOnkud2lkdGg+di53aWR0aD95LndpZHRoOnYud2lkdGgpK2EsaGVpZ2h0OnkuaGVpZ2h0PnYuaGVpZ2h0P3kuaGVpZ2h0OnYuaGVpZ2h0fSl9ZWxzZSBpLnB1c2goe3dpZHRoOjAsaGVpZ2h0OjB9KX0pKSxpfX0se2tleTpcImdldHlBeGlzVGl0bGVDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1bXTtyZXR1cm4gZS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihlLGEpe2lmKGUuc2hvdyYmdm9pZCAwIT09ZS50aXRsZS50ZXh0KXt2YXIgcz1uZXcgbSh0LmRDdHguY3R4KSxyPVwicm90YXRlKFwiLmNvbmNhdChlLnRpdGxlLnJvdGF0ZSxcIiAwIDApXCIpLG89cy5nZXRUZXh0UmVjdHMoZS50aXRsZS50ZXh0LGUudGl0bGUuc3R5bGUuZm9udFNpemUsZS50aXRsZS5zdHlsZS5mb250RmFtaWx5LHIsITEpO2kucHVzaCh7d2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHR9KX1lbHNlIGkucHVzaCh7d2lkdGg6MCxoZWlnaHQ6MH0pfSkpLGl9fSx7a2V5OlwiZ2V0VG90YWxZQXhpc1dpZHRoXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT0wLGk9MCxhPTAscz10Lmdsb2JhbHMueUF4aXNTY2FsZS5sZW5ndGg+MT8xMDowLHI9bmV3IEIodGhpcy5kQ3R4LmN0eCksbz1mdW5jdGlvbihvLG4pe3ZhciBsPXQuY29uZmlnLnlheGlzW25dLmZsb2F0aW5nLGg9MDtvLndpZHRoPjAmJiFsPyhoPW8ud2lkdGgrcyxmdW5jdGlvbihlKXtyZXR1cm4gdC5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKGUpPi0xfShuKSYmKGg9aC1vLndpZHRoLXMpKTpoPWx8fHIuaXNZQXhpc0hpZGRlbihuKT8wOjUsdC5jb25maWcueWF4aXNbbl0ub3Bwb3NpdGU/YSs9aDppKz1oLGUrPWh9O3JldHVybiB0Lmdsb2JhbHMueUxhYmVsc0Nvb3Jkcy5tYXAoKGZ1bmN0aW9uKHQsZSl7byh0LGUpfSkpLHQuZ2xvYmFscy55VGl0bGVDb29yZHMubWFwKChmdW5jdGlvbih0LGUpe28odCxlKX0pKSx0Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYhdC5jb25maWcueWF4aXNbMF0uZmxvYXRpbmcmJihlPXQuZ2xvYmFscy55TGFiZWxzQ29vcmRzWzBdLndpZHRoK3QuZ2xvYmFscy55VGl0bGVDb29yZHNbMF0ud2lkdGgrMTUpLHRoaXMuZEN0eC55QXhpc1dpZHRoTGVmdD1pLHRoaXMuZEN0eC55QXhpc1dpZHRoUmlnaHQ9YSxlfX1dKSx0fSgpLHJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZ3JpZFBhZEZvckNvbHVtbnNJbk51bWVyaWNBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2lmKGUuZ2xvYmFscy5ub0RhdGF8fGUuZ2xvYmFscy5hbGxTZXJpZXNDb2xsYXBzZWQpcmV0dXJuIDA7dmFyIGk9ZnVuY3Rpb24odCl7cmV0dXJuXCJiYXJcIj09PXR8fFwicmFuZ2VCYXJcIj09PXR8fFwiY2FuZGxlc3RpY2tcIj09PXR8fFwiYm94UGxvdFwiPT09dH0sYT1lLmNvbmZpZy5jaGFydC50eXBlLHM9MCxyPWkoYSk/ZS5jb25maWcuc2VyaWVzLmxlbmd0aDoxO2lmKGUuZ2xvYmFscy5jb21ib0JhckNvdW50PjAmJihyPWUuZ2xvYmFscy5jb21ib0JhckNvdW50KSxlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2kodC50eXBlKSYmKHItPTEpfSkpLGUuY29uZmlnLmNoYXJ0LnN0YWNrZWQmJihyPTEpLChpKGEpfHxlLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wKSYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJiFlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZyPjApe3ZhciBvLG4sbD1NYXRoLmFicyhlLmdsb2JhbHMuaW5pdGlhbE1heFgtZS5nbG9iYWxzLmluaXRpYWxNaW5YKTtsPD0zJiYobD1lLmdsb2JhbHMuZGF0YVBvaW50cyksbz1sL3QsZS5nbG9iYWxzLm1pblhEaWZmJiZlLmdsb2JhbHMubWluWERpZmYvbz4wJiYobj1lLmdsb2JhbHMubWluWERpZmYvbyksbj50LzImJihuLz0yKSwocz1uL3IqcGFyc2VJbnQoZS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoLDEwKS8xMDApPDEmJihzPTEpLHM9cy8ocj4xPzE6MS41KSs1LGUuZ2xvYmFscy5iYXJQYWRGb3JOdW1lcmljQXhpcz1zfXJldHVybiBzfX0se2tleTpcImdyaWRQYWRGb3J0aXRsZVN1YnRpdGxlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy53LGk9ZS5nbG9iYWxzLGE9dGhpcy5kQ3R4LmlzU3BhcmtsaW5lfHwhZS5nbG9iYWxzLmF4aXNDaGFydHM/MDoxMDtbXCJ0aXRsZVwiLFwic3VidGl0bGVcIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSl7dm9pZCAwIT09ZS5jb25maWdbaV0udGV4dD9hKz1lLmNvbmZpZ1tpXS5tYXJnaW46YSs9dC5kQ3R4LmlzU3BhcmtsaW5lfHwhZS5nbG9iYWxzLmF4aXNDaGFydHM/MDo1fSkpLCFlLmNvbmZpZy5sZWdlbmQuc2hvd3x8XCJib3R0b21cIiE9PWUuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbnx8ZS5jb25maWcubGVnZW5kLmZsb2F0aW5nfHxlLmdsb2JhbHMuYXhpc0NoYXJ0c3x8KGErPTEwKTt2YXIgcz10aGlzLmRDdHguZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikscj10aGlzLmRDdHguZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwic3VidGl0bGVcIik7aS5ncmlkSGVpZ2h0PWkuZ3JpZEhlaWdodC1zLmhlaWdodC1yLmhlaWdodC1hLGkudHJhbnNsYXRlWT1pLnRyYW5zbGF0ZVkrcy5oZWlnaHQrci5oZWlnaHQrYX19LHtrZXk6XCJzZXRHcmlkWFBvc0ZvckR1YWxZQXhpc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bmV3IEIodGhpcy5kQ3R4LmN0eCk7aS5jb25maWcueWF4aXMubWFwKChmdW5jdGlvbihzLHIpey0xIT09aS5nbG9iYWxzLmlnbm9yZVlBeGlzSW5kZXhlcy5pbmRleE9mKHIpfHxzLmZsb2F0aW5nfHxhLmlzWUF4aXNIaWRkZW4ocil8fChzLm9wcG9zaXRlJiYoaS5nbG9iYWxzLnRyYW5zbGF0ZVg9aS5nbG9iYWxzLnRyYW5zbGF0ZVgtKGVbcl0ud2lkdGgrdFtyXS53aWR0aCktcGFyc2VJbnQoaS5jb25maWcueWF4aXNbcl0ubGFiZWxzLnN0eWxlLmZvbnRTaXplLDEwKS8xLjItMTIpLGkuZ2xvYmFscy50cmFuc2xhdGVYPDImJihpLmdsb2JhbHMudHJhbnNsYXRlWD0yKSl9KSl9fV0pLHR9KCksb3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5sZ1JlY3Q9e30sdGhpcy55QXhpc1dpZHRoPTAsdGhpcy55QXhpc1dpZHRoTGVmdD0wLHRoaXMueUF4aXNXaWR0aFJpZ2h0PTAsdGhpcy54QXhpc0hlaWdodD0wLHRoaXMuaXNTcGFya2xpbmU9dGhpcy53LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCx0aGlzLmRpbUhlbHBlcnM9bmV3IGl0KHRoaXMpLHRoaXMuZGltWUF4aXM9bmV3IHN0KHRoaXMpLHRoaXMuZGltWEF4aXM9bmV3IGF0KHRoaXMpLHRoaXMuZGltR3JpZD1uZXcgcnQodGhpcyksdGhpcy5sZ1dpZHRoRm9yU2lkZUxlZ2VuZHM9MCx0aGlzLmdyaWRQYWQ9dGhpcy53LmNvbmZpZy5ncmlkLnBhZGRpbmcsdGhpcy54UGFkUmlnaHQ9MCx0aGlzLnhQYWRMZWZ0PTB9cmV0dXJuIHIodCxbe2tleTpcInBsb3RDb29yZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1lLmdsb2JhbHM7dGhpcy5sZ1JlY3Q9dGhpcy5kaW1IZWxwZXJzLmdldExlZ2VuZHNSZWN0KCksdGhpcy5pc1NwYXJrbGluZSYmKChlLmNvbmZpZy5tYXJrZXJzLmRpc2NyZXRlLmxlbmd0aD4wfHxlLmNvbmZpZy5tYXJrZXJzLnNpemU+MCkmJk9iamVjdC5lbnRyaWVzKHRoaXMuZ3JpZFBhZCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9ZyhlLDIpLGE9aVswXSxzPWlbMV07dC5ncmlkUGFkW2FdPU1hdGgubWF4KHMsdC53Lmdsb2JhbHMubWFya2Vycy5sYXJnZXN0U2l6ZS8xLjUpfSkpLHRoaXMuZ3JpZFBhZC50b3A9TWF0aC5tYXgoZS5jb25maWcuc3Ryb2tlLndpZHRoLzIsdGhpcy5ncmlkUGFkLnRvcCksdGhpcy5ncmlkUGFkLmJvdHRvbT1NYXRoLm1heChlLmNvbmZpZy5zdHJva2Uud2lkdGgvMix0aGlzLmdyaWRQYWQuYm90dG9tKSksaS5heGlzQ2hhcnRzP3RoaXMuc2V0RGltZW5zaW9uc0ZvckF4aXNDaGFydHMoKTp0aGlzLnNldERpbWVuc2lvbnNGb3JOb25BeGlzQ2hhcnRzKCksdGhpcy5kaW1HcmlkLmdyaWRQYWRGb3J0aXRsZVN1YnRpdGxlKCksaS5ncmlkSGVpZ2h0PWkuZ3JpZEhlaWdodC10aGlzLmdyaWRQYWQudG9wLXRoaXMuZ3JpZFBhZC5ib3R0b20saS5ncmlkV2lkdGg9aS5ncmlkV2lkdGgtdGhpcy5ncmlkUGFkLmxlZnQtdGhpcy5ncmlkUGFkLnJpZ2h0LXRoaXMueFBhZFJpZ2h0LXRoaXMueFBhZExlZnQ7dmFyIGE9dGhpcy5kaW1HcmlkLmdyaWRQYWRGb3JDb2x1bW5zSW5OdW1lcmljQXhpcyhpLmdyaWRXaWR0aCk7aS5ncmlkV2lkdGg9aS5ncmlkV2lkdGgtMiphLGkudHJhbnNsYXRlWD1pLnRyYW5zbGF0ZVgrdGhpcy5ncmlkUGFkLmxlZnQrdGhpcy54UGFkTGVmdCsoYT4wP2ErNDowKSxpLnRyYW5zbGF0ZVk9aS50cmFuc2xhdGVZK3RoaXMuZ3JpZFBhZC50b3B9fSx7a2V5Olwic2V0RGltZW5zaW9uc0ZvckF4aXNDaGFydHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1lLmdsb2JhbHMsYT10aGlzLmRpbVlBeGlzLmdldHlBeGlzTGFiZWxzQ29vcmRzKCkscz10aGlzLmRpbVlBeGlzLmdldHlBeGlzVGl0bGVDb29yZHMoKTtlLmdsb2JhbHMueUxhYmVsc0Nvb3Jkcz1bXSxlLmdsb2JhbHMueVRpdGxlQ29vcmRzPVtdLGUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24odCxpKXtlLmdsb2JhbHMueUxhYmVsc0Nvb3Jkcy5wdXNoKHt3aWR0aDphW2ldLndpZHRoLGluZGV4Oml9KSxlLmdsb2JhbHMueVRpdGxlQ29vcmRzLnB1c2goe3dpZHRoOnNbaV0ud2lkdGgsaW5kZXg6aX0pfSkpLHRoaXMueUF4aXNXaWR0aD10aGlzLmRpbVlBeGlzLmdldFRvdGFsWUF4aXNXaWR0aCgpO3ZhciByPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNMYWJlbHNDb29yZHMoKSxvPXRoaXMuZGltWEF4aXMuZ2V0eEF4aXNHcm91cExhYmVsc0Nvb3JkcygpLG49dGhpcy5kaW1YQXhpcy5nZXR4QXhpc1RpdGxlQ29vcmRzKCk7dGhpcy5jb25kaXRpb25hbENoZWNrc0ZvckF4aXNDb29yZHMocixuLG8pLGkudHJhbnNsYXRlWEF4aXNZPWUuZ2xvYmFscy5yb3RhdGVYTGFiZWxzP3RoaXMueEF4aXNIZWlnaHQvODotNCxpLnRyYW5zbGF0ZVhBeGlzWD1lLmdsb2JhbHMucm90YXRlWExhYmVscyYmZS5nbG9iYWxzLmlzWE51bWVyaWMmJmUuY29uZmlnLnhheGlzLmxhYmVscy5yb3RhdGU8PS00NT8tdGhpcy54QXhpc1dpZHRoLzQ6MCxlLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoaS5yb3RhdGVYTGFiZWxzPSExLGkudHJhbnNsYXRlWEF4aXNZPXBhcnNlSW50KGUuY29uZmlnLnhheGlzLmxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkvMS41Ki0xKSxpLnRyYW5zbGF0ZVhBeGlzWT1pLnRyYW5zbGF0ZVhBeGlzWStlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WSxpLnRyYW5zbGF0ZVhBeGlzWD1pLnRyYW5zbGF0ZVhBeGlzWCtlLmNvbmZpZy54YXhpcy5sYWJlbHMub2Zmc2V0WDt2YXIgbD10aGlzLnlBeGlzV2lkdGgsaD10aGlzLnhBeGlzSGVpZ2h0O2kueEF4aXNMYWJlbHNIZWlnaHQ9dGhpcy54QXhpc0hlaWdodC1uLmhlaWdodCxpLnhBeGlzR3JvdXBMYWJlbHNIZWlnaHQ9aS54QXhpc0xhYmVsc0hlaWdodC1yLmhlaWdodCxpLnhBeGlzTGFiZWxzV2lkdGg9dGhpcy54QXhpc1dpZHRoLGkueEF4aXNIZWlnaHQ9dGhpcy54QXhpc0hlaWdodDt2YXIgYz0xMDsoXCJyYWRhclwiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy5pc1NwYXJrbGluZSkmJihsPTAsaD1pLmdvbGRlblBhZGRpbmcpLHRoaXMuaXNTcGFya2xpbmUmJih0aGlzLmxnUmVjdD17aGVpZ2h0OjAsd2lkdGg6MH0pLCh0aGlzLmlzU3BhcmtsaW5lfHxcInRyZWVtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpJiYobD0wLGg9MCxjPTApLHRoaXMuaXNTcGFya2xpbmV8fHRoaXMuZGltWEF4aXMuYWRkaXRpb25hbFBhZGRpbmdYTGFiZWxzKHIpO3ZhciBkPWZ1bmN0aW9uKCl7aS50cmFuc2xhdGVYPWwsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LXQubGdSZWN0LmhlaWdodC1oLSh0LmlzU3BhcmtsaW5lfHxcInRyZWVtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGU/MDplLmdsb2JhbHMucm90YXRlWExhYmVscz8xMDoxNSksaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC1sfTtzd2l0Y2goXCJ0b3BcIj09PWUuY29uZmlnLnhheGlzLnBvc2l0aW9uJiYoYz1pLnhBeGlzSGVpZ2h0LWUuY29uZmlnLnhheGlzLmF4aXNUaWNrcy5oZWlnaHQtNSksZS5jb25maWcubGVnZW5kLnBvc2l0aW9uKXtjYXNlXCJib3R0b21cIjppLnRyYW5zbGF0ZVk9YyxkKCk7YnJlYWs7Y2FzZVwidG9wXCI6aS50cmFuc2xhdGVZPXRoaXMubGdSZWN0LmhlaWdodCtjLGQoKTticmVhaztjYXNlXCJsZWZ0XCI6aS50cmFuc2xhdGVZPWMsaS50cmFuc2xhdGVYPXRoaXMubGdSZWN0LndpZHRoK2wsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LWgtMTIsaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1sO2JyZWFrO2Nhc2VcInJpZ2h0XCI6aS50cmFuc2xhdGVZPWMsaS50cmFuc2xhdGVYPWwsaS5ncmlkSGVpZ2h0PWkuc3ZnSGVpZ2h0LWgtMTIsaS5ncmlkV2lkdGg9aS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1sLTU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJMZWdlbmQgcG9zaXRpb24gbm90IHN1cHBvcnRlZFwiKX10aGlzLmRpbUdyaWQuc2V0R3JpZFhQb3NGb3JEdWFsWUF4aXMocyxhKSxuZXcgcSh0aGlzLmN0eCkuc2V0WUF4aXNYUG9zaXRpb24oYSxzKX19LHtrZXk6XCJzZXREaW1lbnNpb25zRm9yTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9dC5jb25maWcsYT0wO3QuY29uZmlnLmxlZ2VuZC5zaG93JiYhdC5jb25maWcubGVnZW5kLmZsb2F0aW5nJiYoYT0yMCk7dmFyIHM9XCJwaWVcIj09PWkuY2hhcnQudHlwZXx8XCJwb2xhckFyZWFcIj09PWkuY2hhcnQudHlwZXx8XCJkb251dFwiPT09aS5jaGFydC50eXBlP1wicGllXCI6XCJyYWRpYWxCYXJcIixyPWkucGxvdE9wdGlvbnNbc10ub2Zmc2V0WSxvPWkucGxvdE9wdGlvbnNbc10ub2Zmc2V0WDtpZighaS5sZWdlbmQuc2hvd3x8aS5sZWdlbmQuZmxvYXRpbmcpcmV0dXJuIGUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC1pLmdyaWQucGFkZGluZy5sZWZ0K2kuZ3JpZC5wYWRkaW5nLnJpZ2h0LGUuZ3JpZFdpZHRoPWUuZ3JpZEhlaWdodCxlLnRyYW5zbGF0ZVk9cix2b2lkKGUudHJhbnNsYXRlWD1vKyhlLnN2Z1dpZHRoLWUuZ3JpZFdpZHRoKS8yKTtzd2l0Y2goaS5sZWdlbmQucG9zaXRpb24pe2Nhc2VcImJvdHRvbVwiOmUuZ3JpZEhlaWdodD1lLnN2Z0hlaWdodC10aGlzLmxnUmVjdC5oZWlnaHQtZS5nb2xkZW5QYWRkaW5nLGUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgsZS50cmFuc2xhdGVZPXItMTAsZS50cmFuc2xhdGVYPW8rKGUuc3ZnV2lkdGgtZS5ncmlkV2lkdGgpLzI7YnJlYWs7Y2FzZVwidG9wXCI6ZS5ncmlkSGVpZ2h0PWUuc3ZnSGVpZ2h0LXRoaXMubGdSZWN0LmhlaWdodC1lLmdvbGRlblBhZGRpbmcsZS5ncmlkV2lkdGg9ZS5zdmdXaWR0aCxlLnRyYW5zbGF0ZVk9dGhpcy5sZ1JlY3QuaGVpZ2h0K3IrMTAsZS50cmFuc2xhdGVYPW8rKGUuc3ZnV2lkdGgtZS5ncmlkV2lkdGgpLzI7YnJlYWs7Y2FzZVwibGVmdFwiOmUuZ3JpZFdpZHRoPWUuc3ZnV2lkdGgtdGhpcy5sZ1JlY3Qud2lkdGgtYSxlLmdyaWRIZWlnaHQ9XCJhdXRvXCIhPT1pLmNoYXJ0LmhlaWdodD9lLnN2Z0hlaWdodDplLmdyaWRXaWR0aCxlLnRyYW5zbGF0ZVk9cixlLnRyYW5zbGF0ZVg9byt0aGlzLmxnUmVjdC53aWR0aCthO2JyZWFrO2Nhc2VcInJpZ2h0XCI6ZS5ncmlkV2lkdGg9ZS5zdmdXaWR0aC10aGlzLmxnUmVjdC53aWR0aC1hLTUsZS5ncmlkSGVpZ2h0PVwiYXV0b1wiIT09aS5jaGFydC5oZWlnaHQ/ZS5zdmdIZWlnaHQ6ZS5ncmlkV2lkdGgsZS50cmFuc2xhdGVZPXIsZS50cmFuc2xhdGVYPW8rMTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJMZWdlbmQgcG9zaXRpb24gbm90IHN1cHBvcnRlZFwiKX19fSx7a2V5OlwiY29uZGl0aW9uYWxDaGVja3NGb3JBeGlzQ29vcmRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPWEuZ2xvYmFscy5oYXNYYXhpc0dyb3Vwcz8yOjEscj1pLmhlaWdodCt0LmhlaWdodCtlLmhlaWdodCxvPWEuZ2xvYmFscy5pc011bHRpTGluZVg/MS4yOmEuZ2xvYmFscy5MSU5FX0hFSUdIVF9SQVRJTyxuPWEuZ2xvYmFscy5yb3RhdGVYTGFiZWxzPzIyOjEwLGw9YS5nbG9iYWxzLnJvdGF0ZVhMYWJlbHMmJlwiYm90dG9tXCI9PT1hLmNvbmZpZy5sZWdlbmQucG9zaXRpb24/MTA6MDt0aGlzLnhBeGlzSGVpZ2h0PXIqbytzKm4rbCx0aGlzLnhBeGlzV2lkdGg9dC53aWR0aCx0aGlzLnhBeGlzSGVpZ2h0LWUuaGVpZ2h0PmEuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQmJih0aGlzLnhBeGlzSGVpZ2h0PWEuY29uZmlnLnhheGlzLmxhYmVscy5tYXhIZWlnaHQpLGEuY29uZmlnLnhheGlzLmxhYmVscy5taW5IZWlnaHQmJnRoaXMueEF4aXNIZWlnaHQ8YS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCYmKHRoaXMueEF4aXNIZWlnaHQ9YS5jb25maWcueGF4aXMubGFiZWxzLm1pbkhlaWdodCksYS5jb25maWcueGF4aXMuZmxvYXRpbmcmJih0aGlzLnhBeGlzSGVpZ2h0PTApO3ZhciBoPTAsYz0wO2EuY29uZmlnLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2grPXQubGFiZWxzLm1pbldpZHRoLGMrPXQubGFiZWxzLm1heFdpZHRofSkpLHRoaXMueUF4aXNXaWR0aDxoJiYodGhpcy55QXhpc1dpZHRoPWgpLHRoaXMueUF4aXNXaWR0aD5jJiYodGhpcy55QXhpc1dpZHRoPWMpfX1dKSx0fSgpLG50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmxnQ3R4PWV9cmV0dXJuIHIodCxbe2tleTpcImdldExlZ2VuZFN0eWxlc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO3Quc2V0QXR0cmlidXRlKFwidHlwZVwiLFwidGV4dC9jc3NcIik7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcXHRcXG4gICAgXFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kIHtcXHRcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFx0XFxuICAgICAgICBvdmVyZmxvdzogYXV0bztcXHRcXG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3Age1xcdFxcbiAgICAgICAgZmxleC13cmFwOiB3cmFwXFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1sZWZ0IHtcXHRcXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFx0XFxuICAgICAgICBib3R0b206IDA7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLWJvdHRvbS5hcGV4Y2hhcnRzLWFsaWduLWxlZnQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcC5hcGV4Y2hhcnRzLWFsaWduLWxlZnQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXJpZ2h0LCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi1sZWZ0IHtcXHRcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLmFwZXhjaGFydHMtYWxpZ24tY2VudGVyLCAuYXBleGNoYXJ0cy1sZWdlbmQuYXB4LWxlZ2VuZC1wb3NpdGlvbi10b3AuYXBleGNoYXJ0cy1hbGlnbi1jZW50ZXIge1xcdFxcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7ICBcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tLmFwZXhjaGFydHMtYWxpZ24tcmlnaHQsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcC5hcGV4Y2hhcnRzLWFsaWduLXJpZ2h0IHtcXHRcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMge1xcdFxcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcdFxcbiAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFweC1sZWdlbmQtcG9zaXRpb24tYm90dG9tIC5hcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXMsIC5hcGV4Y2hhcnRzLWxlZ2VuZC5hcHgtbGVnZW5kLXBvc2l0aW9uLXRvcCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVze1xcdFxcbiAgICAgICAgZGlzcGxheTogZmxleDtcXHRcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFx0XFxuICAgICAgfVxcdFxcbiAgICAgIC5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IHtcXHRcXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHRcXG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLXRleHQgKiwgLmFwZXhjaGFydHMtbGVnZW5kLW1hcmtlciAqIHtcXHRcXG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyIHtcXHRcXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXHRcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHRcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXHRcXG4gICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xcdFxcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gICAgICB9XFx0XFxuICAgICAgXFx0XFxuICAgICAgLmFwZXhjaGFydHMtbGVnZW5kLmFwZXhjaGFydHMtYWxpZ24tcmlnaHQgLmFwZXhjaGFydHMtbGVnZW5kLXNlcmllcywgLmFwZXhjaGFydHMtbGVnZW5kLmFwZXhjaGFydHMtYWxpZ24tbGVmdCAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVze1xcdFxcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzLmFwZXhjaGFydHMtbm8tY2xpY2sge1xcdFxcbiAgICAgICAgY3Vyc29yOiBhdXRvO1xcdFxcbiAgICAgIH1cXHRcXG4gICAgICAuYXBleGNoYXJ0cy1sZWdlbmQgLmFwZXhjaGFydHMtaGlkZGVuLXplcm8tc2VyaWVzLCAuYXBleGNoYXJ0cy1sZWdlbmQgLmFwZXhjaGFydHMtaGlkZGVuLW51bGwtc2VyaWVzIHtcXHRcXG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXHRcXG4gICAgICB9XFx0XFxuICAgICAgLmFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kIHtcXHRcXG4gICAgICAgIG9wYWNpdHk6IDAuNDU7XFx0XFxuICAgICAgfVwiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChlKSx0fX0se2tleTpcImdldExlZ2VuZEJCb3hcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWxlZ2VuZFwiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXQud2lkdGg7cmV0dXJue2Nsd2g6dC5oZWlnaHQsY2x3dzplfX19LHtrZXk6XCJhcHBlbmRUb0ZvcmVpZ25PYmplY3RcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudy5nbG9iYWxzLmRvbS5lbExlZ2VuZEZvcmVpZ24uYXBwZW5kQ2hpbGQodGhpcy5nZXRMZWdlbmRTdHlsZXMoKSl9fSx7a2V5OlwidG9nZ2xlRGF0YVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPXRoaXMudztpZihhLmdsb2JhbHMuYXhpc0NoYXJ0c3x8XCJyYWRpYWxCYXJcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUpe2EuZ2xvYmFscy5yZXNpemVkPSEwO3ZhciBzPW51bGwscj1udWxsO2lmKGEuZ2xvYmFscy5yaXNpbmdTZXJpZXM9W10sYS5nbG9iYWxzLmF4aXNDaGFydHM/KHM9YS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiLmNvbmNhdCh0LFwiJ11cIikpLHI9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCkpOihzPWEuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIi5jb25jYXQodCsxLFwiJ11cIikpLHI9cGFyc2VJbnQocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEpLGUpW3tjczphLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLGNzaTphLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlc30se2NzOmEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXMsY3NpOmEuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzfV0uZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5yaXNlQ29sbGFwc2VkU2VyaWVzKHQuY3MsdC5jc2kscil9KSk7ZWxzZSB0aGlzLmhpZGVTZXJpZXMoe3Nlcmllc0VsOnMscmVhbEluZGV4OnJ9KX1lbHNle3ZhciBvPWEuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdCh0KzEsXCInXSBwYXRoXCIpKSxuPWEuY29uZmlnLmNoYXJ0LnR5cGU7aWYoXCJwaWVcIj09PW58fFwicG9sYXJBcmVhXCI9PT1ufHxcImRvbnV0XCI9PT1uKXt2YXIgbD1hLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQubGFiZWxzO25ldyBtKHRoaXMubGdDdHguY3R4KS5wYXRoTW91c2VEb3duKG8ubWVtYmVyc1swXSxudWxsKSx0aGlzLmxnQ3R4LmN0eC5waWUucHJpbnREYXRhTGFiZWxzSW5uZXIoby5tZW1iZXJzWzBdLm5vZGUsbCl9by5maXJlKFwiY2xpY2tcIil9fX0se2tleTpcImhpZGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNlcmllc0VsLGk9dC5yZWFsSW5kZXgsYT10aGlzLncscz14LmNsb25lKGEuY29uZmlnLnNlcmllcyk7aWYoYS5nbG9iYWxzLmF4aXNDaGFydHMpe3ZhciByPSExO2lmKGEuY29uZmlnLnlheGlzW2ldJiZhLmNvbmZpZy55YXhpc1tpXS5zaG93JiZhLmNvbmZpZy55YXhpc1tpXS5zaG93QWx3YXlzJiYocj0hMCxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGkpPDAmJihhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzLnB1c2goe2luZGV4OmksZGF0YTpzW2ldLmRhdGEuc2xpY2UoKSx0eXBlOmUucGFyZW50Tm9kZS5jbGFzc05hbWUuYmFzZVZhbC5zcGxpdChcIi1cIilbMV19KSxhLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5wdXNoKGkpKSksIXIpe2EuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMucHVzaCh7aW5kZXg6aSxkYXRhOnNbaV0uZGF0YS5zbGljZSgpLHR5cGU6ZS5wYXJlbnROb2RlLmNsYXNzTmFtZS5iYXNlVmFsLnNwbGl0KFwiLVwiKVsxXX0pLGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLnB1c2goaSk7dmFyIG89YS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5pbmRleE9mKGkpO2EuZ2xvYmFscy5yaXNpbmdTZXJpZXMuc3BsaWNlKG8sMSl9fWVsc2UgYS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5wdXNoKHtpbmRleDppLGRhdGE6c1tpXX0pLGEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLnB1c2goaSk7Zm9yKHZhciBuPWUuY2hpbGROb2RlcyxsPTA7bDxuLmxlbmd0aDtsKyspbltsXS5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIikmJihuW2xdLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtaGlkZVwiKT9uW2xdLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWhpZGVcIik6bltsXS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oaWRlXCIpKTthLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkPWEuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoPT09YS5jb25maWcuc2VyaWVzLmxlbmd0aCxzPXRoaXMuX2dldFNlcmllc0Jhc2VkT25Db2xsYXBzZWRTdGF0ZShzKSx0aGlzLmxnQ3R4LmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVTZXJpZXMocyxhLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCl9fSx7a2V5OlwicmlzZUNvbGxhcHNlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz14LmNsb25lKGEuY29uZmlnLnNlcmllcyk7aWYodC5sZW5ndGg+MCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS5pbmRleD09PWkmJihhLmdsb2JhbHMuYXhpc0NoYXJ0cz8oc1tpXS5kYXRhPXRbcl0uZGF0YS5zbGljZSgpLHQuc3BsaWNlKHIsMSksZS5zcGxpY2UociwxKSxhLmdsb2JhbHMucmlzaW5nU2VyaWVzLnB1c2goaSkpOihzW2ldPXRbcl0uZGF0YSx0LnNwbGljZShyLDEpLGUuc3BsaWNlKHIsMSksYS5nbG9iYWxzLnJpc2luZ1Nlcmllcy5wdXNoKGkpKSk7cz10aGlzLl9nZXRTZXJpZXNCYXNlZE9uQ29sbGFwc2VkU3RhdGUocyksdGhpcy5sZ0N0eC5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKHMsYS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpfX19LHtrZXk6XCJfZ2V0U2VyaWVzQmFzZWRPbkNvbGxhcHNlZFN0YXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3JldHVybiBlLmdsb2JhbHMuYXhpc0NoYXJ0cz90LmZvckVhY2goKGZ1bmN0aW9uKGksYSl7ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihhKT4tMSYmKHRbYV0uZGF0YT1bXSl9KSk6dC5mb3JFYWNoKChmdW5jdGlvbihpLGEpe2UuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoYSk+LTEmJih0W2FdPTApfSkpLHR9fV0pLHR9KCksbHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy5vbkxlZ2VuZENsaWNrPXRoaXMub25MZWdlbmRDbGljay5iaW5kKHRoaXMpLHRoaXMub25MZWdlbmRIb3ZlcmVkPXRoaXMub25MZWdlbmRIb3ZlcmVkLmJpbmQodGhpcyksdGhpcy5pc0JhcnNEaXN0cmlidXRlZD1cImJhclwiPT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlJiZ0aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kaXN0cmlidXRlZCYmMT09PXRoaXMudy5jb25maWcuc2VyaWVzLmxlbmd0aCx0aGlzLmxlZ2VuZEhlbHBlcnM9bmV3IG50KHRoaXMpfXJldHVybiByKHQsW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMsaT10LmNvbmZpZztpZigoaS5sZWdlbmQuc2hvd0ZvclNpbmdsZVNlcmllcyYmMT09PWUuc2VyaWVzLmxlbmd0aHx8dGhpcy5pc0JhcnNEaXN0cmlidXRlZHx8ZS5zZXJpZXMubGVuZ3RoPjF8fCFlLmF4aXNDaGFydHMpJiZpLmxlZ2VuZC5zaG93KXtmb3IoO2UuZG9tLmVsTGVnZW5kV3JhcC5maXJzdENoaWxkOyllLmRvbS5lbExlZ2VuZFdyYXAucmVtb3ZlQ2hpbGQoZS5kb20uZWxMZWdlbmRXcmFwLmZpcnN0Q2hpbGQpO3RoaXMuZHJhd0xlZ2VuZHMoKSx4LmlzSUUxMSgpP2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZCh0aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kU3R5bGVzKCkpOnRoaXMubGVnZW5kSGVscGVycy5hcHBlbmRUb0ZvcmVpZ25PYmplY3QoKSxcImJvdHRvbVwiPT09aS5sZWdlbmQucG9zaXRpb258fFwidG9wXCI9PT1pLmxlZ2VuZC5wb3NpdGlvbj90aGlzLmxlZ2VuZEFsaWduSG9yaXpvbnRhbCgpOlwicmlnaHRcIiE9PWkubGVnZW5kLnBvc2l0aW9uJiZcImxlZnRcIiE9PWkubGVnZW5kLnBvc2l0aW9ufHx0aGlzLmxlZ2VuZEFsaWduVmVydGljYWwoKX19fSx7a2V5OlwiZHJhd0xlZ2VuZHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLncsaT1lLmNvbmZpZy5sZWdlbmQuZm9udEZhbWlseSxhPWUuZ2xvYmFscy5zZXJpZXNOYW1lcyxzPWUuZ2xvYmFscy5jb2xvcnMuc2xpY2UoKTtpZihcImhlYXRtYXBcIj09PWUuY29uZmlnLmNoYXJ0LnR5cGUpe3ZhciByPWUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuY29sb3JTY2FsZS5yYW5nZXM7YT1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT90Lm5hbWU6dC5mcm9tK1wiIC0gXCIrdC50b30pKSxzPXIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb2xvcn0pKX1lbHNlIHRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQmJihhPWUuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKSk7ZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zLmxlbmd0aCYmKGE9ZS5jb25maWcubGVnZW5kLmN1c3RvbUxlZ2VuZEl0ZW1zKTtmb3IodmFyIG89ZS5nbG9iYWxzLmxlZ2VuZEZvcm1hdHRlcixuPWUuY29uZmlnLmxlZ2VuZC5pbnZlcnNlT3JkZXIsbD1uP2EubGVuZ3RoLTE6MDtuP2w+PTA6bDw9YS5sZW5ndGgtMTtuP2wtLTpsKyspe3ZhciBoLGM9byhhW2xdLHtzZXJpZXNJbmRleDpsLHc6ZX0pLGQ9ITEsZz0hMTtpZihlLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aD4wKWZvcih2YXIgdT0wO3U8ZS5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGg7dSsrKWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbdV0uaW5kZXg9PT1sJiYoZD0hMCk7aWYoZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoPjApZm9yKHZhciBwPTA7cDxlLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7cCsrKWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzW3BdPT09bCYmKGc9ITApO3ZhciBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2YuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKTt2YXIgYj1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5vZmZzZXRYLHY9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMub2Zmc2V0WSx3PWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmhlaWdodCxrPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLndpZHRoLEE9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuc3Ryb2tlV2lkdGgsUz1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5zdHJva2VDb2xvcixDPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLnJhZGl1cyxMPWYuc3R5bGU7TC5iYWNrZ3JvdW5kPXNbbF0sTC5jb2xvcj1zW2xdLEwuc2V0UHJvcGVydHkoXCJiYWNrZ3JvdW5kXCIsc1tsXSxcImltcG9ydGFudFwiKSxlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzJiZlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5maWxsQ29sb3JzW2xdJiYoTC5iYWNrZ3JvdW5kPWUuY29uZmlnLmxlZ2VuZC5tYXJrZXJzLmZpbGxDb2xvcnNbbF0pLHZvaWQgMCE9PWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0mJihMLmJhY2tncm91bmQ9ZS5nbG9iYWxzLnNlcmllc0NvbG9yc1tsXSxMLmNvbG9yPWUuZ2xvYmFscy5zZXJpZXNDb2xvcnNbbF0pLEwuaGVpZ2h0PUFycmF5LmlzQXJyYXkodyk/cGFyc2VGbG9hdCh3W2xdKStcInB4XCI6cGFyc2VGbG9hdCh3KStcInB4XCIsTC53aWR0aD1BcnJheS5pc0FycmF5KGspP3BhcnNlRmxvYXQoa1tsXSkrXCJweFwiOnBhcnNlRmxvYXQoaykrXCJweFwiLEwubGVmdD0oQXJyYXkuaXNBcnJheShiKT9wYXJzZUZsb2F0KGJbbF0pOnBhcnNlRmxvYXQoYikpK1wicHhcIixMLnRvcD0oQXJyYXkuaXNBcnJheSh2KT9wYXJzZUZsb2F0KHZbbF0pOnBhcnNlRmxvYXQodikpK1wicHhcIixMLmJvcmRlcldpZHRoPUFycmF5LmlzQXJyYXkoQSk/QVtsXTpBLEwuYm9yZGVyQ29sb3I9QXJyYXkuaXNBcnJheShTKT9TW2xdOlMsTC5ib3JkZXJSYWRpdXM9QXJyYXkuaXNBcnJheShDKT9wYXJzZUZsb2F0KENbbF0pK1wicHhcIjpwYXJzZUZsb2F0KEMpK1wicHhcIixlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MJiYoQXJyYXkuaXNBcnJheShlLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MKT9lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MW2xdJiYoZi5pbm5lckhUTUw9ZS5jb25maWcubGVnZW5kLm1hcmtlcnMuY3VzdG9tSFRNTFtsXSgpKTpmLmlubmVySFRNTD1lLmNvbmZpZy5sZWdlbmQubWFya2Vycy5jdXN0b21IVE1MKCkpLG0uc2V0QXR0cnMoZix7cmVsOmwrMSxcImRhdGE6Y29sbGFwc2VkXCI6ZHx8Z30pLChkfHxnKSYmZi5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1pbmFjdGl2ZS1sZWdlbmRcIik7dmFyIFA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxJPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO0kuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIiksSS5pbm5lckhUTUw9QXJyYXkuaXNBcnJheShjKT9jLmpvaW4oXCIgXCIpOmM7dmFyIE09ZS5jb25maWcubGVnZW5kLmxhYmVscy51c2VTZXJpZXNDb2xvcnM/ZS5nbG9iYWxzLmNvbG9yc1tsXTpBcnJheS5pc0FycmF5KGUuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzKT9udWxsPT09KGg9ZS5jb25maWcubGVnZW5kLmxhYmVscy5jb2xvcnMpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoW2xdOmUuY29uZmlnLmxlZ2VuZC5sYWJlbHMuY29sb3JzO018fChNPWUuY29uZmlnLmNoYXJ0LmZvcmVDb2xvciksSS5zdHlsZS5jb2xvcj1NLEkuc3R5bGUuZm9udFNpemU9cGFyc2VGbG9hdChlLmNvbmZpZy5sZWdlbmQuZm9udFNpemUpK1wicHhcIixJLnN0eWxlLmZvbnRXZWlnaHQ9ZS5jb25maWcubGVnZW5kLmZvbnRXZWlnaHQsSS5zdHlsZS5mb250RmFtaWx5PWl8fGUuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksbS5zZXRBdHRycyhJLHtyZWw6bCsxLGk6bCxcImRhdGE6ZGVmYXVsdC10ZXh0XCI6ZW5jb2RlVVJJQ29tcG9uZW50KGMpLFwiZGF0YTpjb2xsYXBzZWRcIjpkfHxnfSksUC5hcHBlbmRDaGlsZChmKSxQLmFwcGVuZENoaWxkKEkpO3ZhciBUPW5ldyB5KHRoaXMuY3R4KTtpZighZS5jb25maWcubGVnZW5kLnNob3dGb3JaZXJvU2VyaWVzKTA9PT1ULmdldFNlcmllc1RvdGFsQnlJbmRleChsKSYmVC5zZXJpZXNIYXZlU2FtZVZhbHVlcyhsKSYmIVQuaXNTZXJpZXNOdWxsKGwpJiYtMT09PWUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJi0xPT09ZS5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZihsKSYmUC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1oaWRkZW4temVyby1zZXJpZXNcIik7ZS5jb25maWcubGVnZW5kLnNob3dGb3JOdWxsU2VyaWVzfHxULmlzU2VyaWVzTnVsbChsKSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKGwpJiYtMT09PWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YobCkmJlAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaGlkZGVuLW51bGwtc2VyaWVzXCIpLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmFwcGVuZENoaWxkKFApLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFsaWduLVwiLmNvbmNhdChlLmNvbmZpZy5sZWdlbmQuaG9yaXpvbnRhbEFsaWduKSksZS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuY2xhc3NMaXN0LmFkZChcImFweC1sZWdlbmQtcG9zaXRpb24tXCIrZS5jb25maWcubGVnZW5kLnBvc2l0aW9uKSxQLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1zZXJpZXNcIiksUC5zdHlsZS5tYXJnaW49XCJcIi5jb25jYXQoZS5jb25maWcubGVnZW5kLml0ZW1NYXJnaW4udmVydGljYWwsXCJweCBcIikuY29uY2F0KGUuY29uZmlnLmxlZ2VuZC5pdGVtTWFyZ2luLmhvcml6b250YWwsXCJweFwiKSxlLmdsb2JhbHMuZG9tLmVsTGVnZW5kV3JhcC5zdHlsZS53aWR0aD1lLmNvbmZpZy5sZWdlbmQud2lkdGg/ZS5jb25maWcubGVnZW5kLndpZHRoK1wicHhcIjpcIlwiLGUuZ2xvYmFscy5kb20uZWxMZWdlbmRXcmFwLnN0eWxlLmhlaWdodD1lLmNvbmZpZy5sZWdlbmQuaGVpZ2h0P2UuY29uZmlnLmxlZ2VuZC5oZWlnaHQrXCJweFwiOlwiXCIsbS5zZXRBdHRycyhQLHtyZWw6bCsxLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYVtsXSksXCJkYXRhOmNvbGxhcHNlZFwiOmR8fGd9KSwoZHx8ZykmJlAuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kXCIpLGUuY29uZmlnLmxlZ2VuZC5vbkl0ZW1DbGljay50b2dnbGVEYXRhU2VyaWVzfHxQLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW5vLWNsaWNrXCIpfWUuZ2xvYmFscy5kb20uZWxXcmFwLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQub25MZWdlbmRDbGljaywhMCksZS5jb25maWcubGVnZW5kLm9uSXRlbUhvdmVyLmhpZ2hsaWdodERhdGFTZXJpZXMmJjA9PT1lLmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMubGVuZ3RoJiYoZS5nbG9iYWxzLmRvbS5lbFdyYXAuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHQub25MZWdlbmRIb3ZlcmVkLCEwKSxlLmdsb2JhbHMuZG9tLmVsV3JhcC5hZGRFdmVudExpc3RlbmVyKFwibW91c2VvdXRcIix0Lm9uTGVnZW5kSG92ZXJlZCwhMCkpfX0se2tleTpcInNldExlZ2VuZFdyYXBYWVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9aS5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAscz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9MCxvPTA7aWYoXCJib3R0b21cIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbilvKz1pLmdsb2JhbHMuc3ZnSGVpZ2h0LXMuaGVpZ2h0LzI7ZWxzZSBpZihcInRvcFwiPT09aS5jb25maWcubGVnZW5kLnBvc2l0aW9uKXt2YXIgbj1uZXcgb3QodGhpcy5jdHgpLGw9bi5kaW1IZWxwZXJzLmdldFRpdGxlU3VidGl0bGVDb29yZHMoXCJ0aXRsZVwiKS5oZWlnaHQsaD1uLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpLmhlaWdodDtvPW8rKGw+MD9sLTEwOjApKyhoPjA/aC0xMDowKX1hLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixyPXIrdCtpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WCxvPW8rZStpLmNvbmZpZy5sZWdlbmQub2Zmc2V0WSxhLnN0eWxlLmxlZnQ9citcInB4XCIsYS5zdHlsZS50b3A9bytcInB4XCIsXCJib3R0b21cIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbj8oYS5zdHlsZS50b3A9XCJhdXRvXCIsYS5zdHlsZS5ib3R0b209NS1pLmNvbmZpZy5sZWdlbmQub2Zmc2V0WStcInB4XCIpOlwicmlnaHRcIj09PWkuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKGEuc3R5bGUubGVmdD1cImF1dG9cIixhLnN0eWxlLnJpZ2h0PTI1K2kuY29uZmlnLmxlZ2VuZC5vZmZzZXRYK1wicHhcIik7W1wid2lkdGhcIixcImhlaWdodFwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthLnN0eWxlW3RdJiYoYS5zdHlsZVt0XT1wYXJzZUludChpLmNvbmZpZy5sZWdlbmRbdF0sMTApK1wicHhcIil9KSl9fSx7a2V5OlwibGVnZW5kQWxpZ25Ib3Jpem9udGFsXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dC5nbG9iYWxzLmRvbS5lbExlZ2VuZFdyYXAuc3R5bGUucmlnaHQ9MDt2YXIgZT10aGlzLmxlZ2VuZEhlbHBlcnMuZ2V0TGVnZW5kQkJveCgpLGk9bmV3IG90KHRoaXMuY3R4KSxhPWkuZGltSGVscGVycy5nZXRUaXRsZVN1YnRpdGxlQ29vcmRzKFwidGl0bGVcIikscz1pLmRpbUhlbHBlcnMuZ2V0VGl0bGVTdWJ0aXRsZUNvb3JkcyhcInN1YnRpdGxlXCIpLHI9MDtcImJvdHRvbVwiPT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uP3I9LWUuY2x3aC8xLjg6XCJ0b3BcIj09PXQuY29uZmlnLmxlZ2VuZC5wb3NpdGlvbiYmKHI9YS5oZWlnaHQrcy5oZWlnaHQrdC5jb25maWcudGl0bGUubWFyZ2luK3QuY29uZmlnLnN1YnRpdGxlLm1hcmdpbi0xMCksdGhpcy5zZXRMZWdlbmRXcmFwWFkoMjAscil9fSx7a2V5OlwibGVnZW5kQWxpZ25WZXJ0aWNhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKSxpPTA7XCJsZWZ0XCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihpPTIwKSxcInJpZ2h0XCI9PT10LmNvbmZpZy5sZWdlbmQucG9zaXRpb24mJihpPXQuZ2xvYmFscy5zdmdXaWR0aC1lLmNsd3ctMTApLHRoaXMuc2V0TGVnZW5kV3JhcFhZKGksMjApfX0se2tleTpcIm9uTGVnZW5kSG92ZXJlZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXNlcmllc1wiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtdGV4dFwiKXx8dC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtbWFya2VyXCIpO2lmKFwiaGVhdG1hcFwiPT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy5pc0JhcnNEaXN0cmlidXRlZCl7aWYoaSl7dmFyIGE9cGFyc2VJbnQodC50YXJnZXQuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xO3RoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRIb3ZlclwiLFt0aGlzLmN0eCxhLHRoaXMud10pLG5ldyBOKHRoaXMuY3R4KS5oaWdobGlnaHRSYW5nZUluU2VyaWVzKHQsdC50YXJnZXQpfX1lbHNlIXQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtaW5hY3RpdmUtbGVnZW5kXCIpJiZpJiZuZXcgTih0aGlzLmN0eCkudG9nZ2xlU2VyaWVzT25Ib3Zlcih0LHQudGFyZ2V0KX19LHtrZXk6XCJvbkxlZ2VuZENsaWNrXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O2lmKCFlLmNvbmZpZy5sZWdlbmQuY3VzdG9tTGVnZW5kSXRlbXMubGVuZ3RoJiYodC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1sZWdlbmQtc2VyaWVzXCIpfHx0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0XCIpfHx0LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLWxlZ2VuZC1tYXJrZXJcIikpKXt2YXIgaT1wYXJzZUludCh0LnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEsYT1cInRydWVcIj09PXQudGFyZ2V0LmdldEF0dHJpYnV0ZShcImRhdGE6Y29sbGFwc2VkXCIpLHM9dGhpcy53LmNvbmZpZy5jaGFydC5ldmVudHMubGVnZW5kQ2xpY2s7XCJmdW5jdGlvblwiPT10eXBlb2YgcyYmcyh0aGlzLmN0eCxpLHRoaXMudyksdGhpcy5jdHguZXZlbnRzLmZpcmVFdmVudChcImxlZ2VuZENsaWNrXCIsW3RoaXMuY3R4LGksdGhpcy53XSk7dmFyIHI9dGhpcy53LmNvbmZpZy5sZWdlbmQubWFya2Vycy5vbkNsaWNrO1wiZnVuY3Rpb25cIj09dHlwZW9mIHImJnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKSYmKHIodGhpcy5jdHgsaSx0aGlzLncpLHRoaXMuY3R4LmV2ZW50cy5maXJlRXZlbnQoXCJsZWdlbmRNYXJrZXJDbGlja1wiLFt0aGlzLmN0eCxpLHRoaXMud10pKSxcInRyZWVtYXBcIiE9PWUuY29uZmlnLmNoYXJ0LnR5cGUmJlwiaGVhdG1hcFwiIT09ZS5jb25maWcuY2hhcnQudHlwZSYmIXRoaXMuaXNCYXJzRGlzdHJpYnV0ZWQmJmUuY29uZmlnLmxlZ2VuZC5vbkl0ZW1DbGljay50b2dnbGVEYXRhU2VyaWVzJiZ0aGlzLmxlZ2VuZEhlbHBlcnMudG9nZ2xlRGF0YVNlcmllcyhpLGEpfX19XSksdH0oKSxodD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudzt2YXIgaT10aGlzLnc7dGhpcy5ldj10aGlzLncuY29uZmlnLmNoYXJ0LmV2ZW50cyx0aGlzLnNlbGVjdGVkQ2xhc3M9XCJhcGV4Y2hhcnRzLXNlbGVjdGVkXCIsdGhpcy5sb2NhbGVWYWx1ZXM9dGhpcy53Lmdsb2JhbHMubG9jYWxlLnRvb2xiYXIsdGhpcy5taW5YPWkuZ2xvYmFscy5taW5YLHRoaXMubWF4WD1pLmdsb2JhbHMubWF4WH1yZXR1cm4gcih0LFt7a2V5OlwiY3JlYXRlVG9vbGJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudyxpPWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIil9LGE9aSgpO2lmKGEuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixcImFwZXhjaGFydHMtdG9vbGJhclwiKSxhLnN0eWxlLnRvcD1lLmNvbmZpZy5jaGFydC50b29sYmFyLm9mZnNldFkrXCJweFwiLGEuc3R5bGUucmlnaHQ9My1lLmNvbmZpZy5jaGFydC50b29sYmFyLm9mZnNldFgrXCJweFwiLGUuZ2xvYmFscy5kb20uZWxXcmFwLmFwcGVuZENoaWxkKGEpLHRoaXMuZWxab29tPWkoKSx0aGlzLmVsWm9vbUluPWkoKSx0aGlzLmVsWm9vbU91dD1pKCksdGhpcy5lbFBhbj1pKCksdGhpcy5lbFNlbGVjdGlvbj1pKCksdGhpcy5lbFpvb21SZXNldD1pKCksdGhpcy5lbE1lbnVJY29uPWkoKSx0aGlzLmVsTWVudT1pKCksdGhpcy5lbEN1c3RvbUljb25zPVtdLHRoaXMudD1lLmNvbmZpZy5jaGFydC50b29sYmFyLnRvb2xzLEFycmF5LmlzQXJyYXkodGhpcy50LmN1c3RvbUljb25zKSlmb3IodmFyIHM9MDtzPHRoaXMudC5jdXN0b21JY29ucy5sZW5ndGg7cysrKXRoaXMuZWxDdXN0b21JY29ucy5wdXNoKGkoKSk7dmFyIHI9W10sbz1mdW5jdGlvbihpLGEscyl7dmFyIG89aS50b0xvd2VyQ2FzZSgpO3QudFtvXSYmZS5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkJiZyLnB1c2goe2VsOmEsaWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdC50W29dP3QudFtvXTpzLHRpdGxlOnQubG9jYWxlVmFsdWVzW2ldLGNsYXNzOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQobyxcIi1pY29uXCIpfSl9O28oXCJ6b29tSW5cIix0aGlzLmVsWm9vbUluLCc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4elwiLz5cXG48L3N2Zz5cXG4nKSxvKFwiem9vbU91dFwiLHRoaXMuZWxab29tT3V0LCc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XFxuICAgIDxwYXRoIGQ9XCJNNyAxMXYyaDEwdi0ySDd6bTUtOUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6XCIvPlxcbjwvc3ZnPlxcbicpO3ZhciBuPWZ1bmN0aW9uKGkpe3QudFtpXSYmZS5jb25maWcuY2hhcnRbaV0uZW5hYmxlZCYmci5wdXNoKHtlbDpcInpvb21cIj09PWk/dC5lbFpvb206dC5lbFNlbGVjdGlvbixpY29uOlwic3RyaW5nXCI9PXR5cGVvZiB0LnRbaV0/dC50W2ldOlwiem9vbVwiPT09aT8nPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIiMwMDAwMDBcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCI+XFxuICAgIDxwYXRoIGQ9XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIi8+XFxuICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDBWMHpcIiBmaWxsPVwibm9uZVwiLz5cXG4gICAgPHBhdGggZD1cIk0xMiAxMGgtMnYySDl2LTJIN1Y5aDJWN2gxdjJoMnYxelwiLz5cXG48L3N2Zz4nOic8c3ZnIGZpbGw9XCIjNkU4MTkyXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cXG4gICAgPHBhdGggZD1cIk0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6XCIvPlxcbjwvc3ZnPicsdGl0bGU6dC5sb2NhbGVWYWx1ZXNbXCJ6b29tXCI9PT1pP1wic2VsZWN0aW9uWm9vbVwiOlwic2VsZWN0aW9uXCJdLGNsYXNzOmUuZ2xvYmFscy5pc1RvdWNoRGV2aWNlP1wiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoaSxcIi1pY29uXCIpfSl9O24oXCJ6b29tXCIpLG4oXCJzZWxlY3Rpb25cIiksdGhpcy50LnBhbiYmZS5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkJiZyLnB1c2goe2VsOnRoaXMuZWxQYW4saWNvbjpcInN0cmluZ1wiPT10eXBlb2YgdGhpcy50LnBhbj90aGlzLnQucGFuOic8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiBmaWxsPVwiIzAwMDAwMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIj5cXG4gICAgPGRlZnM+XFxuICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGlkPVwiYVwiLz5cXG4gICAgPC9kZWZzPlxcbiAgICA8Y2xpcFBhdGggaWQ9XCJiXCI+XFxuICAgICAgICA8dXNlIG92ZXJmbG93PVwidmlzaWJsZVwiIHhsaW5rOmhyZWY9XCIjYVwiLz5cXG4gICAgPC9jbGlwUGF0aD5cXG4gICAgPHBhdGggY2xpcC1wYXRoPVwidXJsKCNiKVwiIGQ9XCJNMjMgNS41VjIwYzAgMi4yLTEuOCA0LTQgNGgtNy4zYy0xLjA4IDAtMi4xLS40My0yLjg1LTEuMTlMMSAxNC44M3MxLjI2LTEuMjMgMS4zLTEuMjVjLjIyLS4xOS40OS0uMjkuNzktLjI5LjIyIDAgLjQyLjA2LjYuMTYuMDQuMDEgNC4zMSAyLjQ2IDQuMzEgMi40NlY0YzAtLjgzLjY3LTEuNSAxLjUtMS41UzExIDMuMTcgMTEgNHY3aDFWMS41YzAtLjgzLjY3LTEuNSAxLjUtMS41UzE1IC42NyAxNSAxLjVWMTFoMVYyLjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjVWMTFoMVY1LjVjMC0uODMuNjctMS41IDEuNS0xLjVzMS41LjY3IDEuNSAxLjV6XCIvPlxcbjwvc3ZnPicsdGl0bGU6dGhpcy5sb2NhbGVWYWx1ZXMucGFuLGNsYXNzOmUuZ2xvYmFscy5pc1RvdWNoRGV2aWNlP1wiYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlblwiOlwiYXBleGNoYXJ0cy1wYW4taWNvblwifSksbyhcInJlc2V0XCIsdGhpcy5lbFpvb21SZXNldCwnPHN2ZyBmaWxsPVwiIzAwMDAwMFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XFxuICAgIDxwYXRoIGQ9XCJNMTAgMjB2LTZoNHY2aDV2LThoM0wxMiAzIDIgMTJoM3Y4elwiLz5cXG4gICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cXG48L3N2Zz4nKSx0aGlzLnQuZG93bmxvYWQmJnIucHVzaCh7ZWw6dGhpcy5lbE1lbnVJY29uLGljb246XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMudC5kb3dubG9hZD90aGlzLnQuZG93bmxvYWQ6JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIi8+PHBhdGggZD1cIk0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzelwiLz48L3N2Zz4nLHRpdGxlOnRoaXMubG9jYWxlVmFsdWVzLm1lbnUsY2xhc3M6XCJhcGV4Y2hhcnRzLW1lbnUtaWNvblwifSk7Zm9yKHZhciBsPTA7bDx0aGlzLmVsQ3VzdG9tSWNvbnMubGVuZ3RoO2wrKylyLnB1c2goe2VsOnRoaXMuZWxDdXN0b21JY29uc1tsXSxpY29uOnRoaXMudC5jdXN0b21JY29uc1tsXS5pY29uLHRpdGxlOnRoaXMudC5jdXN0b21JY29uc1tsXS50aXRsZSxpbmRleDp0aGlzLnQuY3VzdG9tSWNvbnNbbF0uaW5kZXgsY2xhc3M6XCJhcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gXCIrdGhpcy50LmN1c3RvbUljb25zW2xdLmNsYXNzfSk7ci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuaW5kZXgmJngubW92ZUluZGV4SW5BcnJheShyLGUsdC5pbmRleCl9KSk7Zm9yKHZhciBoPTA7aDxyLmxlbmd0aDtoKyspbS5zZXRBdHRycyhyW2hdLmVsLHtjbGFzczpyW2hdLmNsYXNzLHRpdGxlOnJbaF0udGl0bGV9KSxyW2hdLmVsLmlubmVySFRNTD1yW2hdLmljb24sYS5hcHBlbmRDaGlsZChyW2hdLmVsKTt0aGlzLl9jcmVhdGVIYW1idXJnZXJNZW51KGEpLGUuZ2xvYmFscy56b29tRW5hYmxlZD90aGlzLmVsWm9vbS5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyk6ZS5nbG9iYWxzLnBhbkVuYWJsZWQ/dGhpcy5lbFBhbi5jbGFzc0xpc3QuYWRkKHRoaXMuc2VsZWN0ZWRDbGFzcyk6ZS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQmJnRoaXMuZWxTZWxlY3Rpb24uY2xhc3NMaXN0LmFkZCh0aGlzLnNlbGVjdGVkQ2xhc3MpLHRoaXMuYWRkVG9vbGJhckV2ZW50TGlzdGVuZXJzKCl9fSx7a2V5OlwiX2NyZWF0ZUhhbWJ1cmdlck1lbnVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmVsTWVudUl0ZW1zPVtdLHQuYXBwZW5kQ2hpbGQodGhpcy5lbE1lbnUpLG0uc2V0QXR0cnModGhpcy5lbE1lbnUse2NsYXNzOlwiYXBleGNoYXJ0cy1tZW51XCJ9KTt2YXIgZT1be25hbWU6XCJleHBvcnRTVkdcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1NWR30se25hbWU6XCJleHBvcnRQTkdcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb1BOR30se25hbWU6XCJleHBvcnRDU1ZcIix0aXRsZTp0aGlzLmxvY2FsZVZhbHVlcy5leHBvcnRUb0NTVn1dO3RoaXMudy5nbG9iYWxzLmFsbFNlcmllc0hhc0VxdWFsWHx8ZS5zcGxpY2UoMiwxKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl0aGlzLmVsTWVudUl0ZW1zLnB1c2goZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSksdGhpcy5lbE1lbnVJdGVtc1tpXS5pbm5lckhUTUw9ZVtpXS50aXRsZSxtLnNldEF0dHJzKHRoaXMuZWxNZW51SXRlbXNbaV0se2NsYXNzOlwiYXBleGNoYXJ0cy1tZW51LWl0ZW0gXCIuY29uY2F0KGVbaV0ubmFtZSksdGl0bGU6ZVtpXS50aXRsZX0pLHRoaXMuZWxNZW51LmFwcGVuZENoaWxkKHRoaXMuZWxNZW51SXRlbXNbaV0pfX0se2tleTpcImFkZFRvb2xiYXJFdmVudExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmVsWm9vbVJlc2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuaGFuZGxlWm9vbVJlc2V0LmJpbmQodGhpcykpLHRoaXMuZWxTZWxlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVab29tU2VsZWN0aW9uLmJpbmQodGhpcyxcInNlbGVjdGlvblwiKSksdGhpcy5lbFpvb20uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVab29tU2VsZWN0aW9uLmJpbmQodGhpcyxcInpvb21cIikpLHRoaXMuZWxab29tSW4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tSW4uYmluZCh0aGlzKSksdGhpcy5lbFpvb21PdXQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5oYW5kbGVab29tT3V0LmJpbmQodGhpcykpLHRoaXMuZWxQYW4uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50b2dnbGVQYW5uaW5nLmJpbmQodGhpcykpLHRoaXMuZWxNZW51SWNvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLnRvZ2dsZU1lbnUuYmluZCh0aGlzKSksdGhpcy5lbE1lbnVJdGVtcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmNsYXNzTGlzdC5jb250YWlucyhcImV4cG9ydFNWR1wiKT9lLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuaGFuZGxlRG93bmxvYWQuYmluZCh0LFwic3ZnXCIpKTplLmNsYXNzTGlzdC5jb250YWlucyhcImV4cG9ydFBOR1wiKT9lLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHQuaGFuZGxlRG93bmxvYWQuYmluZCh0LFwicG5nXCIpKTplLmNsYXNzTGlzdC5jb250YWlucyhcImV4cG9ydENTVlwiKSYmZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0LmhhbmRsZURvd25sb2FkLmJpbmQodCxcImNzdlwiKSl9KSk7Zm9yKHZhciBlPTA7ZTx0aGlzLnQuY3VzdG9tSWNvbnMubGVuZ3RoO2UrKyl0aGlzLmVsQ3VzdG9tSWNvbnNbZV0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy50LmN1c3RvbUljb25zW2VdLmNsaWNrLmJpbmQodGhpcyx0aGlzLmN0eCx0aGlzLmN0eC53KSl9fSx7a2V5OlwidG9nZ2xlWm9vbVNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuY3R4LnRvb2xiYXIudG9nZ2xlT3RoZXJDb250cm9scygpO3ZhciBpPVwic2VsZWN0aW9uXCI9PT10P2UuY3R4LnRvb2xiYXIuZWxTZWxlY3Rpb246ZS5jdHgudG9vbGJhci5lbFpvb20sYT1cInNlbGVjdGlvblwiPT09dD9cInNlbGVjdGlvbkVuYWJsZWRcIjpcInpvb21FbmFibGVkXCI7ZS53Lmdsb2JhbHNbYV09IWUudy5nbG9iYWxzW2FdLGkuY2xhc3NMaXN0LmNvbnRhaW5zKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk/aS5jbGFzc0xpc3QucmVtb3ZlKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk6aS5jbGFzc0xpc3QuYWRkKGUuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyl9KSl9fSx7a2V5OlwiZ2V0VG9vbGJhckljb25zUmVmZXJlbmNlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7dGhpcy5lbFpvb218fCh0aGlzLmVsWm9vbT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtem9vbS1pY29uXCIpKSx0aGlzLmVsUGFufHwodGhpcy5lbFBhbj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtcGFuLWljb25cIikpLHRoaXMuZWxTZWxlY3Rpb258fCh0aGlzLmVsU2VsZWN0aW9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvblwiKSl9fSx7a2V5OlwiZW5hYmxlWm9vbVBhbkZyb21Ub29sYmFyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVPdGhlckNvbnRyb2xzKCksXCJwYW5cIj09PXQ/dGhpcy53Lmdsb2JhbHMucGFuRW5hYmxlZD0hMDp0aGlzLncuZ2xvYmFscy56b29tRW5hYmxlZD0hMDt2YXIgZT1cInBhblwiPT09dD90aGlzLmVsUGFuOnRoaXMuZWxab29tLGk9XCJwYW5cIj09PXQ/dGhpcy5lbFpvb206dGhpcy5lbFBhbjtlJiZlLmNsYXNzTGlzdC5hZGQodGhpcy5zZWxlY3RlZENsYXNzKSxpJiZpLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5zZWxlY3RlZENsYXNzKX19LHtrZXk6XCJ0b2dnbGVQYW5uaW5nXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmN0eC5nZXRTeW5jZWRDaGFydHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmN0eC50b29sYmFyLnRvZ2dsZU90aGVyQ29udHJvbHMoKSx0LncuZ2xvYmFscy5wYW5FbmFibGVkPSF0LncuZ2xvYmFscy5wYW5FbmFibGVkLHQuY3R4LnRvb2xiYXIuZWxQYW4uY2xhc3NMaXN0LmNvbnRhaW5zKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk/dC5jdHgudG9vbGJhci5lbFBhbi5jbGFzc0xpc3QucmVtb3ZlKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyk6dC5jdHgudG9vbGJhci5lbFBhbi5jbGFzc0xpc3QuYWRkKHQuY3R4LnRvb2xiYXIuc2VsZWN0ZWRDbGFzcyl9KSl9fSx7a2V5OlwidG9nZ2xlT3RoZXJDb250cm9sc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMudztlLmdsb2JhbHMucGFuRW5hYmxlZD0hMSxlLmdsb2JhbHMuem9vbUVuYWJsZWQ9ITEsZS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQ9ITEsdGhpcy5nZXRUb29sYmFySWNvbnNSZWZlcmVuY2UoKSxbdGhpcy5lbFBhbix0aGlzLmVsU2VsZWN0aW9uLHRoaXMuZWxab29tXS5mb3JFYWNoKChmdW5jdGlvbihlKXtlJiZlLmNsYXNzTGlzdC5yZW1vdmUodC5zZWxlY3RlZENsYXNzKX0pKX19LHtrZXk6XCJoYW5kbGVab29tSW5cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudzt0Lmdsb2JhbHMuaXNSYW5nZUJhciYmKHRoaXMubWluWD10Lmdsb2JhbHMubWluWSx0aGlzLm1heFg9dC5nbG9iYWxzLm1heFkpO3ZhciBlPSh0aGlzLm1pblgrdGhpcy5tYXhYKS8yLGk9KHRoaXMubWluWCtlKS8yLGE9KHRoaXMubWF4WCtlKS8yLHM9dGhpcy5fZ2V0TmV3TWluWE1heFgoaSxhKTt0Lmdsb2JhbHMuZGlzYWJsZVpvb21Jbnx8dGhpcy56b29tVXBkYXRlT3B0aW9ucyhzLm1pblgscy5tYXhYKX19LHtrZXk6XCJoYW5kbGVab29tT3V0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodC5nbG9iYWxzLmlzUmFuZ2VCYXImJih0aGlzLm1pblg9dC5nbG9iYWxzLm1pblksdGhpcy5tYXhYPXQuZ2xvYmFscy5tYXhZKSwhKFwiZGF0ZXRpbWVcIj09PXQuY29uZmlnLnhheGlzLnR5cGUmJm5ldyBEYXRlKHRoaXMubWluWCkuZ2V0VVRDRnVsbFllYXIoKTwxZTMpKXt2YXIgZT0odGhpcy5taW5YK3RoaXMubWF4WCkvMixpPXRoaXMubWluWC0oZS10aGlzLm1pblgpLGE9dGhpcy5tYXhYLShlLXRoaXMubWF4WCkscz10aGlzLl9nZXROZXdNaW5YTWF4WChpLGEpO3QuZ2xvYmFscy5kaXNhYmxlWm9vbU91dHx8dGhpcy56b29tVXBkYXRlT3B0aW9ucyhzLm1pblgscy5tYXhYKX19fSx7a2V5OlwiX2dldE5ld01pblhNYXhYXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYztyZXR1cm57bWluWDppP01hdGguZmxvb3IodCk6dCxtYXhYOmk/TWF0aC5mbG9vcihlKTplfX19LHtrZXk6XCJ6b29tVXBkYXRlT3B0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O2lmKHZvaWQgMCE9PXR8fHZvaWQgMCE9PWUpe2lmKCEoaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYodDwxJiYodD0xLGU9aS5nbG9iYWxzLmRhdGFQb2ludHMpLGUtdDwyKSkpe3ZhciBhPXttaW46dCxtYXg6ZX0scz10aGlzLmdldEJlZm9yZVpvb21SYW5nZShhKTtzJiYoYT1zLnhheGlzKTt2YXIgcj17eGF4aXM6YX0sbz14LmNsb25lKGkuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnlheGlzKTtpZihpLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzKW89bmV3IF8odGhpcy5jdHgpLmF1dG9TY2FsZVkodGhpcy5jdHgsbyx7eGF4aXM6YX0pO2kuY29uZmlnLmNoYXJ0Lmdyb3VwfHwoci55YXhpcz1vKSx0aGlzLncuZ2xvYmFscy56b29tZWQ9ITAsdGhpcy5jdHgudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyhyLCExLHRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQpLHRoaXMuem9vbUNhbGxiYWNrKGEsbyl9fWVsc2UgdGhpcy5oYW5kbGVab29tUmVzZXQoKX19LHtrZXk6XCJ6b29tQ2FsbGJhY2tcIix2YWx1ZTpmdW5jdGlvbih0LGUpe1wiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuZXYuem9vbWVkJiZ0aGlzLmV2Lnpvb21lZCh0aGlzLmN0eCx7eGF4aXM6dCx5YXhpczplfSl9fSx7a2V5OlwiZ2V0QmVmb3JlWm9vbVJhbmdlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1udWxsO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuZXYuYmVmb3JlWm9vbSYmKGk9dGhpcy5ldi5iZWZvcmVab29tKHRoaXMse3hheGlzOnQseWF4aXM6ZX0pKSxpfX0se2tleTpcInRvZ2dsZU1lbnVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5lbE1lbnUuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1tZW51LW9wZW5cIik/dC5lbE1lbnUuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtbWVudS1vcGVuXCIpOnQuZWxNZW51LmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLW1lbnUtb3BlblwiKX0pLDApfX0se2tleTpcImhhbmRsZURvd25sb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IEcodGhpcy5jdHgpO3N3aXRjaCh0KXtjYXNlXCJzdmdcIjppLmV4cG9ydFRvU1ZHKHRoaXMuY3R4KTticmVhaztjYXNlXCJwbmdcIjppLmV4cG9ydFRvUG5nKHRoaXMuY3R4KTticmVhaztjYXNlXCJjc3ZcIjppLmV4cG9ydFRvQ1NWKHtzZXJpZXM6ZS5jb25maWcuc2VyaWVzLGNvbHVtbkRlbGltaXRlcjplLmNvbmZpZy5jaGFydC50b29sYmFyLmV4cG9ydC5jc3YuY29sdW1uRGVsaW1pdGVyfSl9fX0se2tleTpcImhhbmRsZVpvb21SZXNldFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LmdldFN5bmNlZENoYXJ0cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQudztpZihlLmdsb2JhbHMubGFzdFhBeGlzLm1pbj1lLmdsb2JhbHMuaW5pdGlhbENvbmZpZy54YXhpcy5taW4sZS5nbG9iYWxzLmxhc3RYQXhpcy5tYXg9ZS5nbG9iYWxzLmluaXRpYWxDb25maWcueGF4aXMubWF4LHQudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVSZXNldFpvb20pe3ZhciBpPWUuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVSZXNldFpvb20odCxlKTtpJiZ0LnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoaSl9XCJmdW5jdGlvblwiPT10eXBlb2YgZS5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCYmdC5jdHgudG9vbGJhci56b29tQ2FsbGJhY2soe21pbjplLmNvbmZpZy54YXhpcy5taW4sbWF4OmUuY29uZmlnLnhheGlzLm1heH0pLGUuZ2xvYmFscy56b29tZWQ9ITE7dmFyIGE9dC5jdHguc2VyaWVzLmVtcHR5Q29sbGFwc2VkU2VyaWVzKHguY2xvbmUoZS5nbG9iYWxzLmluaXRpYWxTZXJpZXMpKTt0LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyhhLGUuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5lbmFibGVkKX0pKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVsWm9vbT1udWxsLHRoaXMuZWxab29tSW49bnVsbCx0aGlzLmVsWm9vbU91dD1udWxsLHRoaXMuZWxQYW49bnVsbCx0aGlzLmVsU2VsZWN0aW9uPW51bGwsdGhpcy5lbFpvb21SZXNldD1udWxsLHRoaXMuZWxNZW51SWNvbj1udWxsfX1dKSx0fSgpLGN0PWZ1bmN0aW9uKHQpe24oaSxodCk7dmFyIGU9ZChpKTtmdW5jdGlvbiBpKHQpe3ZhciBzO3JldHVybiBhKHRoaXMsaSksKHM9ZS5jYWxsKHRoaXMsdCkpLmN0eD10LHMudz10Lncscy5kcmFnZ2VkPSExLHMuZ3JhcGhpY3M9bmV3IG0ocy5jdHgpLHMuZXZlbnRMaXN0PVtcIm1vdXNlZG93blwiLFwibW91c2VsZWF2ZVwiLFwibW91c2Vtb3ZlXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcIm1vdXNldXBcIixcInRvdWNoZW5kXCJdLHMuY2xpZW50WD0wLHMuY2xpZW50WT0wLHMuc3RhcnRYPTAscy5lbmRYPTAscy5kcmFnWD0wLHMuc3RhcnRZPTAscy5lbmRZPTAscy5kcmFnWT0wLHMubW92ZURpcmVjdGlvbj1cIm5vbmVcIixzfXJldHVybiByKGksW3trZXk6XCJpbml0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQueHlSYXRpb3MsYT10aGlzLncscz10aGlzO3RoaXMueHlSYXRpb3M9aSx0aGlzLnpvb21SZWN0PXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoMCwwLDAsMCksdGhpcy5zZWxlY3Rpb25SZWN0PXRoaXMuZ3JhcGhpY3MuZHJhd1JlY3QoMCwwLDAsMCksdGhpcy5ncmlkUmVjdD1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZ3JpZFwiKSx0aGlzLnpvb21SZWN0Lm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtem9vbS1yZWN0XCIpLHRoaXMuc2VsZWN0aW9uUmVjdC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0XCIpLGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHRoaXMuem9vbVJlY3QpLGEuZ2xvYmFscy5kb20uZWxHcmFwaGljYWwuYWRkKHRoaXMuc2VsZWN0aW9uUmVjdCksXCJ4XCI9PT1hLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24udHlwZT90aGlzLnNsRHJhZ2dhYmxlUmVjdD10aGlzLnNlbGVjdGlvblJlY3QuZHJhZ2dhYmxlKHttaW5YOjAsbWluWTowLG1heFg6YS5nbG9iYWxzLmdyaWRXaWR0aCxtYXhZOmEuZ2xvYmFscy5ncmlkSGVpZ2h0fSkub24oXCJkcmFnbW92ZVwiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwiZHJhZ2dpbmdcIikpOlwieVwiPT09YS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGU/dGhpcy5zbERyYWdnYWJsZVJlY3Q9dGhpcy5zZWxlY3Rpb25SZWN0LmRyYWdnYWJsZSh7bWluWDowLG1heFg6YS5nbG9iYWxzLmdyaWRXaWR0aH0pLm9uKFwiZHJhZ21vdmVcIix0aGlzLnNlbGVjdGlvbkRyYWdnaW5nLmJpbmQodGhpcyxcImRyYWdnaW5nXCIpKTp0aGlzLnNsRHJhZ2dhYmxlUmVjdD10aGlzLnNlbGVjdGlvblJlY3QuZHJhZ2dhYmxlKCkub24oXCJkcmFnbW92ZVwiLHRoaXMuc2VsZWN0aW9uRHJhZ2dpbmcuYmluZCh0aGlzLFwiZHJhZ2dpbmdcIikpLHRoaXMucHJlc2VsZWN0ZWRTZWxlY3Rpb24oKSx0aGlzLmhvdmVyQXJlYT1hLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiXCIuY29uY2F0KGEuZ2xvYmFscy5jaGFydENsYXNzLFwiIC5hcGV4Y2hhcnRzLXN2Z1wiKSksdGhpcy5ob3ZlckFyZWEuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtem9vbWFibGVcIiksdGhpcy5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5ob3ZlckFyZWEuYWRkRXZlbnRMaXN0ZW5lcih0LHMuc3ZnTW91c2VFdmVudHMuYmluZChzLGkpLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNsRHJhZ2dhYmxlUmVjdCYmKHRoaXMuc2xEcmFnZ2FibGVSZWN0LmRyYWdnYWJsZSghMSksdGhpcy5zbERyYWdnYWJsZVJlY3Qub2ZmKCksdGhpcy5zZWxlY3Rpb25SZWN0Lm9mZigpKSx0aGlzLnNlbGVjdGlvblJlY3Q9bnVsbCx0aGlzLnpvb21SZWN0PW51bGwsdGhpcy5ncmlkUmVjdD1udWxsfX0se2tleTpcInN2Z01vdXNlRXZlbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLHM9dGhpcy5jdHgudG9vbGJhcixyPWkuZ2xvYmFscy56b29tRW5hYmxlZD9pLmNvbmZpZy5jaGFydC56b29tLnR5cGU6aS5jb25maWcuY2hhcnQuc2VsZWN0aW9uLnR5cGUsbz1pLmNvbmZpZy5jaGFydC50b29sYmFyLmF1dG9TZWxlY3RlZDtpZihlLnNoaWZ0S2V5Pyh0aGlzLnNoaWZ0V2FzUHJlc3NlZD0hMCxzLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcihcInBhblwiPT09bz9cInpvb21cIjpcInBhblwiKSk6dGhpcy5zaGlmdFdhc1ByZXNzZWQmJihzLmVuYWJsZVpvb21QYW5Gcm9tVG9vbGJhcihvKSx0aGlzLnNoaWZ0V2FzUHJlc3NlZD0hMSksZS50YXJnZXQpe3ZhciBuLGw9ZS50YXJnZXQuY2xhc3NMaXN0O2lmKGUudGFyZ2V0LnBhcmVudE5vZGUmJm51bGwhPT1lLnRhcmdldC5wYXJlbnROb2RlJiYobj1lLnRhcmdldC5wYXJlbnROb2RlLmNsYXNzTGlzdCksIShsLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdFwiKXx8bC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLW1hcmtlclwiKXx8bC5jb250YWlucyhcImFwZXhjaGFydHMtbGVnZW5kLXRleHRcIil8fG4mJm4uY29udGFpbnMoXCJhcGV4Y2hhcnRzLXRvb2xiYXJcIikpKXtpZihhLmNsaWVudFg9XCJ0b3VjaG1vdmVcIj09PWUudHlwZXx8XCJ0b3VjaHN0YXJ0XCI9PT1lLnR5cGU/ZS50b3VjaGVzWzBdLmNsaWVudFg6XCJ0b3VjaGVuZFwiPT09ZS50eXBlP2UuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WDplLmNsaWVudFgsYS5jbGllbnRZPVwidG91Y2htb3ZlXCI9PT1lLnR5cGV8fFwidG91Y2hzdGFydFwiPT09ZS50eXBlP2UudG91Y2hlc1swXS5jbGllbnRZOlwidG91Y2hlbmRcIj09PWUudHlwZT9lLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk6ZS5jbGllbnRZLFwibW91c2Vkb3duXCI9PT1lLnR5cGUmJjE9PT1lLndoaWNoKXt2YXIgaD1hLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Euc3RhcnRYPWEuY2xpZW50WC1oLmxlZnQsYS5zdGFydFk9YS5jbGllbnRZLWgudG9wLGEuZHJhZ2dlZD0hMSxhLncuZ2xvYmFscy5tb3VzZWRvd249ITB9aWYoKFwibW91c2Vtb3ZlXCI9PT1lLnR5cGUmJjE9PT1lLndoaWNofHxcInRvdWNobW92ZVwiPT09ZS50eXBlKSYmKGEuZHJhZ2dlZD0hMCxpLmdsb2JhbHMucGFuRW5hYmxlZD8oaS5nbG9iYWxzLnNlbGVjdGlvbj1udWxsLGEudy5nbG9iYWxzLm1vdXNlZG93biYmYS5wYW5EcmFnZ2luZyh7Y29udGV4dDphLHpvb210eXBlOnIseHlSYXRpb3M6dH0pKTooYS53Lmdsb2JhbHMubW91c2Vkb3duJiZpLmdsb2JhbHMuem9vbUVuYWJsZWR8fGEudy5nbG9iYWxzLm1vdXNlZG93biYmaS5nbG9iYWxzLnNlbGVjdGlvbkVuYWJsZWQpJiYoYS5zZWxlY3Rpb249YS5zZWxlY3Rpb25EcmF3aW5nKHtjb250ZXh0OmEsem9vbXR5cGU6cn0pKSksXCJtb3VzZXVwXCI9PT1lLnR5cGV8fFwidG91Y2hlbmRcIj09PWUudHlwZXx8XCJtb3VzZWxlYXZlXCI9PT1lLnR5cGUpe3ZhciBjPWEuZ3JpZFJlY3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YS53Lmdsb2JhbHMubW91c2Vkb3duJiYoYS5lbmRYPWEuY2xpZW50WC1jLmxlZnQsYS5lbmRZPWEuY2xpZW50WS1jLnRvcCxhLmRyYWdYPU1hdGguYWJzKGEuZW5kWC1hLnN0YXJ0WCksYS5kcmFnWT1NYXRoLmFicyhhLmVuZFktYS5zdGFydFkpLChpLmdsb2JhbHMuem9vbUVuYWJsZWR8fGkuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKSYmYS5zZWxlY3Rpb25EcmF3bih7Y29udGV4dDphLHpvb210eXBlOnJ9KSxpLmdsb2JhbHMucGFuRW5hYmxlZCYmaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiZhLmRlbGF5ZWRQYW5TY3JvbGxlZCgpKSxpLmdsb2JhbHMuem9vbUVuYWJsZWQmJmEuaGlkZVNlbGVjdGlvblJlY3QodGhpcy5zZWxlY3Rpb25SZWN0KSxhLmRyYWdnZWQ9ITEsYS53Lmdsb2JhbHMubW91c2Vkb3duPSExfXRoaXMubWFrZVNlbGVjdGlvblJlY3REcmFnZ2FibGUoKX19fX0se2tleTpcIm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnc7aWYodGhpcy5zZWxlY3Rpb25SZWN0KXt2YXIgZT10aGlzLnNlbGVjdGlvblJlY3Qubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlLndpZHRoPjAmJmUuaGVpZ2h0PjAmJnRoaXMuc2xEcmFnZ2FibGVSZWN0LnNlbGVjdGl6ZSh7cG9pbnRzOlwibCwgclwiLHBvaW50U2l6ZTo4LHBvaW50VHlwZTpcInJlY3RcIn0pLnJlc2l6ZSh7Y29uc3RyYWludDp7bWluWDowLG1pblk6MCxtYXhYOnQuZ2xvYmFscy5ncmlkV2lkdGgsbWF4WTp0Lmdsb2JhbHMuZ3JpZEhlaWdodH19KS5vbihcInJlc2l6aW5nXCIsdGhpcy5zZWxlY3Rpb25EcmFnZ2luZy5iaW5kKHRoaXMsXCJyZXNpemluZ1wiKSl9fX0se2tleTpcInByZXNlbGVjdGVkU2VsZWN0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnh5UmF0aW9zO2lmKCF0Lmdsb2JhbHMuem9vbUVuYWJsZWQpaWYodm9pZCAwIT09dC5nbG9iYWxzLnNlbGVjdGlvbiYmbnVsbCE9PXQuZ2xvYmFscy5zZWxlY3Rpb24pdGhpcy5kcmF3U2VsZWN0aW9uUmVjdCh0Lmdsb2JhbHMuc2VsZWN0aW9uKTtlbHNlIGlmKHZvaWQgMCE9PXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5taW4mJnZvaWQgMCE9PXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgpe3ZhciBpPSh0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluLXQuZ2xvYmFscy5taW5YKS9lLnhSYXRpbyxhPXt4OmkseTowLHdpZHRoOnQuZ2xvYmFscy5ncmlkV2lkdGgtKHQuZ2xvYmFscy5tYXhYLXQuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi54YXhpcy5tYXgpL2UueFJhdGlvLWksaGVpZ2h0OnQuZ2xvYmFscy5ncmlkSGVpZ2h0LHRyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAsc2VsZWN0aW9uRW5hYmxlZDohMH07dGhpcy5kcmF3U2VsZWN0aW9uUmVjdChhKSx0aGlzLm1ha2VTZWxlY3Rpb25SZWN0RHJhZ2dhYmxlKCksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbiYmdC5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbih0aGlzLmN0eCx7eGF4aXM6e21pbjp0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWluLG1heDp0LmNvbmZpZy5jaGFydC5zZWxlY3Rpb24ueGF4aXMubWF4fSx5YXhpczp7fX0pfX19LHtrZXk6XCJkcmF3U2VsZWN0aW9uUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQueSxhPXQud2lkdGgscz10LmhlaWdodCxyPXQudHJhbnNsYXRlWCxvPXZvaWQgMD09PXI/MDpyLG49dC50cmFuc2xhdGVZLGw9dm9pZCAwPT09bj8wOm4saD10aGlzLncsYz10aGlzLnpvb21SZWN0LGQ9dGhpcy5zZWxlY3Rpb25SZWN0O2lmKHRoaXMuZHJhZ2dlZHx8bnVsbCE9PWguZ2xvYmFscy5zZWxlY3Rpb24pe3ZhciBnPXt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrbytcIiwgXCIrbCtcIilcIn07aC5nbG9iYWxzLnpvb21FbmFibGVkJiZ0aGlzLmRyYWdnZWQmJihhPDAmJihhPTEpLGMuYXR0cih7eDplLHk6aSx3aWR0aDphLGhlaWdodDpzLGZpbGw6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLmZpbGwuY29sb3IsXCJmaWxsLW9wYWNpdHlcIjpoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuZmlsbC5vcGFjaXR5LHN0cm9rZTpoLmNvbmZpZy5jaGFydC56b29tLnpvb21lZEFyZWEuc3Ryb2tlLmNvbG9yLFwic3Ryb2tlLXdpZHRoXCI6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS53aWR0aCxcInN0cm9rZS1vcGFjaXR5XCI6aC5jb25maWcuY2hhcnQuem9vbS56b29tZWRBcmVhLnN0cm9rZS5vcGFjaXR5fSksbS5zZXRBdHRycyhjLm5vZGUsZykpLGguZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiYoZC5hdHRyKHt4OmUseTppLHdpZHRoOmE+MD9hOjAsaGVpZ2h0OnM+MD9zOjAsZmlsbDpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uZmlsbC5jb2xvcixcImZpbGwtb3BhY2l0eVwiOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5maWxsLm9wYWNpdHksc3Ryb2tlOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2UuY29sb3IsXCJzdHJva2Utd2lkdGhcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLndpZHRoLFwic3Ryb2tlLWRhc2hhcnJheVwiOmguY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5zdHJva2UuZGFzaEFycmF5LFwic3Ryb2tlLW9wYWNpdHlcIjpoLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24uc3Ryb2tlLm9wYWNpdHl9KSxtLnNldEF0dHJzKGQubm9kZSxnKSl9fX0se2tleTpcImhpZGVTZWxlY3Rpb25SZWN0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dCYmdC5hdHRyKHt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9KX19LHtrZXk6XCJzZWxlY3Rpb25EcmF3aW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250ZXh0LGk9dC56b29tdHlwZSxhPXRoaXMudyxzPWUscj10aGlzLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89cy5zdGFydFgtMSxuPXMuc3RhcnRZLGw9ITEsaD0hMSxjPXMuY2xpZW50WC1yLmxlZnQtbyxkPXMuY2xpZW50WS1yLnRvcC1uLGc9e307cmV0dXJuIE1hdGguYWJzKGMrbyk+YS5nbG9iYWxzLmdyaWRXaWR0aD9jPWEuZ2xvYmFscy5ncmlkV2lkdGgtbzpzLmNsaWVudFgtci5sZWZ0PDAmJihjPW8pLG8+cy5jbGllbnRYLXIubGVmdCYmKGw9ITAsYz1NYXRoLmFicyhjKSksbj5zLmNsaWVudFktci50b3AmJihoPSEwLGQ9TWF0aC5hYnMoZCkpLGc9XCJ4XCI9PT1pP3t4Omw/by1jOm8seTowLHdpZHRoOmMsaGVpZ2h0OmEuZ2xvYmFscy5ncmlkSGVpZ2h0fTpcInlcIj09PWk/e3g6MCx5Omg/bi1kOm4sd2lkdGg6YS5nbG9iYWxzLmdyaWRXaWR0aCxoZWlnaHQ6ZH06e3g6bD9vLWM6byx5Omg/bi1kOm4sd2lkdGg6YyxoZWlnaHQ6ZH0scy5kcmF3U2VsZWN0aW9uUmVjdChnKSxzLnNlbGVjdGlvbkRyYWdnaW5nKFwicmVzaXppbmdcIiksZ319LHtrZXk6XCJzZWxlY3Rpb25EcmFnZ2luZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPXRoaXMudyxzPXRoaXMueHlSYXRpb3Mscj10aGlzLnNlbGVjdGlvblJlY3Qsbz0wO1wicmVzaXppbmdcIj09PXQmJihvPTMwKTt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdChyLm5vZGUuZ2V0QXR0cmlidXRlKHQpKX0sbD17eDpuKFwieFwiKSx5Om4oXCJ5XCIpLHdpZHRoOm4oXCJ3aWR0aFwiKSxoZWlnaHQ6bihcImhlaWdodFwiKX07YS5nbG9iYWxzLnNlbGVjdGlvbj1sLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24mJmEuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkJiYoY2xlYXJUaW1lb3V0KHRoaXMudy5nbG9iYWxzLnNlbGVjdGlvblJlc2l6ZVRpbWVyKSx0aGlzLncuZ2xvYmFscy5zZWxlY3Rpb25SZXNpemVUaW1lcj13aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXt2YXIgdD1pLmdyaWRSZWN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9ci5ub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89e3hheGlzOnttaW46YS5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbisoZS5sZWZ0LXQubGVmdCkqcy54UmF0aW8sbWF4OmEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rKGUucmlnaHQtdC5sZWZ0KSpzLnhSYXRpb30seWF4aXM6e21pbjphLmdsb2JhbHMueUF4aXNTY2FsZVswXS5uaWNlTWluKyh0LmJvdHRvbS1lLmJvdHRvbSkqcy55UmF0aW9bMF0sbWF4OmEuZ2xvYmFscy55QXhpc1NjYWxlWzBdLm5pY2VNYXgtKGUudG9wLXQudG9wKSpzLnlSYXRpb1swXX19O2EuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24oaS5jdHgsbyksYS5jb25maWcuY2hhcnQuYnJ1c2guZW5hYmxlZCYmdm9pZCAwIT09YS5jb25maWcuY2hhcnQuZXZlbnRzLmJydXNoU2Nyb2xsZWQmJmEuY29uZmlnLmNoYXJ0LmV2ZW50cy5icnVzaFNjcm9sbGVkKGkuY3R4LG8pfSksbykpfX0se2tleTpcInNlbGVjdGlvbkRyYXduXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250ZXh0LGk9dC56b29tdHlwZSxhPXRoaXMudyxzPWUscj10aGlzLnh5UmF0aW9zLG89dGhpcy5jdHgudG9vbGJhcjtpZihzLnN0YXJ0WD5zLmVuZFgpe3ZhciBuPXMuc3RhcnRYO3Muc3RhcnRYPXMuZW5kWCxzLmVuZFg9bn1pZihzLnN0YXJ0WT5zLmVuZFkpe3ZhciBsPXMuc3RhcnRZO3Muc3RhcnRZPXMuZW5kWSxzLmVuZFk9bH12YXIgaD12b2lkIDAsYz12b2lkIDA7YS5nbG9iYWxzLmlzUmFuZ2VCYXI/KGg9YS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbitzLnN0YXJ0WCpyLmludmVydGVkWVJhdGlvLGM9YS5nbG9iYWxzLnlBeGlzU2NhbGVbMF0ubmljZU1pbitzLmVuZFgqci5pbnZlcnRlZFlSYXRpbyk6KGg9YS5nbG9iYWxzLnhBeGlzU2NhbGUubmljZU1pbitzLnN0YXJ0WCpyLnhSYXRpbyxjPWEuZ2xvYmFscy54QXhpc1NjYWxlLm5pY2VNaW4rcy5lbmRYKnIueFJhdGlvKTt2YXIgZD1bXSxnPVtdO2lmKGEuY29uZmlnLnlheGlzLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7ZC5wdXNoKGEuZ2xvYmFscy55QXhpc1NjYWxlW2VdLm5pY2VNYXgtci55UmF0aW9bZV0qcy5zdGFydFkpLGcucHVzaChhLmdsb2JhbHMueUF4aXNTY2FsZVtlXS5uaWNlTWF4LXIueVJhdGlvW2VdKnMuZW5kWSl9KSkscy5kcmFnZ2VkJiYocy5kcmFnWD4xMHx8cy5kcmFnWT4xMCkmJmghPT1jKWlmKGEuZ2xvYmFscy56b29tRW5hYmxlZCl7dmFyIHU9eC5jbG9uZShhLmdsb2JhbHMuaW5pdGlhbENvbmZpZy55YXhpcykscD14LmNsb25lKGEuZ2xvYmFscy5pbml0aWFsQ29uZmlnLnhheGlzKTtpZihhLmdsb2JhbHMuem9vbWVkPSEwLGEuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGg9TWF0aC5mbG9vcihoKSxjPU1hdGguZmxvb3IoYyksaDwxJiYoaD0xLGM9YS5nbG9iYWxzLmRhdGFQb2ludHMpLGMtaDwyJiYoYz1oKzEpKSxcInh5XCIhPT1pJiZcInhcIiE9PWl8fChwPXttaW46aCxtYXg6Y30pLFwieHlcIiE9PWkmJlwieVwiIT09aXx8dS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3VbZV0ubWluPWdbZV0sdVtlXS5tYXg9ZFtlXX0pKSxhLmNvbmZpZy5jaGFydC56b29tLmF1dG9TY2FsZVlheGlzKXt2YXIgZj1uZXcgXyhzLmN0eCk7dT1mLmF1dG9TY2FsZVkocy5jdHgsdSx7eGF4aXM6cH0pfWlmKG8pe3ZhciBiPW8uZ2V0QmVmb3JlWm9vbVJhbmdlKHAsdSk7YiYmKHA9Yi54YXhpcz9iLnhheGlzOnAsdT1iLnlheGlzP2IueWF4aXM6dSl9dmFyIHY9e3hheGlzOnB9O2EuY29uZmlnLmNoYXJ0Lmdyb3VwfHwodi55YXhpcz11KSxzLmN0eC51cGRhdGVIZWxwZXJzLl91cGRhdGVPcHRpb25zKHYsITEscy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnpvb21lZCYmby56b29tQ2FsbGJhY2socCx1KX1lbHNlIGlmKGEuZ2xvYmFscy5zZWxlY3Rpb25FbmFibGVkKXt2YXIgbSx5PW51bGw7bT17bWluOmgsbWF4OmN9LFwieHlcIiE9PWkmJlwieVwiIT09aXx8KHk9eC5jbG9uZShhLmNvbmZpZy55YXhpcykpLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7eVtlXS5taW49Z1tlXSx5W2VdLm1heD1kW2VdfSkpLGEuZ2xvYmFscy5zZWxlY3Rpb249cy5zZWxlY3Rpb24sXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbiYmYS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbihzLmN0eCx7eGF4aXM6bSx5YXhpczp5fSl9fX0se2tleTpcInBhbkRyYWdnaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb250ZXh0LGk9dGhpcy53LGE9ZTtpZih2b2lkIDAhPT1pLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLngpe3ZhciBzPWkuZ2xvYmFscy5sYXN0Q2xpZW50UG9zaXRpb24ueC1hLmNsaWVudFgscj1pLmdsb2JhbHMubGFzdENsaWVudFBvc2l0aW9uLnktYS5jbGllbnRZO01hdGguYWJzKHMpPk1hdGguYWJzKHIpJiZzPjA/dGhpcy5tb3ZlRGlyZWN0aW9uPVwibGVmdFwiOk1hdGguYWJzKHMpPk1hdGguYWJzKHIpJiZzPDA/dGhpcy5tb3ZlRGlyZWN0aW9uPVwicmlnaHRcIjpNYXRoLmFicyhyKT5NYXRoLmFicyhzKSYmcj4wP3RoaXMubW92ZURpcmVjdGlvbj1cInVwXCI6TWF0aC5hYnMocik+TWF0aC5hYnMocykmJnI8MCYmKHRoaXMubW92ZURpcmVjdGlvbj1cImRvd25cIil9aS5nbG9iYWxzLmxhc3RDbGllbnRQb3NpdGlvbj17eDphLmNsaWVudFgseTphLmNsaWVudFl9O3ZhciBvPWkuZ2xvYmFscy5pc1JhbmdlQmFyP2kuZ2xvYmFscy5taW5ZOmkuZ2xvYmFscy5taW5YLG49aS5nbG9iYWxzLmlzUmFuZ2VCYXI/aS5nbG9iYWxzLm1heFk6aS5nbG9iYWxzLm1heFg7aS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHxhLnBhblNjcm9sbGVkKG8sbil9fSx7a2V5OlwiZGVsYXllZFBhblNjcm9sbGVkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10Lmdsb2JhbHMubWluWCxpPXQuZ2xvYmFscy5tYXhYLGE9KHQuZ2xvYmFscy5tYXhYLXQuZ2xvYmFscy5taW5YKS8yO1wibGVmdFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uPyhlPXQuZ2xvYmFscy5taW5YK2EsaT10Lmdsb2JhbHMubWF4WCthKTpcInJpZ2h0XCI9PT10aGlzLm1vdmVEaXJlY3Rpb24mJihlPXQuZ2xvYmFscy5taW5YLWEsaT10Lmdsb2JhbHMubWF4WC1hKSxlPU1hdGguZmxvb3IoZSksaT1NYXRoLmZsb29yKGkpLHRoaXMudXBkYXRlU2Nyb2xsZWRDaGFydCh7eGF4aXM6e21pbjplLG1heDppfX0sZSxpKX19LHtrZXk6XCJwYW5TY3JvbGxlZFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy54eVJhdGlvcyxzPXguY2xvbmUoaS5nbG9iYWxzLmluaXRpYWxDb25maWcueWF4aXMpLHI9YS54UmF0aW8sbz1pLmdsb2JhbHMubWluWCxuPWkuZ2xvYmFscy5tYXhYO2kuZ2xvYmFscy5pc1JhbmdlQmFyJiYocj1hLmludmVydGVkWVJhdGlvLG89aS5nbG9iYWxzLm1pblksbj1pLmdsb2JhbHMubWF4WSksXCJsZWZ0XCI9PT10aGlzLm1vdmVEaXJlY3Rpb24/KHQ9bytpLmdsb2JhbHMuZ3JpZFdpZHRoLzE1KnIsZT1uK2kuZ2xvYmFscy5ncmlkV2lkdGgvMTUqcik6XCJyaWdodFwiPT09dGhpcy5tb3ZlRGlyZWN0aW9uJiYodD1vLWkuZ2xvYmFscy5ncmlkV2lkdGgvMTUqcixlPW4taS5nbG9iYWxzLmdyaWRXaWR0aC8xNSpyKSxpLmdsb2JhbHMuaXNSYW5nZUJhcnx8KHQ8aS5nbG9iYWxzLmluaXRpYWxNaW5YfHxlPmkuZ2xvYmFscy5pbml0aWFsTWF4WCkmJih0PW8sZT1uKTt2YXIgbD17bWluOnQsbWF4OmV9O2kuY29uZmlnLmNoYXJ0Lnpvb20uYXV0b1NjYWxlWWF4aXMmJihzPW5ldyBfKHRoaXMuY3R4KS5hdXRvU2NhbGVZKHRoaXMuY3R4LHMse3hheGlzOmx9KSk7dmFyIGg9e3hheGlzOnttaW46dCxtYXg6ZX19O2kuY29uZmlnLmNoYXJ0Lmdyb3VwfHwoaC55YXhpcz1zKSx0aGlzLnVwZGF0ZVNjcm9sbGVkQ2hhcnQoaCx0LGUpfX0se2tleTpcInVwZGF0ZVNjcm9sbGVkQ2hhcnRcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O3RoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnModCwhMSwhMSksXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkJiZhLmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQodGhpcy5jdHgse3hheGlzOnttaW46ZSxtYXg6aX19KX19XSksaX0oKSxkdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy50dEN0eD1lLHRoaXMuY3R4PWUuY3R4fXJldHVybiByKHQsW3trZXk6XCJnZXROZWFyZXN0VmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5ob3ZlckFyZWEsaT10LmVsR3JpZCxhPXQuY2xpZW50WCxzPXQuY2xpZW50WSxyPXRoaXMudyxvPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1vLndpZHRoLGw9by5oZWlnaHQsaD1uLyhyLmdsb2JhbHMuZGF0YVBvaW50cy0xKSxjPWwvci5nbG9iYWxzLmRhdGFQb2ludHMsZD10aGlzLmhhc0JhcnMoKTshci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhZHx8ci5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljfHwoaD1uL3IuZ2xvYmFscy5kYXRhUG9pbnRzKTt2YXIgZz1hLW8ubGVmdC1yLmdsb2JhbHMuYmFyUGFkRm9yTnVtZXJpY0F4aXMsdT1zLW8udG9wO2c8MHx8dTwwfHxnPm58fHU+bD8oZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctem9vbVwiKSxlLmNsYXNzTGlzdC5yZW1vdmUoXCJob3ZlcmluZy1wYW5cIikpOnIuZ2xvYmFscy56b29tRW5hYmxlZD8oZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctcGFuXCIpLGUuY2xhc3NMaXN0LmFkZChcImhvdmVyaW5nLXpvb21cIikpOnIuZ2xvYmFscy5wYW5FbmFibGVkJiYoZS5jbGFzc0xpc3QucmVtb3ZlKFwiaG92ZXJpbmctem9vbVwiKSxlLmNsYXNzTGlzdC5hZGQoXCJob3ZlcmluZy1wYW5cIikpO3ZhciBwPU1hdGgucm91bmQoZy9oKSxmPU1hdGguZmxvb3IodS9jKTtkJiYhci5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljJiYocD1NYXRoLmNlaWwoZy9oKSxwLT0xKTt2YXIgYj1udWxsLHY9bnVsbCxtPXIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4geC5pc051bWJlcih0KX0pKX0pKSx5PXIuZ2xvYmFscy5zZXJpZXNZdmFsdWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4geC5pc051bWJlcih0KX0pKX0pKTtpZihyLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIHc9dGhpcy50dEN0eC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxrPWcqKHcud2lkdGgvbiksQT11Kih3LmhlaWdodC9sKTtiPSh2PXRoaXMuY2xvc2VzdEluTXVsdGlBcnJheShrLEEsbSx5KSkuaW5kZXgscD12LmosbnVsbCE9PWImJihtPXIuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW2JdLHA9KHY9dGhpcy5jbG9zZXN0SW5BcnJheShrLG0pKS5pbmRleCl9cmV0dXJuIHIuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PW51bGw9PT1iPy0xOmIsKCFwfHxwPDEpJiYocD0wKSxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP3IuZ2xvYmFscy5jYXB0dXJlZERhdGFQb2ludEluZGV4PWY6ci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9cCx7Y2FwdHVyZWRTZXJpZXM6YixqOnIuZ2xvYmFscy5pc0Jhckhvcml6b250YWw/ZjpwLGhvdmVyWDpnLGhvdmVyWTp1fX19LHtrZXk6XCJjbG9zZXN0SW5NdWx0aUFycmF5XCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9MCxvPW51bGwsbj0tMTtzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xP3I9dGhpcy5nZXRGaXJzdEFjdGl2ZVhBcnJheShpKTpvPTA7dmFyIGw9aVtyXVswXSxoPU1hdGguYWJzKHQtbCk7aWYoaS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dmFyIGE9TWF0aC5hYnModC1lKTthPD1oJiYoaD1hLG49aSl9KSl9KSksLTEhPT1uKXt2YXIgYz1hW3JdW25dLGQ9TWF0aC5hYnMoZS1jKTtvPXIsYS5mb3JFYWNoKChmdW5jdGlvbih0LGkpe3ZhciBhPU1hdGguYWJzKGUtdFtuXSk7YTw9ZCYmKGQ9YSxvPWkpfSkpfXJldHVybntpbmRleDpvLGo6bn19fSx7a2V5OlwiZ2V0Rmlyc3RBY3RpdmVYQXJyYXlcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9MCxhPXQubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxlbmd0aD4wP2U6LTF9KSkscz0wO3M8YS5sZW5ndGg7cysrKWlmKC0xIT09YVtzXSYmLTE9PT1lLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHMpJiYtMT09PWUuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2Yocykpe2k9YVtzXTticmVha31yZXR1cm4gaX19LHtrZXk6XCJjbG9zZXN0SW5BcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPWVbMF0sYT1udWxsLHM9TWF0aC5hYnModC1pKSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvPU1hdGguYWJzKHQtZVtyXSk7bzxzJiYocz1vLGE9cil9cmV0dXJue2luZGV4OmF9fX0se2tleTpcImlzWG92ZXJsYXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1bXSxpPXRoaXMudy5nbG9iYWxzLnNlcmllc1guZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dFswXX0pKTtpZihpLmxlbmd0aD4wKWZvcih2YXIgYT0wO2E8aS5sZW5ndGgtMTthKyspdm9pZCAwIT09aVthXVt0XSYmdm9pZCAwIT09aVthKzFdW3RdJiZpW2FdW3RdIT09aVthKzFdW3RdJiZlLnB1c2goXCJ1bkVxdWFsXCIpO3JldHVybiAwPT09ZS5sZW5ndGh9fSx7a2V5OlwiaXNJbml0aWFsU2VyaWVzU2FtZUxlblwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PSEwLGU9dGhpcy53Lmdsb2JhbHMuaW5pdGlhbFNlcmllcyxpPTA7aTxlLmxlbmd0aC0xO2krKylpZihlW2ldLmRhdGEubGVuZ3RoIT09ZVtpKzFdLmRhdGEubGVuZ3RoKXt0PSExO2JyZWFrfXJldHVybiB0fX0se2tleTpcImdldEJhcnNIZWlnaHRcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdSh0KS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5nZXRCQm94KCkuaGVpZ2h0fSksMCl9fSx7a2V5OlwiZ2V0RWxNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHQ/dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwID4gKlwiKSk6dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcCA+ICpcIil9fSx7a2V5OlwiZ2V0QWxsTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiKTsodD11KHQpKS5zb3J0KChmdW5jdGlvbih0LGUpe3ZhciBpPU51bWJlcih0LmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKSxhPU51bWJlcihlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKTtyZXR1cm4gYTxpPzE6YT5pPy0xOjB9KSk7dmFyIGU9W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5wdXNoKHQucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLW1hcmtlclwiKSl9KSksZX19LHtrZXk6XCJoYXNNYXJrZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0RWxNYXJrZXJzKHQpLmxlbmd0aD4wfX0se2tleTpcImdldEVsQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMsICAuYXBleGNoYXJ0cy1jYW5kbGVzdGljay1zZXJpZXMsIC5hcGV4Y2hhcnRzLWJveFBsb3Qtc2VyaWVzLCAuYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXNcIil9fSx7a2V5OlwiaGFzQmFyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RWxCYXJzKCkubGVuZ3RoPjB9fSx7a2V5OlwiZ2V0SG92ZXJNYXJrZXJTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9ZS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplO3JldHVybiB2b2lkIDA9PT1pJiYoaT1lLmdsb2JhbHMubWFya2Vycy5zaXplW3RdK2UuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZU9mZnNldCksaX19LHtrZXk6XCJ0b2dnbGVBbGxUb29sdGlwU2VyaWVzR3JvdXBzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9dGhpcy50dEN0eDswPT09aS5hbGxUb29sdGlwU2VyaWVzR3JvdXBzLmxlbmd0aCYmKGkuYWxsVG9vbHRpcFNlcmllc0dyb3Vwcz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXBcIikpO2Zvcih2YXIgYT1pLmFsbFRvb2x0aXBTZXJpZXNHcm91cHMscz0wO3M8YS5sZW5ndGg7cysrKVwiZW5hYmxlXCI9PT10PyhhW3NdLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxhW3NdLnN0eWxlLmRpc3BsYXk9ZS5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KTooYVtzXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksYVtzXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKX19XSksdH0oKSxndD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMudz1lLncsdGhpcy5jdHg9ZS5jdHgsdGhpcy50dEN0eD1lLHRoaXMudG9vbHRpcFV0aWw9bmV3IGR0KGUpfXJldHVybiByKHQsW3trZXk6XCJkcmF3U2VyaWVzVGV4dHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnNoYXJlZCxpPXZvaWQgMD09PWV8fGUsYT10LnR0SXRlbXMscz10Lmkscj12b2lkIDA9PT1zPzA6cyxvPXQuaixuPXZvaWQgMD09PW8/bnVsbDpvLGw9dC55MSxoPXQueTIsYz10LmUsZD10aGlzLnc7dm9pZCAwIT09ZC5jb25maWcudG9vbHRpcC5jdXN0b20/dGhpcy5oYW5kbGVDdXN0b21Ub29sdGlwKHtpOnIsajpuLHkxOmwseTI6aCx3OmR9KTp0aGlzLnRvZ2dsZUFjdGl2ZUluYWN0aXZlU2VyaWVzKGkpO3ZhciBnPXRoaXMuZ2V0VmFsdWVzVG9QcmludCh7aTpyLGo6bn0pO3RoaXMucHJpbnRMYWJlbHMoe2k6cixqOm4sdmFsdWVzOmcsdHRJdGVtczphLHNoYXJlZDppLGU6Y30pO3ZhciB1PXRoaXMudHRDdHguZ2V0RWxUb29sdGlwKCk7dGhpcy50dEN0eC50b29sdGlwUmVjdC50dFdpZHRoPXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsdGhpcy50dEN0eC50b29sdGlwUmVjdC50dEhlaWdodD11LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH19LHtrZXk6XCJwcmludExhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpLGE9dGhpcyxzPXQuaSxyPXQuaixvPXQudmFsdWVzLG49dC50dEl0ZW1zLGw9dC5zaGFyZWQsaD10LmUsYz10aGlzLncsZD1bXSxnPWZ1bmN0aW9uKHQpe3JldHVybiBjLmdsb2JhbHMuc2VyaWVzR29hbHNbdF0mJmMuZ2xvYmFscy5zZXJpZXNHb2Fsc1t0XVtyXSYmQXJyYXkuaXNBcnJheShjLmdsb2JhbHMuc2VyaWVzR29hbHNbdF1bcl0pfSx1PW8ueFZhbCxwPW8uelZhbCxmPW8ueEF4aXNUVFZhbCx4PVwiXCIsYj1jLmdsb2JhbHMuY29sb3JzW3NdO251bGwhPT1yJiZjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGlzdHJpYnV0ZWQmJihiPWMuZ2xvYmFscy5jb2xvcnNbcl0pO2Zvcih2YXIgdj1mdW5jdGlvbih0LG8pe3ZhciB2PWEuZ2V0Rm9ybWF0dGVycyhzKTt4PWEuZ2V0U2VyaWVzTmFtZSh7Zm46di55TGJUaXRsZUZvcm1hdHRlcixpbmRleDpzLHNlcmllc0luZGV4OnMsajpyfSksXCJ0cmVlbWFwXCI9PT1jLmNvbmZpZy5jaGFydC50eXBlJiYoeD12LnlMYlRpdGxlRm9ybWF0dGVyKFN0cmluZyhjLmNvbmZpZy5zZXJpZXNbc10uZGF0YVtyXS54KSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6cyxkYXRhUG9pbnRJbmRleDpyLHc6Y30pKTt2YXIgbT1jLmNvbmZpZy50b29sdGlwLmludmVyc2VPcmRlcj9vOnQ7aWYoYy5nbG9iYWxzLmF4aXNDaGFydHMpe3ZhciB5PWZ1bmN0aW9uKHQpe3ZhciBlLGksYSxzO3JldHVybiBjLmdsb2JhbHMuaXNSYW5nZURhdGE/di55TGJGb3JtYXR0ZXIobnVsbD09PShlPWMuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0KXx8dm9pZCAwPT09ZXx8bnVsbD09PShpPWVbdF0pfHx2b2lkIDA9PT1pP3ZvaWQgMDppW3JdLHtzZXJpZXM6Yy5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnQsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpyLHc6Y30pK1wiIC0gXCIrdi55TGJGb3JtYXR0ZXIobnVsbD09PShhPWMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZCl8fHZvaWQgMD09PWF8fG51bGw9PT0ocz1hW3RdKXx8dm9pZCAwPT09cz92b2lkIDA6c1tyXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZCxzZXJpZXNJbmRleDp0LGRhdGFQb2ludEluZGV4OnIsdzpjfSk6di55TGJGb3JtYXR0ZXIoYy5nbG9iYWxzLnNlcmllc1t0XVtyXSx7c2VyaWVzOmMuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6dCxkYXRhUG9pbnRJbmRleDpyLHc6Y30pfTtpZihsKXY9YS5nZXRGb3JtYXR0ZXJzKG0pLHg9YS5nZXRTZXJpZXNOYW1lKHtmbjp2LnlMYlRpdGxlRm9ybWF0dGVyLGluZGV4Om0sc2VyaWVzSW5kZXg6cyxqOnJ9KSxiPWMuZ2xvYmFscy5jb2xvcnNbbV0saT15KG0pLGcobSkmJihkPWMuZ2xvYmFscy5zZXJpZXNHb2Fsc1ttXVtyXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnthdHRyczp0LHZhbDp2LnlMYkZvcm1hdHRlcih0LnZhbHVlLHtzZXJpZXNJbmRleDptLGRhdGFQb2ludEluZGV4OnIsdzpjfSl9fSkpKTtlbHNle3ZhciB3LGs9bnVsbD09aHx8bnVsbD09PSh3PWgudGFyZ2V0KXx8dm9pZCAwPT09dz92b2lkIDA6dy5nZXRBdHRyaWJ1dGUoXCJmaWxsXCIpO2smJihiPS0xIT09ay5pbmRleE9mKFwidXJsXCIpP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioay5zdWJzdHIoNCkuc2xpY2UoMCwtMSkpLmNoaWxkTm9kZXNbMF0uZ2V0QXR0cmlidXRlKFwic3Ryb2tlXCIpOmspLGk9eShzKSxnKHMpJiZBcnJheS5pc0FycmF5KGMuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXSkmJihkPWMuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnthdHRyczp0LHZhbDp2LnlMYkZvcm1hdHRlcih0LnZhbHVlLHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnIsdzpjfSl9fSkpKX19bnVsbD09PXImJihpPXYueUxiRm9ybWF0dGVyKGMuZ2xvYmFscy5zZXJpZXNbc10sZShlKHt9LGMpLHt9LHtzZXJpZXNJbmRleDpzLGRhdGFQb2ludEluZGV4OnN9KSkpLGEuRE9NSGFuZGxpbmcoe2k6cyx0Om0sajpyLHR0SXRlbXM6bix2YWx1ZXM6e3ZhbDppLGdvYWxWYWxzOmQseFZhbDp1LHhBeGlzVFRWYWw6Zix6VmFsOnB9LHNlcmllc05hbWU6eCxzaGFyZWQ6bCxwQ29sb3I6Yn0pfSxtPTAseT1jLmdsb2JhbHMuc2VyaWVzLmxlbmd0aC0xO208Yy5nbG9iYWxzLnNlcmllcy5sZW5ndGg7bSsrLHktLSl2KG0seSl9fSx7a2V5OlwiZ2V0Rm9ybWF0dGVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy53LGE9aS5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF07cmV0dXJuIHZvaWQgMCE9PWkuZ2xvYmFscy50dFZhbD9BcnJheS5pc0FycmF5KGkuZ2xvYmFscy50dFZhbCk/KGE9aS5nbG9iYWxzLnR0VmFsW3RdJiZpLmdsb2JhbHMudHRWYWxbdF0uZm9ybWF0dGVyLGU9aS5nbG9iYWxzLnR0VmFsW3RdJiZpLmdsb2JhbHMudHRWYWxbdF0udGl0bGUmJmkuZ2xvYmFscy50dFZhbFt0XS50aXRsZS5mb3JtYXR0ZXIpOihhPWkuZ2xvYmFscy50dFZhbC5mb3JtYXR0ZXIsXCJmdW5jdGlvblwiPT10eXBlb2YgaS5nbG9iYWxzLnR0VmFsLnRpdGxlLmZvcm1hdHRlciYmKGU9aS5nbG9iYWxzLnR0VmFsLnRpdGxlLmZvcm1hdHRlcikpOmU9aS5jb25maWcudG9vbHRpcC55LnRpdGxlLmZvcm1hdHRlcixcImZ1bmN0aW9uXCIhPXR5cGVvZiBhJiYoYT1pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXT9pLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXTpmdW5jdGlvbih0KXtyZXR1cm4gdH0pLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJihlPWZ1bmN0aW9uKHQpe3JldHVybiB0fSkse3lMYkZvcm1hdHRlcjphLHlMYlRpdGxlRm9ybWF0dGVyOmV9fX0se2tleTpcImdldFNlcmllc05hbWVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZuLGk9dC5pbmRleCxhPXQuc2VyaWVzSW5kZXgscz10Lmoscj10aGlzLnc7cmV0dXJuIGUoU3RyaW5nKHIuZ2xvYmFscy5zZXJpZXNOYW1lc1tpXSkse3NlcmllczpyLmdsb2JhbHMuc2VyaWVzLHNlcmllc0luZGV4OmEsZGF0YVBvaW50SW5kZXg6cyx3OnJ9KX19LHtrZXk6XCJET01IYW5kbGluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuaTt2YXIgZT10LnQsaT10LmosYT10LnR0SXRlbXMscz10LnZhbHVlcyxyPXQuc2VyaWVzTmFtZSxvPXQuc2hhcmVkLG49dC5wQ29sb3IsbD10aGlzLncsaD10aGlzLnR0Q3R4LGM9cy52YWwsZD1zLmdvYWxWYWxzLGc9cy54VmFsLHU9cy54QXhpc1RUVmFsLHA9cy56VmFsLGY9bnVsbDtmPWFbZV0uY2hpbGRyZW4sbC5jb25maWcudG9vbHRpcC5maWxsU2VyaWVzQ29sb3ImJihhW2VdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uLGZbMF0uc3R5bGUuZGlzcGxheT1cIm5vbmVcIiksaC5zaG93VG9vbHRpcFRpdGxlJiYobnVsbD09PWgudG9vbHRpcFRpdGxlJiYoaC50b29sdGlwVGl0bGU9bC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGVcIikpLGgudG9vbHRpcFRpdGxlLmlubmVySFRNTD1nKSxoLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmKGgueGF4aXNUb29sdGlwVGV4dC5pbm5lckhUTUw9XCJcIiE9PXU/dTpnKTt2YXIgeD1hW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS1sYWJlbFwiKTt4JiYoeC5pbm5lckhUTUw9cnx8XCJcIik7dmFyIGI9YVtlXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LXktdmFsdWVcIik7YiYmKGIuaW5uZXJIVE1MPXZvaWQgMCE9PWM/YzpcIlwiKSxmWzBdJiZmWzBdLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXJcIikmJihsLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzJiZBcnJheS5pc0FycmF5KGwuY29uZmlnLnRvb2x0aXAubWFya2VyLmZpbGxDb2xvcnMpJiYobj1sLmNvbmZpZy50b29sdGlwLm1hcmtlci5maWxsQ29sb3JzW2VdKSxmWzBdLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uKSxsLmNvbmZpZy50b29sdGlwLm1hcmtlci5zaG93fHwoZlswXS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKTt2YXIgdj1hW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWxcIiksbT1hW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWVcIik7aWYoZC5sZW5ndGgmJmwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tlXSl7dmFyIHk9ZnVuY3Rpb24oKXt2YXIgdD1cIjxkaXYgPlwiLGU9XCI8ZGl2PlwiO2QuZm9yRWFjaCgoZnVuY3Rpb24oaSxhKXt0Kz0nIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCI+PHNwYW4gY2xhc3M9XCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAnLmNvbmNhdChpLmF0dHJzLnN0cm9rZUNvbG9yLCc7IGhlaWdodDogM3B4OyBib3JkZXItcmFkaXVzOiAwOyB0b3A6IDVweDtcIj48L3NwYW4+ICcpLmNvbmNhdChpLmF0dHJzLm5hbWUsXCI8L2Rpdj5cIiksZSs9XCI8ZGl2PlwiLmNvbmNhdChpLnZhbCxcIjwvZGl2PlwiKX0pKSx2LmlubmVySFRNTD10K1wiPC9kaXY+XCIsbS5pbm5lckhUTUw9ZStcIjwvZGl2PlwifTtvP2wuZ2xvYmFscy5zZXJpZXNHb2Fsc1tlXVtpXSYmQXJyYXkuaXNBcnJheShsLmdsb2JhbHMuc2VyaWVzR29hbHNbZV1baV0pP3koKToodi5pbm5lckhUTUw9XCJcIixtLmlubmVySFRNTD1cIlwiKTp5KCl9ZWxzZSB2LmlubmVySFRNTD1cIlwiLG0uaW5uZXJIVE1MPVwiXCI7bnVsbCE9PXAmJihhW2VdLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei1sYWJlbFwiKS5pbm5lckhUTUw9bC5jb25maWcudG9vbHRpcC56LnRpdGxlLGFbZV0ucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlXCIpLmlubmVySFRNTD12b2lkIDAhPT1wP3A6XCJcIik7byYmZlswXSYmKG51bGw9PWN8fGwuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSk+LTF8fGwuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluZGV4T2YoZSk+LTE/ZlswXS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9XCJub25lXCI6ZlswXS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9bC5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KX19LHtrZXk6XCJ0b2dnbGVBY3RpdmVJbmFjdGl2ZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZih0KXRoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcyhcImVuYWJsZVwiKTtlbHNle3RoaXMudG9vbHRpcFV0aWwudG9nZ2xlQWxsVG9vbHRpcFNlcmllc0dyb3VwcyhcImRpc2FibGVcIik7dmFyIGk9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwXCIpO2kmJihpLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSxpLnN0eWxlLmRpc3BsYXk9ZS5jb25maWcudG9vbHRpcC5pdGVtcy5kaXNwbGF5KX19fSx7a2V5OlwiZ2V0VmFsdWVzVG9QcmludFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXRoaXMudyxzPXRoaXMuY3R4LnNlcmllcy5maWx0ZXJlZFNlcmllc1goKSxyPVwiXCIsbz1cIlwiLG49bnVsbCxsPW51bGwsaD17c2VyaWVzOmEuZ2xvYmFscy5zZXJpZXMsc2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHc6YX0sYz1hLmdsb2JhbHMudHRaRm9ybWF0dGVyO251bGw9PT1pP2w9YS5nbG9iYWxzLnNlcmllc1tlXTphLmdsb2JhbHMuaXNYTnVtZXJpYyYmXCJ0cmVlbWFwXCIhPT1hLmNvbmZpZy5jaGFydC50eXBlPyhyPXNbZV1baV0sMD09PXNbZV0ubGVuZ3RoJiYocj1zW3RoaXMudG9vbHRpcFV0aWwuZ2V0Rmlyc3RBY3RpdmVYQXJyYXkocyldW2ldKSk6cj12b2lkIDAhPT1hLmdsb2JhbHMubGFiZWxzW2ldP2EuZ2xvYmFscy5sYWJlbHNbaV06XCJcIjt2YXIgZD1yO2EuZ2xvYmFscy5pc1hOdW1lcmljJiZcImRhdGV0aW1lXCI9PT1hLmNvbmZpZy54YXhpcy50eXBlP3I9bmV3IE0odGhpcy5jdHgpLnhMYWJlbEZvcm1hdChhLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIsZCxkLHtpOnZvaWQgMCxkYXRlRm9ybWF0dGVyOm5ldyBJKHRoaXMuY3R4KS5mb3JtYXREYXRlLHc6dGhpcy53fSk6cj1hLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2EuZ2xvYmFscy55TGFiZWxGb3JtYXR0ZXJzWzBdKGQsaCk6YS5nbG9iYWxzLnhMYWJlbEZvcm1hdHRlcihkLGgpO3JldHVybiB2b2lkIDAhPT1hLmNvbmZpZy50b29sdGlwLnguZm9ybWF0dGVyJiYocj1hLmdsb2JhbHMudHRLZXlGb3JtYXR0ZXIoZCxoKSksYS5nbG9iYWxzLnNlcmllc1oubGVuZ3RoPjAmJmEuZ2xvYmFscy5zZXJpZXNaW2VdLmxlbmd0aD4wJiYobj1jKGEuZ2xvYmFscy5zZXJpZXNaW2VdW2ldLGEpKSxvPVwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLnhheGlzLnRvb2x0aXAuZm9ybWF0dGVyP2EuZ2xvYmFscy54YXhpc1Rvb2x0aXBGb3JtYXR0ZXIoZCxoKTpyLHt2YWw6QXJyYXkuaXNBcnJheShsKT9sLmpvaW4oXCIgXCIpOmwseFZhbDpBcnJheS5pc0FycmF5KHIpP3Iuam9pbihcIiBcIik6cix4QXhpc1RUVmFsOkFycmF5LmlzQXJyYXkobyk/by5qb2luKFwiIFwiKTpvLHpWYWw6bn19fSx7a2V5OlwiaGFuZGxlQ3VzdG9tVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaSxpPXQuaixhPXQueTEscz10LnkyLHI9dC53LG89dGhpcy50dEN0eC5nZXRFbFRvb2x0aXAoKSxuPXIuY29uZmlnLnRvb2x0aXAuY3VzdG9tO0FycmF5LmlzQXJyYXkobikmJm5bZV0mJihuPW5bZV0pLG8uaW5uZXJIVE1MPW4oe2N0eDp0aGlzLmN0eCxzZXJpZXM6ci5nbG9iYWxzLnNlcmllcyxzZXJpZXNJbmRleDplLGRhdGFQb2ludEluZGV4OmkseTE6YSx5MjpzLHc6cn0pfX1dKSx0fSgpLHV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy50dEN0eD1lLHRoaXMuY3R4PWUuY3R4LHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcIm1vdmVYQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGk9dGhpcy50dEN0eCxhPXRoaXMudyxzPWkuZ2V0RWxYQ3Jvc3NoYWlycygpLHI9dC1pLnhjcm9zc2hhaXJzV2lkdGgvMixvPWEuZ2xvYmFscy5sYWJlbHMuc2xpY2UoKS5sZW5ndGg7aWYobnVsbCE9PWUmJihyPWEuZ2xvYmFscy5ncmlkV2lkdGgvbyplKSxudWxsPT09c3x8YS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8KHMuc2V0QXR0cmlidXRlKFwieFwiLHIpLHMuc2V0QXR0cmlidXRlKFwieDFcIixyKSxzLnNldEF0dHJpYnV0ZShcIngyXCIscikscy5zZXRBdHRyaWJ1dGUoXCJ5MlwiLGEuZ2xvYmFscy5ncmlkSGVpZ2h0KSxzLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSkscjwwJiYocj0wKSxyPmEuZ2xvYmFscy5ncmlkV2lkdGgmJihyPWEuZ2xvYmFscy5ncmlkV2lkdGgpLGkuaXNYQXhpc1Rvb2x0aXBFbmFibGVkKXt2YXIgbj1yO1widGlja1dpZHRoXCIhPT1hLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRoJiZcImJhcldpZHRoXCIhPT1hLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLndpZHRofHwobj1yK2kueGNyb3NzaGFpcnNXaWR0aC8yKSx0aGlzLm1vdmVYQXhpc1Rvb2x0aXAobil9fX0se2tleTpcIm1vdmVZQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudHRDdHg7bnVsbCE9PWUueWNyb3NzaGFpcnMmJm0uc2V0QXR0cnMoZS55Y3Jvc3NoYWlycyx7eTE6dCx5Mjp0fSksbnVsbCE9PWUueWNyb3NzaGFpcnNIaWRkZW4mJm0uc2V0QXR0cnMoZS55Y3Jvc3NoYWlyc0hpZGRlbix7eTE6dCx5Mjp0fSl9fSx7a2V5OlwibW92ZVhBeGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMudHRDdHg7aWYobnVsbCE9PWkueGF4aXNUb29sdGlwJiYwIT09aS54Y3Jvc3NoYWlyc1dpZHRoKXtpLnhheGlzVG9vbHRpcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIik7dmFyIGE9aS54YXhpc09mZlkrZS5jb25maWcueGF4aXMudG9vbHRpcC5vZmZzZXRZK2UuZ2xvYmFscy50cmFuc2xhdGVZKzErZS5jb25maWcueGF4aXMub2Zmc2V0WTtpZih0LT1pLnhheGlzVG9vbHRpcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aC8yLCFpc05hTih0KSl7dCs9ZS5nbG9iYWxzLnRyYW5zbGF0ZVg7dmFyIHM7cz1uZXcgbSh0aGlzLmN0eCkuZ2V0VGV4dFJlY3RzKGkueGF4aXNUb29sdGlwVGV4dC5pbm5lckhUTUwpLGkueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5taW5XaWR0aD1zLndpZHRoK1wicHhcIixpLnhheGlzVG9vbHRpcC5zdHlsZS5sZWZ0PXQrXCJweFwiLGkueGF4aXNUb29sdGlwLnN0eWxlLnRvcD1hK1wicHhcIn19fX0se2tleTpcIm1vdmVZQXhpc1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10aGlzLnR0Q3R4O251bGw9PT1pLnlheGlzVFRFbHMmJihpLnlheGlzVFRFbHM9ZS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcFwiKSk7dmFyIGE9cGFyc2VJbnQoaS55Y3Jvc3NoYWlyc0hpZGRlbi5nZXRBdHRyaWJ1dGUoXCJ5MVwiKSwxMCkscz1lLmdsb2JhbHMudHJhbnNsYXRlWSthLHI9aS55YXhpc1RURWxzW3RdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxvPWUuZ2xvYmFscy50cmFuc2xhdGVZQXhpc1hbdF0tMjtlLmNvbmZpZy55YXhpc1t0XS5vcHBvc2l0ZSYmKG8tPTI2KSxzLT1yLzIsLTE9PT1lLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YodCk/KGkueWF4aXNUVEVsc1t0XS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksaS55YXhpc1RURWxzW3RdLnN0eWxlLnRvcD1zK1wicHhcIixpLnlheGlzVFRFbHNbdF0uc3R5bGUubGVmdD1vK2UuY29uZmlnLnlheGlzW3RdLnRvb2x0aXAub2Zmc2V0WCtcInB4XCIpOmkueWF4aXNUVEVsc1t0XS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIil9fSx7a2V5OlwibW92ZVRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGE9dGhpcy53LHM9dGhpcy50dEN0eCxyPXMuZ2V0RWxUb29sdGlwKCksbz1zLnRvb2x0aXBSZWN0LG49bnVsbCE9PWk/cGFyc2VGbG9hdChpKToxLGw9cGFyc2VGbG9hdCh0KStuKzUsaD1wYXJzZUZsb2F0KGUpK24vMjtpZihsPmEuZ2xvYmFscy5ncmlkV2lkdGgvMiYmKGw9bC1vLnR0V2lkdGgtbi0xMCksbD5hLmdsb2JhbHMuZ3JpZFdpZHRoLW8udHRXaWR0aC0xMCYmKGw9YS5nbG9iYWxzLmdyaWRXaWR0aC1vLnR0V2lkdGgpLGw8LTIwJiYobD0tMjApLGEuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgYz1zLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyhsPXMuZS5jbGllbnRYLWMubGVmdCk+YS5nbG9iYWxzLmdyaWRXaWR0aC8yJiYobC09cy50b29sdGlwUmVjdC50dFdpZHRoKSwoaD1zLmUuY2xpZW50WSthLmdsb2JhbHMudHJhbnNsYXRlWS1jLnRvcCk+YS5nbG9iYWxzLmdyaWRIZWlnaHQvMiYmKGgtPXMudG9vbHRpcFJlY3QudHRIZWlnaHQpfWVsc2UgYS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8by50dEhlaWdodC8yK2g+YS5nbG9iYWxzLmdyaWRIZWlnaHQmJihoPWEuZ2xvYmFscy5ncmlkSGVpZ2h0LW8udHRIZWlnaHQrYS5nbG9iYWxzLnRyYW5zbGF0ZVkpO2lzTmFOKGwpfHwobCs9YS5nbG9iYWxzLnRyYW5zbGF0ZVgsci5zdHlsZS5sZWZ0PWwrXCJweFwiLHIuc3R5bGUudG9wPWgrXCJweFwiKX19LHtrZXk6XCJtb3ZlTWFya2Vyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9dGhpcy50dEN0eDtpZihpLmdsb2JhbHMubWFya2Vycy5zaXplW3RdPjApZm9yKHZhciBzPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXSAuYXBleGNoYXJ0cy1tYXJrZXJcIikpLHI9MDtyPHMubGVuZ3RoO3IrKylwYXJzZUludChzW3JdLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCk9PT1lJiYoYS5tYXJrZXIucmVzZXRQb2ludHNTaXplKCksYS5tYXJrZXIuZW5sYXJnZUN1cnJlbnRQb2ludChlLHNbcl0pKTtlbHNlIGEubWFya2VyLnJlc2V0UG9pbnRzU2l6ZSgpLHRoaXMubW92ZUR5bmFtaWNQb2ludE9uSG92ZXIoZSx0KX19LHtrZXk6XCJtb3ZlRHluYW1pY1BvaW50T25Ib3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGksYSxzPXRoaXMudyxyPXRoaXMudHRDdHgsbz1zLmdsb2JhbHMucG9pbnRzQXJyYXksbj1yLnRvb2x0aXBVdGlsLmdldEhvdmVyTWFya2VyU2l6ZShlKSxsPXMuY29uZmlnLnNlcmllc1tlXS50eXBlO2lmKCFsfHxcImNvbHVtblwiIT09bCYmXCJjYW5kbGVzdGlja1wiIT09bCYmXCJib3hQbG90XCIhPT1sKXtpPW9bZV1bdF1bMF0sYT1vW2VdW3RdWzFdP29bZV1bdF1bMV06MDt2YXIgaD1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KGUsXCInXSAuYXBleGNoYXJ0cy1zZXJpZXMtbWFya2VycyBjaXJjbGVcIikpO2gmJmE8cy5nbG9iYWxzLmdyaWRIZWlnaHQmJmE+MCYmKGguc2V0QXR0cmlidXRlKFwiclwiLG4pLGguc2V0QXR0cmlidXRlKFwiY3hcIixpKSxoLnNldEF0dHJpYnV0ZShcImN5XCIsYSkpLHRoaXMubW92ZVhDcm9zc2hhaXJzKGkpLHIuZml4ZWRUb29sdGlwfHx0aGlzLm1vdmVUb29sdGlwKGksYSxuKX19fSx7a2V5OlwibW92ZUR5bmFtaWNQb2ludHNPbkhvdmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLnR0Q3R4LGE9aS53LHM9MCxyPTAsbz1hLmdsb2JhbHMucG9pbnRzQXJyYXk7ZT1uZXcgTih0aGlzLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJhc2NcIixbXCJsaW5lXCIsXCJhcmVhXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIl0pO3ZhciBuPWkudG9vbHRpcFV0aWwuZ2V0SG92ZXJNYXJrZXJTaXplKGUpO29bZV0mJihzPW9bZV1bdF1bMF0scj1vW2VdW3RdWzFdKTt2YXIgbD1pLnRvb2x0aXBVdGlsLmdldEFsbE1hcmtlcnMoKTtpZihudWxsIT09bClmb3IodmFyIGg9MDtoPGEuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO2grKyl7dmFyIGM9b1toXTtpZihhLmdsb2JhbHMuY29tYm9DaGFydHMmJnZvaWQgMD09PWMmJmwuc3BsaWNlKGgsMCxudWxsKSxjJiZjLmxlbmd0aCl7dmFyIGQ9b1toXVt0XVsxXSxnPXZvaWQgMDtpZihsW2hdLnNldEF0dHJpYnV0ZShcImN4XCIscyksXCJyYW5nZUFyZWFcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUmJiFhLmdsb2JhbHMuY29tYm9DaGFydHMpe3ZhciB1PXQrYS5nbG9iYWxzLnNlcmllc1toXS5sZW5ndGg7Zz1vW2hdW3VdWzFdLGQtPU1hdGguYWJzKGQtZykvMn1udWxsIT09ZCYmIWlzTmFOKGQpJiZkPGEuZ2xvYmFscy5ncmlkSGVpZ2h0K24mJmQrbj4wPyhsW2hdJiZsW2hdLnNldEF0dHJpYnV0ZShcInJcIixuKSxsW2hdJiZsW2hdLnNldEF0dHJpYnV0ZShcImN5XCIsZCkpOmxbaF0mJmxbaF0uc2V0QXR0cmlidXRlKFwiclwiLDApfX10aGlzLm1vdmVYQ3Jvc3NoYWlycyhzKSxpLmZpeGVkVG9vbHRpcHx8dGhpcy5tb3ZlVG9vbHRpcChzLHJ8fGEuZ2xvYmFscy5ncmlkSGVpZ2h0LG4pfX0se2tleTpcIm1vdmVTdGlja3lUb29sdGlwT3ZlckJhcnNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPXRoaXMudHRDdHgscz1pLmdsb2JhbHMuY29sdW1uU2VyaWVzP2kuZ2xvYmFscy5jb2x1bW5TZXJpZXMubGVuZ3RoOmkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLHI9cz49MiYmcyUyPT0wP01hdGguZmxvb3Iocy8yKTpNYXRoLmZsb29yKHMvMikrMTtpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYocj1uZXcgTih0aGlzLmN0eCkuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJkZXNjXCIpKzEpO3ZhciBvPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiLmNvbmNhdChyLFwiJ10gcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXSwgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiKS5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIC5hcGV4Y2hhcnRzLWJveFBsb3Qtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tyZWw9J1wiKS5jb25jYXQocixcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sIC5hcGV4Y2hhcnRzLXJhbmdlYmFyLXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbcmVsPSdcIikuY29uY2F0KHIsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddXCIpKTtvfHxcIm51bWJlclwiIT10eXBlb2YgZXx8KG89aS5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWJhci1zZXJpZXMgLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLFxcbiAgICAgICAgLmFwZXhjaGFydHMtY2FuZGxlc3RpY2stc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoZSxcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ10sXFxuICAgICAgICAuYXBleGNoYXJ0cy1ib3hQbG90LXNlcmllcyAuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6cmVhbEluZGV4PSdcIikuY29uY2F0KGUsXCInXSBwYXRoW2o9J1wiKS5jb25jYXQodCxcIiddLFxcbiAgICAgICAgLmFwZXhjaGFydHMtcmFuZ2ViYXItc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllc1tkYXRhXFxcXDpyZWFsSW5kZXg9J1wiKS5jb25jYXQoZSxcIiddIHBhdGhbaj0nXCIpLmNvbmNhdCh0LFwiJ11cIikpKTt2YXIgbj1vP3BhcnNlRmxvYXQoby5nZXRBdHRyaWJ1dGUoXCJjeFwiKSk6MCxsPW8/cGFyc2VGbG9hdChvLmdldEF0dHJpYnV0ZShcImN5XCIpKTowLGg9bz9wYXJzZUZsb2F0KG8uZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpOjAsYz1hLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGQ9byYmKG8uY2xhc3NMaXN0LmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1jYW5kbGVzdGljay1hcmVhXCIpfHxvLmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtYm94UGxvdC1hcmVhXCIpKTtpLmdsb2JhbHMuaXNYTnVtZXJpYz8obyYmIWQmJihuLT1zJTIhPTA/aC8yOjApLG8mJmQmJmkuZ2xvYmFscy5jb21ib0NoYXJ0cyYmKG4tPWgvMikpOmkuZ2xvYmFscy5pc0Jhckhvcml6b250YWx8fChuPWEueEF4aXNUaWNrc1Bvc2l0aW9uc1t0LTFdK2EuZGF0YVBvaW50c0RpdmlkZWRXaWR0aC8yLGlzTmFOKG4pJiYobj1hLnhBeGlzVGlja3NQb3NpdGlvbnNbdF0tYS5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoLzIpKSxpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsP2wtPWEudG9vbHRpcFJlY3QudHRIZWlnaHQ6aS5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3I/bD1hLmUuY2xpZW50WS1jLnRvcC1hLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzI6bCthLnRvb2x0aXBSZWN0LnR0SGVpZ2h0KzE1PmkuZ2xvYmFscy5ncmlkSGVpZ2h0JiYobD1pLmdsb2JhbHMuZ3JpZEhlaWdodCksaS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbHx8dGhpcy5tb3ZlWENyb3NzaGFpcnMobiksYS5maXhlZFRvb2x0aXB8fHRoaXMubW92ZVRvb2x0aXAobixsfHxpLmdsb2JhbHMuZ3JpZEhlaWdodCl9fV0pLHR9KCkscHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZSx0aGlzLmN0eD1lLmN0eCx0aGlzLnRvb2x0aXBQb3NpdGlvbj1uZXcgdXQoZSl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdEeW5hbWljUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT1uZXcgbSh0aGlzLmN0eCksaT1uZXcgSCh0aGlzLmN0eCksYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzXCIpO2E9dShhKSx0LmNvbmZpZy5jaGFydC5zdGFja2VkJiZhLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQodC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSktcGFyc2VGbG9hdChlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpKX0pKTtmb3IodmFyIHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIHI9YVtzXS5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnMtd3JhcFwiKTtpZihudWxsIT09cil7dmFyIG89dm9pZCAwLG49XCJhcGV4Y2hhcnRzLW1hcmtlciB3XCIuY29uY2F0KChNYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNCkpO1wibGluZVwiIT09dC5jb25maWcuY2hhcnQudHlwZSYmXCJhcmVhXCIhPT10LmNvbmZpZy5jaGFydC50eXBlfHx0Lmdsb2JhbHMuY29tYm9DaGFydHN8fHQuY29uZmlnLnRvb2x0aXAuaW50ZXJzZWN0fHwobis9XCIgbm8tcG9pbnRlci1ldmVudHNcIik7dmFyIGw9aS5nZXRNYXJrZXJDb25maWcoe2Nzc0NsYXNzOm4sc2VyaWVzSW5kZXg6TnVtYmVyKHIuZ2V0QXR0cmlidXRlKFwiZGF0YTpyZWFsSW5kZXhcIikpfSk7KG89ZS5kcmF3TWFya2VyKDAsMCxsKSkubm9kZS5zZXRBdHRyaWJ1dGUoXCJkZWZhdWx0LW1hcmtlci1zaXplXCIsMCk7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuZ2xvYmFscy5TVkdOUyxcImdcIik7aC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vyc1wiKSxoLmFwcGVuZENoaWxkKG8ubm9kZSksci5hcHBlbmRDaGlsZChoKX19fX0se2tleTpcImVubGFyZ2VDdXJyZW50UG9pbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGwscz10aGlzLnc7XCJidWJibGVcIiE9PXMuY29uZmlnLmNoYXJ0LnR5cGUmJnRoaXMubmV3UG9pbnRTaXplKHQsZSk7dmFyIHI9ZS5nZXRBdHRyaWJ1dGUoXCJjeFwiKSxvPWUuZ2V0QXR0cmlidXRlKFwiY3lcIik7aWYobnVsbCE9PWkmJm51bGwhPT1hJiYocj1pLG89YSksdGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKHIpLCF0aGlzLmZpeGVkVG9vbHRpcCl7aWYoXCJyYWRhclwiPT09cy5jb25maWcuY2hhcnQudHlwZSl7dmFyIG49dGhpcy50dEN0eC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyPXRoaXMudHRDdHguZS5jbGllbnRYLW4ubGVmdH10aGlzLnRvb2x0aXBQb3NpdGlvbi5tb3ZlVG9vbHRpcChyLG8scy5jb25maWcubWFya2Vycy5ob3Zlci5zaXplKX19fSx7a2V5OlwiZW5sYXJnZVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLncsaT10aGlzLGE9dGhpcy50dEN0eCxzPXQscj1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzOm5vdCguYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkKSAuYXBleGNoYXJ0cy1tYXJrZXJcIiksbz1lLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemUsbj0wO248ci5sZW5ndGg7bisrKXt2YXIgbD1yW25dLmdldEF0dHJpYnV0ZShcInJlbFwiKSxoPXJbbl0uZ2V0QXR0cmlidXRlKFwiaW5kZXhcIik7aWYodm9pZCAwPT09byYmKG89ZS5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtoXStlLmNvbmZpZy5tYXJrZXJzLmhvdmVyLnNpemVPZmZzZXQpLHM9PT1wYXJzZUludChsLDEwKSl7aS5uZXdQb2ludFNpemUocyxyW25dKTt2YXIgYz1yW25dLmdldEF0dHJpYnV0ZShcImN4XCIpLGQ9cltuXS5nZXRBdHRyaWJ1dGUoXCJjeVwiKTtpLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoYyksYS5maXhlZFRvb2x0aXB8fGkudG9vbHRpcFBvc2l0aW9uLm1vdmVUb29sdGlwKGMsZCxvKX1lbHNlIGkub2xkUG9pbnRTaXplKHJbbl0pfX19LHtrZXk6XCJuZXdQb2ludFNpemVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLm1hcmtlcnMuaG92ZXIuc2l6ZSxzPTA9PT10P2UucGFyZW50Tm9kZS5maXJzdENoaWxkOmUucGFyZW50Tm9kZS5sYXN0Q2hpbGQ7aWYoXCIwXCIhPT1zLmdldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIikpe3ZhciByPXBhcnNlSW50KHMuZ2V0QXR0cmlidXRlKFwiaW5kZXhcIiksMTApO3ZvaWQgMD09PWEmJihhPWkuZ2xvYmFscy5tYXJrZXJzLnNpemVbcl0raS5jb25maWcubWFya2Vycy5ob3Zlci5zaXplT2Zmc2V0KSxhPDAmJihhPTApLHMuc2V0QXR0cmlidXRlKFwiclwiLGEpfX19LHtrZXk6XCJvbGRQb2ludFNpemVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1wYXJzZUZsb2F0KHQuZ2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiKSk7dC5zZXRBdHRyaWJ1dGUoXCJyXCIsZSl9fSx7a2V5OlwicmVzZXRQb2ludHNTaXplXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzOm5vdCguYXBleGNoYXJ0cy1zZXJpZXMtY29sbGFwc2VkKSAuYXBleGNoYXJ0cy1tYXJrZXJcIiksZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgaT1wYXJzZUZsb2F0KHRbZV0uZ2V0QXR0cmlidXRlKFwiZGVmYXVsdC1tYXJrZXItc2l6ZVwiKSk7eC5pc051bWJlcihpKSYmaT49MD90W2VdLnNldEF0dHJpYnV0ZShcInJcIixpKTp0W2VdLnNldEF0dHJpYnV0ZShcInJcIiwwKX19fV0pLHR9KCksZnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnR0Q3R4PWUsdGhpcy5pc1ZlcnRpY2FsR3JvdXBlZFJhbmdlQmFyPSFpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZcInJhbmdlQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlJiZpLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3N9cmV0dXJuIHIodCxbe2tleTpcImdldEF0dHJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBwYXJzZUZsb2F0KHQudGFyZ2V0LmdldEF0dHJpYnV0ZShlKSl9fSx7a2V5OlwiaGFuZGxlSGVhdFRyZWVUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lLGk9dC5vcHQsYT10Lngscz10Lnkscj10LnR5cGUsbz10aGlzLnR0Q3R4LG49dGhpcy53O2lmKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcImFwZXhjaGFydHMtXCIuY29uY2F0KHIsXCItcmVjdFwiKSkpe3ZhciBsPXRoaXMuZ2V0QXR0cihlLFwiaVwiKSxoPXRoaXMuZ2V0QXR0cihlLFwialwiKSxjPXRoaXMuZ2V0QXR0cihlLFwiY3hcIiksZD10aGlzLmdldEF0dHIoZSxcImN5XCIpLGc9dGhpcy5nZXRBdHRyKGUsXCJ3aWR0aFwiKSx1PXRoaXMuZ2V0QXR0cihlLFwiaGVpZ2h0XCIpO2lmKG8udG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6aS50dEl0ZW1zLGk6bCxqOmgsc2hhcmVkOiExLGU6ZX0pLG4uZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PWwsbi5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9aCxhPWMrby50b29sdGlwUmVjdC50dFdpZHRoLzIrZyxzPWQrby50b29sdGlwUmVjdC50dEhlaWdodC8yLXUvMixvLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWENyb3NzaGFpcnMoYytnLzIpLGE+bi5nbG9iYWxzLmdyaWRXaWR0aC8yJiYoYT1jLW8udG9vbHRpcFJlY3QudHRXaWR0aC8yK2cpLG8udy5jb25maWcudG9vbHRpcC5mb2xsb3dDdXJzb3Ipe3ZhciBwPW4uZ2xvYmFscy5kb20uZWxXcmFwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9bi5nbG9iYWxzLmNsaWVudFgtcC5sZWZ0LShhPm4uZ2xvYmFscy5ncmlkV2lkdGgvMj9vLnRvb2x0aXBSZWN0LnR0V2lkdGg6MCkscz1uLmdsb2JhbHMuY2xpZW50WS1wLnRvcC0ocz5uLmdsb2JhbHMuZ3JpZEhlaWdodC8yP28udG9vbHRpcFJlY3QudHRIZWlnaHQ6MCl9fXJldHVybnt4OmEseTpzfX19LHtrZXk6XCJoYW5kbGVNYXJrZXJUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXQuZSxzPXQub3B0LHI9dC54LG89dC55LG49dGhpcy53LGw9dGhpcy50dEN0eDtpZihhLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJhcGV4Y2hhcnRzLW1hcmtlclwiKSl7dmFyIGg9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJjeFwiKSwxMCksYz1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcImN5XCIpLDEwKSxkPXBhcnNlRmxvYXQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJ2YWxcIikpO2lmKGk9cGFyc2VJbnQocy5wYXRocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLGU9cGFyc2VJbnQocy5wYXRocy5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTEsbC5pbnRlcnNlY3Qpe3ZhciBnPXguZmluZEFuY2VzdG9yKHMucGF0aHMsXCJhcGV4Y2hhcnRzLXNlcmllc1wiKTtnJiYoZT1wYXJzZUludChnLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSl9aWYobC50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczpzLnR0SXRlbXMsaTplLGo6aSxzaGFyZWQ6IWwuc2hvd09uSW50ZXJzZWN0JiZuLmNvbmZpZy50b29sdGlwLnNoYXJlZCxlOmF9KSxcIm1vdXNldXBcIj09PWEudHlwZSYmbC5tYXJrZXJDbGljayhhLGUsaSksbi5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9ZSxuLmdsb2JhbHMuY2FwdHVyZWREYXRhUG9pbnRJbmRleD1pLHI9aCxvPWMrbi5nbG9iYWxzLnRyYW5zbGF0ZVktMS40KmwudG9vbHRpcFJlY3QudHRIZWlnaHQsbC53LmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcil7dmFyIHU9bC5nZXRFbEdyaWQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtvPWwuZS5jbGllbnRZK24uZ2xvYmFscy50cmFuc2xhdGVZLXUudG9wfWQ8MCYmKG89YyksbC5tYXJrZXIuZW5sYXJnZUN1cnJlbnRQb2ludChpLHMucGF0aHMscixvKX1yZXR1cm57eDpyLHk6b319fSx7a2V5OlwiaGFuZGxlQmFyVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGksYT10LmUscz10Lm9wdCxyPXRoaXMudyxvPXRoaXMudHRDdHgsbj1vLmdldEVsVG9vbHRpcCgpLGw9MCxoPTAsYz0wLGQ9dGhpcy5nZXRCYXJUb29sdGlwWFkoe2U6YSxvcHQ6c30pO2U9ZC5pO3ZhciBnPWQuYmFySGVpZ2h0LHU9ZC5qO3IuZ2xvYmFscy5jYXB0dXJlZFNlcmllc0luZGV4PWUsci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9dSxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKXx8IXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkPyhoPWQueCxjPWQueSxpPUFycmF5LmlzQXJyYXkoci5jb25maWcuc3Ryb2tlLndpZHRoKT9yLmNvbmZpZy5zdHJva2Uud2lkdGhbZV06ci5jb25maWcuc3Ryb2tlLndpZHRoLGw9aCk6ci5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxyLmNvbmZpZy50b29sdGlwLnNoYXJlZHx8KGwvPTIpLGlzTmFOKGMpJiYoYz1yLmdsb2JhbHMuc3ZnSGVpZ2h0LW8udG9vbHRpcFJlY3QudHRIZWlnaHQpO3ZhciBwPXBhcnNlSW50KHMucGF0aHMucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhOnJlYWxJbmRleFwiKSwxMCksZj1yLmdsb2JhbHMuaXNNdWx0aXBsZVlBeGlzP3IuY29uZmlnLnlheGlzW3BdJiZyLmNvbmZpZy55YXhpc1twXS5yZXZlcnNlZDpyLmNvbmZpZy55YXhpc1swXS5yZXZlcnNlZDtpZihoK28udG9vbHRpcFJlY3QudHRXaWR0aD5yLmdsb2JhbHMuZ3JpZFdpZHRoJiYhZj9oLT1vLnRvb2x0aXBSZWN0LnR0V2lkdGg6aDwwJiYoaD0wKSxvLncuY29uZmlnLnRvb2x0aXAuZm9sbG93Q3Vyc29yKXt2YXIgeD1vLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2M9by5lLmNsaWVudFkteC50b3B9bnVsbD09PW8udG9vbHRpcCYmKG8udG9vbHRpcD1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtdG9vbHRpcFwiKSksci5jb25maWcudG9vbHRpcC5zaGFyZWR8fChyLmdsb2JhbHMuY29tYm9CYXJDb3VudD4wP28udG9vbHRpcFBvc2l0aW9uLm1vdmVYQ3Jvc3NoYWlycyhsK2kvMik6by50b29sdGlwUG9zaXRpb24ubW92ZVhDcm9zc2hhaXJzKGwpKSwhby5maXhlZFRvb2x0aXAmJighci5jb25maWcudG9vbHRpcC5zaGFyZWR8fHIuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJm8udG9vbHRpcFV0aWwuaGFzQmFycygpKSYmKGYmJihoLT1vLnRvb2x0aXBSZWN0LnR0V2lkdGgpPDAmJihoPTApLCFmfHxyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZvLnRvb2x0aXBVdGlsLmhhc0JhcnMoKXx8KGM9YytnLTIqKHIuZ2xvYmFscy5zZXJpZXNbZV1bdV08MD9nOjApKSxjPWMrci5nbG9iYWxzLnRyYW5zbGF0ZVktby50b29sdGlwUmVjdC50dEhlaWdodC8yLG4uc3R5bGUubGVmdD1oK3IuZ2xvYmFscy50cmFuc2xhdGVYK1wicHhcIixuLnN0eWxlLnRvcD1jK1wicHhcIil9fSx7a2V5OlwiZ2V0QmFyVG9vbHRpcFhZXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQuZSxhPXQub3B0LHM9dGhpcy53LHI9bnVsbCxvPXRoaXMudHRDdHgsbj0wLGw9MCxoPTAsYz0wLGQ9MCxnPWkudGFyZ2V0LmNsYXNzTGlzdDtpZihnLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1iYXItYXJlYVwiKXx8Zy5jb250YWlucyhcImFwZXhjaGFydHMtY2FuZGxlc3RpY2stYXJlYVwiKXx8Zy5jb250YWlucyhcImFwZXhjaGFydHMtYm94UGxvdC1hcmVhXCIpfHxnLmNvbnRhaW5zKFwiYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpKXt2YXIgdT1pLnRhcmdldCxwPXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZj1hLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx4PXAuaGVpZ2h0O2Q9cC5oZWlnaHQ7dmFyIGI9cC53aWR0aCx2PXBhcnNlSW50KHUuZ2V0QXR0cmlidXRlKFwiY3hcIiksMTApLG09cGFyc2VJbnQodS5nZXRBdHRyaWJ1dGUoXCJjeVwiKSwxMCk7Yz1wYXJzZUZsb2F0KHUuZ2V0QXR0cmlidXRlKFwiYmFyV2lkdGhcIikpO3ZhciB5PVwidG91Y2htb3ZlXCI9PT1pLnR5cGU/aS50b3VjaGVzWzBdLmNsaWVudFg6aS5jbGllbnRYO3I9cGFyc2VJbnQodS5nZXRBdHRyaWJ1dGUoXCJqXCIpLDEwKSxuPXBhcnNlSW50KHUucGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksMTApLTE7dmFyIHc9dS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXJhbmdlLXkxXCIpLGs9dS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXJhbmdlLXkyXCIpO3MuZ2xvYmFscy5jb21ib0NoYXJ0cyYmKG49cGFyc2VJbnQodS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcImRhdGE6cmVhbEluZGV4XCIpLDEwKSk7dmFyIEE9ZnVuY3Rpb24odCl7cmV0dXJuIHMuZ2xvYmFscy5pc1hOdW1lcmljP3YtYi8yOmUuaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj92K2IvMjp2LW8uZGF0YVBvaW50c0RpdmlkZWRXaWR0aCtiLzJ9LFM9ZnVuY3Rpb24oKXtyZXR1cm4gbS1vLmRhdGFQb2ludHNEaXZpZGVkSGVpZ2h0K3gvMi1vLnRvb2x0aXBSZWN0LnR0SGVpZ2h0LzJ9O28udG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoe3R0SXRlbXM6YS50dEl0ZW1zLGk6bixqOnIseTE6dz9wYXJzZUludCh3LDEwKTpudWxsLHkyOms/cGFyc2VJbnQoaywxMCk6bnVsbCxzaGFyZWQ6IW8uc2hvd09uSW50ZXJzZWN0JiZzLmNvbmZpZy50b29sdGlwLnNoYXJlZCxlOml9KSxzLmNvbmZpZy50b29sdGlwLmZvbGxvd0N1cnNvcj9zLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPyhsPXktZi5sZWZ0KzE1LGg9UygpKToobD1BKCksaD1pLmNsaWVudFktZi50b3Atby50b29sdGlwUmVjdC50dEhlaWdodC8yLTE1KTpzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsPygobD12KTxvLnh5UmF0aW9zLmJhc2VMaW5lSW52ZXJ0ZWRZJiYobD12LW8udG9vbHRpcFJlY3QudHRXaWR0aCksaD1TKCkpOihsPUEoKSxoPW0pfXJldHVybnt4OmwseTpoLGJhckhlaWdodDpkLGJhcldpZHRoOmMsaTpuLGo6cn19fV0pLHR9KCkseHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMudHRDdHg9ZX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1hheGlzVG9vbHRpcFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eCxpPVwiYm90dG9tXCI9PT10LmNvbmZpZy54YXhpcy5wb3NpdGlvbjtlLnhheGlzT2ZmWT1pP3QuZ2xvYmFscy5ncmlkSGVpZ2h0KzE6LXQuZ2xvYmFscy54QXhpc0hlaWdodC10LmNvbmZpZy54YXhpcy5heGlzVGlja3MuaGVpZ2h0KzM7dmFyIGE9aT9cImFwZXhjaGFydHMteGF4aXN0b29sdGlwIGFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbVwiOlwiYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAgYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wXCIscz10Lmdsb2JhbHMuZG9tLmVsV3JhcDtlLmlzWEF4aXNUb29sdGlwRW5hYmxlZCYmKG51bGw9PT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteGF4aXN0b29sdGlwXCIpJiYoZS54YXhpc1Rvb2x0aXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnhheGlzVG9vbHRpcC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLGErXCIgYXBleGNoYXJ0cy10aGVtZS1cIit0LmNvbmZpZy50b29sdGlwLnRoZW1lKSxzLmFwcGVuZENoaWxkKGUueGF4aXNUb29sdGlwKSxlLnhheGlzVG9vbHRpcFRleHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnhheGlzVG9vbHRpcFRleHQuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRleHRcIiksZS54YXhpc1Rvb2x0aXBUZXh0LnN0eWxlLmZvbnRGYW1pbHk9dC5jb25maWcueGF4aXMudG9vbHRpcC5zdHlsZS5mb250RmFtaWx5fHx0LmNvbmZpZy5jaGFydC5mb250RmFtaWx5LGUueGF4aXNUb29sdGlwVGV4dC5zdHlsZS5mb250U2l6ZT10LmNvbmZpZy54YXhpcy50b29sdGlwLnN0eWxlLmZvbnRTaXplLGUueGF4aXNUb29sdGlwLmFwcGVuZENoaWxkKGUueGF4aXNUb29sdGlwVGV4dCkpKX19LHtrZXk6XCJkcmF3WWF4aXNUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53LGU9dGhpcy50dEN0eCxpPWZ1bmN0aW9uKGkpe3ZhciBhPXQuY29uZmlnLnlheGlzW2ldLm9wcG9zaXRlfHx0LmNvbmZpZy55YXhpc1tpXS5jcm9zc2hhaXJzLm9wcG9zaXRlO2UueWF4aXNPZmZYPWE/dC5nbG9iYWxzLmdyaWRXaWR0aCsxOjE7dmFyIHM9XCJhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcCBhcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1cIi5jb25jYXQoaSxhP1wiIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0XCI6XCIgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdFwiKTt0Lmdsb2JhbHMueUF4aXNTYW1lU2NhbGVJbmRpY2VzLm1hcCgoZnVuY3Rpb24oZSxhKXtlLm1hcCgoZnVuY3Rpb24oZSxhKXthPT09aSYmKHMrPXQuY29uZmlnLnlheGlzW2FdLnNob3c/XCIgXCI6XCIgYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtaGlkZGVuXCIpfSkpfSkpO3ZhciByPXQuZ2xvYmFscy5kb20uZWxXcmFwO251bGw9PT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwIGFwZXhjaGFydHMteWF4aXN0b29sdGlwLVwiLmNvbmNhdChpKSkmJihlLnlheGlzVG9vbHRpcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGUueWF4aXNUb29sdGlwLnNldEF0dHJpYnV0ZShcImNsYXNzXCIscytcIiBhcGV4Y2hhcnRzLXRoZW1lLVwiK3QuY29uZmlnLnRvb2x0aXAudGhlbWUpLHIuYXBwZW5kQ2hpbGQoZS55YXhpc1Rvb2x0aXApLDA9PT1pJiYoZS55YXhpc1Rvb2x0aXBUZXh0PVtdKSxlLnlheGlzVG9vbHRpcFRleHRbaV09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnlheGlzVG9vbHRpcFRleHRbaV0uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMteWF4aXN0b29sdGlwLXRleHRcIiksZS55YXhpc1Rvb2x0aXAuYXBwZW5kQ2hpbGQoZS55YXhpc1Rvb2x0aXBUZXh0W2ldKSl9LGE9MDthPHQuY29uZmlnLnlheGlzLmxlbmd0aDthKyspaShhKX19LHtrZXk6XCJzZXRYQ3Jvc3NoYWlyV2lkdGhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPXRoaXMudHRDdHgsaT1lLmdldEVsWENyb3NzaGFpcnMoKTtpZihlLnhjcm9zc2hhaXJzV2lkdGg9cGFyc2VJbnQodC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCwxMCksdC5nbG9iYWxzLmNvbWJvQ2hhcnRzKXt2YXIgYT10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtYmFyLWFyZWFcIik7aWYobnVsbCE9PWEmJlwiYmFyV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBzPXBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoXCJiYXJXaWR0aFwiKSk7ZS54Y3Jvc3NoYWlyc1dpZHRoPXN9ZWxzZSBpZihcInRpY2tXaWR0aFwiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIHI9dC5nbG9iYWxzLmxhYmVscy5sZW5ndGg7ZS54Y3Jvc3NoYWlyc1dpZHRoPXQuZ2xvYmFscy5ncmlkV2lkdGgvcn19ZWxzZSBpZihcInRpY2tXaWR0aFwiPT09dC5jb25maWcueGF4aXMuY3Jvc3NoYWlycy53aWR0aCl7dmFyIG89dC5nbG9iYWxzLmxhYmVscy5sZW5ndGg7ZS54Y3Jvc3NoYWlyc1dpZHRoPXQuZ2xvYmFscy5ncmlkV2lkdGgvb31lbHNlIGlmKFwiYmFyV2lkdGhcIj09PXQuY29uZmlnLnhheGlzLmNyb3NzaGFpcnMud2lkdGgpe3ZhciBuPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVwiKTtpZihudWxsIT09bil7dmFyIGw9cGFyc2VGbG9hdChuLmdldEF0dHJpYnV0ZShcImJhcldpZHRoXCIpKTtlLnhjcm9zc2hhaXJzV2lkdGg9bH1lbHNlIGUueGNyb3NzaGFpcnNXaWR0aD0xfXQuZ2xvYmFscy5pc0Jhckhvcml6b250YWwmJihlLnhjcm9zc2hhaXJzV2lkdGg9MCksbnVsbCE9PWkmJmUueGNyb3NzaGFpcnNXaWR0aD4wJiZpLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsZS54Y3Jvc3NoYWlyc1dpZHRoKX19LHtrZXk6XCJoYW5kbGVZQ3Jvc3NoYWlyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncsZT10aGlzLnR0Q3R4O2UueWNyb3NzaGFpcnM9dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzXCIpLGUueWNyb3NzaGFpcnNIaWRkZW49dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlblwiKX19LHtrZXk6XCJkcmF3WWF4aXNUb29sdGlwVGV4dFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLnR0Q3R4LHM9dGhpcy53LHI9cy5nbG9iYWxzLnlMYWJlbEZvcm1hdHRlcnNbdF07aWYoYS55YXhpc1Rvb2x0aXBzW3RdKXt2YXIgbz1hLmdldEVsR3JpZCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49KGUtby50b3ApKmkueVJhdGlvW3RdLGw9cy5nbG9iYWxzLm1heFlBcnJbdF0tcy5nbG9iYWxzLm1pbllBcnJbdF0saD1zLmdsb2JhbHMubWluWUFyclt0XSsobC1uKTthLnRvb2x0aXBQb3NpdGlvbi5tb3ZlWUNyb3NzaGFpcnMoZS1vLnRvcCksYS55YXhpc1Rvb2x0aXBUZXh0W3RdLmlubmVySFRNTD1yKGgpLGEudG9vbHRpcFBvc2l0aW9uLm1vdmVZQXhpc1Rvb2x0aXAodCl9fX1dKSx0fSgpLGJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLnRDb25maWc9aS5jb25maWcudG9vbHRpcCx0aGlzLnRvb2x0aXBVdGlsPW5ldyBkdCh0aGlzKSx0aGlzLnRvb2x0aXBMYWJlbHM9bmV3IGd0KHRoaXMpLHRoaXMudG9vbHRpcFBvc2l0aW9uPW5ldyB1dCh0aGlzKSx0aGlzLm1hcmtlcj1uZXcgcHQodGhpcyksdGhpcy5pbnRlcnNlY3Q9bmV3IGZ0KHRoaXMpLHRoaXMuYXhlc1Rvb2x0aXA9bmV3IHh0KHRoaXMpLHRoaXMuc2hvd09uSW50ZXJzZWN0PXRoaXMudENvbmZpZy5pbnRlcnNlY3QsdGhpcy5zaG93VG9vbHRpcFRpdGxlPXRoaXMudENvbmZpZy54LnNob3csdGhpcy5maXhlZFRvb2x0aXA9dGhpcy50Q29uZmlnLmZpeGVkLmVuYWJsZWQsdGhpcy54YXhpc1Rvb2x0aXA9bnVsbCx0aGlzLnlheGlzVFRFbHM9bnVsbCx0aGlzLmlzQmFyU2hhcmVkPSFpLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLnRDb25maWcuc2hhcmVkLHRoaXMubGFzdEhvdmVyVGltZT1EYXRlLm5vdygpfXJldHVybiByKHQsW3trZXk6XCJnZXRFbFRvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdHx8KHQ9dGhpcyksdC53Lmdsb2JhbHMuZG9tLmJhc2VFbD90LncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy10b29sdGlwXCIpOm51bGx9fSx7a2V5OlwiZ2V0RWxYQ3Jvc3NoYWlyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzXCIpfX0se2tleTpcImdldEVsR3JpZFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWdyaWRcIil9fSx7a2V5OlwiZHJhd1Rvb2x0aXBcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7dGhpcy54eVJhdGlvcz10LHRoaXMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkPWUuY29uZmlnLnhheGlzLnRvb2x0aXAuZW5hYmxlZCYmZS5nbG9iYWxzLmF4aXNDaGFydHMsdGhpcy55YXhpc1Rvb2x0aXBzPWUuY29uZmlnLnlheGlzLm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4hISh0LnNob3cmJnQudG9vbHRpcC5lbmFibGVkJiZlLmdsb2JhbHMuYXhpc0NoYXJ0cyl9KSksdGhpcy5hbGxUb29sdGlwU2VyaWVzR3JvdXBzPVtdLGUuZ2xvYmFscy5heGlzQ2hhcnRzfHwodGhpcy5zaG93VG9vbHRpcFRpdGxlPSExKTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2lmKGkuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcFwiKSxlLmNvbmZpZy50b29sdGlwLmNzc0NsYXNzJiZpLmNsYXNzTGlzdC5hZGQoZS5jb25maWcudG9vbHRpcC5jc3NDbGFzcyksaS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10aGVtZS1cIi5jb25jYXQodGhpcy50Q29uZmlnLnRoZW1lKSksZS5nbG9iYWxzLmRvbS5lbFdyYXAuYXBwZW5kQ2hpbGQoaSksZS5nbG9iYWxzLmF4aXNDaGFydHMpe3RoaXMuYXhlc1Rvb2x0aXAuZHJhd1hheGlzVG9vbHRpcCgpLHRoaXMuYXhlc1Rvb2x0aXAuZHJhd1lheGlzVG9vbHRpcCgpLHRoaXMuYXhlc1Rvb2x0aXAuc2V0WENyb3NzaGFpcldpZHRoKCksdGhpcy5heGVzVG9vbHRpcC5oYW5kbGVZQ3Jvc3NoYWlyKCk7dmFyIGE9bmV3IFYodGhpcy5jdHgpO3RoaXMueEF4aXNUaWNrc1Bvc2l0aW9ucz1hLmdldFhBeGlzVGlja3NQb3NpdGlvbnMoKX1pZighZS5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhdGhpcy50Q29uZmlnLmludGVyc2VjdCYmXCJyYW5nZUJhclwiIT09ZS5jb25maWcuY2hhcnQudHlwZXx8dGhpcy50Q29uZmlnLnNoYXJlZHx8KHRoaXMuc2hvd09uSW50ZXJzZWN0PSEwKSwwIT09ZS5jb25maWcubWFya2Vycy5zaXplJiYwIT09ZS5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemV8fHRoaXMubWFya2VyLmRyYXdEeW5hbWljUG9pbnRzKHRoaXMpLGUuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXMubGVuZ3RoIT09ZS5nbG9iYWxzLnNlcmllcy5sZW5ndGgpe3RoaXMuZGF0YVBvaW50c0RpdmlkZWRIZWlnaHQ9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLmRhdGFQb2ludHMsdGhpcy5kYXRhUG9pbnRzRGl2aWRlZFdpZHRoPWUuZ2xvYmFscy5ncmlkV2lkdGgvZS5nbG9iYWxzLmRhdGFQb2ludHMsdGhpcy5zaG93VG9vbHRpcFRpdGxlJiYodGhpcy50b29sdGlwVGl0bGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLnRvb2x0aXBUaXRsZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlXCIpLHRoaXMudG9vbHRpcFRpdGxlLnN0eWxlLmZvbnRGYW1pbHk9dGhpcy50Q29uZmlnLnN0eWxlLmZvbnRGYW1pbHl8fGUuY29uZmlnLmNoYXJ0LmZvbnRGYW1pbHksdGhpcy50b29sdGlwVGl0bGUuc3R5bGUuZm9udFNpemU9dGhpcy50Q29uZmlnLnN0eWxlLmZvbnRTaXplLGkuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwVGl0bGUpKTt2YXIgcz1lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aDsoZS5nbG9iYWxzLnh5Q2hhcnRzfHxlLmdsb2JhbHMuY29tYm9DaGFydHMpJiZ0aGlzLnRDb25maWcuc2hhcmVkJiYocz10aGlzLnNob3dPbkludGVyc2VjdD8xOmUuZ2xvYmFscy5zZXJpZXMubGVuZ3RoKSx0aGlzLmxlZ2VuZExhYmVscz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtbGVnZW5kLXRleHRcIiksdGhpcy50dEl0ZW1zPXRoaXMuY3JlYXRlVFRFbGVtZW50cyhzKSx0aGlzLmFkZFNWR0V2ZW50cygpfX19LHtrZXk6XCJjcmVhdGVUVEVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMsaT10aGlzLncsYT1bXSxzPXRoaXMuZ2V0RWxUb29sdGlwKCkscj1mdW5jdGlvbihyKXt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO28uY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXBcIiksby5zdHlsZS5vcmRlcj1pLmNvbmZpZy50b29sdGlwLmludmVyc2VPcmRlcj90LXI6cisxLGUudENvbmZpZy5zaGFyZWQmJmUudENvbmZpZy5lbmFibGVkT25TZXJpZXMmJkFycmF5LmlzQXJyYXkoZS50Q29uZmlnLmVuYWJsZWRPblNlcmllcykmJmUudENvbmZpZy5lbmFibGVkT25TZXJpZXMuaW5kZXhPZihyKTwwJiZvLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLWhpZGRlblwiKTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtuLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyXCIpLG4uc3R5bGUuYmFja2dyb3VuZENvbG9yPWkuZ2xvYmFscy5jb2xvcnNbcl0sby5hcHBlbmRDaGlsZChuKTt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2wuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC10ZXh0XCIpLGwuc3R5bGUuZm9udEZhbWlseT1lLnRDb25maWcuc3R5bGUuZm9udEZhbWlseXx8aS5jb25maWcuY2hhcnQuZm9udEZhbWlseSxsLnN0eWxlLmZvbnRTaXplPWUudENvbmZpZy5zdHlsZS5mb250U2l6ZSxbXCJ5XCIsXCJnb2Fsc1wiLFwielwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2UuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtdG9vbHRpcC1cIi5jb25jYXQodCxcIi1ncm91cFwiKSk7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7aS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHQtXCIuY29uY2F0KHQsXCItbGFiZWxcIikpLGUuYXBwZW5kQ2hpbGQoaSk7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7YS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy10b29sdGlwLXRleHQtXCIuY29uY2F0KHQsXCItdmFsdWVcIikpLGUuYXBwZW5kQ2hpbGQoYSksbC5hcHBlbmRDaGlsZChlKX0pKSxvLmFwcGVuZENoaWxkKGwpLHMuYXBwZW5kQ2hpbGQobyksYS5wdXNoKG8pfSxvPTA7bzx0O28rKylyKG8pO3JldHVybiBhfX0se2tleTpcImFkZFNWR0V2ZW50c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5jb25maWcuY2hhcnQudHlwZSxpPXRoaXMuZ2V0RWxUb29sdGlwKCksYT0hKFwiYmFyXCIhPT1lJiZcImNhbmRsZXN0aWNrXCIhPT1lJiZcImJveFBsb3RcIiE9PWUmJlwicmFuZ2VCYXJcIiE9PWUpLHM9XCJhcmVhXCI9PT1lfHxcImxpbmVcIj09PWV8fFwic2NhdHRlclwiPT09ZXx8XCJidWJibGVcIj09PWV8fFwicmFkYXJcIj09PWUscj10Lmdsb2JhbHMuZG9tLlBhcGVyLm5vZGUsbz10aGlzLmdldEVsR3JpZCgpO28mJih0aGlzLnNlcmllc0JvdW5kPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3ZhciBuLGw9W10saD1bXSxjPXtob3ZlckFyZWE6cixlbEdyaWQ6byx0b29sdGlwRWw6aSx0b29sdGlwWTpsLHRvb2x0aXBYOmgsdHRJdGVtczp0aGlzLnR0SXRlbXN9O2lmKHQuZ2xvYmFscy5heGlzQ2hhcnRzJiYocz9uPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNbZGF0YVxcXFw6bG9uZ2VzdFNlcmllcz0ndHJ1ZSddIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTphP249dC5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1iYXItYXJlYSwgLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1ib3hQbG90LWFyZWEsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy1yYW5nZWJhci1hcmVhXCIpOlwiaGVhdG1hcFwiIT09ZSYmXCJ0cmVlbWFwXCIhPT1lfHwobj10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMtc2VyaWVzIC5hcGV4Y2hhcnRzLWhlYXRtYXAsIC5hcGV4Y2hhcnRzLXNlcmllcyAuYXBleGNoYXJ0cy10cmVlbWFwXCIpKSxuJiZuLmxlbmd0aCkpZm9yKHZhciBkPTA7ZDxuLmxlbmd0aDtkKyspbC5wdXNoKG5bZF0uZ2V0QXR0cmlidXRlKFwiY3lcIikpLGgucHVzaChuW2RdLmdldEF0dHJpYnV0ZShcImN4XCIpKTtpZih0Lmdsb2JhbHMueHlDaGFydHMmJiF0aGlzLnNob3dPbkludGVyc2VjdHx8dC5nbG9iYWxzLmNvbWJvQ2hhcnRzJiYhdGhpcy5zaG93T25JbnRlcnNlY3R8fGEmJnRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiZ0aGlzLnRDb25maWcuc2hhcmVkKXRoaXMuYWRkUGF0aHNFdmVudExpc3RlbmVycyhbcl0sYyk7ZWxzZSBpZihhJiYhdC5nbG9iYWxzLmNvbWJvQ2hhcnRzfHxzJiZ0aGlzLnNob3dPbkludGVyc2VjdCl0aGlzLmFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVycyhjKTtlbHNlIGlmKCF0Lmdsb2JhbHMuYXhpc0NoYXJ0c3x8XCJoZWF0bWFwXCI9PT1lfHxcInRyZWVtYXBcIj09PWUpe3ZhciBnPXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1zZXJpZXNcIik7dGhpcy5hZGRQYXRoc0V2ZW50TGlzdGVuZXJzKGcsYyl9aWYodGhpcy5zaG93T25JbnRlcnNlY3Qpe3ZhciB1PXQuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYXBleGNoYXJ0cy1saW5lLXNlcmllcyAuYXBleGNoYXJ0cy1tYXJrZXIsIC5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLW1hcmtlclwiKTt1Lmxlbmd0aD4wJiZ0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnModSxjKSx0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmIXRoaXMudENvbmZpZy5zaGFyZWQmJnRoaXMuYWRkRGF0YXBvaW50RXZlbnRzTGlzdGVuZXJzKGMpfX19LHtrZXk6XCJkcmF3Rml4ZWRUb29sdGlwUmVjdFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dGhpcy5nZXRFbFRvb2x0aXAoKSxpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1pLndpZHRoKzEwLHM9aS5oZWlnaHQrMTAscj10aGlzLnRDb25maWcuZml4ZWQub2Zmc2V0WCxvPXRoaXMudENvbmZpZy5maXhlZC5vZmZzZXRZLG49dGhpcy50Q29uZmlnLmZpeGVkLnBvc2l0aW9uLnRvTG93ZXJDYXNlKCk7cmV0dXJuIG4uaW5kZXhPZihcInJpZ2h0XCIpPi0xJiYocj1yK3QuZ2xvYmFscy5zdmdXaWR0aC1hKzEwKSxuLmluZGV4T2YoXCJib3R0b21cIik+LTEmJihvPW8rdC5nbG9iYWxzLnN2Z0hlaWdodC1zLTEwKSxlLnN0eWxlLmxlZnQ9citcInB4XCIsZS5zdHlsZS50b3A9bytcInB4XCIse3g6cix5Om8sdHRXaWR0aDphLHR0SGVpZ2h0OnN9fX0se2tleTpcImFkZERhdGFwb2ludEV2ZW50c0xpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvckFsbChcIi5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlciwgLmFwZXhjaGFydHMtYmFyLWFyZWEsIC5hcGV4Y2hhcnRzLWNhbmRsZXN0aWNrLWFyZWEsIC5hcGV4Y2hhcnRzLWJveFBsb3QtYXJlYSwgLmFwZXhjaGFydHMtcmFuZ2ViYXItYXJlYVwiKTt0aGlzLmFkZFBhdGhzRXZlbnRMaXN0ZW5lcnMoZSx0KX19LHtrZXk6XCJhZGRQYXRoc0V2ZW50TGlzdGVuZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcyxhPWZ1bmN0aW9uKGEpe3ZhciBzPXtwYXRoczp0W2FdLHRvb2x0aXBFbDplLnRvb2x0aXBFbCx0b29sdGlwWTplLnRvb2x0aXBZLHRvb2x0aXBYOmUudG9vbHRpcFgsZWxHcmlkOmUuZWxHcmlkLGhvdmVyQXJlYTplLmhvdmVyQXJlYSx0dEl0ZW1zOmUudHRJdGVtc307W1wibW91c2Vtb3ZlXCIsXCJtb3VzZXVwXCIsXCJ0b3VjaG1vdmVcIixcIm1vdXNlb3V0XCIsXCJ0b3VjaGVuZFwiXS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2FdLmFkZEV2ZW50TGlzdGVuZXIoZSxpLm9uU2VyaWVzSG92ZXIuYmluZChpLHMpLHtjYXB0dXJlOiExLHBhc3NpdmU6ITB9KX0pKX0scz0wO3M8dC5sZW5ndGg7cysrKWEocyl9fSx7a2V5Olwib25TZXJpZXNIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxhPURhdGUubm93KCktdGhpcy5sYXN0SG92ZXJUaW1lO2E+PTEwMD90aGlzLnNlcmllc0hvdmVyKHQsZSk6KGNsZWFyVGltZW91dCh0aGlzLnNlcmllc0hvdmVyVGltZW91dCksdGhpcy5zZXJpZXNIb3ZlclRpbWVvdXQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLnNlcmllc0hvdmVyKHQsZSl9KSwxMDAtYSkpfX0se2tleTpcInNlcmllc0hvdmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO3RoaXMubGFzdEhvdmVyVGltZT1EYXRlLm5vdygpO3ZhciBhPVtdLHM9dGhpcy53O3MuY29uZmlnLmNoYXJ0Lmdyb3VwJiYoYT10aGlzLmN0eC5nZXRHcm91cGVkQ2hhcnRzKCkpLHMuZ2xvYmFscy5heGlzQ2hhcnRzJiYocy5nbG9iYWxzLm1pblg9PT0tMS8wJiZzLmdsb2JhbHMubWF4WD09PTEvMHx8MD09PXMuZ2xvYmFscy5kYXRhUG9pbnRzKXx8KGEubGVuZ3RoP2EuZm9yRWFjaCgoZnVuY3Rpb24oYSl7dmFyIHM9aS5nZXRFbFRvb2x0aXAoYSkscj17cGF0aHM6dC5wYXRocyx0b29sdGlwRWw6cyx0b29sdGlwWTp0LnRvb2x0aXBZLHRvb2x0aXBYOnQudG9vbHRpcFgsZWxHcmlkOnQuZWxHcmlkLGhvdmVyQXJlYTp0LmhvdmVyQXJlYSx0dEl0ZW1zOmEudy5nbG9iYWxzLnRvb2x0aXAudHRJdGVtc307YS53Lmdsb2JhbHMubWluWD09PWkudy5nbG9iYWxzLm1pblgmJmEudy5nbG9iYWxzLm1heFg9PT1pLncuZ2xvYmFscy5tYXhYJiZhLncuZ2xvYmFscy50b29sdGlwLnNlcmllc0hvdmVyQnlDb250ZXh0KHtjaGFydEN0eDphLHR0Q3R4OmEudy5nbG9iYWxzLnRvb2x0aXAsb3B0OnIsZTplfSl9KSk6dGhpcy5zZXJpZXNIb3ZlckJ5Q29udGV4dCh7Y2hhcnRDdHg6dGhpcy5jdHgsdHRDdHg6dGhpcy53Lmdsb2JhbHMudG9vbHRpcCxvcHQ6dCxlOmV9KSl9fSx7a2V5Olwic2VyaWVzSG92ZXJCeUNvbnRleHRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmNoYXJ0Q3R4LGk9dC50dEN0eCxhPXQub3B0LHM9dC5lLHI9ZS53LG89dGhpcy5nZXRFbFRvb2x0aXAoKTtpZihvKXtpZihpLnRvb2x0aXBSZWN0PXt4OjAseTowLHR0V2lkdGg6by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCx0dEhlaWdodDpvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0saS5lPXMsaS50b29sdGlwVXRpbC5oYXNCYXJzKCkmJiFyLmdsb2JhbHMuY29tYm9DaGFydHMmJiFpLmlzQmFyU2hhcmVkKWlmKHRoaXMudENvbmZpZy5vbkRhdGFzZXRIb3Zlci5oaWdobGlnaHREYXRhU2VyaWVzKW5ldyBOKGUpLnRvZ2dsZVNlcmllc09uSG92ZXIocyxzLnRhcmdldC5wYXJlbnROb2RlKTtpLmZpeGVkVG9vbHRpcCYmaS5kcmF3Rml4ZWRUb29sdGlwUmVjdCgpLHIuZ2xvYmFscy5heGlzQ2hhcnRzP2kuYXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOnMsb3B0OmEsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pOmkubm9uQXhpc0NoYXJ0c1Rvb2x0aXBzKHtlOnMsb3B0OmEsdG9vbHRpcFJlY3Q6aS50b29sdGlwUmVjdH0pfX19LHtrZXk6XCJheGlzQ2hhcnRzVG9vbHRpcHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLGE9dC5lLHM9dC5vcHQscj10aGlzLncsbz1zLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPVwidG91Y2htb3ZlXCI9PT1hLnR5cGU/YS50b3VjaGVzWzBdLmNsaWVudFg6YS5jbGllbnRYLGw9XCJ0b3VjaG1vdmVcIj09PWEudHlwZT9hLnRvdWNoZXNbMF0uY2xpZW50WTphLmNsaWVudFk7aWYodGhpcy5jbGllbnRZPWwsdGhpcy5jbGllbnRYPW4sci5nbG9iYWxzLmNhcHR1cmVkU2VyaWVzSW5kZXg9LTEsci5nbG9iYWxzLmNhcHR1cmVkRGF0YVBvaW50SW5kZXg9LTEsbDxvLnRvcHx8bD5vLnRvcCtvLmhlaWdodCl0aGlzLmhhbmRsZU1vdXNlT3V0KHMpO2Vsc2V7aWYoQXJyYXkuaXNBcnJheSh0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzKSYmIXIuY29uZmlnLnRvb2x0aXAuc2hhcmVkKXt2YXIgaD1wYXJzZUludChzLnBhdGhzLmdldEF0dHJpYnV0ZShcImluZGV4XCIpLDEwKTtpZih0aGlzLnRDb25maWcuZW5hYmxlZE9uU2VyaWVzLmluZGV4T2YoaCk8MClyZXR1cm4gdm9pZCB0aGlzLmhhbmRsZU1vdXNlT3V0KHMpfXZhciBjPXRoaXMuZ2V0RWxUb29sdGlwKCksZD10aGlzLmdldEVsWENyb3NzaGFpcnMoKSxnPXIuZ2xvYmFscy54eUNoYXJ0c3x8XCJiYXJcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGUmJiFyLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy50Q29uZmlnLnNoYXJlZHx8ci5nbG9iYWxzLmNvbWJvQ2hhcnRzJiZ0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKTtpZihcIm1vdXNlbW92ZVwiPT09YS50eXBlfHxcInRvdWNobW92ZVwiPT09YS50eXBlfHxcIm1vdXNldXBcIj09PWEudHlwZSl7aWYoci5nbG9iYWxzLmNvbGxhcHNlZFNlcmllcy5sZW5ndGgrci5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllcy5sZW5ndGg9PT1yLmdsb2JhbHMuc2VyaWVzLmxlbmd0aClyZXR1cm47bnVsbCE9PWQmJmQuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpO3ZhciB1PXRoaXMueWF4aXNUb29sdGlwcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEwPT09dH0pKTtpZihudWxsIT09dGhpcy55Y3Jvc3NoYWlycyYmdS5sZW5ndGgmJnRoaXMueWNyb3NzaGFpcnMuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpLGcmJiF0aGlzLnNob3dPbkludGVyc2VjdCl0aGlzLmhhbmRsZVN0aWNreVRvb2x0aXAoYSxuLGwscyk7ZWxzZSBpZihcImhlYXRtYXBcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwidHJlZW1hcFwiPT09ci5jb25maWcuY2hhcnQudHlwZSl7dmFyIHA9dGhpcy5pbnRlcnNlY3QuaGFuZGxlSGVhdFRyZWVUb29sdGlwKHtlOmEsb3B0OnMseDplLHk6aSx0eXBlOnIuY29uZmlnLmNoYXJ0LnR5cGV9KTtlPXAueCxpPXAueSxjLnN0eWxlLmxlZnQ9ZStcInB4XCIsYy5zdHlsZS50b3A9aStcInB4XCJ9ZWxzZSB0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmdGhpcy5pbnRlcnNlY3QuaGFuZGxlQmFyVG9vbHRpcCh7ZTphLG9wdDpzfSksdGhpcy50b29sdGlwVXRpbC5oYXNNYXJrZXJzKCkmJnRoaXMuaW50ZXJzZWN0LmhhbmRsZU1hcmtlclRvb2x0aXAoe2U6YSxvcHQ6cyx4OmUseTppfSk7aWYodGhpcy55YXhpc1Rvb2x0aXBzLmxlbmd0aClmb3IodmFyIGY9MDtmPHIuY29uZmlnLnlheGlzLmxlbmd0aDtmKyspdGhpcy5heGVzVG9vbHRpcC5kcmF3WWF4aXNUb29sdGlwVGV4dChmLGwsdGhpcy54eVJhdGlvcyk7cy50b29sdGlwRWwuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtYWN0aXZlXCIpfWVsc2VcIm1vdXNlb3V0XCIhPT1hLnR5cGUmJlwidG91Y2hlbmRcIiE9PWEudHlwZXx8dGhpcy5oYW5kbGVNb3VzZU91dChzKX19fSx7a2V5Olwibm9uQXhpc0NoYXJ0c1Rvb2x0aXBzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5lLGk9dC5vcHQsYT10LnRvb2x0aXBSZWN0LHM9dGhpcy53LHI9aS5wYXRocy5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksbz10aGlzLmdldEVsVG9vbHRpcCgpLG49cy5nbG9iYWxzLmRvbS5lbFdyYXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoXCJtb3VzZW1vdmVcIj09PWUudHlwZXx8XCJ0b3VjaG1vdmVcIj09PWUudHlwZSl7by5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyh7dHRJdGVtczppLnR0SXRlbXMsaTpwYXJzZUludChyLDEwKS0xLHNoYXJlZDohMX0pO3ZhciBsPXMuZ2xvYmFscy5jbGllbnRYLW4ubGVmdC1hLnR0V2lkdGgvMixoPXMuZ2xvYmFscy5jbGllbnRZLW4udG9wLWEudHRIZWlnaHQtMTA7aWYoby5zdHlsZS5sZWZ0PWwrXCJweFwiLG8uc3R5bGUudG9wPWgrXCJweFwiLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpe3ZhciBjPXItMSxkPSgwLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXIpKHRoaXMubGVnZW5kTGFiZWxzW2NdLmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpLHtzZXJpZXNJbmRleDpjLGRhdGFQb2ludEluZGV4OmMsdzpzfSk7dGhpcy5sZWdlbmRMYWJlbHNbY10uaW5uZXJIVE1MPWR9fWVsc2VcIm1vdXNlb3V0XCIhPT1lLnR5cGUmJlwidG91Y2hlbmRcIiE9PWUudHlwZXx8KG8uY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHMuY29uZmlnLmxlZ2VuZC50b29sdGlwSG92ZXJGb3JtYXR0ZXImJnRoaXMubGVnZW5kTGFiZWxzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKFwiZGF0YTpkZWZhdWx0LXRleHRcIik7dC5pbm5lckhUTUw9ZGVjb2RlVVJJQ29tcG9uZW50KGUpfSkpKX19LHtrZXk6XCJoYW5kbGVTdGlja3lUb29sdGlwXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9dGhpcy50b29sdGlwVXRpbC5nZXROZWFyZXN0VmFsdWVzKHtjb250ZXh0OnRoaXMsaG92ZXJBcmVhOmEuaG92ZXJBcmVhLGVsR3JpZDphLmVsR3JpZCxjbGllbnRYOmUsY2xpZW50WTppfSksbz1yLmosbj1yLmNhcHR1cmVkU2VyaWVzO3MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKG4pJiYobj1udWxsKTt2YXIgbD1hLmVsR3JpZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihyLmhvdmVyWDwwfHxyLmhvdmVyWD5sLndpZHRoKXRoaXMuaGFuZGxlTW91c2VPdXQoYSk7ZWxzZSBpZihudWxsIT09bil0aGlzLmhhbmRsZVN0aWNreUNhcHR1cmVkU2VyaWVzKHQsbixhLG8pO2Vsc2UgaWYodGhpcy50b29sdGlwVXRpbC5pc1hvdmVybGFwKG8pfHxzLmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsKXt2YXIgaD1zLmdsb2JhbHMuc2VyaWVzLmZpbmRJbmRleCgoZnVuY3Rpb24odCxlKXtyZXR1cm4hcy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5jbHVkZXMoZSl9KSk7dGhpcy5jcmVhdGUodCx0aGlzLGgsbyxhLnR0SXRlbXMpfX19LHtrZXk6XCJoYW5kbGVTdGlja3lDYXB0dXJlZFNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudztpZighdGhpcy50Q29uZmlnLnNoYXJlZCYmbnVsbD09PXMuZ2xvYmFscy5zZXJpZXNbZV1bYV0pcmV0dXJuIHZvaWQgdGhpcy5oYW5kbGVNb3VzZU91dChpKTtpZih2b2lkIDAhPT1zLmdsb2JhbHMuc2VyaWVzW2VdW2FdKXRoaXMudENvbmZpZy5zaGFyZWQmJnRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChhKSYmdGhpcy50b29sdGlwVXRpbC5pc0luaXRpYWxTZXJpZXNTYW1lTGVuKCk/dGhpcy5jcmVhdGUodCx0aGlzLGUsYSxpLnR0SXRlbXMpOnRoaXMuY3JlYXRlKHQsdGhpcyxlLGEsaS50dEl0ZW1zLCExKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaXNYb3ZlcmxhcChhKSl7dmFyIHI9cy5nbG9iYWxzLnNlcmllcy5maW5kSW5kZXgoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIXMuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNJbmRpY2VzLmluY2x1ZGVzKGUpfSkpO3RoaXMuY3JlYXRlKHQsdGhpcyxyLGEsaS50dEl0ZW1zKX19fSx7a2V5OlwiZGVhY3RpdmF0ZUhvdmVyRmlsdGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53LGU9bmV3IG0odGhpcy5jdHgpLGk9dC5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1iYXItYXJlYVwiKSxhPTA7YTxpLmxlbmd0aDthKyspZS5wYXRoTW91c2VMZWF2ZShpW2FdKX19LHtrZXk6XCJoYW5kbGVNb3VzZU91dFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPXRoaXMuZ2V0RWxYQ3Jvc3NoYWlycygpO2lmKHQudG9vbHRpcEVsLmNsYXNzTGlzdC5yZW1vdmUoXCJhcGV4Y2hhcnRzLWFjdGl2ZVwiKSx0aGlzLmRlYWN0aXZhdGVIb3ZlckZpbHRlcigpLFwiYnViYmxlXCIhPT1lLmNvbmZpZy5jaGFydC50eXBlJiZ0aGlzLm1hcmtlci5yZXNldFBvaW50c1NpemUoKSxudWxsIT09aSYmaS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksbnVsbCE9PXRoaXMueWNyb3NzaGFpcnMmJnRoaXMueWNyb3NzaGFpcnMuY2xhc3NMaXN0LnJlbW92ZShcImFwZXhjaGFydHMtYWN0aXZlXCIpLHRoaXMuaXNYQXhpc1Rvb2x0aXBFbmFibGVkJiZ0aGlzLnhheGlzVG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIiksdGhpcy55YXhpc1Rvb2x0aXBzLmxlbmd0aCl7bnVsbD09PXRoaXMueWF4aXNUVEVscyYmKHRoaXMueWF4aXNUVEVscz1lLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmFwZXhjaGFydHMteWF4aXN0b29sdGlwXCIpKTtmb3IodmFyIGE9MDthPHRoaXMueWF4aXNUVEVscy5sZW5ndGg7YSsrKXRoaXMueWF4aXNUVEVsc1thXS5jbGFzc0xpc3QucmVtb3ZlKFwiYXBleGNoYXJ0cy1hY3RpdmVcIil9ZS5jb25maWcubGVnZW5kLnRvb2x0aXBIb3ZlckZvcm1hdHRlciYmdGhpcy5sZWdlbmRMYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKTt0LmlubmVySFRNTD1kZWNvZGVVUklDb21wb25lbnQoZSl9KSl9fSx7a2V5OlwibWFya2VyQ2xpY2tcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9dGhpcy53O1wiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29uZmlnLmNoYXJ0LmV2ZW50cy5tYXJrZXJDbGljayYmYS5jb25maWcuY2hhcnQuZXZlbnRzLm1hcmtlckNsaWNrKHQsdGhpcy5jdHgse3Nlcmllc0luZGV4OmUsZGF0YVBvaW50SW5kZXg6aSx3OmF9KSx0aGlzLmN0eC5ldmVudHMuZmlyZUV2ZW50KFwibWFya2VyQ2xpY2tcIixbdCx0aGlzLmN0eCx7c2VyaWVzSW5kZXg6ZSxkYXRhUG9pbnRJbmRleDppLHc6YX1dKX19LHtrZXk6XCJjcmVhdGVcIix2YWx1ZTpmdW5jdGlvbih0LGksYSxzLHIpe3ZhciBvLG4sbCxoLGMsZCxnLHUscCxmLHgsYix2LHksdyxrLEE9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOm51bGwsUz10aGlzLncsQz1pO1wibW91c2V1cFwiPT09dC50eXBlJiZ0aGlzLm1hcmtlckNsaWNrKHQsYSxzKSxudWxsPT09QSYmKEE9dGhpcy50Q29uZmlnLnNoYXJlZCk7dmFyIEw9dGhpcy50b29sdGlwVXRpbC5oYXNNYXJrZXJzKGEpLFA9dGhpcy50b29sdGlwVXRpbC5nZXRFbEJhcnMoKTtpZihTLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyKXt2YXIgST1TLmNvbmZpZy5sZWdlbmQudG9vbHRpcEhvdmVyRm9ybWF0dGVyLE09QXJyYXkuZnJvbSh0aGlzLmxlZ2VuZExhYmVscyk7TS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGE6ZGVmYXVsdC10ZXh0XCIpO3QuaW5uZXJIVE1MPWRlY29kZVVSSUNvbXBvbmVudChlKX0pKTtmb3IodmFyIFQ9MDtUPE0ubGVuZ3RoO1QrKyl7dmFyIHo9TVtUXSxYPXBhcnNlSW50KHouZ2V0QXR0cmlidXRlKFwiaVwiKSwxMCksRT1kZWNvZGVVUklDb21wb25lbnQoei5nZXRBdHRyaWJ1dGUoXCJkYXRhOmRlZmF1bHQtdGV4dFwiKSksWT1JKEUse3Nlcmllc0luZGV4OkE/WDphLGRhdGFQb2ludEluZGV4OnMsdzpTfSk7aWYoQSl6LmlubmVySFRNTD1TLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKFgpPDA/WTpFO2Vsc2UgaWYoei5pbm5lckhUTUw9WD09PWE/WTpFLGE9PT1YKWJyZWFrfX12YXIgRj1lKGUoe3R0SXRlbXM6cixpOmEsajpzfSx2b2lkIDAhPT0obnVsbD09PShvPVMuZ2xvYmFscy5zZXJpZXNSYW5nZSl8fHZvaWQgMD09PW98fG51bGw9PT0obj1vW2FdKXx8dm9pZCAwPT09bnx8bnVsbD09PShsPW5bc10pfHx2b2lkIDA9PT1sfHxudWxsPT09KGg9bC55WzBdKXx8dm9pZCAwPT09aD92b2lkIDA6aC55MSkmJnt5MTpudWxsPT09KGM9Uy5nbG9iYWxzLnNlcmllc1JhbmdlKXx8dm9pZCAwPT09Y3x8bnVsbD09PShkPWNbYV0pfHx2b2lkIDA9PT1kfHxudWxsPT09KGc9ZFtzXSl8fHZvaWQgMD09PWd8fG51bGw9PT0odT1nLnlbMF0pfHx2b2lkIDA9PT11P3ZvaWQgMDp1LnkxfSksdm9pZCAwIT09KG51bGw9PT0ocD1TLmdsb2JhbHMuc2VyaWVzUmFuZ2UpfHx2b2lkIDA9PT1wfHxudWxsPT09KGY9cFthXSl8fHZvaWQgMD09PWZ8fG51bGw9PT0oeD1mW3NdKXx8dm9pZCAwPT09eHx8bnVsbD09PShiPXgueVswXSl8fHZvaWQgMD09PWI/dm9pZCAwOmIueTIpJiZ7eTI6bnVsbD09PSh2PVMuZ2xvYmFscy5zZXJpZXNSYW5nZSl8fHZvaWQgMD09PXZ8fG51bGw9PT0oeT12W2FdKXx8dm9pZCAwPT09eXx8bnVsbD09PSh3PXlbc10pfHx2b2lkIDA9PT13fHxudWxsPT09KGs9dy55WzBdKXx8dm9pZCAwPT09az92b2lkIDA6ay55Mn0pO2lmKEEpe2lmKEMudG9vbHRpcExhYmVscy5kcmF3U2VyaWVzVGV4dHMoZShlKHt9LEYpLHt9LHtzaGFyZWQ6IXRoaXMuc2hvd09uSW50ZXJzZWN0JiZ0aGlzLnRDb25maWcuc2hhcmVkfSkpLEwpUy5nbG9iYWxzLm1hcmtlcnMubGFyZ2VzdFNpemU+MD9DLm1hcmtlci5lbmxhcmdlUG9pbnRzKHMpOkMudG9vbHRpcFBvc2l0aW9uLm1vdmVEeW5hbWljUG9pbnRzT25Ib3ZlcihzKTtlbHNlIGlmKHRoaXMudG9vbHRpcFV0aWwuaGFzQmFycygpJiYodGhpcy5iYXJTZXJpZXNIZWlnaHQ9dGhpcy50b29sdGlwVXRpbC5nZXRCYXJzSGVpZ2h0KFApLHRoaXMuYmFyU2VyaWVzSGVpZ2h0PjApKXt2YXIgUj1uZXcgbSh0aGlzLmN0eCksSD1TLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIi5hcGV4Y2hhcnRzLWJhci1hcmVhW2o9J1wiLmNvbmNhdChzLFwiJ11cIikpO3RoaXMuZGVhY3RpdmF0ZUhvdmVyRmlsdGVyKCksdGhpcy50b29sdGlwUG9zaXRpb24ubW92ZVN0aWNreVRvb2x0aXBPdmVyQmFycyhzLGEpO2Zvcih2YXIgRD0wO0Q8SC5sZW5ndGg7RCsrKVIucGF0aE1vdXNlRW50ZXIoSFtEXSl9fWVsc2UgQy50b29sdGlwTGFiZWxzLmRyYXdTZXJpZXNUZXh0cyhlKHtzaGFyZWQ6ITF9LEYpKSx0aGlzLnRvb2x0aXBVdGlsLmhhc0JhcnMoKSYmQy50b29sdGlwUG9zaXRpb24ubW92ZVN0aWNreVRvb2x0aXBPdmVyQmFycyhzLGEpLEwmJkMudG9vbHRpcFBvc2l0aW9uLm1vdmVNYXJrZXJzKGEscyl9fV0pLHR9KCksdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMuYmFyQ3R4PWUsdGhpcy50b3RhbEZvcm1hdHRlcj10aGlzLncuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLnRvdGFsLmZvcm1hdHRlcix0aGlzLnRvdGFsRm9ybWF0dGVyfHwodGhpcy50b3RhbEZvcm1hdHRlcj10aGlzLncuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKX1yZXR1cm4gcih0LFt7a2V5OlwiaGFuZGxlQmFyRGF0YUxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQueCxpPXQueSxhPXQueTEscz10LnkyLHI9dC5pLG89dC5qLG49dC5yZWFsSW5kZXgsbD10Lmdyb3VwSW5kZXgsaD10LnNlcmllcyxjPXQuYmFySGVpZ2h0LGQ9dC5iYXJXaWR0aCxnPXQuYmFyWFBvc2l0aW9uLHU9dC5iYXJZUG9zaXRpb24scD10LnZpc2libGVTZXJpZXMsZj10LnJlbmRlcmVkUGF0aCx4PXRoaXMudyxiPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksdj1BcnJheS5pc0FycmF5KHRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKT90aGlzLmJhckN0eC5zdHJva2VXaWR0aFtuXTp0aGlzLmJhckN0eC5zdHJva2VXaWR0aCx5PWUrcGFyc2VGbG9hdChkKnApLHc9aStwYXJzZUZsb2F0KGMqcCk7eC5nbG9iYWxzLmlzWE51bWVyaWMmJiF4Lmdsb2JhbHMuaXNCYXJIb3Jpem9udGFsJiYoeT1lK3BhcnNlRmxvYXQoZCoocCsxKSksdz1pK3BhcnNlRmxvYXQoYyoocCsxKSktdik7dmFyIGssQT1udWxsLFM9ZSxDPWksTD17fSxQPXguY29uZmlnLmRhdGFMYWJlbHMsST10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMsTT10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMudG90YWw7dm9pZCAwIT09dSYmdGhpcy5iYXJDdHguaXNSYW5nZUJhciYmKHc9dSxDPXUpLHZvaWQgMCE9PWcmJnRoaXMuYmFyQ3R4LmlzVmVydGljYWxHcm91cGVkUmFuZ2VCYXImJih5PWcsUz1nKTt2YXIgVD1QLm9mZnNldFgsej1QLm9mZnNldFksWD17d2lkdGg6MCxoZWlnaHQ6MH07aWYoeC5jb25maWcuZGF0YUxhYmVscy5lbmFibGVkKXt2YXIgRT10aGlzLmJhckN0eC5zZXJpZXNbcl1bb107WD1iLmdldFRleHRSZWN0cyh4Lmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXShFKSxwYXJzZUZsb2F0KFAuc3R5bGUuZm9udFNpemUpKX12YXIgWT17eDplLHk6aSxpOnIsajpvLHJlYWxJbmRleDpuLGdyb3VwSW5kZXg6bHx8LTEscmVuZGVyZWRQYXRoOmYsYmN4OnksYmN5OncsYmFySGVpZ2h0OmMsYmFyV2lkdGg6ZCx0ZXh0UmVjdHM6WCxzdHJva2VXaWR0aDp2LGRhdGFMYWJlbHNYOlMsZGF0YUxhYmVsc1k6QyxkYXRhTGFiZWxzQ29uZmlnOlAsYmFyRGF0YUxhYmVsc0NvbmZpZzpJLGJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZzpNLG9mZlg6VCxvZmZZOnp9O3JldHVybiBMPXRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD90aGlzLmNhbGN1bGF0ZUJhcnNEYXRhTGFiZWxzUG9zaXRpb24oWSk6dGhpcy5jYWxjdWxhdGVDb2x1bW5zRGF0YUxhYmVsc1Bvc2l0aW9uKFkpLGYuYXR0cih7Y3k6TC5iY3ksY3g6TC5iY3gsajpvLHZhbDpoW3JdW29dLGJhckhlaWdodDpjLGJhcldpZHRoOmR9KSxrPXRoaXMuZHJhd0NhbGN1bGF0ZWREYXRhTGFiZWxzKHt4OkwuZGF0YUxhYmVsc1gseTpMLmRhdGFMYWJlbHNZLHZhbDp0aGlzLmJhckN0eC5pc1JhbmdlQmFyP1thLHNdOmhbcl1bb10saTpuLGo6byxiYXJXaWR0aDpkLGJhckhlaWdodDpjLHRleHRSZWN0czpYLGRhdGFMYWJlbHNDb25maWc6UH0pLHguY29uZmlnLmNoYXJ0LnN0YWNrZWQmJk0uZW5hYmxlZCYmKEE9dGhpcy5kcmF3VG90YWxEYXRhTGFiZWxzKHt4OkwudG90YWxEYXRhTGFiZWxzWCx5OkwudG90YWxEYXRhTGFiZWxzWSxyZWFsSW5kZXg6bix0ZXh0QW5jaG9yOkwudG90YWxEYXRhTGFiZWxzQW5jaG9yLHZhbDp0aGlzLmdldFN0YWNrZWRUb3RhbERhdGFMYWJlbCh7cmVhbEluZGV4Om4sajpvfSksZGF0YUxhYmVsc0NvbmZpZzpQLGJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZzpNfSkpLHtkYXRhTGFiZWxzOmssdG90YWxEYXRhTGFiZWxzOkF9fX0se2tleTpcImdldFN0YWNrZWRUb3RhbERhdGFMYWJlbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXQucmVhbEluZGV4LGE9dC5qLHM9dGhpcy53LHI9dGhpcy5iYXJDdHguc3RhY2tlZFNlcmllc1RvdGFsc1thXTtyZXR1cm4gdGhpcy50b3RhbEZvcm1hdHRlciYmKHI9dGhpcy50b3RhbEZvcm1hdHRlcihyLGUoZSh7fSxzKSx7fSx7c2VyaWVzSW5kZXg6aSxkYXRhUG9pbnRJbmRleDphLHc6c30pKSkscn19LHtrZXk6XCJjYWxjdWxhdGVDb2x1bW5zRGF0YUxhYmVsc1Bvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhPXRoaXMudyxzPXQuaSxyPXQuaixvPXQucmVhbEluZGV4LG49dC5ncm91cEluZGV4LGw9dC55LGg9dC5iY3gsYz10LmJhcldpZHRoLGQ9dC5iYXJIZWlnaHQsZz10LnRleHRSZWN0cyx1PXQuZGF0YUxhYmVsc1gscD10LmRhdGFMYWJlbHNZLGY9dC5kYXRhTGFiZWxzQ29uZmlnLHg9dC5iYXJEYXRhTGFiZWxzQ29uZmlnLGI9dC5iYXJUb3RhbERhdGFMYWJlbHNDb25maWcsdj10LnN0cm9rZVdpZHRoLHk9dC5vZmZYLHc9dC5vZmZZO2Q9TWF0aC5hYnMoZCk7dmFyIGs9XCJ2ZXJ0aWNhbFwiPT09YS5jb25maWcucGxvdE9wdGlvbnMuYmFyLmRhdGFMYWJlbHMub3JpZW50YXRpb24sQT10aGlzLmJhckN0eC5iYXJIZWxwZXJzLmdldFplcm9WYWx1ZUVuY291bnRlcnMoe2k6cyxqOnJ9KS56ZXJvRW5jb3VudGVycztoPWgtdi8yKygtMSE9PW4/bipjOjApO3ZhciBTPWEuZ2xvYmFscy5ncmlkV2lkdGgvYS5nbG9iYWxzLmRhdGFQb2ludHM7aWYodGhpcy5iYXJDdHguaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj91Kz1jLzI6KHU9YS5nbG9iYWxzLmlzWE51bWVyaWM/aC1jLzIreTpoLVMrYy8yK3ksQT4wJiZhLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQmJih1LT1jKkEpKSxrKXt1PXUrZy5oZWlnaHQvMi12LzItMn12YXIgQz10aGlzLmJhckN0eC5zZXJpZXNbc11bcl08MCxMPWw7c3dpdGNoKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQmJihMPWwtZCsoQz8yKmQ6MCksbC09ZCkseC5wb3NpdGlvbil7Y2FzZVwiY2VudGVyXCI6cD1rP0M/TC1kLzIrdzpMK2QvMi13OkM/TC1kLzIrZy5oZWlnaHQvMit3OkwrZC8yK2cuaGVpZ2h0LzItdzticmVhaztjYXNlXCJib3R0b21cIjpwPWs/Qz9MLWQrdzpMK2QtdzpDP0wtZCtnLmhlaWdodCt2K3c6TCtkLWcuaGVpZ2h0LzIrdi13O2JyZWFrO2Nhc2VcInRvcFwiOnA9az9DP0wrdzpMLXc6Qz9MLWcuaGVpZ2h0LzItdzpMK2cuaGVpZ2h0K3d9aWYodGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1vJiZiLmVuYWJsZWQpe3ZhciBQPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKHRoaXMuZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsKHtyZWFsSW5kZXg6byxqOnJ9KSxmLmZvbnRTaXplKTtlPUM/TC1QLmhlaWdodC8yLXctYi5vZmZzZXRZKzE4OkwrUC5oZWlnaHQrdytiLm9mZnNldFktMTgsaT11K2Iub2Zmc2V0WH1yZXR1cm4gYS5jb25maWcuY2hhcnQuc3RhY2tlZHx8KHA8MD9wPTArdjpwK2cuaGVpZ2h0LzM+YS5nbG9iYWxzLmdyaWRIZWlnaHQmJihwPWEuZ2xvYmFscy5ncmlkSGVpZ2h0LXYpKSx7YmN4OmgsYmN5OmwsZGF0YUxhYmVsc1g6dSxkYXRhTGFiZWxzWTpwLHRvdGFsRGF0YUxhYmVsc1g6aSx0b3RhbERhdGFMYWJlbHNZOmUsdG90YWxEYXRhTGFiZWxzQW5jaG9yOlwibWlkZGxlXCJ9fX0se2tleTpcImNhbGN1bGF0ZUJhcnNEYXRhTGFiZWxzUG9zaXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT10LngsYT10Lmkscz10Lmoscj10LnJlYWxJbmRleCxvPXQuZ3JvdXBJbmRleCxuPXQuYmN5LGw9dC5iYXJIZWlnaHQsaD10LmJhcldpZHRoLGM9dC50ZXh0UmVjdHMsZD10LmRhdGFMYWJlbHNYLGc9dC5zdHJva2VXaWR0aCx1PXQuZGF0YUxhYmVsc0NvbmZpZyxwPXQuYmFyRGF0YUxhYmVsc0NvbmZpZyxmPXQuYmFyVG90YWxEYXRhTGFiZWxzQ29uZmlnLHg9dC5vZmZYLGI9dC5vZmZZLHY9ZS5nbG9iYWxzLmdyaWRIZWlnaHQvZS5nbG9iYWxzLmRhdGFQb2ludHM7aD1NYXRoLmFicyhoKTt2YXIgeSx3LGs9KG4rPS0xIT09bz9vKmw6MCktKHRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXI/MDp2KStsLzIrYy5oZWlnaHQvMitiLTMsQT1cInN0YXJ0XCIsUz10aGlzLmJhckN0eC5zZXJpZXNbYV1bc108MCxDPWk7c3dpdGNoKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQmJihDPWkraC0oUz8yKmg6MCksaT1lLmdsb2JhbHMuZ3JpZFdpZHRoLWgpLHAucG9zaXRpb24pe2Nhc2VcImNlbnRlclwiOmQ9Uz9DK2gvMi14Ok1hdGgubWF4KGMud2lkdGgvMixDLWgvMikreDticmVhaztjYXNlXCJib3R0b21cIjpkPVM/QytoLWctTWF0aC5yb3VuZChjLndpZHRoLzIpLXg6Qy1oK2crTWF0aC5yb3VuZChjLndpZHRoLzIpK3g7YnJlYWs7Y2FzZVwidG9wXCI6ZD1TP0MtZytNYXRoLnJvdW5kKGMud2lkdGgvMikteDpDLWctTWF0aC5yb3VuZChjLndpZHRoLzIpK3h9aWYodGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1yJiZmLmVuYWJsZWQpe3ZhciBMPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCkuZ2V0VGV4dFJlY3RzKHRoaXMuZ2V0U3RhY2tlZFRvdGFsRGF0YUxhYmVsKHtyZWFsSW5kZXg6cixqOnN9KSx1LmZvbnRTaXplKTtTPyh5PUMtZytNYXRoLnJvdW5kKEwud2lkdGgvMikteC1mLm9mZnNldFgtMTUsQT1cImVuZFwiKTp5PUMtZy1NYXRoLnJvdW5kKEwud2lkdGgvMikreCtmLm9mZnNldFgrMTUsdz1rK2Yub2Zmc2V0WX1yZXR1cm4gZS5jb25maWcuY2hhcnQuc3RhY2tlZHx8KGQ8MD9kPWQrYy53aWR0aCtnOmQrYy53aWR0aC8yPmUuZ2xvYmFscy5ncmlkV2lkdGgmJihkPWUuZ2xvYmFscy5ncmlkV2lkdGgtYy53aWR0aC1nKSkse2JjeDppLGJjeTpuLGRhdGFMYWJlbHNYOmQsZGF0YUxhYmVsc1k6ayx0b3RhbERhdGFMYWJlbHNYOnksdG90YWxEYXRhTGFiZWxzWTp3LHRvdGFsRGF0YUxhYmVsc0FuY2hvcjpBfX19LHtrZXk6XCJkcmF3Q2FsY3VsYXRlZERhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgaT10LngsYT10Lnkscz10LnZhbCxyPXQuaSxvPXQuaixuPXQudGV4dFJlY3RzLGw9dC5iYXJIZWlnaHQsaD10LmJhcldpZHRoLGM9dC5kYXRhTGFiZWxzQ29uZmlnLGQ9dGhpcy53LGc9XCJyb3RhdGUoMClcIjtcInZlcnRpY2FsXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuZGF0YUxhYmVscy5vcmllbnRhdGlvbiYmKGc9XCJyb3RhdGUoLTkwLCBcIi5jb25jYXQoaSxcIiwgXCIpLmNvbmNhdChhLFwiKVwiKSk7dmFyIHU9bmV3IE8odGhpcy5iYXJDdHguY3R4KSxwPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksZj1jLmZvcm1hdHRlcix4PW51bGwsYj1kLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5pbmRleE9mKHIpPi0xO2lmKGMuZW5hYmxlZCYmIWIpe3g9cC5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGEtbGFiZWxzXCIsdHJhbnNmb3JtOmd9KTt2YXIgdj1cIlwiO3ZvaWQgMCE9PXMmJih2PWYocyxlKGUoe30sZCkse30se3Nlcmllc0luZGV4OnIsZGF0YVBvaW50SW5kZXg6byx3OmR9KSkpLCFzJiZkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQmJih2PVwiXCIpO3ZhciB5PWQuZ2xvYmFscy5zZXJpZXNbcl1bb108MCx3PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLnBvc2l0aW9uO2lmKFwidmVydGljYWxcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5kYXRhTGFiZWxzLm9yaWVudGF0aW9uJiYoXCJ0b3BcIj09PXcmJihjLnRleHRBbmNob3I9eT9cImVuZFwiOlwic3RhcnRcIiksXCJjZW50ZXJcIj09PXcmJihjLnRleHRBbmNob3I9XCJtaWRkbGVcIiksXCJib3R0b21cIj09PXcmJihjLnRleHRBbmNob3I9eT9cImVuZFwiOlwic3RhcnRcIikpLHRoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGF0YUxhYmVscy5oaWRlT3ZlcmZsb3dpbmdMYWJlbHMpaDxwLmdldFRleHRSZWN0cyh2LHBhcnNlRmxvYXQoYy5zdHlsZS5mb250U2l6ZSkpLndpZHRoJiYodj1cIlwiKTtkLmNvbmZpZy5jaGFydC5zdGFja2VkJiZ0aGlzLmJhckN0eC5iYXJPcHRpb25zLmRhdGFMYWJlbHMuaGlkZU92ZXJmbG93aW5nTGFiZWxzJiYodGhpcy5iYXJDdHguaXNIb3Jpem9udGFsP24ud2lkdGgvMS42Pk1hdGguYWJzKGgpJiYodj1cIlwiKTpuLmhlaWdodC8xLjY+TWF0aC5hYnMobCkmJih2PVwiXCIpKTt2YXIgaz1lKHt9LGMpO3RoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbCYmczwwJiYoXCJzdGFydFwiPT09Yy50ZXh0QW5jaG9yP2sudGV4dEFuY2hvcj1cImVuZFwiOlwiZW5kXCI9PT1jLnRleHRBbmNob3ImJihrLnRleHRBbmNob3I9XCJzdGFydFwiKSksdS5wbG90RGF0YUxhYmVsc1RleHQoe3g6aSx5OmEsdGV4dDp2LGk6cixqOm8scGFyZW50OngsZGF0YUxhYmVsc0NvbmZpZzprLGFsd2F5c0RyYXdEYXRhTGFiZWw6ITAsb2Zmc2V0Q29ycmVjdGlvbjohMH0pfXJldHVybiB4fX0se2tleTpcImRyYXdUb3RhbERhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQueCxhPXQueSxzPXQudmFsLHI9dC5yZWFsSW5kZXgsbz10LnRleHRBbmNob3Isbj10LmJhclRvdGFsRGF0YUxhYmVsc0NvbmZpZyxsPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCk7cmV0dXJuIG4uZW5hYmxlZCYmdm9pZCAwIT09aSYmdm9pZCAwIT09YSYmdGhpcy5iYXJDdHgubGFzdEFjdGl2ZUJhclNlcmllSW5kZXg9PT1yJiYoZT1sLmRyYXdUZXh0KHt4OmkseTphLGZvcmVDb2xvcjpuLnN0eWxlLmNvbG9yLHRleHQ6cyx0ZXh0QW5jaG9yOm8sZm9udEZhbWlseTpuLnN0eWxlLmZvbnRGYW1pbHksZm9udFNpemU6bi5zdHlsZS5mb250U2l6ZSxmb250V2VpZ2h0Om4uc3R5bGUuZm9udFdlaWdodH0pKSxlfX1dKSx0fSgpLG10PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy53PWUudyx0aGlzLmJhckN0eD1lfXJldHVybiByKHQsW3trZXk6XCJpbml0VmFyaWFibGVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3RoaXMuYmFyQ3R4LnNlcmllcz10LHRoaXMuYmFyQ3R4LnRvdGFsSXRlbXM9MCx0aGlzLmJhckN0eC5zZXJpZXNMZW49MCx0aGlzLmJhckN0eC52aXNpYmxlST0tMSx0aGlzLmJhckN0eC52aXNpYmxlSXRlbXM9MTtmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKylpZih0W2ldLmxlbmd0aD4wJiYodGhpcy5iYXJDdHguc2VyaWVzTGVuPXRoaXMuYmFyQ3R4LnNlcmllc0xlbisxLHRoaXMuYmFyQ3R4LnRvdGFsSXRlbXMrPXRbaV0ubGVuZ3RoKSxlLmdsb2JhbHMuaXNYTnVtZXJpYylmb3IodmFyIGE9MDthPHRbaV0ubGVuZ3RoO2ErKyllLmdsb2JhbHMuc2VyaWVzWFtpXVthXT5lLmdsb2JhbHMubWluWCYmZS5nbG9iYWxzLnNlcmllc1hbaV1bYV08ZS5nbG9iYWxzLm1heFgmJnRoaXMuYmFyQ3R4LnZpc2libGVJdGVtcysrO2Vsc2UgdGhpcy5iYXJDdHgudmlzaWJsZUl0ZW1zPWUuZ2xvYmFscy5kYXRhUG9pbnRzOzA9PT10aGlzLmJhckN0eC5zZXJpZXNMZW4mJih0aGlzLmJhckN0eC5zZXJpZXNMZW49MSksdGhpcy5iYXJDdHguemVyb1Nlcmllc2VzPVtdLGUuZ2xvYmFscy5jb21ib0NoYXJ0c3x8dGhpcy5jaGVja1plcm9TZXJpZXMoe3Nlcmllczp0fSl9fSx7a2V5OlwiaW5pdGlhbFBvc2l0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLGEscyxyLG8sbixsPXRoaXMudyxoPWwuZ2xvYmFscy5kYXRhUG9pbnRzO3RoaXMuYmFyQ3R4LmlzUmFuZ2VCYXImJihoPWwuZ2xvYmFscy5sYWJlbHMubGVuZ3RoKTt2YXIgYz10aGlzLmJhckN0eC5zZXJpZXNMZW47aWYobC5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzJiYoYz0xKSx0aGlzLmJhckN0eC5pc0hvcml6b250YWwpcz0oaT1sLmdsb2JhbHMuZ3JpZEhlaWdodC9oKS9jLGwuZ2xvYmFscy5pc1hOdW1lcmljJiYocz0oaT1sLmdsb2JhbHMuZ3JpZEhlaWdodC90aGlzLmJhckN0eC50b3RhbEl0ZW1zKS90aGlzLmJhckN0eC5zZXJpZXNMZW4pLHM9cypwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmJhckhlaWdodCwxMCkvMTAwLC0xPT09U3RyaW5nKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuYmFySGVpZ2h0KS5pbmRleE9mKFwiJVwiKSYmKHM9cGFyc2VJbnQodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5iYXJIZWlnaHQsMTApKSxuPXRoaXMuYmFyQ3R4LmJhc2VMaW5lSW52ZXJ0ZWRZK2wuZ2xvYmFscy5wYWRIb3Jpem9udGFsKyh0aGlzLmJhckN0eC5pc1JldmVyc2VkP2wuZ2xvYmFscy5ncmlkV2lkdGg6MCktKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/Mip0aGlzLmJhckN0eC5iYXNlTGluZUludmVydGVkWTowKSx0aGlzLmJhckN0eC5pc0Z1bm5lbCYmKG49bC5nbG9iYWxzLmdyaWRXaWR0aC8yKSxlPShpLXMqdGhpcy5iYXJDdHguc2VyaWVzTGVuKS8yO2Vsc2V7aWYoYT1sLmdsb2JhbHMuZ3JpZFdpZHRoL3RoaXMuYmFyQ3R4LnZpc2libGVJdGVtcyxsLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMmJihhPWwuZ2xvYmFscy5ncmlkV2lkdGgvbC5nbG9iYWxzLmRhdGFQb2ludHMpLHI9YS9jKnBhcnNlSW50KHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgsMTApLzEwMCxsLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIGQ9dGhpcy5iYXJDdHgueFJhdGlvO2wuY29uZmlnLnhheGlzLmNvbnZlcnRlZENhdFRvTnVtZXJpYyYmKGQ9dGhpcy5iYXJDdHguaW5pdGlhbFhSYXRpbyksbC5nbG9iYWxzLm1pblhEaWZmJiYuNSE9PWwuZ2xvYmFscy5taW5YRGlmZiYmbC5nbG9iYWxzLm1pblhEaWZmL2Q+MCYmKGE9bC5nbG9iYWxzLm1pblhEaWZmL2QpLChyPWEvYypwYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKS8xMDApPDEmJihyPTEpfS0xPT09U3RyaW5nKHRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sdW1uV2lkdGgpLmluZGV4T2YoXCIlXCIpJiYocj1wYXJzZUludCh0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbHVtbldpZHRoLDEwKSksbz1sLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhckN0eC5iYXNlTGluZVlbdGhpcy5iYXJDdHgueWF4aXNJbmRleF0tKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/bC5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuYmFyQ3R4LmlzUmV2ZXJzZWQ/Mip0aGlzLmJhckN0eC5iYXNlTGluZVlbdGhpcy5iYXJDdHgueWF4aXNJbmRleF06MCksdD1sLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsoYS1yKnRoaXMuYmFyQ3R4LnNlcmllc0xlbikvMn1yZXR1cm57eDp0LHk6ZSx5RGl2aXNpb246aSx4RGl2aXNpb246YSxiYXJIZWlnaHQ6cyxiYXJXaWR0aDpyLHplcm9IOm8semVyb1c6bn19fSx7a2V5OlwiaW5pdGlhbGl6ZVN0YWNrZWRQcmV2VmFyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQudztlLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzP2UuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXXx8KHRbZV09e30pLHRbZV0ucHJldlk9W10sdFtlXS5wcmV2WD1bXSx0W2VdLnByZXZZRj1bXSx0W2VdLnByZXZYRj1bXSx0W2VdLnByZXZZVmFsPVtdLHRbZV0ucHJldlhWYWw9W119KSk6KHQucHJldlk9W10sdC5wcmV2WD1bXSx0LnByZXZZRj1bXSx0LnByZXZYRj1bXSx0LnByZXZZVmFsPVtdLHQucHJldlhWYWw9W10pfX0se2tleTpcImluaXRpYWxpemVTdGFja2VkWFlWYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC53O2UuZ2xvYmFscy5oYXNTZXJpZXNHcm91cHM/ZS5nbG9iYWxzLnNlcmllc0dyb3Vwcy5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdfHwodFtlXT17fSksdFtlXS54QXJyaj1bXSx0W2VdLnhBcnJqRj1bXSx0W2VdLnhBcnJqVmFsPVtdLHRbZV0ueUFycmo9W10sdFtlXS55QXJyakY9W10sdFtlXS55QXJyalZhbD1bXX0pKToodC54QXJyaj1bXSx0LnhBcnJqRj1bXSx0LnhBcnJqVmFsPVtdLHQueUFycmo9W10sdC55QXJyakY9W10sdC55QXJyalZhbD1bXSl9fSx7a2V5OlwiZ2V0UGF0aEZpbGxDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzLHIsbyxuLGw9dGhpcy53LGg9bmV3IFIodGhpcy5iYXJDdHguY3R4KSxjPW51bGwsZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmRpc3RyaWJ1dGVkP2k6ZTt0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5yYW5nZXMubGVuZ3RoPjAmJnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLnJhbmdlcy5tYXAoKGZ1bmN0aW9uKGEpe3RbZV1baV0+PWEuZnJvbSYmdFtlXVtpXTw9YS50byYmKGM9YS5jb2xvcil9KSk7cmV0dXJuIGwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldJiZsLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXS5maWxsQ29sb3ImJihjPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLmZpbGxDb2xvciksaC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOnRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/ZDphLGRhdGFQb2ludEluZGV4OmksY29sb3I6Yyx2YWx1ZTp0W2VdW2ldLGZpbGxDb25maWc6bnVsbD09PShzPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldKXx8dm9pZCAwPT09cz92b2lkIDA6cy5maWxsLGZpbGxUeXBlOm51bGwhPT0ocj1sLmNvbmZpZy5zZXJpZXNbZV0uZGF0YVtpXSkmJnZvaWQgMCE9PXImJm51bGwhPT0obz1yLmZpbGwpJiZ2b2lkIDAhPT1vJiZvLnR5cGU/bnVsbD09PShuPWwuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldKXx8dm9pZCAwPT09bj92b2lkIDA6bi5maWxsLnR5cGU6bC5jb25maWcuZmlsbC50eXBlfSl9fSx7a2V5OlwiZ2V0U3Ryb2tlV2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIGE9MCxzPXRoaXMudztyZXR1cm4gdGhpcy5iYXJDdHguc2VyaWVzW3RdW2VdP3RoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlPSExOnRoaXMuYmFyQ3R4LmlzTnVsbFZhbHVlPSEwLHMuY29uZmlnLnN0cm9rZS5zaG93JiYodGhpcy5iYXJDdHguaXNOdWxsVmFsdWV8fChhPUFycmF5LmlzQXJyYXkodGhpcy5iYXJDdHguc3Ryb2tlV2lkdGgpP3RoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoW2ldOnRoaXMuYmFyQ3R4LnN0cm9rZVdpZHRoKSksYX19LHtrZXk6XCJzaG91bGRBcHBseVJhZGl1c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudyxpPSExO3JldHVybiBlLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzPjAmJihlLmNvbmZpZy5jaGFydC5zdGFja2VkJiZcImxhc3RcIj09PWUuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNXaGVuU3RhY2tlZD90aGlzLmJhckN0eC5sYXN0QWN0aXZlQmFyU2VyaWVJbmRleD09PXQmJihpPSEwKTppPSEwKSxpfX0se2tleTpcImJhckJhY2tncm91bmRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmosaT10LmksYT10LngxLHM9dC54MixyPXQueTEsbz10LnkyLG49dC5lbFNlcmllcyxsPXRoaXMudyxoPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksYz1uZXcgTih0aGlzLmJhckN0eC5jdHgpLmdldEFjdGl2ZUNvbmZpZ1Nlcmllc0luZGV4KCk7aWYodGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGg+MCYmYz09PWkpe2U+PXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnMubGVuZ3RoJiYoZSU9dGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhckNvbG9ycy5sZW5ndGgpO3ZhciBkPXRoaXMuYmFyQ3R4LmJhck9wdGlvbnMuY29sb3JzLmJhY2tncm91bmRCYXJDb2xvcnNbZV0sZz1oLmRyYXdSZWN0KHZvaWQgMCE9PWE/YTowLHZvaWQgMCE9PXI/cjowLHZvaWQgMCE9PXM/czpsLmdsb2JhbHMuZ3JpZFdpZHRoLHZvaWQgMCE9PW8/bzpsLmdsb2JhbHMuZ3JpZEhlaWdodCx0aGlzLmJhckN0eC5iYXJPcHRpb25zLmNvbG9ycy5iYWNrZ3JvdW5kQmFyUmFkaXVzLGQsdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5jb2xvcnMuYmFja2dyb3VuZEJhck9wYWNpdHkpO24uYWRkKGcpLGcubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1iYWNrZ3JvdW5kQmFyXCIpfX19LHtrZXk6XCJnZXRDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5iYXJXaWR0aCxhPXQuYmFyWFBvc2l0aW9uLHM9dC55MSxyPXQueTIsbz10LnN0cm9rZVdpZHRoLG49dC5zZXJpZXNHcm91cCxsPXQucmVhbEluZGV4LGg9dC5pLGM9dC5qLGQ9dC53LGc9bmV3IG0odGhpcy5iYXJDdHguY3R4KTsobz1BcnJheS5pc0FycmF5KG8pP29bbF06byl8fChvPTApO3ZhciB1PWkscD1hO251bGwhPT0oZT1kLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXSkmJnZvaWQgMCE9PWUmJmUuY29sdW1uV2lkdGhPZmZzZXQmJihwPWEtZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10uY29sdW1uV2lkdGhPZmZzZXQvMix1PWkrZC5jb25maWcuc2VyaWVzW2xdLmRhdGFbY10uY29sdW1uV2lkdGhPZmZzZXQpO3ZhciBmPXAseD1wK3U7cys9LjAwMSxyKz0uMDAxO3ZhciBiPWcubW92ZShmLHMpLHY9Zy5tb3ZlKGYscykseT1nLmxpbmUoeC1vLHMpO2lmKGQuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYodj10aGlzLmJhckN0eC5nZXRQcmV2aW91c1BhdGgobCxjLCExKSksYj1iK2cubGluZShmLHIpK2cubGluZSh4LW8scikrZy5saW5lKHgtbyxzKSsoXCJhcm91bmRcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKSx2PXYrZy5saW5lKGYscykreSt5K3kreSt5K2cubGluZShmLHMpKyhcImFyb3VuZFwiPT09ZC5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uP1wiIFpcIjpcIiB6XCIpLHRoaXMuc2hvdWxkQXBwbHlSYWRpdXMobCkmJihiPWcucm91bmRQYXRoQ29ybmVycyhiLGQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXMpKSxkLmNvbmZpZy5jaGFydC5zdGFja2VkKXt2YXIgdz10aGlzLmJhckN0eDtkLmdsb2JhbHMuaGFzU2VyaWVzR3JvdXBzJiZuJiYodz10aGlzLmJhckN0eFtuXSksdy55QXJyai5wdXNoKHIpLHcueUFycmpGLnB1c2goTWF0aC5hYnMocy1yKSksdy55QXJyalZhbC5wdXNoKHRoaXMuYmFyQ3R4LnNlcmllc1toXVtjXSl9cmV0dXJue3BhdGhUbzpiLHBhdGhGcm9tOnZ9fX0se2tleTpcImdldEJhcnBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10LmJhcllQb3NpdGlvbixhPXQuYmFySGVpZ2h0LHM9dC54MSxyPXQueDIsbz10LnN0cm9rZVdpZHRoLG49dC5zZXJpZXNHcm91cCxsPXQucmVhbEluZGV4LGg9dC5pLGM9dC5qLGQ9dC53LGc9bmV3IG0odGhpcy5iYXJDdHguY3R4KTsobz1BcnJheS5pc0FycmF5KG8pP29bbF06byl8fChvPTApO3ZhciB1PWkscD1hO251bGwhPT0oZT1kLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXSkmJnZvaWQgMCE9PWUmJmUuYmFySGVpZ2h0T2Zmc2V0JiYodT1pLWQuY29uZmlnLnNlcmllc1tsXS5kYXRhW2NdLmJhckhlaWdodE9mZnNldC8yLHA9YStkLmNvbmZpZy5zZXJpZXNbbF0uZGF0YVtjXS5iYXJIZWlnaHRPZmZzZXQpO3ZhciBmPXUseD11K3A7cys9LjAwMSxyKz0uMDAxO3ZhciBiPWcubW92ZShzLGYpLHY9Zy5tb3ZlKHMsZik7ZC5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJih2PXRoaXMuYmFyQ3R4LmdldFByZXZpb3VzUGF0aChsLGMsITEpKTt2YXIgeT1nLmxpbmUocyx4LW8pO2lmKGI9YitnLmxpbmUocixmKStnLmxpbmUocix4LW8pK3krKFwiYXJvdW5kXCI9PT1kLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzQXBwbGljYXRpb24/XCIgWlwiOlwiIHpcIiksdj12K2cubGluZShzLGYpK3kreSt5K3kreStnLmxpbmUocyxmKSsoXCJhcm91bmRcIj09PWQuY29uZmlnLnBsb3RPcHRpb25zLmJhci5ib3JkZXJSYWRpdXNBcHBsaWNhdGlvbj9cIiBaXCI6XCIgelwiKSx0aGlzLnNob3VsZEFwcGx5UmFkaXVzKGwpJiYoYj1nLnJvdW5kUGF0aENvcm5lcnMoYixkLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYm9yZGVyUmFkaXVzKSksZC5jb25maWcuY2hhcnQuc3RhY2tlZCl7dmFyIHc9dGhpcy5iYXJDdHg7ZC5nbG9iYWxzLmhhc1Nlcmllc0dyb3VwcyYmbiYmKHc9dGhpcy5iYXJDdHhbbl0pLHcueEFycmoucHVzaChyKSx3LnhBcnJqRi5wdXNoKE1hdGguYWJzKHMtcikpLHcueEFycmpWYWwucHVzaCh0aGlzLmJhckN0eC5zZXJpZXNbaF1bY10pfXJldHVybntwYXRoVG86YixwYXRoRnJvbTp2fX19LHtrZXk6XCJjaGVja1plcm9TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5zZXJpZXMsaT10aGlzLncsYT0wO2E8ZS5sZW5ndGg7YSsrKXtmb3IodmFyIHM9MCxyPTA7cjxlW2kuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGg7cisrKXMrPWVbYV1bcl07MD09PXMmJnRoaXMuYmFyQ3R4Lnplcm9TZXJpZXNlcy5wdXNoKGEpfX19LHtrZXk6XCJnZXRYRm9yVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0/ZTpudWxsO3JldHVybiBudWxsIT10JiYoaT1lK3QvdGhpcy5iYXJDdHguaW52ZXJ0ZWRZUmF0aW8tMioodGhpcy5iYXJDdHguaXNSZXZlcnNlZD90L3RoaXMuYmFyQ3R4LmludmVydGVkWVJhdGlvOjApKSxpfX0se2tleTpcImdldFlGb3JWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXT9lOm51bGw7cmV0dXJuIG51bGwhPXQmJihpPWUtdC90aGlzLmJhckN0eC55UmF0aW9bdGhpcy5iYXJDdHgueWF4aXNJbmRleF0rMioodGhpcy5iYXJDdHguaXNSZXZlcnNlZD90L3RoaXMuYmFyQ3R4LnlSYXRpb1t0aGlzLmJhckN0eC55YXhpc0luZGV4XTowKSksaX19LHtrZXk6XCJnZXRHb2FsVmFsdWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEscyxyKXt2YXIgbj10aGlzLGw9dGhpcy53LGg9W10sYz1mdW5jdGlvbihlLHMpe3ZhciByO2gucHVzaCgobyhyPXt9LHQsXCJ4XCI9PT10P24uZ2V0WEZvclZhbHVlKGUsaSwhMSk6bi5nZXRZRm9yVmFsdWUoZSxhLCExKSksbyhyLFwiYXR0cnNcIixzKSxyKSl9O2lmKGwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXSYmbC5nbG9iYWxzLnNlcmllc0dvYWxzW3NdW3JdJiZBcnJheS5pc0FycmF5KGwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXSkmJmwuZ2xvYmFscy5zZXJpZXNHb2Fsc1tzXVtyXS5mb3JFYWNoKChmdW5jdGlvbih0KXtjKHQudmFsdWUsdCl9KSksdGhpcy5iYXJDdHguYmFyT3B0aW9ucy5pc0R1bWJiZWxsJiZsLmdsb2JhbHMuc2VyaWVzUmFuZ2UubGVuZ3RoKXt2YXIgZD10aGlzLmJhckN0eC5iYXJPcHRpb25zLmR1bWJiZWxsQ29sb3JzP3RoaXMuYmFyQ3R4LmJhck9wdGlvbnMuZHVtYmJlbGxDb2xvcnM6bC5nbG9iYWxzLmNvbG9ycyxnPXtzdHJva2VIZWlnaHQ6XCJ4XCI9PT10PzA6bC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtzXSxzdHJva2VXaWR0aDpcInhcIj09PXQ/bC5nbG9iYWxzLm1hcmtlcnMuc2l6ZVtzXTowLHN0cm9rZURhc2hBcnJheTowLHN0cm9rZUxpbmVDYXA6XCJyb3VuZFwiLHN0cm9rZUNvbG9yOkFycmF5LmlzQXJyYXkoZFtzXSk/ZFtzXVswXTpkW3NdfTtjKGwuZ2xvYmFscy5zZXJpZXNSYW5nZVN0YXJ0W3NdW3JdLGcpLGMobC5nbG9iYWxzLnNlcmllc1JhbmdlRW5kW3NdW3JdLGUoZSh7fSxnKSx7fSx7c3Ryb2tlQ29sb3I6QXJyYXkuaXNBcnJheShkW3NdKT9kW3NdWzFdOmRbc119KSl9cmV0dXJuIGh9fSx7a2V5OlwiZHJhd0dvYWxMaW5lXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5iYXJYUG9zaXRpb24saT10LmJhcllQb3NpdGlvbixhPXQuZ29hbFgscz10LmdvYWxZLHI9dC5iYXJXaWR0aCxvPXQuYmFySGVpZ2h0LG49bmV3IG0odGhpcy5iYXJDdHguY3R4KSxsPW4uZ3JvdXAoe2NsYXNzTmFtZTpcImFwZXhjaGFydHMtYmFyLWdvYWxzLWdyb3Vwc1wifSk7bC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpLHRoaXMuYmFyQ3R4LncuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6bC5ub2RlfSksbC5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFya2VyTWFza1wiLmNvbmNhdCh0aGlzLmJhckN0eC53Lmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBoPW51bGw7cmV0dXJuIHRoaXMuYmFyQ3R4LmlzSG9yaXpvbnRhbD9BcnJheS5pc0FycmF5KGEpJiZhLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMCE9PXQuYXR0cnMuc3Ryb2tlSGVpZ2h0P3QuYXR0cnMuc3Ryb2tlSGVpZ2h0Om8vMixhPWkrZStvLzI7aD1uLmRyYXdMaW5lKHQueCxhLTIqZSx0LngsYSx0LmF0dHJzLnN0cm9rZUNvbG9yP3QuYXR0cnMuc3Ryb2tlQ29sb3I6dm9pZCAwLHQuYXR0cnMuc3Ryb2tlRGFzaEFycmF5LHQuYXR0cnMuc3Ryb2tlV2lkdGg/dC5hdHRycy5zdHJva2VXaWR0aDoyLHQuYXR0cnMuc3Ryb2tlTGluZUNhcCksbC5hZGQoaCl9KSk6QXJyYXkuaXNBcnJheShzKSYmcy5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgaT12b2lkIDAhPT10LmF0dHJzLnN0cm9rZVdpZHRoP3QuYXR0cnMuc3Ryb2tlV2lkdGg6ci8yLGE9ZStpK3IvMjtoPW4uZHJhd0xpbmUoYS0yKmksdC55LGEsdC55LHQuYXR0cnMuc3Ryb2tlQ29sb3I/dC5hdHRycy5zdHJva2VDb2xvcjp2b2lkIDAsdC5hdHRycy5zdHJva2VEYXNoQXJyYXksdC5hdHRycy5zdHJva2VIZWlnaHQ/dC5hdHRycy5zdHJva2VIZWlnaHQ6Mix0LmF0dHJzLnN0cm9rZUxpbmVDYXApLGwuYWRkKGgpfSkpLGx9fSx7a2V5OlwiZHJhd0JhclNoYWRvd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQucHJldlBhdGhzLGk9dC5jdXJyUGF0aHMsYT10LmNvbG9yLHM9dGhpcy53LHI9ZS54LG89ZS54MSxuPWUuYmFyWVBvc2l0aW9uLGw9aS54LGg9aS54MSxjPWkuYmFyWVBvc2l0aW9uLGQ9bitpLmJhckhlaWdodCxnPW5ldyBtKHRoaXMuYmFyQ3R4LmN0eCksdT1uZXcgeCxwPWcubW92ZShvLGQpK2cubGluZShyLGQpK2cubGluZShsLGMpK2cubGluZShoLGMpK2cubGluZShvLGQpKyhcImFyb3VuZFwiPT09cy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJvcmRlclJhZGl1c0FwcGxpY2F0aW9uP1wiIFpcIjpcIiB6XCIpO3JldHVybiBnLmRyYXdQYXRoKHtkOnAsZmlsbDp1LnNoYWRlQ29sb3IoLjUseC5yZ2IyaGV4KGEpKSxzdHJva2U6XCJub25lXCIsc3Ryb2tlV2lkdGg6MCxmaWxsT3BhY2l0eToxLGNsYXNzZXM6XCJhcGV4Y2hhcnRzLWJhci1zaGFkb3dzXCJ9KX19LHtrZXk6XCJnZXRaZXJvVmFsdWVFbmNvdW50ZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC5qLGE9dGhpcy53LHM9MCxyPTA7cmV0dXJuIGEuZ2xvYmFscy5zZXJpZXNQZXJjZW50LmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7dFtpXSYmcysrLGE8ZSYmMD09PXRbaV0mJnIrK30pKSx7bm9uWmVyb0NvbHVtbnM6cyx6ZXJvRW5jb3VudGVyczpyfX19XSksdH0oKSx5dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBzPXRoaXMudzt0aGlzLmJhck9wdGlvbnM9cy5jb25maWcucGxvdE9wdGlvbnMuYmFyLHRoaXMuaXNIb3Jpem9udGFsPXRoaXMuYmFyT3B0aW9ucy5ob3Jpem9udGFsLHRoaXMuc3Ryb2tlV2lkdGg9cy5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMuaXNOdWxsVmFsdWU9ITEsdGhpcy5pc1JhbmdlQmFyPXMuZ2xvYmFscy5zZXJpZXNSYW5nZS5sZW5ndGgmJnRoaXMuaXNIb3Jpem9udGFsLHRoaXMuaXNWZXJ0aWNhbEdyb3VwZWRSYW5nZUJhcj0hcy5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmcy5nbG9iYWxzLnNlcmllc1JhbmdlLmxlbmd0aCYmcy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyR3JvdXBSb3dzLHRoaXMuaXNGdW5uZWw9dGhpcy5iYXJPcHRpb25zLmlzRnVubmVsLHRoaXMueHlSYXRpb3M9aSxudWxsIT09dGhpcy54eVJhdGlvcyYmKHRoaXMueFJhdGlvPWkueFJhdGlvLHRoaXMuaW5pdGlhbFhSYXRpbz1pLmluaXRpYWxYUmF0aW8sdGhpcy55UmF0aW89aS55UmF0aW8sdGhpcy5pbnZlcnRlZFhSYXRpbz1pLmludmVydGVkWFJhdGlvLHRoaXMuaW52ZXJ0ZWRZUmF0aW89aS5pbnZlcnRlZFlSYXRpbyx0aGlzLmJhc2VMaW5lWT1pLmJhc2VMaW5lWSx0aGlzLmJhc2VMaW5lSW52ZXJ0ZWRZPWkuYmFzZUxpbmVJbnZlcnRlZFkpLHRoaXMueWF4aXNJbmRleD0wLHRoaXMuc2VyaWVzTGVuPTAsdGhpcy5wYXRoQXJyPVtdO3ZhciByPW5ldyBOKHRoaXMuY3R4KTt0aGlzLmxhc3RBY3RpdmVCYXJTZXJpZUluZGV4PXIuZ2V0QWN0aXZlQ29uZmlnU2VyaWVzSW5kZXgoXCJkZXNjXCIsW1wiYmFyXCIsXCJjb2x1bW5cIl0pO3ZhciBvPXIuZ2V0QmFyU2VyaWVzSW5kaWNlcygpLG49bmV3IHkodGhpcy5jdHgpO3RoaXMuc3RhY2tlZFNlcmllc1RvdGFscz1uLmdldFN0YWNrZWRTZXJpZXNUb3RhbHModGhpcy53LmNvbmZpZy5zZXJpZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybi0xPT09by5pbmRleE9mKGUpP2U6LTF9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXR9KSkpLHRoaXMuYmFySGVscGVycz1uZXcgbXQodGhpcyl9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMudyxzPW5ldyBtKHRoaXMuY3R4KSxyPW5ldyB5KHRoaXMuY3R4LGEpO3Q9ci5nZXRMb2dTZXJpZXModCksdGhpcy5zZXJpZXM9dCx0aGlzLnlSYXRpbz1yLmdldExvZ1lSYXRpb3ModGhpcy55UmF0aW8pLHRoaXMuYmFySGVscGVycy5pbml0VmFyaWFibGVzKHQpO3ZhciBvPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItc2VyaWVzIGFwZXhjaGFydHMtcGxvdC1zZXJpZXNcIn0pO2EuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCYmdGhpcy50b3RhbEl0ZW1zPnRoaXMuYmFyT3B0aW9ucy5kYXRhTGFiZWxzLm1heEl0ZW1zJiZjb25zb2xlLndhcm4oXCJXQVJOSU5HOiBEYXRhTGFiZWxzIGFyZSBlbmFibGVkIGJ1dCB0aGVyZSBhcmUgdG9vIG1hbnkgdG8gZGlzcGxheS4gVGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWUgd2hlbiByZW5kZXJpbmcgLSBBcGV4Q2hhcnRzXCIpO2Zvcih2YXIgbj0wLGw9MDtuPHQubGVuZ3RoO24rKyxsKyspe3ZhciBoLGMsZCxnLHU9dm9pZCAwLHA9dm9pZCAwLGY9W10sYj1bXSx2PWEuZ2xvYmFscy5jb21ib0NoYXJ0cz9pW25dOm4sdz1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIscmVsOm4rMSxzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGEuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSksXCJkYXRhOnJlYWxJbmRleFwiOnZ9KTt0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1Nlcmllcyh3LHYpLHRbbl0ubGVuZ3RoPjAmJih0aGlzLnZpc2libGVJPXRoaXMudmlzaWJsZUkrMSk7dmFyIGs9MCxBPTA7dGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9diksdGhpcy5pc1JldmVyc2VkPWEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0mJmEuY29uZmlnLnlheGlzW3RoaXMueWF4aXNJbmRleF0ucmV2ZXJzZWQ7dmFyIFM9dGhpcy5iYXJIZWxwZXJzLmluaXRpYWxQb3NpdGlvbnMoKTtwPVMueSxrPVMuYmFySGVpZ2h0LGM9Uy55RGl2aXNpb24sZz1TLnplcm9XLHU9Uy54LEE9Uy5iYXJXaWR0aCxoPVMueERpdmlzaW9uLGQ9Uy56ZXJvSCx0aGlzLmhvcml6b250YWx8fGIucHVzaCh1K0EvMik7dmFyIEM9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6dn0pO2EuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6Qy5ub2RlfSksQy5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpO3ZhciBMPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1iYXItZ29hbHMtbWFya2Vyc1wifSksUD1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtYmFyLXNoYWRvd3NcIn0pO2EuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6UC5ub2RlfSksUC5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWVsZW1lbnQtaGlkZGVuXCIpO2Zvcih2YXIgST0wO0k8YS5nbG9iYWxzLmRhdGFQb2ludHM7SSsrKXt2YXIgTT10aGlzLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgobixJLHYpLFQ9bnVsbCx6PXtpbmRleGVzOntpOm4sajpJLHJlYWxJbmRleDp2LGJjOmx9LHg6dSx5OnAsc3Ryb2tlV2lkdGg6TSxlbFNlcmllczp3fTt0aGlzLmlzSG9yaXpvbnRhbD8oVD10aGlzLmRyYXdCYXJQYXRocyhlKGUoe30seikse30se2JhckhlaWdodDprLHplcm9XOmcseURpdmlzaW9uOmN9KSksQT10aGlzLnNlcmllc1tuXVtJXS90aGlzLmludmVydGVkWVJhdGlvKTooVD10aGlzLmRyYXdDb2x1bW5QYXRocyhlKGUoe30seikse30se3hEaXZpc2lvbjpoLGJhcldpZHRoOkEsemVyb0g6ZH0pKSxrPXRoaXMuc2VyaWVzW25dW0ldL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0pO3ZhciBYPXRoaXMuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKHQsbixJLHYpO2lmKHRoaXMuaXNGdW5uZWwmJnRoaXMuYmFyT3B0aW9ucy5pc0Z1bm5lbDNkJiZ0aGlzLnBhdGhBcnIubGVuZ3RoJiZJPjApe3ZhciBFPXRoaXMuYmFySGVscGVycy5kcmF3QmFyU2hhZG93KHtjb2xvcjpcInN0cmluZ1wiPT10eXBlb2YgWCYmLTE9PT0obnVsbD09WD92b2lkIDA6WC5pbmRleE9mKFwidXJsXCIpKT9YOnguaGV4VG9SZ2JhKGEuZ2xvYmFscy5jb2xvcnNbbl0pLHByZXZQYXRoczp0aGlzLnBhdGhBcnJbdGhpcy5wYXRoQXJyLmxlbmd0aC0xXSxjdXJyUGF0aHM6VH0pO0UmJlAuYWRkKEUpfXRoaXMucGF0aEFyci5wdXNoKFQpO3ZhciBZPXRoaXMuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpULmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246VC5iYXJZUG9zaXRpb24sZ29hbFg6VC5nb2FsWCxnb2FsWTpULmdvYWxZLGJhckhlaWdodDprLGJhcldpZHRoOkF9KTtZJiZMLmFkZChZKSxwPVQueSx1PVQueCxJPjAmJmIucHVzaCh1K0EvMiksZi5wdXNoKHApLHRoaXMucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dixwYXRoRmlsbDpYLGo6SSxpOm4scGF0aEZyb206VC5wYXRoRnJvbSxwYXRoVG86VC5wYXRoVG8sc3Ryb2tlV2lkdGg6TSxlbFNlcmllczp3LHg6dSx5OnAsc2VyaWVzOnQsYmFySGVpZ2h0OlQuYmFySGVpZ2h0P1QuYmFySGVpZ2h0OmssYmFyV2lkdGg6VC5iYXJXaWR0aD9ULmJhcldpZHRoOkEsZWxEYXRhTGFiZWxzV3JhcDpDLGVsR29hbHNNYXJrZXJzOkwsZWxCYXJTaGFkb3dzOlAsdmlzaWJsZVNlcmllczp0aGlzLnZpc2libGVJLHR5cGU6XCJiYXJcIn0pfWEuZ2xvYmFscy5zZXJpZXNYdmFsdWVzW3ZdPWIsYS5nbG9iYWxzLnNlcmllc1l2YWx1ZXNbdl09ZixvLmFkZCh3KX1yZXR1cm4gb319LHtrZXk6XCJyZW5kZXJTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnJlYWxJbmRleCxpPXQucGF0aEZpbGwsYT10LmxpbmVGaWxsLHM9dC5qLHI9dC5pLG89dC5ncm91cEluZGV4LG49dC5wYXRoRnJvbSxsPXQucGF0aFRvLGg9dC5zdHJva2VXaWR0aCxjPXQuZWxTZXJpZXMsZD10LngsZz10LnksdT10LnkxLHA9dC55MixmPXQuc2VyaWVzLHg9dC5iYXJIZWlnaHQsYj10LmJhcldpZHRoLHk9dC5iYXJYUG9zaXRpb24sdz10LmJhcllQb3NpdGlvbixrPXQuZWxEYXRhTGFiZWxzV3JhcCxBPXQuZWxHb2Fsc01hcmtlcnMsUz10LmVsQmFyU2hhZG93cyxDPXQudmlzaWJsZVNlcmllcyxMPXQudHlwZSxQPXRoaXMudyxJPW5ldyBtKHRoaXMuY3R4KTthfHwoYT10aGlzLmJhck9wdGlvbnMuZGlzdHJpYnV0ZWQ/UC5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbc106UC5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbZV0pLFAuY29uZmlnLnNlcmllc1tyXS5kYXRhW3NdJiZQLmNvbmZpZy5zZXJpZXNbcl0uZGF0YVtzXS5zdHJva2VDb2xvciYmKGE9UC5jb25maWcuc2VyaWVzW3JdLmRhdGFbc10uc3Ryb2tlQ29sb3IpLHRoaXMuaXNOdWxsVmFsdWUmJihpPVwibm9uZVwiKTt2YXIgTT1zL1AuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuYW5pbWF0ZUdyYWR1YWxseS5kZWxheSooUC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZC9QLmdsb2JhbHMuZGF0YVBvaW50cykvMi40LFQ9SS5yZW5kZXJQYXRocyh7aTpyLGo6cyxyZWFsSW5kZXg6ZSxwYXRoRnJvbTpuLHBhdGhUbzpsLHN0cm9rZTphLHN0cm9rZVdpZHRoOmgsc3Ryb2tlTGluZUNhcDpQLmNvbmZpZy5zdHJva2UubGluZUNhcCxmaWxsOmksYW5pbWF0aW9uRGVsYXk6TSxpbml0aWFsU3BlZWQ6UC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCxkYXRhQ2hhbmdlU3BlZWQ6UC5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkLGNsYXNzTmFtZTpcImFwZXhjaGFydHMtXCIuY29uY2F0KEwsXCItYXJlYVwiKX0pO1QuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNncmlkUmVjdE1hc2tcIi5jb25jYXQoUC5nbG9iYWxzLmN1aWQsXCIpXCIpKTt2YXIgej1QLmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHM7ei5jb3VudD4wJiZzPj1QLmdsb2JhbHMuZGF0YVBvaW50cy16LmNvdW50JiYoVC5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1kYXNoYXJyYXlcIix6LmRhc2hBcnJheSksVC5ub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiLHouc3Ryb2tlV2lkdGgpLFQubm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWxsLW9wYWNpdHlcIix6LmZpbGxPcGFjaXR5KSksdm9pZCAwIT09dSYmdm9pZCAwIT09cCYmKFQuYXR0cihcImRhdGEtcmFuZ2UteTFcIix1KSxULmF0dHIoXCJkYXRhLXJhbmdlLXkyXCIscCkpLG5ldyB2KHRoaXMuY3R4KS5zZXRTZWxlY3Rpb25GaWx0ZXIoVCxlLHMpLGMuYWRkKFQpO3ZhciBYPW5ldyB2dCh0aGlzKS5oYW5kbGVCYXJEYXRhTGFiZWxzKHt4OmQseTpnLHkxOnUseTI6cCxpOnIsajpzLHNlcmllczpmLHJlYWxJbmRleDplLGdyb3VwSW5kZXg6byxiYXJIZWlnaHQ6eCxiYXJXaWR0aDpiLGJhclhQb3NpdGlvbjp5LGJhcllQb3NpdGlvbjp3LHJlbmRlcmVkUGF0aDpULHZpc2libGVTZXJpZXM6Q30pO3JldHVybiBudWxsIT09WC5kYXRhTGFiZWxzJiZrLmFkZChYLmRhdGFMYWJlbHMpLFgudG90YWxEYXRhTGFiZWxzJiZrLmFkZChYLnRvdGFsRGF0YUxhYmVscyksYy5hZGQoayksQSYmYy5hZGQoQSksUyYmYy5hZGQoUyksY319LHtrZXk6XCJkcmF3QmFyUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXQuaW5kZXhlcyxhPXQuYmFySGVpZ2h0LHM9dC5zdHJva2VXaWR0aCxyPXQuemVyb1csbz10Lngsbj10LnksbD10LnlEaXZpc2lvbixoPXQuZWxTZXJpZXMsYz10aGlzLncsZD1pLmksZz1pLmo7aWYoYy5nbG9iYWxzLmlzWE51bWVyaWMpZT0obj0oYy5nbG9iYWxzLnNlcmllc1hbZF1bZ10tYy5nbG9iYWxzLm1pblgpL3RoaXMuaW52ZXJ0ZWRYUmF0aW8tYSkrYSp0aGlzLnZpc2libGVJO2Vsc2UgaWYoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmhpZGVaZXJvQmFyc1doZW5Hcm91cGVkKXt2YXIgdT0wLHA9MDtjLmdsb2JhbHMuc2VyaWVzUGVyY2VudC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3RbZ10mJnUrKyxlPGQmJjA9PT10W2ddJiZwKyt9KSksdT4wJiYoYT10aGlzLnNlcmllc0xlbiphL3UpLGU9bithKnRoaXMudmlzaWJsZUksZS09YSpwfWVsc2UgZT1uK2EqdGhpcy52aXNpYmxlSTt0aGlzLmlzRnVubmVsJiYoci09KHRoaXMuYmFySGVscGVycy5nZXRYRm9yVmFsdWUodGhpcy5zZXJpZXNbZF1bZ10sciktcikvMiksbz10aGlzLmJhckhlbHBlcnMuZ2V0WEZvclZhbHVlKHRoaXMuc2VyaWVzW2RdW2ddLHIpO3ZhciBmPXRoaXMuYmFySGVscGVycy5nZXRCYXJwYXRocyh7YmFyWVBvc2l0aW9uOmUsYmFySGVpZ2h0OmEseDE6cix4MjpvLHN0cm9rZVdpZHRoOnMsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxpOmQsajpnLHc6Y30pO3JldHVybiBjLmdsb2JhbHMuaXNYTnVtZXJpY3x8KG4rPWwpLHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtqOmcsaTpkLHkxOmUtYSp0aGlzLnZpc2libGVJLHkyOmEqdGhpcy5zZXJpZXNMZW4sZWxTZXJpZXM6aH0pLHtwYXRoVG86Zi5wYXRoVG8scGF0aEZyb206Zi5wYXRoRnJvbSx4MTpyLHg6byx5Om4sZ29hbFg6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ4XCIscixudWxsLGQsZyksYmFyWVBvc2l0aW9uOmUsYmFySGVpZ2h0OmF9fX0se2tleTpcImRyYXdDb2x1bW5QYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5pbmRleGVzLGE9dC54LHM9dC55LHI9dC54RGl2aXNpb24sbz10LmJhcldpZHRoLG49dC56ZXJvSCxsPXQuc3Ryb2tlV2lkdGgsaD10LmVsU2VyaWVzLGM9dGhpcy53LGQ9aS5yZWFsSW5kZXgsZz1pLmksdT1pLmoscD1pLmJjO2lmKGMuZ2xvYmFscy5pc1hOdW1lcmljKXt2YXIgZj10aGlzLmdldEJhclhGb3JOdW1lcmljWEF4aXMoe3g6YSxqOnUscmVhbEluZGV4OmQsYmFyV2lkdGg6b30pO2E9Zi54LGU9Zi5iYXJYUG9zaXRpb259ZWxzZSBpZihjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaGlkZVplcm9CYXJzV2hlbkdyb3VwZWQpe3ZhciB4PXRoaXMuYmFySGVscGVycy5nZXRaZXJvVmFsdWVFbmNvdW50ZXJzKHtpOmcsajp1fSksYj14Lm5vblplcm9Db2x1bW5zLHY9eC56ZXJvRW5jb3VudGVycztiPjAmJihvPXRoaXMuc2VyaWVzTGVuKm8vYiksZT1hK28qdGhpcy52aXNpYmxlSSxlLT1vKnZ9ZWxzZSBlPWErbyp0aGlzLnZpc2libGVJO3M9dGhpcy5iYXJIZWxwZXJzLmdldFlGb3JWYWx1ZSh0aGlzLnNlcmllc1tnXVt1XSxuKTt2YXIgbT10aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoe2JhclhQb3NpdGlvbjplLGJhcldpZHRoOm8seTE6bix5MjpzLHN0cm9rZVdpZHRoOmwsc2VyaWVzOnRoaXMuc2VyaWVzLHJlYWxJbmRleDppLnJlYWxJbmRleCxpOmcsajp1LHc6Y30pO3JldHVybiBjLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGErPXIpLHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtiYzpwLGo6dSxpOmcseDE6ZS1sLzItbyp0aGlzLnZpc2libGVJLHgyOm8qdGhpcy5zZXJpZXNMZW4rbC8yLGVsU2VyaWVzOmh9KSx7cGF0aFRvOm0ucGF0aFRvLHBhdGhGcm9tOm0ucGF0aEZyb20seDphLHk6cyxnb2FsWTp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInlcIixudWxsLG4sZyx1KSxiYXJYUG9zaXRpb246ZSxiYXJXaWR0aDpvfX19LHtrZXk6XCJnZXRCYXJYRm9yTnVtZXJpY1hBeGlzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC54LGk9dC5iYXJXaWR0aCxhPXQucmVhbEluZGV4LHM9dC5qLHI9dGhpcy53LG89YTtyZXR1cm4gci5nbG9iYWxzLnNlcmllc1hbYV0ubGVuZ3RofHwobz1yLmdsb2JhbHMubWF4VmFsc0luQXJyYXlJbmRleCksci5nbG9iYWxzLnNlcmllc1hbb11bc10mJihlPShyLmdsb2JhbHMuc2VyaWVzWFtvXVtzXS1yLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8taSp0aGlzLnNlcmllc0xlbi8yKSx7YmFyWFBvc2l0aW9uOmUraSp0aGlzLnZpc2libGVJLHg6ZX19fSx7a2V5OlwiZ2V0UHJldmlvdXNQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGksYT10aGlzLncscz0wO3M8YS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO3MrKyl7dmFyIHI9YS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbc107ci5wYXRocyYmci5wYXRocy5sZW5ndGg+MCYmcGFyc2VJbnQoci5yZWFsSW5kZXgsMTApPT09cGFyc2VJbnQodCwxMCkmJnZvaWQgMCE9PWEuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3NdLnBhdGhzW2VdJiYoaT1hLmdsb2JhbHMucHJldmlvdXNQYXRoc1tzXS5wYXRoc1tlXS5kKX1yZXR1cm4gaX19XSksdH0oKSx3dD1mdW5jdGlvbih0KXtuKHMseXQpO3ZhciBpPWQocyk7ZnVuY3Rpb24gcygpe3JldHVybiBhKHRoaXMscyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHIocyxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMscz10aGlzLnc7dGhpcy5ncmFwaGljcz1uZXcgbSh0aGlzLmN0eCksdGhpcy5iYXI9bmV3IHl0KHRoaXMuY3R4LHRoaXMueHlSYXRpb3MpO3ZhciByPW5ldyB5KHRoaXMuY3R4LHMpO3Q9ci5nZXRMb2dTZXJpZXModCksdGhpcy55UmF0aW89ci5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KSxcIjEwMCVcIj09PXMuY29uZmlnLmNoYXJ0LnN0YWNrVHlwZSYmKHQ9cy5nbG9iYWxzLnNlcmllc1BlcmNlbnQuc2xpY2UoKSksdGhpcy5zZXJpZXM9dCx0aGlzLmJhckhlbHBlcnMuaW5pdGlhbGl6ZVN0YWNrZWRQcmV2VmFycyh0aGlzKTtmb3IodmFyIG89dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wifSksbj0wLGw9MCxoPWZ1bmN0aW9uKHIsaCl7dmFyIGM9dm9pZCAwLGQ9dm9pZCAwLGc9dm9pZCAwLHU9dm9pZCAwLHA9LTE7YS5ncm91cEN0eD1hLHMuZ2xvYmFscy5zZXJpZXNHcm91cHMuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmluZGV4T2Yocy5jb25maWcuc2VyaWVzW3JdLm5hbWUpPi0xJiYocD1lKX0pKSwtMSE9PXAmJihhLmdyb3VwQ3R4PWFbcy5nbG9iYWxzLnNlcmllc0dyb3Vwc1twXV0pO3ZhciBmPVtdLGI9W10sdj1zLmdsb2JhbHMuY29tYm9DaGFydHM/aVtyXTpyO2EueVJhdGlvLmxlbmd0aD4xJiYoYS55YXhpc0luZGV4PXYpLGEuaXNSZXZlcnNlZD1zLmNvbmZpZy55YXhpc1thLnlheGlzSW5kZXhdJiZzLmNvbmZpZy55YXhpc1thLnlheGlzSW5kZXhdLnJldmVyc2VkO3ZhciBtPWEuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKHMuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSkscmVsOnIrMSxcImRhdGE6cmVhbEluZGV4XCI6dn0pO2EuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKG0sdik7dmFyIHk9YS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6dn0pLHc9YS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWJhci1nb2Fscy1tYXJrZXJzXCJ9KSxrPTAsQT0wLFM9YS5pbml0aWFsUG9zaXRpb25zKG4sbCxjLGQsZyx1KTtsPVMueSxrPVMuYmFySGVpZ2h0LGQ9Uy55RGl2aXNpb24sdT1TLnplcm9XLG49Uy54LEE9Uy5iYXJXaWR0aCxjPVMueERpdmlzaW9uLGc9Uy56ZXJvSCxhLmJhckhlbHBlcnMuaW5pdGlhbGl6ZVN0YWNrZWRYWVZhcnMoYSksMT09PWEuZ3JvdXBDdHgucHJldlkubGVuZ3RoJiZhLmdyb3VwQ3R4LnByZXZZWzBdLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odCl9KSkmJihhLmdyb3VwQ3R4LnByZXZZWzBdPWEuZ3JvdXBDdHgucHJldllbMF0ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZ30pKSxhLmdyb3VwQ3R4LnByZXZZRlswXT1hLmdyb3VwQ3R4LnByZXZZRlswXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwfSkpKTtmb3IodmFyIEM9MDtDPHMuZ2xvYmFscy5kYXRhUG9pbnRzO0MrKyl7dmFyIEw9YS5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKHIsQyx2KSxQPXtpbmRleGVzOntpOnIsajpDLHJlYWxJbmRleDp2LGJjOmh9LHN0cm9rZVdpZHRoOkwseDpuLHk6bCxlbFNlcmllczptLGdyb3VwSW5kZXg6cCxzZXJpZXNHcm91cDpzLmdsb2JhbHMuc2VyaWVzR3JvdXBzW3BdfSxJPW51bGw7YS5pc0hvcml6b250YWw/KEk9YS5kcmF3U3RhY2tlZEJhclBhdGhzKGUoZSh7fSxQKSx7fSx7emVyb1c6dSxiYXJIZWlnaHQ6ayx5RGl2aXNpb246ZH0pKSxBPWEuc2VyaWVzW3JdW0NdL2EuaW52ZXJ0ZWRZUmF0aW8pOihJPWEuZHJhd1N0YWNrZWRDb2x1bW5QYXRocyhlKGUoe30sUCkse30se3hEaXZpc2lvbjpjLGJhcldpZHRoOkEsemVyb0g6Z30pKSxrPWEuc2VyaWVzW3JdW0NdL2EueVJhdGlvW2EueWF4aXNJbmRleF0pO3ZhciBNPWEuYmFySGVscGVycy5kcmF3R29hbExpbmUoe2JhclhQb3NpdGlvbjpJLmJhclhQb3NpdGlvbixiYXJZUG9zaXRpb246SS5iYXJZUG9zaXRpb24sZ29hbFg6SS5nb2FsWCxnb2FsWTpJLmdvYWxZLGJhckhlaWdodDprLGJhcldpZHRoOkF9KTtNJiZ3LmFkZChNKSxsPUkueSxuPUkueCxmLnB1c2gobiksYi5wdXNoKGwpO3ZhciBUPWEuYmFySGVscGVycy5nZXRQYXRoRmlsbENvbG9yKHQscixDLHYpO209YS5yZW5kZXJTZXJpZXMoe3JlYWxJbmRleDp2LHBhdGhGaWxsOlQsajpDLGk6cixncm91cEluZGV4OnAscGF0aEZyb206SS5wYXRoRnJvbSxwYXRoVG86SS5wYXRoVG8sc3Ryb2tlV2lkdGg6TCxlbFNlcmllczptLHg6bix5Omwsc2VyaWVzOnQsYmFySGVpZ2h0OmssYmFyV2lkdGg6QSxlbERhdGFMYWJlbHNXcmFwOnksZWxHb2Fsc01hcmtlcnM6dyx0eXBlOlwiYmFyXCIsdmlzaWJsZVNlcmllczowfSl9cy5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbdl09ZixzLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1t2XT1iLGEuZ3JvdXBDdHgucHJldlkucHVzaChhLmdyb3VwQ3R4LnlBcnJqKSxhLmdyb3VwQ3R4LnByZXZZRi5wdXNoKGEuZ3JvdXBDdHgueUFycmpGKSxhLmdyb3VwQ3R4LnByZXZZVmFsLnB1c2goYS5ncm91cEN0eC55QXJyalZhbCksYS5ncm91cEN0eC5wcmV2WC5wdXNoKGEuZ3JvdXBDdHgueEFycmopLGEuZ3JvdXBDdHgucHJldlhGLnB1c2goYS5ncm91cEN0eC54QXJyakYpLGEuZ3JvdXBDdHgucHJldlhWYWwucHVzaChhLmdyb3VwQ3R4LnhBcnJqVmFsKSxvLmFkZChtKX0sYz0wLGQ9MDtjPHQubGVuZ3RoO2MrKyxkKyspaChjLGQpO3JldHVybiBvfX0se2tleTpcImluaXRpYWxQb3NpdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG8sbixsLGgsYz10aGlzLnc7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsPyhsPShsPWE9Yy5nbG9iYWxzLmdyaWRIZWlnaHQvYy5nbG9iYWxzLmRhdGFQb2ludHMpKnBhcnNlSW50KGMuY29uZmlnLnBsb3RPcHRpb25zLmJhci5iYXJIZWlnaHQsMTApLzEwMCwtMT09PVN0cmluZyhjLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuYmFySGVpZ2h0KS5pbmRleE9mKFwiJVwiKSYmKGw9cGFyc2VJbnQoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmJhckhlaWdodCwxMCkpLHI9dGhpcy5iYXNlTGluZUludmVydGVkWStjLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsodGhpcy5pc1JldmVyc2VkP2MuZ2xvYmFscy5ncmlkV2lkdGg6MCktKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVJbnZlcnRlZFk6MCksZT0oYS1sKS8yKTooaD1pPWMuZ2xvYmFscy5ncmlkV2lkdGgvYy5nbG9iYWxzLmRhdGFQb2ludHMsaD1jLmdsb2JhbHMuaXNYTnVtZXJpYyYmYy5nbG9iYWxzLmRhdGFQb2ludHM+MT8oaT1jLmdsb2JhbHMubWluWERpZmYvdGhpcy54UmF0aW8pKnBhcnNlSW50KHRoaXMuYmFyT3B0aW9ucy5jb2x1bW5XaWR0aCwxMCkvMTAwOmgqcGFyc2VJbnQoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoLDEwKS8xMDAsLTE9PT1TdHJpbmcoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoKS5pbmRleE9mKFwiJVwiKSYmKGg9cGFyc2VJbnQoYy5jb25maWcucGxvdE9wdGlvbnMuYmFyLmNvbHVtbldpZHRoLDEwKSkscz1jLmdsb2JhbHMuZ3JpZEhlaWdodC10aGlzLmJhc2VMaW5lWVt0aGlzLnlheGlzSW5kZXhdLSh0aGlzLmlzUmV2ZXJzZWQ/Yy5nbG9iYWxzLmdyaWRIZWlnaHQ6MCkrKHRoaXMuaXNSZXZlcnNlZD8yKnRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF06MCksdD1jLmdsb2JhbHMucGFkSG9yaXpvbnRhbCsoaS1oKS8yKSx7eDp0LHk6ZSx5RGl2aXNpb246YSx4RGl2aXNpb246aSxiYXJIZWlnaHQ6bnVsbCE9PShvPWMuZ2xvYmFscy5zZXJpZXNHcm91cHMpJiZ2b2lkIDAhPT1vJiZvLmxlbmd0aD9sL2MuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoOmwsYmFyV2lkdGg6bnVsbCE9PShuPWMuZ2xvYmFscy5zZXJpZXNHcm91cHMpJiZ2b2lkIDAhPT1uJiZuLmxlbmd0aD9oL2MuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoOmgsemVyb0g6cyx6ZXJvVzpyfX19LHtrZXk6XCJkcmF3U3RhY2tlZEJhclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGk9dC5pbmRleGVzLGE9dC5iYXJIZWlnaHQscz10LnN0cm9rZVdpZHRoLHI9dC56ZXJvVyxvPXQueCxuPXQueSxsPXQuZ3JvdXBJbmRleCxoPXQuc2VyaWVzR3JvdXAsYz10LnlEaXZpc2lvbixkPXQuZWxTZXJpZXMsZz10aGlzLncsdT1uKygtMSE9PWw/bCphOjApLHA9aS5pLGY9aS5qLHg9MCxiPTA7Yjx0aGlzLmdyb3VwQ3R4LnByZXZYRi5sZW5ndGg7YisrKXgrPXRoaXMuZ3JvdXBDdHgucHJldlhGW2JdW2ZdO3ZhciB2PXA7aWYoaCYmKHY9aC5pbmRleE9mKGcuY29uZmlnLnNlcmllc1twXS5uYW1lKSksdj4wKXt2YXIgbT1yO3RoaXMuZ3JvdXBDdHgucHJldlhWYWxbdi0xXVtmXTwwP209dGhpcy5zZXJpZXNbcF1bZl0+PTA/dGhpcy5ncm91cEN0eC5wcmV2WFt2LTFdW2ZdK3gtMioodGhpcy5pc1JldmVyc2VkP3g6MCk6dGhpcy5ncm91cEN0eC5wcmV2WFt2LTFdW2ZdOnRoaXMuZ3JvdXBDdHgucHJldlhWYWxbdi0xXVtmXT49MCYmKG09dGhpcy5zZXJpZXNbcF1bZl0+PTA/dGhpcy5ncm91cEN0eC5wcmV2WFt2LTFdW2ZdOnRoaXMuZ3JvdXBDdHgucHJldlhbdi0xXVtmXS14KzIqKHRoaXMuaXNSZXZlcnNlZD94OjApKSxlPW19ZWxzZSBlPXI7bz1udWxsPT09dGhpcy5zZXJpZXNbcF1bZl0/ZTplK3RoaXMuc2VyaWVzW3BdW2ZdL3RoaXMuaW52ZXJ0ZWRZUmF0aW8tMioodGhpcy5pc1JldmVyc2VkP3RoaXMuc2VyaWVzW3BdW2ZdL3RoaXMuaW52ZXJ0ZWRZUmF0aW86MCk7dmFyIHk9dGhpcy5iYXJIZWxwZXJzLmdldEJhcnBhdGhzKHtiYXJZUG9zaXRpb246dSxiYXJIZWlnaHQ6YSx4MTplLHgyOm8sc3Ryb2tlV2lkdGg6cyxzZXJpZXM6dGhpcy5zZXJpZXMscmVhbEluZGV4OmkucmVhbEluZGV4LHNlcmllc0dyb3VwOmgsaTpwLGo6Zix3Omd9KTtyZXR1cm4gdGhpcy5iYXJIZWxwZXJzLmJhckJhY2tncm91bmQoe2o6ZixpOnAseTE6dSx5MjphLGVsU2VyaWVzOmR9KSxuKz1jLHtwYXRoVG86eS5wYXRoVG8scGF0aEZyb206eS5wYXRoRnJvbSxnb2FsWDp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInhcIixyLG51bGwscCxmKSxiYXJZUG9zaXRpb246dSx4Om8seTpufX19LHtrZXk6XCJkcmF3U3RhY2tlZENvbHVtblBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC54LGE9dC55LHM9dC54RGl2aXNpb24scj10LmJhcldpZHRoLG89dC56ZXJvSCxuPXQuZ3JvdXBJbmRleCxsPXQuc2VyaWVzR3JvdXAsaD10LmVsU2VyaWVzLGM9dGhpcy53LGQ9ZS5pLGc9ZS5qLHU9ZS5iYztpZihjLmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIHA9Yy5nbG9iYWxzLnNlcmllc1hbZF1bZ107cHx8KHA9MCksaT0ocC1jLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tci8yLGMuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoJiYoaT0ocC1jLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8tci8yKmMuZ2xvYmFscy5zZXJpZXNHcm91cHMubGVuZ3RoKX1mb3IodmFyIGYseD1pKygtMSE9PW4/bipyOjApLGI9MCx2PTA7djx0aGlzLmdyb3VwQ3R4LnByZXZZRi5sZW5ndGg7disrKWIrPWlzTmFOKHRoaXMuZ3JvdXBDdHgucHJldllGW3ZdW2ddKT8wOnRoaXMuZ3JvdXBDdHgucHJldllGW3ZdW2ddO3ZhciBtPWQ7aWYobCYmKG09bC5pbmRleE9mKGMuY29uZmlnLnNlcmllc1tkXS5uYW1lKSksbT4wJiYhYy5nbG9iYWxzLmlzWE51bWVyaWN8fG0+MCYmYy5nbG9iYWxzLmlzWE51bWVyaWMmJmMuZ2xvYmFscy5zZXJpZXNYW2QtMV1bZ109PT1jLmdsb2JhbHMuc2VyaWVzWFtkXVtnXSl7dmFyIHksdyxrLEE9TWF0aC5taW4odGhpcy55UmF0aW8ubGVuZ3RoKzEsZCsxKTtpZih2b2lkIDAhPT10aGlzLmdyb3VwQ3R4LnByZXZZW20tMV0mJnRoaXMuZ3JvdXBDdHgucHJldllbbS0xXS5sZW5ndGgpZm9yKHZhciBTPTE7UzxBO1MrKyl7dmFyIEM7aWYoIWlzTmFOKG51bGw9PT0oQz10aGlzLmdyb3VwQ3R4LnByZXZZW20tU10pfHx2b2lkIDA9PT1DP3ZvaWQgMDpDW2ddKSl7az10aGlzLmdyb3VwQ3R4LnByZXZZW20tU11bZ107YnJlYWt9fWZvcih2YXIgTD0xO0w8QTtMKyspe3ZhciBQLEk7aWYoKG51bGw9PT0oUD10aGlzLmdyb3VwQ3R4LnByZXZZVmFsW20tTF0pfHx2b2lkIDA9PT1QP3ZvaWQgMDpQW2ddKTwwKXt3PXRoaXMuc2VyaWVzW2RdW2ddPj0wP2stYisyKih0aGlzLmlzUmV2ZXJzZWQ/YjowKTprO2JyZWFrfWlmKChudWxsPT09KEk9dGhpcy5ncm91cEN0eC5wcmV2WVZhbFttLUxdKXx8dm9pZCAwPT09ST92b2lkIDA6SVtnXSk+PTApe3c9dGhpcy5zZXJpZXNbZF1bZ10+PTA/azprK2ItMioodGhpcy5pc1JldmVyc2VkP2I6MCk7YnJlYWt9fXZvaWQgMD09PXcmJih3PWMuZ2xvYmFscy5ncmlkSGVpZ2h0KSxmPW51bGwhPT0oeT10aGlzLmdyb3VwQ3R4LnByZXZZRlswXSkmJnZvaWQgMCE9PXkmJnkuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dH0pKSYmdGhpcy5ncm91cEN0eC5wcmV2WUYuc2xpY2UoMSxtKS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0KX0pKX0pKT9vOnd9ZWxzZSBmPW87YT10aGlzLnNlcmllc1tkXVtnXT9mLXRoaXMuc2VyaWVzW2RdW2ddL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF0rMioodGhpcy5pc1JldmVyc2VkP3RoaXMuc2VyaWVzW2RdW2ddL3RoaXMueVJhdGlvW3RoaXMueWF4aXNJbmRleF06MCk6Zjt2YXIgTT10aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoe2JhclhQb3NpdGlvbjp4LGJhcldpZHRoOnIseTE6Zix5MjphLHlSYXRpbzp0aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc2VyaWVzOnRoaXMuc2VyaWVzLHNlcmllc0dyb3VwOmwscmVhbEluZGV4OmUucmVhbEluZGV4LGk6ZCxqOmcsdzpjfSk7cmV0dXJuIHRoaXMuYmFySGVscGVycy5iYXJCYWNrZ3JvdW5kKHtiYzp1LGo6ZyxpOmQseDE6eCx4MjpyLGVsU2VyaWVzOmh9KSxpKz1zLHtwYXRoVG86TS5wYXRoVG8scGF0aEZyb206TS5wYXRoRnJvbSxnb2FsWTp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInlcIixudWxsLG8sZCxnKSxiYXJYUG9zaXRpb246eCx4OmMuZ2xvYmFscy5pc1hOdW1lcmljP2ktczppLHk6YX19fV0pLHN9KCksa3Q9ZnVuY3Rpb24odCl7bihzLHl0KTt2YXIgaT1kKHMpO2Z1bmN0aW9uIHMoKXtyZXR1cm4gYSh0aGlzLHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiByKHMsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEpe3ZhciBzPXRoaXMscj10aGlzLncsbz1uZXcgbSh0aGlzLmN0eCksbj1yLmdsb2JhbHMuY29tYm9DaGFydHM/aTpyLmNvbmZpZy5jaGFydC50eXBlLGw9bmV3IFIodGhpcy5jdHgpO3RoaXMuY2FuZGxlc3RpY2tPcHRpb25zPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuY2FuZGxlc3RpY2ssdGhpcy5ib3hPcHRpb25zPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuYm94UGxvdCx0aGlzLmlzSG9yaXpvbnRhbD1yLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIuaG9yaXpvbnRhbDt2YXIgaD1uZXcgeSh0aGlzLmN0eCxyKTt0PWguZ2V0TG9nU2VyaWVzKHQpLHRoaXMuc2VyaWVzPXQsdGhpcy55UmF0aW89aC5nZXRMb2dZUmF0aW9zKHRoaXMueVJhdGlvKSx0aGlzLmJhckhlbHBlcnMuaW5pdFZhcmlhYmxlcyh0KTtmb3IodmFyIGM9by5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChuLFwiLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIpfSksZD1mdW5jdGlvbihpKXtzLmlzQm94UGxvdD1cImJveFBsb3RcIj09PXIuY29uZmlnLmNoYXJ0LnR5cGV8fFwiYm94UGxvdFwiPT09ci5jb25maWcuc2VyaWVzW2ldLnR5cGU7dmFyIG4saCxkLGcsdT12b2lkIDAscD12b2lkIDAsZj1bXSxiPVtdLHY9ci5nbG9iYWxzLmNvbWJvQ2hhcnRzP2FbaV06aSxtPW8uZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKHIuZ2xvYmFscy5zZXJpZXNOYW1lc1t2XSkscmVsOmkrMSxcImRhdGE6cmVhbEluZGV4XCI6dn0pO3MuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKG0sdiksdFtpXS5sZW5ndGg+MCYmKHMudmlzaWJsZUk9cy52aXNpYmxlSSsxKTt2YXIgeSx3O3MueVJhdGlvLmxlbmd0aD4xJiYocy55YXhpc0luZGV4PXYpO3ZhciBrPXMuYmFySGVscGVycy5pbml0aWFsUG9zaXRpb25zKCk7cD1rLnkseT1rLmJhckhlaWdodCxoPWsueURpdmlzaW9uLGc9ay56ZXJvVyx1PWsueCx3PWsuYmFyV2lkdGgsbj1rLnhEaXZpc2lvbixkPWsuemVyb0gsYi5wdXNoKHUrdy8yKTtmb3IodmFyIEE9by5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6dn0pLFM9ZnVuY3Rpb24oYSl7dmFyIG89cy5iYXJIZWxwZXJzLmdldFN0cm9rZVdpZHRoKGksYSx2KSxjPW51bGwseD17aW5kZXhlczp7aTppLGo6YSxyZWFsSW5kZXg6dn0seDp1LHk6cCxzdHJva2VXaWR0aDpvLGVsU2VyaWVzOm19O2M9cy5pc0hvcml6b250YWw/cy5kcmF3SG9yaXpvbnRhbEJveFBhdGhzKGUoZSh7fSx4KSx7fSx7eURpdmlzaW9uOmgsYmFySGVpZ2h0OnksemVyb1c6Z30pKTpzLmRyYXdWZXJ0aWNhbEJveFBhdGhzKGUoZSh7fSx4KSx7fSx7eERpdmlzaW9uOm4sYmFyV2lkdGg6dyx6ZXJvSDpkfSkpLHA9Yy55LHU9Yy54LGE+MCYmYi5wdXNoKHUrdy8yKSxmLnB1c2gocCksYy5wYXRoVG8uZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXt2YXIgaD0hcy5pc0JveFBsb3QmJnMuY2FuZGxlc3RpY2tPcHRpb25zLndpY2sudXNlRmlsbENvbG9yP2MuY29sb3Jbbl06ci5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbaV0sZD1sLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6dixkYXRhUG9pbnRJbmRleDphLGNvbG9yOmMuY29sb3Jbbl0sdmFsdWU6dFtpXVthXX0pO3MucmVuZGVyU2VyaWVzKHtyZWFsSW5kZXg6dixwYXRoRmlsbDpkLGxpbmVGaWxsOmgsajphLGk6aSxwYXRoRnJvbTpjLnBhdGhGcm9tLHBhdGhUbzplLHN0cm9rZVdpZHRoOm8sZWxTZXJpZXM6bSx4OnUseTpwLHNlcmllczp0LGJhckhlaWdodDp5LGJhcldpZHRoOncsZWxEYXRhTGFiZWxzV3JhcDpBLHZpc2libGVTZXJpZXM6cy52aXNpYmxlSSx0eXBlOnIuY29uZmlnLmNoYXJ0LnR5cGV9KX0pKX0sQz0wO0M8ci5nbG9iYWxzLmRhdGFQb2ludHM7QysrKVMoQyk7ci5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbdl09YixyLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1t2XT1mLGMuYWRkKG0pfSxnPTA7Zzx0Lmxlbmd0aDtnKyspZChnKTtyZXR1cm4gY319LHtrZXk6XCJkcmF3VmVydGljYWxCb3hQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhlcyxpPXQueDt0Lnk7dmFyIGE9dC54RGl2aXNpb24scz10LmJhcldpZHRoLHI9dC56ZXJvSCxvPXQuc3Ryb2tlV2lkdGgsbj10aGlzLncsbD1uZXcgbSh0aGlzLmN0eCksaD1lLmksYz1lLmosZD0hMCxnPW4uY29uZmlnLnBsb3RPcHRpb25zLmNhbmRsZXN0aWNrLmNvbG9ycy51cHdhcmQsdT1uLmNvbmZpZy5wbG90T3B0aW9ucy5jYW5kbGVzdGljay5jb2xvcnMuZG93bndhcmQscD1cIlwiO3RoaXMuaXNCb3hQbG90JiYocD1bdGhpcy5ib3hPcHRpb25zLmNvbG9ycy5sb3dlcix0aGlzLmJveE9wdGlvbnMuY29sb3JzLnVwcGVyXSk7dmFyIGY9dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSx4PWUucmVhbEluZGV4LGI9dGhpcy5nZXRPSExDVmFsdWUoeCxjKSx2PXIseT1yO2Iubz5iLmMmJihkPSExKTt2YXIgdz1NYXRoLm1pbihiLm8sYi5jKSxrPU1hdGgubWF4KGIubyxiLmMpLEE9Yi5tO24uZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0obi5nbG9iYWxzLnNlcmllc1hbeF1bY10tbi5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXMvMik7dmFyIFM9aStzKnRoaXMudmlzaWJsZUk7dm9pZCAwPT09dGhpcy5zZXJpZXNbaF1bY118fG51bGw9PT10aGlzLnNlcmllc1toXVtjXT8odz1yLGs9cik6KHc9ci13L2Ysaz1yLWsvZix2PXItYi5oL2YseT1yLWIubC9mLEE9ci1iLm0vZik7dmFyIEM9bC5tb3ZlKFMsciksTD1sLm1vdmUoUytzLzIsdyk7cmV0dXJuIG4uZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoTD10aGlzLmdldFByZXZpb3VzUGF0aCh4LGMsITApKSxDPXRoaXMuaXNCb3hQbG90P1tsLm1vdmUoUyx3KStsLmxpbmUoUytzLzIsdykrbC5saW5lKFMrcy8yLHYpK2wubGluZShTK3MvNCx2KStsLmxpbmUoUytzLXMvNCx2KStsLmxpbmUoUytzLzIsdikrbC5saW5lKFMrcy8yLHcpK2wubGluZShTK3MsdykrbC5saW5lKFMrcyxBKStsLmxpbmUoUyxBKStsLmxpbmUoUyx3K28vMiksbC5tb3ZlKFMsQSkrbC5saW5lKFMrcyxBKStsLmxpbmUoUytzLGspK2wubGluZShTK3MvMixrKStsLmxpbmUoUytzLzIseSkrbC5saW5lKFMrcy1zLzQseSkrbC5saW5lKFMrcy80LHkpK2wubGluZShTK3MvMix5KStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMsaykrbC5saW5lKFMsQSkrXCJ6XCJdOltsLm1vdmUoUyxrKStsLmxpbmUoUytzLzIsaykrbC5saW5lKFMrcy8yLHYpK2wubGluZShTK3MvMixrKStsLmxpbmUoUytzLGspK2wubGluZShTK3MsdykrbC5saW5lKFMrcy8yLHcpK2wubGluZShTK3MvMix5KStsLmxpbmUoUytzLzIsdykrbC5saW5lKFMsdykrbC5saW5lKFMsay1vLzIpXSxMKz1sLm1vdmUoUyx3KSxuLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGkrPWEpLHtwYXRoVG86QyxwYXRoRnJvbTpMLHg6aSx5OmssYmFyWFBvc2l0aW9uOlMsY29sb3I6dGhpcy5pc0JveFBsb3Q/cDpkP1tnXTpbdV19fX0se2tleTpcImRyYXdIb3Jpem9udGFsQm94UGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4ZXM7dC54O3ZhciBpPXQueSxhPXQueURpdmlzaW9uLHM9dC5iYXJIZWlnaHQscj10Lnplcm9XLG89dC5zdHJva2VXaWR0aCxuPXRoaXMudyxsPW5ldyBtKHRoaXMuY3R4KSxoPWUuaSxjPWUuaixkPXRoaXMuYm94T3B0aW9ucy5jb2xvcnMubG93ZXI7dGhpcy5pc0JveFBsb3QmJihkPVt0aGlzLmJveE9wdGlvbnMuY29sb3JzLmxvd2VyLHRoaXMuYm94T3B0aW9ucy5jb2xvcnMudXBwZXJdKTt2YXIgZz10aGlzLmludmVydGVkWVJhdGlvLHU9ZS5yZWFsSW5kZXgscD10aGlzLmdldE9ITENWYWx1ZSh1LGMpLGY9cix4PXIsYj1NYXRoLm1pbihwLm8scC5jKSx2PU1hdGgubWF4KHAubyxwLmMpLHk9cC5tO24uZ2xvYmFscy5pc1hOdW1lcmljJiYoaT0obi5nbG9iYWxzLnNlcmllc1hbdV1bY10tbi5nbG9iYWxzLm1pblgpL3RoaXMuaW52ZXJ0ZWRYUmF0aW8tcy8yKTt2YXIgdz1pK3MqdGhpcy52aXNpYmxlSTt2b2lkIDA9PT10aGlzLnNlcmllc1toXVtjXXx8bnVsbD09PXRoaXMuc2VyaWVzW2hdW2NdPyhiPXIsdj1yKTooYj1yK2IvZyx2PXIrdi9nLGY9citwLmgvZyx4PXIrcC5sL2cseT1yK3AubS9nKTt2YXIgaz1sLm1vdmUocix3KSxBPWwubW92ZShiLHcrcy8yKTtyZXR1cm4gbi5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoPjAmJihBPXRoaXMuZ2V0UHJldmlvdXNQYXRoKHUsYywhMCkpLGs9W2wubW92ZShiLHcpK2wubGluZShiLHcrcy8yKStsLmxpbmUoZix3K3MvMikrbC5saW5lKGYsdytzLzItcy80KStsLmxpbmUoZix3K3MvMitzLzQpK2wubGluZShmLHcrcy8yKStsLmxpbmUoYix3K3MvMikrbC5saW5lKGIsdytzKStsLmxpbmUoeSx3K3MpK2wubGluZSh5LHcpK2wubGluZShiK28vMix3KSxsLm1vdmUoeSx3KStsLmxpbmUoeSx3K3MpK2wubGluZSh2LHcrcykrbC5saW5lKHYsdytzLzIpK2wubGluZSh4LHcrcy8yKStsLmxpbmUoeCx3K3Mtcy80KStsLmxpbmUoeCx3K3MvNCkrbC5saW5lKHgsdytzLzIpK2wubGluZSh2LHcrcy8yKStsLmxpbmUodix3KStsLmxpbmUoeSx3KStcInpcIl0sQSs9bC5tb3ZlKGIsdyksbi5nbG9iYWxzLmlzWE51bWVyaWN8fChpKz1hKSx7cGF0aFRvOmsscGF0aEZyb206QSx4OnYseTppLGJhcllQb3NpdGlvbjp3LGNvbG9yOmR9fX0se2tleTpcImdldE9ITENWYWx1ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O3JldHVybntvOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVIW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVPW3RdW2VdLGg6dGhpcy5pc0JveFBsb3Q/aS5nbG9iYWxzLnNlcmllc0NhbmRsZU9bdF1bZV06aS5nbG9iYWxzLnNlcmllc0NhbmRsZUhbdF1bZV0sbTppLmdsb2JhbHMuc2VyaWVzQ2FuZGxlTVt0XVtlXSxsOnRoaXMuaXNCb3hQbG90P2kuZ2xvYmFscy5zZXJpZXNDYW5kbGVDW3RdW2VdOmkuZ2xvYmFscy5zZXJpZXNDYW5kbGVMW3RdW2VdLGM6dGhpcy5pc0JveFBsb3Q/aS5nbG9iYWxzLnNlcmllc0NhbmRsZUxbdF1bZV06aS5nbG9iYWxzLnNlcmllc0NhbmRsZUNbdF1bZV19fX1dKSxzfSgpLEF0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJjaGVja0NvbG9yUmFuZ2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudyxlPSExLGk9dC5jb25maWcucGxvdE9wdGlvbnNbdC5jb25maWcuY2hhcnQudHlwZV07cmV0dXJuIGkuY29sb3JTY2FsZS5yYW5nZXMubGVuZ3RoPjAmJmkuY29sb3JTY2FsZS5yYW5nZXMubWFwKChmdW5jdGlvbih0LGkpe3QuZnJvbTw9MCYmKGU9ITApfSkpLGV9fSx7a2V5OlwiZ2V0U2hhZGVDb2xvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPTEsbz1zLmNvbmZpZy5wbG90T3B0aW9uc1t0XS5zaGFkZUludGVuc2l0eSxuPXRoaXMuZGV0ZXJtaW5lQ29sb3IodCxlLGkpO3MuZ2xvYmFscy5oYXNOZWdzfHxhP3I9cy5jb25maWcucGxvdE9wdGlvbnNbdF0ucmV2ZXJzZU5lZ2F0aXZlU2hhZGU/bi5wZXJjZW50PDA/bi5wZXJjZW50LzEwMCooMS4yNSpvKTooMS1uLnBlcmNlbnQvMTAwKSooMS4yNSpvKTpuLnBlcmNlbnQ8PTA/MS0oMStuLnBlcmNlbnQvMTAwKSpvOigxLW4ucGVyY2VudC8xMDApKm86KHI9MS1uLnBlcmNlbnQvMTAwLFwidHJlZW1hcFwiPT09dCYmKHI9KDEtbi5wZXJjZW50LzEwMCkqKDEuMjUqbykpKTt2YXIgbD1uLmNvbG9yLGg9bmV3IHg7cmV0dXJuIHMuY29uZmlnLnBsb3RPcHRpb25zW3RdLmVuYWJsZVNoYWRlcyYmKGw9XCJkYXJrXCI9PT10aGlzLncuY29uZmlnLnRoZW1lLm1vZGU/eC5oZXhUb1JnYmEoaC5zaGFkZUNvbG9yKC0xKnIsbi5jb2xvcikscy5jb25maWcuZmlsbC5vcGFjaXR5KTp4LmhleFRvUmdiYShoLnNoYWRlQ29sb3IocixuLmNvbG9yKSxzLmNvbmZpZy5maWxsLm9wYWNpdHkpKSx7Y29sb3I6bCxjb2xvclByb3BzOm59fX0se2tleTpcImRldGVybWluZUNvbG9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMudyxzPWEuZ2xvYmFscy5zZXJpZXNbZV1baV0scj1hLmNvbmZpZy5wbG90T3B0aW9uc1t0XSxvPXIuY29sb3JTY2FsZS5pbnZlcnNlP2k6ZTtyLmRpc3RyaWJ1dGVkJiZcInRyZWVtYXBcIj09PWEuY29uZmlnLmNoYXJ0LnR5cGUmJihvPWkpO3ZhciBuPWEuZ2xvYmFscy5jb2xvcnNbb10sbD1udWxsLGg9TWF0aC5taW4uYXBwbHkoTWF0aCx1KGEuZ2xvYmFscy5zZXJpZXNbZV0pKSxjPU1hdGgubWF4LmFwcGx5KE1hdGgsdShhLmdsb2JhbHMuc2VyaWVzW2VdKSk7ci5kaXN0cmlidXRlZHx8XCJoZWF0bWFwXCIhPT10fHwoaD1hLmdsb2JhbHMubWluWSxjPWEuZ2xvYmFscy5tYXhZKSx2b2lkIDAhPT1yLmNvbG9yU2NhbGUubWluJiYoaD1yLmNvbG9yU2NhbGUubWluPGEuZ2xvYmFscy5taW5ZP3IuY29sb3JTY2FsZS5taW46YS5nbG9iYWxzLm1pblksYz1yLmNvbG9yU2NhbGUubWF4PmEuZ2xvYmFscy5tYXhZP3IuY29sb3JTY2FsZS5tYXg6YS5nbG9iYWxzLm1heFkpO3ZhciBkPU1hdGguYWJzKGMpK01hdGguYWJzKGgpLGc9MTAwKnMvKDA9PT1kP2QtMWUtNjpkKTtyLmNvbG9yU2NhbGUucmFuZ2VzLmxlbmd0aD4wJiZyLmNvbG9yU2NhbGUucmFuZ2VzLm1hcCgoZnVuY3Rpb24odCxlKXtpZihzPj10LmZyb20mJnM8PXQudG8pe249dC5jb2xvcixsPXQuZm9yZUNvbG9yP3QuZm9yZUNvbG9yOm51bGwsaD10LmZyb20sYz10LnRvO3ZhciBpPU1hdGguYWJzKGMpK01hdGguYWJzKGgpO2c9MTAwKnMvKDA9PT1pP2ktMWUtNjppKX19KSk7cmV0dXJue2NvbG9yOm4sZm9yZUNvbG9yOmwscGVyY2VudDpnfX19LHtrZXk6XCJjYWxjdWxhdGVEYXRhTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50ZXh0LGk9dC54LGE9dC55LHM9dC5pLHI9dC5qLG89dC5jb2xvclByb3BzLG49dC5mb250U2l6ZSxsPXRoaXMudy5jb25maWcuZGF0YUxhYmVscyxoPW5ldyBtKHRoaXMuY3R4KSxjPW5ldyBPKHRoaXMuY3R4KSxkPW51bGw7aWYobC5lbmFibGVkKXtkPWguZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7dmFyIGc9bC5vZmZzZXRYLHU9bC5vZmZzZXRZLHA9aStnLGY9YStwYXJzZUZsb2F0KGwuc3R5bGUuZm9udFNpemUpLzMrdTtjLnBsb3REYXRhTGFiZWxzVGV4dCh7eDpwLHk6Zix0ZXh0OmUsaTpzLGo6cixjb2xvcjpvLmZvcmVDb2xvcixwYXJlbnQ6ZCxmb250U2l6ZTpuLGRhdGFMYWJlbHNDb25maWc6bH0pfXJldHVybiBkfX0se2tleTpcImFkZExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBtKHRoaXMuY3R4KTt0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixlLnBhdGhNb3VzZUVudGVyLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsZS5wYXRoTW91c2VMZWF2ZS5iaW5kKHRoaXMsdCkpLHQubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsZS5wYXRoTW91c2VEb3duLmJpbmQodGhpcyx0KSl9fV0pLHR9KCksU3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnhSYXRpbz1pLnhSYXRpbyx0aGlzLnlSYXRpbz1pLnlSYXRpbyx0aGlzLmR5bmFtaWNBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLHRoaXMuaGVscGVycz1uZXcgQXQoZSksdGhpcy5yZWN0UmFkaXVzPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMuaGVhdG1hcC5yYWRpdXMsdGhpcy5zdHJva2VXaWR0aD10aGlzLncuY29uZmlnLnN0cm9rZS5zaG93P3RoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoOjB9cmV0dXJuIHIodCxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtaGVhdG1hcFwifSk7YS5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2dyaWRSZWN0TWFza1wiLmNvbmNhdChlLmdsb2JhbHMuY3VpZCxcIilcIikpO3ZhciBzPWUuZ2xvYmFscy5ncmlkV2lkdGgvZS5nbG9iYWxzLmRhdGFQb2ludHMscj1lLmdsb2JhbHMuZ3JpZEhlaWdodC9lLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCxvPTAsbj0hMTt0aGlzLm5lZ1JhbmdlPXRoaXMuaGVscGVycy5jaGVja0NvbG9yUmFuZ2UoKTt2YXIgbD10LnNsaWNlKCk7ZS5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQmJihuPSEwLGwucmV2ZXJzZSgpKTtmb3IodmFyIGg9bj8wOmwubGVuZ3RoLTE7bj9oPGwubGVuZ3RoOmg+PTA7bj9oKys6aC0tKXt2YXIgYz1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzIGFwZXhjaGFydHMtaGVhdG1hcC1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGUuZ2xvYmFscy5zZXJpZXNOYW1lc1toXSkscmVsOmgrMSxcImRhdGE6cmVhbEluZGV4XCI6aH0pO2lmKHRoaXMuY3R4LnNlcmllcy5hZGRDb2xsYXBzZWRDbGFzc1RvU2VyaWVzKGMsaCksZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgZD1lLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O25ldyB2KHRoaXMuY3R4KS5kcm9wU2hhZG93KGMsZCxoKX1mb3IodmFyIGc9MCx1PWUuY29uZmlnLnBsb3RPcHRpb25zLmhlYXRtYXAuc2hhZGVJbnRlbnNpdHkscD0wO3A8bFtoXS5sZW5ndGg7cCsrKXt2YXIgZj10aGlzLmhlbHBlcnMuZ2V0U2hhZGVDb2xvcihlLmNvbmZpZy5jaGFydC50eXBlLGgscCx0aGlzLm5lZ1JhbmdlKSxiPWYuY29sb3IseT1mLmNvbG9yUHJvcHM7aWYoXCJpbWFnZVwiPT09ZS5jb25maWcuZmlsbC50eXBlKWI9bmV3IFIodGhpcy5jdHgpLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6aCxkYXRhUG9pbnRJbmRleDpwLG9wYWNpdHk6ZS5nbG9iYWxzLmhhc05lZ3M/eS5wZXJjZW50PDA/MS0oMSt5LnBlcmNlbnQvMTAwKTp1K3kucGVyY2VudC8xMDA6eS5wZXJjZW50LzEwMCxwYXR0ZXJuSUQ6eC5yYW5kb21JZCgpLHdpZHRoOmUuY29uZmlnLmZpbGwuaW1hZ2Uud2lkdGg/ZS5jb25maWcuZmlsbC5pbWFnZS53aWR0aDpzLGhlaWdodDplLmNvbmZpZy5maWxsLmltYWdlLmhlaWdodD9lLmNvbmZpZy5maWxsLmltYWdlLmhlaWdodDpyfSk7dmFyIHc9dGhpcy5yZWN0UmFkaXVzLGs9aS5kcmF3UmVjdChnLG8scyxyLHcpO2lmKGsuYXR0cih7Y3g6ZyxjeTpvfSksay5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLWhlYXRtYXAtcmVjdFwiKSxjLmFkZChrKSxrLmF0dHIoe2ZpbGw6YixpOmgsaW5kZXg6aCxqOnAsdmFsOmxbaF1bcF0sXCJzdHJva2Utd2lkdGhcIjp0aGlzLnN0cm9rZVdpZHRoLHN0cm9rZTplLmNvbmZpZy5wbG90T3B0aW9ucy5oZWF0bWFwLnVzZUZpbGxDb2xvckFzU3Ryb2tlP2I6ZS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbMF0sY29sb3I6Yn0pLHRoaXMuaGVscGVycy5hZGRMaXN0ZW5lcnMoayksZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkJiYhZS5nbG9iYWxzLmRhdGFDaGFuZ2VkKXt2YXIgQT0xO2UuZ2xvYmFscy5yZXNpemVkfHwoQT1lLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkKSx0aGlzLmFuaW1hdGVIZWF0TWFwKGssZyxvLHMscixBKX1pZihlLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciBTPTE7aWYodGhpcy5keW5hbWljQW5pbS5lbmFibGVkJiZlLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSl7Uz10aGlzLmR5bmFtaWNBbmltLnNwZWVkO3ZhciBDPWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2hdJiZlLmdsb2JhbHMucHJldmlvdXNQYXRoc1toXVtwXSYmZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbaF1bcF0uY29sb3I7Q3x8KEM9XCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApXCIpLHRoaXMuYW5pbWF0ZUhlYXRDb2xvcihrLHguaXNDb2xvckhleChDKT9DOngucmdiMmhleChDKSx4LmlzQ29sb3JIZXgoYik/Yjp4LnJnYjJoZXgoYiksUyl9fXZhciBMPSgwLGUuY29uZmlnLmRhdGFMYWJlbHMuZm9ybWF0dGVyKShlLmdsb2JhbHMuc2VyaWVzW2hdW3BdLHt2YWx1ZTplLmdsb2JhbHMuc2VyaWVzW2hdW3BdLHNlcmllc0luZGV4OmgsZGF0YVBvaW50SW5kZXg6cCx3OmV9KSxQPXRoaXMuaGVscGVycy5jYWxjdWxhdGVEYXRhTGFiZWxzKHt0ZXh0OkwseDpnK3MvMix5Om8rci8yLGk6aCxqOnAsY29sb3JQcm9wczp5LHNlcmllczpsfSk7bnVsbCE9PVAmJmMuYWRkKFApLGcrPXN9bys9cixhLmFkZChjKX12YXIgST1lLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQuc2xpY2UoKTtyZXR1cm4gZS5jb25maWcueWF4aXNbMF0ucmV2ZXJzZWQ/SS51bnNoaWZ0KFwiXCIpOkkucHVzaChcIlwiKSxlLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQ9SSxhfX0se2tleTpcImFuaW1hdGVIZWF0TWFwXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzLHIpe3ZhciBvPW5ldyBiKHRoaXMuY3R4KTtvLmFuaW1hdGVSZWN0KHQse3g6ZSthLzIseTppK3MvMix3aWR0aDowLGhlaWdodDowfSx7eDplLHk6aSx3aWR0aDphLGhlaWdodDpzfSxyLChmdW5jdGlvbigpe28uYW5pbWF0aW9uQ29tcGxldGVkKHQpfSkpfX0se2tleTpcImFuaW1hdGVIZWF0Q29sb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhKXt0LmF0dHIoe2ZpbGw6ZX0pLmFuaW1hdGUoYSkuYXR0cih7ZmlsbDppfSl9fV0pLHR9KCksQ3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLnd9cmV0dXJuIHIodCxbe2tleTpcImRyYXdZQXhpc1RleHRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSl7dmFyIHM9dGhpcy53LHI9cy5jb25maWcueWF4aXNbMF0sbz1zLmdsb2JhbHMueUxhYmVsRm9ybWF0dGVyc1swXTtyZXR1cm4gbmV3IG0odGhpcy5jdHgpLmRyYXdUZXh0KHt4OnQrci5sYWJlbHMub2Zmc2V0WCx5OmUrci5sYWJlbHMub2Zmc2V0WSx0ZXh0Om8oYSxpKSx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9udFNpemU6ci5sYWJlbHMuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTpyLmxhYmVscy5zdHlsZS5mb250RmFtaWx5LGZvcmVDb2xvcjpBcnJheS5pc0FycmF5KHIubGFiZWxzLnN0eWxlLmNvbG9ycyk/ci5sYWJlbHMuc3R5bGUuY29sb3JzW2ldOnIubGFiZWxzLnN0eWxlLmNvbG9yc30pfX1dKSx0fSgpLEx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53O3ZhciBpPXRoaXMudzt0aGlzLmNoYXJ0VHlwZT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUsdGhpcy5pbml0aWFsQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCx0aGlzLmR5bmFtaWNBbmltPXRoaXMuaW5pdGlhbEFuaW0mJnRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLmVuYWJsZWQsdGhpcy5hbmltQmVnaW5BcnI9WzBdLHRoaXMuYW5pbUR1cj0wLHRoaXMuZG9udXREYXRhTGFiZWxzPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMucGllLmRvbnV0LmxhYmVscyx0aGlzLmxpbmVDb2xvckFycj12b2lkIDAhPT1pLmdsb2JhbHMuc3Ryb2tlLmNvbG9ycz9pLmdsb2JhbHMuc3Ryb2tlLmNvbG9yczppLmdsb2JhbHMuY29sb3JzLHRoaXMuZGVmYXVsdFNpemU9TWF0aC5taW4oaS5nbG9iYWxzLmdyaWRXaWR0aCxpLmdsb2JhbHMuZ3JpZEhlaWdodCksdGhpcy5jZW50ZXJZPXRoaXMuZGVmYXVsdFNpemUvMix0aGlzLmNlbnRlclg9aS5nbG9iYWxzLmdyaWRXaWR0aC8yLFwicmFkaWFsQmFyXCI9PT1pLmNvbmZpZy5jaGFydC50eXBlP3RoaXMuZnVsbEFuZ2xlPTM2MDp0aGlzLmZ1bGxBbmdsZT1NYXRoLmFicyhpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZW5kQW5nbGUtaS5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUpLHRoaXMuaW5pdGlhbEFuZ2xlPWkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5zdGFydEFuZ2xlJXRoaXMuZnVsbEFuZ2xlLGkuZ2xvYmFscy5yYWRpYWxTaXplPXRoaXMuZGVmYXVsdFNpemUvMi4wNS1pLmNvbmZpZy5zdHJva2Uud2lkdGgtKGkuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkPzA6aS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyKSx0aGlzLmRvbnV0U2l6ZT1pLmdsb2JhbHMucmFkaWFsU2l6ZSpwYXJzZUludChpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuc2l6ZSwxMCkvMTAwLHRoaXMubWF4WT0wLHRoaXMuc2xpY2VMYWJlbHM9W10sdGhpcy5zbGljZVNpemVzPVtdLHRoaXMucHJldlNlY3RvckFuZ2xlQXJyPVtdfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KTtpZih0aGlzLnJldD1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcGllXCJ9KSxpLmdsb2JhbHMubm9EYXRhKXJldHVybiB0aGlzLnJldDtmb3IodmFyIHM9MCxyPTA7cjx0Lmxlbmd0aDtyKyspcys9eC5uZWdUb1plcm8odFtyXSk7dmFyIG89W10sbj1hLmdyb3VwKCk7MD09PXMmJihzPTFlLTUpLHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5tYXhZPU1hdGgubWF4KGUubWF4WSx0KX0pKSxpLmNvbmZpZy55YXhpc1swXS5tYXgmJih0aGlzLm1heFk9aS5jb25maWcueWF4aXNbMF0ubWF4KSxcImJhY2tcIj09PWkuY29uZmlnLmdyaWQucG9zaXRpb24mJlwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZSYmdGhpcy5kcmF3UG9sYXJFbGVtZW50cyh0aGlzLnJldCk7Zm9yKHZhciBsPTA7bDx0Lmxlbmd0aDtsKyspe3ZhciBoPXRoaXMuZnVsbEFuZ2xlKngubmVnVG9aZXJvKHRbbF0pL3M7by5wdXNoKGgpLFwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZT8ob1tsXT10aGlzLmZ1bGxBbmdsZS90Lmxlbmd0aCx0aGlzLnNsaWNlU2l6ZXMucHVzaChpLmdsb2JhbHMucmFkaWFsU2l6ZSp0W2xdL3RoaXMubWF4WSkpOnRoaXMuc2xpY2VTaXplcy5wdXNoKGkuZ2xvYmFscy5yYWRpYWxTaXplKX1pZihpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe2Zvcih2YXIgYyxkPTAsZz0wO2c8aS5nbG9iYWxzLnByZXZpb3VzUGF0aHMubGVuZ3RoO2crKylkKz14Lm5lZ1RvWmVybyhpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tnXSk7Zm9yKHZhciB1PTA7dTxpLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7dSsrKWM9dGhpcy5mdWxsQW5nbGUqeC5uZWdUb1plcm8oaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbdV0pL2QsdGhpcy5wcmV2U2VjdG9yQW5nbGVBcnIucHVzaChjKX10aGlzLmRvbnV0U2l6ZTwwJiYodGhpcy5kb251dFNpemU9MCk7dmFyIHA9aS5jb25maWcucGxvdE9wdGlvbnMucGllLmN1c3RvbVNjYWxlLGY9aS5nbG9iYWxzLmdyaWRXaWR0aC8yLGI9aS5nbG9iYWxzLmdyaWRIZWlnaHQvMix2PWYtaS5nbG9iYWxzLmdyaWRXaWR0aC8yKnAseT1iLWkuZ2xvYmFscy5ncmlkSGVpZ2h0LzIqcDtpZihcImRvbnV0XCI9PT10aGlzLmNoYXJ0VHlwZSl7dmFyIHc9YS5kcmF3Q2lyY2xlKHRoaXMuZG9udXRTaXplKTt3LmF0dHIoe2N4OnRoaXMuY2VudGVyWCxjeTp0aGlzLmNlbnRlclksZmlsbDppLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuYmFja2dyb3VuZD9pLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZG9udXQuYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCJ9KSxuLmFkZCh3KX12YXIgaz10aGlzLmRyYXdBcmNzKG8sdCk7aWYodGhpcy5zbGljZUxhYmVscy5mb3JFYWNoKChmdW5jdGlvbih0KXtrLmFkZCh0KX0pKSxuLmF0dHIoe3RyYW5zZm9ybTpcInRyYW5zbGF0ZShcIi5jb25jYXQodixcIiwgXCIpLmNvbmNhdCh5LFwiKSBzY2FsZShcIikuY29uY2F0KHAsXCIpXCIpfSksbi5hZGQoayksdGhpcy5yZXQuYWRkKG4pLHRoaXMuZG9udXREYXRhTGFiZWxzLnNob3cpe3ZhciBBPXRoaXMucmVuZGVySW5uZXJEYXRhTGFiZWxzKHRoaXMuZG9udXREYXRhTGFiZWxzLHtob2xsb3dTaXplOnRoaXMuZG9udXRTaXplLGNlbnRlclg6dGhpcy5jZW50ZXJYLGNlbnRlclk6dGhpcy5jZW50ZXJZLG9wYWNpdHk6dGhpcy5kb251dERhdGFMYWJlbHMuc2hvdyx0cmFuc2xhdGVYOnYsdHJhbnNsYXRlWTp5fSk7dGhpcy5yZXQuYWRkKEEpfXJldHVyblwiZnJvbnRcIj09PWkuY29uZmlnLmdyaWQucG9zaXRpb24mJlwicG9sYXJBcmVhXCI9PT10aGlzLmNoYXJ0VHlwZSYmdGhpcy5kcmF3UG9sYXJFbGVtZW50cyh0aGlzLnJldCksdGhpcy5yZXR9fSx7a2V5OlwiZHJhd0FyY3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyB2KHRoaXMuY3R4KSxzPW5ldyBtKHRoaXMuY3R4KSxyPW5ldyBSKHRoaXMuY3R4KSxvPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zbGljZXNcIn0pLG49dGhpcy5pbml0aWFsQW5nbGUsbD10aGlzLmluaXRpYWxBbmdsZSxoPXRoaXMuaW5pdGlhbEFuZ2xlLGM9dGhpcy5pbml0aWFsQW5nbGU7dGhpcy5zdHJva2VXaWR0aD1pLmNvbmZpZy5zdHJva2Uuc2hvdz9pLmNvbmZpZy5zdHJva2Uud2lkdGg6MDtmb3IodmFyIGQ9MDtkPHQubGVuZ3RoO2QrKyl7dmFyIGc9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXBpZS1zZXJpZXNcIixzZXJpZXNOYW1lOnguZXNjYXBlU3RyaW5nKGkuZ2xvYmFscy5zZXJpZXNOYW1lc1tkXSkscmVsOmQrMSxcImRhdGE6cmVhbEluZGV4XCI6ZH0pO28uYWRkKGcpLGw9YyxoPShuPWgpK3RbZF0sYz1sK3RoaXMucHJldlNlY3RvckFuZ2xlQXJyW2RdO3ZhciB1PWg8bj90aGlzLmZ1bGxBbmdsZStoLW46aC1uLHA9ci5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmQsc2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZF0sdmFsdWU6ZVtkXX0pLGY9dGhpcy5nZXRDaGFuZ2VkUGF0aChsLGMpLGI9cy5kcmF3UGF0aCh7ZDpmLHN0cm9rZTpBcnJheS5pc0FycmF5KHRoaXMubGluZUNvbG9yQXJyKT90aGlzLmxpbmVDb2xvckFycltkXTp0aGlzLmxpbmVDb2xvckFycixzdHJva2VXaWR0aDowLGZpbGw6cCxmaWxsT3BhY2l0eTppLmNvbmZpZy5maWxsLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcGllLWFyZWEgYXBleGNoYXJ0cy1cIi5jb25jYXQodGhpcy5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KGQpfSk7aWYoYi5hdHRyKHtpbmRleDowLGo6ZH0pLGEuc2V0U2VsZWN0aW9uRmlsdGVyKGIsMCxkKSxpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciB5PWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7YS5kcm9wU2hhZG93KGIseSxkKX10aGlzLmFkZExpc3RlbmVycyhiLHRoaXMuZG9udXREYXRhTGFiZWxzKSxtLnNldEF0dHJzKGIubm9kZSx7XCJkYXRhOmFuZ2xlXCI6dSxcImRhdGE6c3RhcnRBbmdsZVwiOm4sXCJkYXRhOnN0cm9rZVdpZHRoXCI6dGhpcy5zdHJva2VXaWR0aCxcImRhdGE6dmFsdWVcIjplW2RdfSk7dmFyIHc9e3g6MCx5OjB9O1wicGllXCI9PT10aGlzLmNoYXJ0VHlwZXx8XCJwb2xhckFyZWFcIj09PXRoaXMuY2hhcnRUeXBlP3c9eC5wb2xhclRvQ2FydGVzaWFuKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclksaS5nbG9iYWxzLnJhZGlhbFNpemUvMS4yNStpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5vZmZzZXQsKG4rdS8yKSV0aGlzLmZ1bGxBbmdsZSk6XCJkb251dFwiPT09dGhpcy5jaGFydFR5cGUmJih3PXgucG9sYXJUb0NhcnRlc2lhbih0aGlzLmNlbnRlclgsdGhpcy5jZW50ZXJZLChpLmdsb2JhbHMucmFkaWFsU2l6ZSt0aGlzLmRvbnV0U2l6ZSkvMitpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZGF0YUxhYmVscy5vZmZzZXQsKG4rdS8yKSV0aGlzLmZ1bGxBbmdsZSkpLGcuYWRkKGIpO3ZhciBrPTA7aWYoIXRoaXMuaW5pdGlhbEFuaW18fGkuZ2xvYmFscy5yZXNpemVkfHxpLmdsb2JhbHMuZGF0YUNoYW5nZWQ/dGhpcy5hbmltQmVnaW5BcnIucHVzaCgwKTooMD09PShrPXUvdGhpcy5mdWxsQW5nbGUqaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCkmJihrPTEpLHRoaXMuYW5pbUR1cj1rK3RoaXMuYW5pbUR1cix0aGlzLmFuaW1CZWdpbkFyci5wdXNoKHRoaXMuYW5pbUR1cikpLHRoaXMuZHluYW1pY0FuaW0mJmkuZ2xvYmFscy5kYXRhQ2hhbmdlZD90aGlzLmFuaW1hdGVQYXRocyhiLHtzaXplOnRoaXMuc2xpY2VTaXplc1tkXSxlbmRBbmdsZTpoLHN0YXJ0QW5nbGU6bixwcmV2U3RhcnRBbmdsZTpsLHByZXZFbmRBbmdsZTpjLGFuaW1hdGVTdGFydGluZ1BvczohMCxpOmQsYW5pbUJlZ2luQXJyOnRoaXMuYW5pbUJlZ2luQXJyLHNob3VsZFNldFByZXZQYXRoczohMCxkdXI6aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5keW5hbWljQW5pbWF0aW9uLnNwZWVkfSk6dGhpcy5hbmltYXRlUGF0aHMoYix7c2l6ZTp0aGlzLnNsaWNlU2l6ZXNbZF0sZW5kQW5nbGU6aCxzdGFydEFuZ2xlOm4saTpkLHRvdGFsSXRlbXM6dC5sZW5ndGgtMSxhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOmt9KSxpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZXhwYW5kT25DbGljayYmXCJwb2xhckFyZWFcIiE9PXRoaXMuY2hhcnRUeXBlJiZiLmNsaWNrKHRoaXMucGllQ2xpY2tlZC5iaW5kKHRoaXMsZCkpLHZvaWQgMCE9PWkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0mJmkuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHNbMF0uaW5kZXhPZihkKT4tMSYmdGhpcy5waWVDbGlja2VkKGQpLGkuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCl7dmFyIEE9dy54LFM9dy55LEM9MTAwKnUvdGhpcy5mdWxsQW5nbGUrXCIlXCI7aWYoMCE9PXUmJmkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5kYXRhTGFiZWxzLm1pbkFuZ2xlVG9TaG93TGFiZWw8dFtkXSl7dmFyIEw9aS5jb25maWcuZGF0YUxhYmVscy5mb3JtYXR0ZXI7dm9pZCAwIT09TCYmKEM9TChpLmdsb2JhbHMuc2VyaWVzUGVyY2VudFtkXVswXSx7c2VyaWVzSW5kZXg6ZCx3Oml9KSk7dmFyIFA9aS5nbG9iYWxzLmRhdGFMYWJlbHMuc3R5bGUuY29sb3JzW2RdLEk9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIn0pLE09cy5kcmF3VGV4dCh7eDpBLHk6Uyx0ZXh0OkMsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvbnRTaXplOmkuY29uZmlnLmRhdGFMYWJlbHMuc3R5bGUuZm9udFNpemUsZm9udEZhbWlseTppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRGYW1pbHksZm9udFdlaWdodDppLmNvbmZpZy5kYXRhTGFiZWxzLnN0eWxlLmZvbnRXZWlnaHQsZm9yZUNvbG9yOlB9KTtpZihJLmFkZChNKSxpLmNvbmZpZy5kYXRhTGFiZWxzLmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIFQ9aS5jb25maWcuZGF0YUxhYmVscy5kcm9wU2hhZG93O2EuZHJvcFNoYWRvdyhNLFQpfU0ubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1waWUtbGFiZWxcIiksaS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5hbmltYXRlJiYhMT09PWkuZ2xvYmFscy5yZXNpemVkJiYoTS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXBpZS1sYWJlbC1kZWxheVwiKSxNLm5vZGUuc3R5bGUuYW5pbWF0aW9uRGVsYXk9aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZC85NDArXCJzXCIpLHRoaXMuc2xpY2VMYWJlbHMucHVzaChJKX19fXJldHVybiBvfX0se2tleTpcImFkZExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bmV3IG0odGhpcy5jdHgpO3Qubm9kZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLGkucGF0aE1vdXNlRW50ZXIuYmluZCh0aGlzLHQpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixpLnBhdGhNb3VzZUxlYXZlLmJpbmQodGhpcyx0KSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdGhpcy5yZXZlcnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSksdC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixpLnBhdGhNb3VzZURvd24uYmluZCh0aGlzLHQpKSx0aGlzLmRvbnV0RGF0YUxhYmVscy50b3RhbC5zaG93QWx3YXlzfHwodC5ub2RlLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsdGhpcy5wcmludERhdGFMYWJlbHNJbm5lci5iaW5kKHRoaXMsdC5ub2RlLGUpKSx0Lm5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLHRoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIuYmluZCh0aGlzLHQubm9kZSxlKSkpfX0se2tleTpcImFuaW1hdGVQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9ZS5lbmRBbmdsZTxlLnN0YXJ0QW5nbGU/dGhpcy5mdWxsQW5nbGUrZS5lbmRBbmdsZS1lLnN0YXJ0QW5nbGU6ZS5lbmRBbmdsZS1lLnN0YXJ0QW5nbGUscz1hLHI9ZS5zdGFydEFuZ2xlLG89ZS5zdGFydEFuZ2xlO3ZvaWQgMCE9PWUucHJldlN0YXJ0QW5nbGUmJnZvaWQgMCE9PWUucHJldkVuZEFuZ2xlJiYocj1lLnByZXZFbmRBbmdsZSxzPWUucHJldkVuZEFuZ2xlPGUucHJldlN0YXJ0QW5nbGU/dGhpcy5mdWxsQW5nbGUrZS5wcmV2RW5kQW5nbGUtZS5wcmV2U3RhcnRBbmdsZTplLnByZXZFbmRBbmdsZS1lLnByZXZTdGFydEFuZ2xlKSxlLmk9PT1pLmNvbmZpZy5zZXJpZXMubGVuZ3RoLTEmJihhK28+dGhpcy5mdWxsQW5nbGU/ZS5lbmRBbmdsZT1lLmVuZEFuZ2xlLShhK28pOmErbzx0aGlzLmZ1bGxBbmdsZSYmKGUuZW5kQW5nbGU9ZS5lbmRBbmdsZSsodGhpcy5mdWxsQW5nbGUtKGErbykpKSksYT09PXRoaXMuZnVsbEFuZ2xlJiYoYT10aGlzLmZ1bGxBbmdsZS0uMDEpLHRoaXMuYW5pbWF0ZUFyYyh0LHIsbyxhLHMsZSl9fSx7a2V5OlwiYW5pbWF0ZUFyY1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEscyxyKXt2YXIgbyxuPXRoaXMsbD10aGlzLncsaD1uZXcgYih0aGlzLmN0eCksYz1yLnNpemU7KGlzTmFOKGUpfHxpc05hTihzKSkmJihlPWkscz1hLHIuZHVyPTApO3ZhciBkPWEsZz1pLHU9ZTxpP3RoaXMuZnVsbEFuZ2xlK2UtaTplLWk7bC5nbG9iYWxzLmRhdGFDaGFuZ2VkJiZyLnNob3VsZFNldFByZXZQYXRocyYmci5wcmV2RW5kQW5nbGUmJihvPW4uZ2V0UGllUGF0aCh7bWU6bixzdGFydEFuZ2xlOnIucHJldlN0YXJ0QW5nbGUsYW5nbGU6ci5wcmV2RW5kQW5nbGU8ci5wcmV2U3RhcnRBbmdsZT90aGlzLmZ1bGxBbmdsZStyLnByZXZFbmRBbmdsZS1yLnByZXZTdGFydEFuZ2xlOnIucHJldkVuZEFuZ2xlLXIucHJldlN0YXJ0QW5nbGUsc2l6ZTpjfSksdC5hdHRyKHtkOm99KSksMCE9PXIuZHVyP3QuYW5pbWF0ZShyLmR1cixsLmdsb2JhbHMuZWFzaW5nLHIuYW5pbUJlZ2luQXJyW3IuaV0pLmFmdGVyQWxsKChmdW5jdGlvbigpe1wicGllXCIhPT1uLmNoYXJ0VHlwZSYmXCJkb251dFwiIT09bi5jaGFydFR5cGUmJlwicG9sYXJBcmVhXCIhPT1uLmNoYXJ0VHlwZXx8dGhpcy5hbmltYXRlKGwuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCkuYXR0cih7XCJzdHJva2Utd2lkdGhcIjpuLnN0cm9rZVdpZHRofSksci5pPT09bC5jb25maWcuc2VyaWVzLmxlbmd0aC0xJiZoLmFuaW1hdGlvbkNvbXBsZXRlZCh0KX0pKS5kdXJpbmcoKGZ1bmN0aW9uKGwpe2Q9dSsoYS11KSpsLHIuYW5pbWF0ZVN0YXJ0aW5nUG9zJiYoZD1zKyhhLXMpKmwsZz1lLXMrKGktKGUtcykpKmwpLG89bi5nZXRQaWVQYXRoKHttZTpuLHN0YXJ0QW5nbGU6ZyxhbmdsZTpkLHNpemU6Y30pLHQubm9kZS5zZXRBdHRyaWJ1dGUoXCJkYXRhOnBhdGhPcmlnXCIsbyksdC5hdHRyKHtkOm99KX0pKToobz1uLmdldFBpZVBhdGgoe21lOm4sc3RhcnRBbmdsZTpnLGFuZ2xlOmEsc2l6ZTpjfSksci5pc1RyYWNrfHwobC5nbG9iYWxzLmFuaW1hdGlvbkVuZGVkPSEwKSx0Lm5vZGUuc2V0QXR0cmlidXRlKFwiZGF0YTpwYXRoT3JpZ1wiLG8pLHQuYXR0cih7ZDpvLFwic3Ryb2tlLXdpZHRoXCI6bi5zdHJva2VXaWR0aH0pKX19LHtrZXk6XCJwaWVDbGlja2VkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLncsYT10aGlzLHM9YS5zbGljZVNpemVzW3RdKyhpLmNvbmZpZy5wbG90T3B0aW9ucy5waWUuZXhwYW5kT25DbGljaz80OjApLHI9aS5nbG9iYWxzLmRvbS5QYXBlci5zZWxlY3QoXCIuYXBleGNoYXJ0cy1cIi5jb25jYXQoYS5jaGFydFR5cGUudG9Mb3dlckNhc2UoKSxcIi1zbGljZS1cIikuY29uY2F0KHQpKS5tZW1iZXJzWzBdO2lmKFwidHJ1ZVwiIT09ci5hdHRyKFwiZGF0YTpwaWVDbGlja2VkXCIpKXt2YXIgbz1pLmdsb2JhbHMuZG9tLmJhc2VFbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYXBleGNoYXJ0cy1waWUtYXJlYVwiKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG8sKGZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKFwiZGF0YTpwaWVDbGlja2VkXCIsXCJmYWxzZVwiKTt2YXIgZT10LmdldEF0dHJpYnV0ZShcImRhdGE6cGF0aE9yaWdcIik7ZSYmdC5zZXRBdHRyaWJ1dGUoXCJkXCIsZSl9KSksci5hdHRyKFwiZGF0YTpwaWVDbGlja2VkXCIsXCJ0cnVlXCIpO3ZhciBuPXBhcnNlSW50KHIuYXR0cihcImRhdGE6c3RhcnRBbmdsZVwiKSwxMCksbD1wYXJzZUludChyLmF0dHIoXCJkYXRhOmFuZ2xlXCIpLDEwKTtlPWEuZ2V0UGllUGF0aCh7bWU6YSxzdGFydEFuZ2xlOm4sYW5nbGU6bCxzaXplOnN9KSwzNjAhPT1sJiZyLnBsb3QoZSl9ZWxzZXtyLmF0dHIoe1wiZGF0YTpwaWVDbGlja2VkXCI6XCJmYWxzZVwifSksdGhpcy5yZXZlcnREYXRhTGFiZWxzSW5uZXIoci5ub2RlLHRoaXMuZG9udXREYXRhTGFiZWxzKTt2YXIgaD1yLmF0dHIoXCJkYXRhOnBhdGhPcmlnXCIpO3IuYXR0cih7ZDpofSl9fX0se2tleTpcImdldENoYW5nZWRQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT1cIlwiO3JldHVybiB0aGlzLmR5bmFtaWNBbmltJiZ0aGlzLncuZ2xvYmFscy5kYXRhQ2hhbmdlZCYmKGk9dGhpcy5nZXRQaWVQYXRoKHttZTp0aGlzLHN0YXJ0QW5nbGU6dCxhbmdsZTplLXQsc2l6ZTp0aGlzLnNpemV9KSksaX19LHtrZXk6XCJnZXRQaWVQYXRoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5tZSxpPXQuc3RhcnRBbmdsZSxhPXQuYW5nbGUscz10LnNpemUscj1pLG89TWF0aC5QSSooci05MCkvMTgwLG49YStpO01hdGguY2VpbChuKT49dGhpcy5mdWxsQW5nbGUrdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSV0aGlzLmZ1bGxBbmdsZSYmKG49dGhpcy5mdWxsQW5nbGUrdGhpcy53LmNvbmZpZy5wbG90T3B0aW9ucy5waWUuc3RhcnRBbmdsZSV0aGlzLmZ1bGxBbmdsZS0uMDEpLE1hdGguY2VpbChuKT50aGlzLmZ1bGxBbmdsZSYmKG4tPXRoaXMuZnVsbEFuZ2xlKTt2YXIgbD1NYXRoLlBJKihuLTkwKS8xODAsaD1lLmNlbnRlclgrcypNYXRoLmNvcyhvKSxjPWUuY2VudGVyWStzKk1hdGguc2luKG8pLGQ9ZS5jZW50ZXJYK3MqTWF0aC5jb3MobCksZz1lLmNlbnRlclkrcypNYXRoLnNpbihsKSx1PXgucG9sYXJUb0NhcnRlc2lhbihlLmNlbnRlclgsZS5jZW50ZXJZLGUuZG9udXRTaXplLG4pLHA9eC5wb2xhclRvQ2FydGVzaWFuKGUuY2VudGVyWCxlLmNlbnRlclksZS5kb251dFNpemUsciksZj1hPjE4MD8xOjAsYj1bXCJNXCIsaCxjLFwiQVwiLHMscywwLGYsMSxkLGddO3JldHVyblwiZG9udXRcIj09PWUuY2hhcnRUeXBlP1tdLmNvbmNhdChiLFtcIkxcIix1LngsdS55LFwiQVwiLGUuZG9udXRTaXplLGUuZG9udXRTaXplLDAsZiwwLHAueCxwLnksXCJMXCIsaCxjLFwielwiXSkuam9pbihcIiBcIik6XCJwaWVcIj09PWUuY2hhcnRUeXBlfHxcInBvbGFyQXJlYVwiPT09ZS5jaGFydFR5cGU/W10uY29uY2F0KGIsW1wiTFwiLGUuY2VudGVyWCxlLmNlbnRlclksXCJMXCIsaCxjXSkuam9pbihcIiBcIik6W10uY29uY2F0KGIpLmpvaW4oXCIgXCIpfX0se2tleTpcImRyYXdQb2xhckVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53LGk9bmV3IF8odGhpcy5jdHgpLGE9bmV3IG0odGhpcy5jdHgpLHM9bmV3IEN0KHRoaXMuY3R4KSxyPWEuZ3JvdXAoKSxvPWEuZ3JvdXAoKSxuPWkubmljZVNjYWxlKDAsTWF0aC5jZWlsKHRoaXMubWF4WSksZS5jb25maWcueWF4aXNbMF0udGlja0Ftb3VudCwwLCEwKSxsPW4ucmVzdWx0LnJldmVyc2UoKSxoPW4ucmVzdWx0Lmxlbmd0aDt0aGlzLm1heFk9bi5uaWNlTWF4O2Zvcih2YXIgYz1lLmdsb2JhbHMucmFkaWFsU2l6ZSxkPWMvKGgtMSksZz0wO2c8aC0xO2crKyl7dmFyIHU9YS5kcmF3Q2lyY2xlKGMpO2lmKHUuYXR0cih7Y3g6dGhpcy5jZW50ZXJYLGN5OnRoaXMuY2VudGVyWSxmaWxsOlwibm9uZVwiLFwic3Ryb2tlLXdpZHRoXCI6ZS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnJpbmdzLnN0cm9rZVdpZHRoLHN0cm9rZTplLmNvbmZpZy5wbG90T3B0aW9ucy5wb2xhckFyZWEucmluZ3Muc3Ryb2tlQ29sb3J9KSxlLmNvbmZpZy55YXhpc1swXS5zaG93KXt2YXIgcD1zLmRyYXdZQXhpc1RleHRzKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclktYytwYXJzZUludChlLmNvbmZpZy55YXhpc1swXS5sYWJlbHMuc3R5bGUuZm9udFNpemUsMTApLzIsZyxsW2ddKTtvLmFkZChwKX1yLmFkZCh1KSxjLT1kfXRoaXMuZHJhd1Nwb2tlcyh0KSx0LmFkZChyKSx0LmFkZChvKX19LHtrZXk6XCJyZW5kZXJJbm5lckRhdGFMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPW5ldyBtKHRoaXMuY3R4KSxzPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChlLnRyYW5zbGF0ZVg/ZS50cmFuc2xhdGVYOjAsXCIsIFwiKS5jb25jYXQoZS50cmFuc2xhdGVZP2UudHJhbnNsYXRlWTowLFwiKSBzY2FsZShcIikuY29uY2F0KGkuY29uZmlnLnBsb3RPcHRpb25zLnBpZS5jdXN0b21TY2FsZSxcIilcIil9KSxyPXQudG90YWwuc2hvdztzLm5vZGUuc3R5bGUub3BhY2l0eT1lLm9wYWNpdHk7dmFyIG8sbixsPWUuY2VudGVyWCxoPWUuY2VudGVyWTtvPXZvaWQgMD09PXQubmFtZS5jb2xvcj9pLmdsb2JhbHMuY29sb3JzWzBdOnQubmFtZS5jb2xvcjt2YXIgYz10Lm5hbWUuZm9udFNpemUsZD10Lm5hbWUuZm9udEZhbWlseSxnPXQubmFtZS5mb250V2VpZ2h0O249dm9pZCAwPT09dC52YWx1ZS5jb2xvcj9pLmNvbmZpZy5jaGFydC5mb3JlQ29sb3I6dC52YWx1ZS5jb2xvcjt2YXIgdT10LnZhbHVlLmZvcm1hdHRlcixwPVwiXCIsZj1cIlwiO2lmKHI/KG89dC50b3RhbC5jb2xvcixjPXQudG90YWwuZm9udFNpemUsZD10LnRvdGFsLmZvbnRGYW1pbHksZz10LnRvdGFsLmZvbnRXZWlnaHQsZj10LnRvdGFsLmxhYmVsLHA9dC50b3RhbC5mb3JtYXR0ZXIoaSkpOjE9PT1pLmdsb2JhbHMuc2VyaWVzLmxlbmd0aCYmKHA9dShpLmdsb2JhbHMuc2VyaWVzWzBdLGkpLGY9aS5nbG9iYWxzLnNlcmllc05hbWVzWzBdKSxmJiYoZj10Lm5hbWUuZm9ybWF0dGVyKGYsdC50b3RhbC5zaG93LGkpKSx0Lm5hbWUuc2hvdyl7dmFyIHg9YS5kcmF3VGV4dCh7eDpsLHk6aCtwYXJzZUZsb2F0KHQubmFtZS5vZmZzZXRZKSx0ZXh0OmYsdGV4dEFuY2hvcjpcIm1pZGRsZVwiLGZvcmVDb2xvcjpvLGZvbnRTaXplOmMsZm9udFdlaWdodDpnLGZvbnRGYW1pbHk6ZH0pO3gubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWxcIikscy5hZGQoeCl9aWYodC52YWx1ZS5zaG93KXt2YXIgYj10Lm5hbWUuc2hvdz9wYXJzZUZsb2F0KHQudmFsdWUub2Zmc2V0WSkrMTY6dC52YWx1ZS5vZmZzZXRZLHY9YS5kcmF3VGV4dCh7eDpsLHk6aCtiLHRleHQ6cCx0ZXh0QW5jaG9yOlwibWlkZGxlXCIsZm9yZUNvbG9yOm4sZm9udFdlaWdodDp0LnZhbHVlLmZvbnRXZWlnaHQsZm9udFNpemU6dC52YWx1ZS5mb250U2l6ZSxmb250RmFtaWx5OnQudmFsdWUuZm9udEZhbWlseX0pO3Yubm9kZS5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1kYXRhbGFiZWwtdmFsdWVcIikscy5hZGQodil9cmV0dXJuIHN9fSx7a2V5OlwicHJpbnRJbm5lckxhYmVsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzLHI9dGhpcy53O2E/cz12b2lkIDA9PT10Lm5hbWUuY29sb3I/ci5nbG9iYWxzLmNvbG9yc1twYXJzZUludChhLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpLDEwKS0xXTp0Lm5hbWUuY29sb3I6ci5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmdC50b3RhbC5zaG93JiYocz10LnRvdGFsLmNvbG9yKTt2YXIgbz1yLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVsLWxhYmVsXCIpLG49ci5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLWRhdGFsYWJlbC12YWx1ZVwiKTtpPSgwLHQudmFsdWUuZm9ybWF0dGVyKShpLHIpLGF8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQudG90YWwuZm9ybWF0dGVyfHwoaT10LnRvdGFsLmZvcm1hdHRlcihyKSk7dmFyIGw9ZT09PXQudG90YWwubGFiZWw7ZT10Lm5hbWUuZm9ybWF0dGVyKGUsbCxyKSxudWxsIT09byYmKG8udGV4dENvbnRlbnQ9ZSksbnVsbCE9PW4mJihuLnRleHRDb250ZW50PWkpLG51bGwhPT1vJiYoby5zdHlsZS5maWxsPXMpfX0se2tleTpcInByaW50RGF0YUxhYmVsc0lubmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10LmdldEF0dHJpYnV0ZShcImRhdGE6dmFsdWVcIikscz1pLmdsb2JhbHMuc2VyaWVzTmFtZXNbcGFyc2VJbnQodC5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZShcInJlbFwiKSwxMCktMV07aS5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSYmdGhpcy5wcmludElubmVyTGFiZWxzKGUscyxhLHQpO3ZhciByPWkuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1kYXRhbGFiZWxzLWdyb3VwXCIpO251bGwhPT1yJiYoci5zdHlsZS5vcGFjaXR5PTEpfX0se2tleTpcImRyYXdTcG9rZXNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy53LGE9bmV3IG0odGhpcy5jdHgpLHM9aS5jb25maWcucGxvdE9wdGlvbnMucG9sYXJBcmVhLnNwb2tlcztpZigwIT09cy5zdHJva2VXaWR0aCl7Zm9yKHZhciByPVtdLG89MzYwL2kuZ2xvYmFscy5zZXJpZXMubGVuZ3RoLG49MDtuPGkuZ2xvYmFscy5zZXJpZXMubGVuZ3RoO24rKylyLnB1c2goeC5wb2xhclRvQ2FydGVzaWFuKHRoaXMuY2VudGVyWCx0aGlzLmNlbnRlclksaS5nbG9iYWxzLnJhZGlhbFNpemUsaS5jb25maWcucGxvdE9wdGlvbnMucGllLnN0YXJ0QW5nbGUrbypuKSk7ci5mb3JFYWNoKChmdW5jdGlvbihpLHIpe3ZhciBvPWEuZHJhd0xpbmUoaS54LGkueSxlLmNlbnRlclgsZS5jZW50ZXJZLEFycmF5LmlzQXJyYXkocy5jb25uZWN0b3JDb2xvcnMpP3MuY29ubmVjdG9yQ29sb3JzW3JdOnMuY29ubmVjdG9yQ29sb3JzKTt0LmFkZChvKX0pKX19fSx7a2V5OlwicmV2ZXJ0RGF0YUxhYmVsc0lubmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBhPXRoaXMscz10aGlzLncscj1zLmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtZGF0YWxhYmVscy1ncm91cFwiKSxvPSExLG49cy5nbG9iYWxzLmRvbS5iYXNlRWwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFwZXhjaGFydHMtcGllLWFyZWFcIiksbD1mdW5jdGlvbih0KXt2YXIgaT10Lm1ha2VTbGljZU91dCxzPXQucHJpbnRMYWJlbDtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKG4sKGZ1bmN0aW9uKHQpe1widHJ1ZVwiPT09dC5nZXRBdHRyaWJ1dGUoXCJkYXRhOnBpZUNsaWNrZWRcIikmJihpJiYobz0hMCkscyYmYS5wcmludERhdGFMYWJlbHNJbm5lcih0LGUpKX0pKX07aWYobCh7bWFrZVNsaWNlT3V0OiEwLHByaW50TGFiZWw6ITF9KSxlLnRvdGFsLnNob3cmJnMuZ2xvYmFscy5zZXJpZXMubGVuZ3RoPjEpbyYmIWUudG90YWwuc2hvd0Fsd2F5cz9sKHttYWtlU2xpY2VPdXQ6ITEscHJpbnRMYWJlbDohMH0pOnRoaXMucHJpbnRJbm5lckxhYmVscyhlLGUudG90YWwubGFiZWwsZS50b3RhbC5mb3JtYXR0ZXIocykpO2Vsc2UgaWYobCh7bWFrZVNsaWNlT3V0OiExLHByaW50TGFiZWw6ITB9KSwhbylpZihzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzLmxlbmd0aCYmcy5nbG9iYWxzLnNlcmllcy5sZW5ndGg+MSlpZihzLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLmxlbmd0aD4wKXt2YXIgaD1zLmdsb2JhbHMuc2VsZWN0ZWREYXRhUG9pbnRzWzBdLGM9cy5nbG9iYWxzLmRvbS5iYXNlRWwucXVlcnlTZWxlY3RvcihcIi5hcGV4Y2hhcnRzLVwiLmNvbmNhdCh0aGlzLmNoYXJ0VHlwZS50b0xvd2VyQ2FzZSgpLFwiLXNsaWNlLVwiKS5jb25jYXQoaCkpO3RoaXMucHJpbnREYXRhTGFiZWxzSW5uZXIoYyxlKX1lbHNlIHImJnMuZ2xvYmFscy5zZWxlY3RlZERhdGFQb2ludHMubGVuZ3RoJiYwPT09cy5nbG9iYWxzLnNlbGVjdGVkRGF0YVBvaW50c1swXS5sZW5ndGgmJihyLnN0eWxlLm9wYWNpdHk9MCk7ZWxzZSByJiZzLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYoci5zdHlsZS5vcGFjaXR5PTApfX1dKSx0fSgpLFB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53LHRoaXMuY2hhcnRUeXBlPXRoaXMudy5jb25maWcuY2hhcnQudHlwZSx0aGlzLmluaXRpYWxBbmltPXRoaXMudy5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5lbmFibGVkLHRoaXMuZHluYW1pY0FuaW09dGhpcy5pbml0aWFsQW5pbSYmdGhpcy53LmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uZW5hYmxlZCx0aGlzLmFuaW1EdXI9MDt2YXIgaT10aGlzLnc7dGhpcy5ncmFwaGljcz1uZXcgbSh0aGlzLmN0eCksdGhpcy5saW5lQ29sb3JBcnI9dm9pZCAwIT09aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM/aS5nbG9iYWxzLnN0cm9rZS5jb2xvcnM6aS5nbG9iYWxzLmNvbG9ycyx0aGlzLmRlZmF1bHRTaXplPWkuZ2xvYmFscy5zdmdIZWlnaHQ8aS5nbG9iYWxzLnN2Z1dpZHRoP2kuZ2xvYmFscy5ncmlkSGVpZ2h0KzEuNSppLmdsb2JhbHMuZ29sZGVuUGFkZGluZzppLmdsb2JhbHMuZ3JpZFdpZHRoLHRoaXMuaXNMb2c9aS5jb25maWcueWF4aXNbMF0ubG9nYXJpdGhtaWMsdGhpcy5jb3JlVXRpbHM9bmV3IHkodGhpcy5jdHgpLHRoaXMubWF4VmFsdWU9dGhpcy5pc0xvZz90aGlzLmNvcmVVdGlscy5nZXRMb2dWYWwoaS5nbG9iYWxzLm1heFksMCk6aS5nbG9iYWxzLm1heFksdGhpcy5taW5WYWx1ZT10aGlzLmlzTG9nP3RoaXMuY29yZVV0aWxzLmdldExvZ1ZhbCh0aGlzLncuZ2xvYmFscy5taW5ZLDApOmkuZ2xvYmFscy5taW5ZLHRoaXMucG9seWdvbnM9aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIucG9seWdvbnMsdGhpcy5zdHJva2VXaWR0aD1pLmNvbmZpZy5zdHJva2Uuc2hvdz9pLmNvbmZpZy5zdHJva2Uud2lkdGg6MCx0aGlzLnNpemU9dGhpcy5kZWZhdWx0U2l6ZS8yLjEtdGhpcy5zdHJva2VXaWR0aC1pLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmJsdXIsaS5jb25maWcueGF4aXMubGFiZWxzLnNob3cmJih0aGlzLnNpemU9dGhpcy5zaXplLWkuZ2xvYmFscy54QXhpc0xhYmVsc1dpZHRoLzEuNzUpLHZvaWQgMCE9PWkuY29uZmlnLnBsb3RPcHRpb25zLnJhZGFyLnNpemUmJih0aGlzLnNpemU9aS5jb25maWcucGxvdE9wdGlvbnMucmFkYXIuc2l6ZSksdGhpcy5kYXRhUmFkaXVzT2ZQZXJjZW50PVtdLHRoaXMuZGF0YVJhZGl1cz1bXSx0aGlzLmFuZ2xlQXJyPVtdLHRoaXMueWF4aXNMYWJlbHNUZXh0c1Bvcz1bXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMsYT10aGlzLncscz1uZXcgUih0aGlzLmN0eCkscj1bXSxvPW5ldyBPKHRoaXMuY3R4KTt0Lmxlbmd0aCYmKHRoaXMuZGF0YVBvaW50c0xlbj10W2EuZ2xvYmFscy5tYXhWYWxzSW5BcnJheUluZGV4XS5sZW5ndGgpLHRoaXMuZGlzQW5nbGU9MipNYXRoLlBJL3RoaXMuZGF0YVBvaW50c0xlbjt2YXIgbj1hLmdsb2JhbHMuZ3JpZFdpZHRoLzIsbD1hLmdsb2JhbHMuZ3JpZEhlaWdodC8yLGg9bithLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5vZmZzZXRYLGM9bCthLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRhci5vZmZzZXRZLGQ9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiLmNvbmNhdChofHwwLFwiLCBcIikuY29uY2F0KGN8fDAsXCIpXCIpfSksZz1bXSx1PW51bGwscD1udWxsO2lmKHRoaXMueWF4aXNMYWJlbHM9dGhpcy5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXlheGlzXCJ9KSx0LmZvckVhY2goKGZ1bmN0aW9uKHQsbil7dmFyIGw9dC5sZW5ndGg9PT1hLmdsb2JhbHMuZGF0YVBvaW50cyxoPWkuZ3JhcGhpY3MuZ3JvdXAoKS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsXCJkYXRhOmxvbmdlc3RTZXJpZXNcIjpsLHNlcmllc05hbWU6eC5lc2NhcGVTdHJpbmcoYS5nbG9iYWxzLnNlcmllc05hbWVzW25dKSxyZWw6bisxLFwiZGF0YTpyZWFsSW5kZXhcIjpufSk7aS5kYXRhUmFkaXVzT2ZQZXJjZW50W25dPVtdLGkuZGF0YVJhZGl1c1tuXT1bXSxpLmFuZ2xlQXJyW25dPVtdLHQuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgYT1NYXRoLmFicyhpLm1heFZhbHVlLWkubWluVmFsdWUpO3QrPU1hdGguYWJzKGkubWluVmFsdWUpLGkuaXNMb2cmJih0PWkuY29yZVV0aWxzLmdldExvZ1ZhbCh0LDApKSxpLmRhdGFSYWRpdXNPZlBlcmNlbnRbbl1bZV09dC9hLGkuZGF0YVJhZGl1c1tuXVtlXT1pLmRhdGFSYWRpdXNPZlBlcmNlbnRbbl1bZV0qaS5zaXplLGkuYW5nbGVBcnJbbl1bZV09ZSppLmRpc0FuZ2xlfSkpLGc9aS5nZXREYXRhUG9pbnRzUG9zKGkuZGF0YVJhZGl1c1tuXSxpLmFuZ2xlQXJyW25dKTt2YXIgYz1pLmNyZWF0ZVBhdGhzKGcse3g6MCx5OjB9KTt1PWkuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMtbWFya2Vycy13cmFwIGFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIn0pLHA9aS5ncmFwaGljcy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6bn0pLGEuZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6dS5ub2RlLGluZGV4Om59KTt2YXIgZD17aTpuLHJlYWxJbmRleDpuLGFuaW1hdGlvbkRlbGF5Om4saW5pdGlhbFNwZWVkOmEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuc3BlZWQsZGF0YUNoYW5nZVNwZWVkOmEuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbi5zcGVlZCxjbGFzc05hbWU6XCJhcGV4Y2hhcnRzLXJhZGFyXCIsc2hvdWxkQ2xpcFRvR3JpZDohMSxiaW5kRXZlbnRzT25QYXRoczohMSxzdHJva2U6YS5nbG9iYWxzLnN0cm9rZS5jb2xvcnNbbl0sc3Ryb2tlTGluZUNhcDphLmNvbmZpZy5zdHJva2UubGluZUNhcH0sZj1udWxsO2EuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wJiYoZj1pLmdldFByZXZpb3VzUGF0aChuKSk7Zm9yKHZhciBiPTA7YjxjLmxpbmVQYXRoc1RvLmxlbmd0aDtiKyspe3ZhciBtPWkuZ3JhcGhpY3MucmVuZGVyUGF0aHMoZShlKHt9LGQpLHt9LHtwYXRoRnJvbTpudWxsPT09Zj9jLmxpbmVQYXRoc0Zyb21bYl06ZixwYXRoVG86Yy5saW5lUGF0aHNUb1tiXSxzdHJva2VXaWR0aDpBcnJheS5pc0FycmF5KGkuc3Ryb2tlV2lkdGgpP2kuc3Ryb2tlV2lkdGhbbl06aS5zdHJva2VXaWR0aCxmaWxsOlwibm9uZVwiLGRyYXdTaGFkb3c6ITF9KSk7aC5hZGQobSk7dmFyIHk9cy5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOm59KSx3PWkuZ3JhcGhpY3MucmVuZGVyUGF0aHMoZShlKHt9LGQpLHt9LHtwYXRoRnJvbTpudWxsPT09Zj9jLmFyZWFQYXRoc0Zyb21bYl06ZixwYXRoVG86Yy5hcmVhUGF0aHNUb1tiXSxzdHJva2VXaWR0aDowLGZpbGw6eSxkcmF3U2hhZG93OiExfSkpO2lmKGEuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGs9bmV3IHYoaS5jdHgpLEE9YS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdztrLmRyb3BTaGFkb3codyxPYmplY3QuYXNzaWduKHt9LEEse25vVXNlclNwYWNlT25Vc2U6ITB9KSxuKX1oLmFkZCh3KX10LmZvckVhY2goKGZ1bmN0aW9uKHQscyl7dmFyIHI9bmV3IEgoaS5jdHgpLmdldE1hcmtlckNvbmZpZyh7Y3NzQ2xhc3M6XCJhcGV4Y2hhcnRzLW1hcmtlclwiLHNlcmllc0luZGV4Om4sZGF0YVBvaW50SW5kZXg6c30pLGw9aS5ncmFwaGljcy5kcmF3TWFya2VyKGdbc10ueCxnW3NdLnkscik7bC5hdHRyKFwicmVsXCIscyksbC5hdHRyKFwialwiLHMpLGwuYXR0cihcImluZGV4XCIsbiksbC5ub2RlLnNldEF0dHJpYnV0ZShcImRlZmF1bHQtbWFya2VyLXNpemVcIixyLnBTaXplKTt2YXIgYz1pLmdyYXBoaWNzLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzLW1hcmtlcnNcIn0pO2MmJmMuYWRkKGwpLHUuYWRkKGMpLGguYWRkKHUpO3ZhciBkPWEuY29uZmlnLmRhdGFMYWJlbHM7aWYoZC5lbmFibGVkKXt2YXIgZj1kLmZvcm1hdHRlcihhLmdsb2JhbHMuc2VyaWVzW25dW3NdLHtzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4OnMsdzphfSk7by5wbG90RGF0YUxhYmVsc1RleHQoe3g6Z1tzXS54LHk6Z1tzXS55LHRleHQ6Zix0ZXh0QW5jaG9yOlwibWlkZGxlXCIsaTpuLGo6bixwYXJlbnQ6cCxvZmZzZXRDb3JyZWN0aW9uOiExLGRhdGFMYWJlbHNDb25maWc6ZSh7fSxkKX0pfWguYWRkKHApfSkpLHIucHVzaChoKX0pKSx0aGlzLmRyYXdQb2x5Z29ucyh7cGFyZW50OmR9KSxhLmNvbmZpZy54YXhpcy5sYWJlbHMuc2hvdyl7dmFyIGY9dGhpcy5kcmF3WEF4aXNUZXh0cygpO2QuYWRkKGYpfXJldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKHQpe2QuYWRkKHQpfSkpLGQuYWRkKHRoaXMueWF4aXNMYWJlbHMpLGR9fSx7a2V5OlwiZHJhd1BvbHlnb25zXCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMsaT10aGlzLncsYT10LnBhcmVudCxzPW5ldyBDdCh0aGlzLmN0eCkscj1pLmdsb2JhbHMueUF4aXNTY2FsZVswXS5yZXN1bHQucmV2ZXJzZSgpLG89ci5sZW5ndGgsbj1bXSxsPXRoaXMuc2l6ZS8oby0xKSxoPTA7aDxvO2grKyluW2hdPWwqaDtuLnJldmVyc2UoKTt2YXIgYz1bXSxkPVtdO24uZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgYT14LmdldFBvbHlnb25Qb3ModCxlLmRhdGFQb2ludHNMZW4pLHM9XCJcIjthLmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7aWYoMD09PWkpe3ZhciByPWUuZ3JhcGhpY3MuZHJhd0xpbmUodC54LHQueSwwLDAsQXJyYXkuaXNBcnJheShlLnBvbHlnb25zLmNvbm5lY3RvckNvbG9ycyk/ZS5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnNbYV06ZS5wb2x5Z29ucy5jb25uZWN0b3JDb2xvcnMpO2QucHVzaChyKX0wPT09YSYmZS55YXhpc0xhYmVsc1RleHRzUG9zLnB1c2goe3g6dC54LHk6dC55fSkscys9dC54K1wiLFwiK3QueStcIiBcIn0pKSxjLnB1c2gocyl9KSksYy5mb3JFYWNoKChmdW5jdGlvbih0LHMpe3ZhciByPWUucG9seWdvbnMuc3Ryb2tlQ29sb3JzLG89ZS5wb2x5Z29ucy5zdHJva2VXaWR0aCxuPWUuZ3JhcGhpY3MuZHJhd1BvbHlnb24odCxBcnJheS5pc0FycmF5KHIpP3Jbc106cixBcnJheS5pc0FycmF5KG8pP29bc106byxpLmdsb2JhbHMucmFkYXJQb2x5Z29ucy5maWxsLmNvbG9yc1tzXSk7YS5hZGQobil9KSksZC5mb3JFYWNoKChmdW5jdGlvbih0KXthLmFkZCh0KX0pKSxpLmNvbmZpZy55YXhpc1swXS5zaG93JiZ0aGlzLnlheGlzTGFiZWxzVGV4dHNQb3MuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt2YXIgYT1zLmRyYXdZQXhpc1RleHRzKHQueCx0LnksaSxyW2ldKTtlLnlheGlzTGFiZWxzLmFkZChhKX0pKX19LHtrZXk6XCJkcmF3WEF4aXNUZXh0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxpPXRoaXMudyxhPWkuY29uZmlnLnhheGlzLmxhYmVscyxzPXRoaXMuZ3JhcGhpY3MuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy14YXhpc1wifSkscj14LmdldFBvbHlnb25Qb3ModGhpcy5zaXplLHRoaXMuZGF0YVBvaW50c0xlbik7cmV0dXJuIGkuZ2xvYmFscy5sYWJlbHMuZm9yRWFjaCgoZnVuY3Rpb24obyxuKXt2YXIgbD1pLmNvbmZpZy54YXhpcy5sYWJlbHMuZm9ybWF0dGVyLGg9bmV3IE8odC5jdHgpO2lmKHJbbl0pe3ZhciBjPXQuZ2V0VGV4dFBvcyhyW25dLHQuc2l6ZSksZD1sKG8se3Nlcmllc0luZGV4Oi0xLGRhdGFQb2ludEluZGV4Om4sdzppfSk7aC5wbG90RGF0YUxhYmVsc1RleHQoe3g6Yy5uZXdYLHk6Yy5uZXdZLHRleHQ6ZCx0ZXh0QW5jaG9yOmMudGV4dEFuY2hvcixpOm4sajpuLHBhcmVudDpzLGNvbG9yOkFycmF5LmlzQXJyYXkoYS5zdHlsZS5jb2xvcnMpJiZhLnN0eWxlLmNvbG9yc1tuXT9hLnN0eWxlLmNvbG9yc1tuXTpcIiNhOGE4YThcIixkYXRhTGFiZWxzQ29uZmlnOmUoe3RleHRBbmNob3I6Yy50ZXh0QW5jaG9yLGRyb3BTaGFkb3c6e2VuYWJsZWQ6ITF9fSxhKSxvZmZzZXRDb3JyZWN0aW9uOiExfSl9fSkpLHN9fSx7a2V5OlwiY3JlYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT1bXSxzPVtdLHI9W10sbz1bXTtpZih0Lmxlbmd0aCl7cz1bdGhpcy5ncmFwaGljcy5tb3ZlKGUueCxlLnkpXSxvPVt0aGlzLmdyYXBoaWNzLm1vdmUoZS54LGUueSldO3ZhciBuPXRoaXMuZ3JhcGhpY3MubW92ZSh0WzBdLngsdFswXS55KSxsPXRoaXMuZ3JhcGhpY3MubW92ZSh0WzBdLngsdFswXS55KTt0LmZvckVhY2goKGZ1bmN0aW9uKGUsYSl7bis9aS5ncmFwaGljcy5saW5lKGUueCxlLnkpLGwrPWkuZ3JhcGhpY3MubGluZShlLngsZS55KSxhPT09dC5sZW5ndGgtMSYmKG4rPVwiWlwiLGwrPVwiWlwiKX0pKSxhLnB1c2gobiksci5wdXNoKGwpfXJldHVybntsaW5lUGF0aHNGcm9tOnMsbGluZVBhdGhzVG86YSxhcmVhUGF0aHNGcm9tOm8sYXJlYVBhdGhzVG86cn19fSx7a2V5OlwiZ2V0VGV4dFBvc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9XCJtaWRkbGVcIixhPXQueCxzPXQueTtyZXR1cm4gTWF0aC5hYnModC54KT49MTA/dC54PjA/KGk9XCJzdGFydFwiLGErPTEwKTp0Lng8MCYmKGk9XCJlbmRcIixhLT0xMCk6aT1cIm1pZGRsZVwiLE1hdGguYWJzKHQueSk+PWUtMTAmJih0Lnk8MD9zLT0xMDp0Lnk+MCYmKHMrPTEwKSkse3RleHRBbmNob3I6aSxuZXdYOmEsbmV3WTpzfX19LHtrZXk6XCJnZXRQcmV2aW91c1BhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy53LGk9bnVsbCxhPTA7YTxlLmdsb2JhbHMucHJldmlvdXNQYXRocy5sZW5ndGg7YSsrKXt2YXIgcz1lLmdsb2JhbHMucHJldmlvdXNQYXRoc1thXTtzLnBhdGhzLmxlbmd0aD4wJiZwYXJzZUludChzLnJlYWxJbmRleCwxMCk9PT1wYXJzZUludCh0LDEwKSYmdm9pZCAwIT09ZS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbYV0ucGF0aHNbMF0mJihpPWUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2FdLnBhdGhzWzBdLmQpfXJldHVybiBpfX0se2tleTpcImdldERhdGFQb2ludHNQb3NcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp0aGlzLmRhdGFQb2ludHNMZW47dD10fHxbXSxlPWV8fFtdO2Zvcih2YXIgYT1bXSxzPTA7czxpO3MrKyl7dmFyIHI9e307ci54PXRbc10qTWF0aC5zaW4oZVtzXSksci55PS10W3NdKk1hdGguY29zKGVbc10pLGEucHVzaChyKX1yZXR1cm4gYX19XSksdH0oKSxJdD1mdW5jdGlvbih0KXtuKGksTHQpO3ZhciBlPWQoaSk7ZnVuY3Rpb24gaSh0KXt2YXIgczthKHRoaXMsaSksKHM9ZS5jYWxsKHRoaXMsdCkpLmN0eD10LHMudz10Lncscy5hbmltQmVnaW5BcnI9WzBdLHMuYW5pbUR1cj0wO3ZhciByPXMudztyZXR1cm4gcy5zdGFydEFuZ2xlPXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlLHMuZW5kQW5nbGU9ci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmVuZEFuZ2xlLHMudG90YWxBbmdsZT1NYXRoLmFicyhyLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZW5kQW5nbGUtci5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnN0YXJ0QW5nbGUpLHMudHJhY2tTdGFydEFuZ2xlPXIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5zdGFydEFuZ2xlLHMudHJhY2tFbmRBbmdsZT1yLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suZW5kQW5nbGUscy5kb251dERhdGFMYWJlbHM9cy53LmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuZGF0YUxhYmVscyxzLnJhZGlhbERhdGFMYWJlbHM9cy5kb251dERhdGFMYWJlbHMscy50cmFja1N0YXJ0QW5nbGV8fChzLnRyYWNrU3RhcnRBbmdsZT1zLnN0YXJ0QW5nbGUpLHMudHJhY2tFbmRBbmdsZXx8KHMudHJhY2tFbmRBbmdsZT1zLmVuZEFuZ2xlKSwzNjA9PT1zLmVuZEFuZ2xlJiYocy5lbmRBbmdsZT0zNTkuOTkpLHMubWFyZ2luPXBhcnNlSW50KHIuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci50cmFjay5tYXJnaW4sMTApLHN9cmV0dXJuIHIoaSxbe2tleTpcImRyYXdcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyXCJ9KTtpZihlLmdsb2JhbHMubm9EYXRhKXJldHVybiBhO3ZhciBzPWkuZ3JvdXAoKSxyPXRoaXMuZGVmYXVsdFNpemUvMixvPWUuZ2xvYmFscy5ncmlkV2lkdGgvMixuPXRoaXMuZGVmYXVsdFNpemUvMi4wNTtlLmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZHx8KG49bi1lLmNvbmZpZy5zdHJva2Uud2lkdGgtZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5ibHVyKTt2YXIgbD1lLmdsb2JhbHMuZmlsbC5jb2xvcnM7aWYoZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLnRyYWNrLnNob3cpe3ZhciBoPXRoaXMuZHJhd1RyYWNrcyh7c2l6ZTpuLGNlbnRlclg6byxjZW50ZXJZOnIsY29sb3JBcnI6bCxzZXJpZXM6dH0pO3MuYWRkKGgpfXZhciBjPXRoaXMuZHJhd0FyY3Moe3NpemU6bixjZW50ZXJYOm8sY2VudGVyWTpyLGNvbG9yQXJyOmwsc2VyaWVzOnR9KSxkPTM2MDtlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuc3RhcnRBbmdsZTwwJiYoZD10aGlzLnRvdGFsQW5nbGUpO3ZhciBnPSgzNjAtZCkvMzYwO2lmKGUuZ2xvYmFscy5yYWRpYWxTaXplPW4tbipnLHRoaXMucmFkaWFsRGF0YUxhYmVscy52YWx1ZS5zaG93KXt2YXIgdT1NYXRoLm1heCh0aGlzLnJhZGlhbERhdGFMYWJlbHMudmFsdWUub2Zmc2V0WSx0aGlzLnJhZGlhbERhdGFMYWJlbHMubmFtZS5vZmZzZXRZKTtlLmdsb2JhbHMucmFkaWFsU2l6ZSs9dSpnfXJldHVybiBzLmFkZChjLmcpLFwiZnJvbnRcIj09PWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cucG9zaXRpb24mJihjLmcuYWRkKGMuZWxIb2xsb3cpLGMuZGF0YUxhYmVscyYmYy5nLmFkZChjLmRhdGFMYWJlbHMpKSxhLmFkZChzKSxhfX0se2tleTpcImRyYXdUcmFja3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtdHJhY2tzXCJ9KSxzPW5ldyB2KHRoaXMuY3R4KSxyPW5ldyBSKHRoaXMuY3R4KSxvPXRoaXMuZ2V0U3Ryb2tlV2lkdGgodCk7dC5zaXplPXQuc2l6ZS1vLzI7Zm9yKHZhciBuPTA7bjx0LnNlcmllcy5sZW5ndGg7bisrKXt2YXIgbD1pLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLXRyYWNrIGFwZXhjaGFydHMtdHJhY2tcIn0pO2EuYWRkKGwpLGwuYXR0cih7cmVsOm4rMX0pLHQuc2l6ZT10LnNpemUtby10aGlzLm1hcmdpbjt2YXIgaD1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2ssYz1yLmZpbGxQYXRoKHtzZXJpZXNOdW1iZXI6MCxzaXplOnQuc2l6ZSxmaWxsQ29sb3JzOkFycmF5LmlzQXJyYXkoaC5iYWNrZ3JvdW5kKT9oLmJhY2tncm91bmRbbl06aC5iYWNrZ3JvdW5kLHNvbGlkOiEwfSksZD10aGlzLnRyYWNrU3RhcnRBbmdsZSxnPXRoaXMudHJhY2tFbmRBbmdsZTtNYXRoLmFicyhnKStNYXRoLmFicyhkKT49MzYwJiYoZz0zNjAtTWF0aC5hYnModGhpcy5zdGFydEFuZ2xlKS0uMSk7dmFyIHU9aS5kcmF3UGF0aCh7ZDpcIlwiLHN0cm9rZTpjLHN0cm9rZVdpZHRoOm8qcGFyc2VJbnQoaC5zdHJva2VXaWR0aCwxMCkvMTAwLGZpbGw6XCJub25lXCIsc3Ryb2tlT3BhY2l0eTpoLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWFyZWFcIn0pO2lmKGguZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgcD1oLmRyb3BTaGFkb3c7cy5kcm9wU2hhZG93KHUscCl9bC5hZGQodSksdS5hdHRyKFwiaWRcIixcImFwZXhjaGFydHMtcmFkaWFsYmFyVHJhY2stXCIrbiksdGhpcy5hbmltYXRlUGF0aHModSx7Y2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksZW5kQW5nbGU6ZyxzdGFydEFuZ2xlOmQsc2l6ZTp0LnNpemUsaTpuLHRvdGFsSXRlbXM6MixhbmltQmVnaW5BcnI6MCxkdXI6MCxpc1RyYWNrOiEwLGVhc2luZzplLmdsb2JhbHMuZWFzaW5nfSl9cmV0dXJuIGF9fSx7a2V5OlwiZHJhd0FyY3NcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLncsaT1uZXcgbSh0aGlzLmN0eCksYT1uZXcgUih0aGlzLmN0eCkscz1uZXcgdih0aGlzLmN0eCkscj1pLmdyb3VwKCksbz10aGlzLmdldFN0cm9rZVdpZHRoKHQpO3Quc2l6ZT10LnNpemUtby8yO3ZhciBuPWUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuYmFja2dyb3VuZCxsPXQuc2l6ZS1vKnQuc2VyaWVzLmxlbmd0aC10aGlzLm1hcmdpbip0LnNlcmllcy5sZW5ndGgtbypwYXJzZUludChlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIudHJhY2suc3Ryb2tlV2lkdGgsMTApLzEwMC8yLGg9bC1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93Lm1hcmdpbjt2b2lkIDAhPT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlJiYobj10aGlzLmRyYXdIb2xsb3dJbWFnZSh0LHIsbCxuKSk7dmFyIGM9dGhpcy5kcmF3SG9sbG93KHtzaXplOmgsY2VudGVyWDp0LmNlbnRlclgsY2VudGVyWTp0LmNlbnRlclksZmlsbDpufHxcInRyYW5zcGFyZW50XCJ9KTtpZihlLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmRyb3BTaGFkb3cuZW5hYmxlZCl7dmFyIGQ9ZS5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5kcm9wU2hhZG93O3MuZHJvcFNoYWRvdyhjLGQpfXZhciBnPTE7IXRoaXMucmFkaWFsRGF0YUxhYmVscy50b3RhbC5zaG93JiZlLmdsb2JhbHMuc2VyaWVzLmxlbmd0aD4xJiYoZz0wKTt2YXIgdT1udWxsO3RoaXMucmFkaWFsRGF0YUxhYmVscy5zaG93JiYodT10aGlzLnJlbmRlcklubmVyRGF0YUxhYmVscyh0aGlzLnJhZGlhbERhdGFMYWJlbHMse2hvbGxvd1NpemU6bCxjZW50ZXJYOnQuY2VudGVyWCxjZW50ZXJZOnQuY2VudGVyWSxvcGFjaXR5Omd9KSksXCJiYWNrXCI9PT1lLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LnBvc2l0aW9uJiYoci5hZGQoYyksdSYmci5hZGQodSkpO3ZhciBwPSExO2UuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5pbnZlcnNlT3JkZXImJihwPSEwKTtmb3IodmFyIGY9cD90LnNlcmllcy5sZW5ndGgtMTowO3A/Zj49MDpmPHQuc2VyaWVzLmxlbmd0aDtwP2YtLTpmKyspe3ZhciBiPWkuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXMgYXBleGNoYXJ0cy1yYWRpYWwtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhlLmdsb2JhbHMuc2VyaWVzTmFtZXNbZl0pfSk7ci5hZGQoYiksYi5hdHRyKHtyZWw6ZisxLFwiZGF0YTpyZWFsSW5kZXhcIjpmfSksdGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXMoYixmKSx0LnNpemU9dC5zaXplLW8tdGhpcy5tYXJnaW47dmFyIHk9YS5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmYsc2l6ZTp0LnNpemUsdmFsdWU6dC5zZXJpZXNbZl19KSx3PXRoaXMuc3RhcnRBbmdsZSxrPXZvaWQgMCxBPXgubmVnVG9aZXJvKHQuc2VyaWVzW2ZdPjEwMD8xMDA6dC5zZXJpZXNbZl0pLzEwMCxTPU1hdGgucm91bmQodGhpcy50b3RhbEFuZ2xlKkEpK3RoaXMuc3RhcnRBbmdsZSxDPXZvaWQgMDtlLmdsb2JhbHMuZGF0YUNoYW5nZWQmJihrPXRoaXMuc3RhcnRBbmdsZSxDPU1hdGgucm91bmQodGhpcy50b3RhbEFuZ2xlKngubmVnVG9aZXJvKGUuZ2xvYmFscy5wcmV2aW91c1BhdGhzW2ZdKS8xMDApK2spLE1hdGguYWJzKFMpK01hdGguYWJzKHcpPj0zNjAmJihTLT0uMDEpLE1hdGguYWJzKEMpK01hdGguYWJzKGspPj0zNjAmJihDLT0uMDEpO3ZhciBMPVMtdyxQPUFycmF5LmlzQXJyYXkoZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheSk/ZS5jb25maWcuc3Ryb2tlLmRhc2hBcnJheVtmXTplLmNvbmZpZy5zdHJva2UuZGFzaEFycmF5LEk9aS5kcmF3UGF0aCh7ZDpcIlwiLHN0cm9rZTp5LHN0cm9rZVdpZHRoOm8sZmlsbDpcIm5vbmVcIixmaWxsT3BhY2l0eTplLmNvbmZpZy5maWxsLm9wYWNpdHksY2xhc3NlczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWFyZWEgYXBleGNoYXJ0cy1yYWRpYWxiYXItc2xpY2UtXCIrZixzdHJva2VEYXNoQXJyYXk6UH0pO2lmKG0uc2V0QXR0cnMoSS5ub2RlLHtcImRhdGE6YW5nbGVcIjpMLFwiZGF0YTp2YWx1ZVwiOnQuc2VyaWVzW2ZdfSksZS5jb25maWcuY2hhcnQuZHJvcFNoYWRvdy5lbmFibGVkKXt2YXIgTT1lLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93O3MuZHJvcFNoYWRvdyhJLE0sZil9cy5zZXRTZWxlY3Rpb25GaWx0ZXIoSSwwLGYpLHRoaXMuYWRkTGlzdGVuZXJzKEksdGhpcy5yYWRpYWxEYXRhTGFiZWxzKSxiLmFkZChJKSxJLmF0dHIoe2luZGV4OjAsajpmfSk7dmFyIFQ9MDshdGhpcy5pbml0aWFsQW5pbXx8ZS5nbG9iYWxzLnJlc2l6ZWR8fGUuZ2xvYmFscy5kYXRhQ2hhbmdlZHx8KFQ9ZS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksZS5nbG9iYWxzLmRhdGFDaGFuZ2VkJiYoVD1lLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQpLHRoaXMuYW5pbUR1cj1ULygxLjIqdC5zZXJpZXMubGVuZ3RoKSt0aGlzLmFuaW1EdXIsdGhpcy5hbmltQmVnaW5BcnIucHVzaCh0aGlzLmFuaW1EdXIpLHRoaXMuYW5pbWF0ZVBhdGhzKEkse2NlbnRlclg6dC5jZW50ZXJYLGNlbnRlclk6dC5jZW50ZXJZLGVuZEFuZ2xlOlMsc3RhcnRBbmdsZTp3LHByZXZFbmRBbmdsZTpDLHByZXZTdGFydEFuZ2xlOmssc2l6ZTp0LnNpemUsaTpmLHRvdGFsSXRlbXM6MixhbmltQmVnaW5BcnI6dGhpcy5hbmltQmVnaW5BcnIsZHVyOlQsc2hvdWxkU2V0UHJldlBhdGhzOiEwLGVhc2luZzplLmdsb2JhbHMuZWFzaW5nfSl9cmV0dXJue2c6cixlbEhvbGxvdzpjLGRhdGFMYWJlbHM6dX19fSx7a2V5OlwiZHJhd0hvbGxvd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBtKHRoaXMuY3R4KS5kcmF3Q2lyY2xlKDIqdC5zaXplKTtyZXR1cm4gZS5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtcmFkaWFsYmFyLWhvbGxvd1wiLGN4OnQuY2VudGVyWCxjeTp0LmNlbnRlclkscjp0LnNpemUsZmlsbDp0LmZpbGx9KSxlfX0se2tleTpcImRyYXdIb2xsb3dJbWFnZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPXRoaXMudyxyPW5ldyBSKHRoaXMuY3R4KSxvPXgucmFuZG9tSWQoKSxuPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2U7aWYocy5jb25maWcucGxvdE9wdGlvbnMucmFkaWFsQmFyLmhvbGxvdy5pbWFnZUNsaXBwZWQpci5jbGlwcGVkSW1nQXJlYSh7d2lkdGg6aSxoZWlnaHQ6aSxpbWFnZTpuLHBhdHRlcm5JRDpcInBhdHRlcm5cIi5jb25jYXQocy5nbG9iYWxzLmN1aWQpLmNvbmNhdChvKX0pLGE9XCJ1cmwoI3BhdHRlcm5cIi5jb25jYXQocy5nbG9iYWxzLmN1aWQpLmNvbmNhdChvLFwiKVwiKTtlbHNle3ZhciBsPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VXaWR0aCxoPXMuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VIZWlnaHQ7aWYodm9pZCAwPT09bCYmdm9pZCAwPT09aCl7dmFyIGM9cy5nbG9iYWxzLmRvbS5QYXBlci5pbWFnZShuKS5sb2FkZWQoKGZ1bmN0aW9uKGUpe3RoaXMubW92ZSh0LmNlbnRlclgtZS53aWR0aC8yK3MuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRYLHQuY2VudGVyWS1lLmhlaWdodC8yK3MuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRZKX0pKTtlLmFkZChjKX1lbHNle3ZhciBkPXMuZ2xvYmFscy5kb20uUGFwZXIuaW1hZ2UobikubG9hZGVkKChmdW5jdGlvbihlKXt0aGlzLm1vdmUodC5jZW50ZXJYLWwvMitzLmNvbmZpZy5wbG90T3B0aW9ucy5yYWRpYWxCYXIuaG9sbG93LmltYWdlT2Zmc2V0WCx0LmNlbnRlclktaC8yK3MuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuaW1hZ2VPZmZzZXRZKSx0aGlzLnNpemUobCxoKX0pKTtlLmFkZChkKX19cmV0dXJuIGF9fSx7a2V5OlwiZ2V0U3Ryb2tlV2lkdGhcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnc7cmV0dXJuIHQuc2l6ZSooMTAwLXBhcnNlSW50KGUuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5ob2xsb3cuc2l6ZSwxMCkpLzEwMC8odC5zZXJpZXMubGVuZ3RoKzEpLXRoaXMubWFyZ2lufX1dKSxpfSgpLE10PWZ1bmN0aW9uKHQpe24ocyx5dCk7dmFyIGk9ZChzKTtmdW5jdGlvbiBzKCl7cmV0dXJuIGEodGhpcyxzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gcihzLFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQsaSl7dmFyIGE9dGhpcy53LHM9bmV3IG0odGhpcy5jdHgpO3RoaXMucmFuZ2VCYXJPcHRpb25zPXRoaXMudy5jb25maWcucGxvdE9wdGlvbnMucmFuZ2VCYXIsdGhpcy5zZXJpZXM9dCx0aGlzLnNlcmllc1JhbmdlU3RhcnQ9YS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnQsdGhpcy5zZXJpZXNSYW5nZUVuZD1hLmdsb2JhbHMuc2VyaWVzUmFuZ2VFbmQsdGhpcy5iYXJIZWxwZXJzLmluaXRWYXJpYWJsZXModCk7Zm9yKHZhciByPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1yYW5nZWJhci1zZXJpZXMgYXBleGNoYXJ0cy1wbG90LXNlcmllc1wifSksbj0wO248dC5sZW5ndGg7bisrKXt2YXIgbCxoLGMsZCxnPXZvaWQgMCx1PXZvaWQgMCxwPWEuZ2xvYmFscy5jb21ib0NoYXJ0cz9pW25dOm4sZj1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbcF0pLHJlbDpuKzEsXCJkYXRhOnJlYWxJbmRleFwiOnB9KTt0aGlzLmN0eC5zZXJpZXMuYWRkQ29sbGFwc2VkQ2xhc3NUb1NlcmllcyhmLHApLHRbbl0ubGVuZ3RoPjAmJih0aGlzLnZpc2libGVJPXRoaXMudmlzaWJsZUkrMSk7dmFyIGI9MCx2PTA7dGhpcy55UmF0aW8ubGVuZ3RoPjEmJih0aGlzLnlheGlzSW5kZXg9cCk7dmFyIHk9dGhpcy5iYXJIZWxwZXJzLmluaXRpYWxQb3NpdGlvbnMoKTt1PXkueSxkPXkuemVyb1csZz15Lngsdj15LmJhcldpZHRoLGI9eS5iYXJIZWlnaHQsbD15LnhEaXZpc2lvbixoPXkueURpdmlzaW9uLGM9eS56ZXJvSDtmb3IodmFyIHc9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLWRhdGFsYWJlbHNcIixcImRhdGE6cmVhbEluZGV4XCI6cH0pLGs9cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXJhbmdlYmFyLWdvYWxzLW1hcmtlcnNcIn0pLEE9MDtBPGEuZ2xvYmFscy5kYXRhUG9pbnRzO0ErKyl7dmFyIFMsQz10aGlzLmJhckhlbHBlcnMuZ2V0U3Ryb2tlV2lkdGgobixBLHApLEw9dGhpcy5zZXJpZXNSYW5nZVN0YXJ0W25dW0FdLFA9dGhpcy5zZXJpZXNSYW5nZUVuZFtuXVtBXSxJPW51bGwsTT1udWxsLFQ9bnVsbCx6PXt4OmcseTp1LHN0cm9rZVdpZHRoOkMsZWxTZXJpZXM6Zn0sWD10aGlzLnNlcmllc0xlbjtpZihhLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3MmJihYPTEpLHZvaWQgMD09PWEuY29uZmlnLnNlcmllc1tuXS5kYXRhW0FdKWJyZWFrO2lmKHRoaXMuaXNIb3Jpem9udGFsKXtUPXUrYip0aGlzLnZpc2libGVJO3ZhciBFPShoLWIqWCkvMjtpZihhLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtBXS54KXt2YXIgWT10aGlzLmRldGVjdE92ZXJsYXBwaW5nQmFycyh7aTpuLGo6QSxiYXJZUG9zaXRpb246VCxzcnR5OkUsYmFySGVpZ2h0OmIseURpdmlzaW9uOmgsaW5pdFBvc2l0aW9uczp5fSk7Yj1ZLmJhckhlaWdodCxUPVkuYmFyWVBvc2l0aW9ufXY9KEk9dGhpcy5kcmF3UmFuZ2VCYXJQYXRocyhlKHtpbmRleGVzOntpOm4sajpBLHJlYWxJbmRleDpwfSxiYXJIZWlnaHQ6YixiYXJZUG9zaXRpb246VCx6ZXJvVzpkLHlEaXZpc2lvbjpoLHkxOkwseTI6UH0seikpKS5iYXJXaWR0aH1lbHNle2EuZ2xvYmFscy5pc1hOdW1lcmljJiYoZz0oYS5nbG9iYWxzLnNlcmllc1hbbl1bQV0tYS5nbG9iYWxzLm1pblgpL3RoaXMueFJhdGlvLXYvMiksTT1nK3YqdGhpcy52aXNpYmxlSTt2YXIgRj0obC12KlgpLzI7aWYoYS5jb25maWcuc2VyaWVzW25dLmRhdGFbQV0ueCl7dmFyIFI9dGhpcy5kZXRlY3RPdmVybGFwcGluZ0JhcnMoe2k6bixqOkEsYmFyWFBvc2l0aW9uOk0sc3J0eDpGLGJhcldpZHRoOnYseERpdmlzaW9uOmwsaW5pdFBvc2l0aW9uczp5fSk7dj1SLmJhcldpZHRoLE09Ui5iYXJYUG9zaXRpb259Yj0oST10aGlzLmRyYXdSYW5nZUNvbHVtblBhdGhzKGUoe2luZGV4ZXM6e2k6bixqOkEscmVhbEluZGV4OnB9LGJhcldpZHRoOnYsYmFyWFBvc2l0aW9uOk0semVyb0g6Yyx4RGl2aXNpb246bH0seikpKS5iYXJIZWlnaHR9dmFyIEg9dGhpcy5iYXJIZWxwZXJzLmRyYXdHb2FsTGluZSh7YmFyWFBvc2l0aW9uOkkuYmFyWFBvc2l0aW9uLGJhcllQb3NpdGlvbjpULGdvYWxYOkkuZ29hbFgsZ29hbFk6SS5nb2FsWSxiYXJIZWlnaHQ6YixiYXJXaWR0aDp2fSk7SCYmay5hZGQoSCksdT1JLnksZz1JLng7dmFyIEQ9dGhpcy5iYXJIZWxwZXJzLmdldFBhdGhGaWxsQ29sb3IodCxuLEEscCksTz1hLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1twXTt0aGlzLnJlbmRlclNlcmllcygobyhTPXtyZWFsSW5kZXg6cCxwYXRoRmlsbDpELGxpbmVGaWxsOk8sajpBLGk6bix4OmcseTp1LHkxOkwseTI6UCxwYXRoRnJvbTpJLnBhdGhGcm9tLHBhdGhUbzpJLnBhdGhUbyxzdHJva2VXaWR0aDpDLGVsU2VyaWVzOmYsc2VyaWVzOnQsYmFySGVpZ2h0OmIsYmFyV2lkdGg6dixiYXJYUG9zaXRpb246TSxiYXJZUG9zaXRpb246VH0sXCJiYXJXaWR0aFwiLHYpLG8oUyxcImVsRGF0YUxhYmVsc1dyYXBcIix3KSxvKFMsXCJlbEdvYWxzTWFya2Vyc1wiLGspLG8oUyxcInZpc2libGVTZXJpZXNcIix0aGlzLnZpc2libGVJKSxvKFMsXCJ0eXBlXCIsXCJyYW5nZWJhclwiKSxTKSl9ci5hZGQoZil9cmV0dXJuIHJ9fSx7a2V5OlwiZGV0ZWN0T3ZlcmxhcHBpbmdCYXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pLGk9dC5qLGE9dC5iYXJZUG9zaXRpb24scz10LmJhclhQb3NpdGlvbixyPXQuc3J0eSxvPXQuc3J0eCxuPXQuYmFySGVpZ2h0LGw9dC5iYXJXaWR0aCxoPXQueURpdmlzaW9uLGM9dC54RGl2aXNpb24sZD10LmluaXRQb3NpdGlvbnMsZz10aGlzLncsdT1bXSxwPWcuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLnJhbmdlTmFtZSxmPWcuY29uZmlnLnNlcmllc1tlXS5kYXRhW2ldLngseD1BcnJheS5pc0FycmF5KGYpP2Yuam9pbihcIiBcIik6ZixiPWcuZ2xvYmFscy5sYWJlbHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90LmpvaW4oXCIgXCIpOnR9KSkuaW5kZXhPZih4KSx2PWcuZ2xvYmFscy5zZXJpZXNSYW5nZVtlXS5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lng9PT14JiZ0Lm92ZXJsYXBzLmxlbmd0aD4wfSkpO3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbD8oYT1nLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3M/citoKmI6cituKnRoaXMudmlzaWJsZUkraCpiLHY+LTEmJiFnLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJPdmVybGFwJiYodT1nLmdsb2JhbHMuc2VyaWVzUmFuZ2VbZV1bdl0ub3ZlcmxhcHMpLmluZGV4T2YocCk+LTEmJihhPShuPWQuYmFySGVpZ2h0L3UubGVuZ3RoKSp0aGlzLnZpc2libGVJK2gqKDEwMC1wYXJzZUludCh0aGlzLmJhck9wdGlvbnMuYmFySGVpZ2h0LDEwKSkvMTAwLzIrbioodGhpcy52aXNpYmxlSSt1LmluZGV4T2YocCkpK2gqYikpOihiPi0xJiYocz1nLmNvbmZpZy5wbG90T3B0aW9ucy5iYXIucmFuZ2VCYXJHcm91cFJvd3M/bytjKmI6bytsKnRoaXMudmlzaWJsZUkrYypiKSx2Pi0xJiYhZy5jb25maWcucGxvdE9wdGlvbnMuYmFyLnJhbmdlQmFyT3ZlcmxhcCYmKHU9Zy5nbG9iYWxzLnNlcmllc1JhbmdlW2VdW3ZdLm92ZXJsYXBzKS5pbmRleE9mKHApPi0xJiYocz0obD1kLmJhcldpZHRoL3UubGVuZ3RoKSp0aGlzLnZpc2libGVJK2MqKDEwMC1wYXJzZUludCh0aGlzLmJhck9wdGlvbnMuYmFyV2lkdGgsMTApKS8xMDAvMitsKih0aGlzLnZpc2libGVJK3UuaW5kZXhPZihwKSkrYypiKSkse2JhcllQb3NpdGlvbjphLGJhclhQb3NpdGlvbjpzLGJhckhlaWdodDpuLGJhcldpZHRoOmx9fX0se2tleTpcImRyYXdSYW5nZUNvbHVtblBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC54LGE9dC54RGl2aXNpb24scz10LmJhcldpZHRoLHI9dC5iYXJYUG9zaXRpb24sbz10Lnplcm9ILG49dGhpcy53LGw9ZS5pLGg9ZS5qLGM9dGhpcy55UmF0aW9bdGhpcy55YXhpc0luZGV4XSxkPWUucmVhbEluZGV4LGc9dGhpcy5nZXRSYW5nZVZhbHVlKGQsaCksdT1NYXRoLm1pbihnLnN0YXJ0LGcuZW5kKSxwPU1hdGgubWF4KGcuc3RhcnQsZy5lbmQpO3ZvaWQgMD09PXRoaXMuc2VyaWVzW2xdW2hdfHxudWxsPT09dGhpcy5zZXJpZXNbbF1baF0/dT1vOih1PW8tdS9jLHA9by1wL2MpO3ZhciBmPU1hdGguYWJzKHAtdSkseD10aGlzLmJhckhlbHBlcnMuZ2V0Q29sdW1uUGF0aHMoe2JhclhQb3NpdGlvbjpyLGJhcldpZHRoOnMseTE6dSx5MjpwLHN0cm9rZVdpZHRoOnRoaXMuc3Ryb2tlV2lkdGgsc2VyaWVzOnRoaXMuc2VyaWVzUmFuZ2VFbmQscmVhbEluZGV4OmUucmVhbEluZGV4LGk6ZCxqOmgsdzpufSk7aWYobi5nbG9iYWxzLmlzWE51bWVyaWMpe3ZhciBiPXRoaXMuZ2V0QmFyWEZvck51bWVyaWNYQXhpcyh7eDppLGo6aCxyZWFsSW5kZXg6ZCxiYXJXaWR0aDpzfSk7aT1iLngscj1iLmJhclhQb3NpdGlvbn1lbHNlIGkrPWE7cmV0dXJue3BhdGhUbzp4LnBhdGhUbyxwYXRoRnJvbTp4LnBhdGhGcm9tLGJhckhlaWdodDpmLHg6aSx5OnAsZ29hbFk6dGhpcy5iYXJIZWxwZXJzLmdldEdvYWxWYWx1ZXMoXCJ5XCIsbnVsbCxvLGwsaCksYmFyWFBvc2l0aW9uOnJ9fX0se2tleTpcImRyYXdSYW5nZUJhclBhdGhzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleGVzLGk9dC55LGE9dC55MSxzPXQueTIscj10LnlEaXZpc2lvbixvPXQuYmFySGVpZ2h0LG49dC5iYXJZUG9zaXRpb24sbD10Lnplcm9XLGg9dGhpcy53LGM9bCthL3RoaXMuaW52ZXJ0ZWRZUmF0aW8sZD1sK3MvdGhpcy5pbnZlcnRlZFlSYXRpbyxnPU1hdGguYWJzKGQtYyksdT10aGlzLmJhckhlbHBlcnMuZ2V0QmFycGF0aHMoe2JhcllQb3NpdGlvbjpuLGJhckhlaWdodDpvLHgxOmMseDI6ZCxzdHJva2VXaWR0aDp0aGlzLnN0cm9rZVdpZHRoLHNlcmllczp0aGlzLnNlcmllc1JhbmdlRW5kLGk6ZS5yZWFsSW5kZXgscmVhbEluZGV4OmUucmVhbEluZGV4LGo6ZS5qLHc6aH0pO3JldHVybiBoLmdsb2JhbHMuaXNYTnVtZXJpY3x8KGkrPXIpLHtwYXRoVG86dS5wYXRoVG8scGF0aEZyb206dS5wYXRoRnJvbSxiYXJXaWR0aDpnLHg6ZCxnb2FsWDp0aGlzLmJhckhlbHBlcnMuZ2V0R29hbFZhbHVlcyhcInhcIixsLG51bGwsZS5yZWFsSW5kZXgsZS5qKSx5Oml9fX0se2tleTpcImdldFJhbmdlVmFsdWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztyZXR1cm57c3RhcnQ6aS5nbG9iYWxzLnNlcmllc1JhbmdlU3RhcnRbdF1bZV0sZW5kOmkuZ2xvYmFscy5zZXJpZXNSYW5nZUVuZFt0XVtlXX19fV0pLHN9KCksVHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLnc9ZS53LHRoaXMubGluZUN0eD1lfXJldHVybiByKHQsW3trZXk6XCJzYW1lVmFsdWVTZXJpZXNGaXhcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudztpZigoXCJncmFkaWVudFwiPT09aS5jb25maWcuZmlsbC50eXBlfHxcImdyYWRpZW50XCI9PT1pLmNvbmZpZy5maWxsLnR5cGVbdF0pJiZuZXcgeSh0aGlzLmxpbmVDdHguY3R4LGkpLnNlcmllc0hhdmVTYW1lVmFsdWVzKHQpKXt2YXIgYT1lW3RdLnNsaWNlKCk7YVthLmxlbmd0aC0xXT1hW2EubGVuZ3RoLTFdKzFlLTYsZVt0XT1hfXJldHVybiBlfX0se2tleTpcImNhbGN1bGF0ZVBvaW50c1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc2VyaWVzLGk9dC5yZWFsSW5kZXgsYT10Lngscz10Lnkscj10Lmksbz10Lmosbj10LnByZXZZLGw9dGhpcy53LGg9W10sYz1bXTtpZigwPT09byl7dmFyIGQ9dGhpcy5saW5lQ3R4LmNhdGVnb3J5QXhpc0NvcnJlY3Rpb24rbC5jb25maWcubWFya2Vycy5vZmZzZXRYO2wuZ2xvYmFscy5pc1hOdW1lcmljJiYoZD0obC5nbG9iYWxzLnNlcmllc1hbaV1bMF0tbC5nbG9iYWxzLm1pblgpL3RoaXMubGluZUN0eC54UmF0aW8rbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSxoLnB1c2goZCksYy5wdXNoKHguaXNOdW1iZXIoZVtyXVswXSk/bitsLmNvbmZpZy5tYXJrZXJzLm9mZnNldFk6bnVsbCksaC5wdXNoKGErbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSxjLnB1c2goeC5pc051bWJlcihlW3JdW28rMV0pP3MrbC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpfWVsc2UgaC5wdXNoKGErbC5jb25maWcubWFya2Vycy5vZmZzZXRYKSxjLnB1c2goeC5pc051bWJlcihlW3JdW28rMV0pP3MrbC5jb25maWcubWFya2Vycy5vZmZzZXRZOm51bGwpO3JldHVybnt4OmgseTpjfX19LHtrZXk6XCJjaGVja1ByZXZpb3VzUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5wYXRoRnJvbUxpbmUsaT10LnBhdGhGcm9tQXJlYSxhPXQucmVhbEluZGV4LHM9dGhpcy53LHI9MDtyPHMuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aDtyKyspe3ZhciBvPXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdOyhcImxpbmVcIj09PW8udHlwZXx8XCJhcmVhXCI9PT1vLnR5cGUpJiZvLnBhdGhzLmxlbmd0aD4wJiZwYXJzZUludChvLnJlYWxJbmRleCwxMCk9PT1wYXJzZUludChhLDEwKSYmKFwibGluZVwiPT09by50eXBlPyh0aGlzLmxpbmVDdHguYXBwZW5kUGF0aEZyb209ITEsZT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1swXS5kKTpcImFyZWFcIj09PW8udHlwZSYmKHRoaXMubGluZUN0eC5hcHBlbmRQYXRoRnJvbT0hMSxpPXMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzBdLmQscy5jb25maWcuc3Ryb2tlLnNob3cmJnMuZ2xvYmFscy5wcmV2aW91c1BhdGhzW3JdLnBhdGhzWzFdJiYoZT1zLmdsb2JhbHMucHJldmlvdXNQYXRoc1tyXS5wYXRoc1sxXS5kKSkpfXJldHVybntwYXRoRnJvbUxpbmU6ZSxwYXRoRnJvbUFyZWE6aX19fSx7a2V5OlwiZGV0ZXJtaW5lRmlyc3RQcmV2WVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9dC5pLGE9dC5zZXJpZXMscz10LnByZXZZLHI9dC5saW5lWVBvc2l0aW9uLG89dGhpcy53O2lmKHZvaWQgMCE9PShudWxsPT09KGU9YVtpXSl8fHZvaWQgMD09PWU/dm9pZCAwOmVbMF0pKXM9KHI9by5jb25maWcuY2hhcnQuc3RhY2tlZCYmaT4wP3RoaXMubGluZUN0eC5wcmV2U2VyaWVzWVtpLTFdWzBdOnRoaXMubGluZUN0eC56ZXJvWSktYVtpXVswXS90aGlzLmxpbmVDdHgueVJhdGlvW3RoaXMubGluZUN0eC55YXhpc0luZGV4XSsyKih0aGlzLmxpbmVDdHguaXNSZXZlcnNlZD9hW2ldWzBdL3RoaXMubGluZUN0eC55UmF0aW9bdGhpcy5saW5lQ3R4LnlheGlzSW5kZXhdOjApO2Vsc2UgaWYoby5jb25maWcuY2hhcnQuc3RhY2tlZCYmaT4wJiZ2b2lkIDA9PT1hW2ldWzBdKWZvcih2YXIgbj1pLTE7bj49MDtuLS0paWYobnVsbCE9PWFbbl1bMF0mJnZvaWQgMCE9PWFbbl1bMF0pe3M9cj10aGlzLmxpbmVDdHgucHJldlNlcmllc1lbbl1bMF07YnJlYWt9cmV0dXJue3ByZXZZOnMsbGluZVlQb3NpdGlvbjpyfX19XSksdH0oKSx6dD1mdW5jdGlvbih0KXtmb3IodmFyIGUsaSxhLHMscj1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10saT10WzBdLGE9dFsxXSxzPWVbMF09WXQoaSxhKSxyPTEsbz10Lmxlbmd0aC0xO3I8bztyKyspaT1hLGE9dFtyKzFdLGVbcl09LjUqKHMrKHM9WXQoaSxhKSkpO3JldHVybiBlW3JdPXMsZX0odCksbz10Lmxlbmd0aC0xLG49W10sbD0wO2w8bztsKyspYT1ZdCh0W2xdLHRbbCsxXSksTWF0aC5hYnMoYSk8MWUtNj9yW2xdPXJbbCsxXT0wOihzPShlPXJbbF0vYSkqZSsoaT1yW2wrMV0vYSkqaSk+OSYmKHM9MyphL01hdGguc3FydChzKSxyW2xdPXMqZSxyW2wrMV09cyppKTtmb3IodmFyIGg9MDtoPD1vO2grKylzPSh0W01hdGgubWluKG8saCsxKV1bMF0tdFtNYXRoLm1heCgwLGgtMSldWzBdKS8oNiooMStyW2hdKnJbaF0pKSxuLnB1c2goW3N8fDAscltoXSpzfHwwXSk7cmV0dXJuIG59LFh0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1cIlwiLGk9MDtpPHQubGVuZ3RoO2krKyl7dmFyIGE9dFtpXSxzPXRbaS0xXSxyPWEubGVuZ3RoLG89bnVsbD09cz92b2lkIDA6cy5sZW5ndGg7aT4xJiZNYXRoLmFicyhhW3ItMl0tc1tvLTJdKTwzMD8oZSs9XCJRXCIuY29uY2F0KGFbMF0sXCIsIFwiKS5jb25jYXQoYVsxXSksZSs9XCIsIFwiLmNvbmNhdChhWzJdLFwiLCBcIikuY29uY2F0KGFbM10pKTpyPjQ/KGUrPVwiQ1wiLmNvbmNhdChhWzBdLFwiLCBcIikuY29uY2F0KGFbMV0pLGUrPVwiLCBcIi5jb25jYXQoYVsyXSxcIiwgXCIpLmNvbmNhdChhWzNdKSxlKz1cIiwgXCIuY29uY2F0KGFbNF0sXCIsIFwiKS5jb25jYXQoYVs1XSkpOnI+MiYmKGUrPVwiU1wiLmNvbmNhdChhWzBdLFwiLCBcIikuY29uY2F0KGFbMV0pLGUrPVwiLCBcIi5jb25jYXQoYVsyXSxcIiwgXCIpLmNvbmNhdChhWzNdKSl9cmV0dXJuIGV9LEV0PWZ1bmN0aW9uKHQpe3ZhciBlPXp0KHQpLGk9dFsxXSxhPXRbMF0scz1bXSxyPWVbMV0sbz1lWzBdO3MucHVzaChhLFthWzBdK29bMF0sYVsxXStvWzFdLGlbMF0tclswXSxpWzFdLXJbMV0saVswXSxpWzFdXSk7Zm9yKHZhciBuPTIsbD1lLmxlbmd0aDtuPGw7bisrKXt2YXIgaD10W25dLGM9ZVtuXTtzLnB1c2goW2hbMF0tY1swXSxoWzFdLWNbMV0saFswXSxoWzFdXSl9cmV0dXJuIHN9O2Z1bmN0aW9uIFl0KHQsZSl7cmV0dXJuKGVbMV0tdFsxXSkvKGVbMF0tdFswXSl9dmFyIEZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGkscyl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnh5UmF0aW9zPWksdGhpcy5wb2ludHNDaGFydD0hKFwiYnViYmxlXCIhPT10aGlzLncuY29uZmlnLmNoYXJ0LnR5cGUmJlwic2NhdHRlclwiIT09dGhpcy53LmNvbmZpZy5jaGFydC50eXBlKXx8cyx0aGlzLnNjYXR0ZXI9bmV3IEQodGhpcy5jdHgpLHRoaXMubm9OZWdhdGl2ZXM9dGhpcy53Lmdsb2JhbHMubWluWD09PU51bWJlci5NQVhfVkFMVUUsdGhpcy5saW5lSGVscGVycz1uZXcgVHQodGhpcyksdGhpcy5tYXJrZXJzPW5ldyBIKHRoaXMuY3R4KSx0aGlzLnByZXZTZXJpZXNZPVtdLHRoaXMuY2F0ZWdvcnlBeGlzQ29ycmVjdGlvbj0wLHRoaXMueWF4aXNJbmRleD0wfXJldHVybiByKHQsW3trZXk6XCJkcmF3XCIsdmFsdWU6ZnVuY3Rpb24odCxpLGEscyl7dmFyIHIsbz10aGlzLncsbj1uZXcgbSh0aGlzLmN0eCksbD1vLmdsb2JhbHMuY29tYm9DaGFydHM/aTpvLmNvbmZpZy5jaGFydC50eXBlLGg9bi5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLVwiLmNvbmNhdChsLFwiLXNlcmllcyBhcGV4Y2hhcnRzLXBsb3Qtc2VyaWVzXCIpfSksYz1uZXcgeSh0aGlzLmN0eCxvKTt0aGlzLnlSYXRpbz10aGlzLnh5UmF0aW9zLnlSYXRpbyx0aGlzLnpSYXRpbz10aGlzLnh5UmF0aW9zLnpSYXRpbyx0aGlzLnhSYXRpbz10aGlzLnh5UmF0aW9zLnhSYXRpbyx0aGlzLmJhc2VMaW5lWT10aGlzLnh5UmF0aW9zLmJhc2VMaW5lWSx0PWMuZ2V0TG9nU2VyaWVzKHQpLHRoaXMueVJhdGlvPWMuZ2V0TG9nWVJhdGlvcyh0aGlzLnlSYXRpbyk7Zm9yKHZhciBkPVtdLGc9MDtnPHQubGVuZ3RoO2crKyl7dD10aGlzLmxpbmVIZWxwZXJzLnNhbWVWYWx1ZVNlcmllc0ZpeChnLHQpO3ZhciB1PW8uZ2xvYmFscy5jb21ib0NoYXJ0cz9hW2ddOmc7dGhpcy5faW5pdFNlcmllVmFyaWFibGVzKHQsZyx1KTt2YXIgcD1bXSxmPVtdLHg9W10sYj1vLmdsb2JhbHMucGFkSG9yaXpvbnRhbCt0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb247dGhpcy5jdHguc2VyaWVzLmFkZENvbGxhcHNlZENsYXNzVG9TZXJpZXModGhpcy5lbFNlcmllcyx1KSxvLmdsb2JhbHMuaXNYTnVtZXJpYyYmby5nbG9iYWxzLnNlcmllc1gubGVuZ3RoPjAmJihiPShvLmdsb2JhbHMuc2VyaWVzWFt1XVswXS1vLmdsb2JhbHMubWluWCkvdGhpcy54UmF0aW8pLHgucHVzaChiKTt2YXIgdj1iLHc9dGhpcy56ZXJvWSxrPXRoaXMuemVyb1k7dz10aGlzLmxpbmVIZWxwZXJzLmRldGVybWluZUZpcnN0UHJldlkoe2k6ZyxzZXJpZXM6dCxwcmV2WTp3LGxpbmVZUG9zaXRpb246MH0pLnByZXZZLFwic21vb3RoXCI9PT1vLmNvbmZpZy5zdHJva2UuY3VydmUmJm51bGw9PT10W2ddWzBdP3AucHVzaChudWxsKTpwLnB1c2godyk7XCJyYW5nZUFyZWFcIj09PWwmJihrPXRoaXMubGluZUhlbHBlcnMuZGV0ZXJtaW5lRmlyc3RQcmV2WSh7aTpnLHNlcmllczpzLHByZXZZOmssbGluZVlQb3NpdGlvbjowfSkucHJldlksZi5wdXNoKGspKTt2YXIgQT17dHlwZTpsLHNlcmllczp0LHJlYWxJbmRleDp1LGk6Zyx4OmIseToxLHBhdGhzRnJvbTp0aGlzLl9jYWxjdWxhdGVQYXRoc0Zyb20oe3R5cGU6bCxzZXJpZXM6dCxpOmcscmVhbEluZGV4OnUscHJldlg6dixwcmV2WTp3LHByZXZZMjprfSksbGluZVBhdGhzOltdLGFyZWFQYXRoczpbXSxzZXJpZXNJbmRleDphLGxpbmVZUG9zaXRpb246MCx4QXJyajp4LHlBcnJqOnAseTJBcnJqOmYsc2VyaWVzUmFuZ2VFbmQ6c30sUz10aGlzLl9pdGVyYXRlT3ZlckRhdGFQb2ludHMoZShlKHt9LEEpLHt9LHtpdGVyYXRpb25zOlwicmFuZ2VBcmVhXCI9PT1sP3RbZ10ubGVuZ3RoLTE6dm9pZCAwLGlzUmFuZ2VTdGFydDohMH0pKTtpZihcInJhbmdlQXJlYVwiPT09bCl7dmFyIEM9dGhpcy5fY2FsY3VsYXRlUGF0aHNGcm9tKHtzZXJpZXM6cyxpOmcscmVhbEluZGV4OnUscHJldlg6dixwcmV2WTprfSksTD10aGlzLl9pdGVyYXRlT3ZlckRhdGFQb2ludHMoZShlKHt9LEEpLHt9LHtzZXJpZXM6cyxwYXRoc0Zyb206QyxpdGVyYXRpb25zOnNbZ10ubGVuZ3RoLTEsaXNSYW5nZVN0YXJ0OiExfSkpO1MubGluZVBhdGhzWzBdPUwubGluZVBhdGgrUy5saW5lUGF0aCxTLnBhdGhGcm9tTGluZT1MLnBhdGhGcm9tTGluZStTLnBhdGhGcm9tTGluZX10aGlzLl9oYW5kbGVQYXRocyh7dHlwZTpsLHJlYWxJbmRleDp1LGk6ZyxwYXRoczpTfSksdGhpcy5lbFNlcmllcy5hZGQodGhpcy5lbFBvaW50c01haW4pLHRoaXMuZWxTZXJpZXMuYWRkKHRoaXMuZWxEYXRhTGFiZWxzV3JhcCksZC5wdXNoKHRoaXMuZWxTZXJpZXMpfWlmKHZvaWQgMCE9PShudWxsPT09KHI9by5jb25maWcuc2VyaWVzWzBdKXx8dm9pZCAwPT09cj92b2lkIDA6ci56SW5kZXgpJiZkLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE51bWJlcih0Lm5vZGUuZ2V0QXR0cmlidXRlKFwiekluZGV4XCIpKS1OdW1iZXIoZS5ub2RlLmdldEF0dHJpYnV0ZShcInpJbmRleFwiKSl9KSksby5jb25maWcuY2hhcnQuc3RhY2tlZClmb3IodmFyIFA9ZC5sZW5ndGg7UD4wO1AtLSloLmFkZChkW1AtMV0pO2Vsc2UgZm9yKHZhciBJPTA7STxkLmxlbmd0aDtJKyspaC5hZGQoZFtJXSk7cmV0dXJuIGh9fSx7a2V5OlwiX2luaXRTZXJpZVZhcmlhYmxlc1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLncscz1uZXcgbSh0aGlzLmN0eCk7dGhpcy54RGl2aXNpb249YS5nbG9iYWxzLmdyaWRXaWR0aC8oYS5nbG9iYWxzLmRhdGFQb2ludHMtKFwib25cIj09PWEuY29uZmlnLnhheGlzLnRpY2tQbGFjZW1lbnQ/MTowKSksdGhpcy5zdHJva2VXaWR0aD1BcnJheS5pc0FycmF5KGEuY29uZmlnLnN0cm9rZS53aWR0aCk/YS5jb25maWcuc3Ryb2tlLndpZHRoW2ldOmEuY29uZmlnLnN0cm9rZS53aWR0aCx0aGlzLnlSYXRpby5sZW5ndGg+MSYmKHRoaXMueWF4aXNJbmRleD1pKSx0aGlzLmlzUmV2ZXJzZWQ9YS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XSYmYS5jb25maWcueWF4aXNbdGhpcy55YXhpc0luZGV4XS5yZXZlcnNlZCx0aGlzLnplcm9ZPWEuZ2xvYmFscy5ncmlkSGVpZ2h0LXRoaXMuYmFzZUxpbmVZW3RoaXMueWF4aXNJbmRleF0tKHRoaXMuaXNSZXZlcnNlZD9hLmdsb2JhbHMuZ3JpZEhlaWdodDowKSsodGhpcy5pc1JldmVyc2VkPzIqdGhpcy5iYXNlTGluZVlbdGhpcy55YXhpc0luZGV4XTowKSx0aGlzLmFyZWFCb3R0b21ZPXRoaXMuemVyb1ksKHRoaXMuemVyb1k+YS5nbG9iYWxzLmdyaWRIZWlnaHR8fFwiZW5kXCI9PT1hLmNvbmZpZy5wbG90T3B0aW9ucy5hcmVhLmZpbGxUbykmJih0aGlzLmFyZWFCb3R0b21ZPWEuZ2xvYmFscy5ncmlkSGVpZ2h0KSx0aGlzLmNhdGVnb3J5QXhpc0NvcnJlY3Rpb249dGhpcy54RGl2aXNpb24vMix0aGlzLmVsU2VyaWVzPXMuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1zZXJpZXNcIix6SW5kZXg6dm9pZCAwIT09YS5jb25maWcuc2VyaWVzW2ldLnpJbmRleD9hLmNvbmZpZy5zZXJpZXNbaV0uekluZGV4Omksc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhhLmdsb2JhbHMuc2VyaWVzTmFtZXNbaV0pfSksdGhpcy5lbFBvaW50c01haW49cy5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzLXdyYXBcIixcImRhdGE6cmVhbEluZGV4XCI6aX0pLHRoaXMuZWxEYXRhTGFiZWxzV3JhcD1zLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtZGF0YWxhYmVsc1wiLFwiZGF0YTpyZWFsSW5kZXhcIjppfSk7dmFyIHI9dFtlXS5sZW5ndGg9PT1hLmdsb2JhbHMuZGF0YVBvaW50czt0aGlzLmVsU2VyaWVzLmF0dHIoe1wiZGF0YTpsb25nZXN0U2VyaWVzXCI6cixyZWw6ZSsxLFwiZGF0YTpyZWFsSW5kZXhcIjppfSksdGhpcy5hcHBlbmRQYXRoRnJvbT0hMH19LHtrZXk6XCJfY2FsY3VsYXRlUGF0aHNGcm9tXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxhLHMscj10LnR5cGUsbz10LnNlcmllcyxuPXQuaSxsPXQucmVhbEluZGV4LGg9dC5wcmV2WCxjPXQucHJldlksZD10LnByZXZZMixnPXRoaXMudyx1PW5ldyBtKHRoaXMuY3R4KTtpZihudWxsPT09b1tuXVswXSl7Zm9yKHZhciBwPTA7cDxvW25dLmxlbmd0aDtwKyspaWYobnVsbCE9PW9bbl1bcF0pe2g9dGhpcy54RGl2aXNpb24qcCxjPXRoaXMuemVyb1ktb1tuXVtwXS90aGlzLnlSYXRpb1t0aGlzLnlheGlzSW5kZXhdLGU9dS5tb3ZlKGgsYyksaT11Lm1vdmUoaCx0aGlzLmFyZWFCb3R0b21ZKTticmVha319ZWxzZSBlPXUubW92ZShoLGMpLFwicmFuZ2VBcmVhXCI9PT1yJiYoZT11Lm1vdmUoaCxkKSt1LmxpbmUoaCxjKSksaT11Lm1vdmUoaCx0aGlzLmFyZWFCb3R0b21ZKSt1LmxpbmUoaCxjKTtpZihhPXUubW92ZSgtMSx0aGlzLnplcm9ZKSt1LmxpbmUoLTEsdGhpcy56ZXJvWSkscz11Lm1vdmUoLTEsdGhpcy56ZXJvWSkrdS5saW5lKC0xLHRoaXMuemVyb1kpLGcuZ2xvYmFscy5wcmV2aW91c1BhdGhzLmxlbmd0aD4wKXt2YXIgZj10aGlzLmxpbmVIZWxwZXJzLmNoZWNrUHJldmlvdXNQYXRocyh7cGF0aEZyb21MaW5lOmEscGF0aEZyb21BcmVhOnMscmVhbEluZGV4Omx9KTthPWYucGF0aEZyb21MaW5lLHM9Zi5wYXRoRnJvbUFyZWF9cmV0dXJue3ByZXZYOmgscHJldlk6YyxsaW5lUGF0aDplLGFyZWFQYXRoOmkscGF0aEZyb21MaW5lOmEscGF0aEZyb21BcmVhOnN9fX0se2tleTpcIl9oYW5kbGVQYXRoc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBpPXQudHlwZSxhPXQucmVhbEluZGV4LHM9dC5pLHI9dC5wYXRocyxvPXRoaXMudyxuPW5ldyBtKHRoaXMuY3R4KSxsPW5ldyBSKHRoaXMuY3R4KTt0aGlzLnByZXZTZXJpZXNZLnB1c2goci55QXJyaiksby5nbG9iYWxzLnNlcmllc1h2YWx1ZXNbYV09ci54QXJyaixvLmdsb2JhbHMuc2VyaWVzWXZhbHVlc1thXT1yLnlBcnJqO3ZhciBoPW8uY29uZmlnLmZvcmVjYXN0RGF0YVBvaW50cztpZihoLmNvdW50PjAmJlwicmFuZ2VBcmVhXCIhPT1pKXt2YXIgYz1vLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1thXVtvLmdsb2JhbHMuc2VyaWVzWHZhbHVlc1thXS5sZW5ndGgtaC5jb3VudC0xXSxkPW4uZHJhd1JlY3QoYywwLG8uZ2xvYmFscy5ncmlkV2lkdGgsby5nbG9iYWxzLmdyaWRIZWlnaHQsMCk7by5nbG9iYWxzLmRvbS5lbEZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZChkLm5vZGUpO3ZhciBnPW4uZHJhd1JlY3QoMCwwLGMsby5nbG9iYWxzLmdyaWRIZWlnaHQsMCk7by5nbG9iYWxzLmRvbS5lbE5vbkZvcmVjYXN0TWFzay5hcHBlbmRDaGlsZChnLm5vZGUpfXRoaXMucG9pbnRzQ2hhcnR8fG8uZ2xvYmFscy5kZWxheWVkRWxlbWVudHMucHVzaCh7ZWw6dGhpcy5lbFBvaW50c01haW4ubm9kZSxpbmRleDphfSk7dmFyIHU9e2k6cyxyZWFsSW5kZXg6YSxhbmltYXRpb25EZWxheTpzLGluaXRpYWxTcGVlZDpvLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLnNwZWVkLGRhdGFDaGFuZ2VTcGVlZDpvLmNvbmZpZy5jaGFydC5hbmltYXRpb25zLmR5bmFtaWNBbmltYXRpb24uc3BlZWQsY2xhc3NOYW1lOlwiYXBleGNoYXJ0cy1cIi5jb25jYXQoaSl9O2lmKFwiYXJlYVwiPT09aSlmb3IodmFyIHA9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmF9KSxmPTA7ZjxyLmFyZWFQYXRocy5sZW5ndGg7ZisrKXt2YXIgeD1uLnJlbmRlclBhdGhzKGUoZSh7fSx1KSx7fSx7cGF0aEZyb206ci5wYXRoRnJvbUFyZWEscGF0aFRvOnIuYXJlYVBhdGhzW2ZdLHN0cm9rZTpcIm5vbmVcIixzdHJva2VXaWR0aDowLHN0cm9rZUxpbmVDYXA6bnVsbCxmaWxsOnB9KSk7dGhpcy5lbFNlcmllcy5hZGQoeCl9aWYoby5jb25maWcuc3Ryb2tlLnNob3cmJiF0aGlzLnBvaW50c0NoYXJ0KXt2YXIgYj1udWxsO2lmKFwibGluZVwiPT09aSliPWwuZmlsbFBhdGgoe3Nlcmllc051bWJlcjphLGk6c30pO2Vsc2UgaWYoXCJzb2xpZFwiPT09by5jb25maWcuc3Ryb2tlLmZpbGwudHlwZSliPW8uZ2xvYmFscy5zdHJva2UuY29sb3JzW2FdO2Vsc2V7dmFyIHY9by5jb25maWcuZmlsbDtvLmNvbmZpZy5maWxsPW8uY29uZmlnLnN0cm9rZS5maWxsLGI9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmEsaTpzfSksby5jb25maWcuZmlsbD12fWZvcih2YXIgeT0wO3k8ci5saW5lUGF0aHMubGVuZ3RoO3krKyl7dmFyIHc9YjtcInJhbmdlQXJlYVwiPT09aSYmKHc9bC5maWxsUGF0aCh7c2VyaWVzTnVtYmVyOmF9KSk7dmFyIGs9ZShlKHt9LHUpLHt9LHtwYXRoRnJvbTpyLnBhdGhGcm9tTGluZSxwYXRoVG86ci5saW5lUGF0aHNbeV0sc3Ryb2tlOmIsc3Ryb2tlV2lkdGg6dGhpcy5zdHJva2VXaWR0aCxzdHJva2VMaW5lQ2FwOm8uY29uZmlnLnN0cm9rZS5saW5lQ2FwLGZpbGw6XCJyYW5nZUFyZWFcIj09PWk/dzpcIm5vbmVcIn0pLEE9bi5yZW5kZXJQYXRocyhrKTtpZih0aGlzLmVsU2VyaWVzLmFkZChBKSxBLmF0dHIoXCJmaWxsLXJ1bGVcIixcImV2ZW5vZGRcIiksaC5jb3VudD4wJiZcInJhbmdlQXJlYVwiIT09aSl7dmFyIFM9bi5yZW5kZXJQYXRocyhrKTtTLm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLWRhc2hhcnJheVwiLGguZGFzaEFycmF5KSxoLnN0cm9rZVdpZHRoJiZTLm5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIsaC5zdHJva2VXaWR0aCksdGhpcy5lbFNlcmllcy5hZGQoUyksUy5hdHRyKFwiY2xpcC1wYXRoXCIsXCJ1cmwoI2ZvcmVjYXN0TWFza1wiLmNvbmNhdChvLmdsb2JhbHMuY3VpZCxcIilcIikpLEEuYXR0cihcImNsaXAtcGF0aFwiLFwidXJsKCNub25Gb3JlY2FzdE1hc2tcIi5jb25jYXQoby5nbG9iYWxzLmN1aWQsXCIpXCIpKX19fX19LHtrZXk6XCJfaXRlcmF0ZU92ZXJEYXRhUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQudHlwZSxhPXQuc2VyaWVzLHM9dC5pdGVyYXRpb25zLHI9dC5yZWFsSW5kZXgsbz10Lmksbj10LngsbD10LnksaD10LnBhdGhzRnJvbSxjPXQubGluZVBhdGhzLGQ9dC5hcmVhUGF0aHMsZz10LnNlcmllc0luZGV4LHU9dC5saW5lWVBvc2l0aW9uLHA9dC54QXJyaixmPXQueUFycmosYj10LnkyQXJyaix2PXQuaXNSYW5nZVN0YXJ0LHk9dC5zZXJpZXNSYW5nZUVuZCx3PXRoaXMudyxrPW5ldyBtKHRoaXMuY3R4KSxBPXRoaXMueVJhdGlvLFM9aC5wcmV2WSxDPWgubGluZVBhdGgsTD1oLmFyZWFQYXRoLFA9aC5wYXRoRnJvbUxpbmUsST1oLnBhdGhGcm9tQXJlYSxNPXguaXNOdW1iZXIody5nbG9iYWxzLm1pbllBcnJbcl0pP3cuZ2xvYmFscy5taW5ZQXJyW3JdOncuZ2xvYmFscy5taW5ZO3N8fChzPXcuZ2xvYmFscy5kYXRhUG9pbnRzPjE/dy5nbG9iYWxzLmRhdGFQb2ludHMtMTp3Lmdsb2JhbHMuZGF0YVBvaW50cyk7Zm9yKHZhciBUPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIGktdC9BW2UueWF4aXNJbmRleF0rMiooZS5pc1JldmVyc2VkP3QvQVtlLnlheGlzSW5kZXhdOjApfSx6PWwsWD0wO1g8cztYKyspe3ZhciBFPXZvaWQgMD09PWFbb11bWCsxXXx8bnVsbD09PWFbb11bWCsxXTtpZih3Lmdsb2JhbHMuaXNYTnVtZXJpYyl7dmFyIFk9dy5nbG9iYWxzLnNlcmllc1hbcl1bWCsxXTt2b2lkIDA9PT13Lmdsb2JhbHMuc2VyaWVzWFtyXVtYKzFdJiYoWT13Lmdsb2JhbHMuc2VyaWVzWFtyXVtzLTFdKSxuPShZLXcuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpb31lbHNlIG4rPXRoaXMueERpdmlzaW9uO2lmKHcuY29uZmlnLmNoYXJ0LnN0YWNrZWQpaWYobz4wJiZ3Lmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzLmxlbmd0aDx3LmNvbmZpZy5zZXJpZXMubGVuZ3RoLTEpe3U9dGhpcy5wcmV2U2VyaWVzWVtmdW5jdGlvbih0KXtmb3IodmFyIGU9dCxpPTA7aTx3Lmdsb2JhbHMuc2VyaWVzLmxlbmd0aDtpKyspaWYody5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXMuaW5kZXhPZih0KT4tMSl7ZS0tO2JyZWFrfXJldHVybiBlPj0wP2U6MH0oby0xKV1bWCsxXX1lbHNlIHU9dGhpcy56ZXJvWTtlbHNlIHU9dGhpcy56ZXJvWTtFP2w9VChNLHUpOihsPVQoYVtvXVtYKzFdLHUpLFwicmFuZ2VBcmVhXCI9PT1pJiYoej1UKHlbb11bWCsxXSx1KSkpLHAucHVzaChuKSxFJiZcInNtb290aFwiPT09dy5jb25maWcuc3Ryb2tlLmN1cnZlP2YucHVzaChudWxsKTpmLnB1c2gobCksYi5wdXNoKHopO3ZhciBGPXRoaXMubGluZUhlbHBlcnMuY2FsY3VsYXRlUG9pbnRzKHtzZXJpZXM6YSx4Om4seTpsLHJlYWxJbmRleDpyLGk6byxqOlgscHJldlk6U30pLFI9dGhpcy5fY3JlYXRlUGF0aHMoe3R5cGU6aSxzZXJpZXM6YSxpOm8scmVhbEluZGV4OnIsajpYLHg6bix5OmwseTI6eix4QXJyajpwLHlBcnJqOmYseTJBcnJqOmIsbGluZVBhdGg6QyxhcmVhUGF0aDpMLGxpbmVQYXRoczpjLGFyZWFQYXRoczpkLHNlcmllc0luZGV4OmcsaXNSYW5nZVN0YXJ0OnZ9KTtkPVIuYXJlYVBhdGhzLGM9Ui5saW5lUGF0aHMsTD1SLmFyZWFQYXRoLEM9Ui5saW5lUGF0aCwhdGhpcy5hcHBlbmRQYXRoRnJvbXx8XCJzbW9vdGhcIj09PXcuY29uZmlnLnN0cm9rZS5jdXJ2ZSYmXCJyYW5nZUFyZWFcIj09PWl8fChQKz1rLmxpbmUobix0aGlzLnplcm9ZKSxJKz1rLmxpbmUobix0aGlzLnplcm9ZKSksdGhpcy5oYW5kbGVOdWxsRGF0YVBvaW50cyhhLEYsbyxYLHIpLHRoaXMuX2hhbmRsZU1hcmtlcnNBbmRMYWJlbHMoe3R5cGU6aSxwb2ludHNQb3M6RixpOm8sajpYLHJlYWxJbmRleDpyLGlzUmFuZ2VTdGFydDp2fSl9cmV0dXJue3lBcnJqOmYseEFycmo6cCxwYXRoRnJvbUFyZWE6SSxhcmVhUGF0aHM6ZCxwYXRoRnJvbUxpbmU6UCxsaW5lUGF0aHM6YyxsaW5lUGF0aDpDLGFyZWFQYXRoOkx9fX0se2tleTpcIl9oYW5kbGVNYXJrZXJzQW5kTGFiZWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50eXBlLGk9dC5wb2ludHNQb3MsYT10LmlzUmFuZ2VTdGFydCxzPXQuaSxyPXQuaixvPXQucmVhbEluZGV4LG49dGhpcy53LGw9bmV3IE8odGhpcy5jdHgpO2lmKHRoaXMucG9pbnRzQ2hhcnQpdGhpcy5zY2F0dGVyLmRyYXcodGhpcy5lbFNlcmllcyxyLHtyZWFsSW5kZXg6byxwb2ludHNQb3M6aSx6UmF0aW86dGhpcy56UmF0aW8sZWxQYXJlbnQ6dGhpcy5lbFBvaW50c01haW59KTtlbHNle24uZ2xvYmFscy5zZXJpZXNbc10ubGVuZ3RoPjEmJnRoaXMuZWxQb2ludHNNYWluLm5vZGUuY2xhc3NMaXN0LmFkZChcImFwZXhjaGFydHMtZWxlbWVudC1oaWRkZW5cIik7dmFyIGg9dGhpcy5tYXJrZXJzLnBsb3RDaGFydE1hcmtlcnMoaSxvLHIrMSk7bnVsbCE9PWgmJnRoaXMuZWxQb2ludHNNYWluLmFkZChoKX12YXIgYz1sLmRyYXdEYXRhTGFiZWwoe3R5cGU6ZSxpc1JhbmdlU3RhcnQ6YSxwb3M6aSxpOm8sajpyKzF9KTtudWxsIT09YyYmdGhpcy5lbERhdGFMYWJlbHNXcmFwLmFkZChjKX19LHtrZXk6XCJfY3JlYXRlUGF0aHNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnR5cGUsaT10LnNlcmllcyxhPXQuaSxzPXQucmVhbEluZGV4LHI9dC5qLG89dC54LG49dC55LGw9dC54QXJyaixoPXQueUFycmosYz10LnkyLGQ9dC55MkFycmosZz10LmxpbmVQYXRoLHU9dC5hcmVhUGF0aCxwPXQubGluZVBhdGhzLGY9dC5hcmVhUGF0aHMseD10LnNlcmllc0luZGV4LGI9dC5pc1JhbmdlU3RhcnQsdj10aGlzLncseT1uZXcgbSh0aGlzLmN0eCksdz12LmNvbmZpZy5zdHJva2UuY3VydmUsaz10aGlzLmFyZWFCb3R0b21ZO2lmKEFycmF5LmlzQXJyYXkodi5jb25maWcuc3Ryb2tlLmN1cnZlKSYmKHc9QXJyYXkuaXNBcnJheSh4KT92LmNvbmZpZy5zdHJva2UuY3VydmVbeFthXV06di5jb25maWcuc3Ryb2tlLmN1cnZlW2FdKSxcInJhbmdlQXJlYVwiPT09ZSYmKHYuZ2xvYmFscy5oYXNOdWxsVmFsdWVzfHx2LmNvbmZpZy5mb3JlY2FzdERhdGFQb2ludHMuY291bnQ+MCkmJlwic21vb3RoXCI9PT13JiYodz1cInN0cmFpZ2h0XCIpLFwic21vb3RoXCI9PT13KXt2YXIgQT1cInJhbmdlQXJlYVwiPT09ZT9sLmxlbmd0aD09PXYuZ2xvYmFscy5kYXRhUG9pbnRzOnI9PT1pW2FdLmxlbmd0aC0yLFM9bC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW2xbZV0saFtlXV19KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXRbMV19KSk7aWYoQSYmUy5sZW5ndGg+MSl7dmFyIEM9RXQoUyk7aWYoZys9WHQoQyksbnVsbD09PWlbYV1bMF0/dT1nOnUrPVh0KEMpLFwicmFuZ2VBcmVhXCI9PT1lJiZiKXtnKz15LmxpbmUobFtsLmxlbmd0aC0xXSxkW2QubGVuZ3RoLTFdKTt2YXIgTD1sLnNsaWNlKCkucmV2ZXJzZSgpLFA9ZC5zbGljZSgpLnJldmVyc2UoKSxJPUwubWFwKChmdW5jdGlvbih0LGUpe3JldHVybltMW2VdLFBbZV1dfSkpLE09RXQoSSk7dT1nKz1YdChNKX1lbHNlIHUrPXkubGluZShTW1MubGVuZ3RoLTFdWzBdLGspK3kubGluZShTWzBdWzBdLGspK3kubW92ZShTWzBdWzBdLFNbMF1bMV0pK1wielwiO3AucHVzaChnKSxmLnB1c2godSl9fWVsc2V7aWYobnVsbD09PWlbYV1bcisxXSl7Zys9eS5tb3ZlKG8sbik7dmFyIFQ9di5nbG9iYWxzLmlzWE51bWVyaWM/KHYuZ2xvYmFscy5zZXJpZXNYW3NdW3JdLXYuZ2xvYmFscy5taW5YKS90aGlzLnhSYXRpbzpvLXRoaXMueERpdmlzaW9uO3U9dSt5LmxpbmUoVCxrKSt5Lm1vdmUobyxuKStcInpcIn1udWxsPT09aVthXVtyXSYmKGcrPXkubW92ZShvLG4pLHUrPXkubW92ZShvLGspKSxcInN0ZXBsaW5lXCI9PT13PyhnPWcreS5saW5lKG8sbnVsbCxcIkhcIikreS5saW5lKG51bGwsbixcIlZcIiksdT11K3kubGluZShvLG51bGwsXCJIXCIpK3kubGluZShudWxsLG4sXCJWXCIpKTpcInN0cmFpZ2h0XCI9PT13JiYoZys9eS5saW5lKG8sbiksdSs9eS5saW5lKG8sbikpLHI9PT1pW2FdLmxlbmd0aC0yJiYodT11K3kubGluZShvLGspK3kubW92ZShvLG4pK1wielwiLFwicmFuZ2VBcmVhXCI9PT1lJiZiP2c9Zyt5LmxpbmUobyxjKSt5Lm1vdmUobyxjKStcInpcIjoocC5wdXNoKGcpLGYucHVzaCh1KSkpfXJldHVybntsaW5lUGF0aHM6cCxhcmVhUGF0aHM6ZixsaW5lUGF0aDpnLGFyZWFQYXRoOnV9fX0se2tleTpcImhhbmRsZU51bGxEYXRhUG9pbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCxlLGksYSxzKXt2YXIgcj10aGlzLnc7aWYobnVsbD09PXRbaV1bYV0mJnIuY29uZmlnLm1hcmtlcnMuc2hvd051bGxEYXRhUG9pbnRzfHwxPT09dFtpXS5sZW5ndGgpe3ZhciBvPXRoaXMubWFya2Vycy5wbG90Q2hhcnRNYXJrZXJzKGUscyxhKzEsdGhpcy5zdHJva2VXaWR0aC1yLmNvbmZpZy5tYXJrZXJzLnN0cm9rZVdpZHRoLzIsITApO251bGwhPT1vJiZ0aGlzLmVsUG9pbnRzTWFpbi5hZGQobyl9fX1dKSx0fSgpO3dpbmRvdy5UcmVlbWFwU3F1YXJlZD17fSx3aW5kb3cuVHJlZW1hcFNxdWFyZWQuZ2VuZXJhdGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSxhLHMpe3RoaXMueG9mZnNldD1lLHRoaXMueW9mZnNldD1pLHRoaXMuaGVpZ2h0PXMsdGhpcy53aWR0aD1hLHRoaXMuc2hvcnRlc3RFZGdlPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHRoaXMuaGVpZ2h0LHRoaXMud2lkdGgpfSx0aGlzLmdldENvb3JkaW5hdGVzPWZ1bmN0aW9uKHQpe3ZhciBlLGk9W10sYT10aGlzLnhvZmZzZXQscz10aGlzLnlvZmZzZXQsbz1yKHQpL3RoaXMuaGVpZ2h0LG49cih0KS90aGlzLndpZHRoO2lmKHRoaXMud2lkdGg+PXRoaXMuaGVpZ2h0KWZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaS5wdXNoKFthLHMsYStvLHMrdFtlXS9vXSkscys9dFtlXS9vO2Vsc2UgZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylpLnB1c2goW2EscyxhK3RbZV0vbixzK25dKSxhKz10W2VdL247cmV0dXJuIGl9LHRoaXMuY3V0QXJlYT1mdW5jdGlvbihlKXt2YXIgaTtpZih0aGlzLndpZHRoPj10aGlzLmhlaWdodCl7dmFyIGE9ZS90aGlzLmhlaWdodCxzPXRoaXMud2lkdGgtYTtpPW5ldyB0KHRoaXMueG9mZnNldCthLHRoaXMueW9mZnNldCxzLHRoaXMuaGVpZ2h0KX1lbHNle3ZhciByPWUvdGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LXI7aT1uZXcgdCh0aGlzLnhvZmZzZXQsdGhpcy55b2Zmc2V0K3IsdGhpcy53aWR0aCxvKX1yZXR1cm4gaX19ZnVuY3Rpb24gZShlLGEscyxvLG4pe289dm9pZCAwPT09bz8wOm8sbj12b2lkIDA9PT1uPzA6bjt2YXIgbD1pKGZ1bmN0aW9uKHQsZSl7dmFyIGksYT1bXSxzPWUvcih0KTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKWFbaV09dFtpXSpzO3JldHVybiBhfShlLGEqcyksW10sbmV3IHQobyxuLGEscyksW10pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZSxpLGE9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylmb3IoaT0wO2k8dFtlXS5sZW5ndGg7aSsrKWEucHVzaCh0W2VdW2ldKTtyZXR1cm4gYX0obCl9ZnVuY3Rpb24gaSh0LGUscyxvKXt2YXIgbixsLGg7aWYoMCE9PXQubGVuZ3RoKXJldHVybiBuPXMuc2hvcnRlc3RFZGdlKCksZnVuY3Rpb24odCxlLGkpe3ZhciBzO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDsocz10LnNsaWNlKCkpLnB1c2goZSk7dmFyIHI9YSh0LGkpLG89YShzLGkpO3JldHVybiByPj1vfShlLGw9dFswXSxuKT8oZS5wdXNoKGwpLGkodC5zbGljZSgxKSxlLHMsbykpOihoPXMuY3V0QXJlYShyKGUpLG8pLG8ucHVzaChzLmdldENvb3JkaW5hdGVzKGUpKSxpKHQsW10saCxvKSksbztvLnB1c2gocy5nZXRDb29yZGluYXRlcyhlKSl9ZnVuY3Rpb24gYSh0LGUpe3ZhciBpPU1hdGgubWluLmFwcGx5KE1hdGgsdCksYT1NYXRoLm1heC5hcHBseShNYXRoLHQpLHM9cih0KTtyZXR1cm4gTWF0aC5tYXgoTWF0aC5wb3coZSwyKSphL01hdGgucG93KHMsMiksTWF0aC5wb3cocywyKS8oTWF0aC5wb3coZSwyKSppKSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdCYmdC5jb25zdHJ1Y3Rvcj09PUFycmF5fWZ1bmN0aW9uIHIodCl7dmFyIGUsaT0wO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaSs9dFtlXTtyZXR1cm4gaX1mdW5jdGlvbiBvKHQpe3ZhciBlLGk9MDtpZihzKHRbMF0pKWZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspaSs9byh0W2VdKTtlbHNlIGk9cih0KTtyZXR1cm4gaX1yZXR1cm4gZnVuY3Rpb24gdChpLGEscixuLGwpe249dm9pZCAwPT09bj8wOm4sbD12b2lkIDA9PT1sPzA6bDt2YXIgaCxjLGQ9W10sZz1bXTtpZihzKGlbMF0pKXtmb3IoYz0wO2M8aS5sZW5ndGg7YysrKWRbY109byhpW2NdKTtmb3IoaD1lKGQsYSxyLG4sbCksYz0wO2M8aS5sZW5ndGg7YysrKWcucHVzaCh0KGlbY10saFtjXVsyXS1oW2NdWzBdLGhbY11bM10taFtjXVsxXSxoW2NdWzBdLGhbY11bMV0pKX1lbHNlIGc9ZShpLGEscixuLGwpO3JldHVybiBnfX0oKTt2YXIgUnQsSHQsRHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUudyx0aGlzLnN0cm9rZVdpZHRoPXRoaXMudy5jb25maWcuc3Ryb2tlLndpZHRoLHRoaXMuaGVscGVycz1uZXcgQXQoZSksdGhpcy5keW5hbWljQW5pbT10aGlzLncuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZHluYW1pY0FuaW1hdGlvbix0aGlzLmxhYmVscz1bXX1yZXR1cm4gcih0LFt7a2V5OlwiZHJhd1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT10aGlzLncsYT1uZXcgbSh0aGlzLmN0eCkscz1uZXcgUih0aGlzLmN0eCkscj1hLmdyb3VwKHtjbGFzczpcImFwZXhjaGFydHMtdHJlZW1hcFwifSk7aWYoaS5nbG9iYWxzLm5vRGF0YSlyZXR1cm4gcjt2YXIgbz1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKHQpfSkpO28ucHVzaChlKX0pKSx0aGlzLm5lZ1JhbmdlPXRoaXMuaGVscGVycy5jaGVja0NvbG9yUmFuZ2UoKSxpLmNvbmZpZy5zZXJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXt0LmRhdGEuZm9yRWFjaCgoZnVuY3Rpb24odCl7QXJyYXkuaXNBcnJheShlLmxhYmVsc1tpXSl8fChlLmxhYmVsc1tpXT1bXSksZS5sYWJlbHNbaV0ucHVzaCh0LngpfSkpfSkpLHdpbmRvdy5UcmVlbWFwU3F1YXJlZC5nZW5lcmF0ZShvLGkuZ2xvYmFscy5ncmlkV2lkdGgsaS5nbG9iYWxzLmdyaWRIZWlnaHQpLmZvckVhY2goKGZ1bmN0aW9uKG8sbil7dmFyIGw9YS5ncm91cCh7Y2xhc3M6XCJhcGV4Y2hhcnRzLXNlcmllcyBhcGV4Y2hhcnRzLXRyZWVtYXAtc2VyaWVzXCIsc2VyaWVzTmFtZTp4LmVzY2FwZVN0cmluZyhpLmdsb2JhbHMuc2VyaWVzTmFtZXNbbl0pLHJlbDpuKzEsXCJkYXRhOnJlYWxJbmRleFwiOm59KTtpZihpLmNvbmZpZy5jaGFydC5kcm9wU2hhZG93LmVuYWJsZWQpe3ZhciBoPWkuY29uZmlnLmNoYXJ0LmRyb3BTaGFkb3c7bmV3IHYoZS5jdHgpLmRyb3BTaGFkb3cocixoLG4pfXZhciBjPWEuZ3JvdXAoe2NsYXNzOlwiYXBleGNoYXJ0cy1kYXRhLWxhYmVsc1wifSk7by5mb3JFYWNoKChmdW5jdGlvbihyLG8pe3ZhciBoPXJbMF0sYz1yWzFdLGQ9clsyXSxnPXJbM10sdT1hLmRyYXdSZWN0KGgsYyxkLWgsZy1jLDAsXCIjZmZmXCIsMSxlLnN0cm9rZVdpZHRoLGkuY29uZmlnLnBsb3RPcHRpb25zLnRyZWVtYXAudXNlRmlsbENvbG9yQXNTdHJva2U/ZjppLmdsb2JhbHMuc3Ryb2tlLmNvbG9yc1tuXSk7dS5hdHRyKHtjeDpoLGN5OmMsaW5kZXg6bixpOm4sajpvLHdpZHRoOmQtaCxoZWlnaHQ6Zy1jfSk7dmFyIHA9ZS5oZWxwZXJzLmdldFNoYWRlQ29sb3IoaS5jb25maWcuY2hhcnQudHlwZSxuLG8sZS5uZWdSYW5nZSksZj1wLmNvbG9yO3ZvaWQgMCE9PWkuY29uZmlnLnNlcmllc1tuXS5kYXRhW29dJiZpLmNvbmZpZy5zZXJpZXNbbl0uZGF0YVtvXS5maWxsQ29sb3ImJihmPWkuY29uZmlnLnNlcmllc1tuXS5kYXRhW29dLmZpbGxDb2xvcik7dmFyIHg9cy5maWxsUGF0aCh7Y29sb3I6ZixzZXJpZXNOdW1iZXI6bixkYXRhUG9pbnRJbmRleDpvfSk7dS5ub2RlLmNsYXNzTGlzdC5hZGQoXCJhcGV4Y2hhcnRzLXRyZWVtYXAtcmVjdFwiKSx1LmF0dHIoe2ZpbGw6eH0pLGUuaGVscGVycy5hZGRMaXN0ZW5lcnModSk7dmFyIGI9e3g6aCsoZC1oKS8yLHk6YysoZy1jKS8yLHdpZHRoOjAsaGVpZ2h0OjB9LHY9e3g6aCx5OmMsd2lkdGg6ZC1oLGhlaWdodDpnLWN9O2lmKGkuY29uZmlnLmNoYXJ0LmFuaW1hdGlvbnMuZW5hYmxlZCYmIWkuZ2xvYmFscy5kYXRhQ2hhbmdlZCl7dmFyIG09MTtpLmdsb2JhbHMucmVzaXplZHx8KG09aS5jb25maWcuY2hhcnQuYW5pbWF0aW9ucy5zcGVlZCksZS5hbmltYXRlVHJlZW1hcCh1LGIsdixtKX1pZihpLmdsb2JhbHMuZGF0YUNoYW5nZWQpe3ZhciB5PTE7ZS5keW5hbWljQW5pbS5lbmFibGVkJiZpLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZSYmKHk9ZS5keW5hbWljQW5pbS5zcGVlZCxpLmdsb2JhbHMucHJldmlvdXNQYXRoc1tuXSYmaS5nbG9iYWxzLnByZXZpb3VzUGF0aHNbbl1bb10mJmkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dW29dLnJlY3QmJihiPWkuZ2xvYmFscy5wcmV2aW91c1BhdGhzW25dW29dLnJlY3QpLGUuYW5pbWF0ZVRyZWVtYXAodSxiLHYseSkpfXZhciB3PWUuZ2V0Rm9udFNpemUociksaz1pLmNvbmZpZy5kYXRhTGFiZWxzLmZvcm1hdHRlcihlLmxhYmVsc1tuXVtvXSx7dmFsdWU6aS5nbG9iYWxzLnNlcmllc1tuXVtvXSxzZXJpZXNJbmRleDpuLGRhdGFQb2ludEluZGV4Om8sdzppfSk7XCJ0cnVuY2F0ZVwiPT09aS5jb25maWcucGxvdE9wdGlvbnMudHJlZW1hcC5kYXRhTGFiZWxzLmZvcm1hdCYmKHc9cGFyc2VJbnQoaS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCksaz1lLnRydW5jYXRlTGFiZWxzKGssdyxoLGMsZCxnKSk7dmFyIEE9ZS5oZWxwZXJzLmNhbGN1bGF0ZURhdGFMYWJlbHMoe3RleHQ6ayx4OihoK2QpLzIseTooYytnKS8yK2Uuc3Ryb2tlV2lkdGgvMit3LzMsaTpuLGo6byxjb2xvclByb3BzOnAsZm9udFNpemU6dyxzZXJpZXM6dH0pO2kuY29uZmlnLmRhdGFMYWJlbHMuZW5hYmxlZCYmQSYmZS5yb3RhdGVUb0ZpdExhYmVsKEEsdyxrLGgsYyxkLGcpLGwuYWRkKHUpLG51bGwhPT1BJiZsLmFkZChBKX0pKSxsLmFkZChjKSxyLmFkZChsKX0pKSxyfX0se2tleTpcImdldEZvbnRTaXplXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy53O3ZhciBpLGEscyxyLG89ZnVuY3Rpb24gdChlKXt2YXIgaSxhPTA7aWYoQXJyYXkuaXNBcnJheShlWzBdKSlmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPXQoZVtpXSk7ZWxzZSBmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPWVbaV0ubGVuZ3RoO3JldHVybiBhfSh0aGlzLmxhYmVscykvZnVuY3Rpb24gdChlKXt2YXIgaSxhPTA7aWYoQXJyYXkuaXNBcnJheShlWzBdKSlmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPXQoZVtpXSk7ZWxzZSBmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKWErPTE7cmV0dXJuIGF9KHRoaXMubGFiZWxzKTtyZXR1cm4gaT10WzJdLXRbMF0sYT10WzNdLXRbMV0scz1pKmEscj1NYXRoLnBvdyhzLC41KSxNYXRoLm1pbihyL28scGFyc2VJbnQoZS5jb25maWcuZGF0YUxhYmVscy5zdHlsZS5mb250U2l6ZSwxMCkpfX0se2tleTpcInJvdGF0ZVRvRml0TGFiZWxcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscixvKXt2YXIgbj1uZXcgbSh0aGlzLmN0eCksbD1uLmdldFRleHRSZWN0cyhpLGUpO2lmKGwud2lkdGgrdGhpcy53LmNvbmZpZy5zdHJva2Uud2lkdGgrNT5yLWEmJmwud2lkdGg8PW8tcyl7dmFyIGg9bi5yb3RhdGVBcm91bmRDZW50ZXIodC5ub2RlKTt0Lm5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsXCJyb3RhdGUoLTkwIFwiLmNvbmNhdChoLngsXCIgXCIpLmNvbmNhdChoLnksXCIpIHRyYW5zbGF0ZShcIikuY29uY2F0KGwuaGVpZ2h0LzMsXCIpXCIpKX19fSx7a2V5OlwidHJ1bmNhdGVMYWJlbHNcIix2YWx1ZTpmdW5jdGlvbih0LGUsaSxhLHMscil7dmFyIG89bmV3IG0odGhpcy5jdHgpLG49by5nZXRUZXh0UmVjdHModCxlKS53aWR0aCt0aGlzLncuY29uZmlnLnN0cm9rZS53aWR0aCs1PnMtaSYmci1hPnMtaT9yLWE6cy1pLGw9by5nZXRUZXh0QmFzZWRPbk1heFdpZHRoKHt0ZXh0OnQsbWF4V2lkdGg6bixmb250U2l6ZTplfSk7cmV0dXJuIHQubGVuZ3RoIT09bC5sZW5ndGgmJm4vZTw1P1wiXCI6bH19LHtrZXk6XCJhbmltYXRlVHJlZW1hcFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzPW5ldyBiKHRoaXMuY3R4KTtzLmFuaW1hdGVSZWN0KHQse3g6ZS54LHk6ZS55LHdpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fSx7eDppLngseTppLnksd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9LGEsKGZ1bmN0aW9uKCl7cy5hbmltYXRpb25Db21wbGV0ZWQodCl9KSl9fV0pLHR9KCksT3Q9ODY0MDAsTnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2EodGhpcyx0KSx0aGlzLmN0eD1lLHRoaXMudz1lLncsdGhpcy50aW1lU2NhbGVBcnJheT1bXSx0aGlzLnV0Yz10aGlzLncuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZVVUQ31yZXR1cm4gcih0LFt7a2V5OlwiY2FsY3VsYXRlVGltZVNjYWxlVGlja3NcIix2YWx1ZTpmdW5jdGlvbih0LGkpe3ZhciBhPXRoaXMscz10aGlzLnc7aWYocy5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZClyZXR1cm4gcy5nbG9iYWxzLmxhYmVscz1bXSxzLmdsb2JhbHMudGltZXNjYWxlTGFiZWxzPVtdLFtdO3ZhciByPW5ldyBJKHRoaXMuY3R4KSxvPShpLXQpLzg2NGU1O3RoaXMuZGV0ZXJtaW5lSW50ZXJ2YWwobykscy5nbG9iYWxzLmRpc2FibGVab29tSW49ITEscy5nbG9iYWxzLmRpc2FibGVab29tT3V0PSExLG88LjAwMDExNTc0MDc0MDc0MDc0MDc1P3MuZ2xvYmFscy5kaXNhYmxlWm9vbUluPSEwOm8+NWU0JiYocy5nbG9iYWxzLmRpc2FibGVab29tT3V0PSEwKTt2YXIgbj1yLmdldFRpbWVVbml0c2Zyb21UaW1lc3RhbXAodCxpLHRoaXMudXRjKSxsPXMuZ2xvYmFscy5ncmlkV2lkdGgvbyxoPWwvMjQsYz1oLzYwLGQ9Yy82MCxnPU1hdGguZmxvb3IoMjQqbyksdT1NYXRoLmZsb29yKDE0NDAqbykscD1NYXRoLmZsb29yKG8qT3QpLGY9TWF0aC5mbG9vcihvKSx4PU1hdGguZmxvb3Ioby8zMCksYj1NYXRoLmZsb29yKG8vMzY1KSx2PXttaW5NaWxsaXNlY29uZDpuLm1pbk1pbGxpc2Vjb25kLG1pblNlY29uZDpuLm1pblNlY29uZCxtaW5NaW51dGU6bi5taW5NaW51dGUsbWluSG91cjpuLm1pbkhvdXIsbWluRGF0ZTpuLm1pbkRhdGUsbWluTW9udGg6bi5taW5Nb250aCxtaW5ZZWFyOm4ubWluWWVhcn0sbT17Zmlyc3RWYWw6dixjdXJyZW50TWlsbGlzZWNvbmQ6di5taW5NaWxsaXNlY29uZCxjdXJyZW50U2Vjb25kOnYubWluU2Vjb25kLGN1cnJlbnRNaW51dGU6di5taW5NaW51dGUsY3VycmVudEhvdXI6di5taW5Ib3VyLGN1cnJlbnRNb250aERhdGU6di5taW5EYXRlLGN1cnJlbnREYXRlOnYubWluRGF0ZSxjdXJyZW50TW9udGg6di5taW5Nb250aCxjdXJyZW50WWVhcjp2Lm1pblllYXIsZGF5c1dpZHRoT25YQXhpczpsLGhvdXJzV2lkdGhPblhBeGlzOmgsbWludXRlc1dpZHRoT25YQXhpczpjLHNlY29uZHNXaWR0aE9uWEF4aXM6ZCxudW1iZXJPZlNlY29uZHM6cCxudW1iZXJPZk1pbnV0ZXM6dSxudW1iZXJPZkhvdXJzOmcsbnVtYmVyT2ZEYXlzOmYsbnVtYmVyT2ZNb250aHM6eCxudW1iZXJPZlllYXJzOmJ9O3N3aXRjaCh0aGlzLnRpY2tJbnRlcnZhbCl7Y2FzZVwieWVhcnNcIjp0aGlzLmdlbmVyYXRlWWVhclNjYWxlKG0pO2JyZWFrO2Nhc2VcIm1vbnRoc1wiOmNhc2VcImhhbGZfeWVhclwiOnRoaXMuZ2VuZXJhdGVNb250aFNjYWxlKG0pO2JyZWFrO2Nhc2VcIm1vbnRoc19kYXlzXCI6Y2FzZVwibW9udGhzX2ZvcnRuaWdodFwiOmNhc2VcImRheXNcIjpjYXNlXCJ3ZWVrX2RheXNcIjp0aGlzLmdlbmVyYXRlRGF5U2NhbGUobSk7YnJlYWs7Y2FzZVwiaG91cnNcIjp0aGlzLmdlbmVyYXRlSG91clNjYWxlKG0pO2JyZWFrO2Nhc2VcIm1pbnV0ZXNfZml2ZXNcIjpjYXNlXCJtaW51dGVzXCI6dGhpcy5nZW5lcmF0ZU1pbnV0ZVNjYWxlKG0pO2JyZWFrO2Nhc2VcInNlY29uZHNfdGVuc1wiOmNhc2VcInNlY29uZHNfZml2ZXNcIjpjYXNlXCJzZWNvbmRzXCI6dGhpcy5nZW5lcmF0ZVNlY29uZFNjYWxlKG0pfXZhciB5PXRoaXMudGltZVNjYWxlQXJyYXkubWFwKChmdW5jdGlvbih0KXt2YXIgaT17cG9zaXRpb246dC5wb3NpdGlvbix1bml0OnQudW5pdCx5ZWFyOnQueWVhcixkYXk6dC5kYXk/dC5kYXk6MSxob3VyOnQuaG91cj90LmhvdXI6MCxtb250aDp0Lm1vbnRoKzF9O3JldHVyblwibW9udGhcIj09PXQudW5pdD9lKGUoe30saSkse30se2RheToxLHZhbHVlOnQudmFsdWUrMX0pOlwiZGF5XCI9PT10LnVuaXR8fFwiaG91clwiPT09dC51bml0P2UoZSh7fSxpKSx7fSx7dmFsdWU6dC52YWx1ZX0pOlwibWludXRlXCI9PT10LnVuaXQ/ZShlKHt9LGkpLHt9LHt2YWx1ZTp0LnZhbHVlLG1pbnV0ZTp0LnZhbHVlfSk6XCJzZWNvbmRcIj09PXQudW5pdD9lKGUoe30saSkse30se3ZhbHVlOnQudmFsdWUsbWludXRlOnQubWludXRlLHNlY29uZDp0LnNlY29uZH0pOnR9KSk7cmV0dXJuIHkuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgZT0xLGk9TWF0aC5jZWlsKHMuZ2xvYmFscy5ncmlkV2lkdGgvMTIwKSxyPXQudmFsdWU7dm9pZCAwIT09cy5jb25maWcueGF4aXMudGlja0Ftb3VudCYmKGk9cy5jb25maWcueGF4aXMudGlja0Ftb3VudCkseS5sZW5ndGg+aSYmKGU9TWF0aC5mbG9vcih5Lmxlbmd0aC9pKSk7dmFyIG89ITEsbj0hMTtzd2l0Y2goYS50aWNrSW50ZXJ2YWwpe2Nhc2VcInllYXJzXCI6XCJ5ZWFyXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJoYWxmX3llYXJcIjplPTcsXCJ5ZWFyXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJtb250aHNcIjplPTEsXCJ5ZWFyXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJtb250aHNfZm9ydG5pZ2h0XCI6ZT0xNSxcInllYXJcIiE9PXQudW5pdCYmXCJtb250aFwiIT09dC51bml0fHwobz0hMCksMzA9PT1yJiYobj0hMCk7YnJlYWs7Y2FzZVwibW9udGhzX2RheXNcIjplPTEwLFwibW9udGhcIj09PXQudW5pdCYmKG89ITApLDMwPT09ciYmKG49ITApO2JyZWFrO2Nhc2VcIndlZWtfZGF5c1wiOmU9OCxcIm1vbnRoXCI9PT10LnVuaXQmJihvPSEwKTticmVhaztjYXNlXCJkYXlzXCI6ZT0xLFwibW9udGhcIj09PXQudW5pdCYmKG89ITApO2JyZWFrO2Nhc2VcImhvdXJzXCI6XCJkYXlcIj09PXQudW5pdCYmKG89ITApO2JyZWFrO2Nhc2VcIm1pbnV0ZXNfZml2ZXNcIjpjYXNlXCJzZWNvbmRzX2ZpdmVzXCI6ciU1IT0wJiYobj0hMCk7YnJlYWs7Y2FzZVwic2Vjb25kc190ZW5zXCI6ciUxMCE9MCYmKG49ITApfWlmKFwiaG91cnNcIj09PWEudGlja0ludGVydmFsfHxcIm1pbnV0ZXNfZml2ZXNcIj09PWEudGlja0ludGVydmFsfHxcInNlY29uZHNfdGVuc1wiPT09YS50aWNrSW50ZXJ2YWx8fFwic2Vjb25kc19maXZlc1wiPT09YS50aWNrSW50ZXJ2YWwpe2lmKCFuKXJldHVybiEwfWVsc2UgaWYoKHIlZT09MHx8bykmJiFuKXJldHVybiEwfSkpfX0se2tleTpcInJlY2FsY0RpbWVuc2lvbnNCYXNlZE9uRm9ybWF0XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLncsYT10aGlzLmZvcm1hdERhdGVzKHQpLHM9dGhpcy5yZW1vdmVPdmVybGFwcGluZ1RTKGEpO2kuZ2xvYmFscy50aW1lc2NhbGVMYWJlbHM9cy5zbGljZSgpLG5ldyBvdCh0aGlzLmN0eCkucGxvdENvb3JkcygpfX0se2tleTpcImRldGVybWluZUludGVydmFsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9MjQqdCxpPTYwKmU7c3dpdGNoKCEwKXtjYXNlIHQvMzY1PjU6dGhpcy50aWNrSW50ZXJ2YWw9XCJ5ZWFyc1wiO2JyZWFrO2Nhc2UgdD44MDA6dGhpcy50aWNrSW50ZXJ2YWw9XCJoYWxmX3llYXJcIjticmVhaztjYXNlIHQ+MTgwOnRoaXMudGlja0ludGVydmFsPVwibW9udGhzXCI7YnJlYWs7Y2FzZSB0PjkwOnRoaXMudGlja0ludGVydmFsPVwibW9udGhzX2ZvcnRuaWdodFwiO2JyZWFrO2Nhc2UgdD42MDp0aGlzLnRpY2tJbnRlcnZhbD1cIm1vbnRoc19kYXlzXCI7YnJlYWs7Y2FzZSB0PjMwOnRoaXMudGlja0ludGVydmFsPVwid2Vla19kYXlzXCI7YnJlYWs7Y2FzZSB0PjI6dGhpcy50aWNrSW50ZXJ2YWw9XCJkYXlzXCI7YnJlYWs7Y2FzZSBlPjIuNDp0aGlzLnRpY2tJbnRlcnZhbD1cImhvdXJzXCI7YnJlYWs7Y2FzZSBpPjE1OnRoaXMudGlja0ludGVydmFsPVwibWludXRlc19maXZlc1wiO2JyZWFrO2Nhc2UgaT41OnRoaXMudGlja0ludGVydmFsPVwibWludXRlc1wiO2JyZWFrO2Nhc2UgaT4xOnRoaXMudGlja0ludGVydmFsPVwic2Vjb25kc190ZW5zXCI7YnJlYWs7Y2FzZSA2MCppPjIwOnRoaXMudGlja0ludGVydmFsPVwic2Vjb25kc19maXZlc1wiO2JyZWFrO2RlZmF1bHQ6dGhpcy50aWNrSW50ZXJ2YWw9XCJzZWNvbmRzXCJ9fX0se2tleTpcImdlbmVyYXRlWWVhclNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoLGE9dC5jdXJyZW50WWVhcixzPXQuZGF5c1dpZHRoT25YQXhpcyxyPXQubnVtYmVyT2ZZZWFycyxvPWUubWluWWVhcixuPTAsbD1uZXcgSSh0aGlzLmN0eCksaD1cInllYXJcIjtpZihlLm1pbkRhdGU+MXx8ZS5taW5Nb250aD4wKXt2YXIgYz1sLmRldGVybWluZVJlbWFpbmluZ0RheXNPZlllYXIoZS5taW5ZZWFyLGUubWluTW9udGgsZS5taW5EYXRlKTtuPShsLmRldGVybWluZURheXNPZlllYXIoZS5taW5ZZWFyKS1jKzEpKnMsbz1lLm1pblllYXIrMSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOm4sdmFsdWU6byx1bml0OmgseWVhcjpvLG1vbnRoOngubW9udGhNb2QoaSsxKX0pfWVsc2UgMT09PWUubWluRGF0ZSYmMD09PWUubWluTW9udGgmJnRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bix2YWx1ZTpvLHVuaXQ6aCx5ZWFyOmEsbW9udGg6eC5tb250aE1vZChpKzEpfSk7Zm9yKHZhciBkPW8sZz1uLHU9MDt1PHI7dSsrKWQrKyxnPWwuZGV0ZXJtaW5lRGF5c09mWWVhcihkLTEpKnMrZyx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmcsdmFsdWU6ZCx1bml0OmgseWVhcjpkLG1vbnRoOjF9KX19LHtrZXk6XCJnZW5lcmF0ZU1vbnRoU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmZpcnN0VmFsLGk9dC5jdXJyZW50TW9udGhEYXRlLGE9dC5jdXJyZW50TW9udGgscz10LmN1cnJlbnRZZWFyLHI9dC5kYXlzV2lkdGhPblhBeGlzLG89dC5udW1iZXJPZk1vbnRocyxuPWEsbD0wLGg9bmV3IEkodGhpcy5jdHgpLGM9XCJtb250aFwiLGQ9MDtpZihlLm1pbkRhdGU+MSl7bD0oaC5kZXRlcm1pbmVEYXlzT2ZNb250aHMoYSsxLGUubWluWWVhciktaSsxKSpyLG49eC5tb250aE1vZChhKzEpO3ZhciBnPXMrZCx1PXgubW9udGhNb2QobikscD1uOzA9PT1uJiYoYz1cInllYXJcIixwPWcsdT0xLGcrPWQrPTEpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246bCx2YWx1ZTpwLHVuaXQ6Yyx5ZWFyOmcsbW9udGg6dX0pfWVsc2UgdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpsLHZhbHVlOm4sdW5pdDpjLHllYXI6cyxtb250aDp4Lm1vbnRoTW9kKGEpfSk7Zm9yKHZhciBmPW4rMSxiPWwsdj0wLG09MTt2PG87disrLG0rKyl7MD09PShmPXgubW9udGhNb2QoZikpPyhjPVwieWVhclwiLGQrPTEpOmM9XCJtb250aFwiO3ZhciB5PXRoaXMuX2dldFllYXIocyxmLGQpO2I9aC5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZix5KSpyK2I7dmFyIHc9MD09PWY/eTpmO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Yix2YWx1ZTp3LHVuaXQ6Yyx5ZWFyOnksbW9udGg6MD09PWY/MTpmfSksZisrfX19LHtrZXk6XCJnZW5lcmF0ZURheVNjYWxlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdFZhbCxpPXQuY3VycmVudE1vbnRoLGE9dC5jdXJyZW50WWVhcixzPXQuaG91cnNXaWR0aE9uWEF4aXMscj10Lm51bWJlck9mRGF5cyxvPW5ldyBJKHRoaXMuY3R4KSxuPVwiZGF5XCIsbD1lLm1pbkRhdGUrMSxoPWwsYz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQ+by5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZSsxLGkpPyhoPTEsbj1cIm1vbnRoXCIsZz1lKz0xLGUpOmV9LGQ9KDI0LWUubWluSG91cikqcyxnPWwsdT1jKGgsaSxhKTswPT09ZS5taW5Ib3VyJiYxPT09ZS5taW5EYXRlPyhkPTAsZz14Lm1vbnRoTW9kKGUubWluTW9udGgpLG49XCJtb250aFwiLGg9ZS5taW5EYXRlKToxIT09ZS5taW5EYXRlJiYwPT09ZS5taW5Ib3VyJiYwPT09ZS5taW5NaW51dGUmJihkPTAsbD1lLm1pbkRhdGUsZz1sLHU9YyhoPWwsaSxhKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpkLHZhbHVlOmcsdW5pdDpuLHllYXI6dGhpcy5fZ2V0WWVhcihhLHUsMCksbW9udGg6eC5tb250aE1vZCh1KSxkYXk6aH0pO2Zvcih2YXIgcD1kLGY9MDtmPHI7ZisrKXtuPVwiZGF5XCIsdT1jKGgrPTEsdSx0aGlzLl9nZXRZZWFyKGEsdSwwKSk7dmFyIGI9dGhpcy5fZ2V0WWVhcihhLHUsMCk7cD0yNCpzK3A7dmFyIHY9MT09PWg/eC5tb250aE1vZCh1KTpoO3RoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246cCx2YWx1ZTp2LHVuaXQ6bix5ZWFyOmIsbW9udGg6eC5tb250aE1vZCh1KSxkYXk6dn0pfX19LHtrZXk6XCJnZW5lcmF0ZUhvdXJTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlyc3RWYWwsaT10LmN1cnJlbnREYXRlLGE9dC5jdXJyZW50TW9udGgscz10LmN1cnJlbnRZZWFyLHI9dC5taW51dGVzV2lkdGhPblhBeGlzLG89dC5udW1iZXJPZkhvdXJzLG49bmV3IEkodGhpcy5jdHgpLGw9XCJob3VyXCIsaD1mdW5jdGlvbih0LGUpe3JldHVybiB0Pm4uZGV0ZXJtaW5lRGF5c09mTW9udGhzKGUrMSxzKSYmKGY9MSxlKz0xKSx7bW9udGg6ZSxkYXRlOmZ9fSxjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+bi5kZXRlcm1pbmVEYXlzT2ZNb250aHMoZSsxLHMpP2UrPTE6ZX0sZD02MC0oZS5taW5NaW51dGUrZS5taW5TZWNvbmQvNjApLGc9ZCpyLHU9ZS5taW5Ib3VyKzEscD11OzYwPT09ZCYmKGc9MCxwPSh1PWUubWluSG91cikrMSk7dmFyIGY9aTtwPj0yNCYmKHA9MCxmKz0xLGw9XCJkYXlcIik7dmFyIGI9aChmLGEpLm1vbnRoO2I9YyhmLGIpLHRoaXMudGltZVNjYWxlQXJyYXkucHVzaCh7cG9zaXRpb246Zyx2YWx1ZTp1LHVuaXQ6bCxkYXk6Zixob3VyOnAseWVhcjpzLG1vbnRoOngubW9udGhNb2QoYil9KSxwKys7Zm9yKHZhciB2PWcsbT0wO208bzttKyspe2lmKGw9XCJob3VyXCIscD49MjQpcD0wLGw9XCJkYXlcIixiPWgoZis9MSxiKS5tb250aCxiPWMoZixiKTt2YXIgeT10aGlzLl9nZXRZZWFyKHMsYiwwKTt2PTYwKnIrdjt2YXIgdz0wPT09cD9mOnA7dGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjp2LHZhbHVlOncsdW5pdDpsLGhvdXI6cCxkYXk6Zix5ZWFyOnksbW9udGg6eC5tb250aE1vZChiKX0pLHArK319fSx7a2V5OlwiZ2VuZXJhdGVNaW51dGVTY2FsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmN1cnJlbnRNaWxsaXNlY29uZCxpPXQuY3VycmVudFNlY29uZCxhPXQuY3VycmVudE1pbnV0ZSxzPXQuY3VycmVudEhvdXIscj10LmN1cnJlbnREYXRlLG89dC5jdXJyZW50TW9udGgsbj10LmN1cnJlbnRZZWFyLGw9dC5taW51dGVzV2lkdGhPblhBeGlzLGg9dC5zZWNvbmRzV2lkdGhPblhBeGlzLGM9dC5udW1iZXJPZk1pbnV0ZXMsZD1hKzEsZz1yLHU9byxwPW4sZj1zLGI9KDYwLWktZS8xZTMpKmgsdj0wO3Y8Yzt2KyspZD49NjAmJihkPTAsMjQ9PT0oZis9MSkmJihmPTApKSx0aGlzLnRpbWVTY2FsZUFycmF5LnB1c2goe3Bvc2l0aW9uOmIsdmFsdWU6ZCx1bml0OlwibWludXRlXCIsaG91cjpmLG1pbnV0ZTpkLGRheTpnLHllYXI6dGhpcy5fZ2V0WWVhcihwLHUsMCksbW9udGg6eC5tb250aE1vZCh1KX0pLGIrPWwsZCsrfX0se2tleTpcImdlbmVyYXRlU2Vjb25kU2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5jdXJyZW50TWlsbGlzZWNvbmQsaT10LmN1cnJlbnRTZWNvbmQsYT10LmN1cnJlbnRNaW51dGUscz10LmN1cnJlbnRIb3VyLHI9dC5jdXJyZW50RGF0ZSxvPXQuY3VycmVudE1vbnRoLG49dC5jdXJyZW50WWVhcixsPXQuc2Vjb25kc1dpZHRoT25YQXhpcyxoPXQubnVtYmVyT2ZTZWNvbmRzLGM9aSsxLGQ9YSxnPXIsdT1vLHA9bixmPXMsYj0oMWUzLWUpLzFlMypsLHY9MDt2PGg7disrKWM+PTYwJiYoYz0wLCsrZD49NjAmJihkPTAsMjQ9PT0rK2YmJihmPTApKSksdGhpcy50aW1lU2NhbGVBcnJheS5wdXNoKHtwb3NpdGlvbjpiLHZhbHVlOmMsdW5pdDpcInNlY29uZFwiLGhvdXI6ZixtaW51dGU6ZCxzZWNvbmQ6YyxkYXk6Zyx5ZWFyOnRoaXMuX2dldFllYXIocCx1LDApLG1vbnRoOngubW9udGhNb2QodSl9KSxiKz1sLGMrK319LHtrZXk6XCJjcmVhdGVSYXdEYXRlU3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10LnllYXI7cmV0dXJuIDA9PT10Lm1vbnRoJiYodC5tb250aD0xKSxpKz1cIi1cIisoXCIwXCIrdC5tb250aC50b1N0cmluZygpKS5zbGljZSgtMiksXCJkYXlcIj09PXQudW5pdD9pKz1cImRheVwiPT09dC51bml0P1wiLVwiKyhcIjBcIitlKS5zbGljZSgtMik6XCItMDFcIjppKz1cIi1cIisoXCIwXCIrKHQuZGF5P3QuZGF5OlwiMVwiKSkuc2xpY2UoLTIpLFwiaG91clwiPT09dC51bml0P2krPVwiaG91clwiPT09dC51bml0P1wiVFwiKyhcIjBcIitlKS5zbGljZSgtMik6XCJUMDBcIjppKz1cIlRcIisoXCIwXCIrKHQuaG91cj90LmhvdXI6XCIwXCIpKS5zbGljZSgtMiksXCJtaW51dGVcIj09PXQudW5pdD9pKz1cIjpcIisoXCIwXCIrZSkuc2xpY2UoLTIpOmkrPVwiOlwiKyh0Lm1pbnV0ZT8oXCIwXCIrdC5taW51dGUpLnNsaWNlKC0yKTpcIjAwXCIpLFwic2Vjb25kXCI9PT10LnVuaXQ/aSs9XCI6XCIrKFwiMFwiK2UpLnNsaWNlKC0yKTppKz1cIjowMFwiLHRoaXMudXRjJiYoaSs9XCIuMDAwWlwiKSxpfX0se2tleTpcImZvcm1hdERhdGVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudztyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBhPXQudmFsdWUudG9TdHJpbmcoKSxzPW5ldyBJKGUuY3R4KSxyPWUuY3JlYXRlUmF3RGF0ZVN0cmluZyh0LGEpLG89cy5nZXREYXRlKHMucGFyc2VEYXRlKHIpKTtpZihlLnV0Y3x8KG89cy5nZXREYXRlKHMucGFyc2VEYXRlV2l0aFRpbWV6b25lKHIpKSksdm9pZCAwPT09aS5jb25maWcueGF4aXMubGFiZWxzLmZvcm1hdCl7dmFyIG49XCJkZCBNTU1cIixsPWkuY29uZmlnLnhheGlzLmxhYmVscy5kYXRldGltZUZvcm1hdHRlcjtcInllYXJcIj09PXQudW5pdCYmKG49bC55ZWFyKSxcIm1vbnRoXCI9PT10LnVuaXQmJihuPWwubW9udGgpLFwiZGF5XCI9PT10LnVuaXQmJihuPWwuZGF5KSxcImhvdXJcIj09PXQudW5pdCYmKG49bC5ob3VyKSxcIm1pbnV0ZVwiPT09dC51bml0JiYobj1sLm1pbnV0ZSksXCJzZWNvbmRcIj09PXQudW5pdCYmKG49bC5zZWNvbmQpLGE9cy5mb3JtYXREYXRlKG8sbil9ZWxzZSBhPXMuZm9ybWF0RGF0ZShvLGkuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXQpO3JldHVybntkYXRlU3RyaW5nOnIscG9zaXRpb246dC5wb3NpdGlvbix2YWx1ZTphLHVuaXQ6dC51bml0LHllYXI6dC55ZWFyLG1vbnRoOnQubW9udGh9fSkpfX0se2tleTpcInJlbW92ZU92ZXJsYXBwaW5nVFNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMsYT1uZXcgbSh0aGlzLmN0eCkscz0hMTt0Lmxlbmd0aD4wJiZ0WzBdLnZhbHVlJiZ0LmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZS5sZW5ndGg9PT10WzBdLnZhbHVlLmxlbmd0aH0pKSYmKHM9ITAsZT1hLmdldFRleHRSZWN0cyh0WzBdLnZhbHVlKS53aWR0aCk7dmFyIHI9MCxvPXQubWFwKChmdW5jdGlvbihvLG4pe2lmKG4+MCYmaS53LmNvbmZpZy54YXhpcy5sYWJlbHMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzKXt2YXIgbD1zP2U6YS5nZXRUZXh0UmVjdHModFtyXS52YWx1ZSkud2lkdGgsaD10W3JdLnBvc2l0aW9uO3JldHVybiBvLnBvc2l0aW9uPmgrbCsxMD8ocj1uLG8pOm51bGx9cmV0dXJuIG99KSk7cmV0dXJuIG89by5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dH0pKX19LHtrZXk6XCJfZ2V0WWVhclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdCtNYXRoLmZsb29yKGUvMTIpK2l9fV0pLHR9KCksV3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMuY3R4PWksdGhpcy53PWkudyx0aGlzLmVsPWV9cmV0dXJuIHIodCxbe2tleTpcInNldHVwRWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZyxpPWUuY2hhcnQudHlwZTt0LmF4aXNDaGFydHM9W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwic2NhdHRlclwiLFwiYnViYmxlXCIsXCJyYWRhclwiLFwiaGVhdG1hcFwiLFwidHJlZW1hcFwiXS5pbmRleE9mKGkpPi0xLHQueHlDaGFydHM9W1wibGluZVwiLFwiYXJlYVwiLFwiYmFyXCIsXCJyYW5nZUJhclwiLFwicmFuZ2VBcmVhXCIsXCJjYW5kbGVzdGlja1wiLFwiYm94UGxvdFwiLFwic2NhdHRlclwiLFwiYnViYmxlXCJdLmluZGV4T2YoaSk+LTEsdC5pc0Jhckhvcml6b250YWw9KFwiYmFyXCI9PT1lLmNoYXJ0LnR5cGV8fFwicmFuZ2VCYXJcIj09PWUuY2hhcnQudHlwZXx8XCJib3hQbG90XCI9PT1lLmNoYXJ0LnR5cGUpJiZlLnBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsLHQuY2hhcnRDbGFzcz1cIi5hcGV4Y2hhcnRzXCIrdC5jaGFydElELHQuZG9tLmJhc2VFbD10aGlzLmVsLHQuZG9tLmVsV3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLG0uc2V0QXR0cnModC5kb20uZWxXcmFwLHtpZDp0LmNoYXJ0Q2xhc3Muc3Vic3RyaW5nKDEpLGNsYXNzOlwiYXBleGNoYXJ0cy1jYW52YXMgXCIrdC5jaGFydENsYXNzLnN1YnN0cmluZygxKX0pLHRoaXMuZWwuYXBwZW5kQ2hpbGQodC5kb20uZWxXcmFwKSx0LmRvbS5QYXBlcj1uZXcgd2luZG93LlNWRy5Eb2ModC5kb20uZWxXcmFwKSx0LmRvbS5QYXBlci5hdHRyKHtjbGFzczpcImFwZXhjaGFydHMtc3ZnXCIsXCJ4bWxuczpkYXRhXCI6XCJBcGV4Q2hhcnRzTlNcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIuY29uY2F0KGUuY2hhcnQub2Zmc2V0WCxcIiwgXCIpLmNvbmNhdChlLmNoYXJ0Lm9mZnNldFksXCIpXCIpfSksdC5kb20uUGFwZXIubm9kZS5zdHlsZS5iYWNrZ3JvdW5kPVwiZGFya1wiIT09ZS50aGVtZS5tb2RlfHxlLmNoYXJ0LmJhY2tncm91bmQ/ZS5jaGFydC5iYWNrZ3JvdW5kOlwicmdiYSgwLCAwLCAwLCAwLjgpXCIsdGhpcy5zZXRTVkdEaW1lbnNpb25zKCksdC5kb20uZWxMZWdlbmRGb3JlaWduPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LlNWR05TLFwiZm9yZWlnbk9iamVjdFwiKSxtLnNldEF0dHJzKHQuZG9tLmVsTGVnZW5kRm9yZWlnbix7eDowLHk6MCx3aWR0aDp0LnN2Z1dpZHRoLGhlaWdodDp0LnN2Z0hlaWdodH0pLHQuZG9tLmVsTGVnZW5kV3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHQuZG9tLmVsTGVnZW5kV3JhcC5jbGFzc0xpc3QuYWRkKFwiYXBleGNoYXJ0cy1sZWdlbmRcIiksdC5kb20uZWxMZWdlbmRXcmFwLnNldEF0dHJpYnV0ZShcInhtbG5zXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpLHQuZG9tLmVsTGVnZW5kRm9yZWlnbi5hcHBlbmRDaGlsZCh0LmRvbS5lbExlZ2VuZFdyYXApLHQuZG9tLlBhcGVyLm5vZGUuYXBwZW5kQ2hpbGQodC5kb20uZWxMZWdlbmRGb3JlaWduKSx0LmRvbS5lbEdyYXBoaWNhbD10LmRvbS5QYXBlci5ncm91cCgpLmF0dHIoe2NsYXNzOlwiYXBleGNoYXJ0cy1pbm5lciBhcGV4Y2hhcnRzLWdyYXBoaWNhbFwifSksdC5kb20uZWxEZWZzPXQuZG9tLlBhcGVyLmRlZnMoKSx0LmRvbS5QYXBlci5hZGQodC5kb20uZWxHcmFwaGljYWwpLHQuZG9tLmVsR3JhcGhpY2FsLmFkZCh0LmRvbS5lbERlZnMpfX0se2tleTpcInBsb3RDaGFydFR5cGVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMudyxhPWkuY29uZmlnLHM9aS5nbG9iYWxzLHI9e3NlcmllczpbXSxpOltdfSxvPXtzZXJpZXM6W10saTpbXX0sbj17c2VyaWVzOltdLGk6W119LGw9e3NlcmllczpbXSxpOltdfSxoPXtzZXJpZXM6W10saTpbXX0sYz17c2VyaWVzOltdLGk6W119LGQ9e3NlcmllczpbXSxpOltdfSxnPXtzZXJpZXM6W10saTpbXX0sdT17c2VyaWVzOltdLHNlcmllc1JhbmdlRW5kOltdLGk6W119O3Muc2VyaWVzLm1hcCgoZnVuY3Rpb24oZSxwKXt2YXIgZj0wO3ZvaWQgMCE9PXRbcF0udHlwZT8oXCJjb2x1bW5cIj09PXRbcF0udHlwZXx8XCJiYXJcIj09PXRbcF0udHlwZT8ocy5zZXJpZXMubGVuZ3RoPjEmJmEucGxvdE9wdGlvbnMuYmFyLmhvcml6b250YWwmJmNvbnNvbGUud2FybihcIkhvcml6b250YWwgYmFycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBhIG1peGVkL2NvbWJvIGNoYXJ0LiBQbGVhc2UgdHVybiBvZmYgYHBsb3RPcHRpb25zLmJhci5ob3Jpem9udGFsYFwiKSxoLnNlcmllcy5wdXNoKGUpLGguaS5wdXNoKHApLGYrKyxpLmdsb2JhbHMuY29sdW1uU2VyaWVzPWguc2VyaWVzKTpcImFyZWFcIj09PXRbcF0udHlwZT8oby5zZXJpZXMucHVzaChlKSxvLmkucHVzaChwKSxmKyspOlwibGluZVwiPT09dFtwXS50eXBlPyhyLnNlcmllcy5wdXNoKGUpLHIuaS5wdXNoKHApLGYrKyk6XCJzY2F0dGVyXCI9PT10W3BdLnR5cGU/KG4uc2VyaWVzLnB1c2goZSksbi5pLnB1c2gocCkpOlwiYnViYmxlXCI9PT10W3BdLnR5cGU/KGwuc2VyaWVzLnB1c2goZSksbC5pLnB1c2gocCksZisrKTpcImNhbmRsZXN0aWNrXCI9PT10W3BdLnR5cGU/KGMuc2VyaWVzLnB1c2goZSksYy5pLnB1c2gocCksZisrKTpcImJveFBsb3RcIj09PXRbcF0udHlwZT8oZC5zZXJpZXMucHVzaChlKSxkLmkucHVzaChwKSxmKyspOlwicmFuZ2VCYXJcIj09PXRbcF0udHlwZT8oZy5zZXJpZXMucHVzaChlKSxnLmkucHVzaChwKSxmKyspOlwicmFuZ2VBcmVhXCI9PT10W3BdLnR5cGU/KHUuc2VyaWVzLnB1c2gocy5zZXJpZXNSYW5nZVN0YXJ0W3BdKSx1LnNlcmllc1JhbmdlRW5kLnB1c2gocy5zZXJpZXNSYW5nZUVuZFtwXSksdS5pLnB1c2gocCksZisrKTpjb25zb2xlLndhcm4oXCJZb3UgaGF2ZSBzcGVjaWZpZWQgYW4gdW5yZWNvZ25pemVkIGNoYXJ0IHR5cGUuIEF2YWlsYWJsZSB0eXBlcyBmb3IgdGhpcyBwcm9wZXJ0eSBhcmUgbGluZS9hcmVhL2NvbHVtbi9iYXIvc2NhdHRlci9idWJibGUvY2FuZGxlc3RpY2svYm94UGxvdC9yYW5nZUJhci9yYW5nZUFyZWFcIiksZj4xJiYocy5jb21ib0NoYXJ0cz0hMCkpOihyLnNlcmllcy5wdXNoKGUpLHIuaS5wdXNoKHApKX0pKTt2YXIgcD1uZXcgRnQodGhpcy5jdHgsZSksZj1uZXcga3QodGhpcy5jdHgsZSk7dGhpcy5jdHgucGllPW5ldyBMdCh0aGlzLmN0eCk7dmFyIHg9bmV3IEl0KHRoaXMuY3R4KTt0aGlzLmN0eC5yYW5nZUJhcj1uZXcgTXQodGhpcy5jdHgsZSk7dmFyIGI9bmV3IFB0KHRoaXMuY3R4KSx2PVtdO2lmKHMuY29tYm9DaGFydHMpe2lmKG8uc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2gocC5kcmF3KG8uc2VyaWVzLFwiYXJlYVwiLG8uaSkpLGguc2VyaWVzLmxlbmd0aD4wKWlmKGkuY29uZmlnLmNoYXJ0LnN0YWNrZWQpe3ZhciBtPW5ldyB3dCh0aGlzLmN0eCxlKTt2LnB1c2gobS5kcmF3KGguc2VyaWVzLGguaSkpfWVsc2UgdGhpcy5jdHguYmFyPW5ldyB5dCh0aGlzLmN0eCxlKSx2LnB1c2godGhpcy5jdHguYmFyLmRyYXcoaC5zZXJpZXMsaC5pKSk7aWYodS5zZXJpZXMubGVuZ3RoPjAmJnYucHVzaChwLmRyYXcodS5zZXJpZXMsXCJyYW5nZUFyZWFcIix1LmksdS5zZXJpZXNSYW5nZUVuZCkpLHIuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2gocC5kcmF3KHIuc2VyaWVzLFwibGluZVwiLHIuaSkpLGMuc2VyaWVzLmxlbmd0aD4wJiZ2LnB1c2goZi5kcmF3KGMuc2VyaWVzLFwiY2FuZGxlc3RpY2tcIixjLmkpKSxkLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKGYuZHJhdyhkLnNlcmllcyxcImJveFBsb3RcIixkLmkpKSxnLnNlcmllcy5sZW5ndGg+MCYmdi5wdXNoKHRoaXMuY3R4LnJhbmdlQmFyLmRyYXcoZy5zZXJpZXMsZy5pKSksbi5zZXJpZXMubGVuZ3RoPjApe3ZhciB5PW5ldyBGdCh0aGlzLmN0eCxlLCEwKTt2LnB1c2goeS5kcmF3KG4uc2VyaWVzLFwic2NhdHRlclwiLG4uaSkpfWlmKGwuc2VyaWVzLmxlbmd0aD4wKXt2YXIgdz1uZXcgRnQodGhpcy5jdHgsZSwhMCk7di5wdXNoKHcuZHJhdyhsLnNlcmllcyxcImJ1YmJsZVwiLGwuaSkpfX1lbHNlIHN3aXRjaChhLmNoYXJ0LnR5cGUpe2Nhc2VcImxpbmVcIjp2PXAuZHJhdyhzLnNlcmllcyxcImxpbmVcIik7YnJlYWs7Y2FzZVwiYXJlYVwiOnY9cC5kcmF3KHMuc2VyaWVzLFwiYXJlYVwiKTticmVhaztjYXNlXCJiYXJcIjppZihhLmNoYXJ0LnN0YWNrZWQpdj1uZXcgd3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyk7ZWxzZSB0aGlzLmN0eC5iYXI9bmV3IHl0KHRoaXMuY3R4LGUpLHY9dGhpcy5jdHguYmFyLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcImNhbmRsZXN0aWNrXCI6dj1uZXcga3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyxcImNhbmRsZXN0aWNrXCIpO2JyZWFrO2Nhc2VcImJveFBsb3RcIjp2PW5ldyBrdCh0aGlzLmN0eCxlKS5kcmF3KHMuc2VyaWVzLGEuY2hhcnQudHlwZSk7YnJlYWs7Y2FzZVwicmFuZ2VCYXJcIjp2PXRoaXMuY3R4LnJhbmdlQmFyLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhbmdlQXJlYVwiOnY9cC5kcmF3KHMuc2VyaWVzUmFuZ2VTdGFydCxcInJhbmdlQXJlYVwiLHZvaWQgMCxzLnNlcmllc1JhbmdlRW5kKTticmVhaztjYXNlXCJoZWF0bWFwXCI6dj1uZXcgU3QodGhpcy5jdHgsZSkuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwidHJlZW1hcFwiOnY9bmV3IER0KHRoaXMuY3R4LGUpLmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInBpZVwiOmNhc2VcImRvbnV0XCI6Y2FzZVwicG9sYXJBcmVhXCI6dj10aGlzLmN0eC5waWUuZHJhdyhzLnNlcmllcyk7YnJlYWs7Y2FzZVwicmFkaWFsQmFyXCI6dj14LmRyYXcocy5zZXJpZXMpO2JyZWFrO2Nhc2VcInJhZGFyXCI6dj1iLmRyYXcocy5zZXJpZXMpO2JyZWFrO2RlZmF1bHQ6dj1wLmRyYXcocy5zZXJpZXMpfXJldHVybiB2fX0se2tleTpcInNldFNWR0RpbWVuc2lvbnNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudy5nbG9iYWxzLGU9dGhpcy53LmNvbmZpZzt0LnN2Z1dpZHRoPWUuY2hhcnQud2lkdGgsdC5zdmdIZWlnaHQ9ZS5jaGFydC5oZWlnaHQ7dmFyIGk9eC5nZXREaW1lbnNpb25zKHRoaXMuZWwpLGE9ZS5jaGFydC53aWR0aC50b1N0cmluZygpLnNwbGl0KC9bMC05XSsvZykucG9wKCk7XCIlXCI9PT1hP3guaXNOdW1iZXIoaVswXSkmJigwPT09aVswXS53aWR0aCYmKGk9eC5nZXREaW1lbnNpb25zKHRoaXMuZWwucGFyZW50Tm9kZSkpLHQuc3ZnV2lkdGg9aVswXSpwYXJzZUludChlLmNoYXJ0LndpZHRoLDEwKS8xMDApOlwicHhcIiE9PWEmJlwiXCIhPT1hfHwodC5zdmdXaWR0aD1wYXJzZUludChlLmNoYXJ0LndpZHRoLDEwKSk7dmFyIHM9ZS5jaGFydC5oZWlnaHQudG9TdHJpbmcoKS5zcGxpdCgvWzAtOV0rL2cpLnBvcCgpO2lmKFwiYXV0b1wiIT09dC5zdmdIZWlnaHQmJlwiXCIhPT10LnN2Z0hlaWdodClpZihcIiVcIj09PXMpe3ZhciByPXguZ2V0RGltZW5zaW9ucyh0aGlzLmVsLnBhcmVudE5vZGUpO3Quc3ZnSGVpZ2h0PXJbMV0qcGFyc2VJbnQoZS5jaGFydC5oZWlnaHQsMTApLzEwMH1lbHNlIHQuc3ZnSGVpZ2h0PXBhcnNlSW50KGUuY2hhcnQuaGVpZ2h0LDEwKTtlbHNlIHQuYXhpc0NoYXJ0cz90LnN2Z0hlaWdodD10LnN2Z1dpZHRoLzEuNjE6dC5zdmdIZWlnaHQ9dC5zdmdXaWR0aC8xLjI7aWYodC5zdmdXaWR0aDwwJiYodC5zdmdXaWR0aD0wKSx0LnN2Z0hlaWdodDwwJiYodC5zdmdIZWlnaHQ9MCksbS5zZXRBdHRycyh0LmRvbS5QYXBlci5ub2RlLHt3aWR0aDp0LnN2Z1dpZHRoLGhlaWdodDp0LnN2Z0hlaWdodH0pLFwiJVwiIT09cyl7dmFyIG89ZS5jaGFydC5zcGFya2xpbmUuZW5hYmxlZD8wOnQuYXhpc0NoYXJ0cz9lLmNoYXJ0LnBhcmVudEhlaWdodE9mZnNldDowO3QuZG9tLlBhcGVyLm5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLm1pbkhlaWdodD10LnN2Z0hlaWdodCtvK1wicHhcIn10LmRvbS5lbFdyYXAuc3R5bGUud2lkdGg9dC5zdmdXaWR0aCtcInB4XCIsdC5kb20uZWxXcmFwLnN0eWxlLmhlaWdodD10LnN2Z0hlaWdodCtcInB4XCJ9fSx7a2V5Olwic2hpZnRHcmFwaFBvc2l0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLncuZ2xvYmFscyxlPXQudHJhbnNsYXRlWSxpPXt0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoXCIrdC50cmFuc2xhdGVYK1wiLCBcIitlK1wiKVwifTttLnNldEF0dHJzKHQuZG9tLmVsR3JhcGhpY2FsLm5vZGUsaSl9fSx7a2V5OlwicmVzaXplTm9uQXhpc0NoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LGU9dC5nbG9iYWxzLGk9MCxhPXQuY29uZmlnLmNoYXJ0LnNwYXJrbGluZS5lbmFibGVkPzE6MTU7YSs9dC5jb25maWcuZ3JpZC5wYWRkaW5nLmJvdHRvbSxcInRvcFwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9uJiZcImJvdHRvbVwiIT09dC5jb25maWcubGVnZW5kLnBvc2l0aW9ufHwhdC5jb25maWcubGVnZW5kLnNob3d8fHQuY29uZmlnLmxlZ2VuZC5mbG9hdGluZ3x8KGk9bmV3IGx0KHRoaXMuY3R4KS5sZWdlbmRIZWxwZXJzLmdldExlZ2VuZEJCb3goKS5jbHdoKzEwKTt2YXIgcz10Lmdsb2JhbHMuZG9tLmJhc2VFbC5xdWVyeVNlbGVjdG9yKFwiLmFwZXhjaGFydHMtcmFkaWFsYmFyLCAuYXBleGNoYXJ0cy1waWVcIikscj0yLjA1KnQuZ2xvYmFscy5yYWRpYWxTaXplO2lmKHMmJiF0LmNvbmZpZy5jaGFydC5zcGFya2xpbmUuZW5hYmxlZCYmMCE9PXQuY29uZmlnLnBsb3RPcHRpb25zLnJhZGlhbEJhci5zdGFydEFuZ2xlKXt2YXIgbz14LmdldEJvdW5kaW5nQ2xpZW50UmVjdChzKTtyPW8uYm90dG9tO3ZhciBuPW8uYm90dG9tLW8udG9wO3I9TWF0aC5tYXgoMi4wNSp0Lmdsb2JhbHMucmFkaWFsU2l6ZSxuKX12YXIgbD1yK2UudHJhbnNsYXRlWStpK2E7ZS5kb20uZWxMZWdlbmRGb3JlaWduJiZlLmRvbS5lbExlZ2VuZEZvcmVpZ24uc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsbCksdC5jb25maWcuY2hhcnQuaGVpZ2h0JiZTdHJpbmcodC5jb25maWcuY2hhcnQuaGVpZ2h0KS5pbmRleE9mKFwiJVwiKT4wfHwoZS5kb20uZWxXcmFwLnN0eWxlLmhlaWdodD1sK1wicHhcIixtLnNldEF0dHJzKGUuZG9tLlBhcGVyLm5vZGUse2hlaWdodDpsfSksZS5kb20uUGFwZXIubm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0PWwrXCJweFwiKX19LHtrZXk6XCJjb3JlQ2FsY3VsYXRpb25zXCIsdmFsdWU6ZnVuY3Rpb24oKXtuZXcgVSh0aGlzLmN0eCkuaW5pdCgpfX0se2tleTpcInJlc2V0R2xvYmFsc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWZ1bmN0aW9uKCl7cmV0dXJuIHQudy5jb25maWcuc2VyaWVzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuW119KSl9LGk9bmV3IFksYT10aGlzLncuZ2xvYmFscztpLmluaXRHbG9iYWxWYXJzKGEpLGEuc2VyaWVzWHZhbHVlcz1lKCksYS5zZXJpZXNZdmFsdWVzPWUoKX19LHtrZXk6XCJpc011bHRpcGxlWVwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYodGhpcy53LmNvbmZpZy55YXhpcy5jb25zdHJ1Y3Rvcj09PUFycmF5JiZ0aGlzLncuY29uZmlnLnlheGlzLmxlbmd0aD4xKXJldHVybiB0aGlzLncuZ2xvYmFscy5pc011bHRpcGxlWUF4aXM9ITAsITB9fSx7a2V5OlwieHlTZXR0aW5nc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bnVsbCxlPXRoaXMudztpZihlLmdsb2JhbHMuYXhpc0NoYXJ0cyl7aWYoXCJiYWNrXCI9PT1lLmNvbmZpZy54YXhpcy5jcm9zc2hhaXJzLnBvc2l0aW9uKW5ldyBRKHRoaXMuY3R4KS5kcmF3WENyb3NzaGFpcnMoKTtpZihcImJhY2tcIj09PWUuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMucG9zaXRpb24pbmV3IFEodGhpcy5jdHgpLmRyYXdZQ3Jvc3NoYWlycygpO2lmKFwiZGF0ZXRpbWVcIj09PWUuY29uZmlnLnhheGlzLnR5cGUmJnZvaWQgMD09PWUuY29uZmlnLnhheGlzLmxhYmVscy5mb3JtYXR0ZXIpe3RoaXMuY3R4LnRpbWVTY2FsZT1uZXcgTnQodGhpcy5jdHgpO3ZhciBpPVtdO2lzRmluaXRlKGUuZ2xvYmFscy5taW5YKSYmaXNGaW5pdGUoZS5nbG9iYWxzLm1heFgpJiYhZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbD9pPXRoaXMuY3R4LnRpbWVTY2FsZS5jYWxjdWxhdGVUaW1lU2NhbGVUaWNrcyhlLmdsb2JhbHMubWluWCxlLmdsb2JhbHMubWF4WCk6ZS5nbG9iYWxzLmlzQmFySG9yaXpvbnRhbCYmKGk9dGhpcy5jdHgudGltZVNjYWxlLmNhbGN1bGF0ZVRpbWVTY2FsZVRpY2tzKGUuZ2xvYmFscy5taW5ZLGUuZ2xvYmFscy5tYXhZKSksdGhpcy5jdHgudGltZVNjYWxlLnJlY2FsY0RpbWVuc2lvbnNCYXNlZE9uRm9ybWF0KGkpfXQ9bmV3IHkodGhpcy5jdHgpLmdldENhbGN1bGF0ZWRSYXRpb3MoKX1yZXR1cm4gdH19LHtrZXk6XCJ1cGRhdGVTb3VyY2VDaGFydFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY3R4LncuZ2xvYmFscy5zZWxlY3Rpb249dm9pZCAwLHRoaXMuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoe2NoYXJ0OntzZWxlY3Rpb246e3hheGlzOnttaW46dC53Lmdsb2JhbHMubWluWCxtYXg6dC53Lmdsb2JhbHMubWF4WH19fX0sITEsITEpfX0se2tleTpcInNldHVwQnJ1c2hIYW5kbGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dGhpcy53O2lmKGkuY29uZmlnLmNoYXJ0LmJydXNoLmVuYWJsZWQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuY29uZmlnLmNoYXJ0LmV2ZW50cy5zZWxlY3Rpb24pe3ZhciBhPUFycmF5LmlzQXJyYXkoaS5jb25maWcuY2hhcnQuYnJ1c2gudGFyZ2V0cyl8fFtpLmNvbmZpZy5jaGFydC5icnVzaC50YXJnZXRdO2EuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9QXBleENoYXJ0cy5nZXRDaGFydEJ5SUQoZSk7aS53Lmdsb2JhbHMuYnJ1c2hTb3VyY2U9dC5jdHgsXCJmdW5jdGlvblwiIT10eXBlb2YgaS53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkJiYoaS53LmNvbmZpZy5jaGFydC5ldmVudHMuem9vbWVkPWZ1bmN0aW9uKCl7dC51cGRhdGVTb3VyY2VDaGFydChpKX0pLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkudy5jb25maWcuY2hhcnQuZXZlbnRzLnNjcm9sbGVkJiYoaS53LmNvbmZpZy5jaGFydC5ldmVudHMuc2Nyb2xsZWQ9ZnVuY3Rpb24oKXt0LnVwZGF0ZVNvdXJjZUNoYXJ0KGkpfSl9KSksaS5jb25maWcuY2hhcnQuZXZlbnRzLnNlbGVjdGlvbj1mdW5jdGlvbih0LHMpe2EuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGE9QXBleENoYXJ0cy5nZXRDaGFydEJ5SUQodCkscj14LmNsb25lKGkuY29uZmlnLnlheGlzKTtpZihpLmNvbmZpZy5jaGFydC5icnVzaC5hdXRvU2NhbGVZYXhpcyYmMT09PWEudy5nbG9iYWxzLnNlcmllcy5sZW5ndGgpe3ZhciBvPW5ldyBfKGEpO3I9by5hdXRvU2NhbGVZKGEscixzKX12YXIgbj1hLncuY29uZmlnLnlheGlzLnJlZHVjZSgoZnVuY3Rpb24odCxpLHMpe3JldHVybltdLmNvbmNhdCh1KHQpLFtlKGUoe30sYS53LmNvbmZpZy55YXhpc1tzXSkse30se21pbjpyWzBdLm1pbixtYXg6clswXS5tYXh9KV0pfSksW10pO2EuY3R4LnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZU9wdGlvbnMoe3hheGlzOnttaW46cy54YXhpcy5taW4sbWF4OnMueGF4aXMubWF4fSx5YXhpczpufSwhMSwhMSwhMSwhMSl9KSl9fX19XSksdH0oKSxCdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiX3VwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxzPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scj0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLG89YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0mJmFyZ3VtZW50c1s0XTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4pe3ZhciBsPVtlLmN0eF07ciYmKGw9ZS5jdHguZ2V0U3luY2VkQ2hhcnRzKCkpLGUuY3R4LncuZ2xvYmFscy5pc0V4ZWNDYWxsZWQmJihsPVtlLmN0eF0sZS5jdHgudy5nbG9iYWxzLmlzRXhlY0NhbGxlZD0hMSksbC5mb3JFYWNoKChmdW5jdGlvbihyLGgpe3ZhciBjPXIudztpZihjLmdsb2JhbHMuc2hvdWxkQW5pbWF0ZT1zLGF8fChjLmdsb2JhbHMucmVzaXplZD0hMCxjLmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAscyYmci5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpKSx0JiZcIm9iamVjdFwiPT09aSh0KSYmKHIuY29uZmlnPW5ldyBFKHQpLHQ9eS5leHRlbmRBcnJheVByb3BzKHIuY29uZmlnLHQsYyksci53Lmdsb2JhbHMuY2hhcnRJRCE9PWUuY3R4LncuZ2xvYmFscy5jaGFydElEJiZkZWxldGUgdC5zZXJpZXMsYy5jb25maWc9eC5leHRlbmQoYy5jb25maWcsdCksbyYmKGMuZ2xvYmFscy5sYXN0WEF4aXM9dC54YXhpcz94LmNsb25lKHQueGF4aXMpOltdLGMuZ2xvYmFscy5sYXN0WUF4aXM9dC55YXhpcz94LmNsb25lKHQueWF4aXMpOltdLGMuZ2xvYmFscy5pbml0aWFsQ29uZmlnPXguZXh0ZW5kKHt9LGMuY29uZmlnKSxjLmdsb2JhbHMuaW5pdGlhbFNlcmllcz14LmNsb25lKGMuY29uZmlnLnNlcmllcyksdC5zZXJpZXMpKSl7Zm9yKHZhciBkPTA7ZDxjLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg7ZCsrKXt2YXIgZz1jLmNvbmZpZy5zZXJpZXNbYy5nbG9iYWxzLmNvbGxhcHNlZFNlcmllc0luZGljZXNbZF1dO2MuZ2xvYmFscy5jb2xsYXBzZWRTZXJpZXNbZF0uZGF0YT1jLmdsb2JhbHMuYXhpc0NoYXJ0cz9nLmRhdGEuc2xpY2UoKTpnfWZvcih2YXIgdT0wO3U8Yy5nbG9iYWxzLmFuY2lsbGFyeUNvbGxhcHNlZFNlcmllc0luZGljZXMubGVuZ3RoO3UrKyl7dmFyIHA9Yy5jb25maWcuc2VyaWVzW2MuZ2xvYmFscy5hbmNpbGxhcnlDb2xsYXBzZWRTZXJpZXNJbmRpY2VzW3VdXTtjLmdsb2JhbHMuYW5jaWxsYXJ5Q29sbGFwc2VkU2VyaWVzW3VdLmRhdGE9Yy5nbG9iYWxzLmF4aXNDaGFydHM/cC5kYXRhLnNsaWNlKCk6cH1yLnNlcmllcy5lbXB0eUNvbGxhcHNlZFNlcmllcyhjLmNvbmZpZy5zZXJpZXMpfXJldHVybiByLnVwZGF0ZSh0KS50aGVuKChmdW5jdGlvbigpe2g9PT1sLmxlbmd0aC0xJiZuKHIpfSkpfSkpfSkpfX0se2tleTpcIl91cGRhdGVTZXJpZXNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMsYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyl7dmFyIHIsbz1pLnc7cmV0dXJuIG8uZ2xvYmFscy5zaG91bGRBbmltYXRlPWUsby5nbG9iYWxzLmRhdGFDaGFuZ2VkPSEwLGUmJmkuY3R4LnNlcmllcy5nZXRQcmV2aW91c1BhdGhzKCksby5nbG9iYWxzLmF4aXNDaGFydHM/KDA9PT0ocj10Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5fZXh0ZW5kU2VyaWVzKHQsZSl9KSkpLmxlbmd0aCYmKHI9W3tkYXRhOltdfV0pLG8uY29uZmlnLnNlcmllcz1yKTpvLmNvbmZpZy5zZXJpZXM9dC5zbGljZSgpLGEmJihvLmdsb2JhbHMuaW5pdGlhbENvbmZpZy5zZXJpZXM9eC5jbG9uZShvLmNvbmZpZy5zZXJpZXMpLG8uZ2xvYmFscy5pbml0aWFsU2VyaWVzPXguY2xvbmUoby5jb25maWcuc2VyaWVzKSksaS5jdHgudXBkYXRlKCkudGhlbigoZnVuY3Rpb24oKXtzKGkuY3R4KX0pKX0pKX19LHtrZXk6XCJfZXh0ZW5kU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCxpKXt2YXIgYT10aGlzLncscz1hLmNvbmZpZy5zZXJpZXNbaV07cmV0dXJuIGUoZSh7fSxhLmNvbmZpZy5zZXJpZXNbaV0pLHt9LHtuYW1lOnQubmFtZT90Lm5hbWU6bnVsbD09cz92b2lkIDA6cy5uYW1lLGNvbG9yOnQuY29sb3I/dC5jb2xvcjpudWxsPT1zP3ZvaWQgMDpzLmNvbG9yLHR5cGU6dC50eXBlP3QudHlwZTpudWxsPT1zP3ZvaWQgMDpzLnR5cGUsZ3JvdXA6dC5ncm91cD90Lmdyb3VwOm51bGw9PXM/dm9pZCAwOnMuZ3JvdXAsZGF0YTp0LmRhdGE/dC5kYXRhOm51bGw9PXM/dm9pZCAwOnMuZGF0YSx6SW5kZXg6dm9pZCAwIT09dC56SW5kZXg/dC56SW5kZXg6aX0pfX0se2tleTpcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53LGE9bnVsbCxzPVwiLmFwZXhjaGFydHMtc2VyaWVzW2RhdGFcXFxcOnJlYWxJbmRleD0nXCIuY29uY2F0KHQsXCInXVwiKTtyZXR1cm4gaS5nbG9iYWxzLmF4aXNDaGFydHM/YT1pLmdsb2JhbHMuZG9tLlBhcGVyLnNlbGVjdChcIlwiLmNvbmNhdChzLFwiIHBhdGhbaj0nXCIpLmNvbmNhdChlLFwiJ10sIFwiKS5jb25jYXQocyxcIiBjaXJjbGVbaj0nXCIpLmNvbmNhdChlLFwiJ10sIFwiKS5jb25jYXQocyxcIiByZWN0W2o9J1wiKS5jb25jYXQoZSxcIiddXCIpKS5tZW1iZXJzWzBdOnZvaWQgMD09PWUmJihhPWkuZ2xvYmFscy5kb20uUGFwZXIuc2VsZWN0KFwiXCIuY29uY2F0KHMsXCIgcGF0aFtqPSdcIikuY29uY2F0KHQsXCInXVwiKSkubWVtYmVyc1swXSxcInBpZVwiIT09aS5jb25maWcuY2hhcnQudHlwZSYmXCJwb2xhckFyZWFcIiE9PWkuY29uZmlnLmNoYXJ0LnR5cGUmJlwiZG9udXRcIiE9PWkuY29uZmlnLmNoYXJ0LnR5cGV8fHRoaXMuY3R4LnBpZS5waWVDbGlja2VkKHQpKSxhPyhuZXcgbSh0aGlzLmN0eCkucGF0aE1vdXNlRG93bihhLG51bGwpLGEubm9kZT9hLm5vZGU6bnVsbCk6KGNvbnNvbGUud2FybihcInRvZ2dsZURhdGFQb2ludFNlbGVjdGlvbjogRWxlbWVudCBub3QgZm91bmRcIiksbnVsbCl9fSx7a2V5OlwiZm9yY2VYQXhpc1VwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudztpZihbXCJtaW5cIixcIm1heFwiXS5mb3JFYWNoKChmdW5jdGlvbihpKXt2b2lkIDAhPT10LnhheGlzW2ldJiYoZS5jb25maWcueGF4aXNbaV09dC54YXhpc1tpXSxlLmdsb2JhbHMubGFzdFhBeGlzW2ldPXQueGF4aXNbaV0pfSkpLHQueGF4aXMuY2F0ZWdvcmllcyYmdC54YXhpcy5jYXRlZ29yaWVzLmxlbmd0aCYmKGUuY29uZmlnLnhheGlzLmNhdGVnb3JpZXM9dC54YXhpcy5jYXRlZ29yaWVzKSxlLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWMpe3ZhciBpPW5ldyBYKHQpO3Q9aS5jb252ZXJ0Q2F0VG9OdW1lcmljWGF4aXModCx0aGlzLmN0eCl9cmV0dXJuIHR9fSx7a2V5OlwiZm9yY2VZQXhpc1VwZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNoYXJ0JiZ0LmNoYXJ0LnN0YWNrZWQmJlwiMTAwJVwiPT09dC5jaGFydC5zdGFja1R5cGUmJihBcnJheS5pc0FycmF5KHQueWF4aXMpP3QueWF4aXMuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXt0LnlheGlzW2ldLm1pbj0wLHQueWF4aXNbaV0ubWF4PTEwMH0pKToodC55YXhpcy5taW49MCx0LnlheGlzLm1heD0xMDApKSx0fX0se2tleTpcInJldmVydERlZmF1bHRBeGlzTWluTWF4XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMudyxhPWkuZ2xvYmFscy5sYXN0WEF4aXMscz1pLmdsb2JhbHMubGFzdFlBeGlzO3QmJnQueGF4aXMmJihhPXQueGF4aXMpLHQmJnQueWF4aXMmJihzPXQueWF4aXMpLGkuY29uZmlnLnhheGlzLm1pbj1hLm1pbixpLmNvbmZpZy54YXhpcy5tYXg9YS5tYXg7dmFyIHI9ZnVuY3Rpb24odCl7dm9pZCAwIT09c1t0XSYmKGkuY29uZmlnLnlheGlzW3RdLm1pbj1zW3RdLm1pbixpLmNvbmZpZy55YXhpc1t0XS5tYXg9c1t0XS5tYXgpfTtpLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsYSl7aS5nbG9iYWxzLnpvb21lZHx8dm9pZCAwIT09c1thXT9yKGEpOnZvaWQgMCE9PWUuY3R4Lm9wdHMueWF4aXNbYV0mJih0Lm1pbj1lLmN0eC5vcHRzLnlheGlzW2FdLm1pbix0Lm1heD1lLmN0eC5vcHRzLnlheGlzW2FdLm1heCl9KSl9fV0pLHR9KCk7UnQ9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dm9pZCAwLEh0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9KHZvaWQgMCE9PXRoaXM/dGhpczp0KS5TVkc9ZnVuY3Rpb24odCl7aWYoYS5zdXBwb3J0ZWQpcmV0dXJuIHQ9bmV3IGEuRG9jKHQpLGEucGFyc2VyLmRyYXd8fGEucHJlcGFyZSgpLHR9O2lmKGEubnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGEueG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zL1wiLGEueGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsYS5zdmdqcz1cImh0dHA6Ly9zdmdqcy5kZXZcIixhLnN1cHBvcnRlZD0hMCwhYS5zdXBwb3J0ZWQpcmV0dXJuITE7YS5kaWQ9MWUzLGEuZWlkPWZ1bmN0aW9uKHQpe3JldHVyblwiU3ZnanNcIitkKHQpK2EuZGlkKyt9LGEuY3JlYXRlPWZ1bmN0aW9uKHQpe3ZhciBpPWUuY3JlYXRlRWxlbWVudE5TKHRoaXMubnMsdCk7cmV0dXJuIGkuc2V0QXR0cmlidXRlKFwiaWRcIix0aGlzLmVpZCh0KSksaX0sYS5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgdCxlO2U9KHQ9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpKS5wb3AoKTtmb3IodmFyIGk9dC5sZW5ndGgtMTtpPj0wO2ktLSlpZih0W2ldKWZvcih2YXIgcyBpbiBlKXRbaV0ucHJvdG90eXBlW3NdPWVbc107YS5TZXQmJmEuU2V0LmluaGVyaXQmJmEuU2V0LmluaGVyaXQoKX0sYS5pbnZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9XCJmdW5jdGlvblwiPT10eXBlb2YgdC5jcmVhdGU/dC5jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLmNyZWF0ZSh0LmNyZWF0ZSkpfTtyZXR1cm4gdC5pbmhlcml0JiYoZS5wcm90b3R5cGU9bmV3IHQuaW5oZXJpdCksdC5leHRlbmQmJmEuZXh0ZW5kKGUsdC5leHRlbmQpLHQuY29uc3RydWN0JiZhLmV4dGVuZCh0LnBhcmVudHx8YS5Db250YWluZXIsdC5jb25zdHJ1Y3QpLGV9LGEuYWRvcHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5pbnN0YW5jZT9lLmluc3RhbmNlOigoaT1cInN2Z1wiPT1lLm5vZGVOYW1lP2UucGFyZW50Tm9kZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudD9uZXcgYS5OZXN0ZWQ6bmV3IGEuRG9jOlwibGluZWFyR3JhZGllbnRcIj09ZS5ub2RlTmFtZT9uZXcgYS5HcmFkaWVudChcImxpbmVhclwiKTpcInJhZGlhbEdyYWRpZW50XCI9PWUubm9kZU5hbWU/bmV3IGEuR3JhZGllbnQoXCJyYWRpYWxcIik6YVtkKGUubm9kZU5hbWUpXT9uZXcoYVtkKGUubm9kZU5hbWUpXSk6bmV3IGEuRWxlbWVudChlKSkudHlwZT1lLm5vZGVOYW1lLGkubm9kZT1lLGUuaW5zdGFuY2U9aSxpIGluc3RhbmNlb2YgYS5Eb2MmJmkubmFtZXNwYWNlKCkuZGVmcygpLGkuc2V0RGF0YShKU09OLnBhcnNlKGUuZ2V0QXR0cmlidXRlKFwic3ZnanM6ZGF0YVwiKSl8fHt9KSxpKTpudWxsO3ZhciBpfSxhLnByZXBhcmU9ZnVuY3Rpb24oKXt2YXIgdD1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXSxpPSh0P25ldyBhLkRvYyh0KTphLmFkb3B0KGUuZG9jdW1lbnRFbGVtZW50KS5uZXN0ZWQoKSkuc2l6ZSgyLDApO2EucGFyc2VyPXtib2R5OnR8fGUuZG9jdW1lbnRFbGVtZW50LGRyYXc6aS5zdHlsZShcIm9wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMDAlO3RvcDotMTAwJTtvdmVyZmxvdzpoaWRkZW5cIikubm9kZSxwb2x5OmkucG9seWxpbmUoKS5ub2RlLHBhdGg6aS5wYXRoKCkubm9kZSxuYXRpdmU6YS5jcmVhdGUoXCJzdmdcIil9fSxhLnBhcnNlcj17bmF0aXZlOmEuY3JlYXRlKFwic3ZnXCIpfSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsKGZ1bmN0aW9uKCl7YS5wYXJzZXIuZHJhd3x8YS5wcmVwYXJlKCl9KSwhMSksYS5yZWdleD17bnVtYmVyQW5kVW5pdDovXihbKy1dPyhcXGQrKFxcLlxcZCopP3xcXC5cXGQrKShlWystXT9cXGQrKT8pKFthLXolXSopJC9pLGhleDovXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLHJnYjovcmdiXFwoKFxcZCspLChcXGQrKSwoXFxkKylcXCkvLHJlZmVyZW5jZTovIyhbYS16MC05XFwtX10rKS9pLHRyYW5zZm9ybXM6L1xcKVxccyosP1xccyovLHdoaXRlc3BhY2U6L1xccy9nLGlzSGV4Oi9eI1thLWYwLTldezMsNn0kL2ksaXNSZ2I6L15yZ2JcXCgvLGlzQ3NzOi9bXjpdKzpbXjtdKzs/Lyxpc0JsYW5rOi9eKFxccyspPyQvLGlzTnVtYmVyOi9eWystXT8oXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoZVsrLV0/XFxkKyk/JC9pLGlzUGVyY2VudDovXi0/W1xcZFxcLl0rJSQvLGlzSW1hZ2U6L1xcLihqcGd8anBlZ3xwbmd8Z2lmfHN2ZykoXFw/W149XSsuKik/L2ksZGVsaW1pdGVyOi9bXFxzLF0rLyxoeXBoZW46LyhbXmVdKVxcLS9naSxwYXRoTGV0dGVyczovW01MSFZDU1FUQVpdL2dpLGlzUGF0aExldHRlcjovW01MSFZDU1FUQVpdL2ksbnVtYmVyc1dpdGhEb3RzOi8oKFxcZD9cXC5cXGQrKD86ZVsrLV0/XFxkKyk/KSgoPzpcXC5cXGQrKD86ZVsrLV0/XFxkKyk/KSspKSsvZ2ksZG90czovXFwuL2d9LGEudXRpbHM9e21hcDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10Lmxlbmd0aCxhPVtdLHM9MDtzPGk7cysrKWEucHVzaChlKHRbc10pKTtyZXR1cm4gYX0sZmlsdGVyOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXQubGVuZ3RoLGE9W10scz0wO3M8aTtzKyspZSh0W3NdKSYmYS5wdXNoKHRbc10pO3JldHVybiBhfSxmaWx0ZXJTVkdFbGVtZW50czpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5maWx0ZXIoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0LlNWR0VsZW1lbnR9KSl9fSxhLmRlZmF1bHRzPXthdHRyczp7XCJmaWxsLW9wYWNpdHlcIjoxLFwic3Ryb2tlLW9wYWNpdHlcIjoxLFwic3Ryb2tlLXdpZHRoXCI6MCxcInN0cm9rZS1saW5lam9pblwiOlwibWl0ZXJcIixcInN0cm9rZS1saW5lY2FwXCI6XCJidXR0XCIsZmlsbDpcIiMwMDAwMDBcIixzdHJva2U6XCIjMDAwMDAwXCIsb3BhY2l0eToxLHg6MCx5OjAsY3g6MCxjeTowLHdpZHRoOjAsaGVpZ2h0OjAscjowLHJ4OjAscnk6MCxvZmZzZXQ6MCxcInN0b3Atb3BhY2l0eVwiOjEsXCJzdG9wLWNvbG9yXCI6XCIjMDAwMDAwXCIsXCJmb250LXNpemVcIjoxNixcImZvbnQtZmFtaWx5XCI6XCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsXCJ0ZXh0LWFuY2hvclwiOlwic3RhcnRcIn19LGEuQ29sb3I9ZnVuY3Rpb24odCl7dmFyIGUsczt0aGlzLnI9MCx0aGlzLmc9MCx0aGlzLmI9MCx0JiYoXCJzdHJpbmdcIj09dHlwZW9mIHQ/YS5yZWdleC5pc1JnYi50ZXN0KHQpPyhlPWEucmVnZXgucmdiLmV4ZWModC5yZXBsYWNlKGEucmVnZXgud2hpdGVzcGFjZSxcIlwiKSksdGhpcy5yPXBhcnNlSW50KGVbMV0pLHRoaXMuZz1wYXJzZUludChlWzJdKSx0aGlzLmI9cGFyc2VJbnQoZVszXSkpOmEucmVnZXguaXNIZXgudGVzdCh0KSYmKGU9YS5yZWdleC5oZXguZXhlYyg0PT0ocz10KS5sZW5ndGg/W1wiI1wiLHMuc3Vic3RyaW5nKDEsMikscy5zdWJzdHJpbmcoMSwyKSxzLnN1YnN0cmluZygyLDMpLHMuc3Vic3RyaW5nKDIsMykscy5zdWJzdHJpbmcoMyw0KSxzLnN1YnN0cmluZygzLDQpXS5qb2luKFwiXCIpOnMpLHRoaXMucj1wYXJzZUludChlWzFdLDE2KSx0aGlzLmc9cGFyc2VJbnQoZVsyXSwxNiksdGhpcy5iPXBhcnNlSW50KGVbM10sMTYpKTpcIm9iamVjdFwiPT09aSh0KSYmKHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iKSl9LGEuZXh0ZW5kKGEuQ29sb3Ise3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9IZXgoKX0sdG9IZXg6ZnVuY3Rpb24oKXtyZXR1cm5cIiNcIitnKHRoaXMucikrZyh0aGlzLmcpK2codGhpcy5iKX0sdG9SZ2I6ZnVuY3Rpb24oKXtyZXR1cm5cInJnYihcIitbdGhpcy5yLHRoaXMuZyx0aGlzLmJdLmpvaW4oKStcIilcIn0sYnJpZ2h0bmVzczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnIvMjU1Ki4zK3RoaXMuZy8yNTUqLjU5K3RoaXMuYi8yNTUqLjExfSxtb3JwaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj1uZXcgYS5Db2xvcih0KSx0aGlzfSxhdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbj8odD10PDA/MDp0PjE/MTp0LG5ldyBhLkNvbG9yKHtyOn5+KHRoaXMucisodGhpcy5kZXN0aW5hdGlvbi5yLXRoaXMucikqdCksZzp+fih0aGlzLmcrKHRoaXMuZGVzdGluYXRpb24uZy10aGlzLmcpKnQpLGI6fn4odGhpcy5iKyh0aGlzLmRlc3RpbmF0aW9uLmItdGhpcy5iKSp0KX0pKTp0aGlzfX0pLGEuQ29sb3IudGVzdD1mdW5jdGlvbih0KXtyZXR1cm4gdCs9XCJcIixhLnJlZ2V4LmlzSGV4LnRlc3QodCl8fGEucmVnZXguaXNSZ2IudGVzdCh0KX0sYS5Db2xvci5pc1JnYj1mdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJudW1iZXJcIj09dHlwZW9mIHQuciYmXCJudW1iZXJcIj09dHlwZW9mIHQuZyYmXCJudW1iZXJcIj09dHlwZW9mIHQuYn0sYS5Db2xvci5pc0NvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhLkNvbG9yLmlzUmdiKHQpfHxhLkNvbG9yLnRlc3QodCl9LGEuQXJyYXk9ZnVuY3Rpb24odCxlKXswPT0odD0odHx8W10pLnZhbHVlT2YoKSkubGVuZ3RoJiZlJiYodD1lLnZhbHVlT2YoKSksdGhpcy52YWx1ZT10aGlzLnBhcnNlKHQpfSxhLmV4dGVuZChhLkFycmF5LHt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLmpvaW4oXCIgXCIpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiB0PXQudmFsdWVPZigpLEFycmF5LmlzQXJyYXkodCk/dDp0aGlzLnNwbGl0KHQpfX0pLGEuUG9pbnRBcnJheT1mdW5jdGlvbih0LGUpe2EuQXJyYXkuY2FsbCh0aGlzLHQsZXx8W1swLDBdXSl9LGEuUG9pbnRBcnJheS5wcm90b3R5cGU9bmV3IGEuQXJyYXksYS5Qb2ludEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLlBvaW50QXJyYXk7Zm9yKHZhciBzPXtNOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZS54PWkueD10WzBdLGUueT1pLnk9dFsxXSxbXCJNXCIsZS54LGUueV19LEw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMF0sZS55PXRbMV0sW1wiTFwiLHRbMF0sdFsxXV19LEg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS54PXRbMF0sW1wiSFwiLHRbMF1dfSxWOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueT10WzBdLFtcIlZcIix0WzBdXX0sQzpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFs0XSxlLnk9dFs1XSxbXCJDXCIsdFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV1dfSxROmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUueD10WzJdLGUueT10WzNdLFtcIlFcIix0WzBdLHRbMV0sdFsyXSx0WzNdXX0sUzpmdW5jdGlvbih0LGUpe3JldHVybiBlLng9dFsyXSxlLnk9dFszXSxbXCJTXCIsdFswXSx0WzFdLHRbMl0sdFszXV19LFo6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlLng9aS54LGUueT1pLnksW1wiWlwiXX19LHI9XCJtbGh2cXRjc2F6XCIuc3BsaXQoXCJcIiksbz0wLG49ci5sZW5ndGg7bzxuOysrbylzW3Jbb11dPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLGksYSl7aWYoXCJIXCI9PXQpZVswXT1lWzBdK2kueDtlbHNlIGlmKFwiVlwiPT10KWVbMF09ZVswXStpLnk7ZWxzZSBpZihcIkFcIj09dCllWzVdPWVbNV0raS54LGVbNl09ZVs2XStpLnk7ZWxzZSBmb3IodmFyIHI9MCxvPWUubGVuZ3RoO3I8bzsrK3IpZVtyXT1lW3JdKyhyJTI/aS55OmkueCk7aWYocyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygc1t0XSlyZXR1cm4gc1t0XShlLGksYSl9fShyW29dLnRvVXBwZXJDYXNlKCkpO2EuUGF0aEFycmF5PWZ1bmN0aW9uKHQsZSl7YS5BcnJheS5jYWxsKHRoaXMsdCxlfHxbW1wiTVwiLDAsMF1dKX0sYS5QYXRoQXJyYXkucHJvdG90eXBlPW5ldyBhLkFycmF5LGEuUGF0aEFycmF5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLlBhdGhBcnJheSxhLmV4dGVuZChhLlBhdGhBcnJheSx7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT10Lmxlbmd0aCxhPVwiXCI7ZTxpO2UrKylhKz10W2VdWzBdLG51bGwhPXRbZV1bMV0mJihhKz10W2VdWzFdLG51bGwhPXRbZV1bMl0mJihhKz1cIiBcIixhKz10W2VdWzJdLG51bGwhPXRbZV1bM10mJihhKz1cIiBcIixhKz10W2VdWzNdLGErPVwiIFwiLGErPXRbZV1bNF0sbnVsbCE9dFtlXVs1XSYmKGErPVwiIFwiLGErPXRbZV1bNV0sYSs9XCIgXCIsYSs9dFtlXVs2XSxudWxsIT10W2VdWzddJiYoYSs9XCIgXCIsYSs9dFtlXVs3XSkpKSkpO3JldHVybiBhK1wiIFwifSh0aGlzLnZhbHVlKX0sbW92ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuYmJveCgpO3JldHVybiBpLngsaS55LHRoaXN9LGF0OmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmRlc3RpbmF0aW9uKXJldHVybiB0aGlzO2Zvcih2YXIgZT10aGlzLnZhbHVlLGk9dGhpcy5kZXN0aW5hdGlvbi52YWx1ZSxzPVtdLHI9bmV3IGEuUGF0aEFycmF5LG89MCxuPWUubGVuZ3RoO288bjtvKyspe3Nbb109W2Vbb11bMF1dO2Zvcih2YXIgbD0xLGg9ZVtvXS5sZW5ndGg7bDxoO2wrKylzW29dW2xdPWVbb11bbF0rKGlbb11bbF0tZVtvXVtsXSkqdDtcIkFcIj09PXNbb11bMF0mJihzW29dWzRdPSsoMCE9c1tvXVs0XSksc1tvXVs1XT0rKDAhPXNbb11bNV0pKX1yZXR1cm4gci52YWx1ZT1zLHJ9LHBhcnNlOmZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBhLlBhdGhBcnJheSlyZXR1cm4gdC52YWx1ZU9mKCk7dmFyIGUsaT17TToyLEw6MixIOjEsVjoxLEM6NixTOjQsUTo0LFQ6MixBOjcsWjowfTt0PVwic3RyaW5nXCI9PXR5cGVvZiB0P3QucmVwbGFjZShhLnJlZ2V4Lm51bWJlcnNXaXRoRG90cyxoKS5yZXBsYWNlKGEucmVnZXgucGF0aExldHRlcnMsXCIgJCYgXCIpLnJlcGxhY2UoYS5yZWdleC5oeXBoZW4sXCIkMSAtXCIpLnRyaW0oKS5zcGxpdChhLnJlZ2V4LmRlbGltaXRlcik6dC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW10uY29uY2F0LmNhbGwodCxlKX0pLFtdKTt2YXIgcj1bXSxvPW5ldyBhLlBvaW50LG49bmV3IGEuUG9pbnQsbD0wLGM9dC5sZW5ndGg7ZG97YS5yZWdleC5pc1BhdGhMZXR0ZXIudGVzdCh0W2xdKT8oZT10W2xdLCsrbCk6XCJNXCI9PWU/ZT1cIkxcIjpcIm1cIj09ZSYmKGU9XCJsXCIpLHIucHVzaChzW2VdLmNhbGwobnVsbCx0LnNsaWNlKGwsbCs9aVtlLnRvVXBwZXJDYXNlKCldKS5tYXAocGFyc2VGbG9hdCksbyxuKSl9d2hpbGUoYz5sKTtyZXR1cm4gcn0sYmJveDpmdW5jdGlvbigpe3JldHVybiBhLnBhcnNlci5kcmF3fHxhLnByZXBhcmUoKSxhLnBhcnNlci5wYXRoLnNldEF0dHJpYnV0ZShcImRcIix0aGlzLnRvU3RyaW5nKCkpLGEucGFyc2VyLnBhdGguZ2V0QkJveCgpfX0pLGEuTnVtYmVyPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXt0aGlzLnZhbHVlPTAsdGhpcy51bml0PWV8fFwiXCIsXCJudW1iZXJcIj09dHlwZW9mIHQ/dGhpcy52YWx1ZT1pc05hTih0KT8wOmlzRmluaXRlKHQpP3Q6dDwwPy0zNGUzNzozNGUzNzpcInN0cmluZ1wiPT10eXBlb2YgdD8oZT10Lm1hdGNoKGEucmVnZXgubnVtYmVyQW5kVW5pdCkpJiYodGhpcy52YWx1ZT1wYXJzZUZsb2F0KGVbMV0pLFwiJVwiPT1lWzVdP3RoaXMudmFsdWUvPTEwMDpcInNcIj09ZVs1XSYmKHRoaXMudmFsdWUqPTFlMyksdGhpcy51bml0PWVbNV0pOnQgaW5zdGFuY2VvZiBhLk51bWJlciYmKHRoaXMudmFsdWU9dC52YWx1ZU9mKCksdGhpcy51bml0PXQudW5pdCl9LGV4dGVuZDp7dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4oXCIlXCI9PXRoaXMudW5pdD9+figxZTgqdGhpcy52YWx1ZSkvMWU2Olwic1wiPT10aGlzLnVuaXQ/dGhpcy52YWx1ZS8xZTM6dGhpcy52YWx1ZSkrdGhpcy51bml0fSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHBsdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IGEuTnVtYmVyKHQpLG5ldyBhLk51bWJlcih0aGlzK3QsdGhpcy51bml0fHx0LnVuaXQpfSxtaW51czpmdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgYS5OdW1iZXIodCksbmV3IGEuTnVtYmVyKHRoaXMtdCx0aGlzLnVuaXR8fHQudW5pdCl9LHRpbWVzOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBhLk51bWJlcih0KSxuZXcgYS5OdW1iZXIodGhpcyp0LHRoaXMudW5pdHx8dC51bml0KX0sZGl2aWRlOmZ1bmN0aW9uKHQpe3JldHVybiB0PW5ldyBhLk51bWJlcih0KSxuZXcgYS5OdW1iZXIodGhpcy90LHRoaXMudW5pdHx8dC51bml0KX0sdG86ZnVuY3Rpb24odCl7dmFyIGU9bmV3IGEuTnVtYmVyKHRoaXMpO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0JiYoZS51bml0PXQpLGV9LG1vcnBoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBhLk51bWJlcih0KSx0LnJlbGF0aXZlJiYodGhpcy5kZXN0aW5hdGlvbi52YWx1ZSs9dGhpcy52YWx1ZSksdGhpc30sYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24/bmV3IGEuTnVtYmVyKHRoaXMuZGVzdGluYXRpb24pLm1pbnVzKHRoaXMpLnRpbWVzKHQpLnBsdXModGhpcyk6dGhpc319fSksYS5FbGVtZW50PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5fc3Ryb2tlPWEuZGVmYXVsdHMuYXR0cnMuc3Ryb2tlLHRoaXMuX2V2ZW50PW51bGwsdGhpcy5kb209e30sKHRoaXMubm9kZT10KSYmKHRoaXMudHlwZT10Lm5vZGVOYW1lLHRoaXMubm9kZS5pbnN0YW5jZT10aGlzLHRoaXMuX3N0cm9rZT10LmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKXx8dGhpcy5fc3Ryb2tlKX0sZXh0ZW5kOnt4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ4XCIsdCl9LHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInlcIix0KX0sY3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy54KCkrdGhpcy53aWR0aCgpLzI6dGhpcy54KHQtdGhpcy53aWR0aCgpLzIpfSxjeTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnkoKSt0aGlzLmhlaWdodCgpLzI6dGhpcy55KHQtdGhpcy5oZWlnaHQoKS8yKX0sbW92ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLngodCkueShlKX0sY2VudGVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY3godCkuY3koZSl9LHdpZHRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ3aWR0aFwiLHQpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImhlaWdodFwiLHQpfSxzaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dSh0aGlzLHQsZSk7cmV0dXJuIHRoaXMud2lkdGgobmV3IGEuTnVtYmVyKGkud2lkdGgpKS5oZWlnaHQobmV3IGEuTnVtYmVyKGkuaGVpZ2h0KSl9LGNsb25lOmZ1bmN0aW9uKHQpe3RoaXMud3JpdGVEYXRhVG9Eb20oKTt2YXIgZT14KHRoaXMubm9kZS5jbG9uZU5vZGUoITApKTtyZXR1cm4gdD90LmFkZChlKTp0aGlzLmFmdGVyKGUpLGV9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnJlbW92ZUVsZW1lbnQodGhpcyksdGhpc30scmVwbGFjZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hZnRlcih0KS5yZW1vdmUoKSx0fSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gdC5wdXQodGhpcyl9LHB1dEluOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZCh0aGlzKX0saWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImlkXCIsdCl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHlsZShcImRpc3BsYXlcIixcIlwiKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0eWxlKFwiZGlzcGxheVwiLFwibm9uZVwiKX0sdmlzaWJsZTpmdW5jdGlvbigpe3JldHVyblwibm9uZVwiIT10aGlzLnN0eWxlKFwiZGlzcGxheVwiKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKFwiaWRcIil9LGNsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmF0dHIoXCJjbGFzc1wiKTtyZXR1cm4gbnVsbD09dD9bXTp0LnRyaW0oKS5zcGxpdChhLnJlZ2V4LmRlbGltaXRlcil9LGhhc0NsYXNzOmZ1bmN0aW9uKHQpe3JldHVybi0xIT10aGlzLmNsYXNzZXMoKS5pbmRleE9mKHQpfSxhZGRDbGFzczpmdW5jdGlvbih0KXtpZighdGhpcy5oYXNDbGFzcyh0KSl7dmFyIGU9dGhpcy5jbGFzc2VzKCk7ZS5wdXNoKHQpLHRoaXMuYXR0cihcImNsYXNzXCIsZS5qb2luKFwiIFwiKSl9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0NsYXNzKHQpJiZ0aGlzLmF0dHIoXCJjbGFzc1wiLHRoaXMuY2xhc3NlcygpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPXR9KSkuam9pbihcIiBcIikpLHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0NsYXNzKHQpP3RoaXMucmVtb3ZlQ2xhc3ModCk6dGhpcy5hZGRDbGFzcyh0KX0scmVmZXJlbmNlOmZ1bmN0aW9uKHQpe3JldHVybiBhLmdldCh0aGlzLmF0dHIodCkpfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcztpZighaS5ub2RlLnBhcmVudE5vZGUpcmV0dXJuIG51bGw7aWYoaT1hLmFkb3B0KGkubm9kZS5wYXJlbnROb2RlKSwhZSlyZXR1cm4gaTtmb3IoO2kmJmkubm9kZSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudDspe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlP2kubWF0Y2hlcyhlKTppIGluc3RhbmNlb2YgZSlyZXR1cm4gaTtpZighaS5ub2RlLnBhcmVudE5vZGV8fFwiI2RvY3VtZW50XCI9PWkubm9kZS5wYXJlbnROb2RlLm5vZGVOYW1lKXJldHVybiBudWxsO2k9YS5hZG9wdChpLm5vZGUucGFyZW50Tm9kZSl9fSxkb2M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGEuRG9jP3RoaXM6dGhpcy5wYXJlbnQoYS5Eb2MpfSxwYXJlbnRzOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLGk9dGhpcztkb3tpZighKGk9aS5wYXJlbnQodCkpfHwhaS5ub2RlKWJyZWFrO2UucHVzaChpKX13aGlsZShpLnBhcmVudCk7cmV0dXJuIGV9LG1hdGNoZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQubWF0Y2hlc3x8dC5tYXRjaGVzU2VsZWN0b3J8fHQubXNNYXRjaGVzU2VsZWN0b3J8fHQubW96TWF0Y2hlc1NlbGVjdG9yfHx0LndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8dC5vTWF0Y2hlc1NlbGVjdG9yKS5jYWxsKHQsZSl9KHRoaXMubm9kZSx0KX0sbmF0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZX0sc3ZnOmZ1bmN0aW9uKHQpe3ZhciBpPWUuY3JlYXRlRWxlbWVudChcInN2Z1wiKTtpZighKHQmJnRoaXMgaW5zdGFuY2VvZiBhLlBhcmVudCkpcmV0dXJuIGkuYXBwZW5kQ2hpbGQodD1lLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIikpLHRoaXMud3JpdGVEYXRhVG9Eb20oKSx0LmFwcGVuZENoaWxkKHRoaXMubm9kZS5jbG9uZU5vZGUoITApKSxpLmlubmVySFRNTC5yZXBsYWNlKC9ePHN2Zz4vLFwiXCIpLnJlcGxhY2UoLzxcXC9zdmc+JC8sXCJcIik7aS5pbm5lckhUTUw9XCI8c3ZnPlwiK3QucmVwbGFjZSgvXFxuLyxcIlwiKS5yZXBsYWNlKC88KFtcXHc6LV0rKShbXjxdKz8pXFwvPi9nLFwiPCQxJDI+PC8kMT5cIikrXCI8L3N2Zz5cIjtmb3IodmFyIHM9MCxyPWkuZmlyc3RDaGlsZC5jaGlsZE5vZGVzLmxlbmd0aDtzPHI7cysrKXRoaXMubm9kZS5hcHBlbmRDaGlsZChpLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCk7cmV0dXJuIHRoaXN9LHdyaXRlRGF0YVRvRG9tOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuZWFjaHx8dGhpcy5saW5lcykmJih0aGlzLmVhY2g/dGhpczp0aGlzLmxpbmVzKCkpLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy53cml0ZURhdGFUb0RvbSgpfSkpLHRoaXMubm9kZS5yZW1vdmVBdHRyaWJ1dGUoXCJzdmdqczpkYXRhXCIpLE9iamVjdC5rZXlzKHRoaXMuZG9tKS5sZW5ndGgmJnRoaXMubm9kZS5zZXRBdHRyaWJ1dGUoXCJzdmdqczpkYXRhXCIsSlNPTi5zdHJpbmdpZnkodGhpcy5kb20pKSx0aGlzfSxzZXREYXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRvbT10LHRoaXN9LGlzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgZX0odGhpcyx0KX19fSksYS5lYXNpbmc9e1wiLVwiOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxcIjw+XCI6ZnVuY3Rpb24odCl7cmV0dXJuLU1hdGguY29zKHQqTWF0aC5QSSkvMisuNX0sXCI+XCI6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc2luKHQqTWF0aC5QSS8yKX0sXCI8XCI6ZnVuY3Rpb24odCl7cmV0dXJuIDEtTWF0aC5jb3ModCpNYXRoLlBJLzIpfX0sYS5tb3JwaD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxpKXtyZXR1cm4gbmV3IGEuTW9ycGhPYmooZSxpKS5hdCh0KX19LGEuU2l0dWF0aW9uPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5pbml0PSExLHRoaXMucmV2ZXJzZWQ9ITEsdGhpcy5yZXZlcnNpbmc9ITEsdGhpcy5kdXJhdGlvbj1uZXcgYS5OdW1iZXIodC5kdXJhdGlvbikudmFsdWVPZigpLHRoaXMuZGVsYXk9bmV3IGEuTnVtYmVyKHQuZGVsYXkpLnZhbHVlT2YoKSx0aGlzLnN0YXJ0PStuZXcgRGF0ZSt0aGlzLmRlbGF5LHRoaXMuZmluaXNoPXRoaXMuc3RhcnQrdGhpcy5kdXJhdGlvbix0aGlzLmVhc2U9dC5lYXNlLHRoaXMubG9vcD0wLHRoaXMubG9vcHM9ITEsdGhpcy5hbmltYXRpb25zPXt9LHRoaXMuYXR0cnM9e30sdGhpcy5zdHlsZXM9e30sdGhpcy50cmFuc2Zvcm1zPVtdLHRoaXMub25jZT17fX19KSxhLkZYPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5fdGFyZ2V0PXQsdGhpcy5zaXR1YXRpb25zPVtdLHRoaXMuYWN0aXZlPSExLHRoaXMuc2l0dWF0aW9uPW51bGwsdGhpcy5wYXVzZWQ9ITEsdGhpcy5sYXN0UG9zPTAsdGhpcy5wb3M9MCx0aGlzLmFic1Bvcz0wLHRoaXMuX3NwZWVkPTF9LGV4dGVuZDp7YW5pbWF0ZTpmdW5jdGlvbih0LGUscyl7XCJvYmplY3RcIj09PWkodCkmJihlPXQuZWFzZSxzPXQuZGVsYXksdD10LmR1cmF0aW9uKTt2YXIgcj1uZXcgYS5TaXR1YXRpb24oe2R1cmF0aW9uOnR8fDFlMyxkZWxheTpzfHwwLGVhc2U6YS5lYXNpbmdbZXx8XCItXCJdfHxlfSk7cmV0dXJuIHRoaXMucXVldWUociksdGhpc30sdGFyZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0IGluc3RhbmNlb2YgYS5FbGVtZW50Pyh0aGlzLl90YXJnZXQ9dCx0aGlzKTp0aGlzLl90YXJnZXR9LHRpbWVUb0Fic1BvczpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnNpdHVhdGlvbi5zdGFydCkvKHRoaXMuc2l0dWF0aW9uLmR1cmF0aW9uL3RoaXMuX3NwZWVkKX0sYWJzUG9zVG9UaW1lOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCp0K3RoaXMuc2l0dWF0aW9uLnN0YXJ0fSxzdGFydEFuaW1GcmFtZTpmdW5jdGlvbigpe3RoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMuYW5pbWF0aW9uRnJhbWU9dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt0aGlzLnN0ZXAoKX0uYmluZCh0aGlzKSl9LHN0b3BBbmltRnJhbWU6ZnVuY3Rpb24oKXt0LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0aW9uRnJhbWUpfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmFjdGl2ZSYmdGhpcy5zaXR1YXRpb24mJih0aGlzLmFjdGl2ZT0hMCx0aGlzLnN0YXJ0Q3VycmVudCgpKSx0aGlzfSxzdGFydEN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb24uc3RhcnQ9K25ldyBEYXRlK3RoaXMuc2l0dWF0aW9uLmRlbGF5L3RoaXMuX3NwZWVkLHRoaXMuc2l0dWF0aW9uLmZpbmlzaD10aGlzLnNpdHVhdGlvbi5zdGFydCt0aGlzLnNpdHVhdGlvbi5kdXJhdGlvbi90aGlzLl9zcGVlZCx0aGlzLmluaXRBbmltYXRpb25zKCkuc3RlcCgpfSxxdWV1ZTpmdW5jdGlvbih0KXtyZXR1cm4oXCJmdW5jdGlvblwiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGEuU2l0dWF0aW9uKSYmdGhpcy5zaXR1YXRpb25zLnB1c2godCksdGhpcy5zaXR1YXRpb258fCh0aGlzLnNpdHVhdGlvbj10aGlzLnNpdHVhdGlvbnMuc2hpZnQoKSksdGhpc30sZGVxdWV1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3AoKSx0aGlzLnNpdHVhdGlvbj10aGlzLnNpdHVhdGlvbnMuc2hpZnQoKSx0aGlzLnNpdHVhdGlvbiYmKHRoaXMuc2l0dWF0aW9uIGluc3RhbmNlb2YgYS5TaXR1YXRpb24/dGhpcy5zdGFydCgpOnRoaXMuc2l0dWF0aW9uLmNhbGwodGhpcykpLHRoaXN9LGluaXRBbmltYXRpb25zOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLnNpdHVhdGlvbjtpZihlLmluaXQpcmV0dXJuIHRoaXM7Zm9yKHZhciBpIGluIGUuYW5pbWF0aW9ucyl7dD10aGlzLnRhcmdldCgpW2ldKCksQXJyYXkuaXNBcnJheSh0KXx8KHQ9W3RdKSxBcnJheS5pc0FycmF5KGUuYW5pbWF0aW9uc1tpXSl8fChlLmFuaW1hdGlvbnNbaV09W2UuYW5pbWF0aW9uc1tpXV0pO2Zvcih2YXIgcz10Lmxlbmd0aDtzLS07KWUuYW5pbWF0aW9uc1tpXVtzXWluc3RhbmNlb2YgYS5OdW1iZXImJih0W3NdPW5ldyBhLk51bWJlcih0W3NdKSksZS5hbmltYXRpb25zW2ldW3NdPXRbc10ubW9ycGgoZS5hbmltYXRpb25zW2ldW3NdKX1mb3IodmFyIGkgaW4gZS5hdHRycyllLmF0dHJzW2ldPW5ldyBhLk1vcnBoT2JqKHRoaXMudGFyZ2V0KCkuYXR0cihpKSxlLmF0dHJzW2ldKTtmb3IodmFyIGkgaW4gZS5zdHlsZXMpZS5zdHlsZXNbaV09bmV3IGEuTW9ycGhPYmoodGhpcy50YXJnZXQoKS5zdHlsZShpKSxlLnN0eWxlc1tpXSk7cmV0dXJuIGUuaW5pdGlhbFRyYW5zZm9ybWF0aW9uPXRoaXMudGFyZ2V0KCkubWF0cml4aWZ5KCksZS5pbml0PSEwLHRoaXN9LGNsZWFyUXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaXR1YXRpb25zPVtdLHRoaXN9LGNsZWFyQ3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpdHVhdGlvbj1udWxsLHRoaXN9LHN0b3A6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmFjdGl2ZTtyZXR1cm4gdGhpcy5hY3RpdmU9ITEsZSYmdGhpcy5jbGVhclF1ZXVlKCksdCYmdGhpcy5zaXR1YXRpb24mJighaSYmdGhpcy5zdGFydEN1cnJlbnQoKSx0aGlzLmF0RW5kKCkpLHRoaXMuc3RvcEFuaW1GcmFtZSgpLHRoaXMuY2xlYXJDdXJyZW50KCl9LGFmdGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubGFzdCgpO3JldHVybiB0aGlzLnRhcmdldCgpLm9uKFwiZmluaXNoZWQuZnhcIiwoZnVuY3Rpb24gaShhKXthLmRldGFpbC5zaXR1YXRpb249PWUmJih0LmNhbGwodGhpcyxlKSx0aGlzLm9mZihcImZpbmlzaGVkLmZ4XCIsaSkpfSkpLHRoaXMuX2NhbGxTdGFydCgpfSxkdXJpbmc6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5sYXN0KCksaT1mdW5jdGlvbihpKXtpLmRldGFpbC5zaXR1YXRpb249PWUmJnQuY2FsbCh0aGlzLGkuZGV0YWlsLnBvcyxhLm1vcnBoKGkuZGV0YWlsLnBvcyksaS5kZXRhaWwuZWFzZWQsZSl9O3JldHVybiB0aGlzLnRhcmdldCgpLm9mZihcImR1cmluZy5meFwiLGkpLm9uKFwiZHVyaW5nLmZ4XCIsaSksdGhpcy5hZnRlcigoZnVuY3Rpb24oKXt0aGlzLm9mZihcImR1cmluZy5meFwiLGkpfSkpLHRoaXMuX2NhbGxTdGFydCgpfSxhZnRlckFsbDpmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbiBlKGkpe3QuY2FsbCh0aGlzKSx0aGlzLm9mZihcImFsbGZpbmlzaGVkLmZ4XCIsZSl9O3JldHVybiB0aGlzLnRhcmdldCgpLm9mZihcImFsbGZpbmlzaGVkLmZ4XCIsZSkub24oXCJhbGxmaW5pc2hlZC5meFwiLGUpLHRoaXMuX2NhbGxTdGFydCgpfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l0dWF0aW9ucy5sZW5ndGg/dGhpcy5zaXR1YXRpb25zW3RoaXMuc2l0dWF0aW9ucy5sZW5ndGgtMV06dGhpcy5zaXR1YXRpb259LGFkZDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMubGFzdCgpW2l8fFwiYW5pbWF0aW9uc1wiXVt0XT1lLHRoaXMuX2NhbGxTdGFydCgpfSxzdGVwOmZ1bmN0aW9uKHQpe3ZhciBlLGksYTt0fHwodGhpcy5hYnNQb3M9dGhpcy50aW1lVG9BYnNQb3MoK25ldyBEYXRlKSksITEhPT10aGlzLnNpdHVhdGlvbi5sb29wcz8oZT1NYXRoLm1heCh0aGlzLmFic1BvcywwKSxpPU1hdGguZmxvb3IoZSksITA9PT10aGlzLnNpdHVhdGlvbi5sb29wc3x8aTx0aGlzLnNpdHVhdGlvbi5sb29wcz8odGhpcy5wb3M9ZS1pLGE9dGhpcy5zaXR1YXRpb24ubG9vcCx0aGlzLnNpdHVhdGlvbi5sb29wPWkpOih0aGlzLmFic1Bvcz10aGlzLnNpdHVhdGlvbi5sb29wcyx0aGlzLnBvcz0xLGE9dGhpcy5zaXR1YXRpb24ubG9vcC0xLHRoaXMuc2l0dWF0aW9uLmxvb3A9dGhpcy5zaXR1YXRpb24ubG9vcHMpLHRoaXMuc2l0dWF0aW9uLnJldmVyc2luZyYmKHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkPXRoaXMuc2l0dWF0aW9uLnJldmVyc2VkIT1Cb29sZWFuKCh0aGlzLnNpdHVhdGlvbi5sb29wLWEpJTIpKSk6KHRoaXMuYWJzUG9zPU1hdGgubWluKHRoaXMuYWJzUG9zLDEpLHRoaXMucG9zPXRoaXMuYWJzUG9zKSx0aGlzLnBvczwwJiYodGhpcy5wb3M9MCksdGhpcy5zaXR1YXRpb24ucmV2ZXJzZWQmJih0aGlzLnBvcz0xLXRoaXMucG9zKTt2YXIgcz10aGlzLnNpdHVhdGlvbi5lYXNlKHRoaXMucG9zKTtmb3IodmFyIHIgaW4gdGhpcy5zaXR1YXRpb24ub25jZSlyPnRoaXMubGFzdFBvcyYmcjw9cyYmKHRoaXMuc2l0dWF0aW9uLm9uY2Vbcl0uY2FsbCh0aGlzLnRhcmdldCgpLHRoaXMucG9zLHMpLGRlbGV0ZSB0aGlzLnNpdHVhdGlvbi5vbmNlW3JdKTtyZXR1cm4gdGhpcy5hY3RpdmUmJnRoaXMudGFyZ2V0KCkuZmlyZShcImR1cmluZ1wiLHtwb3M6dGhpcy5wb3MsZWFzZWQ6cyxmeDp0aGlzLHNpdHVhdGlvbjp0aGlzLnNpdHVhdGlvbn0pLHRoaXMuc2l0dWF0aW9uPyh0aGlzLmVhY2hBdCgpLDE9PXRoaXMucG9zJiYhdGhpcy5zaXR1YXRpb24ucmV2ZXJzZWR8fHRoaXMuc2l0dWF0aW9uLnJldmVyc2VkJiYwPT10aGlzLnBvcz8odGhpcy5zdG9wQW5pbUZyYW1lKCksdGhpcy50YXJnZXQoKS5maXJlKFwiZmluaXNoZWRcIix7Zng6dGhpcyxzaXR1YXRpb246dGhpcy5zaXR1YXRpb259KSx0aGlzLnNpdHVhdGlvbnMubGVuZ3RofHwodGhpcy50YXJnZXQoKS5maXJlKFwiYWxsZmluaXNoZWRcIiksdGhpcy5zaXR1YXRpb25zLmxlbmd0aHx8KHRoaXMudGFyZ2V0KCkub2ZmKFwiLmZ4XCIpLHRoaXMuYWN0aXZlPSExKSksdGhpcy5hY3RpdmU/dGhpcy5kZXF1ZXVlKCk6dGhpcy5jbGVhckN1cnJlbnQoKSk6IXRoaXMucGF1c2VkJiZ0aGlzLmFjdGl2ZSYmdGhpcy5zdGFydEFuaW1GcmFtZSgpLHRoaXMubGFzdFBvcz1zLHRoaXMpOnRoaXN9LGVhY2hBdDpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcyxpPXRoaXMudGFyZ2V0KCkscz10aGlzLnNpdHVhdGlvbjtmb3IodmFyIHIgaW4gcy5hbmltYXRpb25zKXQ9W10uY29uY2F0KHMuYW5pbWF0aW9uc1tyXSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdCYmdC5hdD90LmF0KHMuZWFzZShlLnBvcyksZS5wb3MpOnR9KSksaVtyXS5hcHBseShpLHQpO2Zvcih2YXIgciBpbiBzLmF0dHJzKXQ9W3JdLmNvbmNhdChzLmF0dHJzW3JdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiZ0LmF0P3QuYXQocy5lYXNlKGUucG9zKSxlLnBvcyk6dH0pKSxpLmF0dHIuYXBwbHkoaSx0KTtmb3IodmFyIHIgaW4gcy5zdHlsZXMpdD1bcl0uY29uY2F0KHMuc3R5bGVzW3JdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0JiZ0LmF0P3QuYXQocy5lYXNlKGUucG9zKSxlLnBvcyk6dH0pKSxpLnN0eWxlLmFwcGx5KGksdCk7aWYocy50cmFuc2Zvcm1zLmxlbmd0aCl7dD1zLmluaXRpYWxUcmFuc2Zvcm1hdGlvbixyPTA7Zm9yKHZhciBvPXMudHJhbnNmb3Jtcy5sZW5ndGg7cjxvO3IrKyl7dmFyIG49cy50cmFuc2Zvcm1zW3JdO24gaW5zdGFuY2VvZiBhLk1hdHJpeD90PW4ucmVsYXRpdmU/dC5tdWx0aXBseSgobmV3IGEuTWF0cml4KS5tb3JwaChuKS5hdChzLmVhc2UodGhpcy5wb3MpKSk6dC5tb3JwaChuKS5hdChzLmVhc2UodGhpcy5wb3MpKToobi5yZWxhdGl2ZXx8bi51bmRvKHQuZXh0cmFjdCgpKSx0PXQubXVsdGlwbHkobi5hdChzLmVhc2UodGhpcy5wb3MpKSkpfWkubWF0cml4KHQpfXJldHVybiB0aGlzfSxvbmNlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgYT10aGlzLmxhc3QoKTtyZXR1cm4gaXx8KHQ9YS5lYXNlKHQpKSxhLm9uY2VbdF09ZSx0aGlzfSxfY2FsbFN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLnN0YXJ0KCl9LmJpbmQodGhpcyksMCksdGhpc319LHBhcmVudDphLkVsZW1lbnQsY29uc3RydWN0OnthbmltYXRlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4odGhpcy5meHx8KHRoaXMuZng9bmV3IGEuRlgodGhpcykpKS5hbmltYXRlKHQsZSxpKX0sZGVsYXk6ZnVuY3Rpb24odCl7cmV0dXJuKHRoaXMuZnh8fCh0aGlzLmZ4PW5ldyBhLkZYKHRoaXMpKSkuZGVsYXkodCl9LHN0b3A6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5meCYmdGhpcy5meC5zdG9wKHQsZSksdGhpc30sZmluaXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZngmJnRoaXMuZnguZmluaXNoKCksdGhpc319fSksYS5Nb3JwaE9iaj1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEuQ29sb3IuaXNDb2xvcihlKT9uZXcgYS5Db2xvcih0KS5tb3JwaChlKTphLnJlZ2V4LmRlbGltaXRlci50ZXN0KHQpP2EucmVnZXgucGF0aExldHRlcnMudGVzdCh0KT9uZXcgYS5QYXRoQXJyYXkodCkubW9ycGgoZSk6bmV3IGEuQXJyYXkodCkubW9ycGgoZSk6YS5yZWdleC5udW1iZXJBbmRVbml0LnRlc3QoZSk/bmV3IGEuTnVtYmVyKHQpLm1vcnBoKGUpOih0aGlzLnZhbHVlPXQsdm9pZCh0aGlzLmRlc3RpbmF0aW9uPWUpKX0sZXh0ZW5kOnthdDpmdW5jdGlvbih0LGUpe3JldHVybiBlPDE/dGhpcy52YWx1ZTp0aGlzLmRlc3RpbmF0aW9ufSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9fX0pLGEuZXh0ZW5kKGEuRlgse2F0dHI6ZnVuY3Rpb24odCxlLGEpe2lmKFwib2JqZWN0XCI9PT1pKHQpKWZvcih2YXIgcyBpbiB0KXRoaXMuYXR0cihzLHRbc10pO2Vsc2UgdGhpcy5hZGQodCxlLFwiYXR0cnNcIik7cmV0dXJuIHRoaXN9LHBsb3Q6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIDQ9PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wbG90KFt0LGUsaSxhXSk6dGhpcy5hZGQoXCJwbG90XCIsbmV3KHRoaXMudGFyZ2V0KCkubW9ycGhBcnJheSkodCkpfX0pLGEuQm94PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlLHMscil7aWYoIShcIm9iamVjdFwiIT09aSh0KXx8dCBpbnN0YW5jZW9mIGEuRWxlbWVudCkpcmV0dXJuIGEuQm94LmNhbGwodGhpcyxudWxsIT10LmxlZnQ/dC5sZWZ0OnQueCxudWxsIT10LnRvcD90LnRvcDp0LnksdC53aWR0aCx0LmhlaWdodCk7dmFyIG87ND09YXJndW1lbnRzLmxlbmd0aCYmKHRoaXMueD10LHRoaXMueT1lLHRoaXMud2lkdGg9cyx0aGlzLmhlaWdodD1yKSxudWxsPT0obz10aGlzKS54JiYoby54PTAsby55PTAsby53aWR0aD0wLG8uaGVpZ2h0PTApLG8udz1vLndpZHRoLG8uaD1vLmhlaWdodCxvLngyPW8ueCtvLndpZHRoLG8ueTI9by55K28uaGVpZ2h0LG8uY3g9by54K28ud2lkdGgvMixvLmN5PW8ueStvLmhlaWdodC8yfX0pLGEuQkJveD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQpe2lmKGEuQm94LmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKSx0IGluc3RhbmNlb2YgYS5FbGVtZW50KXt2YXIgaTt0cnl7aWYoIWUuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKXtmb3IodmFyIHM9dC5ub2RlO3MucGFyZW50Tm9kZTspcz1zLnBhcmVudE5vZGU7aWYocyE9ZSl0aHJvdyBuZXcgRXJyb3IoXCJFbGVtZW50IG5vdCBpbiB0aGUgZG9tXCIpfWk9dC5ub2RlLmdldEJCb3goKX1jYXRjaChlKXtpZih0IGluc3RhbmNlb2YgYS5TaGFwZSl7YS5wYXJzZXIuZHJhd3x8YS5wcmVwYXJlKCk7dmFyIHI9dC5jbG9uZShhLnBhcnNlci5kcmF3Lmluc3RhbmNlKS5zaG93KCk7ciYmci5ub2RlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLm5vZGUuZ2V0QkJveCYmKGk9ci5ub2RlLmdldEJCb3goKSksciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5yZW1vdmUmJnIucmVtb3ZlKCl9ZWxzZSBpPXt4OnQubm9kZS5jbGllbnRMZWZ0LHk6dC5ub2RlLmNsaWVudFRvcCx3aWR0aDp0Lm5vZGUuY2xpZW50V2lkdGgsaGVpZ2h0OnQubm9kZS5jbGllbnRIZWlnaHR9fWEuQm94LmNhbGwodGhpcyxpKX19LGluaGVyaXQ6YS5Cb3gscGFyZW50OmEuRWxlbWVudCxjb25zdHJ1Y3Q6e2Jib3g6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuQkJveCh0aGlzKX19fSksYS5CQm94LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLkJCb3gsYS5NYXRyaXg9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt2YXIgZT1mKFsxLDAsMCwxLDAsMF0pO3Q9bnVsbD09PXQ/ZTp0IGluc3RhbmNlb2YgYS5FbGVtZW50P3QubWF0cml4aWZ5KCk6XCJzdHJpbmdcIj09dHlwZW9mIHQ/Zih0LnNwbGl0KGEucmVnZXguZGVsaW1pdGVyKS5tYXAocGFyc2VGbG9hdCkpOjY9PWFyZ3VtZW50cy5sZW5ndGg/ZihbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpOkFycmF5LmlzQXJyYXkodCk/Zih0KTp0JiZcIm9iamVjdFwiPT09aSh0KT90OmU7Zm9yKHZhciBzPXYubGVuZ3RoLTE7cz49MDstLXMpdGhpc1t2W3NdXT1udWxsIT10W3Zbc11dP3RbdltzXV06ZVt2W3NdXX0sZXh0ZW5kOntleHRyYWN0OmZ1bmN0aW9uKCl7dmFyIHQ9cCh0aGlzLDAsMSk7cCh0aGlzLDEsMCk7dmFyIGU9MTgwL01hdGguUEkqTWF0aC5hdGFuMih0LnksdC54KS05MDtyZXR1cm57eDp0aGlzLmUseTp0aGlzLmYsdHJhbnNmb3JtZWRYOih0aGlzLmUqTWF0aC5jb3MoZSpNYXRoLlBJLzE4MCkrdGhpcy5mKk1hdGguc2luKGUqTWF0aC5QSS8xODApKS9NYXRoLnNxcnQodGhpcy5hKnRoaXMuYSt0aGlzLmIqdGhpcy5iKSx0cmFuc2Zvcm1lZFk6KHRoaXMuZipNYXRoLmNvcyhlKk1hdGguUEkvMTgwKSt0aGlzLmUqTWF0aC5zaW4oLWUqTWF0aC5QSS8xODApKS9NYXRoLnNxcnQodGhpcy5jKnRoaXMuYyt0aGlzLmQqdGhpcy5kKSxyb3RhdGlvbjplLGE6dGhpcy5hLGI6dGhpcy5iLGM6dGhpcy5jLGQ6dGhpcy5kLGU6dGhpcy5lLGY6dGhpcy5mLG1hdHJpeDpuZXcgYS5NYXRyaXgodGhpcyl9fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcyl9LG1vcnBoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBhLk1hdHJpeCh0KSx0aGlzfSxtdWx0aXBseTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubmF0aXZlKCkubXVsdGlwbHkoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBhLk1hdHJpeHx8KHQ9bmV3IGEuTWF0cml4KHQpKSx0fSh0KS5uYXRpdmUoKSkpfSxpbnZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLk1hdHJpeCh0aGlzLm5hdGl2ZSgpLmludmVyc2UoKSl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgYS5NYXRyaXgodGhpcy5uYXRpdmUoKS50cmFuc2xhdGUodHx8MCxlfHwwKSl9LG5hdGl2ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1hLnBhcnNlci5uYXRpdmUuY3JlYXRlU1ZHTWF0cml4KCksZT12Lmxlbmd0aC0xO2U+PTA7ZS0tKXRbdltlXV09dGhpc1t2W2VdXTtyZXR1cm4gdH0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm5cIm1hdHJpeChcIitiKHRoaXMuYSkrXCIsXCIrYih0aGlzLmIpK1wiLFwiK2IodGhpcy5jKStcIixcIitiKHRoaXMuZCkrXCIsXCIrYih0aGlzLmUpK1wiLFwiK2IodGhpcy5mKStcIilcIn19LHBhcmVudDphLkVsZW1lbnQsY29uc3RydWN0OntjdG06ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuTWF0cml4KHRoaXMubm9kZS5nZXRDVE0oKSl9LHNjcmVlbkNUTTpmdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBhLk5lc3RlZCl7dmFyIHQ9dGhpcy5yZWN0KDEsMSksZT10Lm5vZGUuZ2V0U2NyZWVuQ1RNKCk7cmV0dXJuIHQucmVtb3ZlKCksbmV3IGEuTWF0cml4KGUpfXJldHVybiBuZXcgYS5NYXRyaXgodGhpcy5ub2RlLmdldFNjcmVlbkNUTSgpKX19fSksYS5Qb2ludD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKHQsZSl7dmFyIGE7YT1BcnJheS5pc0FycmF5KHQpP3t4OnRbMF0seTp0WzFdfTpcIm9iamVjdFwiPT09aSh0KT97eDp0LngseTp0Lnl9Om51bGwhPXQ/e3g6dCx5Om51bGwhPWU/ZTp0fTp7eDowLHk6MH0sdGhpcy54PWEueCx0aGlzLnk9YS55fSxleHRlbmQ6e2Nsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhLlBvaW50KHRoaXMpfSxtb3JwaDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRlc3RpbmF0aW9uPW5ldyBhLlBvaW50KHQsZSksdGhpc319fSksYS5leHRlbmQoYS5FbGVtZW50LHtwb2ludDpmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgYS5Qb2ludCh0LGUpLnRyYW5zZm9ybSh0aGlzLnNjcmVlbkNUTSgpLmludmVyc2UoKSl9fSksYS5leHRlbmQoYS5FbGVtZW50LHthdHRyOmZ1bmN0aW9uKHQsZSxzKXtpZihudWxsPT10KXtmb3IodD17fSxzPShlPXRoaXMubm9kZS5hdHRyaWJ1dGVzKS5sZW5ndGgtMTtzPj0wO3MtLSl0W2Vbc10ubm9kZU5hbWVdPWEucmVnZXguaXNOdW1iZXIudGVzdChlW3NdLm5vZGVWYWx1ZSk/cGFyc2VGbG9hdChlW3NdLm5vZGVWYWx1ZSk6ZVtzXS5ub2RlVmFsdWU7cmV0dXJuIHR9aWYoXCJvYmplY3RcIj09PWkodCkpZm9yKHZhciByIGluIHQpdGhpcy5hdHRyKHIsdFtyXSk7ZWxzZSBpZihudWxsPT09ZSl0aGlzLm5vZGUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7aWYobnVsbD09ZSlyZXR1cm4gbnVsbD09KGU9dGhpcy5ub2RlLmdldEF0dHJpYnV0ZSh0KSk/YS5kZWZhdWx0cy5hdHRyc1t0XTphLnJlZ2V4LmlzTnVtYmVyLnRlc3QoZSk/cGFyc2VGbG9hdChlKTplO1wic3Ryb2tlLXdpZHRoXCI9PXQ/dGhpcy5hdHRyKFwic3Ryb2tlXCIscGFyc2VGbG9hdChlKT4wP3RoaXMuX3N0cm9rZTpudWxsKTpcInN0cm9rZVwiPT10JiYodGhpcy5fc3Ryb2tlPWUpLFwiZmlsbFwiIT10JiZcInN0cm9rZVwiIT10fHwoYS5yZWdleC5pc0ltYWdlLnRlc3QoZSkmJihlPXRoaXMuZG9jKCkuZGVmcygpLmltYWdlKGUsMCwwKSksZSBpbnN0YW5jZW9mIGEuSW1hZ2UmJihlPXRoaXMuZG9jKCkuZGVmcygpLnBhdHRlcm4oMCwwLChmdW5jdGlvbigpe3RoaXMuYWRkKGUpfSkpKSksXCJudW1iZXJcIj09dHlwZW9mIGU/ZT1uZXcgYS5OdW1iZXIoZSk6YS5Db2xvci5pc0NvbG9yKGUpP2U9bmV3IGEuQ29sb3IoZSk6QXJyYXkuaXNBcnJheShlKSYmKGU9bmV3IGEuQXJyYXkoZSkpLFwibGVhZGluZ1wiPT10P3RoaXMubGVhZGluZyYmdGhpcy5sZWFkaW5nKGUpOlwic3RyaW5nXCI9PXR5cGVvZiBzP3RoaXMubm9kZS5zZXRBdHRyaWJ1dGVOUyhzLHQsZS50b1N0cmluZygpKTp0aGlzLm5vZGUuc2V0QXR0cmlidXRlKHQsZS50b1N0cmluZygpKSwhdGhpcy5yZWJ1aWxkfHxcImZvbnQtc2l6ZVwiIT10JiZcInhcIiE9dHx8dGhpcy5yZWJ1aWxkKHQsZSl9cmV0dXJuIHRoaXN9fSksYS5leHRlbmQoYS5FbGVtZW50LHt0cmFuc2Zvcm06ZnVuY3Rpb24odCxlKXt2YXIgcztyZXR1cm5cIm9iamVjdFwiIT09aSh0KT8ocz1uZXcgYS5NYXRyaXgodGhpcykuZXh0cmFjdCgpLFwic3RyaW5nXCI9PXR5cGVvZiB0P3NbdF06cyk6KHM9bmV3IGEuTWF0cml4KHRoaXMpLGU9ISFlfHwhIXQucmVsYXRpdmUsbnVsbCE9dC5hJiYocz1lP3MubXVsdGlwbHkobmV3IGEuTWF0cml4KHQpKTpuZXcgYS5NYXRyaXgodCkpLHRoaXMuYXR0cihcInRyYW5zZm9ybVwiLHMpKX19KSxhLmV4dGVuZChhLkVsZW1lbnQse3VudHJhbnNmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cihcInRyYW5zZm9ybVwiLG51bGwpfSxtYXRyaXhpZnk6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5hdHRyKFwidHJhbnNmb3JtXCIpfHxcIlwiKS5zcGxpdChhLnJlZ2V4LnRyYW5zZm9ybXMpLnNsaWNlKDAsLTEpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9dC50cmltKCkuc3BsaXQoXCIoXCIpO3JldHVybltlWzBdLGVbMV0uc3BsaXQoYS5yZWdleC5kZWxpbWl0ZXIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlRmxvYXQodCl9KSldfSkpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm5cIm1hdHJpeFwiPT1lWzBdP3QubXVsdGlwbHkoZihlWzFdKSk6dFtlWzBdXS5hcHBseSh0LGVbMV0pfSksbmV3IGEuTWF0cml4KX0sdG9QYXJlbnQ6ZnVuY3Rpb24odCl7aWYodGhpcz09dClyZXR1cm4gdGhpczt2YXIgZT10aGlzLnNjcmVlbkNUTSgpLGk9dC5zY3JlZW5DVE0oKS5pbnZlcnNlKCk7cmV0dXJuIHRoaXMuYWRkVG8odCkudW50cmFuc2Zvcm0oKS50cmFuc2Zvcm0oaS5tdWx0aXBseShlKSksdGhpc30sdG9Eb2M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1BhcmVudCh0aGlzLmRvYygpKX19KSxhLlRyYW5zZm9ybWF0aW9uPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCxlKXtpZihhcmd1bWVudHMubGVuZ3RoPjEmJlwiYm9vbGVhblwiIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgYT0wLHM9dGhpcy5hcmd1bWVudHMubGVuZ3RoO2E8czsrK2EpdGhpc1t0aGlzLmFyZ3VtZW50c1thXV09dFthXTtlbHNlIGlmKHQmJlwib2JqZWN0XCI9PT1pKHQpKWZvcihhPTAscz10aGlzLmFyZ3VtZW50cy5sZW5ndGg7YTxzOysrYSl0aGlzW3RoaXMuYXJndW1lbnRzW2FdXT10W3RoaXMuYXJndW1lbnRzW2FdXTt0aGlzLmludmVyc2VkPSExLCEwPT09ZSYmKHRoaXMuaW52ZXJzZWQ9ITApfX0pLGEuVHJhbnNsYXRlPWEuaW52ZW50KHtwYXJlbnQ6YS5NYXRyaXgsaW5oZXJpdDphLlRyYW5zZm9ybWF0aW9uLGNyZWF0ZTpmdW5jdGlvbih0LGUpe3RoaXMuY29uc3RydWN0b3IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxleHRlbmQ6e2FyZ3VtZW50czpbXCJ0cmFuc2Zvcm1lZFhcIixcInRyYW5zZm9ybWVkWVwiXSxtZXRob2Q6XCJ0cmFuc2xhdGVcIn19KSxhLmV4dGVuZChhLkVsZW1lbnQse3N0eWxlOmZ1bmN0aW9uKHQsZSl7aWYoMD09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5ub2RlLnN0eWxlLmNzc1RleHR8fFwiXCI7aWYoYXJndW1lbnRzLmxlbmd0aDwyKWlmKFwib2JqZWN0XCI9PT1pKHQpKWZvcih2YXIgcyBpbiB0KXRoaXMuc3R5bGUocyx0W3NdKTtlbHNle2lmKCFhLnJlZ2V4LmlzQ3NzLnRlc3QodCkpcmV0dXJuIHRoaXMubm9kZS5zdHlsZVtjKHQpXTtmb3IodD10LnNwbGl0KC9cXHMqO1xccyovKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KC9cXHMqOlxccyovKX0pKTtlPXQucG9wKCk7KXRoaXMuc3R5bGUoZVswXSxlWzFdKX1lbHNlIHRoaXMubm9kZS5zdHlsZVtjKHQpXT1udWxsPT09ZXx8YS5yZWdleC5pc0JsYW5rLnRlc3QoZSk/XCJcIjplO3JldHVybiB0aGlzfX0pLGEuUGFyZW50PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6YS5FbGVtZW50LGV4dGVuZDp7Y2hpbGRyZW46ZnVuY3Rpb24oKXtyZXR1cm4gYS51dGlscy5tYXAoYS51dGlscy5maWx0ZXJTVkdFbGVtZW50cyh0aGlzLm5vZGUuY2hpbGROb2RlcyksKGZ1bmN0aW9uKHQpe3JldHVybiBhLmFkb3B0KHQpfSkpfSxhZGQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZT90aGlzLm5vZGUuYXBwZW5kQ2hpbGQodC5ub2RlKTp0Lm5vZGUhPXRoaXMubm9kZS5jaGlsZE5vZGVzW2VdJiZ0aGlzLm5vZGUuaW5zZXJ0QmVmb3JlKHQubm9kZSx0aGlzLm5vZGUuY2hpbGROb2Rlc1tlXSksdGhpc30scHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKHQsZSksdH0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluZGV4KHQpPj0wfSxpbmRleDpmdW5jdGlvbih0KXtyZXR1cm5bXS5zbGljZS5jYWxsKHRoaXMubm9kZS5jaGlsZE5vZGVzKS5pbmRleE9mKHQubm9kZSl9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gYS5hZG9wdCh0aGlzLm5vZGUuY2hpbGROb2Rlc1t0XSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KHRoaXMubm9kZS5jaGlsZE5vZGVzLmxlbmd0aC0xKX0sZWFjaDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT10aGlzLmNoaWxkcmVuKCkscz0wLHI9aS5sZW5ndGg7czxyO3MrKylpW3NdaW5zdGFuY2VvZiBhLkVsZW1lbnQmJnQuYXBwbHkoaVtzXSxbcyxpXSksZSYmaVtzXWluc3RhbmNlb2YgYS5Db250YWluZXImJmlbc10uZWFjaCh0LGUpO3JldHVybiB0aGlzfSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vZGUucmVtb3ZlQ2hpbGQodC5ub2RlKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe2Zvcig7dGhpcy5ub2RlLmhhc0NoaWxkTm9kZXMoKTspdGhpcy5ub2RlLnJlbW92ZUNoaWxkKHRoaXMubm9kZS5sYXN0Q2hpbGQpO3JldHVybiBkZWxldGUgdGhpcy5fZGVmcyx0aGlzfSxkZWZzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jKCkuZGVmcygpfX19KSxhLmV4dGVuZChhLlBhcmVudCx7dW5ncm91cDpmdW5jdGlvbih0LGUpe3JldHVybiAwPT09ZXx8dGhpcyBpbnN0YW5jZW9mIGEuRGVmc3x8dGhpcy5ub2RlPT1hLnBhcnNlci5kcmF3fHwodD10fHwodGhpcyBpbnN0YW5jZW9mIGEuRG9jP3RoaXM6dGhpcy5wYXJlbnQoYS5QYXJlbnQpKSxlPWV8fDEvMCx0aGlzLmVhY2goKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhLkRlZnM/dGhpczp0aGlzIGluc3RhbmNlb2YgYS5QYXJlbnQ/dGhpcy51bmdyb3VwKHQsZS0xKTp0aGlzLnRvUGFyZW50KHQpfSkpLHRoaXMubm9kZS5maXJzdENoaWxkfHx0aGlzLnJlbW92ZSgpKSx0aGlzfSxmbGF0dGVuOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudW5ncm91cCh0LGUpfX0pLGEuQ29udGFpbmVyPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6YS5QYXJlbnR9KSxhLlZpZXdCb3g9YS5pbnZlbnQoe3BhcmVudDphLkNvbnRhaW5lcixjb25zdHJ1Y3Q6e319KSxbXCJjbGlja1wiLFwiZGJsY2xpY2tcIixcIm1vdXNlZG93blwiLFwibW91c2V1cFwiLFwibW91c2VvdmVyXCIsXCJtb3VzZW91dFwiLFwibW91c2Vtb3ZlXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcInRvdWNobGVhdmVcIixcInRvdWNoZW5kXCIsXCJ0b3VjaGNhbmNlbFwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXthLkVsZW1lbnQucHJvdG90eXBlW3RdPWZ1bmN0aW9uKGUpe3JldHVybiBhLm9uKHRoaXMubm9kZSx0LGUpLHRoaXN9fSkpLGEubGlzdGVuZXJzPVtdLGEuaGFuZGxlck1hcD1bXSxhLmxpc3RlbmVySWQ9MCxhLm9uPWZ1bmN0aW9uKHQsZSxpLHMscil7dmFyIG89aS5iaW5kKHN8fHQuaW5zdGFuY2V8fHQpLG49KGEuaGFuZGxlck1hcC5pbmRleE9mKHQpKzF8fGEuaGFuZGxlck1hcC5wdXNoKHQpKS0xLGw9ZS5zcGxpdChcIi5cIilbMF0saD1lLnNwbGl0KFwiLlwiKVsxXXx8XCIqXCI7YS5saXN0ZW5lcnNbbl09YS5saXN0ZW5lcnNbbl18fHt9LGEubGlzdGVuZXJzW25dW2xdPWEubGlzdGVuZXJzW25dW2xdfHx7fSxhLmxpc3RlbmVyc1tuXVtsXVtoXT1hLmxpc3RlbmVyc1tuXVtsXVtoXXx8e30saS5fc3ZnanNMaXN0ZW5lcklkfHwoaS5fc3ZnanNMaXN0ZW5lcklkPSsrYS5saXN0ZW5lcklkKSxhLmxpc3RlbmVyc1tuXVtsXVtoXVtpLl9zdmdqc0xpc3RlbmVySWRdPW8sdC5hZGRFdmVudExpc3RlbmVyKGwsbyxyfHx7cGFzc2l2ZTohMH0pfSxhLm9mZj1mdW5jdGlvbih0LGUsaSl7dmFyIHM9YS5oYW5kbGVyTWFwLmluZGV4T2YodCkscj1lJiZlLnNwbGl0KFwiLlwiKVswXSxvPWUmJmUuc3BsaXQoXCIuXCIpWzFdLG49XCJcIjtpZigtMSE9cylpZihpKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpJiYoaT1pLl9zdmdqc0xpc3RlbmVySWQpLCFpKXJldHVybjthLmxpc3RlbmVyc1tzXVtyXSYmYS5saXN0ZW5lcnNbc11bcl1bb3x8XCIqXCJdJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKHIsYS5saXN0ZW5lcnNbc11bcl1bb3x8XCIqXCJdW2ldLCExKSxkZWxldGUgYS5saXN0ZW5lcnNbc11bcl1bb3x8XCIqXCJdW2ldKX1lbHNlIGlmKG8mJnIpe2lmKGEubGlzdGVuZXJzW3NdW3JdJiZhLmxpc3RlbmVyc1tzXVtyXVtvXSl7Zm9yKHZhciBsIGluIGEubGlzdGVuZXJzW3NdW3JdW29dKWEub2ZmKHQsW3Isb10uam9pbihcIi5cIiksbCk7ZGVsZXRlIGEubGlzdGVuZXJzW3NdW3JdW29dfX1lbHNlIGlmKG8pZm9yKHZhciBoIGluIGEubGlzdGVuZXJzW3NdKWZvcih2YXIgbiBpbiBhLmxpc3RlbmVyc1tzXVtoXSlvPT09biYmYS5vZmYodCxbaCxvXS5qb2luKFwiLlwiKSk7ZWxzZSBpZihyKXtpZihhLmxpc3RlbmVyc1tzXVtyXSl7Zm9yKHZhciBuIGluIGEubGlzdGVuZXJzW3NdW3JdKWEub2ZmKHQsW3Isbl0uam9pbihcIi5cIikpO2RlbGV0ZSBhLmxpc3RlbmVyc1tzXVtyXX19ZWxzZXtmb3IodmFyIGggaW4gYS5saXN0ZW5lcnNbc10pYS5vZmYodCxoKTtkZWxldGUgYS5saXN0ZW5lcnNbc10sZGVsZXRlIGEuaGFuZGxlck1hcFtzXX19LGEuZXh0ZW5kKGEuRWxlbWVudCx7b246ZnVuY3Rpb24odCxlLGkscyl7cmV0dXJuIGEub24odGhpcy5ub2RlLHQsZSxpLHMpLHRoaXN9LG9mZjpmdW5jdGlvbih0LGUpe3JldHVybiBhLm9mZih0aGlzLm5vZGUsdCxlKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKGUsaSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0LkV2ZW50P3RoaXMubm9kZS5kaXNwYXRjaEV2ZW50KGUpOnRoaXMubm9kZS5kaXNwYXRjaEV2ZW50KGU9bmV3IGEuQ3VzdG9tRXZlbnQoZSx7ZGV0YWlsOmksY2FuY2VsYWJsZTohMH0pKSx0aGlzLl9ldmVudD1lLHRoaXN9LGV2ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50fX0pLGEuRGVmcz1hLmludmVudCh7Y3JlYXRlOlwiZGVmc1wiLGluaGVyaXQ6YS5Db250YWluZXJ9KSxhLkc9YS5pbnZlbnQoe2NyZWF0ZTpcImdcIixpbmhlcml0OmEuQ29udGFpbmVyLGV4dGVuZDp7eDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnRyYW5zZm9ybShcInhcIik6dGhpcy50cmFuc2Zvcm0oe3g6dC10aGlzLngoKX0sITApfX0sY29uc3RydWN0Ontncm91cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1dChuZXcgYS5HKX19fSksYS5Eb2M9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0JiYoXCJzdmdcIj09KHQ9XCJzdHJpbmdcIj09dHlwZW9mIHQ/ZS5nZXRFbGVtZW50QnlJZCh0KTp0KS5ub2RlTmFtZT90aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyx0KToodGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUoXCJzdmdcIikpLHQuYXBwZW5kQ2hpbGQodGhpcy5ub2RlKSx0aGlzLnNpemUoXCIxMDAlXCIsXCIxMDAlXCIpKSx0aGlzLm5hbWVzcGFjZSgpLmRlZnMoKSl9LGluaGVyaXQ6YS5Db250YWluZXIsZXh0ZW5kOntuYW1lc3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdHRyKHt4bWxuczphLm5zLHZlcnNpb246XCIxLjFcIn0pLmF0dHIoXCJ4bWxuczp4bGlua1wiLGEueGxpbmssYS54bWxucykuYXR0cihcInhtbG5zOnN2Z2pzXCIsYS5zdmdqcyxhLnhtbG5zKX0sZGVmczpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLl9kZWZzfHwoKHQ9dGhpcy5ub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZGVmc1wiKVswXSk/dGhpcy5fZGVmcz1hLmFkb3B0KHQpOnRoaXMuX2RlZnM9bmV3IGEuRGVmcyx0aGlzLm5vZGUuYXBwZW5kQ2hpbGQodGhpcy5fZGVmcy5ub2RlKSksdGhpcy5fZGVmc30scGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5wYXJlbnROb2RlJiZcIiNkb2N1bWVudFwiIT10aGlzLm5vZGUucGFyZW50Tm9kZS5ub2RlTmFtZT90aGlzLm5vZGUucGFyZW50Tm9kZTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5yZW1vdmVDaGlsZCh0aGlzLm5vZGUpLHRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLm5vZGUuaGFzQ2hpbGROb2RlcygpOyl0aGlzLm5vZGUucmVtb3ZlQ2hpbGQodGhpcy5ub2RlLmxhc3RDaGlsZCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9kZWZzLGEucGFyc2VyLmRyYXcmJiFhLnBhcnNlci5kcmF3LnBhcmVudE5vZGUmJnRoaXMubm9kZS5hcHBlbmRDaGlsZChhLnBhcnNlci5kcmF3KSx0aGlzfSxjbG9uZTpmdW5jdGlvbih0KXt0aGlzLndyaXRlRGF0YVRvRG9tKCk7dmFyIGU9dGhpcy5ub2RlLGk9eChlLmNsb25lTm9kZSghMCkpO3JldHVybiB0Pyh0Lm5vZGV8fHQpLmFwcGVuZENoaWxkKGkubm9kZSk6ZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLm5vZGUsZS5uZXh0U2libGluZyksaX19fSksYS5leHRlbmQoYS5FbGVtZW50LHt9KSxhLkdyYWRpZW50PWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUodCtcIkdyYWRpZW50XCIpKSx0aGlzLnR5cGU9dH0saW5oZXJpdDphLkNvbnRhaW5lcixleHRlbmQ6e2F0OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuU3RvcCkudXBkYXRlKHQsZSxpKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsZWFyKCksXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmdC5jYWxsKHRoaXMsdGhpcyksdGhpc30sZmlsbDpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm5cInRyYW5zZm9ybVwiPT10JiYodD1cImdyYWRpZW50VHJhbnNmb3JtXCIpLGEuQ29udGFpbmVyLnByb3RvdHlwZS5hdHRyLmNhbGwodGhpcyx0LGUsaSl9fSxjb25zdHJ1Y3Q6e2dyYWRpZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGVmcygpLmdyYWRpZW50KHQsZSl9fX0pLGEuZXh0ZW5kKGEuR3JhZGllbnQsYS5GWCx7ZnJvbTpmdW5jdGlvbih0LGUpe3JldHVyblwicmFkaWFsXCI9PSh0aGlzLl90YXJnZXR8fHRoaXMpLnR5cGU/dGhpcy5hdHRyKHtmeDpuZXcgYS5OdW1iZXIodCksZnk6bmV3IGEuTnVtYmVyKGUpfSk6dGhpcy5hdHRyKHt4MTpuZXcgYS5OdW1iZXIodCkseTE6bmV3IGEuTnVtYmVyKGUpfSl9LHRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJyYWRpYWxcIj09KHRoaXMuX3RhcmdldHx8dGhpcykudHlwZT90aGlzLmF0dHIoe2N4Om5ldyBhLk51bWJlcih0KSxjeTpuZXcgYS5OdW1iZXIoZSl9KTp0aGlzLmF0dHIoe3gyOm5ldyBhLk51bWJlcih0KSx5MjpuZXcgYS5OdW1iZXIoZSl9KX19KSxhLmV4dGVuZChhLkRlZnMse2dyYWRpZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLkdyYWRpZW50KHQpKS51cGRhdGUoZSl9fSksYS5TdG9wPWEuaW52ZW50KHtjcmVhdGU6XCJzdG9wXCIsaW5oZXJpdDphLkVsZW1lbnQsZXh0ZW5kOnt1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuKFwibnVtYmVyXCI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgYS5OdW1iZXIpJiYodD17b2Zmc2V0OmFyZ3VtZW50c1swXSxjb2xvcjphcmd1bWVudHNbMV0sb3BhY2l0eTphcmd1bWVudHNbMl19KSxudWxsIT10Lm9wYWNpdHkmJnRoaXMuYXR0cihcInN0b3Atb3BhY2l0eVwiLHQub3BhY2l0eSksbnVsbCE9dC5jb2xvciYmdGhpcy5hdHRyKFwic3RvcC1jb2xvclwiLHQuY29sb3IpLG51bGwhPXQub2Zmc2V0JiZ0aGlzLmF0dHIoXCJvZmZzZXRcIixuZXcgYS5OdW1iZXIodC5vZmZzZXQpKSx0aGlzfX19KSxhLlBhdHRlcm49YS5pbnZlbnQoe2NyZWF0ZTpcInBhdHRlcm5cIixpbmhlcml0OmEuQ29udGFpbmVyLGV4dGVuZDp7ZmlsbDpmdW5jdGlvbigpe3JldHVyblwidXJsKCNcIit0aGlzLmlkKCkrXCIpXCJ9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbGVhcigpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbCh0aGlzLHRoaXMpLHRoaXN9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCgpfSxhdHRyOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm5cInRyYW5zZm9ybVwiPT10JiYodD1cInBhdHRlcm5UcmFuc2Zvcm1cIiksYS5Db250YWluZXIucHJvdG90eXBlLmF0dHIuY2FsbCh0aGlzLHQsZSxpKX19LGNvbnN0cnVjdDp7cGF0dGVybjpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuZGVmcygpLnBhdHRlcm4odCxlLGkpfX19KSxhLmV4dGVuZChhLkRlZnMse3BhdHRlcm46ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgYS5QYXR0ZXJuKS51cGRhdGUoaSkuYXR0cih7eDowLHk6MCx3aWR0aDp0LGhlaWdodDplLHBhdHRlcm5Vbml0czpcInVzZXJTcGFjZU9uVXNlXCJ9KX19KSxhLlNoYXBlPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCl9LGluaGVyaXQ6YS5FbGVtZW50fSksYS5TeW1ib2w9YS5pbnZlbnQoe2NyZWF0ZTpcInN5bWJvbFwiLGluaGVyaXQ6YS5Db250YWluZXIsY29uc3RydWN0OntzeW1ib2w6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuU3ltYm9sKX19fSksYS5Vc2U9YS5pbnZlbnQoe2NyZWF0ZTpcInVzZVwiLGluaGVyaXQ6YS5TaGFwZSxleHRlbmQ6e2VsZW1lbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKFwiaHJlZlwiLChlfHxcIlwiKStcIiNcIit0LGEueGxpbmspfX0sY29uc3RydWN0Ont1c2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuVXNlKS5lbGVtZW50KHQsZSl9fX0pLGEuUmVjdD1hLmludmVudCh7Y3JlYXRlOlwicmVjdFwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e3JlY3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUmVjdCkuc2l6ZSh0LGUpfX19KSxhLkNpcmNsZT1hLmludmVudCh7Y3JlYXRlOlwiY2lyY2xlXCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7Y2lyY2xlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5DaXJjbGUpLnJ4KG5ldyBhLk51bWJlcih0KS5kaXZpZGUoMikpLm1vdmUoMCwwKX19fSksYS5leHRlbmQoYS5DaXJjbGUsYS5GWCx7cng6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcInJcIix0KX0scnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucngodCl9fSksYS5FbGxpcHNlPWEuaW52ZW50KHtjcmVhdGU6XCJlbGxpcHNlXCIsaW5oZXJpdDphLlNoYXBlLGNvbnN0cnVjdDp7ZWxsaXBzZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgYS5FbGxpcHNlKS5zaXplKHQsZSkubW92ZSgwLDApfX19KSxhLmV4dGVuZChhLkVsbGlwc2UsYS5SZWN0LGEuRlgse3J4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJyeFwiLHQpfSxyeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hdHRyKFwicnlcIix0KX19KSxhLmV4dGVuZChhLkNpcmNsZSxhLkVsbGlwc2Use3g6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5jeCgpLXRoaXMucngoKTp0aGlzLmN4KHQrdGhpcy5yeCgpKX0seTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmN5KCktdGhpcy5yeSgpOnRoaXMuY3kodCt0aGlzLnJ5KCkpfSxjeDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJjeFwiKTp0aGlzLmF0dHIoXCJjeFwiLHQpfSxjeTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmF0dHIoXCJjeVwiKTp0aGlzLmF0dHIoXCJjeVwiLHQpfSx3aWR0aDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8yKnRoaXMucngoKTp0aGlzLnJ4KG5ldyBhLk51bWJlcih0KS5kaXZpZGUoMikpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/Mip0aGlzLnJ5KCk6dGhpcy5yeShuZXcgYS5OdW1iZXIodCkuZGl2aWRlKDIpKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLnJ4KG5ldyBhLk51bWJlcihpLndpZHRoKS5kaXZpZGUoMikpLnJ5KG5ldyBhLk51bWJlcihpLmhlaWdodCkuZGl2aWRlKDIpKX19KSxhLkxpbmU9YS5pbnZlbnQoe2NyZWF0ZTpcImxpbmVcIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOnthcnJheTpmdW5jdGlvbigpe3JldHVybiBuZXcgYS5Qb2ludEFycmF5KFtbdGhpcy5hdHRyKFwieDFcIiksdGhpcy5hdHRyKFwieTFcIildLFt0aGlzLmF0dHIoXCJ4MlwiKSx0aGlzLmF0dHIoXCJ5MlwiKV1dKX0scGxvdDpmdW5jdGlvbih0LGUsaSxzKXtyZXR1cm4gbnVsbD09dD90aGlzLmFycmF5KCk6KHQ9dm9pZCAwIT09ZT97eDE6dCx5MTplLHgyOmkseTI6c306bmV3IGEuUG9pbnRBcnJheSh0KS50b0xpbmUoKSx0aGlzLmF0dHIodCkpfSxtb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXR0cih0aGlzLmFycmF5KCkubW92ZSh0LGUpLnRvTGluZSgpKX0sc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXUodGhpcyx0LGUpO3JldHVybiB0aGlzLmF0dHIodGhpcy5hcnJheSgpLnNpemUoaS53aWR0aCxpLmhlaWdodCkudG9MaW5lKCkpfX0sY29uc3RydWN0OntsaW5lOmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiBhLkxpbmUucHJvdG90eXBlLnBsb3QuYXBwbHkodGhpcy5wdXQobmV3IGEuTGluZSksbnVsbCE9dD9bdCxlLGksc106WzAsMCwwLDBdKX19fSksYS5Qb2x5bGluZT1hLmludmVudCh7Y3JlYXRlOlwicG9seWxpbmVcIixpbmhlcml0OmEuU2hhcGUsY29uc3RydWN0Ontwb2x5bGluZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuUG9seWxpbmUpLnBsb3QodHx8bmV3IGEuUG9pbnRBcnJheSl9fX0pLGEuUG9seWdvbj1hLmludmVudCh7Y3JlYXRlOlwicG9seWdvblwiLGluaGVyaXQ6YS5TaGFwZSxjb25zdHJ1Y3Q6e3BvbHlnb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlBvbHlnb24pLnBsb3QodHx8bmV3IGEuUG9pbnRBcnJheSl9fX0pLGEuZXh0ZW5kKGEuUG9seWxpbmUsYS5Qb2x5Z29uLHthcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnJheXx8KHRoaXMuX2FycmF5PW5ldyBhLlBvaW50QXJyYXkodGhpcy5hdHRyKFwicG9pbnRzXCIpKSl9LHBsb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOnRoaXMuY2xlYXIoKS5hdHRyKFwicG9pbnRzXCIsXCJzdHJpbmdcIj09dHlwZW9mIHQ/dDp0aGlzLl9hcnJheT1uZXcgYS5Qb2ludEFycmF5KHQpKX0sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gZGVsZXRlIHRoaXMuX2FycmF5LHRoaXN9LG1vdmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKFwicG9pbnRzXCIsdGhpcy5hcnJheSgpLm1vdmUodCxlKSl9LHNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT11KHRoaXMsdCxlKTtyZXR1cm4gdGhpcy5hdHRyKFwicG9pbnRzXCIsdGhpcy5hcnJheSgpLnNpemUoaS53aWR0aCxpLmhlaWdodCkpfX0pLGEuZXh0ZW5kKGEuTGluZSxhLlBvbHlsaW5lLGEuUG9seWdvbix7bW9ycGhBcnJheTphLlBvaW50QXJyYXkseDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmJib3goKS54OnRoaXMubW92ZSh0LHRoaXMuYmJveCgpLnkpfSx5OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYmJveCgpLnk6dGhpcy5tb3ZlKHRoaXMuYmJveCgpLngsdCl9LHdpZHRoOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYmJveCgpO3JldHVybiBudWxsPT10P2Uud2lkdGg6dGhpcy5zaXplKHQsZS5oZWlnaHQpfSxoZWlnaHQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5iYm94KCk7cmV0dXJuIG51bGw9PXQ/ZS5oZWlnaHQ6dGhpcy5zaXplKGUud2lkdGgsdCl9fSksYS5QYXRoPWEuaW52ZW50KHtjcmVhdGU6XCJwYXRoXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7bW9ycGhBcnJheTphLlBhdGhBcnJheSxhcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnJheXx8KHRoaXMuX2FycmF5PW5ldyBhLlBhdGhBcnJheSh0aGlzLmF0dHIoXCJkXCIpKSl9LHBsb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hcnJheSgpOnRoaXMuY2xlYXIoKS5hdHRyKFwiZFwiLFwic3RyaW5nXCI9PXR5cGVvZiB0P3Q6dGhpcy5fYXJyYXk9bmV3IGEuUGF0aEFycmF5KHQpKX0sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gZGVsZXRlIHRoaXMuX2FycmF5LHRoaXN9fSxjb25zdHJ1Y3Q6e3BhdGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLlBhdGgpLnBsb3QodHx8bmV3IGEuUGF0aEFycmF5KX19fSksYS5JbWFnZT1hLmludmVudCh7Y3JlYXRlOlwiaW1hZ2VcIixpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOntsb2FkOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiB0aGlzO3ZhciBpPXRoaXMscz1uZXcgdC5JbWFnZTtyZXR1cm4gYS5vbihzLFwibG9hZFwiLChmdW5jdGlvbigpe2Eub2ZmKHMpO3ZhciB0PWkucGFyZW50KGEuUGF0dGVybik7bnVsbCE9PXQmJigwPT1pLndpZHRoKCkmJjA9PWkuaGVpZ2h0KCkmJmkuc2l6ZShzLndpZHRoLHMuaGVpZ2h0KSx0JiYwPT10LndpZHRoKCkmJjA9PXQuaGVpZ2h0KCkmJnQuc2l6ZShpLndpZHRoKCksaS5oZWlnaHQoKSksXCJmdW5jdGlvblwiPT10eXBlb2YgaS5fbG9hZGVkJiZpLl9sb2FkZWQuY2FsbChpLHt3aWR0aDpzLndpZHRoLGhlaWdodDpzLmhlaWdodCxyYXRpbzpzLndpZHRoL3MuaGVpZ2h0LHVybDplfSkpfSkpLGEub24ocyxcImVycm9yXCIsKGZ1bmN0aW9uKHQpe2Eub2ZmKHMpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuX2Vycm9yJiZpLl9lcnJvci5jYWxsKGksdCl9KSksdGhpcy5hdHRyKFwiaHJlZlwiLHMuc3JjPXRoaXMuc3JjPWUsYS54bGluayl9LGxvYWRlZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbG9hZGVkPXQsdGhpc30sZXJyb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2Vycm9yPXQsdGhpc319LGNvbnN0cnVjdDp7aW1hZ2U6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgYS5JbWFnZSkubG9hZCh0KS5zaXplKGV8fDAsaXx8ZXx8MCl9fX0pLGEuVGV4dD1hLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsYS5jcmVhdGUoXCJ0ZXh0XCIpKSx0aGlzLmRvbS5sZWFkaW5nPW5ldyBhLk51bWJlcigxLjMpLHRoaXMuX3JlYnVpbGQ9ITAsdGhpcy5fYnVpbGQ9ITEsdGhpcy5hdHRyKFwiZm9udC1mYW1pbHlcIixhLmRlZmF1bHRzLmF0dHJzW1wiZm9udC1mYW1pbHlcIl0pfSxpbmhlcml0OmEuU2hhcGUsZXh0ZW5kOnt4OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcInhcIik6dGhpcy5hdHRyKFwieFwiLHQpfSx0ZXh0OmZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpe3Q9XCJcIjtmb3IodmFyIGU9dGhpcy5ub2RlLmNoaWxkTm9kZXMsaT0wLHM9ZS5sZW5ndGg7aTxzOysraSkwIT1pJiYzIT1lW2ldLm5vZGVUeXBlJiYxPT1hLmFkb3B0KGVbaV0pLmRvbS5uZXdMaW5lZCYmKHQrPVwiXFxuXCIpLHQrPWVbaV0udGV4dENvbnRlbnQ7cmV0dXJuIHR9aWYodGhpcy5jbGVhcigpLmJ1aWxkKCEwKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KXQuY2FsbCh0aGlzLHRoaXMpO2Vsc2V7aT0wO2Zvcih2YXIgcj0odD10LnNwbGl0KFwiXFxuXCIpKS5sZW5ndGg7aTxyO2krKyl0aGlzLnRzcGFuKHRbaV0pLm5ld0xpbmUoKX1yZXR1cm4gdGhpcy5idWlsZCghMSkucmVidWlsZCgpfSxzaXplOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJmb250LXNpemVcIix0KS5yZWJ1aWxkKCl9LGxlYWRpbmc6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5kb20ubGVhZGluZzoodGhpcy5kb20ubGVhZGluZz1uZXcgYS5OdW1iZXIodCksdGhpcy5yZWJ1aWxkKCkpfSxsaW5lczpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGUsZT1hLnV0aWxzLm1hcChhLnV0aWxzLmZpbHRlclNWR0VsZW1lbnRzKHQuY2hpbGROb2RlcyksKGZ1bmN0aW9uKHQpe3JldHVybiBhLmFkb3B0KHQpfSkpO3JldHVybiBuZXcgYS5TZXQoZSl9LHJlYnVpbGQ6ZnVuY3Rpb24odCl7aWYoXCJib29sZWFuXCI9PXR5cGVvZiB0JiYodGhpcy5fcmVidWlsZD10KSx0aGlzLl9yZWJ1aWxkKXt2YXIgZT10aGlzLGk9MCxzPXRoaXMuZG9tLmxlYWRpbmcqbmV3IGEuTnVtYmVyKHRoaXMuYXR0cihcImZvbnQtc2l6ZVwiKSk7dGhpcy5saW5lcygpLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5kb20ubmV3TGluZWQmJihlLnRleHRQYXRoKCl8fHRoaXMuYXR0cihcInhcIixlLmF0dHIoXCJ4XCIpKSxcIlxcblwiPT10aGlzLnRleHQoKT9pKz1zOih0aGlzLmF0dHIoXCJkeVwiLHMraSksaT0wKSl9KSksdGhpcy5maXJlKFwicmVidWlsZFwiKX1yZXR1cm4gdGhpc30sYnVpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2J1aWxkPSEhdCx0aGlzfSxzZXREYXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRvbT10LHRoaXMuZG9tLmxlYWRpbmc9bmV3IGEuTnVtYmVyKHQubGVhZGluZ3x8MS4zKSx0aGlzfX0sY29uc3RydWN0Ont0ZXh0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgYS5UZXh0KS50ZXh0KHQpfSxwbGFpbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IGEuVGV4dCkucGxhaW4odCl9fX0pLGEuVHNwYW49YS5pbnZlbnQoe2NyZWF0ZTpcInRzcGFuXCIsaW5oZXJpdDphLlNoYXBlLGV4dGVuZDp7dGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLm5vZGUudGV4dENvbnRlbnQrKHRoaXMuZG9tLm5ld0xpbmVkP1wiXFxuXCI6XCJcIik6KFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dC5jYWxsKHRoaXMsdGhpcyk6dGhpcy5wbGFpbih0KSx0aGlzKX0sZHg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cihcImR4XCIsdCl9LGR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJkeVwiLHQpfSxuZXdMaW5lOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnQoYS5UZXh0KTtyZXR1cm4gdGhpcy5kb20ubmV3TGluZWQ9ITAsdGhpcy5keSh0LmRvbS5sZWFkaW5nKnQuYXR0cihcImZvbnQtc2l6ZVwiKSkuYXR0cihcInhcIix0LngoKSl9fX0pLGEuZXh0ZW5kKGEuVGV4dCxhLlRzcGFuLHtwbGFpbjpmdW5jdGlvbih0KXtyZXR1cm4hMT09PXRoaXMuX2J1aWxkJiZ0aGlzLmNsZWFyKCksdGhpcy5ub2RlLmFwcGVuZENoaWxkKGUuY3JlYXRlVGV4dE5vZGUodCkpLHRoaXN9LHRzcGFuOmZ1bmN0aW9uKHQpe3ZhciBlPSh0aGlzLnRleHRQYXRoJiZ0aGlzLnRleHRQYXRoKCl8fHRoaXMpLm5vZGUsaT1uZXcgYS5Uc3BhbjtyZXR1cm4hMT09PXRoaXMuX2J1aWxkJiZ0aGlzLmNsZWFyKCksZS5hcHBlbmRDaGlsZChpLm5vZGUpLGkudGV4dCh0KX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9KHRoaXMudGV4dFBhdGgmJnRoaXMudGV4dFBhdGgoKXx8dGhpcykubm9kZTt0Lmhhc0NoaWxkTm9kZXMoKTspdC5yZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCk7cmV0dXJuIHRoaXN9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCl9fSksYS5UZXh0UGF0aD1hLmludmVudCh7Y3JlYXRlOlwidGV4dFBhdGhcIixpbmhlcml0OmEuUGFyZW50LHBhcmVudDphLlRleHQsY29uc3RydWN0Onttb3JwaEFycmF5OmEuUGF0aEFycmF5LGFycmF5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50cmFjaygpO3JldHVybiB0P3QuYXJyYXkoKTpudWxsfSxwbG90OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudHJhY2soKSxpPW51bGw7cmV0dXJuIGUmJihpPWUucGxvdCh0KSksbnVsbD09dD9pOnRoaXN9LHRyYWNrOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50ZXh0UGF0aCgpO2lmKHQpcmV0dXJuIHQucmVmZXJlbmNlKFwiaHJlZlwiKX0sdGV4dFBhdGg6ZnVuY3Rpb24oKXtpZih0aGlzLm5vZGUuZmlyc3RDaGlsZCYmXCJ0ZXh0UGF0aFwiPT10aGlzLm5vZGUuZmlyc3RDaGlsZC5ub2RlTmFtZSlyZXR1cm4gYS5hZG9wdCh0aGlzLm5vZGUuZmlyc3RDaGlsZCl9fX0pLGEuTmVzdGVkPWEuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxhLmNyZWF0ZShcInN2Z1wiKSksdGhpcy5zdHlsZShcIm92ZXJmbG93XCIsXCJ2aXNpYmxlXCIpfSxpbmhlcml0OmEuQ29udGFpbmVyLGNvbnN0cnVjdDp7bmVzdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHV0KG5ldyBhLk5lc3RlZCl9fX0pO3ZhciBsPXtzdHJva2U6W1wiY29sb3JcIixcIndpZHRoXCIsXCJvcGFjaXR5XCIsXCJsaW5lY2FwXCIsXCJsaW5lam9pblwiLFwibWl0ZXJsaW1pdFwiLFwiZGFzaGFycmF5XCIsXCJkYXNob2Zmc2V0XCJdLGZpbGw6W1wiY29sb3JcIixcIm9wYWNpdHlcIixcInJ1bGVcIl0scHJlZml4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJjb2xvclwiPT1lP3Q6dCtcIi1cIitlfX07ZnVuY3Rpb24gaCh0LGUsaSxzKXtyZXR1cm4gaStzLnJlcGxhY2UoYS5yZWdleC5kb3RzLFwiIC5cIil9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0oLikvZywoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpfSkpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKX1mdW5jdGlvbiBnKHQpe3ZhciBlPXQudG9TdHJpbmcoMTYpO3JldHVybiAxPT1lLmxlbmd0aD9cIjBcIitlOmV9ZnVuY3Rpb24gdSh0LGUsaSl7aWYobnVsbD09ZXx8bnVsbD09aSl7dmFyIGE9dC5iYm94KCk7bnVsbD09ZT9lPWEud2lkdGgvYS5oZWlnaHQqaTpudWxsPT1pJiYoaT1hLmhlaWdodC9hLndpZHRoKmUpfXJldHVybnt3aWR0aDplLGhlaWdodDppfX1mdW5jdGlvbiBwKHQsZSxpKXtyZXR1cm57eDplKnQuYStpKnQuYyswLHk6ZSp0LmIraSp0LmQrMH19ZnVuY3Rpb24gZih0KXtyZXR1cm57YTp0WzBdLGI6dFsxXSxjOnRbMl0sZDp0WzNdLGU6dFs0XSxmOnRbNV19fWZ1bmN0aW9uIHgoZSl7Zm9yKHZhciBpPWUuY2hpbGROb2Rlcy5sZW5ndGgtMTtpPj0wO2ktLSllLmNoaWxkTm9kZXNbaV1pbnN0YW5jZW9mIHQuU1ZHRWxlbWVudCYmeChlLmNoaWxkTm9kZXNbaV0pO3JldHVybiBhLmFkb3B0KGUpLmlkKGEuZWlkKGUubm9kZU5hbWUpKX1mdW5jdGlvbiBiKHQpe3JldHVybiBNYXRoLmFicyh0KT4xZS0zNz90OjB9W1wiZmlsbFwiLFwic3Ryb2tlXCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXt9O2VbdF09ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSlyZXR1cm4gdGhpcztpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8YS5Db2xvci5pc1JnYihlKXx8ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5maWxsKXRoaXMuYXR0cih0LGUpO2Vsc2UgZm9yKHZhciBpPWxbdF0ubGVuZ3RoLTE7aT49MDtpLS0pbnVsbCE9ZVtsW3RdW2ldXSYmdGhpcy5hdHRyKGwucHJlZml4KHQsbFt0XVtpXSksZVtsW3RdW2ldXSk7cmV0dXJuIHRoaXN9LGEuZXh0ZW5kKGEuRWxlbWVudCxhLkZYLGUpfSkpLGEuZXh0ZW5kKGEuRWxlbWVudCxhLkZYLHt0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0oe3g6dCx5OmV9KX0sbWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJ0cmFuc2Zvcm1cIixuZXcgYS5NYXRyaXgoNj09YXJndW1lbnRzLmxlbmd0aD9bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk6dCkpfSxvcGFjaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHIoXCJvcGFjaXR5XCIsdCl9LGR4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLngobmV3IGEuTnVtYmVyKHQpLnBsdXModGhpcyBpbnN0YW5jZW9mIGEuRlg/MDp0aGlzLngoKSksITApfSxkeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55KG5ldyBhLk51bWJlcih0KS5wbHVzKHRoaXMgaW5zdGFuY2VvZiBhLkZYPzA6dGhpcy55KCkpLCEwKX19KSxhLmV4dGVuZChhLlBhdGgse2xlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuZ2V0VG90YWxMZW5ndGgoKX0scG9pbnRBdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlLmdldFBvaW50QXRMZW5ndGgodCl9fSksYS5TZXQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXtBcnJheS5pc0FycmF5KHQpP3RoaXMubWVtYmVycz10OnRoaXMuY2xlYXIoKX0sZXh0ZW5kOnthZGQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspdGhpcy5tZW1iZXJzLnB1c2godFtlXSk7cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmluZGV4KHQpO3JldHVybiBlPi0xJiZ0aGlzLm1lbWJlcnMuc3BsaWNlKGUsMSksdGhpc30sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxpPXRoaXMubWVtYmVycy5sZW5ndGg7ZTxpO2UrKyl0LmFwcGx5KHRoaXMubWVtYmVyc1tlXSxbZSx0aGlzLm1lbWJlcnNdKTtyZXR1cm4gdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzPVtdLHRoaXN9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbWJlcnMubGVuZ3RofSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5kZXgodCk+PTB9LGluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1lbWJlcnMuaW5kZXhPZih0KX0sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1lbWJlcnNbdF19LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KHRoaXMubWVtYmVycy5sZW5ndGgtMSl9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzfX0sY29uc3RydWN0OntzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhLlNldCh0KX19fSksYS5GWC5TZXQ9YS5pbnZlbnQoe2NyZWF0ZTpmdW5jdGlvbih0KXt0aGlzLnNldD10fX0pLGEuU2V0LmluaGVyaXQ9ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gYS5TaGFwZS5wcm90b3R5cGUpXCJmdW5jdGlvblwiPT10eXBlb2YgYS5TaGFwZS5wcm90b3R5cGVbZV0mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuU2V0LnByb3RvdHlwZVtlXSYmdC5wdXNoKGUpO2Zvcih2YXIgZSBpbiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuU2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLGk9dGhpcy5tZW1iZXJzLmxlbmd0aDtlPGk7ZSsrKXRoaXMubWVtYmVyc1tlXSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5tZW1iZXJzW2VdW3RdJiZ0aGlzLm1lbWJlcnNbZV1bdF0uYXBwbHkodGhpcy5tZW1iZXJzW2VdLGFyZ3VtZW50cyk7cmV0dXJuXCJhbmltYXRlXCI9PXQ/dGhpcy5meHx8KHRoaXMuZng9bmV3IGEuRlguU2V0KHRoaXMpKTp0aGlzfX0pKSx0PVtdLGEuRlgucHJvdG90eXBlKVwiZnVuY3Rpb25cIj09dHlwZW9mIGEuRlgucHJvdG90eXBlW2VdJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLkZYLlNldC5wcm90b3R5cGVbZV0mJnQucHVzaChlKTt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2EuRlguU2V0LnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLGk9dGhpcy5zZXQubWVtYmVycy5sZW5ndGg7ZTxpO2UrKyl0aGlzLnNldC5tZW1iZXJzW2VdLmZ4W3RdLmFwcGx5KHRoaXMuc2V0Lm1lbWJlcnNbZV0uZngsYXJndW1lbnRzKTtyZXR1cm4gdGhpc319KSl9LGEuZXh0ZW5kKGEuRWxlbWVudCx7fSksYS5leHRlbmQoYS5FbGVtZW50LHtyZW1lbWJlcjpmdW5jdGlvbih0LGUpe2lmKFwib2JqZWN0XCI9PT1pKGFyZ3VtZW50c1swXSkpZm9yKHZhciBhIGluIHQpdGhpcy5yZW1lbWJlcihhLHRbYV0pO2Vsc2V7aWYoMT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5tZW1vcnkoKVt0XTt0aGlzLm1lbW9yeSgpW3RdPWV9cmV0dXJuIHRoaXN9LGZvcmdldDpmdW5jdGlvbigpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpdGhpcy5fbWVtb3J5PXt9O2Vsc2UgZm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMTt0Pj0wO3QtLSlkZWxldGUgdGhpcy5tZW1vcnkoKVthcmd1bWVudHNbdF1dO3JldHVybiB0aGlzfSxtZW1vcnk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWVtb3J5fHwodGhpcy5fbWVtb3J5PXt9KX19KSxhLmdldD1mdW5jdGlvbih0KXt2YXIgaT1lLmdldEVsZW1lbnRCeUlkKGZ1bmN0aW9uKHQpe3ZhciBlPSh0fHxcIlwiKS50b1N0cmluZygpLm1hdGNoKGEucmVnZXgucmVmZXJlbmNlKTtpZihlKXJldHVybiBlWzFdfSh0KXx8dCk7cmV0dXJuIGEuYWRvcHQoaSl9LGEuc2VsZWN0PWZ1bmN0aW9uKHQsaSl7cmV0dXJuIG5ldyBhLlNldChhLnV0aWxzLm1hcCgoaXx8ZSkucXVlcnlTZWxlY3RvckFsbCh0KSwoZnVuY3Rpb24odCl7cmV0dXJuIGEuYWRvcHQodCl9KSkpfSxhLmV4dGVuZChhLlBhcmVudCx7c2VsZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBhLnNlbGVjdCh0LHRoaXMubm9kZSl9fSk7dmFyIHY9XCJhYmNkZWZcIi5zcGxpdChcIlwiKTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LkN1c3RvbUV2ZW50KXt2YXIgbT1mdW5jdGlvbih0LGkpe2k9aXx8e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMSxkZXRhaWw6dm9pZCAwfTt2YXIgYT1lLmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIik7cmV0dXJuIGEuaW5pdEN1c3RvbUV2ZW50KHQsaS5idWJibGVzLGkuY2FuY2VsYWJsZSxpLmRldGFpbCksYX07bS5wcm90b3R5cGU9dC5FdmVudC5wcm90b3R5cGUsYS5DdXN0b21FdmVudD1tfWVsc2UgYS5DdXN0b21FdmVudD10LkN1c3RvbUV2ZW50O3JldHVybiBhfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKChmdW5jdGlvbigpe3JldHVybiBIdChSdCxSdC5kb2N1bWVudCl9KSk6XCJvYmplY3RcIj09PShcInVuZGVmaW5lZFwiPT10eXBlb2YgZXhwb3J0cz9cInVuZGVmaW5lZFwiOmkoZXhwb3J0cykpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPVJ0LmRvY3VtZW50P0h0KFJ0LFJ0LmRvY3VtZW50KTpmdW5jdGlvbih0KXtyZXR1cm4gSHQodCx0LmRvY3VtZW50KX06UnQuU1ZHPUh0KFJ0LFJ0LmRvY3VtZW50KSxcbi8qISBzdmcuZmlsdGVyLmpzIC0gdjIuMC4yIC0gMjAxNi0wMi0yNFxuKiBodHRwczovL2dpdGh1Yi5jb20vd291dC9zdmcuZmlsdGVyLmpzXG4qIENvcHlyaWdodCAoYykgMjAxNiBXb3V0IEZpZXJlbnM7IExpY2Vuc2VkIE1JVCAqL1xuZnVuY3Rpb24oKXtTVkcuRmlsdGVyPVNWRy5pbnZlbnQoe2NyZWF0ZTpcImZpbHRlclwiLGluaGVyaXQ6U1ZHLlBhcmVudCxleHRlbmQ6e3NvdXJjZTpcIlNvdXJjZUdyYXBoaWNcIixzb3VyY2VBbHBoYTpcIlNvdXJjZUFscGhhXCIsYmFja2dyb3VuZDpcIkJhY2tncm91bmRJbWFnZVwiLGJhY2tncm91bmRBbHBoYTpcIkJhY2tncm91bmRBbHBoYVwiLGZpbGw6XCJGaWxsUGFpbnRcIixzdHJva2U6XCJTdHJva2VQYWludFwiLGF1dG9TZXRJbjohMCxwdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hZGQodCxlKSwhdC5hdHRyKFwiaW5cIikmJnRoaXMuYXV0b1NldEluJiZ0LmF0dHIoXCJpblwiLHRoaXMuc291cmNlKSx0LmF0dHIoXCJyZXN1bHRcIil8fHQuYXR0cihcInJlc3VsdFwiLHQpLHR9LGJsZW5kOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5CbGVuZEVmZmVjdCh0LGUsaSkpfSxjb2xvck1hdHJpeDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbG9yTWF0cml4RWZmZWN0KHQsZSkpfSxjb252b2x2ZU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db252b2x2ZU1hdHJpeEVmZmVjdCh0KSl9LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkNvbXBvbmVudFRyYW5zZmVyRWZmZWN0KHQpKX0sY29tcG9zaXRlOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Db21wb3NpdGVFZmZlY3QodCxlLGkpKX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5GbG9vZEVmZmVjdCh0LGUpKX0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuT2Zmc2V0RWZmZWN0KHQsZSkpfSxpbWFnZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5JbWFnZUVmZmVjdCh0KSl9LG1lcmdlOmZ1bmN0aW9uKCl7dmFyIHQ9W3ZvaWQgMF07Zm9yKHZhciBlIGluIGFyZ3VtZW50cyl0LnB1c2goYXJndW1lbnRzW2VdKTtyZXR1cm4gdGhpcy5wdXQobmV3KFNWRy5NZXJnZUVmZmVjdC5iaW5kLmFwcGx5KFNWRy5NZXJnZUVmZmVjdCx0KSkpfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5HYXVzc2lhbkJsdXJFZmZlY3QodCxlKSl9LG1vcnBob2xvZ3k6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5Nb3JwaG9sb2d5RWZmZWN0KHQsZSkpfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLkRpZmZ1c2VMaWdodGluZ0VmZmVjdCh0LGUsaSkpfSxkaXNwbGFjZW1lbnRNYXA6ZnVuY3Rpb24odCxlLGksYSxzKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5EaXNwbGFjZW1lbnRNYXBFZmZlY3QodCxlLGksYSxzKSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGksYSl7cmV0dXJuIHRoaXMucHV0KG5ldyBTVkcuU3BlY3VsYXJMaWdodGluZ0VmZmVjdCh0LGUsaSxhKSl9LHRpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXQobmV3IFNWRy5UaWxlRWZmZWN0KX0sdHVyYnVsZW5jZTpmdW5jdGlvbih0LGUsaSxhLHMpe3JldHVybiB0aGlzLnB1dChuZXcgU1ZHLlR1cmJ1bGVuY2VFZmZlY3QodCxlLGksYSxzKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuXCJ1cmwoI1wiK3RoaXMuYXR0cihcImlkXCIpK1wiKVwifX19KSxTVkcuZXh0ZW5kKFNWRy5EZWZzLHtmaWx0ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wdXQobmV3IFNWRy5GaWx0ZXIpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnQuY2FsbChlLGUpLGV9fSksU1ZHLmV4dGVuZChTVkcuQ29udGFpbmVyLHtmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVmcygpLmZpbHRlcih0KX19KSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LFNWRy5HLFNWRy5OZXN0ZWQse2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXJlcj10IGluc3RhbmNlb2YgU1ZHLkVsZW1lbnQ/dDp0aGlzLmRvYygpLmZpbHRlcih0KSx0aGlzLmRvYygpJiZ0aGlzLmZpbHRlcmVyLmRvYygpIT09dGhpcy5kb2MoKSYmdGhpcy5kb2MoKS5kZWZzKCkuYWRkKHRoaXMuZmlsdGVyZXIpLHRoaXMuYXR0cihcImZpbHRlclwiLHRoaXMuZmlsdGVyZXIpLHRoaXMuZmlsdGVyZXJ9LHVuZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpbHRlcmVyJiYhMD09PXQmJnRoaXMuZmlsdGVyZXIucmVtb3ZlKCksZGVsZXRlIHRoaXMuZmlsdGVyZXIsdGhpcy5hdHRyKFwiZmlsdGVyXCIsbnVsbCl9fSksU1ZHLkVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLkVsZW1lbnQsZXh0ZW5kOntpbjpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLnNlbGVjdCgnW3Jlc3VsdD1cIicrdGhpcy5hdHRyKFwiaW5cIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW5cIik6dGhpcy5hdHRyKFwiaW5cIix0KX0scmVzdWx0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuYXR0cihcInJlc3VsdFwiKTp0aGlzLmF0dHIoXCJyZXN1bHRcIix0KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHQoKX19fSksU1ZHLlBhcmVudEVmZmVjdD1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9LGluaGVyaXQ6U1ZHLlBhcmVudCxleHRlbmQ6e2luOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PVwiJyt0aGlzLmF0dHIoXCJpblwiKSsnXCJdJykuZ2V0KDApfHx0aGlzLmF0dHIoXCJpblwiKTp0aGlzLmF0dHIoXCJpblwiLHQpfSxyZXN1bHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5hdHRyKFwicmVzdWx0XCIpOnRoaXMuYXR0cihcInJlc3VsdFwiLHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlc3VsdCgpfX19KTt2YXIgdD17YmxlbmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5ibGVuZCh0aGlzLHQsZSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29sb3JNYXRyaXgodCxlKS5pbih0aGlzKX0sY29udm9sdmVNYXRyaXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuY29udm9sdmVNYXRyaXgodCkuaW4odGhpcyl9LGNvbXBvbmVudFRyYW5zZmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmNvbXBvbmVudFRyYW5zZmVyKHQpLmluKHRoaXMpfSxjb21wb3NpdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5jb21wb3NpdGUodGhpcyx0LGUpfSxmbG9vZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmZsb29kKHQsZSl9LG9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLm9mZnNldCh0LGUpLmluKHRoaXMpfSxpbWFnZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5pbWFnZSh0KX0sbWVyZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5tZXJnZS5hcHBseSh0aGlzLnBhcmVudCgpLFt0aGlzXS5jb25jYXQoYXJndW1lbnRzKSl9LGdhdXNzaWFuQmx1cjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmdhdXNzaWFuQmx1cih0LGUpLmluKHRoaXMpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkubW9ycGhvbG9neSh0LGUpLmluKHRoaXMpfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLnBhcmVudCgpJiZ0aGlzLnBhcmVudCgpLmRpZmZ1c2VMaWdodGluZyh0LGUsaSkuaW4odGhpcyl9LGRpc3BsYWNlbWVudE1hcDpmdW5jdGlvbih0LGUsaSxhKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5kaXNwbGFjZW1lbnRNYXAodGhpcyx0LGUsaSxhKX0sc3BlY3VsYXJMaWdodGluZzpmdW5jdGlvbih0LGUsaSxhKXtyZXR1cm4gdGhpcy5wYXJlbnQoKSYmdGhpcy5wYXJlbnQoKS5zcGVjdWxhckxpZ2h0aW5nKHQsZSxpLGEpLmluKHRoaXMpfSx0aWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkudGlsZSgpLmluKHRoaXMpfSx0dXJidWxlbmNlOmZ1bmN0aW9uKHQsZSxpLGEscyl7cmV0dXJuIHRoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkudHVyYnVsZW5jZSh0LGUsaSxhLHMpLmluKHRoaXMpfX07U1ZHLmV4dGVuZChTVkcuRWZmZWN0LHQpLFNWRy5leHRlbmQoU1ZHLlBhcmVudEVmZmVjdCx0KSxTVkcuQ2hpbGRFZmZlY3Q9U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpfSxpbmhlcml0OlNWRy5FbGVtZW50LGV4dGVuZDp7aW46ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaW5cIix0KX19fSk7dmFyIGU9e2JsZW5kOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe2luOnQsaW4yOmUsbW9kZTppfHxcIm5vcm1hbFwifSl9LGNvbG9yTWF0cml4OmZ1bmN0aW9uKHQsZSl7XCJtYXRyaXhcIj09dCYmKGU9cyhlKSksdGhpcy5hdHRyKHt0eXBlOnQsdmFsdWVzOnZvaWQgMD09PWU/bnVsbDplfSl9LGNvbnZvbHZlTWF0cml4OmZ1bmN0aW9uKHQpe3Q9cyh0KSx0aGlzLmF0dHIoe29yZGVyOk1hdGguc3FydCh0LnNwbGl0KFwiIFwiKS5sZW5ndGgpLGtlcm5lbE1hdHJpeDp0fSl9LGNvbXBvc2l0ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5hdHRyKHtpbjp0LGluMjplLG9wZXJhdG9yOml9KX0sZmxvb2Q6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoXCJmbG9vZC1jb2xvclwiLHQpLG51bGwhPWUmJnRoaXMuYXR0cihcImZsb29kLW9wYWNpdHlcIixlKX0sb2Zmc2V0OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHtkeDp0LGR5OmV9KX0saW1hZ2U6ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaHJlZlwiLHQsU1ZHLnhsaW5rKX0sZGlzcGxhY2VtZW50TWFwOmZ1bmN0aW9uKHQsZSxpLGEscyl7dGhpcy5hdHRyKHtpbjp0LGluMjplLHNjYWxlOmkseENoYW5uZWxTZWxlY3RvcjphLHlDaGFubmVsU2VsZWN0b3I6c30pfSxnYXVzc2lhbkJsdXI6ZnVuY3Rpb24odCxlKXtudWxsIT10fHxudWxsIT1lP3RoaXMuYXR0cihcInN0ZERldmlhdGlvblwiLGZ1bmN0aW9uKHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiB0O2Zvcih2YXIgZT0wLGk9dC5sZW5ndGgsYT1bXTtlPGk7ZSsrKWEucHVzaCh0W2VdKTtyZXR1cm4gYS5qb2luKFwiIFwiKX0oQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpOnRoaXMuYXR0cihcInN0ZERldmlhdGlvblwiLFwiMCAwXCIpfSxtb3JwaG9sb2d5OmZ1bmN0aW9uKHQsZSl7dGhpcy5hdHRyKHtvcGVyYXRvcjp0LHJhZGl1czplfSl9LHRpbGU6ZnVuY3Rpb24oKXt9LHR1cmJ1bGVuY2U6ZnVuY3Rpb24odCxlLGksYSxzKXt0aGlzLmF0dHIoe251bU9jdGF2ZXM6ZSxzZWVkOmksc3RpdGNoVGlsZXM6YSxiYXNlRnJlcXVlbmN5OnQsdHlwZTpzfSl9fSxpPXttZXJnZTpmdW5jdGlvbigpe3ZhciB0O2lmKGFyZ3VtZW50c1swXWluc3RhbmNlb2YgU1ZHLlNldCl7dmFyIGU9dGhpczthcmd1bWVudHNbMF0uZWFjaCgoZnVuY3Rpb24odCl7dGhpcyBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/ZS5wdXQodGhpcyk6KHRoaXMgaW5zdGFuY2VvZiBTVkcuRWZmZWN0fHx0aGlzIGluc3RhbmNlb2YgU1ZHLlBhcmVudEVmZmVjdCkmJmUucHV0KG5ldyBTVkcuTWVyZ2VOb2RlKHRoaXMpKX0pKX1lbHNle3Q9QXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHM7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspdFtpXWluc3RhbmNlb2YgU1ZHLk1lcmdlTm9kZT90aGlzLnB1dCh0W2ldKTp0aGlzLnB1dChuZXcgU1ZHLk1lcmdlTm9kZSh0W2ldKSl9fSxjb21wb25lbnRUcmFuc2ZlcjpmdW5jdGlvbih0KXtpZih0aGlzLnJnYj1uZXcgU1ZHLlNldCxbXCJyXCIsXCJnXCIsXCJiXCIsXCJhXCJdLmZvckVhY2goZnVuY3Rpb24odCl7dGhpc1t0XT1uZXcoU1ZHW1wiRnVuY1wiK3QudG9VcHBlckNhc2UoKV0pKFwiaWRlbnRpdHlcIiksdGhpcy5yZ2IuYWRkKHRoaXNbdF0pLHRoaXMubm9kZS5hcHBlbmRDaGlsZCh0aGlzW3RdLm5vZGUpfS5iaW5kKHRoaXMpKSx0KWZvcih2YXIgZSBpbiB0LnJnYiYmKFtcInJcIixcImdcIixcImJcIl0uZm9yRWFjaChmdW5jdGlvbihlKXt0aGlzW2VdLmF0dHIodC5yZ2IpfS5iaW5kKHRoaXMpKSxkZWxldGUgdC5yZ2IpLHQpdGhpc1tlXS5hdHRyKHRbZV0pfSxkaWZmdXNlTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGkpe3RoaXMuYXR0cih7c3VyZmFjZVNjYWxlOnQsZGlmZnVzZUNvbnN0YW50OmUsa2VybmVsVW5pdExlbmd0aDppfSl9LHNwZWN1bGFyTGlnaHRpbmc6ZnVuY3Rpb24odCxlLGksYSl7dGhpcy5hdHRyKHtzdXJmYWNlU2NhbGU6dCxkaWZmdXNlQ29uc3RhbnQ6ZSxzcGVjdWxhckV4cG9uZW50Omksa2VybmVsVW5pdExlbmd0aDphfSl9fSxhPXtkaXN0YW50TGlnaHQ6ZnVuY3Rpb24odCxlKXt0aGlzLmF0dHIoe2F6aW11dGg6dCxlbGV2YXRpb246ZX0pfSxwb2ludExpZ2h0OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLmF0dHIoe3g6dCx5OmUsejppfSl9LHNwb3RMaWdodDpmdW5jdGlvbih0LGUsaSxhLHMscil7dGhpcy5hdHRyKHt4OnQseTplLHo6aSxwb2ludHNBdFg6YSxwb2ludHNBdFk6cyxwb2ludHNBdFo6cn0pfSxtZXJnZU5vZGU6ZnVuY3Rpb24odCl7dGhpcy5hdHRyKFwiaW5cIix0KX19O2Z1bmN0aW9uIHModCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PW5ldyBTVkcuQXJyYXkodCkpLHQudG9TdHJpbmcoKS5yZXBsYWNlKC9eXFxzKy8sXCJcIikucmVwbGFjZSgvXFxzKyQvLFwiXCIpLnJlcGxhY2UoL1xccysvZyxcIiBcIil9ZnVuY3Rpb24gcigpe3ZhciB0PWZ1bmN0aW9uKCl7fTtmb3IodmFyIGUgaW5cImZ1bmN0aW9uXCI9PXR5cGVvZiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSYmKHQ9YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGgtMV0sQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGFyZ3VtZW50cyxhcmd1bWVudHMubGVuZ3RoLTEsMSkpLGFyZ3VtZW50cylmb3IodmFyIGkgaW4gYXJndW1lbnRzW2VdKXQoYXJndW1lbnRzW2VdW2ldLGksYXJndW1lbnRzW2VdKX1bXCJyXCIsXCJnXCIsXCJiXCIsXCJhXCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2FbXCJGdW5jXCIrdC50b1VwcGVyQ2FzZSgpXT1mdW5jdGlvbih0KXtzd2l0Y2godGhpcy5hdHRyKFwidHlwZVwiLHQpLHQpe2Nhc2VcInRhYmxlXCI6dGhpcy5hdHRyKFwidGFibGVWYWx1ZXNcIixhcmd1bWVudHNbMV0pO2JyZWFrO2Nhc2VcImxpbmVhclwiOnRoaXMuYXR0cihcInNsb3BlXCIsYXJndW1lbnRzWzFdKSx0aGlzLmF0dHIoXCJpbnRlcmNlcHRcIixhcmd1bWVudHNbMl0pO2JyZWFrO2Nhc2VcImdhbW1hXCI6dGhpcy5hdHRyKFwiYW1wbGl0dWRlXCIsYXJndW1lbnRzWzFdKSx0aGlzLmF0dHIoXCJleHBvbmVudFwiLGFyZ3VtZW50c1syXSksdGhpcy5hdHRyKFwib2Zmc2V0XCIsYXJndW1lbnRzWzJdKX19fSkpLHIoZSwoZnVuY3Rpb24odCxlKXt2YXIgaT1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7U1ZHW2krXCJFZmZlY3RcIl09U1ZHLmludmVudCh7Y3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsU1ZHLmNyZWF0ZShcImZlXCIraSkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucmVzdWx0KHRoaXMuYXR0cihcImlkXCIpK1wiT3V0XCIpfSxpbmhlcml0OlNWRy5FZmZlY3QsZXh0ZW5kOnt9fSl9KSkscihpLChmdW5jdGlvbih0LGUpe3ZhciBpPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtTVkdbaStcIkVmZmVjdFwiXT1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxTVkcuY3JlYXRlKFwiZmVcIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5yZXN1bHQodGhpcy5hdHRyKFwiaWRcIikrXCJPdXRcIil9LGluaGVyaXQ6U1ZHLlBhcmVudEVmZmVjdCxleHRlbmQ6e319KX0pKSxyKGEsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO1NWR1tpXT1TVkcuaW52ZW50KHtjcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxTVkcuY3JlYXRlKFwiZmVcIitpKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGluaGVyaXQ6U1ZHLkNoaWxkRWZmZWN0LGV4dGVuZDp7fX0pfSkpLFNWRy5leHRlbmQoU1ZHLk1lcmdlRWZmZWN0LHtpbjpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFNWRy5NZXJnZU5vZGU/dGhpcy5hZGQodCwwKTp0aGlzLmFkZChuZXcgU1ZHLk1lcmdlTm9kZSh0KSwwKSx0aGlzfX0pLFNWRy5leHRlbmQoU1ZHLkNvbXBvc2l0ZUVmZmVjdCxTVkcuQmxlbmRFZmZlY3QsU1ZHLkRpc3BsYWNlbWVudE1hcEVmZmVjdCx7aW4yOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMucGFyZW50KCkmJnRoaXMucGFyZW50KCkuc2VsZWN0KCdbcmVzdWx0PVwiJyt0aGlzLmF0dHIoXCJpbjJcIikrJ1wiXScpLmdldCgwKXx8dGhpcy5hdHRyKFwiaW4yXCIpOnRoaXMuYXR0cihcImluMlwiLHQpfX0pLFNWRy5maWx0ZXI9e3NlcGlhdG9uZTpbLjM0MywuNjY5LC4xMTksMCwwLC4yNDksLjYyNiwuMTMsMCwwLC4xNzIsLjMzNCwuMTExLDAsMCwwLDAsMCwxLDBdfX0uY2FsbCh2b2lkIDApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LHMscixvLG4sbCxoKXtmb3IodmFyIGM9dC5zbGljZShzLHJ8fGgpLGQ9by5zbGljZShuLGx8fGgpLGc9MCx1PXtwb3M6WzAsMF0sc3RhcnQ6WzAsMF19LHA9e3BvczpbMCwwXSxzdGFydDpbMCwwXX07Oyl7aWYoY1tnXT1lLmNhbGwodSxjW2ddKSxkW2ddPWUuY2FsbChwLGRbZ10pLGNbZ11bMF0hPWRbZ11bMF18fFwiTVwiPT1jW2ddWzBdfHxcIkFcIj09Y1tnXVswXSYmKGNbZ11bNF0hPWRbZ11bNF18fGNbZ11bNV0hPWRbZ11bNV0pPyhBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGMsW2csMV0uY29uY2F0KGEuY2FsbCh1LGNbZ10pKSksQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShkLFtnLDFdLmNvbmNhdChhLmNhbGwocCxkW2ddKSkpKTooY1tnXT1pLmNhbGwodSxjW2ddKSxkW2ddPWkuY2FsbChwLGRbZ10pKSwrK2c9PWMubGVuZ3RoJiZnPT1kLmxlbmd0aClicmVhaztnPT1jLmxlbmd0aCYmYy5wdXNoKFtcIkNcIix1LnBvc1swXSx1LnBvc1sxXSx1LnBvc1swXSx1LnBvc1sxXSx1LnBvc1swXSx1LnBvc1sxXV0pLGc9PWQubGVuZ3RoJiZkLnB1c2goW1wiQ1wiLHAucG9zWzBdLHAucG9zWzFdLHAucG9zWzBdLHAucG9zWzFdLHAucG9zWzBdLHAucG9zWzFdXSl9cmV0dXJue3N0YXJ0OmMsZGVzdDpkfX1mdW5jdGlvbiBlKHQpe3N3aXRjaCh0WzBdKXtjYXNlXCJ6XCI6Y2FzZVwiWlwiOnRbMF09XCJMXCIsdFsxXT10aGlzLnN0YXJ0WzBdLHRbMl09dGhpcy5zdGFydFsxXTticmVhaztjYXNlXCJIXCI6dFswXT1cIkxcIix0WzJdPXRoaXMucG9zWzFdO2JyZWFrO2Nhc2VcIlZcIjp0WzBdPVwiTFwiLHRbMl09dFsxXSx0WzFdPXRoaXMucG9zWzBdO2JyZWFrO2Nhc2VcIlRcIjp0WzBdPVwiUVwiLHRbM109dFsxXSx0WzRdPXRbMl0sdFsxXT10aGlzLnJlZmxlY3Rpb25bMV0sdFsyXT10aGlzLnJlZmxlY3Rpb25bMF07YnJlYWs7Y2FzZVwiU1wiOnRbMF09XCJDXCIsdFs2XT10WzRdLHRbNV09dFszXSx0WzRdPXRbMl0sdFszXT10WzFdLHRbMl09dGhpcy5yZWZsZWN0aW9uWzFdLHRbMV09dGhpcy5yZWZsZWN0aW9uWzBdfXJldHVybiB0fWZ1bmN0aW9uIGkodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIHRoaXMucG9zPVt0W2UtMl0sdFtlLTFdXSwtMSE9XCJTQ1FUXCIuaW5kZXhPZih0WzBdKSYmKHRoaXMucmVmbGVjdGlvbj1bMip0aGlzLnBvc1swXS10W2UtNF0sMip0aGlzLnBvc1sxXS10W2UtM11dKSx0fWZ1bmN0aW9uIGEodCl7dmFyIGU9W3RdO3N3aXRjaCh0WzBdKXtjYXNlXCJNXCI6cmV0dXJuIHRoaXMucG9zPXRoaXMuc3RhcnQ9W3RbMV0sdFsyXV0sZTtjYXNlXCJMXCI6dFs1XT10WzNdPXRbMV0sdFs2XT10WzRdPXRbMl0sdFsxXT10aGlzLnBvc1swXSx0WzJdPXRoaXMucG9zWzFdO2JyZWFrO2Nhc2VcIlFcIjp0WzZdPXRbNF0sdFs1XT10WzNdLHRbNF09MSp0WzRdLzMrMip0WzJdLzMsdFszXT0xKnRbM10vMysyKnRbMV0vMyx0WzJdPTEqdGhpcy5wb3NbMV0vMysyKnRbMl0vMyx0WzFdPTEqdGhpcy5wb3NbMF0vMysyKnRbMV0vMzticmVhaztjYXNlXCJBXCI6ZT1mdW5jdGlvbih0LGUpe3ZhciBpLGEscyxyLG8sbixsLGgsYyxkLGcsdSxwLGYseCxiLHYsbSx5LHcsayxBLFMsQyxMLFAsST1NYXRoLmFicyhlWzFdKSxNPU1hdGguYWJzKGVbMl0pLFQ9ZVszXSUzNjAsej1lWzRdLFg9ZVs1XSxFPWVbNl0sWT1lWzddLEY9bmV3IFNWRy5Qb2ludCh0KSxSPW5ldyBTVkcuUG9pbnQoRSxZKSxIPVtdO2lmKDA9PT1JfHwwPT09TXx8Ri54PT09Ui54JiZGLnk9PT1SLnkpcmV0dXJuW1tcIkNcIixGLngsRi55LFIueCxSLnksUi54LFIueV1dO2k9bmV3IFNWRy5Qb2ludCgoRi54LVIueCkvMiwoRi55LVIueSkvMikudHJhbnNmb3JtKChuZXcgU1ZHLk1hdHJpeCkucm90YXRlKFQpKSwoYT1pLngqaS54LyhJKkkpK2kueSppLnkvKE0qTSkpPjEmJihJKj1hPU1hdGguc3FydChhKSxNKj1hKTtzPShuZXcgU1ZHLk1hdHJpeCkucm90YXRlKFQpLnNjYWxlKDEvSSwxL00pLnJvdGF0ZSgtVCksRj1GLnRyYW5zZm9ybShzKSxSPVIudHJhbnNmb3JtKHMpLHI9W1IueC1GLngsUi55LUYueV0sbj1yWzBdKnJbMF0rclsxXSpyWzFdLG89TWF0aC5zcXJ0KG4pLHJbMF0vPW8sclsxXS89byxsPW48ND9NYXRoLnNxcnQoMS1uLzQpOjAsej09PVgmJihsKj0tMSk7aD1uZXcgU1ZHLlBvaW50KChSLngrRi54KS8yK2wqLXJbMV0sKFIueStGLnkpLzIrbCpyWzBdKSxjPW5ldyBTVkcuUG9pbnQoRi54LWgueCxGLnktaC55KSxkPW5ldyBTVkcuUG9pbnQoUi54LWgueCxSLnktaC55KSxnPU1hdGguYWNvcyhjLngvTWF0aC5zcXJ0KGMueCpjLngrYy55KmMueSkpLGMueTwwJiYoZyo9LTEpO3U9TWF0aC5hY29zKGQueC9NYXRoLnNxcnQoZC54KmQueCtkLnkqZC55KSksZC55PDAmJih1Kj0tMSk7WCYmZz51JiYodSs9MipNYXRoLlBJKTshWCYmZzx1JiYodS09MipNYXRoLlBJKTtmb3IoZj1NYXRoLmNlaWwoMipNYXRoLmFicyhnLXUpL01hdGguUEkpLGI9W10sdj1nLHA9KHUtZykvZix4PTQqTWF0aC50YW4ocC80KS8zLGs9MDtrPD1mO2srKyl5PU1hdGguY29zKHYpLG09TWF0aC5zaW4odiksdz1uZXcgU1ZHLlBvaW50KGgueCt5LGgueSttKSxiW2tdPVtuZXcgU1ZHLlBvaW50KHcueCt4Km0sdy55LXgqeSksdyxuZXcgU1ZHLlBvaW50KHcueC14Km0sdy55K3gqeSldLHYrPXA7Zm9yKGJbMF1bMF09YlswXVsxXS5jbG9uZSgpLGJbYi5sZW5ndGgtMV1bMl09YltiLmxlbmd0aC0xXVsxXS5jbG9uZSgpLHM9KG5ldyBTVkcuTWF0cml4KS5yb3RhdGUoVCkuc2NhbGUoSSxNKS5yb3RhdGUoLVQpLGs9MCxBPWIubGVuZ3RoO2s8QTtrKyspYltrXVswXT1iW2tdWzBdLnRyYW5zZm9ybShzKSxiW2tdWzFdPWJba11bMV0udHJhbnNmb3JtKHMpLGJba11bMl09YltrXVsyXS50cmFuc2Zvcm0ocyk7Zm9yKGs9MSxBPWIubGVuZ3RoO2s8QTtrKyspUz0odz1iW2stMV1bMl0pLngsQz13LnksTD0odz1iW2tdWzBdKS54LFA9dy55LEU9KHc9YltrXVsxXSkueCxZPXcueSxILnB1c2goW1wiQ1wiLFMsQyxMLFAsRSxZXSk7cmV0dXJuIEh9KHRoaXMucG9zLHQpLHQ9ZVswXX1yZXR1cm4gdFswXT1cIkNcIix0aGlzLnBvcz1bdFs1XSx0WzZdXSx0aGlzLnJlZmxlY3Rpb249WzIqdFs1XS10WzNdLDIqdFs2XS10WzRdXSxlfWZ1bmN0aW9uIHModCxlKXtpZighMT09PWUpcmV0dXJuITE7Zm9yKHZhciBpPWUsYT10Lmxlbmd0aDtpPGE7KytpKWlmKFwiTVwiPT10W2ldWzBdKXJldHVybiBpO3JldHVybiExfVNWRy5leHRlbmQoU1ZHLlBhdGhBcnJheSx7bW9ycGg6ZnVuY3Rpb24oZSl7Zm9yKHZhciBpPXRoaXMudmFsdWUsYT10aGlzLnBhcnNlKGUpLHI9MCxvPTAsbj0hMSxsPSExOyExIT09cnx8ITEhPT1vOyl7dmFyIGg7bj1zKGksITEhPT1yJiZyKzEpLGw9cyhhLCExIT09byYmbysxKSwhMT09PXImJihyPTA9PShoPW5ldyBTVkcuUGF0aEFycmF5KGMuc3RhcnQpLmJib3goKSkuaGVpZ2h0fHwwPT1oLndpZHRoP2kucHVzaChpWzBdKS0xOmkucHVzaChbXCJNXCIsaC54K2gud2lkdGgvMixoLnkraC5oZWlnaHQvMl0pLTEpLCExPT09byYmKG89MD09KGg9bmV3IFNWRy5QYXRoQXJyYXkoYy5kZXN0KS5iYm94KCkpLmhlaWdodHx8MD09aC53aWR0aD9hLnB1c2goYVswXSktMTphLnB1c2goW1wiTVwiLGgueCtoLndpZHRoLzIsaC55K2guaGVpZ2h0LzJdKS0xKTt2YXIgYz10KGkscixuLGEsbyxsKTtpPWkuc2xpY2UoMCxyKS5jb25jYXQoYy5zdGFydCwhMT09PW4/W106aS5zbGljZShuKSksYT1hLnNsaWNlKDAsbykuY29uY2F0KGMuZGVzdCwhMT09PWw/W106YS5zbGljZShsKSkscj0hMSE9PW4mJnIrYy5zdGFydC5sZW5ndGgsbz0hMSE9PWwmJm8rYy5kZXN0Lmxlbmd0aH1yZXR1cm4gdGhpcy52YWx1ZT1pLHRoaXMuZGVzdGluYXRpb249bmV3IFNWRy5QYXRoQXJyYXksdGhpcy5kZXN0aW5hdGlvbi52YWx1ZT1hLHRoaXN9fSl9KCksXG4vKiEgc3ZnLmRyYWdnYWJsZS5qcyAtIHYyLjIuMiAtIDIwMTktMDEtMDhcbiogaHR0cHM6Ly9naXRodWIuY29tL3N2Z2RvdGpzL3N2Zy5kcmFnZ2FibGUuanNcbiogQ29weXJpZ2h0IChjKSAyMDE5IFdvdXQgRmllcmVuczsgTGljZW5zZWQgTUlUICovXG5mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dC5yZW1lbWJlcihcIl9kcmFnZ2FibGVcIix0aGlzKSx0aGlzLmVsPXR9dC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXM7dGhpcy5jb25zdHJhaW50PXQsdGhpcy52YWx1ZT1lLHRoaXMuZWwub24oXCJtb3VzZWRvd24uZHJhZ1wiLChmdW5jdGlvbih0KXtpLnN0YXJ0KHQpfSkpLHRoaXMuZWwub24oXCJ0b3VjaHN0YXJ0LmRyYWdcIiwoZnVuY3Rpb24odCl7aS5zdGFydCh0KX0pKX0sdC5wcm90b3R5cGUudHJhbnNmb3JtUG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgaT0odD10fHx3aW5kb3cuZXZlbnQpLmNoYW5nZWRUb3VjaGVzJiZ0LmNoYW5nZWRUb3VjaGVzWzBdfHx0O3JldHVybiB0aGlzLnAueD1pLmNsaWVudFgtKGV8fDApLHRoaXMucC55PWkuY2xpZW50WSx0aGlzLnAubWF0cml4VHJhbnNmb3JtKHRoaXMubSl9LHQucHJvdG90eXBlLmdldEJCb3g9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTtyZXR1cm4gdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5OZXN0ZWQmJih0PXRoaXMuZWwucmJveCgpKSwodGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5HfHx0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLlVzZXx8dGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5OZXN0ZWQpJiYodC54PXRoaXMuZWwueCgpLHQueT10aGlzLmVsLnkoKSksdH0sdC5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24odCl7aWYoXCJjbGlja1wiIT10LnR5cGUmJlwibW91c2Vkb3duXCIhPXQudHlwZSYmXCJtb3VzZW1vdmVcIiE9dC50eXBlfHwxPT0odC53aGljaHx8dC5idXR0b25zKSl7dmFyIGU9dGhpcztpZih0aGlzLmVsLmZpcmUoXCJiZWZvcmVkcmFnXCIse2V2ZW50OnQsaGFuZGxlcjp0aGlzfSksIXRoaXMuZWwuZXZlbnQoKS5kZWZhdWx0UHJldmVudGVkKXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnBhcmVudD10aGlzLnBhcmVudHx8dGhpcy5lbC5wYXJlbnQoU1ZHLk5lc3RlZCl8fHRoaXMuZWwucGFyZW50KFNWRy5Eb2MpLHRoaXMucD10aGlzLnBhcmVudC5ub2RlLmNyZWF0ZVNWR1BvaW50KCksdGhpcy5tPXRoaXMuZWwubm9kZS5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCk7dmFyIGksYT10aGlzLmdldEJCb3goKTtpZih0aGlzLmVsIGluc3RhbmNlb2YgU1ZHLlRleHQpc3dpdGNoKGk9dGhpcy5lbC5ub2RlLmdldENvbXB1dGVkVGV4dExlbmd0aCgpLHRoaXMuZWwuYXR0cihcInRleHQtYW5jaG9yXCIpKXtjYXNlXCJtaWRkbGVcIjppLz0yO2JyZWFrO2Nhc2VcInN0YXJ0XCI6aT0wfXRoaXMuc3RhcnRQb2ludHM9e3BvaW50OnRoaXMudHJhbnNmb3JtUG9pbnQodCxpKSxib3g6YSx0cmFuc2Zvcm06dGhpcy5lbC50cmFuc2Zvcm0oKX0sU1ZHLm9uKHdpbmRvdyxcIm1vdXNlbW92ZS5kcmFnXCIsKGZ1bmN0aW9uKHQpe2UuZHJhZyh0KX0pKSxTVkcub24od2luZG93LFwidG91Y2htb3ZlLmRyYWdcIiwoZnVuY3Rpb24odCl7ZS5kcmFnKHQpfSkpLFNWRy5vbih3aW5kb3csXCJtb3VzZXVwLmRyYWdcIiwoZnVuY3Rpb24odCl7ZS5lbmQodCl9KSksU1ZHLm9uKHdpbmRvdyxcInRvdWNoZW5kLmRyYWdcIiwoZnVuY3Rpb24odCl7ZS5lbmQodCl9KSksdGhpcy5lbC5maXJlKFwiZHJhZ3N0YXJ0XCIse2V2ZW50OnQscDp0aGlzLnN0YXJ0UG9pbnRzLnBvaW50LG06dGhpcy5tLGhhbmRsZXI6dGhpc30pfX19LHQucHJvdG90eXBlLmRyYWc9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRCQm94KCksaT10aGlzLnRyYW5zZm9ybVBvaW50KHQpLGE9dGhpcy5zdGFydFBvaW50cy5ib3gueCtpLngtdGhpcy5zdGFydFBvaW50cy5wb2ludC54LHM9dGhpcy5zdGFydFBvaW50cy5ib3gueStpLnktdGhpcy5zdGFydFBvaW50cy5wb2ludC55LHI9dGhpcy5jb25zdHJhaW50LG89aS54LXRoaXMuc3RhcnRQb2ludHMucG9pbnQueCxuPWkueS10aGlzLnN0YXJ0UG9pbnRzLnBvaW50Lnk7aWYodGhpcy5lbC5maXJlKFwiZHJhZ21vdmVcIix7ZXZlbnQ6dCxwOmksbTp0aGlzLm0saGFuZGxlcjp0aGlzfSksdGhpcy5lbC5ldmVudCgpLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuIGk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil7dmFyIGw9ci5jYWxsKHRoaXMuZWwsYSxzLHRoaXMubSk7XCJib29sZWFuXCI9PXR5cGVvZiBsJiYobD17eDpsLHk6bH0pLCEwPT09bC54P3RoaXMuZWwueChhKTohMSE9PWwueCYmdGhpcy5lbC54KGwueCksITA9PT1sLnk/dGhpcy5lbC55KHMpOiExIT09bC55JiZ0aGlzLmVsLnkobC55KX1lbHNlXCJvYmplY3RcIj09dHlwZW9mIHImJihudWxsIT1yLm1pblgmJmE8ci5taW5YP289KGE9ci5taW5YKS10aGlzLnN0YXJ0UG9pbnRzLmJveC54Om51bGwhPXIubWF4WCYmYT5yLm1heFgtZS53aWR0aCYmKG89KGE9ci5tYXhYLWUud2lkdGgpLXRoaXMuc3RhcnRQb2ludHMuYm94LngpLG51bGwhPXIubWluWSYmczxyLm1pblk/bj0ocz1yLm1pblkpLXRoaXMuc3RhcnRQb2ludHMuYm94Lnk6bnVsbCE9ci5tYXhZJiZzPnIubWF4WS1lLmhlaWdodCYmKG49KHM9ci5tYXhZLWUuaGVpZ2h0KS10aGlzLnN0YXJ0UG9pbnRzLmJveC55KSxudWxsIT1yLnNuYXBUb0dyaWQmJihhLT1hJXIuc25hcFRvR3JpZCxzLT1zJXIuc25hcFRvR3JpZCxvLT1vJXIuc25hcFRvR3JpZCxuLT1uJXIuc25hcFRvR3JpZCksdGhpcy5lbCBpbnN0YW5jZW9mIFNWRy5HP3RoaXMuZWwubWF0cml4KHRoaXMuc3RhcnRQb2ludHMudHJhbnNmb3JtKS50cmFuc2Zvcm0oe3g6byx5Om59LCEwKTp0aGlzLmVsLm1vdmUoYSxzKSk7cmV0dXJuIGl9LHQucHJvdG90eXBlLmVuZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRyYWcodCk7dGhpcy5lbC5maXJlKFwiZHJhZ2VuZFwiLHtldmVudDp0LHA6ZSxtOnRoaXMubSxoYW5kbGVyOnRoaXN9KSxTVkcub2ZmKHdpbmRvdyxcIm1vdXNlbW92ZS5kcmFnXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2htb3ZlLmRyYWdcIiksU1ZHLm9mZih3aW5kb3csXCJtb3VzZXVwLmRyYWdcIiksU1ZHLm9mZih3aW5kb3csXCJ0b3VjaGVuZC5kcmFnXCIpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtkcmFnZ2FibGU6ZnVuY3Rpb24oZSxpKXtcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZcIm9iamVjdFwiIT10eXBlb2YgZXx8KGk9ZSxlPSEwKTt2YXIgYT10aGlzLnJlbWVtYmVyKFwiX2RyYWdnYWJsZVwiKXx8bmV3IHQodGhpcyk7cmV0dXJuKGU9dm9pZCAwPT09ZXx8ZSk/YS5pbml0KGl8fHt9LGUpOih0aGlzLm9mZihcIm1vdXNlZG93bi5kcmFnXCIpLHRoaXMub2ZmKFwidG91Y2hzdGFydC5kcmFnXCIpKSx0aGlzfX0pfS5jYWxsKHZvaWQgMCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZWw9dCx0LnJlbWVtYmVyKFwiX3NlbGVjdEhhbmRsZXJcIix0aGlzKSx0aGlzLnBvaW50U2VsZWN0aW9uPXtpc1NlbGVjdGVkOiExfSx0aGlzLnJlY3RTZWxlY3Rpb249e2lzU2VsZWN0ZWQ6ITF9LHRoaXMucG9pbnRzTGlzdD17bHQ6WzAsMF0scnQ6W1wid2lkdGhcIiwwXSxyYjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGxiOlswLFwiaGVpZ2h0XCJdLHQ6W1wid2lkdGhcIiwwXSxyOltcIndpZHRoXCIsXCJoZWlnaHRcIl0sYjpbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGw6WzAsXCJoZWlnaHRcIl19LHRoaXMucG9pbnRDb29yZD1mdW5jdGlvbih0LGUsaSl7dmFyIGE9XCJzdHJpbmdcIiE9dHlwZW9mIHQ/dDplW3RdO3JldHVybiBpP2EvMjphfSx0aGlzLnBvaW50Q29vcmRzPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5wb2ludHNMaXN0W3RdO3JldHVybnt4OnRoaXMucG9pbnRDb29yZChpWzBdLGUsXCJ0XCI9PT10fHxcImJcIj09PXQpLHk6dGhpcy5wb2ludENvb3JkKGlbMV0sZSxcInJcIj09PXR8fFwibFwiPT09dCl9fX10LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5lbC5iYm94KCk7dGhpcy5vcHRpb25zPXt9O3ZhciBhPXRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzLnBvaW50cztmb3IodmFyIHMgaW4gdGhpcy5lbC5zZWxlY3RpemUuZGVmYXVsdHMpdGhpcy5vcHRpb25zW3NdPXRoaXMuZWwuc2VsZWN0aXplLmRlZmF1bHRzW3NdLHZvaWQgMCE9PWVbc10mJih0aGlzLm9wdGlvbnNbc109ZVtzXSk7dmFyIHI9W1wicG9pbnRzXCIsXCJwb2ludHNFeGNsdWRlXCJdO2Zvcih2YXIgcyBpbiByKXt2YXIgbz10aGlzLm9wdGlvbnNbcltzXV07XCJzdHJpbmdcIj09dHlwZW9mIG8/bz1vLmxlbmd0aD4wP28uc3BsaXQoL1xccyosXFxzKi9pKTpbXTpcImJvb2xlYW5cIj09dHlwZW9mIG8mJlwicG9pbnRzXCI9PT1yW3NdJiYobz1vP2E6W10pLHRoaXMub3B0aW9uc1tyW3NdXT1vfXRoaXMub3B0aW9ucy5wb2ludHM9W2EsdGhpcy5vcHRpb25zLnBvaW50c10ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5kZXhPZih0KT4tMX0pKX0pKSx0aGlzLm9wdGlvbnMucG9pbnRzPVt0aGlzLm9wdGlvbnMucG9pbnRzLHRoaXMub3B0aW9ucy5wb2ludHNFeGNsdWRlXS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmRleE9mKHQpPDB9KSl9KSksdGhpcy5wYXJlbnQ9dGhpcy5lbC5wYXJlbnQoKSx0aGlzLm5lc3RlZD10aGlzLm5lc3RlZHx8dGhpcy5wYXJlbnQuZ3JvdXAoKSx0aGlzLm5lc3RlZC5tYXRyaXgobmV3IFNWRy5NYXRyaXgodGhpcy5lbCkudHJhbnNsYXRlKGkueCxpLnkpKSx0aGlzLm9wdGlvbnMuZGVlcFNlbGVjdCYmLTEhPT1bXCJsaW5lXCIsXCJwb2x5bGluZVwiLFwicG9seWdvblwiXS5pbmRleE9mKHRoaXMuZWwudHlwZSk/dGhpcy5zZWxlY3RQb2ludHModCk6dGhpcy5zZWxlY3RSZWN0KHQpLHRoaXMub2JzZXJ2ZSgpLHRoaXMuY2xlYW51cCgpfSx0LnByb3RvdHlwZS5zZWxlY3RQb2ludHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZD10LHRoaXMucG9pbnRTZWxlY3Rpb24uc2V0fHwodGhpcy5wb2ludFNlbGVjdGlvbi5zZXQ9dGhpcy5wYXJlbnQuc2V0KCksdGhpcy5kcmF3UG9pbnRzKCkpLHRoaXN9LHQucHJvdG90eXBlLmdldFBvaW50QXJyYXk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsLmJib3goKTtyZXR1cm4gdGhpcy5lbC5hcnJheSgpLnZhbHVlT2YoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybltlWzBdLXQueCxlWzFdLXQueV19KSl9LHQucHJvdG90eXBlLmRyYXdQb2ludHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXRoaXMuZ2V0UG9pbnRBcnJheSgpLGk9MCxhPWUubGVuZ3RoO2k8YTsrK2kpe3ZhciBzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihpKXsoaT1pfHx3aW5kb3cuZXZlbnQpLnByZXZlbnREZWZhdWx0P2kucHJldmVudERlZmF1bHQoKTppLnJldHVyblZhbHVlPSExLGkuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGE9aS5wYWdlWHx8aS50b3VjaGVzWzBdLnBhZ2VYLHM9aS5wYWdlWXx8aS50b3VjaGVzWzBdLnBhZ2VZO3QuZWwuZmlyZShcInBvaW50XCIse3g6YSx5OnMsaTplLGV2ZW50Oml9KX19KGkpLHI9dGhpcy5kcmF3UG9pbnQoZVtpXVswXSxlW2ldWzFdKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NQb2ludHMpLmFkZENsYXNzKHRoaXMub3B0aW9ucy5jbGFzc1BvaW50cytcIl9wb2ludFwiKS5vbihcInRvdWNoc3RhcnRcIixzKS5vbihcIm1vdXNlZG93blwiLHMpO3RoaXMucG9pbnRTZWxlY3Rpb24uc2V0LmFkZChyKX19LHQucHJvdG90eXBlLmRyYXdQb2ludD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMub3B0aW9ucy5wb2ludFR5cGU7c3dpdGNoKGkpe2Nhc2VcImNpcmNsZVwiOnJldHVybiB0aGlzLmRyYXdDaXJjbGUodCxlKTtjYXNlXCJyZWN0XCI6cmV0dXJuIHRoaXMuZHJhd1JlY3QodCxlKTtkZWZhdWx0OmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGkpcmV0dXJuIGkuY2FsbCh0aGlzLHQsZSk7dGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBcIitpK1wiIHBvaW50IHR5cGUhXCIpfX0sdC5wcm90b3R5cGUuZHJhd0NpcmNsZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm5lc3RlZC5jaXJjbGUodGhpcy5vcHRpb25zLnBvaW50U2l6ZSkuY2VudGVyKHQsZSl9LHQucHJvdG90eXBlLmRyYXdSZWN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubmVzdGVkLnJlY3QodGhpcy5vcHRpb25zLnBvaW50U2l6ZSx0aGlzLm9wdGlvbnMucG9pbnRTaXplKS5jZW50ZXIodCxlKX0sdC5wcm90b3R5cGUudXBkYXRlUG9pbnRTZWxlY3Rpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldFBvaW50QXJyYXkoKTt0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbihlKXt0aGlzLmN4KCk9PT10W2VdWzBdJiZ0aGlzLmN5KCk9PT10W2VdWzFdfHx0aGlzLmNlbnRlcih0W2VdWzBdLHRbZV1bMV0pfSkpfSx0LnByb3RvdHlwZS51cGRhdGVSZWN0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuZWwuYmJveCgpO2lmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZ2V0KDApLmF0dHIoe3dpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fSksdGhpcy5vcHRpb25zLnBvaW50cy5sZW5ndGgmJnRoaXMub3B0aW9ucy5wb2ludHMubWFwKChmdW5jdGlvbihpLGEpe3ZhciBzPXQucG9pbnRDb29yZHMoaSxlKTt0LnJlY3RTZWxlY3Rpb24uc2V0LmdldChhKzEpLmNlbnRlcihzLngscy55KX0pKSx0aGlzLm9wdGlvbnMucm90YXRpb25Qb2ludCl7dmFyIGk9dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5sZW5ndGgoKTt0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldChpLTEpLmNlbnRlcihlLndpZHRoLzIsMjApfX0sdC5wcm90b3R5cGUuc2VsZWN0UmVjdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy5lbC5iYm94KCk7ZnVuY3Rpb24gYSh0KXtyZXR1cm4gZnVuY3Rpb24oaSl7KGk9aXx8d2luZG93LmV2ZW50KS5wcmV2ZW50RGVmYXVsdD9pLnByZXZlbnREZWZhdWx0KCk6aS5yZXR1cm5WYWx1ZT0hMSxpLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBhPWkucGFnZVh8fGkudG91Y2hlc1swXS5wYWdlWCxzPWkucGFnZVl8fGkudG91Y2hlc1swXS5wYWdlWTtlLmVsLmZpcmUodCx7eDphLHk6cyxldmVudDppfSl9fWlmKHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkPXQsdGhpcy5yZWN0U2VsZWN0aW9uLnNldD10aGlzLnJlY3RTZWxlY3Rpb24uc2V0fHx0aGlzLnBhcmVudC5zZXQoKSx0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgwKXx8dGhpcy5yZWN0U2VsZWN0aW9uLnNldC5hZGQodGhpcy5uZXN0ZWQucmVjdChpLndpZHRoLGkuaGVpZ2h0KS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuY2xhc3NSZWN0KSksdGhpcy5vcHRpb25zLnBvaW50cy5sZW5ndGgmJnRoaXMucmVjdFNlbGVjdGlvbi5zZXQubGVuZ3RoKCk8Mil7dGhpcy5vcHRpb25zLnBvaW50cy5tYXAoKGZ1bmN0aW9uKHQscyl7dmFyIHI9ZS5wb2ludENvb3Jkcyh0LGkpLG89ZS5kcmF3UG9pbnQoci54LHIueSkuYXR0cihcImNsYXNzXCIsZS5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX1wiK3QpLm9uKFwibW91c2Vkb3duXCIsYSh0KSkub24oXCJ0b3VjaHN0YXJ0XCIsYSh0KSk7ZS5yZWN0U2VsZWN0aW9uLnNldC5hZGQobyl9KSksdGhpcy5yZWN0U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbigpe3RoaXMuYWRkQ2xhc3MoZS5vcHRpb25zLmNsYXNzUG9pbnRzKX0pKX1pZih0aGlzLm9wdGlvbnMucm90YXRpb25Qb2ludCYmKHRoaXMub3B0aW9ucy5wb2ludHMmJiF0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCg5KXx8IXRoaXMub3B0aW9ucy5wb2ludHMmJiF0aGlzLnJlY3RTZWxlY3Rpb24uc2V0LmdldCgxKSkpe3ZhciBzPWZ1bmN0aW9uKHQpeyh0PXR8fHdpbmRvdy5ldmVudCkucHJldmVudERlZmF1bHQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQucmV0dXJuVmFsdWU9ITEsdC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgaT10LnBhZ2VYfHx0LnRvdWNoZXNbMF0ucGFnZVgsYT10LnBhZ2VZfHx0LnRvdWNoZXNbMF0ucGFnZVk7ZS5lbC5maXJlKFwicm90XCIse3g6aSx5OmEsZXZlbnQ6dH0pfSxyPXRoaXMuZHJhd1BvaW50KGkud2lkdGgvMiwyMCkuYXR0cihcImNsYXNzXCIsdGhpcy5vcHRpb25zLmNsYXNzUG9pbnRzK1wiX3JvdFwiKS5vbihcInRvdWNoc3RhcnRcIixzKS5vbihcIm1vdXNlZG93blwiLHMpO3RoaXMucmVjdFNlbGVjdGlvbi5zZXQuYWRkKHIpfX0sdC5wcm90b3R5cGUuaGFuZGxlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZWwuYmJveCgpO3RoaXMubmVzdGVkLm1hdHJpeChuZXcgU1ZHLk1hdHJpeCh0aGlzLmVsKS50cmFuc2xhdGUodC54LHQueSkpLHRoaXMucmVjdFNlbGVjdGlvbi5pc1NlbGVjdGVkJiZ0aGlzLnVwZGF0ZVJlY3RTZWxlY3Rpb24oKSx0aGlzLnBvaW50U2VsZWN0aW9uLmlzU2VsZWN0ZWQmJnRoaXMudXBkYXRlUG9pbnRTZWxlY3Rpb24oKX0sdC5wcm90b3R5cGUub2JzZXJ2ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoTXV0YXRpb25PYnNlcnZlcilpZih0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkKXRoaXMub2JzZXJ2ZXJJbnN0PXRoaXMub2JzZXJ2ZXJJbnN0fHxuZXcgTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24oKXt0LmhhbmRsZXIoKX0pKSx0aGlzLm9ic2VydmVySW5zdC5vYnNlcnZlKHRoaXMuZWwubm9kZSx7YXR0cmlidXRlczohMH0pO2Vsc2UgdHJ5e3RoaXMub2JzZXJ2ZXJJbnN0LmRpc2Nvbm5lY3QoKSxkZWxldGUgdGhpcy5vYnNlcnZlckluc3R9Y2F0Y2godCl7fWVsc2UgdGhpcy5lbC5vZmYoXCJET01BdHRyTW9kaWZpZWQuc2VsZWN0XCIpLCh0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5wb2ludFNlbGVjdGlvbi5pc1NlbGVjdGVkKSYmdGhpcy5lbC5vbihcIkRPTUF0dHJNb2RpZmllZC5zZWxlY3RcIiwoZnVuY3Rpb24oKXt0LmhhbmRsZXIoKX0pKX0sdC5wcm90b3R5cGUuY2xlYW51cD1mdW5jdGlvbigpeyF0aGlzLnJlY3RTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy5yZWN0U2VsZWN0aW9uLnNldCYmKHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfSkpLHRoaXMucmVjdFNlbGVjdGlvbi5zZXQuY2xlYXIoKSxkZWxldGUgdGhpcy5yZWN0U2VsZWN0aW9uLnNldCksIXRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZCYmdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQmJih0aGlzLnBvaW50U2VsZWN0aW9uLnNldC5lYWNoKChmdW5jdGlvbigpe3RoaXMucmVtb3ZlKCl9KSksdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQuY2xlYXIoKSxkZWxldGUgdGhpcy5wb2ludFNlbGVjdGlvbi5zZXQpLHRoaXMucG9pbnRTZWxlY3Rpb24uaXNTZWxlY3RlZHx8dGhpcy5yZWN0U2VsZWN0aW9uLmlzU2VsZWN0ZWR8fCh0aGlzLm5lc3RlZC5yZW1vdmUoKSxkZWxldGUgdGhpcy5uZXN0ZWQpfSxTVkcuZXh0ZW5kKFNWRy5FbGVtZW50LHtzZWxlY3RpemU6ZnVuY3Rpb24oZSxpKXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmKGk9ZSxlPSEwKSwodGhpcy5yZW1lbWJlcihcIl9zZWxlY3RIYW5kbGVyXCIpfHxuZXcgdCh0aGlzKSkuaW5pdCh2b2lkIDA9PT1lfHxlLGl8fHt9KSx0aGlzfX0pLFNWRy5FbGVtZW50LnByb3RvdHlwZS5zZWxlY3RpemUuZGVmYXVsdHM9e3BvaW50czpbXCJsdFwiLFwicnRcIixcInJiXCIsXCJsYlwiLFwidFwiLFwiclwiLFwiYlwiLFwibFwiXSxwb2ludHNFeGNsdWRlOltdLGNsYXNzUmVjdDpcInN2Z19zZWxlY3RfYm91bmRpbmdSZWN0XCIsY2xhc3NQb2ludHM6XCJzdmdfc2VsZWN0X3BvaW50c1wiLHBvaW50U2l6ZTo3LHJvdGF0aW9uUG9pbnQ6ITAsZGVlcFNlbGVjdDohMSxwb2ludFR5cGU6XCJjaXJjbGVcIn19KCksZnVuY3Rpb24oKXsoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3QucmVtZW1iZXIoXCJfcmVzaXplSGFuZGxlclwiLHRoaXMpLHRoaXMuZWw9dCx0aGlzLnBhcmFtZXRlcnM9e30sdGhpcy5sYXN0VXBkYXRlQ2FsbD1udWxsLHRoaXMucD10LmRvYygpLm5vZGUuY3JlYXRlU1ZHUG9pbnQoKX10LnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMucC54PXQtKHRoaXMub2Zmc2V0Lngtd2luZG93LnBhZ2VYT2Zmc2V0KSx0aGlzLnAueT1lLSh0aGlzLm9mZnNldC55LXdpbmRvdy5wYWdlWU9mZnNldCksdGhpcy5wLm1hdHJpeFRyYW5zZm9ybShpfHx0aGlzLm0pfSx0LnByb3RvdHlwZS5fZXh0cmFjdFBvc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybnt4Om51bGwhPXQuY2xpZW50WD90LmNsaWVudFg6dC50b3VjaGVzWzBdLmNsaWVudFgseTpudWxsIT10LmNsaWVudFk/dC5jbGllbnRZOnQudG91Y2hlc1swXS5jbGllbnRZfX0sdC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMuc3RvcCgpLFwic3RvcFwiIT09dCl7Zm9yKHZhciBpIGluIHRoaXMub3B0aW9ucz17fSx0aGlzLmVsLnJlc2l6ZS5kZWZhdWx0cyl0aGlzLm9wdGlvbnNbaV09dGhpcy5lbC5yZXNpemUuZGVmYXVsdHNbaV0sdm9pZCAwIT09dFtpXSYmKHRoaXMub3B0aW9uc1tpXT10W2ldKTt0aGlzLmVsLm9uKFwibHQucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInJ0LnJlc2l6ZVwiLChmdW5jdGlvbih0KXtlLnJlc2l6ZSh0fHx3aW5kb3cuZXZlbnQpfSkpLHRoaXMuZWwub24oXCJyYi5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwibGIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInQucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcImIucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcImwucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy5lbC5vbihcInJvdC5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS5yZXNpemUodHx8d2luZG93LmV2ZW50KX0pKSx0aGlzLmVsLm9uKFwicG9pbnQucmVzaXplXCIsKGZ1bmN0aW9uKHQpe2UucmVzaXplKHR8fHdpbmRvdy5ldmVudCl9KSksdGhpcy51cGRhdGUoKX19LHQucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbC5vZmYoXCJsdC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJydC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJyYi5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJsYi5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJ0LnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInIucmVzaXplXCIpLHRoaXMuZWwub2ZmKFwiYi5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJsLnJlc2l6ZVwiKSx0aGlzLmVsLm9mZihcInJvdC5yZXNpemVcIiksdGhpcy5lbC5vZmYoXCJwb2ludC5yZXNpemVcIiksdGhpc30sdC5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5tPXRoaXMuZWwubm9kZS5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCksdGhpcy5vZmZzZXQ9e3g6d2luZG93LnBhZ2VYT2Zmc2V0LHk6d2luZG93LnBhZ2VZT2Zmc2V0fTt2YXIgaT10aGlzLl9leHRyYWN0UG9zaXRpb24odC5kZXRhaWwuZXZlbnQpO2lmKHRoaXMucGFyYW1ldGVycz17dHlwZTp0aGlzLmVsLnR5cGUscDp0aGlzLnRyYW5zZm9ybVBvaW50KGkueCxpLnkpLHg6dC5kZXRhaWwueCx5OnQuZGV0YWlsLnksYm94OnRoaXMuZWwuYmJveCgpLHJvdGF0aW9uOnRoaXMuZWwudHJhbnNmb3JtKCkucm90YXRpb259LFwidGV4dFwiPT09dGhpcy5lbC50eXBlJiYodGhpcy5wYXJhbWV0ZXJzLmZvbnRTaXplPXRoaXMuZWwuYXR0cigpW1wiZm9udC1zaXplXCJdKSx2b2lkIDAhPT10LmRldGFpbC5pKXt2YXIgYT10aGlzLmVsLmFycmF5KCkudmFsdWVPZigpO3RoaXMucGFyYW1ldGVycy5pPXQuZGV0YWlsLmksdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzPVthW3QuZGV0YWlsLmldWzBdLGFbdC5kZXRhaWwuaV1bMV1dfXN3aXRjaCh0LnR5cGUpe2Nhc2VcImx0XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LWlbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUtaVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueStpWzFdKS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdKX19O2JyZWFrO2Nhc2VcInJ0XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwyKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQtaVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cihcImZvbnQtc2l6ZVwiLHRoaXMucGFyYW1ldGVycy5mb250U2l6ZStpWzBdKTtpPXRoaXMuY2hlY2tBc3BlY3RSYXRpbyhpLCEwKSx0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueStpWzFdKS5zaXplKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXSx0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdKX19O2JyZWFrO2Nhc2VcInJiXCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwwKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0+MCYmdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybiB0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KSx2b2lkIHRoaXMuZWwuYXR0cihcImZvbnQtc2l6ZVwiLHRoaXMucGFyYW1ldGVycy5mb250U2l6ZStpWzBdKTtpPXRoaXMuY2hlY2tBc3BlY3RSYXRpbyhpKSx0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoK2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlXCJsYlwiOnRoaXMuY2FsYz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuc25hcFRvR3JpZCh0LGUsMSk7aWYodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC1pWzBdPjAmJnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm4gdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSksdm9pZCB0aGlzLmVsLmF0dHIoXCJmb250LXNpemVcIix0aGlzLnBhcmFtZXRlcnMuZm9udFNpemUtaVswXSk7aT10aGlzLmNoZWNrQXNwZWN0UmF0aW8oaSwhMCksdGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCtpWzBdLHRoaXMucGFyYW1ldGVycy5ib3gueSkuc2l6ZSh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQraVsxXSl9fTticmVhaztjYXNlXCJ0XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSwyKTtpZih0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdPjApe2lmKFwidGV4dFwiPT09dGhpcy5wYXJhbWV0ZXJzLnR5cGUpcmV0dXJuO3RoaXMuZWwubW92ZSh0aGlzLnBhcmFtZXRlcnMuYm94LngsdGhpcy5wYXJhbWV0ZXJzLmJveC55K2lbMV0pLmhlaWdodCh0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC1pWzFdKX19O2JyZWFrO2Nhc2VcInJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDApO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgraVswXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54LHRoaXMucGFyYW1ldGVycy5ib3gueSkud2lkdGgodGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aCtpWzBdKX19O2JyZWFrO2Nhc2VcImJcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDApO2lmKHRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0K2lbMV0+MCl7aWYoXCJ0ZXh0XCI9PT10aGlzLnBhcmFtZXRlcnMudHlwZSlyZXR1cm47dGhpcy5lbC5tb3ZlKHRoaXMucGFyYW1ldGVycy5ib3gueCx0aGlzLnBhcmFtZXRlcnMuYm94LnkpLmhlaWdodCh0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCtpWzFdKX19O2JyZWFrO2Nhc2VcImxcIjp0aGlzLmNhbGM9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNuYXBUb0dyaWQodCxlLDEpO2lmKHRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtaVswXT4wKXtpZihcInRleHRcIj09PXRoaXMucGFyYW1ldGVycy50eXBlKXJldHVybjt0aGlzLmVsLm1vdmUodGhpcy5wYXJhbWV0ZXJzLmJveC54K2lbMF0sdGhpcy5wYXJhbWV0ZXJzLmJveC55KS53aWR0aCh0aGlzLnBhcmFtZXRlcnMuYm94LndpZHRoLWlbMF0pfX07YnJlYWs7Y2FzZVwicm90XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dCt0aGlzLnBhcmFtZXRlcnMucC54LGE9ZSt0aGlzLnBhcmFtZXRlcnMucC55LHM9TWF0aC5hdGFuMih0aGlzLnBhcmFtZXRlcnMucC55LXRoaXMucGFyYW1ldGVycy5ib3gueS10aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodC8yLHRoaXMucGFyYW1ldGVycy5wLngtdGhpcy5wYXJhbWV0ZXJzLmJveC54LXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgvMikscj1NYXRoLmF0YW4yKGEtdGhpcy5wYXJhbWV0ZXJzLmJveC55LXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LzIsaS10aGlzLnBhcmFtZXRlcnMuYm94LngtdGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC8yKSxvPXRoaXMucGFyYW1ldGVycy5yb3RhdGlvbisxODAqKHItcykvTWF0aC5QSSt0aGlzLm9wdGlvbnMuc25hcFRvQW5nbGUvMjt0aGlzLmVsLmNlbnRlcih0aGlzLnBhcmFtZXRlcnMuYm94LmN4LHRoaXMucGFyYW1ldGVycy5ib3guY3kpLnJvdGF0ZShvLW8ldGhpcy5vcHRpb25zLnNuYXBUb0FuZ2xlLHRoaXMucGFyYW1ldGVycy5ib3guY3gsdGhpcy5wYXJhbWV0ZXJzLmJveC5jeSl9O2JyZWFrO2Nhc2VcInBvaW50XCI6dGhpcy5jYWxjPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5zbmFwVG9HcmlkKHQsZSx0aGlzLnBhcmFtZXRlcnMucG9pbnRDb29yZHNbMF0sdGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzFdKSxhPXRoaXMuZWwuYXJyYXkoKS52YWx1ZU9mKCk7YVt0aGlzLnBhcmFtZXRlcnMuaV1bMF09dGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzBdK2lbMF0sYVt0aGlzLnBhcmFtZXRlcnMuaV1bMV09dGhpcy5wYXJhbWV0ZXJzLnBvaW50Q29vcmRzWzFdK2lbMV0sdGhpcy5lbC5wbG90KGEpfX10aGlzLmVsLmZpcmUoXCJyZXNpemVzdGFydFwiLHtkeDp0aGlzLnBhcmFtZXRlcnMueCxkeTp0aGlzLnBhcmFtZXRlcnMueSxldmVudDp0fSksU1ZHLm9uKHdpbmRvdyxcInRvdWNobW92ZS5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS51cGRhdGUodHx8d2luZG93LmV2ZW50KX0pKSxTVkcub24od2luZG93LFwidG91Y2hlbmQucmVzaXplXCIsKGZ1bmN0aW9uKCl7ZS5kb25lKCl9KSksU1ZHLm9uKHdpbmRvdyxcIm1vdXNlbW92ZS5yZXNpemVcIiwoZnVuY3Rpb24odCl7ZS51cGRhdGUodHx8d2luZG93LmV2ZW50KX0pKSxTVkcub24od2luZG93LFwibW91c2V1cC5yZXNpemVcIiwoZnVuY3Rpb24oKXtlLmRvbmUoKX0pKX0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPXRoaXMuX2V4dHJhY3RQb3NpdGlvbih0KSxpPXRoaXMudHJhbnNmb3JtUG9pbnQoZS54LGUueSksYT1pLngtdGhpcy5wYXJhbWV0ZXJzLnAueCxzPWkueS10aGlzLnBhcmFtZXRlcnMucC55O3RoaXMubGFzdFVwZGF0ZUNhbGw9W2Esc10sdGhpcy5jYWxjKGEscyksdGhpcy5lbC5maXJlKFwicmVzaXppbmdcIix7ZHg6YSxkeTpzLGV2ZW50OnR9KX1lbHNlIHRoaXMubGFzdFVwZGF0ZUNhbGwmJnRoaXMuY2FsYyh0aGlzLmxhc3RVcGRhdGVDYWxsWzBdLHRoaXMubGFzdFVwZGF0ZUNhbGxbMV0pfSx0LnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKCl7dGhpcy5sYXN0VXBkYXRlQ2FsbD1udWxsLFNWRy5vZmYod2luZG93LFwibW91c2Vtb3ZlLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcIm1vdXNldXAucmVzaXplXCIpLFNWRy5vZmYod2luZG93LFwidG91Y2htb3ZlLnJlc2l6ZVwiKSxTVkcub2ZmKHdpbmRvdyxcInRvdWNoZW5kLnJlc2l6ZVwiKSx0aGlzLmVsLmZpcmUoXCJyZXNpemVkb25lXCIpfSx0LnByb3RvdHlwZS5zbmFwVG9HcmlkPWZ1bmN0aW9uKHQsZSxpLGEpe3ZhciBzO3JldHVybiB2b2lkIDAhPT1hP3M9WyhpK3QpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLChhK2UpJXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkXTooaT1udWxsPT1pPzM6aSxzPVsodGhpcy5wYXJhbWV0ZXJzLmJveC54K3QrKDEmaT8wOnRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgpKSV0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCwodGhpcy5wYXJhbWV0ZXJzLmJveC55K2UrKDImaT8wOnRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0KSkldGhpcy5vcHRpb25zLnNuYXBUb0dyaWRdKSx0PDAmJihzWzBdLT10aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksZTwwJiYoc1sxXS09dGhpcy5vcHRpb25zLnNuYXBUb0dyaWQpLHQtPU1hdGguYWJzKHNbMF0pPHRoaXMub3B0aW9ucy5zbmFwVG9HcmlkLzI/c1swXTpzWzBdLSh0PDA/LXRoaXMub3B0aW9ucy5zbmFwVG9HcmlkOnRoaXMub3B0aW9ucy5zbmFwVG9HcmlkKSxlLT1NYXRoLmFicyhzWzFdKTx0aGlzLm9wdGlvbnMuc25hcFRvR3JpZC8yP3NbMV06c1sxXS0oZTwwPy10aGlzLm9wdGlvbnMuc25hcFRvR3JpZDp0aGlzLm9wdGlvbnMuc25hcFRvR3JpZCksdGhpcy5jb25zdHJhaW50VG9Cb3godCxlLGksYSl9LHQucHJvdG90eXBlLmNvbnN0cmFpbnRUb0JveD1mdW5jdGlvbih0LGUsaSxhKXt2YXIgcyxyLG89dGhpcy5vcHRpb25zLmNvbnN0cmFpbnR8fHt9O3JldHVybiB2b2lkIDAhPT1hPyhzPWkscj1hKToocz10aGlzLnBhcmFtZXRlcnMuYm94LngrKDEmaT8wOnRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgpLHI9dGhpcy5wYXJhbWV0ZXJzLmJveC55KygyJmk/MDp0aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCkpLHZvaWQgMCE9PW8ubWluWCYmcyt0PG8ubWluWCYmKHQ9by5taW5YLXMpLHZvaWQgMCE9PW8ubWF4WCYmcyt0Pm8ubWF4WCYmKHQ9by5tYXhYLXMpLHZvaWQgMCE9PW8ubWluWSYmcitlPG8ubWluWSYmKGU9by5taW5ZLXIpLHZvaWQgMCE9PW8ubWF4WSYmcitlPm8ubWF4WSYmKGU9by5tYXhZLXIpLFt0LGVdfSx0LnByb3RvdHlwZS5jaGVja0FzcGVjdFJhdGlvPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMub3B0aW9ucy5zYXZlQXNwZWN0UmF0aW8pcmV0dXJuIHQ7dmFyIGk9dC5zbGljZSgpLGE9dGhpcy5wYXJhbWV0ZXJzLmJveC53aWR0aC90aGlzLnBhcmFtZXRlcnMuYm94LmhlaWdodCxzPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgrdFswXSxyPXRoaXMucGFyYW1ldGVycy5ib3guaGVpZ2h0LXRbMV0sbz1zL3I7cmV0dXJuIG88YT8oaVsxXT1zL2EtdGhpcy5wYXJhbWV0ZXJzLmJveC5oZWlnaHQsZSYmKGlbMV09LWlbMV0pKTpvPmEmJihpWzBdPXRoaXMucGFyYW1ldGVycy5ib3gud2lkdGgtciphLGUmJihpWzBdPS1pWzBdKSksaX0sU1ZHLmV4dGVuZChTVkcuRWxlbWVudCx7cmVzaXplOmZ1bmN0aW9uKGUpe3JldHVybih0aGlzLnJlbWVtYmVyKFwiX3Jlc2l6ZUhhbmRsZXJcIil8fG5ldyB0KHRoaXMpKS5pbml0KGV8fHt9KSx0aGlzfX0pLFNWRy5FbGVtZW50LnByb3RvdHlwZS5yZXNpemUuZGVmYXVsdHM9e3NuYXBUb0FuZ2xlOi4xLHNuYXBUb0dyaWQ6MSxjb25zdHJhaW50Ont9LHNhdmVBc3BlY3RSYXRpbzohMX19KS5jYWxsKHRoaXMpfSgpLHZvaWQgMD09PXdpbmRvdy5BcGV4JiYod2luZG93LkFwZXg9e30pO3ZhciBHdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7YSh0aGlzLHQpLHRoaXMuY3R4PWUsdGhpcy53PWUud31yZXR1cm4gcih0LFt7a2V5OlwiaW5pdE1vZHVsZXNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3R4LnB1YmxpY01ldGhvZHM9W1widXBkYXRlT3B0aW9uc1wiLFwidXBkYXRlU2VyaWVzXCIsXCJhcHBlbmREYXRhXCIsXCJhcHBlbmRTZXJpZXNcIixcImlzU2VyaWVzSGlkZGVuXCIsXCJ0b2dnbGVTZXJpZXNcIixcInNob3dTZXJpZXNcIixcImhpZGVTZXJpZXNcIixcInNldExvY2FsZVwiLFwicmVzZXRTZXJpZXNcIixcInpvb21YXCIsXCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIixcImRhdGFVUklcIixcImV4cG9ydFRvQ1NWXCIsXCJhZGRYYXhpc0Fubm90YXRpb25cIixcImFkZFlheGlzQW5ub3RhdGlvblwiLFwiYWRkUG9pbnRBbm5vdGF0aW9uXCIsXCJjbGVhckFubm90YXRpb25zXCIsXCJyZW1vdmVBbm5vdGF0aW9uXCIsXCJwYXBlclwiLFwiZGVzdHJveVwiXSx0aGlzLmN0eC5ldmVudExpc3Q9W1wiY2xpY2tcIixcIm1vdXNlZG93blwiLFwibW91c2Vtb3ZlXCIsXCJtb3VzZWxlYXZlXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcInRvdWNobGVhdmVcIixcIm1vdXNldXBcIixcInRvdWNoZW5kXCJdLHRoaXMuY3R4LmFuaW1hdGlvbnM9bmV3IGIodGhpcy5jdHgpLHRoaXMuY3R4LmF4ZXM9bmV3IEoodGhpcy5jdHgpLHRoaXMuY3R4LmNvcmU9bmV3IFd0KHRoaXMuY3R4LmVsLHRoaXMuY3R4KSx0aGlzLmN0eC5jb25maWc9bmV3IEUoe30pLHRoaXMuY3R4LmRhdGE9bmV3IFcodGhpcy5jdHgpLHRoaXMuY3R4LmdyaWQ9bmV3IGoodGhpcy5jdHgpLHRoaXMuY3R4LmdyYXBoaWNzPW5ldyBtKHRoaXMuY3R4KSx0aGlzLmN0eC5jb3JlVXRpbHM9bmV3IHkodGhpcy5jdHgpLHRoaXMuY3R4LmNyb3NzaGFpcnM9bmV3IFEodGhpcy5jdHgpLHRoaXMuY3R4LmV2ZW50cz1uZXcgWih0aGlzLmN0eCksdGhpcy5jdHguZXhwb3J0cz1uZXcgRyh0aGlzLmN0eCksdGhpcy5jdHgubG9jYWxpemF0aW9uPW5ldyAkKHRoaXMuY3R4KSx0aGlzLmN0eC5vcHRpb25zPW5ldyBMLHRoaXMuY3R4LnJlc3BvbnNpdmU9bmV3IEsodGhpcy5jdHgpLHRoaXMuY3R4LnNlcmllcz1uZXcgTih0aGlzLmN0eCksdGhpcy5jdHgudGhlbWU9bmV3IHR0KHRoaXMuY3R4KSx0aGlzLmN0eC5mb3JtYXR0ZXJzPW5ldyBNKHRoaXMuY3R4KSx0aGlzLmN0eC50aXRsZVN1YnRpdGxlPW5ldyBldCh0aGlzLmN0eCksdGhpcy5jdHgubGVnZW5kPW5ldyBsdCh0aGlzLmN0eCksdGhpcy5jdHgudG9vbGJhcj1uZXcgaHQodGhpcy5jdHgpLHRoaXMuY3R4LnRvb2x0aXA9bmV3IGJ0KHRoaXMuY3R4KSx0aGlzLmN0eC5kaW1lbnNpb25zPW5ldyBvdCh0aGlzLmN0eCksdGhpcy5jdHgudXBkYXRlSGVscGVycz1uZXcgQnQodGhpcy5jdHgpLHRoaXMuY3R4Lnpvb21QYW5TZWxlY3Rpb249bmV3IGN0KHRoaXMuY3R4KSx0aGlzLmN0eC53Lmdsb2JhbHMudG9vbHRpcD1uZXcgYnQodGhpcy5jdHgpfX1dKSx0fSgpLFZ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXthKHRoaXMsdCksdGhpcy5jdHg9ZSx0aGlzLnc9ZS53fXJldHVybiByKHQsW3trZXk6XCJjbGVhclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuaXNVcGRhdGluZzt0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uJiZ0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uLmRlc3Ryb3koKSx0aGlzLmN0eC50b29sYmFyJiZ0aGlzLmN0eC50b29sYmFyLmRlc3Ryb3koKSx0aGlzLmN0eC5hbmltYXRpb25zPW51bGwsdGhpcy5jdHguYXhlcz1udWxsLHRoaXMuY3R4LmFubm90YXRpb25zPW51bGwsdGhpcy5jdHguY29yZT1udWxsLHRoaXMuY3R4LmRhdGE9bnVsbCx0aGlzLmN0eC5ncmlkPW51bGwsdGhpcy5jdHguc2VyaWVzPW51bGwsdGhpcy5jdHgucmVzcG9uc2l2ZT1udWxsLHRoaXMuY3R4LnRoZW1lPW51bGwsdGhpcy5jdHguZm9ybWF0dGVycz1udWxsLHRoaXMuY3R4LnRpdGxlU3VidGl0bGU9bnVsbCx0aGlzLmN0eC5sZWdlbmQ9bnVsbCx0aGlzLmN0eC5kaW1lbnNpb25zPW51bGwsdGhpcy5jdHgub3B0aW9ucz1udWxsLHRoaXMuY3R4LmNyb3NzaGFpcnM9bnVsbCx0aGlzLmN0eC56b29tUGFuU2VsZWN0aW9uPW51bGwsdGhpcy5jdHgudXBkYXRlSGVscGVycz1udWxsLHRoaXMuY3R4LnRvb2xiYXI9bnVsbCx0aGlzLmN0eC5sb2NhbGl6YXRpb249bnVsbCx0aGlzLmN0eC53Lmdsb2JhbHMudG9vbHRpcD1udWxsLHRoaXMuY2xlYXJEb21FbGVtZW50cyh7aXNVcGRhdGluZzplfSl9fSx7a2V5Olwia2lsbFNWR1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuZWFjaCgoZnVuY3Rpb24odCxlKXt0aGlzLnJlbW92ZUNsYXNzKFwiKlwiKSx0aGlzLm9mZigpLHRoaXMuc3RvcCgpfSksITApLHQudW5ncm91cCgpLHQuY2xlYXIoKX19LHtrZXk6XCJjbGVhckRvbUVsZW1lbnRzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXQuaXNVcGRhdGluZyxhPXRoaXMudy5nbG9iYWxzLmRvbS5QYXBlci5ub2RlO2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnBhcmVudE5vZGUmJiFpJiYoYS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUubWluSGVpZ2h0PVwidW5zZXRcIik7dmFyIHM9dGhpcy53Lmdsb2JhbHMuZG9tLmJhc2VFbDtzJiZ0aGlzLmN0eC5ldmVudExpc3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7cy5yZW1vdmVFdmVudExpc3RlbmVyKHQsZS5jdHguZXZlbnRzLmRvY3VtZW50RXZlbnQpfSkpO3ZhciByPXRoaXMudy5nbG9iYWxzLmRvbTtpZihudWxsIT09dGhpcy5jdHguZWwpZm9yKDt0aGlzLmN0eC5lbC5maXJzdENoaWxkOyl0aGlzLmN0eC5lbC5yZW1vdmVDaGlsZCh0aGlzLmN0eC5lbC5maXJzdENoaWxkKTt0aGlzLmtpbGxTVkcoci5QYXBlciksci5QYXBlci5yZW1vdmUoKSxyLmVsV3JhcD1udWxsLHIuZWxHcmFwaGljYWw9bnVsbCxyLmVsTGVnZW5kV3JhcD1udWxsLHIuZWxMZWdlbmRGb3JlaWduPW51bGwsci5iYXNlRWw9bnVsbCxyLmVsR3JpZFJlY3Q9bnVsbCxyLmVsR3JpZFJlY3RNYXNrPW51bGwsci5lbEdyaWRSZWN0TWFya2VyTWFzaz1udWxsLHIuZWxGb3JlY2FzdE1hc2s9bnVsbCxyLmVsTm9uRm9yZWNhc3RNYXNrPW51bGwsci5lbERlZnM9bnVsbH19XSksdH0oKSxqdD1uZXcgV2Vha01hcDt2YXIgX3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsaSl7YSh0aGlzLHQpLHRoaXMub3B0cz1pLHRoaXMuY3R4PXRoaXMsdGhpcy53PW5ldyBGKGkpLmluaXQoKSx0aGlzLmVsPWUsdGhpcy53Lmdsb2JhbHMuY3VpZD14LnJhbmRvbUlkKCksdGhpcy53Lmdsb2JhbHMuY2hhcnRJRD10aGlzLncuY29uZmlnLmNoYXJ0LmlkP3guZXNjYXBlU3RyaW5nKHRoaXMudy5jb25maWcuY2hhcnQuaWQpOnRoaXMudy5nbG9iYWxzLmN1aWQsbmV3IEd0KHRoaXMpLmluaXRNb2R1bGVzKCksdGhpcy5jcmVhdGU9eC5iaW5kKHRoaXMuY3JlYXRlLHRoaXMpLHRoaXMud2luZG93UmVzaXplSGFuZGxlcj10aGlzLl93aW5kb3dSZXNpemVIYW5kbGVyLmJpbmQodGhpcyksdGhpcy5wYXJlbnRSZXNpemVIYW5kbGVyPXRoaXMuX3BhcmVudFJlc2l6ZUNhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIHIodCxbe2tleTpcInJlbmRlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsaSl7aWYobnVsbCE9PXQuZWwpe3ZvaWQgMD09PUFwZXguX2NoYXJ0SW5zdGFuY2VzJiYoQXBleC5fY2hhcnRJbnN0YW5jZXM9W10pLHQudy5jb25maWcuY2hhcnQuaWQmJkFwZXguX2NoYXJ0SW5zdGFuY2VzLnB1c2goe2lkOnQudy5nbG9iYWxzLmNoYXJ0SUQsZ3JvdXA6dC53LmNvbmZpZy5jaGFydC5ncm91cCxjaGFydDp0fSksdC5zZXRMb2NhbGUodC53LmNvbmZpZy5jaGFydC5kZWZhdWx0TG9jYWxlKTt2YXIgYT10LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5iZWZvcmVNb3VudDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhJiZhKHQsdC53KSx0LmV2ZW50cy5maXJlRXZlbnQoXCJiZWZvcmVNb3VudFwiLFt0LHQud10pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdC53aW5kb3dSZXNpemVIYW5kbGVyKSxmdW5jdGlvbih0LGUpe3ZhciBpPSExO2lmKHQubm9kZVR5cGUhPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpe3ZhciBhPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XCJub25lXCIhPT10LnN0eWxlLmRpc3BsYXkmJjAhPT1hLndpZHRofHwoaT0hMCl9dmFyIHM9bmV3IFJlc2l6ZU9ic2VydmVyKChmdW5jdGlvbihhKXtpJiZlLmNhbGwodCxhKSxpPSEwfSkpO3Qubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gcy5vYnNlcnZlKHQpfSkpOnMub2JzZXJ2ZSh0KSxqdC5zZXQoZSxzKX0odC5lbC5wYXJlbnROb2RlLHQucGFyZW50UmVzaXplSGFuZGxlciksIXQuY3NzKXt2YXIgcz10LmVsLmdldFJvb3ROb2RlJiZ0LmVsLmdldFJvb3ROb2RlKCkscj14LmlzKFwiU2hhZG93Um9vdFwiLHMpLG89dC5lbC5vd25lckRvY3VtZW50LG49by5nZXRFbGVtZW50QnlJZChcImFwZXhjaGFydHMtY3NzXCIpOyFyJiZufHwodC5jc3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpLHQuY3NzLmlkPVwiYXBleGNoYXJ0cy1jc3NcIix0LmNzcy50ZXh0Q29udGVudD0nQGtleWZyYW1lcyBvcGFxdWUge1xcbiAgMCUge1xcbiAgICAgIG9wYWNpdHk6IDBcXG4gIH1cXG5cXG4gIHRvIHtcXG4gICAgICBvcGFjaXR5OiAxXFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgcmVzaXplYW5pbSB7XFxuICAwJSx0byB7XFxuICAgICAgb3BhY2l0eTogMFxcbiAgfVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtY2FudmFzIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbiAgd2lkdGg6IDZweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcXG4gIGJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7XFxuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSlcXG59XFxuXFxuLmFwZXhjaGFydHMtaW5uZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRleHQgdHNwYW4ge1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXRcXG59XFxuXFxuLmxlZ2VuZC1tb3VzZW92ZXItaW5hY3RpdmUge1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbDtcXG4gIG9wYWNpdHk6IC4yXFxufVxcblxcbi5hcGV4Y2hhcnRzLWxlZ2VuZC10ZXh0IHtcXG4gIHBhZGRpbmctbGVmdDogMTVweDtcXG4gIG1hcmdpbi1sZWZ0OiAtMTVweDtcXG59XFxuXFxuLmFwZXhjaGFydHMtc2VyaWVzLWNvbGxhcHNlZCB7XFxuICBvcGFjaXR5OiAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAge1xcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgYm94LXNoYWRvdzogMnB4IDJweCA2cHggLTRweCAjOTk5O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgZm9udC1zaXplOiAxNHB4O1xcbiAgbGVmdDogNjJweDtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMjBweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICB6LWluZGV4OiAxMjtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQge1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2UzZTNlMztcXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsLjk2KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMzAsMzAsMzAsLjgpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAgKiB7XFxuICBmb250LWZhbWlseTogaW5oZXJpdFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRpdGxlIHtcXG4gIHBhZGRpbmc6IDZweDtcXG4gIGZvbnQtc2l6ZTogMTVweDtcXG4gIG1hcmdpbi1ib3R0b206IDRweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XFxuICBiYWNrZ3JvdW5kOiAjZWNlZmYxO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGRcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtdG9vbHRpcC10aXRsZSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzMzXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy12YWx1ZSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQteS12YWx1ZSwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtei12YWx1ZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBtYXJnaW4tbGVmdDogNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDYwMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWw6ZW1wdHksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LWxhYmVsOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC15LXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC16LXZhbHVlOmVtcHR5LC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGl0bGU6ZW1wdHkge1xcbiAgZGlzcGxheTogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWwsLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlIHtcXG4gIHBhZGRpbmc6IDZweCAwIDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLWdvYWxzLWdyb3VwLC5hcGV4Y2hhcnRzLXRvb2x0aXAtdGV4dC1nb2Fscy1sYWJlbCwuYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtdmFsdWUge1xcbiAgZGlzcGxheTogZmxleFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXRleHQtZ29hbHMtbGFiZWw6bm90KDplbXB0eSksLmFwZXhjaGFydHMtdG9vbHRpcC10ZXh0LWdvYWxzLXZhbHVlOm5vdCg6ZW1wdHkpIHtcXG4gIG1hcmdpbi10b3A6IC02cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1tYXJrZXIge1xcbiAgd2lkdGg6IDEycHg7XFxuICBoZWlnaHQ6IDEycHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB0b3A6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCVcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAge1xcbiAgcGFkZGluZzogMCAxMHB4O1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLmFwZXhjaGFydHMtYWN0aXZlIC5hcGV4Y2hhcnRzLXRvb2x0aXAtbWFya2VyIHtcXG4gIG9wYWNpdHk6IDFcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXAuYXBleGNoYXJ0cy1hY3RpdmUsLmFwZXhjaGFydHMtdG9vbHRpcC1zZXJpZXMtZ3JvdXA6bGFzdC1jaGlsZCB7XFxuICBwYWRkaW5nLWJvdHRvbTogNHB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtc2VyaWVzLWdyb3VwLWhpZGRlbiB7XFxuICBvcGFjaXR5OiAwO1xcbiAgaGVpZ2h0OiAwO1xcbiAgbGluZS1oZWlnaHQ6IDA7XFxuICBwYWRkaW5nOiAwIWltcG9ydGFudFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXktZ3JvdXAge1xcbiAgcGFkZGluZzogNnB4IDAgNXB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLWN1c3RvbS10b29sdGlwLC5hcGV4Y2hhcnRzLXRvb2x0aXAtYm94IHtcXG4gIHBhZGRpbmc6IDRweCA4cHhcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3hQbG90IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2VcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3g+ZGl2IHtcXG4gIG1hcmdpbjogNHB4IDBcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1ib3ggc3Bhbi52YWx1ZSB7XFxuICBmb250LXdlaWdodDogNzAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRvb2x0aXAtcmFuZ2ViYXIge1xcbiAgcGFkZGluZzogNXB4IDhweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy10b29sdGlwLXJhbmdlYmFyIC5jYXRlZ29yeSB7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgY29sb3I6ICM3NzdcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbHRpcC1yYW5nZWJhciAuc2VyaWVzLW5hbWUge1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgbWFyZ2luLWJvdHRvbTogNXB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAge1xcbiAgb3BhY2l0eTogMDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgY29sb3I6ICMzNzNkM2Y7XFxuICBmb250LXNpemU6IDEzcHg7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBib3JkZXItcmFkaXVzOiAycHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMDtcXG4gIGJhY2tncm91bmQ6ICNlY2VmZjE7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjOTBhNGFlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcCB7XFxuICBwYWRkaW5nOiA5cHggMTBweDtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjUpO1xcbiAgY29sb3I6ICNmZmZcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgbGVmdDogNTAlO1xcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGNvbnRlbnQ6IFwiIFwiO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXA6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogNnB4O1xcbiAgbWFyZ2luLWxlZnQ6IC02cHhcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwOmJlZm9yZSB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXdpZHRoOiA3cHg7XFxuICBtYXJnaW4tbGVmdDogLTdweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcXG4gIGJvdHRvbTogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtdG9wOmFmdGVyLC5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YmVmb3JlIHtcXG4gIHRvcDogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tOmFmdGVyIHtcXG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICNlY2VmZjFcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLWJvdHRvbTpiZWZvcmUge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzkwYTRhZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tLmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy14YXhpc3Rvb2x0aXAtYm90dG9tLmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLDAsMCwuNSlcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcDphZnRlciB7XFxuICBib3JkZXItdG9wLWNvbG9yOiAjZWNlZmYxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC10b3A6YmVmb3JlIHtcXG4gIGJvcmRlci10b3AtY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YWZ0ZXIsLmFwZXhjaGFydHMteGF4aXN0b29sdGlwLXRvcC5hcGV4Y2hhcnRzLXRoZW1lLWRhcms6YmVmb3JlIHtcXG4gIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAge1xcbiAgcGFkZGluZzogNHB4IDEwcHhcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLmFwZXhjaGFydHMtdGhlbWUtZGFyayB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjUpO1xcbiAgY29sb3I6ICNmZmZcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwOmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgdG9wOiA1MCU7XFxuICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgY29udGVudDogXCIgXCI7XFxuICBoZWlnaHQ6IDA7XFxuICB3aWR0aDogMDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDphZnRlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXdpZHRoOiA2cHg7XFxuICBtYXJnaW4tdG9wOiAtNnB4XFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcDpiZWZvcmUge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci13aWR0aDogN3B4O1xcbiAgbWFyZ2luLXRvcDogLTdweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDpiZWZvcmUge1xcbiAgbGVmdDogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQ6YWZ0ZXIsLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmJlZm9yZSB7XFxuICByaWdodDogMTAwJVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDphZnRlciB7XFxuICBib3JkZXItbGVmdC1jb2xvcjogI2VjZWZmMVxcbn1cXG5cXG4uYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtbGVmdDpiZWZvcmUge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLWxlZnQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmFmdGVyLC5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1sZWZ0LmFwZXhjaGFydHMtdGhlbWUtZGFyazpiZWZvcmUge1xcbiAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1yaWdodDphZnRlciB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6ICNlY2VmZjFcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0OmJlZm9yZSB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6ICM5MGE0YWVcXG59XFxuXFxuLmFwZXhjaGFydHMteWF4aXN0b29sdGlwLXJpZ2h0LmFwZXhjaGFydHMtdGhlbWUtZGFyazphZnRlciwuYXBleGNoYXJ0cy15YXhpc3Rvb2x0aXAtcmlnaHQuYXBleGNoYXJ0cy10aGVtZS1kYXJrOmJlZm9yZSB7XFxuICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMCwwLDAsLjUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC5hcGV4Y2hhcnRzLWFjdGl2ZSB7XFxuICBvcGFjaXR5OiAxXFxufVxcblxcbi5hcGV4Y2hhcnRzLXlheGlzdG9vbHRpcC1oaWRkZW4ge1xcbiAgZGlzcGxheTogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy14Y3Jvc3NoYWlycywuYXBleGNoYXJ0cy15Y3Jvc3NoYWlycyB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXhjcm9zc2hhaXJzLmFwZXhjaGFydHMtYWN0aXZlLC5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLmFwZXhjaGFydHMtYWN0aXZlIHtcXG4gIG9wYWNpdHk6IDE7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLXljcm9zc2hhaXJzLWhpZGRlbiB7XFxuICBvcGFjaXR5OiAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1yZWN0IHtcXG4gIGN1cnNvcjogbW92ZVxcbn1cXG5cXG4uc3ZnX3NlbGVjdF9ib3VuZGluZ1JlY3QsLnN2Z19zZWxlY3RfcG9pbnRzX3JvdCB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW5cXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9ib3VuZGluZ1JlY3QsLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfcm90IHtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW5cXG59XFxuXFxuLmFwZXhjaGFydHMtc2VsZWN0aW9uLXJlY3QrZyAuc3ZnX3NlbGVjdF9wb2ludHNfbCwuYXBleGNoYXJ0cy1zZWxlY3Rpb24tcmVjdCtnIC5zdmdfc2VsZWN0X3BvaW50c19yIHtcXG4gIGN1cnNvcjogZXctcmVzaXplO1xcbiAgb3BhY2l0eTogMTtcXG4gIHZpc2liaWxpdHk6IHZpc2libGVcXG59XFxuXFxuLnN2Z19zZWxlY3RfcG9pbnRzIHtcXG4gIGZpbGw6ICNlZmVmZWY7XFxuICBzdHJva2U6ICMzMzM7XFxuICByeDogMlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zdmcuYXBleGNoYXJ0cy16b29tYWJsZS5ob3ZlcmluZy16b29tIHtcXG4gIGN1cnNvcjogY3Jvc3NoYWlyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXN2Zy5hcGV4Y2hhcnRzLXpvb21hYmxlLmhvdmVyaW5nLXBhbiB7XFxuICBjdXJzb3I6IG1vdmVcXG59XFxuXFxuLmFwZXhjaGFydHMtbWVudS1pY29uLC5hcGV4Y2hhcnRzLXBhbi1pY29uLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24sLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24sLmFwZXhjaGFydHMtdG9vbGJhci1jdXN0b20taWNvbiwuYXBleGNoYXJ0cy16b29tLWljb24sLmFwZXhjaGFydHMtem9vbWluLWljb24sLmFwZXhjaGFydHMtem9vbW91dC1pY29uIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XFxuICBjb2xvcjogIzZlODE5MjtcXG4gIHRleHQtYWxpZ246IGNlbnRlclxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXJlc2V0LWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb20taWNvbiBzdmcsLmFwZXhjaGFydHMtem9vbWluLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiBzdmcge1xcbiAgZmlsbDogIzZlODE5Mlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbiBzdmcge1xcbiAgZmlsbDogIzQ0NDtcXG4gIHRyYW5zZm9ybTogc2NhbGUoLjc2KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLW1lbnUtaWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1wYW4taWNvbiBzdmcsLmFwZXhjaGFydHMtdGhlbWUtZGFyayAuYXBleGNoYXJ0cy1yZXNldC1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXNlbGVjdGlvbi1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXRvb2xiYXItY3VzdG9tLWljb24gc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtem9vbS1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb21pbi1pY29uIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1kYXJrIC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiBzdmcge1xcbiAgZmlsbDogI2YzZjRmNVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtcmVzZXQtem9vbS1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnLC5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbi5hcGV4Y2hhcnRzLXNlbGVjdGVkIHN2ZywuYXBleGNoYXJ0cy1jYW52YXMgLmFwZXhjaGFydHMtem9vbS1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnIHtcXG4gIGZpbGw6ICMwMDhmZmJcXG59XFxuXFxuLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtbWVudS1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1yZXNldC1pY29uOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy1zZWxlY3Rpb24taWNvbjpub3QoLmFwZXhjaGFydHMtc2VsZWN0ZWQpOmhvdmVyIHN2ZywuYXBleGNoYXJ0cy10aGVtZS1saWdodCAuYXBleGNoYXJ0cy16b29tLWljb246bm90KC5hcGV4Y2hhcnRzLXNlbGVjdGVkKTpob3ZlciBzdmcsLmFwZXhjaGFydHMtdGhlbWUtbGlnaHQgLmFwZXhjaGFydHMtem9vbWluLWljb246aG92ZXIgc3ZnLC5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbjpob3ZlciBzdmcge1xcbiAgZmlsbDogIzMzM1xcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWljb24sLmFwZXhjaGFydHMtc2VsZWN0aW9uLWljb24ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXJlc2V0LWljb24ge1xcbiAgbWFyZ2luLWxlZnQ6IDVweFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1tZW51LWljb24sLmFwZXhjaGFydHMtcmVzZXQtaWNvbiwuYXBleGNoYXJ0cy16b29tLWljb24ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSguODUpXFxufVxcblxcbi5hcGV4Y2hhcnRzLXpvb21pbi1pY29uLC5hcGV4Y2hhcnRzLXpvb21vdXQtaWNvbiB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKC43KVxcbn1cXG5cXG4uYXBleGNoYXJ0cy16b29tb3V0LWljb24ge1xcbiAgbWFyZ2luLXJpZ2h0OiAzcHhcXG59XFxuXFxuLmFwZXhjaGFydHMtcGFuLWljb24ge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSguNjIpO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgbGVmdDogMXB4O1xcbiAgdG9wOiAwXFxufVxcblxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uIHN2ZyB7XFxuICBmaWxsOiAjZmZmO1xcbiAgc3Ryb2tlOiAjNmU4MTkyO1xcbiAgc3Ryb2tlLXdpZHRoOiAyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXBhbi1pY29uLmFwZXhjaGFydHMtc2VsZWN0ZWQgc3ZnIHtcXG4gIHN0cm9rZTogIzAwOGZmYlxcbn1cXG5cXG4uYXBleGNoYXJ0cy1wYW4taWNvbjpub3QoLmFwZXhjaGFydHMtc2VsZWN0ZWQpOmhvdmVyIHN2ZyB7XFxuICBzdHJva2U6ICMzMzNcXG59XFxuXFxuLmFwZXhjaGFydHMtdG9vbGJhciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMTtcXG4gIG1heC13aWR0aDogMTc2cHg7XFxuICB0ZXh0LWFsaWduOiByaWdodDtcXG4gIGJvcmRlci1yYWRpdXM6IDNweDtcXG4gIHBhZGRpbmc6IDAgNnB4IDJweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUge1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMTAwJTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICBwYWRkaW5nOiAzcHg7XFxuICByaWdodDogMTBweDtcXG4gIG9wYWNpdHk6IDA7XFxuICBtaW4td2lkdGg6IDExMHB4O1xcbiAgdHJhbnNpdGlvbjogLjE1cyBlYXNlIGFsbDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUuYXBleGNoYXJ0cy1tZW51LW9wZW4ge1xcbiAgb3BhY2l0eTogMTtcXG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxuICB0cmFuc2l0aW9uOiAuMTVzIGVhc2UgYWxsXFxufVxcblxcbi5hcGV4Y2hhcnRzLW1lbnUtaXRlbSB7XFxuICBwYWRkaW5nOiA2cHggN3B4O1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgY3Vyc29yOiBwb2ludGVyXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRoZW1lLWxpZ2h0IC5hcGV4Y2hhcnRzLW1lbnUtaXRlbTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiAjZWVlXFxufVxcblxcbi5hcGV4Y2hhcnRzLXRoZW1lLWRhcmsgLmFwZXhjaGFydHMtbWVudSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC43KTtcXG4gIGNvbG9yOiAjZmZmXFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpIHtcXG4gIC5hcGV4Y2hhcnRzLWNhbnZhczpob3ZlciAuYXBleGNoYXJ0cy10b29sYmFyIHtcXG4gICAgICBvcGFjaXR5OiAxXFxuICB9XFxufVxcblxcbi5hcGV4Y2hhcnRzLWNhbnZhcyAuYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiwuYXBleGNoYXJ0cy1kYXRhbGFiZWwuYXBleGNoYXJ0cy1lbGVtZW50LWhpZGRlbiwuYXBleGNoYXJ0cy1oaWRlIC5hcGV4Y2hhcnRzLXNlcmllcy1wb2ludHMge1xcbiAgb3BhY2l0eTogMFxcbn1cXG5cXG4uYXBleGNoYXJ0cy1oaWRkZW4tZWxlbWVudC1zaG93biB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdHJhbnNpdGlvbjogMC4yNXMgZWFzZSBhbGw7XFxufVxcbi5hcGV4Y2hhcnRzLWRhdGFsYWJlbCwuYXBleGNoYXJ0cy1kYXRhbGFiZWwtbGFiZWwsLmFwZXhjaGFydHMtZGF0YWxhYmVsLXZhbHVlLC5hcGV4Y2hhcnRzLWRhdGFsYWJlbHMsLmFwZXhjaGFydHMtcGllLWxhYmVsIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lXFxufVxcblxcbi5hcGV4Y2hhcnRzLXBpZS1sYWJlbC1kZWxheSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgYW5pbWF0aW9uLW5hbWU6IG9wYXF1ZTtcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogLjNzO1xcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlXFxufVxcblxcbi5hcGV4Y2hhcnRzLWFubm90YXRpb24tcmVjdCwuYXBleGNoYXJ0cy1hcmVhLXNlcmllcyAuYXBleGNoYXJ0cy1hcmVhLC5hcGV4Y2hhcnRzLWFyZWEtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlci5uby1wb2ludGVyLWV2ZW50cywuYXBleGNoYXJ0cy1ncmlkbGluZSwuYXBleGNoYXJ0cy1saW5lLC5hcGV4Y2hhcnRzLWxpbmUtc2VyaWVzIC5hcGV4Y2hhcnRzLXNlcmllcy1tYXJrZXJzIC5hcGV4Y2hhcnRzLW1hcmtlci5uby1wb2ludGVyLWV2ZW50cywuYXBleGNoYXJ0cy1wb2ludC1hbm5vdGF0aW9uLWxhYmVsLC5hcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBwYXRoLC5hcGV4Y2hhcnRzLXJhZGFyLXNlcmllcyBwb2x5Z29uLC5hcGV4Y2hhcnRzLXRvb2xiYXIgc3ZnLC5hcGV4Y2hhcnRzLXRvb2x0aXAgLmFwZXhjaGFydHMtbWFya2VyLC5hcGV4Y2hhcnRzLXhheGlzLWFubm90YXRpb24tbGFiZWwsLmFwZXhjaGFydHMteWF4aXMtYW5ub3RhdGlvbi1sYWJlbCwuYXBleGNoYXJ0cy16b29tLXJlY3Qge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtbWFya2VyIHtcXG4gIHRyYW5zaXRpb246IC4xNXMgZWFzZSBhbGxcXG59XFxuXFxuLnJlc2l6ZS10cmlnZ2VycyB7XFxuICBhbmltYXRpb246IDFtcyByZXNpemVhbmltO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgb3BhY2l0eTogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlblxcbn1cXG5cXG4uY29udHJhY3QtdHJpZ2dlcjpiZWZvcmUsLnJlc2l6ZS10cmlnZ2VycywucmVzaXplLXRyaWdnZXJzPmRpdiB7XFxuICBjb250ZW50OiBcIiBcIjtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMFxcbn1cXG5cXG4ucmVzaXplLXRyaWdnZXJzPmRpdiB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJhY2tncm91bmQ6ICNlZWU7XFxuICBvdmVyZmxvdzogYXV0b1xcbn1cXG5cXG4uY29udHJhY3QtdHJpZ2dlcjpiZWZvcmUge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHdpZHRoOiAyMDAlO1xcbiAgaGVpZ2h0OiAyMDAlXFxufVxcblxcbi5hcGV4Y2hhcnRzLWJhci1nb2Fscy1tYXJrZXJze1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59XFxuXFxuLmFwZXhjaGFydHMtYmFyLXNoYWRvd3N7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZVxcbn1cXG5cXG4uYXBleGNoYXJ0cy1yYW5nZWJhci1nb2Fscy1tYXJrZXJze1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmVcXG59JyxyP3MucHJlcGVuZCh0LmNzcyk6by5oZWFkLmFwcGVuZENoaWxkKHQuY3NzKSl9dmFyIGw9dC5jcmVhdGUodC53LmNvbmZpZy5zZXJpZXMse30pO2lmKCFsKXJldHVybiBlKHQpO3QubW91bnQobCkudGhlbigoZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VudGVkJiZ0LncuY29uZmlnLmNoYXJ0LmV2ZW50cy5tb3VudGVkKHQsdC53KSx0LmV2ZW50cy5maXJlRXZlbnQoXCJtb3VudGVkXCIsW3QsdC53XSksZShsKX0pKS5jYXRjaCgoZnVuY3Rpb24odCl7aSh0KX0pKX1lbHNlIGkobmV3IEVycm9yKFwiRWxlbWVudCBub3QgZm91bmRcIikpfSkpfX0se2tleTpcImNyZWF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy53O25ldyBHdCh0aGlzKS5pbml0TW9kdWxlcygpO3ZhciBhPXRoaXMudy5nbG9iYWxzOyhhLm5vRGF0YT0hMSxhLmFuaW1hdGlvbkVuZGVkPSExLHRoaXMucmVzcG9uc2l2ZS5jaGVja1Jlc3BvbnNpdmVDb25maWcoZSksaS5jb25maWcueGF4aXMuY29udmVydGVkQ2F0VG9OdW1lcmljKSYmbmV3IFgoaS5jb25maWcpLmNvbnZlcnRDYXRUb051bWVyaWNYYXhpcyhpLmNvbmZpZyx0aGlzLmN0eCk7aWYobnVsbD09PXRoaXMuZWwpcmV0dXJuIGEuYW5pbWF0aW9uRW5kZWQ9ITAsbnVsbDtpZih0aGlzLmNvcmUuc2V0dXBFbGVtZW50cygpLFwidHJlZW1hcFwiPT09aS5jb25maWcuY2hhcnQudHlwZSYmKGkuY29uZmlnLmdyaWQuc2hvdz0hMSxpLmNvbmZpZy55YXhpc1swXS5zaG93PSExKSwwPT09YS5zdmdXaWR0aClyZXR1cm4gYS5hbmltYXRpb25FbmRlZD0hMCxudWxsO3ZhciBzPXkuY2hlY2tDb21ib1Nlcmllcyh0KTthLmNvbWJvQ2hhcnRzPXMuY29tYm9DaGFydHMsYS5jb21ib0JhckNvdW50PXMuY29tYm9CYXJDb3VudDt2YXIgcj10LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhJiYwPT09dC5kYXRhLmxlbmd0aH0pKTsoMD09PXQubGVuZ3RofHxyKSYmdGhpcy5zZXJpZXMuaGFuZGxlTm9EYXRhKCksdGhpcy5ldmVudHMuc2V0dXBFdmVudEhhbmRsZXJzKCksdGhpcy5kYXRhLnBhcnNlRGF0YSh0KSx0aGlzLnRoZW1lLmluaXQoKSxuZXcgSCh0aGlzKS5zZXRHbG9iYWxNYXJrZXJTaXplKCksdGhpcy5mb3JtYXR0ZXJzLnNldExhYmVsRm9ybWF0dGVycygpLHRoaXMudGl0bGVTdWJ0aXRsZS5kcmF3KCksYS5ub0RhdGEmJmEuY29sbGFwc2VkU2VyaWVzLmxlbmd0aCE9PWEuc2VyaWVzLmxlbmd0aCYmIWkuY29uZmlnLmxlZ2VuZC5zaG93Rm9yU2luZ2xlU2VyaWVzfHx0aGlzLmxlZ2VuZC5pbml0KCksdGhpcy5zZXJpZXMuaGFzQWxsU2VyaWVzRXF1YWxYKCksYS5heGlzQ2hhcnRzJiYodGhpcy5jb3JlLmNvcmVDYWxjdWxhdGlvbnMoKSxcImNhdGVnb3J5XCIhPT1pLmNvbmZpZy54YXhpcy50eXBlJiZ0aGlzLmZvcm1hdHRlcnMuc2V0TGFiZWxGb3JtYXR0ZXJzKCksdGhpcy5jdHgudG9vbGJhci5taW5YPWkuZ2xvYmFscy5taW5YLHRoaXMuY3R4LnRvb2xiYXIubWF4WD1pLmdsb2JhbHMubWF4WCksdGhpcy5mb3JtYXR0ZXJzLmhlYXRtYXBMYWJlbEZvcm1hdHRlcnMoKSxuZXcgeSh0aGlzKS5nZXRMYXJnZXN0TWFya2VyU2l6ZSgpLHRoaXMuZGltZW5zaW9ucy5wbG90Q29vcmRzKCk7dmFyIG89dGhpcy5jb3JlLnh5U2V0dGluZ3MoKTt0aGlzLmdyaWQuY3JlYXRlR3JpZE1hc2soKTt2YXIgbj10aGlzLmNvcmUucGxvdENoYXJ0VHlwZSh0LG8pLGw9bmV3IE8odGhpcyk7cmV0dXJuIGwuYnJpbmdGb3J3YXJkKCksaS5jb25maWcuZGF0YUxhYmVscy5iYWNrZ3JvdW5kLmVuYWJsZWQmJmwuZGF0YUxhYmVsc0JhY2tncm91bmQoKSx0aGlzLmNvcmUuc2hpZnRHcmFwaFBvc2l0aW9uKCkse2VsR3JhcGg6bix4eVJhdGlvczpvLGRpbWVuc2lvbnM6e3Bsb3Q6e2xlZnQ6aS5nbG9iYWxzLnRyYW5zbGF0ZVgsdG9wOmkuZ2xvYmFscy50cmFuc2xhdGVZLHdpZHRoOmkuZ2xvYmFscy5ncmlkV2lkdGgsaGVpZ2h0OmkuZ2xvYmFscy5ncmlkSGVpZ2h0fX19fX0se2tleTpcIm1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsaT10aGlzLGE9aS53O3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyxyKXtpZihudWxsPT09aS5lbClyZXR1cm4gcihuZXcgRXJyb3IoXCJOb3QgZW5vdWdoIGRhdGEgdG8gZGlzcGxheSBvciB0YXJnZXQgZWxlbWVudCBub3QgZm91bmRcIikpOyhudWxsPT09ZXx8YS5nbG9iYWxzLmFsbFNlcmllc0NvbGxhcHNlZCkmJmkuc2VyaWVzLmhhbmRsZU5vRGF0YSgpLGkuZ3JpZD1uZXcgaihpKTt2YXIgbyxuLGw9aS5ncmlkLmRyYXdHcmlkKCk7KGkuYW5ub3RhdGlvbnM9bmV3IFAoaSksaS5hbm5vdGF0aW9ucy5kcmF3SW1hZ2VBbm5vcygpLGkuYW5ub3RhdGlvbnMuZHJhd1RleHRBbm5vcygpLFwiYmFja1wiPT09YS5jb25maWcuZ3JpZC5wb3NpdGlvbikmJihsJiZhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChsLmVsKSxudWxsIT1sJiZudWxsIT09KG89bC5lbEdyaWRCb3JkZXJzKSYmdm9pZCAwIT09byYmby5ub2RlJiZhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChsLmVsR3JpZEJvcmRlcnMpKTtpZihBcnJheS5pc0FycmF5KGUuZWxHcmFwaCkpZm9yKHZhciBoPTA7aDxlLmVsR3JhcGgubGVuZ3RoO2grKylhLmdsb2JhbHMuZG9tLmVsR3JhcGhpY2FsLmFkZChlLmVsR3JhcGhbaF0pO2Vsc2UgYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQoZS5lbEdyYXBoKTtcImZyb250XCI9PT1hLmNvbmZpZy5ncmlkLnBvc2l0aW9uJiYobCYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQobC5lbCksbnVsbCE9bCYmbnVsbCE9PShuPWwuZWxHcmlkQm9yZGVycykmJnZvaWQgMCE9PW4mJm4ubm9kZSYmYS5nbG9iYWxzLmRvbS5lbEdyYXBoaWNhbC5hZGQobC5lbEdyaWRCb3JkZXJzKSk7XCJmcm9udFwiPT09YS5jb25maWcueGF4aXMuY3Jvc3NoYWlycy5wb3NpdGlvbiYmaS5jcm9zc2hhaXJzLmRyYXdYQ3Jvc3NoYWlycygpLFwiZnJvbnRcIj09PWEuY29uZmlnLnlheGlzWzBdLmNyb3NzaGFpcnMucG9zaXRpb24mJmkuY3Jvc3NoYWlycy5kcmF3WUNyb3NzaGFpcnMoKSxcInRyZWVtYXBcIiE9PWEuY29uZmlnLmNoYXJ0LnR5cGUmJmkuYXhlcy5kcmF3QXhpcyhhLmNvbmZpZy5jaGFydC50eXBlLGwpO3ZhciBjPW5ldyBWKHQuY3R4LGwpLGQ9bmV3IHEodC5jdHgsbCk7aWYobnVsbCE9PWwmJihjLnhBeGlzTGFiZWxDb3JyZWN0aW9ucyhsLnhBeGlzVGlja1dpZHRoKSxkLnNldFlBeGlzVGV4dEFsaWdubWVudHMoKSxhLmNvbmZpZy55YXhpcy5tYXAoKGZ1bmN0aW9uKHQsZSl7LTE9PT1hLmdsb2JhbHMuaWdub3JlWUF4aXNJbmRleGVzLmluZGV4T2YoZSkmJmQueUF4aXNUaXRsZVJvdGF0ZShlLHQub3Bwb3NpdGUpfSkpKSxpLmFubm90YXRpb25zLmRyYXdBeGVzQW5ub3RhdGlvbnMoKSwhYS5nbG9iYWxzLm5vRGF0YSl7aWYoYS5jb25maWcudG9vbHRpcC5lbmFibGVkJiYhYS5nbG9iYWxzLm5vRGF0YSYmaS53Lmdsb2JhbHMudG9vbHRpcC5kcmF3VG9vbHRpcChlLnh5UmF0aW9zKSxhLmdsb2JhbHMuYXhpc0NoYXJ0cyYmKGEuZ2xvYmFscy5pc1hOdW1lcmljfHxhLmNvbmZpZy54YXhpcy5jb252ZXJ0ZWRDYXRUb051bWVyaWN8fGEuZ2xvYmFscy5pc1JhbmdlQmFyKSkoYS5jb25maWcuY2hhcnQuem9vbS5lbmFibGVkfHxhLmNvbmZpZy5jaGFydC5zZWxlY3Rpb24mJmEuY29uZmlnLmNoYXJ0LnNlbGVjdGlvbi5lbmFibGVkfHxhLmNvbmZpZy5jaGFydC5wYW4mJmEuY29uZmlnLmNoYXJ0LnBhbi5lbmFibGVkKSYmaS56b29tUGFuU2VsZWN0aW9uLmluaXQoe3h5UmF0aW9zOmUueHlSYXRpb3N9KTtlbHNle3ZhciBnPWEuY29uZmlnLmNoYXJ0LnRvb2xiYXIudG9vbHM7W1wiem9vbVwiLFwiem9vbWluXCIsXCJ6b29tb3V0XCIsXCJzZWxlY3Rpb25cIixcInBhblwiLFwicmVzZXRcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7Z1t0XT0hMX0pKX1hLmNvbmZpZy5jaGFydC50b29sYmFyLnNob3cmJiFhLmdsb2JhbHMuYWxsU2VyaWVzQ29sbGFwc2VkJiZpLnRvb2xiYXIuY3JlYXRlVG9vbGJhcigpfWEuZ2xvYmFscy5tZW1vcnkubWV0aG9kc1RvRXhlYy5sZW5ndGg+MCYmYS5nbG9iYWxzLm1lbW9yeS5tZXRob2RzVG9FeGVjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QubWV0aG9kKHQucGFyYW1zLCExLHQuY29udGV4dCl9KSksYS5nbG9iYWxzLmF4aXNDaGFydHN8fGEuZ2xvYmFscy5ub0RhdGF8fGkuY29yZS5yZXNpemVOb25BeGlzQ2hhcnRzKCkscyhpKX0pKX19LHtrZXk6XCJkZXN0cm95XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsdGhpcy53aW5kb3dSZXNpemVIYW5kbGVyKSx0aGlzLmVsLnBhcmVudE5vZGUsdD10aGlzLnBhcmVudFJlc2l6ZUhhbmRsZXIsKGU9anQuZ2V0KHQpKSYmKGUuZGlzY29ubmVjdCgpLGp0LmRlbGV0ZSh0KSk7dmFyIGk9dGhpcy53LmNvbmZpZy5jaGFydC5pZDtpJiZBcGV4Ll9jaGFydEluc3RhbmNlcy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuaWQ9PT14LmVzY2FwZVN0cmluZyhpKSYmQXBleC5fY2hhcnRJbnN0YW5jZXMuc3BsaWNlKGUsMSl9KSksbmV3IFZ0KHRoaXMuY3R4KS5jbGVhcih7aXNVcGRhdGluZzohMX0pfX0se2tleTpcInVwZGF0ZU9wdGlvbnNcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxhPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0scz0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLHI9IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XSxvPXRoaXMudztyZXR1cm4gby5nbG9iYWxzLnNlbGVjdGlvbj12b2lkIDAsdC5zZXJpZXMmJih0aGlzLnNlcmllcy5yZXNldFNlcmllcyghMSwhMCwhMSksdC5zZXJpZXMubGVuZ3RoJiZ0LnNlcmllc1swXS5kYXRhJiYodC5zZXJpZXM9dC5zZXJpZXMubWFwKChmdW5jdGlvbih0LGkpe3JldHVybiBlLnVwZGF0ZUhlbHBlcnMuX2V4dGVuZFNlcmllcyh0LGkpfSkpKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSksdC54YXhpcyYmKHQ9dGhpcy51cGRhdGVIZWxwZXJzLmZvcmNlWEF4aXNVcGRhdGUodCkpLHQueWF4aXMmJih0PXRoaXMudXBkYXRlSGVscGVycy5mb3JjZVlBeGlzVXBkYXRlKHQpKSxvLmdsb2JhbHMuY29sbGFwc2VkU2VyaWVzSW5kaWNlcy5sZW5ndGg+MCYmdGhpcy5zZXJpZXMuY2xlYXJQcmV2aW91c1BhdGhzKCksdC50aGVtZSYmKHQ9dGhpcy50aGVtZS51cGRhdGVUaGVtZU9wdGlvbnModCkpLHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlT3B0aW9ucyh0LGksYSxzLHIpfX0se2tleTpcInVwZGF0ZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdLGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07cmV0dXJuIHRoaXMuc2VyaWVzLnJlc2V0U2VyaWVzKCExKSx0aGlzLnVwZGF0ZUhlbHBlcnMucmV2ZXJ0RGVmYXVsdEF4aXNNaW5NYXgoKSx0aGlzLnVwZGF0ZUhlbHBlcnMuX3VwZGF0ZVNlcmllcyh0LGUsaSl9fSx7a2V5OlwiYXBwZW5kU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sYT10aGlzLncuY29uZmlnLnNlcmllcy5zbGljZSgpO3JldHVybiBhLnB1c2godCksdGhpcy5zZXJpZXMucmVzZXRTZXJpZXMoITEpLHRoaXMudXBkYXRlSGVscGVycy5yZXZlcnREZWZhdWx0QXhpc01pbk1heCgpLHRoaXMudXBkYXRlSGVscGVycy5fdXBkYXRlU2VyaWVzKGEsZSxpKX19LHtrZXk6XCJhcHBlbmREYXRhXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPXRoaXM7aS53Lmdsb2JhbHMuZGF0YUNoYW5nZWQ9ITAsaS5zZXJpZXMuZ2V0UHJldmlvdXNQYXRocygpO2Zvcih2YXIgYT1pLncuY29uZmlnLnNlcmllcy5zbGljZSgpLHM9MDtzPGEubGVuZ3RoO3MrKylpZihudWxsIT09dFtzXSYmdm9pZCAwIT09dFtzXSlmb3IodmFyIHI9MDtyPHRbc10uZGF0YS5sZW5ndGg7cisrKWFbc10uZGF0YS5wdXNoKHRbc10uZGF0YVtyXSk7cmV0dXJuIGkudy5jb25maWcuc2VyaWVzPWEsZSYmKGkudy5nbG9iYWxzLmluaXRpYWxTZXJpZXM9eC5jbG9uZShpLncuY29uZmlnLnNlcmllcykpLHRoaXMudXBkYXRlKCl9fSx7a2V5OlwidXBkYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGksYSl7bmV3IFZ0KGUuY3R4KS5jbGVhcih7aXNVcGRhdGluZzohMH0pO3ZhciBzPWUuY3JlYXRlKGUudy5jb25maWcuc2VyaWVzLHQpO2lmKCFzKXJldHVybiBpKGUpO2UubW91bnQocykudGhlbigoZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkJiZlLncuY29uZmlnLmNoYXJ0LmV2ZW50cy51cGRhdGVkKGUsZS53KSxlLmV2ZW50cy5maXJlRXZlbnQoXCJ1cGRhdGVkXCIsW2UsZS53XSksZS53Lmdsb2JhbHMuaXNEaXJ0eT0hMCxpKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXthKHQpfSkpfSkpfX0se2tleTpcImdldFN5bmNlZENoYXJ0c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRHcm91cGVkQ2hhcnRzKCksZT1bdGhpc107cmV0dXJuIHQubGVuZ3RoJiYoZT1bXSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pKSksZX19LHtrZXk6XCJnZXRHcm91cGVkQ2hhcnRzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBBcGV4Ll9jaGFydEluc3RhbmNlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe2lmKHQuZ3JvdXApcmV0dXJuITB9KSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC53LmNvbmZpZy5jaGFydC5ncm91cD09PWUuZ3JvdXA/ZS5jaGFydDp0fSkpfX0se2tleTpcInRvZ2dsZVNlcmllc1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlcmllcy50b2dnbGVTZXJpZXModCl9fSx7a2V5OlwiaGlnaGxpZ2h0U2VyaWVzT25MZWdlbmRIb3ZlclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2VyaWVzLnRvZ2dsZVNlcmllc09uSG92ZXIodCxlKX19LHtrZXk6XCJzaG93U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zZXJpZXMuc2hvd1Nlcmllcyh0KX19LHtrZXk6XCJoaWRlU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zZXJpZXMuaGlkZVNlcmllcyh0KX19LHtrZXk6XCJpc1Nlcmllc0hpZGRlblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2VyaWVzLmlzU2VyaWVzSGlkZGVuKHQpfX0se2tleTpcInJlc2V0U2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTt0aGlzLnNlcmllcy5yZXNldFNlcmllcyh0LGUpfX0se2tleTpcImFkZEV2ZW50TGlzdGVuZXJcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuZXZlbnRzLmFkZEV2ZW50TGlzdGVuZXIodCxlKX19LHtrZXk6XCJyZW1vdmVFdmVudExpc3RlbmVyXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmV2ZW50cy5yZW1vdmVFdmVudExpc3RlbmVyKHQsZSl9fSx7a2V5OlwiYWRkWGF4aXNBbm5vdGF0aW9uXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp2b2lkIDAsYT10aGlzO2kmJihhPWkpLGEuYW5ub3RhdGlvbnMuYWRkWGF4aXNBbm5vdGF0aW9uRXh0ZXJuYWwodCxlLGEpfX0se2tleTpcImFkZFlheGlzQW5ub3RhdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0saT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dm9pZCAwLGE9dGhpcztpJiYoYT1pKSxhLmFubm90YXRpb25zLmFkZFlheGlzQW5ub3RhdGlvbkV4dGVybmFsKHQsZSxhKX19LHtrZXk6XCJhZGRQb2ludEFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnZvaWQgMCxhPXRoaXM7aSYmKGE9aSksYS5hbm5vdGF0aW9ucy5hZGRQb2ludEFubm90YXRpb25FeHRlcm5hbCh0LGUsYSl9fSx7a2V5OlwiY2xlYXJBbm5vdGF0aW9uc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnZvaWQgMCxlPXRoaXM7dCYmKGU9dCksZS5hbm5vdGF0aW9ucy5jbGVhckFubm90YXRpb25zKGUpfX0se2tleTpcInJlbW92ZUFubm90YXRpb25cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dm9pZCAwLGk9dGhpcztlJiYoaT1lKSxpLmFubm90YXRpb25zLnJlbW92ZUFubm90YXRpb24oaSx0KX19LHtrZXk6XCJnZXRDaGFydEFyZWFcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLncuZ2xvYmFscy5kb20uYmFzZUVsLnF1ZXJ5U2VsZWN0b3IoXCIuYXBleGNoYXJ0cy1pbm5lclwiKX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbFhSYW5nZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY29yZVV0aWxzLmdldFNlcmllc1RvdGFsc1hSYW5nZSh0LGUpfX0se2tleTpcImdldEhpZ2hlc3RWYWx1ZUluU2VyaWVzXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MDtyZXR1cm4gbmV3IFUodGhpcy5jdHgpLmdldE1pbllNYXhZKHQpLmhpZ2hlc3RZfX0se2tleTpcImdldExvd2VzdFZhbHVlSW5TZXJpZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowO3JldHVybiBuZXcgVSh0aGlzLmN0eCkuZ2V0TWluWU1heFkodCkubG93ZXN0WX19LHtrZXk6XCJnZXRTZXJpZXNUb3RhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudy5nbG9iYWxzLnNlcmllc1RvdGFsc319LHtrZXk6XCJ0b2dnbGVEYXRhUG9pbnRTZWxlY3Rpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnVwZGF0ZUhlbHBlcnMudG9nZ2xlRGF0YVBvaW50U2VsZWN0aW9uKHQsZSl9fSx7a2V5Olwiem9vbVhcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuY3R4LnRvb2xiYXIuem9vbVVwZGF0ZU9wdGlvbnModCxlKX19LHtrZXk6XCJzZXRMb2NhbGVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmxvY2FsaXphdGlvbi5zZXRDdXJyZW50TG9jYWxlVmFsdWVzKHQpfX0se2tleTpcImRhdGFVUklcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEcodGhpcy5jdHgpLmRhdGFVUkkodCl9fSx7a2V5OlwiZXhwb3J0VG9DU1ZcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4gbmV3IEcodGhpcy5jdHgpLmV4cG9ydFRvQ1NWKHQpfX0se2tleTpcInBhcGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53Lmdsb2JhbHMuZG9tLlBhcGVyfX0se2tleTpcIl9wYXJlbnRSZXNpemVDYWxsYmFja1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy53Lmdsb2JhbHMuYW5pbWF0aW9uRW5kZWQmJnRoaXMudy5jb25maWcuY2hhcnQucmVkcmF3T25QYXJlbnRSZXNpemUmJnRoaXMuX3dpbmRvd1Jlc2l6ZSgpfX0se2tleTpcIl93aW5kb3dSZXNpemVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7Y2xlYXJUaW1lb3V0KHRoaXMudy5nbG9iYWxzLnJlc2l6ZVRpbWVyKSx0aGlzLncuZ2xvYmFscy5yZXNpemVUaW1lcj13aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LncuZ2xvYmFscy5yZXNpemVkPSEwLHQudy5nbG9iYWxzLmRhdGFDaGFuZ2VkPSExLHQuY3R4LnVwZGF0ZSgpfSksMTUwKX19LHtrZXk6XCJfd2luZG93UmVzaXplSGFuZGxlclwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53LmNvbmZpZy5jaGFydC5yZWRyYXdPbldpbmRvd1Jlc2l6ZTtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYodD10KCkpLHQmJnRoaXMuX3dpbmRvd1Jlc2l6ZSgpfX1dLFt7a2V5OlwiZ2V0Q2hhcnRCeUlEXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9eC5lc2NhcGVTdHJpbmcodCk7aWYoQXBleC5fY2hhcnRJbnN0YW5jZXMpe3ZhciBpPUFwZXguX2NoYXJ0SW5zdGFuY2VzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1lfSkpWzBdO3JldHVybiBpJiZpLmNoYXJ0fX19LHtrZXk6XCJpbml0T25Mb2FkXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWFwZXhjaGFydHNdXCIpLGk9MDtpPGUubGVuZ3RoO2krKyl7bmV3IHQoZVtpXSxKU09OLnBhcnNlKGVbaV0uZ2V0QXR0cmlidXRlKFwiZGF0YS1vcHRpb25zXCIpKSkucmVuZGVyKCl9fX0se2tleTpcImV4ZWNcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0Q2hhcnRCeUlEKHQpO2lmKGkpe2kudy5nbG9iYWxzLmlzRXhlY0NhbGxlZD0hMDt2YXIgYT1udWxsO2lmKC0xIT09aS5wdWJsaWNNZXRob2RzLmluZGV4T2YoZSkpe2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KHM+Mj9zLTI6MCksbz0yO288cztvKyspcltvLTJdPWFyZ3VtZW50c1tvXTthPWlbZV0uYXBwbHkoaSxyKX1yZXR1cm4gYX19fSx7a2V5OlwibWVyZ2VcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB4LmV4dGVuZCh0LGUpfX1dKSx0fSgpO21vZHVsZS5leHBvcnRzPV90O1xuIiwgIi8qKlxuICogTG9kYXNoIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgfVxuICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlLFxuICAgIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG52YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xufSgpKTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIFN5bWJvbCA9IHJvb3QuU3ltYm9sLFxuICAgIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXksXG4gICAgYWxsb2NVbnNhZmUgPSBCdWZmZXIgPyBCdWZmZXIuYWxsb2NVbnNhZmUgOiB1bmRlZmluZWQsXG4gICAgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksXG4gICAgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZSxcbiAgICBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUlzQnVmZmVyID0gQnVmZmVyID8gQnVmZmVyLmlzQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIG5hdGl2ZU1heCA9IE1hdGgubWF4LFxuICAgIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKSxcbiAgICBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbnZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBvYmplY3QoKSB7fVxuICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICBpZiAoIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBpZiAob2JqZWN0Q3JlYXRlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTtcbiAgICB9XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgIHZhciByZXN1bHQgPSBuZXcgb2JqZWN0O1xuICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn0oKSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICB9XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gIHJldHVybiB0aGlzO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG5IYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbkhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG5IYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbkhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbkxpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbkxpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbkxpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICByZXR1cm4gdGhpcztcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAqIHZhbHVlIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzSW4ob2JqZWN0KTtcbiAgfVxuICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICByZXN1bHQgPSBbXTtcblxuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKCEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfSwga2V5c0luKTtcbn1cblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gIGlmIChzdGFja2VkKSB7XG4gICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICBpZiAoaXNDb21tb24pIHtcbiAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCAndG9TdHJpbmcnLCB7XG4gICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAndmFsdWUnOiBjb25zdGFudChzdHJpbmcpLFxuICAgICd3cml0YWJsZSc6IHRydWVcbiAgfSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICByZXR1cm4gbmV3IHR5cGVkQXJyYXkuY29uc3RydWN0b3IoYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkubGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgKSB7XG4gICAgcmV0dXJuIGVxKG9iamVjdFtpbmRleF0sIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlclJlc3QoZnVuYywgc3RhcnQsIHRyYW5zZm9ybSkge1xuICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICB9XG4gICAgaW5kZXggPSAtMTtcbiAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgfVxuICAgIG90aGVyQXJnc1tzdGFydF0gPSB0cmFuc2Zvcm0oYXJyYXkpO1xuICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICB9O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Rba2V5XTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIHNldFRvU3RyaW5nID0gc2hvcnRPdXQoYmFzZVNldFRvU3RyaW5nKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXNJbihuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC41LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHtcbiAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAqIH07XG4gKlxuICogdmFyIG90aGVyID0ge1xuICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICogfTtcbiAqXG4gKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG59KTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb25zdGFudCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uY29uc3RhbnQoeyAnYSc6IDEgfSkpO1xuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICogLy8gPT4gW3sgJ2EnOiAxIH0sIHsgJ2EnOiAxIH1dXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKlxuICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZTtcbiIsICJpbXBvcnQgQXBleENoYXJ0cyBmcm9tICdhcGV4Y2hhcnRzJ1xudmFyIG1lcmdlID0gcmVxdWlyZSgnbG9kYXNoLm1lcmdlJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFwZXhjaGFydHMoe1xuICAgIG9wdGlvbnMsXG4gICAgY2hhcnRJZCxcbiAgICB0aGVtZSxcbiAgICBleHRyYUpzT3B0aW9uc1xufSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGNoYXJ0OiBudWxsLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjaGFydElkLFxuICAgICAgICB0aGVtZSxcbiAgICAgICAgZXh0cmFKc09wdGlvbnMsXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgdGhpcy4kd2lyZS4kb24oJ3VwZGF0ZU9wdGlvbnMnLCAoeyBvcHRpb25zIH0pID0+IHtcblxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBtZXJnZShvcHRpb25zLCB0aGlzLmV4dHJhSnNPcHRpb25zKVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhcnQob3B0aW9ucylcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIEFscGluZS5lZmZlY3QoKCkgPT4ge1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGhlbWUgPSBBbHBpbmUuc3RvcmUoJ3RoZW1lJylcblxuICAgICAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGFydCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0Q2hhcnQoKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYXJ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZTogeyBtb2RlOiB0aGVtZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdpbmhlcml0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgaW5pdENoYXJ0OiBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy50aGVtZSA9IHsgbW9kZTogdGhpcy50aGVtZSB9XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuY2hhcnQuYmFja2dyb3VuZCA9ICdpbmhlcml0J1xuXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZSh0aGlzLm9wdGlvbnMsIHRoaXMuZXh0cmFKc09wdGlvbnMpXG5cbiAgICAgICAgICAgIHRoaXMuY2hhcnQgPSBuZXcgQXBleENoYXJ0cyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY2hhcnRJZCksIHRoaXMub3B0aW9ucylcbiAgICAgICAgICAgIHRoaXMuY2hhcnQucmVuZGVyKClcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlQ2hhcnQ6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0LnVwZGF0ZU9wdGlvbnMob3B0aW9ucywgZmFsc2UsIHRydWUsIHRydWUpXG4gICAgICAgIH0sXG4gICAgfVxufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUthLGFBQVMsRUFBRUEsSUFBRUMsSUFBRTtBQUFDLFVBQUlDLEtBQUUsT0FBTyxLQUFLRixFQUFDO0FBQUUsVUFBRyxPQUFPLHVCQUFzQjtBQUFDLFlBQUlHLEtBQUUsT0FBTyxzQkFBc0JILEVBQUM7QUFBRSxRQUFBQyxPQUFJRSxLQUFFQSxHQUFFLE9BQVEsU0FBU0YsSUFBRTtBQUFDLGlCQUFPLE9BQU8seUJBQXlCRCxJQUFFQyxFQUFD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QUFDLG1CQUFPRCxHQUFFLFNBQU9DLEdBQUUsU0FBT0QsS0FBRUM7QUFBQSxVQUFDLENBQUUsSUFBR0QsR0FBRSxTQUFPQyxHQUFFLFNBQU9ELEtBQUVDO0FBQUEsUUFBQyxHQUFHLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksYUFBWSxPQUFNLFdBQVU7QUFBQyxZQUFJRCxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsV0FBVUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFO0FBQUcsZ0JBQU1ELEdBQUUsVUFBVSxHQUFFLENBQUMsTUFBSUEsS0FBRTtBQUFXLFlBQUlFLEtBQUVGLEdBQUUsUUFBUSxLQUFJLEVBQUU7QUFBRSxRQUFBRSxLQUFFQSxHQUFFLE1BQU0sSUFBSSxPQUFPLFFBQU1BLEdBQUUsU0FBTyxJQUFFLE1BQUssR0FBRyxDQUFDO0FBQUUsaUJBQVFDLEtBQUUsR0FBRUEsS0FBRUQsR0FBRSxRQUFPQztBQUFJLFVBQUFELEdBQUVDLEVBQUMsSUFBRSxTQUFTLE1BQUlELEdBQUVDLEVBQUMsRUFBRSxTQUFPRCxHQUFFQyxFQUFDLElBQUVELEdBQUVDLEVBQUMsSUFBRUQsR0FBRUMsRUFBQyxHQUFFLEVBQUU7QUFBRSxlQUFPLFdBQVNGLE1BQUdDLEdBQUUsS0FBS0QsRUFBQyxHQUFFLFVBQVFDLEdBQUUsS0FBSyxHQUFHLElBQUU7QUFBQSxNQUFHLEVBQUMsR0FBRSxFQUFDLEtBQUksc0JBQXFCLE9BQU0sU0FBU0YsSUFBRTtBQUFDLGVBQU8sV0FBV0EsR0FBRSxRQUFRLGNBQWEsSUFBSSxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFdBQVUsT0FBTSxTQUFTQSxJQUFFO0FBQUMsZ0JBQU9BLEtBQUVBLEdBQUUsTUFBTSxzRUFBc0UsTUFBSSxNQUFJQSxHQUFFLFNBQU8sT0FBSyxNQUFJLFNBQVNBLEdBQUUsQ0FBQyxHQUFFLEVBQUUsRUFBRSxT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QUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxXQUFVQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsR0FBRUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLE1BQUtDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRTtBQUFPLGVBQU8sS0FBSyxFQUFFLFFBQVEsSUFBSSxNQUFNLEtBQUssRUFBRSxLQUFLLEVBQUMsSUFBR1AsSUFBRSxJQUFHQyxJQUFFLElBQUdDLElBQUUsSUFBR0MsSUFBRSxRQUFPQyxJQUFFLG9CQUFtQkMsSUFBRSxnQkFBZUMsSUFBRSxrQkFBaUJDLEdBQUMsQ0FBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxZQUFXLE9BQU0sV0FBVTtBQUFDLFlBQUlQLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsR0FBRUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLEdBQUVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsR0FBRUMsS0FBRSxVQUFVLFNBQU8sS0FBRyxXQUFTLFVBQVUsQ0FBQyxJQUFFLFVBQVUsQ0FBQyxJQUFFLFdBQVVDLEtBQUUsVUFBVSxTQUFPLEtBQUcsV0FBUyxVQUFVLENBQUMsSUFBRSxVQUFVLENBQUMsSUFBRSxHQUFFQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFB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bUJBQWtCLE1BQUcsWUFBVyxRQUFPLFVBQVMsT0FBRyxVQUFTLE9BQUcsYUFBWSxPQUFHLFNBQVEsSUFBRyxZQUFXLFFBQU8sZ0JBQWUsT0FBRyxLQUFJLFFBQU8sS0FBSSxRQUFPLFVBQVMsT0FBRyxpQkFBZ0IsUUFBTyxRQUFPLEVBQUMsTUFBSyxNQUFHLFVBQVMsR0FBRSxVQUFTLEtBQUksU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLFFBQU8sUUFBTyxHQUFFLFNBQVEsSUFBRyxPQUFNLEVBQUMsUUFBTyxDQUFDLEdBQUUsVUFBUyxRQUFPLFlBQVcsS0FBSSxZQUFXLFFBQU8sVUFBUyxHQUFFLEdBQUUsV0FBVSxPQUFNLEdBQUUsWUFBVyxFQUFDLE1BQUssT0FBRyxPQUFNLFdBQVUsT0FBTSxHQUFFLFNBQVEsR0FBRSxTQUFRLEVBQUMsR0FBRSxXQUFVLEVBQUMsTUFBSyxPQUFHLE9BQU0sV0FBVSxPQUFNLEdBQUUsU0FBUSxHQUFFLFNBQVEsRUFBQyxHQUFFLE9BQU0sRUFBQyxNQUFLLFFBQU8sUUFBTyxLQUFJLFNBQVEsR0FBRSxTQUFRLEdBQUUsT0FBTSxFQUFDLE9BQU0sUUFBTyxVQUFTLFFBQU8sWUFBVyxLQUFJLFlBQVcsUUFBTyxVQUFTLEdBQUUsRUFBQyxHQUFFLFNBQVEsRUFBQyxTQUFRLE9BQUcsU0FBUSxFQUFDLEdBQUUsWUFBVyxFQUFDLE1BQUssTUFBRyxVQUFTLFNBQVEsUUFBTyxFQUFDLE9BQU0sV0FBVSxPQUFNLEdBQUUsV0FBVSxFQUFDLEVBQUMsRUFBQyxHQUFFLEtBQUssa0JBQWdCLEVBQUMsSUFBRyxRQUFPLEdBQUUsR0FBRSxHQUFFLE1BQUssWUFBVyxHQUFFLGFBQVksR0FBRSxZQUFXLFFBQU8sWUFBVyxRQUFPLE9BQU0sUUFBTyxRQUFPLEVBQUMsTUFBSyxHQUFFLFdBQVUsUUFBTyxhQUFZLEdBQUUsYUFBWSxRQUFPLE9BQU0sVUFBUyxTQUFRLEdBQUUsU0FBUSxHQUFFLFFBQU8sR0FBRSxVQUFTLEdBQUUsR0FBRSxPQUFNLEVBQUMsYUFBWSxXQUFVLGFBQVksR0FBRSxjQUFhLEdBQUUsTUFBSyxRQUFPLFlBQVcsVUFBUyxTQUFRLEdBQUUsU0FBUSxHQUFFLFlBQVcsUUFBTyxZQUFXLFFBQU8sT0FBTSxRQUFPLE9BQU0sRUFBQyxZQUFXLFFBQU8sT0FBTSxRQUFPLFVBQVMsUUFBTyxZQUFXLFFBQU8sWUFBVyxLQUFJLFVBQVMsSUFBRyxTQUFRLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxLQUFJLEdBQUUsUUFBTyxFQUFDLEVBQUMsRUFBQyxHQUFFLFdBQVUsRUFBQyxLQUFJLFFBQU8sVUFBUyxRQUFPLFNBQVEsR0FBRSxTQUFRLEVBQUMsR0FBRSxPQUFNLEVBQUMsTUFBSyxRQUFPLE9BQU0sSUFBRyxRQUFPLElBQUcsU0FBUSxHQUFFLFNBQVEsRUFBQyxFQUFDLEdBQUUsS0FBSyxrQkFBZ0IsRUFBQyxJQUFHLFFBQU8sR0FBRSxHQUFFLElBQUcsTUFBSyxpQkFBZ0IsR0FBRSxXQUFVLFdBQVUsYUFBWSxXQUFVLGFBQVksR0FBRSxTQUFRLEtBQUcsU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLFFBQU8sWUFBVyxHQUFFLE9BQU0sRUFBQyxhQUFZLFdBQVUsYUFBWSxHQUFFLGNBQWEsR0FBRSxNQUFLLFFBQU8sWUFBVyxPQUFNLFVBQVMsU0FBUSxTQUFRLEdBQUUsU0FBUSxJQUFHLFlBQVcsUUFBTyxZQUFXLFFBQU8sT0FBTSxRQUFPLE9BQU0sRUFBQyxZQUFXLFFBQU8sT0FBTSxRQUFPLFVBQVMsUUFBTyxZQUFXLFFBQU8sWUFBVyxLQUFJLFVBQVMsSUFBRyxTQUFRLEVBQUMsTUFBSyxHQUFFLE9BQU0sR0FBRSxLQUFJLEdBQUUsUUFBTyxFQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUUsS0FBSyxrQkFBZ0IsRUFBQyxJQUFHLFFBQU8sR0FBRSxHQUFFLElBQUcsTUFBSyxpQkFBZ0IsR0FBRSxXQUFVLFdBQVUsYUFBWSxXQUFVLGFBQVksR0FBRSxTQUFRLEtBQUcsU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLEVBQUMsYUFBWSxXQUFVLGFBQVksR0FBRSxjQUFhLEdBQUUs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QVEsR0FBRSxTQUFRLFFBQU8sWUFBVyxRQUFPLG9CQUFtQixNQUFHLE9BQU0sRUFBQyxNQUFLLFFBQU8sWUFBVyxFQUFDLEVBQUMsR0FBRSxRQUFPLEVBQUMsTUFBSyxRQUFPLE9BQU0sVUFBUyxlQUFjLFVBQVMsU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLEVBQUMsT0FBTSxRQUFPLFVBQVMsUUFBTyxZQUFXLE9BQU0sRUFBQyxHQUFFLFlBQVcsQ0FBQyxHQUFFLFFBQU8sUUFBTyxRQUFPLEVBQUMsUUFBTyxFQUFDLFFBQU8sRUFBQyxNQUFLLFFBQU8sT0FBTSxFQUFDLEVBQUMsR0FBRSxPQUFNLEVBQUMsUUFBTyxFQUFDLE1BQUssV0FBVSxPQUFNLElBQUUsRUFBQyxHQUFFLFFBQU8sRUFBQyxrQ0FBaUMsT0FBRyxRQUFPLEVBQUMsTUFBSyxVQUFTLE9BQU0sSUFBRSxFQUFDLEVBQUMsR0FBRSxPQUFNLEVBQUMsTUFBSyxRQUFPLE9BQU0sUUFBTyxRQUFPLEdBQUUsU0FBUSxHQUFFLFNBQVEsR0FBRSxVQUFTLE9BQUcsT0FBTSxFQUFDLFVBQVMsUUFBTyxZQUFXLEtBQUksWUFBVyxRQUFPLE9BQU0sT0FBTSxFQUFDLEdBQUUsVUFBUyxFQUFDLE1BQUssUUFBTyxPQUFNLFFBQU8sUUFBTyxHQUFFLFNBQVEsR0FBRSxTQUFRLElBQUcsVUFBUyxPQUFHLE9BQU0sRUFBQyxVQUFTLFFBQU8sWUFBVyxLQUFJLFlBQVcsUUFBTyxPQUFNLE9BQU0sRUFBQyxHQUFFLFFBQU8sRUFBQyxNQUFLLE1BQUcsT0FBTSxVQUFTLFNBQVEsUUFBTyxPQUFNLEdBQUUsUUFBTyxRQUFPLFdBQVUsR0FBRSxNQUFLLEVBQUMsTUFBSyxTQUFRLFFBQU8sUUFBTyxTQUFRLE1BQUksVUFBUyxFQUFDLE9BQU0sUUFBTyxNQUFLLGNBQWEsZ0JBQWUsS0FBRyxrQkFBaUIsUUFBTyxlQUFjLE1BQUcsYUFBWSxHQUFFLFdBQVUsR0FBRSxPQUFNLENBQUMsR0FBRSxJQUFHLEdBQUcsR0FBRSxZQUFXLENBQUMsRUFBQyxFQUFDLEVBQUMsR0FBRSxTQUFRLEVBQUMsU0FBUSxNQUFHLGlCQUFnQixRQUFPLFFBQU8sTUFBRyxjQUFhLE9BQUcsV0FBVSxPQUFHLGNBQWEsT0FBRyxRQUFPLFFBQU8saUJBQWdCLE9BQUcsT0FBTSxTQUFRLFVBQVMsSUFBRyxPQUFNLEVBQUMsVUFBUyxRQUFPLFlBQVcsT0FBTSxHQUFFLGdCQUFlLEVBQUMscUJBQW9CLE1BQUUsR0FBRSxHQUFFLEVBQUMsTUFBSyxNQUFHLFFBQU8sVUFBUyxXQUFVLE9BQU0sR0FBRSxHQUFFLEVBQUMsV0FBVSxRQUFPLE9BQU0sRUFBQyxXQUFVLFNBQVNBLElBQUU7QUFBQyxpQkFBT0EsS0FBRUEsS0FBRSxPQUFLO0FBQUEsUUFBRSxFQUFDLEVBQUMsR0FBRSxHQUFFLEVBQUMsV0FBVSxRQUFPLE9BQU0sU0FBUSxHQUFFLFFBQU8sRUFBQyxNQUFLLE1BQUcsWUFBVyxPQUFNLEdBQUUsT0FBTSxFQUFDLFNBQVEsT0FBTSxHQUFFLE9BQU0sRUFBQyxTQUFRLE9BQUcsVUFBUyxZQUFXLFNBQVEsR0FBRSxTQUFRLEVBQUMsRUFBQyxHQUFFLE9BQU0sRUFBQyxNQUFLLFlBQVcsWUFBVyxDQUFDLEdBQUUsdUJBQXNCLE9BQUcsU0FBUSxHQUFFLFNBQVEsR0FBRSxxQkFBb0IsUUFBTyxRQUFPLEVBQUMsTUFBSyxNQUFHLFFBQU8sS0FBSSxjQUFhLE9BQUcsdUJBQXNCLE1BQUcsTUFBSyxPQUFHLFdBQVUsUUFBTyxXQUFVLEtBQUksZ0JBQWUsTUFBRyxPQUFNLEVBQUMsUUFBTyxDQUFDLEdBQUUsVUFBUyxRQUFPLFlBQVcsS0FBSSxZQUFXLFFBQU8sVUFBUyxHQUFFLEdBQUUsU0FBUSxHQUFFLFNBQVEsR0FBRSxRQUFPLFFBQU8sV0FBVSxRQUFPLGFBQVksTUFBRyxtQkFBa0IsRUFBQyxNQUFLLFFBQU8sT0FBTSxXQUFVLEtBQUksVUFBUyxNQUFLLFNBQVEsUUFBTyxZQUFXLFFBQU8sV0FBVSxFQUFDLEdBQUUsT0FBTSxFQUFDLFFBQU8sQ0FBQyxHQUFFLE9BQU0sRUFBQyxRQUFPLENBQUMsR0FBRSxVQUFTLFFBQU8sWUFBVyxLQUFJLFlBQVcsUUFBTyxVQUFTLEdBQUUsRUFBQyxHQUFFLFlBQVcsRUFBQyxNQUFLLE1BQUcsT0FBTSxXQUFVLE9BQU0sUUFBTyxRQUFPLEdBQUUsU0FBUSxHQUFFLFNBQVEsRUFBQyxHQUFFLFdBQVUsRUFBQyxNQUFLLE1BQUcsT0FBTSxXQUFVLFFBQU8sR0FBRSxTQUFRLEdBQUUsU0FBUSxFQUFDLEdBQUUsWUFBVyxRQUFPLGVBQWMsTUFBSyxLQUFJLFFBQU8sS0FBSSxRQUFPLE9BQU0sUUFBTyxVQUFTLE9BQUcsaUJBQWdCLFFBQU8sVUFBUyxVQUFTLE9BQU0sRUFBQyxNQUFLLFFBQU8sU0FBUSxHQUFFLFNBQVEsR0FBRSxPQUFNLEVBQUMsT0FBTSxRQUFPLFVBQVMsUUFBTyxZQUFXLEtBQUksWUFBVyxRQUFPLFVBQVMsR0FBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLE1BQUssTUFBRyxPQUFNLEdBQUUsVUFBUyxRQUFPLFNBQVEsS0FBRyxRQUFPLEVBQUMsT0FBTSxXQUFVLE9BQU0sR0FBRSxXQUFVLEVBQUMsR0FBRSxNQUFLLEVBQUMsTUFBSyxTQUFRLE9BQU0sV0FBVSxVQUFTLEVBQUMsV0FBVSxXQUFVLFNBQVEsV0FBVSxPQUFNLENBQUMsR0FBRSxHQUFHLEdBQUUsYUFBWSxLQUFHLFdBQVUsSUFBRSxFQUFDLEdBQUUsWUFBVyxFQUFDLFNBQVEsT0FBRyxNQUFLLEdBQUUsS0FBSSxHQUFFLE1BQUssR0FBRSxTQUFRLElBQUUsRUFBQyxHQUFFLFNBQVEsRUFBQyxTQUFRLE1BQUcsU0FBUSxHQUFFLFdBQVUsUUFBTyxPQUFNLEVBQUMsVUFBUyxRQUFPLFlBQVcsT0FBTSxFQUFDLEVBQUMsR0FBRSxPQUFNLEtBQUssT0FBTSxPQUFNLEVBQUMsTUFBSyxTQUFRLFNBQVEsWUFBVyxZQUFXLEVBQUMsU0FBUSxPQUFHLE9BQU0sV0FBVSxTQUFRLFNBQVEsZ0JBQWUsS0FBRyxFQUFDLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUVBO0FBQUEsSUFBQyxF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LE9BQUcsU0FBUSxFQUFDLE1BQUssR0FBRSxPQUFNLEdBQUUsS0FBSSxHQUFFLFFBQU8sRUFBQyxFQUFDLEdBQUUsUUFBTyxFQUFDLE1BQUssTUFBRSxHQUFFLE9BQU0sRUFBQyxRQUFPLEVBQUMsTUFBSyxNQUFFLEdBQUUsU0FBUSxFQUFDLFNBQVEsTUFBRSxHQUFFLFlBQVcsRUFBQyxNQUFLLE1BQUUsR0FBRSxXQUFVLEVBQUMsTUFBSyxNQUFFLEVBQUMsR0FBRSxPQUFNLEVBQUMsU0FBUSxFQUFDLE1BQUssTUFBRSxHQUFFLE1BQUssRUFBQyxTQUFRLE1BQUUsRUFBQyxHQUFFLFlBQVcsRUFBQyxTQUFRLE1BQUUsRUFBQyxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLE9BQU0sT0FBTSxXQUFVO0FBQUMsZUFBTSxFQUFDLE9BQU0sRUFBQyxTQUFRLE9BQUcsWUFBVyxFQUFDLFFBQU8sUUFBTyxFQUFDLEdBQUUsYUFBWSxFQUFDLEtBQUksRUFBQyxZQUFXLEVBQUMsVUFBUyxTQUFRLEVBQUMsRUFBQyxHQUFFLFlBQVcsRUFBQyxPQUFNLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLFlBQVcsRUFBQyxTQUFRLE1BQUUsRUFBQyxHQUFFLFFBQU8sRUFBQyxPQUFNLEdBQUUsU0FBUSxRQUFPLEdBQUUsTUFBSyxFQUFDLFNBQVEsS0FBRyxHQUFFLFFBQU8sRUFBQyxTQUFRLEVBQUMsT0FBTSxVQUFTLFFBQU8sR0FBRSxNQUFLLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxRQUFPLE9BQUcsV0FBVSxLQUFFLEdBQUUsT0FBTSxFQUFDLFNBQVEsRUFBQyxTQUFRLE1BQUUsR0FBRSxlQUFjLFdBQVUsWUFBVyxFQUFDLE9BQU0sWUFBVyxVQUFTLFFBQU8sTUFBSyxFQUFDLE1BQUssV0FBVSxHQUFFLFlBQVcsRUFBQyxTQUFRLE1BQUUsR0FBRSxRQUFPLEVBQUMsT0FBTSxFQUFDLEVBQUMsRUFBQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFVBQVMsT0FBTSxXQUFV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TyxPQUFHLFdBQVUsS0FBRSxHQUFFLFNBQVEsRUFBQyxNQUFLLEdBQUUsYUFBWSxHQUFFLE9BQU0sRUFBQyxZQUFXLEVBQUMsRUFBQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLFdBQVUsT0FBTSxXQUFVO0FBQUMsZUFBTSxFQUFDLE9BQU0sRUFBQyxTQUFRLE1BQUUsR0FBRSxNQUFLLEVBQUMsU0FBUSxFQUFDLEdBQUUsWUFBVyxFQUFDLE9BQU0sRUFBQyxRQUFPLENBQUMsTUFBTSxFQUFDLEVBQUMsR0FBRSxRQUFPLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLFNBQVEsRUFBQyxjQUFhLE1BQUcsUUFBTyxFQUFDLE1BQUssTUFBRSxHQUFFLEdBQUUsRUFBQyxNQUFLLE1BQUUsRUFBQyxHQUFFLFFBQU8sRUFBQyxVQUFTLE9BQU0sU0FBUSxFQUFDLE9BQU0sVUFBUyxNQUFLLElBQUcsU0FBUSxFQUFDLEVBQUMsR0FBRSxNQUFLLEVBQUMsU0FBUSxFQUFDLE9BQU0sR0FBRSxFQUFDLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksV0FBVSxPQUFNLFdBQVU7QUFBQyxlQUFNLEVBQUMsT0FBTSxFQUFDLE1BQUssRUFBQyxTQUFRLE1BQUUsRUFBQyxHQUFFLFlBQVcsRUFBQyxPQUFNLEVBQUMsVUFBUyxJQUFHLFlBQVcsS0FBSSxRQUFPLENBQUMsTUFBTSxFQUFDLEVBQUMsR0FBRSxRQUFPLEVBQUMsTUFBSyxNQUFHLE9BQU0sR0FBRSxRQUFPLENBQUMsTUFBTSxFQUFDLEdBQUUsUUFBTyxFQUFDLE1BQUssTUFBRSxHQUFFLE1BQUssRUFBQyxVQUFTLEVBQUMsT0FBTSxDQUFDLEdBQUUsR0FBRyxFQUFDLEVBQUMsR0FBRSxTQUFRLEVBQUMsY0FBYSxNQUFHLEdBQUUsRUFBQyxNQUFLLE1BQUUsRUFBQyxHQUFFLE1BQUssRUFBQyxTQUFRLEVBQUMsTUFBSyxHQUFFLE9BQU0sRUFBQyxFQUFDLEdBQUUsT0FBTSxFQUFDLFlBQVcsRUFBQyxNQUFLLE1BQUUsR0FBRSxTQUFRLEVBQUMsU0FBUSxNQUFFLEVBQUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLEVBQUMsS0FBSSxPQUFNLE9BQU0sV0FBVTtBQUFDLGVBQU0sRUFBQyxPQUFNLEVBQUMsU0FBUSxFQUFDLE1BQUssTUFBRSxFQUFDLEdBQUUsYUFBWSxFQUFDLEtBQUksRUFBQyxPQUFNLEVBQUMsUUFBTyxFQUFDLE1BQUssTUFBRSxFQUFDLEVBQUMsRUFBQyxHQUFFLFlBQVcsRUFBQyxXQUFVLFNBQVNBLElBQUU7QUFBQyxpQkFBT0EsR0FBRSxRQUFRLENBQUMsSUFBRTtBQUFBLFFBQUcsR0FBRSxPQUFNLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLFlBQVcsRUFBQyxTQUFRLE1BQUUsR0FBRSxZQUFXLEVBQUMsU0FBUSxLQUFFLEVBQUMsR0FBRSxRQUFPLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLE1BQUssRUFBQyxTQUFRLEdBQUUsVUFBUyxFQUFDLE9BQU0sU0FBUSxPQUFNLENBQUMsR0FBRSxHQUFHLEVBQUMsRUFBQyxHQUFFLFNBQVEsRUFBQyxPQUFNLFFBQU8saUJBQWdCLEtBQUUsR0FBRSxRQUFPLEVBQUMsVUFBUyxRQUFPLEVBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksU0FBUSxPQUFNLFdBQVU7QUFBQyxlQUFNLEVBQUMsT0FBTSxFQUFDLFNBQVEsRUFBQyxNQUFLLE1BQUUsRUFBQyxHQUFFLFlBQVcsRUFBQyxXQUFVLFNBQVNBLElBQUU7QUFBQyxpQkFBT0EsR0FBRSxRQUFRLENBQUMsSUFBRTtBQUFBLFFBQUcsR0FBRSxPQUFNLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLFlBQVcsRUFBQyxTQUFRLE1BQUUsR0FBRSxZQUFXLEVBQUMsU0FBUSxLQUFFLEVBQUMsR0FBRSxRQUFPLEVBQUMsUUFBTyxDQUFDLE1BQU0sRUFBQyxHQUFFLE1BQUssRUFBQyxTQUFRLEdBQUUsVUFBUyxFQUFDLE9BQU0sU0FBUSxnQkFBZSxNQUFJLE9BQU0sQ0FBQyxJQUFH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RSxXQUFTSixHQUFFLE1BQU0sVUFBUSxRQUFRLEtBQUssZ0ZBQWdGLEdBQUVBO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHFCQUFvQixPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPLFdBQVNBLEdBQUUsZ0JBQWNBLEdBQUUsY0FBWSxDQUFDLEdBQUVBLEdBQUUsWUFBWSxRQUFNLENBQUMsR0FBRUEsR0FBRSxZQUFZLFFBQU0sQ0FBQyxHQUFFQSxHQUFFLFlBQVksU0FBTyxDQUFDLElBQUdBLEtBQUUsS0FBSyx1QkFBdUJBLEVBQUMsR0FBRUEsS0FBRSxLQUFLLHVCQUF1QkEsRUFBQyxHQUFFQSxLQUFFLEtBQUssdUJBQXVCQSxFQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDBCQUF5QixPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLElBQUk7QUFBRSxlQUFPRCxHQUFFLFlBQVksUUFBTSxFQUFFLFlBQVksV0FBU0EsR0FBRSxZQUFZLFFBQU1BLEdBQUUsWUFBWSxRQUFNLENBQUMsR0FBRUMsR0FBRSxlQUFlLEdBQUVEO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDBCQUF5QixPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLElBQUk7QUFBRSxlQUFPRCxHQUFFLFlBQVksUUFBTSxFQUFFLFlBQVksV0FBU0EsR0FBRSxZQUFZLFFBQU1BLEdBQUUsWUFBWSxRQUFNLENBQUMsR0FBRUMsR0FBRSxlQUFlLEdBQUVEO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLDBCQUF5QixPQUFNLFNBQVNBLElBQUU7QUFBQyxZQUFJQyxLQUFFLElBQUk7QUFBRSxlQUFPRCxHQUFFLFlBQVksU0FBTyxFQUFFLFlBQVksV0FBU0EsR0FBRSxZQUFZLFNBQU9BLEdBQUUsWUFBWSxTQUFPLENBQUMsR0FBRUMsR0FBRSxlQUFlLEdBQUVEO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLHFCQUFvQixPQUFNLFNBQVNBLElBQUU7QUFBQyxRQUFBQSxHQUFFLFNB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QUFFLFNBQVFDLEtBQUUsY0FBWUYsR0FBRSxNQUFNLFFBQU0sY0FBWUEsR0FBRSxPQUFPRCxFQUFDLEVBQUUsTUFBS0ksS0FBRSxHQUFFQSxLQUFFTCxHQUFFQyxFQUFDLEVBQUUsS0FBSyxRQUFPSTtBQUFJLGNBQUcsV0FBU0wsR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxDQUFDLE1BQUksTUFBTSxRQUFRTCxHQUFFQyxFQUFDLEVBQUUsS0FBS0ksRUFBQyxFQUFFLENBQUMsQ0FBQyxLQUFHLE1BQUlMLEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVEsQ0FBQ0QsS0FBRSxLQUFLLFdBQVcsS0FBSyxFQUFFLFlBQVlKLEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUVMLEdBQUVDLEVBQUMsRUFBRSxLQUFLSSxFQUFDLEVBQUUsVUFBUSxJQUFFLEtBQUssV0FBVyxLQUFLLEVBQUUsWUFBWUwsR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFFLEtBQUssV0FBVyxLQUFLLEVBQUUsWUFBWUwsR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFRixHQUFFLHFCQUFtQixPQUFJLGVBQWFELEdBQUUsTUFBTSxNQUFLO0FBQUMsZ0JBQUlJLEtBQUUsSUFBSSxLQUFLTixHQUFFQyxFQUFDLEVBQUUsS0FBS0ksRUFBQyxFQUFFLENBQUMsQ0FBQztBQUFFLFlBQUFDLEtBQUUsSUFBSSxLQUFLQSxFQUFDLEVBQUUsUUFBUSxHQUFFLEtBQUssWUFBWSxLQUFLQSxFQUFDO0FBQUEsVUFBQztBQUFNLGlCQUFLLFlBQVksS0FBS04sR0FBRUMsRUFBQyxFQUFFLEtBQUtJLEVBQUMsRUFBRSxDQUFDLENBQUM7QUFBRSxpQkFBUUUsS0FBRSxHQUFFQSxLQUFFUCxHQUFFQyxFQUFDLEVBQUUsS0FBSyxRQUFPTTtBQUFJLHFCQUFTUCxH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V0FBVyxLQUFHTSxJQUFFSCxFQUFDLEdBQUVHLE1BQUdGLE9BQUlJLEtBQUVSLEdBQUUsV0FBV00sSUFBRUgsRUFBQyxHQUFFRyxNQUFHRixLQUFHSCxHQUFFLEtBQUtPLEVBQUM7QUFBQSxVQUFDO0FBQUMsVUFBQVQsR0FBRSxRQUFRLFNBQU9FLEdBQUUsTUFBTTtBQUFBLFFBQUM7QUFBQyxZQUFJUSxLQUFFVixHQUFFLFFBQVEsT0FBTyxNQUFNO0FBQUUsYUFBSyxnQkFBZ0JBLEdBQUUsUUFBUSxNQUFNO0FBQUUsU0FBQyxRQUFPLFFBQVEsRUFBRSxRQUFTLFNBQVNGLElBQUU7QUFBQyxxQkFBU0UsR0FBRSxPQUFPRixFQUFDLEVBQUUsU0FBT0UsR0FBRSxRQUFRRixFQUFDLEVBQUUsU0FBT0MsR0FBRSxZQUFVQyxHQUFFLE9BQU8sU0FBT1UsS0FBRVYsR0FBRSxRQUFRRixFQUFDLEVBQUUsU0FBT0UsR0FBRSxPQUFPRixFQUFDLEVBQUUsT0FBTyxNQUFNLEdBQUVDLEdBQUUsZ0JBQWdCQyxHQUFFLFFBQVFGLEVBQUMsRUFBRSxNQUFNO0FBQUEsUUFBQyxDQUFFLEdBQUUsV0FBU0UsR0FBRSxPQUFPLFdBQVcsTUFBTSxTQUFPQSxHQUFFLFFBQVEsV0FBVyxNQUFNLFNBQU9VLEtBQUVWLEdBQUUsUUFBUSxXQUFXLE1BQU0sU0FBT0EsR0FBRSxPQUFPLFdBQVcsTUFBTSxPQUFPLE1BQU0sR0FBRSxLQUFLLGdCQUFnQkEsR0FBRSxRQUFRLFdBQVcsTUFBTSxRQUFPLEVBQUUsR0FBRSxXQUFTQSxHQUFFLE9BQU8sWUFBWSxNQUFNLFNBQVMsS0FBSyxTQUFPQSxHQUFFLFFBQVEsY0FBYyxLQUFLLFNBQU8sQ0FBQyxXQUFTQSxHQUFFLE9BQU8sTUFBTSxPQUFLLFlBQVUsTUFBTSxJQUFFQSxHQUFFLFFBQVEsY0FBYyxLQUFLLFNBQU9BLEdBQUUsT0FBTyxZQUFZLE1BQU0sU0FBUyxLQUFLLE9BQU8sTUFBTSxHQUFFLEtBQUssZ0JBQWdCQSxHQUFFLFFBQVEsY0FBYyxLQUFLLFFBQU8sRUFBRSxHQUFFLFdBQVNBLEdBQUUsT0FBTyxRQUFRLFNBQU9BLEdBQUUsUUFBUSxRQUFRLFNBQU9VLEtBQUVWLEdBQUUsUUFBUSxRQUFRLFNBQU9BLEdBQUUsT0FBTyxRQUFRLE9BQU8sTUFBTSxHQUFFLEtBQUssZ0JBQWdCQSxHQUFFLFFBQVEsUUFBUSxNQUFNO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLG1CQUFrQixPQUFNLFNBQVNGLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFLFVBQVUsU0FBTyxLQUFHLFdBQVMsVUFBVSxDQUFDLElBQUUsVUFBVSxDQUFDLElBQUUsTUFBS0MsS0FBRSxLQUFLLEdBQUVDLEtBQUVILE1BQUdFLEdBQUUsUUFBUSxPQUFPO0FBQU8sWUFBRyxTQUFPRCxPQUFJQSxLQUFFLEtBQUssb0JBQWtCLEtBQUssd0JBQXNCLGNBQVlDLEdBQUUsT0FBTyxNQUFNLFFBQU1BLEdBQUUsT0FBTyxZQUFZLFFBQVEsV0FBVyxVQUFTRCxNQUFHQyxHQUFFLFFBQVEsT0FBTyxXQUFTQyxLQUFFRCxHQUFFLFFBQVEsT0FBT0EsR0FBRSxRQUFRLG1CQUFtQixFQUFFLFNBQU9BLEdBQUUsUUFBUSxPQUFPLFNBQVFILEdBQUUsU0FBT0k7QUFBRSxtQkFBUUMsS0FBRUQsS0FBRUosR0FBRSxRQUFPTSxLQUFFLEdBQUVBLEtBQUVELElBQUVDO0FBQUksWUFBQU4sR0FBRSxLQUFLQSxHQUFFTSxFQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsR0FBRSxFQUFDLEtBQUksc0JBQXFCLE9BQU0sU0FBU04sSUFBRTtBQUFDLFFBQUFBLEdBQUUsUUFBTUEsR0FBRSxTQUFPLENBQUMsR0FBRUEsR0FBRSxVQUFRQSxHQUFFLFdBQVMsQ0FBQztBQUFFLFlBQUlDLEtBQUVELEdBQUUsTUFBTSxRQUFNLFNBQVFFLEtBQUVGLEdBQUUsTUFBTSxVQUFRQSxHQUFFLE1BQU0sVUFBUSxXQUFTQyxLQUFFLGFBQVcsWUFBV0UsS0FBRUgsR0FBRSxNQUFNLFlBQVVBLEdBQUUsTUFBTSxZQUFVLFdBQVNDLEtBQUUsWUFBVTtBQUFVLGVBQU9ELEdBQUUsUUFBUSxRQUFNQyxJQUFFRCxHQUFFLE1BQU0sWUFBVUcsSUFBRUgsR0FBRSxNQUFNLFVBQVFFLElBQUVGO0FBQUEsTUFBQyxFQUFDLEdBQUUsRUFBQyxLQUFJLGNBQWEsT0FBTSxXQUFVO0FBQUMsZ0JBQU8sS0FBSyxFQUFFLE9BQU8sTUFBTSxTQUFRO0FBQUEsVUFBQyxLQUFJO0FBQUEsVUFBVztBQUFRLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFXLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBRTtBQUFBLFVBQU0sS0FBSTtBQUFZLGlCQUFLLFNBQU8sQ0FBQyxXQUFVLFdBQVUsV0FBVSxXQUFVLFNBQVM7QUFBQSxRQUFDO0FBQUMsZUFBTyxLQUFLO0FBQUEsTUFBTSxFQUFDLENBQUMsQ0FBQyxHQUFFQTtBQUFBLElBQUMsRUFBRTtBQUFoMDRJLFFB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QUMsTUFBSUQsR0FBRUMsRUFBQyxJQUFFLENBQUMsSUFBR0QsR0FBRUMsRUFBQyxFQUFFLFFBQU0sQ0FBQyxHQUFFRCxHQUFFQyxFQUFDLEVBQUUsU0FBTyxDQUFDLEdBQUVELEdBQUVDLEVBQUMsRUFBRSxXQUFTLENBQUMsR0FBRUQsR0FBRUMsRUFBQyxFQUFFLFFBQU0sQ0FBQyxHQUFFRCxHQUFFQyxFQUFDLEVBQUUsU0FBTyxDQUFDLEdBQUVELEdBQUVDLEVBQUMsRUFBRSxXQUFTLENBQUM7QUFBQSxRQUFDLENBQUUsS0FBR0QsR0FBRSxRQUFNLENBQUMsR0FBRUEsR0FBRSxTQUFPLENBQUMsR0FBRUEsR0FBRSxXQUFTLENBQUMsR0FBRUEsR0FBRSxRQUFNLENBQUMsR0FBRUEsR0FBRSxTQUFPLENBQUMsR0FBRUEsR0FBRSxXQUFTLENBQUM7QUFBQSxNQUFFLEVBQUMsR0FBRSxFQUFDLEtBQUksb0JBQW1CLE9BQU0sU0FBU0EsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLElBQUVDLElBQUVDLElBQUVDLElBQUVDLEtBQUUsS0FBSyxHQUFFQyxLQUFFLElBQUksRUFBRSxLQUFLLE9BQU8sR0FBRyxHQUFFQyxLQUFFLE1BQUtDLEtBQUUsS0FBSyxPQUFPLFdBQVcsY0FBWVQsS0FBRUQ7QUFBRSxhQUFLLE9BQU8sV0FBVyxPQUFPLE9BQU8sU0FBTyxLQUFHLEtBQUssT0FBTyxXQUFXLE9BQU8sT0FBTyxJQUFLLFNBQVNFLElBQUU7QUFBQyxVQUFBSCxHQUFFQyxFQUFDLEVBQUVDLEVBQUMsS0FBR0MsR0FBRSxRQUFNSCxHQUFFQyxFQUFDLEVBQUVDLEVBQUMsS0FBR0MsR0FBRSxPQUFLTyxLQUFFUCxHQUFFO0FBQUEsUUFBTSxDQUFFO0FBQUUsZUFBT0ssR0FBRSxPQUFPLE9BQU9QLEVBQUMsRUFBRSxLQUFLQyxFQUFDLEtBQUdNLEdBQUUsT0FBTyxPQUFPUCxFQUFDLEVBQUUsS0FBS0MsRUFBQyxFQUFFLGNBQVlRLEtBQUVGLEdBQUUsT0FBTyxPQUFPUCxFQUFDLEVBQUUsS0FBS0Ms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QUFPZCxHQUFFLFFBQVEsY0FBYyxTQUFPLE1BQUltQixLQUFFLEtBQUssZ0JBQWdCVixJQUFFTixJQUFFLElBQUUsSUFBR2UsS0FBRSxLQUFLLFlBQVUsQ0FBQ2pCLEdBQUUsS0FBS2dCLElBQUVILEVBQUMsSUFBRWIsR0FBRSxLQUFLZ0IsS0FBRXBCLEtBQUUsR0FBRWlCLEVBQUMsSUFBRWIsR0FBRSxLQUFLZ0IsS0FBRXBCLEtBQUUsR0FBRWMsRUFBQyxJQUFFVixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFYyxFQUFDLElBQUVWLEdBQUUsS0FBS2dCLEtBQUVwQixLQUFFQSxLQUFFLEdBQUVjLEVBQUMsSUFBRVYsR0FBRSxLQUFLZ0IsS0FBRXBCLEtBQUUsR0FBRWMsRUFBQyxJQUFFVixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFaUIsRUFBQyxJQUFFYixHQUFFLEtBQUtnQixLQUFFcEIsSUFBRWlCLEVBQUMsSUFBRWIsR0FBRSxLQUFLZ0IsS0FBRXBCLElBQUVtQixFQUFDLElBQUVmLEdBQUUsS0FBS2dCLElBQUVELEVBQUMsSUFBRWYsR0FBRSxLQUFLZ0IsSUFBRUgsS0FBRWYsS0FBRSxDQUFDLEdBQUVFLEdBQUUsS0FBS2dCLElBQUVELEVBQUMsSUFBRWYsR0FBRSxLQUFLZ0IsS0FBRXBCLElBQUVtQixFQUFDLElBQUVmLEdBQUUsS0FBS2dCLEtBQUVwQixJQUFFa0IsRUFBQyxJQUFFZCxHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFa0IsRUFBQyxJQUFFZCxHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFZ0IsRUFBQyxJQUFFWixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRUEsS0FBRSxHQUFFZ0IsRUFBQyxJQUFFWixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFZ0IsRUFBQyxJQUFFWixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFZ0IsRUFBQyxJQUFFWixHQUFFLEtBQUtnQixLQUFFcEIsS0FBRSxHQUFFa0IsRUFBQyxJQUFFZCxHQUFFLEtBQUtnQixJQUFFRixF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RSxLQUFLUyxJQUFFSSxLQUFFakIsS0FBRSxDQUFDLElBQUVJLEdBQUUsS0FBS08sSUFBRU0sS0FBRWpCLEtBQUUsQ0FBQyxJQUFFSSxHQUFFLEtBQUtPLElBQUVNLEtBQUVqQixLQUFFLElBQUVBLEtBQUUsQ0FBQyxJQUFFSSxHQUFFLEtBQUtPLElBQUVNLEtBQUVqQixLQUFFLElBQUVBLEtBQUUsQ0FBQyxJQUFFSSxHQUFFLEtBQUtPLElBQUVNLEtBQUVqQixLQUFFLENBQUMsSUFBRUksR0FBRSxLQUFLUyxJQUFFSSxLQUFFakIsS0FBRSxDQUFDLElBQUVJLEdBQUUsS0FBS1MsSUFBRUksS0FBRWpCLEVBQUMsSUFBRUksR0FBRSxLQUFLWSxJQUFFQyxLQUFFakIsRUFBQyxJQUFFSSxHQUFFLEtBQUtZLElBQUVDLEVBQUMsSUFBRWIsR0FBRSxLQUFLUyxLQUFFWCxLQUFFLEdBQUVlLEVBQUMsR0FBRWIsR0FBRSxLQUFLWSxJQUFFQyxFQUFDLElBQUViLEdBQUUsS0FBS1ksSUFBRUMsS0FBRWpCLEVBQUMsSUFBRUksR0FBRSxLQUFLVSxJQUFFRyxLQUFFakIsRUFBQyxJQUFFSSxHQUFFLEtBQUtVLElBQUVHLEtBQUVqQixLQUFFLENBQUMsSUFBRUksR0FBRSxLQUFLUSxJQUFFSyxLQUFFakIsS0FBRSxDQUFDLElBQUVJLEdBQUUsS0FBS1EsSUFBRUssS0FBRWpCLEtBQUVBLEtBQUUsQ0FBQyxJQUFFSSxHQUFFLEtBQUtRLElBQUVLLEtBQUVqQixLQUFFLENBQUMsSUFBRUksR0FBRSxLQUFLUSxJQUFFSyxLQUFFakIsS0FBRSxDQUFDLElBQUVJLEdBQUUsS0FBS1UsSUFBRUcsS0FBRWpCLEtBQUUsQ0FBQyxJQUFFSSxHQUFFLEtBQUtVLElBQUVHLEVBQUMsSUFBRWIsR0FBRSxLQUFLWSxJQUFFQyxFQUFDLElBQUUsR0FBRyxHQUFFRSxNQUFHZixHQUFFLEtBQUtTLElBQUVJLEVBQUMsR0FBRWQsR0FBRSxRQUFRLGVBQWFMLE1BQUdDLEtBQUcsRUFBQyxRQUFPbUIsSUFBRSxVQUFTQyxJQUFFLEdBQUVM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LE9BQU0sV0FBVTtBQUFDLGVBQU0sTUFBSVMsR0FBRSxLQUFLLENBQUMsSUFBRUEsR0FBRSxLQUFLLENBQUMsSUFBRUEsR0FBRSxLQUFLLENBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxXQUFVO0FBQUMsZUFBTSxTQUFPLENBQUMsS0FBSyxHQUFFLEtBQUssR0FBRSxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUU7QUFBQSxNQUFHLEdBQUUsWUFBVyxXQUFVO0FBQUMsZUFBTyxLQUFLLElBQUUsTUFBSSxNQUFHLEtBQUssSUFBRSxNQUFJLE9BQUksS0FBSyxJQUFFLE1BQUk7QUFBQSxNQUFHLEdBQUUsT0FBTSxTQUFTWixJQUFFO0FBQUMsZUFBTyxLQUFLLGNBQVksSUFBSUcsR0FBRSxNQUFNSCxFQUFDLEdBQUU7QUFBQSxNQUFJLEdBQUUsSUFBRyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLGVBQWFBLEtBQUVBLEtBQUUsSUFBRSxJQUFFQSxLQUFFLElBQUUsSUFBRUEsSUFBRSxJQUFJRyxHQUFFLE1BQU0sRUFBQyxHQUFFLENBQUMsRUFBRSxLQUFLLEtBQUcsS0FBSyxZQUFZLElBQUUsS0FBSyxLQUFHSCxLQUFHLEdBQUUsQ0FBQyxFQUFFLEtBQUssS0FBRyxLQUFLLFlBQVksSUFBRSxLQUFLLEtBQUdBLEtBQUcsR0FBRSxDQUFDLEVBQUUsS0FBSyxLQUFHLEtBQUssWUFBWSxJQUFFLEtBQUssS0FBR0EsSUFBRSxDQUFDLEtBQUc7QUFBQSxNQUFJLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLE1BQU0sT0FBSyxTQUFTSCxJQUFFO0FBQUMsZUFBT0EsTUFBRyxJQUFHRyxHQUFFLE1BQU0sTUFBTSxLQUFLSCxFQUFDLEtBQUdHLEdBQUUsTUFBTSxNQUFNLEtBQUtILEVBQUM7QUFBQSxNQUFDLEdBQUVHLEdBQUUsTUFBTSxRQUFNLFNBQVNILElBQUU7QUFBQyxlQUFPQSxNQUFHLFlBQVUsT0FBT0EsR0FBRSxLQUFHLFlBQVUsT0FBT0EsR0FBRSxLQUFHLFlBQVUsT0FBT0EsR0FBRTtBQUFBLE1BQUMsR0FBRUcsR0FBRSxNQUFNLFVBQVEsU0FBU0gsSUFBRTtBQUFDLGVBQU9HLEdBQUUsTUFBTSxNQUFNSCxFQUFDLEtBQUdHLEdBQUUsTUFBTSxLQUFLSCxFQUFDO0FBQUEsTUFBQyxHQUFFRyxHQUFFLFFBQU0sU0FBU0gsSUFBRUMsSUFBRTtBQUFDLGNBQUlELE1BQUdBLE1BQUcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxVQUFRQyxPQUFJRCxLQUFFQyxHQUFFLFFBQVEsSUFBRyxLQUFLLFFBQU0sS0FBSyxNQUFNRCxFQUFDO0FBQUEsTUFBQyxHQUFFRyxHQUFFLE9BQU9BLEdBQUUsT0FBTSxFQUFDLFVBQVMsV0FBVTtBQUFDLGVBQU8sS0FBSyxNQUFNLEtBQUssR0FBRztBQUFBLE1BQUMsR0FBRSxTQUFRLFdBQVU7QUFBQyxlQUFPLEtBQUs7QUFBQSxNQUFLLEdBQUUsT0FBTSxTQUFTSCxJQUFFO0FBQUMsZUFBT0EsS0FBRUEsR0FBRSxRQUFRLEdBQUUsTUFBTSxRQUFRQSxFQUFDLElBQUVBLEtBQUUsS0FBSyxNQUFNQSxFQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxhQUFXLFNBQVNILElBQUVDLElBQUU7QUFBQyxRQUFBRSxHQUFFLE1BQU0sS0FBSyxNQUFLSCxJQUFFQyxNQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFRSxHQUFFLFdBQVcsWUFBVSxJQUFJQSxHQUFFLFNBQU1BLEdBQUUsV0FBVyxVQUFVLGNBQVlBLEdBQUU7QUFBVyxlQUFRQyxLQUFFLEVBQUMsR0FBRSxTQUFTSixJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBT0QsR0FBRSxJQUFFQyxHQUFFLElBQUVGLEdBQUUsQ0FBQyxHQUFFQyxHQUFFLElBQUVDLEdBQUUsSUFBRUYsR0FBRSxDQUFDLEdBQUUsQ0FBQyxLQUFJQyxHQUFFLEdBQUVBLEdBQUUsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNELElBQUVDLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFQyxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFLENBQUMsS0FBSUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLEdBQUUsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU9BLEdBQUUsSUFBRUQsR0FBRSxDQUFDLEdBQUUsQ0FBQyxLQUFJQSxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUVELEdBQUUsQ0FBQyxHQUFFLENBQUMsS0FBSUEsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBT0EsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRUMsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRSxDQUFDLEtBQUlBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBT0EsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRUMsR0FBRSxJQUFFRCxHQUFFLENBQUMsR0FBRSxDQUFDLEtBQUlBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLEdBQUUsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU9BLEdBQUUsSUFBRUQsR0FBRSxDQUFDLEdBQUVDLEdBQUUsSUFBRUQsR0FBRSxDQUFDLEdBQUUsQ0FBQyxLQUFJQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxHQUFFLFNBQVNBLElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFPRCxHQUFFLElBQUVDLEdBQUUsR0FBRUQs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QUUsQ0FBQyxJQUFFLEtBQUssU0FBTyxNQUFJLE9BQUtBLEdBQUUsQ0FBQyxNQUFJLEtBQUssU0FBTyxNQUFLLEtBQUssT0FBS0EsR0FBRSxDQUFDLEtBQUdELGNBQWFHLEdBQUUsV0FBUyxLQUFLLFFBQU1ILEdBQUUsUUFBUSxHQUFFLEtBQUssT0FBS0EsR0FBRTtBQUFBLE1BQUssR0FBRSxRQUFPLEVBQUMsVUFBUyxXQUFVO0FBQUMsZ0JBQU8sT0FBSyxLQUFLLE9BQUssQ0FBQyxFQUFFLE1BQUksS0FBSyxTQUFPLE1BQUksT0FBSyxLQUFLLE9BQUssS0FBSyxRQUFNLE1BQUksS0FBSyxTQUFPLEtBQUs7QUFBQSxNQUFJLEdBQUUsUUFBTyxXQUFVO0FBQUMsZUFBTyxLQUFLLFNBQVM7QUFBQSxNQUFDLEdBQUUsU0FBUSxXQUFVO0FBQUMsZUFBTyxLQUFLO0FBQUEsTUFBSyxHQUFFLE1BQUssU0FBU0EsSUFBRTtBQUFDLGVBQU9BLEtBQUUsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEdBQUUsSUFBSUcsR0FBRSxPQUFPLE9BQUtILElBQUUsS0FBSyxRQUFNQSxHQUFFLElBQUk7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTQSxJQUFFO0FBQUMsZUFBT0EsS0FBRSxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsR0FBRSxJQUFJRyxHQUFFLE9BQU8sT0FBS0gsSUFBRSxLQUFLLFFBQU1BLEdBQUUsSUFBSTtBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPQSxLQUFFLElBQUlHLEdBQUUsT0FBT0gsRUFBQyxHQUFFLElBQUlHLEdBQUUsT0FBTyxPQUFLSCxJQUFFLEtBQUssUUFBTUEsR0FBRSxJQUFJO0FBQUEsTUFBQyxHQUFFLFFBQU8sU0FBU0EsSUFBRTtBQUFDLGVBQU9BLEtBQUUsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEdBQUUsSUFBSUcsR0FBRSxPQUFPLE9BQUtILElBQUUsS0FBSyxRQUFNQSxHQUFFLElBQUk7QUFBQSxNQUFDLEdBQUUsSUFBRyxTQUFTQSxJQUFFO0FBQUMsWUFBSUMsS0FBRSxJQUFJRSxHQUFFLE9BQU8sSUFBSTtBQUFFLGVBQU0sWUFBVSxPQUFPSCxPQUFJQyxHQUFFLE9BQUtELEtBQUdDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0QsSUFBRTtBQUFDLGVBQU8sS0FBSyxjQUFZLElBQUlHLEdBQUUsT0FBT0gsRUFBQyxHQUFFQSxHQUFFLGFBQVcsS0FBSyxZQUFZLFNBQU8sS0FBSyxRQUFPO0FBQUEsTUFBSSxHQUFFLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxjQUFZLElBQUlHLEdBQUUsT0FBTyxLQUFLLFdBQVcsRUFBRSxNQUFNLElBQUksRUFBRSxNQUFNSCxFQUFDLEVBQUUsS0FBSyxJQUFJLElBQUU7QUFBQSxNQUFJLEVBQUMsRUFBQyxDQUFDLEdBQUVHLEdBQUUsVUFBUUEsR0FBRSxPQUFPLEVBQUMsUUFBTyxTQUFTSCxJQUFFO0FBQUMsYUFBSyxVQUFRRyxHQUFFLFNBQVMsTUFBTSxRQUFPLEtBQUssU0FBTyxNQUFLLEtBQUssTUFBSSxDQUFDLElBQUcsS0FBSyxPQUFLSCxRQUFLLEtBQUssT0FBS0EsR0FBRSxVQUFTLEtBQUssS0FBSyxXQUFTLE1BQUssS0FBSyxVQUFRQSxHQUFFLGFBQWEsUUFBUSxLQUFHLEtBQUs7QUFBQSxNQUFRLEdBQUUsUUFBTyxFQUFDLEdBQUUsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLEtBQUlBLEVBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssS0FBSUEsRUFBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxFQUFFLElBQUUsS0FBSyxNQUFNLElBQUUsSUFBRSxLQUFLLEVBQUVBLEtBQUUsS0FBSyxNQUFNLElBQUUsQ0FBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxFQUFFLElBQUUsS0FBSyxPQUFPLElBQUUsSUFBRSxLQUFLLEVBQUVBLEtBQUUsS0FBSyxPQUFPLElBQUUsQ0FBQztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssRUFBRUQsRUFBQyxFQUFFLEVBQUVDLEVBQUM7QUFBQSxNQUFDLEdBQUUsUUFBTyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLEdBQUdELEVBQUMsRUFBRSxHQUFHQyxFQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0QsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLFNBQVFBLEVBQUM7QUFBQSxNQUFDLEdBQUUsUUFBTyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssVUFBU0EsRUFBQztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxZQUFJQyxLQUFFVyxHQUFFLE1BQUtiLElBQUVDLEVBQUM7QUFBRSxlQUFPLEtBQUssTUFBTSxJQUFJRSxHQUFFLE9BQU9ELEdBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJQyxHQUFFLE9BQU9ELEdBQUUsTUFBTSxDQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0YsSUFBRTtBQUFDLGFBQUssZUFBZTtBQUFFLFlBQUlDLEtBQUVlLEdBQUUsS0FBSyxLQUFLLFVBQVUsSUFBRSxDQUFDO0FBQUUsZUFBT2hCLEtBQUVBLEdBQUUsSUFBSUMsRUFBQyxJQUFFLEtBQUssTUFBTUEsRUFBQyxHQUFFQTtBQUFBLE1BQUMsR0FBRSxRQUFPLFdBQVU7QUFBQyxlQUFPLEtBQUssT0FBTyxLQUFHLEtBQUssT0FBTyxFQUFFLGNBQWMsSUFBSSxHQUFFO0FBQUEsTUFBSSxHQUFFLFNBQVEsU0FBU0QsSUFBRTtBQUFDLGVBQU8sS0FBSyxNQUFNQSxFQUFDLEVBQUUsT0FBTyxHQUFFQTtBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUksSUFBSTtBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPQSxHQUFFLElBQUksSUFBSTtBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssV0FBVTtBQUFDLGVBQU8sS0FBSyxNQUFNLFdBQVUsRUFBRTtBQUFBLE1BQUMsR0FBRSxNQUFLLFdBQVU7QUFBQyxlQUFPLEtBQUssTUFBTSxXQUFVLE1BQU07QUFBQSxNQUFDLEdBQUUsU0FBUSxXQUFVO0FBQUMsZUFBTSxVQUFRLEtBQUssTUFBTSxTQUFTO0FBQUEsTUFBQyxHQUFFLFVBQVMsV0FBVTtBQUFDLGVBQU8sS0FBSyxLQUFLLElBQUk7QUFBQSxNQUFDLEdBQUUsU0FBUSxXQUFVO0FBQUMsWUFBSUEsS0FBRSxLQUFLLEtBQUssT0FBTztBQUFFLGVBQU8sUUFBTUEsS0FBRSxDQUFDLElBQUVBLEdBQUUsS0FBSyxFQUFFLE1BQU1HLEdBQUUsTUFBTSxTQUFTO0FBQUEsTUFBQyxHQUFFLFVBQVMsU0FBU0gsSUFBRTtBQUFDLGVBQU0sTUFBSSxLQUFLLFFBQVEsRUFBRSxRQUFRQSxFQUFDO0FBQUEsTUFBQyxHQUFFLFVBQVMsU0FBU0EsSUFBRTtBQUFDLFlBQUcsQ0FBQyxLQUFLLFNBQVNBLEVBQUMsR0FBRTtBQUFDLGNBQUlDLEtBQUUsS0FBSyxRQUFRO0FBQUUsVUFBQUEsR0FBRSxLQUFLRCxFQUFDLEdBQUUsS0FBSyxLQUFLLFNBQVFDLEdBQUUsS0FBSyxHQUFHLENBQUM7QUFBQSxRQUFDO0FBQUMsZUFBTztBQUFBLE1BQUksR0FBRSxhQUFZLFNBQVNELElBQUU7QUFBQyxlQUFPLEtBQUssU0FBU0EsRUFBQyxLQUFHLEtBQUssS0FBSyxTQUFRLEtBQUssUUFBUSxFQUFFLE9BQVEsU0FBU0MsSUFBRTtBQUFDLGlCQUFPQSxNQUFHRDtBQUFBLFFBQUMsQ0FBRSxFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUU7QUFBQSxNQUFJLEdBQUUsYUFBWSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLFNBQVNBLEVBQUMsSUFBRSxLQUFLLFlBQVlBLEVBQUMs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QU8sS0FBSyxhQUFhLENBQUMsb0JBQUksTUFBSSxJQUFHLFVBQUssS0FBSyxVQUFVLFNBQU9DLEtBQUUsS0FBSyxJQUFJLEtBQUssUUFBTyxDQUFDLEdBQUVDLEtBQUUsS0FBSyxNQUFNRCxFQUFDLEdBQUUsU0FBSyxLQUFLLFVBQVUsU0FBT0MsS0FBRSxLQUFLLFVBQVUsU0FBTyxLQUFLLE1BQUlELEtBQUVDLElBQUVDLEtBQUUsS0FBSyxVQUFVLE1BQUssS0FBSyxVQUFVLE9BQUtELE9BQUksS0FBSyxTQUFPLEtBQUssVUFBVSxPQUFNLEtBQUssTUFBSSxHQUFFQyxLQUFFLEtBQUssVUFBVSxPQUFLLEdBQUUsS0FBSyxVQUFVLE9BQUssS0FBSyxVQUFVLFFBQU8sS0FBSyxVQUFVLGNBQVksS0FBSyxVQUFVLFdBQVMsS0FBSyxVQUFVLFlBQVUsU0FBUyxLQUFLLFVBQVUsT0FBS0EsTUFBRyxDQUFDLE9BQUssS0FBSyxTQUFPLEtBQUssSUFBSSxLQUFLLFFBQU8sQ0FBQyxHQUFFLEtBQUssTUFBSSxLQUFLLFNBQVEsS0FBSyxNQUFJLE1BQUksS0FBSyxNQUFJLElBQUcsS0FBSyxVQUFVLGFBQVcsS0FBSyxNQUFJLElBQUUsS0FBSztBQUFLLFlBQUlDLEtBQUUsS0FBSyxVQUFVLEtBQUssS0FBSyxHQUFHO0FBQUUsaUJBQVFDLE1BQUssS0FBSyxVQUFVO0FBQUssVUFBQUEsS0FBRSxLQUFLLFdBQVNBLE1BQUdELE9BQUksS0FBSyxVQUFVLEtBQUtDLEVBQUMsRUFBRSxLQUFLLEtBQUssT0FBTyxHQUFFLEtBQUssS0FBSUQsRUFBQyxHQUFFLE9BQU8sS0FBSyxVQUFVLEtBQUtDLEVBQUM7QUFBRyxlQUFPLEtBQUssVUFBUSxLQUFLLE9BQU8sRUFBRSxLQUFLLFVBQVMsRUFBQyxLQUFJLEtBQUssS0FBSSxPQUFNRCxJQUFFLElBQUcsTUFBSyxXQUFVLEtBQUssVUFBUyxDQUFDLEdBQUUsS0FBSyxhQUFXLEtBQUssT0FBTyxHQUFFLEtBQUcsS0FBSyxPQUFLLENBQUMsS0FBSyxVQUFVLFlBQVUsS0FBSyxVQUFVLFlBQVUsS0FBRyxLQUFLLE9BQUssS0FBSyxjQUFjLEdBQUUsS0FBSyxPQUFPLEVBQUUsS0FBSyxZQUFXLEVBQUMsSUFBRyxNQUFLLFdBQVUsS0FBSyxVQUFTLENBQUMsR0FBRSxLQUFLLFdBQVcsV0FBUyxLQUFLLE9BQU8sRUFBRSxLQUFLLGFBQWEsR0FBRSxLQUFLLFdBQVcsV0FBUyxLQUFLLE9BQU8sRUFBRSxJQUFJLEtBQUssR0FBRSxLQUFLLFNBQU8sU0FBSyxLQUFLLFNBQU8sS0FBSyxRQUFRLElBQUUsS0FBSyxhQUFhLEtBQUcsQ0FBQyxLQUFLLFVBQVEsS0FBSyxVQUFRLEtBQUssZUFBZSxHQUFFLEtBQUssVUFBUUEsSUFBRSxRQUFNO0FBQUEsTUFBSSxHQUFFLFFBQU8sV0FBVTtBQUFDLFlBQUlKLElBQUVDLEtBQUUsTUFBS0MsS0FBRSxLQUFLLE9BQU8sR0FBRUUsS0FBRSxLQUFLO0FBQVUsaUJBQVFDLE1BQUtELEdBQUU7QUFBVyxVQUFBSixLQUFFLENBQUMsRUFBRSxPQUFPSSxHQUFFLFdBQVdDLEVBQUMsQ0FBQyxFQUFFLElBQUssU0FBU0wsSUFBRTtBQUFDLG1CQUFNLFlBQVUsT0FBT0EsTUFBR0EsR0FBRSxLQUFHQSxHQUFFLEdBQUdJLEdBQUUsS0FBS0gsR0FBRSxHQUFHLEdBQUVBLEdBQUUsR0FBRyxJQUFFRDtBQUFBLFVBQUMsQ0FBRSxHQUFFRSxHQUFFRyxFQUFDLEVBQUUsTUFBTUgsSUFBRUYsRUFBQztBQUFFLGlCQUFRSyxNQUFLRCxHQUFFO0FBQU0sVUFBQUosS0FBRSxDQUFDSyxFQUFDLEVBQUUsT0FBT0QsR0FBRSxNQUFNQyxFQUFDLENBQUMsRUFBRSxJQUFLLFNBQVNMLElBQUU7QUFBQyxtQkFBTSxZQUFVLE9BQU9BLE1BQUdBLEdBQUUsS0FBR0EsR0FBRSxHQUFHSSxHQUFFLEtBQUtILEdBQUUsR0FBRyxHQUFFQSxHQUFFLEdBQUcsSUFBRUQ7QUFBQSxVQUFDLENBQUUsR0FBRUUsR0FBRSxLQUFLLE1BQU1BLElBQUVGLEVBQUM7QUFBRSxpQkFBUUssTUFBS0QsR0FBRTtBQUFPLFVBQUFKLEtBQUUsQ0FBQ0ssRUFBQyxFQUFFLE9BQU9ELEdBQUUsT0FBT0MsRUFBQyxDQUFDLEVBQUUsSUFBSyxTQUFTTCxJQUFFO0FBQUMsbUJBQU0sWUFBVSxPQUFPQSxNQUFHQSxHQUFFLEtBQUdBLEdBQUUsR0FBR0ksR0FBRSxLQUFLSCxHQUFFLEdBQUcsR0FBRUEsR0FBRSxHQUFHLElBQUVEO0FBQUEsVUFBQyxDQUFFLEdBQUVFLEdBQUUsTUFBTSxNQUFNQSxJQUFFRixFQUFDO0FBQUUsWUFBR0ksR0FBRSxXQUFXLFFBQU87QUFBQyxVQUFBSixLQUFFSSxHQUFFLHVCQUFzQkMsS0FBRTtBQUFFLG1CQUFRQyxLQUFFRixHQUFFLFdBQVcsUUFBT0MsS0FBRUMsSUFBRUQsTUFBSTtBQUFDLGdCQUFJRSxLQUFFSCxHQUFFLFdBQVdDLEVBQUM7QUFBRSxZQUFBRSxjQUFhSixHQUFFLFNBQU9ILEtBQUVPLEdBQUUsV0FBU1AsR0FBRSxTQUFVLElBQUlHLEdBQUUsU0FBUSxNQUFNSSxFQUFDLEVBQUUsR0FBR0gsR0FBRSxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBRUosR0FBRSxNQUFNTyxFQUFDLEVBQUUsR0FBR0gsR0FBRSxLQUFLLEtBQUssR0FBRyxDQUFDLEtBQUdHLEdBQUUsWUFBVUEsR0FBRSxLQUFLUCxHQUFFLFFBQVEsQ0FBQyxHQUFFQSxLQUFFQSxHQUFFLFNBQVNPLEdBQUUsR0FBR0gsR0FBRSxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUM7QUFBQSxVQUFFO0FBQUMsVUFBQUYsR0FBRSxPQUFPRixFQUFDO0FBQUEsUUFBQztBQUFDLGVBQU87QUFBQSxNQUFJLEdBQUUsTUFBSyxTQUFTQSxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEtBQUs7QUFBRSxlQUFPRCxPQUFJRixLQUFFRyxHQUFFLEtBQUtILEVBQUMsSUFBR0csR0FBRSxLQUFLSCxFQUFDLElBQUVDLElBQUU7QUFBQSxNQUFJLEdBQUUsWUFBVyxXQUFVO0FBQUMsZUFBTyxXQUFXLFdBQVU7QUFBQyxlQUFLLE1BQU07QUFBQSxRQUFDLEVBQUUsS0FBSyxJQUFJLEdBQUUsQ0FBQyxHQUFFO0FBQUEsTUFBSSxFQUFDLEdBQUUsUUFBT0UsR0FBRSxTQUFRLFdBQVUsRUFBQyxTQUFRLFNBQVNILElBQUVDLElBQUVDLElBQUU7QUFBQyxnQkFBTyxLQUFLLE9BQUssS0FBSyxLQUFHLElBQUlDLEdBQUUsR0FBRyxJQUFJLElBQUksUUFBUUgsSUFBRUMsSUFBRUMsRUFBQztBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNGLElBQUU7QUFBQyxnQkFBTyxLQUFLLE9BQUssS0FBSyxLQUFHLElBQUlHLEdBQUUsR0FBRyxJQUFJLElBQUksTUFBTUgsRUFBQztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssTUFBSSxLQUFLLEdBQUcsS0FBS0QsSUFBRUMsRUFBQyxHQUFFO0FBQUEsTUFBSSxHQUFFLFFBQU8sV0FBVTtBQUFDLGVBQU8sS0FBSyxNQUFJLEtBQUssR0FBRyxPQUFPLEdBQUU7QUFBQSxNQUFJLEVBQUMsRUFBQyxDQUFDLEdBQUVFLEdBQUUsV0FBU0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBT0UsR0FBRSxNQUFNLFFBQVFGLEVBQUMsSUFBRSxJQUFJRSxHQUFFLE1BQU1ILEVBQUMsRUFBRSxNQUFNQyxFQUFDLElBQUVFLEdBQUUsTUFBTSxVQUFVLEtBQUtILEVBQUMsSUFBRUcsR0FBRSxNQUFNLFlBQVksS0FBS0gsRUFBQyxJQUFFLElBQUlHLEdBQUUsVUFBVUgsRUFBQyxFQUFFLE1BQU1DLEVBQUMsSUFBRSxJQUFJRSxHQUFFLE1BQU1ILEVBQUMsRUFBRSxNQUFNQyxFQUFDLElBQUVFLEdBQUUsTUFBTSxjQUFjLEtBQUtGLEVBQUMsSUFBRSxJQUFJRSxHQUFFLE9BQU9ILEVBQUMsRUFBRSxNQUFNQyxFQUFDLEtBQUcsS0FBSyxRQUFNRCxJQUFFLE1BQUssS0FBSyxjQUFZQztBQUFBLE1BQUcsR0FBRSxRQUFPLEVBQUMsSUFBRyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsZUFBT0EsS0FBRSxJQUFFLEtBQUssUUFBTSxLQUFLO0FBQUEsTUFBVyxHQUFFLFNBQVEsV0FBVTtBQUFDLGVBQU8sS0FBSztBQUFBLE1BQUssRUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFPQSxHQUFFLElBQUcsRUFBQyxNQUFLLFNBQVNILElBQUVDLElBQUVFLElBQUU7QUFBQyxZQUFHLGFBQVcsRUFBRUgsRUFBQztBQUFFLG1CQUFRSSxNQUFLSjtBQUFFLGlCQUFLLEtBQUtJLElBQUVKLEdBQUVJLEVBQUMsQ0FBQztBQUFBO0FBQU8sZUFBSyxJQUFJSixJQUFFQyxJQUFFLE9BQU87QUFBRSxlQUFPO0FBQUEsTUFBSSxHQUFFLE1BQUssU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBRyxVQUFVLFNBQU8sS0FBSyxLQUFLLENBQUNILElBQUVDLElBQUVDLElBQUVDLEVBQUMsQ0FBQyxJQUFFLEtBQUssSUFBSSxRQUFPLEtBQUksS0FBSyxPQUFPLEdBQUUsV0FBWUgsRUFBQyxDQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxNQUFJQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUVDLElBQUVHLElBQUVDLElBQUU7QUFBQyxZQUFHLEVBQUUsYUFBVyxFQUFFTCxFQUFDLEtBQUdBLGNBQWFHLEdBQUU7QUFBUyxpQkFBT0EsR0FBRSxJQUFJLEtBQUssTUFBSyxRQUFNSCxHQUFFLE9BQUtBLEdBQUUsT0FBS0EsR0FBRSxHQUFFLFFBQU1BLEdBQUUsTUFBSUEsR0FBRSxNQUFJQSxHQUFFLEdBQUVBLEdBQUUsT0FBTUEsR0FBRSxNQUFNO0FBQUUsWUFBSU07QUFBRSxhQUFHLFVBQVUsV0FBUyxLQUFLLElBQUVOLElBQUUsS0FBSyxJQUFFQyxJQUFFLEtBQUssUUFBTUcsSUFBRSxLQUFLLFNBQU9DLEtBQUcsU0FBT0MsS0FBRSxNQUFNLE1BQUlBLEdBQUUsSUFBRSxHQUFFQSxHQUFFLElBQUUsR0FBRUEsR0FBRSxRQUFNLEdBQUVBLEdBQUUsU0FBTyxJQUFHQSxHQUFFLElBQUVBLEdBQUUsT0FBTUEsR0FBRSxJQUFFQSxHQUFFLFFBQU9BLEdBQUUsS0FBR0EsR0FBRSxJQUFFQSxHQUFFLE9BQU1BLEdBQUUsS0FBR0EsR0FBRSxJQUFFQSxHQUFFLFFBQU9BLEdBQUUsS0FBR0EsR0FBRSxJQUFFQSxHQUFFLFFBQU0sR0FBRUEsR0FBRSxLQUFHQSxHQUFFLElBQUVBLEdBQUUsU0FBTztBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUVILEdBQUUsT0FBS0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxTQUFTSCxJQUFFO0FBQUMsWUFBR0csR0FBRSxJQUFJLE1BQU0sTUFBSyxDQUFDLEVBQUUsTUFBTSxLQUFLLFNBQVMsQ0FBQyxHQUFFSCxjQUFhRyxHQUFFLFNBQVE7QUFBQyxjQUFJRDtBQUFFLGNBQUc7QUFBQyxnQkFBRyxDQUFDRCxHQUFFLGdCQUFnQixVQUFTO0FBQUMsdUJBQVFHLEtBQUVKLEdBQUUsTUFBS0ksR0FBRTtBQUFZLGdCQUFBQSxLQUFFQSxHQUFFO0FBQVcsa0JBQUdBLE1BQUdIO0FBQUUsc0JBQU0sSUFBSSxNQUFNLHdCQUF3QjtBQUFBLFlBQUM7QUFBQyxZQUFBQyxLQUFFRixHQUFFLEtBQUssUUFBUTtBQUFBLFVBQUMsU0FBT0MsSUFBRTtBQUFDLGdCQUFHRCxjQUFhRyxHQUFFLE9BQU07QUFBQyxjQUFBQSxHQUFFLE9BQU8sUUFBTUEsR0FBRSxRQUFRO0FBQUUsa0JBQUlFLEtBQUVMLEdBQUUsTUFBTUcsR0FBRSxPQUFPLEtBQUssUUFBUSxFQUFFLEtBQUs7QUFBRSxjQUFBRSxNQUFHQSxHQUFFLFFBQU0sY0FBWSxPQUFPQSxHQUFFLEtBQUssWUFBVUgsS0FBRUcsR0FBRSxLQUFLLFFBQVEsSUFBR0EsTUFBRyxjQUFZLE9BQU9BLEdBQUUsVUFBUUEsR0FBRSxPQUFPO0FBQUEsWUFBQztBQUFNLGNBQUFILEtBQUUsRUFBQyxHQUFFRixHQUFFLEtBQUssWUFBVyxHQUFFQSxHQUFFLEtBQUssV0FBVSxPQUFNQSxHQUFFLEtBQUssYUFBWSxRQUFPQSxHQUFFLEtBQUssYUFBWTtBQUFBLFVBQUM7QUFBQyxVQUFBRyxHQUFFLElBQUksS0FBSyxNQUFLRCxFQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsR0FBRSxTQUFRQyxHQUFFLEtBQUksUUFBT0EsR0FBRSxTQUFRLFdBQVUsRUFBQyxNQUFLLFdBQVU7QUFBQyxlQUFPLElBQUlBLEdBQUUsS0FBSyxJQUFJO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFQSxHQUFFLEtBQUssVUFBVSxjQUFZQSxHQUFFLE1BQUtBLEdBQUUsU0FBT0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxTQUFTSCxJQUFFO0FBQUMsWUFBSUMsS0FBRWMsR0FBRSxDQUFDLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBRSxRQUFBZixLQUFFLFNBQU9BLEtBQUVDLEtBQUVELGNBQWFHLEdBQUUsVUFBUUgsR0FBRSxVQUFVLElBQUUsWUFBVSxPQUFPQSxLQUFFZSxHQUFFZixHQUFFLE1BQU1HLEdBQUUsTUFBTSxTQUFTLEVBQUUsSUFBSSxVQUFVLENBQUMsSUFBRSxLQUFHLFVBQVUsU0FBT1ksR0FBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLFNBQVMsQ0FBQyxJQUFFLE1BQU0sUUFBUWYsRUFBQyxJQUFFZSxHQUFFZixFQUFDLElBQUVBLE1BQUcsYUFBVyxFQUFFQSxFQUFDLElBQUVBLEtBQUVDO0FBQUUsaUJBQVFHLEtBQUVjLEdBQUUsU0FBTyxHQUFFZCxNQUFHLEdBQUUsRUFBRUE7QUFBRSxlQUFLYyxHQUFFZCxFQUFDLENBQUMsSUFBRSxRQUFNSixHQUFFa0IsR0FBRWQsRUFBQyxDQUFDLElBQUVKLEdBQUVrQixHQUFFZCxFQUFDLENBQUMsSUFBRUgsR0FBRWlCLEdBQUVkLEVBQUMsQ0FBQztBQUFBLE1BQUMsR0FBRSxRQUFPLEVBQUMsU0FBUSxXQUFVO0FBQUMsWUFBSUosS0FBRWMsR0FBRSxNQUFLLEdBQUUsQ0FBQztBQUFFLFFBQUFBLEdBQUUsTUFBSyxHQUFFLENBQUM7QUFBRSxZQUFJYixLQUFFLE1BQUksS0FBSyxLQUFHLEtBQUssTUFBTUQsR0FBRSxHQUFFQSxHQUFFLENBQUMsSUFBRTtBQUFHLGVBQU0sRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxlQUFjLEtBQUssSUFBRSxLQUFLLElBQUlDLEtBQUUsS0FBSyxLQUFHLEdBQUcsSUFBRSxLQUFLLElBQUUsS0FBSyxJQUFJQSxLQUFFLEtBQUssS0FBRyxHQUFHLEtBQUcsS0FBSyxLQUFLLEtBQUssSUFBRSxLQUFLLElBQUUsS0FBSyxJQUFFLEtBQUssQ0FBQyxHQUFFLGVBQWMsS0FBSyxJQUFFLEtBQUssSUFBSUEsS0FBRSxLQUFLLEtBQUcsR0FBRyxJQUFFLEtBQUssSUFBRSxLQUFLLElBQUksQ0FBQ0EsS0FBRSxLQUFLLEtBQUcsR0FBRyxLQUFHLEtBQUssS0FBSyxLQUFLLElBQUUsS0FBSyxJQUFFLEtBQUssSUFBRSxLQUFLLENBQUMsR0FBRSxVQUFTQSxJQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLFFBQU8sSUFBSUUsR0FBRSxPQUFPLElBQUksRUFBQztBQUFBLE1BQUMsR0FBRSxPQUFNLFdBQVU7QUFBQyxlQUFPLElBQUlBLEdBQUUsT0FBTyxJQUFJO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0gsSUFBRTtBQUFDLGVBQU8sS0FBSyxjQUFZLElBQUlHLEdBQUUsT0FBT0gsRUFBQyxHQUFFO0FBQUEsTUFBSSxHQUFFLFVBQVMsU0FBU0EsSUFBRTtBQUFDLGVBQU8sSUFBSUcsR0FBRSxPQUFPLEtBQUssT0FBTyxFQUFFLFNBQVMsU0FBU0gsSUFBRTtBQUFDLGlCQUFPQSxjQUFhRyxHQUFFLFdBQVNILEtBQUUsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLElBQUdBO0FBQUEsUUFBQyxFQUFFQSxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsU0FBUSxXQUFVO0FBQUMsZUFBTyxJQUFJRyxHQUFFLE9BQU8sS0FBSyxPQUFPLEVBQUUsUUFBUSxDQUFDO0FBQUEsTUFBQyxHQUFFLFdBQVUsU0FBU0gsSUFBRUMsSUFBRTtBQUFDLGVBQU8sSUFBSUUsR0FBRSxPQUFPLEtBQUssT0FBTyxFQUFFLFVBQVVILE1BQUcsR0FBRUMsTUFBRyxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsUUFBTyxXQUFVO0FBQUMsaUJBQVFELEtBQUVHLEdBQUUsT0FBTyxPQUFPLGdCQUFnQixHQUFFRixLQUFFaUIsR0FBRSxTQUFPLEdBQUVqQixNQUFHLEdBQUVBO0FBQUksVUFBQUQsR0FBRWtCLEdBQUVqQixFQUFDLENBQUMsSUFBRSxLQUFLaUIsR0FBRWpCLEVBQUMsQ0FBQztBQUFFLGVBQU9EO0FBQUEsTUFBQyxHQUFFLFVBQVMsV0FBVTtBQUFDLGVBQU0sWUFBVWlCLEdBQUUsS0FBSyxDQUFDLElBQUUsTUFBSUEsR0FBRSxLQUFLLENBQUMsSUFBRSxNQUFJQSxHQUFFLEtBQUssQ0FBQyxJQUFFLE1BQUlBLEdBQUUsS0FBSyxDQUFDLElBQUUsTUFBSUEsR0FBRSxLQUFLLENBQUMsSUFBRSxNQUFJQSxHQUFFLEtBQUssQ0FBQyxJQUFFO0FBQUEsTUFBRyxFQUFDLEdBQUUsUUFBT2QsR0FBRSxTQUFRLFdBQVUsRUFBQyxLQUFJLFdBQVU7QUFBQyxlQUFPLElBQUlBLEdBQUUsT0FBTyxLQUFLLEtBQUssT0FBTyxDQUFDO0FBQUEsTUFBQyxHQUFFLFdBQVUsV0FBVTtBQUFDLFlBQUcsZ0JBQWdCQSxHQUFFLFFBQU87QUFBQyxjQUFJSCxLQUFFLEtBQUssS0FBSyxHQUFFLENBQUMsR0FBRUMsS0FBRUQsR0FBRSxLQUFLLGFBQWE7QUFBRSxpQkFBT0EsR0FBRSxPQUFPLEdBQUUsSUFBSUcsR0FBRSxPQUFPRixFQUFDO0FBQUEsUUFBQztBQUFDLGVBQU8sSUFBSUUsR0FBRSxPQUFPLEtBQUssS0FBSyxhQUFhLENBQUM7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVBLEdBQUUsUUFBTUEsR0FBRSxPQUFPLEVBQUMsUUFBTyxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsWUFBSUU7QUFBRSxRQUFBQSxLQUFFLE1BQU0sUUFBUUgsRUFBQyxJQUFFLEVBQUMsR0FBRUEsR0FBRSxDQUFDLEdBQUUsR0FBRUEsR0FBRSxDQUFDLEVBQUMsSUFBRSxhQUFXLEVBQUVBLEVBQUMsSUFBRSxFQUFDLEdBQUVBLEdBQUUsR0FBRSxHQUFFQSxHQUFFLEVBQUMsSUFBRSxRQUFNQSxLQUFFLEVBQUMsR0FBRUEsSUFBRSxHQUFFLFFBQU1DLEtBQUVBLEtBQUVELEdBQUMsSUFBRSxFQUFDLEdBQUUsR0FBRSxHQUFFLEVBQUMsR0FBRSxLQUFLLElBQUVHLEdBQUUsR0FBRSxLQUFLLElBQUVBLEdBQUU7QUFBQSxNQUFDLEdBQUUsUUFBTyxFQUFDLE9BQU0sV0FBVTtBQUFDLGVBQU8sSUFBSUEsR0FBRSxNQUFNLElBQUk7QUFBQSxNQUFDLEdBQUUsT0FBTSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLGNBQVksSUFBSUUsR0FBRSxNQUFNSCxJQUFFQyxFQUFDLEdBQUU7QUFBQSxNQUFJLEVBQUMsRUFBQyxDQUFDLEdBQUVFLEdBQUUsT0FBT0EsR0FBRSxTQUFRLEVBQUMsT0FBTSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxJQUFJRSxHQUFFLE1BQU1ILElBQUVDLEVBQUMsRUFBRSxVQUFVLEtBQUssVUFBVSxFQUFFLFFBQVEsQ0FBQztBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUVFLEdBQUUsT0FBT0EsR0FBRSxTQUFRLEVBQUMsTUFBSyxTQUFTSCxJQUFFQyxJQUFFRyxJQUFFO0FBQUMsWUFBRyxRQUFNSixJQUFFO0FBQUMsZUFBSUEsS0FBRSxDQUFDLEdBQUVJLE1BQUdILEtBQUUsS0FBSyxLQUFLLFlBQVksU0FBTyxHQUFFRyxNQUFHLEdBQUVBO0FBQUksWUFBQUosR0FBRUMsR0FBRUcsRUFBQyxFQUFFLFFBQVEsSUFBRUQsR0FBRSxNQUFNLFNBQVMsS0FBS0YsR0FBRUcsRUFBQyxFQUFFLFNBQVMsSUFBRSxXQUFXSCxHQUFFRyxFQUFDLEVBQUUsU0FBUyxJQUFFSCxHQUFFRyxFQUFDLEVBQUU7QUFBVSxpQkFBT0o7QUFBQSxRQUFDO0FBQUMsWUFBRyxhQUFXLEVBQUVBLEVBQUM7QUFBRSxtQkFBUUssTUFBS0w7QUFBRSxpQkFBSyxLQUFLSyxJQUFFTCxHQUFFSyxFQUFDLENBQUM7QUFBQSxpQkFBVSxTQUFPSjtBQUFFLGVBQUssS0FBSyxnQkFBZ0JELEVBQUM7QUFBQSxhQUFNO0FBQUMsY0FBRyxRQUFNQztBQUFFLG1CQUFPLFNBQU9BLEtBQUUsS0FBSyxLQUFLLGFBQWFELEVBQUMsS0FBR0csR0FBRSxTQUFTLE1BQU1ILEVBQUMsSUFBRUcsR0FBRSxNQUFNLFNBQVMsS0FBS0YsRUFBQyxJQUFFLFdBQVdBLEVBQUMsSUFBRUE7QUFBRSw0QkFBZ0JELEtBQUUsS0FBSyxLQUFLLFVBQVMsV0FBV0MsRUFBQyxJQUFFLElBQUUsS0FBSyxVQUFRLElBQUksSUFBRSxZQUFVRCxPQUFJLEtBQUssVUFBUUMsS0FBRyxVQUFRRCxNQUFHLFlBQVVBLE9BQUlHLEdBQUUsTUFBTSxRQUFRLEtBQUtGLEVBQUMsTUFBSUEsS0FBRSxLQUFLLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTUEsSUFBRSxHQUFFLENBQUMsSUFBR0EsY0FBYUUsR0FBRSxVQUFRRixLQUFFLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEdBQUUsR0FBRyxXQUFVO0FBQUMsaUJBQUssSUFBSUEsRUFBQztBQUFBLFVBQUMsQ0FBRSxLQUFJLFlBQVUsT0FBT0EsS0FBRUEsS0FBRSxJQUFJRSxHQUFFLE9BQU9GLEVBQUMsSUFBRUUsR0FBRSxNQUFNLFFBQVFGLEVBQUMsSUFBRUEsS0FBRSxJQUFJRSxHQUFFLE1BQU1GLEVBQUMsSUFBRSxNQUFNLFFBQVFBLEVBQUMsTUFBSUEsS0FBRSxJQUFJRSxHQUFFLE1BQU1GLEVBQUMsSUFBRyxhQUFXRCxLQUFFLEtBQUssV0FBUyxLQUFLLFFBQVFDLEVBQUMsSUFBRSxZQUFVLE9BQU9HLEtBQUUsS0FBSyxLQUFLLGVBQWVBLElBQUVKLElBQUVDLEdBQUUsU0FBUyxDQUFDLElBQUUsS0FBSyxLQUFLLGFBQWFELElBQUVDLEdBQUUsU0FBUyxDQUFDLEdBQUUsQ0FBQyxLQUFLLFdBQVMsZUFBYUQsTUFBRyxPQUFLQSxNQUFHLEtBQUssUUFBUUEsSUFBRUMsRUFBQztBQUFBLFFBQUM7QUFBQyxlQUFPO0FBQUEsTUFBSSxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFPQSxHQUFFLFNBQVEsRUFBQyxXQUFVLFNBQVNILElBQUVDLElBQUU7QUFBQyxZQUFJRztBQUFFLGVBQU0sYUFBVyxFQUFFSixFQUFDLEtBQUdJLEtBQUUsSUFBSUQsR0FBRSxPQUFPLElBQUksRUFBRSxRQUFRLEdBQUUsWUFBVSxPQUFPSCxLQUFFSSxHQUFFSixFQUFDLElBQUVJLE9BQUlBLEtBQUUsSUFBSUQsR0FBRSxPQUFPLElBQUksR0FBRUYsS0FBRSxDQUFDLENBQUNBLE1BQUcsQ0FBQyxDQUFDRCxHQUFFLFVBQVMsUUFBTUEsR0FBRSxNQUFJSSxLQUFFSCxLQUFFRyxHQUFFLFNBQVMsSUFBSUQsR0FBRSxPQUFPSCxFQUFDLENBQUMsSUFBRSxJQUFJRyxHQUFFLE9BQU9ILEVBQUMsSUFBRyxLQUFLLEtBQUssYUFBWUksRUFBQztBQUFBLE1BQUUsRUFBQyxDQUFDLEdBQUVELEdBQUUsT0FBT0EsR0FBRSxTQUFRLEVBQUMsYUFBWSxXQUFVO0FBQUMsZUFBTyxLQUFLLEtBQUssYUFBWSxJQUFJO0FBQUEsTUFBQyxHQUFFLFdBQVUsV0FBVTtBQUFDLGdCQUFPLEtBQUssS0FBSyxXQUFXLEtBQUcsSUFBSSxNQUFNQSxHQUFFLE1BQU0sVUFBVSxFQUFFLE1BQU0sR0FBRSxFQUFFLEVBQUUsSUFBSyxTQUFTSCxJQUFFO0FBQUMsY0FBSUMsS0FBRUQsR0FBRSxLQUFLLEVBQUUsTUFBTSxHQUFHO0FBQUUsaUJBQU0sQ0FBQ0MsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxFQUFFLE1BQU1FLEdBQUUsTUFBTSxTQUFTLEVBQUUsSUFBSyxTQUFTSCxJQUFFO0FBQUMsbUJBQU8sV0FBV0EsRUFBQztBQUFBLFVBQUMsQ0FBRSxDQUFDO0FBQUEsUUFBQyxDQUFFLEVBQUUsT0FBUSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsaUJBQU0sWUFBVUEsR0FBRSxDQUFDLElBQUVELEdBQUUsU0FBU2UsR0FBRWQsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFFRCxHQUFFQyxHQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU1ELElBQUVDLEdBQUUsQ0FBQyxDQUFDO0FBQUEsUUFBQyxHQUFHLElBQUlFLEdBQUUsUUFBTTtBQUFBLE1BQUMsR0FBRSxVQUFTLFNBQVNILElBQUU7QUFBQyxZQUFHLFFBQU1BO0FBQUUsaUJBQU87QUFBSyxZQUFJQyxLQUFFLEtBQUssVUFBVSxHQUFFQyxLQUFFRixHQUFFLFVBQVUsRUFBRSxRQUFRO0FBQUUsZUFBTyxLQUFLLE1BQU1BLEVBQUMsRUFBRSxZQUFZLEVBQUUsVUFBVUUsR0FBRSxTQUFTRCxFQUFDLENBQUMsR0FBRTtBQUFBLE1BQUksR0FBRSxPQUFNLFdBQVU7QUFBQyxlQUFPLEtBQUssU0FBUyxLQUFLLElBQUksQ0FBQztBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUVFLEdBQUUsaUJBQWVBLEdBQUUsT0FBTyxFQUFDLFFBQU8sU0FBU0gsSUFBRUMsSUFBRTtBQUFDLFlBQUcsVUFBVSxTQUFPLEtBQUcsYUFBVyxPQUFPQTtBQUFFLGlCQUFPLEtBQUssWUFBWSxLQUFLLE1BQUssQ0FBQyxFQUFFLE1BQU0sS0FBSyxTQUFTLENBQUM7QUFBRSxZQUFHLE1BQU0sUUFBUUQsRUFBQztBQUFFLG1CQUFRRyxLQUFFLEdBQUVDLEtBQUUsS0FBSyxVQUFVLFFBQU9ELEtBQUVDLElBQUUsRUFBRUQ7QUFBRSxpQkFBSyxLQUFLLFVBQVVBLEVBQUMsQ0FBQyxJQUFFSCxHQUFFRyxFQUFDO0FBQUEsaUJBQVVILE1BQUcsYUFBVyxFQUFFQSxFQUFDO0FBQUUsZUFBSUcsS0FBRSxHQUFFQyxLQUFFLEtBQUssVUFBVSxRQUFPRCxLQUFFQyxJQUFFLEVBQUVEO0FBQUUsaUJBQUssS0FBSyxVQUFVQSxFQUFDLENBQUMsSUFBRUgsR0FBRSxLQUFLLFVBQVVHLEVBQUMsQ0FBQztBQUFFLGFBQUssV0FBUyxPQUFHLFNBQUtGLE9BQUksS0FBSyxXQUFTO0FBQUEsTUFBRyxFQUFDLENBQUMsR0FBRUUsR0FBRSxZQUFVQSxHQUFFLE9BQU8sRUFBQyxRQUFPQSxHQUFFLFFBQU8sU0FBUUEsR0FBRSxnQkFBZSxRQUFPLFNBQVNILElBQUVDLElBQUU7QUFBQyxhQUFLLFlBQVksTUFBTSxNQUFLLENBQUMsRUFBRSxNQUFNLEtBQUssU0FBUyxDQUFDO0FBQUEsTUFBQyxHQUFFLFFBQU8sRUFBQyxXQUFVLENBQUMsZ0JBQWUsY0FBYyxHQUFFLFFBQU8sWUFBVyxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFPQSxHQUFFLFNBQVEsRUFBQyxPQUFNLFNBQVNILElBQUVDLElBQUU7QUFBQyxZQUFHLEtBQUcsVUFBVTtBQUFPLGlCQUFPLEtBQUssS0FBSyxNQUFNLFdBQVM7QUFBRyxZQUFHLFVBQVUsU0FBTztBQUFFLGNBQUcsYUFBVyxFQUFFRCxFQUFDO0FBQUUscUJBQVFJLE1BQUtKO0FBQUUsbUJBQUssTUFBTUksSUFBRUosR0FBRUksRUFBQyxDQUFDO0FBQUEsZUFBTTtBQUFDLGdCQUFHLENBQUNELEdBQUUsTUFBTSxNQUFNLEtBQUtILEVBQUM7QUFBRSxxQkFBTyxLQUFLLEtBQUssTUFBTVUsR0FBRVYsRUFBQyxDQUFDO0FBQUUsaUJBQUlBLEtBQUVBLEdBQUUsTUFBTSxTQUFTLEVBQUUsT0FBUSxTQUFTQSxJQUFFO0FBQUMscUJBQU0sQ0FBQyxDQUFDQTtBQUFBLFlBQUMsQ0FBRSxFQUFFLElBQUssU0FBU0EsSUFBRTtBQUFDLHFCQUFPQSxHQUFFLE1BQU0sU0FBUztBQUFBLFlBQUMsQ0FBRSxHQUFFQyxLQUFFRCxHQUFFLElBQUk7QUFBRyxtQkFBSyxNQUFNQyxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLENBQUM7QUFBQSxVQUFDO0FBQUE7QUFBTSxlQUFLLEtBQUssTUFBTVMsR0FBRVYsRUFBQyxDQUFDLElBQUUsU0FBT0MsTUFBR0UsR0FBRSxNQUFNLFFBQVEsS0FBS0YsRUFBQyxJQUFFLEtBQUdBO0FBQUUsZUFBTztBQUFBLE1BQUksRUFBQyxDQUFDLEdBQUVFLEdBQUUsU0FBT0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxTQUFTSCxJQUFFO0FBQUMsYUFBSyxZQUFZLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxTQUFRRyxHQUFFLFNBQVEsUUFBTyxFQUFDLFVBQVMsV0FBVTtBQUFDLGVBQU9BLEdBQUUsTUFBTSxJQUFJQSxHQUFFLE1BQU0sa0JBQWtCLEtBQUssS0FBSyxVQUFVLEdBQUcsU0FBU0gsSUFBRTtBQUFDLGlCQUFPRyxHQUFFLE1BQU1ILEVBQUM7QUFBQSxRQUFDLENBQUU7QUFBQSxNQUFDLEdBQUUsS0FBSSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssS0FBSyxZQUFZRCxHQUFFLElBQUksSUFBRUEsR0FBRSxRQUFNLEtBQUssS0FBSyxXQUFXQyxFQUFDLEtBQUcsS0FBSyxLQUFLLGFBQWFELEdBQUUsTUFBSyxLQUFLLEtBQUssV0FBV0MsRUFBQyxDQUFDLEdBQUU7QUFBQSxNQUFJLEdBQUUsS0FBSSxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUlELElBQUVDLEVBQUMsR0FBRUQ7QUFBQSxNQUFDLEdBQUUsS0FBSSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLE1BQU1BLEVBQUMsS0FBRztBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFNLENBQUMsRUFBRSxNQUFNLEtBQUssS0FBSyxLQUFLLFVBQVUsRUFBRSxRQUFRQSxHQUFFLElBQUk7QUFBQSxNQUFDLEdBQUUsS0FBSSxTQUFTQSxJQUFFO0FBQUMsZUFBT0csR0FBRSxNQUFNLEtBQUssS0FBSyxXQUFXSCxFQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxXQUFVO0FBQUMsZUFBTyxLQUFLLElBQUksQ0FB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QUFFLFlBQUlDLEtBQUUsS0FBSyxNQUFLQyxLQUFFYyxHQUFFZixHQUFFLFVBQVUsSUFBRSxDQUFDO0FBQUUsZUFBT0QsTUFBR0EsR0FBRSxRQUFNQSxJQUFHLFlBQVlFLEdBQUUsSUFBSSxJQUFFRCxHQUFFLFdBQVcsYUFBYUMsR0FBRSxNQUFLRCxHQUFFLFdBQVcsR0FBRUM7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVDLEdBQUUsT0FBT0EsR0FBRSxTQUFRLENBQUMsQ0FBQyxHQUFFQSxHQUFFLFdBQVNBLEdBQUUsT0FBTyxFQUFDLFFBQU8sU0FBU0gsSUFBRTtBQUFDLGFBQUssWUFBWSxLQUFLLE1BQUtHLEdBQUUsT0FBT0gsS0FBRSxVQUFVLENBQUMsR0FBRSxLQUFLLE9BQUtBO0FBQUEsTUFBQyxHQUFFLFNBQVFHLEdBQUUsV0FBVSxRQUFPLEVBQUMsSUFBRyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUMsR0FBRSxNQUFJLEVBQUUsT0FBT0gsSUFBRUMsSUFBRUMsRUFBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFNBQVNGLElBQUU7QUFBQyxlQUFPLEtBQUssTUFBTSxHQUFFLGNBQVksT0FBT0EsTUFBR0EsR0FBRSxLQUFLLE1BQUssSUFBSSxHQUFFO0FBQUEsTUFBSSxHQUFFLE1BQUssV0FBVTtBQUFDLGVBQU0sVUFBUSxLQUFLLEdBQUcsSUFBRTtBQUFBLE1BQUcsR0FBRSxVQUFTLFdBQVU7QUFBQyxlQUFPLEtBQUssS0FBSztBQUFBLE1BQUMsR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFNLGVBQWFGLE9BQUlBLEtBQUUsc0JBQXFCRyxHQUFFLFVBQVUsVUFBVSxLQUFLLEtBQUssTUFBS0gsSUFBRUMsSUFBRUMsRUFBQztBQUFBLE1BQUMsRUFBQyxHQUFFLFdBQVUsRUFBQyxVQUFTLFNBQVNGLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxFQUFFLFNBQVNELElBQUVDLEVBQUM7QUFBQSxNQUFDLEVBQUMs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RSxRQUFNQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVNILElBQUU7QUFBQyxhQUFLLFlBQVksS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxHQUFFLFNBQVFHLEdBQUUsUUFBTyxDQUFDLEdBQUVBLEdBQUUsU0FBT0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxVQUFTLFNBQVFBLEdBQUUsV0FBVSxXQUFVLEVBQUMsUUFBTyxXQUFVO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUEsR0FBRSxRQUFNO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFQSxHQUFFLE1BQUlBLEdBQUUsT0FBTyxFQUFDLFFBQU8sT0FBTSxTQUFRQSxHQUFFLE9BQU0sUUFBTyxFQUFDLFNBQVEsU0FBU0gsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLFNBQVFBLE1BQUcsTUFBSSxNQUFJRCxJQUFFRyxHQUFFLEtBQUs7QUFBQSxNQUFDLEVBQUMsR0FBRSxXQUFVLEVBQUMsS0FBSSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUUsR0FBRSxLQUFHLEVBQUUsUUFBUUgsSUFBRUMsRUFBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFLQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFFBQU8sU0FBUUEsR0FBRSxPQUFNLFdBQVUsRUFBQyxNQUFLLFNBQVNILElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJRSxHQUFFLE1BQUksRUFBRSxLQUFLSCxJQUFFQyxFQUFDO0FBQUEsTUFBQyxFQUFDLEVBQUMsQ0FBQyxHQUFFRSxHQUFFLFNBQU9BLEdBQUUsT0FBTyxFQUFDLFFBQU8sVUFBUyxTQUFRQSxHQUFFLE9BQU0sV0FBVSxFQUFDLFFBQU8sU0FBU0gsSUFBRTtBQUFDLGVBQU8sS0FBSyxJQUFJLElBQUlHLEdBQUUsUUFBTSxFQUFFLEdBQUcsSUFBSUEsR0FBRSxPQUFPSCxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUUsQ0FBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxPQUFPQSxHQUFFLFFBQU9BLEdBQUUsSUFBRyxFQUFDLElBQUcsU0FBU0gsSUFBRTtBQUFDLGVBQU8sS0FBSyxLQUFLLEtBQUlBLEVBQUM7QUFBQSxNQUFDLEdBQUUsSUFBRyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxLQUFLLEdBQUdBLEVBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFRyxHQUFFLFVBQVFBLEdBQUUsT0FBTyxFQUFDLFFBQU8sV0FBVSxTQUFRQSxHQUFFLE9BQU0sV0FBVSxFQUFDLFNBQVEsU0FBU0gsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxJQUFJLElBQUlFLEdBQUUsU0FBTyxFQUFFLEtBQUtILElBQUVDLEVBQUMsRUFBRSxLQUFLLEdBQUUsQ0FBQztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUUsR0FBRSxPQUFPQSxHQUFFLFNBQVFBLEdBQUUsTUFBS0EsR0FBRSxJQUFHLEVBQUMsSUFBRyxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxNQUFLQSxFQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRUcsR0FBRSxPQUFPQSxHQUFFLFFBQU9BLEdBQUUsU0FBUSxFQUFDLEdBQUUsU0FBU0gsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEdBQUcsSUFBRSxLQUFLLEdBQUcsSUFBRSxLQUFLLEdBQUdBLEtBQUUsS0FBSyxHQUFHLENBQUM7QUFBQSxNQUFDLEdBQUUsR0FBRSxTQUFTQSxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssR0FBRyxJQUFFLEtBQUssR0FBRyxJQUFFLEtBQUssR0FBR0EsS0FBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxLQUFLLElBQUksSUFBRSxLQUFLLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxJQUFHLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxLQUFLLElBQUksSUFBRSxLQUFLLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxPQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsSUFBRSxLQUFLLEdBQUcsSUFBRSxLQUFLLEdBQUcsSUFBSUcsR0FBRSxPQUFPSCxFQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsUUFBTyxTQUFTQSxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLElBQUUsS0FBSyxHQUFHLElBQUUsS0FBSyxHQUFHLElBQUlHLEdBQUUsT0FBT0gsRUFBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0EsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUVXLEdBQUUsTUFBS2IsSUFBRUMsRUFBQztBQUFFLGVBQU8sS0FBSyxHQUFHLElBQUlFLEdBQUUsT0FBT0QsR0FBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUlDLEdBQUUsT0FBT0QsR0FBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsQ0FBQyxHQUFFQyxHQUFFLE9BQUtBLEdBQUUsT0FBTyxFQUFDLFFBQU8sUUFBTyxTQUFRQSxHQUFFLE9BQU0sUUFBTyxFQUFDLE9BQU0sV0FBVTtBQUFDLGVBQU8sSUFBSUEsR0FBRSxXQUFXLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxHQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsR0FBRSxDQUFDLEtBQUssS0FBSyxJQUFJLEdBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsTUFBSyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFRSxJQUFFO0FBQUMsZUFBTyxRQUFNSixLQUFFLEtBQUssTUFBTSxLQUFHQSxLQUFFLFdBQVNDLEtBQUUsRUFBQyxJQUFHRCxJQUFFLElBQUdDLElBQUUsSUFBR0MsSUFBRSxJQUFHRSxHQUFDLElBQUUsSUFBSUQsR0FBRSxXQUFXSCxFQUFDLEVBQUUsT0FBTyxHQUFFLEtBQUssS0FBS0EsRUFBQztBQUFBLE1BQUUsR0FBRSxNQUFLLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssS0FBSyxLQUFLLE1BQU0sRUFBRSxLQUFLRCxJQUFFQyxFQUFDLEVBQUUsT0FBTyxDQUFDO0FBQUEsTUFBQyxHQUFFLE1BQUssU0FBU0QsSUFBRUMsSUFBRTtBQUFDLFlBQUlDLEtBQUVXLEdBQUUsTUFBS2IsSUFBRUMsRUFBQztBQUFFLGVBQU8sS0FBSyxLQUFLLEtBQUssTUFBTSxFQUFFLEtBQUtDLEdBQUUsT0FBTUEsR0FBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO0FBQUEsTUFBQyxFQUFDLEdBQUUsV0FBVSxFQUFDLE1BQUssU0FBU0YsSUFBRUMsSUFBRUMsSUFBRUUsSUFBRTtBQUFDLGVBQU9ELEdBQUUsS0FBSyxVQUFVLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSUEsR0FBRSxNQUFJLEdBQUUsUUFBTUgsS0FBRSxDQUFDQSxJQUFFQyxJQUFFQyxJQUFFRSxFQUFDLElBQUUsQ0FBQyxHQUFFLEdBQUUsR0FBRSxDQUFDLENBQUM7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVELEdBQUUsV0FBU0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxZQUFXLFNBQVFBLEdBQUUsT0FBTSxXQUFVLEVBQUMsVUFBUyxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUcsR0FBRSxVQUFRLEVBQUUsS0FBS0gsTUFBRyxJQUFJRyxHQUFFLFlBQVU7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVBLEdBQUUsVUFBUUEsR0FBRSxPQUFPLEVBQUMsUUFBTyxXQUFVLFNBQVFBLEdBQUUsT0FBTSxXQUFVLEVBQUMsU0FBUSxTQUFTSCxJQUFFO0FBQUMsZUFBTyxLQUFLLElBQUksSUFBSUcsR0FBRSxTQUFPLEVBQUUsS0FBS0gsTUFBRyxJQUFJRyxHQUFFLFlBQVU7QUFBQSxNQUFDLEVBQUMsRUFBQyxDQUFDLEdBQUVBLEdBQUUsT0FBT0EsR0FBRSxVQUFTQSxHQUFFLFNBQVEsRUFBQyxPQUFNLFdBQVU7QUFBQyxlQUFPLEtBQUssV0FBUyxLQUFLLFNBQU8sSUFBSUEsR0FBRSxXQUFXLEtBQUssS0FBSyxRQUFRLENBQUM7QUFBQSxNQUFFLEdBQUUsTUFBSyxTQUFTSCxJQUFFO0FBQUMsZUFBTyxRQUFNQSxLQUFFLEtBQUssTUFBTSxJQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssVUFBUyxZQUFVLE9BQU9BLEtBQUVBLEtBQUUsS0FBSyxTQUFPLElBQUlHLEdBQUUsV0FBV0gsRUFBQyxDQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sV0FBVTtBQUFDLGVBQU8sT0FBTyxLQUFLLFFBQU87QUFBQSxNQUFJLEdBQUUsTUFBSyxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssVUFBUyxLQUFLLE1BQU0sRUFBRSxLQUFLRCxJQUFFQyxFQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsTUFBSyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRVcsR0FBRSxNQUFLYixJQUFFQyxFQUFDO0FBQUUsZUFBTyxLQUFLLEtBQUssVUFBUyxLQUFLLE1BQU0sRUFBRSxLQUFLQyxHQUFFLE9BQU1BLEdBQUUsTUFBTSxDQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRUMsR0FBRSxPQUFPQSxHQUFFLE1BQUtBLEdBQUUsVUFBU0EsR0FBRSxTQUFRLEVBQUMsWUFBV0EsR0FBRSxZQUFXLEdBQUUsU0FBU0gsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEtBQUssRUFBRSxJQUFFLEtBQUssS0FBS0EsSUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQUEsTUFBQyxHQUFFLEdBQUUsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLEtBQUssRUFBRSxJQUFFLEtBQUssS0FBSyxLQUFLLEtBQUssRUFBRSxHQUFFQSxFQUFDO0FBQUEsTUFBQyxHQUFFLE9BQU0sU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxLQUFLO0FBQUUsZUFBTyxRQUFNRCxLQUFFQyxHQUFFLFFBQU0sS0FBSyxLQUFLRCxJQUFFQyxHQUFFLE1BQU07QUFBQSxNQUFDLEdBQUUsUUFBTyxTQUFTRCxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEtBQUs7QUFBRSxlQUFPLFFBQU1ELEtBQUVDLEdBQUUsU0FBTyxLQUFLLEtBQUtBLEdBQUUsT0FBTUQsRUFBQztBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUVHLEdBQUUsT0FBS0EsR0FBRSxPQUFPLEVBQUMsUUFBTyxRQUFPLFNBQVFBLEdBQUUsT0FBTSxRQUFPLEVBQUMsWUFBV0EsR0FBRSxXQUFVLE9BQU0sV0FBVTtBQUFDLGVBQU8sS0FBSyxXQUFTLEtBQUssU0FBTyxJQUFJQSxHQUFFLFVBQVUsS0FBSyxLQUFLLEdBQUcsQ0FBQztBQUFBLE1BQUUsR0FBRSxNQUFLLFNBQVNILElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxNQUFNLElBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxLQUFJLFlBQVUsT0FBT0EsS0FBRUEsS0FBRSxLQUFLLFNBQU8sSUFBSUcsR0FBRSxVQUFVSCxFQUFDLENBQUM7QUFBQSxNQUFDLEdBQUUsT0FBTSxXQUFVO0FBQUMsZUFBTyxPQUFPLEtBQUssUUFBTztBQUFBLE1BQUksRUFBQyxHQUFFLFdBQVUsRUFBQyxNQUFLLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssSUFBSSxJQUFJRyxHQUFFLE1BQUksRUFBRSxLQUFLSCxNQUFHLElBQUlHLEdBQUUsV0FBUztBQUFBLE1BQUMsRUFBQyxFQUFDLENBQUMsR0FBRUEsR0FBRSxRQUFNQSxHQUFFLE9BQU8sRUFBQyxRQUFPLFNBQVEsU0FBUUEsR0FBRSxPQUFNLFFBQU8sRUFBQyxNQUFLLFNBQVNGLElBQUU7QUFBQyxZQUFHLENBQUNBO0FBQUUsaUJBQU87QUFBSyxZQUFJQyxLQUFFLE1BQUtFLEtBQUUsSUFBSUosR0FBRTtBQUFNLGVB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LENBQUMsR0FBRSxJQUFJLE9BQU8sSUFBSSxXQUFVLEVBQUMsUUFBTyxTQUFTRCxJQUFFO0FBQUMsZUFBTyxLQUFLLEtBQUssRUFBRSxPQUFPQSxFQUFDO0FBQUEsTUFBQyxFQUFDLENBQUMsR0FBRSxJQUFJLE9BQU8sSUFBSSxTQUFRLElBQUksR0FBRSxJQUFJLFFBQU8sRUFBQyxRQUFPLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssV0FBU0EsY0FBYSxJQUFJLFVBQVFBLEtBQUUsS0FBSyxJQUFJLEVBQUUsT0FBT0EsRUFBQyxHQUFFLEtBQUssSUFBSSxLQUFHLEtBQUssU0FBUyxJQUFJLE1BQUksS0FBSyxJQUFJLEtBQUcsS0FBSyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxRQUFRLEdBQUUsS0FBSyxLQUFLLFVBQVMsS0FBSyxRQUFRLEdBQUUsS0FBSztBQUFBLE1BQVEsR0FBRSxVQUFTLFNBQVNBLElBQUU7QUFBQyxlQUFPLEtBQUssWUFBVSxTQUFLQSxNQUFHLEtBQUssU0FBUyxPQUFPLEdBQUUsT0FBTyxLQUFLLFVBQVMsS0FBSyxLQUFLLFVBQVMsSUFBSTtBQUFBLE1BQUMsRUFBQyxDQUFDLEdBQUUsSUFBSSxTQUFPLElBQUksT0FBTyxFQUFDLFFBQU8sV0FBVTtBQUFDLGFBQUssWUFBWSxLQUFLLElBQUk7QUFBQSxNQUFDLEdBQUUsU0FBUSxJQUFJLFNBQVEsUUFBTyxFQUFDLElBQUcsU0FBU0EsSUFBRTtBQUFDLGVBQU8sUUFBTUEsS0FBRSxLQUFLLE9BQU8sS0FBRyxLQUFLLE9BQU8sRUFBRSxPQUFPLGNBQVksS0FBSyxLQUFLLElBQUksSUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUcsS0FBSyxLQUFLLElBQUksSUFBRSxLQUFLLEtBQUssTUFBS0EsRUFBQztBQUFBLE1BQUMsR0FBRSxRQUFPLFNBQVNBLElBQUU7QUFBQyxlQUFPLFFBQU1BLEtBQUUsS0FBSyxLQUFLLFFBQVEsSUFBRSxLQUFLLEtBQUssVUFBU0EsRUFBQztBQUFBLE1BQUMsR0FBRSxVQUFTLFdBQVU7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RVYsR0FBRSxNQUFNSSxJQUFFQyxNQUFHSSxFQUFDLEdBQUVFLEtBQUVMLEdBQUUsTUFBTUMsSUFBRUMsTUFBR0MsRUFBQyxHQUFFRyxLQUFFLEdBQUVDLEtBQUUsRUFBQyxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTSxDQUFDLEdBQUUsQ0FBQyxFQUFDLEdBQUVDLEtBQUUsRUFBQyxLQUFJLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTSxDQUFDLEdBQUUsQ0FBQyxFQUFDLE9BQUk7QUFBQyxjQUFHSixHQUFFRSxFQUFDLElBQUVYLEdBQUUsS0FBS1ksSUFBRUgsR0FBRUUsRUFBQyxDQUFDLEdBQUVELEdBQUVDLEVBQUMsSUFBRVgsR0FBRSxLQUFLYSxJQUFFSCxHQUFFQyxFQUFDLENBQUMsR0FBRUYsR0FBRUUsRUFBQyxFQUFFLENBQUMsS0FBR0QsR0FBRUMsRUFBQyxFQUFFLENBQUMsS0FBRyxPQUFLRixHQUFFRSxFQUFDLEVBQUUsQ0FBQyxLQUFHLE9BQUtGLEdBQUVFLEVBQUMsRUFBRSxDQUFDLE1BQUlGLEdBQUVFLEVBQUMsRUFBRSxDQUFDLEtBQUdELEdBQUVDLEVBQUMsRUFBRSxDQUFDLEtBQUdGLEdBQUVFLEVBQUMsRUFBRSxDQUFDLEtBQUdELEdBQUVDLEVBQUMsRUFBRSxDQUFDLE1BQUksTUFBTSxVQUFVLE9BQU8sTUFBTUYsSUFBRSxDQUFDRSxJQUFFLENBQUMsRUFBRSxPQUFPVCxHQUFFLEtBQUtVLElBQUVILEdBQUVFLEVBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxNQUFNLFVBQVUsT0FBTyxNQUFNRCxJQUFFLENBQUNDLElBQUUsQ0FBQyxFQUFFLE9BQU9ULEdBQUUsS0FBS1csSUFBRUgsR0FBRUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxNQUFJRixHQUFFRSxFQUFDLElBQUVWLEdBQUUsS0FBS1csSUFBRUgsR0FBRUUsRUFBQyxDQUFDLEdBQUVELEdBQUVDLEVBQUMsSUFBRVYsR0FBRSxLQUFLWSxJQUFFSCxHQUFFQyxFQUFDLENBQUMsSUFBRyxFQUFFQSxNQUFHRixHQUFFLFVBQVFFLE1BQUdELEdBQUU7QUFBTztBQUFNLFVBQUFDLE1BQUdGLEdBQUUsVUFBUUEsR0FBRSxLQUFLLENBQUMsS0FBSUcsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUVELE1BQUdELEdBQUUsVUFBUUEsR0FBRSxLQUFLLENBQUMsS0FBSUcsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsR0FBRUEsR0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQUEsUUFBQztBQUFDLGVBQU0sRUFBQyxPQUFNSixJQUFFLE1BQUtDLEdBQUM7QUFBQSxNQUFDO0FBQUMsZUFBU1YsR0FBRUQsSUFBRTtBQUFDLGdCQUFPQSxHQUFFLENBQUMsR0FBRTtBQUFBLFVBQUMsS0FBSTtBQUFBLFVBQUksS0FBSTtBQUFJLFlBQUFBLEdBQUUsQ0FBQyxJQUFFLEtBQUlBLEdBQUUsQ0FBQyxJQUFFLEtBQUssTUFBTSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssTUFBTSxDQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQSxHQUFFLENBQUMsSUFBRSxLQUFJQSxHQUFFLENBQUMsSUFBRSxLQUFLLElBQUksQ0FBQztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQUksWUFBQUEsR0FBRSxDQUFDLElBQUUsS0FBSUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRSxLQUFLLElBQUksQ0FBQztBQUFFO0FBQUEsVUFBTSxLQUFJO0FBQUksWUFBQUEsR0FBRSxDQUFDLElBQUUsS0FBSUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssV0FBVyxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssV0FBVyxDQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQSxHQUFFLENBQUMsSUFBRSxLQUFJQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUVBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssV0FBVyxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssV0FBVyxDQUFDO0FBQUEsUUFBQztBQUFDLGVBQU9BO0FBQUEsTUFBQztBQUFDLGVBQVNFLEdBQUVGLElBQUU7QUFBQyxZQUFJQyxLQUFFRCxHQUFFO0FBQU8sZUFBTyxLQUFLLE1BQUksQ0FBQ0EsR0FBRUMsS0FBRSxDQUFDLEdBQUVELEdBQUVDLEtBQUUsQ0FBQyxDQUFDLEdBQUUsTUFBSSxPQUFPLFFBQVFELEdBQUUsQ0FBQyxDQUFDLE1BQUksS0FBSyxhQUFXLENBQUMsSUFBRSxLQUFLLElBQUksQ0FBQyxJQUFFQSxHQUFFQyxLQUFFLENBQUMsR0FBRSxJQUFFLEtBQUssSUFBSSxDQUFDLElBQUVELEdBQUVDLEtBQUUsQ0FBQyxDQUFDLElBQUdEO0FBQUEsTUFBQztBQUFDLGVBQVNHLEdBQUVILElBQUU7QUFBQyxZQUFJQyxLQUFFLENBQUNELEVBQUM7QUFBRSxnQkFBT0EsR0FBRSxDQUFDLEdBQUU7QUFBQSxVQUFDLEtBQUk7QUFBSSxtQkFBTyxLQUFLLE1BQUksS0FBSyxRQUFNLENBQUNBLEdBQUUsQ0FBQyxHQUFFQSxHQUFFLENBQUMsQ0FBQyxHQUFFQztBQUFBLFVBQUUsS0FBSTtBQUFJLFlBQUFELEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssSUFBSSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLEtBQUssSUFBSSxDQUFDO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQSxHQUFFLENBQUMsSUFBRUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxJQUFFQSxHQUFFLENBQUMsR0FBRUEsR0FBRSxDQUFDLElBQUUsSUFBRUEsR0FBRSxDQUFDLElBQUUsSUFBRSxJQUFFQSxHQUFFLENBQUMsSUFBRSxHQUFFQSxHQUFFLENBQUMsSUFBRSxJQUFFQSxHQUFFLENBQUMsSUFBRSxJQUFFLElBQUVBLEdBQUUsQ0FBQyxJQUFFLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLElBQUUsS0FBSyxJQUFJLENBQUMsSUFBRSxJQUFFLElBQUVBLEdBQUUsQ0FBQyxJQUFFLEdBQUVBLEdBQUUsQ0FBQyxJQUFFLElBQUUsS0FBSyxJQUFJLENBQUMsSUFBRSxJQUFFLElBQUVBLEdBQUUsQ0FBQyxJQUFFO0FBQUU7QUFBQSxVQUFNLEtBQUk7QUFBSSxZQUFBQyxLQUFFLFNBQVNELElBQUVDLElBQUU7QUFBQyxrQkFBSUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsS0FBRSxLQUFLLElBQUkzQixHQUFFLENBQUMsQ0FBQyxHQUFFNEIsS0FBRSxLQUFLLElBQUk1QixHQUFFLENBQUMsQ0FBQyxHQUFFNkIsS0FBRTdCLEdBQUUsQ0FBQyxJQUFFLEtBQUk4QixLQUFFOUIsR0FBRSxDQUFDLEdBQUUrQixLQUFFL0IsR0FBRSxDQUFDLEdBQUVnQyxLQUFFaEMsR0FBRSxDQUFDLEdBQUVpQyxLQUFFakMsR0FBRSxDQUFDLEdBQUVrQyxLQUFFLElBQUksSUFB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QUFDLEdBQUUsSUFBSUQsRUFBQztBQUFBLFlBQUMsQ0FBRSxHQUFFLEtBQUssR0FBRyxLQUFLLGFBQVksRUFBQyxPQUFNQSxJQUFFLEdBQUUsS0FBSyxZQUFZLE9BQU0sR0FBRSxLQUFLLEdBQUUsU0FBUSxLQUFJLENBQUM7QUFBQSxVQUFDO0FBQUEsUUFBQztBQUFBLE1BQUMsR0FBRUEsR0FBRSxVQUFVLE9BQUssU0FBU0EsSUFBRTtBQUFDLFlBQUlDLEtBQUUsS0FBSyxRQUFRLEdBQUVDLEtBQUUsS0FBSyxlQUFlRixFQUFDLEdBQUVHLEtBQUUsS0FBSyxZQUFZLElBQUksSUFBRUQsR0FBRSxJQUFFLEtBQUssWUFBWSxNQUFNLEdBQUVFLEtBQUUsS0FBSyxZQUFZLElBQUksSUFBRUYsR0FBRSxJQUFFLEtBQUssWUFBWSxNQUFNLEdBQUVHLEtBQUUsS0FBSyxZQUFXQyxLQUFFSixHQUFFLElBQUUsS0FBSyxZQUFZLE1BQU0sR0FBRUssS0FBRUwsR0FBRSxJQUFFLEtBQUssWUFBWSxNQUFNO0FBQUUsWUFBRyxLQUFLLEdBQUcsS0FBSyxZQUFXLEVBQUMsT0FBTUYsSUFBRSxHQUFFRSxJQUFFLEdBQUUsS0FBSyxHQUFFLFNBQVEsS0FBSSxDQUFDLEdBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRTtBQUFpQixpQkFBT0E7QUFBRSxZQUFHLGNBQVksT0FBT0csSUFBRTtBQUFDLGNBQUlHLEtBQUVILEdBQUUsS0FBSyxLQUFLLElBQUdGLElBQUVDLElBQUUsS0FBSyxDQUFDO0FBQUUsdUJBQVcsT0FBT0ksT0FBSUEsS0FBRSxFQUFDLEdBQUVBLElBQUUsR0FBRUEsR0FBQyxJQUFHLFNBQUtBLEdBQUUsSUFBRSxLQUFLLEdBQUcsRUFBRUwsRUFBQyxJQUFFLFVBQUtLLEdBQUUsS0FBRyxLQUFLLEdBQUcsRUFBRUEsR0FBRSxDQUFDLEdBQUUsU0FBS0EsR0FBRSxJQUFFLEtBQUssR0FBRyxFQUFFSixFQUFDLElBQUUsVUFBS0ksR0FBRSxLQUFHLEtBQUssR0FBRyxFQUFFQSxHQUFFLENBQUM7QUFBQSxRQUFDO0FB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QUVELElBQUUsUUFBTUQsTUFBRyxRQUFNQSxFQUFDLEdBQUUsR0FBRSxLQUFLLFdBQVdFLEdBQUUsQ0FBQyxHQUFFRCxJQUFFLFFBQU1ELE1BQUcsUUFBTUEsRUFBQyxFQUFDO0FBQUEsUUFBQztBQUFBLE1BQUM7QUFBQyxNQUFBQSxHQUFFLFVBQVUsT0FBSyxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLEdBQUcsS0FBSztBQUFFLGFBQUssVUFBUSxDQUFDO0FBQUUsWUFBSUMsS0FBRSxLQUFLLEdBQUcsVUFBVSxTQUFTO0FBQU8saUJBQVFDLE1BQUssS0FBSyxHQUFHLFVBQVU7QUFBUyxlQUFLLFFBQVFBLEVBQUMsSUFBRSxLQUFLLEdBQUcsVUFBVSxTQUFTQSxFQUFDLEdBQUUsV0FBU0gsR0FBRUcsRUFBQyxNQUFJLEtBQUssUUFBUUEsRUFBQyxJQUFFSCxHQUFFRyxFQUFDO0FBQUcsWUFBSUMsS0FBRSxDQUFDLFVBQVMsZUFBZTtBQUFFLGlCQUFRRCxNQUFLQyxJQUFFO0FBQUMsY0FBSUMsS0FBRSxLQUFLLFFBQVFELEdBQUVELEVBQUMsQ0FBQztBQUFFLHNCQUFVLE9BQU9FLEtBQUVBLEtBQUVBLEdBQUUsU0FBTyxJQUFFQSxHQUFFLE1BQU0sVUFBVSxJQUFFLENBQUMsSUFBRSxhQUFXLE9BQU9BLE1BQUcsYUFBV0QsR0FBRUQsRUFBQyxNQUFJRSxLQUFFQSxLQUFFSCxLQUFFLENBQUMsSUFBRyxLQUFLLFFBQVFFLEdBQUVELEVBQUMsQ0FBQyxJQUFFRTtBQUFBLFFBQUM7QUFBQyxhQUFLLFFBQVEsU0FBTyxDQUFDSCxJQUFFLEtBQUssUUFBUSxNQUFNLEVBQUUsT0FBUSxTQUFTSCxJQUFFQyxJQUFFO0FBQUMsaUJBQU9ELEdBQUUsT0FBUSxTQUFTQSxJQUFFO0FBQUMsbUJBQU9DLEdBQUUsUUFBUUQsRUFBQyxJQUFFO0FBQUEsVUFBRSxDQUFFO0FBQUEsUUFBQyxDQUFFLEdBQUUsS0FBSyxRQUFRLFNBQU8sQ0FBQyxLQUFLLFFBQVEsUUFBTyxLQUFLLFFBQVEsYUFBYSxFQUFFLE9BQVEsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGlCQUFPRCxHQUFFLE9BQVEsU0FBU0EsSUFBRTtBQUFDLG1CQUFPQyxHQUFFLFFBQVFELEVBQUMsSUFBRTtBQUFBLFVBQUMsQ0FBRTtBQUFBLFFBQUMsQ0FBRSxHQUFFLEtBQUssU0FBTyxLQUFLLEdBQUcsT0FBTyxHQUFFLEtBQUssU0FBTyxLQUFLLFVBQVEsS0FBSyxPQUFPLE1BQU0sR0FBRSxLQUFLLE9BQU8sT0FBTyxJQUFJLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxVQUFVRSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsS0FBSyxRQUFRLGNBQVksT0FBSyxDQUFDLFFBQU8sWUFBVyxTQUFTLEVBQUUsUUFBUSxLQUFLLEdBQUcsSUFBSSxJQUFFLEtBQUssYUFBYUYsRUFBQyxJQUFFLEtBQUssV0FBV0EsRUFBQyxHQUFFLEtBQUssUUFBUSxHQUFFLEtBQUssUUFBUTtBQUFBLE1BQUMsR0FBRUEsR0FBRSxVQUFVLGVBQWEsU0FBU0EsSUFBRTtBQUFDLGVBQU8sS0FBSyxlQUFlLGFBQVdBLElBQUUsS0FBSyxlQUFlLFFBQU0sS0FBSyxlQUFlLE1BQUksS0FBSyxPQUFPLElBQUksR0FBRSxLQUFLLFdBQVcsSUFBRztBQUFBLE1BQUksR0FBRUEsR0FBRSxVQUFVLGdCQUFjLFdBQVU7QUFBQyxZQUFJQSxLQUFFLEtBQUssR0FBRyxLQUFLO0FBQUUsZUFBTyxLQUFLLEdBQUcsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFLLFNBQVNDLElBQUU7QUFBQyxpQkFBTSxDQUFDQSxHQUFFLENBQUMsSUFBRUQsR0FBRSxHQUFFQyxHQUFFLENBQUMsSUFBRUQsR0FBRSxDQUFDO0FBQUEsUUFBQyxDQUFFO0FBQUEsTUFBQyxHQUFFQSxHQUFFLFVBQVUsYUFBVyxXQUFVO0FBQUMsaUJBQVFBLEtBQUUsTUFBS0MsS0FBRSxLQUFLLGNBQWMsR0FBRUMsS0FBRSxHQUFFQyxLQUFFRixHQUFFLFFBQU9DLEtBQUVDLElBQUUsRUFBRUQsSUFBRTtBQUFDLGNBQUlFLEtBQUUseUJBQVNILElBQUU7QUFBQyxtQkFBTyxTQUFTQyxJQUFFO0FBQUMsZUFBQ0EsS0FBRUEsTUFBRyxPQUFPLE9BQU8saUJBQWVBLEdBQUUsZUFBZSxJQUFFQSxHQUFFLGNBQVksT0FBR0EsR0FBRSxnQkFBZ0I7QUFBRSxrQkFBSUMsS0FBRUQsR0FBRSxTQUFPQSxHQUFFLFFBQVEsQ0FBQyxFQUFFLE9BQU1FLEtBQUVGLEdBQUUsU0FBT0EsR0FBRSxRQUFRLENBQUMsRUFBRTtBQUFNLGNBQUFGLEdBQUUsR0FBRyxLQUFLLFNBQVEsRUFBQyxHQUFFRyxJQUFFLEdBQUVDLElBQUUsR0FBRUgsSUFBRSxPQUFNQyxHQUFDLENBQUM7QUFBQSxZQUFDO0FBQUEsVUFBQyxFQUFFQSxFQUFDLEdBQUVHLEtBQUUsS0FBSyxVQUFVSixHQUFFQyxFQUFDLEVBQUUsQ0FBQyxHQUFFRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxLQUFLLFFBQVEsV0FBVyxFQUFFLFNBQVMsS0FBSyxRQUFRLGNBQVksUUFBUSxFQUFFLEdBQUcsY0FBYUUsRUFBQyxFQUFFLEdBQUcsYUFBWUEsRUFBQztBQUFFLGVBQUssZUFBZSxJQUFJLElBQUlDLEVBQUM7QUFBQSxRQUFDO0FBQUEsTUFBQyxHQUFFTCxHQUFFLFVBQVUsWUFBVSxTQUFTQSxJQUFFQyxJQUFFO0FBQUMsWUFBSUMsS0FBRSxLQUFLLFFBQVE7QUFBVSxnQkFBT0EsSUFBRTtBQUFBLFVBQUMsS0FBSTtBQUFTLG1CQUFPLEtBQUssV0FBV0YsSUFBRUMsRUFBQztBQUFBLFVBQUUsS0FBSTtBQUFPLG1CQUFPLEtBQUssU0FBU0QsSUFBRUMsRUFBQztBQUFBLFVBQUU7QUFBUSxnQkFBRyxjQUFZLE9BQU9DO0FBQUUscUJBQU9BLEdBQUUsS0FBSyxNQUFLRixJQUFFQyxFQUFDO0FBQUUsa0JBQU0sSUFBSSxNQUFNLGFBQVdDLEtBQUUsY0FBYztBQUFBLFFBQUM7QUFBQSxNQUFDLEdBQUVGLEdBQUUsVUFBVSxhQUFXLFNBQVNBLElBQUVDLElBQUU7QUFBQyxlQUFPLEtBQUssT0FBTyxPQUFPLEtBQUssUUFBUSxTQUFTLEVBQUUsT0FBT0QsSUFBRUMsRUFBQztBQUFBLE1BQUMsR0FBRUQsR0FBRSxVQUFVLFdBQVMsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLGVBQU8sS0FBSyxPQUFPLEtBQUssS0FBSyxRQUFRLFdBQVUsS0FBSyxRQUFRLFNBQVMsRUFBRSxPQUFPRCxJQUFFQyxFQUFDO0FBQUEsTUFBQyxHQUFFRCxHQUFFLFVBQVUsdUJBQXFCLFdBQVU7QUFBQyxZQUFJQSxLQUFFLEtBQUssY0FBYztBQUFFLGFBQUssZUFBZSxJQUFJLEtBQU0sU0FBU0MsSUFBRTtBQUFDLGVBQUssR0FBRyxNQUFJRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxLQUFHLEtBQUssR0FBRyxNQUFJRCxHQUFFQyxFQUFDLEVBQUUsQ0FBQyxLQUFHLEtBQUssT0FBT0QsR0FBRUMsRUFBQyxFQUFFLENBQUMsR0FBRUQsR0FBRUMsRUFBQyxFQUFFLENBQUMsQ0FBQztBQUFBLFFBQUMsQ0FBRTtBQUFBLE1BQUMsR0FBRUQsR0FBRSxVQUFVLHNCQUFvQixXQUFVO0FBQUMsWUFBSUEsS0FBRSxNQUFLQyxLQUFFLEtBQUssR0FBRyxLQUFLO0FBQUUsWUFBRyxLQUFLLGNBQWMsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUMsT0FBTUEsR0FBRSxPQUFNLFFBQU9BLEdBQUUsT0FBTSxDQUFDLEdBQUUsS0FBSyxRQUFRLE9BQU8sVUFBUSxLQUFLLFFBQVEsT0FBTyxJQUFLLFNBQVNDLElBQUVDLElBQUU7QUFBQyxjQUFJQyxLQUFFSixHQUFFLFlBQVlFLElBQUVELEVBQUM7QUFBRSxVQUFBRCxHQUFFLGNBQWMsSUFBSSxJQUFJRyxLQUFFLENBQUMsRUFBRSxPQUFPQyxHQUFFLEdBQUVBLEdBQUUsQ0FBQztBQUFBLFFBQUMsQ0FBRSxHQUFFLEtBQUssUUFBUSxlQUFjO0FBQUMsY0FBSUYsS0FBRSxLQUFLLGNBQWMsSUFBSSxPQUFPO0FBQUUsZUFBSyxjQUFjLElBQUksSUFBSUEsS0FBRSxD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LGNBQUM7QUFBRTtBQUFBLFlBQU0sS0FBSTtBQUFJLG1CQUFLLE9BQUssU0FBU0YsSUFBRUMsSUFBRTtBQUFDLG9CQUFJQyxLQUFFLEtBQUssV0FBV0YsSUFBRUMsSUFBRSxDQUFDO0FBQUUsb0JBQUcsS0FBSyxXQUFXLElBQUksUUFBTUMsR0FBRSxDQUFDLElBQUUsR0FBRTtBQUFDLHNCQUFHLFdBQVMsS0FBSyxXQUFXO0FBQUs7QUFBTyx1QkFBSyxHQUFHLEtBQUssS0FBSyxXQUFXLElBQUksSUFBRUEsR0FBRSxDQUFDLEdBQUUsS0FBSyxXQUFXLElBQUksQ0FBQyxFQUFFLE1BQU0sS0FBSyxXQUFXLElBQUksUUFBTUEsR0FBRSxDQUFDLENBQUM7QUFBQSxnQkFBQztBQUFBLGNBQUM7QUFBRTtBQUFBLFlBQU0sS0FBSTtBQUFNLG1CQUFLLE9BQUssU0FBU0YsSUFBRUMsSUFBRTtBQUFDLG9CQUFJQyxLQUFFRixLQUFFLEtBQUssV0FBVyxFQUFFLEdBQUVHLEtBQUVGLEtBQUUsS0FBSyxXQUFXLEVBQUUsR0FBRUcsS0FBRSxLQUFLLE1BQU0sS0FBSyxXQUFXLEVBQUUsSUFBRSxLQUFLLFdBQVcsSUFBSSxJQUFFLEtBQUssV0FBVyxJQUFJLFNBQU8sR0FBRSxLQUFLLFdBQVcsRUFBRSxJQUFFLEtBQUssV0FBVyxJQUFJLElBQUUsS0FBSyxXQUFXLElBQUksUUFBTSxDQUFDLEdBQUVDLEtBQUUsS0FBSyxNQUFNRixLQUFFLEtBQUssV0FBVyxJQUFJLElBQUUsS0FBSyxXQUFXLElBQUksU0FBTyxHQUFFRCxLQUFFLEtBQUssV0FBVyxJQUFJLElBQUUsS0FBSyxXQUFXLElBQUksUUFBTSxDQUFDLEdBQUVJLEtBQUUsS0FBSyxXQUFXLFdBQVMsT0FBS0QsS0FBRUQsTUFBRyxLQUFLLEtBQUcsS0FBSyxRQUFRLGNBQVk7QUFBRSxxQkFBSyxHQUFHLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBRyxLQUFLLFdBQVcsSUFBSSxFQUFFLEVBQUUsT0FBT0UsS0FBRUEsS0FBRSxLQUFLLFFBQVEsYUFBWSxLQUFLLFdB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LElBQUksa0JBQUFDLFFBQVcsU0FBUyxjQUFjLEtBQUssT0FBTyxHQUFHLEtBQUssT0FBTztBQUM5RSxXQUFLLE1BQU0sT0FBTztBQUFBLElBQ3RCO0FBQUEsSUFDQSxhQUFhLFNBQVVGLFVBQVM7QUFDNUIsV0FBSyxNQUFNLGNBQWNBLFVBQVMsT0FBTyxNQUFNLElBQUk7QUFBQSxJQUN2RDtBQUFBLEVBQ0o7QUFDSjsiLAogICJuYW1lcyI6IFsidCIsICJlIiwgImkiLCAiYSIsICJzIiwgInIiLCAibyIsICJuIiwgImwiLCAiaCIsICJjIiwgImQiLCAiZyIsICJ1IiwgInAiLCAiZiIsICJ4IiwgImIiLCAidiIsICJtIiwgInkiLCAidyIsICJrIiwgIkEiLCAiUyIsICJDIiwgIkwiLCAiUCIsICJJIiwgIk0iLCAiVCIsICJ6IiwgIlgiLCAiRSIsICJZIiwgIkYiLCAiUiIsICJIIiwgIkQiLCAiTyIsICJCdWZmZXIiLCAiU3ltYm9sIiwgIlVpbnQ4QXJyYXkiLCAibWVyZ2UiLCAib3B0aW9ucyIsICJ0aGVtZSIsICJBcGV4Q2hhcnRzIl0KfQo= diff --git a/package-lock.json b/package-lock.json index 9e237c8..1fb6f0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,10 +16,26 @@ "esbuild": "^0.19.7" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.7.tgz", - "integrity": "sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", "cpu": [ "arm" ], @@ -33,9 +49,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.7.tgz", - "integrity": "sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", "cpu": [ "arm64" ], @@ -49,9 +65,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.7.tgz", - "integrity": "sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", "cpu": [ "x64" ], @@ -65,9 +81,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.7.tgz", - "integrity": "sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", "cpu": [ "arm64" ], @@ -81,9 +97,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.7.tgz", - "integrity": "sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", "cpu": [ "x64" ], @@ -97,9 +113,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.7.tgz", - "integrity": "sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", "cpu": [ "arm64" ], @@ -113,9 +129,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.7.tgz", - "integrity": "sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", "cpu": [ "x64" ], @@ -129,9 +145,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.7.tgz", - "integrity": "sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", "cpu": [ "arm" ], @@ -145,9 +161,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.7.tgz", - "integrity": "sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", "cpu": [ "arm64" ], @@ -161,9 +177,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.7.tgz", - "integrity": "sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", "cpu": [ "ia32" ], @@ -177,9 +193,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.7.tgz", - "integrity": "sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", "cpu": [ "loong64" ], @@ -193,9 +209,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.7.tgz", - "integrity": "sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", "cpu": [ "mips64el" ], @@ -209,9 +225,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.7.tgz", - "integrity": "sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", "cpu": [ "ppc64" ], @@ -225,9 +241,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.7.tgz", - "integrity": "sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", "cpu": [ "riscv64" ], @@ -241,9 +257,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.7.tgz", - "integrity": "sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", "cpu": [ "s390x" ], @@ -257,9 +273,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.7.tgz", - "integrity": "sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", "cpu": [ "x64" ], @@ -273,9 +289,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.7.tgz", - "integrity": "sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", "cpu": [ "x64" ], @@ -289,9 +305,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.7.tgz", - "integrity": "sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", "cpu": [ "x64" ], @@ -305,9 +321,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.7.tgz", - "integrity": "sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", "cpu": [ "x64" ], @@ -321,9 +337,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.7.tgz", - "integrity": "sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", "cpu": [ "arm64" ], @@ -337,9 +353,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.7.tgz", - "integrity": "sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", "cpu": [ "ia32" ], @@ -353,9 +369,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.7.tgz", - "integrity": "sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", "cpu": [ "x64" ], @@ -374,9 +390,9 @@ "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" }, "node_modules/apexcharts": { - "version": "3.44.0", - "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.44.0.tgz", - "integrity": "sha512-u7Xzrbcxc2yWznN78Jh5NMCYVAsWDfBjRl5ea++rVzFAqjU2hLz4RgKIFwYOBDRQtW1e/Qz8azJTqIJ1+Vu9Qg==", + "version": "3.45.1", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.45.1.tgz", + "integrity": "sha512-pPjj/SA6dfPvR/IKRZF0STdfBGpBh3WRt7K0DFuW9P8erypYkX17EHu3/molPRfo2zSiQwTVpshHC5ncysqfkA==", "dependencies": { "@yr/monotone-cubic-spline": "^1.0.3", "svg.draggable.js": "^2.2.2", @@ -388,9 +404,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.7.tgz", - "integrity": "sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", "dev": true, "hasInstallScript": true, "bin": { @@ -400,28 +416,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.19.7", - "@esbuild/android-arm64": "0.19.7", - "@esbuild/android-x64": "0.19.7", - "@esbuild/darwin-arm64": "0.19.7", - "@esbuild/darwin-x64": "0.19.7", - "@esbuild/freebsd-arm64": "0.19.7", - "@esbuild/freebsd-x64": "0.19.7", - "@esbuild/linux-arm": "0.19.7", - "@esbuild/linux-arm64": "0.19.7", - "@esbuild/linux-ia32": "0.19.7", - "@esbuild/linux-loong64": "0.19.7", - "@esbuild/linux-mips64el": "0.19.7", - "@esbuild/linux-ppc64": "0.19.7", - "@esbuild/linux-riscv64": "0.19.7", - "@esbuild/linux-s390x": "0.19.7", - "@esbuild/linux-x64": "0.19.7", - "@esbuild/netbsd-x64": "0.19.7", - "@esbuild/openbsd-x64": "0.19.7", - "@esbuild/sunos-x64": "0.19.7", - "@esbuild/win32-arm64": "0.19.7", - "@esbuild/win32-ia32": "0.19.7", - "@esbuild/win32-x64": "0.19.7" + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" } }, "node_modules/lodash.merge": { From d2045271ecbb5f1077c4272f46142b9afd7a7aa8 Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Thu, 11 Jan 2024 12:45:28 -0300 Subject: [PATCH 08/11] funnel example --- config/filament-apex-charts.php | 1 + stubs/Funnel.stub | 89 +++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 stubs/Funnel.stub diff --git a/config/filament-apex-charts.php b/config/filament-apex-charts.php index 4044df4..f8bd3fe 100644 --- a/config/filament-apex-charts.php +++ b/config/filament-apex-charts.php @@ -24,5 +24,6 @@ 'Scatter', 'TimelineRangeBars', 'Treemap', + 'Funnel', ], ]; diff --git a/stubs/Funnel.stub b/stubs/Funnel.stub new file mode 100644 index 0000000..a6f88aa --- /dev/null +++ b/stubs/Funnel.stub @@ -0,0 +1,89 @@ + [ + 'type' => 'bar', + 'height' => 300, + ], + 'series' => [ + [ + 'name' => '', + 'data' => [200, 330, 548, 740, 880, 990, 1100, 1380], + ], + ], + 'xaxis' => [ + 'categories' => ['Sweets', 'Processed Foods', 'Healthy Fats', 'Meat', 'Beans & Legumes', 'Dairy', 'Fruits & Vegetables', 'Grains'], + 'labels' => [ + 'style' => [ + 'fontFamily' => 'inherit', + ], + ], + ], + 'plotOptions' => [ + 'bar' => [ + 'borderRadius' => 0, + 'horizontal' => true, + 'distributed' => true, + 'barHeight' => '80%', + 'isFunnel' => true, + ] + ], + 'colors' => [ + '#F44F5E', + '#E55A89', + '#D863B1', + '#CA6CD8', + '#B57BED', + '#8D95EB', + '#62ACEA', + '#4BC3E6', + ], + ]; + } + + protected function extraJsOptions(): ?RawJs + { + return RawJs::make(<<<'JS' + { + dataLabels: { + enabled: true, + formatter: function (val, opt) { + return opt.w.globals.labels[opt.dataPointIndex] + }, + dropShadow: { + enabled: true + }, + } + } + JS); + } +} From e4c8a7bbfe08b560ab262e3e7655646418cdca39 Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Thu, 11 Jan 2024 15:25:17 -0300 Subject: [PATCH 09/11] plugin setup --- README.md | 13 ++++++++ .../views/widgets/apex-chart-widget.blade.php | 1 + src/FilamentApexCharts.php | 7 ---- src/FilamentApexChartsPlugin.php | 32 +++++++++++++++++++ src/FilamentApexChartsServiceProvider.php | 11 ++----- 5 files changed, 48 insertions(+), 16 deletions(-) delete mode 100644 src/FilamentApexCharts.php create mode 100644 src/FilamentApexChartsPlugin.php diff --git a/README.md b/README.md index f8f9a72..5ae3750 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,19 @@ You can install the package via composer: composer require leandrocfe/filament-apex-charts:"^3.0" ``` +Register the plugin for the Filament Panels you want to use: + +```php +use Leandrocfe\FilamentApexCharts\FilamentApexChartsPlugin; +public function panel(Panel $panel): Panel +{ + return $panel + ->plugins([ + FilamentApexChartsPlugin::make() + ]); +} +``` + **Filament V2** - if you are using Filament v2.x, you can use [this section](https://github.com/leandrocfe/filament-apex-charts/tree/2.0.2) ## Usage diff --git a/resources/views/widgets/apex-chart-widget.blade.php b/resources/views/widgets/apex-chart-widget.blade.php index 7d8e40f..2a1ad7d 100644 --- a/resources/views/widgets/apex-chart-widget.blade.php +++ b/resources/views/widgets/apex-chart-widget.blade.php @@ -1,4 +1,5 @@ @php + $plugin = \Leandrocfe\FilamentApexCharts\FilamentApexChartsPlugin::get(); $heading = $this->getHeading(); $subheading = $this->getSubheading(); $filters = $this->getFilters(); diff --git a/src/FilamentApexCharts.php b/src/FilamentApexCharts.php deleted file mode 100644 index 613ecaa..0000000 --- a/src/FilamentApexCharts.php +++ /dev/null @@ -1,7 +0,0 @@ -getId()); + } + + public function register(Panel $panel): void + { + } + + public function boot(Panel $panel): void + { + } +} diff --git a/src/FilamentApexChartsServiceProvider.php b/src/FilamentApexChartsServiceProvider.php index 605042a..630d7e4 100644 --- a/src/FilamentApexChartsServiceProvider.php +++ b/src/FilamentApexChartsServiceProvider.php @@ -6,16 +6,11 @@ use Filament\Support\Facades\FilamentAsset; use Illuminate\Support\Facades\Blade; use Leandrocfe\FilamentApexCharts\Commands\FilamentApexChartsCommand; -use Leandrocfe\FilamentApexCharts\Widgets\ApexChartWidget; use Spatie\LaravelPackageTools\Package; use Spatie\LaravelPackageTools\PackageServiceProvider; class FilamentApexChartsServiceProvider extends PackageServiceProvider { - protected array $widgets = [ - ApexChartWidget::class, - ]; - /** * Configures the given package with the name 'filament-apex-charts' * as a Package Service Provider. @@ -43,13 +38,11 @@ public function configurePackage(Package $package): void * * @throws \Exception If the component namespace is not valid. */ - public function bootingPackage() + public function packageBooted(): void { + parent::packageBooted(); Blade::componentNamespace('Leandrocfe\\FilamentApexCharts\\Components', 'filament-apex-charts'); - } - public function packageRegistered(): void - { FilamentAsset::register([ AlpineComponent::make('apexcharts', __DIR__.'/../dist/apexcharts.js'), ]); From 8d76e5afa385b16a1bcea0eef5f76d09033a76a8 Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Thu, 11 Jan 2024 17:14:14 -0300 Subject: [PATCH 10/11] commands --- src/Commands/FilamentApexChartsCommand.php | 195 +++++++++++++++------ 1 file changed, 140 insertions(+), 55 deletions(-) diff --git a/src/Commands/FilamentApexChartsCommand.php b/src/Commands/FilamentApexChartsCommand.php index 6c93b18..a26846e 100644 --- a/src/Commands/FilamentApexChartsCommand.php +++ b/src/Commands/FilamentApexChartsCommand.php @@ -2,16 +2,21 @@ namespace Leandrocfe\FilamentApexCharts\Commands; +use Filament\Facades\Filament; +use Filament\Panel; +use Filament\Resources\Resource; use Filament\Support\Commands\Concerns\CanManipulateFiles; -use Filament\Support\Commands\Concerns\CanValidateInput; use Illuminate\Console\Command; use Illuminate\Filesystem\Filesystem; +use Illuminate\Support\Arr; use Illuminate\Support\Str; +use function Laravel\Prompts\select; +use function Laravel\Prompts\text; + class FilamentApexChartsCommand extends Command { use CanManipulateFiles; - use CanValidateInput; /** * Signature @@ -66,50 +71,149 @@ public function __construct(Filesystem $files) public function handle(): int { //widget - $this->widget = (string) Str::of($this->argument('name') ?? $this->askRequired('Name (e.g. `BlogPostsChart`)', 'name')) + $widget = (string) str($this->argument('name') ?? text( + label: 'What is the chart name?', + placeholder: 'BlogPostsChart', + required: true, + )) ->trim('/') ->trim('\\') ->trim(' ') ->replace('/', '\\'); - //chartType - $this->chartType = $this->choice( - 'Chart type', - $this->chartOptions, - ); + $widgetClass = (string) str($widget)->afterLast('\\'); + + $widgetNamespace = str($widget)->contains('\\') ? + (string) str($widget)->beforeLast('\\') : + ''; + + $resource = null; + $resourceClass = null; - $this->widgetPath = $this->choice( - 'Using ApexCharts inside a Filament Panel?', - [ - 'yes' => 'yes', - 'no' => 'no (custom TALL-stack app)', - ], - 'yes' + $chartType = select( + label: 'What type of chart do you want to create?', + options: $this->chartOptions, ); - $path = $this->getSourceFilePath(); + if (class_exists(Resource::class)) { + $resourceInput = text( + label: 'What is the resource you would like to create this in?', + placeholder: '[Optional] BlogPostResource', + ); + + if (filled($resourceInput)) { + $resource = (string) str($resourceInput) + ->studly() + ->trim('/') + ->trim('\\') + ->trim(' ') + ->replace('/', '\\'); + + if (! str($resource)->endsWith('Resource')) { + $resource .= 'Resource'; + } + + $resourceClass = (string) str($resource) + ->afterLast('\\'); + } + } + + $panel = null; + + if (class_exists(Panel::class)) { - $this->makeDirectory(dirname($path)); + $panels = Filament::getPanels(); + $namespace = config('livewire.class_namespace'); - $contents = $this->getSourceFile(); + /** @var ?Panel $panel */ + $panel = $panels[select( + label: 'Where would you like to create this?', + options: array_unique([ + ...array_map( + fn (Panel $panel): string => "The [{$panel->getId()}] panel", + $panels, + ), + $namespace => "[{$namespace}] alongside other Livewire components", + ]) + )] ?? null; + } - if ($this->files->exists($path)) { - $this->error("File : {$path} already exits!"); - exit(); + $path = null; + $namespace = null; + $resourcePath = null; + $resourceNamespace = null; + + if (! $panel) { + $namespace = config('livewire.class_namespace'); + $path = app_path((string) str($namespace)->after('App\\')->replace('\\', '/')); + } elseif ($resource === null) { + $widgetDirectories = $panel->getWidgetDirectories(); + $widgetNamespaces = $panel->getWidgetNamespaces(); + + $namespace = (count($widgetNamespaces) > 1) ? + select( + label: 'Which namespace would you like to create this in?', + options: $widgetNamespaces, + ) : + (Arr::first($widgetNamespaces) ?? 'App\\Filament\\Widgets'); + $path = (count($widgetDirectories) > 1) ? + $widgetDirectories[array_search($namespace, $widgetNamespaces)] : + (Arr::first($widgetDirectories) ?? app_path('Filament/Widgets/')); + } else { + $resourceDirectories = $panel->getResourceDirectories(); + $resourceNamespaces = $panel->getResourceNamespaces(); + + $resourceNamespace = (count($resourceNamespaces) > 1) ? + select( + label: 'Which namespace would you like to create this in?', + options: $resourceNamespaces, + ) : + (Arr::first($resourceNamespaces) ?? 'App\\Filament\\Resources'); + $resourcePath = (count($resourceDirectories) > 1) ? + $resourceDirectories[array_search($resourceNamespace, $resourceNamespaces)] : + (Arr::first($resourceDirectories) ?? app_path('Filament/Resources/')); } - $fileCount = count($this->files->files(dirname($path))); + if ($path) { + $this->makeDirectory($path); + $contents = $this->getSourceFile($namespace, $widget, $chartType); + $file = $path.'/'.$widget.'.php'; + if ($this->files->exists($file)) { + $this->error("File : {$file} already exits!"); + exit(); + } + + $fileCount = count($this->files->files(dirname($file))); + + $this->files->put($file, $contents); + + $this->info("Successfully created {$widget}!"); + + if ($fileCount === 0) { + $this->welcomeMessage(); + } + } elseif ($resourcePath) { + + $this->makeDirectory($resourcePath.'/'.$resourceClass.'/Widgets'); - $this->files->put($path, $contents); + $contents = $this->getSourceFile($resourceNamespace.'\\'.$resourceClass.'\\Widgets', $widget, $chartType); - $infoMessage = $this->widgetPath === 'yes' ? - 'Check out your new widget on the dashboard page.' : - "Render your new widget in any Blade view using the @livewire directive: @livewire(\App\Http\Livewire\\$this->widget::class)"; + $file = $resourcePath.'/'.$resourceClass.'/Widgets/'.$widget.'.php'; - $this->info("Successfully created {$this->widget}! {$infoMessage}"); + if ($this->files->exists($file)) { + $this->error("File : {$file} already exits!"); + exit(); + } + + $fileCount = count($this->files->files(dirname($file))); + + $this->files->put($file, $contents); + + $this->info("Successfully created {$resourceClass}! Make sure to register the widget in `{$resourceClass}::getWidgets()`, and then again in `getHeaderWidgets()` or `getFooterWidgets()` of any `{$resourceClass}` page."); - if ($fileCount === 0) { - $this->welcomeMessage(); + if ($fileCount === 0) { + $this->welcomeMessage(); + } } return self::SUCCESS; @@ -120,7 +224,7 @@ public function handle(): int * * @return string */ - public function getStubPath() + public function getStubPath($chartType) { $path = Str::of(__DIR__); @@ -129,7 +233,7 @@ public function getStubPath() 'Windows' => $path->replace('src\Commands', 'stubs\\') }; - return $path->append($this->chartType)->append('.stub'); + return $path->append($chartType)->append('.stub'); } /** @@ -138,14 +242,12 @@ public function getStubPath() * * @return array */ - public function getStubVariables() + public function getStubVariables($namespace, $widget) { - $namespace = $this->widgetPath === 'yes' ? 'App\\Filament\\Widgets' : 'App\\Http\\Livewire'; - return [ 'NAMESPACE' => $namespace, - 'CLASS_NAME' => $this->widget, - 'CHART_ID' => Str::of($this->widget)->camel(), + 'CLASS_NAME' => $widget, + 'CHART_ID' => Str::of($widget)->camel(), ]; } @@ -154,9 +256,9 @@ public function getStubVariables() * * @return bool|mixed|string */ - public function getSourceFile() + public function getSourceFile($namespace, $widget, $chartType) { - return $this->getStubContents($this->getStubPath(), $this->getStubVariables()); + return $this->getStubContents($this->getStubPath($chartType), $this->getStubVariables($namespace, $widget)); } /** @@ -176,23 +278,6 @@ public function getStubContents($stub, $stubVariables = []) return $contents; } - /** - * Get the full path of generate class - * - * @return string - */ - public function getSourceFilePath() - { - $path = $this->widgetPath === 'yes' ? 'app/Filament/Widgets/' : 'app/Http/Livewire/'; - - $widgetPath = match (PHP_OS_FAMILY) { - default => $path, - 'Windows' => Str::of($path)->replace('/', '\\') - }; - - return base_path($widgetPath).$this->widget.'.php'; - } - /** * Build the directory for the class if necessary. * From 82a3b746dc85d645c7984357f1304b5de9493fe1 Mon Sep 17 00:00:00 2001 From: "Leandro C. Ferreira" Date: Thu, 11 Jan 2024 17:17:26 -0300 Subject: [PATCH 11/11] changelog --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33201bc..7dc5306 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## 3.1.0 + +### Added + +- Extra options and Formatters. +- Funnel chart. + +### Changed + +- Apexcharts update version. +- Commands. +- Plugin registration. + ## 3.0.2 ### Changed