PageSourceSearch

https://app.nempos.dk/js/1320.a4a734ab.js

js nempos.dk collected 2026-10-08 03:42:12 UTC 86,893 bytes, 2 lines download raw bytes

1"use strict";(self["webpackChunkwsypos_frontend"]=self["webpackChunkwsypos_frontend"]||[]).push([[1320],{79061:function(t,e,r){r.d(e,{A:function(){return l}});var a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"p-3 rounded-4 wrapper",class:[t.backgroundClass,{"wrapper--with-border":t.showBorder}]},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{cursor:"pointer"},on:{click:function(e){return t.$emit("update:expanded",!t.expanded)}}},[e("i",{staticClass:"bi fs-4 me-2",class:t.expanded?"bi-chevron-down":"bi-chevron-right"}),t._t("collapsedContent")],2),t.expanded?e("div",{staticClass:"mt-3"},[t._t("expandedContent")],2):t._e()])},n=[],s={name:"CollapsibleContent",props:{expanded:{type:Boolean,required:!1,default:!1},showBorder:{type:Boolean,required:!1,default:!0},backgroundClass:{type:String,required:!1,default:"bg-white"},backgroundClass:{type:String,required:!1,default:"bg-light"}},data(){return{}},computed:{},methods:{}},i=s,o=r(81656),u=(0,o.A)(i,a,n,!1,null,"78a7f127",null),l=u.exports},31320:function(t,e,r){r.r(e),r.d(e,{default:function(){return b}});var a=function(){var t=this,e=t._self._c;return e("div",[e("collapsible-content",{staticClass:"mb-3",attrs:{expanded:t.formExpanded}
1,on:{"update:expanded":function(e){t.formExpanded=!t.formExpanded}},scopedSlots:t._u([{key:"collapsedContent",fn:function(){return[e("h2",{staticClass:"h4 mb-0"},[t._v(t._s(t.$t("admin.statistics.configure_graph")))])]},proxy:!0},{key:"expandedContent",fn:function(){return[e("date-period-selector",{staticClass:"mt-3",attrs:{fromDate:t.$route.query.from,toDate:t.$route.query.to,allowedIntervals:["day","week","month"],defaultInterval:"week",periodLengthLimits:t.periodLengthLimits,fullWidthButtons:!0,enableOutputSelection:!0,outputType:t.outputType,outputSeparator:t.outputSeparator,showSubmitButton:!0,submitButtonText:t.submitButtonText,submitButtonSpinner:t.isProcessingRequest,submitButtonDisabled:(!t.dates.from||!t.dates.to)&&"month"!==t.interval||t.isProcessingRequest},on:{"update:outputType":function(e){t.outputType=e},"update:output-type":function(e){t.outputType=e},"update:outputSeparator":function(e){t.outputSeparator=e},"update:output-separator":function(e){t.outputSeparator=e},"date-changed":e=>t.setDates(e),"interval-changed":e=>t.setInterval(e),"period-submit":t.getData},scopedSlots:t._u([{key:"customControls",fn:function(){return[e("div",{staticClass:"col-12"},[e("div",{staticClass:"form-check form-switch mt-1"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.combineSplitOrders,expression:"combineSplitOrders"}],staticClass:"form-check-input",attrs:{type:"checkbox",id:"combineSplitOrdersCheckbox"},domProps:{checked:Array.isArray(t.combineSplitOrders)?t._i(t.combineSplitOrders,null)>-1:t.combineSplitOrders},on:{change:function(e){var r=t.combineSplitOrders,a=e.target,n=!!a.checked;if(Array.isArray(r)){var s=null,i=t._i(r,s);a.checked?i<0&&(t.combineSplitOrders=r.concat([s])):i>-1&&(t.combineSplitOrders=r.slice(0,i).concat(r.slice(i+1)))}else t.combineSplitOrders=n}}}),e("label",{staticClass:"form-check-label",attrs:{for:"combineSplitOrdersCheckbox"}},[t._v(" "+t._s(t.$t("admin.statistics.orders.average_order_total.combine_split_orders"))+" ")])])])]},proxy:!0}])})]},proxy:!0}])}),t.chartSeries?e("div",{staticClass:"bg-white"},[e("h2",{staticClass:"h4 mb-3"},[t._v(t._s(t.getPeriodText()))]),e("apexchart",{attrs:{type:"bar",height:600,options:t.chartOptions,series:t.chartSeries}})],1):t._e(),e("div",{staticClass:"alert alert-info small py-1 px-2"},[t._v(" "+t._s(t.$t("admin.statistics.orders.average_order_total.split_order_reminder"))+" ")])],1)},n=[],s=r(98956),i=r(11015),o=r(77626),u=r(95443),l=r(49182),c=r(49793),d=r(79061),p=r(17206),m=r(10213),h={name:"AverageOrderTotalPerInterval",mixins:[s.A,i.A,u.A,m.A],components:{DatePeriodSelector:l.A,AdminSpinnerButton:c.A,CollapsibleContent:d.A},data(){return{isProcessingRequest:!1,data:!1,combineSplitOrders:!0,chartSeries:!1,chartOptions:{}}},computed:{periodLengthLimits(){switch(this.interval){case"day":return{min:7,max:100};case"week":return{min:30,max:365};case"month":return{min:90,max:null};default:return{min:1,max:365}}}},methods:{getData(t=this.getOutputSelection()){this.isProcessingRequest=!0;const e={start_date:this.dates.from,end_date:this.dates.to,interval:this.interval,combine_split_orders:+this.combineSplitOrders},r="graph"===this.outputType?axios.get("statistics/orders/average-order-total-per-interval",{params:e}).then((t=>{const e=t.data.data,r=this.getQueryParamsPeriod(),a=this.getQueryParamsInterval(!0),n={combine_split_orders:this.combineSplitOrders?"1":"0"};this.updateQueryParamsIfChanged(Object.assign({},r,a,n));const s=t.data.interval;this.interval=s;const i={};this.chartSeries=[{name:this.$t("admin.statistics.orders.average_order_total.series_name"),data:e.map((t=>{const e=(0,o.PA)(t[s],s);return i[new Date(e).getTime()]=t[s],{x:e,y:t.average}}))}];const u=e,l=(0,o.nn)(this.interval,u,this.interval),c={chart:{type:"bar",stacked:!1,zoom:{enabled:!0,allowMouseWheelZoom:!1}},yaxis:{labels:{formatter:t=>this.formatPrice(t)},title:{text:this.$t("admin.statistics.orders.average_order_total")}},dataLabels:{enabled:!1},tooltip:{x:{formatter:t=>(0,o.Z_)(this.interval)(t)},y:{formatter:t=>this.formatPrice(t)},custom:({dataPointIndex:t,w:e})=>{const r=e.config.series[0].data[t],a=i[new Date(r.x).getTime()];return a?`\n                                    <div class="px-2 py-1">\n                                        <div class="fw-bold mb-1">${(0,o.QT)(a,s)}</div>\n                                        <div>${this.$t("admin.statistics.orders.average_order_total.series_name")}: ${this.formatPrice(r.y)}</div>\n                                    </div>\n                                `:""}}};this.chartOptions=Object.assign(l,c),this.formExpanded=!1})):(0,p.od)("statistics/orders/average-order-total-per-interval",e,"average_order_total_per_"+this.interval,t.outputType,t.separator);return r.catch((t=>{this.$store.commit("dangerNotify","Failed to generate statistics: "+(t?.response?.data?.message||t.message))})).finally((()=>{this.isProcessingRequest=!1}))}},created(){},mounted(){"combine_split_orders"in this.$route.query&&(this.combineSplitOrders=["1","true",!0].includes(this.$route.query.combine_split_orders)),this.getDataIfDatesSetAndConditionsMet(this.getData,null!=this.interval)}},f=h,g=r(81656),y=(0,g.A)(f,a,n,!1,null,"43865046",null),b=y.exports},77626:function(t,e,r){r.d(e,{h2:function(){return S},gl:function(){return g},Br:function(){return f},iZ:function(){return h},QT:function(){return x},Z_:function(){return v},ml:function(){return _},PA:function(){return P},QW:function(){return $},KW:function(){return m},LY:function(){return O},NO:function(){return w},bX:function(){return D},nn:function(){return y}});r(44114),r(43375),r(39225),r(13972),r(99209),r(25714),r(17561),r(66197);var a=r(14730),n=r(2642);function s(t,e){const r=(0,n.a)(t);return r.setHours(e),r}var i=r(50902),o=r(35840);function u(t,e){const r=(0,n.a)(t);return isNaN(+r)?(0,o.w)(t,NaN):(r.setFullYear(e),r)}var l=r(13999),c=r(83787),d=r(96914),p=r(27539);function m(t,e=!1){const r=[...new Set(t)].sort(((t,r)=>e?Date.parse(t)-Date.parse(r):Number(t)-Number(r))),a=[];for(let n=1;n<r.length;n++){const t=r[n-1],s=r[n],i=e?(Date.parse(s)-Date.parse(t))/36e5:Number(s)-Number(t);i>
11&&a.push({previous:t,next:s,count:Math.floor(i)-1})}return a}function h(t,e=!1){const r=t=>String(t).padStart(2,"0")+":00";return e?t.previous.slice(0,16).replace("T"," ")+" / "+t.next.slice(0,16).replace("T"," "):r(Number(t.previous)+1)+" - "+r(Number(t.next)-1)}const f={"blue-1":"#3498db","yellow-1":"#f1c40f","green-1":"#2ecc71","red-1":"#e74c3c","turquoise-1":"#1abc9c","orange-1":"#e67e22","purple-1":"#9b59b6",pink:"#f3466e","yellow-green":"#9acd43",cyan:"#40c6d1",sand:"#d5a53b",brown:"#ac7d3b","grey-1":"#95a5a6","dark-1":"#34495e","light-1":"#ecf0f1"},g=[f["blue-1"],f["yellow-1"],f["green-1"],f["red-1"],f["turquoise-1"],f["orange-1"],f["purple-1"],f["pink"],f["yellow-green"],f["cyan"],f["sand"],f["brown"],f["grey-1"],f["dark-1"],f["light-1"]];function y(t,e,r){const a={chart:{},xaxis:{min:void 0,max:void 0,stepSize:void 0,labels:{formatter:b(t)}}};return["day","week","month","year"].includes(t)&&(a.xaxis.type="datetime",e.length>1&&(a.xaxis.tickAmount=e.length-1),a.chart.zoom={enabled:!0,allowMouseWheelZoom:!1},"day"===t?(a.xaxis.stepSize=864e5,e.length>0&&(a.xaxis.min=_(e[0][r]),a.xaxis.max=_(e[e.length-1][r]))):"week"===t?(a.xaxis.stepSize=6048e5,e.length>0&&(a.xaxis.min=$(e[0][r]),a.xaxis.max=$(e[e.length-1][r]))):"month"===t?e.length>0&&(a.xaxis.min=k(e[0][r]),a.xaxis.max=k(e[e.length-1][r])):"year"===t&&e.length>0&&(a.xaxis.min=C(e[0][r]),a.xaxis.max=C(e[e.length-1][r]))),a}function b(t){const e=d.A.getters.company?.locale;switch(t){case"day":return t=>new Date(t).toLocaleDateString(e,{dateStyle:"short"});case"week":return t=>(0,a.s)(t);case"month":return t=>new Date(t).toLocaleDateString(e,{month:"short",year:"numeric"});case"year":return t=>new Date(t).getFullYear();default:return t=>t}}function v(t){switch(t){case"day":return e=>b(t)(e);case"week":return e=>p.R.t("general.week")+" "+b(t)(e)+", "+new Date(e).getFullYear();case"month":return e=>b(t)(e);case"year":return e=>String(b(t)(e));default:return t=>t}}function x(t,e){const r=d.A.getters.company?.locale;switch(e){case"day":return new Date(t).toLocaleDateString(r,{dateStyle:"medium"});case"week":{const[e,r]=t.split("-");return`${p.R.t("general.week")} ${r}, ${e}`}case"month":{const[e,a]=t.split("-");return new Date(Number(e),Number(a)-1,1).toLocaleDateString(r,{month:"long",year:"numeric"})}case"year":return String(t);default:return String(t)}}function w(t,e){return"provider_channel"===e?"orders.channels."+t:"provider_delivery"===e?"delivery_types."+t:"admin.statistics.turnover_types."+t}function S({title:t,series:e,colors:r,formatAmount:a,totalLabel:n,additionalContent:s=""}){const i=e.reduce(((t,e)=>t+Number(e.value||0)),0),o=a(i);let u='<div style="max-width: 280px; white-space: normal;"><div class="apexcharts-tooltip-title" style="white-space: normal;">'+t+"</div>"+s+'<table style="width:100%; border-collapse:collapse;"><tbody>';for(const[l,c]of e.entries())u+=`<tr>\n            <td style="padding: 4px 8px; white-space: nowrap;">\n                <span style="color:${r[l]};">&#9679;</span>\n                <b>${c.name}</b>\n            </td>\n            <td style="padding: 4px 8px; text-align: right; white-space: nowrap;">${a(c.value)}</td>\n        </tr>`;return u+=`<tr>\n        <td style="padding: 6px 8px 4px 8px; border-top: 1px solid rgba(0, 0, 0, 0.12);"><b>${n}</b></td>\n        <td style="padding: 6px 8px 4px 8px; text-align: right; white-space: nowrap; border-top: 1px solid rgba(0, 0, 0, 0.12);"><b>${o}</b></td>\n    </tr>`,u+"</tbody></table></div>"}function _(t){return s(new Date(t),12)}function D(t){let[e,r]=t.split("-");return(0,i.O)(u(new Date,e),r)}function $(t){let e=s((0,l.f)((0,c.b)(D(t)),3),12);return e}function k(t){const[e,r]=t.split("-");return new Date(Number(e),Number(r)-1,15,12)}function C(t){return new Date(Number(t),6,1,12)}function P(t,e){return"day"===e?_(t):"week"===e?$(t):"month"===e?k(t):"year"===e?C(t):(console.error("Unsupported interval for getMiddleOfTimeFromString:",e),new Date(t))}function O(t){const e={internal:f["purple-1"],nta:f["red-1"],wolt:f["blue-1"],ubereats:f["green-1"],invoice:f["grey-1"]},r=new Set(Object.values(e)),a=Object.values(f).filter((t=>!r.has(t))),n={};for(const s of t)if(e[s])n[s]=e[s];else if(a.length>0){const t=a.shift();n[s]=t,r.add(t),console.error(`No predefined colour for series key '${s}', using fallback colour ${t}`)}else n[s]="#cccccc",console.error(`No predefined colour for series key '${s}', and no fallback colours left. Using #cccccc.`);return n}},11015:function(t,e,r){var a=r(40173);const{isNavigationFailure:n,NavigationFailureType:s}=a.Ay;e.A={methods:{getIncludeSharedValueForFormPage(){return this.$store.getters.companyIsSubcompany?1:0},updateQueryParamsIfChanged(t){JSON.stringify(this.$route.query)!==JSON.stringify(t)&&this.$router.replace({query:t}).catch((t=>{if(!n(t,s.cancelled)&&!n(t,s.duplicated))throw t}))}}}},95443:function(t,e,r){var a=r(49182),n=r(49793),s=r(98956),i=r(95179);e.A={components:{DatePeriodSelector:a.A,AdminSpinnerButton:n.A},mixins:[s.A],data(){return{interval:null,dates:{from:null,to:null},formExpanded:!0}},computed:{isPeriodDateRangeValid(){return(0,i.iS)(this.dates,(0,i.N)(this.$store.getters.company))}},methods:{setDates(t){this.dates=(0,i.T6)(t,(0,i.N)(this.$store.getters.company))},setInterval(t){this.interval=t},getQueryParamsPeriod(){const t={...this.$route.query};return this.dates.from?t.from=this.dates.from:delete t.from,this.dates.to?t.to=this.dates.to:delete t.to,console.log("getQueryParamsPeriod:",t),t},setPeriodInQueryParams(){const t=this.getQueryParamsPeriod();JSON.stringify(this.$route.query)!==JSON.stringify(t)&&this.$router.replace({query:t})},getQueryParamsInterval(t=!1){const e={...this.$route.query};return this.interval?e.interval=this.interval:delete e.interval,t?{interval:e.interval}:e},getPeriodText(){return this.dates.from&&this.dates.to?this.formatDate(this.dates.from)+" - "+this.formatDate(this.dates.to):this.dates.from?`${this.$t("general.from")} `+this.formatDate(this.dates.from):this.dates.to?`${this.$t("general.until")} `+this.formatDate(this.dates.to):this.$t("general.all_time")},getDataIfDatesSetAndConditionsMet(t,...e){const{from:r,to:a,date:n}=this.$route.query;this.setDates(n&&"hour"===this.$route.query.interval?{from:n,to:n,date:n}:{from:r,to:a}),this.dates.from&&this.dates.to&&this.isPeriodDateRangeValid&&e.every((t=>t))&&t()}}}},10213:function(t,e,r){var a=r(17206);e.A={data(){const t=(0,a.Qm)();return{outputType:t.outputType||"graph",outputSeparator:t.separator||"semicolon"}},computed:{submitButtonText(){return(0,a.bg)(this,this.outputType)}},methods:{getOutputSelection(){return{outputType:this.outputType,separator:this.outputSeparator}}}}}}]);
2//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTMyMC5hNGE3MzRhYi5qcyIsIm1hcHBpbmdzIjoiK0pBQUEsSUFBSUEsRUFBUyxXQUFrQixJQUFJQyxFQUFJQyxLQUFLQyxFQUFHRixFQUFJRyxNQUFNRCxHQUFHLE9BQU9BLEVBQUcsTUFBTSxDQUFDRSxZQUFZLHdCQUF3QkMsTUFBTSxDQUFDTCxFQUFJTSxnQkFBaUIsQ0FBRSx1QkFBd0JOLEVBQUlPLGNBQWUsQ0FBQ0wsRUFBRyxNQUFNLENBQUNFLFlBQVksNEJBQTRCSSxZQU
2FZLENBQUMsT0FBUyxXQUFXQyxHQUFHLENBQUMsTUFBUSxTQUFTQyxHQUFRLE9BQU9WLEVBQUlXLE1BQU0sbUJBQW9CWCxFQUFJWSxTQUFTLElBQUksQ0FBQ1YsRUFBRyxJQUFJLENBQUNFLFlBQVksZUFBZUMsTUFBTUwsRUFBSVksU0FBVyxrQkFBb0IscUJBQXFCWixFQUFJYSxHQUFHLHFCQUFxQixHQUFJYixFQUFJWSxTQUFVVixFQUFHLE1BQU0sQ0FBQ0UsWUFBWSxRQUFRLENBQUNKLEVBQUlhLEdBQUcsb0JBQW9CLEdBQUdiLEVBQUljLE1BQ2xqQixFQUNJQyxFQUFrQixHQ1l0QixHQUNBQyxLQUFBLHFCQUVBQyxNQUFBLENBQ0FMLFNBQUEsQ0FBQU0sS0FBQUMsUUFBQUMsVUFBQSxFQUFBQyxTQUFBLEdBQ0FkLFdBQUEsQ0FBQVcsS0FBQUMsUUFBQUMsVUFBQSxFQUFBQyxTQUFBLEdBQ0FmLGdCQUFBLENBQUFZLEtBQUFJLE9BQUFGLFVBQUEsRUFBQUMsUUFBQSxZQUVBZixnQkFBQSxDQUFBWSxLQUFBSSxPQUFBRixVQUFBLEVBQUFDLFFBQUEsYUFHQUUsSUFBQUEsR0FDQSxPQUNBLENBRUEsRUFFQUMsU0FBQSxDQUNBLEVBR0FDLFFBQUEsQ0FDQSxHQ3BDbVIsSSxXQ1EvUUMsR0FBWSxPQUNkLEVBQ0EzQixFQUNBZ0IsR0FDQSxFQUNBLEtBQ0EsV0FDQSxNQUlGLEVBQWVXLEVBQWlCLE8scUVDbkJoQyxJQUFJM0IsRUFBUyxXQUFrQixJQUFJQyxFQUFJQyxLQUFLQyxFQUFHRixFQUFJRyxNQUFNRCxHQUFHLE9BQU9BLEVBQUcsTUFBTSxDQUFDQSxFQUFHLHNCQUFzQixDQUFDRSxZQUFZLE9BQU91QixNQUFNLENBQUMsU0FBVzNCLEVBQUk0QixjQUFjbkIsR0FBRyxDQUFDLGtCQUFrQixTQUFTQyxHQUFRVixFQUFJNEIsY0FBZ0I1QixFQUFJNEIsWUFBWSxHQUFHQyxZQUFZN0IsRUFBSThCLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLG1CQUFtQkMsR0FBRyxXQUFXLE1BQU8sQ0FBQzlCLEVBQUcsS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UNJOVAsSUFBQUEsR0FDSSxNQUFNa1EsR0FBbUJDLEVBQUFBLEVBQUFBLE1BRXpCLE1BQU8sQ0FDSGhQLFdBQVkrTyxFQUFpQi9PLFlBQWMsUUFDM0NDLGdCQUFpQjhPLEVBQWlCOUksV0FBYSxZQUV2RCxFQUVBbkgsU0FBVSxDQUNOb0IsZ0JBQUFBLEdBQ0ksT0FBTytPLEVBQUFBLEVBQUFBLElBQThCMVIsS0FBTUEsS0FBS3lDLFdBQ3BELEdBR0pqQixRQUFTLENBQ0wyRCxrQkFBQUEsR0FDSSxNQUFPLENBQ0gxQyxXQUFZekMsS0FBS3lDLFdBQ2pCaUcsVUFBVzFJLEtBQUswQyxnQkFFeEIsRyIsInNvdXJjZXMiOlsid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL21pbm9yL0NvbGxhcHNpYmxlQ29udGVudC52dWUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kL3NyYy9jb21wb25lbnRzL2FkbWluL21pbm9yL0NvbGxhcHNpYmxlQ29udGVudC52dWUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4vbWlub3IvQ29sbGFwc2libGVDb250ZW50LnZ1ZT9lZTM2Iiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL21pbm9yL0NvbGxhcHNpYmxlQ29udGVudC52dWU/YTUyNiIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9hZG1pbi9zdGF0aXN0aWNzL29yZGVycy9BdmVyYWdlT3JkZXJUb3RhbFBlckludGVydmFsLnZ1ZSIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvYWRtaW4vc3RhdGlzdGljcy9vcmRlcnMvQXZlcmFnZU9yZGVyVG90YWxQZXJJbnRlcnZhbC52dWUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4vc3RhdGlzdGljcy9vcmRlcnMvQXZlcmFnZU9yZGVyVG90YWxQZXJJbnRlcnZhbC52dWU/NjA2NCIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9hZG1pbi9zdGF0aXN0aWNzL29yZGVycy9BdmVyYWdlT3JkZXJUb3RhbFBlckludGVydmFsLnZ1ZT81MDcwIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9zZXRIb3Vycy5tanMiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3NldFllYXIubWpzIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9oZWxwZXJzL0dyYXBoaW5nSGVscGVycy5qcyIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvbWl4aW5zL0FkbWluRm9ybVBhZ2VIZWxwZXJzLmpzIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9taXhpbnMvUGVyaW9kU3RhdGlzdGljLmpzIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9taXhpbnMvU3RhdGlzdGljc091dHB1dE1peGluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKXt2YXIgX3ZtPXRoaXMsX2M9X3ZtLl9zZWxmLl9jO3JldHVybiBfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJwLTMgcm91bmRlZC00IHdyYXBwZXJcIixjbGFzczpbX3ZtLmJhY2tncm91bmRDbGFzcywgeyAnd3JhcHBlci0td2l0aC1ib3JkZXInOiBfdm0uc2hvd0JvcmRlciB9XX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIixzdGF0aWNTdHlsZTp7XCJjdXJzb3JcIjpcInBvaW50ZXJcIn0sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0uJGVtaXQoJ3VwZGF0ZTpleHBhbmRlZCcsICFfdm0uZXhwYW5kZWQpfX19LFtfYygnaScse3N0YXRpY0NsYXNzOlwiYmkgZnMtNCBtZS0yXCIsY2xhc3M6X3ZtLmV4cGFuZGVkID8gJ2JpLWNoZXZyb24tZG93bicgOiAnYmktY2hldnJvbi1yaWdodCd9KSxfdm0uX3QoXCJjb2xsYXBzZWRDb250ZW50XCIpXSwyKSwoX3ZtLmV4cGFuZGVkKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJtdC0zXCJ9LFtfdm0uX3QoXCJleHBhbmRlZENvbnRlbnRcIildLDIpOl92bS5fZSgpXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJwLTMgcm91bmRlZC00IHdyYXBwZXJcIiA6Y2xhc3M9XCJbYmFja2dyb3VuZENsYXNzLCB7ICd3cmFwcGVyLS13aXRoLWJvcmRlcic6IHNob3dCb3JkZXIgfV1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiIEBjbGljaz1cIiRlbWl0KCd1cGRhdGU6ZXhwYW5kZWQnLCAhZX
2hwYW5kZWQpXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImJpIGZzLTQgbWUtMlwiIDpjbGFzcz1cImV4cGFuZGVkID8gJ2JpLWNoZXZyb24tZG93bicgOiAnYmktY2hldnJvbi1yaWdodCdcIj48L2k+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwiY29sbGFwc2VkQ29udGVudFwiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgdi1pZj1cImV4cGFuZGVkXCIgY2xhc3M9XCJtdC0zXCI+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwiZXhwYW5kZWRDb250ZW50XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWU6IFwiQ29sbGFwc2libGVDb250ZW50XCIsXG5cbiAgICBwcm9wczoge1xuICAgICAgICBleHBhbmRlZDogeyB0eXBlOiBCb29sZWFuLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgICAgIHNob3dCb3JkZXI6IHsgdHlwZTogQm9vbGVhbiwgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgIGJhY2tncm91bmRDbGFzczogeyB0eXBlOiBTdHJpbmcsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdDogXCJiZy13aGl0ZVwiIH0sXG5cbiAgICAgICAgYmFja2dyb3VuZENsYXNzOiB7IHR5cGU6IFN0cmluZywgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiBcImJnLWxpZ2h0XCIgfSxcbiAgICB9LFxuXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgLy9cbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICAvL1xuICAgIH0sXG59XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxuLndyYXBwZXItLXdpdGgtYm9yZGVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1icy1ncmF5LTMwMCk7XG59XG48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC00MC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db2xsYXBzaWJsZUNvbnRlbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNDAudXNlWzFdIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29sbGFwc2libGVDb250ZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9Db2xsYXBzaWJsZUNvbnRlbnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc4YTdmMTI3JnNjb3BlZD10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ29sbGFwc2libGVDb250ZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9Db2xsYXBzaWJsZUNvbnRlbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vQ29sbGFwc2libGVDb250ZW50LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTc4YTdmMTI3JnByb2QmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjc4YTdmMTI3XCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpe3ZhciBfdm09dGhpcyxfYz1fdm0uX3NlbGYuX2M7cmV0dXJuIF9jKCdkaXYnLFtfYygnY29sbGFwc2libGUtY29udGVudCcse3N0YXRpY0NsYXNzOlwibWItM1wiLGF0dHJzOntcImV4cGFuZGVkXCI6X3ZtLmZvcm1FeHBhbmRlZH0sb246e1widXBkYXRlOmV4cGFuZGVkXCI6ZnVuY3Rpb24oJGV2ZW50KXtfdm0uZm9ybUV4cGFuZGVkID0gIV92bS5mb3JtRXhwYW5kZWR9fSxzY29wZWRTbG90czpfdm0uX3UoW3trZXk6XCJjb2xsYXBzZWRDb250ZW50XCIsZm46ZnVuY3Rpb24oKXtyZXR1cm4gW19jKCdoMicse3N0YXRpY0NsYXNzOlwiaDQgbWItMFwifSxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJhZG1pbi5zdGF0aXN0aWNzLmNvbmZpZ3VyZV9ncmFwaFwiKSkpXSldfSxwcm94eTp0cnVlfSx7a2V5OlwiZXhwYW5kZWRDb250ZW50XCIsZm46ZnVuY3Rpb24oKXtyZXR1cm4gW19jKCdkYXRlLXBlcmlvZC1zZWxlY3Rvcicse3N0YXRpY0NsYXNzOlwibXQtM1wiLGF0dHJzOntcImZyb21EYXRlXCI6X3ZtLiRyb3V0ZS5xdWVyeS5mcm9tLFwidG9EYXRlXCI6X3ZtLiRyb3V0ZS5xdWVyeS50byxcImFsbG93ZWRJbnRlcnZhbHNcIjpbJ2RheScsICd3ZWVrJywgJ21vbnRoJ10sXCJkZWZhdWx0SW50ZXJ2YWxcIjond2VlaycsXCJwZXJpb2RMZW5ndGhMaW1pdHNcIjpfdm0ucGVyaW9kTGVuZ3RoTGltaXRzLFwiZnVsbFdpZHRoQnV0dG9uc1wiOnRydWUsXCJlbmFibGVPdXRwdXRTZWxlY3Rpb25cIjp0cnVlLFwib3V0cHV0VHlwZVwiOl92bS5vdXRwdXRUeXBlLFwib3V0cHV0U2VwYXJhdG9yXCI6X3ZtLm91dHB1dFNlcGFyYXRvcixcInNob3dTdWJtaXRCdXR0b25cIjp0cnVlLFwic3VibWl0QnV0dG9uVGV4dFwiOl92bS5zdWJtaXRCdXR0b25UZXh0LFwic3VibWl0QnV0dG9uU3Bpbm5lclwiOl92bS5pc1Byb2Nlc3NpbmdSZXF1ZXN0LFwic3VibWl0QnV0dG9uRGlzYWJsZWRcIjooKCFfdm0uZGF0ZXMuZnJvbSB8fCAhX3ZtLmRhdGVzLnRvKSAmJiBfdm0uaW50ZXJ2YWwgIT09ICdtb250aCcpIHx8IF92bS5pc1Byb2Nlc3NpbmdSZXF1ZXN0fSxvbjp7XCJ1cGRhdGU6b3V0cHV0VHlwZVwiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLm91dHB1dFR5cGU9JGV2ZW50fSxcInVwZGF0ZTpvdXRwdXQtdHlwZVwiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLm91dHB1dFR5cGU9JGV2ZW50fSxcInVwZGF0ZTpvdXRwdXRTZXBhcmF0b3JcIjpmdW5jdGlvbigkZXZlbnQpe192bS5vdXRwdXRTZXBhcmF0b3I9JGV2ZW50fSxcInVwZGF0ZTpvdXRwdXQtc2VwYXJhdG9yXCI6ZnVuY3Rpb24oJGV2ZW50KXtfdm0ub3V0cHV0U2VwYXJhdG9yPSRldmVudH0sXCJkYXRlLWNoYW5nZWRcIjooZGF0ZXMpID0+IF92bS5zZXREYXRlcyhkYXRlcyksXCJpbnRlcnZhbC1jaGFuZ2VkXCI6KGludGVydmFsKSA9PiBfdm0uc2V0SW50ZXJ2YWwoaW50ZXJ2YWwpLFwicGVyaW9kLXN1Ym1pdFwiOl92bS5nZXREYXRhfSxzY29wZWRTbG90czpfdm0uX3UoW3trZXk6XCJjdXN0b21Db250cm9sc1wiLGZuOmZ1bmN0aW9uKCl7cmV0dXJuIFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb2wtMTJcIn0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbXQtMVwifSxbX2MoJ2lucHV0Jyx7ZGlyZWN0aXZlczpbe25hbWU6XCJtb2RlbFwiLHJhd05hbWU6XCJ2LW1vZGVsXCIsdmFsdWU6KF92bS5jb21iaW5lU3BsaXRPcmRlcnMpLGV4cHJlc3Npb246XCJjb21iaW5lU3BsaXRPcmRlcnNcIn1dLHN0YXRpY0NsYXNzOlwiZm9ybS1jaGVjay1pbnB1dFwiLGF0dHJzOntcInR5cGVcIjpcImNoZWNrYm94XCIsXCJpZFwiOlwiY29tYmluZVNwbGl0T3J
2kZXJzQ2hlY2tib3hcIn0sZG9tUHJvcHM6e1wiY2hlY2tlZFwiOkFycmF5LmlzQXJyYXkoX3ZtLmNvbWJpbmVTcGxpdE9yZGVycyk/X3ZtLl9pKF92bS5jb21iaW5lU3BsaXRPcmRlcnMsbnVsbCk+LTE6KF92bS5jb21iaW5lU3BsaXRPcmRlcnMpfSxvbjp7XCJjaGFuZ2VcIjpmdW5jdGlvbigkZXZlbnQpe3ZhciAkJGE9X3ZtLmNvbWJpbmVTcGxpdE9yZGVycywkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8odHJ1ZSk6KGZhbHNlKTtpZihBcnJheS5pc0FycmF5KCQkYSkpe3ZhciAkJHY9bnVsbCwkJGk9X3ZtLl9pKCQkYSwkJHYpO2lmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJihfdm0uY29tYmluZVNwbGl0T3JkZXJzPSQkYS5jb25jYXQoWyQkdl0pKX1lbHNleyQkaT4tMSYmKF92bS5jb21iaW5lU3BsaXRPcmRlcnM9JCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSkpfX1lbHNle192bS5jb21iaW5lU3BsaXRPcmRlcnM9JCRjfX19fSksX2MoJ2xhYmVsJyx7c3RhdGljQ2xhc3M6XCJmb3JtLWNoZWNrLWxhYmVsXCIsYXR0cnM6e1wiZm9yXCI6XCJjb21iaW5lU3BsaXRPcmRlcnNDaGVja2JveFwifX0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uc3RhdGlzdGljcy5vcmRlcnMuYXZlcmFnZV9vcmRlcl90b3RhbC5jb21iaW5lX3NwbGl0X29yZGVyc1wiKSkrXCIgXCIpXSldKV0pXX0scHJveHk6dHJ1ZX1dKX0pXX0scHJveHk6dHJ1ZX1dKX0pLChfdm0uY2hhcnRTZXJpZXMpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImJnLXdoaXRlXCJ9LFtfYygnaDInLHtzdGF0aWNDbGFzczpcImg0IG1iLTNcIn0sW192bS5fdihfdm0uX3MoX3ZtLmdldFBlcmlvZFRleHQoKSkpXSksX2MoJ2FwZXhjaGFydCcse2F0dHJzOntcInR5cGVcIjpcImJhclwiLFwiaGVpZ2h0XCI6NjAwLFwib3B0aW9uc1wiOl92bS5jaGFydE9wdGlvbnMsXCJzZXJpZXNcIjpfdm0uY2hhcnRTZXJpZXN9fSldLDEpOl92bS5fZSgpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcImFsZXJ0IGFsZXJ0LWluZm8gc21hbGwgcHktMSBweC0yXCJ9LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS4kdChcImFkbWluLnN0YXRpc3RpY3Mub3JkZXJzLmF2ZXJhZ2Vfb3JkZXJfdG90YWwuc3BsaXRfb3JkZXJfcmVtaW5kZXJcIikpK1wiIFwiKV0pXSwxKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCI8dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPGNvbGxhcHNpYmxlLWNvbnRlbnQgOmV4cGFuZGVkPVwiZm9ybUV4cGFuZGVkXCIgQHVwZGF0ZTpleHBhbmRlZD1cImZvcm1FeHBhbmRlZCA9ICFmb3JtRXhwYW5kZWRcIiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSAjY29sbGFwc2VkQ29udGVudD5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJoNCBtYi0wXCI+e3sgJHQoXCJhZG1pbi5zdGF0aXN0aWNzLmNvbmZpZ3VyZV9ncmFwaFwiKSB9fTwvaDI+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgPHRlbXBsYXRlICNleHBhbmRlZENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRhdGUtcGVyaW9kLXNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIDpmcm9tRGF0ZT1cIiRyb3V0ZS5xdWVyeS5mcm9tXCJcbiAgICAgICAgICAgICAgICAgICAgOnRvRGF0ZT1cIiRyb3V0ZS5xdWVyeS50b1wiXG4gICAgICAgICAgICAgICAgICAgIDphbGxvd2VkSW50ZXJ2YWxzPVwiWydkYXknLCAnd2VlaycsICdtb250aCddXCJcbiAgICAgICAgICAgICAgICAgICAgOmRlZmF1bHRJbnRlcnZhbD1cIid3ZWVrJ1wiXG4gICAgICAgICAgICAgICAgICAgIDpwZXJpb2RMZW5ndGhMaW1pdHM9XCJwZXJpb2RMZW5ndGhMaW1pdHNcIlxuICAgICAgICAgICAgICAgICAgICA6ZnVsbFdpZHRoQnV0dG9ucz1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA6ZW5hYmxlT3V0cHV0U2VsZWN0aW9uPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIDpvdXRwdXRUeXBlLnN5bmM9XCJvdXRwdXRUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgOm91dHB1dFNlcGFyYXRvci5zeW5jPVwib3V0cHV0U2VwYXJhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgOnNob3dTdWJtaXRCdXR0b249XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgOnN1Ym1pdEJ1dHRvblRleHQ9XCJzdWJtaXRCdXR0b25UZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgOnN1Ym1pdEJ1dHRvblNwaW5uZXI9XCJpc1Byb2Nlc3NpbmdSZXF1ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgOnN1Ym1pdEJ1dHRvbkRpc2FibGVkPVwiKCghZGF0ZXMuZnJvbSB8fCAhZGF0ZXMudG8pICYmIGludGVydmFsICE9PSAnbW9udGgnKSB8fCBpc1Byb2Nlc3NpbmdSZXF1ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgQGRhdGUtY2hhbmdlZD1cIihkYXRlcykgPT4gc2V0RGF0ZXMoZGF0ZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgQGludGVydmFsLWNoYW5nZWQ9XCIoaW50ZXJ2YWwpID0+IHNldEludGVydmFsKGludGVydmFsKVwiXG4gICAgICAgICAgICAgICAgICAgIEBwZXJpb2Qtc3VibWl0PVwiZ2V0RGF0YVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtM1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgI2N1c3RvbUNvbnRyb2xzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tYmluZVNwbGl0T3JkZXJzQ2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImNvbWJpbmVTcGxpdE9yZGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJjb21iaW5lU3BsaXRPcmRlcnNDaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoXCJhZG1pbi5zdGF0aXN0aWNzLm9yZGVycy5hdmVyYWdlX29yZGVyX3RvdGFsLmNvbWJpbmVfc3BsaXRfb3JkZXJzXCIpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2RhdGUtcGVyaW9kLXNlbGVjdG9yPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9jb2xsYXBzaWJsZS1jb250ZW50PlxuXG4gICAgICAgIDxkaXYgdi1pZj1cImNoYXJ0U2VyaWVzXCIgY2xhc3M9XCJiZy13aGl0ZVwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwiaDQgbWItM1wiPnt7IGdldFBlcmlvZFRleHQoKSB9fTwvaDI+XG4gICAgICAgICAgICA8YXBleGNoYXJ0IHR5cGU9XCJiYXJcIiA6aGVpZ2h0PVwiNjAwXCIgOm9wdGlvbnM9XCJjaGFydE9wdGlvbnNcIiA6c2VyaWVzPVwiY2hhcnRTZXJpZXNcIj48L2FwZXhjaGFydD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm8gc21hbGwgcHktMSBweC0yXCI+XG4gICAgICAgICAgICB7eyAkdChcImFkbWluLnN0YXRpc3RpY3Mub3JkZXJzLmF2ZXJhZ2Vfb3JkZXJfdG90YWwuc3BsaXRfb3JkZXJfcmVtaW5kZXJcIikgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGZvcm1hdHRlciBmcm9tIFwiQC9taXhpbnMvRm9ybWF0dGVyLmpzXCJcbmltcG9ydCBBZG1pbkZvcm1QYWdlSGVscGVycyBmcm9tIFwiQC9taXhpbnMvQWRtaW5Gb3JtUGFnZUhlbHBlcnNcIlxuaW1wb3J0IHtcbiAgICBnZXRNaWRkbGVPZlRpbWVGcm9tU3RyaW5nLFxuICAgIGdldFhBeGlzRGVmYXVsdE9wdGlvbnMsXG4gICAgZ2V0SW50ZXJ2YWxUb29sdGlwRm9ybWF0dGVyLFxuICAgIGdldEludGVydmFsTGFiZWxGcm9tVGltZVN0cmluZyxcbn0gZnJvbSBcIkAvaGVscGVycy9HcmFwaGluZ0hlbHBlcnMuanNcIlxuaW1wb3J0IFBlcmlvZFN0YXRpc3RpYyBmcm9tIFwiQC9taXhpbnMvUGVyaW9kU3RhdGlzdGljLmpzXCJcbmltcG9ydCBEYXRlUGVyaW9kU2VsZWN0b3IgZnJvbSBcIkAvY29tcG9uZW50cy9hZG1pbi9zdGF0aXN0aWNzL0RhdGVQZXJpb2RTZWxlY3Rvci52dWVcIlxuaW1wb3J0IEFkbWluU3Bpbm5lckJ1dHRvbiBmcm9tIFwiQC9jb21wb25lbnRzL2FkbWluL0FkbWluU3Bpbm5lckJ1dHRvbi52dWVcIlxuaW1wb3J0IENvbGxhcHNpYmxlQ29udGVudCBmcm9tIFwiQC9jb21wb25lbnRzL2FkbWluL21pbm9yL0NvbGxhcHNpYmxlQ29udGVudC52dWVcIlxuaW1wb3J0IHsgZG93bmxvYWRTdGF0aXN0aWNzRmlsZSB9IGZyb20gXCJAL2hlbHBlcnMvU3RhdGlzdGljc091dHB1dEhlbHBlcnMuanNcIlxuaW1wb3J0IFN0YXRpc3RpY3NPdXRwdXRNaXhpbiBmcm9tIFwiQC9taXhpbnMvU3RhdGlzdGljc091dHB1dE1peGluLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWU6IFwiQXZlcmFnZU9yZGVyVG90YWxQZXJJbnRlcnZhbFwiLFxuICAgIG1peGluczogW2Zvcm1hdHRlciwgQWRtaW5Gb3JtUGFnZUhlbHBlcnMsIFBlcmlvZFN0YXRpc3RpYywgU3RhdGlzdGljc091dHB1dE1peGluXSxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIERhdGVQZXJpb2RTZWxlY3RvcixcbiAgICAgICAgQWRtaW5TcGlubmVyQnV0dG9uLFxuICAgICAgICBDb2xsYXBzaWJsZUNvbnRlbnQsXG4gICAgfSxcblxuICAgIGRhdGEoKSB7XG4gICAgICAgI
2HJldHVybiB7XG4gICAgICAgICAgICBpc1Byb2Nlc3NpbmdSZXF1ZXN0OiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IGZhbHNlLFxuICAgICAgICAgICAgY29tYmluZVNwbGl0T3JkZXJzOiB0cnVlLFxuICAgICAgICAgICAgY2hhcnRTZXJpZXM6IGZhbHNlLFxuICAgICAgICAgICAgY2hhcnRPcHRpb25zOiB7fSxcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBwZXJpb2RMZW5ndGhMaW1pdHMoKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuaW50ZXJ2YWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZGF5XCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG1pbjogNywgbWF4OiAxMDAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJ3ZWVrXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG1pbjogMzAsIG1heDogMzY1IH1cbiAgICAgICAgICAgICAgICBjYXNlIFwibW9udGhcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbWluOiA5MCwgbWF4OiBudWxsIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBtaW46IDEsIG1heDogMzY1IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBnZXREYXRhKG91dHB1dFNlbGVjdGlvbiA9IHRoaXMuZ2V0T3V0cHV0U2VsZWN0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nUmVxdWVzdCA9IHRydWVcblxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIHN0YXJ0X2RhdGU6IHRoaXMuZGF0ZXMuZnJvbSxcbiAgICAgICAgICAgICAgICBlbmRfZGF0ZTogdGhpcy5kYXRlcy50byxcbiAgICAgICAgICAgICAgICBpbnRlcnZhbDogdGhpcy5pbnRlcnZhbCxcbiAgICAgICAgICAgICAgICBjb21iaW5lX3NwbGl0X29yZGVyczogK3RoaXMuY29tYmluZVNwbGl0T3JkZXJzLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ID1cbiAgICAgICAgICAgICAgICB0aGlzLm91dHB1dFR5cGUgPT09IFwiZ3JhcGhcIlxuICAgICAgICAgICAgICAgICAgICA/IGF4aW9zLmdldChcInN0YXRpc3RpY3Mvb3JkZXJzL2F2ZXJhZ2Utb3JkZXItdG90YWwtcGVyLWludGVydmFsXCIsIHsgcGFyYW1zIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhLmRhdGFcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlUXVlcnkgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zUGVyaW9kKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJ2YWxRdWVyeSA9IHRoaXMuZ2V0UXVlcnlQYXJhbXNJbnRlcnZhbCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGxpdE9yZGVyc1F1ZXJ5ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZV9zcGxpdF9vcmRlcnM6IHRoaXMuY29tYmluZVNwbGl0T3JkZXJzID8gXCIxXCIgOiBcIjBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zSWZDaGFuZ2VkKE9iamVjdC5hc3NpZ24oe30sIGRhdGVRdWVyeSwgaW50ZXJ2YWxRdWVyeSwgc3BsaXRPcmRlcnNRdWVyeSkpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSByZXNwb25zZS5kYXRhLmludGVydmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBpbnRlcnZhbFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd3NCeVRpbWVzdGFtcCA9IHt9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnVpbGQgY2hhcnQgc2VyaWVzOiBvbmx5IG9uZSBzZXJpZXMsIHdpdGggeCA9IGRhdGUvd2VlaywgeSA9IGF2ZXJhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFydFNlcmllcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLiR0KFwiYWRtaW4uc3RhdGlzdGljcy5vcmRlcnMuYXZlcmFnZV9v
2cmRlcl90b3RhbC5zZXJpZXNfbmFtZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLm1hcCgoZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4VmFsdWUgPSBnZXRNaWRkbGVPZlRpbWVGcm9tU3RyaW5nKGRbaW50ZXJ2YWxdLCBpbnRlcnZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c0J5VGltZXN0YW1wW25ldyBEYXRlKHhWYWx1ZSkuZ2V0VGltZSgpXSA9IGRbaW50ZXJ2YWxdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHhWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGQuYXZlcmFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZVNlcmllcyA9IGRhdGFcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldFhBeGlzRGVmYXVsdE9wdGlvbnModGhpcy5pbnRlcnZhbCwgcmVmZXJlbmNlU2VyaWVzLCB0aGlzLmludGVydmFsKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9udGFsT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJiYXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2VkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TW91c2VXaGVlbFpvb206IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWF4aXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiAodmFsKSA9PiB0aGlzLmZvcm1hdFByaWNlKHZhbCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLiR0KFwiYWRtaW4uc3RhdGlzdGljcy5vcmRlcnMuYXZlcmFnZV9v
2cmRlcl90b3RhbFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Zvcm1hdHRlcjogKHZhbCkgPT4gdGhpcy5mb3JtYXRQcmljZSh2YWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogKHZhbCkgPT4gZ2V0SW50ZXJ2YWxUb29sdGlwRm9ybWF0dGVyKHRoaXMuaW50ZXJ2YWwpKHZhbCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogKHZhbCkgPT4gdGhpcy5mb3JtYXRQcmljZSh2YWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tOiAoeyBkYXRhUG9pbnRJbmRleCwgdyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gdy5jb25maWcuc2VyaWVzWzBdLmRhdGFbZGF0YVBvaW50SW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcmlvZFZhbHVlID0gcm93c0J5VGltZXN0YW1wW25ldyBEYXRlKHBvaW50LngpLmdldFRpbWUoKV1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBlcmlvZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB5LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBtYi0xXCI+JHtnZXRJbnRlcnZhbExhYmVsRnJvbVRpbWVTdHJpbmcocGVyaW9kVmFsdWUsIGludGVydmFsKX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiR7dGhpcy4kdChcImFkbWluLnN0YXRpc3RpY3Mub3JkZXJzLmF2ZXJhZ2Vfb3JkZXJfdG90YWwuc2VyaWVzX25hbWVcIil9OiAke3RoaXMuZm9ybWF0UHJpY2UocG9pbnQueSl9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFydE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHRpb25zLCBhZGRpdGlvbnRhbE9wdGlvbnMpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtRXhwYW5kZWQgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIDogZG93bmxvYWRTdGF0aXN0aWNzRmlsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJzdGF0aXN0aWNzL29yZGVycy9hdmVyYWdlLW9yZGVyLXRvdGFsLXBlci1pbnRlcnZhbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiYXZlcmFnZV9vcmRlcl90b3RhbF9wZXJfXCIgKyB0aGlzLmludGVydmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRTZWxlY3Rpb24ub3V0cHV0VHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0U2VsZWN0aW9uLnNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGFuZ2VyTm90aWZ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkZhaWxlZCB0byBnZW5lcmF0ZSBzdGF0aXN0aWNzOiBcIiArIChlcnJvcj8ucmVzcG9uc2U/LmRhdGE/Lm1lc3NhZ2UgfHwgZXJyb3IubWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ1JlcXVlc3QgPSBmYWxzZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGNyZWF0ZWQoKSB7XG4gICAgICAgIC8vIE9wdGlvbmFsbHksIGZldGNoIGluaXRpYWwgZGF0YSBpZiBuZWVkZWRcbiAgICB9LFxuXG4gICAgbW91bnRlZCgpIHtcbiAgICAgICAgaWYgKFwiY29tYmluZV9zcGxpdF9vcmRlcnNcIiBpbiB0aGlzLiRyb3V0ZS5xdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5jb21iaW5lU3BsaXRPcmRlcnMgPSBbXCIxXCIsIFwidHJ1ZVwiLCB0cnVlXS5pbmNsdWRlcyh0aGlzLiRyb3V0ZS5xdWVyeS5jb21iaW5lX3NwbGl0X29yZGVycylcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ2V0RGF0YUlmRGF0ZXNTZXRBbmRDb25kaXRpb25zTWV0KHRoaXMuZ2V0RGF0YSwgdGhpcy5pbnRlcnZhbCAhPSBudWxsKVxuICAgIH0sXG59XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0F2ZXJhZ2VPcmRlclRvdGFsUGVySW50ZXJ2YWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNDAudXNlWzFdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXZlcmFnZU9yZGVyVG90YWxQZXJJbnRlcnZhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIiIsImltcG9ydCB7
2IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQXZlcmFnZU9yZGVyVG90YWxQZXJJbnRlcnZhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDM4NjUwNDYmc2NvcGVkPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BdmVyYWdlT3JkZXJUb3RhbFBlckludGVydmFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BdmVyYWdlT3JkZXJUb3RhbFBlckludGVydmFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI0Mzg2NTA0NlwiLFxuICBudWxsXG4gIFxuKVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBzZXRIb3Vyc1xuICogQGNhdGVnb3J5IEhvdXIgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgaG91cnMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gaG91cnMgLSBUaGUgaG91cnMgb2YgdGhlIG5ldyBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGhvdXJzIHNldFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgNCBob3VycyB0byAxIFNlcHRlbWJlciAyMDE0IDExOjMwOjAwOlxuICogY29uc3QgcmVzdWx0ID0gc2V0SG91cnMobmV3IERhdGUoMjAxNCwgOCwgMSwgMTEsIDMwKSwgNClcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDA0OjMwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRIb3VycyhkYXRlLCBob3Vycykge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcbiAgX2RhdGUuc2V0SG91cnMoaG91cnMpO1xuICByZXR1cm4gX2RhdGU7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc2V0SG91cnM7XG4iLCJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5tanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5tanNcIjtcblxuLyoqXG4gKiBAbmFtZSBzZXRZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBTZXQgdGhlIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZXQgdGhlIHllYXIgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0geWVhciAtIFRoZSB5ZWFyIG9mIHRoZSBuZXcgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSB5ZWFyIHNldFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTZXQgeWVhciAyMDEzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRZZWFyKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAyMDEzKVxuICogLy89PiBTdW4gU2VwIDAxIDIwMTMgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFllYXIoZGF0ZSwgeWVhcikge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlKTtcblxuICAvLyBDaGVjayBpZiBkYXRlIGlzIEludmFsaWQgRGF0ZSBiZWNhdXNlIERhdGUucHJvdG90eXBlLnNldEZ1bGxZZWFyIGlnbm9yZXMgdGhlIHZhbHVlIG9mIEludmFsaWQgRGF0ZVxuICBpZiAoaXNOYU4oK19kYXRlKSkge1xuICAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKGRhdGUsIE5hTik7XG4gIH1cblxuICBfZGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHNldFllYXI7XG4iLCJpbXBvcnQgeyBzZXRIb3VycywgYWRkRGF5cywgc2V0SVNPV2Vlaywgc3RhcnRPZklTT1dlZWssIGdldElTT1dlZWssIHNldFllYXIgfSBmcm9tIFwiZGF0ZS1mbnNcIlxuaW1wb3J0ICRzdG9yZSBmcm9tIFwiQC9zdG9yZS9pbmRleC5qc1wiXG5pbXBvcnQgeyBpMThuIH0gZnJvbSBcIkAvaTE4bi1zZXR1cC5qc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPbWl0dGVkSG91ckdhcHModmFsdWVzLCB0aW1lc3RhbXAgPSBmYWxzZSkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBbLi4ubmV3IFNldCh2YWx1ZXMpXS5zb3J0KChsZWZ0LCByaWdodCkgPT5cbiAgICAgICAgdGltZXN0YW1wID8gRGF0ZS5wYXJzZShsZWZ0KSAtIERhdGUucGFyc2UocmlnaHQpIDogTnVtYmVyKGxlZnQpIC0gTnVtYmVyKHJpZ2h0KVxuICAgIClcbiAgICBjb25zdCBnYXBzID0gW11cbiAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgZW50cmllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBlbnRyaWVzW2luZGV4IC0gMV1cbiAgICAgICAgY29uc3QgbmV4dCA9IGVudHJpZXNbaW5kZXhdXG4gICAgICAgIGNvbnN0IGRpc3R
2hbmNlID0gdGltZXN0YW1wXG4gICAgICAgICAgICA/IChEYXRlLnBhcnNlKG5leHQpIC0gRGF0ZS5wYXJzZShwcmV2aW91cykpIC8gMzYwMDAwMFxuICAgICAgICAgICAgOiBOdW1iZXIobmV4dCkgLSBOdW1iZXIocHJldmlvdXMpXG4gICAgICAgIGlmIChkaXN0YW5jZSA+IDEpIHtcbiAgICAgICAgICAgIGdhcHMucHVzaCh7IHByZXZpb3VzLCBuZXh0LCBjb3VudDogTWF0aC5mbG9vcihkaXN0YW5jZSkgLSAxIH0pXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGdhcHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE9taXR0ZWRIb3VyR2FwKGdhcCwgdGltZXN0YW1wID0gZmFsc2UpIHtcbiAgICBjb25zdCBjbG9jayA9IChob3VyKSA9PiBTdHJpbmcoaG91cikucGFkU3RhcnQoMiwgXCIwXCIpICsgXCI6MDBcIlxuICAgIGlmICh0aW1lc3RhbXApIHtcbiAgICAgICAgcmV0dXJuIGdhcC5wcmV2aW91cy5zbGljZSgwLCAxNikucmVwbGFjZShcIlRcIiwgXCIgXCIpICsgXCIgLyBcIiArIGdhcC5uZXh0LnNsaWNlKDAsIDE2KS5yZXBsYWNlKFwiVFwiLCBcIiBcIilcbiAgICB9XG4gICAgcmV0dXJuIGNsb2NrKE51bWJlcihnYXAucHJldmlvdXMpICsgMSkgKyBcIiAtIFwiICsgY2xvY2soTnVtYmVyKGdhcC5uZXh0KSAtIDEpXG59XG5cbi8vIE9uZSBjYW4gcHJvYmFibHkgc29tZWhvdyBpbXBvcnQgdGhlc2UgZnJvbSBfc3RhbmRhcmQuc2NzcywgYnV0IEkgY2FuJ3QgYmUgYm90aGVyZWRcbi8vIEZvciBiZXR0ZXIgZWFzZSBvZiBtYWludGVuYW5jZSwgaGVyZSdzIGEgbWFwIGZyb20gY29sb3VyIG5hbWVzIHRvIGhleCB2YWx1ZXNcbmV4cG9ydCBjb25zdCBjb2xvdXJOYW1lc1RvSGV4ID0ge1xuICAgIFwiYmx1ZS0xXCI6IFwiIzM0OThkYlwiLFxuICAgIFwieWVsbG93LTFcIjogXCIjZjFjNDBmXCIsXG4gICAgXCJncmVlbi0xXCI6IFwiIzJlY2M3MVwiLFxuICAgIFwicmVkLTFcIjogXCIjZTc0YzNjXCIsXG4gICAgXCJ0dXJxdW9pc2UtMVwiOiBcIiMxYWJjOWNcIixcbiAgICBcIm9yYW5nZS0xXCI6IFwiI2U2N2UyMlwiLFxuICAgIFwicHVycGxlLTFcIjogXCIjOWI1OWI2XCIsXG4gICAgcGluazogXCIjZjM0NjZlXCIsXG4gICAgXCJ5ZWxsb3ctZ3JlZW5cIjogXCIjOWFjZDQzXCIsXG4gICAgY3lhbjogXCIjNDBjNmQxXCIsXG4gICAgc2FuZDogXCIjZDVhNTNiXCIsXG4gICAgYnJvd246IFwiI2FjN2QzYlwiLFxuICAgIFwiZ3JleS0xXCI6IFwiIzk1YTVhNlwiLFxuICAgIFwiZGFyay0xXCI6IFwiIzM0NDk1ZVwiLFxuICAgIFwibGlnaHQtMVwiOiBcIiNlY2YwZjFcIixcbn1cblxuLy8gS2VlcCBjaGFydENvbG91cnMgYXMgYW4gYXJyYXkgZm9yIGNvbXBhdGliaWxpdHksIHVzaW5nIHRoZSBvcmRlciBhYm92ZVxuZXhwb3J0IGNvbnN0IGNoYXJ0Q29sb3VycyA9IFtcbiAgICBjb2xvdXJOYW1lc1RvSGV4W1wiYmx1ZS0xXCJdLFxuICAgIGNvbG91ck5hbWVzVG9IZXhbXCJ5ZWxsb3ctMVwiXSxcbiAgICBjb2xvdXJOYW1lc1RvSGV4W1wiZ3JlZW4tMVwiXSxcbiAgICBjb2xvdXJOYW1lc1RvSGV4W1wicmVkLTFcIl0sXG4gICAgY29sb3VyTmFtZXNUb0hleFtcInR1cnF1b2lzZS0xXCJdLFxuICAgIGNvbG91ck5hbWVzVG9IZXhbXCJvcmFuZ2UtMVwiXSxcbiAgICBjb2xvdXJOYW1lc1RvSGV4W1wicHVycGxlLTFcIl0sXG4gICAgY29sb3VyTmFtZXNUb0hleFtcInBpbmtcIl0sXG4gICAgY29sb3VyTmFtZXNUb0hleFtcInllbGxvdy1ncmVlblwiXSxcbiAgICBjb2xvdXJOYW1lc1RvSGV4W1wiY3lhblwiXSxcbiAgICBjb2xvdXJOYW1lc1RvSGV4W1wic2FuZFwiXSxcbiAgICBjb2xvdXJOYW1lc1RvSGV4W1wiYnJvd25cIl0sXG4gICAgY29sb3VyTmFtZXNUb0hleFtcImdyZXktMVwiXSxcbiAgICBjb2xvdXJOYW1lc1RvSGV4W1wiZGFyay0xXCJdLFxuICAgIGNvbG91ck5hbWVzVG9IZXhbXCJsaWdodC0xXCJdLFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0WEF4aXNEZWZhdWx0T3B0aW9ucyhpbnRlcnZhbCwgZGF0YSwgdGltZVByb3BlcnR5KSB7XG4gICAgY29uc3QgbWFrZUxhYmVsID0gKHRleHQpID0+ICh7XG4gICAgICAgIHRleHRBbmNob3I6IFwic3RhcnRcIixcbiAgICAgICAgb3JpZW50YXRpb246IFwiaG9yaXpvbnRhbFwiLFxuICAgICAgICBib3JkZXJXaWR0aDogMCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IFwiIzdmOGM4ZFwiLFxuICAgICAgICAgICAgY29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICB9LFxuICAgICAgICB0ZXh0LFxuICAgIH0pXG5cbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICBjaGFydDoge1xuICAgICAgICAgICAgLy9zdGFja2VkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgeGF4aXM6IHtcbiAgICAgICAgICAgIG1pbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbWF4OiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzdGVwU2l6ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVyOiBnZXRYQXhpc0Zvcm1hdHRlcihpbnRlcnZhbCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH1cblxuICAgIGlmIChbXCJkYXlcIiwgXCJ3ZWVrXCIsIFwibW9udGhcIiwgXCJ5ZWFyXCJdLmluY2x1ZGVzKGludGVydmFsKSkge1xuICAgICAgICBvcHRpb25zLnhheGlzLnR5cGUgPSBcImRhdGV0aW1lXCJcbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgb3B0aW9ucy54YXhpcy50aWNrQW1vdW50ID0gZGF0YS5sZW5ndGggLSAxIC8vIElNUFRPRE86IEZpeCBidWcgb2YgbWlzc2luZyBmaW5hbCB0aWNrXG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zLmNoYXJ0Lnpvb20gPSB7XG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgYWxsb3dNb3VzZVdoZWVsWm9vbTogZmFsc2UsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW50ZXJ2YWwgPT09IFwiZGF5XCIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMueGF4aXMuc3RlcFNpemUgPSA4NjQwMDAwMFxuXG4gICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy54YXhpcy5taW4gPSBnZXRNaWRkbGVPZkRheUZyb21TdHJpbmdEYXRlKGRhdGFbMF1bdGltZVByb3BlcnR5XSlcbiAgICAgICAgICAgICAgICBvcHRpb25zLnhheGlzLm1heCA9IGdldE1pZGRsZU9mRGF5RnJvbVN0cmluZ0RhdGUoZGF0YVtkYXRhLmxlbmd0aCAtIDFdW3RpbWVQcm9wZXJ0eV0pXG4gICAgICAgICAgICB9XG4gICAgICAgI
2H0gZWxzZSBpZiAoaW50ZXJ2YWwgPT09IFwid2Vla1wiKSB7XG4gICAgICAgICAgICBvcHRpb25zLnhheGlzLnN0ZXBTaXplID0gNyAqIDg2NDAwMDAwXG5cbiAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnhheGlzLm1pbiA9IGdldE1pZGRsZU9mV2Vla0Zyb21TdHJpbmdXZWVrKGRhdGFbMF1bdGltZVByb3BlcnR5XSlcbiAgICAgICAgICAgICAgICBvcHRpb25zLnhheGlzLm1heCA9IGdldE1pZGRsZU9mV2Vla0Zyb21TdHJpbmdXZWVrKGRhdGFbZGF0YS5sZW5ndGggLSAxXVt0aW1lUHJvcGVydHldKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGludGVydmFsID09PSBcIm1vbnRoXCIpIHtcbiAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnhheGlzLm1pbiA9IGdldE1pZGRsZU9mTW9udGhGcm9tU3RyaW5nTW9udGgoZGF0YVswXVt0aW1lUHJvcGVydHldKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMueGF4aXMubWF4ID0gZ2V0TWlkZGxlT2ZNb250aEZyb21TdHJpbmdNb250aChkYXRhW2RhdGEubGVuZ3RoIC0gMV1bdGltZVByb3BlcnR5XSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpbnRlcnZhbCA9PT0gXCJ5ZWFyXCIpIHtcbiAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnhheGlzLm1pbiA9IGdldE1pZGRsZU9mWWVhckZyb21TdHJpbmdZZWFyKGRhdGFbMF1bdGltZVByb3BlcnR5XSlcbiAgICAgICAgICAgICAgICBvcHRpb25zLnhheGlzLm1heCA9IGdldE1pZGRsZU9mWWVhckZyb21TdHJpbmdZZWFyKGRhdGFbZGF0YS5sZW5ndGggLSAxXVt0aW1lUHJvcGVydHldKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFhBeGlzRm9ybWF0dGVyKGludGVydmFsKSB7XG4gICAgY29uc3QgbG9jYWxlID0gJHN0b3JlLmdldHRlcnMuY29tcGFueT8ubG9jYWxlXG5cbiAgICBzd2l0Y2ggKGludGVydmFsKSB7XG4gICAgICAgIGNhc2UgXCJkYXlcIjpcbiAgICAgICAgICAgIC8vIGRhdGVTdHlsZTogJ3Nob3J0J1xuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSkgPT4gbmV3IERhdGUodmFsdWUpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHsgZGF0ZVN0eWxlOiBcInNob3J0XCIgfSlcbiAgICAgICAgY2FzZSBcIndlZWtcIjpcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUpID0+IGdldElTT1dlZWsodmFsdWUpXG4gICAgICAgIGNhc2UgXCJtb250aFwiOlxuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSkgPT4gbmV3IERhdGUodmFsdWUpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHsgbW9udGg6IFwic2hvcnRcIiwgeWVhcjogXCJudW1lcmljXCIgfSlcbiAgICAgICAgY2FzZSBcInllYXJcIjpcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUpID0+IG5ldyBEYXRlKHZhbHVlKS5nZXRGdWxsWWVhcigpXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlKSA9PiB2YWx1ZVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVydmFsVG9vbHRpcEZvcm1hdHRlcihpbnRlcnZhbCkge1xuICAgIHN3aXRjaCAoaW50ZXJ2YWwpIHtcbiAgICAgICAgY2FzZSBcImRheVwiOlxuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSkgPT4gZ2V0WEF4aXNGb3JtYXR0ZXIoaW50ZXJ2YWwpKHZhbHVlKVxuICAgICAgICBjYXNlIFwid2Vla1wiOlxuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIGkxOG4udChcImdlbmVyYWwud2Vla1wiKSArXG4gICAgICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICAgICAgZ2V0WEF4aXNGb3JtYXR0ZXIoaW50ZXJ2YWwpKHZhbHVlKSArXG4gICAgICAgICAgICAgICAgICAgIFwiLCBcIiArXG4gICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKHZhbHVlKS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIFwibW9udGhcIjpcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUpID0+IGdldFhBeGlzRm9ybWF0dGVyKGludGVydmFsKSh2YWx1ZSlcbiAgICAgICAgY2FzZSBcInllYXJcIjpcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUpID0+IFN0cmluZyhnZXRYQXhpc0Zvcm1hdHRlcihpbnRlcnZhbCkodmFsdWUpKVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICh2YWx1ZSkgPT4gdmFsdWVcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcnZhbExhYmVsRnJvbVRpbWVTdHJpbmcodGltZVN0cmluZywgaW50ZXJ2YWwpIHtcbiAgICBjb25zdCBsb2NhbGUgPSAkc3RvcmUuZ2V0dGVycy5jb21wYW55Py5sb2NhbGVcblxuICAgI
2HN3aXRjaCAoaW50ZXJ2YWwpIHtcbiAgICAgICAgY2FzZSBcImRheVwiOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRpbWVTdHJpbmcpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHsgZGF0ZVN0eWxlOiBcIm1lZGl1bVwiIH0pXG4gICAgICAgIGNhc2UgXCJ3ZWVrXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IFt5ZWFyLCB3ZWVrXSA9IHRpbWVTdHJpbmcuc3BsaXQoXCItXCIpXG4gICAgICAgICAgICByZXR1cm4gYCR7aTE4bi50KFwiZ2VuZXJhbC53ZWVrXCIpfSAke3dlZWt9LCAke3llYXJ9YFxuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJtb250aFwiOiB7XG4gICAgICAgICAgICBjb25zdCBbeWVhciwgbW9udGhdID0gdGltZVN0cmluZy5zcGxpdChcIi1cIilcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShOdW1iZXIoeWVhciksIE51bWJlcihtb250aCkgLSAxLCAxKS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCB7XG4gICAgICAgICAgICAgICAgbW9udGg6IFwibG9uZ1wiLFxuICAgICAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwieWVhclwiOlxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh0aW1lU3RyaW5nKVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh0aW1lU3RyaW5nKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR1cm5vdmVyU2VyaWVzVHJhbnNsYXRpb25LZXkoc2VyaWVzS2V5LCBicmVha2Rvd24pIHtcbiAgICBpZiAoYnJlYWtkb3duID09PSBcInByb3ZpZGVyX2NoYW5uZWxcIikge1xuICAgICAgICByZXR1cm4gXCJvcmRlcnMuY2hhbm5lbHMuXCIgKyBzZXJpZXNLZXlcbiAgICB9XG5cbiAgICBpZiAoYnJlYWtkb3duID09PSBcInByb3ZpZGVyX2RlbGl2ZXJ5XCIpIHtcbiAgICAgICAgcmV0dXJuIFwiZGVsaXZlcnlfdHlwZXMuXCIgKyBzZXJpZXNLZXlcbiAgICB9XG5cbiAgICByZXR1cm4gXCJhZG1pbi5zdGF0aXN0aWNzLnR1cm5vdmVyX3R5cGVzLlwiICsgc2VyaWVzS2V5XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFR1cm5vdmVyVG9vbHRpcCh7IHRpdGxlLCBzZXJpZXMsIGNvbG9ycywgZm9ybWF0QW1vdW50LCB0b3RhbExhYmVsLCBhZGRpdGlvbmFsQ29udGVudCA9IFwiXCIgfSkge1xuICAgIGNvbnN0IHRvdGFsID0gc2VyaWVzLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBOdW1iZXIoaXRlbS52YWx1ZSB8fCAwKSwgMClcbiAgICBjb25zdCBmb3JtYXR0ZWRUb3RhbCA9IGZvcm1hdEFtb3VudCh0b3RhbClcblxuICAgIGxldCBodG1sID1cbiAgICAgICAgJzxkaXYgc3R5bGU9XCJtYXgtd2lkdGg6IDI4MHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsO1wiPicgK1xuICAgICAgICAnPGRpdiBjbGFzcz1cImFwZXhjaGFydHMtdG9vbHRpcC10aXRsZVwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vcm1hbDtcIj4nICtcbiAgICAgICAgdGl0bGUgK1xuICAgICAgICBcIjwvZGl2PlwiICtcbiAgICAgICAgYWRkaXRpb25hbENvbnRlbnQgK1xuICAgICAgICAnPHRhYmxlIHN0eWxlPVwid2lkdGg6MTAwJTsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO1wiPjx0Ym9keT4nXG5cbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgaXRlbV0gb2Ygc2VyaWVzLmVudHJpZXMoKSkge1xuICAgICAgICBodG1sICs9IGA8dHI+XG4gICAgICAgICAgICA8dGQgc3R5bGU9XCJwYWRkaW5nOiA0cHggOHB4OyB3aGl0ZS1zcGFjZTogbm93cmFwO1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6JHtjb2xvcnNbaW5kZXhdfTtcIj4mIzk2Nzk7PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxiPiR7aXRlbS5uYW1lfTwvYj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgc3R5bGU9XCJwYWRkaW5nOiA0cHggOHB4OyB0ZXh0LWFsaWduOiByaWdodDsgd2hpdGUtc3BhY2U6IG5vd3JhcDtcIj4ke2Zvcm1hdEFtb3VudChpdGVtLnZhbHVlKX08L3RkPlxuICAgICAgICA8L3RyPmBcbiAgICB9XG5cbiAgICBodG1sICs9IGA8dHI+XG4gICAgICAgIDx0ZCBzdHlsZT1cInBhZGRpbmc6IDZweCA4cHggNHB4IDhweDsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XCI+PGI+JHt0b3RhbExhYmVsfTwvYj48L3RkPlxuICAgICAgICA8dGQgc3R5bGU9XCJwYWRkaW5nOiA2cHggOHB4IDRweCA4cHg7IHRleHQtYWxpZ246IHJpZ2h0OyB3aGl0ZS1zcGFjZTogbm93cmFwOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyKTtcIj48Yj4ke2Zvcm1hdHRlZFRvdGFsfTwvYj48L3RkPlxuICAgIDwvdHI+YFxuXG4gICAgcmV0dXJuIGh0bWwgKyBcIjwvdGJvZHk+PC90YWJsZT48L2Rpdj5cIlxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWlkZGxlT2ZEYXlGcm9tU3RyaW5nRGF0ZShzdHJpbmdEYXRlKSB7XG4gICAgcmV0dXJuIHNldEhvdXJzKG5ldyBEYXRlKHN0cmluZ0RhdGUpLCAxMilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdlZWtJbnN0YW5jZUZyb21TdHJpbmdXZWVrKHN0cmluZ1dlZWspIHtcbiAgICBsZXQgW3llYXIsIHdlZWtdID0gc3RyaW5nV2Vlay5zcGxpdChcIi1cIilcbiAgICByZXR1cm4gc2V0SVNPV2VlayhzZXRZZWFyKG5ldyBEYXRlKCksIHllYXIpLCB3ZWVrKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWlkZGxlT2ZXZWVrRnJvbVN0cmluZ1dlZWsoc3RyaW5nV2Vlaykge1xuICAgIGxldCBtaWRkbGVPZldlZWsgPSBzZXRIb3VycyhhZGREYXlzKHN0YXJ0T2ZJU09XZWVrKGdldFdlZWtJbnN0YW5jZUZyb21TdHJpbmdXZWVrKHN0cmluZ1dlZWspKSwgMyksIDEyKVxuXG4gICAgcmV0dXJuIG1pZGRsZU9mV2Vla1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWlkZGxlT2ZNb250aEZyb21TdHJpbmdNb250aChzdHJpbmdNb250aCkge1xuICAgIGNvbnN0IFt5ZWFyLCBtb250aF0gPSBzdHJpbmdNb250aC5zcGxpdChcIi1cIilcbiAgICByZXR1cm4gbmV3IERhdGUoTnVtYmVyKHllYXIpLCBOdW1iZXIobW9udGgpIC0gMSwgMTUsIDEyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWlkZGxlT2ZZZWFyRnJvbVN0cmluZ1llYXIoc3RyaW5nWWVhcikge1xuICAgIHJldHVybi
2BuZXcgRGF0ZShOdW1iZXIoc3RyaW5nWWVhciksIDYsIDEsIDEyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWlkZGxlT2ZUaW1lRnJvbVN0cmluZyhzdHJpbmdUaW1lLCBpbnRlcnZhbCkge1xuICAgIGlmIChpbnRlcnZhbCA9PT0gXCJkYXlcIikge1xuICAgICAgICByZXR1cm4gZ2V0TWlkZGxlT2ZEYXlGcm9tU3RyaW5nRGF0ZShzdHJpbmdUaW1lKVxuICAgIH0gZWxzZSBpZiAoaW50ZXJ2YWwgPT09IFwid2Vla1wiKSB7XG4gICAgICAgIHJldHVybiBnZXRNaWRkbGVPZldlZWtGcm9tU3RyaW5nV2VlayhzdHJpbmdUaW1lKVxuICAgIH0gZWxzZSBpZiAoaW50ZXJ2YWwgPT09IFwibW9udGhcIikge1xuICAgICAgICByZXR1cm4gZ2V0TWlkZGxlT2ZNb250aEZyb21TdHJpbmdNb250aChzdHJpbmdUaW1lKVxuICAgIH0gZWxzZSBpZiAoaW50ZXJ2YWwgPT09IFwieWVhclwiKSB7XG4gICAgICAgIHJldHVybiBnZXRNaWRkbGVPZlllYXJGcm9tU3RyaW5nWWVhcihzdHJpbmdUaW1lKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJVbnN1cHBvcnRlZCBpbnRlcnZhbCBmb3IgZ2V0TWlkZGxlT2ZUaW1lRnJvbVN0cmluZzpcIiwgaW50ZXJ2YWwpXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShzdHJpbmdUaW1lKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3ZpZGVyU2VyaWVzS2V5VG9Db2xvdXJNYXAoc2VyaWVzS2V5cykge1xuICAgIGNvbnN0IGFsbFByZWRlZmluZWQgPSB7XG4gICAgICAgIGludGVybmFsOiBjb2xvdXJOYW1lc1RvSGV4W1wicHVycGxlLTFcIl0sXG4gICAgICAgIG50YTogY29sb3VyTmFtZXNUb0hleFtcInJlZC0xXCJdLFxuICAgICAgICB3b2x0OiBjb2xvdXJOYW1lc1RvSGV4W1wiYmx1ZS0xXCJdLFxuICAgICAgICB1YmVyZWF0czogY29sb3VyTmFtZXNUb0hleFtcImdyZWVuLTFcIl0sXG4gICAgICAgIGludm9pY2U6IGNvbG91ck5hbWVzVG9IZXhbXCJncmV5LTFcIl0sXG4gICAgfVxuXG4gICAgLy8gVHJhY2sgdXNlZCBjb2xvdXJzXG4gICAgY29uc3QgdXNlZENvbG91cnMgPSBuZXcgU2V0KE9iamVjdC52YWx1ZXMoYWxsUHJlZGVmaW5lZCkpXG4gICAgY29uc3QgYXZhaWxhYmxlQ29sb3VycyA9IE9iamVjdC52YWx1ZXMoY29sb3VyTmFtZXNUb0hleCkuZmlsdGVyKChoZXgpID0+ICF1c2VkQ29sb3Vycy5oYXMoaGV4KSlcblxuICAgIGNvbnN0IHJlc3VsdCA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzZXJpZXNLZXlzKSB7XG4gICAgICAgIGlmIChhbGxQcmVkZWZpbmVkW2tleV0pIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gYWxsUHJlZGVmaW5lZFtrZXldXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOb3QgcHJlZGVmaW5lZCwgYXNzaWduIGZpcnN0IHVudXNlZCBjb2xvdXJcbiAgICAgICAgICAgIGlmIChhdmFpbGFibGVDb2xvdXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoZXggPSBhdmFpbGFibGVDb2xvdXJzLnNoaWZ0KClcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGhleFxuICAgICAgICAgICAgICAgIHVzZWRDb2xvdXJzLmFkZChoZXgpXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgTm8gcHJlZGVmaW5lZCBjb2xvdXIgZm9yIHNlcmllcyBrZXkgJyR7a2V5fScsIHVzaW5nIGZhbGxiYWNrIGNvbG91ciAke2hleH1gKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBPdXQgb2YgY29sb3VycywgZmFsbGJhY2sgdG8gYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBcIiNjY2NjY2NcIlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBObyBwcmVkZWZpbmVkIGNvbG91ciBmb3Igc2VyaWVzIGtleSAnJHtrZXl9JywgYW5kIG5vIGZhbGxiYWNrIGNvbG91cnMgbGVmdC4gVXNpbmcgI2NjY2NjYy5gXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuIiwiaW1wb3J0IFZ1ZVJvdXRlciBmcm9tIFwidnVlLXJvdXRlclwiXG5cbmNvbnN0IHsgaXNOYXZpZ2F0aW9uRmFpbHVyZSwgTmF2aWdhdGlvbkZhaWx1cmVUeXBlIH0gPSBWdWVSb3V0ZXJcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgLy8gVXNlIHRoaXMgZnVuY3Rpb24gdG8gc2V0IHRoZSBpbmNsdWRlIHNoYXJlZCB2YWx1ZSBhdCBmb3JtIHBhZ2VzIChcIkVkaXRDcmVhdGUuLi5cIiwgZXRjLilcbiAgICAgICAgZ2V0SW5jbHVkZVNoYXJlZFZhbHVlRm9yRm9ybVBhZ2UoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy4kc3RvcmUuZ2V0dGVycy5jb21wYW55SXNTdWJjb21wYW55KSB7XG4gICAgICAgICAgICAgICAgLy8gU3ViY29tcGFuaWVzIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB0aGVpciBwYXJlbnQncyByZXNvdXJjZXNcbiAgICAgICAgICAgICAgICByZXR1cm4gMVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZVF1ZXJ5UGFyYW1zSWZDaGFuZ2VkKG5ld1F1ZXJ5KSB7XG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy4kcm91dGUucXVlcnkpICE9PSBKU09OLnN0cmluZ2lmeShuZXdRdWVyeSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucmVwbGFjZSh7IHF1ZXJ5OiBuZXdRdWVyeSB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQSBuZXdlciBxdWVyeSB1cGRhdGUgc3VwZXJzZWRpbmcgdGhpcyBvbmUgaXMgZXhwZWN0ZWQsIG5vdCBhbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNOYXZpZ2F0aW9uRmFpbHVyZShlcnJvciwgTmF2aWdhdGlvbkZhaWx1cmVUeXBlLmNhbmNlbGxlZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFpc05hdmlnYXRpb25GYWlsdXJlKGVycm9yLCBOYXZpZ2F0aW9uRmFpbHVyZVR5cGUuZHVwbGljYXRlZClcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgI
2H1cbiAgICAgICAgfSxcbiAgICB9LFxufVxuIiwiaW1wb3J0IERhdGVQZXJpb2RTZWxlY3RvciBmcm9tIFwiQC9jb21wb25lbnRzL2FkbWluL3N0YXRpc3RpY3MvRGF0ZVBlcmlvZFNlbGVjdG9yLnZ1ZVwiXG5pbXBvcnQgQWRtaW5TcGlubmVyQnV0dG9uIGZyb20gXCJAL2NvbXBvbmVudHMvYWRtaW4vQWRtaW5TcGlubmVyQnV0dG9uLnZ1ZVwiXG5pbXBvcnQgZm9ybWF0dGVyIGZyb20gXCJAL21peGlucy9Gb3JtYXR0ZXIuanNcIlxuaW1wb3J0IHtcbiAgICBnZXRTdGF0aXN0aWNNaW5pbXVtRGF0ZSxcbiAgICBub3JtYWxpemVTdGF0aXN0aWNEYXRlcyxcbiAgICBpc1N0YXRpc3RpY0RhdGVSYW5nZVZhbGlkLFxufSBmcm9tIFwiQC9oZWxwZXJzL1N0YXRpc3RpY3NEYXRlSGVscGVycy5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBjb21wb25lbnRzOiB7IERhdGVQZXJpb2RTZWxlY3RvciwgQWRtaW5TcGlubmVyQnV0dG9uIH0sXG4gICAgbWl4aW5zOiBbZm9ybWF0dGVyXSxcblxuICAgIGRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnRlcnZhbDogbnVsbCxcbiAgICAgICAgICAgIGRhdGVzOiB7IGZyb206IG51bGwsIHRvOiBudWxsIH0sXG5cbiAgICAgICAgICAgIGZvcm1FeHBhbmRlZDogdHJ1ZSxcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBpc1BlcmlvZERhdGVSYW5nZVZhbGlkKCkge1xuICAgICAgICAgICAgcmV0dXJuIGlzU3RhdGlzdGljRGF0ZVJhbmdlVmFsaWQodGhpcy5kYXRlcywgZ2V0U3RhdGlzdGljTWluaW11bURhdGUodGhpcy4kc3RvcmUuZ2V0dGVycy5jb21wYW55KSlcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBzZXREYXRlcyhkYXRlcykge1xuICAgICAgICAgICAgLy8gRGlyZWN0bHkgYXNzaWduIGRhdGUgc3RyaW5ncyAoWVlZWS1NTS1ERClcbiAgICAgICAgICAgIHRoaXMuZGF0ZXMgPSBub3JtYWxpemVTdGF0aXN0aWNEYXRlcyhkYXRlcywgZ2V0U3RhdGlzdGljTWluaW11bURhdGUodGhpcy4kc3RvcmUuZ2V0dGVycy5jb21wYW55KSlcbiAgICAgICAgfSxcblxuICAgICAgICBzZXRJbnRlcnZhbChpbnRlcnZhbCkge1xuICAgICAgICAgICAgdGhpcy5pbnRlcnZhbCA9IGludGVydmFsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0UXVlcnlQYXJhbXNQZXJpb2QoKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9IHsgLi4udGhpcy4kcm91dGUucXVlcnkgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZXMuZnJvbSkge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzZXQgZnJvbSBpbiBxdWVyeTpcIiwgdGhpcy5kYXRlcy5mcm9tKVxuICAgICAgICAgICAgICAgIHF1ZXJ5LmZyb20gPSB0aGlzLmRhdGVzLmZyb21cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHF1ZXJ5LmZyb21cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVzLnRvKSB7XG4gICAgICAgICAgICAgICAgcXVlcnkudG8gPSB0aGlzLmRhdGVzLnRvXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeS50b1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImdldFF1ZXJ5UGFyYW1zUGVyaW9kOlwiLCBxdWVyeSlcbiAgICAgICAgICAgIHJldHVybiBxdWVyeVxuICAgICAgICB9LFxuXG4gICAgICAgIHNldFBlcmlvZEluUXVlcnlQYXJhbXMoKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9IHRoaXMuZ2V0UXVlcnlQYXJhbXNQZXJpb2QoKVxuXG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy4kcm91dGUucXVlcnkpICE9PSBKU09OLnN0cmluZ2lmeShxdWVyeSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucmVwbGFjZSh7IHF1ZXJ5IH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0UXVlcnlQYXJhbXNJbnRlcnZhbChvbmx5SW50ZXJ2YWwgPSBmYWxzZSkge1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB7IC4uLnRoaXMuJHJvdXRlLnF1ZXJ5IH1cbiAgICAgICAgICAgIGlmICh0aGlzLmludGVydmFsKSB7XG4gICAgICAgICAgICAgICAgcXVlcnkuaW50ZXJ2YWwgPSB0aGlzLmludGVydmFsXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeS5pbnRlcnZhbFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob25seUludGVydmFsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaW50ZXJ2YWw6IHF1ZXJ5LmludGVydmFsIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0UGVyaW9kVGV4dCgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVzLmZyb20gJiYgdGhpcy5kYXRlcy50bykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGUodGhpcy5kYXRlcy5mcm9tKSArIFwiIC0gXCIgKyB0aGlzLmZvcm1hdERhdGUodGhpcy5kYXRlcy50bylcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlcy5mcm9tKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuJHQoXCJnZW5lcmFsLmZyb21cIil9IGAgKyB0aGlzLmZvcm1hdERhdGUodGhpcy5kYXRlcy5mcm9tKVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVzLnRvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuJHQoXCJnZW5lcmFsLnVudGlsXCIpfSBgICsgdGhpcy5mb3JtYXREYXRlKHRoaXMuZGF0ZXMudG8pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwiZ2VuZXJhbC5hbGxfdGltZVwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldERhdGFJZkRhdGVzU2V0QW5kQ29uZGl0aW9uc01ldChnZXREYXRhQ2FsbGJhY2ssIC4uLmFkZGl0aW9uYWxDb25kaXRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCB7IGZyb20sIHRvLCBkYXRlIH0gPSB0aGlzLiRyb3V0ZS5xdWVyeVxuICAgICAgICAgICAgdGhpcy5zZXREYXRlcyhkYXRlICYmIHRoaXMuJHJvdXRlLnF1ZXJ5LmludGVydmFsID09PSBcImhvdXJcIiA/IHsgZnJvbTogZGF0ZSwgdG86IGRhdGUsIGRhdGUgfSA6IHsgZnJvbSwgdG8gfSlcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgI
2HRoaXMuZGF0ZXMuZnJvbSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZXMudG8gJiZcbiAgICAgICAgICAgICAgICB0aGlzLmlzUGVyaW9kRGF0ZVJhbmdlVmFsaWQgJiZcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQ29uZGl0aW9ucy5ldmVyeSgoY29uZCkgPT4gY29uZClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGdldERhdGFDYWxsYmFjaygpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIC4uLmV4aXN0aW5nIGNvZGUuLi5cbiAgICAvLyBSZW1vdmUgaW5jb21wbGV0ZSBtb3VudGVkIGhvb2sgYW5kIGNsb3NlIGV4cG9ydCBkZWZhdWx0XG59XG4iLCJpbXBvcnQge1xuICAgIGdldFNhdmVkU3RhdGlzdGljc091dHB1dFByZWZlcmVuY2VzLFxuICAgIGdldFN0YXRpc3RpY3NTdWJtaXRCdXR0b25UZXh0LFxufSBmcm9tIFwiQC9oZWxwZXJzL1N0YXRpc3RpY3NPdXRwdXRIZWxwZXJzLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGRhdGEoKSB7XG4gICAgICAgIGNvbnN0IHNhdmVkUHJlZmVyZW5jZXMgPSBnZXRTYXZlZFN0YXRpc3RpY3NPdXRwdXRQcmVmZXJlbmNlcygpXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG91dHB1dFR5cGU6IHNhdmVkUHJlZmVyZW5jZXMub3V0cHV0VHlwZSB8fCBcImdyYXBoXCIsXG4gICAgICAgICAgICBvdXRwdXRTZXBhcmF0b3I6IHNhdmVkUHJlZmVyZW5jZXMuc2VwYXJhdG9yIHx8IFwic2VtaWNvbG9uXCIsXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgc3VibWl0QnV0dG9uVGV4dCgpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRTdGF0aXN0aWNzU3VibWl0QnV0dG9uVGV4dCh0aGlzLCB0aGlzLm91dHB1dFR5cGUpXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgZ2V0T3V0cHV0U2VsZWN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRUeXBlOiB0aGlzLm91dHB1dFR5cGUsXG4gICAgICAgICAgICAgICAgc2VwYXJhdG9yOiB0aGlzLm91dHB1dFNlcGFyYXRvcixcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9LFxufVxuIl0sIm5hbWVzIjpbInJlbmRlciIsIl92bSIsInRoaXMiLCJfYyIsIl9zZWxmIiwic3RhdGljQ2xhc3MiLCJjbGFzcyIsImJhY2tncm91bmRDbGFzcyIsInNob3dCb3JkZXIiLCJzdGF0aWNTdHlsZSIsIm9uIiwiJGV2ZW50IiwiJGVtaXQiLCJleHBhbmRlZCIsIl90IiwiX2UiLCJzdGF0aWNSZW5kZXJGbnMiLCJuYW1lIiwicHJvcHMiLCJ0eXBlIiwiQm9vbGVhbiIsInJlcXVpcmVkIiwiZGVmYXVsdCIsIlN0cmluZyIsImRhdGEiLCJjb21wdXRlZCIsIm1ldGhvZHMiLCJjb21wb25lbnQiLCJhdHRycyIsImZvcm1FeHBhbmRlZCIsInNjb3BlZFNsb3RzIiwiX3UiLCJrZXkiLCJmbiIsIl92IiwiX3MiLCIkdCIsInByb3h5IiwiJHJvdXRlIiwicXVlcnkiLCJmcm9tIiwidG8iLCJwZXJpb2RMZW5ndGhMaW1pdHMiLCJvdXRwdXRUeXBlIiwib3V0cHV0U2VwYXJhdG9yIiwic3VibWl0QnV0dG9uVGV4dCIsImlzUHJvY2Vzc2luZ1JlcXVlc3QiLCJkYXRlcyIsImludGVydmFsIiwic2V0RGF0ZXMiLCJzZXRJbnRlcnZhbCIsImdldERhdGEiLCJkaXJlY3RpdmVzIiwicmF3TmFtZSIsInZhbHVlIiwiY29tYmluZVNwbGl0T3JkZXJzIiwiZXhwcmVzc2lvbiIsImRvbVByb3BzIiwiQXJyYXkiLCJpc0FycmF5IiwiX2kiLCIkJGEiLCIkJGVsIiwidGFyZ2V0IiwiJCRjIiwiY2hlY2tlZCIsIiQkdiIsIiQkaSIsImNvbmNhdCIsInNsaWNlIiwiY2hhcnRTZXJpZXMiLCJnZXRQZXJpb2RUZXh0IiwiY2hhcnRPcHRpb25zIiwibWl4aW5zIiwiZm9ybWF0dGVyIiwiQWRtaW5Gb3JtUGFnZUhlbHBlcnMiLCJQZXJpb2RTdGF0aXN0aWMiLCJTdGF0aXN0aWNzT3V0cHV0TWl4aW4iLCJjb21wb25lbnRzIiwiRGF0ZVBlcmlvZFNlbGVjdG9yIiwiQWRtaW5TcGlubmVyQnV0dG9uIiwiQ29sbGFwc2libGVDb250ZW50IiwibWluIiwibWF4Iiwib3V0cHV0U2VsZWN0aW9uIiwiZ2V0T3V0cHV0U2VsZWN0aW9uIiwicGFyYW1zIiwic3RhcnRfZGF0ZSIsImVuZF9kYXRlIiwiY29tYmluZV9zcGxpdF9vcmRlcnMiLCJyZXF1ZXN0IiwiYXhpb3MiLCJnZXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJkYXRlUXVlcnkiLCJnZXRRdWVyeVBhcmFtc1BlcmlvZCIsImludGVydmFsUXVlcnkiLCJnZXRRdWVyeVBhcmFtc0ludGVydmFsIiwic3BsaXRPcmRlcnNRdWVyeSIsInVwZGF0ZVF1ZXJ5UGFyYW1zSWZDaGFuZ2VkIiwiT2JqZWN0IiwiYXNzaWduIiwicm93c0J5VGltZXN0YW1wIiwibWFwIiwiZCIsInhWYWx1ZSIsImdldE1pZGRsZU9mVGltZUZyb21TdHJpbmciLCJEYXRlIiwiZ2V0VGltZSIsIngiLCJ5IiwiYXZlcmFnZSIsInJlZmVyZW5jZVNlcmllcyIsImRlZmF1bHRPcHRpb25zIiwiZ2V0WEF4aXNEZWZhdWx0T3B0aW9ucyIsImFkZGl0aW9udGFsT3B0aW9ucyIsImNoYXJ0Iiwic3RhY2tlZCIsInpvb20iLCJlbmFibGVkIiwiYWxsb3dNb3VzZVdoZWVsWm9vbSIsInlheGlzIiwibGFiZWxzIiwidmFsIiwiZm9ybWF0UHJpY2UiLCJ0aXRsZSIsInRleHQiLCJkYXRhTGFiZWxzIiwidG9vbHRpcCIsImdldEludGVydmFsVG9vbHRpcEZvcm1hdHRlciIsImN1c3RvbSIsImRhdGFQb2ludEluZGV4IiwidyIsInBvaW50IiwiY29uZmlnIiwic2VyaWVzIiwicGVyaW9kVmFsdWUiLCJnZXRJbnRlcnZhbExhYmVsRnJvbVRpbWVTdHJpbmciLCJkb3dubG9hZFN0YXRpc3RpY3NGaWxlIiwic2VwYXJhdG9yIiwiY2F0Y2giLCJlcnJvciIsIiRzdG9yZSIsImNvbW1pdCIsIm1lc3NhZ2UiLCJmaW5hbGx5IiwiY3JlYXRlZCIsIm1vdW50ZWQiLCJpbmNsdWRlcyIsImdldERhdGFJZkRhdGVzU2V0QW5kQ29uZGl0aW9uc01ldCIsInNldEhvdXJzIiwiZGF0ZSIsImhvdXJzIiwiX2RhdGUiLCJ0b0RhdGUiLCJzZXRZZWFyIiwieWVhciIsImlzTmFOIiwiY29uc3RydWN0RnJvbSIsIk5hTiIsInNldEZ1bGxZZWFyIiwiZ2V0T21pdHRlZEhvdXJHYXBzIiwidmFsdWVzIiwidGltZXN0YW1wIiwi
2ZW50cmllcyIsIlNldCIsInNvcnQiLCJsZWZ0IiwicmlnaHQiLCJwYXJzZSIsIk51bWJlciIsImdhcHMiLCJpbmRleCIsImxlbmd0aCIsInByZXZpb3VzIiwibmV4dCIsImRpc3RhbmNlIiwicHVzaCIsImNvdW50IiwiTWF0aCIsImZsb29yIiwiZm9ybWF0T21pdHRlZEhvdXJHYXAiLCJnYXAiLCJjbG9jayIsImhvdXIiLCJwYWRTdGFydCIsInJlcGxhY2UiLCJjb2xvdXJOYW1lc1RvSGV4IiwicGluayIsImN5YW4iLCJzYW5kIiwiYnJvd24iLCJjaGFydENvbG91cnMiLCJ0aW1lUHJvcGVydHkiLCJvcHRpb25zIiwieGF4aXMiLCJ1bmRlZmluZWQiLCJzdGVwU2l6ZSIsImdldFhBeGlzRm9ybWF0dGVyIiwidGlja0Ftb3VudCIsImdldE1pZGRsZU9mRGF5RnJvbVN0cmluZ0RhdGUiLCJnZXRNaWRkbGVPZldlZWtGcm9tU3RyaW5nV2VlayIsImdldE1pZGRsZU9mTW9udGhGcm9tU3RyaW5nTW9udGgiLCJnZXRNaWRkbGVPZlllYXJGcm9tU3RyaW5nWWVhciIsImxvY2FsZSIsImdldHRlcnMiLCJjb21wYW55IiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiZGF0ZVN0eWxlIiwiZ2V0SVNPV2VlayIsIm1vbnRoIiwiZ2V0RnVsbFllYXIiLCJpMThuIiwidCIsInRpbWVTdHJpbmciLCJ3ZWVrIiwic3BsaXQiLCJnZXRUdXJub3ZlclNlcmllc1RyYW5zbGF0aW9uS2V5Iiwic2VyaWVzS2V5IiwiYnJlYWtkb3duIiwiYnVpbGRUdXJub3ZlclRvb2x0aXAiLCJjb2xvcnMiLCJmb3JtYXRBbW91bnQiLCJ0b3RhbExhYmVsIiwiYWRkaXRpb25hbENvbnRlbnQiLCJ0b3RhbCIsInJlZHVjZSIsInN1bSIsIml0ZW0iLCJmb3JtYXR0ZWRUb3RhbCIsImh0bWwiLCJzdHJpbmdEYXRlIiwiZ2V0V2Vla0luc3RhbmNlRnJvbVN0cmluZ1dlZWsiLCJzdHJpbmdXZWVrIiwic2V0SVNPV2VlayIsIm1pZGRsZU9mV2VlayIsImFkZERheXMiLCJzdGFydE9mSVNPV2VlayIsInN0cmluZ01vbnRoIiwic3RyaW5nWWVhciIsInN0cmluZ1RpbWUiLCJjb25zb2xlIiwiZ2V0UHJvdmlkZXJTZXJpZXNLZXlUb0NvbG91ck1hcCIsInNlcmllc0tleXMiLCJhbGxQcmVkZWZpbmVkIiwiaW50ZXJuYWwiLCJudGEiLCJ3b2x0IiwidWJlcmVhdHMiLCJpbnZvaWNlIiwidXNlZENvbG91cnMiLCJhdmFpbGFibGVDb2xvdXJzIiwiZmlsdGVyIiwiaGV4IiwiaGFzIiwicmVzdWx0Iiwic2hpZnQiLCJhZGQiLCJpc05hdmlnYXRpb25GYWlsdXJlIiwiTmF2aWdhdGlvbkZhaWx1cmVUeXBlIiwiVnVlUm91dGVyIiwiZ2V0SW5jbHVkZVNoYXJlZFZhbHVlRm9yRm9ybVBhZ2UiLCJjb21wYW55SXNTdWJjb21wYW55IiwibmV3UXVlcnkiLCJKU09OIiwic3RyaW5naWZ5IiwiJHJvdXRlciIsImNhbmNlbGxlZCIsImR1cGxpY2F0ZWQiLCJpc1BlcmlvZERhdGVSYW5nZVZhbGlkIiwiaXNTdGF0aXN0aWNEYXRlUmFuZ2VWYWxpZCIsImdldFN0YXRpc3RpY01pbmltdW1EYXRlIiwibm9ybWFsaXplU3RhdGlzdGljRGF0ZXMiLCJsb2ciLCJzZXRQZXJpb2RJblF1ZXJ5UGFyYW1zIiwib25seUludGVydmFsIiwiZm9ybWF0RGF0ZSIsImdldERhdGFDYWxsYmFjayIsImFkZGl0aW9uYWxDb25kaXRpb25zIiwiZXZlcnkiLCJjb25kIiwic2F2ZWRQcmVmZXJlbmNlcyIsImdldFNhdmVkU3RhdGlzdGljc091dHB1dFByZWZlcmVuY2VzIiwiZ2V0U3RhdGlzdGljc1N1Ym1pdEJ1dHRvblRleHQiXSwic291cmNlUm9vdCI6IiJ9

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.