Files
vuefilemanager/public/chunks/files.js
T
2021-03-26 16:42:58 +01:00

2 lines
95 KiB
JavaScript
Vendored

(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{"2wZp":function(e,t,n){"use strict";var i=n("Mlra");n.n(i).a},"6Rdq":function(e,t,n){"use strict";var i=n("9Q3x"),a=n("yMep"),r=n("c4kp"),o=n("2QtR"),s=n("L2JU"),d=n("xCqy");function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var f={name:"FilesView",components:{DesktopSortingAndPreview:i.a,DesktopToolbar:a.a,FileBrowser:r.a,ContextMenu:o.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(s.b)(["config"])),methods:{contextMenu:function(e,t){d.a.$emit("contextMenu:show",e,t)}}},p=(n("2wZp"),n("KHd+")),u=Object(p.a)(f,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"files-view"},on:{"!contextmenu":function(t){return t.preventDefault(),e.contextMenu(t,void 0)}}},[n("ContextMenu"),e._v(" "),n("DesktopSortingAndPreview"),e._v(" "),n("DesktopToolbar"),e._v(" "),n("FileBrowser")],1)}),[],!1,null,null,null);t.a=u.exports},"8KKK":function(e,t,n){"use strict";n.r(t);var i=n("Nv84"),a=n("CjXH"),r=n("L2JU");function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d={name:"UpgradeSidebarBanner",components:{HardDriveIcon:a.A,ButtonBase:i.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(r.b)(["config"]),{storage:function(){return this.$store.getters.user.relationships.storage.data.attributes}})},l=(n("cxp3"),n("KHd+")),c=Object(l.a)(d,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"upgrade-banner"},[n("div",{staticClass:"header-title"},[n("hard-drive-icon",{staticClass:"icon",attrs:{size:"19"}}),e._v(" "),n("span",{staticClass:"title"},[e._v(e._s(e.storage.used)+"% From "+e._s(e.storage.capacity_formatted))])],1),e._v(" "),n("div",{staticClass:"content"},[e.storage.used>95?n("p",{staticClass:"reach-capacity"},[e._v(e._s(e.$t("upgrade_banner.title")))]):n("p",{staticClass:"reach-capacity"},[e._v(e._s(e.$t("upgrade_banner.description")))])]),e._v(" "),e.config.app_payments_active?n("div",{staticClass:"footer"},[n("router-link",{staticClass:"button",attrs:{to:{name:"UpgradePlan"}}},[e._v("\n "+e._s(e.$t("upgrade_banner.button"))+"\n ")])],1):e._e()])}),[],!1,null,"02ff20f8",null).exports,f=n("FdzE"),p=n("N7DK"),u=n("6Rdq"),v=n("LtV2"),h=n("hXay"),g=n("xCqy");function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var y={name:"FilesView",components:{UpgradeSidebarBanner:c,TreeMenuNavigator:f.a,ContentFileView:u.a,MultiSelected:p.a,ContentSidebar:v.a,UploadCloudIcon:a.cb,ContentGroup:h.a,FolderIcon:a.x,Trash2Icon:a.Z,HomeIcon:a.B,XIcon:a.hb},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach((function(t){b(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(r.b)(["user","homeDirectory","currentFolder","config","fileInfoDetail"]),{favourites:function(){return this.user.data.relationships.favourites.data.attributes.folders},tree:function(){return this.user.data.attributes.folders},storage:function(){return this.$store.getters.user.data.attributes.storage}}),data:function(){return{area:!1,draggedItem:void 0}},methods:{getTrash:function(){this.$store.dispatch("getTrash")},getLatest:function(){this.$store.dispatch("getLatest")},goHome:function(){this.$store.dispatch("getFolder",[{folder:this.homeDirectory,back:!1,init:!0}])},openFolder:function(e){this.$store.dispatch("getFolder",[{folder:e,back:!1,init:!1}])},dragEnter:function(){this.draggedItem&&"folder"!==this.draggedItem.type||this.fileInfoDetail.length>0&&this.fileInfoDetail.find((function(e){return"folder"!==e.type}))||(this.area=!0)},dragLeave:function(){this.area=!1},dragFinish:function(){var e=this;this.area=!1,g.a.$emit("drop"),this.draggedItem&&"folder"!==this.draggedItem.type||this.favourites.find((function(t){return t.id==e.draggedItem.id}))||this.fileInfoDetail.length>0&&this.fileInfoDetail.find((function(e){return"folder"!==e.type}))||(this.fileInfoDetail.includes(this.draggedItem)||this.$store.dispatch("addToFavourites",this.draggedItem),this.fileInfoDetail.includes(this.draggedItem)&&this.$store.dispatch("addToFavourites",null))},removeFavourite:function(e){this.$store.dispatch("removeFromFavourites",e)}},created:function(){var e=this;this.goHome(),g.a.$on("dragstart",(function(t){e.draggedItem=t,e.dragInProgress=!0})),g.a.$on("drop",(function(){e.dragInProgress=!1}))}},x=(n("kiSZ"),Object(l.a)(y,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.user?n("section",{attrs:{id:"viewport"}},[n("ContentSidebar",[e.config.storageLimit&&e.storage.used>95?n("ContentGroup",[n("UpgradeSidebarBanner")],1):e._e(),e._v(" "),n("ContentGroup",{attrs:{title:e.$t("sidebar.locations_title")}},[n("div",{staticClass:"menu-list-wrapper vertical"},[n("a",{staticClass:"menu-list-item link",class:{"is-active":e.$isThisLocation(["base"])},on:{click:e.goHome}},[n("div",{staticClass:"icon text-theme"},[n("home-icon",{attrs:{size:"17"}})],1),e._v(" "),n("div",{staticClass:"label text-theme"},[e._v("\n "+e._s(e.$t("sidebar.home"))+"\n ")])]),e._v(" "),n("a",{staticClass:"menu-list-item link",class:{"is-active":e.$isThisLocation(["latest"])},on:{click:e.getLatest}},[n("div",{staticClass:"icon text-theme"},[n("upload-cloud-icon",{attrs:{size:"17"}})],1),e._v(" "),n("div",{staticClass:"label text-theme"},[e._v("\n "+e._s(e.$t("sidebar.latest"))+"\n ")])]),e._v(" "),n("a",{staticClass:"menu-list-item link",class:{"is-active":e.$isThisLocation(["trash","trash-root"])},on:{click:e.getTrash}},[n("div",{staticClass:"icon text-theme"},[n("trash2-icon",{attrs:{size:"17"}})],1),e._v(" "),n("div",{staticClass:"label text-theme"},[e._v("\n "+e._s(e.$t("locations.trash"))+"\n ")])])])]),e._v(" "),n("ContentGroup",{staticClass:"navigator",attrs:{title:e.$t("sidebar.navigator_title"),slug:"navigator","can-collapse":!0}},[0==e.tree.length?n("span",{staticClass:"empty-note navigator"},[e._v("\n "+e._s(e.$t("sidebar.folders_empty"))+"\n ")]):e._e(),e._v(" "),e._l(e.tree,(function(e){return n("TreeMenuNavigator",{key:e.id,staticClass:"folder-tree",attrs:{depth:0,nodes:e}})}))],2),e._v(" "),n("ContentGroup",{attrs:{title:e.$t("sidebar.favourites"),slug:"favourites","can-collapse":!0}},[n("div",{staticClass:"menu-list-wrapper vertical favourites",class:{"is-dragenter":e.area},on:{dragover:function(t){return t.preventDefault(),e.dragEnter(t)},dragleave:e.dragLeave,drop:function(t){return e.dragFinish(t)}}},[n("transition-group",{staticClass:"menu-list",attrs:{tag:"div",name:"folder-item"}},[0==e.favourites.length?n("span",{key:0,staticClass:"empty-note favourites"},[e._v("\n "+e._s(e.$t("sidebar.favourites_empty"))+"\n ")]):e._e(),e._v(" "),e._l(e.favourites,(function(t){return n("a",{key:t.id,staticClass:"menu-list-item",class:{"is-current":t&&e.currentFolder&&e.currentFolder.id===t.id},on:{click:function(n){return n.stopPropagation(),e.openFolder(t)}}},[n("div",{staticClass:"text-theme"},[n("folder-icon",{staticClass:"folder-icon text-theme",attrs:{size:"17"}}),e._v(" "),n("span",{staticClass:"label text-theme"},[e._v(e._s(t.name))])],1),e._v(" "),n("x-icon",{staticClass:"delete-icon",attrs:{size:"17"},on:{click:function(n){return n.stopPropagation(),e.removeFavourite(t)}}})],1)}))],2)],1)])],1),e._v(" "),n("ContentFileView")],1):e._e()}),[],!1,null,"69e4f5b8",null));t.default=x.exports},DvOI:function(e,t,n){var i=n("kkeM");"string"==typeof i&&(i=[[e.i,i,""]]);var a={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(i,a);i.locals&&(e.exports=i.locals)},FdzE:function(e,t,n){"use strict";var i=n("CjXH"),a=n("L2JU"),r=n("xCqy");function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d={name:"TreeMenuNavigator",props:["nodes","depth","disabled"],components:{TreeMenuNavigator:f,ChevronRightIcon:i.h,FolderIcon:i.x},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(a.b)(["fileInfoDetail"]),{disabledFolder:function(){var e=this,t=!1;return this.draggedItem.length>0?this.draggedItem.forEach((function(n){"folder"===n.type&&e.nodes.id===n.parent_id&&(t=!0),e.nodes.id===n.id&&"folder"===n.type&&(t=!0,e.disableChildren=!0),e.disabled&&(e.disableChildren=!0)})):(t=!1,this.disableChildren=!1),t},indent:function(){var e=window.innerWidth<=1024?17:22;return{paddingLeft:(0==this.depth?e:e+20*this.depth)+"px"}}}),data:function(){return{isVisible:!1,isSelected:!1,area:!1,draggedItem:[],disableChildren:!1}},methods:{dragFinish:function(){this.fileInfoDetail.includes(this.draggedItem[0])||this.$store.dispatch("moveItem",{to_item:this.nodes,noSelectedItem:this.draggedItem[0]}),this.fileInfoDetail.includes(this.draggedItem[0])&&this.$store.dispatch("moveItem",{to_item:this.nodes,noSelectedItem:null}),this.draggedItem=[],this.area=!1,r.a.$emit("drop")},dragEnter:function(){this.area=!0},dragLeave:function(){this.area=!1},getFolder:function(){r.a.$emit("show-folder",this.nodes),this.$isThisLocation("public")?this.$store.dispatch("browseShared",[{folder:this.nodes,back:!1,init:!1}]):this.$store.dispatch("getFolder",[{folder:this.nodes,back:!1,init:!1}])},showTree:function(){this.isVisible=!this.isVisible}},created:function(){var e=this;r.a.$on("drop",(function(){e.draggedItem=[]})),r.a.$on("dragstart",(function(t){e.fileInfoDetail.includes(t)||(e.draggedItem=[t]),e.fileInfoDetail.includes(t)&&(e.draggedItem=e.fileInfoDetail)})),r.a.$on("show-folder",(function(t){e.isSelected=!1,e.nodes.id==t.id&&(e.isSelected=!0)}))}},l=(n("WxZZ"),n("KHd+")),c=Object(l.a)(d,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"folder"}},[n("div",{staticClass:"folder-item-wrapper"},[n("div",{staticClass:"folder-item text-theme",class:{"is-selected":e.isSelected,"is-dragenter":e.area,"is-inactive":e.disabledFolder||e.disabled&&e.draggedItem.length>0},style:e.indent,on:{click:e.getFolder,dragover:function(t){return t.preventDefault(),e.dragEnter(t)},dragleave:e.dragLeave,drop:function(t){return e.dragFinish()}}},[n("chevron-right-icon",{staticClass:"icon-arrow",class:{"is-opened":e.isVisible,"is-visible":0!==e.nodes.folders.length},attrs:{size:"17"},on:{click:function(t){return t.stopPropagation(),e.showTree(t)}}}),e._v(" "),n("folder-icon",{staticClass:"icon text-theme",attrs:{size:"17"}}),e._v(" "),n("span",{staticClass:"label"},[e._v(e._s(e.nodes.name))])],1),e._v(" "),e._l(e.nodes.folders,(function(t){return e.isVisible?n("TreeMenuNavigator",{key:t.id,attrs:{disabled:e.disableChildren,depth:e.depth+1,nodes:t}}):e._e()}))],2)])}),[],!1,null,"92af20fe",null),f=t.a=c.exports},Iovz:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".empty-note.navigator[data-v-69e4f5b8] {\n padding: 5px 25px 10px;\n}\n.empty-note.favourites[data-v-69e4f5b8] {\n padding: 5px 23px 10px;\n}\n.navigator[data-v-69e4f5b8] {\n width: 100%;\n overflow-x: auto;\n}\n@media only screen and (max-width: 1024px) {\n.empty-note.navigator[data-v-69e4f5b8] {\n padding: 5px 20px 10px;\n}\n.empty-note.favourites[data-v-69e4f5b8] {\n padding: 5px 18px 10px;\n}\n}\n.folder-item-move[data-v-69e4f5b8] {\n transition: transform 300s ease;\n}\n.folder-item-enter-active[data-v-69e4f5b8] {\n transition: all 300ms ease;\n}\n.folder-item-leave-active[data-v-69e4f5b8] {\n transition: all 300ms;\n}\n.folder-item-enter[data-v-69e4f5b8], .folder-item-leave-to[data-v-69e4f5b8] {\n opacity: 0;\n transform: translateX(30px);\n}\n.folder-item-leave-active[data-v-69e4f5b8] {\n position: absolute;\n}\n",""])},LUFV:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".is-inactive[data-v-92af20fe] {\n opacity: 0.5;\n pointer-events: none;\n}\n.is-dragenter[data-v-92af20fe] {\n border-radius: 8px;\n}\n.folder-item[data-v-92af20fe] {\n display: block;\n padding: 8px 0;\n transition: 150ms all ease;\n cursor: pointer;\n position: relative;\n white-space: nowrap;\n width: 100%;\n border: 2px dashed transparent;\n}\n.folder-item .icon[data-v-92af20fe] {\n line-height: 0;\n width: 15px;\n margin-right: 9px;\n vertical-align: middle;\n margin-top: -1px;\n}\n.folder-item .icon path[data-v-92af20fe], .folder-item .icon line[data-v-92af20fe], .folder-item .icon polyline[data-v-92af20fe], .folder-item .icon rect[data-v-92af20fe], .folder-item .icon circle[data-v-92af20fe] {\n transition: 150ms all ease;\n}\n.folder-item .icon-arrow[data-v-92af20fe] {\n transition: 300ms all ease;\n margin-right: 4px;\n vertical-align: middle;\n opacity: 0;\n}\n.folder-item .icon-arrow.is-visible[data-v-92af20fe] {\n opacity: 1;\n}\n.folder-item .icon-arrow.is-opened[data-v-92af20fe] {\n transform: rotate(90deg);\n}\n.folder-item .label[data-v-92af20fe] {\n transition: 150ms all ease;\n font-size: 0.8125em;\n font-weight: 700;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n color: #1B2539;\n max-width: 130px;\n}\n.folder-item:hover .icon path[data-v-92af20fe], .folder-item:hover .icon line[data-v-92af20fe], .folder-item:hover .icon polyline[data-v-92af20fe], .folder-item:hover .icon rect[data-v-92af20fe], .folder-item:hover .icon circle[data-v-92af20fe], .folder-item.is-selected .icon path[data-v-92af20fe], .folder-item.is-selected .icon line[data-v-92af20fe], .folder-item.is-selected .icon polyline[data-v-92af20fe], .folder-item.is-selected .icon rect[data-v-92af20fe], .folder-item.is-selected .icon circle[data-v-92af20fe] {\n color: inherit;\n}\n.folder-item:hover .label[data-v-92af20fe], .folder-item.is-selected .label[data-v-92af20fe] {\n color: inherit;\n}\n@media only screen and (max-width: 1024px) {\n.folder-item[data-v-92af20fe] {\n padding: 8px 0;\n}\n}\n@media (prefers-color-scheme: dark) {\n.folder-item .label[data-v-92af20fe] {\n color: #bec6cf;\n}\n}\n",""])},MRed:function(e,t,n){var i=n("LUFV");"string"==typeof i&&(i=[[e.i,i,""]]);var a={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(i,a);i.locals&&(e.exports=i.locals)},Mlra:function(e,t,n){var i=n("Q8SN");"string"==typeof i&&(i=[[e.i,i,""]]);var a={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(i,a);i.locals&&(e.exports=i.locals)},Q8SN:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,"#files-view {\n font-family: 'Nunito', sans-serif;\n font-size: 16px;\n width: 100%;\n height: 100%;\n position: relative;\n min-width: 320px;\n overflow-x: hidden;\n padding-left: 15px;\n padding-right: 15px;\n overflow-y: hidden;\n}\n@media only screen and (max-width: 690px) {\n#files-view {\n padding-left: 0;\n padding-right: 0;\n}\n}\n",""])},WxZZ:function(e,t,n){"use strict";var i=n("MRed");n.n(i).a},cxp3:function(e,t,n){"use strict";var i=n("DvOI");n.n(i).a},ij6Y:function(e,t,n){var i=n("Iovz");"string"==typeof i&&(i=[[e.i,i,""]]);var a={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(i,a);i.locals&&(e.exports=i.locals)},kiSZ:function(e,t,n){"use strict";var i=n("ij6Y");n.n(i).a},kkeM:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".upgrade-banner[data-v-02ff20f8] {\n background: rgba(253, 57, 122, 0.1);\n padding: 10px;\n border-radius: 6px;\n margin: 0 16px;\n}\n.header-title[data-v-02ff20f8] {\n margin-bottom: 12px;\n display: flex;\n align-items: center;\n}\n.header-title .icon[data-v-02ff20f8] {\n margin-right: 10px;\n}\n.header-title .icon line[data-v-02ff20f8], .header-title .icon path[data-v-02ff20f8] {\n stroke: #fd397a;\n}\n.header-title .title[data-v-02ff20f8] {\n font-size: 0.8125em;\n font-weight: 800;\n color: #fd397a;\n}\n.content[data-v-02ff20f8] {\n margin-bottom: 12px;\n}\n.content p[data-v-02ff20f8] {\n font-size: 0.75em;\n color: #fd397a;\n font-weight: 700;\n}\n.button[data-v-02ff20f8] {\n background: #fd397a;\n border-radius: 50px;\n padding: 6px 0;\n width: 100%;\n color: white;\n text-align: center;\n font-size: 0.75em;\n font-weight: 700;\n display: block;\n box-shadow: 0 4px 10px rgba(253, 57, 122, 0.35);\n}\n",""])}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvQ29udGVudEZpbGVWaWV3LnZ1ZT80ZWMwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9Db250ZW50RmlsZVZpZXcudnVlP2ZkMjIiLCJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9Db250ZW50RmlsZVZpZXcudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9Db250ZW50RmlsZVZpZXcudnVlP2VjZWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL0NvbnRlbnRGaWxlVmlldy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3ZpZXdzL0ZpbGVQYWdlcy9GaWxlcy52dWU/Yzg4NCIsIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL1VwZ3JhZGVTaWRlYmFyQmFubmVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvVXBncmFkZVNpZGViYXJCYW5uZXIudnVlPzI4YjciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL1VwZ3JhZGVTaWRlYmFyQmFubmVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvVXBncmFkZVNpZGViYXJCYW5uZXIudnVlP2FiYzciLCJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy92aWV3cy9GaWxlUGFnZXMvRmlsZXMudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy92aWV3cy9GaWxlUGFnZXMvRmlsZXMudnVlPzRhZTMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3ZpZXdzL0ZpbGVQYWdlcy9GaWxlcy52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL1VwZ3JhZGVTaWRlYmFyQmFubmVyLnZ1ZT83NzQ0Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9UcmVlTWVudU5hdmlnYXRvci52dWU/N2NjNCIsIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL1RyZWVNZW51TmF2aWdhdG9yLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvVHJlZU1lbnVOYXZpZ2F0b3IudnVlPzgzM2YiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL1RyZWVNZW51TmF2aWdhdG9yLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvdmlld3MvRmlsZVBhZ2VzL0ZpbGVzLnZ1ZT9kZTViIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9UcmVlTWVudU5hdmlnYXRvci52dWU/M2RiYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvVHJlZU1lbnVOYXZpZ2F0b3IudnVlPzExOWYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL0NvbnRlbnRGaWxlVmlldy52dWU/MTc2ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvQ29udGVudEZpbGVWaWV3LnZ1ZT9kYzlhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9UcmVlTWVudU5hdmlnYXRvci52dWU/YTZkNiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvVXBncmFkZVNpZGViYXJCYW5uZXIudnVlPzgwY2YiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3ZpZXdzL0ZpbGVQYWdlcy9GaWxlcy52dWU/YTQyYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvdmlld3MvRmlsZVBhZ2VzL0ZpbGVzLnZ1ZT9jNmU3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9VcGdyYWRlU2lkZWJhckJhbm5lci52dWU/NWI1NiJdLCJuYW1lcyI6WyJjb21wb25lbnQiLCJfdm0iLCJ0aGlzIiwiX2giLCIkY3JlYXRlRWxlbWVudCIsIl9jIiwiX3NlbGYiLCJhdHRycyIsIm9uIiwiJGV2ZW50IiwicHJldmVudERlZmF1bHQiLCJjb250ZXh0TWVudSIsInVuZGVmaW5lZCIsIl92Iiwic3RhdGljQ2xhc3MiLCJfcyIsInN0b3JhZ2UiLCJ1c2VkIiwiY2FwYWNpdHlfZm9ybWF0dGVkIiwiJHQiLCJjb25maWciLCJuYW1lIiwiX2UiLCJzdG9yYWdlTGltaXQiLCJjbGFzcyIsIiRpc1RoaXNMb2NhdGlvbiIsImdvSG9tZSIsImdldExhdGVzdCIsImdldFRyYXNoIiwidHJlZSIsImxlbmd0aCIsIl9sIiwiaXRlbXMiLCJrZXkiLCJpZCIsImFyZWEiLCJkcmFnRW50ZXIiLCJkcmFnTGVhdmUiLCJkcmFnRmluaXNoIiwiZmF2b3VyaXRlcyIsImZvbGRlciIsImN1cnJlbnRGb2xkZXIiLCJzdG9wUHJvcGFnYXRpb24iLCJvcGVuRm9sZGVyIiwicmVtb3ZlRmF2b3VyaXRlIiwiY29udGVudCIsIm1vZHVsZSIsImkiLCJvcHRpb25zIiwidHJhbnNmb3JtIiwibG9jYWxzIiwiZXhwb3J0cyIsImlzU2VsZWN0ZWQiLCJkaXNhYmxlZEZvbGRlciIsImRpc2FibGVkIiwiZHJhZ2dlZEl0ZW0iLCJzdHlsZSIsImdldEZvbGRlciIsImlzVmlzaWJsZSIsIm5vZGVzIiwiZm9sZGVycyIsInNob3dUcmVlIiwiaXRlbSIsImRpc2FibGVDaGlsZHJlbiIsImRlcHRoIiwicHVzaCJdLCJtYXBwaW5ncyI6IjhGQUFBLHVCQUE2YixHLG9DQ0E3YixJLDhaQ2tCQSxJQ2xCcU4sRURrQnJOLENBQ0UsS0FBRixZQUNFLFdBQUYsQ0FDSSx5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TSxxQkNKOXNFLElBQUlGLEVBQVUsRUFBUSxRQUVBLGlCQUFaQSxJQUFzQkEsRUFBVSxDQUFDLENBQUNDLEVBQU9DLEVBQUlGLEVBQVMsTUFPaEUsSUFBSUcsRUFBVSxDQUFDLEtBQU0sRUFFckIsZUFQSUMsRUFRSixnQkFBcUJyQyxHQUVSLEVBQVEsT0FBUixDQUFtRWlDLEVBQVNHLEdBRXRGSCxFQUFRSyxTQUFRSixFQUFPSyxRQUFVTixFQUFRSyxTLHFCQ2hCNUMsSUFBSUwsRUFBVSxFQUFRLFFBRUEsaUJBQVpBLElBQXNCQSxFQUFVLENBQUMsQ0FBQ0MsRUFBT0MsRUFBSUYsRUFBUyxNQU9oRSxJQUFJRyxFQUFVLENBQUMsS0FBTSxFQUVyQixlQVBJQyxFQVFKLGdCQUFxQnJDLEdBRVIsRUFBUSxPQUFSLENBQW1FaUMsRUFBU0csR0FFdEZILEVBQVFLLFNBQVFKLEVBQU9LLFFBQVVOLEVBQVFLLFMsc0JDakJsQ0osRUFBT0ssUUFBVSxFQUFRLE9BQVIsRUFBK0QsSUFLbEZjLEtBQUssQ0FBQ25CLEVBQU9DLEVBQUksd1dBQXlXLE0sa0NDTGxZLHVCQUF1ZCxHLGtDQ0F2ZCx1QkFBMGQsRyxxQkNDMWQsSUFBSUYsRUFBVSxFQUFRLFFBRUEsaUJBQVpBLElBQXNCQSxFQUFVLENBQUMsQ0FBQ0MsRUFBT0MsRUFBSUYsRUFBUyxNQU9oRSxJQUFJRyxFQUFVLENBQUMsS0FBTSxFQUVyQixlQVBJQyxFQVFKLGdCQUFxQnJDLEdBRVIsRUFBUSxPQUFSLENBQW1FaUMsRUFBU0csR0FFdEZILEVBQVFLLFNBQVFKLEVBQU9LLFFBQVVOLEVBQVFLLFMsa0NDakI1Qyx1QkFBMmMsRyxzQkNBamNKLEVBQU9LLFFBQVUsRUFBUSxPQUFSLEVBQStELElBS2xGYyxLQUFLLENBQUNuQixFQUFPQyxFQUFJLHM3QkFBdTdCIiwiZmlsZSI6ImNodW5rcy9maWxlcy5qcz9pZD01NjcyY2ZhNjA4ZWZiMmYzOTQ1NCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NvbnRlbnRGaWxlVmlldy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NvbnRlbnRGaWxlVmlldy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7YXR0cnM6e1wiaWRcIjpcImZpbGVzLXZpZXdcIn0sb246e1wiIWNvbnRleHRtZW51XCI6ZnVuY3Rpb24oJGV2ZW50KXskZXZlbnQucHJldmVudERlZmF1bHQoKTtyZXR1cm4gX3ZtLmNvbnRleHRNZW51KCRldmVudCwgdW5kZWZpbmVkKX19fSxbX2MoJ0NvbnRleHRNZW51JyksX3ZtLl92KFwiIFwiKSxfYygnRGVza3RvcFNvcnRpbmdBbmRQcmV2aWV3JyksX3ZtLl92KFwiIFwiKSxfYygnRGVza3RvcFRvb2xiYXInKSxfdm0uX3YoXCIgXCIpLF9jKCdGaWxlQnJvd3NlcicpXSwxKX1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlPlxuICAgIDxkaXYgQGNvbnRleHRtZW51LnByZXZlbnQuY2FwdHVyZT1cImNvbnRleHRNZW51KCRldmVudCwgdW5kZWZpbmVkKVwiXG4gICAgICAgICBpZD1cImZpbGVzLXZpZXdcIj5cbiAgICAgICAgPENvbnRleHRNZW51Lz5cbiAgICAgICAgPERlc2t0b3BTb3J0aW5nQW5kUHJldmlldy8+XG4gICAgICAgIDxEZXNrdG9wVG9vbGJhci8+XG4gICAgICAgIDxGaWxlQnJvd3Nlci8+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCBEZXNrdG9wU29ydGluZ0FuZFByZXZpZXcgZnJvbSAnQC9jb21wb25lbnRzL0ZpbGVzVmlldy9EZXNrdG9wU29ydGluZ0FuZFByZXZpZXcnXG4gICAgaW1wb3J0IERlc2t0b3BUb29sYmFyIGZyb20gJ0AvY29tcG9uZW50cy9GaWxlc1ZpZXcvRGVza3RvcFRvb2xiYXInXG4gICAgaW1wb3J0IEZpbGVCcm93c2VyIGZyb20gJ0AvY29tcG9uZW50cy9GaWxlc1ZpZXcvRmlsZUJyb3dzZXInXG4gICAgaW1wb3J0IENvbnRleHRNZW51IGZyb20gJ0AvY29tcG9uZW50cy9GaWxlc1ZpZXcvQ29udGV4dE1lbnUnXG4gICAgaW1wb3J0IHttYXBHZXR0ZXJzfSBmcm9tICd2dWV4J1xuICAgIGltcG9ydCB7ZXZlbnRzfSBmcm9tICdAL2J1cydcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgbmFtZTogJ0ZpbGVzVmlldycsXG4gICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgIERlc2t0b3BTb3J0aW5nQW5kUHJldmlldyxcbiAgICAgICAgICAgIERlc2t0b3BUb29sYmFyLFxuICAgICAgICAgICAgRmlsZUJyb3dzZXIsXG4gICAgICAgICAgICBDb250ZXh0TWVudSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoWydjb25maWcnXSksXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGNvbnRleHRNZW51KGV2ZW50LCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdjb250ZXh0TWVudTpzaG93JywgZXZlbnQsIGl0ZW0pXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cbiAgICBAaW1wb3J0ICdAYXNzZXRzL3Z1ZWZpbGVtYW5hZ2VyL192YXJpYWJsZXMnO1xuICAgIEBpbXBvcnQgJ0Bhc3NldHMvdnVlZmlsZW1hbmFnZXIvX21peGlucyc7XG5cbiAgICAjZmlsZXMtdmlldyB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJywgc2Fucy1zZXJpZjtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1pbi13aWR0aDogMzIwcHg7XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgfVxuXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2OTBweCkge1xuICAgICAgICAjZmlsZXMtdmlldyB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db250ZW50RmlsZVZpZXcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTQtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NvbnRlbnRGaWxlVmlldy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0NvbnRlbnRGaWxlVmlldy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OGExY2I0MWMmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ29udGVudEZpbGVWaWV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vQ29udGVudEZpbGVWaWV3LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9Db250ZW50RmlsZVZpZXcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiAoX3ZtLnVzZXIpP19jKCdzZWN0aW9uJyx7YXR0cnM6e1wiaWRcIjpcInZpZXdwb3J0XCJ9fSxbX2MoJ0NvbnRlbnRTaWRlYmFyJyxbKF92bS5jb25maWcuc3RvcmFnZUxpbWl0ICYmIF92bS5zdG9yYWdlLnVzZWQgPiA5NSk/X2MoJ0NvbnRlbnRHcm91cCcsW19jKCdVcGdyYWRlU2lkZWJhckJhbm5lcicpXSwxKTpfdm0uX2UoKSxfdm0uX3YoXCIgXCIpLF9jKCdDb250ZW50R3JvdXAnLHthdHRyczp7XCJ0aXRsZVwiOl92bS4kdCgnc2lkZWJhci5sb2NhdGlvbnNfdGl0bGUnKX19LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJtZW51LWxpc3Qtd3JhcHBlciB2ZXJ0aWNhbFwifSxbX2MoJ2EnLHtzdGF0aWNDbGFzczpcIm1lbnUtbGlzdC1pdGVtIGxpbmtcIixjbGFzczp7J2lzLWFjdGl2ZSc6IF92bS4kaXNUaGlzTG9jYXRpb24oWydiYXNlJ10pfSxvbjp7XCJjbGlja1wiOl92bS5nb0hvbWV9fSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiaWNvbiB0ZXh0LXRoZW1lXCJ9LFtfYygnaG9tZS1pY29uJyx7YXR0cnM6e1wic2l6ZVwiOlwiMTdcIn19KV0sMSksX3ZtLl92KFwiIFwiKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJsYWJlbCB0ZXh0LXRoZW1lXCJ9LFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBcIitfdm0uX3MoX3ZtLiR0KCdzaWRlYmFyLmhvbWUnKSkrXCJcXG4gICAgICAgICAgICAgICAgICAgIFwiKV0pXSksX3ZtLl92KFwiIFwiKSxfYygnYScse3N0YXRpY0NsYXNzOlwibWVudS1saXN0LWl0ZW0gbGlua1wiLGNsYXNzOnsnaXMtYWN0aXZlJzogX3ZtLiRpc1RoaXNMb2NhdGlvbihbJ2xhdGVzdCddKX0sb246e1wiY2xpY2tcIjpfdm0uZ2V0TGF0ZXN0fX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImljb24gdGV4dC10aGVtZVwifSxbX2MoJ3VwbG9hZC1jbG91ZC1pY29uJyx7YXR0cnM6e1wic2l6ZVwiOlwiMTdcIn19KV0sMSksX3ZtLl92KFwiIFwiKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJsYWJlbCB0ZXh0LXRoZW1lXCJ9LFtfdm0uX3YoXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBcIitfdm0uX3MoX3ZtLiR0KCdzaWRlYmFyLmxhdGVzdCcpKStcIlxcbiAgICAgICAgICAgICAgICAgICAgXCIpXSldKSxfdm0uX3YoXCIgXCIpLF9jKCdhJyx7c3RhdGljQ2xhc3M6XCJtZW51LWxpc3QtaXRlbSBsaW5rXCIsY2xhc3M6eydpcy1hY3RpdmUnOiBfdm0uJGlzVGhpc0xvY2F0aW9uKFsndHJhc2gnLCAndHJhc2gtcm9vdCddKX0sb246e1wiY2xpY2tcIjpfdm0uZ2V0VHJhc2h9fSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiaWNvbiB0ZXh0LXRoZW1lXCJ9LFtfYygndHJhc2gyLWljb24nLHthdHRyczp7XCJzaXplXCI6XCIxN1wifX0pXSwxKSxfdm0uX3YoXCIgXCIpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcImxhYmVsIHRleHQtdGhlbWVcIn0sW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiK192bS5fcyhfdm0uJHQoJ2xvY2F0aW9ucy50cmFzaCcpKStcIlxcbiAgICAgICAgICAgICAgICAgICAgXCIpXSldKV0pXSksX3ZtLl92KFwiIFwiKSxfYygnQ29udGVudEdyb3VwJyx7c3RhdGljQ2xhc3M6XCJuYXZpZ2F0b3JcIixhdHRyczp7XCJ0aXRsZVwiOl92bS4kdCgnc2lkZWJhci5uYXZpZ2F0b3JfdGl0bGUnKSxcInNsdWdcIjpcIm5hdmlnYXRvclwiLFwiY2FuLWNvbGxhcHNlXCI6dHJ1ZX19LFsoX3ZtLnRyZWUubGVuZ3RoID09IDApP19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJlbXB0eS1ub3RlIG5hdmlnYXRvclwifSxbX3ZtLl92KFwiXFxuICAgICAgICAgICAgICAgIFwiK192bS5fcyhfdm0uJHQoJ3NpZGViYXIuZm9sZGVyc19lbXB0eScpKStcIlxcbiAgICAgICAgICAgIFwiKV0pOl92bS5fZSgpLF92bS5fdihcIiBcIiksX3ZtLl9sKChfdm0udHJlZSksZnVuY3Rpb24oaXRlbXMpe3JldHVybiBfYygnVHJlZU1lbnVOYXZpZ2F0b3InLHtrZXk6aXRlbXMuaWQsc3RhdGljQ2xhc3M6XCJmb2xkZXItdHJlZVwiLGF0dHJzOntcImRlcHRoXCI6MCxcIm5vZGVzXCI6aXRlbXN9fSl9KV0sMiksX3ZtLl92KFwiIFwiKSxfYygnQ29udGVudEdyb3VwJyx7YXR0cnM6e1widGl0bGVcIjpfdm0uJHQoJ3NpZGViYXIuZmF2b3VyaXRlcycpLFwic2x1Z1wiOlwiZmF2b3VyaXRlc1wiLFwiY2FuLWNvbGxhcHNlXCI6dHJ1ZX19LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJtZW51LWxpc3Qtd3JhcHBlciB2ZXJ0aWNhbCBmYXZvdXJpdGVzXCIsY2xhc3M6eyAnaXMtZHJhZ2VudGVyJzogX3ZtLmFyZWEgfSxvbjp7XCJkcmFnb3ZlclwiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5kcmFnRW50ZXIoJGV2ZW50KX0sXCJkcmFnbGVhdmVcIjpfdm0uZHJhZ0xlYXZlLFwiZHJvcFwiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5kcmFnRmluaXNoKCRldmVudCl9fX0sW19jKCd0cmFuc2l0aW9uLWdyb3VwJyx7c3RhdGljQ2xhc3M6XCJtZW51LWxpc3RcIixhdHRyczp7XCJ0YWdcIjpcImRpdlwiLFwibmFtZVwiOlwiZm9sZGVyLWl0ZW1cIn19LFsoX3ZtLmZhdm91cml0ZXMubGVuZ3RoID09IDApP19jKCdzcGFuJyx7a2V5OjAsc3RhdGljQ2xhc3M6XCJlbXB0eS1ub3RlIGZhdm91cml0ZXNcIn0sW192bS5fdihcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiK192bS5fcyhfdm0uJHQoJ3NpZGViYXIuZmF2b3VyaXRlc19lbXB0eScpKStcIlxcbiAgICAgICAgICAgICAgICAgICAgXCIpXSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSxfdm0uX2woKF92bS5mYXZvdXJpdGVzKSxmdW5jdGlvbihmb2xkZXIpe3JldHVybiBfYygnYScse2tleTpmb2xkZXIuaWQsc3RhdGljQ2xhc3M6XCJtZW51LWxpc3QtaXRlbVwiLGNsYXNzOnsnaXMtY3VycmVudCc6IChmb2xkZXIgJiYgX3ZtLmN1cnJlbnRGb2xkZXIpICYmIChfdm0uY3VycmVudEZvbGRlci5pZCA9PT0gZm9sZGVyLmlkKX0sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpeyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtyZXR1cm4gX3ZtLm9wZW5Gb2xkZXIoZm9sZGVyKX19fSxbX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwidGV4dC10aGVtZVwifSxbX2MoJ2ZvbGRlci1pY29uJyx7c3RhdGljQ2xhc3M6XCJmb2xkZXItaWNvbiB0ZXh0LXRoZW1lXCIsYXR0cnM6e1wic2l6ZVwiOlwiMTdcIn19KSxfdm0uX3YoXCIgXCIpLF9jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJsYWJlbCB0ZXh0LXRoZW1lXCJ9LFtfdm0uX3YoX3ZtLl9zKGZvbGRlci5uYW1lKSldKV0sMSksX3ZtLl92KFwiIFwiKSxfYygneC1pY29uJyx7c3RhdGljQ2xhc3M6XCJkZWxldGUtaWNvblwiLGF0dHJzOntcInNpemVcIjpcIjE3XCJ9LG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7cmV0dXJuIF92bS5yZW1vdmVGYXZvdXJpdGUoZm9sZGVyKX19fSldLDEpfSldLDIpXSwxKV0pXSwxKSxfdm0uX3YoXCIgXCIpLF9jKCdDb250ZW50RmlsZVZpZXcnKV0sMSk6X3ZtLl9lKCl9XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwidXBncmFkZS1iYW5uZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgPGhhcmQtZHJpdmUtaWNvbiBzaXplPVwiMTlcIiBjbGFzcz1cImljb25cIj48L2hhcmQtZHJpdmUtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyBzdG9yYWdlLnVzZWQgfX0lIEZyb20ge3sgc3RvcmFnZS5jYXBhY2l0eV9mb3JtYXR0ZWQgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICAgICAgPHAgdi1pZj1cInN0b3JhZ2UudXNlZCA+IDk1XCIgY2xhc3M9XCJyZWFjaC1jYXBhY2l0eVwiPnt7ICR0KCd1cGdyYWRlX2Jhbm5lci50aXRsZScpIH19PC9wPlxuICAgICAgICAgICAgPHAgdi1lbHNlIGNsYXNzPVwicmVhY2gtY2FwYWNpdHlcIj57eyAkdCgndXBncmFkZV9iYW5uZXIuZGVzY3JpcHRpb24nKSB9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgdi1pZj1cImNvbmZpZy5hcHBfcGF5bWVudHNfYWN0aXZlXCIgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgICAgIDxyb3V0ZXItbGluayA6dG89XCJ7bmFtZTogJ1VwZ3JhZGVQbGFuJ31cIiBjbGFzcz1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIHt7ICR0KCd1cGdyYWRlX2Jhbm5lci5idXR0b24nKSB9fVxuICAgICAgICAgICAgPC9yb3V0ZXItbGluaz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCBCdXR0b25CYXNlIGZyb20gJ0AvY29tcG9uZW50cy9GaWxlc1ZpZXcvQnV0dG9uQmFzZSdcbiAgICBpbXBvcnQgeyBIYXJkRHJpdmVJY29uIH0gZnJvbSAndnVlLWZlYXRoZXItaWNvbnMnXG4gICAgaW1wb3J0IHsgbWFwR2V0dGVycyB9IGZyb20gJ3Z1ZXgnXG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIG5hbWU6ICdVcGdyYWRlU2lkZWJhckJhbm5lcicsXG4gICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgIEhhcmREcml2ZUljb24sXG4gICAgICAgICAgICBCdXR0b25CYXNlLFxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyhbJ2NvbmZpZyddKSxcbiAgICAgICAgICAgIHN0b3JhZ2UoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMudXNlci5yZWxhdGlvbnNoaXBzLnN0b3JhZ2UuZGF0YS5hdHRyaWJ1dGVzXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxuICAgIEBpbXBvcnQgJ0Bhc3NldHMvdnVlZmlsZW1hbmFnZXIvX3ZhcmlhYmxlcyc7XG4gICAgQGltcG9ydCAnQGFzc2V0cy92dWVmaWxlbWFuYWdlci9fbWl4aW5zJztcblxuICAgIC51cGdyYWRlLWJhbm5lciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoJGRhbmdlciwgMC4xKTtcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBtYXJnaW46IDAgMTZweDtcbiAgICB9XG5cbiAgICAuaGVhZGVyLXRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cbiAgICAgICAgICAgIGxpbmUsIHBhdGgge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogJGRhbmdlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMTMpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgICAgICAgIGNvbG9yOiAkZGFuZ2VyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbnRlbnQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDEyKTtcbiAgICAgICAgICAgIGNvbG9yOiAkZGFuZ2VyO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5idXR0b24ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZGFuZ2VyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICAgICAgICBwYWRkaW5nOiA2cHggMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMTIpO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTBweCByZ2JhKCRkYW5nZXIsIDAuMzUpO1xuICAgIH1cblxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG5cbiAgICB9XG5cbiAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG5cbiAgICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9VcGdyYWRlU2lkZWJhckJhbm5lci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tNC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVXBncmFkZVNpZGViYXJCYW5uZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9VcGdyYWRlU2lkZWJhckJhbm5lci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDJmZjIwZjgmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVXBncmFkZVNpZGViYXJCYW5uZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9VcGdyYWRlU2lkZWJhckJhbm5lci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vVXBncmFkZVNpZGViYXJCYW5uZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDJmZjIwZjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCIwMmZmMjBmOFwiLFxuICBudWxsXG4gIFxuKVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInVwZ3JhZGUtYmFubmVyXCJ9LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJoZWFkZXItdGl0bGVcIn0sW19jKCdoYXJkLWRyaXZlLWljb24nLHtzdGF0aWNDbGFzczpcImljb25cIixhdHRyczp7XCJzaXplXCI6XCIxOVwifX0pLF92bS5fdihcIiBcIiksX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcInRpdGxlXCJ9LFtfdm0uX3YoX3ZtLl9zKF92bS5zdG9yYWdlLnVzZWQpK1wiJSBGcm9tIFwiK192bS5fcyhfdm0uc3RvcmFnZS5jYXBhY2l0eV9mb3JtYXR0ZWQpKV0pXSwxKSxfdm0uX3YoXCIgXCIpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbnRlbnRcIn0sWyhfdm0uc3RvcmFnZS51c2VkID4gOTUpP19jKCdwJyx7c3RhdGljQ2xhc3M6XCJyZWFjaC1jYXBhY2l0eVwifSxbX3ZtLl92KF92bS5fcyhfdm0uJHQoJ3VwZ3JhZGVfYmFubmVyLnRpdGxlJykpKV0pOl9jKCdwJyx7c3RhdGljQ2xhc3M6XCJyZWFjaC1jYXBhY2l0eVwifSxbX3ZtLl92KF92bS5fcyhfdm0uJHQoJ3VwZ3JhZGVfYmFubmVyLmRlc2NyaXB0aW9uJykpKV0pXSksX3ZtLl92KFwiIFwiKSwoX3ZtLmNvbmZpZy5hcHBfcGF5bWVudHNfYWN0aXZlKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJmb290ZXJcIn0sW19jKCdyb3V0ZXItbGluaycse3N0YXRpY0NsYXNzOlwiYnV0dG9uXCIsYXR0cnM6e1widG9cIjp7bmFtZTogJ1VwZ3JhZGVQbGFuJ319fSxbX3ZtLl92KFwiXFxuICAgICAgICAgICAgXCIrX3ZtLl9zKF92bS4kdCgndXBncmFkZV9iYW5uZXIuYnV0dG9uJykpK1wiXFxuICAgICAgICBcIildKV0sMSk6X3ZtLl9lKCldKX1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlPlxuICAgIDxzZWN0aW9uIGlkPVwidmlld3BvcnRcIiB2LWlmPVwidXNlclwiPlxuXG4gICAgICAgIDxDb250ZW50U2lkZWJhcj5cblxuICAgICAgICAgICAgPCEtLUVtcHR5IHN0b3JhZ2Ugd2FybmluZy0tPlxuICAgICAgICAgICAgPENvbnRlbnRHcm91cCB2LWlmPVwiY29uZmlnLnN0b3JhZ2VMaW1pdCAmJiBzdG9yYWdlLnVzZWQgPiA5NVwiPlxuICAgICAgICAgICAgICAgIDxVcGdyYWRlU2lkZWJhckJhbm5lci8+XG4gICAgICAgICAgICA8L0NvbnRlbnRHcm91cD5cblxuICAgICAgICAgICAgPCEtLUxvY2F0aW9ucy0tPlxuICAgICAgICAgICAgPENvbnRlbnRHcm91cCA6dGl0bGU9XCIkdCgnc2lkZWJhci5sb2NhdGlvbnNfdGl0bGUnKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWxpc3Qtd3JhcHBlciB2ZXJ0aWNhbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm1lbnUtbGlzdC1pdGVtIGxpbmtcIiA6Y2xhc3M9XCJ7J2lzLWFjdGl2ZSc6ICRpc1RoaXNMb2NhdGlvbihbJ2Jhc2UnXSl9XCIgQGNsaWNrPVwiZ29Ib21lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbiB0ZXh0LXRoZW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhvbWUtaWNvbiBzaXplPVwiMTdcIj48L2hvbWUtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHRleHQtdGhlbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAkdCgnc2lkZWJhci5ob21lJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibWVudS1saXN0LWl0ZW0gbGlua1wiIDpjbGFzcz1cInsnaXMtYWN0aXZlJzogJGlzVGhpc0xvY2F0aW9uKFsnbGF0ZXN0J10pfVwiIEBjbGljaz1cImdldExhdGVzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gdGV4dC10aGVtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cGxvYWQtY2xvdWQtaWNvbiBzaXplPVwiMTdcIj48L3VwbG9hZC1jbG91ZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwgdGV4dC10aGVtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KCdzaWRlYmFyLmxhdGVzdCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm1lbnUtbGlzdC1pdGVtIGxpbmtcIiA6Y2xhc3M9XCJ7J2lzLWFjdGl2ZSc6ICRpc1RoaXNMb2NhdGlvbihbJ3RyYXNoJywgJ3RyYXNoLXJvb3QnXSl9XCIgQGNsaWNrPVwiZ2V0VHJhc2hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIHRleHQtdGhlbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhc2gyLWljb24gc2l6ZT1cIjE3XCI+PC90cmFzaDItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHRleHQtdGhlbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAkdCgnbG9jYXRpb25zLnRyYXNoJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0NvbnRlbnRHcm91cD5cblxuICAgICAgICAgICAgPCEtLU5hdmlnYXRvci0tPlxuICAgICAgICAgICAgPENvbnRlbnRHcm91cCA6dGl0bGU9XCIkdCgnc2lkZWJhci5uYXZpZ2F0b3JfdGl0bGUnKVwiIHNsdWc9XCJuYXZpZ2F0b3JcIiA6Y2FuLWNvbGxhcHNlPVwidHJ1ZVwiIGNsYXNzPVwibmF2aWdhdG9yXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbXB0eS1ub3RlIG5hdmlnYXRvclwiIHYtaWY9XCJ0cmVlLmxlbmd0aCA9PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICR0KCdzaWRlYmFyLmZvbGRlcnNfZW1wdHknKSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8VHJlZU1lbnVOYXZpZ2F0b3IgY2xhc3M9XCJmb2xkZXItdHJlZVwiIDpkZXB0aD1cIjBcIiA6bm9kZXM9XCJpdGVtc1wiIHYtZm9yPVwiaXRlbXMgaW4gdHJlZVwiIDprZXk9XCJpdGVtcy5pZFwiLz5cbiAgICAgICAgICAgIDwvQ29udGVudEdyb3VwPlxuXG4gICAgICAgICAgICA8IS0tRmF2b3VyaXRlcy0tPlxuICAgICAgICAgICAgPENvbnRlbnRHcm91cCA6dGl0bGU9XCIkdCgnc2lkZWJhci5mYXZvdXJpdGVzJylcIiBzbHVnPVwiZmF2b3VyaXRlc1wiIDpjYW4tY29sbGFwc2U9XCJ0cnVlXCI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1saXN0LXdyYXBwZXIgdmVydGljYWwgZmF2b3VyaXRlc1wiIDpjbGFzcz1cInsgJ2lzLWRyYWdlbnRlcic6IGFyZWEgfVwiIEBkcmFnb3Zlci5wcmV2ZW50PVwiZHJhZ0VudGVyXCIgQGRyYWdsZWF2ZT1cImRyYWdMZWF2ZVwiIEBkcm9wPVwiZHJhZ0ZpbmlzaCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0cmFuc2l0aW9uLWdyb3VwIHRhZz1cImRpdlwiIGNsYXNzPVwibWVudS1saXN0XCIgbmFtZT1cImZvbGRlci1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVtcHR5LW5vdGUgZmF2b3VyaXRlc1wiIHYtaWY9XCJmYXZvdXJpdGVzLmxlbmd0aCA9PSAwXCIgOmtleT1cIjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAkdCgnc2lkZWJhci5mYXZvdXJpdGVzX2VtcHR5JykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgQGNsaWNrLnN0b3A9XCJvcGVuRm9sZGVyKGZvbGRlcilcIiBjbGFzcz1cIm1lbnUtbGlzdC1pdGVtXCIgOmNsYXNzPVwieydpcy1jdXJyZW50JzogKGZvbGRlciAmJiBjdXJyZW50Rm9sZGVyKSAmJiAoY3VycmVudEZvbGRlci5pZCA9PT0gZm9sZGVyLmlkKX1cIiB2LWZvcj1cImZvbGRlciBpbiBmYXZvdXJpdGVzXCIgOmtleT1cImZvbGRlci5pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRoZW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb2xkZXItaWNvbiBzaXplPVwiMTdcIiBjbGFzcz1cImZvbGRlci1pY29uIHRleHQtdGhlbWVcIj48L2ZvbGRlci1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIHRleHQtdGhlbWVcIj57eyBmb2xkZXIubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eC1pY29uIHNpemU9XCIxN1wiIEBjbGljay5zdG9wPVwicmVtb3ZlRmF2b3VyaXRlKGZvbGRlcilcIiBjbGFzcz1cImRlbGV0ZS1pY29uXCI+PC94LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvdHJhbnNpdGlvbi1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvQ29udGVudEdyb3VwPlxuICAgICAgICA8L0NvbnRlbnRTaWRlYmFyPlxuXG4gICAgICAgIDxDb250ZW50RmlsZVZpZXcvPlxuICAgIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgVXBncmFkZVNpZGViYXJCYW5uZXIgZnJvbSAnQC9jb21wb25lbnRzL090aGVycy9VcGdyYWRlU2lkZWJhckJhbm5lcidcbmltcG9ydCBUcmVlTWVudU5hdmlnYXRvciBmcm9tICdAL2NvbXBvbmVudHMvT3RoZXJzL1RyZWVNZW51TmF2aWdhdG9yJ1xuaW1wb3J0IE11bHRpU2VsZWN0ZWQgZnJvbSAnQC9jb21wb25lbnRzL0ZpbGVzVmlldy9NdWx0aVNlbGVjdGVkJ1xuaW1wb3J0IENvbnRlbnRGaWxlVmlldyBmcm9tICdAL2NvbXBvbmVudHMvT3RoZXJzL0NvbnRlbnRGaWxlVmlldydcbmltcG9ydCBDb250ZW50U2lkZWJhciBmcm9tICdAL2NvbXBvbmVudHMvU2lkZWJhci9Db250ZW50U2lkZWJhcidcbmltcG9ydCBDb250ZW50R3JvdXAgZnJvbSAnQC9jb21wb25lbnRzL1NpZGViYXIvQ29udGVudEdyb3VwJ1xuaW1wb3J0IHsgbWFwR2V0dGVycyB9IGZyb20gJ3Z1ZXgnXG5pbXBvcnQgeyBldmVudHMgfSBmcm9tICdAL2J1cydcbmltcG9ydCB7XG4gICAgVXBsb2FkQ2xvdWRJY29uLFxuICAgIEZvbGRlckljb24sXG4gICAgVHJhc2gySWNvbixcbiAgICBIb21lSWNvbixcbiAgICBYSWNvblxufSBmcm9tICd2dWUtZmVhdGhlci1pY29ucydcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWU6ICdGaWxlc1ZpZXcnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgVXBncmFkZVNpZGViYXJCYW5uZXIsXG4gICAgICAgIFRyZWVNZW51TmF2aWdhdG9yLFxuICAgICAgICBDb250ZW50RmlsZVZpZXcsXG4gICAgICAgIE11bHRpU2VsZWN0ZWQsXG4gICAgICAgIENvbnRlbnRTaWRlYmFyLFxuICAgICAgICBVcGxvYWRDbG91ZEljb24sXG4gICAgICAgIENvbnRlbnRHcm91cCxcbiAgICAgICAgRm9sZGVySWNvbixcbiAgICAgICAgVHJhc2gySWNvbixcbiAgICAgICAgSG9tZUljb24sXG4gICAgICAgIFhJY29uXG4gICAgfSxcbiAgICBjb21wdXRlZDoge1xuICAgICAgICAuLi5tYXBHZXR0ZXJzKFsndXNlcicsICdob21lRGlyZWN0b3J5JywgJ2N1cnJlbnRGb2xkZXInLCAnY29uZmlnJywgJ2ZpbGVJbmZvRGV0YWlsJ10pLFxuICAgICAgICBmYXZvdXJpdGVzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlci5kYXRhLnJlbGF0aW9uc2hpcHMuZmF2b3VyaXRlcy5kYXRhLmF0dHJpYnV0ZXMuZm9sZGVyc1xuICAgICAgICB9LFxuICAgICAgICB0cmVlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlci5kYXRhLmF0dHJpYnV0ZXMuZm9sZGVyc1xuICAgICAgICB9LFxuICAgICAgICBzdG9yYWdlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMudXNlci5kYXRhLmF0dHJpYnV0ZXMuc3RvcmFnZVxuICAgICAgICB9XG4gICAgfSxcbiAgICBkYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXJlYTogZmFsc2UsXG4gICAgICAgICAgICBkcmFnZ2VkSXRlbTogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgZ2V0VHJhc2goKSB7XG4gICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZ2V0VHJhc2gnKVxuICAgICAgICB9LFxuICAgICAgICBnZXRMYXRlc3QoKSB7XG4gICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZ2V0TGF0ZXN0JylcbiAgICAgICAgfSxcbiAgICAgICAgZ29Ib21lKCkge1xuICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2dldEZvbGRlcicsIFt7IGZvbGRlcjogdGhpcy5ob21lRGlyZWN0b3J5LCBiYWNrOiBmYWxzZSwgaW5pdDogdHJ1ZSB9XSlcbiAgICAgICAgfSxcbiAgICAgICAgb3BlbkZvbGRlcihmb2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdnZXRGb2xkZXInLCBbeyBmb2xkZXI6IGZvbGRlciwgYmFjazogZmFsc2UsIGluaXQ6IGZhbHNlIH1dKVxuICAgICAgICB9LFxuICAgICAgICBkcmFnRW50ZXIoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2VkSXRlbSAmJiB0aGlzLmRyYWdnZWRJdGVtLnR5cGUgIT09ICdmb2xkZXInKSByZXR1cm5cblxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUluZm9EZXRhaWwubGVuZ3RoID4gMCAmJiB0aGlzLmZpbGVJbmZvRGV0YWlsLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgIT09ICdmb2xkZXInKSkgcmV0dXJuXG5cbiAgICAgICAgICAgIHRoaXMuYXJlYSA9IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgZHJhZ0xlYXZlKCkge1xuICAgICAgICAgICAgdGhpcy5hcmVhID0gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgZHJhZ0ZpbmlzaCgpIHtcbiAgICAgICAgICAgIHRoaXMuYXJlYSA9IGZhbHNlXG5cbiAgICAgICAgICAgIGV2ZW50cy4kZW1pdCgnZHJvcCcpXG5cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIGRyYWdnZWQgaXRlbSBpcyBmb2xkZXJcbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdnZWRJdGVtICYmIHRoaXMuZHJhZ2dlZEl0ZW0udHlwZSAhPT0gJ2ZvbGRlcicpIHJldHVyblxuXG4gICAgICAgICAgICAvLyBDaGVjayBpZiBmb2xkZXIgZXhpc3QgaW4gZmF2b3VyaXRlc1xuICAgICAgICAgICAgaWYgKHRoaXMuZmF2b3VyaXRlcy5maW5kKGZvbGRlciA9PiBmb2xkZXIuaWQgPT0gdGhpcy5kcmFnZ2VkSXRlbS5pZCkpIHJldHVyblxuXG4gICAgICAgICAgICAvLyBQcmV2ZW50IHRvIG1vdmUgZm9sZGVycyB0byBzZWxmXG4gICAgICAgICAgICBpZiAodGhpcy5maWxlSW5mb0RldGFpbC5sZW5ndGggPiAwICYmIHRoaXMuZmlsZUluZm9EZXRhaWwuZmluZChpdGVtID0+IGl0ZW0udHlwZSAhPT0gJ2ZvbGRlcicpKSByZXR1cm5cblxuICAgICAgICAgICAgLy8gU3RvcmUgZmF2b3VyaXRlcyBmb2xkZXJcblxuICAgICAgICAgICAgLy9BZGQgdG8gZmF2b3VyaXRlcyBub24gc2VsZWN0ZWQgZm9sZGVyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZmlsZUluZm9EZXRhaWwuaW5jbHVkZXModGhpcy5kcmFnZ2VkSXRlbSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkVG9GYXZvdXJpdGVzJywgdGhpcy5kcmFnZ2VkSXRlbSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9BZGQgdG8gZmF2b3VyaXRlcyBzZWxlY3RlZCBmb2xkZXJzXG4gICAgICAgICAgICBpZiAodGhpcy5maWxlSW5mb0RldGFpbC5pbmNsdWRlcyh0aGlzLmRyYWdnZWRJdGVtKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRUb0Zhdm91cml0ZXMnLCBudWxsKVxuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlRmF2b3VyaXRlKGZvbGRlcikge1xuICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3JlbW92ZUZyb21GYXZvdXJpdGVzJywgZm9sZGVyKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBjcmVhdGVkKCkge1xuICAgICAgICB0aGlzLmdvSG9tZSgpXG5cbiAgICAgICAgLy8gTGlzdGVuIGZvciBkcmFnc3RhcnQgZm9sZGVyIGl0ZW1zXG4gICAgICAgIGV2ZW50cy4kb24oJ2RyYWdzdGFydCcsIChpdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyYWdnZWRJdGVtID0gaXRlbSAsIHRoaXMuZHJhZ0luUHJvZ3Jlc3MgPSB0cnVlXG4gICAgICAgIH0pXG5cbiAgICAgICAgZXZlbnRzLiRvbignZHJvcCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0luUHJvZ3Jlc3MgPSBmYWxzZVxuICAgICAgICB9KVxuICAgIH1cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG5cbi5lbXB0eS1ub3RlIHtcblxuICAgICYubmF2aWdhdG9yIHtcbiAgICAgICAgcGFkZGluZzogNXB4IDI1cHggMTBweDtcbiAgICB9XG5cbiAgICAmLmZhdm91cml0ZXMge1xuICAgICAgICBwYWRkaW5nOiA1cHggMjNweCAxMHB4O1xuICAgIH1cbn1cblxuLm5hdmlnYXRvciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcblxuICAgIC5lbXB0eS1ub3RlIHtcblxuICAgICAgICAmLm5hdmlnYXRvciB7XG4gICAgICAgICAgICBwYWRkaW5nOiA1cHggMjBweCAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5mYXZvdXJpdGVzIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxOHB4IDEwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRyYW5zaXRpb25cbi5mb2xkZXItaXRlbS1tb3ZlIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwcyBlYXNlO1xufVxuXG4uZm9sZGVyLWl0ZW0tZW50ZXItYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMzAwbXMgZWFzZTtcbn1cblxuLmZvbGRlci1pdGVtLWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zO1xufVxuXG4uZm9sZGVyLWl0ZW0tZW50ZXIsIC5mb2xkZXItaXRlbS1sZWF2ZS10byAvKiAubGlzdC1sZWF2ZS1hY3RpdmUgYmVsb3cgdmVyc2lvbiAyLjEuOCAqL1xue1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpO1xufVxuXG4uZm9sZGVyLWl0ZW0tbGVhdmUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTQtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0ZpbGVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9GaWxlcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0ZpbGVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02OWU0ZjViOCZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9GaWxlcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0ZpbGVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9GaWxlcy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02OWU0ZjViOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjY5ZTRmNWI4XCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVXBncmFkZVNpZGViYXJCYW5uZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDJmZjIwZjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiKTtcblxuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cbnZhciB0cmFuc2Zvcm07XG52YXIgaW5zZXJ0SW50bztcblxuXG5cbnZhciBvcHRpb25zID0ge1wiaG1yXCI6dHJ1ZX1cblxub3B0aW9ucy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1cbm9wdGlvbnMuaW5zZXJ0SW50byA9IHVuZGVmaW5lZDtcblxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9VcGdyYWRlU2lkZWJhckJhbm5lci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wMmZmMjBmOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9VcGdyYWRlU2lkZWJhckJhbm5lci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wMmZmMjBmOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIpO1xuXG5cdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cblx0XHR2YXIgbG9jYWxzID0gKGZ1bmN0aW9uKGEsIGIpIHtcblx0XHRcdHZhciBrZXksIGlkeCA9IDA7XG5cblx0XHRcdGZvcihrZXkgaW4gYSkge1xuXHRcdFx0XHRpZighYiB8fCBhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZHgrKztcblx0XHRcdH1cblxuXHRcdFx0Zm9yKGtleSBpbiBiKSBpZHgtLTtcblxuXHRcdFx0cmV0dXJuIGlkeCA9PT0gMDtcblx0XHR9KGNvbnRlbnQubG9jYWxzLCBuZXdDb250ZW50LmxvY2FscykpO1xuXG5cdFx0aWYoIWxvY2FscykgdGhyb3cgbmV3IEVycm9yKCdBYm9ydGluZyBDU1MgSE1SIGR1ZSB0byBjaGFuZ2VkIGNzcy1tb2R1bGVzIGxvY2Fscy4nKTtcblxuXHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0fSk7XG5cblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ3RyYW5zaXRpb24nLHthdHRyczp7XCJuYW1lXCI6XCJmb2xkZXJcIn19LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJmb2xkZXItaXRlbS13cmFwcGVyXCJ9LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJmb2xkZXItaXRlbSB0ZXh0LXRoZW1lXCIsY2xhc3M6eydpcy1zZWxlY3RlZCc6IF92bS5pc1NlbGVjdGVkICwgJ2lzLWRyYWdlbnRlcic6IF92bS5hcmVhLCAnaXMtaW5hY3RpdmUnOiBfdm0uZGlzYWJsZWRGb2xkZXIgfHwgX3ZtLmRpc2FibGVkICYmIF92bS5kcmFnZ2VkSXRlbS5sZW5ndGggPiAwICB9LHN0eWxlOihfdm0uaW5kZW50KSxvbjp7XCJjbGlja1wiOl92bS5nZXRGb2xkZXIsXCJkcmFnb3ZlclwiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIF92bS5kcmFnRW50ZXIoJGV2ZW50KX0sXCJkcmFnbGVhdmVcIjpfdm0uZHJhZ0xlYXZlLFwiZHJvcFwiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5kcmFnRmluaXNoKCl9fX0sW19jKCdjaGV2cm9uLXJpZ2h0LWljb24nLHtzdGF0aWNDbGFzczpcImljb24tYXJyb3dcIixjbGFzczp7J2lzLW9wZW5lZCc6IF92bS5pc1Zpc2libGUsICdpcy12aXNpYmxlJzogX3ZtLm5vZGVzLmZvbGRlcnMubGVuZ3RoICE9PSAwfSxhdHRyczp7XCJzaXplXCI6XCIxN1wifSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO3JldHVybiBfdm0uc2hvd1RyZWUoJGV2ZW50KX19fSksX3ZtLl92KFwiIFwiKSxfYygnZm9sZGVyLWljb24nLHtzdGF0aWNDbGFzczpcImljb24gdGV4dC10aGVtZVwiLGF0dHJzOntcInNpemVcIjpcIjE3XCJ9fSksX3ZtLl92KFwiIFwiKSxfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwibGFiZWxcIn0sW192bS5fdihfdm0uX3MoX3ZtLm5vZGVzLm5hbWUpKV0pXSwxKSxfdm0uX3YoXCIgXCIpLF92bS5fbCgoX3ZtLm5vZGVzLmZvbGRlcnMpLGZ1bmN0aW9uKGl0ZW0pe3JldHVybiAoX3ZtLmlzVmlzaWJsZSk/X2MoJ1RyZWVNZW51TmF2aWdhdG9yJyx7a2V5Oml0ZW0uaWQsYXR0cnM6e1wiZGlzYWJsZWRcIjpfdm0uZGlzYWJsZUNoaWxkcmVuLFwiZGVwdGhcIjpfdm0uZGVwdGggKyAxLFwibm9kZXNcIjppdGVtfX0pOl92bS5fZSgpfSldLDIpXSl9XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsIjx0ZW1wbGF0ZT5cbiAgICA8dHJhbnNpdGlvbiBuYW1lPVwiZm9sZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb2xkZXItaXRlbS13cmFwcGVyXCIgPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9sZGVyLWl0ZW0gdGV4dC10aGVtZVwiIDpjbGFzcz1cInsnaXMtc2VsZWN0ZWQnOiBpc1NlbGVjdGVkICwgJ2lzLWRyYWdlbnRlcic6IGFyZWEsICdpcy1pbmFjdGl2ZSc6IGRpc2FibGVkRm9sZGVyIHx8IGRpc2FibGVkICYmIGRyYWdnZWRJdGVtLmxlbmd0aCA+IDAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN0eWxlPVwiaW5kZW50XCIgQGNsaWNrPVwiZ2V0Rm9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBkcmFnb3Zlci5wcmV2ZW50PVwiZHJhZ0VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBkcmFnbGVhdmU9XCJkcmFnTGVhdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRyb3A9XCJkcmFnRmluaXNoKClcIlxuXG4gICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxjaGV2cm9uLXJpZ2h0LWljb24gQGNsaWNrLnN0b3A9XCJzaG93VHJlZVwiIHNpemU9XCIxN1wiIGNsYXNzPVwiaWNvbi1hcnJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7J2lzLW9wZW5lZCc6IGlzVmlzaWJsZSwgJ2lzLXZpc2libGUnOiBub2Rlcy5mb2xkZXJzLmxlbmd0aCAhPT0gMH1cIj48L2NoZXZyb24tcmlnaHQtaWNvbj5cbiAgICAgICAgICAgICAgICA8Zm9sZGVyLWljb24gc2l6ZT1cIjE3XCIgY2xhc3M9XCJpY29uIHRleHQtdGhlbWVcIj48L2ZvbGRlci1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyBub2Rlcy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxUcmVlTWVudU5hdmlnYXRvciA6ZGlzYWJsZWQ9XCJkaXNhYmxlQ2hpbGRyZW5cIiA6ZGVwdGg9XCJkZXB0aCArIDFcIiB2LWlmPVwiaXNWaXNpYmxlXCIgOm5vZGVzPVwiaXRlbVwiIHYtZm9yPVwiaXRlbSBpbiBub2Rlcy5mb2xkZXJzXCIgOmtleT1cIml0ZW0uaWRcIi8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvdHJhbnNpdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IFRyZWVNZW51TmF2aWdhdG9yIGZyb20gJ0AvY29tcG9uZW50cy9PdGhlcnMvVHJlZU1lbnVOYXZpZ2F0b3InXG4gICAgaW1wb3J0IHtGb2xkZXJJY29uLCBDaGV2cm9uUmlnaHRJY29ufSBmcm9tICd2dWUtZmVhdGhlci1pY29ucydcbiAgICBpbXBvcnQgeyBtYXBHZXR0ZXJzIH0gZnJvbSAndnVleCdcbiAgICBpbXBvcnQge2V2ZW50c30gZnJvbSBcIkAvYnVzXCJcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgbmFtZTogJ1RyZWVNZW51TmF2aWdhdG9yJyxcbiAgICAgICAgcHJvcHM6IFtcbiAgICAgICAgICAgICdub2RlcycsICdkZXB0aCcgLCAnZGlzYWJsZWQnLFxuICAgICAgICBdLFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBUcmVlTWVudU5hdmlnYXRvcixcbiAgICAgICAgICAgIENoZXZyb25SaWdodEljb24sXG4gICAgICAgICAgICBGb2xkZXJJY29uLFxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyhbJ2ZpbGVJbmZvRGV0YWlsJ10pLFxuXG4gICAgICAgICAgICBkaXNhYmxlZEZvbGRlcigpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGlzYWJsZUZvbGRlciA9IGZhbHNlXG4gICAgICAgICAgICAgICAgaWYodGhpcy5kcmFnZ2VkSXRlbS5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2VkSXRlbS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9EaXNhYmxlIHRoZSBwYXJlbnQgb2YgdGhlIGZvbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS50eXBlID09PSBcImZvbGRlclwiICYmIHRoaXMubm9kZXMuaWQgPT09IGl0ZW0ucGFyZW50X2lkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlRm9sZGVyID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy9EaXNhYmxlIHRoZSBzZWxmIGZvbGRlciB3aXRoIGFsbCBjaGlsZHJlblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZXMuaWQgPT09IGl0ZW0uaWQgJiYgaXRlbS50eXBlID09PSAnZm9sZGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVGb2xkZXIgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2hpbGRyZW4gPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2hpbGRyZW4gPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlRm9sZGVyID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2hpbGRyZW4gPSBmYWxzZVxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRpc2FibGVGb2xkZXJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmRlbnQoKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gd2luZG93LmlubmVyV2lkdGggPD0gMTAyNCA/IDE3IDogMjI7XG5cbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmRlcHRoID09IDAgPyBvZmZzZXQgOiBvZmZzZXQgKyAodGhpcy5kZXB0aCAqIDIwKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7cGFkZGluZ0xlZnQ6IHZhbHVlICsgJ3B4J31cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYXJlYTpmYWxzZSxcbiAgICAgICAgICAgICAgICBkcmFnZ2VkSXRlbTpbXSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlQ2hpbGRyZW46ZmFsc2UsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGRyYWdGaW5pc2goKSB7XG4gICAgICAgICAgICAgICAgLy8gTW92ZSBubyBzZWxlY3RlZCBpdGVtXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuZmlsZUluZm9EZXRhaWwuaW5jbHVkZXModGhpcy5kcmFnZ2VkSXRlbVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ21vdmVJdGVtJywge3RvX2l0ZW06IHRoaXMubm9kZXMgLG5vU2VsZWN0ZWRJdGVtOnRoaXMuZHJhZ2dlZEl0ZW1bMF19KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIE1vdmUgYWxsIHNlbGVjdGVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgaWYodGhpcy5maWxlSW5mb0RldGFpbC5pbmNsdWRlcyh0aGlzLmRyYWdnZWRJdGVtWzBdKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnbW92ZUl0ZW0nLCB7dG9faXRlbTogdGhpcy5ub2RlcyAsbm9TZWxlY3RlZEl0ZW06bnVsbH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dlZEl0ZW0gPSBbXVxuICAgICAgICAgICAgICAgIHRoaXMuYXJlYSA9IGZhbHNlXG5cbiAgICAgICAgICAgICAgICBldmVudHMuJGVtaXQoJ2Ryb3AnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICBkcmFnRW50ZXIoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcmVhID0gdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRyYWdMZWF2ZSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFyZWEgPSBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldEZvbGRlcigpIHtcbiAgICAgICAgICAgICAgICBldmVudHMuJGVtaXQoJ3Nob3ctZm9sZGVyJywgdGhpcy5ub2RlcylcblxuICAgICAgICAgICAgICAgIC8vIEdvIHRvIGZvbGRlclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLiRpc1RoaXNMb2NhdGlvbigncHVibGljJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2Jyb3dzZVNoYXJlZCcsIFt7IGZvbGRlcjogdGhpcy5ub2RlcywgYmFjazogZmFsc2UsIGluaXQ6IGZhbHNlIH1dKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdnZXRGb2xkZXInLCBbeyBmb2xkZXI6IHRoaXMubm9kZXMsIGJhY2s6IGZhbHNlLCBpbml0OiBmYWxzZSB9XSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2hvd1RyZWUoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSAhdGhpcy5pc1Zpc2libGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlZCgpIHtcblxuICAgICAgICAgICAgZXZlbnRzLiRvbignZHJvcCcgLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2VkSXRlbSA9IFtdXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAvL0dldCBkcmFnZ2VkIGl0ZW1cbiAgICAgICAgICAgIGV2ZW50cy4kb24oJ2RyYWdzdGFydCcgLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgLy9JZiBpcyBkcmFnZ2VkIGl0ZW0gbm90IHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuZmlsZUluZm9EZXRhaWwuaW5jbHVkZXMoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2VkSXRlbSA9IFtkYXRhXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvL0lmIGFyZSB0aGUgZHJhZ2dlZCBpdGVtcyBzZWxlY3RlZFxuICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUluZm9EZXRhaWwuaW5jbHVkZXMoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2VkSXRlbSA9IHRoaXMuZmlsZUluZm9EZXRhaWxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAvLyBTZWxlY3QgY2xpY2tlZCBmb2xkZXJcbiAgICAgICAgICAgIGV2ZW50cy4kb24oJ3Nob3ctZm9sZGVyJywgbm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkID0gZmFsc2VcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5vZGVzLmlkID09IG5vZGUuaWQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZCA9IHRydWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxuICAgIEBpbXBvcnQgJ0Bhc3NldHMvdnVlZmlsZW1hbmFnZXIvX3ZhcmlhYmxlcyc7XG4gICAgQGltcG9ydCAnQGFzc2V0cy92dWVmaWxlbWFuYWdlci9fbWl4aW5zJztcblxuICAgIC5pcy1pbmFjdGl2ZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuXG4gICAgLmlzLWRyYWdlbnRlciB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB9XG5cbiAgICAuZm9sZGVyLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogOHB4IDA7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oMTUwbXMpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCB0cmFuc3BhcmVudCA7XG5cbiAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTVweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOXB4O1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xcHg7XG5cbiAgICAgICAgICAgIHBhdGgsIGxpbmUsIHBvbHlsaW5lLCByZWN0LCBjaXJjbGUge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oMTUwbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmljb24tYXJyb3cge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbigzMDBtcyk7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuXG4gICAgICAgICAgICAmLmlzLXZpc2libGUge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuaXMtb3BlbmVkIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKDkwZGVnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubGFiZWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbigxNTBtcyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMTMpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgY29sb3I6ICR0ZXh0O1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICYuaXMtc2VsZWN0ZWQge1xuXG4gICAgICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICAgICAgcGF0aCwgbGluZSwgcG9seWxpbmUsIHJlY3QsIGNpcmNsZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG5cbiAgICAgICAgLmZvbGRlci1pdGVtIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGFyayBtb2RlXG4gICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuXG4gICAgICAgIC5mb2xkZXItaXRlbSB7XG5cbiAgICAgICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRkYXJrX21vZGVfdGV4dF9wcmltYXJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9UcmVlTWVudU5hdmlnYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tNC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVHJlZU1lbnVOYXZpZ2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9UcmVlTWVudU5hdmlnYXRvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9OTJhZjIwZmUmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVHJlZU1lbnVOYXZpZ2F0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9UcmVlTWVudU5hdmlnYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vVHJlZU1lbnVOYXZpZ2F0b3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OTJhZjIwZmUmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI5MmFmMjBmZVwiLFxuICBudWxsXG4gIFxuKVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLmVtcHR5LW5vdGUubmF2aWdhdG9yW2RhdGEtdi02OWU0ZjViOF0ge1xcbiAgcGFkZGluZzogNXB4IDI1cHggMTBweDtcXG59XFxuLmVtcHR5LW5vdGUuZmF2b3VyaXRlc1tkYXRhLXYtNjllNGY1YjhdIHtcXG4gIHBhZGRpbmc6IDVweCAyM3B4IDEwcHg7XFxufVxcbi5uYXZpZ2F0b3JbZGF0YS12LTY5ZTRmNWI4XSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIG92ZXJmbG93LXg6IGF1dG87XFxufVxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XFxuLmVtcHR5LW5vdGUubmF2aWdhdG9yW2RhdGEtdi02OWU0ZjViOF0ge1xcbiAgICBwYWRkaW5nOiA1cHggMjBweCAxMHB4O1xcbn1cXG4uZW1wdHktbm90ZS5mYXZvdXJpdGVzW2RhdGEtdi02OWU0ZjViOF0ge1xcbiAgICBwYWRkaW5nOiA1cHggMThweCAxMHB4O1xcbn1cXG59XFxuLmZvbGRlci1pdGVtLW1vdmVbZGF0YS12LTY5ZTRmNWI4XSB7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwcyBlYXNlO1xcbn1cXG4uZm9sZGVyLWl0ZW0tZW50ZXItYWN0aXZlW2RhdGEtdi02OWU0ZjViOF0ge1xcbiAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGVhc2U7XFxufVxcbi5mb2xkZXItaXRlbS1sZWF2ZS1hY3RpdmVbZGF0YS12LTY5ZTRmNWI4XSB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMzAwbXM7XFxufVxcbi5mb2xkZXItaXRlbS1lbnRlcltkYXRhLXYtNjllNGY1YjhdLCAuZm9sZGVyLWl0ZW0tbGVhdmUtdG9bZGF0YS12LTY5ZTRmNWI4XSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpO1xcbn1cXG4uZm9sZGVyLWl0ZW0tbGVhdmUtYWN0aXZlW2RhdGEtdi02OWU0ZjViOF0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG4iLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5pcy1pbmFjdGl2ZVtkYXRhLXYtOTJhZjIwZmVdIHtcXG4gIG9wYWNpdHk6IDAuNTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG4uaXMtZHJhZ2VudGVyW2RhdGEtdi05MmFmMjBmZV0ge1xcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xcbn1cXG4uZm9sZGVyLWl0ZW1bZGF0YS12LTkyYWYyMGZlXSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBhZGRpbmc6IDhweCAwO1xcbiAgdHJhbnNpdGlvbjogMTUwbXMgYWxsIGVhc2U7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3JkZXI6IDJweCBkYXNoZWQgdHJhbnNwYXJlbnQ7XFxufVxcbi5mb2xkZXItaXRlbSAuaWNvbltkYXRhLXYtOTJhZjIwZmVdIHtcXG4gIGxpbmUtaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDE1cHg7XFxuICBtYXJnaW4tcmlnaHQ6IDlweDtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICBtYXJnaW4tdG9wOiAtMXB4O1xcbn1cXG4uZm9sZGVyLWl0ZW0gLmljb24gcGF0aFtkYXRhLXYtOTJhZjIwZmVdLCAuZm9sZGVyLWl0ZW0gLmljb24gbGluZVtkYXRhLXYtOTJhZjIwZmVdLCAuZm9sZGVyLWl0ZW0gLmljb24gcG9seWxpbmVbZGF0YS12LTkyYWYyMGZlXSwgLmZvbGRlci1pdGVtIC5pY29uIHJlY3RbZGF0YS12LTkyYWYyMGZlXSwgLmZvbGRlci1pdGVtIC5pY29uIGNpcmNsZVtkYXRhLXYtOTJhZjIwZmVdIHtcXG4gIHRyYW5zaXRpb246IDE1MG1zIGFsbCBlYXNlO1xcbn1cXG4uZm9sZGVyLWl0ZW0gLmljb24tYXJyb3dbZGF0YS12LTkyYWYyMGZlXSB7XFxuICB0cmFuc2l0aW9uOiAzMDBtcyBhbGwgZWFzZTtcXG4gIG1hcmdpbi1yaWdodDogNHB4O1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5mb2xkZXItaXRlbSAuaWNvbi1hcnJvdy5pcy12aXNpYmxlW2RhdGEtdi05MmFmMjBmZV0ge1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLmZvbGRlci1pdGVtIC5pY29uLWFycm93LmlzLW9wZW5lZFtkYXRhLXYtOTJhZjIwZmVdIHtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG59XFxuLmZvbGRlci1pdGVtIC5sYWJlbFtkYXRhLXYtOTJhZjIwZmVdIHtcXG4gIHRyYW5zaXRpb246IDE1MG1zIGFsbCBlYXNlO1xcbiAgZm9udC1zaXplOiAwLjgxMjVlbTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGNvbG9yOiAjMUIyNTM5O1xcbiAgbWF4LXdpZHRoOiAxMzBweDtcXG59XFxuLmZvbGRlci1pdGVtOmhvdmVyIC5pY29uIHBhdGhbZGF0YS12LTkyYWYyMGZlXSwgLmZvbGRlci1pdGVtOmhvdmVyIC5pY29uIGxpbmVbZGF0YS12LTkyYWYyMGZlXSwgLmZvbGRlci1pdGVtOmhvdmVyIC5pY29uIHBvbHlsaW5lW2RhdGEtdi05MmFmMjBmZV0sIC5mb2xkZXItaXRlbTpob3ZlciAuaWNvbiByZWN0W2RhdGEtdi05MmFmMjBmZV0sIC5mb2xkZXItaXRlbTpob3ZlciAuaWNvbiBjaXJjbGVbZGF0YS12LTkyYWYyMGZlXSwgLmZvbGRlci1pdGVtLmlzLXNlbGVjdGVkIC5pY29uIHBhdGhbZGF0YS12LTkyYWYyMGZlXSwgLmZvbGRlci1pdGVtLmlzLXNlbGVjdGVkIC5pY29uIGxpbmVbZGF0YS12LTkyYWYyMGZlXSwgLmZvbGRlci1pdGVtLmlzLXNlbGVjdGVkIC5pY29uIHBvbHlsaW5lW2RhdGEtdi05MmFmMjBmZV0sIC5mb2xkZXItaXRlbS5pcy1zZWxlY3RlZCAuaWNvbiByZWN0W2RhdGEtdi05MmFmMjBmZV0sIC5mb2xkZXItaXRlbS5pcy1zZWxlY3RlZCAuaWNvbiBjaXJjbGVbZGF0YS12LTkyYWYyMGZlXSB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG59XFxuLmZvbGRlci1pdGVtOmhvdmVyIC5sYWJlbFtkYXRhLXYtOTJhZjIwZmVdLCAuZm9sZGVyLWl0ZW0uaXMtc2VsZWN0ZWQgLmxhYmVsW2RhdGEtdi05MmFmMjBmZV0ge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XFxuLmZvbGRlci1pdGVtW2RhdGEtdi05MmFmMjBmZV0ge1xcbiAgICBwYWRkaW5nOiA4cHggMDtcXG59XFxufVxcbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcXG4uZm9sZGVyLWl0ZW0gLmxhYmVsW2RhdGEtdi05MmFmMjBmZV0ge1xcbiAgICBjb2xvcjogI2JlYzZjZjtcXG59XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1RyZWVNZW51TmF2aWdhdG9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTkyYWYyMGZlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSB1bmRlZmluZWQ7XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVHJlZU1lbnVOYXZpZ2F0b3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OTJhZjIwZmUmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiLCBmdW5jdGlvbigpIHtcblx0XHR2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVHJlZU1lbnVOYXZpZ2F0b3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OTJhZjIwZmUmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NvbnRlbnRGaWxlVmlldy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gdW5kZWZpbmVkO1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0NvbnRlbnRGaWxlVmlldy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db250ZW50RmlsZVZpZXcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiI2ZpbGVzLXZpZXcge1xcbiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nLCBzYW5zLXNlcmlmO1xcbiAgZm9udC1zaXplOiAxNnB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBtaW4td2lkdGg6IDMyMHB4O1xcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xcbiAgcGFkZGluZy1yaWdodDogMTVweDtcXG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2OTBweCkge1xcbiNmaWxlcy12aWV3IHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xcbn1cXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVHJlZU1lbnVOYXZpZ2F0b3IudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9OTJhZjIwZmUmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9UcmVlTWVudU5hdmlnYXRvci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD05MmFmMjBmZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9VcGdyYWRlU2lkZWJhckJhbm5lci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wMmZmMjBmOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1VwZ3JhZGVTaWRlYmFyQmFubmVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTAyZmYyMGY4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIiIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0ZpbGVzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTY5ZTRmNWI4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSB1bmRlZmluZWQ7XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRmlsZXMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjllNGY1YjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiLCBmdW5jdGlvbigpIHtcblx0XHR2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRmlsZXMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjllNGY1YjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0ZpbGVzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTY5ZTRmNWI4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vRmlsZXMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjllNGY1YjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiIiwiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1wiKShmYWxzZSk7XG4vLyBpbXBvcnRzXG5cblxuLy8gbW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIudXBncmFkZS1iYW5uZXJbZGF0YS12LTAyZmYyMGY4XSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1MywgNTcsIDEyMiwgMC4xKTtcXG4gIHBhZGRpbmc6IDEwcHg7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICBtYXJnaW46IDAgMTZweDtcXG59XFxuLmhlYWRlci10aXRsZVtkYXRhLXYtMDJmZjIwZjhdIHtcXG4gIG1hcmdpbi1ib3R0b206IDEycHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLmhlYWRlci10aXRsZSAuaWNvbltkYXRhLXYtMDJmZjIwZjhdIHtcXG4gIG1hcmdpbi1yaWdodDogMTBweDtcXG59XFxuLmhlYWRlci10aXRsZSAuaWNvbiBsaW5lW2RhdGEtdi0wMmZmMjBmOF0sIC5oZWFkZXItdGl0bGUgLmljb24gcGF0aFtkYXRhLXYtMDJmZjIwZjhdIHtcXG4gIHN0cm9rZTogI2ZkMzk3YTtcXG59XFxuLmhlYWRlci10aXRsZSAudGl0bGVbZGF0YS12LTAyZmYyMGY4XSB7XFxuICBmb250LXNpemU6IDAuODEyNWVtO1xcbiAgZm9udC13ZWlnaHQ6IDgwMDtcXG4gIGNvbG9yOiAjZmQzOTdhO1xcbn1cXG4uY29udGVudFtkYXRhLXYtMDJmZjIwZjhdIHtcXG4gIG1hcmdpbi1ib3R0b206IDEycHg7XFxufVxcbi5jb250ZW50IHBbZGF0YS12LTAyZmYyMGY4XSB7XFxuICBmb250LXNpemU6IDAuNzVlbTtcXG4gIGNvbG9yOiAjZmQzOTdhO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG59XFxuLmJ1dHRvbltkYXRhLXYtMDJmZjIwZjhdIHtcXG4gIGJhY2tncm91bmQ6ICNmZDM5N2E7XFxuICBib3JkZXItcmFkaXVzOiA1MHB4O1xcbiAgcGFkZGluZzogNnB4IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGNvbG9yOiB3aGl0ZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtc2l6ZTogMC43NWVtO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgYm94LXNoYWRvdzogMCA0cHggMTBweCByZ2JhKDI1MywgNTcsIDEyMiwgMC4zNSk7XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiJdLCJzb3VyY2VSb290IjoiIn0=