1"use strict";(self["webpackChunkwsypos_frontend"]=self["webpackChunkwsypos_frontend"]||[]).push([[7849],{49793:function(e,t,s){s.d(t,{A:function(){return u}});var i=function(){var e=this,t=e._self._c;return t("button",{class:["btn spinner-button "+e.extraButtonClasses,void 0===e.bsColour?"btn-primary":"btn-"+e.bsColour,{"btn-sm":e.small},{"btn-lg":e.large}],attrs:{type:e.submitFunc?"submit":"button",disabled:e.disabledCondition?e.disabledCondition:e.spinnerCondition||e.extraDisabledCondition},on:{click:function(t){return e.$emit("buttonClicked")}}},[e.bsIcon?t("i",{staticClass:"bi",class:"bi-"+e.bsIcon}):e.buttonText?t("span",{domProps:{innerHTML:e._s(e.buttonText)}}):e._e(),e.addKeyIcon?t("wsy-key",{staticClass:"ms-1",attrs:{iconColour:e.bsColour&&"danger"===e.bsColour?"light":"danger"}}):e._e(),e.spinnerCondition?t("div",{staticClass:"button-overlay"},[t("span",{staticClass:"spinner-border spinner-border-sm",attrs:{role:"status","aria-hidden":"true"}})]):e._e()],1)},r=[],n={name:"AdminSpinnerButton",props:{buttonText:{type:String},bsIcon:{type:String},bsColour:{type:String,required:!1,default:"primary"},submitFunc:{type:Boolean,default:!0},spinnerCondition:{required:!0},disabledCondition:{required:!1},extraDisabledCondition:{required:!1,default:!1},small:{type:Boolean,default:!1},large:{type:Boolean,default:!1},extraButtonClasses:{type:String,required:!1,default:""},addKeyIcon:{default:!1}}},a=n,o=s(81656),l=(0,o.A)(a,i,r,!1,null,"0a026447",null),u=l.exports},17849:function(e,t,s){s.r(t),s.d(t,{default:function(){return m}});var i=function(){var e=this,t=e._self._c;return t("div",{staticClass:"col-12 p-4"},[t("div",{staticClass:"row"},[t("div",{staticClass:"peripheral-column col-xl-12"},[t("h2",[e._v(e._s(e.$t("types.boxes")))]),t("form",{staticClass:"row g-3",on:{submit:function(t){return t.preventDefault(),e.submitCreateBoxForm.apply(null,arguments)}}},[t("div",{staticClass:"col-xl-6 col-lg-8 col-md-10"},[t("label",{staticClass:"form-label",attrs:{for:"macInput"}},[e._v(e._s(e.$t("admin.registers.mac_address")))]),t("input",{directives:[{name:"model",rawName:"v-model",value:e.boxCreateData.mac,expression:"boxCreateData.mac"}],staticClass:"form-control",attrs:{type:"text",id:"macInput",minlength:"17",maxlength:"17",required:""},domProps:{value:e.boxCreateData.mac},on:{input:function(t){t.target.composing||e.$set(e.boxCreateData,"mac",t.target.value)}}})]),t("div",{staticClass:"col-xl-6 col-lg-4 col-md-2 d-flex"},[t("admin-spinner-button",{attrs:{buttonText:e.$t("admin.registers.find_box"),spinnerCondition:e.isProcessingBoxCreateRequest,extraButtonClasses:"mt-auto"}})],1)]),e.boxes.length?t("table",{staticClass:"table"},[t("thead",[t("tr",[t("th",[e._v(e._s(e.$t("admin.registers.box_id")))]),t("th",[e._v(e._s(e.$t("admin.registers.mac_address")))]),t("th",[e._v(e._s(e.$t("general.created")))]),t("th",[e._v(e._s(e.$t("admin.actions")))])])]),t("tbody",e._l(e.boxes,(function(s,i){return t("tr",{staticClass:"table-info"},[t("td",[e._v(e._s(s.identifier))]),t("td",[e._v(e._s(s.mac))]),t("td",[e._v(e._s(e.formatDateTime(s.created_at)))]),t("td",{staticClass:"actions-auto-margin"},[t("button",{staticClass:"btn btn-sm btn-primary",attrs:{type:"button"},on:{click:function(t){return e.refreshBox(i)}}},[e.isProcessingRefreshRequest===i?t("span",{staticClass:"spinner-border spinner-border-sm",attrs:{role:"status","aria-hidden":"true"}}):t("i",{staticClass:"bi bi-arrow-repeat"})]),e.$store.getters.isWsyPerson?t("button",{staticClass:"btn btn-sm btn-danger",attrs:{type:"button"},on:{click:function(t){return e.deleteBox(i)}}},[e.isProcessingDestroyRequest===i?t("span",{staticClass:"spinner-border spinner-border-sm",attrs:{role:"status","aria-hidden":"true"}}):t("i",{staticClass:"bi bi-trash"}),t("i",{staticClass:"bi bi-key-fill ms-1"})]):e._e()])])})),0)]):e._e()])])])},r=[],n=(s(44114),s(98956)),a=s(49793),o={name:"Boxes",mixins:[n.A],components:{adminSpinnerButton:a.A},data(){return{boxes:[],isProcessingDestroyRequest:!1,isProcessingRefreshRequest:!1,isProcessingBoxCreateRequest:!1,boxCreateData:{}}},methods:{async getBoxes(){let e=await this.wsyAPI.get("boxes",{include_peripherals:!0});this.wsyAPI.validateResponse(e)?this.boxes=e.boxes:this.$store.commit("dangerNotify",this.$t("admin.registers.failed_to_fetch_boxes"))},async submitCreateBoxForm(e){this.isProcessingBoxCreateRequest=e;let t=await this.wsyAPI.post("boxes",this.boxCreateData);if(this.wsyAPI.validateResponse(t)){this.isProcessingBoxCreateRequest=!1;let e="";if(null!==t.box){t.box.printers=t.printers,t.box.terminals=t.terminals,t.box.scales=t.scales;this.boxes.push(t.box);e+=this.$t("admin.registers.found_one_new_box")+" "}else e+=this.$t("admin.registers.found_no_new_boxes")+" ";this.peripheralsNotification(t.printers.length,t.terminals.length,t.scales.length,e),this.boxCreateData={}}else this.isProcessingBoxCreateRequest=!1,this.$store.commit("dangerNotify",this.$t("general.server_request_failed"))},peripheralsNotification(e,t,s,i=""){e+t+s>0?this.$store.commit("successNotify",i+this.$tc("admin.registers.added")+" "+this.$tc("admin.registers.printer",e)+", "+this.$tc("admin.registers.terminal",t)+" "+this.$tc("admin.registers.and")+" "+this.$tc("admin.registers.scale",s)+"."):this.$store.commit("infoNotify",i+this.$t("admin.registers.no_new_printers_or_terminals"))},async refreshBox(e){this.isProcessingRefreshRequest=e;let t=await this.wsyAPI.get("boxes/"+this.boxes[e].uuid+"/refresh");this.wsyAPI.validateResponse(t)?(this.isProcessingRefreshRequest=!1,this.boxes[e].printers=this.boxes[e].printers.concat(t.printers),this.boxes[e].terminals=this.boxes[e].terminals.concat(t.terminals),this.boxes[e].scales=this.boxes[e].scales.concat(t.scales),this.peripheralsNotification(t.printers.length,t.terminals.length,t.scales.length)):(this.isProcessingRefreshRequest=!1,this.$store.commit("dangerNotify",this.$t("general.server_request_failed")))},async deleteBox(e){this.isProcessingDestroyRequest=e;let t=await this.wsyAPI.delete("boxes/"+this.boxes[e].uuid);this.wsyAPI.validateResponse(t)?(this.isProcessingDestroyRequest=!1,this.boxes.splice(e,1)):(this.isProcessingDestroyRequest=!1,this.$store.commit("dangerNotify",this.$t("general.server_request_failed")+": "+t.message??""))}},mounted(){this.getBoxes()}},l=o,u=s(81656),c=(0,u.A)(l,i,r,!1,null,"564fd23c",null),m=c.exports},98956:function(e,t,s){var i=s(3235);t.A={computed:{locale:function(){return this.getLocale()}},methods:{resolveFormatterContext(){let e=this;while(e){if(e.formatterContext&&"object"===typeof e.formatterContext)return e.formatterContext;e=e.$parent}return{}},getLocale(){const e=this.resolveFormatterContext();return e.locale??this.$store?.getters?.company?.locale??"da-DK"},getTimezone(){const e=this.resolveFormatterContext();return e.timezone??this.$store?.getters?.company?.timezone??"Europe/Copenhagen"},formatDateTimeFromDate(e,t=!1){let s={year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:this.getTimezone()};return t&&(s.weekday=t),e.toLocaleDateString(this.locale,s)},formatDateTime(e,t=!1){let s=new Date(e),i=!1!==t&&new Date(t);if(!1!==i&&i instanceof Date&&s.getDate()===i.getDate()){let e={hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:this.getTimezone()};return s.toLocaleTimeString(this.locale,e)}let r={year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:this.getTimezone()};return s.toLocaleDateString(this.locale,r)},formatDateTimeWithoutSeconds(e){let t=new Date(e),s={year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:this.getTimezone()};return t.toLocaleDateString(this.locale,s)},formatDateTimeWithYear(e){let t=new Date(e);return t.getDate()+"/"+(t.getMonth()+1)+"-"+t.getFullYear()+" kl. "+t.getHours()+":"+String(t.getMinutes()).padStart(2,"0")},formatLessPreciseDateTime(e){const t=this.toCompanyTime(e);return t.getDate()+"/"+(t.getMonth()+1)+" kl. "+t.getHours()+":"+String(t.getMinutes()).padStart(2,"0")},formatDate(e,t=null){let s={year:"numeric",month:"numeric",day:"numeric",timeZone:this.getTimezone()};return null!==t&&(s=Object.assign(s,t)),e instanceof Date||(e=new Date(e)),e.toLocaleDateString(this.locale,s)},formatDateFullLength(e,t=null){let s={year:"numeric",month:"2-digit",day:"2-digit",timeZone:this.getTimezone()};return null!==t&&(s=Object.assign(s,t)),e instanceof Date||(e=new Date(e)),e.toLocaleDateString(this.locale,s)},formatBookingDate(e){const t=this.toCompanyTime(e),s=t.getDate(),i=t.getMonth()+1,r=t.getFullYear();return`${s}/${i}-${r}`},formatTime(e,t=!1){if(!e)return"";"object"!==typeof e&&(e=new Date(e));let s={hour:"2-digit",minute:"2-digit",timeZone:this.getTimezone()};return t&&(s.second="2-digit"),e.toLocaleTimeString(this.locale,s)},formatTimeKitchen(e){if(!e)return"";"object"!==typeof e&&(e=new Date(e));const t={hour:"2-digit",minute:"2-digit",weekday:"short",timeZone:this.getTimezone()};return e.toLocaleTimeString(this.locale,t)},getCurrency(){const e=this.resolveFormatterContext();return e.currency??this.$store?.getters?.company?.currency??"DKK"},formatPrice(e,t="code",s=!1,i=2){let r=s&&e>0?"+":"",n={minimumFractionDigits:i,maximumFractionDigits:2};if(!1!==t){let e=this.getCurrency();n.style="currency",n.currency=e,n.currencyDisplay=t}let a=e/100;
1return Math.abs(a)<.005&&(a=0),r+a.toLocaleString(this.locale,n)},capitaliseFirstLetter(e){return e.charAt(0).toUpperCase()+e.slice(1)},unitAbbrv(e,t=!1){const s={gram:"g",kilogram:"kg",centimeter:"cm",meter:"m",centiliter:"cl",liter:"l",minute:"m",hour:"h",decagram:"dg",null:"pcs"};if(e in s){let i=s[e];return"pcs"===i&&t?this.$t("pos.unit_abbreviations.pcs"):i}return e},capitaliseAndCommaSeparateWeekdays(e,t=0){if(t>0&&e.length<7&&e.length>=7-t){let t=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"].filter((t=>!e.includes(t)));return this.$t("general.all_days_except")+" "+t.map((e=>this.$t("general.weekdays_correct_capitalisation."+e)))}return e.map(((e,t)=>this.$t("general.weekdays"+(t>0?"_correct_capitalisation":"")+"."+e))).join(", ")},resourceEditCreateHeader(e,t,s=null,i=!1){let r=this.$t("general."+(!1===e?"create":"edit"))+" "+this.$t("types."+t).toLowerCase();if(!1!==e&&null!==s){let e;e=i?" "+s:" <em>"+s+"</em>",r+=e}return r},resourceEditCreateSubmitText(e,t){const s=this.$te("types."+t)?" "+this.$t("types."+t).toLowerCase():"";return this.$t("general."+(!1===e?"create":"update"))+s},resourceDeleteText(e){const t=this.$te("types."+e)?" "+this.$t("types."+e).toLowerCase():"";return this.$t("general.delete")+t},getAllResourceNameText(e){return this.$t("general.all_resource_name",{resourceName:e})},pendingInvitationStatus(e){return null!==e.accepted_at?this.$t("pos.invitation_statuses.accepted"):null!==e.rejected_at?this.$t("pos.invitation_statuses.rejected"):!0===e.expired?this.$t("pos.invitation_statuses.expired"):this.$t("pos.invitation_statuses.open")},formatQuantity(e,t){return t&&"decagram"===t.name?(e/100).toLocaleString(this.locale)+this.getUnitSuffix("kilogram"):e+this.getUnitSuffix(null!==t?t.name:null)},formatQuantityOfOrderLine(e,t="quantity"){let s=null;return e?.sellable?.unit&&(s=e.sellable.unit),this.formatQuantity(e[t],s)},getUnitSuffix(e){return null===e?"":" "+this.unitAbbrv(e)},orderLineOriginalTotal(e,t=!1,s="quantity"){let i=e.price*e[s];return t?this.formatPrice(i,!1):i},orderLineCurrentTotal(e,t=!1,s="quantity"){let i=e.price*e[s];const r=e.line_discount?.percentage;return null!=r&&r>0&&(i-=Math.round(i*(r/1e3))),t?this.formatPrice(i,!1):i},noType(e){return this.$t("general.no_type",{type:this.$t("types."+e).toLowerCase()})},getNameOfWeekdayFromInteger(e,t=!0){const s=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];let i=s[e];return t&&(i=i.toLowerCase()),i},formatProductForDropdown(e){return(null!==e.plu?e.plu+" | ":"")+e.name+" | "+(null===e.price?this.$t("admin.products.cashier_decided_price"):this.formatPrice(e.price))},addLinkSymbolIfShared(e,t){return e+("enterprise"===t.company.type?.name?" ð":"")},formatCashierFullName(e){return e.first_name+" "+e.last_name},formatPercentage(e,t,s=!1,i=0,r=1){const n=e/t;return this.formatDecimalAsPercentage(n,s,i,r)},formatDecimalAsPercentage(e,t=!1,s=0,i=1){let r={style:"percent",minimumFractionDigits:s,maximumFractionDigits:i};t&&(r.signDisplay="always");let n=new Intl.NumberFormat(this.locale,r);return n.format(e)},formatVatPercent(e,t=0,s=2){const i=Number(e);if(!Number.isFinite(i))return"";const r=i/100;return this.formatDecimalAsPercentage(r,!1,t,s)},formatPercentageDiscount(e,t=0,s=1){if(null==e)return"";const i=Number(e);return Number.isFinite(i)?this.formatDecimalAsPercentage(i/1e3,!1,t,s):""},getCustomerTypeIconClass(e){switch(e){case"business":return"bi-buildings";case"private":return"bi-person";case"public":return"bi-bank";case"employee":return"bi-file-person"}},getCompanyNameTranslationFromType(e){switch(e){case"business":return this.$t("addresses.company_name");case"public":return this.$t("admin.customers.authority_slash_organisation");case"employee":return this.$t("admin.customers.type.employee");case"private":case null:case void 0:return this.$t("admin.customers.company_slash_organisation")}},formatAccount(e){return`${e.account_number} ${e.name}`},getPriceProfileIdentifier(e){return e?null===e.name?this.$t("general.default"):e.name:this.$t("admin.products.no_availability")},getCompanyName(e,t=!1,s=!1){let i=e.display_name??e.vat_entity?.name;return t&&(e.admin_panel_identifier&&(i=`[${e.admin_panel_identifier}] ${i}`),i=`${e.id}: ${i}`),s&&(i=`${i}
1 (${this.$t("superadmin.companies.types."+e.type.name)})`),i},getGiftCardTypeBehaviourIcon(e){return"value-based"===e.behaviour?"bi-cash":"bi-cup-straw"},toCompanyTime(e){return(0,i.L_)(new Date(e),this.getTimezone())},getAmountFormatter(e=!0,t="code"){return s=>this.formatPrice(s,t,!1,e?2:0)}}}}}]); 2//# sourceMappingURL=data:application/json;charset=utf-8;base64,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CxNQUFPLFlBQ1gsSUFBSyxTQUNELE1BQU8sVUFDWCxJQUFLLFdBQ0QsTUFBTyxpQkFFbkIsRUFFQUMsaUNBQUFBLENBQWtDQyxHQUM5QixPQUFRQSxHQUNKLElBQUssV0FDRCxPQUFPOVAsS0FBS2tDLEdBQUcsMEJBQ25CLElBQUssU0FDRCxPQUFPbEMsS0FBS2tDLEdBQUcsZ0RBQ25CLElBQUssV0FDRCxPQUFPbEMsS0FBS2tDLEdBQUcsaUNBQ25CLElBQUssVUFDTCxLQUFLLEtBQ0wsVUFBSzdCLEVBQ0QsT0FBT0wsS0FBS2tDLEdBQUcsOENBRTNCLEVBRUE2TixhQUFBQSxDQUFjQyxHQUNWLE1BQU8sR0FBR0EsRUFBUUMsa0JBQWtCRCxFQUFRdk8sTUFDaEQsRUFFQXlPLHlCQUFBQSxDQUEwQkMsR0FDdEIsT0FBSUEsRUFDNkIsT0FBdEJBLEVBQWExTyxLQUFnQnpCLEtBQUtrQyxHQUFHLG1CQUFxQmlPLEVBQWExTyxLQUczRXpCLEtBQUtrQyxHQUFHLGlDQUNuQixFQUVBa08sY0FBQUEsQ0FBZTdKLEVBQVM4SixHQUFnQyxFQUFPQyxHQUFXLEdBQ3RFLElBQUl6RSxFQUFhdEYsRUFBUWdLLGNBQWdCaEssRUFBUWlLLFlBQVkvTyxLQWM3RCxPQVpJNE8sSUFDSTlKLEVBQVFrSyx5QkFDUjVFLEVBQWEsSUFBSXRGLEVBQVFrSywyQkFBMkI1RSxLQUd4REEsRUFBYSxHQUFHdEYsRUFBUW1LLE9BQU83RSxLQUcvQnlFLElBQ0F6RSxFQUFhLEd
2BQUdBLE1BQWU3TCxLQUFLa0MsR0FBRyw4QkFBZ0NxRSxFQUFRNUUsS0FBS0YsVUFHakZvSyxDQUNYLEVBRUE4RSw0QkFBQUEsQ0FBNkJDLEdBQ3pCLE1BQWtDLGdCQUEzQkEsRUFBYUMsVUFBOEIsVUFBWSxjQUNsRSxFQUlBeEksYUFBQUEsQ0FBY3lJLEdBQ1YsT0FBT0MsRUFBQUEsRUFBQUEsSUFBWSxJQUFJdEosS0FBS3FKLEdBQWE5USxLQUFLd0csY0FDbEQsRUFFQXdLLGtCQUFBQSxDQUFtQkMsR0FBZ0IsRUFBTTdILEVBQWtCLFFBQ3ZELE9BQVEzRyxHQUFVekMsS0FBS2tKLFlBQVl6RyxFQUFPMkcsR0FBaUIsRUFBTzZILEVBQWdCLEVBQUksRUFDMUYsRyIsInNvdXJjZXMiOlsid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL0FkbWluU3Bpbm5lckJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kL3NyYy9jb21wb25lbnRzL2FkbWluL0FkbWluU3Bpbm5lckJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4vQWRtaW5TcGlubmVyQnV0dG9uLnZ1ZT84NmIyIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL0FkbWluU3Bpbm5lckJ1dHRvbi52dWU/ZGUwZSIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvdmlld3Mvc2lnbmVkX2luL2FkbWluL0JveGVzLnZ1ZSIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvc3JjL3ZpZXdzL3NpZ25lZF9pbi9hZG1pbi9Cb3hlcy52dWUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL3ZpZXdzL3NpZ25lZF9pbi9hZG1pbi9Cb3hlcy52dWU/NzFhMSIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvdmlld3Mvc2lnbmVkX2luL2FkbWluL0JveGVzLnZ1ZT8yN2I1Iiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9taXhpbnMvRm9ybWF0dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKXt2YXIgX3ZtPXRoaXMsX2M9X3ZtLl9zZWxmLl9jO3JldHVybiBfYygnYnV0dG9uJyx7Y2xhc3M6W1xuICAgICAgICAnYnRuIHNwaW5uZXItYnV0dG9uJyArICcgJyArIF92bS5leHRyYUJ1dHRvbkNsYXNzZXMsXG4gICAgICAgIF92bS5ic0NvbG91ciA9PT0gdW5kZWZpbmVkID8gJ2J0bi1wcmltYXJ5JyA6ICdidG4tJyArIF92bS5ic0NvbG91cixcbiAgICAgICAgeyAnYnRuLXNtJzogX3ZtLnNtYWxsIH0sXG4gICAgICAgIHsgJ2J0bi1sZyc6IF92bS5sYXJnZSB9LFxuICAgIF0sYXR0cnM6e1widHlwZVwiOl92bS5zdWJtaXRGdW5jID8gJ3N1Ym1pdCcgOiAnYnV0dG9uJyxcImRpc2FibGVkXCI6X3ZtLmRpc2FibGVkQ29uZGl0aW9uID8gX3ZtLmRpc2FibGVkQ29uZGl0aW9uIDogX3ZtLnNwaW5uZXJDb25kaXRpb24gfHwgX3ZtLmV4dHJhRGlzYWJsZWRDb25kaXRpb259LG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLiRlbWl0KCdidXR0b25DbGlja2VkJyl9fX0sWyhfdm0uYnNJY29uKT9fYygnaScse3N0YXRpY0NsYXNzOlwiYmlcIixjbGFzczonYmktJyArIF92bS5ic0ljb259KTooX3ZtLmJ1dHRvblRleHQpP19jKCdzcGFuJyx7ZG9tUHJvcHM6e1wiaW5uZXJIVE1MXCI6X3ZtLl9zKF92bS5idXR0b25UZXh0KX19KTpfdm0uX2UoKSwoX3ZtLmFkZEtleUljb24pP19jKCd3c3kta2V5Jyx7c3RhdGljQ2xhc3M6XCJtcy0xXCIsYXR0cnM6e1wiaWNvbkNvbG91clwiOl92bS5ic0NvbG91ciAmJiBfdm0uYnNDb2xvdXIgPT09ICdkYW5nZXInID8gJ2xpZ2h0JyA6ICdkYW5nZXInfX0pOl92bS5fZSgpLChfdm0uc3Bpbm5lckNvbmRpdGlvbik/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiYnV0dG9uLW92ZXJsYXlcIn0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiLGF0dHJzOntcInJvbGVcIjpcInN0YXR1c1wiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn19KV0pOl92bS5fZSgpXSwxKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCI8dGVtcGxhdGU+XG4gICAgPGJ1dHRvblxuICAgICAgICA6dHlwZT1cInN1Ym1pdEZ1bmMgPyAnc3VibWl0JyA6ICdidXR0b24nXCJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ2J0biBzcGlubmVyLWJ1dHRvbicgKyAnICcgKyBleHRyYUJ1dHRvbkNsYXNzZXMsXG4gICAgICAgICAgICBic0NvbG91ciA9PT0gdW5kZWZpbmVkID8gJ2J0bi1wcmltYXJ5JyA6ICdidG4tJyArIGJzQ29sb3VyLFxuICAgICAgICAgICAgeyAnYnRuLXNtJzogc21hbGwgfSxcbiAgICAgICAgICAgIHsgJ2J0bi1sZyc6IGxhcmdlIH0sXG4gICAgICAgIF1cIlxuICAgICAgICBAY2xpY2s9XCIkZW1pdCgnYnV0dG9uQ2xpY2tlZCcpXCJcbiAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRDb25kaXRpb24gPyBkaXNhYmxlZENvbmRpdGlvbiA6IHNwaW5uZXJDb25kaXRpb24gfHwgZXh0cmFEaXNhYmxlZENvbmRpdGlvblwiXG4gICAgPlxuICAgICAgICA8aSB2LWlmPVwiYnNJY29uXCIgY2xhc3M9XCJiaVwiIDpjbGFzcz1cIidiaS0nICsgYnNJY29uXCI+PC9pPlxuICAgICAgICA8c3BhbiB2LWVsc2UtaWY9XCJidXR0b25UZXh0XCIgdi1odG1sPVwiYnV0dG9uVGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgPHdzeS1rZXkgdi1pZj1cImFkZEtleUljb25cIiA6aWNvbkNvbG91cj1cImJzQ29sb3VyICYmIGJzQ29sb3VyID09PSAnZGFuZ2VyJyA/ICdsaWdodCcgOiAnZGFuZ2VyJ1wiIGNsYXNzPVwibXMtMVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tb3ZlcmxheVwiIHYtaWY9XCJzcGlubmVyQ29uZGl0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWU6IFwiQWRtaW5TcGlubmVyQnV0dG9uXCIsXG5cbiAgICBwcm9wczoge1xuICAgICAgICBidXR0b25UZXh0OiB7XG4gICAgICAgICAgICB0eX
2BlOiBTdHJpbmcsXG4gICAgICAgIH0sXG5cbiAgICAgICAgYnNJY29uOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIH0sXG5cbiAgICAgICAgYnNDb2xvdXI6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFwicHJpbWFyeVwiLFxuICAgICAgICB9LFxuXG4gICAgICAgIHN1Ym1pdEZ1bmM6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNwaW5uZXJDb25kaXRpb246IHtcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2FibGVkQ29uZGl0aW9uOiB7XG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXh0cmFEaXNhYmxlZENvbmRpdGlvbjoge1xuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG5cbiAgICAgICAgc21hbGw6IHtcbiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcblxuICAgICAgICBsYXJnZToge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuXG4gICAgICAgIGV4dHJhQnV0dG9uQ2xhc3Nlczoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGVmYXVsdDogXCJcIixcbiAgICAgICAgfSxcblxuICAgICAgICBhZGRLZXlJY29uOiB7XG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9LFxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC00MC51c2VbMV0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BZG1pblNwaW5uZXJCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RocmVhZC1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtNDAudXNlWzFdIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQWRtaW5TcGlubmVyQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9BZG1pblNwaW5uZXJCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTBhMDI2NDQ3JnNjb3BlZD10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQWRtaW5TcGlubmVyQnV0dG9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9BZG1pblNwaW5uZXJCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjBhMDI2NDQ3XCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpe3ZhciBfdm09dGhpcyxfYz1fdm0uX3NlbGYuX2M7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbC0xMiBwLTRcIn0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInJvd1wifSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwicGVyaXBoZXJhbC1jb2x1bW4gY29sLXhsLTEyXCJ9LFtfYygnaDInLFtfdm0uX3YoX3ZtLl9zKF92bS4kdChcInR5cGVzLmJveGVzXCIpKSldKSxfYygnZm9ybScse3N0YXRpY0NsYXNzOlwicm93IGctM1wiLG9uOntcInN1Ym1pdFwiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5zdWJtaXRDcmVhdGVCb3hGb3JtLmFwcGx5KG51bGwsIGFyZ3VtZW50cyl9fX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbC14bC02IGNvbC1sZy04IGNvbC1tZC0xMFwifSxbX2MoJ2xhYmVsJyx7c3RhdGljQ2xhc3M6XCJmb3JtLWxhYmVsXCIsYXR0cnM6e1wiZm9yXCI6XCJtYWNJbnB1dFwifX0sW192bS5fdihfdm0uX3MoX3ZtLiR0KFwiYWRtaW4ucmVnaXN0ZXJzLm1hY19hZGRyZXNzXCIpKSldKSxfYygnaW5wdXQnLHtkaXJlY3RpdmVzOlt7bmFtZTpcIm1vZGVsXCIscmF3TmFtZTpcInYtbW9kZWxcIix2YWx1ZTooX3ZtLmJveENyZWF0ZURhdGEubWFjKSxleHByZXNzaW9uOlwiYm94Q3JlYXRlRGF0YS5tYWNcIn1dLHN0YXRpY0NsYXNzOlwiZm9ybS1jb250cm9sXCIsYXR0cnM6e1widHlwZVwiOlwidGV4dFwiLFwiaWRcIjpcIm1hY0lucHV0XCIsXCJtaW5sZW5ndGhcIjpcIjE3XCIsXCJtYXhsZW5ndGhcIjpcIjE3XCIsXCJyZXF1aXJlZFwiOlwiXCJ9LGRvbVByb3BzOntcInZhbHVlXCI6KF92bS5ib3hDcmVhdGVEYXRhLm1hYyl9LG9uOntcImlucHV0XCI6ZnVuY3Rpb24oJGV2ZW50KXtpZigkZXZlbnQudGFyZ2V0LmNvbXBvc2luZylyZXR1cm47X3ZtLiRzZXQoX3ZtLmJveENyZWF0ZURhdGEsIFwibWFjXCIsICRldmVudC50YXJnZXQudmFsdWUpfX19KV0pLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbC14bC02IGNvbC1sZy00IGNvbC1tZC0yIGQtZmxleFwifSxbX2MoJ2FkbWluLXNwaW5uZXItYnV0dG9uJyx7YXR0cnM6e1wiYnV0dG9uVGV4dFwiOl92bS4kdCgnYWRtaW4ucmVnaXN0ZXJzLmZpbmRfYm94JyksXCJzcGlubmVyQ29uZGl0aW9uXCI6X3ZtLmlzUHJvY2Vzc2luZ0JveENyZWF0ZVJlcXVlc3QsXCJleHRyYUJ1dHRvbkNsYXNzZXNcIjpcIm10LWF1dG9
2cIn19KV0sMSldKSwoX3ZtLmJveGVzLmxlbmd0aCk/X2MoJ3RhYmxlJyx7c3RhdGljQ2xhc3M6XCJ0YWJsZVwifSxbX2MoJ3RoZWFkJyxbX2MoJ3RyJyxbX2MoJ3RoJyxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJhZG1pbi5yZWdpc3RlcnMuYm94X2lkXCIpKSldKSxfYygndGgnLFtfdm0uX3YoX3ZtLl9zKF92bS4kdChcImFkbWluLnJlZ2lzdGVycy5tYWNfYWRkcmVzc1wiKSkpXSksX2MoJ3RoJyxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJnZW5lcmFsLmNyZWF0ZWRcIikpKV0pLF9jKCd0aCcsW192bS5fdihfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uYWN0aW9uc1wiKSkpXSldKV0pLF9jKCd0Ym9keScsX3ZtLl9sKChfdm0uYm94ZXMpLGZ1bmN0aW9uKGJveCxib3hJbmRleCl7cmV0dXJuIF9jKCd0cicse3N0YXRpY0NsYXNzOlwidGFibGUtaW5mb1wifSxbX2MoJ3RkJyxbX3ZtLl92KF92bS5fcyhib3guaWRlbnRpZmllcikpXSksX2MoJ3RkJyxbX3ZtLl92KF92bS5fcyhib3gubWFjKSldKSxfYygndGQnLFtfdm0uX3YoX3ZtLl9zKF92bS5mb3JtYXREYXRlVGltZShib3guY3JlYXRlZF9hdCkpKV0pLF9jKCd0ZCcse3N0YXRpY0NsYXNzOlwiYWN0aW9ucy1hdXRvLW1hcmdpblwifSxbX2MoJ2J1dHRvbicse3N0YXRpY0NsYXNzOlwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiLGF0dHJzOntcInR5cGVcIjpcImJ1dHRvblwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5yZWZyZXNoQm94KGJveEluZGV4KX19fSxbKF92bS5pc1Byb2Nlc3NpbmdSZWZyZXNoUmVxdWVzdCA9PT0gYm94SW5kZXgpP19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiLGF0dHJzOntcInJvbGVcIjpcInN0YXR1c1wiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIn19KTpfYygnaScse3N0YXRpY0NsYXNzOlwiYmkgYmktYXJyb3ctcmVwZWF0XCJ9KV0pLChfdm0uJHN0b3JlLmdldHRlcnMuaXNXc3lQZXJzb24pP19jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcImJ0biBidG4tc20gYnRuLWRhbmdlclwiLGF0dHJzOntcInR5cGVcIjpcImJ1dHRvblwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5kZWxldGVCb3goYm94SW5kZXgpfX19LFsoX3ZtLmlzUHJvY2Vzc2luZ0Rlc3Ryb3lSZXF1ZXN0ID09PSBib3hJbmRleCk/X2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIsYXR0cnM6e1wicm9sZVwiOlwic3RhdHVzXCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifX0pOl9jKCdpJyx7c3RhdGljQ2xhc3M6XCJiaSBiaS10cmFzaFwifSksX2MoJ2knLHtzdGF0aWNDbGFzczpcImJpIGJpLWtleS1maWxsIG1zLTFcIn0pXSk6X3ZtLl9lKCldKV0pfSksMCldKTpfdm0uX2UoKV0pXSldKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCI8dGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBwLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlwaGVyYWwtY29sdW1uIGNvbC14bC0xMlwiPlxuICAgICAgICAgICAgICAgIDxoMj57eyAkdChcInR5cGVzLmJveGVzXCIpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cInJvdyBnLTNcIiBAc3VibWl0LnByZXZlbnQ9XCJzdWJtaXR
2DcmVhdGVCb3hGb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtNiBjb2wtbGctOCBjb2wtbWQtMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJtYWNJbnB1dFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7ICR0KFwiYWRtaW4ucmVnaXN0ZXJzLm1hY19hZGRyZXNzXCIpIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtYWNJbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImJveENyZWF0ZURhdGEubWFjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg9XCIxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTYgY29sLWxnLTQgY29sLW1kLTIgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YWRtaW4tc3Bpbm5lci1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6YnV0dG9uVGV4dD1cIiR0KCdhZG1pbi5yZWdpc3RlcnMuZmluZF9ib3gnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNwaW5uZXJDb25kaXRpb249XCJpc1Byb2Nlc3NpbmdCb3hDcmVhdGVSZXF1ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUJ1dHRvbkNsYXNzZXM9XCJtdC1hdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZVwiIHYtaWY9XCJib3hlcy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyAkdChcImFkbWluLnJlZ2lzdGVycy5ib3hfaWRcIikgfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyAkdChcImFkbWluLnJlZ2lzdGVycy5tYWNfYWRkcmVzc1wiKSB9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7ICR0KFwiZ2VuZXJhbC5jcmVhdGVkXCIpIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgJHQoXCJhZG1pbi5hY3Rpb25zXCIpIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cIihib3gsIGJveEluZGV4KSBpbiBib3hlc1wiIGNsYXNzPVwidGFibGUtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBib3guaWRlbnRpZmllciB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGJveC5tYWMgfX08L3RkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGZvcm1hdERhdGVUaW1lKGJveC5jcmVhdGVkX2F0KSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWN0aW9ucy1hdXRvLW1hcmdpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiBAY2xpY2s9XCJyZWZyZXNoQm94KGJveEluZGV4KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiaXNQcm9jZXNzaW5nUmVmcmVzaFJlcXVlc3QgPT09IGJveEluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwic3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktYXJyb3ctcmVwZWF0XCIgdi1lbHNlPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cIiRzdG9yZS5nZXR0ZXJzLmlzV3N5UGVyc29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiZGVsZXRlQm94KGJveEluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1pZj1cImlzUHJvY2Vzc2luZ0Rlc3Ryb3lSZXF1ZXN0ID09PSBib3hJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktdHJhc2hcIiB2LWVsc2U+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1rZXktZmlsbCBtcy0xXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBmb3JtYXR0ZXIgZnJvbSBcIkAvbWl4aW5zL0Zvcm1hdHRlci5qc1wiXG5pbXBvcnQgYWRtaW5TcGlubmVyQnV0dG9uIGZyb20gXCJAL2NvbXBvbmVudHMvYWRtaW4vQWRtaW5TcGlubmVyQnV0dG9uLnZ1
2ZVwiXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiBcIkJveGVzXCIsXG5cbiAgICBtaXhpbnM6IFtmb3JtYXR0ZXJdLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgYWRtaW5TcGlubmVyQnV0dG9uLFxuICAgIH0sXG5cbiAgICBkYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYm94ZXM6IFtdLFxuICAgICAgICAgICAgaXNQcm9jZXNzaW5nRGVzdHJveVJlcXVlc3Q6IGZhbHNlLFxuICAgICAgICAgICAgaXNQcm9jZXNzaW5nUmVmcmVzaFJlcXVlc3Q6IGZhbHNlLFxuICAgICAgICAgICAgaXNQcm9jZXNzaW5nQm94Q3JlYXRlUmVxdWVzdDogZmFsc2UsXG4gICAgICAgICAgICBib3hDcmVhdGVEYXRhOiB7fSxcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFzeW5jIGdldEJveGVzKCkge1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy53c3lBUEkuZ2V0KFwiYm94ZXNcIiwgeyBpbmNsdWRlX3BlcmlwaGVyYWxzOiB0cnVlIH0pXG5cbiAgICAgICAgICAgIGlmICh0aGlzLndzeUFQSS52YWxpZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYm94ZXMgPSByZXNwb25zZS5ib3hlc1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJkYW5nZXJOb3RpZnlcIiwgdGhpcy4kdChcImFkbWluLnJlZ2lzdGVycy5mYWlsZWRfdG9fZmV0Y2hfYm94ZXNcIikpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgc3VibWl0Q3JlYXRlQm94Rm9ybSh1dWlkKSB7XG4gICAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0JveENyZWF0ZVJlcXVlc3QgPSB1dWlkXG5cbiAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRoaXMud3N5QVBJLnBvc3QoXCJib3hlc1wiLCB0aGlzLmJveENyZWF0ZURhdGEpXG5cbiAgICAgICAgICAgIGlmICh0aGlzLndzeUFQSS52YWxpZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nQm94Q3JlYXRlUmVxdWVzdCA9IGZhbHNlXG4gICAgICAgICAgICAgICAgbGV0IHRleHQgPSBcIlwiXG5cbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuYm94ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmJveC5wcmludGVycyA9IHJlc3BvbnNlLnByaW50ZXJzXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmJveC50ZXJtaW5hbHMgPSByZXNwb25zZS50ZXJtaW5hbHNcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuYm94LnNjYWxlcyA9IHJlc3BvbnNlLnNjYWxlc1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdCb3hJbmRleCA9IHRoaXMuYm94ZXMucHVzaChyZXNwb25zZS5ib3gpXG5cbiAgICAgICAgICAgICAgICAgICAgdGV4dCArPSB0aGlzLiR0KFwiYWRtaW4ucmVnaXN0ZXJzLmZvdW5kX29uZV9uZXdfYm94XCIpICsgXCIgXCJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHRoaXMuJHQoXCJhZG1pbi5yZWdpc3RlcnMuZm91bmRfbm9fbmV3X2JveGVzXCIpICsgXCIgXCJcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcmlwaGVyYWxzTm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5wcmludGVycy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnRlcm1pbmFscy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNjYWxlcy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHRleHRcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICB0aGlzLmJveENyZWF0ZURhdGEgPSB7fVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0JveENyZWF0ZVJlcXVlc3QgPSBmYWxzZVxuXG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwiZGFuZ2VyTm90aWZ5XCIsIHRoaXMuJHQoXCJnZW5lcmFsLnNlcnZlcl9yZXF1ZXN0X2ZhaWxlZFwiKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBwZXJpcGhlcmFsc05vdGlmaWNhdGlvbihhZGRlZFByaW50ZXJzLCBhZGRlZFRlcm1pbmFscywgYWRkZWRTY2FsZXMsIHByZWZpeCA9IFwiXCIpIHtcbiAgICAgICAgICAgIGlmIChhZGRlZFByaW50ZXJzICsgYWRkZWRUZXJtaW5hbHMgKyBhZGRlZFNjYWxlcyA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXG4gICAgICAgICAgICAgICAgICAgIFwic3VjY2Vzc05vdGlmeVwiLFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kdGMoXCJhZG1pbi5yZWdpc3RlcnMuYWRkZWRcIikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kdGMoXCJhZG1pbi5yZWdpc3RlcnMucHJpbnRlclwiLCBhZGRlZFByaW50ZXJzKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiwgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kdGMoXCJhZG1pbi5yZWdpc3RlcnMudGVybWluYWxcIiwgYWRkZWRUZXJtaW5hbHMpICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHRjKFwiYWRtaW4ucmVnaXN0ZXJzLmFuZFwiKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiR0YyhcImFkbWluLnJlZ2lzdGVycy5zY2FsZVwiLCBhZGRlZFNjYWxlcykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIuXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcImluZm9Ob3RpZnlcIiwgcHJlZml4ICsgdGhpcy4kdChcImFkbWluLnJlZ2lzdGVycy5ub19uZXdfcHJpbnRlcnNfb3JfdGVybWluYWxzXCIpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIHJlZnJlc2hCb3goaW5kZXgpIHtcbiAgICAgICAgICAgI
2HRoaXMuaXNQcm9jZXNzaW5nUmVmcmVzaFJlcXVlc3QgPSBpbmRleFxuXG4gICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLndzeUFQSS5nZXQoXCJib3hlcy9cIiArIHRoaXMuYm94ZXNbaW5kZXhdLnV1aWQgKyBcIi9yZWZyZXNoXCIpXG5cbiAgICAgICAgICAgIGlmICh0aGlzLndzeUFQSS52YWxpZGF0ZVJlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nUmVmcmVzaFJlcXVlc3QgPSBmYWxzZVxuXG4gICAgICAgICAgICAgICAgdGhpcy5ib3hlc1tpbmRleF0ucHJpbnRlcnMgPSB0aGlzLmJveGVzW2luZGV4XS5wcmludGVycy5jb25jYXQocmVzcG9uc2UucHJpbnRlcnMpXG4gICAgICAgICAgICAgICAgdGhpcy5ib3hlc1tpbmRleF0udGVybWluYWxzID0gdGhpcy5ib3hlc1tpbmRleF0udGVybWluYWxzLmNvbmNhdChyZXNwb25zZS50ZXJtaW5hbHMpXG4gICAgICAgICAgICAgICAgdGhpcy5ib3hlc1tpbmRleF0uc2NhbGVzID0gdGhpcy5ib3hlc1tpbmRleF0uc2NhbGVzLmNvbmNhdChyZXNwb25zZS5zY2FsZXMpXG5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcmlwaGVyYWxzTm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5wcmludGVycy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnRlcm1pbmFscy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNjYWxlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nUmVmcmVzaFJlcXVlc3QgPSBmYWxzZVxuXG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwiZGFuZ2VyTm90aWZ5XCIsIHRoaXMuJHQoXCJnZW5lcmFsLnNlcnZlcl9yZXF1ZXN0X2ZhaWxlZFwiKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyBkZWxldGVCb3goaW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nRGVzdHJveVJlcXVlc3QgPSBpbmRleFxuXG4gICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLndzeUFQSS5kZWxldGUoXCJib3hlcy9cIiArIHRoaXMuYm94ZXNbaW5kZXhdLnV1aWQpXG4gICAgICAgICAgICBpZiAodGhpcy53c3lBUEkudmFsaWRhdGVSZXNwb25zZShyZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0Rlc3Ryb3lSZXF1ZXN0ID0gZmFsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmJveGVzLnNwbGljZShpbmRleCwgMSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdEZXN0cm95UmVxdWVzdCA9IGZhbHNlXG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFxuICAgICAgICAgICAgICAgICAgICBcImRhbmdlck5vdGlmeVwiLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLiR0KFwiZ2VuZXJhbC5zZXJ2ZXJfcmVxdWVzdF9mYWlsZWRcIikgKyBcIjogXCIgKyByZXNwb25zZS5tZXNzYWdlID8/IFwiXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG1vdW50ZWQoKSB7XG4gICAgICAgIHRoaXMuZ2V0Qm94ZXMoKVxuICAgIH0sXG59XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0JveGVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0JveGVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9Cb3hlcy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTY0ZmQyM2Mmc2NvcGVkPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Cb3hlcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQm94ZXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjU2NGZkMjNjXCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IHsgdG9ab25lZFRpbWUgfSBmcm9tIFwiZGF0ZS1mbnMtdHpcIlxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgbG9jYWxlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMb2NhbGUoKVxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHJlc29sdmVGb3JtYXR0ZXJDb250ZXh0KCkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDb21wb25lbnQgPSB0aGlzXG5cbiAgICAgICAgICAgI
2HdoaWxlIChjdXJyZW50Q29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb21wb25lbnQuZm9ybWF0dGVyQ29udGV4dCAmJiB0eXBlb2YgY3VycmVudENvbXBvbmVudC5mb3JtYXR0ZXJDb250ZXh0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29tcG9uZW50LmZvcm1hdHRlckNvbnRleHRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50Q29tcG9uZW50ID0gY3VycmVudENvbXBvbmVudC4kcGFyZW50XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldExvY2FsZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlckNvbnRleHQgPSB0aGlzLnJlc29sdmVGb3JtYXR0ZXJDb250ZXh0KClcblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlckNvbnRleHQubG9jYWxlID8/IHRoaXMuJHN0b3JlPy5nZXR0ZXJzPy5jb21wYW55Py5sb2NhbGUgPz8gXCJkYS1ES1wiXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0VGltZXpvbmUoKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXJDb250ZXh0ID0gdGhpcy5yZXNvbHZlRm9ybWF0dGVyQ29udGV4dCgpXG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZXJDb250ZXh0LnRpbWV6b25lID8/IHRoaXMuJHN0b3JlPy5nZXR0ZXJzPy5jb21wYW55Py50aW1lem9uZSA/PyBcIkV1cm9wZS9Db3BlbmhhZ2VuXCJcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXREYXRlVGltZUZyb21EYXRlKGRhdGUsIHdlZWtkYXlGb3JtYXRPckZhbHNlID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIG1vbnRoOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBkYXk6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICB0aW1lWm9uZTogdGhpcy5nZXRUaW1lem9uZSgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAod2Vla2RheUZvcm1hdE9yRmFsc2UpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLndlZWtkYXkgPSB3ZWVrZGF5Rm9ybWF0T3JGYWxzZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gSWYgb21pdERhdGVJZlNhbWVEYXRlLCB0aGUgZGF0ZVRpbWUgd2lsbCBhbHdheXMgYmUgcHJpbnRlZCB3aXRoIGZ1bGwgZGF0ZTsgaWYgaXQgaXMgbm90IGZhbHNlLCBjYW4gcHJvZHVjZVxuICAgICAgICAvLyBhIHZhbGlkIERhdGUsIGFuZCBib3RoIGRhdGVzIGFyZSB0aGUgc2FtZSwgdGhlIGRhdGUgcGFydCB3aWxsIGJlIG9taXR0ZWRcbiAgICAgICAgLy8gVE9ETzogRXJyb3IgaGFuZGxpbmdcbiAgICAgICAgZm9ybWF0RGF0ZVRpbWUoZGF0ZVRpbWUsIG9taXREYXRlSWZTYW1lRGF0ZSA9IGZhbHNlKSB7XG4gICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGRhdGVUaW1lKVxuXG4gICAgICAgICAgICBsZXQgcmVmZXJlbmNlRGF0ZSA9IG9taXREYXRlSWZTYW1lRGF0ZSA9PT0gZmFsc2UgPyBmYWxzZSA6IG5ldyBEYXRlKG9taXREYXRlSWZTYW1lRGF0ZSlcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZURhdGUgIT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlRGF0ZSBpbnN0YW5jZW9mIERhdGUgJiZcbiAgICAgICAgICAgICAgICBkYXRlLmdldERhdGUoKSA9PT0gcmVmZXJlbmNlRGF0ZS5nZXREYXRlKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICBob3VyOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICAgICAgdGltZVpvbmU6IHRoaXMuZ2V0VGltZXpvbmUoKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy9sZXQgb3B0aW9ucyA9IHsgdGltZVN0eWxlOiAnbWVkaXVtJyB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBtb250aDogXCJudW1lcmljXCIsXG4gICAgICAgICAgICAgICAgZGF5OiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBob3VyOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgIHNlY29uZDogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgdGltZVpvbmU6IHRoaXMuZ2V0VGltZXpvbmUoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdERhdGVUaW1lV2l0aG91dFNlY29uZHMoZGF0ZVRpbWUpIHtcbiAgICAgICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoZGF0ZVRpbWUpXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBtb250aDogXCJudW1lcmljXCIsXG4gICAgICAgICAgICAgICAgZGF5OiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBob3VyOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgI
2HRpbWVab25lOiB0aGlzLmdldFRpbWV6b25lKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwgb3B0aW9ucylcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0RGF0ZVRpbWVXaXRoWWVhcihkYXRlVGltZSkge1xuICAgICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShkYXRlVGltZSlcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgZGF0ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICAgICAgIFwiL1wiICtcbiAgICAgICAgICAgICAgICAoZGF0ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICAgICAgIFwiLVwiICtcbiAgICAgICAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCkgK1xuICAgICAgICAgICAgICAgIFwiIGtsLiBcIiArXG4gICAgICAgICAgICAgICAgZGF0ZS5nZXRIb3VycygpICtcbiAgICAgICAgICAgICAgICBcIjpcIiArXG4gICAgICAgICAgICAgICAgU3RyaW5nKGRhdGUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCBcIjBcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0TGVzc1ByZWNpc2VEYXRlVGltZShkYXRlVGltZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMudG9Db21wYW55VGltZShkYXRlVGltZSlcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBkYXRlLmdldERhdGUoKSArXG4gICAgICAgICAgICAgICAgXCIvXCIgK1xuICAgICAgICAgICAgICAgIChkYXRlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgICAgICAgXCIga2wuIFwiICtcbiAgICAgICAgICAgICAgICBkYXRlLmdldEhvdXJzKCkgK1xuICAgICAgICAgICAgICAgIFwiOlwiICtcbiAgICAgICAgICAgICAgICBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsIFwiMFwiKVxuICAgICAgICAgICAgKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdERhdGUoZGF0ZSwgb3ZlcndyaXRlT3B0aW9ucyA9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIG1vbnRoOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBkYXk6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIHRpbWVab25lOiB0aGlzLmdldFRpbWV6b25lKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvdmVyd3JpdGVPcHRpb25zICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgb3ZlcndyaXRlT3B0aW9ucylcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSlcblxuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdERhdGVGdWxsTGVuZ3RoKGRhdGUsIG92ZXJ3cml0ZU9wdGlvbnMgPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgZGF5OiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICB0aW1lWm9uZTogdGhpcy5nZXRUaW1lem9uZSgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3ZlcndyaXRlT3B0aW9ucyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIG92ZXJ3cml0ZU9wdGlvbnMpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwgb3B0aW9ucylcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpXG5cbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwgb3B0aW9ucylcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRCb29raW5nRGF0ZShkYXRlU3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gdGhpcy50b0NvbXBhbnlUaW1lKGRhdGVTdHJpbmcpXG5cbiAgICAgICAgICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpXG4gICAgICAgICAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDFcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKClcblxuICAgICAgICAgICAgcmV0dXJuIGAke2RheX0vJHttb250aH0tJHt5ZWFyfWBcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRUaW1lKGRhdGUsIHNlY29uZHMgPSBmYWxzZSkge1xuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCJcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBvcHRpb25zID0geyBob3VyOiBcIjItZGlnaXRcIiwgbWludXRlOiBcIjItZGlnaXRcIiwgdGltZVpvbmU6IHRoaXMuZ2V0VGltZXpvbmUoKSB9XG5cbiAgICAgICAgICAgIGlmIChzZWNvbmRzKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zZWNvbmQgPSBcIjItZGlnaXRcIlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0VGltZUtpdGNoZW4oZGF0ZSkge1xuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCJcbiAgICAgICAgICAgI
2H1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICB3ZWVrZGF5OiBcInNob3J0XCIsXG4gICAgICAgICAgICAgICAgdGltZVpvbmU6IHRoaXMuZ2V0VGltZXpvbmUoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICB9LFxuICAgICAgICBnZXRDdXJyZW5jeSgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlckNvbnRleHQgPSB0aGlzLnJlc29sdmVGb3JtYXR0ZXJDb250ZXh0KClcblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlckNvbnRleHQuY3VycmVuY3kgPz8gdGhpcy4kc3RvcmU/LmdldHRlcnM/LmNvbXBhbnk/LmN1cnJlbmN5ID8/IFwiREtLXCJcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0UHJpY2UoYW1vdW50LCBjdXJyZW5jeURpc3BsYXkgPSBcImNvZGVcIiwgcGx1c1NpZ25Gb3JQb3NpdGl2ZUFtb3VudHMgPSBmYWxzZSwgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMikge1xuICAgICAgICAgICAgbGV0IHByZWZpeCA9IHBsdXNTaWduRm9yUG9zaXRpdmVBbW91bnRzICYmIGFtb3VudCA+IDAgPyBcIitcIiA6IFwiXCJcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0geyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyIH1cblxuICAgICAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVuY3kgPSB0aGlzLmdldEN1cnJlbmN5KClcbiAgICAgICAgICAgICAgICBvcHRpb25zLnN0eWxlID0gXCJjdXJyZW5jeVwiXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5jdXJyZW5jeSA9IGN1cnJlbmN5XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5jdXJyZW5jeURpc3BsYXkgPSBjdXJyZW5jeURpc3BsYXlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHZhbHVlID0gYW1vdW50IC8gMTAwXG4gICAgICAgICAgICAvLyBJbnRsIHByaW50cyBcIi0wLDAwXCIgZm9yIC0wIGFuZCBmb3IgdGlueSBuZWdhdGl2ZXMgdGhhdCByb3VuZCB0byB6ZXJvXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnModmFsdWUpIDwgMC4wMDUpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IDBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIHZhbHVlLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICB9LFxuXG4gICAgICAgIGNhcGl0YWxpc2VGaXJzdExldHRlcihzdHIpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSlcbiAgICAgICAgfSxcblxuICAgICAgICB1bml0QWJicnYobG9uZ0Zvcm0sIHRyYW5zbGF0ZVBjcyA9IGZhbHNlKSB7XG4gICAgICAgICAgICBjb25zdCBhYmJyZXZpYXRpb25zID0ge1xuICAgICAgICAgICAgICAgIGdyYW06IFwiZ1wiLFxuICAgICAgICAgICAgICAgIGtpbG9ncmFtOiBcImtnXCIsXG4gICAgICAgICAgICAgICAgY2VudGltZXRlcjogXCJjbVwiLFxuICAgICAgICAgICAgICAgIG1ldGVyOiBcIm1cIixcbiAgICAgICAgICAgICAgICBjZW50aWxpdGVyOiBcImNsXCIsXG4gICAgICAgICAgICAgICAgbGl0ZXI6IFwibFwiLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogXCJtXCIsXG4gICAgICAgICAgICAgICAgaG91cjogXCJoXCIsXG4gICAgICAgICAgICAgICAgZGVjYWdyYW06IFwiZGdcIixcbiAgICAgICAgICAgICAgICBudWxsOiBcInBjc1wiLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobG9uZ0Zvcm0gaW4gYWJicmV2aWF0aW9ucykge1xuICAgICAgICAgICAgICAgIGxldCBhYmJydiA9IGFiYnJldmlhdGlvbnNbbG9uZ0Zvcm1dXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYWJicnYgPT09IFwicGNzXCIgJiYgdHJhbnNsYXRlUGNzID8gdGhpcy4kdChcInBvcy51bml0X2FiYnJldmlhdGlvbnMucGNzXCIpIDogYWJicnZcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdGb3JtXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FwaXRhbGlzZUFuZENvbW1hU2VwYXJhdGVXZWVrZGF5cyh3ZWVrZGF5cywgYWxsRGF5c0V4Y2VwdFRocmVzaG9sZCA9IDApIHtcbiAgICAgICAgICAgIGlmIChhbGxEYXlzRXhjZXB0VGhyZXNob2xkID4gMCAmJiB3ZWVrZGF5cy5sZW5ndGggPCA3ICYmIHdlZWtkYXlzLmxlbmd0aCA+PSA3IC0gYWxsRGF5c0V4Y2VwdFRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IE1ha2UgdGhpcyBjb2RlIG1vcmUgcGVyZm9ybWFudCBieSBpbnN0ZWFkIHBhc3Npbmcgb2JqZWN0IG9mIGFsbCB3ZWVrZGF5cyB3aXRoIGJvb2wgdmFsdWVzXG4gICAgICAgICAgICAgICAgbGV0IGV4Y2VwdCA9IFtcIm1vbmRheVwiLCBcInR1ZXNkYXlcIiwgXCJ3ZWRuZXNkYXlcIiwgXCJ0aHVyc2RheVwiLCBcImZyaWRheVwiLCBcInNhdHVyZGF5XCIsIFwic3VuZGF5XCJdLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGQpID0+ICF3ZWVrZGF5cy5pbmNsdWRlcyhkKVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHQoXCJnZW5lcmFsLmFsbF9kYXlzX2V4Y2VwdFwiKSArXG4gICAgICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICAgICAgZXhjZXB0Lm1hcCgoZCkgPT4gdGhpcy4kdChcImdlbmVyYWwud2Vla2RheXNfY29ycmVjdF9jYXBpdGFsaXNhdGlvbi5cIiArIGQpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgI
2H1cblxuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXlzXG4gICAgICAgICAgICAgICAgLm1hcCgodywgaW5kZXgpID0+IHRoaXMuJHQoXCJnZW5lcmFsLndlZWtkYXlzXCIgKyAoaW5kZXggPiAwID8gXCJfY29ycmVjdF9jYXBpdGFsaXNhdGlvblwiIDogXCJcIikgKyBcIi5cIiArIHcpKVxuICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIilcbiAgICAgICAgfSxcblxuICAgICAgICByZXNvdXJjZUVkaXRDcmVhdGVIZWFkZXIoaXNFZGl0aW5nLCByZXNvdXJjZSwgbmFtZSA9IG51bGwsIHNraXBIdG1sSXRhbGljcyA9IGZhbHNlKSB7XG4gICAgICAgICAgICAvLyBSZW1lbWJlciB0byBjaGFuZ2UgdGhpcyB3aGVuIHdlIHN0YXJ0IHN1cHBvcnRpbmcgZS5nLiBHZXJtYW4sIHdoZXJlIG5vdW5zIHdvdWxkIGhhdmUgYSBjYXBpdGFsaXplZCBmaXJzdCBsZXR0ZXJcbiAgICAgICAgICAgIGxldCB0ZXh0ID1cbiAgICAgICAgICAgICAgICB0aGlzLiR0KFwiZ2VuZXJhbC5cIiArIChpc0VkaXRpbmcgPT09IGZhbHNlID8gXCJjcmVhdGVcIiA6IFwiZWRpdFwiKSkgK1xuICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICB0aGlzLiR0KFwidHlwZXMuXCIgKyByZXNvdXJjZSkudG9Mb3dlckNhc2UoKVxuXG4gICAgICAgICAgICBpZiAoaXNFZGl0aW5nICE9PSBmYWxzZSAmJiBuYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWVTdHJpbmdcblxuICAgICAgICAgICAgICAgIGlmIChza2lwSHRtbEl0YWxpY3MpIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZVN0cmluZyA9IFwiIFwiICsgbmFtZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWVTdHJpbmcgPSBcIiA8ZW0+XCIgKyBuYW1lICsgXCI8L2VtPlwiXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGV4dCArPSBuYW1lU3RyaW5nXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0ZXh0XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb3VyY2VFZGl0Q3JlYXRlU3VibWl0VGV4dChpc0VkaXRpbmcsIHJlc291cmNlKSB7XG4gICAgICAgICAgICAvL3JldHVybiB0aGlzLiR0KCdnZW5lcmFsLicgKyAoaXNFZGl0aW5nID09PSBmYWxzZSA/ICdjcmVhdGUnIDogJ3VwZGF0ZScpKSArICcgJyArIHRoaXMuJHQoXCJ0eXBlcy5cIiArIHJlc291cmNlKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy4kdGUoXCJ0eXBlcy5cIiArIHJlc291cmNlKSA/IFwiIFwiICsgdGhpcy4kdChcInR5cGVzLlwiICsgcmVzb3VyY2UpLnRvTG93ZXJDYXNlKCkgOiBcIlwiXG4gICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcImdlbmVyYWwuXCIgKyAoaXNFZGl0aW5nID09PSBmYWxzZSA/IFwiY3JlYXRlXCIgOiBcInVwZGF0ZVwiKSkgKyBzdWZmaXhcbiAgICAgICAgfSxcblxuICAgICAgICByZXNvdXJjZURlbGV0ZVRleHQocmVzb3VyY2UpIHtcbiAgICAgICAgICAgIC8vcmV0dXJuIHRoaXMuJHQoJ2dlbmVyYWwuJyArIChpc0VkaXRpbmcgPT09IGZhbHNlID8gJ2NyZWF0ZScgOiAndXBkYXRlJykpICsgJyAnICsgdGhpcy4kdChcInR5cGVzLlwiICsgcmVzb3VyY2UpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBzdWZmaXggPSB0aGlzLiR0ZShcInR5cGVzLlwiICsgcmVzb3VyY2UpID8gXCIgXCIgKyB0aGlzLiR0KFwidHlwZXMuXCIgKyByZXNvdXJjZSkudG9Mb3dlckNhc2UoKSA6IFwiXCJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwiZ2VuZXJhbC5kZWxldGVcIikgKyBzdWZmaXhcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRBbGxSZXNvdXJjZU5hbWVUZXh0KHJlc291cmNlTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJnZW5lcmFsLmFsbF9yZXNvdXJjZV9uYW1lXCIsIHsgcmVzb3VyY2VOYW1lIH0pXG4gICAgICAgIH0sXG5cbiAgICAgICAgcGVuZGluZ0ludml0YXRpb25TdGF0dXMoaW52aXRhdGlvbikge1xuICAgICAgICAgICAgaWYgKGludml0YXRpb24uYWNjZXB0ZWRfYXQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcInBvcy5pbnZpdGF0aW9uX3N0YXR1c2VzLmFjY2VwdGVkXCIpXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGludml0YXRpb24ucmVqZWN0ZWRfYXQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcInBvcy5pbnZpdGF0aW9uX3N0YXR1c2VzLnJlamVjdGVkXCIpXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGludml0YXRpb24uZXhwaXJlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwicG9zLmludml0YXRpb25fc3RhdHVzZXMuZXhwaXJlZFwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcInBvcy5pbnZpdGF0aW9uX3N0YXR1c2VzLm9wZW5cIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRRdWFudGl0eShxdWFudGl0eSwgdW5pdCkge1xuICAgICAgICAgICAgaWYgKHVuaXQgJiYgdW5pdC5uYW1lID09PSBcImRlY2FncmFtXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHF1YW50aXR5IC8gMTAwKS50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSkgKyB0aGlzLmdldFVuaXRTdWZmaXgoXCJraWxvZ3JhbVwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcXVhbnRpdHkgKyB0aGlzLmdldFVuaXRTdWZmaXgodW5pdCAhPT0gbnVsbCA/IHVuaXQubmFtZSA6IG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0UXVhbnRpdHlPZk9yZGVyTGluZShvcmRlckxpbmUsIHF1YW50aXR5UHJvcGVydHkgPSBcInF1YW50aXR5XCIpIHtcbiAgICAgICAgICAgIGxldCB1bml0ID0gbnVsbFxuXG4gICAgICAgICAgICBpZiAob3JkZXJMaW5lPy5zZWxsYWJsZT8udW5pdCkge1xuICAgICAgICAgICAgICAgIHVuaXQgPSBvcmRlckxpbmUuc2VsbGFibGUudW5pdFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRRdWFudGl0eShvcmRlckxpbmVbcXVhbnRpdHlQcm9wZXJ0eV0sIHVuaXQpXG4gICAgICAgI
2H0sXG5cbiAgICAgICAgZ2V0VW5pdFN1ZmZpeChsb25nRm9ybSkge1xuICAgICAgICAgICAgaWYgKGxvbmdGb3JtID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiIFwiICsgdGhpcy51bml0QWJicnYobG9uZ0Zvcm0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgb3JkZXJMaW5lT3JpZ2luYWxUb3RhbChvcmRlckxpbmUsIGZvcm1hdHRlZCA9IGZhbHNlLCBxdWFudGl0eVByb3BlcnR5ID0gXCJxdWFudGl0eVwiKSB7XG4gICAgICAgICAgICBsZXQgb3JpZ2luYWxUb3RhbCA9IG9yZGVyTGluZS5wcmljZSAqIG9yZGVyTGluZVtxdWFudGl0eVByb3BlcnR5XVxuXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkID8gdGhpcy5mb3JtYXRQcmljZShvcmlnaW5hbFRvdGFsLCBmYWxzZSkgOiBvcmlnaW5hbFRvdGFsXG4gICAgICAgIH0sXG5cbiAgICAgICAgb3JkZXJMaW5lQ3VycmVudFRvdGFsKG9yZGVyTGluZSwgZm9ybWF0dGVkID0gZmFsc2UsIHF1YW50aXR5UHJvcGVydHkgPSBcInF1YW50aXR5XCIpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50VG90YWwgPSBvcmRlckxpbmUucHJpY2UgKiBvcmRlckxpbmVbcXVhbnRpdHlQcm9wZXJ0eV1cblxuICAgICAgICAgICAgY29uc3QgbGluZURpc2NvdW50UGVyY2VudGFnZSA9IG9yZGVyTGluZS5saW5lX2Rpc2NvdW50Py5wZXJjZW50YWdlXG5cbiAgICAgICAgICAgIGlmIChsaW5lRGlzY291bnRQZXJjZW50YWdlICE9IG51bGwgJiYgbGluZURpc2NvdW50UGVyY2VudGFnZSA+IDApIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50VG90YWwgPSBjdXJyZW50VG90YWwgLSBNYXRoLnJvdW5kKGN1cnJlbnRUb3RhbCAqIChsaW5lRGlzY291bnRQZXJjZW50YWdlIC8gMTAwMCkpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWQgPyB0aGlzLmZvcm1hdFByaWNlKGN1cnJlbnRUb3RhbCwgZmFsc2UpIDogY3VycmVudFRvdGFsXG4gICAgICAgIH0sXG5cbiAgICAgICAgbm9UeXBlKHR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwiZ2VuZXJhbC5ub190eXBlXCIsIHsgdHlwZTogdGhpcy4kdChcInR5cGVzLlwiICsgdHlwZSkudG9Mb3dlckNhc2UoKSB9KVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldE5hbWVPZldlZWtkYXlGcm9tSW50ZWdlcihudW1iZXIsIGxvd2VyQ2FzZSA9IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHdlZWtkYXlzID0gW1wiU3VuZGF5XCIsIFwiTW9uZGF5XCIsIFwiVHVlc2RheVwiLCBcIldlZG5lc2RheVwiLCBcIlRodXJzZGF5XCIsIFwiRnJpZGF5XCIsIFwiU2F0dXJkYXlcIl1cblxuICAgICAgICAgICAgbGV0IHdlZWtkYXkgPSB3ZWVrZGF5c1tudW1iZXJdXG5cbiAgICAgICAgICAgIGlmIChsb3dlckNhc2UpIHtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gd2Vla2RheS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5XG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0UHJvZHVjdEZvckRyb3Bkb3duKHApIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKHAucGx1ICE9PSBudWxsID8gcC5wbHUgKyBcIiB8IFwiIDogXCJcIikgK1xuICAgICAgICAgICAgICAgIHAubmFtZSArXG4gICAgICAgICAgICAgICAgXCIgfCBcIiArXG4gICAgICAgICAgICAgICAgKHAucHJpY2UgPT09IG51bGwgPyB0aGlzLiR0KFwiYWRtaW4ucHJvZHVjdHMuY2FzaGllcl9kZWNpZGVkX3ByaWNlXCIpIDogdGhpcy5mb3JtYXRQcmljZShwLnByaWNlKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgfSxcblxuICAgICAgICBhZGRMaW5rU3ltYm9sSWZTaGFyZWQodGV4dCwgbW9kZWxXaXRoQ29tcGFueURhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgKG1vZGVsV2l0aENvbXBhbnlEYXRhLmNvbXBhbnkudHlwZT8ubmFtZSA9PT0gXCJlbnRlcnByaXNlXCIgPyBcIiDwn5SXXCIgOiBcIlwiKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdENhc2hpZXJGdWxsTmFtZShjYXNoaWVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FzaGllci5maXJzdF9uYW1lICsgXCIgXCIgKyBjYXNoaWVyLmxhc3RfbmFtZVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdFBlcmNlbnRhZ2UodmFsdWUsIG9mVmFsdWUsIHNpZ25JZlBvc2l0aXZlID0gZmFsc2UsIG1pbkRpZ2l0cyA9IDAsIG1heERpZ2l0cyA9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSB2YWx1ZSAvIG9mVmFsdWVcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RGVjaW1hbEFzUGVyY2VudGFnZShwZXJjZW50YWdlLCBzaWduSWZQb3NpdGl2ZSwgbWluRGlnaXRzLCBtYXhEaWdpdHMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0RGVjaW1hbEFzUGVyY2VudGFnZSh2YWx1ZSwgc2lnbklmUG9zaXRpdmUgPSBmYWxzZSwgbWluRGlnaXRzID0gMCwgbWF4RGlnaXRzID0gMSkge1xuICAgICAgICAgICAgLy9jb25zdCBsb2NhbGVTdHJpbmdPcHRpb25zID0geyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1pbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBtYXhEaWdpdHMgfTtcbiAgICAgICAgICAgIC8vbGV0IGZvcm1hdHRlZFBlcmNlbnRhZ2UgPSB2YWx1ZS50b0xvY2FsZVN0cmluZyh0aGlzLnNlc3Npb25TdG9yYWdlLmdldCgnbG9jYWxlJyksIGxvY2FsZVN0cmluZ09wdGlvbnMpICsgJyUnO1xuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgc3R5bGU6IFwicGVyY2VudFwiLFxuICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbWluRGlnaXRzLFxuICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogbWF4RGlnaXRzLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2lnbklmUG9zaXRpdmUpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnNpZ25EaXNwbGF5ID0gXCJhbHdheXNcIlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCBvcHRpb25zKVxuXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSlcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRWYXRQZXJjZW50KHZhdFBlcmNlbnQsIG1pbkRpZ2l0cyA9IDAsIG1heERpZ2l0cyA9IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IG51bWVyaWNWYXRQZXJjZW50ID0gTnVtYmVyKHZhdFBlcmNlbnQpXG5cbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG51bWVyaWNWYXRQZXJjZW50KSkge1xuICAgICAgICAgICAgICAgI
2HJldHVybiBcIlwiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEV4cGVjdHMgVkFUIHBlcmNlbnRhZ2UgcG9pbnRzIHdoZXJlIDI1IG1lYW5zIDI1JS5cbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxWYWx1ZSA9IG51bWVyaWNWYXRQZXJjZW50IC8gMTAwXG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdERlY2ltYWxBc1BlcmNlbnRhZ2UoZGVjaW1hbFZhbHVlLCBmYWxzZSwgbWluRGlnaXRzLCBtYXhEaWdpdHMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0UGVyY2VudGFnZURpc2NvdW50KGRpc2NvdW50UGVyTWlsbGUsIG1pbkRpZ2l0cyA9IDAsIG1heERpZ2l0cyA9IDEpIHtcbiAgICAgICAgICAgIGlmIChkaXNjb3VudFBlck1pbGxlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBudW1lcmljRGlzY291bnQgPSBOdW1iZXIoZGlzY291bnRQZXJNaWxsZSlcblxuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobnVtZXJpY0Rpc2NvdW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEV4cGVjdHMgcGVyLW1pbGxlIHdoZXJlIDIwMCBtZWFucyAyMCUuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXREZWNpbWFsQXNQZXJjZW50YWdlKG51bWVyaWNEaXNjb3VudCAvIDEwMDAsIGZhbHNlLCBtaW5EaWdpdHMsIG1heERpZ2l0cylcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRDdXN0b21lclR5cGVJY29uQ2xhc3ModHlwZVN0cmluZykge1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcImJ1c2luZXNzXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImJpLWJ1aWxkaW5nc1wiXG4gICAgICAgICAgICAgICAgY2FzZSBcInByaXZhdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYmktcGVyc29uXCJcbiAgICAgICAgICAgICAgICBjYXNlIFwicHVibGljXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImJpLWJhbmtcIlxuICAgICAgICAgICAgICAgIGNhc2UgXCJlbXBsb3llZVwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJiaS1maWxlLXBlcnNvblwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0Q29tcGFueU5hbWVUcmFuc2xhdGlvbkZyb21UeXBlKGN1c3RvbWVyVHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoIChjdXN0b21lclR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYnVzaW5lc3NcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJhZGRyZXNzZXMuY29tcGFueV9uYW1lXCIpXG4gICAgICAgICAgICAgICAgY2FzZSBcInB1YmxpY1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcImFkbWluLmN1c3RvbWVycy5hdXRob3JpdHlfc2xhc2hfb3JnYW5pc2F0aW9uXCIpXG4gICAgICAgICAgICAgICAgY2FzZSBcImVtcGxveWVlXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwiYWRtaW4uY3VzdG9tZXJzLnR5cGUuZW1wbG95ZWVcIilcbiAgICAgICAgICAgICAgICBjYXNlIFwicHJpdmF0ZVwiOlxuICAgICAgICAgICAgICAgIGNhc2UgbnVsbDpcbiAgICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJhZG1pbi5jdXN0b21lcnMuY29tcGFueV9zbGFzaF9vcmdhbmlzYXRpb25cIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRBY2NvdW50KGFjY291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHthY2NvdW50LmFjY291bnRfbnVtYmVyfSAke2FjY291bnQubmFtZX1gXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0UHJpY2VQcm9maWxlSWRlbnRpZmllcihwcmljZVByb2ZpbGUpIHtcbiAgICAgICAgICAgIGlmIChwcmljZVByb2ZpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJpY2VQcm9maWxlLm5hbWUgPT09IG51bGwgPyB0aGlzLiR0KFwiZ2VuZXJhbC5kZWZhdWx0XCIpIDogcHJpY2VQcm9maWxlLm5hbWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJhZG1pbi5wcm9kdWN0cy5ub19hdmFpbGFiaWxpdHlcIilcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRDb21wYW55TmFtZShjb21wYW55LCB3aXRoSWRBbmRBZG1pblBhbmVsSWRlbnRpZmllciA9IGZhbHNlLCB3aXRoVHlwZSA9IGZhbHNlKSB7XG4gICAgICAgICAgICBsZXQgbmFtZVN0cmluZyA9IGNvbXBhbnkuZGlzcGxheV9uYW1lID8/IGNvbXBhbnkudmF0X2VudGl0eT8ubmFtZVxuXG4gICAgICAgICAgICBpZiAod2l0aElkQW5kQWRtaW5QYW5lbElkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29tcGFueS5hZG1pbl9wYW5lbF9pZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWVTdHJpbmcgPSBgWyR7Y29tcGFueS5hZG1pbl9wYW5lbF9pZGVudGlmaWVyfV0gJHtuYW1lU3RyaW5nfWBcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuYW1lU3RyaW5nID0gYCR7Y29tcGFueS5pZH06ICR7bmFtZVN0cmluZ31gXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh3aXRoVHlwZSkge1xuICAgICAgICAgICAgICAgIG5hbWVTdHJpbmcgPSBgJHtuYW1lU3RyaW5nfSAoJHt0aGlzLiR0KFwic3VwZXJhZG1pbi5jb21wYW5pZXMudHlwZXMuXCIgKyBjb21wYW55LnR5cGUubmFtZSl9KWBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5hbWVTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRHaWZ0Q2FyZFR5cGVCZWhhdmlvdXJJY29uKGdpZnRDYXJkVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGdpZnRDYXJkVHlwZS5iZWhhdmlvdXIgPT09IFwidmFsdWUtYmFzZWRcIiA/IFwiYmktY2FzaFwiIDogXCJiaS1jdXAtc3RyYXdcIlxuICAgICAgICB9LFxuXG4gICAgICAgIC8vIHRpbWVTdHJpbmcgc2hvdWxkIGJlIGFuIFVUQyB0aW1lIGZyb20gdGhlIHNlcnZlci4gSSBrbm93IHRoaXMgZG9lc24ndCBmb3JtYXQgYW55dGhpbmcsIGJ1dCBJIG5lZWQgaXQgaW5cbiAgICAgICAgLy8gc2V2ZXJhbCBwbGFjZXMsIHNvIEknbGwganVzdCBsZWF2ZSBpdCBoZXJlIGZvciBub3dcbiAgICAgICAgdG9Db21wYW5
25VGltZSh0aW1lU3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9ab25lZFRpbWUobmV3IERhdGUodGltZVN0cmluZyksIHRoaXMuZ2V0VGltZXpvbmUoKSlcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRBbW91bnRGb3JtYXR0ZXIoZm9yY2VEZWNpbWFscyA9IHRydWUsIGN1cnJlbmN5RGlzcGxheSA9IFwiY29kZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLmZvcm1hdFByaWNlKHZhbHVlLCBjdXJyZW5jeURpc3BsYXksIGZhbHNlLCBmb3JjZURlY2ltYWxzID8gMiA6IDApXG4gICAgICAgIH0sXG5cbiAgICAgICAgLyogdG9TbmFrZUNhc2Uoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcVysvZywgXCIgXCIpXG4gICAgICAgICAgICAgICAgLnNwbGl0KC8gfFxcQig/PVtBLVpdKS8pXG4gICAgICAgICAgICAgICAgLm1hcCh3b3JkID0+IHdvcmQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAuam9pbignXycpO1xuICAgICAgICB9LCAqL1xuICAgIH0sXG59XG4iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwidGhpcyIsIl9jIiwiX3NlbGYiLCJjbGFzcyIsImV4dHJhQnV0dG9uQ2xhc3NlcyIsInVuZGVmaW5lZCIsImJzQ29sb3VyIiwic21hbGwiLCJsYXJnZSIsImF0dHJzIiwic3VibWl0RnVuYyIsImRpc2FibGVkQ29uZGl0aW9uIiwic3Bpbm5lckNvbmRpdGlvbiIsImV4dHJhRGlzYWJsZWRDb25kaXRpb24iLCJvbiIsIiRldmVudCIsIiRlbWl0IiwiYnNJY29uIiwic3RhdGljQ2xhc3MiLCJidXR0b25UZXh0IiwiZG9tUHJvcHMiLCJfcyIsIl9lIiwiYWRkS2V5SWNvbiIsInN0YXRpY1JlbmRlckZucyIsIm5hbWUiLCJwcm9wcyIsInR5cGUiLCJTdHJpbmciLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJCb29sZWFuIiwiY29tcG9uZW50IiwiX3YiLCIkdCIsInByZXZlbnREZWZhdWx0Iiwic3VibWl0Q3JlYXRlQm94Rm9ybSIsImFwcGx5IiwiYXJndW1lbnRzIiwiZGlyZWN0aXZlcyIsInJhd05hbWUiLCJ2YWx1ZSIsImJveENyZWF0ZURhdGEiLCJtYWMiLCJleHByZXNzaW9uIiwidGFyZ2V0IiwiY29tcG9zaW5nIiwiJHNldCIsImlzUHJvY2Vzc2luZ0JveENyZWF0ZVJlcXVlc3QiLCJib3hlcyIsImxlbmd0aCIsIl9sIiwiYm94IiwiYm94SW5kZXgiLCJpZGVudGlmaWVyIiwiZm9ybWF0RGF0ZVRpbWUiLCJjcmVhdGVkX2F0IiwicmVmcmVzaEJveCIsImlzUHJvY2Vzc2luZ1JlZnJlc2hSZXF1ZXN0IiwiJHN0b3JlIiwiZ2V0dGVycyIsImlzV3N5UGVyc29uIiwiZGVsZXRlQm94IiwiaXNQcm9jZXNzaW5nRGVzdHJveVJlcXVlc3QiLCJtaXhpbnMiLCJmb3JtYXR0ZXIiLCJjb21wb25lbnRzIiwiYWRtaW5TcGlubmVyQnV0dG9uIiwiZGF0YSIsIm1ldGhvZHMiLCJnZXRCb3hlcyIsInJlc3BvbnNlIiwid3N5QVBJIiwiZ2V0IiwiaW5jbHVkZV9wZXJpcGhlcmFscyIsInZhbGlkYXRlUmVzcG9uc2UiLCJjb21taXQiLCJ1dWlkIiwicG9zdCIsInRleHQiLCJwcmludGVycyIsInRlcm1pbmFscyIsInNjYWxlcyIsInB1c2giLCJwZXJpcGhlcmFsc05vdGlmaWNhdGlvbiIsImFkZGVkUHJpbnRlcnMiLCJhZGRlZFRlcm1pbmFscyIsImFkZGVkU2NhbGVzIiwicHJlZml4IiwiJHRjIiwiaW5kZXgiLCJjb25jYXQiLCJkZWxldGUiLCJzcGxpY2UiLCJtZXNzYWdlIiwibW91bnRlZCIsImNvbXB1dGVkIiwibG9jYWxlIiwiZ2V0TG9jYWxlIiwicmVzb2x2ZUZvcm1hdHRlckNvbnRleHQiLCJjdXJyZW50Q29tcG9uZW50IiwiZm9ybWF0dGVyQ29udGV4dCIsIiRwYXJlbnQiLCJjb21wYW55IiwiZ2V0VGltZXpvbmUiLCJ0aW1lem9uZSIsImZvcm1hdERhdGVUaW1lRnJvbURhdGUiLCJkYXRlIiwid2Vla2RheUZvcm1hdE9yRmFsc2UiLCJvcHRpb25zIiwieWVhciIsIm1vbnRoIiwiZGF5IiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsInRpbWVab25lIiwid2Vla2RheSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsImRhdGVUaW1lIiwib21pdERhdGVJZlNhbWVEYXRlIiwiRGF0ZSIsInJlZmVyZW5jZURhdGUiLCJnZXREYXRlIiwidG9Mb2NhbGVUaW1lU3RyaW5nIiwiZm9ybWF0RGF0ZVRpbWVXaXRob3V0U2Vjb25kcyIsImZvcm1hdERhdGVUaW1lV2l0aFllYXIiLCJnZXRNb250aCIsImdldEZ1bGxZZWFyIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwicGFkU3RhcnQiLCJmb3JtYXRMZXNzUHJlY2lzZURhdGVUaW1lIiwidG9Db21wYW55VGltZSIsImZvcm1hdERhdGUiLCJvdmVyd3JpdGVPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwiZm9ybWF0RGF0ZUZ1bGxMZW5ndGgiLCJmb3JtYXRCb29raW5nRGF0ZSIsImRhdGVTdHJpbmciLCJmb3JtYXRUaW1lIiwic2Vjb25kcyIsImZvcm1hdFRpbWVLaXRjaGVuIiwiZ2V0Q3VycmVuY3kiLCJjdXJyZW5jeSIsImZvcm1hdFByaWNlIiwiYW1vdW50IiwiY3VycmVuY3lEaXNwbGF5IiwicGx1c1NpZ25Gb3JQb3NpdGl2ZUFtb3VudHMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJzdHlsZSIsIk1hdGgiLCJhYnMiLCJ0b0xvY2FsZVN0cmluZyIsImNhcGl0YWxpc2VGaXJzdExldHRlciIsInN0ciIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJ1bml0QWJicnYiLCJsb25nRm9ybSIsInRyYW5zbGF0ZVBjcyIsImFiYnJldmlhdGlvbnMiLCJncmFtIiwia2lsb2dyYW0iLCJjZW50aW1ldGVyIiwibWV0ZXIiLCJjZW50aWxpdGVyIiwibGl0ZXIiLCJkZWNhZ3JhbSIsIm51bGwiLCJhYmJydiIsImNhcGl0YWxpc2VBbmRDb21tYVNlcGFyYXRlV2Vla2RheXMiLCJ3ZWVrZGF5cyIsImFsbERheXNFeGNlcHRUaHJlc2hvbGQiLCJleGNlcHQiLCJmaWx0ZXIiLCJkIiwiaW5jbHVkZXMiLCJtYXAiLCJ3Iiwiam9pbiIsInJlc291cmNlRWRpdENyZWF0ZUhlYWRlciIsImlzRWRpdGluZyIsInJlc291cmNlIiwic2tpcEh0bWxJdGFsaWNzIiwidG9Mb3dlckNhc2UiLCJuYW1lU3RyaW5nIiwicmVzb3VyY2VFZGl0Q3JlYXRlU3VibWl0VGV4dCIsInN1ZmZpeCIsIiR0ZSIsInJlc291cmNlRGVsZXRlVGV4dCIsImdldEFsbFJlc291cmNlTmFtZVRleHQiLCJyZXNvdXJjZU5hbWUiLCJwZW5kaW5nSW52aXRhdGlvblN0YXR1cyIsImludml0YXRpb24iLCJhY2NlcHRlZF9hdCIsInJlamVjdGVkX2F0IiwiZXhwaXJlZCIsImZvcm1hdFF1YW50aXR5IiwicXVhbnRpdHkiLCJ1bml0IiwiZ2V0VW5pdFN1ZmZpeCIsImZvcm1hdFF1YW50aXR5T2ZPcmRlckxpbmUiLCJvcmRlckxpbmUiLCJxdWFudGl0eVByb3BlcnR5Iiwic2VsbGFibGUiLCJvcmRlckxpbmVPcmlnaW5hbFRvdGFsIiwiZm9ybWF0dGVkIiwib3JpZ2luYWxUb3RhbCIsInByaWNlIiwib3JkZXJMaW5lQ3VycmVudFRvdGFsIiwiY3VycmVudFRvdGFsIiwibGluZURpc2NvdW50UGVyY2VudGFnZSIsImxpbmVfZGlzY291bnQiLCJwZXJjZW50YWdlIiwicm91bmQiLCJub1R5cGUiLCJnZXROYW1lT2ZXZWVrZGF5RnJvbUludGVnZXIiLCJudW1iZXIiLCJsb3dlckNhc2UiLCJmb3JtYXRQcm9kdWN0Rm9yRHJvcGRvd24iLCJwIiwicGx1IiwiYWRkTGlua1N5bWJvbElmU2hhcmVkIiwibW9kZWxXaXRoQ29tcGFueURhdGEiLCJmb3JtYXRDYXNoaWVyRnVsbE5hbWUiLCJjYXNoaWVyIiwi
2Zmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsImZvcm1hdFBlcmNlbnRhZ2UiLCJvZlZhbHVlIiwic2lnbklmUG9zaXRpdmUiLCJtaW5EaWdpdHMiLCJtYXhEaWdpdHMiLCJmb3JtYXREZWNpbWFsQXNQZXJjZW50YWdlIiwic2lnbkRpc3BsYXkiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZm9ybWF0IiwiZm9ybWF0VmF0UGVyY2VudCIsInZhdFBlcmNlbnQiLCJudW1lcmljVmF0UGVyY2VudCIsIk51bWJlciIsImlzRmluaXRlIiwiZGVjaW1hbFZhbHVlIiwiZm9ybWF0UGVyY2VudGFnZURpc2NvdW50IiwiZGlzY291bnRQZXJNaWxsZSIsIm51bWVyaWNEaXNjb3VudCIsImdldEN1c3RvbWVyVHlwZUljb25DbGFzcyIsInR5cGVTdHJpbmciLCJnZXRDb21wYW55TmFtZVRyYW5zbGF0aW9uRnJvbVR5cGUiLCJjdXN0b21lclR5cGUiLCJmb3JtYXRBY2NvdW50IiwiYWNjb3VudCIsImFjY291bnRfbnVtYmVyIiwiZ2V0UHJpY2VQcm9maWxlSWRlbnRpZmllciIsInByaWNlUHJvZmlsZSIsImdldENvbXBhbnlOYW1lIiwid2l0aElkQW5kQWRtaW5QYW5lbElkZW50aWZpZXIiLCJ3aXRoVHlwZSIsImRpc3BsYXlfbmFtZSIsInZhdF9lbnRpdHkiLCJhZG1pbl9wYW5lbF9pZGVudGlmaWVyIiwiaWQiLCJnZXRHaWZ0Q2FyZFR5cGVCZWhhdmlvdXJJY29uIiwiZ2lmdENhcmRUeXBlIiwiYmVoYXZpb3VyIiwidGltZVN0cmluZyIsInRvWm9uZWRUaW1lIiwiZ2V0QW1vdW50Rm9ybWF0dGVyIiwiZm9yY2VEZWNpbWFscyJdLCJzb3VyY2VSb290IjoiIn0=
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.