1"use strict";(self["webpackChunkwsypos_frontend"]=self["webpackChunkwsypos_frontend"]||[]).push([[6821],{56821:function(t,e,s){s.r(e),s.d(e,{default:function(){return d}});var a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-xl-8 col-lg-10 col-md-12 p-4"},[e("span",{staticClass:"h1",domProps:{innerHTML:t._s(t.title)}}),e("span",{staticClass:"align-text-bottom ms-3"},[e("back-button")],1),e("div",{staticClass:"mt-5 product-import-container"},[e("div",{staticClass:"something"},[e("div",{staticClass:"card-body"},[e("div",{staticClass:"mb-4"},[e("h5",[t._v("Step 1: Download Template")]),e("p",{staticClass:"text-muted"},[t._v(" Download the Excel template, fill in your product data, and upload it below. ")]),e("button",{staticClass:"btn btn-primary",attrs:{disabled:t.isDownloading},on:{click:t.downloadTemplate}},[t.isDownloading?e("span",[e("span",{staticClass:"spinner-border spinner-border-sm me-2"}),t._v(" Downloading... ")]):e("span",[e("i",{staticClass:"bi bi-download me-2"}),t._v(" Download Template ")])])]),e("hr"),e("div",{staticClass:"mb-4"},[e("h5",[t._v("Step 2: Upload Filled Template")]),e("div",{staticClass:"upload-area",class:{"drag-over":t.isDragOver}},[e("input",{ref:"fileInput",staticClass:"d-none",attrs:{type:"file",accept:".xlsx,.xls,.csv"},on:{change:t.handleFileSelect}}),e("div",{staticClass:"upload-content",on:{click:function(e){return t.$refs.fileInput.click()},dragover:function(e){e.preventDefault(),t.isDragOver=!0},dragleave:function(e){e.preventDefault(),t.isDragOver=!1},drop:function(e){return e.preventDefault(),t.handleFileDrop.apply(null,arguments)}}},[e("i",{staticClass:"bi bi-cloud-upload display-4 text-muted mb-3"}),t._m(0),e("p",{staticClass:"text-muted small"},[t._v(" Excel files only (XLSX, XLS, CSV) ")])]),t.selectedFile?e("div",{staticClass:"selected-file mt-3"},[e("div",{staticClass:"d-flex align-items-center justify-content-between"},[e("div",[e("i",{staticClass:"bi bi-file-earmark-excel text-success me-2"}),e("strong",[t._v(t._s(t.selectedFile.name))]),e("span",{staticClass:"text-muted ms-2"},[t._v("("+t._s(t.formatFileSize(t.selectedFile.size))+")")])]),e("button",{staticClass:"btn btn-sm btn-outline-danger",on:{click:function(e){return e.stopPropagation(),t.clearFile.apply(null,arguments)}}},[e("i",{staticClass:"bi bi-x"})])])]):t._e()]),t.selectedFile?e("button",{staticClass:"btn btn-success mt-3",attrs:{disabled:t.isUploading},on:{click:t.uploadFile}},[t.isUploading?e("span",[e("span",{staticClass:"spinner-border spinner-border-sm me-2"}),t._v(" Uploading... ")]):e("span",[e("i",{staticClass:"bi bi-upload me-2"}),t._v(" Upload and Import ")])]):t._e()]),t.isUploading?e("div",{staticClass:"mb-3"},[e("div",{staticClass:"progress"},[e("div",{staticClass:"progress-bar progress-bar-striped progress-bar-animated",style:{width:t.uploadProgress+"%"},attrs:{role:"progressbar"}},[t._v(" "+t._s(t.uploadProgress)+"% ")])])]):t._e(),t.error?e("div",{staticClass:"alert alert-danger alert-dismissible fade show",attrs:{role:"alert"}},[e("strong",[t._v("Import Failed!")]),e("pre",{staticClass:"mb-0 mt-2",staticStyle:{"white-space":"pre-wrap"}},[t._v(t._s(t.error))]),e("button",{staticClass:"btn-close",attrs:{type:"button"},on:{click:function(e){t.error=null}}})]):t._e(),t.success?e("div",{staticClass:"alert alert-success alert-dismissible fade show",attrs:{role:"alert"}},[e("strong",[t._v("Success!")]),t._v(" Products imported successfully. "+t._s(t.rowsImported)+" product(s) imported. "),e("button",{staticClass:"btn-close",attrs:{type:"button"},on:{click:function(e){t.success=!1}}})]):t._e()])])])])},r=[function(){var t=this,e=t._self._c;return e("p",{staticClass:"mb-2"},[e("strong",[t._v("Click to upload")]),t._v(" or drag and drop ")])}],i=(s(14603),s(47566),s(98721),s(3513)),n={name:"ProductExcelImport",data(){return{title:"Import Products From Excel",selectedFile:null,isUploading:!1,isDownloading:!1,isDragOver:!1,uploadProgress:0,error:null,success:!1,rowsImported:0}},components:{BackButton:i.A},methods:{async downloadTemplate(){this.isDownloading=!0;try{const t=await axios.get("products/downloadExcelTemplate",{responseType:"blob"}),e=window.URL.createObjectURL(new Blob([t.data])),s=document.createElement("a");s.href=e,s.setAttribute("download","product_import_template.xlsx"),document.body.appendChild(s),s.click(),s.remove(),window.URL.revokeObjectURL(e)}catch(t){this.error="Failed to download template: "+(t.response?.data?.message||t.message)}finally{this.isDownloading=!1}},handleFileSelect(t){const e=t.target.files[0];e&&this.validateAndSetFile(e)},handleFileDrop(t){this.isDragOver=!1;const e=t.dataTransfer.files[0];e&&this.validateAndSetFile(e)},validateAndSetFile(t){const e=["application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","text/csv"];e.includes(t.type)||t.name.match(/\.(xlsx?|csv)$/i)?t.size>10485760?this.error="File size must be less than 10MB":(this.selectedFile=t,this.error=null,this.success=!1):this.error="Please select a valid Excel file (XLSX, XLS, or CSV)"},clearFile(){this.selectedFile=null,this.$refs.fileInput.value="",this.error=null,this.success=!1,this.rowsImported=0},async uploadFile(){if(!this.selectedFile)return;this.isUploading=!0,this.uploadProgress=0,this.error=null,this.success=!1;const t=new FormData;t.append("file",this.selectedFile),await axios.post("products/uploadExcel",t,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:t=>{this.uploadProgress=Math.round(100*t.loaded/t.total)}}).then((t=>{this.clearFile(),this.success=!0,this.rowsImported=t.data?.rows_count??0})).catch((t=>{this.error=t.data?.message||t.message,t.response?.data?.errors&&(this.error+="\n\n"+JSON.stringify(t.response.data.errors,null,2))})),this.isUploading=!1,this.uploadProgress=0},formatFileSize(t){if(0===t)return"0 Bytes";const e=1024,s=["Bytes","KB","MB","GB"],a=Math.floor(Math.log(t)/Math.log(e));return Math.round(t/Math.pow(e,a)*100)/100+" "+s[a]}},created(){}},l=n,o=s(81656),c=(0,o.A)(l,a,r,!1,null,"e08e3f1c",null),d=c.exports},3513:function(t,e,s){s.d(e,{A:function(){return c}});var a=function(){var t=this,e=t._self._c;return t.address&&t.address instanceof String?e("a",{staticClass:"btn btn-warning",attrs:{href:t.address}},[e("i",{staticClass:"bi bi-arrow-left me-1"}),t._v(t._s(t.$t("general.back"))+" ")]):t.address&&t.address instanceof Object?e("router-link",{staticClass:"btn btn-warning",attrs:{to:t.address}},[e("i",{staticClass:"bi bi-arrow-left me-1"}),t._v(t._s(t.$t("general.back"))+" ")]):e("a",{staticClass:"btn btn-warning",on:{click:function(e){return t.$router.go(-1)}}},[e("i",{staticClass:"bi bi-arrow-left me-1"}),t._v(t._s(t.$t("general.back"))+" ")])},r=[],i={name:"BackButton",props:{address:{type:String|Boolean,default:!1}}},n=i,l=s(81656),o=(0,l.A)(n,a,r,!1,null,"d7789cae",null),c=o.exports},36955:function(t,e,s){var a=s(92140),r=s(94901),i=s(22195),n=s(78227),l=n("toStringTag"),o=Object,c="Arguments"===i(function(){return arguments}()),d=function(t,e){try{return t[e]}catch(s){}};t.exports=a?i:function(t){var e,s,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(s=d(e=o(t),l))?s:c?i(e):"Object"===(a=i(e))&&r(e.callee)?"Arguments":a}},62106:function(t,e,s){var a=s(50283),r=s(24913);t.exports=function(t,e,s){return s.get&&a(s.get,e,{getter:!0}),s.set&&a(s.set,e,{setter:!0}),r.f(t,e,s)}},92140:function(t,e,s){var a=s(78227),r=a("toStringTag"),i={};i[r]="z",t.exports="[object z]"===String(i)},655:function(t,e,s){var a=s(36955),r=String;t.exports=function(t){if("Symbol"===a(t))throw new TypeError("Cannot convert a Symbol value to a string");return r(t)}},22812:function(t){var e=TypeError;t.exports=function(t,s){if(t<s)throw new e("Not enough arguments");return t}},14603:function(t,e,s){var a=s(36840),r=s(79504),i=s(655),n=s(22812),l=URLSearchParams,o=l.prototype,c=r(o.append),d=r(o["delete"]),u=r(o.forEac
1h),p=r([].push),f=new l("a=1&a=2&b=3");f["delete"]("a",1),f["delete"]("b",void 0),f+""!=="a=2"&&a(o,"delete",(function(t){var e=arguments.length,s=e<2?void 0:arguments[1];if(e&&void 0===s)return d(this,t);var a=[];u(this,(function(t,e){p(a,{key:e,value:t})})),n(e,1);var r,l=i(t),o=i(s),f=0,m=0,h=!1,v=a.length;while(f<v)r=a[f++],h||r.key===l?(h=!0,d(this,r.key)):m++;while(m<v)r=a[m++],r.key===l&&r.value===o||c(this,r.key,r.value)}),{enumerable:!0,unsafe:!0})},47566:function(t,e,s){var a=s(36840),r=s(79504),i=s(655),n=s(22812),l=URLSearchParams,o=l.prototype,c=r(o.getAll),d=r(o.has),u=new l("a=1");!u.has("a",2)&&u.has("a",void 0)||a(o,"has",(function(t){var e=arguments.length,s=e<2?void 0:arguments[1];if(e&&void 0===s)return d(this,t);var a=c(this,t);n(e,1);var r=i(s),l=0;while(l<a.length)if(a[l++]===r)return!0;return!1}),{enumerable:!0,unsafe:!0})},98721:function(t,e,s){var a=s(43724),r=s(79504),i=s(62106),n=URLSearchParams.prototype,l=r(n.forEach);a&&!("size"in n)&&i(n,"size",{get:function(){var t=0;return l(this,(function(){t++})),t},configurable:!0,enumerable:!0})}}]); 2//# sourceMappingURL=data:application/json;charset=utf-8;base64,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tBQzVDZCxFQUFTLElBQUlQLEVBQWlCLFFBSTlCTyxFQUFPYyxJQUFJLElBQUssSUFBT2QsRUFBT2MsSUFBSSxTQUFLMUMsSUFDekNpQixFQUFjTSxFQUEwQixPQUFPLFNBQWE1SCxHQUMxRCxJQUFJa0ksRUFBU3JJLFVBQVVxSSxPQUNuQkMsRUFBU0QsRUFBUyxPQUFJN0IsRUFBWXhHLFVBQVUsR0FDaEQsR0FBSXFJLFFBQXFCN0IsSUFBWDhCLEVBQXNCLE9BQU9XLEVBQUt4SyxLQUFNMEIsR0FDdEQsSUFBSWdKLEVBQVNILEVBQU92SyxLQUFNMEIsR0FDMUJ5SCxFQUF3QlMsRUFBUSxHQUNoQyxJQUFJaEYsRUFBUXNFLEVBQVNXLEdBQ2pCSSxFQUFRLEVBQ1osTUFBT0EsRUFBUVMsRUFBT2QsT0FDcEIsR0FBSWMsRUFBT1QsT0FBYXJGLEVBQU8sT0FBTyxFQUN0QyxPQUFPLENBQ1gsR0FBRyxDQUFFeUYsWUFBWSxFQUFNQyxRQUFRLEcsd0JDekJqQyxJQUFJSyxFQUFjLEVBQVEsT0FDdEIxQixFQUFjLEVBQVEsT0FDdEIyQixFQUF3QixFQUFRLE9BRWhDdEIsRUFBMkJELGdCQUFnQkUsVUFDM0NFLEVBQVVSLEVBQVlLLEVBQXlCRyxTQUkvQ2tCLEtBQWlCLFNBQVVyQixJQUM3QnNCLEVBQXNCdEIsRUFBMEIsT0FBUSxDQUN0RHRHLElBQUssV0FDSCxJQUFJNkgsRUFBUSxFQUVaLE9BREFwQixFQUFRekosTUFBTSxXQUFjNkssR0FBUyxJQUM5QkEsQ0FDVCxFQUNBQyxjQUFjLEVBQ2RULFlBQVksRyIsInNvdXJjZXMiOlsid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL1Byb2R1Y3RFeGNlbEltcG9ydC52dWUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kL3NyYy9jb21wb25lbnRzL2FkbWluL1Byb2R1Y3RFeGNlbEltcG9ydC52dWUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4vUHJvZHVjdEV4Y2VsSW1wb3J0LnZ1ZT9hYzQ0Iiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2FkbWluL1Byb2R1Y3RFeGNlbEltcG9ydC52dWU/NGNhMCIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9hZG1pbi9taW5vci9CYWNrQnV0dG9uLnZ1
2ZSIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvYWRtaW4vbWlub3IvQmFja0J1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4vbWlub3IvQmFja0J1dHRvbi52dWU/MDkzMyIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9hZG1pbi9taW5vci9CYWNrQnV0dG9uLnZ1ZT81NDM1Iiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IuanMiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydC5qcyIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoLmpzIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmRlbGV0ZS5qcyIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5oYXMuanMiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuc2l6ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCl7dmFyIF92bT10aGlzLF9jPV92bS5fc2VsZi5fYztyZXR1cm4gX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29sLXhsLTggY29sLWxnLTEwIGNvbC1tZC0xMiBwLTRcIn0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJoMVwiLGRvbVByb3BzOntcImlubmVySFRNTFwiOl92bS5fcyhfdm0udGl0bGUpfX0pLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJhbGlnbi10ZXh0LWJvdHRvbSBtcy0zXCJ9LFtfYygnYmFjay1idXR0b24nKV0sMSksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwibXQtNSBwcm9kdWN0LWltcG9ydC1jb250YWluZXJcIn0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInNvbWV0aGluZ1wifSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY2FyZC1ib2R5XCJ9LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJtYi00XCJ9LFtfYygnaDUnLFtfdm0uX3YoXCJTdGVwIDE6IERvd25sb2FkIFRlbXBsYXRlXCIpXSksX2MoJ3AnLHtzdGF0aWNDbGFzczpcInRleHQtbXV0ZWRcIn0sW192bS5fdihcIiBEb3dubG9hZCB0aGUgRXhjZWwgdGVtcGxhdGUsIGZpbGwgaW4geW91ciBwcm9kdWN0IGRhdGEsIGFuZCB1cGxvYWQgaXQgYmVsb3cuIFwiKV0pLF9jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcImJ0biBidG4tcHJpbWFyeVwiLGF0dHJzOntcImRpc2FibGVkXCI6X3ZtLmlzRG93bmxvYWRpbmd9LG9uOntcImNsaWNrXCI6X3ZtLmRvd25sb2FkVGVtcGxhdGV9fSxbKF92bS5pc0Rvd25sb2FkaW5nKT9fYygnc3BhbicsW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSBtZS0yXCJ9KSxfdm0uX3YoXCIgRG93bmxvYWRpbmcuLi4gXCIpXSk6X2MoJ3NwYW4nLFtfYygnaScse3N0YXRpY0NsYXNzOlwiYmkgYmktZG93bmxvYWQgbWUtMlwifSksX3ZtLl92KFwiIERvd25sb2FkIFRlbXBsYXRlIFwiKV0pXSldKSxfYygnaHInKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJtYi00XCJ9LFtfYygnaDUnLFtfdm0uX3YoXCJTdGVwIDI6IFVwbG9hZCBGaWxsZWQgVGVtcGxhdGVcIildKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ1cGxvYWQtYXJlYVwiLGNsYXNzOnsgJ2RyYWctb3Zlcic6IF92bS5pc0RyYWdPdmVyIH19LFtfYygnaW5wdXQnLHtyZWY6XCJmaWxlSW5wdXRcIixzdGF0aWNDbGFzczpcImQtbm9uZVwiLGF0dHJzOntcInR5cGVcIjpcImZpbGVcIixcImFjY2VwdFwiOlwiLnhsc3gsLnhscywuY3N2XCJ9LG9uOntcImNoYW5nZVwiOl92bS5oYW5kbGVGaWxlU2VsZWN0fX0pLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInVwbG9hZC1jb250ZW50XCIsb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0uJHJlZnMuZmlsZUlucHV0LmNsaWNrKCl9LFwiZHJhZ292ZXJcIjpmdW5jdGlvbigkZXZlbnQpeyRldmVudC5wcmV2ZW50RGVmYXVsdCgpO192bS5pc0RyYWdPdmVyID0gdHJ1ZX0sXCJkcmFnbGVhdmVcIjpmdW5jdGlvbigkZXZlbnQpeyRldmVudC5wcmV2ZW50RGVmYXVsdCgpO192bS5pc0RyYWdPdmVyID0gZmFsc2V9LFwiZHJvcFwiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5oYW5kbGVGaWxlRHJvcC5hcHBseShudWxsLCBhcmd1bWVudHMpfX19LFtfYygnaScse3N0YXRpY0NsYXNzOlwiYmkgYmktY2xvdWQtdXBsb2FkIGRpc3BsYXktNCB0ZXh0LW11dGVkIG1iLTNcIn0pLF92bS5fbSgwKSxfYygncCcse3N0YXRpY0NsYXNzOlwidGV4dC1tdXRlZCBzbWFsbFwifSxbX3ZtLl92KFwiIEV4Y2VsIGZpbGVzIG9ubHkgKFhMU1gsIFhMUywgQ1NWKSBcIildKV0pLChfdm0uc2VsZWN0ZWRGaWxlKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJzZWxlY3RlZC1maWxlIG10LTNcIn0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIn0sW19jKCdkaXYnLFtfYygnaScse3N0YXRpY0NsYXNzOlwiYmkgYmktZmlsZS1lYXJtYXJrLWV4Y2VsIHRleHQtc3VjY2VzcyBtZS0yXCJ9KSxfYygnc3Ryb25nJyxbX3ZtLl92KF92bS5fcyhfdm0uc2VsZWN0ZWRGaWxlLm5hbWUpKV0pLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJ0ZXh0LW11dGVkIG1zLTJcIn0sW192bS5fdihcIihcIitfdm0uX3MoX3ZtLmZvcm1hdEZpbGVTaXplKF92bS5zZWxlY3RlZEZpbGUuc2l6ZSkpK1wiKVwiKV0pXSksX2MoJ2J1dHRvbicse3N0YXRpY0NsYXNzOlwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1kYW5nZXJcIixvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO3JldHVybiBfdm0uY2xlYXJGaWxlLmFwcGx5KG51bGwsIGFyZ3VtZW50cyl9fX0sW19jKCdpJyx7c3RhdGljQ2xhc3M6XCJiaSBiaS14XCJ9KV0pXSldKTpfdm0uX2UoKV0pLChfdm0uc2VsZWN0ZWRGaWxlKT9fYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJidG4gYnRuLXN1Y2Nlc3MgbXQtM1wiLGF0dHJzOntcImRpc2FibGVkXCI6X3ZtLmlzVXBsb2FkaW5nfSxvbjp7XCJjbGlja1wiOl92bS51cGxvYWRGaWxlfX0sWyhfdm0uaXNVcGxvYWRpbmcpP19jKCdzcGFuJyxbX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIG1lLTJcIn0pLF92bS5fdihcIiBVcGxvYWRpbmcuLi4gXCIpXSk6X2MoJ3NwYW4nLFtfYygnaScse3N0YXRpY0NsYXNzOlwiYmkgYmktdXBsb2FkIG1lLTJcIn0pLF92bS5fdihcIiBVcGxvYWQgYW5kIEltcG9ydCBcIildKV0pOl92bS5fZSgpXSksKF92bS5pc1VwbG9hZGluZyk/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwibWItM1wifSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwicHJvZ3Jlc3NcIn0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInByb2dyZXNzLWJhciBwcm9ncmVzcy1iYXIt
2c3RyaXBlZCBwcm9ncmVzcy1iYXItYW5pbWF0ZWRcIixzdHlsZTooeyB3aWR0aDogX3ZtLnVwbG9hZFByb2dyZXNzICsgJyUnIH0pLGF0dHJzOntcInJvbGVcIjpcInByb2dyZXNzYmFyXCJ9fSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0udXBsb2FkUHJvZ3Jlc3MpK1wiJSBcIildKV0pXSk6X3ZtLl9lKCksKF92bS5lcnJvcik/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiYWxlcnQgYWxlcnQtZGFuZ2VyIGFsZXJ0LWRpc21pc3NpYmxlIGZhZGUgc2hvd1wiLGF0dHJzOntcInJvbGVcIjpcImFsZXJ0XCJ9fSxbX2MoJ3N0cm9uZycsW192bS5fdihcIkltcG9ydCBGYWlsZWQhXCIpXSksX2MoJ3ByZScse3N0YXRpY0NsYXNzOlwibWItMCBtdC0yXCIsc3RhdGljU3R5bGU6e1wid2hpdGUtc3BhY2VcIjpcInByZS13cmFwXCJ9fSxbX3ZtLl92KF92bS5fcyhfdm0uZXJyb3IpKV0pLF9jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcImJ0bi1jbG9zZVwiLGF0dHJzOntcInR5cGVcIjpcImJ1dHRvblwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLmVycm9yID0gbnVsbH19fSldKTpfdm0uX2UoKSwoX3ZtLnN1Y2Nlc3MpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImFsZXJ0IGFsZXJ0LXN1Y2Nlc3MgYWxlcnQtZGlzbWlzc2libGUgZmFkZSBzaG93XCIsYXR0cnM6e1wicm9sZVwiOlwiYWxlcnRcIn19LFtfYygnc3Ryb25nJyxbX3ZtLl92KFwiU3VjY2VzcyFcIildKSxfdm0uX3YoXCIgUHJvZHVjdHMgaW1wb3J0ZWQgc3VjY2Vzc2Z1bGx5LiBcIitfdm0uX3MoX3ZtLnJvd3NJbXBvcnRlZCkrXCIgcHJvZHVjdChzKSBpbXBvcnRlZC4gXCIpLF9jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcImJ0bi1jbG9zZVwiLGF0dHJzOntcInR5cGVcIjpcImJ1dHRvblwifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7X3ZtLnN1Y2Nlc3MgPSBmYWxzZX19fSldKTpfdm0uX2UoKV0pXSldKV0pXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW2Z1bmN0aW9uICgpe3ZhciBfdm09dGhpcyxfYz1fdm0uX3NlbGYuX2M7cmV0dXJuIF9jKCdwJyx7c3RhdGljQ2xhc3M6XCJtYi0yXCJ9LFtfYygnc3Ryb25nJyxbX3ZtLl92KFwiQ2xpY2sgdG8gdXBsb2FkXCIpXSksX3ZtLl92KFwiIG9yIGRyYWcgYW5kIGRyb3AgXCIpXSlcbn1dXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCI8dGVtcGxhdGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTggY29sLWxnLTEwIGNvbC1tZC0xMiBwLTRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoMVwiIHYtaHRtbD1cInRpdGxlXCI+PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWxpZ24tdGV4dC1ib3R0b20gbXMtM1wiPlxuICAgICAgICAgICAgPGJhY2stYnV0dG9uIC8+XG4gICAgICAgIDwvc3Bhbj5cblxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHByb2R1Y3QtaW1wb3J0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNvbWV0aGluZ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5TdGVwIDE6IERvd25sb2FkIFRlbXBsYXRlPC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkIHRoZSBFeGNlbCB0ZW1wbGF0ZSwgZmlsbCBpbiB5b3VyIHByb2R1Y3QgZGF0YSwgYW5kIHVwbG9hZCBpdCBiZWxvdy5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiZG93bmxvYWRUZW1wbGF0ZVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgOmRpc2FibGVkPVwiaXNEb3dubG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJpc0Rvd25sb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20gbWUtMlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRpbmcuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWRvd25sb2FkIG1lLTJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkIFRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxocj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIEZpbGUgVXBsb2FkIFNlY3Rpb24gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDU+U3RlcCAyOiBVcGxvYWQgRmlsbGVkIFRlbXBsYXRlPC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtYXJlYVwiIDpjbGFzcz1cInsgJ2RyYWctb3Zlcic6IGlzRHJhZ092ZXIgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCByZWY9XCJmaWxlSW5wdXRcIiB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cIi54bHN4LC54bHMsLmNzdlwiIEBjaGFuZ2U9XCJoYW5kbGVGaWxlU2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLW5vbmVcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtY29udGVudFwiIEBjbGljaz1cIiRyZWZzLmZpbGVJbnB1dC5jbGljaygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRyYWdvdmVyLnByZXZlbnQ9XCJpc0RyYWdPdmVyID0gdHJ1ZVwiIEBkcmFnbGVhdmUucHJldmVudD1cImlzRHJhZ092ZXIgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBkcm9wLnByZXZlbnQ9XCJoYW5kbGVGaWxlRHJvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWNsb3VkLXVwbG9hZCBkaXNwbGF5LTQgdGV4dC1tdXRlZCBtYi0zXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+Q2xpY2sgdG8gdXBsb2FkPC9zdHJvbmc+IG9yIGRyYWcgYW5kIGRyb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VsIGZpbGVzIG9ubHkgKFhMU1gsIFhMUywgQ1NWKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIEZpbGUgSW5mbyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzZWxlY3RlZEZpbGVcIiBjbGFzcz1cInNlbGVjdGVkLWZpbGUgbXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW
21zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWZpbGUtZWFybWFyay1leGNlbCB0ZXh0LXN1Y2Nlc3MgbWUtMlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNlbGVjdGVkRmlsZS5uYW1lIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIG1zLTJcIj4oe3sgZm9ybWF0RmlsZVNpemUoc2VsZWN0ZWRGaWxlLnNpemUpIH19KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2suc3RvcD1cImNsZWFyRmlsZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1kYW5nZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXhcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBVcGxvYWQgQnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB2LWlmPVwic2VsZWN0ZWRGaWxlXCIgQGNsaWNrPVwidXBsb2FkRmlsZVwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIG10LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cImlzVXBsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cImlzVXBsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20gbWUtMlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkaW5nLi4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZWxzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS11cGxvYWQgbWUtMlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBsb2FkIGFuZCBJbXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBQcm9ncmVzcyBCYXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cImlzVXBsb2FkaW5nXCIgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1zdHJpcGVkIHByb2dyZXNzLWJhci1hbmltYXRlZFwiIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IHVwbG9hZFByb2dyZXNzICsgJyUnIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdXBsb2FkUHJvZ3Jlc3MgfX0lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBFcnJvciBBbGVydCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiZXJyb3JcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBhbGVydC1kaXNtaXNzaWJsZSBmYWRlIHNob3dcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+SW1wb3J0IEZhaWxlZCE8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJtYi0wIG10LTJcIiBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmUtd3JhcDtcIj57eyBlcnJvciB9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBAY2xpY2s9XCJlcnJvciA9IG51bGxcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdWNjZXNzIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzdWNjZXNzXCIgY2xhc3M9XCJhbGVydCBhbGVydC1zdWNjZXNzIGFsZXJ0LWRpc21pc3NpYmxlIGZhZGUgc2hvd1wiIHJvbGU9XCJhbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5TdWNjZXNzITwvc3Ryb25nPiBQcm9kdWN0cyBpbXBvcnRlZCBzdWNjZXNzZnVsbHkuIHt7IHJvd3NJbXBvcnRlZCB9fSBwcm9kdWN0KHMpIGltcG9ydGVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBAY2xpY2s9XCJzdWNjZXNzID0gZmFsc2VcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuXG5pbXBvcnQgQmFja0J1dHRvbiBmcm9tIFwiLi9taW5vci9CYWNrQnV0dG9uLnZ1
2ZVwiXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiBcIlByb2R1Y3RFeGNlbEltcG9ydFwiLFxuICAgIGRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogXCJJbXBvcnQgUHJvZHVjdHMgRnJvbSBFeGNlbFwiLFxuICAgICAgICAgICAgc2VsZWN0ZWRGaWxlOiBudWxsLFxuICAgICAgICAgICAgaXNVcGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaXNEb3dubG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICBpc0RyYWdPdmVyOiBmYWxzZSxcbiAgICAgICAgICAgIHVwbG9hZFByb2dyZXNzOiAwLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIHJvd3NJbXBvcnRlZDogMCxcbiAgICAgICAgfVxuICAgIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCYWNrQnV0dG9uLFxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgICBhc3luYyBkb3dubG9hZFRlbXBsYXRlKCkge1xuICAgICAgICAgICAgdGhpcy5pc0Rvd25sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoJ3Byb2R1Y3RzL2Rvd25sb2FkRXhjZWxUZW1wbGF0ZScsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBDcmVhdGUgZG93bmxvYWQgbGlua1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtyZXNwb25zZS5kYXRhXSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsICdwcm9kdWN0X2ltcG9ydF90ZW1wbGF0ZS54bHN4Jyk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgbGluay5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9ICdGYWlsZWQgdG8gZG93bmxvYWQgdGVtcGxhdGU6ICcgKyAoZXJyLnJlc3BvbnNlPy5kYXRhPy5tZXNzYWdlIHx8IGVyci5tZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Rvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgaGFuZGxlRmlsZVNlbGVjdChldmVudCkge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXVxuICAgICAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQW5kU2V0RmlsZShmaWxlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGhhbmRsZUZpbGVEcm9wKGV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZVxuICAgICAgICAgICAgY29uc3QgZmlsZSA9IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXVxuICAgICAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQW5kU2V0RmlsZShmaWxlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHZhbGlkYXRlQW5kU2V0RmlsZShmaWxlKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZFR5cGVzID0gW1xuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLFxuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gICAgICAgICAgICAgICAgJ3RleHQvY3N2JyxcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIGlmICghdmFsaWRUeXBlcy5pbmNsdWRlcyhmaWxlLnR5cGUpICYmICFmaWxlLm5hbWUubWF0Y2goL1xcLih4bHN4P3xjc3YpJC9pKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSAnUGxlYXNlIHNlbGVjdCBhIHZhbGlkIEV4Y2VsIGZpbGUgKFhMU1gsIFhMUywgb3IgQ1NWKSdcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpbGUuc2l6ZSA+IDEwICogMTAyNCAqIDEwMjQpIHsgLy8gMTBNQlxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSAnRmlsZSBzaXplIG11c3QgYmUgbGVzcyB0aGFuIDEwTUInXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gZmlsZVxuICAgICAgICAgICAgdGhpcy5lcnJvciA9IG51bGxcbiAgICAgICAgICAgIHRoaXMuc3VjY2VzcyA9IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENsZWFyIHNlbGVjdGVkIGZpbGVcbiAgICAgICAgICovXG4gICAgICAgIGNsZWFyRmlsZSgpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gbnVsbFxuICAgICAgICAgICAgdGhpcy4kcmVmcy5maWxlSW5wdXQudmFsdWUgPSAnJ1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IG51bGxcbiAgICAgICAgICAgIHRoaXMuc3VjY2VzcyA9IGZhbHNlXG4gICAgICAgICAgICB0aGlzLnJvd3NJbXBvcnRlZCA9IDBcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogVXBsb2FkIHRoZSBmaWxlIHRvIHRoZSBzZXJ2ZXJcbiAgICAgICAgICovXG4gICAgICAgIGFzeW5jIHVwbG9hZEZpbGUoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGaWxlKSByZXR1cm5cblxuICAgICAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IHRydWVcbiAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSAwXG4gICAgICAgICAgICB0aGlzLmVycm9yID0gbnVsbFxuICAgICAgICAgICAgdGhpcy5zdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKClcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIHRoaXMuc2VsZWN0ZWRGaWxlKVxuXG4gICAgICAgICAgICBhd2FpdCBheGlvcy5wb3N0KCdwcm9kdWN0cy91cGxvYWRFeGNlbCcsIGZvcm1EYXRhLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAgICAgICAgI
2H0sXG4gICAgICAgICAgICAgICAgb25VcGxvYWRQcm9ncmVzczogKHByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJvZ3Jlc3NFdmVudC5sb2FkZWQgKiAxMDApIC8gcHJvZ3Jlc3NFdmVudC50b3RhbFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRmlsZSgpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dzSW1wb3J0ZWQgPSByZXNwb25zZS5kYXRhPy5yb3dzX2NvdW50ID8/IDBcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyLmRhdGE/Lm1lc3NhZ2UgfHwgZXJyLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5yZXNwb25zZT8uZGF0YT8uZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yICs9ICdcXG5cXG4nICsgSlNPTi5zdHJpbmdpZnkoZXJyLnJlc3BvbnNlLmRhdGEuZXJyb3JzLCBudWxsLCAyKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IDA7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0RmlsZVNpemUoYnl0ZXMpIHtcbiAgICAgICAgICAgIGlmIChieXRlcyA9PT0gMCkgcmV0dXJuICcwIEJ5dGVzJztcbiAgICAgICAgICAgIGNvbnN0IGsgPSAxMDI0O1xuICAgICAgICAgICAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJ107XG4gICAgICAgICAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhrKSk7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChieXRlcyAvIE1hdGgucG93KGssIGkpICogMTAwKSAvIDEwMCArICcgJyArIHNpemVzW2ldO1xuICAgICAgICB9LFxuICAgIH0sXG4gICAgY3JlYXRlZCgpIHtcbiAgICB9LFxufVxuPC9zY3JpcHQ+XG5cblxuPHN0eWxlIHNjb3BlZD5cbi5wcm9kdWN0LWltcG9ydC1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgLyogbWFyZ2luOiAwIGF1dG87ICovXG59XG5cbi51cGxvYWQtYXJlYSB7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkICNkZWUyZTY7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIHBhZGRpbmc6IDJyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4udXBsb2FkLWFyZWE6aG92ZXIsXG4udXBsb2FkLWFyZWEuZHJhZy1vdmVyIHtcbiAgICBib3JkZXItY29sb3I6ICMwZDZlZmQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbn1cblxuLnVwbG9hZC1jb250ZW50IHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5zZWxlY3RlZC1maWxlIHtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIC8qIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7ICovXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbnByZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuPC9zdHlsZT4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1Byb2R1Y3RFeGNlbEltcG9ydC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC00MC51c2VbMV0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Qcm9kdWN0RXhjZWxJbXBvcnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1Byb2R1Y3RFeGNlbEltcG9ydC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ZTA4ZTNmMWMmc2NvcGVkPXRydWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Qcm9kdWN0RXhjZWxJbXBvcnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1Byb2R1Y3RFeGNlbEltcG9ydC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9Qcm9kdWN0RXhjZWxJbXBvcnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZTA4ZTNmMWMmcHJvZCZzY29wZWQ9dHJ1ZSZsYW5nPWNzc1wiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlMDhlM2YxY1wiLFxuICBudWxsXG4gIFxuKVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsInZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKXt2YXIgX3ZtPXRoaXMsX2M9X3ZtLl9zZWxmLl9jO3JldHVybiAoX3ZtLmFkZHJlc3MgJiYgX3ZtLmFkZHJlc3MgaW5zdGFuY2VvZiBTdHJpbmcpP19jKCdhJyx7c3RhdGljQ2xhc3M6XCJidG4gYnRuLXdhcm5pbmdcIixhdHRyczp7XCJocmVmXCI6X3ZtLmFkZHJlc3N9fSxbX2MoJ2knLHtzdGF0aWNDbGFzczpcImJpIGJpLWFycm93LWxlZnQgbWUtMVwifSksX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJnZW5lcmFsLmJhY2tcIikpK1wiIFwiKV0pOihfdm0uYWRkcmVzcyAmJiBfdm0uYWRkcmVzcyBpbnN0YW5jZW9mIE9iamVjdCk/X2MoJ3JvdXRlci1saW5rJyx7c3RhdGljQ2xhc3M6XCJidG4gYnRuLXdhcm5pbmdcIixhdHRyczp7XCJ0b1wiOl92bS5hZGRyZXNzfX0sW19jKCdpJyx7c3RhdGljQ2xhc3M6XCJiaSBiaS1hcnJvdy1sZWZ0IG1lLTFcIn0pLF92bS5fdihfdm0uX3MoX3ZtLiR0KFwiZ2VuZXJhbC5iYWNrXCIpKStcIiBcIildKTpfYygnYScse3N0YXRpY0NsYXNzOlwiYnRuIGJ0bi13YXJuaW5nXCIsb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0uJHJvdXRlci5nbygtMSl9fX0sW19jKCdpJyx7c3RhdGljQ2xhc3M6XCJiaSBiaS1hcnJvdy1sZWZ0IG1lLTFcIn0pLF92bS5fdihfdm0uX3MoX3ZtLiR0KFwiZ2VuZXJhbC5iYWNrXCIpKStcIiBcIildKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5cbmV4cG9ydCB7
2IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCI8dGVtcGxhdGU+XG4gICAgPGEgdi1pZj1cImFkZHJlc3MgJiYgYWRkcmVzcyBpbnN0YW5jZW9mIFN0cmluZ1wiIDpocmVmPVwiYWRkcmVzc1wiIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYmkgYmktYXJyb3ctbGVmdCBtZS0xXCI+PC9pPnt7ICR0KFwiZ2VuZXJhbC5iYWNrXCIpIH19XG4gICAgPC9hPlxuICAgIDxyb3V0ZXItbGluayB2LWVsc2UtaWY9XCJhZGRyZXNzICYmIGFkZHJlc3MgaW5zdGFuY2VvZiBPYmplY3RcIiA6dG89XCJhZGRyZXNzXCIgY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1hcnJvdy1sZWZ0IG1lLTFcIj48L2k+e3sgJHQoXCJnZW5lcmFsLmJhY2tcIikgfX1cbiAgICA8L3JvdXRlci1saW5rPlxuICAgIDxhIHYtZWxzZSBAY2xpY2s9XCIkcm91dGVyLmdvKC0xKVwiIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYmkgYmktYXJyb3ctbGVmdCBtZS0xXCI+PC9pPnt7ICR0KFwiZ2VuZXJhbC5iYWNrXCIpIH19XG4gICAgPC9hPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiBcIkJhY2tCdXR0b25cIixcbiAgICBwcm9wczoge1xuICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcgfCBCb29sZWFuLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgfSxcbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG4vKiBBZGQgYW55IG5lY2Vzc2FyeSBzdHlsZXMgaGVyZSAqL1xuXG48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC00MC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9CYWNrQnV0dG9uLnZ1
2ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0JhY2tCdXR0b24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0JhY2tCdXR0b24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWQ3Nzg5Y2FlJnNjb3BlZD10cnVlXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQmFja0J1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuZXhwb3J0ICogZnJvbSBcIi4vQmFja0J1dHRvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9CYWNrQnV0dG9uLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWQ3Nzg5Y2FlJnByb2QmbGFuZz1zY3NzJnNjb3BlZD10cnVlXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3Z1ZS1sb2FkZXItdjE1L2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcImQ3Nzg5Y2FlXCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbi8vIGdldHRpbmcgdGFnIGZyb20gRVM2KyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2Bcbm1vZHVsZS5leHBvcnRzID0gVE9fU1RSSU5HX1RBR19TVVBQT1JUID8gY2xhc3NvZlJhdyA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgdGFnLCByZXN1bHQ7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mICh0YWcgPSB0cnlHZXQoTyA9ICRPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PT0gJ09iamVjdCcgJiYgaXNDYWxsYWJsZShPLmNhbGxlZSkgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgbWFrZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbicpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBuYW1lLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yLmdldCkgbWFrZUJ1aWx0SW4oZGVzY3JpcHRvci
25nZXQsIG5hbWUsIHsgZ2V0dGVyOiB0cnVlIH0pO1xuICBpZiAoZGVzY3JpcHRvci5zZXQpIG1ha2VCdWlsdEluKGRlc2NyaXB0b3Iuc2V0LCBuYW1lLCB7IHNldHRlcjogdHJ1ZSB9KTtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5LmYodGFyZ2V0LCBuYW1lLCBkZXNjcmlwdG9yKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIHRlc3QgPSB7fTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWltbWVkaWF0ZS1tdXRhdGlvbiAtLSBFUzMgc3ludGF4IGxpbWl0YXRpb25cbnRlc3RbVE9fU1RSSU5HX1RBR10gPSAneic7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyaW5nKHRlc3QpID09PSAnW29iamVjdCB6XSc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoY2xhc3NvZihhcmd1bWVudCkgPT09ICdTeW1ib2wnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZycpO1xuICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHBhc3NlZCwgcmVxdWlyZWQpIHtcbiAgaWYgKHBhc3NlZCA8IHJlcXVpcmVkKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignTm90IGVub3VnaCBhcmd1bWVudHMnKTtcbiAgcmV0dXJuIHBhc3NlZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG5cbnZhciAkVVJMU2VhcmNoUGFyYW1zID0gVVJMU2VhcmNoUGFyYW1zO1xudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9ICRVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xudmFyIGFwcGVuZCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5hcHBlbmQpO1xudmFyICRkZWxldGUgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGVbJ2RlbGV0ZSddKTtcbnZhciBmb3JFYWNoID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmZvckVhY2gpO1xudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbnZhciBwYXJhbXMgPSBuZXcgJFVSTFNlYXJjaFBhcmFtcygnYT0xJmE9MiZiPTMnKTtcblxucGFyYW1zWydkZWxldGUnXSgnYScsIDEpO1xuLy8gYHVuZGVmaW5lZGAgY2FzZSBpcyBhIENocm9taXVtIDExNyBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTE0MjIyXG5wYXJhbXNbJ2RlbGV0ZSddKCdiJywgdW5kZWZpbmVkKTtcblxuaWYgKHBhcmFtcyArICcnICE9PSAnYT0yJykge1xuICBkZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ2RlbGV0ZScsIGZ1bmN0aW9uIChuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBpZiAobGVuZ3RoICYmICR2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJGRlbGV0ZSh0aGlzLCBuYW1lKTtcbiAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgIGZvckVhY2godGhpcywgZnVuY3Rpb24gKHYsIGspIHsgLy8gYWxzbyB2YWxpZGF0ZXMgYHRoaXNgXG4gICAgICBwdXNoKGVudHJpZXMsIHsga2V5OiBrLCB2YWx1ZTogdiB9KTtcbiAgICB9KTtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChsZW5ndGgsIDEpO1xuICAgIHZhciBrZXkgPSB0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgdmFsdWUgPSB0b1N0cmluZygkdmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGRpbmRleCA9IDA7XG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgdmFyIGVudHJpZXNMZW5ndGggPSBlbnRyaWVzLmxlbmd0aDtcbiAgICB2YXIgZW50cnk7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllc0xlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgaWYgKGZvdW5kIHx8IGVudHJ5LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgJGRlbGV0ZSh0aGlzLCBlbnRyeS5rZXkpO1xuICAgICAgfSBlbHNlIGRpbmRleCsrO1xuICAgIH1cbiAgICB3aGlsZSAoZGluZGV4IDwgZW50cmllc0xlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2RpbmRleCsrXTtcbiAgICAgIGlmICghKGVudHJ5LmtleSA9PT0ga2V5ICYmIGVudHJ5LnZhbHVlID09PSB2YWx1ZSkpIGFwcGVuZCh0aGlzLCBlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTtcbiAgICB9XG4gIH0sIHsgZW51bWVyYWJsZTogdHJ1ZSwgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xuXG52YXIgJFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtcztcbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSAkVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBnZXRBbGwgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZ2V0QWxsKTtcbnZhciAkaGFzID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmhhcyk7XG52YXIgcGFyYW1zID0gbmV3ICRVUkxTZWFyY2hQYXJhbXMoJ2E9MScpO1xuXG4vLyBgdW5kZWZpbmVkYCBjYXNlIGlzIGEgQ2hyb21pdW0gMTE3IGJ1Z1xuLy8gaH
2R0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MTQyMjJcbmlmIChwYXJhbXMuaGFzKCdhJywgMikgfHwgIXBhcmFtcy5oYXMoJ2EnLCB1bmRlZmluZWQpKSB7XG4gIGRlZmluZUJ1aWx0SW4oVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAnaGFzJywgZnVuY3Rpb24gaGFzKG5hbWUgLyogLCB2YWx1ZSAqLykge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciAkdmFsdWUgPSBsZW5ndGggPCAyID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIGlmIChsZW5ndGggJiYgJHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAkaGFzKHRoaXMsIG5hbWUpO1xuICAgIHZhciB2YWx1ZXMgPSBnZXRBbGwodGhpcywgbmFtZSk7IC8vIGFsc28gdmFsaWRhdGVzIGB0aGlzYFxuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGxlbmd0aCwgMSk7XG4gICAgdmFyIHZhbHVlID0gdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChpbmRleCA8IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIGlmICh2YWx1ZXNbaW5kZXgrK10gPT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICB9IHJldHVybiBmYWxzZTtcbiAgfSwgeyBlbnVtZXJhYmxlOiB0cnVlLCB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xudmFyIGZvckVhY2ggPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZm9yRWFjaCk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNpemVgIGdldHRlclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy91cmwvcHVsbC83MzRcbmlmIChERVNDUklQVE9SUyAmJiAhKCdzaXplJyBpbiBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUpKSB7XG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdzaXplJywge1xuICAgIGdldDogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICBmb3JFYWNoKHRoaXMsIGZ1bmN0aW9uICgpIHsgY291bnQrKzsgfSk7XG4gICAgICByZXR1cm4gY291bnQ7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJyZW5kZXIiLCJfdm0iLCJ0aGlzIiwiX2MiLCJfc2VsZiIsInN0YXRpY0NsYXNzIiwiZG9tUHJvcHMiLCJfcyIsInRpdGxlIiwiX3YiLCJhdHRycyIsImlzRG93bmxvYWRpbmciLCJvbiIsImRvd25sb2FkVGVtcGxhdGUiLCJjbGFzcyIsImlzRHJhZ092ZXIiLCJyZWYiLCJoYW5kbGVGaWxlU2VsZWN0IiwiJGV2ZW50IiwiJHJlZnMiLCJmaWxlSW5wdXQiLCJ
2jbGljayIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlRmlsZURyb3AiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9tIiwic2VsZWN0ZWRGaWxlIiwibmFtZSIsImZvcm1hdEZpbGVTaXplIiwic2l6ZSIsInN0b3BQcm9wYWdhdGlvbiIsImNsZWFyRmlsZSIsIl9lIiwiaXNVcGxvYWRpbmciLCJ1cGxvYWRGaWxlIiwic3R5bGUiLCJ3aWR0aCIsInVwbG9hZFByb2dyZXNzIiwiZXJyb3IiLCJzdGF0aWNTdHlsZSIsInN1Y2Nlc3MiLCJyb3dzSW1wb3J0ZWQiLCJzdGF0aWNSZW5kZXJGbnMiLCJkYXRhIiwiY29tcG9uZW50cyIsIkJhY2tCdXR0b24iLCJtZXRob2RzIiwicmVzcG9uc2UiLCJheGlvcyIsImdldCIsInJlc3BvbnNlVHlwZSIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIkJsb2IiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInJlbW92ZSIsInJldm9rZU9iamVjdFVSTCIsImVyciIsIm1lc3NhZ2UiLCJldmVudCIsImZpbGUiLCJ0YXJnZXQiLCJmaWxlcyIsInZhbGlkYXRlQW5kU2V0RmlsZSIsImRhdGFUcmFuc2ZlciIsInZhbGlkVHlwZXMiLCJpbmNsdWRlcyIsInR5cGUiLCJtYXRjaCIsInZhbHVlIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImFwcGVuZCIsInBvc3QiLCJoZWFkZXJzIiwib25VcGxvYWRQcm9ncmVzcyIsInByb2dyZXNzRXZlbnQiLCJNYXRoIiwicm91bmQiLCJsb2FkZWQiLCJ0b3RhbCIsInRoZW4iLCJyb3dzX2NvdW50IiwiY2F0Y2giLCJlcnJvcnMiLCJKU09OIiwic3RyaW5naWZ5IiwiYnl0ZXMiLCJrIiwic2l6ZXMiLCJpIiwiZmxvb3IiLCJsb2ciLCJwb3ciLCJjcmVhdGVkIiwiY29tcG9uZW50IiwiYWRkcmVzcyIsIlN0cmluZyIsIiR0IiwiT2JqZWN0IiwiJHJvdXRlciIsImdvIiwicHJvcHMiLCJCb29sZWFuIiwiZGVmYXVsdCIsIlRPX1NUUklOR19UQUdfU1VQUE9SVCIsImlzQ2FsbGFibGUiLCJjbGFzc29mUmF3Iiwid2VsbEtub3duU3ltYm9sIiwiVE9fU1RSSU5HX1RBRyIsIiRPYmplY3QiLCJDT1JSRUNUX0FSR1VNRU5UUyIsInRyeUdldCIsIml0Iiwia2V5IiwibW9kdWxlIiwiZXhwb3J0cyIsIk8iLCJ0YWciLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJjYWxsZWUiLCJtYWtlQnVpbHRJbiIsImRlZmluZVByb3BlcnR5IiwiZGVzY3JpcHRvciIsImdldHRlciIsInNldCIsInNldHRlciIsImYiLCJ0ZXN0IiwiY2xhc3NvZiIsIiRTdHJpbmciLCJhcmd1bWVudCIsIlR5cGVFcnJvciIsIiRUeXBlRXJyb3IiLCJwYXNzZWQiLCJyZXF1aXJlZCIsImRlZmluZUJ1aWx0SW4iLCJ1bmN1cnJ5VGhpcyIsInRvU3RyaW5nIiwidmFsaWRhdGVBcmd1bWVudHNMZW5ndGgiLCIkVVJMU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlIiwicHJvdG90eXBlIiwiJGRlbGV0ZSIsImZvckVhY2giLCJwdXNoIiwicGFyYW1zIiwibGVuZ3RoIiwiJHZhbHVlIiwiZW50cmllcyIsInYiLCJlbnRyeSIsImluZGV4IiwiZGluZGV4IiwiZm91bmQiLCJlbnRyaWVzTGVuZ3RoIiwiZW51bWVyYWJsZSIsInVuc2FmZSIsImdldEFsbCIsIiRoYXMiLCJoYXMiLCJ2YWx1ZXMiLCJERVNDUklQVE9SUyIsImRlZmluZUJ1aWx0SW5BY2Nlc3NvciIsImNvdW50IiwiY29uZmlndXJhYmxlIl0sInNvdXJjZVJvb3QiOiIifQ==
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.